shelving 1.150.15 → 1.152.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/db/CacheProvider.d.ts +18 -17
- package/db/Change.d.ts +20 -19
- package/db/ChangesProvider.d.ts +22 -21
- package/db/DebugProvider.d.ts +28 -27
- package/db/ItemStore.d.ts +10 -10
- package/db/MemoryProvider.d.ts +47 -44
- package/db/MemoryProvider.js +9 -4
- package/db/Provider.d.ts +50 -49
- package/db/QueryStore.d.ts +11 -10
- package/db/ThroughProvider.d.ts +38 -37
- package/db/ValidationProvider.d.ts +33 -29
- package/db/ValidationProvider.js +24 -22
- package/firestore/client/FirestoreClientProvider.d.ts +11 -10
- package/firestore/lite/FirestoreLiteProvider.d.ts +11 -10
- package/firestore/server/FirestoreServerProvider.d.ts +11 -10
- package/package.json +1 -1
- package/react/createDataContext.d.ts +8 -7
- package/schema/ColorSchema.d.ts +3 -3
- package/schema/ColorSchema.js +3 -4
- package/schema/DataSchema.d.ts +3 -3
- package/schema/DataSchema.js +2 -3
- package/schema/EmailSchema.d.ts +2 -2
- package/schema/EmailSchema.js +3 -4
- package/schema/EntitySchema.js +2 -2
- package/schema/LinkSchema.d.ts +2 -2
- package/schema/LinkSchema.js +3 -3
- package/schema/PhoneSchema.d.ts +2 -2
- package/schema/PhoneSchema.js +3 -4
- package/schema/SlugSchema.js +1 -1
- package/schema/StringSchema.d.ts +25 -4
- package/schema/StringSchema.js +33 -3
- package/schema/index.d.ts +0 -1
- package/schema/index.js +0 -1
- package/test/basics.d.ts +11 -10
- package/test/people.d.ts +7 -6
- package/test/util.d.ts +3 -3
- package/test/util.js +3 -3
- package/util/array.d.ts +2 -2
- package/util/array.js +3 -3
- package/util/error.d.ts +1 -1
- package/util/item.d.ts +15 -16
- package/util/item.js +9 -8
- package/util/query.d.ts +3 -0
- package/util/random.d.ts +1 -1
- package/util/set.d.ts +3 -3
- package/schema/TextSchema.d.ts +0 -40
- package/schema/TextSchema.js +0 -47
package/db/CacheProvider.d.ts
CHANGED
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
import type { DataKey, Database } from "../util/data.js";
|
|
2
|
-
import type {
|
|
2
|
+
import type { Identifier, Items, OptionalItem } from "../util/item.js";
|
|
3
|
+
import type { ItemQuery } from "../util/query.js";
|
|
3
4
|
import type { Sourceable } from "../util/source.js";
|
|
4
5
|
import type { Updates } from "../util/update.js";
|
|
5
6
|
import { MemoryProvider } from "./MemoryProvider.js";
|
|
6
7
|
import { AsyncProvider } from "./Provider.js";
|
|
7
8
|
/** Keep a copy of asynchronous remote data in a local synchronous cache. */
|
|
8
|
-
export declare class CacheProvider<T extends Database> extends AsyncProvider<T> implements Sourceable<AsyncProvider<T>> {
|
|
9
|
-
readonly source: AsyncProvider<T>;
|
|
10
|
-
readonly memory: MemoryProvider<T>;
|
|
11
|
-
constructor(source: AsyncProvider<T>, cache?: MemoryProvider<T>);
|
|
12
|
-
getItem<K extends DataKey<T>>(collection: K, id:
|
|
13
|
-
getItemSequence<K extends DataKey<T>>(collection: K, id:
|
|
14
|
-
addItem<K extends DataKey<T>>(collection: K, data: T[K]): Promise<
|
|
15
|
-
setItem<K extends DataKey<T>>(collection: K, id:
|
|
16
|
-
updateItem<K extends DataKey<T>>(collection: K, id:
|
|
17
|
-
deleteItem<K extends DataKey<T>>(collection: K, id:
|
|
18
|
-
countQuery<K extends DataKey<T>>(collection: K, query?: ItemQuery<T[K]>): Promise<number>;
|
|
19
|
-
getQuery<K extends DataKey<T>>(collection: K, query?: ItemQuery<T[K]>): Promise<Items<T[K]>>;
|
|
20
|
-
getQuerySequence<K extends DataKey<T>>(collection: K, query?: ItemQuery<T[K]>): AsyncIterable<Items<T[K]>>;
|
|
21
|
-
setQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>, data: T[K]): Promise<void>;
|
|
22
|
-
updateQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>, updates: Updates<T[K]>): Promise<void>;
|
|
23
|
-
deleteQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>): Promise<void>;
|
|
9
|
+
export declare class CacheProvider<I extends Identifier, T extends Database> extends AsyncProvider<I, T> implements Sourceable<AsyncProvider<I, T>> {
|
|
10
|
+
readonly source: AsyncProvider<I, T>;
|
|
11
|
+
readonly memory: MemoryProvider<I, T>;
|
|
12
|
+
constructor(source: AsyncProvider<I, T>, cache?: MemoryProvider<I, T>);
|
|
13
|
+
getItem<K extends DataKey<T>>(collection: K, id: I): Promise<OptionalItem<I, T[K]>>;
|
|
14
|
+
getItemSequence<K extends DataKey<T>>(collection: K, id: I): AsyncIterable<OptionalItem<I, T[K]>>;
|
|
15
|
+
addItem<K extends DataKey<T>>(collection: K, data: T[K]): Promise<I>;
|
|
16
|
+
setItem<K extends DataKey<T>>(collection: K, id: I, data: T[K]): Promise<void>;
|
|
17
|
+
updateItem<K extends DataKey<T>>(collection: K, id: I, updates: Updates<T[K]>): Promise<void>;
|
|
18
|
+
deleteItem<K extends DataKey<T>>(collection: K, id: I): Promise<void>;
|
|
19
|
+
countQuery<K extends DataKey<T>>(collection: K, query?: ItemQuery<I, T[K]>): Promise<number>;
|
|
20
|
+
getQuery<K extends DataKey<T>>(collection: K, query?: ItemQuery<I, T[K]>): Promise<Items<I, T[K]>>;
|
|
21
|
+
getQuerySequence<K extends DataKey<T>>(collection: K, query?: ItemQuery<I, T[K]>): AsyncIterable<Items<I, T[K]>>;
|
|
22
|
+
setQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>, data: T[K]): Promise<void>;
|
|
23
|
+
updateQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>, updates: Updates<T[K]>): Promise<void>;
|
|
24
|
+
deleteQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>): Promise<void>;
|
|
24
25
|
}
|
package/db/Change.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { ImmutableArray } from "../util/array.js";
|
|
2
2
|
import type { DataKey, Database } from "../util/data.js";
|
|
3
|
-
import type {
|
|
3
|
+
import type { Identifier } from "../util/item.js";
|
|
4
4
|
import { type Nullish } from "../util/null.js";
|
|
5
|
+
import type { ItemQuery } from "../util/query.js";
|
|
5
6
|
import type { Updates } from "../util/update.js";
|
|
6
7
|
import type { AsyncProvider, Provider } from "./Provider.js";
|
|
7
8
|
/** A change to a database. */
|
|
@@ -20,56 +21,56 @@ export interface ItemAddChange<T extends Database, K extends DataKey<T>> extends
|
|
|
20
21
|
readonly data: T[K];
|
|
21
22
|
}
|
|
22
23
|
/** Change an item in a database collection. */
|
|
23
|
-
export interface ItemChange<T extends Database, K extends DataKey<T>> extends CollectionChange<T, K> {
|
|
24
|
-
readonly id:
|
|
24
|
+
export interface ItemChange<I extends Identifier, T extends Database, K extends DataKey<T>> extends CollectionChange<T, K> {
|
|
25
|
+
readonly id: I;
|
|
25
26
|
readonly query?: never;
|
|
26
27
|
}
|
|
27
28
|
/** Set an item in a database collection. */
|
|
28
|
-
export interface ItemSetChange<T extends Database, K extends DataKey<T>> extends ItemChange<T, K> {
|
|
29
|
+
export interface ItemSetChange<I extends Identifier, T extends Database, K extends DataKey<T>> extends ItemChange<I, T, K> {
|
|
29
30
|
readonly action: "set";
|
|
30
31
|
readonly data: T[K];
|
|
31
32
|
}
|
|
32
33
|
/** Update an item in a database collection. */
|
|
33
|
-
export interface ItemUpdateChange<T extends Database, K extends DataKey<T>> extends ItemChange<T, K> {
|
|
34
|
+
export interface ItemUpdateChange<I extends Identifier, T extends Database, K extends DataKey<T>> extends ItemChange<I, T, K> {
|
|
34
35
|
readonly action: "update";
|
|
35
36
|
readonly updates: Updates<T[K]>;
|
|
36
37
|
}
|
|
37
38
|
/** Delete an item in a database collection. */
|
|
38
|
-
export interface ItemDeleteChange<T extends Database, K extends DataKey<T>> extends ItemChange<T, K> {
|
|
39
|
+
export interface ItemDeleteChange<I extends Identifier, T extends Database, K extends DataKey<T>> extends ItemChange<I, T, K> {
|
|
39
40
|
readonly action: "delete";
|
|
40
41
|
}
|
|
41
42
|
/** Change multiple items in a database collection. */
|
|
42
|
-
export interface QueryChange<T extends Database, K extends DataKey<T>> extends CollectionChange<T, K> {
|
|
43
|
-
readonly query: ItemQuery<T[K]>;
|
|
43
|
+
export interface QueryChange<I extends Identifier, T extends Database, K extends DataKey<T>> extends CollectionChange<T, K> {
|
|
44
|
+
readonly query: ItemQuery<I, T[K]>;
|
|
44
45
|
readonly id?: never;
|
|
45
46
|
}
|
|
46
47
|
/** Set multiple items in a database collection. */
|
|
47
|
-
export interface QuerySetChange<T extends Database, K extends DataKey<T>> extends QueryChange<T, K> {
|
|
48
|
+
export interface QuerySetChange<I extends Identifier, T extends Database, K extends DataKey<T>> extends QueryChange<I, T, K> {
|
|
48
49
|
readonly action: "set";
|
|
49
50
|
readonly data: T[K];
|
|
50
51
|
}
|
|
51
52
|
/** Update multiple items in a database collection. */
|
|
52
|
-
export interface QueryUpdateChange<T extends Database, K extends DataKey<T>> extends QueryChange<T, K> {
|
|
53
|
+
export interface QueryUpdateChange<I extends Identifier, T extends Database, K extends DataKey<T>> extends QueryChange<I, T, K> {
|
|
53
54
|
readonly action: "update";
|
|
54
55
|
readonly updates: Updates<T[K]>;
|
|
55
56
|
}
|
|
56
57
|
/** Delete multiple items in a database collection. */
|
|
57
|
-
export interface QueryDeleteChange<T extends Database, K extends DataKey<T>> extends QueryChange<T, K> {
|
|
58
|
+
export interface QueryDeleteChange<I extends Identifier, T extends Database, K extends DataKey<T>> extends QueryChange<I, T, K> {
|
|
58
59
|
readonly action: "delete";
|
|
59
60
|
}
|
|
60
61
|
/** Write an item in a set of collection. */
|
|
61
|
-
export type DatabaseItemChange<T extends Database> = ItemSetChange<T, DataKey<T>> | ItemUpdateChange<T, DataKey<T>> | ItemDeleteChange<T, DataKey<T>>;
|
|
62
|
+
export type DatabaseItemChange<I extends Identifier, T extends Database> = ItemSetChange<I, T, DataKey<T>> | ItemUpdateChange<I, T, DataKey<T>> | ItemDeleteChange<I, T, DataKey<T>>;
|
|
62
63
|
/** Write multiple item in a set of collection. */
|
|
63
|
-
export type DatabaseQueryChange<T extends Database> = QuerySetChange<T, DataKey<T>> | QueryUpdateChange<T, DataKey<T>> | QueryDeleteChange<T, DataKey<T>>;
|
|
64
|
+
export type DatabaseQueryChange<I extends Identifier, T extends Database> = QuerySetChange<I, T, DataKey<T>> | QueryUpdateChange<I, T, DataKey<T>> | QueryDeleteChange<I, T, DataKey<T>>;
|
|
64
65
|
/** Write an item or multiple items in a set of collection. */
|
|
65
|
-
export type DatabaseChange<T extends Database> = ItemAddChange<T, DataKey<T>> | DatabaseItemChange<T> | DatabaseQueryChange<T>;
|
|
66
|
+
export type DatabaseChange<I extends Identifier, T extends Database> = ItemAddChange<T, DataKey<T>> | DatabaseItemChange<I, T> | DatabaseQueryChange<I, T>;
|
|
66
67
|
/** Write an item or multiple items in a set of collection. */
|
|
67
|
-
export type DatabaseChanges<T extends Database> = ImmutableArray<DatabaseChange<T>>;
|
|
68
|
+
export type DatabaseChanges<I extends Identifier, T extends Database> = ImmutableArray<DatabaseChange<I, T>>;
|
|
68
69
|
/** Write a single change to a synchronous provider and return an array of the changes that were written. */
|
|
69
|
-
export declare function writeChange<T extends Database>(provider: Provider<T>, change: DatabaseChange<T>): DatabaseChange<T>;
|
|
70
|
+
export declare function writeChange<I extends Identifier, T extends Database>(provider: Provider<I, T>, change: DatabaseChange<I, T>): DatabaseChange<I, T>;
|
|
70
71
|
/** Write a set of changes to a synchronous provider. */
|
|
71
|
-
export declare function writeChanges<T extends Database>(provider: Provider<T>, ...changes: Nullish<DatabaseChange<T>>[]): DatabaseChanges<T>;
|
|
72
|
+
export declare function writeChanges<I extends Identifier, T extends Database>(provider: Provider<I, T>, ...changes: Nullish<DatabaseChange<I, T>>[]): DatabaseChanges<I, T>;
|
|
72
73
|
/** Write a single change to an asynchronous provider and return the change that was written. */
|
|
73
|
-
export declare function writeAsyncChange<T extends Database>(provider: AsyncProvider<T>, change: DatabaseChange<T>): Promise<DatabaseChange<T>>;
|
|
74
|
+
export declare function writeAsyncChange<I extends Identifier, T extends Database>(provider: AsyncProvider<I, T>, change: DatabaseChange<I, T>): Promise<DatabaseChange<I, T>>;
|
|
74
75
|
/** Write a set of changes to an asynchronous provider. */
|
|
75
|
-
export declare function writeAsyncChanges<T extends Database>(provider: AsyncProvider<T>, ...changes: Nullish<DatabaseChange<T>>[]): Promise<DatabaseChanges<T>>;
|
|
76
|
+
export declare function writeAsyncChanges<I extends Identifier, T extends Database>(provider: AsyncProvider<I, T>, ...changes: Nullish<DatabaseChange<I, T>>[]): Promise<DatabaseChanges<I, T>>;
|
package/db/ChangesProvider.d.ts
CHANGED
|
@@ -1,30 +1,31 @@
|
|
|
1
1
|
import type { MutableArray } from "../util/array.js";
|
|
2
2
|
import type { DataKey, Database } from "../util/data.js";
|
|
3
|
-
import type {
|
|
3
|
+
import type { Identifier } from "../util/item.js";
|
|
4
|
+
import type { ItemQuery } from "../util/query.js";
|
|
4
5
|
import type { Updates } from "../util/update.js";
|
|
5
6
|
import type { DatabaseChange, DatabaseChanges } from "./Change.js";
|
|
6
7
|
import { AsyncThroughProvider, ThroughProvider } from "./ThroughProvider.js";
|
|
7
8
|
/** Synchronous provider that keeps a log of any written changes to its `.changes` property. */
|
|
8
|
-
export declare class ChangesProvider<T extends Database> extends ThroughProvider<T> {
|
|
9
|
-
get changes(): DatabaseChanges<T>;
|
|
10
|
-
readonly _changes: MutableArray<DatabaseChange<T>>;
|
|
11
|
-
addItem<K extends DataKey<T>>(collection: K, data: T[K]):
|
|
12
|
-
setItem<K extends DataKey<T>>(collection: K, id:
|
|
13
|
-
updateItem<K extends DataKey<T>>(collection: K, id:
|
|
14
|
-
deleteItem<K extends DataKey<T>>(collection: K, id:
|
|
15
|
-
setQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>, data: T[K]): void;
|
|
16
|
-
updateQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>, updates: Updates<T[K]>): void;
|
|
17
|
-
deleteQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>): void;
|
|
9
|
+
export declare class ChangesProvider<I extends Identifier, T extends Database> extends ThroughProvider<I, T> {
|
|
10
|
+
get changes(): DatabaseChanges<I, T>;
|
|
11
|
+
readonly _changes: MutableArray<DatabaseChange<I, T>>;
|
|
12
|
+
addItem<K extends DataKey<T>>(collection: K, data: T[K]): I;
|
|
13
|
+
setItem<K extends DataKey<T>>(collection: K, id: I, data: T[K]): void;
|
|
14
|
+
updateItem<K extends DataKey<T>>(collection: K, id: I, updates: Updates<T[K]>): void;
|
|
15
|
+
deleteItem<K extends DataKey<T>>(collection: K, id: I): void;
|
|
16
|
+
setQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>, data: T[K]): void;
|
|
17
|
+
updateQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>, updates: Updates<T[K]>): void;
|
|
18
|
+
deleteQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>): void;
|
|
18
19
|
}
|
|
19
20
|
/** Asynchronous provider that keeps a log of any written changes to its `.written` property. */
|
|
20
|
-
export declare class AsyncLoggedProvider<T extends Database> extends AsyncThroughProvider<T> {
|
|
21
|
-
get written(): DatabaseChanges<T>;
|
|
22
|
-
readonly _written: MutableArray<DatabaseChange<T>>;
|
|
23
|
-
addItem<K extends DataKey<T>>(collection: K, data: T[K]): Promise<
|
|
24
|
-
setItem<K extends DataKey<T>>(collection: K, id:
|
|
25
|
-
updateItem<K extends DataKey<T>>(collection: K, id:
|
|
26
|
-
deleteItem<K extends DataKey<T>>(collection: K, id:
|
|
27
|
-
setQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>, data: T[K]): Promise<void>;
|
|
28
|
-
updateQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>, updates: Updates<T[K]>): Promise<void>;
|
|
29
|
-
deleteQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>): Promise<void>;
|
|
21
|
+
export declare class AsyncLoggedProvider<I extends Identifier, T extends Database> extends AsyncThroughProvider<I, T> {
|
|
22
|
+
get written(): DatabaseChanges<I, T>;
|
|
23
|
+
readonly _written: MutableArray<DatabaseChange<I, T>>;
|
|
24
|
+
addItem<K extends DataKey<T>>(collection: K, data: T[K]): Promise<I>;
|
|
25
|
+
setItem<K extends DataKey<T>>(collection: K, id: I, data: T[K]): Promise<void>;
|
|
26
|
+
updateItem<K extends DataKey<T>>(collection: K, id: I, updates: Updates<T[K]>): Promise<void>;
|
|
27
|
+
deleteItem<K extends DataKey<T>>(collection: K, id: I): Promise<void>;
|
|
28
|
+
setQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>, data: T[K]): Promise<void>;
|
|
29
|
+
updateQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>, updates: Updates<T[K]>): Promise<void>;
|
|
30
|
+
deleteQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>): Promise<void>;
|
|
30
31
|
}
|
package/db/DebugProvider.d.ts
CHANGED
|
@@ -1,34 +1,35 @@
|
|
|
1
1
|
import type { DataKey, Database } from "../util/data.js";
|
|
2
|
-
import type {
|
|
2
|
+
import type { Identifier, Items, OptionalItem } from "../util/item.js";
|
|
3
|
+
import type { ItemQuery } from "../util/query.js";
|
|
3
4
|
import type { Updates } from "../util/update.js";
|
|
4
5
|
import { AsyncThroughProvider, ThroughProvider } from "./ThroughProvider.js";
|
|
5
6
|
/** Provider that logs operations to a synchronous source provider to the console. */
|
|
6
|
-
export declare class DebugProvider<T extends Database> extends ThroughProvider<T> {
|
|
7
|
-
getItem<K extends DataKey<T>>(collection: K, id:
|
|
8
|
-
getItemSequence<K extends DataKey<T>>(collection: K, id:
|
|
9
|
-
addItem<K extends DataKey<T>>(collection: K, data: T[K]):
|
|
10
|
-
setItem<K extends DataKey<T>>(collection: K, id:
|
|
11
|
-
updateItem<K extends DataKey<T>>(collection: K, id:
|
|
12
|
-
deleteItem<K extends DataKey<T>>(collection: K, id:
|
|
13
|
-
countQuery<K extends DataKey<T>>(collection: K, query?: ItemQuery<T[K]>): number;
|
|
14
|
-
getQuery<K extends DataKey<T>>(collection: K, query?: ItemQuery<T[K]>): Items<T[K]>;
|
|
15
|
-
getQuerySequence<K extends DataKey<T>>(collection: K, query?: ItemQuery<T[K]>): AsyncIterableIterator<Items<T[K]>>;
|
|
16
|
-
setQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>, data: T[K]): void;
|
|
17
|
-
updateQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>, updates: Updates): void;
|
|
18
|
-
deleteQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>): void;
|
|
7
|
+
export declare class DebugProvider<I extends Identifier, T extends Database> extends ThroughProvider<I, T> {
|
|
8
|
+
getItem<K extends DataKey<T>>(collection: K, id: I): OptionalItem<I, T[K]>;
|
|
9
|
+
getItemSequence<K extends DataKey<T>>(collection: K, id: I): AsyncIterableIterator<OptionalItem<I, T[K]>>;
|
|
10
|
+
addItem<K extends DataKey<T>>(collection: K, data: T[K]): I;
|
|
11
|
+
setItem<K extends DataKey<T>>(collection: K, id: I, data: T[K]): void;
|
|
12
|
+
updateItem<K extends DataKey<T>>(collection: K, id: I, updates: Updates): void;
|
|
13
|
+
deleteItem<K extends DataKey<T>>(collection: K, id: I): void;
|
|
14
|
+
countQuery<K extends DataKey<T>>(collection: K, query?: ItemQuery<I, T[K]>): number;
|
|
15
|
+
getQuery<K extends DataKey<T>>(collection: K, query?: ItemQuery<I, T[K]>): Items<I, T[K]>;
|
|
16
|
+
getQuerySequence<K extends DataKey<T>>(collection: K, query?: ItemQuery<I, T[K]>): AsyncIterableIterator<Items<I, T[K]>>;
|
|
17
|
+
setQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>, data: T[K]): void;
|
|
18
|
+
updateQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>, updates: Updates): void;
|
|
19
|
+
deleteQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>): void;
|
|
19
20
|
}
|
|
20
21
|
/** Provider that logs operations to a synchronous source provider to the console. */
|
|
21
|
-
export declare class AsyncDebugProvider<T extends Database> extends AsyncThroughProvider<T> {
|
|
22
|
-
getItem<K extends DataKey<T>>(collection: K, id:
|
|
23
|
-
getItemSequence<K extends DataKey<T>>(collection: K, id:
|
|
24
|
-
addItem<K extends DataKey<T>>(collection: K, data: T[K]): Promise<
|
|
25
|
-
setItem<K extends DataKey<T>>(collection: K, id:
|
|
26
|
-
updateItem<K extends DataKey<T>>(collection: K, id:
|
|
27
|
-
deleteItem<K extends DataKey<T>>(collection: K, id:
|
|
28
|
-
countQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>): Promise<number>;
|
|
29
|
-
getQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>): Promise<Items<T[K]>>;
|
|
30
|
-
getQuerySequence<K extends DataKey<T>>(collection: K, query?: ItemQuery<T[K]>): AsyncIterableIterator<Items<T[K]>>;
|
|
31
|
-
setQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>, data: T[K]): Promise<void>;
|
|
32
|
-
updateQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>, updates: Updates): Promise<void>;
|
|
33
|
-
deleteQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>): Promise<void>;
|
|
22
|
+
export declare class AsyncDebugProvider<I extends Identifier, T extends Database> extends AsyncThroughProvider<I, T> {
|
|
23
|
+
getItem<K extends DataKey<T>>(collection: K, id: I): Promise<OptionalItem<I, T[K]>>;
|
|
24
|
+
getItemSequence<K extends DataKey<T>>(collection: K, id: I): AsyncIterableIterator<OptionalItem<I, T[K]>>;
|
|
25
|
+
addItem<K extends DataKey<T>>(collection: K, data: T[K]): Promise<I>;
|
|
26
|
+
setItem<K extends DataKey<T>>(collection: K, id: I, data: T[K]): Promise<void>;
|
|
27
|
+
updateItem<K extends DataKey<T>>(collection: K, id: I, updates: Updates): Promise<void>;
|
|
28
|
+
deleteItem<K extends DataKey<T>>(collection: K, id: I): Promise<void>;
|
|
29
|
+
countQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>): Promise<number>;
|
|
30
|
+
getQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>): Promise<Items<I, T[K]>>;
|
|
31
|
+
getQuerySequence<K extends DataKey<T>>(collection: K, query?: ItemQuery<I, T[K]>): AsyncIterableIterator<Items<I, T[K]>>;
|
|
32
|
+
setQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>, data: T[K]): Promise<void>;
|
|
33
|
+
updateQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>, updates: Updates): Promise<void>;
|
|
34
|
+
deleteQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>): Promise<void>;
|
|
34
35
|
}
|
package/db/ItemStore.d.ts
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import { BooleanStore } from "../store/BooleanStore.js";
|
|
2
2
|
import { OptionalDataStore } from "../store/DataStore.js";
|
|
3
3
|
import type { DataKey, Database } from "../util/data.js";
|
|
4
|
-
import type { Item } from "../util/item.js";
|
|
4
|
+
import type { Identifier, Item } from "../util/item.js";
|
|
5
5
|
import type { StopCallback } from "../util/start.js";
|
|
6
6
|
import type { MemoryProvider } from "./MemoryProvider.js";
|
|
7
7
|
import type { AbstractProvider } from "./Provider.js";
|
|
8
8
|
/** Store a single item. */
|
|
9
|
-
export declare class ItemStore<T extends Database, K extends DataKey<T>> extends OptionalDataStore<Item<T[K]>> {
|
|
10
|
-
readonly provider: AbstractProvider<T>;
|
|
9
|
+
export declare class ItemStore<I extends Identifier, T extends Database, K extends DataKey<T>> extends OptionalDataStore<Item<I, T[K]>> {
|
|
10
|
+
readonly provider: AbstractProvider<I, T>;
|
|
11
11
|
readonly collection: K;
|
|
12
|
-
readonly id:
|
|
12
|
+
readonly id: I;
|
|
13
13
|
readonly busy: BooleanStore;
|
|
14
14
|
/** Get the data of this store (throws `RequiredError` if item doesn't exist). */
|
|
15
|
-
get data(): Item<T[K]>;
|
|
15
|
+
get data(): Item<I, T[K]>;
|
|
16
16
|
/** Set the data of this store. */
|
|
17
|
-
set data(data: T[K] | Item<T[K]>);
|
|
18
|
-
constructor(collection: K, id:
|
|
17
|
+
set data(data: T[K] | Item<I, T[K]>);
|
|
18
|
+
constructor(collection: K, id: I, provider: AbstractProvider<I, T>, memory?: MemoryProvider<I, T>);
|
|
19
19
|
/** Refresh this store from the source provider. */
|
|
20
|
-
refresh(provider?: AbstractProvider<T>): void;
|
|
20
|
+
refresh(provider?: AbstractProvider<I, T>): void;
|
|
21
21
|
private _refresh;
|
|
22
22
|
/** Refresh this store if data in the cache is older than `maxAge` (in milliseconds). */
|
|
23
|
-
refreshStale(maxAge: number, provider?: AbstractProvider<T>): void;
|
|
23
|
+
refreshStale(maxAge: number, provider?: AbstractProvider<I, T>): void;
|
|
24
24
|
/** Subscribe this store to a provider. */
|
|
25
|
-
connect(provider?: AbstractProvider<T>): StopCallback;
|
|
25
|
+
connect(provider?: AbstractProvider<I, T>): StopCallback;
|
|
26
26
|
}
|
package/db/MemoryProvider.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { DeferredSequence } from "../sequence/DeferredSequence.js";
|
|
2
2
|
import type { Data, DataKey, Database } from "../util/data.js";
|
|
3
|
-
import type {
|
|
3
|
+
import type { Identifier, Item, Items, OptionalItem } from "../util/item.js";
|
|
4
|
+
import type { ItemQuery } from "../util/query.js";
|
|
4
5
|
import type { Updates } from "../util/update.js";
|
|
5
6
|
import { Provider } from "./Provider.js";
|
|
6
7
|
/**
|
|
@@ -8,56 +9,58 @@ import { Provider } from "./Provider.js";
|
|
|
8
9
|
* - Extremely fast (ideal for caching!), but does not persist data after the browser window is closed.
|
|
9
10
|
* - `get()` etc return the exact same instance of an object that's passed into `set()`
|
|
10
11
|
*/
|
|
11
|
-
export declare class MemoryProvider<T extends Database> extends Provider<T> {
|
|
12
|
+
export declare class MemoryProvider<I extends Identifier, T extends Database> extends Provider<I, T> {
|
|
12
13
|
/** List of tables in `{ collection: Table }` format. */
|
|
13
14
|
private _tables;
|
|
14
15
|
/** Get a table for a collection. */
|
|
15
|
-
getTable<K extends DataKey<T>>(collection: K): MemoryTable<T[K]>;
|
|
16
|
-
getItemTime<K extends DataKey<T>>(collection: K, id:
|
|
17
|
-
getItem<K extends DataKey<T>>(collection: K, id:
|
|
18
|
-
getItemSequence<K extends DataKey<T>>(collection: K, id:
|
|
19
|
-
getCachedItemSequence<K extends DataKey<T>>(collection: K, id:
|
|
20
|
-
addItem<K extends DataKey<T>>(collection: K, data: T[K]):
|
|
21
|
-
setItem<K extends DataKey<T>>(collection: K, id:
|
|
22
|
-
setItemSequence<K extends DataKey<T>>(collection: K, id:
|
|
23
|
-
updateItem<K extends DataKey<T>>(collection: K, id:
|
|
24
|
-
deleteItem<K extends DataKey<T>>(collection: K, id:
|
|
25
|
-
getQueryTime<K extends DataKey<T>>(collection: K, query?: ItemQuery<T[K]>): number | undefined;
|
|
26
|
-
countQuery<K extends DataKey<T>>(collection: K, query?: ItemQuery<T[K]>): number;
|
|
27
|
-
getQuery<K extends DataKey<T>>(collection: K, query?: ItemQuery<T[K]>): Items<T[K]>;
|
|
28
|
-
getQuerySequence<K extends DataKey<T>>(collection: K, query?: ItemQuery<T[K]>): AsyncIterable<Items<T[K]>>;
|
|
29
|
-
getCachedQuerySequence<K extends DataKey<T>>(collection: K, query?: ItemQuery<T[K]>): AsyncIterable<Items<T[K]>>;
|
|
30
|
-
setQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>, data: T[K]): void;
|
|
31
|
-
updateQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>, updates: Updates<T[K]>): void;
|
|
32
|
-
deleteQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>): void;
|
|
33
|
-
setItems<K extends DataKey<T>>(collection: K, items: Items<T[K]>, query?: ItemQuery<T[K]>): void;
|
|
34
|
-
setItemsSequence<K extends DataKey<T>>(collection: K, sequence: AsyncIterable<Items<T[K]>>, query?: ItemQuery<T[K]>): AsyncIterable<Items<T[K]>>;
|
|
16
|
+
getTable<K extends DataKey<T>>(collection: K): MemoryTable<I, T[K]>;
|
|
17
|
+
getItemTime<K extends DataKey<T>>(collection: K, id: I): number | undefined;
|
|
18
|
+
getItem<K extends DataKey<T>>(collection: K, id: I): OptionalItem<I, T[K]>;
|
|
19
|
+
getItemSequence<K extends DataKey<T>>(collection: K, id: I): AsyncIterable<OptionalItem<I, T[K]>>;
|
|
20
|
+
getCachedItemSequence<K extends DataKey<T>>(collection: K, id: I): AsyncIterable<OptionalItem<I, T[K]>>;
|
|
21
|
+
addItem<K extends DataKey<T>>(collection: K, data: T[K]): I;
|
|
22
|
+
setItem<K extends DataKey<T>>(collection: K, id: I, data: T[K]): void;
|
|
23
|
+
setItemSequence<K extends DataKey<T>>(collection: K, id: I, sequence: AsyncIterable<OptionalItem<I, T[K]>>): AsyncIterable<OptionalItem<I, T[K]>>;
|
|
24
|
+
updateItem<K extends DataKey<T>>(collection: K, id: I, updates: Updates<T[K]>): void;
|
|
25
|
+
deleteItem<K extends DataKey<T>>(collection: K, id: I): void;
|
|
26
|
+
getQueryTime<K extends DataKey<T>>(collection: K, query?: ItemQuery<I, T[K]>): number | undefined;
|
|
27
|
+
countQuery<K extends DataKey<T>>(collection: K, query?: ItemQuery<I, T[K]>): number;
|
|
28
|
+
getQuery<K extends DataKey<T>>(collection: K, query?: ItemQuery<I, T[K]>): Items<I, T[K]>;
|
|
29
|
+
getQuerySequence<K extends DataKey<T>>(collection: K, query?: ItemQuery<I, T[K]>): AsyncIterable<Items<I, T[K]>>;
|
|
30
|
+
getCachedQuerySequence<K extends DataKey<T>>(collection: K, query?: ItemQuery<I, T[K]>): AsyncIterable<Items<I, T[K]>>;
|
|
31
|
+
setQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>, data: T[K]): void;
|
|
32
|
+
updateQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>, updates: Updates<T[K]>): void;
|
|
33
|
+
deleteQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>): void;
|
|
34
|
+
setItems<K extends DataKey<T>>(collection: K, items: Items<I, T[K]>, query?: ItemQuery<I, T[K]>): void;
|
|
35
|
+
setItemsSequence<K extends DataKey<T>>(collection: K, sequence: AsyncIterable<Items<I, T[K]>>, query?: ItemQuery<I, T[K]>): AsyncIterable<Items<I, T[K]>>;
|
|
35
36
|
}
|
|
36
37
|
/** An individual table of data. */
|
|
37
|
-
export declare class MemoryTable<T extends Data> {
|
|
38
|
+
export declare class MemoryTable<I extends Identifier, T extends Data> {
|
|
38
39
|
/** Actual data in this table. */
|
|
39
|
-
protected readonly _data: Map<
|
|
40
|
+
protected readonly _data: Map<Identifier, Item<I, T>>;
|
|
40
41
|
/** Times data was last updated. */
|
|
41
|
-
protected readonly _times: Map<
|
|
42
|
+
protected readonly _times: Map<Identifier, number>;
|
|
42
43
|
/** Deferred sequence of next values. */
|
|
43
44
|
readonly next: DeferredSequence<void>;
|
|
44
|
-
getItemTime(id:
|
|
45
|
-
getItem(id:
|
|
46
|
-
getItemSequence(id:
|
|
47
|
-
getCachedItemSequence(id:
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
45
|
+
getItemTime(id: I): number | undefined;
|
|
46
|
+
getItem(id: I): OptionalItem<I, T>;
|
|
47
|
+
getItemSequence(id: I): AsyncIterable<OptionalItem<I, T>>;
|
|
48
|
+
getCachedItemSequence(id: I): AsyncIterable<OptionalItem<I, T>>;
|
|
49
|
+
/** Function to generate a random ID for this table. */
|
|
50
|
+
generateUniqueID(): I;
|
|
51
|
+
addItem(data: T): I;
|
|
52
|
+
setItem(id: I, data: Item<I, T> | T): void;
|
|
53
|
+
setItemSequence(id: I, sequence: AsyncIterable<OptionalItem<I, T>>): AsyncIterable<OptionalItem<I, T>>;
|
|
54
|
+
updateItem(id: I, updates: Updates<T>): void;
|
|
55
|
+
deleteItem(id: I): void;
|
|
56
|
+
getQueryTime(query?: ItemQuery<I, T>): number | undefined;
|
|
57
|
+
countQuery(query?: ItemQuery<I, T>): number;
|
|
58
|
+
getQuery(query?: ItemQuery<I, T>): Items<I, T>;
|
|
59
|
+
getQuerySequence(query?: ItemQuery<I, T>): AsyncIterable<Items<I, T>>;
|
|
60
|
+
getCachedQuerySequence(query?: ItemQuery<I, T>): AsyncIterable<Items<I, T>>;
|
|
61
|
+
setQuery(query: ItemQuery<I, T>, data: T): void;
|
|
62
|
+
updateQuery(query: ItemQuery<I, T>, updates: Updates<T>): void;
|
|
63
|
+
deleteQuery(query: ItemQuery<I, T>): void;
|
|
64
|
+
setItems(items: Items<I, T>, query?: ItemQuery<I, T>): void;
|
|
65
|
+
setItemsSequence(sequence: AsyncIterable<Items<I, T>>, query?: ItemQuery<I, T>): AsyncIterable<Items<I, T>>;
|
|
63
66
|
}
|
package/db/MemoryProvider.js
CHANGED
|
@@ -4,7 +4,7 @@ import { isArrayEqual } from "../util/equal.js";
|
|
|
4
4
|
import { getItem } from "../util/item.js";
|
|
5
5
|
import { countItems } from "../util/iterate.js";
|
|
6
6
|
import { queryItems, queryWritableItems } from "../util/query.js";
|
|
7
|
-
import { getRandomKey } from "../util/random.js";
|
|
7
|
+
import { getRandom, getRandomKey } from "../util/random.js";
|
|
8
8
|
import { updateData } from "../util/update.js";
|
|
9
9
|
import { Provider } from "./Provider.js";
|
|
10
10
|
/**
|
|
@@ -118,10 +118,15 @@ export class MemoryTable {
|
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
|
-
|
|
122
|
-
|
|
121
|
+
generateUniqueID() {
|
|
122
|
+
const gen = typeof this._data.keys().next().value === "number" ? getRandom : getRandomKey;
|
|
123
|
+
let id = gen();
|
|
123
124
|
while (this._data.has(id))
|
|
124
|
-
id =
|
|
125
|
+
id = gen(); // Regenerate ID until unique.
|
|
126
|
+
return id;
|
|
127
|
+
}
|
|
128
|
+
addItem(data) {
|
|
129
|
+
const id = this.generateUniqueID();
|
|
125
130
|
this.setItem(id, data);
|
|
126
131
|
return id;
|
|
127
132
|
}
|