@opendatalabs/personal-server-ts-server 1.33.8 → 1.34.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 (167) hide show
  1. package/dist/__fixtures__/bound-record-store.d.ts +19 -0
  2. package/dist/__fixtures__/bound-record-store.d.ts.map +1 -0
  3. package/dist/__fixtures__/bound-record-store.js +60 -0
  4. package/dist/__fixtures__/bound-record-store.js.map +1 -0
  5. package/dist/__fixtures__/cg-pdpp-client/pdpp-authorization-strategy.d.ts +41 -0
  6. package/dist/__fixtures__/cg-pdpp-client/pdpp-authorization-strategy.d.ts.map +1 -0
  7. package/dist/__fixtures__/cg-pdpp-client/pdpp-authorization-strategy.js +34 -0
  8. package/dist/__fixtures__/cg-pdpp-client/pdpp-authorization-strategy.js.map +1 -0
  9. package/dist/__fixtures__/cg-pdpp-client/pdpp-context-client.d.ts +112 -0
  10. package/dist/__fixtures__/cg-pdpp-client/pdpp-context-client.d.ts.map +1 -0
  11. package/dist/__fixtures__/cg-pdpp-client/pdpp-context-client.js +226 -0
  12. package/dist/__fixtures__/cg-pdpp-client/pdpp-context-client.js.map +1 -0
  13. package/dist/__fixtures__/cg-pdpp-client/pdpp-types.d.ts +135 -0
  14. package/dist/__fixtures__/cg-pdpp-client/pdpp-types.d.ts.map +1 -0
  15. package/dist/__fixtures__/cg-pdpp-client/pdpp-types.js +21 -0
  16. package/dist/__fixtures__/cg-pdpp-client/pdpp-types.js.map +1 -0
  17. package/dist/api-auth.d.ts +18 -2
  18. package/dist/api-auth.d.ts.map +1 -1
  19. package/dist/api-auth.js +114 -22
  20. package/dist/api-auth.js.map +1 -1
  21. package/dist/app.d.ts +60 -1
  22. package/dist/app.d.ts.map +1 -1
  23. package/dist/app.js +139 -1
  24. package/dist/app.js.map +1 -1
  25. package/dist/bootstrap.d.ts +10 -0
  26. package/dist/bootstrap.d.ts.map +1 -1
  27. package/dist/bootstrap.js +359 -8
  28. package/dist/bootstrap.js.map +1 -1
  29. package/dist/enclave-main.d.ts +4 -0
  30. package/dist/enclave-main.d.ts.map +1 -1
  31. package/dist/enclave-main.js +152 -1
  32. package/dist/enclave-main.js.map +1 -1
  33. package/dist/middleware/body-limit.d.ts +1 -1
  34. package/dist/middleware/body-limit.d.ts.map +1 -1
  35. package/dist/middleware/body-limit.js +8 -3
  36. package/dist/middleware/body-limit.js.map +1 -1
  37. package/dist/middleware/cors.d.ts.map +1 -1
  38. package/dist/middleware/cors.js +1 -0
  39. package/dist/middleware/cors.js.map +1 -1
  40. package/dist/package.json +9 -1
  41. package/dist/pdpp/bootstrap.d.ts +72 -0
  42. package/dist/pdpp/bootstrap.d.ts.map +1 -0
  43. package/dist/pdpp/bootstrap.js +270 -0
  44. package/dist/pdpp/bootstrap.js.map +1 -0
  45. package/dist/pdpp/chain-enforcement.d.ts +95 -0
  46. package/dist/pdpp/chain-enforcement.d.ts.map +1 -0
  47. package/dist/pdpp/chain-enforcement.js +145 -0
  48. package/dist/pdpp/chain-enforcement.js.map +1 -0
  49. package/dist/pdpp/client-document-fetch.d.ts +63 -0
  50. package/dist/pdpp/client-document-fetch.d.ts.map +1 -0
  51. package/dist/pdpp/client-document-fetch.js +254 -0
  52. package/dist/pdpp/client-document-fetch.js.map +1 -0
  53. package/dist/pdpp/declaration-registry.d.ts +83 -0
  54. package/dist/pdpp/declaration-registry.d.ts.map +1 -0
  55. package/dist/pdpp/declaration-registry.js +251 -0
  56. package/dist/pdpp/declaration-registry.js.map +1 -0
  57. package/dist/pdpp/deployment.d.ts +70 -0
  58. package/dist/pdpp/deployment.d.ts.map +1 -0
  59. package/dist/pdpp/deployment.js +104 -0
  60. package/dist/pdpp/deployment.js.map +1 -0
  61. package/dist/pdpp/record-schema.d.ts +2 -0
  62. package/dist/pdpp/record-schema.d.ts.map +1 -0
  63. package/dist/pdpp/record-schema.js +2 -0
  64. package/dist/pdpp/record-schema.js.map +1 -0
  65. package/dist/pdpp/records-bootstrap.d.ts +111 -0
  66. package/dist/pdpp/records-bootstrap.d.ts.map +1 -0
  67. package/dist/pdpp/records-bootstrap.js +353 -0
  68. package/dist/pdpp/records-bootstrap.js.map +1 -0
  69. package/dist/pdpp/source-id-compat.d.ts +5 -0
  70. package/dist/pdpp/source-id-compat.d.ts.map +1 -0
  71. package/dist/pdpp/source-id-compat.js +16 -0
  72. package/dist/pdpp/source-id-compat.js.map +1 -0
  73. package/dist/pdpp/test-connections.d.ts +6 -0
  74. package/dist/pdpp/test-connections.d.ts.map +1 -0
  75. package/dist/pdpp/test-connections.js +37 -0
  76. package/dist/pdpp/test-connections.js.map +1 -0
  77. package/dist/routes/auth-device.d.ts.map +1 -1
  78. package/dist/routes/auth-device.js +3 -0
  79. package/dist/routes/auth-device.js.map +1 -1
  80. package/dist/routes/chunked-scope-import.d.ts +41 -0
  81. package/dist/routes/chunked-scope-import.d.ts.map +1 -0
  82. package/dist/routes/chunked-scope-import.js +901 -0
  83. package/dist/routes/chunked-scope-import.js.map +1 -0
  84. package/dist/routes/data.d.ts +23 -1
  85. package/dist/routes/data.d.ts.map +1 -1
  86. package/dist/routes/data.js +112 -1
  87. package/dist/routes/data.js.map +1 -1
  88. package/dist/routes/grants.d.ts.map +1 -1
  89. package/dist/routes/grants.js +2 -0
  90. package/dist/routes/grants.js.map +1 -1
  91. package/dist/routes/mcp.d.ts.map +1 -1
  92. package/dist/routes/mcp.js +3 -0
  93. package/dist/routes/mcp.js.map +1 -1
  94. package/dist/routes/pdpp-auth.d.ts +157 -0
  95. package/dist/routes/pdpp-auth.d.ts.map +1 -0
  96. package/dist/routes/pdpp-auth.js +953 -0
  97. package/dist/routes/pdpp-auth.js.map +1 -0
  98. package/dist/routes/pdpp-blobs.d.ts +26 -0
  99. package/dist/routes/pdpp-blobs.d.ts.map +1 -0
  100. package/dist/routes/pdpp-blobs.js +179 -0
  101. package/dist/routes/pdpp-blobs.js.map +1 -0
  102. package/dist/routes/pdpp-connections.d.ts +28 -0
  103. package/dist/routes/pdpp-connections.d.ts.map +1 -0
  104. package/dist/routes/pdpp-connections.js +144 -0
  105. package/dist/routes/pdpp-connections.js.map +1 -0
  106. package/dist/routes/pdpp-declarations.d.ts +58 -0
  107. package/dist/routes/pdpp-declarations.d.ts.map +1 -0
  108. package/dist/routes/pdpp-declarations.js +94 -0
  109. package/dist/routes/pdpp-declarations.js.map +1 -0
  110. package/dist/routes/pdpp-instance-bindings.d.ts +26 -0
  111. package/dist/routes/pdpp-instance-bindings.d.ts.map +1 -0
  112. package/dist/routes/pdpp-instance-bindings.js +124 -0
  113. package/dist/routes/pdpp-instance-bindings.js.map +1 -0
  114. package/dist/routes/pdpp-records.d.ts +158 -0
  115. package/dist/routes/pdpp-records.d.ts.map +1 -0
  116. package/dist/routes/pdpp-records.js +1537 -0
  117. package/dist/routes/pdpp-records.js.map +1 -0
  118. package/dist/routes/pdpp-well-known.d.ts +13 -0
  119. package/dist/routes/pdpp-well-known.d.ts.map +1 -0
  120. package/dist/routes/pdpp-well-known.js +20 -0
  121. package/dist/routes/pdpp-well-known.js.map +1 -0
  122. package/dist/storage/declaration-witness.d.ts +56 -0
  123. package/dist/storage/declaration-witness.d.ts.map +1 -0
  124. package/dist/storage/declaration-witness.js +273 -0
  125. package/dist/storage/declaration-witness.js.map +1 -0
  126. package/dist/storage/hierarchy.d.ts +25 -1
  127. package/dist/storage/hierarchy.d.ts.map +1 -1
  128. package/dist/storage/hierarchy.js +210 -16
  129. package/dist/storage/hierarchy.js.map +1 -1
  130. package/dist/storage/import-operations.d.ts +11 -0
  131. package/dist/storage/import-operations.d.ts.map +1 -0
  132. package/dist/storage/import-operations.js +261 -0
  133. package/dist/storage/import-operations.js.map +1 -0
  134. package/dist/storage/index-manager.d.ts +24 -2
  135. package/dist/storage/index-manager.d.ts.map +1 -1
  136. package/dist/storage/index-manager.js +279 -30
  137. package/dist/storage/index-manager.js.map +1 -1
  138. package/dist/storage/index-schema.d.ts +1 -1
  139. package/dist/storage/index-schema.d.ts.map +1 -1
  140. package/dist/storage/index-schema.js +189 -8
  141. package/dist/storage/index-schema.js.map +1 -1
  142. package/dist/storage/legacy-scope-authority.d.ts +14 -0
  143. package/dist/storage/legacy-scope-authority.d.ts.map +1 -0
  144. package/dist/storage/legacy-scope-authority.js +298 -0
  145. package/dist/storage/legacy-scope-authority.js.map +1 -0
  146. package/dist/storage/node-data-storage.d.ts +6 -0
  147. package/dist/storage/node-data-storage.d.ts.map +1 -1
  148. package/dist/storage/node-data-storage.js +161 -2
  149. package/dist/storage/node-data-storage.js.map +1 -1
  150. package/dist/storage/pdpp-grant-binding-sqlite-store.d.ts +17 -0
  151. package/dist/storage/pdpp-grant-binding-sqlite-store.d.ts.map +1 -0
  152. package/dist/storage/pdpp-grant-binding-sqlite-store.js +159 -0
  153. package/dist/storage/pdpp-grant-binding-sqlite-store.js.map +1 -0
  154. package/dist/storage/pdpp-records-sqlite-store.d.ts +112 -0
  155. package/dist/storage/pdpp-records-sqlite-store.d.ts.map +1 -0
  156. package/dist/storage/pdpp-records-sqlite-store.js +1440 -0
  157. package/dist/storage/pdpp-records-sqlite-store.js.map +1 -0
  158. package/dist/storage/pdpp-stream-completion.d.ts +5 -0
  159. package/dist/storage/pdpp-stream-completion.d.ts.map +1 -0
  160. package/dist/storage/pdpp-stream-completion.js +10 -0
  161. package/dist/storage/pdpp-stream-completion.js.map +1 -0
  162. package/dist/storage/scope-deletion-history.d.ts +8 -0
  163. package/dist/storage/scope-deletion-history.d.ts.map +1 -0
  164. package/dist/storage/scope-deletion-history.js +40 -0
  165. package/dist/storage/scope-deletion-history.js.map +1 -0
  166. package/dist/ui/ps-lite-debug.js +3981 -1109
  167. package/package.json +12 -4
@@ -2,6 +2,22 @@ import type Database from "better-sqlite3";
2
2
  import type { IndexEntry, IndexListOptions, NewIndexEntry, ScopeSummary } from "@opendatalabs/personal-server-ts-core/storage/index";
3
3
  export interface IndexManager {
4
4
  insert(entry: NewIndexEntry): IndexEntry;
5
+ insertIfCurrent(entry: NewIndexEntry, precondition?: {
6
+ kind: "none";
7
+ } | {
8
+ kind: "match";
9
+ version: number;
10
+ }): {
11
+ ok: true;
12
+ entry: IndexEntry;
13
+ } | {
14
+ ok: false;
15
+ currentVersion: number | null;
16
+ currentProducer: string | null;
17
+ };
18
+ closeScopeForWrites(scope: string): void;
19
+ hasTrustedRevisionJournal(scope: string): boolean;
20
+ insertRecovered(entry: NewIndexEntry): IndexEntry;
5
21
  findByPath(path: string): IndexEntry | undefined;
6
22
  findByScope(options: IndexListOptions): IndexEntry[];
7
23
  findLatestByScope(scope: string): IndexEntry | undefined;
@@ -22,6 +38,7 @@ export interface IndexManager {
22
38
  scopes: ScopeSummary[];
23
39
  total: number;
24
40
  };
41
+ listIndexedScopes(): string[];
25
42
  findClosestByScope(scope: string, at: string): IndexEntry | undefined;
26
43
  findByFileId(fileId: string): IndexEntry | undefined;
27
44
  /** Find an index entry by its DPv2 data-point id (download dedup). */
@@ -39,7 +56,7 @@ export interface IndexManager {
39
56
  * @returns true if row was updated, false if path not found
40
57
  */
41
58
  updateFileId(path: string, fileId: string): boolean;
42
- /** Highest stored `version` for a scope; 0 if none. */
59
+ /** Highest DPv2 sync version for a scope; 0 if none. */
43
60
  findLatestVersionByScope(scope: string): number;
44
61
  /**
45
62
  * Update the dataPointId for an index entry (after DPv2 registerDataPoint).
@@ -56,5 +73,10 @@ export interface IndexManager {
56
73
  deleteByScope(scope: string): number;
57
74
  close(): void;
58
75
  }
59
- export declare function createIndexManager(db: Database.Database): IndexManager;
76
+ export declare function indexDatabase(index: IndexManager): Database.Database | undefined;
77
+ export declare function createIndexManager(db: Database.Database, options?: {
78
+ revisionJournalDir?: string;
79
+ historyUnknownPath?: string;
80
+ allowOpenMarkerMigration?: boolean;
81
+ }): IndexManager;
60
82
  //# sourceMappingURL=index-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-manager.d.ts","sourceRoot":"","sources":["../../src/storage/index-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,YAAY,EACb,MAAM,qDAAqD,CAAC;AAE7D,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU,CAAC;IACzC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACjD,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,UAAU,EAAE,CAAC;IACrD,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACzD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACpC;;;;;OAKG;IACH,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5C,kBAAkB,CAAC,OAAO,CAAC,EAAE;QAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG;QAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACtE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACrD,sEAAsE;IACtE,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC/D;;;;OAIG;IACH,YAAY,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,UAAU,EAAE,CAAC;IACzD;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACpD,uDAAuD;IACvD,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAChD;;;OAGG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC;IACrE;;;;OAIG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACtD,4EAA4E;IAC5E,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,KAAK,IAAI,IAAI,CAAC;CACf;AAgCD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,YAAY,CAoQtE"}
1
+ {"version":3,"file":"index-manager.d.ts","sourceRoot":"","sources":["../../src/storage/index-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAa3C,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,YAAY,EACb,MAAM,qDAAqD,CAAC;AAE7D,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU,CAAC;IACzC,eAAe,CACb,KAAK,EAAE,aAAa,EACpB,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAElE;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,GAC/B;QACE,EAAE,EAAE,KAAK,CAAC;QACV,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,CAAC;IACN,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAClD,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU,CAAC;IAClD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACjD,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,UAAU,EAAE,CAAC;IACrD,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACzD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACpC;;;;;OAKG;IACH,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5C,kBAAkB,CAAC,OAAO,CAAC,EAAE;QAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG;QAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,iBAAiB,IAAI,MAAM,EAAE,CAAC;IAC9B,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACtE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACrD,sEAAsE;IACtE,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC/D;;;;OAIG;IACH,YAAY,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,UAAU,EAAE,CAAC;IACzD;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACpD,wDAAwD;IACxD,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAChD;;;OAGG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC;IACrE;;;;OAIG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACtD,4EAA4E;IAC5E,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,KAAK,IAAI,IAAI,CAAC;CACf;AAqBD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,YAAY,GAClB,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAE/B;AAqBD,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,CAAC,EAAE;IACR,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,GACA,YAAY,CA8hBd"}
@@ -1,3 +1,10 @@
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import { closeSync, fsyncSync, mkdirSync, openSync, readFileSync, renameSync, unlinkSync, writeFileSync, } from "node:fs";
3
+ import { dirname, join } from "node:path";
4
+ const databases = new WeakMap();
5
+ export function indexDatabase(index) {
6
+ return databases.get(index);
7
+ }
1
8
  function rowToEntry(row) {
2
9
  return {
3
10
  id: row.id,
@@ -9,20 +16,172 @@ function rowToEntry(row) {
9
16
  createdAt: row.created_at,
10
17
  sizeBytes: row.size_bytes,
11
18
  version: row.version,
19
+ casRevision: row.cas_revision,
12
20
  dataPointId: row.data_point_id,
13
21
  afterTombstoneVersion: row.after_tombstone_version ?? null,
22
+ producer: row.producer,
23
+ producerProvenance: row.producer_provenance,
14
24
  };
15
25
  }
16
- export function createIndexManager(db) {
17
- const insertStmt = db.prepare(`INSERT INTO data_files (file_id, schema_id, path, scope, collected_at, size_bytes, version, data_point_id, after_tombstone_version)
18
- VALUES (@file_id, @schema_id, @path, @scope, @collected_at, @size_bytes, @version, @data_point_id, @after_tombstone_version)`);
26
+ export function createIndexManager(db, options) {
27
+ const revisionJournalDir = options?.revisionJournalDir;
28
+ const historyUnknownPath = options?.historyUnknownPath;
29
+ if (revisionJournalDir) {
30
+ mkdirSync(revisionJournalDir, { recursive: true });
31
+ const parent = openSync(dirname(revisionJournalDir), "r");
32
+ try {
33
+ fsyncSync(parent);
34
+ }
35
+ finally {
36
+ closeSync(parent);
37
+ }
38
+ }
39
+ const journalPath = (scope) => join(revisionJournalDir, `${createHash("sha256").update(scope).digest("hex")}.revision`);
40
+ const closedMarkerPath = (scope) => `${journalPath(scope)}.closed`;
41
+ const openMarkerPath = (scope) => `${journalPath(scope)}.open`;
42
+ const markerExists = (path) => {
43
+ try {
44
+ readFileSync(path);
45
+ return true;
46
+ }
47
+ catch (error) {
48
+ if (error.code === "ENOENT")
49
+ return false;
50
+ throw error;
51
+ }
52
+ };
53
+ const historyUnknown = historyUnknownPath !== undefined && markerExists(historyUnknownPath);
54
+ const readJournal = (scope) => {
55
+ if (!revisionJournalDir)
56
+ return 0;
57
+ let value;
58
+ try {
59
+ value = readFileSync(journalPath(scope), "utf8");
60
+ }
61
+ catch (error) {
62
+ if (error.code === "ENOENT")
63
+ return 0;
64
+ throw error;
65
+ }
66
+ const revision = Number(value);
67
+ if (!/^(0|[1-9]\d*)$/.test(value) || !Number.isSafeInteger(revision)) {
68
+ throw new Error(`Invalid CAS revision journal for ${scope}`);
69
+ }
70
+ return revision;
71
+ };
72
+ const reserveJournal = (scope, revision) => {
73
+ if (!revisionJournalDir || revision <= readJournal(scope))
74
+ return;
75
+ const path = journalPath(scope);
76
+ const staged = `${path}.pending.${randomUUID()}`;
77
+ const file = openSync(staged, "wx");
78
+ try {
79
+ writeFileSync(file, String(revision));
80
+ fsyncSync(file);
81
+ }
82
+ finally {
83
+ closeSync(file);
84
+ }
85
+ renameSync(staged, path);
86
+ const dir = openSync(revisionJournalDir, "r");
87
+ try {
88
+ fsyncSync(dir);
89
+ }
90
+ finally {
91
+ closeSync(dir);
92
+ }
93
+ };
94
+ const reserveMarker = (path, content) => {
95
+ if (!revisionJournalDir)
96
+ return;
97
+ if (markerExists(path))
98
+ return;
99
+ const staged = `${path}.pending.${randomUUID()}`;
100
+ const file = openSync(staged, "wx");
101
+ try {
102
+ writeFileSync(file, content);
103
+ fsyncSync(file);
104
+ }
105
+ finally {
106
+ closeSync(file);
107
+ }
108
+ renameSync(staged, path);
109
+ const dir = openSync(revisionJournalDir, "r");
110
+ try {
111
+ fsyncSync(dir);
112
+ }
113
+ finally {
114
+ closeSync(dir);
115
+ }
116
+ };
117
+ const reserveClosedMarker = (scope) => {
118
+ if (revisionJournalDir)
119
+ reserveMarker(closedMarkerPath(scope), "closed\n");
120
+ };
121
+ const reserveOpenMarker = (scope) => {
122
+ if (revisionJournalDir)
123
+ reserveMarker(openMarkerPath(scope), "open\n");
124
+ };
125
+ const removeOpenMarker = (scope) => {
126
+ if (!revisionJournalDir || !markerExists(openMarkerPath(scope)))
127
+ return;
128
+ unlinkSync(openMarkerPath(scope));
129
+ const dir = openSync(revisionJournalDir, "r");
130
+ try {
131
+ fsyncSync(dir);
132
+ }
133
+ finally {
134
+ closeSync(dir);
135
+ }
136
+ };
137
+ const hasTrustedRevisionJournal = (scope) => !!revisionJournalDir &&
138
+ readJournal(scope) > 0 &&
139
+ markerExists(openMarkerPath(scope)) &&
140
+ !markerExists(closedMarkerPath(scope));
141
+ // The index can be reconstructed from envelopes. Keep a separate durable
142
+ // high-water mark so reconstruction cannot reuse a deleted CAS version.
143
+ if (revisionJournalDir) {
144
+ const existing = db
145
+ .prepare("SELECT scope, cas_revision, closed_for_writes FROM scope_revisions")
146
+ .all();
147
+ for (const row of existing) {
148
+ reserveJournal(row.scope, row.cas_revision);
149
+ if (row.closed_for_writes === 1 ||
150
+ markerExists(closedMarkerPath(row.scope)) ||
151
+ (!markerExists(openMarkerPath(row.scope)) &&
152
+ !options?.allowOpenMarkerMigration)) {
153
+ removeOpenMarker(row.scope);
154
+ reserveClosedMarker(row.scope);
155
+ db.prepare("UPDATE scope_revisions SET closed_for_writes = 1 WHERE scope = ?").run(row.scope);
156
+ }
157
+ else {
158
+ reserveOpenMarker(row.scope);
159
+ }
160
+ }
161
+ }
162
+ const insertStmt = db.prepare(`INSERT INTO data_files (file_id, schema_id, path, scope, collected_at, size_bytes, version, cas_revision, data_point_id, after_tombstone_version, producer, producer_provenance)
163
+ VALUES (@file_id, @schema_id, @path, @scope, @collected_at, @size_bytes, @version, @cas_revision, @data_point_id, @after_tombstone_version, @producer, @producer_provenance)`);
19
164
  const maxVersionByScopeStmt = db.prepare("SELECT COALESCE(MAX(version), 0) AS max_version FROM data_files WHERE scope = @scope");
20
165
  const findByPathStmt = db.prepare("SELECT * FROM data_files WHERE path = @path");
21
- const findLatestByScopeStmt = db.prepare("SELECT * FROM data_files WHERE scope = @scope ORDER BY collected_at DESC LIMIT 1");
166
+ const findLatestByScopeStmt = db.prepare("SELECT * FROM data_files WHERE scope = @scope ORDER BY julianday(collected_at) DESC, id DESC LIMIT 1");
167
+ const currentForWriteStmt = db.prepare(`SELECT
168
+ latest.cas_revision,
169
+ latest.producer,
170
+ revisions.closed_for_writes
171
+ FROM scope_revisions revisions
172
+ LEFT JOIN (
173
+ SELECT cas_revision, producer
174
+ FROM data_files
175
+ WHERE scope = @scope
176
+ ORDER BY julianday(collected_at) DESC, id DESC
177
+ LIMIT 1
178
+ ) latest ON 1 = 1
179
+ WHERE revisions.scope = @scope`);
22
180
  const countByScopeStmt = db.prepare("SELECT COUNT(*) AS cnt FROM data_files WHERE scope = @scope");
23
181
  const deleteByPathStmt = db.prepare("DELETE FROM data_files WHERE path = @path");
24
182
  const deleteUnsyncedByPathStmt = db.prepare("DELETE FROM data_files WHERE path = @path AND data_point_id IS NULL");
25
- const findClosestByScopeStmt = db.prepare("SELECT * FROM data_files WHERE scope = @scope AND collected_at <= @at ORDER BY collected_at DESC LIMIT 1");
183
+ const findClosestByScopeStmt = db.prepare("SELECT * FROM data_files WHERE scope = @scope AND julianday(collected_at) <= julianday(@at) ORDER BY julianday(collected_at) DESC, id DESC LIMIT 1");
184
+ const listIndexedScopesStmt = db.prepare("SELECT DISTINCT scope FROM data_files ORDER BY scope ASC");
26
185
  const findByFileIdStmt = db.prepare("SELECT * FROM data_files WHERE file_id = @file_id");
27
186
  const findByDataPointIdStmt = db.prepare("SELECT * FROM data_files WHERE data_point_id = @data_point_id ORDER BY version DESC, id DESC LIMIT 1");
28
187
  const findUnsyncedStmt = db.prepare("SELECT * FROM data_files WHERE data_point_id IS NULL ORDER BY created_at ASC");
@@ -30,28 +189,101 @@ export function createIndexManager(db) {
30
189
  const updateFileIdStmt = db.prepare("UPDATE data_files SET file_id = @file_id WHERE path = @path");
31
190
  const updateDataPointIdStmt = db.prepare("UPDATE data_files SET data_point_id = @data_point_id WHERE path = @path");
32
191
  const updateVersionStmt = db.prepare("UPDATE data_files SET version = @version WHERE path = @path");
192
+ const ensureScopeRevisionStmt = db.prepare("INSERT OR IGNORE INTO scope_revisions (scope, cas_revision, closed_for_writes) VALUES (@scope, 0, 0)");
193
+ const readScopeRevisionStmt = db.prepare("SELECT cas_revision FROM scope_revisions WHERE scope = @scope");
194
+ const updateScopeRevisionStmt = db.prepare("UPDATE scope_revisions SET cas_revision = @cas_revision WHERE scope = @scope AND cas_revision < @cas_revision");
195
+ const closeScopeForWritesStmt = db.prepare("UPDATE scope_revisions SET closed_for_writes = 1 WHERE scope = @scope");
33
196
  const deleteByScopeStmt = db.prepare("DELETE FROM data_files WHERE scope = @scope");
34
- return {
197
+ const insertRow = (entry) => {
198
+ ensureScopeRevisionStmt.run({ scope: entry.scope });
199
+ const current = readScopeRevisionStmt.get({ scope: entry.scope });
200
+ const casRevision = entry.casRevision ??
201
+ Math.max(current.cas_revision, readJournal(entry.scope)) + 1;
202
+ if (!Number.isSafeInteger(casRevision)) {
203
+ throw new Error("CAS revision exhausted");
204
+ }
205
+ // Sync history counts retained versions; CAS revisions never rewind.
206
+ const version = entry.version ??
207
+ maxVersionByScopeStmt.get({ scope: entry.scope }).max_version + 1;
208
+ // Reserve before the SQLite commit. A crash may leave a gap, but never
209
+ // lets an old If-Match value name a different row after index recovery.
210
+ reserveJournal(entry.scope, casRevision);
211
+ updateScopeRevisionStmt.run({
212
+ scope: entry.scope,
213
+ cas_revision: casRevision,
214
+ });
215
+ const result = insertStmt.run({
216
+ file_id: entry.fileId,
217
+ schema_id: entry.schemaId ?? null,
218
+ path: entry.path,
219
+ scope: entry.scope,
220
+ collected_at: entry.collectedAt,
221
+ size_bytes: entry.sizeBytes,
222
+ version,
223
+ cas_revision: casRevision,
224
+ data_point_id: entry.dataPointId ?? null,
225
+ after_tombstone_version: entry.afterTombstoneVersion ?? null,
226
+ producer: entry.producer ?? null,
227
+ producer_provenance: entry.producerProvenance ?? null,
228
+ });
229
+ const row = db
230
+ .prepare("SELECT * FROM data_files WHERE id = ?")
231
+ .get(result.lastInsertRowid);
232
+ return rowToEntry(row);
233
+ };
234
+ const insertIfCurrent = db.transaction((entry, precondition) => {
235
+ const current = currentForWriteStmt.get({ scope: entry.scope });
236
+ const currentVersion = current === undefined ? null : (current.cas_revision ?? null);
237
+ const scopeClosedForWrites = ((historyUnknown ||
238
+ (historyUnknownPath !== undefined &&
239
+ markerExists(historyUnknownPath))) &&
240
+ !hasTrustedRevisionJournal(entry.scope)) ||
241
+ current?.closed_for_writes === 1 ||
242
+ (revisionJournalDir !== undefined &&
243
+ (markerExists(closedMarkerPath(entry.scope)) ||
244
+ ((current !== undefined || readJournal(entry.scope) > 0) &&
245
+ !hasTrustedRevisionJournal(entry.scope))));
246
+ if (scopeClosedForWrites ||
247
+ (precondition?.kind === "none" &&
248
+ (current?.cas_revision ?? null) !== null) ||
249
+ (precondition?.kind === "match" &&
250
+ currentVersion !== precondition.version)) {
251
+ if (scopeClosedForWrites) {
252
+ ensureScopeRevisionStmt.run({ scope: entry.scope });
253
+ removeOpenMarker(entry.scope);
254
+ reserveClosedMarker(entry.scope);
255
+ closeScopeForWritesStmt.run({ scope: entry.scope });
256
+ }
257
+ return {
258
+ ok: false,
259
+ currentVersion,
260
+ currentProducer: current?.producer ?? null,
261
+ };
262
+ }
263
+ reserveOpenMarker(entry.scope);
264
+ return { ok: true, entry: insertRow(entry) };
265
+ });
266
+ const manager = {
35
267
  insert(entry) {
36
- // Caller-supplied version wins; otherwise advance the per-scope
37
- // counter atomically inside the same statement chain.
38
- const version = entry.version ??
39
- maxVersionByScopeStmt.get({ scope: entry.scope }).max_version + 1;
40
- const result = insertStmt.run({
41
- file_id: entry.fileId,
42
- schema_id: entry.schemaId ?? null,
43
- path: entry.path,
44
- scope: entry.scope,
45
- collected_at: entry.collectedAt,
46
- size_bytes: entry.sizeBytes,
47
- version,
48
- data_point_id: entry.dataPointId ?? null,
49
- after_tombstone_version: entry.afterTombstoneVersion ?? null,
50
- });
51
- const row = db
52
- .prepare("SELECT * FROM data_files WHERE id = ?")
53
- .get(result.lastInsertRowid);
54
- return rowToEntry(row);
268
+ const result = insertIfCurrent(entry);
269
+ if (!result.ok)
270
+ throw new Error("Unconditional insert was rejected");
271
+ return result.entry;
272
+ },
273
+ insertIfCurrent,
274
+ closeScopeForWrites(scope) {
275
+ ensureScopeRevisionStmt.run({ scope });
276
+ // Durable fail-closed marker. There is no HTTP reset path; clearing this
277
+ // requires an explicit owner-confirmed offline repair/rebuild.
278
+ // Remove open proof first. A crash before the closed marker is written
279
+ // leaves an ambiguous scope, which startup closes from the database row.
280
+ removeOpenMarker(scope);
281
+ reserveClosedMarker(scope);
282
+ closeScopeForWritesStmt.run({ scope });
283
+ },
284
+ hasTrustedRevisionJournal,
285
+ insertRecovered(entry) {
286
+ return insertRow(entry);
55
287
  },
56
288
  findByPath(path) {
57
289
  const row = findByPathStmt.get({ path });
@@ -64,9 +296,10 @@ export function createIndexManager(db) {
64
296
  sql += " WHERE scope = @scope";
65
297
  params.scope = options.scope;
66
298
  }
67
- // id is the autoincrement PK — a stable tiebreaker so limit/offset paging can't skip or
68
- // duplicate rows when versions share a collected_at (second precision).
69
- sql += " ORDER BY collected_at DESC, id DESC";
299
+ // Preserve the legacy chronological head when sync backfills history.
300
+ // julianday handles both older second-precision and newer millisecond
301
+ // timestamps; id breaks exact ties.
302
+ sql += " ORDER BY julianday(collected_at) DESC, id DESC";
70
303
  if (options.limit !== undefined) {
71
304
  sql += " LIMIT @limit";
72
305
  params.limit = options.limit;
@@ -101,7 +334,17 @@ export function createIndexManager(db) {
101
334
  .prepare("SELECT COUNT(DISTINCT scope) AS cnt FROM data_files WHERE scope LIKE @prefix")
102
335
  .get({ prefix });
103
336
  const total = countRow.cnt;
104
- let sql = "SELECT scope, MAX(collected_at) AS latest_collected_at, COUNT(*) AS version_count FROM data_files WHERE scope LIKE @prefix GROUP BY scope ORDER BY scope ASC";
337
+ let sql = `SELECT latest.scope, latest.collected_at AS latest_collected_at,
338
+ (SELECT COUNT(*) FROM data_files counted WHERE counted.scope = latest.scope) AS version_count
339
+ FROM data_files latest
340
+ WHERE latest.scope LIKE @prefix
341
+ AND latest.id = (
342
+ SELECT id FROM data_files candidate
343
+ WHERE candidate.scope = latest.scope
344
+ ORDER BY julianday(candidate.collected_at) DESC, candidate.id DESC
345
+ LIMIT 1
346
+ )
347
+ ORDER BY latest.scope ASC`;
105
348
  const params = { prefix };
106
349
  if (options?.limit !== undefined) {
107
350
  sql += " LIMIT @limit";
@@ -121,6 +364,10 @@ export function createIndexManager(db) {
121
364
  total,
122
365
  };
123
366
  },
367
+ listIndexedScopes() {
368
+ const rows = listIndexedScopesStmt.all();
369
+ return rows.map((row) => row.scope);
370
+ },
124
371
  findClosestByScope(scope, at) {
125
372
  const row = findClosestByScopeStmt.get({ scope, at });
126
373
  return row ? rowToEntry(row) : undefined;
@@ -149,7 +396,7 @@ export function createIndexManager(db) {
149
396
  },
150
397
  findLatestVersionByScope(scope) {
151
398
  const row = maxVersionByScopeStmt.get({ scope });
152
- return row.max_version;
399
+ return row?.max_version ?? 0;
153
400
  },
154
401
  updateDataPointId(path, dataPointId) {
155
402
  const result = updateDataPointIdStmt.run({
@@ -170,5 +417,7 @@ export function createIndexManager(db) {
170
417
  db.close();
171
418
  },
172
419
  };
420
+ databases.set(manager, db);
421
+ return manager;
173
422
  }
174
423
  //# sourceMappingURL=index-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-manager.js","sourceRoot":"","sources":["../../src/storage/index-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index-manager.js","sourceRoot":"","sources":["../../src/storage/index-manager.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import Database from "better-sqlite3";
2
- export declare const INDEX_SCHEMA_VERSION = 4;
2
+ export declare const INDEX_SCHEMA_VERSION = 14;
3
3
  /** Open/create SQLite database, run CREATE TABLE IF NOT EXISTS, set WAL mode */
4
4
  export declare function initializeDatabase(dbPath: string): Database.Database;
5
5
  //# sourceMappingURL=index-schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-schema.d.ts","sourceRoot":"","sources":["../../src/storage/index-schema.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAyBtC,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAmDtC,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAYpE"}
1
+ {"version":3,"file":"index-schema.d.ts","sourceRoot":"","sources":["../../src/storage/index-schema.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAoCtC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAuNvC,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CA0DpE"}