@incoqnito.io/bajadab 1.1.0 → 1.2.1
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 +52 -0
- package/dist/base.d.ts +56 -0
- package/dist/base.js +18 -0
- package/dist/base.js.map +1 -1
- package/dist/basics.d.ts +27 -2
- package/dist/basics.js +286 -6
- package/dist/basics.js.map +1 -1
- package/dist/fileio.d.ts +3 -1
- package/dist/fileio.js +50 -1
- package/dist/fileio.js.map +1 -1
- package/package.json +1 -1
- package/src/main/base.ts +61 -0
- package/src/main/basics.ts +787 -481
- package/src/main/fileio.ts +207 -154
package/dist/fileio.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileio.js","sourceRoot":"","sources":["../src/main/fileio.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,uBAAuB,GAAG,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"fileio.js","sourceRoot":"","sources":["../src/main/fileio.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/main/base.ts
CHANGED
|
@@ -57,6 +57,9 @@ export type TGetIDFunction = (v: any) => Promise<string | undefined>;
|
|
|
57
57
|
/** Assigns an id onto a value. */
|
|
58
58
|
export type TSetIDFunction = (v: any, id: string) => Promise<void>;
|
|
59
59
|
|
|
60
|
+
/** Extracts an index key (or several, for a multi-valued index) from a value; `undefined` means "not indexed". */
|
|
61
|
+
export type TIndexKeyFunction<T = any> = (v: T) => Promise<string | string[] | undefined>;
|
|
62
|
+
|
|
60
63
|
/** Per-collection behavior. Passed to {@link IBDatabase.createCollection}/{@link IBDatabase.getCollection}. */
|
|
61
64
|
export interface IBCollectionConfig {
|
|
62
65
|
autoIDStrategy: EBAutoIDStrategy;
|
|
@@ -69,6 +72,8 @@ export interface IBCollectionConfig {
|
|
|
69
72
|
getID?: string;
|
|
70
73
|
/** Registry key for a custom {@link TSetIDFunction}. Omit to use the default (sets `.id`). */
|
|
71
74
|
setID?: string;
|
|
75
|
+
/** Index name → registry key of a {@link TIndexKeyFunction} for that index. Omit for no indexes. */
|
|
76
|
+
indexes?: { [indexKey: string]: string };
|
|
72
77
|
}
|
|
73
78
|
|
|
74
79
|
/** Database-wide configuration. */
|
|
@@ -77,6 +82,14 @@ export interface IBDatabaseConfig {
|
|
|
77
82
|
readonly defaultCollectionConfig: IBCollectionConfig;
|
|
78
83
|
}
|
|
79
84
|
|
|
85
|
+
/** Options for {@link IBDatabase.snapshot}. */
|
|
86
|
+
export interface IBSnapshotOptions {
|
|
87
|
+
/** Appended to the version folder's timestamp. Letters, digits, `-` and `_` only. */
|
|
88
|
+
label?: string;
|
|
89
|
+
/** Older version folders under `targetDir` to keep besides the one just created. `0` keeps only the new one. Negative values reject. */
|
|
90
|
+
keepLast?: number;
|
|
91
|
+
}
|
|
92
|
+
|
|
80
93
|
/** A JSON-file-backed database. Obtain one via `getDatabase()`. */
|
|
81
94
|
export interface IBDatabase {
|
|
82
95
|
readonly config: IBDatabaseConfig;
|
|
@@ -88,6 +101,43 @@ export interface IBDatabase {
|
|
|
88
101
|
hasCollection(collectionName: string): Promise<boolean>;
|
|
89
102
|
/** Deletes a collection and invalidates any handle still held on it. Rejects if it doesn't exist. */
|
|
90
103
|
dropCollection(collectionName: string): Promise<void>;
|
|
104
|
+
/**
|
|
105
|
+
* Flushes every loaded collection, then copies the whole database directory into a new, timestamped
|
|
106
|
+
* version folder under `targetDir` (created if needed). Blocks all other database operations for the
|
|
107
|
+
* duration. See {@link IBSnapshotOptions} for pruning older versions. Returns the new version folder's path.
|
|
108
|
+
*/
|
|
109
|
+
snapshot(targetDir: string, options?: IBSnapshotOptions): Promise<string>;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/** What kind of collection mutation a handler subscribes to via {@link IBCollection.on}. */
|
|
113
|
+
export enum EBModificationType {
|
|
114
|
+
/** A value was stored by `add()` (including an id-based overwrite). */
|
|
115
|
+
ADD = "ADD",
|
|
116
|
+
/** A value was replaced by `update()`. */
|
|
117
|
+
UPDATE = "UPDATE",
|
|
118
|
+
/** A value was removed by `delete()`. */
|
|
119
|
+
DELETE = "DELETE",
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/** Handler for {@link EBModificationType.ADD}: called with each value stored by `add()`. */
|
|
123
|
+
export type TAddHandler<T> = (added: T) => void | Promise<void>;
|
|
124
|
+
/** Handler for {@link EBModificationType.UPDATE}: called with the previous and the replacement value. */
|
|
125
|
+
export type TUpdateHandler<T> = (previous: T, updated: T) => void | Promise<void>;
|
|
126
|
+
/** Handler for {@link EBModificationType.DELETE}: called with each value removed by `delete()`. */
|
|
127
|
+
export type TDeleteHandler<T> = (deleted: T) => void | Promise<void>;
|
|
128
|
+
|
|
129
|
+
/** Handle returned by {@link IBCollection.on}. */
|
|
130
|
+
export interface IHandlerRegistration {
|
|
131
|
+
/** Unsubscribes the handler. Idempotent. */
|
|
132
|
+
cancel(): Promise<void>;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/** Whether a handler registered via {@link IBCollection.on} blocks the call that triggered it. */
|
|
136
|
+
export enum EBHandlerMode {
|
|
137
|
+
/** The triggering `add()`/`update()`/`delete()` call doesn't resolve until this handler has run. Default. */
|
|
138
|
+
SYNC = "SYNC",
|
|
139
|
+
/** The handler runs without the triggering call waiting for it. */
|
|
140
|
+
ASYNC = "ASYNC",
|
|
91
141
|
}
|
|
92
142
|
|
|
93
143
|
/** A single collection of values of type `T`. Obtain one via {@link IBDatabase}. */
|
|
@@ -109,6 +159,16 @@ export interface IBCollection<T = any> {
|
|
|
109
159
|
add(...v: T[]): Promise<number>;
|
|
110
160
|
/** Replaces each item matching `predicate` with the (defined) result of `updater`. Returns the number updated. */
|
|
111
161
|
update(predicate: (v: T) => boolean, updater: (v: T) => Promise<T>): Promise<number>;
|
|
162
|
+
/** Number of items, or only those matching `predicate`. */
|
|
163
|
+
count(predicate?: (v: T) => boolean): Promise<number>;
|
|
164
|
+
/** Items whose {@link IBCollectionConfig.indexes}-configured `indexKey` extracts `key`. Always a defensive copy. Throws if `indexKey` isn't configured. */
|
|
165
|
+
getByIndex(indexKey: string, key: string): Promise<T[]>;
|
|
166
|
+
/** Subscribes to `add()` mutations. Fires after the value is stored, including any auto-flush to disk. `mode` defaults to {@link EBHandlerMode.SYNC}. A handler's own errors never fail the triggering call; they're logged only. */
|
|
167
|
+
on(modificationType: EBModificationType.ADD, handler: TAddHandler<T>, mode?: EBHandlerMode): Promise<IHandlerRegistration>;
|
|
168
|
+
/** Subscribes to `update()` mutations. Fires after the value is replaced, including any auto-flush to disk. `mode` defaults to {@link EBHandlerMode.SYNC}. A handler's own errors never fail the triggering call; they're logged only. */
|
|
169
|
+
on(modificationType: EBModificationType.UPDATE, handler: TUpdateHandler<T>, mode?: EBHandlerMode): Promise<IHandlerRegistration>;
|
|
170
|
+
/** Subscribes to `delete()` mutations. Fires after the value is removed, including any auto-flush to disk. `mode` defaults to {@link EBHandlerMode.SYNC}. A handler's own errors never fail the triggering call; they're logged only. */
|
|
171
|
+
on(modificationType: EBModificationType.DELETE, handler: TDeleteHandler<T>, mode?: EBHandlerMode): Promise<IHandlerRegistration>;
|
|
112
172
|
|
|
113
173
|
/** Writes the current in-memory state to disk. */
|
|
114
174
|
flush(): Promise<void>;
|
|
@@ -116,6 +176,7 @@ export interface IBCollection<T = any> {
|
|
|
116
176
|
reload(): Promise<void>;
|
|
117
177
|
/** Evicts the in-memory state (per the dirty-unload strategy if there are unsaved changes). */
|
|
118
178
|
unload(): Promise<void>;
|
|
179
|
+
|
|
119
180
|
}
|
|
120
181
|
|
|
121
182
|
/** Resolves the custom id functions referenced by {@link IBCollectionConfig.getID}/`setID`. */
|