@kvman/kernel 0.4.3 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ctx/extension-ctx.d.ts +2 -2
- package/dist/ctx/extension-ctx.d.ts.map +1 -1
- package/dist/ctx/extension-ctx.js +2 -2
- package/dist/ctx/extension-ctx.js.map +1 -1
- package/dist/extensions/trust.js +1 -1
- package/dist/extensions/trust.js.map +1 -1
- package/dist/jobs/dispatcher.d.ts +2 -1
- package/dist/jobs/dispatcher.d.ts.map +1 -1
- package/dist/jobs/dispatcher.js +50 -12
- package/dist/jobs/dispatcher.js.map +1 -1
- package/dist/jobs/job-rows.js +1 -1
- package/dist/jobs/job-rows.js.map +1 -1
- package/dist/kernel.d.ts.map +1 -1
- package/dist/kernel.js +4 -2
- package/dist/kernel.js.map +1 -1
- package/dist/reload/folder-tree.d.ts +15 -0
- package/dist/reload/folder-tree.d.ts.map +1 -0
- package/dist/reload/folder-tree.js +61 -0
- package/dist/reload/folder-tree.js.map +1 -0
- package/dist/reload/watcher.d.ts +6 -1
- package/dist/reload/watcher.d.ts.map +1 -1
- package/dist/reload/watcher.js +14 -20
- package/dist/reload/watcher.js.map +1 -1
- package/dist/run/extension-run.d.ts +5 -0
- package/dist/run/extension-run.d.ts.map +1 -1
- package/dist/run/extension-run.js +21 -1
- package/dist/run/extension-run.js.map +1 -1
- package/dist/storage/database.d.ts +2 -0
- package/dist/storage/database.d.ts.map +1 -1
- package/dist/storage/database.js +4 -0
- package/dist/storage/database.js.map +1 -1
- package/dist/store/collections.d.ts +1 -1
- package/dist/store/collections.d.ts.map +1 -1
- package/dist/store/collections.js +17 -5
- package/dist/store/collections.js.map +1 -1
- package/dist/store/filters.d.ts +1 -0
- package/dist/store/filters.d.ts.map +1 -1
- package/dist/store/filters.js +9 -10
- package/dist/store/filters.js.map +1 -1
- package/dist/store/indexes.d.ts +29 -0
- package/dist/store/indexes.d.ts.map +1 -0
- package/dist/store/indexes.js +58 -0
- package/dist/store/indexes.js.map +1 -0
- package/dist/store/store.d.ts +2 -1
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +6 -6
- package/dist/store/store.js.map +1 -1
- package/dist/workers/pool.d.ts.map +1 -1
- package/dist/workers/pool.js +9 -9
- package/dist/workers/pool.js.map +1 -1
- package/dist/workers/protocol.d.ts +1 -0
- package/dist/workers/protocol.d.ts.map +1 -1
- package/dist/workers/protocol.js +2 -2
- package/dist/workers/protocol.js.map +1 -1
- package/dist/workers/worker-main.js +1 -1
- package/dist/workers/worker-main.js.map +1 -1
- package/dist/workspaces/workspaces.js +2 -2
- package/dist/workspaces/workspaces.js.map +1 -1
- 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;
|
|
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(() =>
|
|
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":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,cAAc,EAA6C,MAAM,4BAA4B,CAAC;AACtH,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAqC,MAAM,6BAA6B,CAAC;AAElH,OAAO,EAAE,SAAS,EAAqC,MAAM,oBAAoB,CAAC;
|
|
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"}
|
package/dist/storage/database.js
CHANGED
|
@@ -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;
|
|
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
|
|
39
|
-
|
|
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
|
|
44
|
-
|
|
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;
|
|
1
|
+
{"version":3,"file":"collections.js","sourceRoot":"","sources":["../../src/store/collections.ts"],"names":[],"mappings":"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"}
|
package/dist/store/filters.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/store/filters.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/store/filters.js
CHANGED
|
@@ -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
|
-
|
|
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:
|
|
16
|
+
return { sql: `${typeOf(field)} = 'null'`, values: [] };
|
|
19
17
|
if (typeof value === 'boolean')
|
|
20
|
-
return { sql:
|
|
18
|
+
return { sql: `${typeOf(field)} = '${value ? 'true' : 'false'}'`, values: [] };
|
|
21
19
|
if (typeof value === 'number')
|
|
22
|
-
return { sql:
|
|
23
|
-
return { sql:
|
|
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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,8FAA8F;AAE9F,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAE3G,MAAM,iBAAiB,GAAG,CAAC,CAAC,YAAY,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACxD,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAIH,
|
|
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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"}
|
package/dist/store/store.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/store/store.js
CHANGED
|
@@ -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),
|
package/dist/store/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAkC,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAkC,MAAM,SAAS,CAAC;AAQ/D,MAAM,QAAQ,GAAe,GAAG,EAAE,CAAC,SAAS,CAAC;AAE7C,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAE9B,SAAS,OAAO,CAAC,EAAiB;IAChC,OAAO;QACL,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;QAC/B,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;QAC7C,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;KACtC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAA8B,UAA2C;IAC/F,OAAO;QACL,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;QACvD,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;QACjE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;QACjD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC;QACzD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,UAAsB,EAAE,GAAa,EAAE,GAAgB,EAAE,WAAuB,EAAE,OAAqB;IACxH,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,WAAW,CAAC;QACtC,UAAU,EAAE,CAA8B,IAAY,EAAE,MAA2B,EAAE,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACjN,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAuB;IACzC,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,UAAU,EAAE,CAA8B,IAAY,EAAE,MAA2B,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KACxI,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC;AAC5G,CAAC;AAED,SAAS,cAAc,CAAS,UAAsB,EAAE,KAAiB,EAAE,GAAgB,EAAE,WAAuB,EAAE,EAA+B;IACnJ,MAAM,EAAE,GAAgB;QACtB,GAAG,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QACzH,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;KACzH,CAAC;IACF,oHAAoH;IACpH,oHAAoH;IACpH,OAAO,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE;QACjC,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACtB,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,MAAM,aAAa,CAAC,mBAAmB,EAAE,2FAA2F,CAAC,CAAC;QACxI,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,UAAsB,EAAE,KAAiB,EAAE,GAAgB,EAAE,cAA0B,QAAQ;IACzH,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACzI,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAChI,OAAO;QACL,GAAG,UAAU,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC;QAC1B,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,CAAC;KACnF,CAAC;AACJ,CAAC"}
|
|
@@ -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,
|
|
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"}
|
package/dist/workers/pool.js
CHANGED
|
@@ -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 (
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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) => {
|
package/dist/workers/pool.js.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/workers/protocol.js
CHANGED
|
@@ -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']),
|