conftree 0.2.0 → 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.
Files changed (44) hide show
  1. package/README.md +42 -3
  2. package/dist/core/errors.d.ts +4 -1
  3. package/dist/core/errors.d.ts.map +1 -1
  4. package/dist/core/errors.js +7 -1
  5. package/dist/core/errors.js.map +1 -1
  6. package/dist/engine/resolver.d.ts +1 -0
  7. package/dist/engine/resolver.d.ts.map +1 -1
  8. package/dist/engine/resolver.js +1 -0
  9. package/dist/engine/resolver.js.map +1 -1
  10. package/dist/index.d.ts +1 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +1 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/index.mjs +93 -18
  15. package/dist/index.mjs.map +1 -1
  16. package/dist/storage/memory-storage.d.ts +3 -1
  17. package/dist/storage/memory-storage.d.ts.map +1 -1
  18. package/dist/storage/memory-storage.js +26 -5
  19. package/dist/storage/memory-storage.js.map +1 -1
  20. package/dist/storage/storage-port.d.ts +3 -1
  21. package/dist/storage/storage-port.d.ts.map +1 -1
  22. package/dist/typed/category-guard.d.ts +9 -0
  23. package/dist/typed/category-guard.d.ts.map +1 -0
  24. package/dist/typed/category-guard.js +23 -0
  25. package/dist/typed/category-guard.js.map +1 -0
  26. package/dist/typed/registry.d.ts +8 -3
  27. package/dist/typed/registry.d.ts.map +1 -1
  28. package/dist/typed/typed-auditor.d.ts +3 -1
  29. package/dist/typed/typed-auditor.d.ts.map +1 -1
  30. package/dist/typed/typed-auditor.js +5 -2
  31. package/dist/typed/typed-auditor.js.map +1 -1
  32. package/dist/typed/typed-engine.d.ts +2 -0
  33. package/dist/typed/typed-engine.d.ts.map +1 -1
  34. package/dist/typed/typed-engine.js +13 -5
  35. package/dist/typed/typed-engine.js.map +1 -1
  36. package/dist/typed/typed-resolver.d.ts +4 -1
  37. package/dist/typed/typed-resolver.d.ts.map +1 -1
  38. package/dist/typed/typed-resolver.js +12 -3
  39. package/dist/typed/typed-resolver.js.map +1 -1
  40. package/dist/typed/typed-writer.d.ts +3 -1
  41. package/dist/typed/typed-writer.d.ts.map +1 -1
  42. package/dist/typed/typed-writer.js +9 -4
  43. package/dist/typed/typed-writer.js.map +1 -1
  44. package/package.json +1 -1
package/README.md CHANGED
@@ -129,6 +129,44 @@ await resolver.get('ui.theme', { kind: 'user', refId: 'u1' }); // typed 'light'
129
129
 
130
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.
131
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
+
132
170
  ### Writing an adapter
133
171
 
134
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.
@@ -136,15 +174,16 @@ Implement `StorageAdapter`, `ScopeHierarchy`, or `ChangeBus`, all defined in `sr
136
174
  ## API
137
175
 
138
176
  - `createEngine(options?)`: returns `{ storage, hierarchy, bus, cache, resolver, writer, auditor }`.
139
- - `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? })`
140
178
  - `writer.set(params)`, `writer.setMany(paramsList)`, `writer.unset(params)`
141
179
  - `auditor.history(key, scope?)`
142
180
  - `storage.updateDefStatus(key, status)`
143
- - `createTypedEngine<Registry>(engine)`: returns `{ resolver, writer, auditor }` typed against your own key/value/scope registry.
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.
144
183
 
145
184
  ### Errors
146
185
 
147
- 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`.
148
187
 
149
188
  ## License
150
189
 
@@ -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;AAEX,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"}
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"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":";;;AASA,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"}
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,GAC5C,OAAO,CAAC,UAAU,CAAC;IAuBhB,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"}
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"}
@@ -20,6 +20,7 @@ class Resolver {
20
20
  const { values, nextCursor } = await this.storage.listValues({
21
21
  scopeKind: scope.kind,
22
22
  scopeRefId: scope.refId,
23
+ category: opts.category,
23
24
  limit: opts.limit,
24
25
  cursor: opts.cursor,
25
26
  });
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/engine/resolver.ts"],"names":[],"mappings":"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"}
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';
@@ -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 {
@@ -290,8 +298,11 @@ var MemoryStorageAdapter = class {
290
298
  }
291
299
  async listValues(query) {
292
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;
293
304
  const active = this.values.filter(
294
- (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)
295
306
  ).sort((a, b) => a.id.localeCompare(b.id));
296
307
  const startIndex = query.cursor ? active.findIndex((v) => v.id === query.cursor) + 1 : 0;
297
308
  const limit = query.limit ?? active.length - startIndex;
@@ -334,12 +345,20 @@ var MemoryStorageAdapter = class {
334
345
  this.defs = this.defs.map((d) => d === current ? updated : d);
335
346
  return updated;
336
347
  }
337
- async listDefs(status) {
338
- const rows = status ? this.defs.filter((d) => d.status === status) : this.defs;
339
- return [...rows].sort(
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(
340
353
  (a, b) => (a.category ?? "").localeCompare(b.category ?? "") || a.key.localeCompare(b.key)
341
354
  );
342
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
+ }
343
362
  async transact(fn) {
344
363
  const run = this.txQueue.then(async () => {
345
364
  const valuesSnapshot = structuredClone(this.values);
@@ -363,6 +382,14 @@ var MemoryStorageAdapter = class {
363
382
  latestVersion(key) {
364
383
  return this.defs.filter((d) => d.key === key).sort((a, b) => b.version - a.version)[0];
365
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
+ }
366
393
  tx() {
367
394
  return {
368
395
  findDef: async (key) => this.latestByStatus(key, ["STABLE"]) ?? null,
@@ -418,6 +445,7 @@ var Resolver = class {
418
445
  const { values, nextCursor } = await this.storage.listValues({
419
446
  scopeKind: scope.kind,
420
447
  scopeRefId: scope.refId,
448
+ category: opts.category,
421
449
  limit: opts.limit,
422
450
  cursor: opts.cursor
423
451
  });
@@ -845,64 +873,111 @@ function createEngine(options = {}) {
845
873
  return { storage, hierarchy, bus, cache, resolver, writer, auditor };
846
874
  }
847
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
+
848
895
  // src/typed/typed-resolver.ts
849
896
  var TypedResolver = class {
850
- constructor(resolver) {
897
+ constructor(resolver, fixedCategory, guard) {
851
898
  this.resolver = resolver;
899
+ this.fixedCategory = fixedCategory;
900
+ this.guard = guard;
852
901
  }
853
902
  resolver;
854
- get(key, scope, asOf) {
903
+ fixedCategory;
904
+ guard;
905
+ async get(key, scope, asOf) {
906
+ await this.guard?.assert(key);
855
907
  return this.resolver.get(key, scope, asOf);
856
908
  }
857
909
  async getMany(keys, scope, asOf) {
910
+ await this.guard?.assertAll(keys);
858
911
  const result = await this.resolver.getMany([...keys], scope, asOf);
859
912
  return result;
860
913
  }
861
914
  async listAt(scope, opts = {}) {
862
- const page = await this.resolver.listAt(scope, opts);
915
+ const page = await this.resolver.listAt(scope, {
916
+ ...opts,
917
+ category: this.fixedCategory
918
+ });
863
919
  return page;
864
920
  }
865
921
  };
866
922
 
867
923
  // src/typed/typed-writer.ts
868
924
  var TypedWriter = class {
869
- constructor(writer) {
925
+ constructor(writer, guard) {
870
926
  this.writer = writer;
927
+ this.guard = guard;
871
928
  }
872
929
  writer;
873
- set(params) {
930
+ guard;
931
+ async set(params) {
932
+ await this.guard?.assert(params.key);
874
933
  return this.writer.set(params);
875
934
  }
876
- setMany(paramsList) {
935
+ async setMany(paramsList) {
936
+ await this.guard?.assertAll(paramsList.map((p) => p.key));
877
937
  return this.writer.setMany(paramsList);
878
938
  }
879
- unset(params) {
939
+ async unset(params) {
940
+ await this.guard?.assert(params.key);
880
941
  return this.writer.unset(params);
881
942
  }
882
943
  };
883
944
 
884
945
  // src/typed/typed-auditor.ts
885
946
  var TypedAuditor = class {
886
- constructor(auditor) {
947
+ constructor(auditor, guard) {
887
948
  this.auditor = auditor;
949
+ this.guard = guard;
888
950
  }
889
951
  auditor;
890
- history(key, scope) {
952
+ guard;
953
+ async history(key, scope) {
954
+ await this.guard?.assert(key);
891
955
  return this.auditor.history(key, scope);
892
956
  }
893
957
  };
894
958
 
895
959
  // src/typed/typed-engine.ts
896
960
  function createTypedEngine(engine) {
897
- return {
898
- resolver: new TypedResolver(engine.resolver),
899
- writer: new TypedWriter(engine.writer),
900
- auditor: new TypedAuditor(engine.auditor)
901
- };
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();
902
975
  }
903
976
  export {
904
977
  Auditor,
905
978
  Cache,
979
+ CategoryError,
980
+ CategoryGuard,
906
981
  ConfTreeError,
907
982
  ConflictError,
908
983
  CorruptError,