@dialecte/core 0.1.22 → 0.2.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 (195) hide show
  1. package/dist/document/bind-extensions.d.ts +1 -1
  2. package/dist/document/bind-extensions.d.ts.map +1 -1
  3. package/dist/document/document.d.ts +6 -7
  4. package/dist/document/document.d.ts.map +1 -1
  5. package/dist/document/index.d.ts +3 -1
  6. package/dist/document/index.d.ts.map +1 -1
  7. package/dist/document/query/any/any-query.d.ts +2 -1
  8. package/dist/document/query/any/any-query.d.ts.map +1 -1
  9. package/dist/document/query/find/ancestor/find-ancestor.d.ts +2 -2
  10. package/dist/document/query/find/ancestor/find-ancestor.d.ts.map +1 -1
  11. package/dist/document/query/find/descendant/find-descendant.d.ts +2 -2
  12. package/dist/document/query/find/descendant/find-descendant.d.ts.map +1 -1
  13. package/dist/document/query/get/attribute/get-attribute.d.ts +2 -2
  14. package/dist/document/query/get/attribute/get-attribute.d.ts.map +1 -1
  15. package/dist/document/query/get/attribute/get-attributes.d.ts +2 -2
  16. package/dist/document/query/get/attribute/get-attributes.d.ts.map +1 -1
  17. package/dist/document/query/get/record/get-child.d.ts +2 -2
  18. package/dist/document/query/get/record/get-child.d.ts.map +1 -1
  19. package/dist/document/query/get/record/get-children.d.ts +2 -2
  20. package/dist/document/query/get/record/get-children.d.ts.map +1 -1
  21. package/dist/document/query/get/record/get-record.d.ts +2 -2
  22. package/dist/document/query/get/record/get-record.d.ts.map +1 -1
  23. package/dist/document/query/get/record/get-records.d.ts +2 -2
  24. package/dist/document/query/get/record/get-records.d.ts.map +1 -1
  25. package/dist/document/query/get/tree/get-tree.d.ts +2 -2
  26. package/dist/document/query/get/tree/get-tree.d.ts.map +1 -1
  27. package/dist/document/query/main.d.ts +4 -2
  28. package/dist/document/query/main.d.ts.map +1 -1
  29. package/dist/document/transaction/any/any-transaction.d.ts +2 -3
  30. package/dist/document/transaction/any/any-transaction.d.ts.map +1 -1
  31. package/dist/document/transaction/clone/clone.d.ts +2 -2
  32. package/dist/document/transaction/clone/clone.d.ts.map +1 -1
  33. package/dist/document/transaction/clone/clone.types.d.ts +2 -1
  34. package/dist/document/transaction/clone/clone.types.d.ts.map +1 -1
  35. package/dist/document/transaction/commit/commit.d.ts +3 -2
  36. package/dist/document/transaction/commit/commit.d.ts.map +1 -1
  37. package/dist/document/transaction/create/create.d.ts +2 -2
  38. package/dist/document/transaction/create/create.d.ts.map +1 -1
  39. package/dist/document/transaction/delete/delete.d.ts +2 -2
  40. package/dist/document/transaction/delete/delete.d.ts.map +1 -1
  41. package/dist/document/transaction/ensure/ensure.d.ts +2 -2
  42. package/dist/document/transaction/ensure/ensure.d.ts.map +1 -1
  43. package/dist/document/transaction/main.d.ts +5 -4
  44. package/dist/document/transaction/main.d.ts.map +1 -1
  45. package/dist/document/transaction/update/update.d.ts +2 -2
  46. package/dist/document/transaction/update/update.d.ts.map +1 -1
  47. package/dist/document/types.d.ts +2 -1
  48. package/dist/document/types.d.ts.map +1 -1
  49. package/dist/{types/extensions.d.ts → document/types.extensions.d.ts} +3 -3
  50. package/dist/document/types.extensions.d.ts.map +1 -0
  51. package/dist/{types/ref.d.ts → document/types.ref.d.ts} +2 -3
  52. package/dist/document/types.ref.d.ts.map +1 -0
  53. package/dist/errors/codes.d.ts +16 -0
  54. package/dist/errors/codes.d.ts.map +1 -1
  55. package/dist/helpers/converter.d.ts +2 -1
  56. package/dist/helpers/converter.d.ts.map +1 -1
  57. package/dist/helpers/merge-extensions.d.ts +1 -2
  58. package/dist/helpers/merge-extensions.d.ts.map +1 -1
  59. package/dist/helpers.js +1 -1
  60. package/dist/{index-B1qiHOqL.js → index-C2WRi-6U.js} +27 -10
  61. package/dist/index.d.ts +2 -2
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +73 -38
  64. package/dist/{merge-extensions-D-JNgVJ8.js → merge-extensions-DQKNUthU.js} +1 -1
  65. package/dist/project/index.d.ts +9 -0
  66. package/dist/project/index.d.ts.map +1 -0
  67. package/dist/project/io/export-document.d.ts +7 -0
  68. package/dist/project/io/export-document.d.ts.map +1 -0
  69. package/dist/project/io/import-document.d.ts +7 -0
  70. package/dist/project/io/import-document.d.ts.map +1 -0
  71. package/dist/project/io/index.d.ts +4 -0
  72. package/dist/project/io/index.d.ts.map +1 -0
  73. package/dist/project/io/init-empty-document.d.ts +7 -0
  74. package/dist/project/io/init-empty-document.d.ts.map +1 -0
  75. package/dist/project/project.d.ts +80 -0
  76. package/dist/project/project.d.ts.map +1 -0
  77. package/dist/project/state/document-state.d.ts +11 -0
  78. package/dist/project/state/document-state.d.ts.map +1 -0
  79. package/dist/project/state/index.d.ts +2 -0
  80. package/dist/project/state/index.d.ts.map +1 -0
  81. package/dist/project/types.d.ts +128 -0
  82. package/dist/project/types.d.ts.map +1 -0
  83. package/dist/project-ChrJXVyu.js +6762 -0
  84. package/dist/store/index.d.ts +3 -2
  85. package/dist/store/index.d.ts.map +1 -1
  86. package/dist/store/local/dexie-store.d.ts +74 -0
  87. package/dist/store/local/dexie-store.d.ts.map +1 -0
  88. package/dist/store/local/index.d.ts +3 -0
  89. package/dist/store/local/index.d.ts.map +1 -0
  90. package/dist/store/local/types.d.ts +6 -0
  91. package/dist/store/local/types.d.ts.map +1 -0
  92. package/dist/store/resolve-store.d.ts +9 -0
  93. package/dist/store/resolve-store.d.ts.map +1 -0
  94. package/dist/store/store.constants.d.ts +18 -0
  95. package/dist/store/store.constants.d.ts.map +1 -0
  96. package/dist/store/store.types.d.ts +70 -32
  97. package/dist/store/store.types.d.ts.map +1 -1
  98. package/dist/test/assert-xml/assert-xml.d.ts +1 -1
  99. package/dist/test/config.d.ts +14 -0
  100. package/dist/test/config.d.ts.map +1 -1
  101. package/dist/test/create-test-dialecte.d.ts +20 -20
  102. package/dist/test/create-test-dialecte.d.ts.map +1 -1
  103. package/dist/test/run-test-cases.d.ts +6 -0
  104. package/dist/test/run-test-cases.d.ts.map +1 -1
  105. package/dist/test/run-test-cases.type.d.ts +4 -8
  106. package/dist/test/run-test-cases.type.d.ts.map +1 -1
  107. package/dist/test/test-record.d.ts +48 -0
  108. package/dist/test/test-record.d.ts.map +1 -1
  109. package/dist/test.js +227 -227
  110. package/dist/types/dialecte-config.d.ts +8 -1
  111. package/dist/types/dialecte-config.d.ts.map +1 -1
  112. package/dist/types/index.d.ts +0 -2
  113. package/dist/types/index.d.ts.map +1 -1
  114. package/dist/utils.js +1 -1
  115. package/dist/xml/build/build-xml-document.d.ts +10 -0
  116. package/dist/xml/build/build-xml-document.d.ts.map +1 -0
  117. package/dist/xml/build/build-xml-document.types.d.ts +7 -0
  118. package/dist/xml/build/build-xml-document.types.d.ts.map +1 -0
  119. package/dist/xml/build/constant.d.ts.map +1 -0
  120. package/dist/{io/export → xml/build}/download-file.d.ts.map +1 -1
  121. package/dist/xml/build/formatter.d.ts.map +1 -0
  122. package/dist/xml/build/index.d.ts +6 -0
  123. package/dist/xml/build/index.d.ts.map +1 -0
  124. package/dist/xml/index.d.ts +3 -0
  125. package/dist/xml/index.d.ts.map +1 -0
  126. package/dist/{io/import → xml/parse}/guards.d.ts.map +1 -1
  127. package/dist/xml/parse/index.d.ts +5 -0
  128. package/dist/xml/parse/index.d.ts.map +1 -0
  129. package/dist/xml/parse/parse-session.d.ts +22 -0
  130. package/dist/xml/parse/parse-session.d.ts.map +1 -0
  131. package/dist/xml/parse/parse-xml-document.d.ts +12 -0
  132. package/dist/xml/parse/parse-xml-document.d.ts.map +1 -0
  133. package/dist/xml/parse/parse-xml-document.types.d.ts +17 -0
  134. package/dist/xml/parse/parse-xml-document.types.d.ts.map +1 -0
  135. package/dist/{io/import → xml/parse}/parser.d.ts +2 -0
  136. package/dist/xml/parse/parser.d.ts.map +1 -0
  137. package/dist/{io/import → xml/parse}/types.d.ts.map +1 -1
  138. package/package.json +1 -10
  139. package/dist/dialecte/index.d.ts +0 -2
  140. package/dist/dialecte/index.d.ts.map +0 -1
  141. package/dist/dialecte/main.d.ts +0 -6
  142. package/dist/dialecte/main.d.ts.map +0 -1
  143. package/dist/dialecte/main.types.d.ts +0 -12
  144. package/dist/dialecte/main.types.d.ts.map +0 -1
  145. package/dist/index-BI0vaz_1.js +0 -6662
  146. package/dist/io/database/index.d.ts +0 -3
  147. package/dist/io/database/index.d.ts.map +0 -1
  148. package/dist/io/database/instance.d.ts +0 -7
  149. package/dist/io/database/instance.d.ts.map +0 -1
  150. package/dist/io/database/types.d.ts +0 -7
  151. package/dist/io/database/types.d.ts.map +0 -1
  152. package/dist/io/export/constant.d.ts.map +0 -1
  153. package/dist/io/export/formatter.d.ts.map +0 -1
  154. package/dist/io/export/index.d.ts +0 -4
  155. package/dist/io/export/index.d.ts.map +0 -1
  156. package/dist/io/export/main.d.ts +0 -18
  157. package/dist/io/export/main.d.ts.map +0 -1
  158. package/dist/io/import/database-helpers.d.ts +0 -53
  159. package/dist/io/import/database-helpers.d.ts.map +0 -1
  160. package/dist/io/import/index.d.ts +0 -4
  161. package/dist/io/import/index.d.ts.map +0 -1
  162. package/dist/io/import/main.d.ts +0 -15
  163. package/dist/io/import/main.d.ts.map +0 -1
  164. package/dist/io/import/parser.d.ts.map +0 -1
  165. package/dist/io/import/relationships.d.ts +0 -9
  166. package/dist/io/import/relationships.d.ts.map +0 -1
  167. package/dist/io/import/test.types.d.ts +0 -4
  168. package/dist/io/import/test.types.d.ts.map +0 -1
  169. package/dist/io/index.d.ts +0 -3
  170. package/dist/io/index.d.ts.map +0 -1
  171. package/dist/script/element-parent-mapping.d.ts +0 -2
  172. package/dist/script/element-parent-mapping.d.ts.map +0 -1
  173. package/dist/script/find-singleton.d.ts +0 -1
  174. package/dist/script/find-singleton.d.ts.map +0 -1
  175. package/dist/script/find-unreferenced-elements.d.ts +0 -3
  176. package/dist/script/find-unreferenced-elements.d.ts.map +0 -1
  177. package/dist/script/generate-definition.d.ts +0 -3
  178. package/dist/script/generate-definition.d.ts.map +0 -1
  179. package/dist/script/generate-definition.types.d.ts +0 -86
  180. package/dist/script/generate-definition.types.d.ts.map +0 -1
  181. package/dist/script/pyodide.d.ts +0 -12
  182. package/dist/script/pyodide.d.ts.map +0 -1
  183. package/dist/script/sorted-dexie-dump-json.d.ts +0 -2
  184. package/dist/script/sorted-dexie-dump-json.d.ts.map +0 -1
  185. package/dist/script/test-pyodide.d.ts +0 -9
  186. package/dist/script/test-pyodide.d.ts.map +0 -1
  187. package/dist/store/dexie-store.d.ts +0 -36
  188. package/dist/store/dexie-store.d.ts.map +0 -1
  189. package/dist/types/extensions.d.ts.map +0 -1
  190. package/dist/types/ref.d.ts.map +0 -1
  191. /package/dist/{io/export → xml/build}/constant.d.ts +0 -0
  192. /package/dist/{io/export → xml/build}/download-file.d.ts +0 -0
  193. /package/dist/{io/export → xml/build}/formatter.d.ts +0 -0
  194. /package/dist/{io/import → xml/parse}/guards.d.ts +0 -0
  195. /package/dist/{io/import → xml/parse}/types.d.ts +0 -0
@@ -1,3 +1,4 @@
1
- export type { Store, ChangeLogEntry, StorageOptions } from './store.types';
2
- export { DexieStore } from './dexie-store';
1
+ export type { Store, ChangeLogEntry, ChangeLogMeta, RecordSchema } from './store.types';
2
+ export * from './local';
3
+ export { TABLE_DOCUMENTS, TABLE_CHANGELOG, TABLE_META, TABLE_RECORD_PREFIX, recordTableName, DOCUMENTS_SCHEMA, CHANGELOG_SCHEMA, META_SCHEMA, } from './store.constants';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACvF,cAAc,SAAS,CAAA;AACvB,OAAO,EACN,eAAe,EACf,eAAe,EACf,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,GACX,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1,74 @@
1
+ import { default as Dexie } from 'dexie';
2
+ import { Store, ChangeLogEntry, RecordSchema } from '../store.types';
3
+ import { DexieStoreOptions } from './types';
4
+ import { DocumentRecord } from '../../project';
5
+ import { AnyRawRecord, RecordPatch } from '../../types';
6
+ /**
7
+ * Translate a backend-agnostic RecordSchema into Dexie's schema DSL string.
8
+ *
9
+ * Dexie format: '++primaryKey, field1, field2, [compound1+compound2], *arrayField'
10
+ */
11
+ export declare function buildDexieSchema(schema: RecordSchema): string;
12
+ /**
13
+ * DexieStore — IndexedDB-backed Store implementation via Dexie.
14
+ *
15
+ * Manages partitioned tables: one `xel_{documentId}` per registered file.
16
+ * Dynamic schema versioning via close/reopen with version bump.
17
+ *
18
+ * Constructor takes the project name and optionally a RecordSchema from the dialecte config.
19
+ */
20
+ export declare class DexieStore implements Store {
21
+ readonly name: string;
22
+ private db;
23
+ private schemaVersion;
24
+ private readonly dexieRecordSchema;
25
+ /** In-memory file registry - avoids bootstrap connections during close/reopen */
26
+ private knownDocuments;
27
+ /** Serialization lock for schema-changing operations */
28
+ private schemaLock;
29
+ constructor(projectName: string, options?: DexieStoreOptions);
30
+ open(): Promise<void>;
31
+ close(): void;
32
+ destroy(): Promise<void>;
33
+ registerDocument(file: DocumentRecord): Promise<void>;
34
+ getDocument(documentId: string): Promise<DocumentRecord | undefined>;
35
+ getDocuments(): Promise<DocumentRecord[]>;
36
+ updateDocument(documentId: string, updates: Partial<Pick<DocumentRecord, 'name' | 'metadata'>>): Promise<void>;
37
+ removeDocument(documentId: string): Promise<void>;
38
+ get(id: string, documentId?: string): Promise<AnyRawRecord | undefined>;
39
+ getByDocumentId(documentId: string): Promise<AnyRawRecord[]>;
40
+ getByTagNameInDocument(tagName: string, documentId: string): Promise<AnyRawRecord[]>;
41
+ bulkWrite(documentId: string, ops: {
42
+ creates?: AnyRawRecord[];
43
+ updates?: RecordPatch[];
44
+ deletes?: string[];
45
+ }): Promise<void>;
46
+ commit(params: {
47
+ documentId: string;
48
+ creates: AnyRawRecord[];
49
+ updates: AnyRawRecord[];
50
+ deletes: string[];
51
+ onProgress: (current: number, total: number) => void;
52
+ }): Promise<void>;
53
+ undo(documentId: string): Promise<void>;
54
+ redo(documentId: string): Promise<void>;
55
+ getChangeLog(documentId: string): Promise<ChangeLogEntry[]>;
56
+ /**
57
+ * Expose the underlying Dexie instance.
58
+ * Useful for legacy compatibility layers and advanced testing.
59
+ */
60
+ getDatabaseInstance(): Dexie;
61
+ private getHead;
62
+ private setHead;
63
+ /** Build Dexie stores object from current knownDocuments */
64
+ private buildStores;
65
+ /** Close DB, bump version, reopen with updated schema */
66
+ private reopenWithNewSchema;
67
+ /** Serialize schema-changing operations */
68
+ private withSchemaLock;
69
+ /**
70
+ * Resolve the Dexie table name for a documentId.
71
+ */
72
+ private resolveTableName;
73
+ }
74
+ //# sourceMappingURL=dexie-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dexie-store.d.ts","sourceRoot":"","sources":["../../../src/store/local/dexie-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { DexieStore } from './dexie-store';
2
+ export type { DexieStoreOptions } from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/local/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { RecordSchema } from '../store.types';
2
+ export type DexieStoreOptions = {
3
+ /** Backend-agnostic record schema. Comes from dialecteConfig.recordSchema */
4
+ recordSchema?: RecordSchema;
5
+ };
6
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/store/local/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,MAAM,MAAM,iBAAiB,GAAG;IAC/B,6EAA6E;IAC7E,YAAY,CAAC,EAAE,YAAY,CAAA;CAC3B,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { StorageParam } from '../project/types';
2
+ import { Store } from '.';
3
+ import { AnyDialecteConfig } from '../types';
4
+ /**
5
+ * Resolve the Store instance from open params.
6
+ * 'local' creates a DexieStore; 'custom' passes through the user-provided store.
7
+ */
8
+ export declare function resolveStore<GenericConfig extends AnyDialecteConfig>(name: string, storage: StorageParam, config: GenericConfig): Store;
9
+ //# sourceMappingURL=resolve-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-store.d.ts","sourceRoot":"","sources":["../../src/store/resolve-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEhD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,aAAa,SAAS,iBAAiB,EACnE,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,aAAa,GACnB,KAAK,CAMP"}
@@ -0,0 +1,18 @@
1
+ import { RecordSchema } from './store.types';
2
+ /** System table: file registry */
3
+ export declare const TABLE_DOCUMENTS = "_documents";
4
+ /** System table: per-file changelog entries */
5
+ export declare const TABLE_CHANGELOG = "_changeLog";
6
+ /** System table: metadata (schema version, per-file heads) */
7
+ export declare const TABLE_META = "_meta";
8
+ /** Prefix for per-file record tables */
9
+ export declare const TABLE_RECORD_PREFIX = "xel_";
10
+ /** Derive the record table name for a given documentId */
11
+ export declare function recordTableName(documentId: string): string;
12
+ /** Schema for the _files registry table */
13
+ export declare const DOCUMENTS_SCHEMA: RecordSchema;
14
+ /** Schema for the _changeLog table */
15
+ export declare const CHANGELOG_SCHEMA: RecordSchema;
16
+ /** Schema for the _meta table */
17
+ export declare const META_SCHEMA: RecordSchema;
18
+ //# sourceMappingURL=store.constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.constants.d.ts","sourceRoot":"","sources":["../../src/store/store.constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAIjD,kCAAkC;AAClC,eAAO,MAAM,eAAe,eAAe,CAAA;AAE3C,+CAA+C;AAC/C,eAAO,MAAM,eAAe,eAAe,CAAA;AAE3C,8DAA8D;AAC9D,eAAO,MAAM,UAAU,UAAU,CAAA;AAEjC,wCAAwC;AACxC,eAAO,MAAM,mBAAmB,SAAS,CAAA;AAEzC,0DAA0D;AAC1D,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE1D;AAID,2CAA2C;AAC3C,eAAO,MAAM,gBAAgB,EAAE,YAK9B,CAAA;AAED,sCAAsC;AACtC,eAAO,MAAM,gBAAgB,EAAE,YAM9B,CAAA;AAED,iCAAiC;AACjC,eAAO,MAAM,WAAW,EAAE,YAKzB,CAAA"}
@@ -1,44 +1,89 @@
1
- import { AnyRawRecord } from '../types';
1
+ import { DocumentRecord } from '../project/types';
2
+ import { AnyRawRecord, RecordPatch } from '../types';
3
+ /**
4
+ * RecordSchema — backend-agnostic index declaration for record tables.
5
+ *
6
+ * Each dialecte declares what fields to index. Store implementations
7
+ * translate this into their native format (Dexie DSL, SQL DDL, Mongo indexes, etc.).
8
+ */
9
+ export type RecordSchema = {
10
+ /** Primary key field name */
11
+ primaryKey: string;
12
+ /** Auto-increment primary key (e.g. Dexie ++id, SQL AUTOINCREMENT) */
13
+ autoIncrement?: boolean;
14
+ /** Single-field indexes */
15
+ indexes: string[];
16
+ /** Compound indexes (multiple fields queried together) */
17
+ compoundIndexes: string[][];
18
+ /** Array field indexes (per-element lookup: Dexie multi-entry, Mongo multikey, SQL junction/GIN) */
19
+ arrayIndexes: string[];
20
+ };
2
21
  /**
3
22
  * Store — the database port.
4
23
  *
5
24
  * Abstracts persistence so Document/Transaction don't couple to IndexedDB.
6
- * Implement DexieStore for production, InMemoryStore for tests.
25
+ * Implement DexieStore for IndexedDB, or any other backend (SQLite, Mongo, InMemory).
7
26
  *
27
+ * All record operations are document-scoped via documentId.
8
28
  * Not generic on Config — stores raw records as-is.
9
29
  * Type narrowing lives in Document/Transaction, not here.
10
30
  */
11
31
  export interface Store {
12
32
  /** Unique identifier for this store — used to scope the BroadcastChannel */
13
- name: string;
14
- /** Get a single record by primary key */
15
- get(id: string): Promise<AnyRawRecord | undefined>;
16
- /** Get all records with a given tagName */
17
- getByTagName(tagName: string): Promise<AnyRawRecord[]>;
18
- /** Atomic commit — all-or-nothing write */
19
- commit(params: {
20
- creates: AnyRawRecord[];
21
- updates: AnyRawRecord[];
22
- deletes: string[];
23
- onProgress: (current: number, total: number) => void;
24
- }): Promise<void>;
25
- /** Wipe all records */
26
- clear(): Promise<void>;
33
+ readonly name: string;
27
34
  /** Open the connection (if not already open) */
28
35
  open(): Promise<void>;
29
36
  /** Close the connection */
30
37
  close(): void;
31
38
  /** Delete the database entirely (not just clear — remove from browser) */
32
39
  destroy(): Promise<void>;
33
- /** Undo the last committed change. No-op when at the beginning of history. */
34
- undo(): Promise<void>;
35
- /** Redo the next change. No-op when at the end of history. */
36
- redo(): Promise<void>;
37
- /** Return all changelog entries in ascending sequenceNumber order */
38
- getChangeLog(): Promise<ChangeLogEntry[]>;
40
+ /** Register a new document creates its backing storage partition */
41
+ registerDocument(file: DocumentRecord): Promise<void>;
42
+ /** Get a document record by id */
43
+ getDocument(documentId: string): Promise<DocumentRecord | undefined>;
44
+ /** Get all registered documents */
45
+ getDocuments(): Promise<DocumentRecord[]>;
46
+ /** Update document metadata (name, metadata) */
47
+ updateDocument(documentId: string, updates: Partial<Pick<DocumentRecord, 'name' | 'metadata'>>): Promise<void>;
48
+ /** Remove a document and all its records (O(1) table clear) */
49
+ removeDocument(documentId: string): Promise<void>;
50
+ /** Get a single record by primary key. documentId optimizes lookup when known. */
51
+ get(id: string, documentId?: string): Promise<AnyRawRecord | undefined>;
52
+ /** Get all records belonging to a document */
53
+ getByDocumentId(documentId: string): Promise<AnyRawRecord[]>;
54
+ /** Get records matching a tagName within a specific document */
55
+ getByTagNameInDocument(tagName: string, documentId: string): Promise<AnyRawRecord[]>;
56
+ /** Bulk write - atomic creates/updates/deletes bypassing changelog. For import pipeline. */
57
+ bulkWrite(documentId: string, ops: {
58
+ creates?: AnyRawRecord[];
59
+ updates?: RecordPatch[];
60
+ deletes?: string[];
61
+ }): Promise<void>;
62
+ /** Atomic commit — all-or-nothing write scoped to a document */
63
+ commit(params: {
64
+ documentId: string;
65
+ creates: AnyRawRecord[];
66
+ updates: AnyRawRecord[];
67
+ deletes: string[];
68
+ onProgress: (current: number, total: number) => void;
69
+ }): Promise<void>;
70
+ /** Undo the last committed change for a document. No-op at beginning of history. */
71
+ undo(documentId: string): Promise<void>;
72
+ /** Redo the next change for a document. No-op at end of history. */
73
+ redo(documentId: string): Promise<void>;
74
+ /** Return changelog entries for a document in ascending sequenceNumber order */
75
+ getChangeLog(documentId: string): Promise<ChangeLogEntry[]>;
76
+ /**
77
+ * Expose the underlying database instance.
78
+ * Type depends on the implementation (e.g. Dexie for DexieStore).
79
+ * Cast at the call site when the concrete store type is known.
80
+ */
81
+ getDatabaseInstance(): unknown;
39
82
  }
40
83
  export type ChangeLogEntry = {
41
- id: string;
84
+ /** Auto-increment primary key (assigned by Dexie) */
85
+ id: number;
86
+ documentId: string;
42
87
  sequenceNumber: number;
43
88
  timestamp: number;
44
89
  operations: {
@@ -50,16 +95,9 @@ export type ChangeLogEntry = {
50
95
  deletes: AnyRawRecord[];
51
96
  };
52
97
  };
53
- /** Single-row metadata record stored in the _meta table */
98
+ /** Per-file head stored in _meta table */
54
99
  export type ChangeLogMeta = {
55
- key: 'head';
100
+ key: string;
56
101
  value: number;
57
102
  };
58
- export type StorageOptions = {
59
- type: 'local';
60
- databaseName: string;
61
- } | {
62
- type: 'custom';
63
- store: Store;
64
- };
65
103
  //# sourceMappingURL=store.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../src/store/store.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C;;;;;;;;GAQG;AACH,MAAM,WAAW,KAAK;IACrB,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAA;IAEZ,yCAAyC;IACzC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAA;IAElD,2CAA2C;IAC3C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IAEtD,2CAA2C;IAC3C,MAAM,CAAC,MAAM,EAAE;QACd,OAAO,EAAE,YAAY,EAAE,CAAA;QACvB,OAAO,EAAE,YAAY,EAAE,CAAA;QACvB,OAAO,EAAE,MAAM,EAAE,CAAA;QACjB,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;KACpD,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEjB,uBAAuB;IACvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAEtB,gDAAgD;IAChD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAErB,2BAA2B;IAC3B,KAAK,IAAI,IAAI,CAAA;IAEb,0EAA0E;IAC1E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAExB,8EAA8E;IAC9E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAErB,8DAA8D;IAC9D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAErB,qEAAqE;IACrE,YAAY,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;CACzC;AAED,MAAM,MAAM,cAAc,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE;QACX,OAAO,EAAE,YAAY,EAAE,CAAA;QACvB,OAAO,EAAE;YAAE,MAAM,EAAE,YAAY,CAAC;YAAC,KAAK,EAAE,YAAY,CAAA;SAAE,EAAE,CAAA;QACxD,OAAO,EAAE,YAAY,EAAE,CAAA;KACvB,CAAA;CACD,CAAA;AAED,2DAA2D;AAC3D,MAAM,MAAM,aAAa,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,cAAc,GACvB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAA"}
1
+ {"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../src/store/store.types.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { Namespace } from '../../types';
3
3
  /**
4
4
  * Creates a pair of assertion functions pre-configured with a namespace resolver
5
5
  * derived from a prefix → URI map. Intended to be instantiated once per dialecte
6
- * (e.g. in scl test) and re-exported alongside createTestDialecte.
6
+ * (e.g. in scl test) and re-exported alongside createTestProject.
7
7
  */
8
8
  export declare function createXmlAssertions(params: {
9
9
  namespaces: Record<string, Namespace>;
@@ -2,6 +2,13 @@ export declare const IO_CONFIG: {
2
2
  readonly supportedFileExtensions: readonly [".xml"];
3
3
  };
4
4
  export declare const DATABASE_CONFIG: {
5
+ readonly recordSchema: {
6
+ readonly primaryKey: "id";
7
+ readonly indexes: ["tagName", "parent.id", "parent.tagName"];
8
+ readonly compoundIndexes: [["id", "tagName"]];
9
+ readonly arrayIndexes: ["children.id", "children.tagName"];
10
+ };
11
+ /** @deprecated - kept for old io/ pipeline until Phase 5 removes it */
5
12
  readonly tables: {
6
13
  readonly xmlElements: {
7
14
  readonly name: "xmlElements";
@@ -193,6 +200,13 @@ export declare const TEST_DIALECTE_CONFIG: {
193
200
  readonly Root: readonly [];
194
201
  };
195
202
  readonly database: {
203
+ readonly recordSchema: {
204
+ readonly primaryKey: "id";
205
+ readonly indexes: ["tagName", "parent.id", "parent.tagName"];
206
+ readonly compoundIndexes: [["id", "tagName"]];
207
+ readonly arrayIndexes: ["children.id", "children.tagName"];
208
+ };
209
+ /** @deprecated - kept for old io/ pipeline until Phase 5 removes it */
196
210
  readonly tables: {
197
211
  readonly xmlElements: {
198
212
  readonly name: "xmlElements";
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/test/config.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,SAAS;;CAEO,CAAA;AAG7B,eAAO,MAAM,eAAe;;;;;;;CAQO,CAAA;AAEnC,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAaK,CAAA;AAEtC,MAAM,MAAM,kBAAkB,GAAG,OAAO,oBAAoB,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/test/config.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,SAAS;;CAEO,CAAA;AAG7B,eAAO,MAAM,eAAe;;;;;;;IAO3B,uEAAuE;;;;;;;CAQrC,CAAA;AAEnC,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAVhC,uEAAuE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuBlC,CAAA;AAEtC,MAAM,MAAM,kBAAkB,GAAG,OAAO,oBAAoB,CAAA"}
@@ -1,35 +1,35 @@
1
1
  import { TEST_DIALECTE_CONFIG } from './config';
2
- import { Context, Document } from '../document';
2
+ import { Project } from '../project';
3
+ import { Document, Context } from '../document';
3
4
  import { AnyDialecteConfig, TransactionHooks } from '../types';
4
5
  type TestDialecteConfig = typeof TEST_DIALECTE_CONFIG;
6
+ export type TestFile<GenericConfig extends AnyDialecteConfig> = {
7
+ documentId: string;
8
+ document: Document<GenericConfig>;
9
+ };
10
+ export type TestProjectResult<GenericConfig extends AnyDialecteConfig> = {
11
+ project: Project<GenericConfig>;
12
+ source: TestFile<GenericConfig>;
13
+ target?: TestFile<GenericConfig>;
14
+ };
5
15
  /**
6
- * Create a Document instance from an XML string for testing.
7
- * Imports the XML into an IndexedDB database and returns a configured Document.
16
+ * Spin up a Project with source (and optionally target) file imported.
17
+ * Returns project + pre-opened documents. Caller owns lifecycle via project.destroy().
8
18
  */
9
- export declare function createTestDialecte<GenericConfig extends AnyDialecteConfig = TestDialecteConfig>(params: {
10
- xmlString: string;
19
+ export declare function createTestProject<GenericConfig extends AnyDialecteConfig = TestDialecteConfig>(params: {
20
+ sourceXml: string;
21
+ targetXml?: string;
11
22
  dialecteConfig?: GenericConfig;
12
23
  hooks?: TransactionHooks<GenericConfig>;
13
- }): Promise<{
14
- document: Document<GenericConfig>;
15
- databaseName: string;
16
- cleanup: () => Promise<void>;
17
- exportCurrentTest: (params?: {
18
- extension?: GenericConfig['io']['supportedFileExtensions'][number];
19
- withDatabaseIds?: boolean;
20
- }) => Promise<{
21
- xmlDocument: XMLDocument;
22
- filename: string;
23
- }>;
24
- }>;
24
+ }): Promise<TestProjectResult<GenericConfig>>;
25
25
  /**
26
26
  * Create a Context directly from a databaseName for testing FP query functions.
27
- * The store is not pre-opened — call store.open() before use if needed,
28
- * or use DexieStore which opens lazily on first query.
27
+ * Opens the store to discover existing tables.
29
28
  */
30
29
  export declare function createTestContext<GenericConfig extends AnyDialecteConfig>(params: {
31
30
  databaseName: string;
32
31
  dialecteConfig: GenericConfig;
33
- }): Context<GenericConfig>;
32
+ documentId: string;
33
+ }): Promise<Context<GenericConfig>>;
34
34
  export {};
35
35
  //# sourceMappingURL=create-test-dialecte.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-test-dialecte.d.ts","sourceRoot":"","sources":["../../src/test/create-test-dialecte.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAM/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAElE,KAAK,kBAAkB,GAAG,OAAO,oBAAoB,CAAA;AAErD;;;GAGG;AACH,wBAAsB,kBAAkB,CACvC,aAAa,SAAS,iBAAiB,GAAG,kBAAkB,EAC3D,MAAM,EAAE;IACT,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,aAAa,CAAA;IAC9B,KAAK,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAA;CACvC,GAAG,OAAO,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,iBAAiB,EAAE,CAAC,MAAM,CAAC,EAAE;QAC5B,SAAS,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAA;QAClE,eAAe,CAAC,EAAE,OAAO,CAAA;KACzB,KAAK,OAAO,CAAC;QAAE,WAAW,EAAE,WAAW,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC7D,CAAC,CAuDD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,SAAS,iBAAiB,EAAE,MAAM,EAAE;IAClF,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,aAAa,CAAA;CAC7B,GAAG,OAAO,CAAC,aAAa,CAAC,CAQzB"}
1
+ {"version":3,"file":"create-test-dialecte.d.ts","sourceRoot":"","sources":["../../src/test/create-test-dialecte.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAElE,KAAK,kBAAkB,GAAG,OAAO,oBAAoB,CAAA;AAErD,MAAM,MAAM,QAAQ,CAAC,aAAa,SAAS,iBAAiB,IAAI;IAC/D,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,iBAAiB,CAAC,aAAa,SAAS,iBAAiB,IAAI;IACxE,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IAC/B,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;IAC/B,MAAM,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;CAChC,CAAA;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACtC,aAAa,SAAS,iBAAiB,GAAG,kBAAkB,EAC3D,MAAM,EAAE;IACT,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,aAAa,CAAA;IAC9B,KAAK,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAA;CACvC,GAAG,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CA6C5C;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,aAAa,SAAS,iBAAiB,EAAE,MAAM,EAAE;IACxF,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,aAAa,CAAA;IAC7B,UAAU,EAAE,MAAM,CAAA;CAClB,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAalC"}
@@ -185,6 +185,12 @@ export declare const runTestCases: TestRunner<{
185
185
  readonly Root: readonly [];
186
186
  };
187
187
  readonly database: {
188
+ readonly recordSchema: {
189
+ readonly primaryKey: "id";
190
+ readonly indexes: ["tagName", "parent.id", "parent.tagName"];
191
+ readonly compoundIndexes: [["id", "tagName"]];
192
+ readonly arrayIndexes: ["children.id", "children.tagName"];
193
+ };
188
194
  readonly tables: {
189
195
  readonly xmlElements: {
190
196
  readonly name: "xmlElements";
@@ -1 +1 @@
1
- {"version":3,"file":"run-test-cases.d.ts","sourceRoot":"","sources":["../../src/test/run-test-cases.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-test-cases.d.ts","sourceRoot":"","sources":["../../src/test/run-test-cases.ts"],"names":[],"mappings":"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"}
@@ -10,23 +10,19 @@ export type BaseXmlTestCase = BaseTestCase & {
10
10
  unexpectedQueries?: string[];
11
11
  };
12
12
  export type TestCases<GenericTestCase extends BaseXmlTestCase> = Record<string, GenericTestCase>;
13
- export type TestContext<GenericConfig extends AnyDialecteConfig> = {
14
- document: Document<GenericConfig>;
15
- databaseName: string;
16
- };
17
13
  export type ActParams<GenericConfig extends AnyDialecteConfig, GenericTestCase extends BaseXmlTestCase> = {
18
14
  testCase: GenericTestCase;
19
- source: TestContext<GenericConfig>;
20
- target?: TestContext<GenericConfig>;
15
+ source: Document<GenericConfig>;
16
+ target?: Document<GenericConfig>;
21
17
  };
22
18
  export type ActResult = {
23
- assertDatabaseName: string;
19
+ assertOn?: 'source' | 'target';
24
20
  withDatabaseIds?: boolean;
25
21
  };
26
22
  export type TestRunner<GenericConfig extends AnyDialecteConfig> = {
27
23
  withExport<GenericTestCase extends BaseXmlTestCase>(params: {
28
24
  testCases: TestCases<GenericTestCase>;
29
- act: (params: ActParams<GenericConfig, GenericTestCase>) => Promise<ActResult>;
25
+ act: (params: ActParams<GenericConfig, GenericTestCase>) => Promise<ActResult | void>;
30
26
  dialecteConfig?: GenericConfig;
31
27
  hooks?: TransactionHooks<GenericConfig>;
32
28
  }): void;
@@ -1 +1 @@
1
- {"version":3,"file":"run-test-cases.type.d.ts","sourceRoot":"","sources":["../../src/test/run-test-cases.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAElE,MAAM,MAAM,YAAY,GAAG;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,SAAS,CAAC,eAAe,SAAS,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;AAEhG,MAAM,MAAM,WAAW,CAAC,aAAa,SAAS,iBAAiB,IAAI;IAClE,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;IACjC,YAAY,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,SAAS,CACpB,aAAa,SAAS,iBAAiB,EACvC,eAAe,SAAS,eAAe,IACpC;IACH,QAAQ,EAAE,eAAe,CAAA;IACzB,MAAM,EAAE,WAAW,CAAC,aAAa,CAAC,CAAA;IAClC,MAAM,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACvB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,UAAU,CAAC,aAAa,SAAS,iBAAiB,IAAI;IACjE,UAAU,CAAC,eAAe,SAAS,eAAe,EAAE,MAAM,EAAE;QAC3D,SAAS,EAAE,SAAS,CAAC,eAAe,CAAC,CAAA;QACrC,GAAG,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,aAAa,EAAE,eAAe,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;QAC9E,cAAc,CAAC,EAAE,aAAa,CAAA;QAC9B,KAAK,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAA;KACvC,GAAG,IAAI,CAAA;IACR,aAAa,CAAC,eAAe,SAAS,eAAe,EAAE,MAAM,EAAE;QAC9D,SAAS,EAAE,SAAS,CAAC,eAAe,CAAC,CAAA;QACrC,GAAG,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,aAAa,EAAE,eAAe,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QACzE,cAAc,CAAC,EAAE,aAAa,CAAA;QAC9B,KAAK,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAA;KACvC,GAAG,IAAI,CAAA;IACR,OAAO,CAAC,eAAe,SAAS,YAAY,EAC3C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAC1C,GAAG,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,GACtC,IAAI,CAAA;CACP,CAAA"}
1
+ {"version":3,"file":"run-test-cases.type.d.ts","sourceRoot":"","sources":["../../src/test/run-test-cases.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAElE,MAAM,MAAM,YAAY,GAAG;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,SAAS,CAAC,eAAe,SAAS,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;AAEhG,MAAM,MAAM,SAAS,CACpB,aAAa,SAAS,iBAAiB,EACvC,eAAe,SAAS,eAAe,IACpC;IACH,QAAQ,EAAE,eAAe,CAAA;IACzB,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;IAC/B,MAAM,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACvB,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,UAAU,CAAC,aAAa,SAAS,iBAAiB,IAAI;IACjE,UAAU,CAAC,eAAe,SAAS,eAAe,EAAE,MAAM,EAAE;QAC3D,SAAS,EAAE,SAAS,CAAC,eAAe,CAAC,CAAA;QACrC,GAAG,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,aAAa,EAAE,eAAe,CAAC,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;QACrF,cAAc,CAAC,EAAE,aAAa,CAAA;QAC9B,KAAK,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAA;KACvC,GAAG,IAAI,CAAA;IACR,aAAa,CAAC,eAAe,SAAS,eAAe,EAAE,MAAM,EAAE;QAC9D,SAAS,EAAE,SAAS,CAAC,eAAe,CAAC,CAAA;QACrC,GAAG,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,aAAa,EAAE,eAAe,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QACzE,cAAc,CAAC,EAAE,aAAa,CAAA;QAC9B,KAAK,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAA;KACvC,GAAG,IAAI,CAAA;IACR,OAAO,CAAC,eAAe,SAAS,YAAY,EAC3C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAC1C,GAAG,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,GACtC,IAAI,CAAA;CACP,CAAA"}
@@ -210,6 +210,12 @@ export declare const createTestRecord: {
210
210
  readonly Root: readonly [];
211
211
  };
212
212
  readonly database: {
213
+ readonly recordSchema: {
214
+ readonly primaryKey: "id";
215
+ readonly indexes: ["tagName", "parent.id", "parent.tagName"];
216
+ readonly compoundIndexes: [["id", "tagName"]];
217
+ readonly arrayIndexes: ["children.id", "children.tagName"];
218
+ };
213
219
  readonly tables: {
214
220
  readonly xmlElements: {
215
221
  readonly name: "xmlElements";
@@ -2350,6 +2356,12 @@ export declare const createTestRecord: {
2350
2356
  readonly Root: readonly [];
2351
2357
  };
2352
2358
  readonly database: {
2359
+ readonly recordSchema: {
2360
+ readonly primaryKey: "id";
2361
+ readonly indexes: ["tagName", "parent.id", "parent.tagName"];
2362
+ readonly compoundIndexes: [["id", "tagName"]];
2363
+ readonly arrayIndexes: ["children.id", "children.tagName"];
2364
+ };
2353
2365
  readonly tables: {
2354
2366
  readonly xmlElements: {
2355
2367
  readonly name: "xmlElements";
@@ -4492,6 +4504,12 @@ export declare const createTestRecord: {
4492
4504
  readonly Root: readonly [];
4493
4505
  };
4494
4506
  readonly database: {
4507
+ readonly recordSchema: {
4508
+ readonly primaryKey: "id";
4509
+ readonly indexes: ["tagName", "parent.id", "parent.tagName"];
4510
+ readonly compoundIndexes: [["id", "tagName"]];
4511
+ readonly arrayIndexes: ["children.id", "children.tagName"];
4512
+ };
4495
4513
  readonly tables: {
4496
4514
  readonly xmlElements: {
4497
4515
  readonly name: "xmlElements";
@@ -6632,6 +6650,12 @@ export declare const createTestRecord: {
6632
6650
  readonly Root: readonly [];
6633
6651
  };
6634
6652
  readonly database: {
6653
+ readonly recordSchema: {
6654
+ readonly primaryKey: "id";
6655
+ readonly indexes: ["tagName", "parent.id", "parent.tagName"];
6656
+ readonly compoundIndexes: [["id", "tagName"]];
6657
+ readonly arrayIndexes: ["children.id", "children.tagName"];
6658
+ };
6635
6659
  readonly tables: {
6636
6660
  readonly xmlElements: {
6637
6661
  readonly name: "xmlElements";
@@ -8774,6 +8798,12 @@ export declare const createTestRecord: {
8774
8798
  readonly Root: readonly [];
8775
8799
  };
8776
8800
  readonly database: {
8801
+ readonly recordSchema: {
8802
+ readonly primaryKey: "id";
8803
+ readonly indexes: ["tagName", "parent.id", "parent.tagName"];
8804
+ readonly compoundIndexes: [["id", "tagName"]];
8805
+ readonly arrayIndexes: ["children.id", "children.tagName"];
8806
+ };
8777
8807
  readonly tables: {
8778
8808
  readonly xmlElements: {
8779
8809
  readonly name: "xmlElements";
@@ -10914,6 +10944,12 @@ export declare const createTestRecord: {
10914
10944
  readonly Root: readonly [];
10915
10945
  };
10916
10946
  readonly database: {
10947
+ readonly recordSchema: {
10948
+ readonly primaryKey: "id";
10949
+ readonly indexes: ["tagName", "parent.id", "parent.tagName"];
10950
+ readonly compoundIndexes: [["id", "tagName"]];
10951
+ readonly arrayIndexes: ["children.id", "children.tagName"];
10952
+ };
10917
10953
  readonly tables: {
10918
10954
  readonly xmlElements: {
10919
10955
  readonly name: "xmlElements";
@@ -13056,6 +13092,12 @@ export declare const createTestRecord: {
13056
13092
  readonly Root: readonly [];
13057
13093
  };
13058
13094
  readonly database: {
13095
+ readonly recordSchema: {
13096
+ readonly primaryKey: "id";
13097
+ readonly indexes: ["tagName", "parent.id", "parent.tagName"];
13098
+ readonly compoundIndexes: [["id", "tagName"]];
13099
+ readonly arrayIndexes: ["children.id", "children.tagName"];
13100
+ };
13059
13101
  readonly tables: {
13060
13102
  readonly xmlElements: {
13061
13103
  readonly name: "xmlElements";
@@ -15196,6 +15238,12 @@ export declare const createTestRecord: {
15196
15238
  readonly Root: readonly [];
15197
15239
  };
15198
15240
  readonly database: {
15241
+ readonly recordSchema: {
15242
+ readonly primaryKey: "id";
15243
+ readonly indexes: ["tagName", "parent.id", "parent.tagName"];
15244
+ readonly compoundIndexes: [["id", "tagName"]];
15245
+ readonly arrayIndexes: ["children.id", "children.tagName"];
15246
+ };
15199
15247
  readonly tables: {
15200
15248
  readonly xmlElements: {
15201
15249
  readonly name: "xmlElements";