Skip to content

Instantly share code, notes, and snippets.

/**
* - include core-js for enabling/implementing the new `Set` methods
*
* <script src="https://cdnjs.cloudflare.com/ajax/libs/core-js/3.36.0/minified.js"></script>
*
* - for related tasks, like splitting any given keypath most generically into key-partials,
* have a look at ... [https://regex101.com/r/tew8gr/3] ... and its regular expression ...
*
* possible usage:
*
class PausedStateSignal extends EventTarget {
// shared protected/private state.
#state;
constructor(connect) {
super();
this.#state = {
isPaused: false,
};
@petsel
petsel / isDeepStructuralEquality.js
Created January 15, 2024 17:32
modularized approach/implementation for comparing/detecting "Deep Structural Equality".
// utility/helper functions.
function getFunctionName(value) {
return Object.getOwnPropertyDescriptor(value, 'name').value;
// return value.name;
}
function getFunctionSignature(value) {
return Function.prototype.toString.call(value).trim();
}
/**
* see ... [https://stackoverflow.com/a/76575046/2627243]
*
* ... answering following SO question ...
*
* "How to prevent an async function from being invoked
* a 2nd time before having finished fetching the first
* query from a firestore database?"
*/
(function (Object, Function, Symbol, Reflect) {
// see ... [https://stackoverflow.com/questions/71015428/how-to-get-the-intersection-of-two-sets-while-recognizing-equal-set-values-items/71016510#71016510]
//
// How to get the intersection of two sets while recognizing
// equal set values/items not only by reference but by their
// equal structures and entries too?
// see also ... [https://stackoverflow.com/questions/76512735/javascript-check-if-arrays-within-an-array-are-the-same]
//
// Javascript - Check if arrays within an array are the same
function getIntersectionOfMany(...listOfIterables) {
function getIntersectionOfTwo(intersection, iterableItem) {
// ensure two arrays ...
const [
comparisonBase, // ... the shorter one as comparison base
comparisonList, // ... the longer one to filter from.
] = [intersection, iterableItem]
/**
* The tool named `toSearch` is a helper method nailed statically
* onto the `RegExp` constructor/namespace. It does support a way
* of building search terms/strings at runtime.
* In order to accomplish this task `RegExp.toSearch` makes use of
* `RegExp.escape` that's implementation takes into account that
* such strings might partly contain `RegExp` control characters
* which are not supposed to be read by the `RegExp` compiler as
* exactly this control characters but rather shall be an integral
* part of such above mentioned searches.
const
arrPrototype = Object.getPrototypeOf([]);
const {
from: arrayFrom,
isArray,
} = Array;
function createListOfChunkLists(arr, chunkCount) {
const
arrPrototype = Object.getPrototypeOf([]);
const {
from: arrayFrom,
isArray,
} = Array;
function isFunction(type) {
const
arrPrototype = Object.getPrototypeOf([]);
const {
from: arrayFrom,
isArray,
} = Array;
function isFunction(type) {