@bodil/bdb 0.1.2 → 0.2.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/README.md ADDED
@@ -0,0 +1,76 @@
1
+ # bdb
2
+
3
+ An easy to use and well typed reactive database for client side web apps. As web
4
+ scale as it gets.
5
+
6
+ ## API Docs
7
+
8
+ Find the API docs here:
9
+
10
+ * [https://js.bodil.lol/projects/bdb/](https://js.bodil.lol/projects/bdb/en/stable/modules.html)
11
+
12
+ ## Overview
13
+
14
+ Big ideas:
15
+
16
+ * In-memory database with optional syncing to permanent storage (usually
17
+ [IndexedDB](https://developer.mozilla.org/en-US/docs/Glossary/IndexedDB)). All
18
+ operations are synchronous, storage happens automatically in the background,
19
+ and it syncs automatically with other browser tabs using the same storage.
20
+ Suitable for managing your application state as well as persistent settings.
21
+
22
+ * Leverages the type system to ensure indices are valid and queries don't use
23
+ indices that don't exist. If you're unsure whether your code is using an
24
+ index, you can remove it, and if the code still type checks, you're good.
25
+
26
+ * Leans on [signals](https://github.com/tc39/proposal-signals) to build reactive
27
+ queries, letting you easily build complex relational queries with live
28
+ results, and, more importantly, makes it easy to reflect your application
29
+ state in your web UI, assuming your web framework understands signals.
30
+
31
+ ## Example
32
+
33
+ ```ts
34
+ import { createTable } from "@bodil/bdb";
35
+
36
+ type MovieStar = {
37
+ name: string;
38
+ powerLevel: number;
39
+ };
40
+
41
+ // Make a table of entries of type `MovieStar` with primary key `name`
42
+ const movieStars = createTable<MovieStar>()
43
+ // with `name` as the primary key
44
+ .withPrimaryIndex(index<MovieStar>().key("name"))
45
+ // and with an additional searchable index for `powerLevel`.
46
+ .withIndex(index<MovieStar>().key("powerLevel"));
47
+
48
+ // Add some movie stars to the table.
49
+ table.add(
50
+ { name: "Joe", powerLevel: 25 },
51
+ { name: "Mike", powerLevel: 15 },
52
+ { name: "Robert", powerLevel: 9001 },
53
+ );
54
+
55
+ // Lookup a movie star by primary key.
56
+ table.get("Joe"); // => { name: "Joe", powerLevel: 25 }
57
+
58
+ // Get all movie stars with `powerLevel` below 9000.
59
+ const query = table.where("powerLevel").below(9000);
60
+ query.toArray().map((i) => i.name); // => ["Joe", "Mike"]
61
+
62
+ // A live query of Robert's power level.
63
+ const robertsPowerLevel = table.signal("Robert")?.map((i) => i.powerLevel);
64
+ robertsPowerLevel.get(); // => 9001
65
+ // He gets more powerful as he fixes the bug!
66
+ table.update("Robert", (robert) => robert.powerLevel++);
67
+ robertsPowerLevel.get(); // => 9002
68
+ ```
69
+
70
+ ## Licence
71
+
72
+ Copyright 2025 Bodil Stokke
73
+
74
+ Licensed under the [European Union Public
75
+ Licence](https://interoperable-europe.ec.europa.eu/collection/eupl/eupl-text-eupl-12)
76
+ version 1.2 or later.
package/dist/backend.d.ts CHANGED
@@ -4,11 +4,23 @@ export type DatabaseBroadcast = {
4
4
  table: string;
5
5
  key: unknown;
6
6
  };
7
+ /**
8
+ * Configuration for IndexedDB backends.
9
+ */
7
10
  export type IndexedDBBackendConfig = {
11
+ /** Name of the IndexedDB database to connect to. */
8
12
  name: string;
13
+ /** Version number of the database. */
9
14
  version: number;
15
+ /**
16
+ * Name of the IndexedDB database table to store our database in. Defaults
17
+ * to `"store"`.
18
+ */
10
19
  table?: string;
11
20
  };
21
+ /**
22
+ * Base class for storage backends.
23
+ */
12
24
  export declare abstract class StorageBackend {
13
25
  readonly name: string;
14
26
  abstract get<A = unknown>(table: string, key: unknown): Promise<A>;
@@ -19,16 +31,44 @@ export declare abstract class StorageBackend {
19
31
  protected constructor(name: string);
20
32
  onBroadcast(callback: (message: DatabaseBroadcast) => void): Disposable | undefined;
21
33
  }
34
+ /**
35
+ * Storage backend using an IndexedDB database.
36
+ *
37
+ * Use {@link IndexedDBBackend.open} to obtain a storage backend connected to
38
+ * the specified IndexedDB database.
39
+ *
40
+ * @example
41
+ * // Connect to the IndexedDB database.
42
+ * const storage = await IndexedDBBackend.open("my-docs", 1);
43
+ * // Declare a document type.
44
+ * type Document = { id: string; value: number };
45
+ * // Create the table.
46
+ * const docs = Table.create<Document>()
47
+ * .withPrimaryKey(index<Document>().key("id"))
48
+ * // Connect the table to our storage.
49
+ * .withStorage(storage);
50
+ * // Wait until the table has finished syncing with the storage.
51
+ * await docs.ready;
52
+ * // Ready for use!
53
+ * docs.add({ id: "Robert", value: 9001 });
54
+ */
22
55
  export declare class IndexedDBBackend extends StorageBackend {
23
56
  private db?;
24
57
  readonly version: number;
25
58
  readonly table: string;
59
+ /**
60
+ * Connect to an IndexedDB database.
61
+ */
26
62
  static open(config: IndexedDBBackendConfig): Promise<IndexedDBBackend>;
27
63
  protected constructor(name: string, version: number, table: string);
28
64
  private open;
29
65
  private transaction;
66
+ /** @internal */
30
67
  get<A = unknown>(table: string, key: unknown): Promise<A>;
68
+ /** @internal */
31
69
  getAll<A = unknown>(table: string): Promise<Array<A>>;
70
+ /** @internal */
32
71
  update(table: string, key: unknown, value: unknown): Promise<void>;
72
+ /** @internal */
33
73
  delete(table: string, key: unknown): Promise<void>;
34
74
  }
package/dist/backend.js CHANGED
@@ -12,6 +12,9 @@ function request(req) {
12
12
  function unpackRecord(record) {
13
13
  return deserialise(record.value);
14
14
  }
15
+ /**
16
+ * Base class for storage backends.
17
+ */
15
18
  export class StorageBackend {
16
19
  constructor(name) {
17
20
  this.name = name;
@@ -23,7 +26,31 @@ export class StorageBackend {
23
26
  return this.broadcast?.on(callback);
24
27
  }
25
28
  }
29
+ /**
30
+ * Storage backend using an IndexedDB database.
31
+ *
32
+ * Use {@link IndexedDBBackend.open} to obtain a storage backend connected to
33
+ * the specified IndexedDB database.
34
+ *
35
+ * @example
36
+ * // Connect to the IndexedDB database.
37
+ * const storage = await IndexedDBBackend.open("my-docs", 1);
38
+ * // Declare a document type.
39
+ * type Document = { id: string; value: number };
40
+ * // Create the table.
41
+ * const docs = Table.create<Document>()
42
+ * .withPrimaryKey(index<Document>().key("id"))
43
+ * // Connect the table to our storage.
44
+ * .withStorage(storage);
45
+ * // Wait until the table has finished syncing with the storage.
46
+ * await docs.ready;
47
+ * // Ready for use!
48
+ * docs.add({ id: "Robert", value: 9001 });
49
+ */
26
50
  export class IndexedDBBackend extends StorageBackend {
51
+ /**
52
+ * Connect to an IndexedDB database.
53
+ */
27
54
  static async open(config) {
28
55
  const c = { ...backendConfigDefaults, ...config };
29
56
  const storage = new IndexedDBBackend(c.name, c.version, c.table);
@@ -69,24 +96,28 @@ export class IndexedDBBackend extends StorageBackend {
69
96
  const result = job(tx.objectStore(this.table)).catch(reject);
70
97
  });
71
98
  }
99
+ /** @internal */
72
100
  async get(table, key) {
73
101
  const value = await this.transaction("readonly", (store) => {
74
102
  return request(store.get([table, key]));
75
103
  });
76
104
  return unpackRecord(value);
77
105
  }
106
+ /** @internal */
78
107
  async getAll(table) {
79
108
  const values = await this.transaction("readonly", (store) => {
80
109
  return request(store.index("table").getAll(table));
81
110
  });
82
111
  return values.map((unpackRecord));
83
112
  }
113
+ /** @internal */
84
114
  async update(table, key, value) {
85
115
  await this.transaction("readwrite", (store) => {
86
116
  return request(store.put({ table, key, value: serialise(value) }));
87
117
  });
88
118
  this.broadcast?.send({ event: "update", table, key });
89
119
  }
120
+ /** @internal */
90
121
  async delete(table, key) {
91
122
  await this.transaction("readwrite", (store) => {
92
123
  return request(store.delete([table, key]));
@@ -1 +1 @@
1
- {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,17 +1,88 @@
1
1
  import type { OrderFn } from "@bodil/core/order";
2
- import { ArrayIndex, CompoundIndex, CustomIndex, PrimitiveIndex, type UnitIndex } from "./indices";
3
- import { Table } from "./table";
2
+ import { ArrayIndex, CompoundIndex, CustomIndex, PrimitiveIndex } from "./indices";
4
3
  import type { ArrayIndexablesOf, CustomIndexablesOf, PrimitiveIndexablesOf } from "./types";
5
4
  export type { Index, ArrayIndex, CompoundIndex, CustomIndex, PrimitiveIndex, UnitIndex, } from "./indices";
6
5
  export type { IndexablePrimitive, ArrayIndexablesOf, CustomIndexablesOf, PrimitiveIndexablesOf, } from "./types";
7
- export type { Table, TableEvent } from "./table";
6
+ export { Table, type TableEvent } from "./table";
8
7
  export type { IndexQuery, ArrayQuery, ChainQuery } from "./query";
9
8
  export type { Broadcaster } from "./broadcast";
10
9
  export type { IndexedDBBackendConfig, DatabaseBroadcast } from "./backend";
11
10
  export { StorageBackend, IndexedDBBackend } from "./backend";
12
- export declare function createTable<A extends object>(): <PI extends UnitIndex<A>>(primaryIndex: PI) => Table<A, PI, PI["record"]>;
13
- export declare function index<A extends object>(): <I extends PrimitiveIndexablesOf<A>>(key: I) => PrimitiveIndex<A, I>;
14
- export declare function timeIndex<A extends object>(): <I extends CustomIndexablesOf<A, Temporal.Instant>>(key: I) => CustomIndex<A, Temporal.Instant, I>;
15
- export declare function arrayIndex<A extends object>(): <I extends ArrayIndexablesOf<A>, L extends A[I] & Array<unknown>>(key: I) => ArrayIndex<A, I, L>;
16
- export declare function compoundIndex<A extends object>(): <I extends PrimitiveIndexablesOf<A>, J extends Exclude<PrimitiveIndexablesOf<A>, I>>(leftKey: I, rightKey: J) => CompoundIndex<A, I, J>;
17
- export declare function customIndex<A extends object, T>(): <I extends CustomIndexablesOf<A, T>>(key: I, orderFn: OrderFn<T>) => CustomIndex<A, T, I>;
11
+ /**
12
+ * Constructor functions for creating an {@link index}.
13
+ * @interface
14
+ */
15
+ export type IndexConstructor<Document extends object> = {
16
+ /**
17
+ * Create an index for a single property on a document.
18
+ *
19
+ * The type of the property needs to match {@link IndexablePrimitive}, ie.
20
+ * it needs to be a string, a number or a bigint. If you need an index for a
21
+ * different value type, use {@link IndexConstructor.custom}.
22
+ *
23
+ * @example
24
+ * type Document = { id: string; value: number };
25
+ * const index = index<Document>().key("id");
26
+ */
27
+ key: <I extends PrimitiveIndexablesOf<Document>>(key: I) => PrimitiveIndex<Document, I>;
28
+ /**
29
+ * Create a compound index for a pair of properties on a document.
30
+ *
31
+ * The types of the properties need to match {@link IndexablePrimitive}, ie.
32
+ * they need to be strings, numbers or bigints.
33
+ *
34
+ * This index matches documents where both properties match the provided
35
+ * pair of values. Partial matches do not count.
36
+ *
37
+ * Whemn a compound index is used as a primary index, the unique key is the
38
+ * value pair, not either of the individual values, so you can have multiple
39
+ * documents with either one of the properties having identical values, but
40
+ * only one document matching any one given value pair.
41
+ *
42
+ * @example
43
+ * type Document = { id: string; value: number };
44
+ * const compoundIndex = index<Document>().keys("id", "value");
45
+ */
46
+ keys: <I extends PrimitiveIndexablesOf<Document>, J extends Exclude<PrimitiveIndexablesOf<Document>, I>>(leftKey: I, rightKey: J) => CompoundIndex<Document, I, J>;
47
+ /**
48
+ * Create an array index for a property on a document.
49
+ *
50
+ * This index works on a property with an array of
51
+ * {@link IndexablePrimitive}s. It will match documents where the lookup
52
+ * value is a member of the array.
53
+ *
54
+ * @example
55
+ * type Document = { id: string; flags: Array<string> };
56
+ * const arrayIndex = index<Document>().array("flags");
57
+ */
58
+ array: <I extends ArrayIndexablesOf<Document>, L extends Document[I] & Array<unknown>>(key: I) => ArrayIndex<Document, I, L>;
59
+ /**
60
+ * Create an index for a {@link Temporal.Instant} property on a document.
61
+ *
62
+ * This works exactly like {@link IndexConstructor.key}, except that it
63
+ * takes a {@link Temporal.Instant} instead of a primitive value.
64
+ */
65
+ time: <I extends CustomIndexablesOf<Document, Temporal.Instant>>(key: I) => CustomIndex<Document, Temporal.Instant, I>;
66
+ /**
67
+ * Create an index with a custom ordering function for a property on a
68
+ * document.
69
+ *
70
+ * This works like {@link IndexConstructor.key}, except that it takes any
71
+ * value rather than just a primitive, as long as you provide an
72
+ * {@link OrderFn | ordering function} for it.
73
+ */
74
+ custom: <T, I extends CustomIndexablesOf<Document, T>>(key: I, orderFn: OrderFn<T>) => CustomIndex<Document, T, I>;
75
+ };
76
+ /**
77
+ * Create an index.
78
+ *
79
+ * This function takes a document type as its type argument, and returns an
80
+ * object with a selection of {@link IndexConstructor}s which allow you to
81
+ * create an index for the given document type.
82
+ *
83
+ * @example
84
+ * type Document = { id: string; timestamp: Temporal.Instant };
85
+ * const idIndex = index<Document>().key("id");
86
+ * const timeIndex = index<Document>().time("timestamp");
87
+ */
88
+ export declare function index<Document extends object>(): IndexConstructor<Document>;
package/dist/index.js CHANGED
@@ -1,23 +1,28 @@
1
1
  import BTree from "sorted-btree";
2
2
  import { ArrayIndex, CompoundIndex, CustomIndex, PrimitiveIndex } from "./indices";
3
- import { Table } from "./table";
3
+ export { Table } from "./table";
4
4
  export { StorageBackend, IndexedDBBackend } from "./backend";
5
- export function createTable() {
6
- return (primaryIndex) => new Table(primaryIndex);
7
- }
5
+ const indexConstructor = Symbol("indexConstructor");
6
+ /**
7
+ * Create an index.
8
+ *
9
+ * This function takes a document type as its type argument, and returns an
10
+ * object with a selection of {@link IndexConstructor}s which allow you to
11
+ * create an index for the given document type.
12
+ *
13
+ * @example
14
+ * type Document = { id: string; timestamp: Temporal.Instant };
15
+ * const idIndex = index<Document>().key("id");
16
+ * const timeIndex = index<Document>().time("timestamp");
17
+ */
8
18
  export function index() {
9
- return (key) => new PrimitiveIndex(key);
10
- }
11
- export function timeIndex() {
12
- return (key) => new CustomIndex(key, () => new BTree(undefined, Temporal.Instant.compare));
13
- }
14
- export function arrayIndex() {
15
- return (key) => new ArrayIndex(key);
16
- }
17
- export function compoundIndex() {
18
- return (leftKey, rightKey) => new CompoundIndex(leftKey, rightKey);
19
- }
20
- export function customIndex() {
21
- return (key, orderFn) => new CustomIndex(key, () => new BTree(undefined, orderFn));
19
+ index[indexConstructor] ??= {
20
+ key: (key) => new PrimitiveIndex(key),
21
+ keys: (leftKey, rightKey) => new CompoundIndex(leftKey, rightKey),
22
+ array: (key) => new ArrayIndex(key),
23
+ time: (key) => new CustomIndex(key, () => new BTree(undefined, Temporal.Instant.compare)),
24
+ custom: (key, orderFn) => new CustomIndex(key, () => new BTree(undefined, orderFn)),
25
+ };
26
+ return index[indexConstructor];
22
27
  }
23
28
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,cAAc,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAkB,MAAM,WAAW,CAAC;AACnG,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAsBhC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7D,MAAM,UAAU,WAAW;IAGvB,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,KAAK;IAGjB,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,SAAS;IAGrB,OAAO,CAAC,GAAG,EAAE,EAAE,CACX,IAAI,WAAW,CACX,GAAG,EACH,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAiC,CAAC,CACjF,CAAC;AACV,CAAC;AAED,MAAM,UAAU,UAAU;IAMtB,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,aAAa;IAOzB,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,WAAW;IAIvB,OAAO,CAAC,GAAG,EAAE,OAAmB,EAAE,EAAE,CAChC,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,OAAiC,CAAC,CAAC,CAAC;AAC5F,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,cAAc,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAiBnF,OAAO,EAAE,KAAK,EAAmB,MAAM,SAAS,CAAC;AAKjD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAqF7D,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,KAAK;IAChB,KAAa,CAAC,gBAAgB,CAAC,KAAK;QACjC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC;QACrC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC;QACjE,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC;QACnC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CACV,IAAI,WAAW,CACX,GAAG,EACH,GAAG,EAAE,CACD,IAAI,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAwC,CAAC,CACtF;QACL,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CACrB,IAAI,WAAW,CACX,GAAG,EACH,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,OAAwC,CAAC,CACvE;KACsB,CAAC;IAChC,OAAQ,KAAa,CAAC,gBAAgB,CAA+B,CAAC;AAC1E,CAAC"}
@@ -4,17 +4,18 @@ import { time } from "@bodil/core";
4
4
  import { sleep } from "@bodil/core/async";
5
5
  import { Signal } from "@bodil/signal";
6
6
  import { expect, expectTypeOf, test } from "vitest";
7
- import { arrayIndex, compoundIndex, createTable, index, timeIndex } from ".";
7
+ import { index, Table } from ".";
8
8
  import { IndexedDBBackend } from "./backend";
9
9
  test("indexable", () => {
10
10
  expectTypeOf().toEqualTypeOf();
11
11
  });
12
12
  test("memdb basics", () => {
13
- const table = createTable()(index()("id"))
14
- .withIndex(timeIndex()("created"))
15
- .withIndex(index()("uri"))
16
- .withIndex(arrayIndex()("tags"))
17
- .withIndex(compoundIndex()("id", "uri"));
13
+ const table = Table.create()
14
+ .withPrimaryIndex(index().key("id"))
15
+ .withIndex(index().time("created"))
16
+ .withIndex(index().key("uri"))
17
+ .withIndex(index().array("tags"))
18
+ .withIndex(index().keys("id", "uri"));
18
19
  const now = time.now();
19
20
  const [welp, wolp, wulp, wilp] = [
20
21
  {
@@ -80,7 +81,9 @@ test("memdb basics", () => {
80
81
  expectTypeOf().toEqualTypeOf();
81
82
  });
82
83
  test("memdb index dupes", () => {
83
- const accounts = createTable()(index()("id")).withIndex(index()("order"));
84
+ const accounts = Table.create()
85
+ .withPrimaryIndex(index().key("id"))
86
+ .withIndex(index().key("order"));
84
87
  const account = { id: "test@test.com", order: 1 };
85
88
  accounts.add({ ...account });
86
89
  expect(accounts.orderBy("order").toArray()).length(1);
@@ -88,8 +91,8 @@ test("memdb index dupes", () => {
88
91
  expect(accounts.orderBy("order").toArray()).length(1);
89
92
  });
90
93
  test("memdb signals", () => {
91
- const things = createTable()(index()("name"));
92
- const thingMaps = createTable()(index()("id"));
94
+ const things = Table.create().withPrimaryIndex(index().key("name"));
95
+ const thingMaps = Table.create().withPrimaryIndex(index().key("id"));
93
96
  thingMaps.add({ id: 1, name: "Mike" }, { id: 2, name: "Robert" });
94
97
  const joe = things.signal("Joe");
95
98
  expect(joe.value).toBeUndefined();
@@ -112,7 +115,7 @@ test("memdb signals", () => {
112
115
  expect(mappedCounter.value).toBeUndefined();
113
116
  });
114
117
  test("failed update shouldn't change anything", () => {
115
- const things = createTable()(index()("name"));
118
+ const things = Table.create().withPrimaryIndex(index().key("name"));
116
119
  things.add({ name: "Joe", counter: 321 });
117
120
  expect(() => things.update("Joe", (item) => {
118
121
  item.counter = 123;
@@ -125,8 +128,9 @@ test("IndexedDB", async () => {
125
128
  const before = now.subtract(time.seconds(25));
126
129
  {
127
130
  const store = await IndexedDBBackend.open({ name: "test", version: 1 });
128
- const things = createTable()(index()("key"))
129
- .withIndex(timeIndex()("time"))
131
+ const things = Table.create()
132
+ .withPrimaryIndex(index().key("key"))
133
+ .withIndex(index().time("time"))
130
134
  .withStorage(store, "things");
131
135
  await things.ready;
132
136
  things.add({ key: "Joe", value: "Armstrong", time: now }, { key: "Robert", value: "Virding", time: before }, { key: "Mike", value: "Williams", time: now });
@@ -139,8 +143,9 @@ test("IndexedDB", async () => {
139
143
  }
140
144
  {
141
145
  const store = await IndexedDBBackend.open({ name: "test", version: 1 });
142
- const things = createTable()(index()("key"))
143
- .withIndex(timeIndex()("time"))
146
+ const things = Table.create()
147
+ .withPrimaryIndex(index().key("key"))
148
+ .withIndex(index().time("time"))
144
149
  .withStorage(store, "things");
145
150
  await things.ready;
146
151
  expect(things.get("Joe")).deep.equal({ key: "Joe", value: "Armstrong", time: now });
@@ -150,4 +155,47 @@ test("IndexedDB", async () => {
150
155
  ]);
151
156
  }
152
157
  });
158
+ test("query.below/query.above", () => {
159
+ const table = Table.create()
160
+ .withPrimaryIndex(index().key("id"))
161
+ .withIndex(index().key("value"));
162
+ table.add({ id: "1", value: 1 }, { id: "2", value: 2 }, { id: "3", value: 3 }, { id: "4", value: 4 }, { id: "5", value: 5 });
163
+ expect(table
164
+ .where("value")
165
+ .below(3)
166
+ .toArray()
167
+ .map((i) => i.value)).toEqual([2, 1]);
168
+ expect(table
169
+ .where("value")
170
+ .below(3)
171
+ .inclusive()
172
+ .toArray()
173
+ .map((i) => i.value)).toEqual([3, 2, 1]);
174
+ expect(table
175
+ .where("value")
176
+ .above(3)
177
+ .toArray()
178
+ .map((i) => i.value)).toEqual([4, 5]);
179
+ expect(table
180
+ .where("value")
181
+ .above(3)
182
+ .inclusive()
183
+ .toArray()
184
+ .map((i) => i.value)).toEqual([3, 4, 5]);
185
+ });
186
+ test("query.delete()", () => {
187
+ const table = Table.create().withPrimaryIndex(index().key("id"));
188
+ for (let id = 0; id < 10; id++) {
189
+ table.add({ id });
190
+ }
191
+ const ids = table
192
+ .where("id")
193
+ .signal()
194
+ .map((docs) => docs.map((doc) => doc.id));
195
+ expect(ids.get()).toEqual([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
196
+ expect(table.where("id").above(5).delete()).toEqual(4);
197
+ expect(Iterator.from(table)
198
+ .map((doc) => doc.id)
199
+ .toArray()).toEqual([0, 1, 2, 3, 4, 5]);
200
+ });
153
201
  //# sourceMappingURL=index.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
package/dist/indices.d.ts CHANGED
@@ -1,14 +1,17 @@
1
1
  import type BTree from "sorted-btree";
2
2
  import type { ArrayIndexablesOf, CustomIndexablesOf, PrimitiveIndexablesOf } from "./types";
3
+ /** @internal */
3
4
  export declare abstract class Index<A extends object> {
4
5
  readonly name: string;
5
6
  readonly keyType: unknown;
6
7
  readonly record: object;
7
8
  abstract extractKeys(value: A): Array<typeof this.keyType>;
8
9
  }
10
+ /** @internal */
9
11
  export declare abstract class UnitIndex<A extends object> extends Index<A> {
10
12
  abstract extractKey(value: A): typeof this.keyType;
11
13
  }
14
+ /** @internal */
12
15
  export declare class CustomIndex<A extends object, T, I extends CustomIndexablesOf<A, T>> implements Index<A>, UnitIndex<A> {
13
16
  readonly index: I;
14
17
  readonly makeIndex: () => BTree<A[I], Array<A>>;
@@ -21,6 +24,7 @@ export declare class CustomIndex<A extends object, T, I extends CustomIndexables
21
24
  extractKey(value: A): A[I];
22
25
  extractKeys(value: A): Array<A[I]>;
23
26
  }
27
+ /** @internal */
24
28
  export declare class PrimitiveIndex<A extends object, I extends PrimitiveIndexablesOf<A>> implements Index<A>, UnitIndex<A> {
25
29
  readonly index: I;
26
30
  readonly keyType: A[I];
@@ -32,6 +36,7 @@ export declare class PrimitiveIndex<A extends object, I extends PrimitiveIndexab
32
36
  extractKey(value: A): A[I];
33
37
  extractKeys(value: A): Array<A[I]>;
34
38
  }
39
+ /** @internal */
35
40
  export declare class ArrayIndex<A extends object, I extends ArrayIndexablesOf<A>, L extends A[I] & Array<unknown>> implements Index<A> {
36
41
  readonly index: I;
37
42
  readonly name: `*${I}`;
@@ -42,6 +47,7 @@ export declare class ArrayIndex<A extends object, I extends ArrayIndexablesOf<A>
42
47
  constructor(index: I);
43
48
  extractKeys(value: A): L;
44
49
  }
50
+ /** @internal */
45
51
  export declare class CompoundIndex<A extends object, I extends PrimitiveIndexablesOf<A>, J extends Exclude<PrimitiveIndexablesOf<A>, I>> implements Index<A>, UnitIndex<A> {
46
52
  readonly leftIndex: I;
47
53
  readonly rightIndex: J;
package/dist/indices.js CHANGED
@@ -1,7 +1,10 @@
1
+ /** @internal */
1
2
  export class Index {
2
3
  }
4
+ /** @internal */
3
5
  export class UnitIndex extends Index {
4
6
  }
7
+ /** @internal */
5
8
  export class CustomIndex {
6
9
  constructor(index, makeIndex) {
7
10
  this.index = index;
@@ -17,6 +20,7 @@ export class CustomIndex {
17
20
  return [value[this.index]];
18
21
  }
19
22
  }
23
+ /** @internal */
20
24
  export class PrimitiveIndex {
21
25
  constructor(index) {
22
26
  this.index = index;
@@ -31,6 +35,7 @@ export class PrimitiveIndex {
31
35
  return [value[this.index]];
32
36
  }
33
37
  }
38
+ /** @internal */
34
39
  export class ArrayIndex {
35
40
  constructor(index) {
36
41
  this.index = index;
@@ -40,6 +45,7 @@ export class ArrayIndex {
40
45
  return value[this.index];
41
46
  }
42
47
  }
48
+ /** @internal */
43
49
  export class CompoundIndex {
44
50
  constructor(leftIndex, rightIndex) {
45
51
  this.leftIndex = leftIndex;
@@ -1 +1 @@
1
- {"version":3,"file":"indices.js","sourceRoot":"","sources":["../src/indices.ts"],"names":[],"mappings":"AAIA,MAAM,OAAgB,KAAK;CAK1B;AAED,MAAM,OAAgB,SAA4B,SAAQ,KAAQ;CAEjE;AAED,MAAM,OAAO,WAAW;IAMpB,YACoB,KAAQ,EACR,SAAsC;QADtC,UAAK,GAAL,KAAK,CAAG;QACR,cAAS,GAAT,SAAS,CAA6B;IACvD,CAAC;IAEJ,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,UAAU,CAAC,KAAQ;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,WAAW,CAAC,KAAQ;QAChB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/B,CAAC;CACJ;AAED,MAAM,OAAO,cAAc;IAMvB,YAA4B,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAG,CAAC;IAExC,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,UAAU,CAAC,KAAQ;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,WAAW,CAAC,KAAQ;QAChB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/B,CAAC;CACJ;AAED,MAAM,OAAO,UAAU;IAWnB,YAAY,KAAQ;QAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,WAAW,CAAC,KAAQ;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAM,CAAC;IAClC,CAAC;CACJ;AAED,MAAM,OAAO,aAAa;IAatB,YAAY,SAAY,EAAE,UAAa;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,GAAG,SAAS,IAAI,UAAU,EAAE,CAAC;IAC7C,CAAC;IAED,UAAU,CAAC,KAAQ;QACf,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,WAAW,CAAC,KAAQ;QAChB,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;CACJ"}
1
+ {"version":3,"file":"indices.js","sourceRoot":"","sources":["../src/indices.ts"],"names":[],"mappings":"AAIA,gBAAgB;AAChB,MAAM,OAAgB,KAAK;CAK1B;AAED,gBAAgB;AAChB,MAAM,OAAgB,SAA4B,SAAQ,KAAQ;CAEjE;AAED,gBAAgB;AAChB,MAAM,OAAO,WAAW;IAMpB,YACoB,KAAQ,EACR,SAAsC;QADtC,UAAK,GAAL,KAAK,CAAG;QACR,cAAS,GAAT,SAAS,CAA6B;IACvD,CAAC;IAEJ,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,UAAU,CAAC,KAAQ;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,WAAW,CAAC,KAAQ;QAChB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/B,CAAC;CACJ;AAED,gBAAgB;AAChB,MAAM,OAAO,cAAc;IAMvB,YAA4B,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAG,CAAC;IAExC,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,UAAU,CAAC,KAAQ;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,WAAW,CAAC,KAAQ;QAChB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/B,CAAC;CACJ;AAED,gBAAgB;AAChB,MAAM,OAAO,UAAU;IAUnB,YAAY,KAAQ;QAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,WAAW,CAAC,KAAQ;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAM,CAAC;IAClC,CAAC;CACJ;AAED,gBAAgB;AAChB,MAAM,OAAO,aAAa;IAatB,YAAY,SAAY,EAAE,UAAa;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,GAAG,SAAS,IAAI,UAAU,EAAE,CAAC;IAC7C,CAAC;IAED,UAAU,CAAC,KAAQ;QACf,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,WAAW,CAAC,KAAQ;QAChB,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;CACJ"}