@tanstack/db
Version:
A reactive client store for building super fast apps on sync
29 lines (28 loc) • 1.26 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
function createRuntimeReferenceIdentityFactory() {
const namespace = createRuntimeReferenceNamespace();
const referenceIds = /* @__PURE__ */ new WeakMap();
let sequence = 0;
return (value) => {
let referenceId = referenceIds.get(value);
if (referenceId === void 0) {
referenceId = ++sequence;
referenceIds.set(value, referenceId);
}
return [`runtimeReference`, namespace, referenceId];
};
}
const getRuntimeReferenceIdentity = createRuntimeReferenceIdentityFactory();
function createRuntimeReferenceNamespace() {
const randomValues = new Uint32Array(4);
const runtimeCrypto = Reflect.get(globalThis, `crypto`);
if (typeof runtimeCrypto?.getRandomValues === `function`) {
runtimeCrypto.getRandomValues(randomValues);
return Array.from(randomValues, (value) => value.toString(36)).join(`-`);
}
return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}-${Math.random().toString(36).slice(2)}`;
}
exports.createRuntimeReferenceIdentityFactory = createRuntimeReferenceIdentityFactory;
exports.getRuntimeReferenceIdentity = getRuntimeReferenceIdentity;
//# sourceMappingURL=runtime-reference-identity.cjs.map