@procedures/sqlite 0.8.0 → 0.9.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/dist/storage.d.ts CHANGED
@@ -16,11 +16,14 @@
16
16
  * id, and `_storage_versions` has the version of each collection: `<epoch>:<seq>`, as
17
17
  * `InMemoryStorage` has. The epoch stays in the file, so a version stays valid after a restart.
18
18
  * - Each write runs in a transaction. A batch that fails changes nothing.
19
+ * - `query()` runs a JSON selector of `@procedures/client/query` on the rows of one read, under a
20
+ * query policy. `patch()` changes an item in one transaction, so two processes keep the fields
21
+ * of each patch.
19
22
  * - The storages of one file in one process share one database. Thus the storages of two tables
20
23
  * in one file keep the changes of each other.
21
24
  * - A storage that only reads does not make the file.
22
25
  */
23
- import { type CollectionStorage, type Duration, type StorageChanges, type StorageMetadata } from "@procedures/client";
26
+ import { type CollectionStorage, type Duration, type StorageChanges, type StorageMetadata, type StoragePatch, type StorageQueryOptions, type StorageQueryPolicy, type StorageSelector } from "@procedures/client";
24
27
  import { type SqliteEngine, type SqliteEngineName } from "./engines.js";
25
28
  export { MEMORY_PATH, isNodeSqliteAvailable, type SqliteEngine, type SqliteEngineName } from "./engines.js";
26
29
  /** The options of a `SqliteStorage`. */
@@ -63,6 +66,12 @@ export interface SqliteStorageOptions {
63
66
  * @default 5 seconds
64
67
  */
65
68
  busyTimeout?: Duration;
69
+ /**
70
+ * The query policy of `query()` for a call without a policy. The procedure `find` gives the
71
+ * policy of its host.
72
+ * @default DEFAULT_QUERY_POLICY: no `$regex`
73
+ */
74
+ queryPolicy?: StorageQueryPolicy | undefined;
66
75
  }
67
76
  /**
68
77
  * This function gives the name when it is a permitted table name. Else it throws a `TypeError`. The name goes
@@ -90,6 +99,8 @@ export declare class SqliteStorage<T> implements CollectionStorage<T> {
90
99
  /** The engine choice of the options. `getEngine()` gives the engine that the storage uses. */
91
100
  readonly engine: SqliteEngine;
92
101
  private readonly maxTombstones;
102
+ /** The query policy of a call without a policy */
103
+ private readonly queryPolicy;
93
104
  /** The quoted table name, for the SQL text. */
94
105
  private readonly quoted;
95
106
  private readonly opening;
@@ -109,9 +120,21 @@ export declare class SqliteStorage<T> implements CollectionStorage<T> {
109
120
  */
110
121
  getChangesSince(since?: string): Promise<StorageChanges<T>>;
111
122
  find(predicate: (item: T) => boolean): Promise<T[]>;
123
+ /**
124
+ * The entries whose items match the selector, with the order, the skip and the limit of
125
+ * `queryEntries()` (roadmap CLI-14), under the policy of the call or of the options. The storage
126
+ * reads the rows in the order of the entries, and runs the query on them.
127
+ */
128
+ query(selector: StorageSelector, options?: StorageQueryOptions, policy?: StorageQueryPolicy): Promise<Array<[string, T]>>;
112
129
  has(id: string): Promise<boolean>;
113
130
  size(): Promise<number>;
114
131
  set(id: string, value: T): Promise<void>;
132
+ /**
133
+ * This method changes the item of the id in one transaction (a JSON Merge Patch, or the
134
+ * operations `$set` and `$unset`), and gives a copy of the new item. A missing id stays missing,
135
+ * and the result is undefined. A patch that cannot apply to the item changes nothing.
136
+ */
137
+ patch(id: string, fields: StoragePatch): Promise<T | undefined>;
115
138
  delete(id: string): Promise<boolean>;
116
139
  clear(): Promise<void>;
117
140
  /** This method sets several items in one transaction. When one value is not JSON, nothing changes. */
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
package/dist/storage.js CHANGED
@@ -16,13 +16,17 @@
16
16
  * id, and `_storage_versions` has the version of each collection: `<epoch>:<seq>`, as
17
17
  * `InMemoryStorage` has. The epoch stays in the file, so a version stays valid after a restart.
18
18
  * - Each write runs in a transaction. A batch that fails changes nothing.
19
+ * - `query()` runs a JSON selector of `@procedures/client/query` on the rows of one read, under a
20
+ * query policy. `patch()` changes an item in one transaction, so two processes keep the fields
21
+ * of each patch.
19
22
  * - The storages of one file in one process share one database. Thus the storages of two tables
20
23
  * in one file keep the changes of each other.
21
24
  * - A storage that only reads does not make the file.
22
25
  */
23
26
  import { randomUUID } from "node:crypto";
24
27
  import { resolve } from "node:path";
25
- import { optionalMs } from "@procedures/client";
28
+ import { optionalMs, } from "@procedures/client";
29
+ import { applyPatch, patchProblems, queryEntries } from "@procedures/client/query";
26
30
  import { MEMORY_PATH, checkEngine, openEngine, } from "./engines.js";
27
31
  export { MEMORY_PATH, isNodeSqliteAvailable } from "./engines.js";
28
32
  /** The pattern of a table name: a letter, then letters, digits and underscores. */
@@ -326,6 +330,8 @@ export class SqliteStorage {
326
330
  /** The engine choice of the options. `getEngine()` gives the engine that the storage uses. */
327
331
  engine;
328
332
  maxTombstones;
333
+ /** The query policy of a call without a policy */
334
+ queryPolicy;
329
335
  /** The quoted table name, for the SQL text. */
330
336
  quoted;
331
337
  opening;
@@ -340,6 +346,7 @@ export class SqliteStorage {
340
346
  const busyTimeoutMs = optionalMs(options.busyTimeout, "busyTimeout") ?? 5000;
341
347
  this.quoted = `"${this.table}"`;
342
348
  this.maxTombstones = Math.max(0, options.maxTombstones ?? 10_000);
349
+ this.queryPolicy = options.queryPolicy;
343
350
  this.opening = this.open(busyTimeoutMs);
344
351
  // An operation gives the error of the open. This handler only stops an unhandled rejection.
345
352
  this.opening.catch(() => undefined);
@@ -393,6 +400,14 @@ export class SqliteStorage {
393
400
  async find(predicate) {
394
401
  return (await this.getAll()).filter((item) => predicate(item));
395
402
  }
403
+ /**
404
+ * The entries whose items match the selector, with the order, the skip and the limit of
405
+ * `queryEntries()` (roadmap CLI-14), under the policy of the call or of the options. The storage
406
+ * reads the rows in the order of the entries, and runs the query on them.
407
+ */
408
+ async query(selector, options, policy) {
409
+ return queryEntries(this.entries(await this.database()), selector, options, policy ?? this.queryPolicy);
410
+ }
396
411
  async has(id) {
397
412
  const db = await this.database();
398
413
  return db.all(`SELECT 1 FROM ${this.quoted} WHERE id = ? LIMIT 1`, [checkId(id)]).length > 0;
@@ -409,6 +424,25 @@ export class SqliteStorage {
409
424
  const text = toJson(checkId(id), value);
410
425
  await this.write((db, next) => this.put(db, id, text, next));
411
426
  }
427
+ /**
428
+ * This method changes the item of the id in one transaction (a JSON Merge Patch, or the
429
+ * operations `$set` and `$unset`), and gives a copy of the new item. A missing id stays missing,
430
+ * and the result is undefined. A patch that cannot apply to the item changes nothing.
431
+ */
432
+ async patch(id, fields) {
433
+ checkId(id);
434
+ const [problem] = patchProblems(fields);
435
+ if (problem !== undefined)
436
+ throw new TypeError(`The patch of ${JSON.stringify(id)} is not correct: ${problem}`);
437
+ return this.write((db, next) => {
438
+ const [row] = db.all(`SELECT value FROM ${this.quoted} WHERE id = ?`, [id]);
439
+ if (row === undefined)
440
+ return undefined;
441
+ const text = toJson(id, applyPatch(JSON.parse(row.value), fields));
442
+ this.put(db, id, text, next);
443
+ return JSON.parse(text);
444
+ });
445
+ }
412
446
  async delete(id) {
413
447
  checkId(id);
414
448
  return this.write((db, next) => this.remove(db, id, next));
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "@procedures/sqlite",
4
- "version": "0.8.0",
4
+ "version": "0.9.0",
5
5
  "description": "SQLite procedures with sql.js and no native build: queries, tables and schemas, transactions, migrations, backups and structured logs, safe for concurrent writes, and SqliteStorage, a durable collection storage with a change log on node:sqlite or sql.js.",
6
6
  "keywords": [
7
7
  "sqlite",
@@ -66,14 +66,14 @@
66
66
  },
67
67
  "dependencies": {
68
68
  "@mark1russell7/docker-sqlite": "^0.1.0",
69
- "@procedures/client": "0.8.0",
69
+ "@procedures/client": "0.9.0",
70
70
  "zod": "^4.6.5"
71
71
  },
72
72
  "devDependencies": {
73
73
  "@mark1russell7/cue": "^1.0.0",
74
- "@procedures/collections": "0.8.0",
75
- "@procedures/fs": "0.8.0",
76
- "@procedures/store": "0.8.0",
74
+ "@procedures/collections": "0.9.0",
75
+ "@procedures/fs": "0.9.0",
76
+ "@procedures/store": "0.9.0",
77
77
  "@types/node": "^22.0.0",
78
78
  "typescript": "^7.0.2",
79
79
  "vitest": "^5.0.3"
package/src/storage.ts CHANGED
@@ -16,6 +16,9 @@
16
16
  * id, and `_storage_versions` has the version of each collection: `<epoch>:<seq>`, as
17
17
  * `InMemoryStorage` has. The epoch stays in the file, so a version stays valid after a restart.
18
18
  * - Each write runs in a transaction. A batch that fails changes nothing.
19
+ * - `query()` runs a JSON selector of `@procedures/client/query` on the rows of one read, under a
20
+ * query policy. `patch()` changes an item in one transaction, so two processes keep the fields
21
+ * of each patch.
19
22
  * - The storages of one file in one process share one database. Thus the storages of two tables
20
23
  * in one file keep the changes of each other.
21
24
  * - A storage that only reads does not make the file.
@@ -23,7 +26,18 @@
23
26
 
24
27
  import { randomUUID } from "node:crypto";
25
28
  import { resolve } from "node:path";
26
- import { optionalMs, type CollectionStorage, type Duration, type StorageChanges, type StorageMetadata } from "@procedures/client";
29
+ import {
30
+ optionalMs,
31
+ type CollectionStorage,
32
+ type Duration,
33
+ type StorageChanges,
34
+ type StorageMetadata,
35
+ type StoragePatch,
36
+ type StorageQueryOptions,
37
+ type StorageQueryPolicy,
38
+ type StorageSelector,
39
+ } from "@procedures/client";
40
+ import { applyPatch, patchProblems, queryEntries } from "@procedures/client/query";
27
41
  import {
28
42
  MEMORY_PATH,
29
43
  checkEngine,
@@ -78,6 +92,12 @@ export interface SqliteStorageOptions {
78
92
  * @default 5 seconds
79
93
  */
80
94
  busyTimeout?: Duration;
95
+ /**
96
+ * The query policy of `query()` for a call without a policy. The procedure `find` gives the
97
+ * policy of its host.
98
+ * @default DEFAULT_QUERY_POLICY: no `$regex`
99
+ */
100
+ queryPolicy?: StorageQueryPolicy | undefined;
81
101
  }
82
102
 
83
103
  /** The pattern of a table name: a letter, then letters, digits and underscores. */
@@ -415,6 +435,8 @@ export class SqliteStorage<T> implements CollectionStorage<T> {
415
435
  /** The engine choice of the options. `getEngine()` gives the engine that the storage uses. */
416
436
  readonly engine: SqliteEngine;
417
437
  private readonly maxTombstones: number;
438
+ /** The query policy of a call without a policy */
439
+ private readonly queryPolicy: StorageQueryPolicy | undefined;
418
440
  /** The quoted table name, for the SQL text. */
419
441
  private readonly quoted: string;
420
442
  private readonly opening: Promise<SharedDatabase>;
@@ -430,6 +452,7 @@ export class SqliteStorage<T> implements CollectionStorage<T> {
430
452
  const busyTimeoutMs = optionalMs(options.busyTimeout, "busyTimeout") ?? 5000;
431
453
  this.quoted = `"${this.table}"`;
432
454
  this.maxTombstones = Math.max(0, options.maxTombstones ?? 10_000);
455
+ this.queryPolicy = options.queryPolicy;
433
456
  this.opening = this.open(busyTimeoutMs);
434
457
  // An operation gives the error of the open. This handler only stops an unhandled rejection.
435
458
  this.opening.catch(() => undefined);
@@ -494,6 +517,15 @@ export class SqliteStorage<T> implements CollectionStorage<T> {
494
517
  return (await this.getAll()).filter((item) => predicate(item));
495
518
  }
496
519
 
520
+ /**
521
+ * The entries whose items match the selector, with the order, the skip and the limit of
522
+ * `queryEntries()` (roadmap CLI-14), under the policy of the call or of the options. The storage
523
+ * reads the rows in the order of the entries, and runs the query on them.
524
+ */
525
+ async query(selector: StorageSelector, options?: StorageQueryOptions, policy?: StorageQueryPolicy): Promise<Array<[string, T]>> {
526
+ return queryEntries(this.entries(await this.database()), selector, options, policy ?? this.queryPolicy);
527
+ }
528
+
497
529
  async has(id: string): Promise<boolean> {
498
530
  const db = await this.database();
499
531
  return db.all(`SELECT 1 FROM ${this.quoted} WHERE id = ? LIMIT 1`, [checkId(id)]).length > 0;
@@ -514,6 +546,24 @@ export class SqliteStorage<T> implements CollectionStorage<T> {
514
546
  await this.write((db, next) => this.put(db, id, text, next));
515
547
  }
516
548
 
549
+ /**
550
+ * This method changes the item of the id in one transaction (a JSON Merge Patch, or the
551
+ * operations `$set` and `$unset`), and gives a copy of the new item. A missing id stays missing,
552
+ * and the result is undefined. A patch that cannot apply to the item changes nothing.
553
+ */
554
+ async patch(id: string, fields: StoragePatch): Promise<T | undefined> {
555
+ checkId(id);
556
+ const [problem] = patchProblems(fields);
557
+ if (problem !== undefined) throw new TypeError(`The patch of ${JSON.stringify(id)} is not correct: ${problem}`);
558
+ return this.write((db, next) => {
559
+ const [row] = db.all<{ value: string }>(`SELECT value FROM ${this.quoted} WHERE id = ?`, [id]);
560
+ if (row === undefined) return undefined;
561
+ const text = toJson(id, applyPatch(JSON.parse(row.value), fields));
562
+ this.put(db, id, text, next);
563
+ return JSON.parse(text) as T;
564
+ });
565
+ }
566
+
517
567
  async delete(id: string): Promise<boolean> {
518
568
  checkId(id);
519
569
  return this.write((db, next) => this.remove(db, id, next));