doxum 0.1.1

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.
Files changed (36) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +218 -0
  3. package/dist/chunk-pbuEa-1d.js +13 -0
  4. package/dist/contract-DwNiKioc.d.ts +480 -0
  5. package/dist/contract-Otb5W6cQ.d.cts +480 -0
  6. package/dist/dependency-BdEMyquf.js +735 -0
  7. package/dist/dependency-BdEMyquf.js.map +1 -0
  8. package/dist/dependency-DLcCvNKq.cjs +1015 -0
  9. package/dist/dependency-DLcCvNKq.cjs.map +1 -0
  10. package/dist/index.cjs +2718 -0
  11. package/dist/index.cjs.map +1 -0
  12. package/dist/index.d.cts +89 -0
  13. package/dist/index.d.ts +87 -0
  14. package/dist/index.js +2689 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/integration.cjs +15 -0
  17. package/dist/integration.cjs.map +1 -0
  18. package/dist/integration.d.cts +11 -0
  19. package/dist/integration.d.ts +11 -0
  20. package/dist/integration.js +14 -0
  21. package/dist/integration.js.map +1 -0
  22. package/dist/react.cjs +99 -0
  23. package/dist/react.cjs.map +1 -0
  24. package/dist/react.d.cts +16 -0
  25. package/dist/react.d.ts +16 -0
  26. package/dist/react.js +96 -0
  27. package/dist/react.js.map +1 -0
  28. package/package.json +89 -0
  29. package/skills/doxum-runtime/SKILL.md +51 -0
  30. package/skills/doxum-runtime/agents/openai.yaml +4 -0
  31. package/skills/doxum-runtime/references/guide.en.md +295 -0
  32. package/skills/doxum-runtime/references/guide.zh-CN.md +240 -0
  33. package/skills/doxum-runtime/references/invariants.en.md +147 -0
  34. package/skills/doxum-runtime/references/invariants.zh-CN.md +97 -0
  35. package/skills/doxum-runtime/references/patterns.en.md +287 -0
  36. package/skills/doxum-runtime/references/patterns.zh-CN.md +240 -0
@@ -0,0 +1,480 @@
1
+ //#region core/src/schema.d.ts
2
+ type DocumentAddress = readonly string[];
3
+ type DocumentListConfig<TItem> = {
4
+ readonly keyOf: (item: TItem) => string;
5
+ };
6
+ type DocumentTreeNode<TValue> = {
7
+ readonly parentId?: string;
8
+ readonly children: readonly string[];
9
+ readonly value?: TValue;
10
+ };
11
+ type DocumentTreeValue<TValue> = {
12
+ readonly rootId?: string;
13
+ readonly nodes: Readonly<Record<string, DocumentTreeNode<TValue>>>;
14
+ };
15
+ type BaseNode<K extends string> = {
16
+ readonly kind: K;
17
+ };
18
+ type FieldNode<T, Optional extends boolean = false> = BaseNode<'field'> & {
19
+ readonly __value?: T;
20
+ readonly optional?: Optional;
21
+ };
22
+ type OptionalNode<TNode extends DocumentNode> = TNode & {
23
+ readonly optional: true;
24
+ };
25
+ interface ObjectShape {
26
+ readonly [key: string]: DocumentNode;
27
+ }
28
+ type ObjectNode<TShape extends ObjectShape> = BaseNode<'object'> & {
29
+ readonly shape: TShape;
30
+ };
31
+ interface VariantShape {
32
+ readonly [key: string]: ObjectNode<ObjectShape>;
33
+ }
34
+ type VariantNode<TTag extends string, TVariants extends VariantShape> = BaseNode<'variant'> & {
35
+ readonly tag: TTag;
36
+ readonly variants: TVariants;
37
+ };
38
+ type SingleNode<TValue extends ObjectNode<ObjectShape> | VariantNode<string, VariantShape>> = BaseNode<'single'> & {
39
+ readonly value: TValue;
40
+ };
41
+ type TableNode<TValue extends ObjectNode<ObjectShape> | VariantNode<string, VariantShape>> = BaseNode<'table'> & {
42
+ readonly value: TValue;
43
+ };
44
+ type MapNode<TValue extends ObjectNode<ObjectShape> | VariantNode<string, VariantShape>> = BaseNode<'map'> & {
45
+ readonly value: TValue;
46
+ };
47
+ type RecordNode<TId extends string, TValue> = BaseNode<'record'> & {
48
+ readonly __id?: TId;
49
+ readonly __value?: TValue;
50
+ };
51
+ type DictNode<TKey extends string, TValue> = BaseNode<'dict'> & {
52
+ readonly __key?: TKey;
53
+ readonly __value?: TValue;
54
+ };
55
+ type ListNode<TItem> = BaseNode<'list'> & {
56
+ readonly __item?: TItem;
57
+ keyOf(item: TItem): string;
58
+ };
59
+ type TreeNode<TValue> = BaseNode<'tree'> & {
60
+ readonly __value?: TValue;
61
+ };
62
+ type DocumentNode = FieldNode<unknown, boolean> | ObjectNode<ObjectShape> | VariantNode<string, VariantShape> | SingleNode<ObjectNode<ObjectShape> | VariantNode<string, VariantShape>> | TableNode<ObjectNode<ObjectShape> | VariantNode<string, VariantShape>> | MapNode<ObjectNode<ObjectShape> | VariantNode<string, VariantShape>> | RecordNode<string, unknown> | DictNode<string, unknown> | ListNode<unknown> | TreeNode<unknown>;
63
+ type EntityValue<N extends ObjectNode<ObjectShape> | VariantNode<string, VariantShape>> = N extends ObjectNode<infer S> ? DocumentValueOfShape<S> : N extends VariantNode<infer T, infer V> ? { [K in keyof V & string]: { [P in T]: K } & DocumentValueOfShape<V[K] extends ObjectNode<infer S> ? S : never> }[keyof V & string] : never;
64
+ type DocumentValueOfNode<N> = N extends FieldNode<infer T, infer O> ? O extends true ? T | undefined : T : N extends ObjectNode<infer S> ? DocumentValueOfShape<S> : N extends VariantNode<infer T, infer V> ? EntityValue<VariantNode<T, V>> : N extends SingleNode<infer V> ? EntityValue<V> : N extends TableNode<infer V> ? {
65
+ readonly ids: readonly string[];
66
+ readonly byId: Readonly<Record<string, EntityValue<V>>>;
67
+ } : N extends MapNode<infer V> ? Readonly<Record<string, EntityValue<V>>> : N extends RecordNode<infer I, infer T> ? Readonly<Record<I, T>> : N extends DictNode<infer K, infer T> ? Readonly<Partial<Record<K, T>>> : N extends ListNode<infer I> ? readonly I[] : N extends TreeNode<infer T> ? DocumentTreeValue<T> : never;
68
+ type OptionalKeys<S extends ObjectShape> = { [K in keyof S]: S[K] extends {
69
+ readonly optional: true;
70
+ } ? K : never }[keyof S];
71
+ type RequiredKeys<S extends ObjectShape> = Exclude<keyof S, OptionalKeys<S>>;
72
+ type DocumentValueOfShape<S extends ObjectShape> = { readonly [K in RequiredKeys<S>]: DocumentValueOfNode<S[K]> } & { readonly [K in OptionalKeys<S>]?: DocumentValueOfNode<S[K]> };
73
+ type ReadonlyDocument<S extends DocumentSchema> = DocumentValueOfShape<S['shape']>;
74
+ type CollectionSelector<TId extends string = string, TEntry = unknown> = {
75
+ readonly kind: 'collection';
76
+ readonly schema: DocumentSchema;
77
+ readonly address: DocumentAddress;
78
+ readonly __id?: TId;
79
+ readonly __entry?: TEntry;
80
+ };
81
+ type ValueSelector<TResult = unknown> = {
82
+ readonly kind: 'value';
83
+ readonly schema: DocumentSchema;
84
+ readonly address: DocumentAddress;
85
+ readonly __value?: TResult;
86
+ };
87
+ type ImpactTarget<T = unknown> = {
88
+ readonly kind: 'value';
89
+ readonly at: DocumentAddress;
90
+ } | ValueSelector<T> | {
91
+ readonly kind: 'collection';
92
+ readonly at: DocumentAddress;
93
+ readonly id?: string;
94
+ } | CollectionSelector<string, T>;
95
+ type PathMarker<TValue> = {
96
+ readonly __value?: TValue;
97
+ };
98
+ type SchemaPathFor<S extends ObjectShape = ObjectShape, TValue = unknown> = { readonly [K in keyof S]: PathValue<S[K]> } & {
99
+ readonly item: (id: string) => SchemaPathFor<{}, unknown>;
100
+ } & PathMarker<TValue>;
101
+ type DocumentSchema<TShape extends ObjectShape = {}> = {
102
+ readonly kind: 'schema';
103
+ readonly shape: TShape;
104
+ collection<TPath extends PathMarker<unknown>>(pick: (path: SchemaPath<TShape>) => TPath): CollectionSelector<CollectionId<TPath>, CollectionEntry<TPath>>;
105
+ value<TPath extends PathMarker<unknown>>(pick: (path: SchemaPath<TShape>) => TPath): ValueSelector<PathValueResult<TPath>>;
106
+ };
107
+ type SchemaPath<S extends ObjectShape = {}> = SchemaPathFor<S, DocumentValueOfShape<S>>;
108
+ type VariantKeys<V extends VariantShape> = { [K in keyof V & string]: keyof (V[K] extends ObjectNode<infer S> ? S : {}) }[keyof V & string] & string;
109
+ type VariantFieldPath<V extends VariantShape, K extends string> = { [P in keyof V & string]: V[P] extends ObjectNode<infer S> ? K extends keyof S ? PathValue<S[K]> : never : never }[keyof V & string];
110
+ type VariantPath<V extends VariantShape> = { readonly [K in VariantKeys<V>]: VariantFieldPath<V, K> } & {
111
+ readonly item: (id: string) => SchemaPathFor<{}, unknown>;
112
+ } & PathMarker<EntityValue<VariantNode<string, V>>>;
113
+ type PathNodeValue<N extends DocumentNode> = N extends {
114
+ readonly optional: true;
115
+ } ? DocumentValueOfNode<N> | undefined : DocumentValueOfNode<N>;
116
+ type EntityPath<N extends ObjectNode<ObjectShape> | VariantNode<string, VariantShape>> = N extends ObjectNode<infer S> ? SchemaPathFor<S, PathNodeValue<N>> : N extends VariantNode<string, infer V> ? VariantPath<V> : never;
117
+ type CollectionPath<N extends ObjectNode<ObjectShape> | VariantNode<string, VariantShape>> = Omit<EntityPath<N>, 'item'> & {
118
+ readonly item: (id: string) => EntityPath<N>;
119
+ readonly __collection?: {
120
+ readonly id: string;
121
+ readonly entry: DocumentValueOfNode<N>;
122
+ };
123
+ };
124
+ type PathValue<N extends DocumentNode> = N extends ObjectNode<infer S> ? SchemaPathFor<S, PathNodeValue<N>> : N extends VariantNode<infer _TTag, infer V> ? VariantPath<V> : N extends TableNode<infer V> | MapNode<infer V> ? CollectionPath<V> : N extends SingleNode<infer V> ? EntityPath<V> : SchemaPathFor<{}, PathNodeValue<N>>;
125
+ type CollectionInfo<T> = T extends {
126
+ readonly __collection?: {
127
+ readonly id: infer TId;
128
+ readonly entry: infer TEntry;
129
+ };
130
+ } ? {
131
+ readonly id: TId;
132
+ readonly entry: TEntry;
133
+ } : never;
134
+ type CollectionId<T> = CollectionInfo<T> extends {
135
+ readonly id: infer TId extends string;
136
+ } ? TId : string;
137
+ type CollectionEntry<T> = CollectionInfo<T> extends {
138
+ readonly entry: infer TEntry;
139
+ } ? TEntry : never;
140
+ type PathValueResult<T> = T extends PathMarker<infer TValue> ? TValue : unknown;
141
+ declare const field: <T>() => FieldNode<T>;
142
+ declare const optional: <T extends DocumentNode>(value: T) => OptionalNode<T>;
143
+ declare const object: <S extends ObjectShape>(shape: S) => ObjectNode<S>;
144
+ declare const variant: <T extends string, V extends VariantShape>(tag: T, variants: V) => VariantNode<T, V>;
145
+ declare const single: <V extends ObjectNode<ObjectShape> | VariantNode<string, VariantShape>>(value: V) => SingleNode<V>;
146
+ declare const table: <V extends ObjectNode<ObjectShape> | VariantNode<string, VariantShape>>(value: V) => TableNode<V>;
147
+ declare const map: <V extends ObjectNode<ObjectShape> | VariantNode<string, VariantShape>>(value: V) => MapNode<V>;
148
+ declare const record: <TId extends string = string, TValue = unknown>() => RecordNode<TId, TValue>;
149
+ declare const dict: <TKey extends string = string, TValue = unknown>() => DictNode<TKey, TValue>;
150
+ declare const list: <TItem>(config: DocumentListConfig<TItem>) => ListNode<TItem>;
151
+ declare const tree: <TValue = unknown>() => TreeNode<TValue>;
152
+ declare const schema: <S extends ObjectShape>(shape: S) => DocumentSchema<S>;
153
+ //#endregion
154
+ //#region core/src/operations.d.ts
155
+ type DocumentAnchor = {
156
+ readonly before: string;
157
+ } | {
158
+ readonly after: string;
159
+ } | {
160
+ readonly at: 'start' | 'end';
161
+ };
162
+ type OperationBase = {
163
+ readonly at: DocumentAddress;
164
+ };
165
+ type FieldSetOperation<TSchema extends DocumentSchema = DocumentSchema> = OperationBase & {
166
+ readonly type: 'field.set';
167
+ readonly value: unknown;
168
+ };
169
+ type FieldClearOperation<TSchema extends DocumentSchema = DocumentSchema> = OperationBase & {
170
+ readonly type: 'field.clear';
171
+ };
172
+ type VariantReplaceOperation<TSchema extends DocumentSchema = DocumentSchema> = OperationBase & {
173
+ readonly type: 'variant.replace';
174
+ readonly value: unknown;
175
+ };
176
+ type DictSetOperation<TSchema extends DocumentSchema = DocumentSchema> = OperationBase & {
177
+ readonly type: 'dict.set';
178
+ readonly key: string;
179
+ readonly value: unknown;
180
+ };
181
+ type DictDeleteOperation<TSchema extends DocumentSchema = DocumentSchema> = OperationBase & {
182
+ readonly type: 'dict.delete';
183
+ readonly key: string;
184
+ };
185
+ type DictReplaceOperation<TSchema extends DocumentSchema = DocumentSchema> = OperationBase & {
186
+ readonly type: 'dict.replace';
187
+ readonly value: Readonly<Record<string, unknown>>;
188
+ };
189
+ type EntityCreateOperation<TSchema extends DocumentSchema = DocumentSchema> = OperationBase & {
190
+ readonly type: 'entity.create';
191
+ readonly entries: readonly EntityEntry[];
192
+ readonly anchor?: DocumentAnchor; /** Generated inverse metadata with strictly increasing final indices. Normal creates omit it. */
193
+ readonly positions?: readonly number[];
194
+ };
195
+ type EntityEntry = {
196
+ readonly id: string;
197
+ readonly value: unknown;
198
+ };
199
+ type EntityRemoveOperation<TSchema extends DocumentSchema = DocumentSchema> = OperationBase & {
200
+ readonly type: 'entity.remove';
201
+ readonly ids: readonly string[];
202
+ };
203
+ type EntityMoveOperation<TSchema extends DocumentSchema = DocumentSchema> = OperationBase & {
204
+ readonly type: 'entity.move';
205
+ readonly id: string;
206
+ readonly anchor?: DocumentAnchor;
207
+ };
208
+ type ListInsertOperation<TSchema extends DocumentSchema = DocumentSchema> = OperationBase & {
209
+ readonly type: 'list.insert';
210
+ readonly key: string;
211
+ readonly value: unknown;
212
+ readonly anchor?: DocumentAnchor;
213
+ };
214
+ type ListMoveOperation<TSchema extends DocumentSchema = DocumentSchema> = OperationBase & {
215
+ readonly type: 'list.move';
216
+ readonly key: string;
217
+ readonly anchor?: DocumentAnchor;
218
+ };
219
+ type ListRemoveOperation<TSchema extends DocumentSchema = DocumentSchema> = OperationBase & {
220
+ readonly type: 'list.remove';
221
+ readonly key: string;
222
+ };
223
+ type ListReplaceOperation<TSchema extends DocumentSchema = DocumentSchema> = OperationBase & {
224
+ readonly type: 'list.replace';
225
+ readonly value: readonly unknown[];
226
+ readonly keys: readonly string[];
227
+ };
228
+ type TreeInsertOperation<TSchema extends DocumentSchema = DocumentSchema> = OperationBase & {
229
+ readonly type: 'tree.insert';
230
+ readonly treeNodeId: string;
231
+ readonly parentId?: string;
232
+ readonly index?: number;
233
+ readonly value?: unknown;
234
+ };
235
+ type TreeMoveOperation<TSchema extends DocumentSchema = DocumentSchema> = OperationBase & {
236
+ readonly type: 'tree.move';
237
+ readonly treeNodeId: string;
238
+ readonly parentId?: string;
239
+ readonly index?: number;
240
+ };
241
+ type TreeRemoveOperation<TSchema extends DocumentSchema = DocumentSchema> = OperationBase & {
242
+ readonly type: 'tree.remove';
243
+ readonly treeNodeId: string;
244
+ };
245
+ type TreeSetOperation<TSchema extends DocumentSchema = DocumentSchema> = OperationBase & {
246
+ readonly type: 'tree.set';
247
+ readonly treeNodeId: string;
248
+ readonly value: unknown;
249
+ };
250
+ type TreeReplaceOperation<TSchema extends DocumentSchema = DocumentSchema> = OperationBase & {
251
+ readonly type: 'tree.replace';
252
+ readonly value: unknown;
253
+ };
254
+ type DocumentOperationUnion<TSchema extends DocumentSchema = DocumentSchema> = FieldSetOperation<TSchema> | FieldClearOperation<TSchema> | VariantReplaceOperation<TSchema> | DictSetOperation<TSchema> | DictDeleteOperation<TSchema> | DictReplaceOperation<TSchema> | EntityCreateOperation<TSchema> | EntityRemoveOperation<TSchema> | EntityMoveOperation<TSchema> | ListInsertOperation<TSchema> | ListMoveOperation<TSchema> | ListRemoveOperation<TSchema> | ListReplaceOperation<TSchema> | TreeInsertOperation<TSchema> | TreeMoveOperation<TSchema> | TreeRemoveOperation<TSchema> | TreeSetOperation<TSchema> | TreeReplaceOperation<TSchema>;
255
+ type DocumentOperation<TSchema extends DocumentSchema = DocumentSchema> = DocumentOperationUnion<TSchema>;
256
+ //#endregion
257
+ //#region core/src/access/reader.d.ts
258
+ type FieldReader<T> = {
259
+ readonly get: () => T;
260
+ };
261
+ type CollectionReader<TId, TEntry> = {
262
+ readonly ids: () => readonly TId[];
263
+ readonly has: (id: TId) => boolean;
264
+ readonly get: (id: TId) => EntityReader<TEntry> | undefined;
265
+ };
266
+ type ListReader<T> = {
267
+ readonly values: () => readonly T[];
268
+ readonly length: () => number;
269
+ readonly at: (index: number) => T | undefined;
270
+ };
271
+ type TreeReader<T> = {
272
+ readonly rootId: () => string | undefined;
273
+ readonly has: (id: string) => boolean;
274
+ readonly value: (id: string) => T | undefined;
275
+ readonly parent: (id: string) => string | undefined;
276
+ readonly children: (id: string) => readonly string[];
277
+ };
278
+ type EntityReader<T> = T extends object ? { readonly [K in keyof T]: ReaderValue<T[K]> } : FieldReader<T>;
279
+ type ReaderValue<T> = T extends readonly (infer TItem)[] ? ListReader<TItem> : T extends object ? EntityReader<T> : FieldReader<T>;
280
+ type ReaderOfNode<TNode extends DocumentNode> = TNode extends {
281
+ kind: 'field';
282
+ } ? FieldReader<DocumentValueOfNode<TNode>> : TNode extends ObjectNode<infer TShape> ? { readonly [K in keyof TShape]: ReaderOfNode<TShape[K]> } : TNode extends VariantNode<string, infer TVariants> ? { readonly [K in keyof TVariants]: ReaderOfNode<TVariants[K]> } : TNode extends SingleNode<infer TValue> ? ReaderOfNode<TValue> : TNode extends TableNode<infer TValue> ? CollectionReader<string, DocumentValueOfNode<TValue>> : TNode extends MapNode<infer TValue> ? CollectionReader<string, DocumentValueOfNode<TValue>> : TNode extends DictNode<infer TKey, infer TValue> ? FieldReader<Readonly<Partial<Record<TKey, TValue>>>> : TNode extends ListNode<infer TItem> ? ListReader<TItem> : TNode extends TreeNode<infer TValue> ? TreeReader<TValue> : FieldReader<DocumentValueOfNode<TNode>>;
283
+ type DocumentReader<TSchema extends DocumentSchema> = ReaderOfNode<ObjectNode<TSchema['shape']>>;
284
+ //#endregion
285
+ //#region core/src/access/writer.d.ts
286
+ type FieldWriter<T> = {
287
+ readonly set: (value: T) => void;
288
+ readonly clear?: () => void;
289
+ };
290
+ type DictionaryWriter<TKey extends string, TValue> = {
291
+ readonly set: (key: TKey, value: TValue) => void;
292
+ readonly delete: (key: TKey) => void;
293
+ readonly replace: (value: Readonly<Partial<Record<TKey, TValue>>>) => void;
294
+ };
295
+ type CollectionWriter<TId, TEntry> = {
296
+ readonly create: (entry: {
297
+ readonly id: TId;
298
+ readonly value: TEntry;
299
+ } | readonly {
300
+ readonly id: TId;
301
+ readonly value: TEntry;
302
+ }[], anchor?: DocumentAnchor) => void;
303
+ readonly item: (id: TId) => EntityWriter<TEntry>;
304
+ readonly remove: (id: TId | readonly TId[]) => void;
305
+ readonly move: (id: TId, anchor?: DocumentAnchor) => void;
306
+ };
307
+ type MapWriter<TId, TEntry> = {
308
+ readonly create: (entry: {
309
+ readonly id: TId;
310
+ readonly value: TEntry;
311
+ } | readonly {
312
+ readonly id: TId;
313
+ readonly value: TEntry;
314
+ }[]) => void;
315
+ readonly item: (id: TId) => EntityWriter<TEntry>;
316
+ readonly remove: (id: TId | readonly TId[]) => void;
317
+ };
318
+ type ListWriter<T> = {
319
+ readonly insert: (value: T, anchor?: DocumentAnchor) => void;
320
+ readonly move: (key: string, anchor?: DocumentAnchor) => void;
321
+ readonly remove: (key: string) => void;
322
+ readonly replace: (value: readonly T[]) => void;
323
+ };
324
+ type TreeWriter<T> = {
325
+ readonly insert: (id: string, value: T, parentId?: string, index?: number) => void;
326
+ readonly move: (id: string, parentId?: string, index?: number) => void;
327
+ readonly remove: (id: string) => void;
328
+ readonly set: (id: string, value: T) => void;
329
+ readonly replace: (value: unknown) => void;
330
+ };
331
+ type EntityWriter<T> = T extends object ? { readonly [K in keyof T]: WriterValue<T[K]> } : FieldWriter<T>;
332
+ type WriterValue<T> = T extends readonly (infer TItem)[] ? ListWriter<TItem> : T extends object ? EntityWriter<T> : FieldWriter<T>;
333
+ type WriterOfNode<TNode extends DocumentNode> = TNode extends {
334
+ kind: 'field';
335
+ } ? FieldWriter<DocumentValueOfNode<TNode>> : TNode extends ObjectNode<infer TShape> ? { readonly [K in keyof TShape]: WriterOfNode<TShape[K]> } : TNode extends VariantNode<string, infer _TVariants> ? {
336
+ readonly replace: (value: DocumentValueOfNode<TNode>) => void;
337
+ } : TNode extends SingleNode<infer TValue> ? WriterOfNode<TValue> : TNode extends TableNode<infer TValue> ? CollectionWriter<string, DocumentValueOfNode<TValue>> : TNode extends MapNode<infer TValue> ? MapWriter<string, DocumentValueOfNode<TValue>> : TNode extends DictNode<infer TKey, infer TValue> ? DictionaryWriter<TKey, TValue> : TNode extends ListNode<infer TItem> ? ListWriter<TItem> : TNode extends TreeNode<infer TValue> ? TreeWriter<TValue> : FieldWriter<DocumentValueOfNode<TNode>>;
338
+ type DocumentWriter<TSchema extends DocumentSchema> = WriterOfNode<ObjectNode<TSchema['shape']>>;
339
+ //#endregion
340
+ //#region core/src/mutation/issue.d.ts
341
+ type MutationIssueCode = 'invalid-address' | 'invalid-operation' | 'unknown-operation' | 'required-field' | 'invalid-anchor' | 'duplicate-entity' | 'missing-entity' | 'invalid-collection' | 'invalid-list-keys' | 'invalid-list-key' | 'duplicate-list-item' | 'missing-list-item' | 'invalid-tree' | 'duplicate-tree-node' | 'missing-tree-parent' | 'invalid-tree-index' | 'missing-tree-node' | 'tree-cycle';
342
+ type MutationIssue = {
343
+ readonly source: 'mutation';
344
+ readonly code: MutationIssueCode;
345
+ readonly address: DocumentAddress;
346
+ readonly message: string;
347
+ readonly operation?: DocumentOperationUnion['type'];
348
+ };
349
+ //#endregion
350
+ //#region core/src/impact.d.ts
351
+ type CollectionImpact<TId> = {
352
+ readonly kind: 'reset';
353
+ } | {
354
+ readonly kind: 'incremental';
355
+ readonly added: ReadonlySet<TId>;
356
+ readonly removed: ReadonlySet<TId>;
357
+ readonly updated: ReadonlySet<TId>;
358
+ readonly orderChanged: boolean;
359
+ };
360
+ type DocumentImpact<TSchema extends DocumentSchema> = {
361
+ readonly kind: 'incremental' | 'reset';
362
+ readonly affects: (target: ImpactTarget<unknown>) => boolean;
363
+ readonly collection: <TId extends string, TEntry>(selector: CollectionSelector<TId, TEntry>) => CollectionImpact<TId>;
364
+ readonly operations: readonly DocumentOperationUnion<TSchema>[];
365
+ };
366
+ //#endregion
367
+ //#region core/src/address.d.ts
368
+ /** The only resolved address representation used inside the runtime. */
369
+ type AddressRef = {
370
+ readonly path: number;
371
+ readonly address: DocumentAddress;
372
+ };
373
+ declare const resolveAddress: (schema: DocumentSchema, address: DocumentAddress, document?: unknown) => AddressRef | undefined;
374
+ declare const read: (root: unknown, address: DocumentAddress) => unknown;
375
+ declare const contains: (parent: DocumentAddress, child: DocumentAddress) => boolean;
376
+ declare const overlaps: (a: DocumentAddress, b: DocumentAddress) => boolean;
377
+ declare const debugKey: (address: DocumentAddress) => string;
378
+ //#endregion
379
+ //#region core/src/runtime/contract.d.ts
380
+ type Unsubscribe = () => void;
381
+ type CommitSource = 'local' | 'system' | 'history' | 'remote';
382
+ declare class DocumentReentrancyError extends Error {
383
+ constructor();
384
+ }
385
+ declare class DocumentDisposedError extends Error {
386
+ constructor();
387
+ }
388
+ type DocumentCommit<TSchema extends DocumentSchema> = {
389
+ readonly revision: number;
390
+ readonly kind: 'operations' | 'replace';
391
+ readonly source: CommitSource;
392
+ readonly operations: readonly DocumentOperationUnion<TSchema>[];
393
+ readonly inverse: readonly DocumentOperationUnion<TSchema>[];
394
+ readonly impact: DocumentImpact<TSchema>;
395
+ };
396
+ type DocumentDiagnostic = {
397
+ readonly source: 'application';
398
+ readonly code: string;
399
+ readonly message: string;
400
+ readonly address?: DocumentAddress;
401
+ };
402
+ type DocumentProblem = DocumentDiagnostic | MutationIssue;
403
+ type ObserverError = {
404
+ readonly phase: 'processor' | 'flush' | 'listener';
405
+ readonly error: unknown;
406
+ };
407
+ type TransactionResult<TValue, TCommit> = {
408
+ readonly status: 'committed';
409
+ readonly value: TValue;
410
+ readonly commit: TCommit;
411
+ readonly reports: readonly DocumentDiagnostic[];
412
+ readonly observerErrors: readonly ObserverError[];
413
+ } | {
414
+ readonly status: 'unchanged';
415
+ readonly value: TValue;
416
+ readonly revision: number;
417
+ readonly reports: readonly DocumentDiagnostic[];
418
+ } | {
419
+ readonly status: 'rejected';
420
+ readonly issues: readonly DocumentProblem[];
421
+ readonly revision: number;
422
+ };
423
+ type OperationResult<TCommit> = {
424
+ readonly status: 'committed';
425
+ readonly commit: TCommit;
426
+ readonly observerErrors: readonly ObserverError[];
427
+ } | {
428
+ readonly status: 'unchanged';
429
+ readonly revision: number;
430
+ } | {
431
+ readonly status: 'rejected';
432
+ readonly issues: readonly MutationIssue[];
433
+ readonly revision: number;
434
+ };
435
+ type HistoryState = {
436
+ readonly undoDepth: number;
437
+ readonly redoDepth: number;
438
+ };
439
+ type LocalHistory<TCommit> = {
440
+ current(): HistoryState;
441
+ subscribe(listener: () => void): Unsubscribe;
442
+ undo(): OperationResult<TCommit>;
443
+ redo(): OperationResult<TCommit>;
444
+ clear(): void;
445
+ };
446
+ type DocumentTransaction<TSchema extends DocumentSchema> = {
447
+ readonly read: DocumentReader<TSchema>;
448
+ readonly write: DocumentWriter<TSchema>;
449
+ readonly reject: (issue: DocumentDiagnostic | readonly DocumentDiagnostic[]) => never;
450
+ readonly report: (issue: DocumentDiagnostic) => void;
451
+ };
452
+ type CommitListener<TSchema extends DocumentSchema> = (commit: DocumentCommit<TSchema>) => void;
453
+ type DocumentRuntime<TSchema extends DocumentSchema> = {
454
+ readonly address: {
455
+ readonly resolve: (address: DocumentAddress) => AddressRef | undefined;
456
+ readonly read: (address: DocumentAddress) => unknown;
457
+ readonly contains: (parent: DocumentAddress, child: DocumentAddress) => boolean;
458
+ readonly overlaps: (left: DocumentAddress, right: DocumentAddress) => boolean;
459
+ readonly debugKey: (address: DocumentAddress) => string;
460
+ };
461
+ revision(): number;
462
+ update<TResult>(run: (transaction: DocumentTransaction<TSchema>) => TResult, options?: {
463
+ readonly source?: Extract<CommitSource, 'local' | 'system'>;
464
+ readonly history?: boolean;
465
+ }): TransactionResult<TResult, DocumentCommit<TSchema>>;
466
+ apply(operations: unknown, options?: {
467
+ readonly source?: Exclude<CommitSource, 'history'>;
468
+ readonly history?: boolean;
469
+ }): OperationResult<DocumentCommit<TSchema>>;
470
+ replace(document: ReadonlyDocument<TSchema>, options?: {
471
+ readonly source?: Extract<CommitSource, 'system' | 'remote'>;
472
+ }): OperationResult<DocumentCommit<TSchema>>;
473
+ subscribe(listener: CommitListener<TSchema>): Unsubscribe;
474
+ subscribe(target: ImpactTarget<unknown> | readonly [ImpactTarget<unknown>, ...ImpactTarget<unknown>[]], listener: CommitListener<TSchema>): Unsubscribe;
475
+ readonly history: LocalHistory<DocumentCommit<TSchema>>;
476
+ dispose(): void;
477
+ };
478
+ //#endregion
479
+ export { ListInsertOperation as $, ListWriter as A, TableNode as At, TreeReader as B, optional as Bt, MutationIssue as C, ObjectNode as Ct, DocumentWriter as D, RecordNode as Dt, DictionaryWriter as E, ReadonlyDocument as Et, DocumentReader as F, dict as Ft, DocumentOperation as G, tree as Gt, DictReplaceOperation as H, schema as Ht, EntityReader as I, field as It, EntityEntry as J, DocumentOperationUnion as K, variant as Kt, FieldReader as L, list as Lt, TreeWriter as M, ValueSelector as Mt, WriterOfNode as N, VariantNode as Nt, EntityWriter as O, SchemaPath as Ot, CollectionReader as P, VariantShape as Pt, FieldSetOperation as Q, ListReader as R, map as Rt, DocumentImpact as S, MapNode as St, CollectionWriter as T, OptionalNode as Tt, DictSetOperation as U, single as Ut, DictDeleteOperation as V, record as Vt, DocumentAnchor as W, table as Wt, EntityRemoveOperation as X, EntityMoveOperation as Y, FieldClearOperation as Z, debugKey as _, DocumentValueOfNode as _t, DocumentProblem as a, TreeRemoveOperation as at, resolveAddress as b, ImpactTarget as bt, DocumentTransaction as c, VariantReplaceOperation as ct, ObserverError as d, DocumentAddress as dt, ListMoveOperation as et, OperationResult as f, DocumentListConfig as ft, contains as g, DocumentTreeValue as gt, AddressRef as h, DocumentTreeNode as ht, DocumentDisposedError as i, TreeMoveOperation as it, MapWriter as j, TreeNode as jt, FieldWriter as k, SingleNode as kt, HistoryState as l, CollectionSelector as lt, Unsubscribe as m, DocumentSchema as mt, DocumentCommit as n, ListReplaceOperation as nt, DocumentReentrancyError as o, TreeReplaceOperation as ot, TransactionResult as p, DocumentNode as pt, EntityCreateOperation as q, DocumentDiagnostic as r, TreeInsertOperation as rt, DocumentRuntime as s, TreeSetOperation as st, CommitSource as t, ListRemoveOperation as tt, LocalHistory as u, DictNode as ut, overlaps as v, DocumentValueOfShape as vt, MutationIssueCode as w, ObjectShape as wt, CollectionImpact as x, ListNode as xt, read as y, FieldNode as yt, ReaderOfNode as z, object as zt };
480
+ //# sourceMappingURL=contract-Otb5W6cQ.d.cts.map