doxum 0.1.17 → 0.1.19
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 +54 -3
- package/dist/advanced-BYZCjNWL.js +680 -0
- package/dist/advanced-BYZCjNWL.js.map +1 -0
- package/dist/advanced-C2fpjbK3.d.ts +171 -0
- package/dist/advanced-CMMNk49G.cjs +763 -0
- package/dist/advanced-CMMNk49G.cjs.map +1 -0
- package/dist/advanced-DlOYk1vi.d.cts +171 -0
- package/dist/advanced.cjs +2 -149
- package/dist/advanced.d.cts +2 -39
- package/dist/advanced.d.ts +2 -39
- package/dist/advanced.js +1 -148
- package/dist/index.cjs +788 -569
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +22 -2
- package/dist/index.d.ts +22 -2
- package/dist/index.js +755 -536
- package/dist/index.js.map +1 -1
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +2 -2
- package/dist/react.d.ts +2 -2
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
- package/skills/doxum-runtime/references/projections.en.md +37 -1
- package/skills/doxum-runtime/references/projections.zh-CN.md +31 -1
- package/dist/advanced.cjs.map +0 -1
- package/dist/advanced.js.map +0 -1
- package/dist/definition-BdLGD8Rq.d.ts +0 -101
- package/dist/definition-Bf8Z7xtX.d.cts +0 -101
- package/dist/definition-DUo1lfQ8.js +0 -71
- package/dist/definition-DUo1lfQ8.js.map +0 -1
- package/dist/definition-De6rhTlZ.cjs +0 -106
- package/dist/definition-De6rhTlZ.cjs.map +0 -1
package/dist/advanced.js
CHANGED
|
@@ -1,149 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as defineIncrementalValue, t as defineIncrementalCollection } from "./definition-DUo1lfQ8.js";
|
|
3
|
-
//#region core/src/projection/advanced.ts
|
|
4
|
-
const resetCollectionChange = Object.freeze({ kind: "reset" });
|
|
5
|
-
const isRebuild = (value) => value !== null && typeof value === "object" && value.kind === "rebuild";
|
|
6
|
-
const collectionChange = (source) => {
|
|
7
|
-
if (!source || typeof source !== "object" || !("kind" in source)) return void 0;
|
|
8
|
-
if (source.kind !== "collection") return void 0;
|
|
9
|
-
return source.change;
|
|
10
|
-
};
|
|
11
|
-
const sourceCause = (sources) => {
|
|
12
|
-
for (const source of Object.values(sources)) if (source && typeof source === "object" && "kind" in source) {
|
|
13
|
-
const cause = source.cause;
|
|
14
|
-
if (cause !== void 0) return cause;
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
const collectionView = (read) => {
|
|
18
|
-
const entries = function* () {
|
|
19
|
-
for (const key of read.ids()) yield [key, read.get(key)];
|
|
20
|
-
};
|
|
21
|
-
const values = function* () {
|
|
22
|
-
for (const key of read.ids()) yield read.get(key);
|
|
23
|
-
};
|
|
24
|
-
const view = {
|
|
25
|
-
get: (key) => read.get(key),
|
|
26
|
-
has: (key) => read.has(key),
|
|
27
|
-
get size() {
|
|
28
|
-
return read.ids().length;
|
|
29
|
-
},
|
|
30
|
-
keys: () => read.ids()[Symbol.iterator](),
|
|
31
|
-
values,
|
|
32
|
-
entries,
|
|
33
|
-
forEach: (callback, thisArg) => {
|
|
34
|
-
for (const key of read.ids()) callback.call(thisArg, read.get(key), key, view);
|
|
35
|
-
},
|
|
36
|
-
[Symbol.iterator]: entries
|
|
37
|
-
};
|
|
38
|
-
return Object.freeze(view);
|
|
39
|
-
};
|
|
40
|
-
const publicSource = (source) => {
|
|
41
|
-
if (!source || typeof source !== "object") return source;
|
|
42
|
-
if (!("kind" in source)) return source;
|
|
43
|
-
if (source.kind === "value") return source.value;
|
|
44
|
-
if (source.kind === "document") return snapshot(source.read);
|
|
45
|
-
if (source.kind === "collection") {
|
|
46
|
-
const read = source.read;
|
|
47
|
-
return collectionView(read);
|
|
48
|
-
}
|
|
49
|
-
return source;
|
|
50
|
-
};
|
|
51
|
-
const publicInputs = (sources, initial = false) => {
|
|
52
|
-
const values = [];
|
|
53
|
-
const changes = [];
|
|
54
|
-
for (const key of Object.keys(sources).sort((left, right) => Number(left.slice(1)) - Number(right.slice(1)))) {
|
|
55
|
-
const source = sources[key];
|
|
56
|
-
values.push(publicSource(source));
|
|
57
|
-
changes.push(initial && source && typeof source === "object" && "kind" in source && source.kind === "collection" ? resetCollectionChange : collectionChange(source));
|
|
58
|
-
}
|
|
59
|
-
return {
|
|
60
|
-
values,
|
|
61
|
-
changes
|
|
62
|
-
};
|
|
63
|
-
};
|
|
64
|
-
function createIncrementalValue(dependencies, processor) {
|
|
65
|
-
const dependencyMap = dependenciesOf(dependencies);
|
|
66
|
-
let state = Object.create(null);
|
|
67
|
-
let current;
|
|
68
|
-
const build = (sources) => {
|
|
69
|
-
state = Object.create(null);
|
|
70
|
-
const publicInputsForBuild = publicInputs(sources, true);
|
|
71
|
-
const result = processor({
|
|
72
|
-
sources: publicInputsForBuild.values,
|
|
73
|
-
changes: publicInputsForBuild.changes,
|
|
74
|
-
previous: void 0,
|
|
75
|
-
reset: true,
|
|
76
|
-
cause: sourceCause(sources),
|
|
77
|
-
state
|
|
78
|
-
});
|
|
79
|
-
if (isRebuild(result)) throw new TypeError("Initial incremental processor cannot rebuild.");
|
|
80
|
-
current = result;
|
|
81
|
-
return {
|
|
82
|
-
value: current,
|
|
83
|
-
update: (nextSources) => {
|
|
84
|
-
const publicInputsForUpdate = publicInputs(nextSources);
|
|
85
|
-
const next = processor({
|
|
86
|
-
sources: publicInputsForUpdate.values,
|
|
87
|
-
changes: publicInputsForUpdate.changes,
|
|
88
|
-
previous: current,
|
|
89
|
-
reset: false,
|
|
90
|
-
cause: sourceCause(nextSources),
|
|
91
|
-
state
|
|
92
|
-
});
|
|
93
|
-
if (isRebuild(next)) return next;
|
|
94
|
-
current = next;
|
|
95
|
-
return {
|
|
96
|
-
kind: "changed",
|
|
97
|
-
value: current
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
};
|
|
102
|
-
return defineIncrementalValue({
|
|
103
|
-
dependencies: dependencyMap,
|
|
104
|
-
build
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
function dependenciesOf(dependencies) {
|
|
108
|
-
return Object.fromEntries(dependencies.map((dependency, index) => [`d${index}`, dependency]));
|
|
109
|
-
}
|
|
110
|
-
function createIncrementalCollection(dependencies, processor) {
|
|
111
|
-
const dependencyMap = dependenciesOf(dependencies);
|
|
112
|
-
let state = Object.create(null);
|
|
113
|
-
const build = (input) => {
|
|
114
|
-
state = Object.create(null);
|
|
115
|
-
const publicInputsForBuild = publicInputs(input.sources, true);
|
|
116
|
-
if (processor({
|
|
117
|
-
sources: publicInputsForBuild.values,
|
|
118
|
-
changes: publicInputsForBuild.changes,
|
|
119
|
-
previous: input.previous,
|
|
120
|
-
next: input.next,
|
|
121
|
-
reset: true,
|
|
122
|
-
cause: sourceCause(input.sources),
|
|
123
|
-
state,
|
|
124
|
-
output: input.output
|
|
125
|
-
})?.kind === "rebuild") throw new TypeError("Initial incremental collection processor cannot rebuild.");
|
|
126
|
-
return { update: (nextInput) => {
|
|
127
|
-
const publicInputsForUpdate = publicInputs(nextInput.sources);
|
|
128
|
-
return processor({
|
|
129
|
-
sources: publicInputsForUpdate.values,
|
|
130
|
-
changes: publicInputsForUpdate.changes,
|
|
131
|
-
previous: nextInput.previous,
|
|
132
|
-
next: nextInput.next,
|
|
133
|
-
reset: false,
|
|
134
|
-
cause: sourceCause(nextInput.sources),
|
|
135
|
-
state,
|
|
136
|
-
output: nextInput.output
|
|
137
|
-
});
|
|
138
|
-
} };
|
|
139
|
-
};
|
|
140
|
-
return defineIncrementalCollection({
|
|
141
|
-
dependencies: dependencyMap,
|
|
142
|
-
build
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
const incremental = Object.assign(createIncrementalValue, { collection: createIncrementalCollection });
|
|
146
|
-
//#endregion
|
|
1
|
+
import { t as incremental } from "./advanced-BYZCjNWL.js";
|
|
147
2
|
export { incremental };
|
|
148
|
-
|
|
149
|
-
//# sourceMappingURL=advanced.js.map
|