conftree 0.1.1 → 0.3.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 +50 -3
- package/dist/cache/cache.d.ts +2 -0
- package/dist/cache/cache.d.ts.map +1 -1
- package/dist/cache/cache.js +5 -1
- package/dist/cache/cache.js.map +1 -1
- package/dist/cache/change-bus.d.ts +5 -2
- package/dist/cache/change-bus.d.ts.map +1 -1
- package/dist/cache/change-bus.js +3 -0
- package/dist/cache/change-bus.js.map +1 -1
- package/dist/core/errors.d.ts +4 -1
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +7 -1
- package/dist/core/errors.js.map +1 -1
- package/dist/engine/resolver.d.ts +1 -0
- package/dist/engine/resolver.d.ts.map +1 -1
- package/dist/engine/resolver.js +1 -0
- package/dist/engine/resolver.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +104 -20
- package/dist/index.mjs.map +1 -1
- package/dist/storage/memory-storage.d.ts +3 -1
- package/dist/storage/memory-storage.d.ts.map +1 -1
- package/dist/storage/memory-storage.js +30 -7
- package/dist/storage/memory-storage.js.map +1 -1
- package/dist/storage/storage-port.d.ts +3 -1
- package/dist/storage/storage-port.d.ts.map +1 -1
- package/dist/typed/category-guard.d.ts +9 -0
- package/dist/typed/category-guard.d.ts.map +1 -0
- package/dist/typed/category-guard.js +23 -0
- package/dist/typed/category-guard.js.map +1 -0
- package/dist/typed/registry.d.ts +8 -3
- package/dist/typed/registry.d.ts.map +1 -1
- package/dist/typed/typed-auditor.d.ts +3 -1
- package/dist/typed/typed-auditor.d.ts.map +1 -1
- package/dist/typed/typed-auditor.js +5 -2
- package/dist/typed/typed-auditor.js.map +1 -1
- package/dist/typed/typed-engine.d.ts +2 -0
- package/dist/typed/typed-engine.d.ts.map +1 -1
- package/dist/typed/typed-engine.js +13 -5
- package/dist/typed/typed-engine.js.map +1 -1
- package/dist/typed/typed-resolver.d.ts +4 -1
- package/dist/typed/typed-resolver.d.ts.map +1 -1
- package/dist/typed/typed-resolver.js +12 -3
- package/dist/typed/typed-resolver.js.map +1 -1
- package/dist/typed/typed-writer.d.ts +3 -1
- package/dist/typed/typed-writer.d.ts.map +1 -1
- package/dist/typed/typed-writer.js +9 -4
- package/dist/typed/typed-writer.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -81,6 +81,14 @@ const { resolver, writer } = createEngine({
|
|
|
81
81
|
});
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
+
If you create engines repeatedly against a shared, long-lived bus (e.g. a Redis-backed one in a server process), call `cache.dispose()` when an engine is no longer needed — otherwise its cache stays subscribed to the bus forever:
|
|
85
|
+
|
|
86
|
+
```ts
|
|
87
|
+
const { cache } = createEngine({ bus: sharedRedisBus });
|
|
88
|
+
// ...later, e.g. on module teardown:
|
|
89
|
+
cache.dispose();
|
|
90
|
+
```
|
|
91
|
+
|
|
84
92
|
### Value types
|
|
85
93
|
|
|
86
94
|
`BOOLEAN`, `NUMERIC`, `TEXT`, `ENUM`, `JSON`, `DATE`.
|
|
@@ -121,6 +129,44 @@ await resolver.get('ui.theme', { kind: 'user', refId: 'u1' }); // typed 'light'
|
|
|
121
129
|
|
|
122
130
|
`Registry` must be a plain interface/type (not `extends` anything with an index signature) for key-level narrowing to work — see `src/typed/registry.ts` for the `SettingValue`/`SettingScopeKind` helpers this is built on.
|
|
123
131
|
|
|
132
|
+
#### Scoping to a category
|
|
133
|
+
|
|
134
|
+
Tag registry entries with `category` (matching the `category` you pass to `storage.createDef`) to derive a fully-typed sub-engine for just that subset of keys — `get`/`set`/`unset` are narrowed at compile time, and `listAt` is filtered server-side (correct pagination, not a client-side `Array.filter`):
|
|
135
|
+
|
|
136
|
+
```ts
|
|
137
|
+
interface Registry {
|
|
138
|
+
'ui.theme': { value: 'light' | 'dark' | 'system'; scope: 'user' };
|
|
139
|
+
'chama.contributionAmount': {
|
|
140
|
+
value: number;
|
|
141
|
+
scope: 'group' | 'member';
|
|
142
|
+
category: 'chama';
|
|
143
|
+
};
|
|
144
|
+
'chama.currency': {
|
|
145
|
+
value: string;
|
|
146
|
+
scope: 'group' | 'member';
|
|
147
|
+
category: 'chama';
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
const engine = createTypedEngine<Registry>(createEngine());
|
|
152
|
+
const chama = engine.category('chama');
|
|
153
|
+
|
|
154
|
+
await chama.writer.set({
|
|
155
|
+
key: 'chama.contributionAmount', // 'ui.theme' would be a compile error here
|
|
156
|
+
scope: { kind: 'group', refId: 'g1' },
|
|
157
|
+
value: 5000,
|
|
158
|
+
authorId: 'admin',
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
await chama.resolver.listAt({ kind: 'group', refId: 'g1' });
|
|
162
|
+
// { entries: { 'chama.contributionAmount': 5000, 'chama.currency': 'KES' }, nextCursor: null }
|
|
163
|
+
// — only chama.* keys, even if other categories are also set at that scope
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
A key with no `category` in the registry (like `ui.theme` above) simply never shows up in any `category(...)` view.
|
|
167
|
+
|
|
168
|
+
`get`/`set`/`unset`/`history` on a `category(...)` accessor are narrowed at compile time — but if a caller bypasses that with `as any`, a runtime check still catches it and throws `CategoryError` (code `'CATEGORY'`) rather than silently touching a setting from another category.
|
|
169
|
+
|
|
124
170
|
### Writing an adapter
|
|
125
171
|
|
|
126
172
|
Implement `StorageAdapter`, `ScopeHierarchy`, or `ChangeBus`, all defined in `src/storage/storage-port.ts`, `src/core/types.ts`, and `src/cache/change-bus.ts`. `MemoryStorageAdapter` and `LocalScopeHierarchy` are the reference implementations.
|
|
@@ -128,15 +174,16 @@ Implement `StorageAdapter`, `ScopeHierarchy`, or `ChangeBus`, all defined in `sr
|
|
|
128
174
|
## API
|
|
129
175
|
|
|
130
176
|
- `createEngine(options?)`: returns `{ storage, hierarchy, bus, cache, resolver, writer, auditor }`.
|
|
131
|
-
- `resolver.get(key, scope, asOf?)`, `resolver.getMany(keys, scope, asOf?)`, `resolver.listAt(scope, { limit?, cursor? })`
|
|
177
|
+
- `resolver.get(key, scope, asOf?)`, `resolver.getMany(keys, scope, asOf?)`, `resolver.listAt(scope, { limit?, cursor?, category? })`
|
|
132
178
|
- `writer.set(params)`, `writer.setMany(paramsList)`, `writer.unset(params)`
|
|
133
179
|
- `auditor.history(key, scope?)`
|
|
134
180
|
- `storage.updateDefStatus(key, status)`
|
|
135
|
-
- `
|
|
181
|
+
- `storage.listDefs(status?, category?)`, `storage.listCategories()`
|
|
182
|
+
- `createTypedEngine<Registry>(engine)`: returns `{ resolver, writer, auditor, category(name) }` typed against your own key/value/scope/category registry. `category(name)` returns the same shape, narrowed to that category's keys.
|
|
136
183
|
|
|
137
184
|
### Errors
|
|
138
185
|
|
|
139
|
-
All errors extend `ConfTreeError` and carry a stable `code` (e.g. `'CONFLICT'`, `'NOT_FOUND'`), in addition to a specific class (`ConflictError`, `NotFoundError`, ...) and `name`.
|
|
186
|
+
All errors extend `ConfTreeError` and carry a stable `code` (e.g. `'CONFLICT'`, `'NOT_FOUND'`, `'CATEGORY'`), in addition to a specific class (`ConflictError`, `NotFoundError`, `CategoryError`, ...) and `name`.
|
|
140
187
|
|
|
141
188
|
## License
|
|
142
189
|
|
package/dist/cache/cache.d.ts
CHANGED
|
@@ -10,7 +10,9 @@ export declare class Cache {
|
|
|
10
10
|
private readonly options;
|
|
11
11
|
private readonly hierarchy?;
|
|
12
12
|
private readonly store;
|
|
13
|
+
private readonly listener;
|
|
13
14
|
constructor(bus: ChangeBus, options?: CacheOptions, hierarchy?: ScopeHierarchy | undefined);
|
|
15
|
+
dispose(): void;
|
|
14
16
|
get(key: string, scope: Scope): Value | undefined;
|
|
15
17
|
set(key: string, scope: Scope, value: Value): void;
|
|
16
18
|
drop(key: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/cache/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/cache/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAA+B,MAAM,cAAc,CAAC;AAE3E,MAAM,WAAW,YAAY;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAaD,qBAAa,KAAK;IAKhB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAN5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4B;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmD;gBAG1D,GAAG,EAAE,SAAS,EACd,OAAO,GAAE,YAAiB,EAC1B,SAAS,CAAC,EAAE,cAAc,YAAA;IAK5C,OAAO,IAAI,IAAI;IAIf,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS;IAYjD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAoBlD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMvB,OAAO,IAAI,IAAI;IAIf,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI;IAUlD,OAAO,CAAC,UAAU;YAaJ,QAAQ;IAatB,OAAO,CAAC,MAAM;CAGd"}
|
package/dist/cache/cache.js
CHANGED
|
@@ -8,11 +8,15 @@ class Cache {
|
|
|
8
8
|
options;
|
|
9
9
|
hierarchy;
|
|
10
10
|
store = new Map();
|
|
11
|
+
listener = (event) => this.onChange(event);
|
|
11
12
|
constructor(bus, options = {}, hierarchy) {
|
|
12
13
|
this.bus = bus;
|
|
13
14
|
this.options = options;
|
|
14
15
|
this.hierarchy = hierarchy;
|
|
15
|
-
this.bus.subscribe(
|
|
16
|
+
this.bus.subscribe(this.listener);
|
|
17
|
+
}
|
|
18
|
+
dispose() {
|
|
19
|
+
this.bus.unsubscribe(this.listener);
|
|
16
20
|
}
|
|
17
21
|
get(key, scope) {
|
|
18
22
|
if (this.options.enabled === false)
|
package/dist/cache/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/cache/cache.ts"],"names":[],"mappings":";;;AAiBA,MAAM,cAAc,GAAG,MAAM,CAAC;AAC9B,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEnC,MAAa,KAAK;
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/cache/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,13 +4,16 @@ export interface ChangeEvent {
|
|
|
4
4
|
scopeKind: string;
|
|
5
5
|
scopeRefId: string | null;
|
|
6
6
|
}
|
|
7
|
+
export type ChangeListener = (event: ChangeEvent) => void | Promise<void>;
|
|
7
8
|
export interface ChangeBus {
|
|
8
9
|
publish(event: ChangeEvent): Promise<void>;
|
|
9
|
-
subscribe(listener:
|
|
10
|
+
subscribe(listener: ChangeListener): void;
|
|
11
|
+
unsubscribe(listener: ChangeListener): void;
|
|
10
12
|
}
|
|
11
13
|
export declare class LocalBus implements ChangeBus {
|
|
12
14
|
private readonly listeners;
|
|
13
15
|
publish(event: ChangeEvent): Promise<void>;
|
|
14
|
-
subscribe(listener:
|
|
16
|
+
subscribe(listener: ChangeListener): void;
|
|
17
|
+
unsubscribe(listener: ChangeListener): void;
|
|
15
18
|
}
|
|
16
19
|
//# sourceMappingURL=change-bus.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-bus.d.ts","sourceRoot":"","sources":["../../src/cache/change-bus.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,SAAS;IACzB,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,SAAS,CAAC,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"change-bus.d.ts","sourceRoot":"","sources":["../../src/cache/change-bus.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1E,MAAM,WAAW,SAAS;IACzB,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,SAAS,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAC1C,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;CAC5C;AAED,qBAAa,QAAS,YAAW,SAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IAEjD,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhD,SAAS,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAIzC,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;CAG3C"}
|
package/dist/cache/change-bus.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-bus.js","sourceRoot":"","sources":["../../src/cache/change-bus.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"change-bus.js","sourceRoot":"","sources":["../../src/cache/change-bus.ts"],"names":[],"mappings":";;;AAeA,MAAa,QAAQ;IACH,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEvD,KAAK,CAAC,OAAO,CAAC,KAAkB;QAC/B,MAAM,OAAO,CAAC,GAAG,CAChB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACpC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAChC,CACD,CAAC;IACH,CAAC;IAED,SAAS,CAAC,QAAwB;QACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,WAAW,CAAC,QAAwB;QACnC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;CACD;AAlBD,4BAkBC"}
|
package/dist/core/errors.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type ErrorCode = 'NOT_FOUND' | 'SCOPE' | 'REQUIRED' | 'VALUE' | 'CONFLICT' | 'CORRUPT' | 'CYCLE';
|
|
1
|
+
export type ErrorCode = 'NOT_FOUND' | 'SCOPE' | 'REQUIRED' | 'VALUE' | 'CONFLICT' | 'CORRUPT' | 'CYCLE' | 'CATEGORY';
|
|
2
2
|
export declare class ConfTreeError extends Error {
|
|
3
3
|
readonly code: ErrorCode;
|
|
4
4
|
constructor(message: string, code: ErrorCode);
|
|
@@ -24,4 +24,7 @@ export declare class CorruptError extends ConfTreeError {
|
|
|
24
24
|
export declare class CycleError extends ConfTreeError {
|
|
25
25
|
constructor(id: string, newParentId: string);
|
|
26
26
|
}
|
|
27
|
+
export declare class CategoryError extends ConfTreeError {
|
|
28
|
+
constructor(key: string, expectedCategory: string, actualCategory: string | null);
|
|
29
|
+
}
|
|
27
30
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAClB,WAAW,GACX,OAAO,GACP,UAAU,GACV,OAAO,GACP,UAAU,GACV,SAAS,GACT,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAClB,WAAW,GACX,OAAO,GACP,UAAU,GACV,OAAO,GACP,UAAU,GACV,SAAS,GACT,OAAO,GACP,UAAU,CAAC;AAEd,qBAAa,aAAc,SAAQ,KAAK;aAGtB,IAAI,EAAE,SAAS;gBAD/B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,SAAS;CAMhC;AAED,qBAAa,aAAc,SAAQ,aAAa;gBACnC,GAAG,EAAE,MAAM;CAGvB;AAED,qBAAa,UAAW,SAAQ,aAAa;gBAChC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAM1C;AAED,qBAAa,aAAc,SAAQ,aAAa;gBACnC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;CAOrE;AAED,qBAAa,UAAW,SAAQ,aAAa;gBAChC,OAAO,EAAE,MAAM;CAG3B;AAED,qBAAa,aAAc,SAAQ,aAAa;gBACnC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;CAOrE;AAED,qBAAa,YAAa,SAAQ,aAAa;gBAClC,OAAO,EAAE,MAAM;CAM3B;AAED,qBAAa,UAAW,SAAQ,aAAa;gBAChC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAM3C;AAED,qBAAa,aAAc,SAAQ,aAAa;gBAE9C,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,GAAG,IAAI;CAO9B"}
|
package/dist/core/errors.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CycleError = exports.CorruptError = exports.ConflictError = exports.ValueError = exports.RequiredError = exports.ScopeError = exports.NotFoundError = exports.ConfTreeError = void 0;
|
|
3
|
+
exports.CategoryError = exports.CycleError = exports.CorruptError = exports.ConflictError = exports.ValueError = exports.RequiredError = exports.ScopeError = exports.NotFoundError = exports.ConfTreeError = void 0;
|
|
4
4
|
class ConfTreeError extends Error {
|
|
5
5
|
code;
|
|
6
6
|
constructor(message, code) {
|
|
@@ -55,4 +55,10 @@ class CycleError extends ConfTreeError {
|
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
exports.CycleError = CycleError;
|
|
58
|
+
class CategoryError extends ConfTreeError {
|
|
59
|
+
constructor(key, expectedCategory, actualCategory) {
|
|
60
|
+
super(`Setting "${key}" belongs to category "${actualCategory ?? 'none'}", not "${expectedCategory}"`, 'CATEGORY');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.CategoryError = CategoryError;
|
|
58
64
|
//# sourceMappingURL=errors.js.map
|
package/dist/core/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":";;;AAUA,MAAa,aAAc,SAAQ,KAAK;IAGtB;IAFjB,YACC,OAAe,EACC,IAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,SAAI,GAAJ,IAAI,CAAW;QAG/B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,KAAK,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;CACD;AATD,sCASC;AAED,MAAa,aAAc,SAAQ,aAAa;IAC/C,YAAY,GAAW;QACtB,KAAK,CAAC,gCAAgC,GAAG,GAAG,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC;CACD;AAJD,sCAIC;AAED,MAAa,UAAW,SAAQ,aAAa;IAC5C,YAAY,GAAW,EAAE,SAAiB;QACzC,KAAK,CACJ,YAAY,GAAG,0CAA0C,SAAS,GAAG,EACrE,OAAO,CACP,CAAC;IACH,CAAC;CACD;AAPD,gCAOC;AAED,MAAa,aAAc,SAAQ,aAAa;IAC/C,YAAY,GAAW,EAAE,SAAiB,EAAE,UAAyB;QACpE,KAAK,CACJ,qBAAqB,GAAG,uCAAuC,SAAS,IAAI,UAAU,IAAI,MAAM,GAAG;YAClG,2BAA2B,EAC5B,UAAU,CACV,CAAC;IACH,CAAC;CACD;AARD,sCAQC;AAED,MAAa,UAAW,SAAQ,aAAa;IAC5C,YAAY,OAAe;QAC1B,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzB,CAAC;CACD;AAJD,gCAIC;AAED,MAAa,aAAc,SAAQ,aAAa;IAC/C,YAAY,GAAW,EAAE,SAAiB,EAAE,UAAyB;QACpE,KAAK,CACJ,YAAY,GAAG,cAAc,SAAS,IAAI,UAAU,IAAI,MAAM,8BAA8B;YAC3F,qCAAqC,EACtC,UAAU,CACV,CAAC;IACH,CAAC;CACD;AARD,sCAQC;AAED,MAAa,YAAa,SAAQ,aAAa;IAC9C,YAAY,OAAe;QAC1B,KAAK,CACJ,qBAAqB,OAAO,0CAA0C,EACtE,SAAS,CACT,CAAC;IACH,CAAC;CACD;AAPD,oCAOC;AAED,MAAa,UAAW,SAAQ,aAAa;IAC5C,YAAY,EAAU,EAAE,WAAmB;QAC1C,KAAK,CACJ,6BAA6B,EAAE,YAAY,WAAW,yBAAyB,EAC/E,OAAO,CACP,CAAC;IACH,CAAC;CACD;AAPD,gCAOC;AAED,MAAa,aAAc,SAAQ,aAAa;IAC/C,YACC,GAAW,EACX,gBAAwB,EACxB,cAA6B;QAE7B,KAAK,CACJ,YAAY,GAAG,0BAA0B,cAAc,IAAI,MAAM,WAAW,gBAAgB,GAAG,EAC/F,UAAU,CACV,CAAC;IACH,CAAC;CACD;AAXD,sCAWC"}
|
|
@@ -14,6 +14,7 @@ export declare class Resolver {
|
|
|
14
14
|
listAt(scope: Scope, opts?: {
|
|
15
15
|
limit?: number;
|
|
16
16
|
cursor?: string;
|
|
17
|
+
category?: string;
|
|
17
18
|
}): Promise<ListAtPage>;
|
|
18
19
|
getMany(keys: string[], scope: Scope, asOf?: Date): Promise<Record<string, Value>>;
|
|
19
20
|
private resolveMissing;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/engine/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEX,KAAK,EACL,cAAc,EACd,KAAK,EAEL,MAAM,eAAe,CAAC;AAQvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,WAAW,UAAU;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,qBAAa,QAAQ;IAEnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAFN,OAAO,EAAE,aAAa,EACtB,SAAS,CAAC,EAAE,cAAc,YAAA,EAC1B,KAAK,CAAC,EAAE,KAAK,YAAA;IAGzB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;IAK3D,MAAM,CACX,KAAK,EAAE,KAAK,EACZ,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/engine/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEX,KAAK,EACL,cAAc,EACd,KAAK,EAEL,MAAM,eAAe,CAAC;AAQvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,WAAW,UAAU;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,qBAAa,QAAQ;IAEnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAFN,OAAO,EAAE,aAAa,EACtB,SAAS,CAAC,EAAE,cAAc,YAAA,EAC1B,KAAK,CAAC,EAAE,KAAK,YAAA;IAGzB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;IAK3D,MAAM,CACX,KAAK,EAAE,KAAK,EACZ,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO,GAC/D,OAAO,CAAC,UAAU,CAAC;IAwBhB,OAAO,CACZ,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,KAAK,EACZ,IAAI,CAAC,EAAE,IAAI,GACT,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAwGnB,cAAc;YA+Bd,OAAO;IASrB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,MAAM;CAoBd"}
|
package/dist/engine/resolver.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/engine/resolver.ts"],"names":[],"mappings":";;;AAOA,yCAA8C;AAC9C,2CAKwB;AASxB,MAAa,QAAQ;IAEF;IACA;IACA;IAHlB,YACkB,OAAsB,EACtB,SAA0B,EAC1B,KAAa;QAFb,YAAO,GAAP,OAAO,CAAe;QACtB,cAAS,GAAT,SAAS,CAAiB;QAC1B,UAAK,GAAL,KAAK,CAAQ;IAC5B,CAAC;IAEJ,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAY,EAAE,IAAW;QAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,MAAM,CACX,KAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/engine/resolver.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export * from './engine/auditor';
|
|
|
11
11
|
export * from './engine/hierarchy-cache-sync';
|
|
12
12
|
export * from './engine/engine';
|
|
13
13
|
export * from './typed/registry';
|
|
14
|
+
export * from './typed/category-guard';
|
|
14
15
|
export * from './typed/typed-resolver';
|
|
15
16
|
export * from './typed/typed-writer';
|
|
16
17
|
export * from './typed/typed-auditor';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -27,6 +27,7 @@ __exportStar(require("./engine/auditor"), exports);
|
|
|
27
27
|
__exportStar(require("./engine/hierarchy-cache-sync"), exports);
|
|
28
28
|
__exportStar(require("./engine/engine"), exports);
|
|
29
29
|
__exportStar(require("./typed/registry"), exports);
|
|
30
|
+
__exportStar(require("./typed/category-guard"), exports);
|
|
30
31
|
__exportStar(require("./typed/typed-resolver"), exports);
|
|
31
32
|
__exportStar(require("./typed/typed-writer"), exports);
|
|
32
33
|
__exportStar(require("./typed/typed-auditor"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,gDAA8B;AAC9B,qDAAmC;AACnC,gDAA8B;AAC9B,8DAA4C;AAC5C,yDAAuC;AACvC,2DAAyC;AACzC,oDAAkC;AAClC,kDAAgC;AAChC,mDAAiC;AACjC,gEAA8C;AAC9C,kDAAgC;AAChC,mDAAiC;AACjC,yDAAuC;AACvC,uDAAqC;AACrC,wDAAsC;AACtC,uDAAqC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,gDAA8B;AAC9B,qDAAmC;AACnC,gDAA8B;AAC9B,8DAA4C;AAC5C,yDAAuC;AACvC,2DAAyC;AACzC,oDAAkC;AAClC,kDAAgC;AAChC,mDAAiC;AACjC,gEAA8C;AAC9C,kDAAgC;AAChC,mDAAiC;AACjC,yDAAuC;AACvC,yDAAuC;AACvC,uDAAqC;AACrC,wDAAsC;AACtC,uDAAqC"}
|
package/dist/index.mjs
CHANGED
|
@@ -61,6 +61,14 @@ var CycleError = class extends ConfTreeError {
|
|
|
61
61
|
);
|
|
62
62
|
}
|
|
63
63
|
};
|
|
64
|
+
var CategoryError = class extends ConfTreeError {
|
|
65
|
+
constructor(key, expectedCategory, actualCategory) {
|
|
66
|
+
super(
|
|
67
|
+
`Setting "${key}" belongs to category "${actualCategory ?? "none"}", not "${expectedCategory}"`,
|
|
68
|
+
"CATEGORY"
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
64
72
|
|
|
65
73
|
// src/cache/change-bus.ts
|
|
66
74
|
var LocalBus = class {
|
|
@@ -75,6 +83,9 @@ var LocalBus = class {
|
|
|
75
83
|
subscribe(listener) {
|
|
76
84
|
this.listeners.add(listener);
|
|
77
85
|
}
|
|
86
|
+
unsubscribe(listener) {
|
|
87
|
+
this.listeners.delete(listener);
|
|
88
|
+
}
|
|
78
89
|
};
|
|
79
90
|
|
|
80
91
|
// src/cache/cache.ts
|
|
@@ -85,12 +96,16 @@ var Cache = class {
|
|
|
85
96
|
this.bus = bus;
|
|
86
97
|
this.options = options;
|
|
87
98
|
this.hierarchy = hierarchy;
|
|
88
|
-
this.bus.subscribe(
|
|
99
|
+
this.bus.subscribe(this.listener);
|
|
89
100
|
}
|
|
90
101
|
bus;
|
|
91
102
|
options;
|
|
92
103
|
hierarchy;
|
|
93
104
|
store = /* @__PURE__ */ new Map();
|
|
105
|
+
listener = (event) => this.onChange(event);
|
|
106
|
+
dispose() {
|
|
107
|
+
this.bus.unsubscribe(this.listener);
|
|
108
|
+
}
|
|
94
109
|
get(key, scope) {
|
|
95
110
|
if (this.options.enabled === false) return void 0;
|
|
96
111
|
const cacheKey = this.keyFor(key, scope);
|
|
@@ -283,8 +298,11 @@ var MemoryStorageAdapter = class {
|
|
|
283
298
|
}
|
|
284
299
|
async listValues(query) {
|
|
285
300
|
const now = /* @__PURE__ */ new Date();
|
|
301
|
+
const categoryDefIds = query.category !== void 0 ? new Set(
|
|
302
|
+
this.defs.filter((d) => d.category === query.category).map((d) => d.id)
|
|
303
|
+
) : null;
|
|
286
304
|
const active = this.values.filter(
|
|
287
|
-
(v) => v.scopeKind === query.scopeKind && v.scopeRefId === query.scopeRefId && v.validFrom <= now && (v.validTo === null || v.validTo > now)
|
|
305
|
+
(v) => v.scopeKind === query.scopeKind && v.scopeRefId === query.scopeRefId && (categoryDefIds === null || categoryDefIds.has(v.definitionId)) && v.validFrom <= now && (v.validTo === null || v.validTo > now)
|
|
288
306
|
).sort((a, b) => a.id.localeCompare(b.id));
|
|
289
307
|
const startIndex = query.cursor ? active.findIndex((v) => v.id === query.cursor) + 1 : 0;
|
|
290
308
|
const limit = query.limit ?? active.length - startIndex;
|
|
@@ -327,12 +345,20 @@ var MemoryStorageAdapter = class {
|
|
|
327
345
|
this.defs = this.defs.map((d) => d === current ? updated : d);
|
|
328
346
|
return updated;
|
|
329
347
|
}
|
|
330
|
-
async listDefs(status) {
|
|
331
|
-
const rows =
|
|
332
|
-
|
|
348
|
+
async listDefs(status, category) {
|
|
349
|
+
const rows = this.allLatestVersions().filter(
|
|
350
|
+
(d) => (status === void 0 || d.status === status) && (category === void 0 || d.category === category)
|
|
351
|
+
);
|
|
352
|
+
return rows.sort(
|
|
333
353
|
(a, b) => (a.category ?? "").localeCompare(b.category ?? "") || a.key.localeCompare(b.key)
|
|
334
354
|
);
|
|
335
355
|
}
|
|
356
|
+
async listCategories() {
|
|
357
|
+
const categories = new Set(
|
|
358
|
+
this.allLatestVersions().map((d) => d.category).filter((c) => c !== null)
|
|
359
|
+
);
|
|
360
|
+
return [...categories].sort();
|
|
361
|
+
}
|
|
336
362
|
async transact(fn) {
|
|
337
363
|
const run = this.txQueue.then(async () => {
|
|
338
364
|
const valuesSnapshot = structuredClone(this.values);
|
|
@@ -356,6 +382,14 @@ var MemoryStorageAdapter = class {
|
|
|
356
382
|
latestVersion(key) {
|
|
357
383
|
return this.defs.filter((d) => d.key === key).sort((a, b) => b.version - a.version)[0];
|
|
358
384
|
}
|
|
385
|
+
allLatestVersions() {
|
|
386
|
+
const byKey = /* @__PURE__ */ new Map();
|
|
387
|
+
for (const d of this.defs) {
|
|
388
|
+
const current = byKey.get(d.key);
|
|
389
|
+
if (!current || d.version > current.version) byKey.set(d.key, d);
|
|
390
|
+
}
|
|
391
|
+
return [...byKey.values()];
|
|
392
|
+
}
|
|
359
393
|
tx() {
|
|
360
394
|
return {
|
|
361
395
|
findDef: async (key) => this.latestByStatus(key, ["STABLE"]) ?? null,
|
|
@@ -364,7 +398,9 @@ var MemoryStorageAdapter = class {
|
|
|
364
398
|
) ?? null,
|
|
365
399
|
closeValue: async (id) => {
|
|
366
400
|
const row = this.values.find((v) => v.id === id);
|
|
367
|
-
if (row)
|
|
401
|
+
if (!row) return;
|
|
402
|
+
const closed = { ...row, validTo: /* @__PURE__ */ new Date() };
|
|
403
|
+
this.values = this.values.map((v) => v === row ? closed : v);
|
|
368
404
|
},
|
|
369
405
|
createValue: async (input) => {
|
|
370
406
|
const record = {
|
|
@@ -409,6 +445,7 @@ var Resolver = class {
|
|
|
409
445
|
const { values, nextCursor } = await this.storage.listValues({
|
|
410
446
|
scopeKind: scope.kind,
|
|
411
447
|
scopeRefId: scope.refId,
|
|
448
|
+
category: opts.category,
|
|
412
449
|
limit: opts.limit,
|
|
413
450
|
cursor: opts.cursor
|
|
414
451
|
});
|
|
@@ -836,64 +873,111 @@ function createEngine(options = {}) {
|
|
|
836
873
|
return { storage, hierarchy, bus, cache, resolver, writer, auditor };
|
|
837
874
|
}
|
|
838
875
|
|
|
876
|
+
// src/typed/category-guard.ts
|
|
877
|
+
var CategoryGuard = class {
|
|
878
|
+
constructor(storage, category) {
|
|
879
|
+
this.storage = storage;
|
|
880
|
+
this.category = category;
|
|
881
|
+
}
|
|
882
|
+
storage;
|
|
883
|
+
category;
|
|
884
|
+
async assert(key) {
|
|
885
|
+
const def = await this.storage.findAnyDef(key);
|
|
886
|
+
if (def && def.category !== this.category) {
|
|
887
|
+
throw new CategoryError(key, this.category, def.category);
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
async assertAll(keys) {
|
|
891
|
+
await Promise.all([...keys].map((key) => this.assert(key)));
|
|
892
|
+
}
|
|
893
|
+
};
|
|
894
|
+
|
|
839
895
|
// src/typed/typed-resolver.ts
|
|
840
896
|
var TypedResolver = class {
|
|
841
|
-
constructor(resolver) {
|
|
897
|
+
constructor(resolver, fixedCategory, guard) {
|
|
842
898
|
this.resolver = resolver;
|
|
899
|
+
this.fixedCategory = fixedCategory;
|
|
900
|
+
this.guard = guard;
|
|
843
901
|
}
|
|
844
902
|
resolver;
|
|
845
|
-
|
|
903
|
+
fixedCategory;
|
|
904
|
+
guard;
|
|
905
|
+
async get(key, scope, asOf) {
|
|
906
|
+
await this.guard?.assert(key);
|
|
846
907
|
return this.resolver.get(key, scope, asOf);
|
|
847
908
|
}
|
|
848
909
|
async getMany(keys, scope, asOf) {
|
|
910
|
+
await this.guard?.assertAll(keys);
|
|
849
911
|
const result = await this.resolver.getMany([...keys], scope, asOf);
|
|
850
912
|
return result;
|
|
851
913
|
}
|
|
852
914
|
async listAt(scope, opts = {}) {
|
|
853
|
-
const page = await this.resolver.listAt(scope,
|
|
915
|
+
const page = await this.resolver.listAt(scope, {
|
|
916
|
+
...opts,
|
|
917
|
+
category: this.fixedCategory
|
|
918
|
+
});
|
|
854
919
|
return page;
|
|
855
920
|
}
|
|
856
921
|
};
|
|
857
922
|
|
|
858
923
|
// src/typed/typed-writer.ts
|
|
859
924
|
var TypedWriter = class {
|
|
860
|
-
constructor(writer) {
|
|
925
|
+
constructor(writer, guard) {
|
|
861
926
|
this.writer = writer;
|
|
927
|
+
this.guard = guard;
|
|
862
928
|
}
|
|
863
929
|
writer;
|
|
864
|
-
|
|
930
|
+
guard;
|
|
931
|
+
async set(params) {
|
|
932
|
+
await this.guard?.assert(params.key);
|
|
865
933
|
return this.writer.set(params);
|
|
866
934
|
}
|
|
867
|
-
setMany(paramsList) {
|
|
935
|
+
async setMany(paramsList) {
|
|
936
|
+
await this.guard?.assertAll(paramsList.map((p) => p.key));
|
|
868
937
|
return this.writer.setMany(paramsList);
|
|
869
938
|
}
|
|
870
|
-
unset(params) {
|
|
939
|
+
async unset(params) {
|
|
940
|
+
await this.guard?.assert(params.key);
|
|
871
941
|
return this.writer.unset(params);
|
|
872
942
|
}
|
|
873
943
|
};
|
|
874
944
|
|
|
875
945
|
// src/typed/typed-auditor.ts
|
|
876
946
|
var TypedAuditor = class {
|
|
877
|
-
constructor(auditor) {
|
|
947
|
+
constructor(auditor, guard) {
|
|
878
948
|
this.auditor = auditor;
|
|
949
|
+
this.guard = guard;
|
|
879
950
|
}
|
|
880
951
|
auditor;
|
|
881
|
-
|
|
952
|
+
guard;
|
|
953
|
+
async history(key, scope) {
|
|
954
|
+
await this.guard?.assert(key);
|
|
882
955
|
return this.auditor.history(key, scope);
|
|
883
956
|
}
|
|
884
957
|
};
|
|
885
958
|
|
|
886
959
|
// src/typed/typed-engine.ts
|
|
887
960
|
function createTypedEngine(engine) {
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
961
|
+
function build(fixedCategory) {
|
|
962
|
+
const guard = fixedCategory ? new CategoryGuard(engine.storage, fixedCategory) : void 0;
|
|
963
|
+
return {
|
|
964
|
+
resolver: new TypedResolver(
|
|
965
|
+
engine.resolver,
|
|
966
|
+
fixedCategory,
|
|
967
|
+
guard
|
|
968
|
+
),
|
|
969
|
+
writer: new TypedWriter(engine.writer, guard),
|
|
970
|
+
auditor: new TypedAuditor(engine.auditor, guard),
|
|
971
|
+
category: (category) => build(category)
|
|
972
|
+
};
|
|
973
|
+
}
|
|
974
|
+
return build();
|
|
893
975
|
}
|
|
894
976
|
export {
|
|
895
977
|
Auditor,
|
|
896
978
|
Cache,
|
|
979
|
+
CategoryError,
|
|
980
|
+
CategoryGuard,
|
|
897
981
|
ConfTreeError,
|
|
898
982
|
ConflictError,
|
|
899
983
|
CorruptError,
|