@procedures/store 0.43.0 → 0.45.0
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/CHANGELOG.md +28 -0
- package/README.md +63 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/indexeddb/idb.d.ts +2 -1
- package/dist/indexeddb/idb.d.ts.map +1 -1
- package/dist/indexeddb/idb.js +2 -1
- package/dist/indexeddb/idb.js.map +1 -1
- package/dist/indexeddb/program-store.d.ts +7 -3
- package/dist/indexeddb/program-store.d.ts.map +1 -1
- package/dist/indexeddb/program-store.js +28 -6
- package/dist/indexeddb/program-store.js.map +1 -1
- package/dist/indexeddb.d.ts +1 -1
- package/dist/indexeddb.d.ts.map +1 -1
- package/dist/program-store/collection.d.ts +13 -4
- package/dist/program-store/collection.d.ts.map +1 -1
- package/dist/program-store/collection.js +29 -6
- package/dist/program-store/collection.js.map +1 -1
- package/dist/program-store/file.d.ts +7 -3
- package/dist/program-store/file.d.ts.map +1 -1
- package/dist/program-store/file.js +18 -5
- package/dist/program-store/file.js.map +1 -1
- package/dist/program-store/index.d.ts +4 -2
- package/dist/program-store/index.d.ts.map +1 -1
- package/dist/program-store/index.js +2 -1
- package/dist/program-store/index.js.map +1 -1
- package/dist/program-store/memory.d.ts +7 -4
- package/dist/program-store/memory.d.ts.map +1 -1
- package/dist/program-store/memory.js +12 -5
- package/dist/program-store/memory.js.map +1 -1
- package/dist/program-store/procedures.d.ts +6 -1
- package/dist/program-store/procedures.d.ts.map +1 -1
- package/dist/program-store/procedures.js +4 -2
- package/dist/program-store/procedures.js.map +1 -1
- package/dist/program-store/programs.d.ts +110 -0
- package/dist/program-store/programs.d.ts.map +1 -0
- package/dist/program-store/programs.js +202 -0
- package/dist/program-store/programs.js.map +1 -0
- package/dist/program-store/types.d.ts +53 -4
- package/dist/program-store/types.d.ts.map +1 -1
- package/dist/program-store/types.js +51 -0
- package/dist/program-store/types.js.map +1 -1
- package/package.json +4 -4
- package/src/indexeddb/idb.ts +3 -2
- package/src/indexeddb/program-store.ts +36 -6
- package/src/indexeddb.ts +1 -1
- package/src/program-store/collection.ts +39 -6
- package/src/program-store/file.ts +30 -5
- package/src/program-store/index.ts +12 -2
- package/src/program-store/memory.ts +20 -5
- package/src/program-store/procedures.ts +4 -2
- package/src/program-store/programs.ts +307 -0
- package/src/program-store/types.ts +85 -4
package/dist/indexeddb/idb.d.ts
CHANGED
|
@@ -165,8 +165,9 @@ export declare class IdbStoreConnection {
|
|
|
165
165
|
* This method runs work in one transaction. The work makes the requests, and it gives a function that reads
|
|
166
166
|
* their results. The promise resolves after the transaction commits, so a write is durable when
|
|
167
167
|
* the promise resolves. An error of a request aborts the transaction: each request is undone.
|
|
168
|
+
* The work gets `fail` too: a call of it aborts the transaction with its error.
|
|
168
169
|
*/
|
|
169
|
-
run<R>(mode: "readonly" | "readwrite", work: (store: IdbObjectStoreLike) => () => R): Promise<R>;
|
|
170
|
+
run<R>(mode: "readonly" | "readwrite", work: (store: IdbObjectStoreLike, fail: (error: unknown) => void) => () => R): Promise<R>;
|
|
170
171
|
/** This method closes the connection. A later operation throws. */
|
|
171
172
|
close(): Promise<void>;
|
|
172
173
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idb.d.ts","sourceRoot":"","sources":["../../src/indexeddb/idb.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"idb.d.ts","sourceRoot":"","sources":["../../src/indexeddb/idb.ts"],"names":[],"mappings":"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"}
|
package/dist/indexeddb/idb.js
CHANGED
|
@@ -203,9 +203,10 @@ export class IdbStoreConnection {
|
|
|
203
203
|
* This method runs work in one transaction. The work makes the requests, and it gives a function that reads
|
|
204
204
|
* their results. The promise resolves after the transaction commits, so a write is durable when
|
|
205
205
|
* the promise resolves. An error of a request aborts the transaction: each request is undone.
|
|
206
|
+
* The work gets `fail` too: a call of it aborts the transaction with its error.
|
|
206
207
|
*/
|
|
207
208
|
run(mode, work) {
|
|
208
|
-
return this.connection.transaction(mode, [this.store], (transaction) => work(transaction.objectStore(this.store)));
|
|
209
|
+
return this.connection.transaction(mode, [this.store], (transaction, fail) => work(transaction.objectStore(this.store), fail));
|
|
209
210
|
}
|
|
210
211
|
/** This method closes the connection. A later operation throws. */
|
|
211
212
|
close() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idb.js","sourceRoot":"","sources":["../../src/indexeddb/idb.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"idb.js","sourceRoot":"","sources":["../../src/indexeddb/idb.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,12 @@
|
|
|
5
5
|
* as the key of its record. IndexedDB keeps a structured clone of each record, so a caller that
|
|
6
6
|
* changes a result does not change the store. The store checks each record that it reads: the
|
|
7
7
|
* database of a browser can hold records of an older version or of another application.
|
|
8
|
+
*
|
|
9
|
+
* The version of a record is a counter. Each put gives one more than the highest version in the
|
|
10
|
+
* store, in the transaction of the write. The database has no field for a counter. Thus after a
|
|
11
|
+
* delete of the record with the highest version, a later put can give that version again.
|
|
8
12
|
*/
|
|
9
|
-
import { type ProgramStore, type StoredProgram } from "../program-store/types.js";
|
|
13
|
+
import { type ProgramStore, type ProgramWriteOptions, type StoredProgram } from "../program-store/types.js";
|
|
10
14
|
import { type IndexedDbOptions } from "./idb.js";
|
|
11
15
|
/** The default name of the database of the programs. */
|
|
12
16
|
export declare const DEFAULT_PROGRAM_DATABASE = "procedures-programs";
|
|
@@ -34,8 +38,8 @@ export declare class IndexedDbProgramStore implements ProgramStore {
|
|
|
34
38
|
get name(): string;
|
|
35
39
|
get(key: string): Promise<StoredProgram | undefined>;
|
|
36
40
|
list(prefix?: string): Promise<StoredProgram[]>;
|
|
37
|
-
put(program: StoredProgram): Promise<void>;
|
|
38
|
-
delete(key: string): Promise<boolean>;
|
|
41
|
+
put(program: StoredProgram, options?: ProgramWriteOptions): Promise<void>;
|
|
42
|
+
delete(key: string, options?: ProgramWriteOptions): Promise<boolean>;
|
|
39
43
|
/** This method closes the database. The programs stay in it. */
|
|
40
44
|
close(): Promise<void>;
|
|
41
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program-store.d.ts","sourceRoot":"","sources":["../../src/indexeddb/program-store.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"program-store.d.ts","sourceRoot":"","sources":["../../src/indexeddb/program-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAgC,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE/E,wDAAwD;AACxD,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAE9D;;;;;;;;;;;GAWG;AACH,qBAAa,qBAAsB,YAAW,YAAY;IACxD,QAAQ,CAAC,IAAI,eAAe;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAEhD;;;OAGG;IACH,YAAY,IAAI,GAAE,MAAiC,EAAE,OAAO,GAAE,gBAAqB,EAElF;IAED,gCAAgC;IAChC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAKnD;IAED,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAK9C;IAEK,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAW9E;IAED,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBnE;IAED,gEAAgE;IAChE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAErB;CACF"}
|
|
@@ -5,9 +5,13 @@
|
|
|
5
5
|
* as the key of its record. IndexedDB keeps a structured clone of each record, so a caller that
|
|
6
6
|
* changes a result does not change the store. The store checks each record that it reads: the
|
|
7
7
|
* database of a browser can hold records of an older version or of another application.
|
|
8
|
+
*
|
|
9
|
+
* The version of a record is a counter. Each put gives one more than the highest version in the
|
|
10
|
+
* store, in the transaction of the write. The database has no field for a counter. Thus after a
|
|
11
|
+
* delete of the record with the highest version, a later put can give that version again.
|
|
8
12
|
*/
|
|
9
|
-
import { byKey, checkStoredProgram, keyMatches } from "../program-store/types.js";
|
|
10
|
-
import { IdbStoreConnection } from "./idb.js";
|
|
13
|
+
import { byKey, checkProgramVersion, checkStoredProgram, keyMatches, nextCounterVersion, } from "../program-store/types.js";
|
|
14
|
+
import { IdbStoreConnection, onResult } from "./idb.js";
|
|
11
15
|
/** The default name of the database of the programs. */
|
|
12
16
|
export const DEFAULT_PROGRAM_DATABASE = "procedures-programs";
|
|
13
17
|
/**
|
|
@@ -48,14 +52,32 @@ export class IndexedDbProgramStore {
|
|
|
48
52
|
return () => byKey(request.result.map((record) => checkStoredProgram(record)).filter((program) => keyMatches(program.key, prefix)));
|
|
49
53
|
});
|
|
50
54
|
}
|
|
51
|
-
async put(program) {
|
|
55
|
+
async put(program, options) {
|
|
52
56
|
const checked = checkStoredProgram(structuredClone(program));
|
|
53
|
-
await this.connection.run("readwrite", (store) => {
|
|
54
|
-
|
|
57
|
+
await this.connection.run("readwrite", (store, fail) => {
|
|
58
|
+
// The read, the test and the write are one transaction: another tab cannot write between them
|
|
59
|
+
onResult(store.getAll(), fail, (records) => {
|
|
60
|
+
const programs = records.map((record) => checkStoredProgram(record));
|
|
61
|
+
checkProgramVersion(checked.key, programs.find((current) => current.key === checked.key), options);
|
|
62
|
+
store.put({ ...checked, version: nextCounterVersion(0, programs) });
|
|
63
|
+
});
|
|
55
64
|
return () => undefined;
|
|
56
65
|
});
|
|
57
66
|
}
|
|
58
|
-
delete(key) {
|
|
67
|
+
delete(key, options) {
|
|
68
|
+
if (options?.expectedVersion !== undefined) {
|
|
69
|
+
return this.connection.run("readwrite", (store, fail) => {
|
|
70
|
+
let existed = false;
|
|
71
|
+
onResult(store.get(key), fail, (record) => {
|
|
72
|
+
const current = record === undefined ? undefined : checkStoredProgram(record);
|
|
73
|
+
checkProgramVersion(key, current, options);
|
|
74
|
+
existed = current !== undefined;
|
|
75
|
+
if (existed)
|
|
76
|
+
store.delete(key);
|
|
77
|
+
});
|
|
78
|
+
return () => existed;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
59
81
|
return this.connection.run("readwrite", (store) => {
|
|
60
82
|
// The requests of one transaction run in order: the count sees the record before the delete
|
|
61
83
|
const count = store.count(key);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program-store.js","sourceRoot":"","sources":["../../src/indexeddb/program-store.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"program-store.js","sourceRoot":"","sources":["../../src/indexeddb/program-store.ts"],"names":[],"mappings":"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"}
|
package/dist/indexeddb.d.ts
CHANGED
|
@@ -24,6 +24,6 @@ export { MemoryProgramStore } from "./program-store/memory.js";
|
|
|
24
24
|
export { MemoryQueueStore } from "./storage/queue.js";
|
|
25
25
|
export { MemorySyncStateStore } from "./storage/sync-state.js";
|
|
26
26
|
export type { SyncState, SyncStateChange, SyncStateStore } from "./storage/sync-state.js";
|
|
27
|
-
export type { ProgramStore, StoredProgram } from "./program-store/types.js";
|
|
27
|
+
export type { ProgramStore, ProgramWriteOptions, StoredProgram } from "./program-store/types.js";
|
|
28
28
|
export type { QueuedOperation, QueueStore } from "./storage/queue.js";
|
|
29
29
|
//# sourceMappingURL=indexeddb.d.ts.map
|
package/dist/indexeddb.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexeddb.d.ts","sourceRoot":"","sources":["../src/indexeddb.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC1F,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"indexeddb.d.ts","sourceRoot":"","sources":["../src/indexeddb.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC1F,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACjG,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -2,18 +2,27 @@
|
|
|
2
2
|
* A program store on a collection storage: `InMemoryStorage` of client-collections, or a remote
|
|
3
3
|
* one, `ApiStorage` (the collection procedures of a server) or `HybridStorage` (a local cache with
|
|
4
4
|
* a remote copy). The key of each record is the key of the program.
|
|
5
|
+
*
|
|
6
|
+
* The version of a record is a revision string: a counter and a random part, for example
|
|
7
|
+
* `"3-k2j9x0aq"`. The storage tests `expectedVersion` itself, with its own `versionOf`, in one
|
|
8
|
+
* step with the write. So give the storage the option `versionOf: storedProgramVersion`. A storage
|
|
9
|
+
* without `versionOf` rejects a write with `expectedVersion` (a `TypeError`). It accepts a write
|
|
10
|
+
* without `expectedVersion`.
|
|
5
11
|
*/
|
|
6
12
|
import type { CollectionStorage } from "@procedures/client";
|
|
7
|
-
import { type ProgramStore, type StoredProgram } from "./types.js";
|
|
13
|
+
import { type ProgramStore, type ProgramWriteOptions, type StoredProgram } from "./types.js";
|
|
8
14
|
export declare class CollectionProgramStore implements ProgramStore {
|
|
9
15
|
private readonly storage;
|
|
10
16
|
readonly kind = "collection";
|
|
11
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* @param storage - The storage of the records. The store closes it in `close()`. Give it the
|
|
19
|
+
* option `versionOf: storedProgramVersion`, so that it can test `expectedVersion`.
|
|
20
|
+
*/
|
|
12
21
|
constructor(storage: CollectionStorage<StoredProgram>);
|
|
13
22
|
get(key: string): Promise<StoredProgram | undefined>;
|
|
14
23
|
list(prefix?: string): Promise<StoredProgram[]>;
|
|
15
|
-
put(program: StoredProgram): Promise<void>;
|
|
16
|
-
delete(key: string): Promise<boolean>;
|
|
24
|
+
put(program: StoredProgram, options?: ProgramWriteOptions): Promise<void>;
|
|
25
|
+
delete(key: string, options?: ProgramWriteOptions): Promise<boolean>;
|
|
17
26
|
close(): Promise<void>;
|
|
18
27
|
}
|
|
19
28
|
//# sourceMappingURL=collection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../src/program-store/collection.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../src/program-store/collection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAapB,qBAAa,sBAAuB,YAAW,YAAY;IAO7C,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,QAAQ,CAAC,IAAI,gBAAgB;IAE7B;;;OAGG;IACH,YAA6B,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAAI;IAEpE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAIzD;IAEK,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAGpD;IAEK,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAO9E;IAEK,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAGzE;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;CACF"}
|
|
@@ -2,12 +2,30 @@
|
|
|
2
2
|
* A program store on a collection storage: `InMemoryStorage` of client-collections, or a remote
|
|
3
3
|
* one, `ApiStorage` (the collection procedures of a server) or `HybridStorage` (a local cache with
|
|
4
4
|
* a remote copy). The key of each record is the key of the program.
|
|
5
|
+
*
|
|
6
|
+
* The version of a record is a revision string: a counter and a random part, for example
|
|
7
|
+
* `"3-k2j9x0aq"`. The storage tests `expectedVersion` itself, with its own `versionOf`, in one
|
|
8
|
+
* step with the write. So give the storage the option `versionOf: storedProgramVersion`. A storage
|
|
9
|
+
* without `versionOf` rejects a write with `expectedVersion` (a `TypeError`). It accepts a write
|
|
10
|
+
* without `expectedVersion`.
|
|
5
11
|
*/
|
|
6
|
-
import { byKey, checkStoredProgram, keyMatches } from "./types.js";
|
|
12
|
+
import { byKey, checkStoredProgram, expectedVersionOf, keyMatches, } from "./types.js";
|
|
13
|
+
/** The counter of a revision string: the digits before the dash, or 0. */
|
|
14
|
+
function revisionCounter(version) {
|
|
15
|
+
const counter = Number.parseInt(String(version ?? "0"), 10);
|
|
16
|
+
return Number.isSafeInteger(counter) && counter > 0 ? counter : 0;
|
|
17
|
+
}
|
|
18
|
+
/** A new revision string after a version. The random part makes two writes of one base differ. */
|
|
19
|
+
function nextRevision(version) {
|
|
20
|
+
return `${revisionCounter(version) + 1}-${Math.random().toString(36).slice(2, 10).padEnd(8, "0")}`;
|
|
21
|
+
}
|
|
7
22
|
export class CollectionProgramStore {
|
|
8
23
|
storage;
|
|
9
24
|
kind = "collection";
|
|
10
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* @param storage - The storage of the records. The store closes it in `close()`. Give it the
|
|
27
|
+
* option `versionOf: storedProgramVersion`, so that it can test `expectedVersion`.
|
|
28
|
+
*/
|
|
11
29
|
constructor(storage) {
|
|
12
30
|
this.storage = storage;
|
|
13
31
|
}
|
|
@@ -20,12 +38,17 @@ export class CollectionProgramStore {
|
|
|
20
38
|
const records = await this.storage.getAll();
|
|
21
39
|
return byKey(records.map((record) => checkStoredProgram(structuredClone(record))).filter((p) => keyMatches(p.key, prefix)));
|
|
22
40
|
}
|
|
23
|
-
async put(program) {
|
|
41
|
+
async put(program, options) {
|
|
24
42
|
const checked = checkStoredProgram(structuredClone(program));
|
|
25
|
-
|
|
43
|
+
const expected = expectedVersionOf(options);
|
|
44
|
+
// The expected version is the base of the write. Without it, the current record is the base.
|
|
45
|
+
const base = expected !== undefined ? expected : (await this.storage.get(checked.key))?.version;
|
|
46
|
+
const record = { ...checked, version: nextRevision(base) };
|
|
47
|
+
await this.storage.set(checked.key, record, expected === undefined ? undefined : { expectedVersion: expected });
|
|
26
48
|
}
|
|
27
|
-
async delete(key) {
|
|
28
|
-
|
|
49
|
+
async delete(key, options) {
|
|
50
|
+
const expected = expectedVersionOf(options);
|
|
51
|
+
return expected === undefined ? this.storage.delete(key) : this.storage.delete(key, { expectedVersion: expected });
|
|
29
52
|
}
|
|
30
53
|
async close() {
|
|
31
54
|
await this.storage.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../../src/program-store/collection.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../../src/program-store/collection.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,12 @@
|
|
|
6
6
|
* file (`<file>.lock`), reads, changes and writes the file through a temporary file and a rename,
|
|
7
7
|
* so a reader never sees a part of a write and two writers do not lose each other's programs.
|
|
8
8
|
* A file that is not valid JSON is an error: the store does not write over it.
|
|
9
|
+
*
|
|
10
|
+
* The version of a record is a counter of the file, in the optional field `counter`. Each put takes
|
|
11
|
+
* the next number under the lock, and tests `expectedVersion` under the same lock. A file of an
|
|
12
|
+
* older release has no counter: the highest version of its records starts the count.
|
|
9
13
|
*/
|
|
10
|
-
import { type ProgramStore, type StoredProgram } from "./types.js";
|
|
14
|
+
import { type ProgramStore, type ProgramWriteOptions, type StoredProgram } from "./types.js";
|
|
11
15
|
/**
|
|
12
16
|
* This function runs a file operation again while Windows holds the file for a moment. `FileQueueStore` uses it
|
|
13
17
|
* too.
|
|
@@ -22,8 +26,8 @@ export declare class FileProgramStore implements ProgramStore {
|
|
|
22
26
|
constructor(path: string);
|
|
23
27
|
get(key: string): Promise<StoredProgram | undefined>;
|
|
24
28
|
list(prefix?: string): Promise<StoredProgram[]>;
|
|
25
|
-
put(program: StoredProgram): Promise<void>;
|
|
26
|
-
delete(key: string): Promise<boolean>;
|
|
29
|
+
put(program: StoredProgram, options?: ProgramWriteOptions): Promise<void>;
|
|
30
|
+
delete(key: string, options?: ProgramWriteOptions): Promise<boolean>;
|
|
27
31
|
/** The content of the file. A missing file is an empty store. */
|
|
28
32
|
private read;
|
|
29
33
|
/** Read, change and write the file under the lock. `change` gives false when nothing changed. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/program-store/file.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/program-store/file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AA+BpB;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAUlF;AAED,qBAAa,gBAAiB,YAAW,YAAY;IAMvC,QAAQ,CAAC,IAAI,EAAE,MAAM;IALjC,QAAQ,CAAC,IAAI,UAAU;IACvB,sFAAsF;IACtF,OAAO,CAAC,KAAK,CAAuC;IAEpD,2FAA2F;IAC3F,YAAqB,IAAI,EAAE,MAAM,EAAI;IAE/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAEzD;IAEK,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAEpD;IAEK,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAS9E;IAEK,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CASzE;IAED,iEAAiE;YACnD,IAAI;IAyBlB,iGAAiG;IACjG,OAAO,CAAC,MAAM;YASA,KAAK;IAYnB;;;;OAIG;YACW,QAAQ;IAkCtB,wFAAwF;YAC1E,MAAM;CAOrB"}
|
|
@@ -6,10 +6,14 @@
|
|
|
6
6
|
* file (`<file>.lock`), reads, changes and writes the file through a temporary file and a rename,
|
|
7
7
|
* so a reader never sees a part of a write and two writers do not lose each other's programs.
|
|
8
8
|
* A file that is not valid JSON is an error: the store does not write over it.
|
|
9
|
+
*
|
|
10
|
+
* The version of a record is a counter of the file, in the optional field `counter`. Each put takes
|
|
11
|
+
* the next number under the lock, and tests `expectedVersion` under the same lock. A file of an
|
|
12
|
+
* older release has no counter: the highest version of its records starts the count.
|
|
9
13
|
*/
|
|
10
14
|
import { mkdir, open, readFile, rename, rm, stat, writeFile } from "node:fs/promises";
|
|
11
15
|
import { dirname } from "node:path";
|
|
12
|
-
import { byKey, checkStoredProgram, keyMatches } from "./types.js";
|
|
16
|
+
import { byKey, checkProgramVersion, checkStoredProgram, keyMatches, nextCounterVersion, } from "./types.js";
|
|
13
17
|
/** A lock older than this belongs to a process that stopped: it is removed. */
|
|
14
18
|
const STALE_LOCK_MS = 10_000;
|
|
15
19
|
/** The longest wait for the lock. */
|
|
@@ -25,6 +29,10 @@ function isContention(error) {
|
|
|
25
29
|
return process.platform === "win32" && (code === "EPERM" || code === "EACCES" || code === "EBUSY");
|
|
26
30
|
}
|
|
27
31
|
const pause = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
32
|
+
/** The program of a key, or undefined. A key such as "constructor" is not a field of the prototype. */
|
|
33
|
+
function ownProgram(file, key) {
|
|
34
|
+
return Object.hasOwn(file.programs, key) ? file.programs[key] : undefined;
|
|
35
|
+
}
|
|
28
36
|
/**
|
|
29
37
|
* This function runs a file operation again while Windows holds the file for a moment. `FileQueueStore` uses it
|
|
30
38
|
* too.
|
|
@@ -57,16 +65,20 @@ export class FileProgramStore {
|
|
|
57
65
|
async list(prefix) {
|
|
58
66
|
return byKey(Object.values((await this.read()).programs).filter((p) => keyMatches(p.key, prefix)));
|
|
59
67
|
}
|
|
60
|
-
async put(program) {
|
|
68
|
+
async put(program, options) {
|
|
61
69
|
const checked = checkStoredProgram(structuredClone(program));
|
|
62
70
|
await this.change((file) => {
|
|
63
|
-
|
|
71
|
+
checkProgramVersion(checked.key, ownProgram(file, checked.key), options);
|
|
72
|
+
const version = nextCounterVersion(file.counter ?? 0, Object.values(file.programs));
|
|
73
|
+
file.counter = version;
|
|
74
|
+
file.programs[checked.key] = { ...checked, version };
|
|
64
75
|
return true;
|
|
65
76
|
});
|
|
66
77
|
}
|
|
67
|
-
async delete(key) {
|
|
78
|
+
async delete(key, options) {
|
|
68
79
|
let deleted = false;
|
|
69
80
|
await this.change((file) => {
|
|
81
|
+
checkProgramVersion(key, ownProgram(file, key), options);
|
|
70
82
|
deleted = Object.hasOwn(file.programs, key);
|
|
71
83
|
if (deleted)
|
|
72
84
|
delete file.programs[key];
|
|
@@ -100,7 +112,8 @@ export class FileProgramStore {
|
|
|
100
112
|
const programs = Object.create(null);
|
|
101
113
|
for (const [key, value] of Object.entries(file.programs))
|
|
102
114
|
programs[key] = checkStoredProgram(value);
|
|
103
|
-
|
|
115
|
+
const counter = typeof file.counter === "number" && Number.isSafeInteger(file.counter) && file.counter > 0 ? file.counter : undefined;
|
|
116
|
+
return counter === undefined ? { schemaVersion: 1, programs } : { schemaVersion: 1, counter, programs };
|
|
104
117
|
}
|
|
105
118
|
/** Read, change and write the file under the lock. `change` gives false when nothing changed. */
|
|
106
119
|
change(change) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/program-store/file.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/program-store/file.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The program store (roadmap 3.2): programs of procedure.define that outlive the process.
|
|
3
3
|
*/
|
|
4
|
-
export type { ProgramStore, StoredProgram } from "./types.js";
|
|
5
|
-
export { checkStoredProgram } from "./types.js";
|
|
4
|
+
export type { ProgramStore, ProgramWriteOptions, StoredProgram } from "./types.js";
|
|
5
|
+
export { checkStoredProgram, storedProgramVersion } from "./types.js";
|
|
6
6
|
export { MemoryProgramStore } from "./memory.js";
|
|
7
7
|
export { FileProgramStore } from "./file.js";
|
|
8
8
|
export { CollectionProgramStore } from "./collection.js";
|
|
9
9
|
export { attachProgramStore, detachProgramStore, getProgramStore } from "./attach.js";
|
|
10
10
|
export { procedureStoreProcedure, procedureLoadProcedure, procedureSyncProcedure, procedureRemoteProcedure, programStoreProcedures, } from "./procedures.js";
|
|
11
|
+
export { createProgramModule, createProgramProcedures } from "./programs.js";
|
|
12
|
+
export type { ProgramGetInput, ProgramListInput, ProgramProceduresOptions, ProgramRemoveInput, ProgramRemoveOutput, ProgramSaveDefinition, ProgramSaveInput, } from "./programs.js";
|
|
11
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/program-store/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/program-store/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC7E,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The program store (roadmap 3.2): programs of procedure.define that outlive the process.
|
|
3
3
|
*/
|
|
4
|
-
export { checkStoredProgram } from "./types.js";
|
|
4
|
+
export { checkStoredProgram, storedProgramVersion } from "./types.js";
|
|
5
5
|
export { MemoryProgramStore } from "./memory.js";
|
|
6
6
|
export { FileProgramStore } from "./file.js";
|
|
7
7
|
export { CollectionProgramStore } from "./collection.js";
|
|
8
8
|
export { attachProgramStore, detachProgramStore, getProgramStore } from "./attach.js";
|
|
9
9
|
export { procedureStoreProcedure, procedureLoadProcedure, procedureSyncProcedure, procedureRemoteProcedure, programStoreProcedures, } from "./procedures.js";
|
|
10
|
+
export { createProgramModule, createProgramProcedures } from "./programs.js";
|
|
10
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/program-store/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/program-store/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* A program store in memory: for tests, and for a process that keeps its programs only while it
|
|
3
3
|
* runs. Each read and write copies the record, so a caller that changes a result does not change
|
|
4
|
-
* the store.
|
|
4
|
+
* the store. The version of a record is a counter of the store: each put takes the next number.
|
|
5
|
+
* Thus a program that is deleted and written again does not get an old version back.
|
|
5
6
|
*/
|
|
6
|
-
import { type ProgramStore, type StoredProgram } from "./types.js";
|
|
7
|
+
import { type ProgramStore, type ProgramWriteOptions, type StoredProgram } from "./types.js";
|
|
7
8
|
export declare class MemoryProgramStore implements ProgramStore {
|
|
8
9
|
readonly kind = "memory";
|
|
9
10
|
private readonly programs;
|
|
11
|
+
/** The last version that a put gave. */
|
|
12
|
+
private counter;
|
|
10
13
|
get(key: string): Promise<StoredProgram | undefined>;
|
|
11
14
|
list(prefix?: string): Promise<StoredProgram[]>;
|
|
12
|
-
put(program: StoredProgram): Promise<void>;
|
|
13
|
-
delete(key: string): Promise<boolean>;
|
|
15
|
+
put(program: StoredProgram, options?: ProgramWriteOptions): Promise<void>;
|
|
16
|
+
delete(key: string, options?: ProgramWriteOptions): Promise<boolean>;
|
|
14
17
|
}
|
|
15
18
|
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/program-store/memory.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/program-store/memory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAEpB,qBAAa,kBAAmB,YAAW,YAAY;IACrD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAC7D,wCAAwC;IACxC,OAAO,CAAC,OAAO,CAAK;IAEd,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAGzD;IAEK,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAEpD;IAEK,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9E;IAEK,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAGzE;CACF"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* A program store in memory: for tests, and for a process that keeps its programs only while it
|
|
3
3
|
* runs. Each read and write copies the record, so a caller that changes a result does not change
|
|
4
|
-
* the store.
|
|
4
|
+
* the store. The version of a record is a counter of the store: each put takes the next number.
|
|
5
|
+
* Thus a program that is deleted and written again does not get an old version back.
|
|
5
6
|
*/
|
|
6
|
-
import { byKey, checkStoredProgram, keyMatches } from "./types.js";
|
|
7
|
+
import { byKey, checkProgramVersion, checkStoredProgram, keyMatches, } from "./types.js";
|
|
7
8
|
export class MemoryProgramStore {
|
|
8
9
|
kind = "memory";
|
|
9
10
|
programs = new Map();
|
|
11
|
+
/** The last version that a put gave. */
|
|
12
|
+
counter = 0;
|
|
10
13
|
async get(key) {
|
|
11
14
|
const program = this.programs.get(key);
|
|
12
15
|
return program ? structuredClone(program) : undefined;
|
|
@@ -14,11 +17,15 @@ export class MemoryProgramStore {
|
|
|
14
17
|
async list(prefix) {
|
|
15
18
|
return byKey([...this.programs.values()].filter((p) => keyMatches(p.key, prefix)).map((p) => structuredClone(p)));
|
|
16
19
|
}
|
|
17
|
-
async put(program) {
|
|
20
|
+
async put(program, options) {
|
|
18
21
|
const checked = checkStoredProgram(structuredClone(program));
|
|
19
|
-
|
|
22
|
+
// The test and the write are one synchronous step
|
|
23
|
+
checkProgramVersion(checked.key, this.programs.get(checked.key), options);
|
|
24
|
+
this.counter++;
|
|
25
|
+
this.programs.set(checked.key, { ...checked, version: this.counter });
|
|
20
26
|
}
|
|
21
|
-
async delete(key) {
|
|
27
|
+
async delete(key, options) {
|
|
28
|
+
checkProgramVersion(key, this.programs.get(key), options);
|
|
22
29
|
return this.programs.delete(key);
|
|
23
30
|
}
|
|
24
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/program-store/memory.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/program-store/memory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,EACL,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,GAIX,MAAM,YAAY,CAAC;AAEpB,MAAM,OAAO,kBAAkB;IACpB,IAAI,GAAG,QAAQ,CAAC;IACR,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC7D,wCAAwC;IAChC,OAAO,GAAG,CAAC,CAAC;IAEpB,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAe;QACxB,OAAO,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAsB,EAAE,OAA6B;QAC7D,MAAM,OAAO,GAAG,kBAAkB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7D,kDAAkD;QAClD,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1E,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,OAA6B;QACrD,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;CACF"}
|
|
@@ -13,7 +13,12 @@
|
|
|
13
13
|
* call only the exposed procedures. Load programs only from a store that you trust: a host with
|
|
14
14
|
* no expose rule runs whatever a program calls.
|
|
15
15
|
*/
|
|
16
|
-
import {
|
|
16
|
+
import { z } from "zod";
|
|
17
|
+
import { type AnyProcedure, type ProcedurePath } from "@procedures/client";
|
|
18
|
+
/** The schema of a path: a list of segments, or a dotted key. `createProgramProcedures` uses it too. */
|
|
19
|
+
export declare const pathField: z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodString]>;
|
|
20
|
+
/** This function gives the path of a path field: a dotted key becomes a list of segments. */
|
|
21
|
+
export declare function toPath(path: ProcedurePath | string): ProcedurePath;
|
|
17
22
|
export declare const procedureStoreProcedure: AnyProcedure;
|
|
18
23
|
export declare const procedureLoadProcedure: AnyProcedure;
|
|
19
24
|
export declare const procedureSyncProcedure: AnyProcedure;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procedures.d.ts","sourceRoot":"","sources":["../../src/program-store/procedures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"procedures.d.ts","sourceRoot":"","sources":["../../src/program-store/procedures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAOL,KAAK,YAAY,EAGjB,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAS5B,wGAAwG;AACxG,eAAO,MAAM,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAEoB,CAAC;AAEvG,6FAA6F;AAC7F,wBAAgB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,aAAa,CAElE;AA6ED,eAAO,MAAM,uBAAuB,EAAE,YAwB5B,CAAC;AA0BX,eAAO,MAAM,sBAAsB,EAAE,YAqD3B,CAAC;AA2BX,eAAO,MAAM,sBAAsB,EAAE,YA6C3B,CAAC;AAkBX,eAAO,MAAM,wBAAwB,EAAE,YA+B7B,CAAC;AAEX,2CAA2C;AAC3C,eAAO,MAAM,sBAAsB,EAAE,YAAY,EAKhD,CAAC"}
|
|
@@ -20,10 +20,12 @@ import { callerRegistry, getProgramStore, requireProgramStore } from "./attach.j
|
|
|
20
20
|
// =============================================================================
|
|
21
21
|
// Shared
|
|
22
22
|
// =============================================================================
|
|
23
|
-
|
|
23
|
+
/** The schema of a path: a list of segments, or a dotted key. `createProgramProcedures` uses it too. */
|
|
24
|
+
export const pathField = z
|
|
24
25
|
.union([z.array(z.string().min(1)).min(1), z.string().min(1)])
|
|
25
26
|
.describe('The path of the procedure: a list of segments, or a dotted key such as "reports.weekly"');
|
|
26
|
-
function
|
|
27
|
+
/** This function gives the path of a path field: a dotted key becomes a list of segments. */
|
|
28
|
+
export function toPath(path) {
|
|
27
29
|
return typeof path === "string" ? keyToPath(path) : path;
|
|
28
30
|
}
|
|
29
31
|
/**
|