@kvman/kernel 0.4.2 → 0.4.4

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 (59) hide show
  1. package/dist/ctx/extension-ctx.d.ts +2 -2
  2. package/dist/ctx/extension-ctx.d.ts.map +1 -1
  3. package/dist/ctx/extension-ctx.js +2 -2
  4. package/dist/ctx/extension-ctx.js.map +1 -1
  5. package/dist/extensions/trust.js +1 -1
  6. package/dist/extensions/trust.js.map +1 -1
  7. package/dist/jobs/dispatcher.d.ts +2 -1
  8. package/dist/jobs/dispatcher.d.ts.map +1 -1
  9. package/dist/jobs/dispatcher.js +50 -12
  10. package/dist/jobs/dispatcher.js.map +1 -1
  11. package/dist/jobs/job-rows.js +1 -1
  12. package/dist/jobs/job-rows.js.map +1 -1
  13. package/dist/kernel.d.ts.map +1 -1
  14. package/dist/kernel.js +4 -2
  15. package/dist/kernel.js.map +1 -1
  16. package/dist/reload/folder-tree.d.ts +15 -0
  17. package/dist/reload/folder-tree.d.ts.map +1 -0
  18. package/dist/reload/folder-tree.js +61 -0
  19. package/dist/reload/folder-tree.js.map +1 -0
  20. package/dist/reload/watcher.d.ts +6 -1
  21. package/dist/reload/watcher.d.ts.map +1 -1
  22. package/dist/reload/watcher.js +14 -20
  23. package/dist/reload/watcher.js.map +1 -1
  24. package/dist/run/extension-run.d.ts +5 -0
  25. package/dist/run/extension-run.d.ts.map +1 -1
  26. package/dist/run/extension-run.js +21 -1
  27. package/dist/run/extension-run.js.map +1 -1
  28. package/dist/storage/database.d.ts +2 -0
  29. package/dist/storage/database.d.ts.map +1 -1
  30. package/dist/storage/database.js +4 -0
  31. package/dist/storage/database.js.map +1 -1
  32. package/dist/store/collections.d.ts +1 -1
  33. package/dist/store/collections.d.ts.map +1 -1
  34. package/dist/store/collections.js +17 -5
  35. package/dist/store/collections.js.map +1 -1
  36. package/dist/store/filters.d.ts +1 -0
  37. package/dist/store/filters.d.ts.map +1 -1
  38. package/dist/store/filters.js +9 -10
  39. package/dist/store/filters.js.map +1 -1
  40. package/dist/store/indexes.d.ts +29 -0
  41. package/dist/store/indexes.d.ts.map +1 -0
  42. package/dist/store/indexes.js +58 -0
  43. package/dist/store/indexes.js.map +1 -0
  44. package/dist/store/store.d.ts +2 -1
  45. package/dist/store/store.d.ts.map +1 -1
  46. package/dist/store/store.js +6 -6
  47. package/dist/store/store.js.map +1 -1
  48. package/dist/workers/pool.d.ts.map +1 -1
  49. package/dist/workers/pool.js +9 -9
  50. package/dist/workers/pool.js.map +1 -1
  51. package/dist/workers/protocol.d.ts +1 -0
  52. package/dist/workers/protocol.d.ts.map +1 -1
  53. package/dist/workers/protocol.js +2 -2
  54. package/dist/workers/protocol.js.map +1 -1
  55. package/dist/workers/worker-main.js +1 -1
  56. package/dist/workers/worker-main.js.map +1 -1
  57. package/dist/workspaces/workspaces.js +2 -2
  58. package/dist/workspaces/workspaces.js.map +1 -1
  59. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"extension-run.d.ts","sourceRoot":"","sources":["../../src/run/extension-run.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAiC,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACtH,OAAO,EAAoC,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAClH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAa,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAM1D,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAA;CAAE,CAAC;AAEzF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,gBAAgB,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,aAAa,CAAC;IAC9B,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG;QAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC,CAAA;KAAE,CAAC;IACrG,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAIF,MAAM,MAAM,MAAM,GAAG;IAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAU1E,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;AAEzE,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB;gBAiCtD,UAAU;sBACJ,SAAS,YAAY,EAAE;oBACzB,QAAQ;mBACT,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;oBAElB,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;uBAqBxC,WAAW,KAAG,IAAI;gBAGrB,OAAO,CAAC,IAAI,CAAC;iBAGZ,OAAO,CAAC,IAAI,CAAC;GAIjC"}
1
+ {"version":3,"file":"extension-run.d.ts","sourceRoot":"","sources":["../../src/run/extension-run.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAiC,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACtH,OAAO,EAAoC,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAClH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAa,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAO1D,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAA;CAAE,CAAC;AAEzF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,gBAAgB,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,aAAa,CAAC;IAC9B,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG;QAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC,CAAA;KAAE,CAAC;IACrG,OAAO,EAAE;QAAE,MAAM,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,IAAI,CAAC;QAAC,UAAU,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,IAAI,CAAA;KAAE,CAAC;IAC5G,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAIF,MAAM,MAAM,MAAM,GAAG;IAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAc1E,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;AAEzE,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB;gBA4CtD,UAAU;sBACJ,SAAS,YAAY,EAAE;oBACzB,QAAQ;mBACT,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;oBAElB,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;uBAyBxC,WAAW,KAAG,IAAI;gBAGrB,OAAO,CAAC,IAAI,CAAC;iBAGZ,OAAO,CAAC,IAAI,CAAC;GAIjC"}
@@ -2,7 +2,11 @@ import { pathToFileURL } from 'node:url';
2
2
  import { checkAndOrder, checkReload, dependentsOf } from "../extensions/load-order.js";
3
3
  import { readExtension, readExtensions } from "../extensions/manifests.js";
4
4
  import { mergeCatalogs, readOwnerCatalogs } from "../localization/catalogs.js";
5
+ import { declaredIndexes } from "../store/indexes.js";
5
6
  import { startPool } from "../workers/pool.js";
7
+ function indexesOf(extensions) {
8
+ return declaredIndexes(extensions.map((extension) => ({ name: extension.name, indexes: extension.manifest.kvman.indexes })));
9
+ }
6
10
  function catalogsOf(kernelCatalogs, extensions) {
7
11
  return mergeCatalogs([kernelCatalogs, ...extensions.map((extension) => extension.catalogs)]);
8
12
  }
@@ -22,14 +26,25 @@ export async function startExtensionRun(options) {
22
26
  version: extension.manifest.version,
23
27
  source: extension.source,
24
28
  revision: extension.revision,
29
+ indexes: extension.manifest.kvman.indexes ?? {},
25
30
  })),
26
31
  },
27
32
  });
28
33
  let extensions = checkAndOrder(readExtensions(options.preset, options.folders), options.sdkVersion).map((extension) => withCatalogs(extension, 0));
29
34
  let catalogs = catalogsOf(options.kernelCatalogs, extensions);
35
+ options.indexes.create(indexesOf(extensions));
36
+ options.indexes.dropOthers(indexesOf(extensions));
30
37
  let pool = await launch(extensions, catalogs);
31
38
  const retiring = new Set();
32
39
  const pools = () => [pool, ...retiring];
40
+ const dropUnusedIndexes = () => {
41
+ try {
42
+ options.indexes.dropOthers(indexesOf(extensions));
43
+ }
44
+ catch (error) {
45
+ options.logger.error('Store indexes no extension declares could not be dropped; the next start drops them.', { reason: error instanceof Error ? error.message : String(error) });
46
+ }
47
+ };
33
48
  const warnDroppedNames = (reloaded, next) => {
34
49
  const kept = new Set(next.summary.jobs.map((job) => job.name));
35
50
  for (const job of pool.summary.jobs.filter((entry) => reloaded.has(entry.owner) && !kept.has(entry.name))) {
@@ -53,13 +68,18 @@ export async function startExtensionRun(options) {
53
68
  return changed.has(extension.name) || before === undefined ? withCatalogs(extension, (before?.revision ?? -1) + 1) : before;
54
69
  });
55
70
  const nextCatalogs = catalogsOf(options.kernelCatalogs, next);
71
+ options.indexes.create(indexesOf(next));
56
72
  const nextPool = await launch(next, nextCatalogs);
57
73
  for (const warning of warnings)
58
74
  options.logger.warn('A reloaded extension no longer satisfies a dependent.', warning);
59
75
  warnDroppedNames(changed, nextPool);
60
76
  const old = pool;
61
77
  retiring.add(old);
62
- void old.retire().then(() => retiring.delete(old));
78
+ void old.retire().then(() => {
79
+ retiring.delete(old);
80
+ if (retiring.size === 0)
81
+ dropUnusedIndexes();
82
+ });
63
83
  pool = nextPool;
64
84
  extensions = next;
65
85
  catalogs = nextCatalogs;
@@ -1 +1 @@
1
- {"version":3,"file":"extension-run.js","sourceRoot":"","sources":["../../src/run/extension-run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extension-run.js","sourceRoot":"","sources":["../../src/run/extension-run.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import Database from 'better-sqlite3';
2
2
  export type Connection = Database.Database;
3
3
  export declare const busyTimeoutMs = 5000;
4
+ /** Whether an error is SQLite's "database is locked": `SQLITE_BUSY` or one of its extended codes. */
5
+ export declare function isBusy(error: unknown): error is InstanceType<typeof Database.SqliteError>;
4
6
  export declare function openConnection(file: string): Connection;
5
7
  export declare function openDatabase(file: string): Connection;
6
8
  //# sourceMappingURL=database.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/storage/database.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAKtC,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC;AAE3C,eAAO,MAAM,aAAa,OAAO,CAAC;AAElC,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAavD;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CASrD"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/storage/database.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAKtC,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC;AAE3C,eAAO,MAAM,aAAa,OAAO,CAAC;AAElC,qGAAqG;AACrG,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,OAAO,QAAQ,CAAC,WAAW,CAAC,CAEzF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAavD;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CASrD"}
@@ -1,6 +1,10 @@
1
1
  import Database from 'better-sqlite3';
2
2
  import { kernelSchema } from "./schema.js";
3
3
  export const busyTimeoutMs = 5000;
4
+ /** Whether an error is SQLite's "database is locked": `SQLITE_BUSY` or one of its extended codes. */
5
+ export function isBusy(error) {
6
+ return error instanceof Database.SqliteError && error.code.startsWith('SQLITE_BUSY');
7
+ }
4
8
  export function openConnection(file) {
5
9
  const connection = new Database(file);
6
10
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/storage/database.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAElC,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,UAAU,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC;QACH,mHAAmH;QACnH,8FAA8F;QAC9F,UAAU,CAAC,MAAM,CAAC,kBAAkB,aAAa,EAAE,CAAC,CAAC;QACrD,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACxC,UAAU,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC1C,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,kHAAkH;AAClH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC;QACH,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9B,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/storage/database.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAElC,qGAAqG;AACrG,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,KAAK,YAAY,QAAQ,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,UAAU,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC;QACH,mHAAmH;QACnH,8FAA8F;QAC9F,UAAU,CAAC,MAAM,CAAC,kBAAkB,aAAa,EAAE,CAAC,CAAC;QACrD,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACxC,UAAU,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC1C,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,kHAAkH;AAClH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC;QACH,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9B,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -2,5 +2,5 @@ import type { JsonObject, TransactionCollection, z } from '@kvman/sdk';
2
2
  import type { IdGenerator } from '../ids.ts';
3
3
  import type { Connection } from '../storage/database.ts';
4
4
  import type { ScopeKey, WriteGuard } from './kv.ts';
5
- export declare function collectionOf<Document extends JsonObject>(connection: Connection, key: ScopeKey, name: string, schema: z.ZodType<Document>, ids: IdGenerator, beforeWrite: WriteGuard): TransactionCollection<Document>;
5
+ export declare function collectionOf<Document extends JsonObject>(connection: Connection, key: ScopeKey, name: string, schema: z.ZodType<Document>, ids: IdGenerator, beforeWrite: WriteGuard, indexes: readonly (readonly string[])[]): TransactionCollection<Document>;
6
6
  //# sourceMappingURL=collections.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../src/store/collections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAU,qBAAqB,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAMpD,wBAAgB,YAAY,CAAC,QAAQ,SAAS,UAAU,EACtD,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAC3B,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,UAAU,GACtB,qBAAqB,CAAC,QAAQ,CAAC,CA4DjC"}
1
+ {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../src/store/collections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAU,qBAAqB,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIzD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAMpD,wBAAgB,YAAY,CAAC,QAAQ,SAAS,UAAU,EACtD,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAC3B,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,UAAU,EACvB,OAAO,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,GACtC,qBAAqB,CAAC,QAAQ,CAAC,CAsEjC"}
@@ -1,9 +1,19 @@
1
1
  import { kernelProblem } from "../problems.js";
2
2
  import { filterSql, findOptions } from "./filters.js";
3
+ import { indexFor, indexName, sqlText } from "./indexes.js";
3
4
  import { storedText, validationFailed } from "./json-values.js";
4
- export function collectionOf(connection, key, name, schema, ids, beforeWrite) {
5
+ export function collectionOf(connection, key, name, schema, ids, beforeWrite, indexes) {
5
6
  const where = 'extension = ? AND scope = ? AND collection = ?';
6
7
  const owner = [key.extension, key.scope, name];
8
+ // A lookup names the declared index it uses; SQLite can't weigh JSON expressions, and a partial index needs the
9
+ // extension and collection as literals (ADR 0088, 3).
10
+ const lookup = (fields) => {
11
+ const index = indexFor(indexes, fields);
12
+ if (index === undefined)
13
+ return { from: `store_documents WHERE ${where}`, values: owner };
14
+ const named = indexName({ extension: key.extension, collection: name, fields: index });
15
+ return { from: `store_documents INDEXED BY ${named} WHERE extension = ${sqlText(key.extension)} AND scope = ? AND collection = ${sqlText(name)}`, values: [key.scope] };
16
+ };
7
17
  const checked = (value, what) => {
8
18
  const parsed = schema.safeParse(value);
9
19
  if (!parsed.success)
@@ -35,13 +45,15 @@ export function collectionOf(connection, key, name, schema, ids, beforeWrite) {
35
45
  const direction = order === 'asc' ? 'ASC' : 'DESC';
36
46
  const cursor = after === undefined ? '' : ` AND id ${order === 'asc' ? '>' : '<'} ?`;
37
47
  const cursorValues = after === undefined ? [] : [after];
38
- const sql = `SELECT id, data FROM store_documents WHERE ${where} AND ${condition.sql}${cursor} ORDER BY id ${direction} LIMIT ?`;
39
- return connection.prepare(sql).all(...owner, ...condition.values, ...cursorValues, limit).map(read);
48
+ const { from, values } = lookup(condition.fields);
49
+ const sql = `SELECT id, data FROM ${from} AND ${condition.sql}${cursor} ORDER BY id ${direction} LIMIT ?`;
50
+ return connection.prepare(sql).all(...values, ...condition.values, ...cursorValues, limit).map(read);
40
51
  },
41
52
  count(filter) {
42
53
  const condition = filterSql(filter);
43
- const sql = `SELECT count(*) AS total FROM store_documents WHERE ${where} AND ${condition.sql}`;
44
- return connection.prepare(sql).get(...owner, ...condition.values)?.total ?? 0;
54
+ const { from, values } = lookup(condition.fields);
55
+ const sql = `SELECT count(*) AS total FROM ${from} AND ${condition.sql}`;
56
+ return connection.prepare(sql).get(...values, ...condition.values)?.total ?? 0;
45
57
  },
46
58
  update(id, patch) {
47
59
  beforeWrite();
@@ -1 +1 @@
1
- {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../src/store/collections.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAOhE,MAAM,UAAU,YAAY,CAC1B,UAAsB,EACtB,GAAa,EACb,IAAY,EACZ,MAA2B,EAC3B,GAAgB,EAChB,WAAuB;IAEvB,MAAM,KAAK,GAAG,gDAAgD,CAAC;IAC/D,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAU,CAAC;IAExD,MAAM,OAAO,GAAG,CAAC,KAAc,EAAE,IAAY,EAAY,EAAE;QACzD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAChE,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,GAAQ,EAAoB,EAAE;QAC1C,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,uBAAuB,IAAI,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;IACpF,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,EAAU,EAAmB,EAAE,CAC5C,UAAU,CAAC,OAAO,CAAwC,8CAA8C,KAAK,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;IAChJ,MAAM,OAAO,GAAG,CAAC,EAAU,EAAS,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,wBAAwB,IAAI,IAAI,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAEnI,OAAO;QACL,MAAM,CAAC,QAAQ;YACb,WAAW,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC;YAC3D,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC;YAC1D,UAAU,CAAC,OAAO,CAAC,6FAA6F,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAC1I,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC;QACzB,CAAC;QACD,GAAG,CAAC,EAAE;YACJ,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;YACtB,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,OAAO;YAClB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,SAAS,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YACnD,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACrF,MAAM,YAAY,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,GAAG,GAAG,8CAA8C,KAAK,QAAQ,SAAS,CAAC,GAAG,GAAG,MAAM,gBAAgB,SAAS,UAAU,CAAC;YACjI,OAAO,UAAU,CAAC,OAAO,CAAiB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,YAAY,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtH,CAAC;QACD,KAAK,CAAC,MAAM;YACV,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,GAAG,GAAG,uDAAuD,KAAK,QAAQ,SAAS,CAAC,GAAG,EAAE,CAAC;YAChG,OAAO,UAAU,CAAC,OAAO,CAA+B,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QAC9G,CAAC;QACD,MAAM,CAAC,EAAE,EAAE,KAAK;YACd,WAAW,EAAE,CAAC;YACd,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;YACtB,IAAI,GAAG,KAAK,SAAS;gBAAE,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;YACzC,MAAM,OAAO,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;YACpH,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,gBAAgB,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9D,UAAU,CAAC,OAAO,CAAC,6CAA6C,KAAK,aAAa,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;YAC5G,OAAO,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,CAAC,EAAE;YACP,WAAW,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,qCAAqC,KAAK,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;YAC7G,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC;gBAAE,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../src/store/collections.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAOhE,MAAM,UAAU,YAAY,CAC1B,UAAsB,EACtB,GAAa,EACb,IAAY,EACZ,MAA2B,EAC3B,GAAgB,EAChB,WAAuB,EACvB,OAAuC;IAEvC,MAAM,KAAK,GAAG,gDAAgD,CAAC;IAC/D,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAU,CAAC;IACxD,gHAAgH;IAChH,sDAAsD;IACtD,MAAM,MAAM,GAAG,CAAC,MAAyB,EAA+C,EAAE;QACxF,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,IAAI,EAAE,yBAAyB,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC1F,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACvF,OAAO,EAAE,IAAI,EAAE,8BAA8B,KAAK,sBAAsB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,mCAAmC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;IAC1K,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,KAAc,EAAE,IAAY,EAAY,EAAE;QACzD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAChE,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,GAAQ,EAAoB,EAAE;QAC1C,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,uBAAuB,IAAI,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;IACpF,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,EAAU,EAAmB,EAAE,CAC5C,UAAU,CAAC,OAAO,CAAwC,8CAA8C,KAAK,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;IAChJ,MAAM,OAAO,GAAG,CAAC,EAAU,EAAS,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,wBAAwB,IAAI,IAAI,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAEnI,OAAO;QACL,MAAM,CAAC,QAAQ;YACb,WAAW,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC;YAC3D,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC;YAC1D,UAAU,CAAC,OAAO,CAAC,6FAA6F,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAC1I,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC;QACzB,CAAC;QACD,GAAG,CAAC,EAAE;YACJ,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;YACtB,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,OAAO;YAClB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,SAAS,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YACnD,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACrF,MAAM,YAAY,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,wBAAwB,IAAI,QAAQ,SAAS,CAAC,GAAG,GAAG,MAAM,gBAAgB,SAAS,UAAU,CAAC;YAC1G,OAAO,UAAU,CAAC,OAAO,CAAiB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,YAAY,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvH,CAAC;QACD,KAAK,CAAC,MAAM;YACV,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,iCAAiC,IAAI,QAAQ,SAAS,CAAC,GAAG,EAAE,CAAC;YACzE,OAAO,UAAU,CAAC,OAAO,CAA+B,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QAC/G,CAAC;QACD,MAAM,CAAC,EAAE,EAAE,KAAK;YACd,WAAW,EAAE,CAAC;YACd,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;YACtB,IAAI,GAAG,KAAK,SAAS;gBAAE,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;YACzC,MAAM,OAAO,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;YACpH,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,gBAAgB,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9D,UAAU,CAAC,OAAO,CAAC,6CAA6C,KAAK,aAAa,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;YAC5G,OAAO,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,CAAC,EAAE;YACP,WAAW,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,qCAAqC,KAAK,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;YAC7G,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC;gBAAE,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,6 +1,7 @@
1
1
  export type SqlFilter = {
2
2
  sql: string;
3
3
  values: (string | number)[];
4
+ fields: string[];
4
5
  };
5
6
  export declare function filterSql(filter: unknown): SqlFilter;
6
7
  export declare function findOptions(options: unknown): {
@@ -1 +1 @@
1
- {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/store/filters.ts"],"names":[],"mappings":"AAeA,MAAM,MAAM,SAAS,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;CAAE,CAAC;AAcrE,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAMpD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAMtG"}
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/store/filters.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,SAAS,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAUvF,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAOpD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAMtG"}
@@ -1,6 +1,7 @@
1
1
  import { z } from '@kvman/sdk';
2
2
  import { findLimitMaximum } from "../limits.js";
3
3
  import { kernelProblem } from "../problems.js";
4
+ import { typeOf, valueOf } from "./indexes.js";
4
5
  import { validationFailed } from "./json-values.js";
5
6
  // `find` and `count` filters: equality on top-level fields, combined with AND (plan 02 §2.5).
6
7
  const filterSchema = z.record(z.string().min(1), z.union([z.string(), z.number(), z.boolean(), z.null()]));
@@ -9,27 +10,25 @@ const findOptionsSchema = z.strictObject({
9
10
  order: z.enum(['asc', 'desc']).optional(),
10
11
  after: z.string().min(1).optional(),
11
12
  });
12
- function fieldPath(field) {
13
- return `$."${field.replaceAll('"', '\\"')}"`;
14
- }
13
+ // Each field's type and value are spelled as its declared index spells them, so SQLite can match them (ADR 0088, 3).
15
14
  function condition(field, value) {
16
- const path = fieldPath(field);
17
15
  if (value === null)
18
- return { sql: "json_type(data, ?) = 'null'", values: [path] };
16
+ return { sql: `${typeOf(field)} = 'null'`, values: [] };
19
17
  if (typeof value === 'boolean')
20
- return { sql: `json_type(data, ?) = '${value ? 'true' : 'false'}'`, values: [path] };
18
+ return { sql: `${typeOf(field)} = '${value ? 'true' : 'false'}'`, values: [] };
21
19
  if (typeof value === 'number')
22
- return { sql: "json_type(data, ?) IN ('integer', 'real') AND json_extract(data, ?) = ?", values: [path, path, value] };
23
- return { sql: "json_type(data, ?) = 'text' AND json_extract(data, ?) = ?", values: [path, path, value] };
20
+ return { sql: `${typeOf(field)} IN ('integer', 'real') AND ${valueOf(field)} = ?`, values: [value] };
21
+ return { sql: `${typeOf(field)} = 'text' AND ${valueOf(field)} = ?`, values: [value] };
24
22
  }
25
23
  export function filterSql(filter) {
26
24
  const parsed = filterSchema.safeParse(filter);
27
25
  if (!parsed.success)
28
26
  throw validationFailed('The filter', parsed.error);
27
+ const fields = Object.keys(parsed.data);
29
28
  const conditions = Object.entries(parsed.data).map(([field, value]) => condition(field, value));
30
29
  if (conditions.length === 0)
31
- return { sql: '1', values: [] };
32
- return { sql: conditions.map((part) => `(${part.sql})`).join(' AND '), values: conditions.flatMap((part) => part.values) };
30
+ return { sql: '1', values: [], fields };
31
+ return { sql: conditions.map((part) => `(${part.sql})`).join(' AND '), values: conditions.flatMap((part) => part.values), fields };
33
32
  }
34
33
  export function findOptions(options) {
35
34
  const parsed = findOptionsSchema.safeParse(options);
@@ -1 +1 @@
1
- {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/store/filters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/store/filters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { StoreIndexes } from '@kvman/sdk';
2
+ import type { Connection } from '../storage/database.ts';
3
+ /** One declared index: its extension, its collection, and its fields in order. */
4
+ export type StoreIndex = {
5
+ extension: string;
6
+ collection: string;
7
+ fields: readonly string[];
8
+ };
9
+ /** A SQL string literal. */
10
+ export declare function sqlText(value: string): string;
11
+ /** The SQL of a field's JSON type. */
12
+ export declare const typeOf: (field: string) => string;
13
+ /** The SQL of a field's JSON value. */
14
+ export declare const valueOf: (field: string) => string;
15
+ /** The index's SQLite name: the same for the same extension, collection, and fields. */
16
+ export declare function indexName(index: StoreIndex): string;
17
+ /** Every index the extensions declare. */
18
+ export declare function declaredIndexes(extensions: readonly {
19
+ name: string;
20
+ indexes: StoreIndexes | undefined;
21
+ }[]): StoreIndex[];
22
+ /** Creates the declared indexes that don't exist yet. */
23
+ export declare function createIndexes(connection: Connection, indexes: readonly StoreIndex[]): void;
24
+ /** Drops the store indexes that none of `indexes` is; the kernel's other indexes and all data stay. */
25
+ export declare function dropOtherIndexes(connection: Connection, indexes: readonly StoreIndex[]): void;
26
+ /** The fields of the declared index a filter on `fields` uses: the one with exactly its fields, else the one with the
27
+ * most leading fields that are all in it; `undefined` when none starts with one of them. */
28
+ export declare function indexFor(declared: readonly (readonly string[])[], fields: readonly string[]): readonly string[] | undefined;
29
+ //# sourceMappingURL=indexes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexes.d.ts","sourceRoot":"","sources":["../../src/store/indexes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAMzD,kFAAkF;AAClF,MAAM,MAAM,UAAU,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAI9F,4BAA4B;AAC5B,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAMD,sCAAsC;AACtC,eAAO,MAAM,MAAM,GAAI,OAAO,MAAM,KAAG,MAAgD,CAAC;AAExF,uCAAuC;AACvC,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,KAAG,MAAmD,CAAC;AAE5F,wFAAwF;AACxF,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAGnD;AAED,0CAA0C;AAC1C,wBAAgB,eAAe,CAAC,UAAU,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,GAAG,SAAS,CAAA;CAAE,EAAE,GAAG,UAAU,EAAE,CAIxH;AAQD,yDAAyD;AACzD,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,IAAI,CAI1F;AAED,uGAAuG;AACvG,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,IAAI,CAM7F;AAED;4FAC4F;AAC5F,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAS3H"}
@@ -0,0 +1,58 @@
1
+ import { createHash } from 'node:crypto';
2
+ const namePrefix = 'store_index_';
3
+ /** A SQL string literal. */
4
+ export function sqlText(value) {
5
+ return `'${value.replaceAll("'", "''")}'`;
6
+ }
7
+ function fieldPath(field) {
8
+ return sqlText(`$."${field.replaceAll('"', '\\"')}"`);
9
+ }
10
+ /** The SQL of a field's JSON type. */
11
+ export const typeOf = (field) => `json_type(data, ${fieldPath(field)})`;
12
+ /** The SQL of a field's JSON value. */
13
+ export const valueOf = (field) => `json_extract(data, ${fieldPath(field)})`;
14
+ /** The index's SQLite name: the same for the same extension, collection, and fields. */
15
+ export function indexName(index) {
16
+ const digest = createHash('sha256').update(JSON.stringify([index.extension, index.collection, index.fields])).digest('hex');
17
+ return `${namePrefix}${digest.slice(0, 16)}`;
18
+ }
19
+ /** Every index the extensions declare. */
20
+ export function declaredIndexes(extensions) {
21
+ return extensions.flatMap((extension) => Object.entries(extension.indexes ?? {}).flatMap(([collection, indexes]) => indexes.map((fields) => ({ extension: extension.name, collection, fields }))));
22
+ }
23
+ function createSql(index) {
24
+ const columns = index.fields.flatMap((field) => [typeOf(field), valueOf(field)]).join(', ');
25
+ const owner = `extension = ${sqlText(index.extension)} AND collection = ${sqlText(index.collection)}`;
26
+ return `CREATE INDEX IF NOT EXISTS ${indexName(index)} ON store_documents (extension, scope, collection, ${columns}) WHERE ${owner}`;
27
+ }
28
+ /** Creates the declared indexes that don't exist yet. */
29
+ export function createIndexes(connection, indexes) {
30
+ connection.transaction(() => {
31
+ for (const index of indexes)
32
+ connection.exec(createSql(index));
33
+ }).immediate();
34
+ }
35
+ /** Drops the store indexes that none of `indexes` is; the kernel's other indexes and all data stay. */
36
+ export function dropOtherIndexes(connection, indexes) {
37
+ const kept = new Set(indexes.map(indexName));
38
+ const existing = connection.prepare(`SELECT name FROM sqlite_master WHERE type = 'index' AND tbl_name = 'store_documents' AND name GLOB '${namePrefix}*'`).all();
39
+ connection.transaction(() => {
40
+ for (const { name } of existing)
41
+ if (!kept.has(name))
42
+ connection.exec(`DROP INDEX "${name.replaceAll('"', '""')}"`);
43
+ }).immediate();
44
+ }
45
+ /** The fields of the declared index a filter on `fields` uses: the one with exactly its fields, else the one with the
46
+ * most leading fields that are all in it; `undefined` when none starts with one of them. */
47
+ export function indexFor(declared, fields) {
48
+ const filtered = new Set(fields);
49
+ const exact = declared.find((index) => index.length === filtered.size && index.every((field) => filtered.has(field)));
50
+ if (exact !== undefined)
51
+ return exact;
52
+ const leading = (index) => {
53
+ const outside = index.findIndex((field) => !filtered.has(field));
54
+ return outside === -1 ? index.length : outside;
55
+ };
56
+ return declared.reduce((chosen, index) => (leading(index) > (chosen === undefined ? 0 : leading(chosen)) ? index : chosen), undefined);
57
+ }
58
+ //# sourceMappingURL=indexes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexes.js","sourceRoot":"","sources":["../../src/store/indexes.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
- import type { Store } from '@kvman/sdk';
1
+ import type { Store, StoreIndexes } from '@kvman/sdk';
2
2
  import type { IdGenerator } from '../ids.ts';
3
3
  import type { Connection } from '../storage/database.ts';
4
4
  import { type WriteGuard } from './kv.ts';
5
5
  export type StoreOwner = {
6
6
  extension: string;
7
7
  workspaceId: string;
8
+ indexes?: StoreIndexes;
8
9
  };
9
10
  export declare const globalScope = "";
10
11
  export declare function createStore(connection: Connection, owner: StoreOwner, ids: IdGenerator, beforeWrite?: WriteGuard): Store;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA8B,KAAK,EAAsF,MAAM,YAAY,CAAC;AACxJ,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAK/D,MAAM,MAAM,UAAU,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAIpE,eAAO,MAAM,WAAW,KAAK,CAAC;AAuD9B,wBAAgB,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,GAAE,UAAqB,GAAG,KAAK,CAQlI"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA8B,KAAK,EAAE,YAAY,EAAsF,MAAM,YAAY,CAAC;AACtK,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAM/D,MAAM,MAAM,UAAU,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,YAAY,CAAA;CAAE,CAAC;AAI5F,eAAO,MAAM,WAAW,KAAK,CAAC;AAuD9B,wBAAgB,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,GAAE,UAAqB,GAAG,KAAK,CAQlI"}
@@ -20,10 +20,10 @@ function asyncCollection(collection) {
20
20
  delete: async (id) => collection.delete(id),
21
21
  };
22
22
  }
23
- function syncScope(connection, key, ids, beforeWrite) {
23
+ function syncScope(connection, key, ids, beforeWrite, indexes) {
24
24
  return {
25
25
  kv: kvOf(connection, key, beforeWrite),
26
- collection: (name, schema) => collectionOf(connection, key, name, schema, ids, beforeWrite),
26
+ collection: (name, schema) => collectionOf(connection, key, name, schema, ids, beforeWrite, Object.hasOwn(indexes, name) ? (indexes[name] ?? []) : []),
27
27
  };
28
28
  }
29
29
  function asyncScope(scope) {
@@ -37,8 +37,8 @@ function isThenable(value) {
37
37
  }
38
38
  function runTransaction(connection, owner, ids, beforeWrite, fn) {
39
39
  const tx = {
40
- ...syncScope(connection, { extension: owner.extension, scope: owner.workspaceId }, ids, beforeWrite),
41
- global: syncScope(connection, { extension: owner.extension, scope: globalScope }, ids, beforeWrite),
40
+ ...syncScope(connection, { extension: owner.extension, scope: owner.workspaceId }, ids, beforeWrite, owner.indexes ?? {}),
41
+ global: syncScope(connection, { extension: owner.extension, scope: globalScope }, ids, beforeWrite, owner.indexes ?? {}),
42
42
  };
43
43
  // IMMEDIATE takes the write lock at the start, waiting out the busy timeout: a deferred transaction that read first
44
44
  // fails at once with "database is locked" when it writes after another connection committed (WAL's stale snapshot).
@@ -51,8 +51,8 @@ function runTransaction(connection, owner, ids, beforeWrite, fn) {
51
51
  }).immediate();
52
52
  }
53
53
  export function createStore(connection, owner, ids, beforeWrite = anyWrite) {
54
- const workspace = syncScope(connection, { extension: owner.extension, scope: owner.workspaceId }, ids, beforeWrite);
55
- const global = syncScope(connection, { extension: owner.extension, scope: globalScope }, ids, beforeWrite);
54
+ const workspace = syncScope(connection, { extension: owner.extension, scope: owner.workspaceId }, ids, beforeWrite, owner.indexes ?? {});
55
+ const global = syncScope(connection, { extension: owner.extension, scope: globalScope }, ids, beforeWrite, owner.indexes ?? {});
56
56
  return {
57
57
  ...asyncScope(workspace),
58
58
  global: asyncScope(global),
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../src/workers/pool.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,IAAI,EAAgB,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAgB,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAe,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAOpK,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IAC1E,SAAS,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IAClC,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,qBAAqB,GAAG,UAAU,CAAC,CAAC;IAC7D,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,eAAe,CAAC;IACzB,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IACpC,SAAS,IAAI,MAAM,CAAC;IACpB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAwBF,wBAAsB,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAkLzE"}
1
+ {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../src/workers/pool.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,IAAI,EAAgB,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAgB,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAe,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAOpK,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IAC1E,SAAS,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IAClC,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,qBAAqB,GAAG,UAAU,CAAC,CAAC;IAC7D,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,eAAe,CAAC;IACzB,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IACpC,SAAS,IAAI,MAAM,CAAC;IACpB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAwBF,wBAAsB,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAoLzE"}
@@ -41,16 +41,16 @@ export async function startPool(options) {
41
41
  if (worker.running.size === 0)
42
42
  void stopWorker(worker);
43
43
  };
44
+ // The worker running the fewest jobs with a free slot, the earliest started on a tie (ADR 0088, 2).
45
+ const leastBusy = () => workers.reduce((best, worker) => (worker.running.size < options.concurrency && (best === undefined || worker.running.size < best.running.size) ? worker : best), undefined);
44
46
  const drain = () => {
45
- for (const worker of workers) {
46
- while (worker.running.size < options.concurrency && queue.length > 0) {
47
- const queued = queue.shift();
48
- if (queued === undefined)
49
- break;
50
- nextRequest += 1;
51
- worker.running.set(nextRequest, queued.pending);
52
- worker.thread.postMessage({ kind: 'run', requestId: nextRequest, job: queued.job });
53
- }
47
+ for (let worker = leastBusy(); worker !== undefined && queue.length > 0; worker = leastBusy()) {
48
+ const queued = queue.shift();
49
+ if (queued === undefined)
50
+ break;
51
+ nextRequest += 1;
52
+ worker.running.set(nextRequest, queued.pending);
53
+ worker.thread.postMessage({ kind: 'run', requestId: nextRequest, job: queued.job });
54
54
  }
55
55
  };
56
56
  const settle = (worker, requestId, outcome) => {
@@ -1 +1 @@
1
- {"version":3,"file":"pool.js","sourceRoot":"","sources":["../../src/workers/pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pool.js","sourceRoot":"","sources":["../../src/workers/pool.ts"],"names":[],"mappings":"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"}
@@ -129,6 +129,7 @@ export declare const workerSetupSchema: z.ZodObject<{
129
129
  version: z.ZodString;
130
130
  source: z.ZodUnion<readonly [z.ZodLiteral<"bundled">, z.ZodTemplateLiteral<`npm:${string}`>, z.ZodTemplateLiteral<`path:${string}`>]>;
131
131
  revision: z.ZodNumber;
132
+ indexes: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodArray<z.ZodString>>>;
132
133
  }, z.core.$strip>>;
133
134
  languages: z.ZodArray<z.ZodString>;
134
135
  presetSettings: z.ZodRecord<z.ZodString, z.ZodType<import("@kvman/sdk").Json, unknown, z.core.$ZodTypeInternals<import("@kvman/sdk").Json, unknown>>>;
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/workers/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsH,CAAC,EAAE,MAAM,YAAY,CAAC;AAInJ,QAAA,MAAM,iBAAiB;;;;;;;;;6BAGrB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAK5D,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BA2CvB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;iBAa5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;iBASjB,CAAC;AAEH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,eAAO,MAAM,YAAY,iCAAkC,CAAC;AAE5D,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAKzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;iBAGjB,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAG5D,QAAA,MAAM,aAAa;;;;;;;iBAAgJ,CAAC;AAEpK,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAQvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/workers/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0I,CAAC,EAAE,MAAM,YAAY,CAAC;AAIvK,QAAA,MAAM,iBAAiB;;;;;;;;;6BAGrB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAK5D,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BA2CvB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;iBAa5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;iBASjB,CAAC;AAEH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,eAAO,MAAM,YAAY,iCAAkC,CAAC;AAE5D,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAKzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;iBAGjB,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAG5D,QAAA,MAAM,aAAa;;;;;;;iBAAgJ,CAAC;AAEpK,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAQvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { callerSchema, extensionSourceSchema, installSourceSchema, jsonSchema, presetSchema, problemSchema, workspaceSchema, z } from '@kvman/sdk';
1
+ import { callerSchema, extensionSourceSchema, installSourceSchema, jsonSchema, presetSchema, problemSchema, storeIndexesSchema, workspaceSchema, z } from '@kvman/sdk';
2
2
  // The messages between the main thread and a worker, checked on arrival like any other boundary.
3
3
  const secretWriteSchema = z.discriminatedUnion('action', [
4
4
  z.object({ action: z.literal('set'), extension: z.string(), name: z.string(), value: z.string() }),
@@ -54,7 +54,7 @@ export const workerSetupSchema = z.object({
54
54
  home: z.string(),
55
55
  homeFolder: z.string(),
56
56
  database: z.string(),
57
- extensions: z.array(z.object({ name: z.string(), namespace: z.string(), entryUrl: z.string(), version: z.string(), source: extensionSourceSchema, revision: z.number().int() })),
57
+ extensions: z.array(z.object({ name: z.string(), namespace: z.string(), entryUrl: z.string(), version: z.string(), source: extensionSourceSchema, revision: z.number().int(), indexes: storeIndexesSchema })),
58
58
  languages: z.array(z.string()),
59
59
  presetSettings: z.record(z.string(), jsonSchema),
60
60
  logLevel: z.enum(['debug', 'info', 'warn', 'error']),