doxum 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -5
- package/dist/{contract-BsY1XLiG.d.ts → contract-I99DUMbN.d.ts} +53 -40
- package/dist/{contract-D8kjdfqT.d.cts → contract-uYJTmT8o.d.cts} +53 -40
- package/dist/index.cjs +244 -630
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -64
- package/dist/index.d.ts +3 -64
- package/dist/index.js +182 -569
- package/dist/index.js.map +1 -1
- package/dist/integration-Bs3pOk65.cjs +35 -0
- package/dist/integration-Bs3pOk65.cjs.map +1 -0
- package/dist/integration-xupBIKjU.js +30 -0
- package/dist/integration-xupBIKjU.js.map +1 -0
- package/dist/integration.cjs +4 -14
- package/dist/integration.d.cts +3 -2
- package/dist/integration.d.ts +3 -2
- package/dist/integration.js +3 -14
- package/dist/local-sync.cjs +1 -1
- package/dist/local-sync.d.cts +1 -1
- package/dist/local-sync.d.ts +1 -1
- package/dist/local-sync.js +1 -1
- package/dist/{ownership-CU-9DKJQ.cjs → ownership-CY0nPXGF.cjs} +4 -1
- package/dist/ownership-CY0nPXGF.cjs.map +1 -0
- package/dist/{ownership-B-VAPcce.js → ownership-CduRygE7.js} +4 -1
- package/dist/ownership-CduRygE7.js.map +1 -0
- package/dist/react.cjs +1 -1
- package/dist/react.js +1 -1
- package/dist/runtime-BJRXF0gq.js +1735 -0
- package/dist/runtime-BJRXF0gq.js.map +1 -0
- package/dist/runtime-CRijXjYp.cjs +1991 -0
- package/dist/runtime-CRijXjYp.cjs.map +1 -0
- package/dist/runtime-CUcvhFNP.d.ts +152 -0
- package/dist/runtime-C_vKHmhy.d.cts +152 -0
- package/package.json +1 -1
- package/skills/doxum-runtime/references/guide.en.md +35 -18
- package/skills/doxum-runtime/references/guide.zh-CN.md +26 -14
- package/skills/doxum-runtime/references/invariants.en.md +12 -9
- package/skills/doxum-runtime/references/invariants.zh-CN.md +2 -2
- package/skills/doxum-runtime/references/patterns.en.md +36 -56
- package/skills/doxum-runtime/references/patterns.zh-CN.md +27 -45
- package/dist/dependency-C5_R1tvQ.js +0 -496
- package/dist/dependency-C5_R1tvQ.js.map +0 -1
- package/dist/dependency-Dfzs3khk.cjs +0 -722
- package/dist/dependency-Dfzs3khk.cjs.map +0 -1
- package/dist/integration.cjs.map +0 -1
- package/dist/integration.js.map +0 -1
- package/dist/ownership-B-VAPcce.js.map +0 -1
- package/dist/ownership-CU-9DKJQ.cjs.map +0 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const require_runtime = require("./runtime-CRijXjYp.cjs");
|
|
2
|
+
//#region core/src/access/dependency.ts
|
|
3
|
+
const createDependencyTracker = () => {
|
|
4
|
+
const targets = [];
|
|
5
|
+
return {
|
|
6
|
+
record: (value) => {
|
|
7
|
+
if (!targets.some((entry) => require_runtime.same(entry, value))) targets.push(value);
|
|
8
|
+
},
|
|
9
|
+
clear: () => {
|
|
10
|
+
targets.length = 0;
|
|
11
|
+
},
|
|
12
|
+
size: () => targets.length,
|
|
13
|
+
some: (test) => targets.some(test),
|
|
14
|
+
snapshot: () => Object.freeze(targets.slice())
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
//#endregion
|
|
18
|
+
//#region core/src/integration.ts
|
|
19
|
+
const track = (runtime, selector) => {
|
|
20
|
+
const dependencies = createDependencyTracker();
|
|
21
|
+
const value = require_runtime.readWith(runtime, selector, dependencies);
|
|
22
|
+
return Object.freeze({
|
|
23
|
+
value,
|
|
24
|
+
targets: dependencies.snapshot()
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
//#endregion
|
|
28
|
+
Object.defineProperty(exports, "track", {
|
|
29
|
+
enumerable: true,
|
|
30
|
+
get: function() {
|
|
31
|
+
return track;
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=integration-Bs3pOk65.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration-Bs3pOk65.cjs","names":["readWith"],"sources":["../core/src/access/dependency.ts","../core/src/integration.ts"],"sourcesContent":["import type { ImpactTarget } from '../schema';\nimport * as impactTarget from '../impact-target';\n\nexport type DependencyTracker = {\n readonly record: (target: ImpactTarget<unknown>) => void;\n readonly clear: () => void;\n readonly size: () => number;\n readonly some: (test: (target: ImpactTarget<unknown>) => boolean) => boolean;\n readonly snapshot: () => readonly ImpactTarget<unknown>[];\n};\n\nexport const createDependencyTracker = (): DependencyTracker => {\n const targets: ImpactTarget<unknown>[] = [];\n return {\n record: value => {\n if (!targets.some(entry => impactTarget.same(entry, value))) targets.push(value);\n },\n clear: () => {\n targets.length = 0;\n },\n size: () => targets.length,\n some: test => targets.some(test),\n snapshot: () => Object.freeze(targets.slice()),\n };\n};\n","import type { DocumentSchema, ImpactTarget } from './schema';\nimport type { DocumentReader } from './access/reader';\nimport type { DocumentReadable } from './runtime/contract';\nimport { createDependencyTracker } from './access/dependency';\nimport { readWith } from './runtime/access';\nexport { projectionDebug } from './projection/runtime';\n\nexport type TrackedSelection<TValue> = {\n readonly value: TValue;\n readonly targets: readonly ImpactTarget<unknown>[];\n};\n\n// Framework adapters receive one immutable result instead of coordinating a\n// mutable collector with the reader's scoped lifetime themselves.\nexport const track = <TSchema extends DocumentSchema, TValue>(\n runtime: DocumentReadable<TSchema>,\n selector: (read: DocumentReader<TSchema>) => TValue\n): TrackedSelection<TValue> => {\n const dependencies = createDependencyTracker();\n const value = readWith(runtime, selector, dependencies);\n return Object.freeze({ value, targets: dependencies.snapshot() });\n};\n"],"mappings":";;AAWA,MAAa,gCAAmD;CAC9D,MAAM,UAAmC,EAAE;AAC3C,QAAO;EACL,SAAQ,UAAS;AACf,OAAI,CAAC,QAAQ,MAAK,UAAA,gBAAA,KAA2B,OAAO,MAAM,CAAC,CAAE,SAAQ,KAAK,MAAM;;EAElF,aAAa;AACX,WAAQ,SAAS;;EAEnB,YAAY,QAAQ;EACpB,OAAM,SAAQ,QAAQ,KAAK,KAAK;EAChC,gBAAgB,OAAO,OAAO,QAAQ,OAAO,CAAC;EAC/C;;;;ACTH,MAAa,SACX,SACA,aAC6B;CAC7B,MAAM,eAAe,yBAAyB;CAC9C,MAAM,QAAQA,gBAAAA,SAAS,SAAS,UAAU,aAAa;AACvD,QAAO,OAAO,OAAO;EAAE;EAAO,SAAS,aAAa,UAAU;EAAE,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { p as readWith, x as same } from "./runtime-BJRXF0gq.js";
|
|
2
|
+
//#region core/src/access/dependency.ts
|
|
3
|
+
const createDependencyTracker = () => {
|
|
4
|
+
const targets = [];
|
|
5
|
+
return {
|
|
6
|
+
record: (value) => {
|
|
7
|
+
if (!targets.some((entry) => same(entry, value))) targets.push(value);
|
|
8
|
+
},
|
|
9
|
+
clear: () => {
|
|
10
|
+
targets.length = 0;
|
|
11
|
+
},
|
|
12
|
+
size: () => targets.length,
|
|
13
|
+
some: (test) => targets.some(test),
|
|
14
|
+
snapshot: () => Object.freeze(targets.slice())
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
//#endregion
|
|
18
|
+
//#region core/src/integration.ts
|
|
19
|
+
const track = (runtime, selector) => {
|
|
20
|
+
const dependencies = createDependencyTracker();
|
|
21
|
+
const value = readWith(runtime, selector, dependencies);
|
|
22
|
+
return Object.freeze({
|
|
23
|
+
value,
|
|
24
|
+
targets: dependencies.snapshot()
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
//#endregion
|
|
28
|
+
export { track as t };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=integration-xupBIKjU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration-xupBIKjU.js","names":["impactTarget.same"],"sources":["../core/src/access/dependency.ts","../core/src/integration.ts"],"sourcesContent":["import type { ImpactTarget } from '../schema';\nimport * as impactTarget from '../impact-target';\n\nexport type DependencyTracker = {\n readonly record: (target: ImpactTarget<unknown>) => void;\n readonly clear: () => void;\n readonly size: () => number;\n readonly some: (test: (target: ImpactTarget<unknown>) => boolean) => boolean;\n readonly snapshot: () => readonly ImpactTarget<unknown>[];\n};\n\nexport const createDependencyTracker = (): DependencyTracker => {\n const targets: ImpactTarget<unknown>[] = [];\n return {\n record: value => {\n if (!targets.some(entry => impactTarget.same(entry, value))) targets.push(value);\n },\n clear: () => {\n targets.length = 0;\n },\n size: () => targets.length,\n some: test => targets.some(test),\n snapshot: () => Object.freeze(targets.slice()),\n };\n};\n","import type { DocumentSchema, ImpactTarget } from './schema';\nimport type { DocumentReader } from './access/reader';\nimport type { DocumentReadable } from './runtime/contract';\nimport { createDependencyTracker } from './access/dependency';\nimport { readWith } from './runtime/access';\nexport { projectionDebug } from './projection/runtime';\n\nexport type TrackedSelection<TValue> = {\n readonly value: TValue;\n readonly targets: readonly ImpactTarget<unknown>[];\n};\n\n// Framework adapters receive one immutable result instead of coordinating a\n// mutable collector with the reader's scoped lifetime themselves.\nexport const track = <TSchema extends DocumentSchema, TValue>(\n runtime: DocumentReadable<TSchema>,\n selector: (read: DocumentReader<TSchema>) => TValue\n): TrackedSelection<TValue> => {\n const dependencies = createDependencyTracker();\n const value = readWith(runtime, selector, dependencies);\n return Object.freeze({ value, targets: dependencies.snapshot() });\n};\n"],"mappings":";;AAWA,MAAa,gCAAmD;CAC9D,MAAM,UAAmC,EAAE;AAC3C,QAAO;EACL,SAAQ,UAAS;AACf,OAAI,CAAC,QAAQ,MAAK,UAASA,KAAkB,OAAO,MAAM,CAAC,CAAE,SAAQ,KAAK,MAAM;;EAElF,aAAa;AACX,WAAQ,SAAS;;EAEnB,YAAY,QAAQ;EACpB,OAAM,SAAQ,QAAQ,KAAK,KAAK;EAChC,gBAAgB,OAAO,OAAO,QAAQ,OAAO,CAAC;EAC/C;;;;ACTH,MAAa,SACX,SACA,aAC6B;CAC7B,MAAM,eAAe,yBAAyB;CAC9C,MAAM,QAAQ,SAAS,SAAS,UAAU,aAAa;AACvD,QAAO,OAAO,OAAO;EAAE;EAAO,SAAS,aAAa,UAAU;EAAE,CAAC"}
|
package/dist/integration.cjs
CHANGED
|
@@ -1,15 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const value = require_dependency.readWith(runtime, selector, dependencies);
|
|
7
|
-
return Object.freeze({
|
|
8
|
-
value,
|
|
9
|
-
targets: dependencies.snapshot()
|
|
10
|
-
});
|
|
11
|
-
};
|
|
12
|
-
//#endregion
|
|
13
|
-
exports.track = track;
|
|
14
|
-
|
|
15
|
-
//# sourceMappingURL=integration.cjs.map
|
|
2
|
+
const require_runtime = require("./runtime-CRijXjYp.cjs");
|
|
3
|
+
const require_integration = require("./integration-Bs3pOk65.cjs");
|
|
4
|
+
exports.projectionDebug = require_runtime.projectionDebug;
|
|
5
|
+
exports.track = require_integration.track;
|
package/dist/integration.d.cts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Ot as ImpactTarget, V as DocumentReader, o as DocumentReadable, xt as DocumentSchema } from "./contract-uYJTmT8o.cjs";
|
|
2
|
+
import { n as projectionDebug } from "./runtime-C_vKHmhy.cjs";
|
|
2
3
|
|
|
3
4
|
//#region core/src/integration.d.ts
|
|
4
5
|
type TrackedSelection<TValue> = {
|
|
@@ -7,5 +8,5 @@ type TrackedSelection<TValue> = {
|
|
|
7
8
|
};
|
|
8
9
|
declare const track: <TSchema extends DocumentSchema, TValue>(runtime: DocumentReadable<TSchema>, selector: (read: DocumentReader<TSchema>) => TValue) => TrackedSelection<TValue>;
|
|
9
10
|
//#endregion
|
|
10
|
-
export { TrackedSelection, track };
|
|
11
|
+
export { TrackedSelection, projectionDebug, track };
|
|
11
12
|
//# sourceMappingURL=integration.d.cts.map
|
package/dist/integration.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Ot as ImpactTarget, V as DocumentReader, o as DocumentReadable, xt as DocumentSchema } from "./contract-I99DUMbN.js";
|
|
2
|
+
import { n as projectionDebug } from "./runtime-CUcvhFNP.js";
|
|
2
3
|
|
|
3
4
|
//#region core/src/integration.d.ts
|
|
4
5
|
type TrackedSelection<TValue> = {
|
|
@@ -7,5 +8,5 @@ type TrackedSelection<TValue> = {
|
|
|
7
8
|
};
|
|
8
9
|
declare const track: <TSchema extends DocumentSchema, TValue>(runtime: DocumentReadable<TSchema>, selector: (read: DocumentReader<TSchema>) => TValue) => TrackedSelection<TValue>;
|
|
9
10
|
//#endregion
|
|
10
|
-
export { TrackedSelection, track };
|
|
11
|
+
export { TrackedSelection, projectionDebug, track };
|
|
11
12
|
//# sourceMappingURL=integration.d.ts.map
|
package/dist/integration.js
CHANGED
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const dependencies = createDependencyTracker();
|
|
5
|
-
const value = readWith(runtime, selector, dependencies);
|
|
6
|
-
return Object.freeze({
|
|
7
|
-
value,
|
|
8
|
-
targets: dependencies.snapshot()
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
//#endregion
|
|
12
|
-
export { track };
|
|
13
|
-
|
|
14
|
-
//# sourceMappingURL=integration.js.map
|
|
1
|
+
import { n as projectionDebug } from "./runtime-BJRXF0gq.js";
|
|
2
|
+
import { t as track } from "./integration-xupBIKjU.js";
|
|
3
|
+
export { projectionDebug, track };
|
package/dist/local-sync.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_ownership = require("./ownership-
|
|
2
|
+
const require_ownership = require("./ownership-CY0nPXGF.cjs");
|
|
3
3
|
const require_driver = require("./driver-CNxqMVFH.cjs");
|
|
4
4
|
//#region core/src/local-sync/contract.ts
|
|
5
5
|
var LocalSyncUnavailableError = class extends Error {
|
package/dist/local-sync.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as DocumentRuntime, xt as DocumentSchema } from "./contract-
|
|
1
|
+
import { c as DocumentRuntime, xt as DocumentSchema } from "./contract-uYJTmT8o.cjs";
|
|
2
2
|
|
|
3
3
|
//#region core/src/local-sync/json.d.ts
|
|
4
4
|
type JsonPrimitive = null | boolean | number | string;
|
package/dist/local-sync.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as DocumentRuntime, xt as DocumentSchema } from "./contract-
|
|
1
|
+
import { c as DocumentRuntime, xt as DocumentSchema } from "./contract-I99DUMbN.js";
|
|
2
2
|
|
|
3
3
|
//#region core/src/local-sync/json.d.ts
|
|
4
4
|
type JsonPrimitive = null | boolean | number | string;
|
package/dist/local-sync.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as isRecord, r as isPlainObject } from "./ownership-
|
|
1
|
+
import { i as isRecord, r as isPlainObject } from "./ownership-CduRygE7.js";
|
|
2
2
|
import { i as installRuntimeWriteDriver } from "./driver-CbzfW5MR.js";
|
|
3
3
|
//#region core/src/local-sync/contract.ts
|
|
4
4
|
var LocalSyncUnavailableError = class extends Error {
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
//#region core/src/profile.ts
|
|
2
2
|
const active = { current: void 0 };
|
|
3
3
|
const profile = {
|
|
4
|
+
projection: (counter, amount = 1) => {
|
|
5
|
+
if (active.current) active.current.projection[counter] += amount;
|
|
6
|
+
},
|
|
4
7
|
clone: {
|
|
5
8
|
call: () => {
|
|
6
9
|
const value = active.current;
|
|
@@ -298,4 +301,4 @@ Object.defineProperty(exports, "transferPayload", {
|
|
|
298
301
|
}
|
|
299
302
|
});
|
|
300
303
|
|
|
301
|
-
//# sourceMappingURL=ownership-
|
|
304
|
+
//# sourceMappingURL=ownership-CY0nPXGF.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ownership-CY0nPXGF.cjs","names":[],"sources":["../core/src/profile.ts","../core/src/value/ownership.ts"],"sourcesContent":["export type CloneReason =\n 'initial' | 'canonical' | 'commit' | 'inverse' | 'reader' | 'replace' | 'journal' | 'snapshot';\n\ntype CloneCounters = {\n calls: number;\n containers: number;\n nodes: Record<CloneReason, number>;\n deepEqual: { calls: number; containers: number };\n documents: { initial: number };\n};\ntype ProfileCounters = {\n projection: {\n sourceEvents: number;\n scheduledNodes: number;\n processedNodes: number;\n touchedKeys: number;\n changedKeys: number;\n publishedNodes: number;\n flushes: number;\n };\n clone: CloneCounters;\n mutation: { normalized: number; executed: number; inverseCreated: number };\n batch: {\n operations: number;\n entries: number;\n collectionsResolved: number;\n journalRecords: number;\n rejected: number;\n inverseOperations: number;\n payloadTransferred: number;\n payloadSnapshots: number;\n };\n journal: {\n subjects: number;\n comparisons: number;\n absorbed: number;\n orderSnapshots: number;\n orderItems: number;\n };\n address: {\n schemaSteps: number;\n documentSteps: number;\n prefixComparisons: number;\n segmentsCompared: number;\n arraysCopied: number;\n };\n impact: { affectsChecks: number };\n reader: {\n sessions: number;\n nodeLookups: number;\n collectionIds: number;\n structuralSnapshots: number;\n };\n collectionView: {\n mappedItems: number;\n idsScanned: number;\n arraysCopied: number;\n };\n materialized: {\n updated: number;\n skipped: number;\n rebuilt: number;\n sourceChanges: number;\n notifications: number;\n };\n};\n\nexport type ProfileSnapshot = Readonly<{\n projection: Readonly<ProfileCounters['projection']>;\n clone: Readonly<{\n calls: number;\n containers: number;\n nodes: Readonly<Record<CloneReason, number>>;\n deepEqual: Readonly<{ calls: number; containers: number }>;\n documents: Readonly<{ initial: number }>;\n }>;\n mutation: Readonly<{\n normalized: number;\n executed: number;\n inverseCreated: number;\n }>;\n batch: Readonly<ProfileCounters['batch']>;\n journal: Readonly<ProfileCounters['journal']>;\n address: Readonly<ProfileCounters['address']>;\n impact: Readonly<ProfileCounters['impact']>;\n reader: Readonly<ProfileCounters['reader']>;\n collectionView: Readonly<ProfileCounters['collectionView']>;\n materialized: Readonly<ProfileCounters['materialized']>;\n}>;\n\nconst cloneReasons = (): Record<CloneReason, number> => ({\n initial: 0,\n canonical: 0,\n commit: 0,\n inverse: 0,\n reader: 0,\n replace: 0,\n journal: 0,\n snapshot: 0,\n});\n\nconst counters = (): ProfileCounters => ({\n projection: {\n sourceEvents: 0,\n scheduledNodes: 0,\n processedNodes: 0,\n touchedKeys: 0,\n changedKeys: 0,\n publishedNodes: 0,\n flushes: 0,\n },\n clone: {\n calls: 0,\n containers: 0,\n nodes: cloneReasons(),\n deepEqual: { calls: 0, containers: 0 },\n documents: { initial: 0 },\n },\n mutation: { normalized: 0, executed: 0, inverseCreated: 0 },\n batch: {\n operations: 0,\n entries: 0,\n collectionsResolved: 0,\n journalRecords: 0,\n rejected: 0,\n inverseOperations: 0,\n payloadTransferred: 0,\n payloadSnapshots: 0,\n },\n journal: {\n subjects: 0,\n comparisons: 0,\n absorbed: 0,\n orderSnapshots: 0,\n orderItems: 0,\n },\n address: {\n schemaSteps: 0,\n documentSteps: 0,\n prefixComparisons: 0,\n segmentsCompared: 0,\n arraysCopied: 0,\n },\n impact: { affectsChecks: 0 },\n reader: {\n sessions: 0,\n nodeLookups: 0,\n collectionIds: 0,\n structuralSnapshots: 0,\n },\n collectionView: { mappedItems: 0, idsScanned: 0, arraysCopied: 0 },\n materialized: {\n updated: 0,\n skipped: 0,\n rebuilt: 0,\n sourceChanges: 0,\n notifications: 0,\n },\n});\n\n// Recorder calls are stable no-op-capable functions. Only this module owns the\n// mutable session counter tree; domain code never branches on profile state.\nconst active = { current: undefined as ProfileCounters | undefined };\n\n// Snapshot allocation is intentionally delayed until the caller asks for it.\nconst freezeSnapshot = (value: ProfileCounters): ProfileSnapshot =>\n Object.freeze({\n projection: Object.freeze({ ...value.projection }),\n clone: Object.freeze({\n calls: value.clone.calls,\n containers: value.clone.containers,\n nodes: Object.freeze({ ...value.clone.nodes }),\n deepEqual: Object.freeze({ ...value.clone.deepEqual }),\n documents: Object.freeze({ ...value.clone.documents }),\n }),\n mutation: Object.freeze({ ...value.mutation }),\n batch: Object.freeze({ ...value.batch }),\n journal: Object.freeze({ ...value.journal }),\n address: Object.freeze({ ...value.address }),\n impact: Object.freeze({ ...value.impact }),\n reader: Object.freeze({ ...value.reader }),\n collectionView: Object.freeze({ ...value.collectionView }),\n materialized: Object.freeze({ ...value.materialized }),\n });\n\nexport const profile = {\n projection: (counter: keyof ProfileCounters['projection'], amount = 1): void => {\n if (active.current) active.current.projection[counter] += amount;\n },\n clone: {\n call: (): void => {\n const value = active.current;\n if (value) value.clone.calls += 1;\n },\n node: (reason: CloneReason): void => {\n const value = active.current;\n if (!value) return;\n value.clone.nodes[reason] += 1;\n },\n container: (): void => {\n const value = active.current;\n if (value) value.clone.containers += 1;\n },\n deepEqual: (): void => {\n const value = active.current;\n if (value) value.clone.deepEqual.calls += 1;\n },\n deepEqualContainer: (): void => {\n const value = active.current;\n if (value) value.clone.deepEqual.containers += 1;\n },\n initialDocument: (): void => {\n const value = active.current;\n if (value) value.clone.documents.initial += 1;\n },\n },\n mutation: {\n normalized: (): void => {\n const value = active.current;\n if (value) value.mutation.normalized += 1;\n },\n executed: (): void => {\n const value = active.current;\n if (value) value.mutation.executed += 1;\n },\n inverse: (): void => {\n const value = active.current;\n if (value) value.mutation.inverseCreated += 1;\n },\n },\n batch: {\n operation: (): void => {\n const value = active.current;\n if (value) value.batch.operations += 1;\n },\n entry: (amount = 1): void => {\n const value = active.current;\n if (value) value.batch.entries += amount;\n },\n collectionResolved: (): void => {\n const value = active.current;\n if (value) value.batch.collectionsResolved += 1;\n },\n journalRecord: (): void => {\n const value = active.current;\n if (value) value.batch.journalRecords += 1;\n },\n rejected: (): void => {\n const value = active.current;\n if (value) value.batch.rejected += 1;\n },\n inverse: (): void => {\n const value = active.current;\n if (value) value.batch.inverseOperations += 1;\n },\n payloadTransferred: (): void => {\n const value = active.current;\n if (value) value.batch.payloadTransferred += 1;\n },\n payloadSnapshot: (): void => {\n const value = active.current;\n if (value) value.batch.payloadSnapshots += 1;\n },\n },\n journal: {\n subject: (): void => {\n const value = active.current;\n if (value) value.journal.subjects += 1;\n },\n comparison: (): void => {\n const value = active.current;\n if (value) value.journal.comparisons += 1;\n },\n absorbed: (): void => {\n const value = active.current;\n if (value) value.journal.absorbed += 1;\n },\n orderSnapshot: (items: number): void => {\n const value = active.current;\n if (!value) return;\n value.journal.orderSnapshots += 1;\n value.journal.orderItems += items;\n },\n },\n address: {\n schemaStep: (): void => {\n const value = active.current;\n if (value) value.address.schemaSteps += 1;\n },\n documentStep: (): void => {\n const value = active.current;\n if (value) value.address.documentSteps += 1;\n },\n arrayCopied: (): void => {\n const value = active.current;\n if (value) value.address.arraysCopied += 1;\n },\n prefixComparison: (): void => {\n const value = active.current;\n if (value) value.address.prefixComparisons += 1;\n },\n segmentCompared: (): void => {\n const value = active.current;\n if (value) value.address.segmentsCompared += 1;\n },\n },\n impact: {\n affects: (): void => {\n const value = active.current;\n if (value) value.impact.affectsChecks += 1;\n },\n },\n reader: {\n session: (): void => {\n const value = active.current;\n if (value) value.reader.sessions += 1;\n },\n lookup: (): void => {\n const value = active.current;\n if (value) value.reader.nodeLookups += 1;\n },\n collectionIds: (amount = 1): void => {\n const value = active.current;\n if (value) value.reader.collectionIds += amount;\n },\n structuralSnapshot: (): void => {\n const value = active.current;\n if (value) value.reader.structuralSnapshots += 1;\n },\n },\n collectionView: {\n mapped: (): void => {\n const value = active.current;\n if (value) value.collectionView.mappedItems += 1;\n },\n idsScanned: (amount = 1): void => {\n const value = active.current;\n if (value) value.collectionView.idsScanned += amount;\n },\n arrayCopied: (): void => {\n const value = active.current;\n if (value) value.collectionView.arraysCopied += 1;\n },\n },\n materialized: {\n updated: (): void => {\n const value = active.current;\n if (value) value.materialized.updated += 1;\n },\n skipped: (): void => {\n const value = active.current;\n if (value) value.materialized.skipped += 1;\n },\n rebuilt: (): void => {\n const value = active.current;\n if (value) value.materialized.rebuilt += 1;\n },\n sourceChanged: (): void => {\n const value = active.current;\n if (value) value.materialized.sourceChanges += 1;\n },\n notification: (): void => {\n const value = active.current;\n if (value) value.materialized.notifications += 1;\n },\n },\n} as const;\n\nexport type ProfileSession = {\n readonly snapshot: () => ProfileSnapshot;\n readonly stop: () => ProfileSnapshot;\n};\n\nexport const startProfile = (): ProfileSession => {\n if (active.current) throw new Error('A document profile session is already active.');\n const value = counters();\n active.current = value;\n let stopped = false;\n const snapshot = (): ProfileSnapshot => freezeSnapshot(value);\n return {\n snapshot,\n stop: (): ProfileSnapshot => {\n if (!stopped) {\n stopped = true;\n active.current = undefined;\n }\n return snapshot();\n },\n };\n};\n\nexport const measureProfile = <T>(\n run: () => T\n): { readonly value: T; readonly profile: ProfileSnapshot } => {\n const session = startProfile();\n try {\n const value = run();\n return { value, profile: session.stop() };\n } catch (error) {\n session.stop();\n throw error;\n }\n};\n","import { profile } from '../profile';\n\nexport type CloneReason =\n 'initial' | 'canonical' | 'commit' | 'inverse' | 'reader' | 'replace' | 'journal' | 'snapshot';\n\nconst stablePayloads = new WeakSet<object>();\n\nconst markStablePayload = <T>(value: T): T => {\n if (Array.isArray(value) || isPlainObject(value)) stablePayloads.add(value as object);\n return value;\n};\n\nexport const isStablePayload = (value: unknown): boolean =>\n (Array.isArray(value) || isPlainObject(value)) && stablePayloads.has(value as object);\n\nexport const isPlainObject = (value: unknown): value is Record<string, unknown> => {\n if (value === null || typeof value !== 'object') return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n};\n\nconst countCloneReason = (reason: CloneReason | undefined): void => {\n if (reason) profile.clone.node(reason);\n};\n\nexport const cloneValue = <T>(value: T, reason?: CloneReason): T => {\n profile.clone.call();\n countCloneReason(reason);\n if (Array.isArray(value)) {\n profile.clone.container();\n const result = new Array(value.length);\n for (let index = 0; index < value.length; index += 1)\n result[index] = cloneValue(value[index], reason);\n return (\n reason === 'commit' || reason === 'inverse' || reason === 'snapshot'\n ? markStablePayload(Object.freeze(result))\n : result\n ) as T;\n }\n if (isPlainObject(value)) {\n profile.clone.container();\n const result: Record<string, unknown> = Object.create(Object.getPrototypeOf(value)) as Record<\n string,\n unknown\n >;\n for (const key in value) {\n if (Object.prototype.hasOwnProperty.call(value, key))\n result[key] = cloneValue(value[key], reason);\n }\n return (\n reason === 'commit' || reason === 'inverse' || reason === 'snapshot'\n ? markStablePayload(Object.freeze(result))\n : result\n ) as T;\n }\n return value;\n};\n\n// Structural document values cross an ownership boundary by cloning. Atomic\n// values are shared because their schema contract treats them as immutable.\nexport const ownPayload = <T>(value: T, reason: CloneReason = 'canonical'): T =>\n Array.isArray(value) || isPlainObject(value) ? cloneValue(value, reason) : value;\n\n// The caller transfers structural ownership to the mutable canonical document.\n// Public commit/history boundaries use snapshotPayload instead.\nexport const transferPayload = <T>(value: T): T => {\n profile.batch.payloadTransferred();\n return value;\n};\nexport const snapshotPayload = <T>(value: T, reason: CloneReason = 'commit'): T => (\n profile.batch.payloadSnapshot(),\n ownPayload(value, reason)\n);\n\nexport const deepEqual = (left: unknown, right: unknown): boolean => {\n profile.clone.deepEqual();\n if (Object.is(left, right)) return true;\n if (Array.isArray(left) && Array.isArray(right)) {\n profile.clone.deepEqualContainer();\n if (left.length !== right.length) return false;\n for (let index = 0; index < left.length; index += 1)\n if (!deepEqual(left[index], right[index])) return false;\n return true;\n }\n if (isPlainObject(left) && isPlainObject(right)) {\n profile.clone.deepEqualContainer();\n const leftKeys = Object.keys(left);\n if (leftKeys.length !== Object.keys(right).length) return false;\n for (const key of leftKeys) {\n if (!Object.prototype.hasOwnProperty.call(right, key) || !deepEqual(left[key], right[key]))\n return false;\n }\n return true;\n }\n return false;\n};\n\nexport const sameStructuralValue = (left: unknown, right: unknown): boolean =>\n Object.is(left, right) ||\n ((Array.isArray(left) || isPlainObject(left)) && deepEqual(left, right));\n\nexport const isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n"],"mappings":"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"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
//#region core/src/profile.ts
|
|
2
2
|
const active = { current: void 0 };
|
|
3
3
|
const profile = {
|
|
4
|
+
projection: (counter, amount = 1) => {
|
|
5
|
+
if (active.current) active.current.projection[counter] += amount;
|
|
6
|
+
},
|
|
4
7
|
clone: {
|
|
5
8
|
call: () => {
|
|
6
9
|
const value = active.current;
|
|
@@ -239,4 +242,4 @@ const isRecord = (value) => typeof value === "object" && value !== null && !Arra
|
|
|
239
242
|
//#endregion
|
|
240
243
|
export { isStablePayload as a, snapshotPayload as c, isRecord as i, transferPayload as l, deepEqual as n, ownPayload as o, isPlainObject as r, sameStructuralValue as s, cloneValue as t, profile as u };
|
|
241
244
|
|
|
242
|
-
//# sourceMappingURL=ownership-
|
|
245
|
+
//# sourceMappingURL=ownership-CduRygE7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ownership-CduRygE7.js","names":[],"sources":["../core/src/profile.ts","../core/src/value/ownership.ts"],"sourcesContent":["export type CloneReason =\n 'initial' | 'canonical' | 'commit' | 'inverse' | 'reader' | 'replace' | 'journal' | 'snapshot';\n\ntype CloneCounters = {\n calls: number;\n containers: number;\n nodes: Record<CloneReason, number>;\n deepEqual: { calls: number; containers: number };\n documents: { initial: number };\n};\ntype ProfileCounters = {\n projection: {\n sourceEvents: number;\n scheduledNodes: number;\n processedNodes: number;\n touchedKeys: number;\n changedKeys: number;\n publishedNodes: number;\n flushes: number;\n };\n clone: CloneCounters;\n mutation: { normalized: number; executed: number; inverseCreated: number };\n batch: {\n operations: number;\n entries: number;\n collectionsResolved: number;\n journalRecords: number;\n rejected: number;\n inverseOperations: number;\n payloadTransferred: number;\n payloadSnapshots: number;\n };\n journal: {\n subjects: number;\n comparisons: number;\n absorbed: number;\n orderSnapshots: number;\n orderItems: number;\n };\n address: {\n schemaSteps: number;\n documentSteps: number;\n prefixComparisons: number;\n segmentsCompared: number;\n arraysCopied: number;\n };\n impact: { affectsChecks: number };\n reader: {\n sessions: number;\n nodeLookups: number;\n collectionIds: number;\n structuralSnapshots: number;\n };\n collectionView: {\n mappedItems: number;\n idsScanned: number;\n arraysCopied: number;\n };\n materialized: {\n updated: number;\n skipped: number;\n rebuilt: number;\n sourceChanges: number;\n notifications: number;\n };\n};\n\nexport type ProfileSnapshot = Readonly<{\n projection: Readonly<ProfileCounters['projection']>;\n clone: Readonly<{\n calls: number;\n containers: number;\n nodes: Readonly<Record<CloneReason, number>>;\n deepEqual: Readonly<{ calls: number; containers: number }>;\n documents: Readonly<{ initial: number }>;\n }>;\n mutation: Readonly<{\n normalized: number;\n executed: number;\n inverseCreated: number;\n }>;\n batch: Readonly<ProfileCounters['batch']>;\n journal: Readonly<ProfileCounters['journal']>;\n address: Readonly<ProfileCounters['address']>;\n impact: Readonly<ProfileCounters['impact']>;\n reader: Readonly<ProfileCounters['reader']>;\n collectionView: Readonly<ProfileCounters['collectionView']>;\n materialized: Readonly<ProfileCounters['materialized']>;\n}>;\n\nconst cloneReasons = (): Record<CloneReason, number> => ({\n initial: 0,\n canonical: 0,\n commit: 0,\n inverse: 0,\n reader: 0,\n replace: 0,\n journal: 0,\n snapshot: 0,\n});\n\nconst counters = (): ProfileCounters => ({\n projection: {\n sourceEvents: 0,\n scheduledNodes: 0,\n processedNodes: 0,\n touchedKeys: 0,\n changedKeys: 0,\n publishedNodes: 0,\n flushes: 0,\n },\n clone: {\n calls: 0,\n containers: 0,\n nodes: cloneReasons(),\n deepEqual: { calls: 0, containers: 0 },\n documents: { initial: 0 },\n },\n mutation: { normalized: 0, executed: 0, inverseCreated: 0 },\n batch: {\n operations: 0,\n entries: 0,\n collectionsResolved: 0,\n journalRecords: 0,\n rejected: 0,\n inverseOperations: 0,\n payloadTransferred: 0,\n payloadSnapshots: 0,\n },\n journal: {\n subjects: 0,\n comparisons: 0,\n absorbed: 0,\n orderSnapshots: 0,\n orderItems: 0,\n },\n address: {\n schemaSteps: 0,\n documentSteps: 0,\n prefixComparisons: 0,\n segmentsCompared: 0,\n arraysCopied: 0,\n },\n impact: { affectsChecks: 0 },\n reader: {\n sessions: 0,\n nodeLookups: 0,\n collectionIds: 0,\n structuralSnapshots: 0,\n },\n collectionView: { mappedItems: 0, idsScanned: 0, arraysCopied: 0 },\n materialized: {\n updated: 0,\n skipped: 0,\n rebuilt: 0,\n sourceChanges: 0,\n notifications: 0,\n },\n});\n\n// Recorder calls are stable no-op-capable functions. Only this module owns the\n// mutable session counter tree; domain code never branches on profile state.\nconst active = { current: undefined as ProfileCounters | undefined };\n\n// Snapshot allocation is intentionally delayed until the caller asks for it.\nconst freezeSnapshot = (value: ProfileCounters): ProfileSnapshot =>\n Object.freeze({\n projection: Object.freeze({ ...value.projection }),\n clone: Object.freeze({\n calls: value.clone.calls,\n containers: value.clone.containers,\n nodes: Object.freeze({ ...value.clone.nodes }),\n deepEqual: Object.freeze({ ...value.clone.deepEqual }),\n documents: Object.freeze({ ...value.clone.documents }),\n }),\n mutation: Object.freeze({ ...value.mutation }),\n batch: Object.freeze({ ...value.batch }),\n journal: Object.freeze({ ...value.journal }),\n address: Object.freeze({ ...value.address }),\n impact: Object.freeze({ ...value.impact }),\n reader: Object.freeze({ ...value.reader }),\n collectionView: Object.freeze({ ...value.collectionView }),\n materialized: Object.freeze({ ...value.materialized }),\n });\n\nexport const profile = {\n projection: (counter: keyof ProfileCounters['projection'], amount = 1): void => {\n if (active.current) active.current.projection[counter] += amount;\n },\n clone: {\n call: (): void => {\n const value = active.current;\n if (value) value.clone.calls += 1;\n },\n node: (reason: CloneReason): void => {\n const value = active.current;\n if (!value) return;\n value.clone.nodes[reason] += 1;\n },\n container: (): void => {\n const value = active.current;\n if (value) value.clone.containers += 1;\n },\n deepEqual: (): void => {\n const value = active.current;\n if (value) value.clone.deepEqual.calls += 1;\n },\n deepEqualContainer: (): void => {\n const value = active.current;\n if (value) value.clone.deepEqual.containers += 1;\n },\n initialDocument: (): void => {\n const value = active.current;\n if (value) value.clone.documents.initial += 1;\n },\n },\n mutation: {\n normalized: (): void => {\n const value = active.current;\n if (value) value.mutation.normalized += 1;\n },\n executed: (): void => {\n const value = active.current;\n if (value) value.mutation.executed += 1;\n },\n inverse: (): void => {\n const value = active.current;\n if (value) value.mutation.inverseCreated += 1;\n },\n },\n batch: {\n operation: (): void => {\n const value = active.current;\n if (value) value.batch.operations += 1;\n },\n entry: (amount = 1): void => {\n const value = active.current;\n if (value) value.batch.entries += amount;\n },\n collectionResolved: (): void => {\n const value = active.current;\n if (value) value.batch.collectionsResolved += 1;\n },\n journalRecord: (): void => {\n const value = active.current;\n if (value) value.batch.journalRecords += 1;\n },\n rejected: (): void => {\n const value = active.current;\n if (value) value.batch.rejected += 1;\n },\n inverse: (): void => {\n const value = active.current;\n if (value) value.batch.inverseOperations += 1;\n },\n payloadTransferred: (): void => {\n const value = active.current;\n if (value) value.batch.payloadTransferred += 1;\n },\n payloadSnapshot: (): void => {\n const value = active.current;\n if (value) value.batch.payloadSnapshots += 1;\n },\n },\n journal: {\n subject: (): void => {\n const value = active.current;\n if (value) value.journal.subjects += 1;\n },\n comparison: (): void => {\n const value = active.current;\n if (value) value.journal.comparisons += 1;\n },\n absorbed: (): void => {\n const value = active.current;\n if (value) value.journal.absorbed += 1;\n },\n orderSnapshot: (items: number): void => {\n const value = active.current;\n if (!value) return;\n value.journal.orderSnapshots += 1;\n value.journal.orderItems += items;\n },\n },\n address: {\n schemaStep: (): void => {\n const value = active.current;\n if (value) value.address.schemaSteps += 1;\n },\n documentStep: (): void => {\n const value = active.current;\n if (value) value.address.documentSteps += 1;\n },\n arrayCopied: (): void => {\n const value = active.current;\n if (value) value.address.arraysCopied += 1;\n },\n prefixComparison: (): void => {\n const value = active.current;\n if (value) value.address.prefixComparisons += 1;\n },\n segmentCompared: (): void => {\n const value = active.current;\n if (value) value.address.segmentsCompared += 1;\n },\n },\n impact: {\n affects: (): void => {\n const value = active.current;\n if (value) value.impact.affectsChecks += 1;\n },\n },\n reader: {\n session: (): void => {\n const value = active.current;\n if (value) value.reader.sessions += 1;\n },\n lookup: (): void => {\n const value = active.current;\n if (value) value.reader.nodeLookups += 1;\n },\n collectionIds: (amount = 1): void => {\n const value = active.current;\n if (value) value.reader.collectionIds += amount;\n },\n structuralSnapshot: (): void => {\n const value = active.current;\n if (value) value.reader.structuralSnapshots += 1;\n },\n },\n collectionView: {\n mapped: (): void => {\n const value = active.current;\n if (value) value.collectionView.mappedItems += 1;\n },\n idsScanned: (amount = 1): void => {\n const value = active.current;\n if (value) value.collectionView.idsScanned += amount;\n },\n arrayCopied: (): void => {\n const value = active.current;\n if (value) value.collectionView.arraysCopied += 1;\n },\n },\n materialized: {\n updated: (): void => {\n const value = active.current;\n if (value) value.materialized.updated += 1;\n },\n skipped: (): void => {\n const value = active.current;\n if (value) value.materialized.skipped += 1;\n },\n rebuilt: (): void => {\n const value = active.current;\n if (value) value.materialized.rebuilt += 1;\n },\n sourceChanged: (): void => {\n const value = active.current;\n if (value) value.materialized.sourceChanges += 1;\n },\n notification: (): void => {\n const value = active.current;\n if (value) value.materialized.notifications += 1;\n },\n },\n} as const;\n\nexport type ProfileSession = {\n readonly snapshot: () => ProfileSnapshot;\n readonly stop: () => ProfileSnapshot;\n};\n\nexport const startProfile = (): ProfileSession => {\n if (active.current) throw new Error('A document profile session is already active.');\n const value = counters();\n active.current = value;\n let stopped = false;\n const snapshot = (): ProfileSnapshot => freezeSnapshot(value);\n return {\n snapshot,\n stop: (): ProfileSnapshot => {\n if (!stopped) {\n stopped = true;\n active.current = undefined;\n }\n return snapshot();\n },\n };\n};\n\nexport const measureProfile = <T>(\n run: () => T\n): { readonly value: T; readonly profile: ProfileSnapshot } => {\n const session = startProfile();\n try {\n const value = run();\n return { value, profile: session.stop() };\n } catch (error) {\n session.stop();\n throw error;\n }\n};\n","import { profile } from '../profile';\n\nexport type CloneReason =\n 'initial' | 'canonical' | 'commit' | 'inverse' | 'reader' | 'replace' | 'journal' | 'snapshot';\n\nconst stablePayloads = new WeakSet<object>();\n\nconst markStablePayload = <T>(value: T): T => {\n if (Array.isArray(value) || isPlainObject(value)) stablePayloads.add(value as object);\n return value;\n};\n\nexport const isStablePayload = (value: unknown): boolean =>\n (Array.isArray(value) || isPlainObject(value)) && stablePayloads.has(value as object);\n\nexport const isPlainObject = (value: unknown): value is Record<string, unknown> => {\n if (value === null || typeof value !== 'object') return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n};\n\nconst countCloneReason = (reason: CloneReason | undefined): void => {\n if (reason) profile.clone.node(reason);\n};\n\nexport const cloneValue = <T>(value: T, reason?: CloneReason): T => {\n profile.clone.call();\n countCloneReason(reason);\n if (Array.isArray(value)) {\n profile.clone.container();\n const result = new Array(value.length);\n for (let index = 0; index < value.length; index += 1)\n result[index] = cloneValue(value[index], reason);\n return (\n reason === 'commit' || reason === 'inverse' || reason === 'snapshot'\n ? markStablePayload(Object.freeze(result))\n : result\n ) as T;\n }\n if (isPlainObject(value)) {\n profile.clone.container();\n const result: Record<string, unknown> = Object.create(Object.getPrototypeOf(value)) as Record<\n string,\n unknown\n >;\n for (const key in value) {\n if (Object.prototype.hasOwnProperty.call(value, key))\n result[key] = cloneValue(value[key], reason);\n }\n return (\n reason === 'commit' || reason === 'inverse' || reason === 'snapshot'\n ? markStablePayload(Object.freeze(result))\n : result\n ) as T;\n }\n return value;\n};\n\n// Structural document values cross an ownership boundary by cloning. Atomic\n// values are shared because their schema contract treats them as immutable.\nexport const ownPayload = <T>(value: T, reason: CloneReason = 'canonical'): T =>\n Array.isArray(value) || isPlainObject(value) ? cloneValue(value, reason) : value;\n\n// The caller transfers structural ownership to the mutable canonical document.\n// Public commit/history boundaries use snapshotPayload instead.\nexport const transferPayload = <T>(value: T): T => {\n profile.batch.payloadTransferred();\n return value;\n};\nexport const snapshotPayload = <T>(value: T, reason: CloneReason = 'commit'): T => (\n profile.batch.payloadSnapshot(),\n ownPayload(value, reason)\n);\n\nexport const deepEqual = (left: unknown, right: unknown): boolean => {\n profile.clone.deepEqual();\n if (Object.is(left, right)) return true;\n if (Array.isArray(left) && Array.isArray(right)) {\n profile.clone.deepEqualContainer();\n if (left.length !== right.length) return false;\n for (let index = 0; index < left.length; index += 1)\n if (!deepEqual(left[index], right[index])) return false;\n return true;\n }\n if (isPlainObject(left) && isPlainObject(right)) {\n profile.clone.deepEqualContainer();\n const leftKeys = Object.keys(left);\n if (leftKeys.length !== Object.keys(right).length) return false;\n for (const key of leftKeys) {\n if (!Object.prototype.hasOwnProperty.call(right, key) || !deepEqual(left[key], right[key]))\n return false;\n }\n return true;\n }\n return false;\n};\n\nexport const sameStructuralValue = (left: unknown, right: unknown): boolean =>\n Object.is(left, right) ||\n ((Array.isArray(left) || isPlainObject(left)) && deepEqual(left, right));\n\nexport const isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n"],"mappings":"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"}
|
package/dist/react.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_integration = require("./integration.cjs");
|
|
2
|
+
const require_integration = require("./integration-Bs3pOk65.cjs");
|
|
3
3
|
let doxum = require("doxum");
|
|
4
4
|
let react = require("react");
|
|
5
5
|
//#region react/src/hooks.ts
|
package/dist/react.js
CHANGED