shelving 1.108.0 → 1.108.2
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/change/Change.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export interface CollectionChange<T extends Database, K extends DataKey<T>> exte
|
|
|
15
15
|
readonly query?: ItemQuery<T[K]> | never;
|
|
16
16
|
}
|
|
17
17
|
/** Add an item to a database collection. */
|
|
18
|
-
export interface
|
|
18
|
+
export interface ItemAddChange<T extends Database, K extends DataKey<T>> extends CollectionChange<T, K> {
|
|
19
19
|
readonly action: "add";
|
|
20
20
|
readonly id?: never;
|
|
21
21
|
readonly query?: never;
|
|
@@ -64,10 +64,12 @@ export type DatabaseItemChange<T extends Database> = ItemSetChange<T, DataKey<T>
|
|
|
64
64
|
/** Write multiple item in a set of collection. */
|
|
65
65
|
export type DatabaseQueryChange<T extends Database> = QuerySetChange<T, DataKey<T>> | QueryUpdateChange<T, DataKey<T>> | QueryDeleteChange<T, DataKey<T>>;
|
|
66
66
|
/** Write an item or multiple items in a set of collection. */
|
|
67
|
-
export type DatabaseChange<T extends Database> =
|
|
67
|
+
export type DatabaseChange<T extends Database> = ItemAddChange<T, DataKey<T>> | DatabaseItemChange<T> | DatabaseQueryChange<T>;
|
|
68
68
|
/** Write an item or multiple items in a set of collection. */
|
|
69
69
|
export type DatabaseChanges<T extends Database> = ImmutableArray<DatabaseChange<T>>;
|
|
70
70
|
/** Get a set change for an item. */
|
|
71
|
+
export declare function getItemAdd<T extends Database, K extends DataKey<T>>(provider: AbstractProvider<T>, collection: K, id: string, data: T[K]): ItemAddChange<T, K>;
|
|
72
|
+
/** Get a set change for an item. */
|
|
71
73
|
export declare function getItemSet<T extends Database, K extends DataKey<T>>(provider: AbstractProvider<T>, collection: K, id: string, data: T[K]): ItemSetChange<T, K>;
|
|
72
74
|
/** Get an update change an item. */
|
|
73
75
|
export declare function getItemUpdate<T extends Database, K extends DataKey<T>>(provider: AbstractProvider<T>, collection: K, id: string, updates: Updates<T[K]>): ItemUpdateChange<T, K>;
|
package/change/Change.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { notOptional } from "../util/optional.js";
|
|
2
2
|
/** Get a set change for an item. */
|
|
3
|
+
export function getItemAdd(provider, collection, id, data) {
|
|
4
|
+
return { action: "add", collection, data };
|
|
5
|
+
}
|
|
6
|
+
/** Get a set change for an item. */
|
|
3
7
|
export function getItemSet(provider, collection, id, data) {
|
|
4
8
|
return { action: "set", collection, id, data };
|
|
5
9
|
}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import type { DatabaseChange, DatabaseChanges, ItemDeleteChange, ItemSetChange, ItemUpdateChange, QueryDeleteChange, QuerySetChange, QueryUpdateChange } from "../change/Change.js";
|
|
1
|
+
import type { DatabaseChange, DatabaseChanges, ItemAddChange, ItemDeleteChange, ItemSetChange, ItemUpdateChange, QueryDeleteChange, QuerySetChange, QueryUpdateChange } from "../change/Change.js";
|
|
2
2
|
import type { DataKey, Database } from "../util/data.js";
|
|
3
|
-
import type { ItemQuery } from "../util/item.js";
|
|
4
|
-
import type { Optional } from "../util/optional.js";
|
|
3
|
+
import type { Item, ItemQuery, OptionalItem } from "../util/item.js";
|
|
5
4
|
import type { Updates } from "../util/update.js";
|
|
5
|
+
import { type Optional } from "../util/optional.js";
|
|
6
6
|
import { AsyncThroughProvider, ThroughProvider } from "./ThroughProvider.js";
|
|
7
|
-
export declare class
|
|
7
|
+
export declare class ConvenienceProvider<T extends Database> extends ThroughProvider<T> {
|
|
8
|
+
requireItem<K extends DataKey<T>>(collection: K, id: string): Item<T[K]>;
|
|
9
|
+
getFirst<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>): OptionalItem<T[K]>;
|
|
10
|
+
requireFirst<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>): Item<T[K]>;
|
|
11
|
+
getItemAdd<K extends DataKey<T>>(collection: K, id: string, data: T[K]): ItemAddChange<T, K>;
|
|
8
12
|
getItemSet<K extends DataKey<T>>(collection: K, id: string, data: T[K]): ItemSetChange<T, K>;
|
|
9
13
|
getItemUpdate<K extends DataKey<T>>(collection: K, id: string, updates: Updates<T[K]>): ItemUpdateChange<T, K>;
|
|
10
14
|
getItemDelete<K extends DataKey<T>>(collection: K, id: string): ItemDeleteChange<T, K>;
|
|
@@ -14,7 +18,11 @@ export declare class ChangeProvider<T extends Database> extends ThroughProvider<
|
|
|
14
18
|
writeChanges(...changes: Optional<DatabaseChange<T>>[]): DatabaseChanges<T>;
|
|
15
19
|
writeChange(change: DatabaseChange<T>): DatabaseChange<T>;
|
|
16
20
|
}
|
|
17
|
-
export declare class
|
|
21
|
+
export declare class AsyncConvenienceProvider<T extends Database> extends AsyncThroughProvider<T> {
|
|
22
|
+
requireItem<K extends DataKey<T>>(collection: K, id: string): Promise<Item<T[K]>>;
|
|
23
|
+
getFirst<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>): Promise<OptionalItem<T[K]>>;
|
|
24
|
+
requireFirst<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>): Promise<Item<T[K]>>;
|
|
25
|
+
getItemAdd<K extends DataKey<T>>(collection: K, id: string, data: T[K]): ItemAddChange<T, K>;
|
|
18
26
|
getItemSet<K extends DataKey<T>>(collection: K, id: string, data: T[K]): ItemSetChange<T, K>;
|
|
19
27
|
getItemUpdate<K extends DataKey<T>>(collection: K, id: string, updates: Updates<T[K]>): ItemUpdateChange<T, K>;
|
|
20
28
|
getItemDelete<K extends DataKey<T>>(collection: K, id: string): ItemDeleteChange<T, K>;
|
|
@@ -1,6 +1,20 @@
|
|
|
1
|
-
import { getItemDelete, getItemSet, getItemUpdate, getQueryDelete, getQuerySet, getQueryUpdate, writeAsyncProviderChange, writeAsyncProviderChanges, writeProviderChange, writeProviderChanges } from "../change/Change.js";
|
|
1
|
+
import { getItemAdd, getItemDelete, getItemSet, getItemUpdate, getQueryDelete, getQuerySet, getQueryUpdate, writeAsyncProviderChange, writeAsyncProviderChanges, writeProviderChange, writeProviderChanges } from "../change/Change.js";
|
|
2
|
+
import { getFirstItem, getOptionalFirstItem } from "../util/array.js";
|
|
3
|
+
import { getRequired } from "../util/optional.js";
|
|
2
4
|
import { AsyncThroughProvider, ThroughProvider } from "./ThroughProvider.js";
|
|
3
|
-
export class
|
|
5
|
+
export class ConvenienceProvider extends ThroughProvider {
|
|
6
|
+
requireItem(collection, id) {
|
|
7
|
+
return getRequired(this.getItem(collection, id));
|
|
8
|
+
}
|
|
9
|
+
getFirst(collection, query) {
|
|
10
|
+
return getOptionalFirstItem(this.getQuery(collection, { ...query, $limit: 1 }));
|
|
11
|
+
}
|
|
12
|
+
requireFirst(collection, query) {
|
|
13
|
+
return getFirstItem(this.getQuery(collection, { ...query, $limit: 1 }));
|
|
14
|
+
}
|
|
15
|
+
getItemAdd(collection, id, data) {
|
|
16
|
+
return getItemAdd(this, collection, id, data);
|
|
17
|
+
}
|
|
4
18
|
getItemSet(collection, id, data) {
|
|
5
19
|
return getItemSet(this, collection, id, data);
|
|
6
20
|
}
|
|
@@ -26,7 +40,19 @@ export class ChangeProvider extends ThroughProvider {
|
|
|
26
40
|
return writeProviderChange(this, change);
|
|
27
41
|
}
|
|
28
42
|
}
|
|
29
|
-
export class
|
|
43
|
+
export class AsyncConvenienceProvider extends AsyncThroughProvider {
|
|
44
|
+
async requireItem(collection, id) {
|
|
45
|
+
return getRequired(await this.getItem(collection, id));
|
|
46
|
+
}
|
|
47
|
+
async getFirst(collection, query) {
|
|
48
|
+
return getOptionalFirstItem(await this.getQuery(collection, { ...query, $limit: 1 }));
|
|
49
|
+
}
|
|
50
|
+
async requireFirst(collection, query) {
|
|
51
|
+
return getFirstItem(await this.getQuery(collection, { ...query, $limit: 1 }));
|
|
52
|
+
}
|
|
53
|
+
getItemAdd(collection, id, data) {
|
|
54
|
+
return getItemAdd(this, collection, id, data);
|
|
55
|
+
}
|
|
30
56
|
getItemSet(collection, id, data) {
|
|
31
57
|
return getItemSet(this, collection, id, data);
|
|
32
58
|
}
|
package/db/index.d.ts
CHANGED
package/db/index.js
CHANGED