conftree 0.1.0 → 0.1.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.
@@ -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;YA8Bd,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,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"}
@@ -133,6 +133,7 @@ class Resolver {
133
133
  definitionIds: missing.map((d) => d.id),
134
134
  scopeKind: types_1.DEFAULT_SCOPE.kind,
135
135
  scopeRefId: types_1.DEFAULT_SCOPE.refId,
136
+ asOf,
136
137
  });
137
138
  const defaultByDef = new Map(defaultRows.map((r) => [r.definitionId, r]));
138
139
  const missingIds = new Set(missing.map((d) => d.id));
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/engine/writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAO1E,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,SAAS;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,qBAAa,MAAM;IAEjB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;gBADJ,OAAO,EAAE,cAAc,EACvB,GAAG,CAAC,EAAE,SAAS,YAAA;IAG3B,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ5C,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YAchD,OAAO;IA8Df,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;YAOjC,SAAS;YA8CT,IAAI;IASlB,OAAO,CAAC,QAAQ;IA4DhB,OAAO,CAAC,UAAU;CAoBlB"}
1
+ {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/engine/writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAO1E,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,SAAS;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,qBAAa,MAAM;IAEjB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;gBADJ,OAAO,EAAE,cAAc,EACvB,GAAG,CAAC,EAAE,SAAS,YAAA;IAG3B,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ5C,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YAchD,OAAO;IA8Df,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;YAOjC,SAAS;YA8CT,IAAI;IAalB,OAAO,CAAC,QAAQ;IAiEhB,OAAO,CAAC,UAAU;CAoBlB"}
@@ -102,12 +102,17 @@ class Writer {
102
102
  return current;
103
103
  }
104
104
  async emit(created, key) {
105
- await this.bus?.publish({
106
- definitionId: created.definitionId,
107
- key,
108
- scopeKind: created.scopeKind,
109
- scopeRefId: created.scopeRefId,
110
- });
105
+ try {
106
+ await this.bus?.publish({
107
+ definitionId: created.definitionId,
108
+ key,
109
+ scopeKind: created.scopeKind,
110
+ scopeRefId: created.scopeRefId,
111
+ });
112
+ }
113
+ catch (err) {
114
+ console.error('conftree: change bus publish failed', err);
115
+ }
111
116
  }
112
117
  validate(def, value) {
113
118
  switch (def.type) {
@@ -138,14 +143,19 @@ class Writer {
138
143
  throw new errors_1.ValueError(`Setting "${def.key}" must be one of: ${def.options.join(', ')}`);
139
144
  }
140
145
  break;
141
- case 'JSON':
146
+ case 'JSON': {
147
+ let serialized;
142
148
  try {
143
- JSON.stringify(value);
149
+ serialized = JSON.stringify(value);
144
150
  }
145
151
  catch {
152
+ serialized = undefined;
153
+ }
154
+ if (serialized === undefined) {
146
155
  throw new errors_1.ValueError(`Setting "${def.key}" expects a JSON-serializable value`);
147
156
  }
148
157
  break;
158
+ }
149
159
  case 'DATE':
150
160
  if (!(value instanceof Date) || Number.isNaN(value.getTime())) {
151
161
  throw new errors_1.ValueError(`Setting "${def.key}" expects a valid Date`);
@@ -1 +1 @@
1
- {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/engine/writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/engine/writer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scope-hierarchy.d.ts","sourceRoot":"","sources":["../../src/hierarchy/scope-hierarchy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,qBAAa,mBAAoB,YAAW,cAAc;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;IAEvD,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAapC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAe1C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIvC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI1C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1D,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWvC,OAAO,CAAC,QAAQ;YAMF,aAAa;CAW3B"}
1
+ {"version":3,"file":"scope-hierarchy.d.ts","sourceRoot":"","sources":["../../src/hierarchy/scope-hierarchy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,qBAAa,mBAAoB,YAAW,cAAc;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;IAEvD,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAapC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAe1C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIvC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI1C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1D,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWvC,OAAO,CAAC,QAAQ;YAMF,aAAa;CAW3B"}
@@ -43,6 +43,9 @@ class LocalScopeHierarchy {
43
43
  async attach(id, parentId) {
44
44
  if (parentId !== null)
45
45
  await this.assertNoCycle(id, parentId);
46
+ const oldParent = this.parentOf.get(id) ?? null;
47
+ if (oldParent !== null)
48
+ this.childrenOf.get(oldParent)?.delete(id);
46
49
  this.parentOf.set(id, parentId);
47
50
  if (parentId !== null)
48
51
  this.addChild(parentId, id);
@@ -1 +1 @@
1
- {"version":3,"file":"scope-hierarchy.js","sourceRoot":"","sources":["../../src/hierarchy/scope-hierarchy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope-hierarchy.js","sourceRoot":"","sources":["../../src/hierarchy/scope-hierarchy.ts"],"names":[],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -196,6 +196,8 @@ var LocalScopeHierarchy = class {
196
196
  }
197
197
  async attach(id, parentId) {
198
198
  if (parentId !== null) await this.assertNoCycle(id, parentId);
199
+ const oldParent = this.parentOf.get(id) ?? null;
200
+ if (oldParent !== null) this.childrenOf.get(oldParent)?.delete(id);
199
201
  this.parentOf.set(id, parentId);
200
202
  if (parentId !== null) this.addChild(parentId, id);
201
203
  if (!this.childrenOf.has(id)) this.childrenOf.set(id, /* @__PURE__ */ new Set());
@@ -321,8 +323,9 @@ var MemoryStorageAdapter = class {
321
323
  async updateDefStatus(key, status) {
322
324
  const current = this.latestVersion(key);
323
325
  if (!current) throw new NotFoundError(key);
324
- current.status = status;
325
- return current;
326
+ const updated = { ...current, status };
327
+ this.defs = this.defs.map((d) => d === current ? updated : d);
328
+ return updated;
326
329
  }
327
330
  async listDefs(status) {
328
331
  const rows = status ? this.defs.filter((d) => d.status === status) : this.defs;
@@ -331,7 +334,17 @@ var MemoryStorageAdapter = class {
331
334
  );
332
335
  }
333
336
  async transact(fn) {
334
- const run = this.txQueue.then(() => fn(this.tx()));
337
+ const run = this.txQueue.then(async () => {
338
+ const valuesSnapshot = structuredClone(this.values);
339
+ const auditLogSnapshot = structuredClone(this.auditLog);
340
+ try {
341
+ return await fn(this.tx());
342
+ } catch (err) {
343
+ this.values = valuesSnapshot;
344
+ this.auditLog = auditLogSnapshot;
345
+ throw err;
346
+ }
347
+ });
335
348
  this.txQueue = run.catch(() => {
336
349
  });
337
350
  return run;
@@ -500,7 +513,8 @@ var Resolver = class {
500
513
  const defaultRows = await this.storage.findValues({
501
514
  definitionIds: missing.map((d) => d.id),
502
515
  scopeKind: DEFAULT_SCOPE.kind,
503
- scopeRefId: DEFAULT_SCOPE.refId
516
+ scopeRefId: DEFAULT_SCOPE.refId,
517
+ asOf
504
518
  });
505
519
  const defaultByDef = new Map(
506
520
  defaultRows.map((r) => [r.definitionId, r])
@@ -670,12 +684,16 @@ var Writer = class {
670
684
  return current;
671
685
  }
672
686
  async emit(created, key) {
673
- await this.bus?.publish({
674
- definitionId: created.definitionId,
675
- key,
676
- scopeKind: created.scopeKind,
677
- scopeRefId: created.scopeRefId
678
- });
687
+ try {
688
+ await this.bus?.publish({
689
+ definitionId: created.definitionId,
690
+ key,
691
+ scopeKind: created.scopeKind,
692
+ scopeRefId: created.scopeRefId
693
+ });
694
+ } catch (err) {
695
+ console.error("conftree: change bus publish failed", err);
696
+ }
679
697
  }
680
698
  validate(def, value) {
681
699
  switch (def.type) {
@@ -718,15 +736,20 @@ var Writer = class {
718
736
  );
719
737
  }
720
738
  break;
721
- case "JSON":
739
+ case "JSON": {
740
+ let serialized;
722
741
  try {
723
- JSON.stringify(value);
742
+ serialized = JSON.stringify(value);
724
743
  } catch {
744
+ serialized = void 0;
745
+ }
746
+ if (serialized === void 0) {
725
747
  throw new ValueError(
726
748
  `Setting "${def.key}" expects a JSON-serializable value`
727
749
  );
728
750
  }
729
751
  break;
752
+ }
730
753
  case "DATE":
731
754
  if (!(value instanceof Date) || Number.isNaN(value.getTime())) {
732
755
  throw new ValueError(
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/types.ts","../src/core/errors.ts","../src/cache/change-bus.ts","../src/cache/cache.ts","../src/hierarchy/scope-hierarchy.ts","../src/storage/memory-storage.ts","../src/engine/resolver.ts","../src/engine/writer.ts","../src/engine/auditor.ts","../src/engine/hierarchy-cache-sync.ts","../src/engine/engine.ts","../src/typed/typed-resolver.ts","../src/typed/typed-writer.ts","../src/typed/typed-auditor.ts","../src/typed/typed-engine.ts"],"sourcesContent":["export type JsonValue =\n\t| null\n\t| boolean\n\t| number\n\t| string\n\t| JsonValue[]\n\t| { [key: string]: JsonValue };\n\nexport type Value = Date | JsonValue;\n\nexport interface Scope {\n\tkind: string;\n\trefId: string | null;\n}\n\nexport const DEFAULT_SCOPE: Scope = { kind: 'default', refId: null };\n\nexport type ValueType =\n\t'BOOLEAN' | 'NUMERIC' | 'TEXT' | 'ENUM' | 'JSON' | 'DATE';\n\nexport type Inherit = 'LOCKED' | 'INHERITABLE_OVERRIDABLE' | 'INDEPENDENT';\n\nexport type Status = 'DRAFT' | 'STABLE' | 'DEPRECATED' | 'RETIRED';\n\nexport interface DefRecord {\n\tid: string;\n\tkey: string;\n\tversion: number;\n\tlabel: string;\n\tdescription: string | null;\n\ttype: ValueType;\n\toptions: string[];\n\tmin: number | null;\n\tmax: number | null;\n\tscopes: string[];\n\tinherit: Inherit;\n\trequired: boolean;\n\tsecret: boolean;\n\tstatus: Status;\n\tcategory: string | null;\n}\n\nexport interface ValueRecord {\n\tid: string;\n\tdefinitionId: string;\n\tscopeKind: string;\n\tscopeRefId: string | null;\n\tbool: boolean | null;\n\tnum: number | null;\n\ttext: string | null;\n\tjson: unknown;\n\tjsonSet: boolean;\n\tdate: Date | null;\n\tversion: number;\n}\n\nexport interface ScopeHierarchy {\n\tchain(scopeRefId: string): Promise<string[]>;\n\tdescendants(scopeRefId: string): Promise<string[]>;\n\tchildren(scopeRefId: string): Promise<string[]>;\n\tparent(scopeRefId: string): Promise<string | null>;\n\tattach(id: string, parentId: string | null): Promise<void>;\n\tmove(id: string, newParentId: string | null): Promise<void>;\n\tdetach(id: string): Promise<void>;\n}\n","export type ErrorCode =\n\t| 'NOT_FOUND'\n\t| 'SCOPE'\n\t| 'REQUIRED'\n\t| 'VALUE'\n\t| 'CONFLICT'\n\t| 'CORRUPT'\n\t| 'CYCLE';\n\nexport class ConfTreeError extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\tpublic readonly code: ErrorCode,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = new.target.name;\n\t\tError.captureStackTrace?.(this, new.target);\n\t}\n}\n\nexport class NotFoundError extends ConfTreeError {\n\tconstructor(key: string) {\n\t\tsuper(`Unknown setting definition: \"${key}\"`, 'NOT_FOUND');\n\t}\n}\n\nexport class ScopeError extends ConfTreeError {\n\tconstructor(key: string, scopeKind: string) {\n\t\tsuper(\n\t\t\t`Setting \"${key}\" cannot be set or read at scope kind \"${scopeKind}\"`,\n\t\t\t'SCOPE',\n\t\t);\n\t}\n}\n\nexport class RequiredError extends ConfTreeError {\n\tconstructor(key: string, scopeKind: string, scopeRefId: string | null) {\n\t\tsuper(\n\t\t\t`Required setting \"${key}\" has no resolvable value for scope ${scopeKind}:${scopeRefId ?? 'null'} ` +\n\t\t\t\t`and no default is defined`,\n\t\t\t'REQUIRED',\n\t\t);\n\t}\n}\n\nexport class ValueError extends ConfTreeError {\n\tconstructor(message: string) {\n\t\tsuper(message, 'VALUE');\n\t}\n}\n\nexport class ConflictError extends ConfTreeError {\n\tconstructor(key: string, scopeKind: string, scopeRefId: string | null) {\n\t\tsuper(\n\t\t\t`Setting \"${key}\" at scope ${scopeKind}:${scopeRefId ?? 'null'} was modified concurrently. ` +\n\t\t\t\t`Reload the current value and retry.`,\n\t\t\t'CONFLICT',\n\t\t);\n\t}\n}\n\nexport class CorruptError extends ConfTreeError {\n\tconstructor(valueId: string) {\n\t\tsuper(\n\t\t\t`setting value row ${valueId} has no typed value set: data corruption`,\n\t\t\t'CORRUPT',\n\t\t);\n\t}\n}\n\nexport class CycleError extends ConfTreeError {\n\tconstructor(id: string, newParentId: string) {\n\t\tsuper(\n\t\t\t`Cannot attach/move scope \"${id}\" under \"${newParentId}\": would create a cycle`,\n\t\t\t'CYCLE',\n\t\t);\n\t}\n}\n","export interface ChangeEvent {\n\tdefinitionId: string;\n\tkey: string;\n\tscopeKind: string;\n\tscopeRefId: string | null;\n}\n\nexport interface ChangeBus {\n\tpublish(event: ChangeEvent): Promise<void>;\n\tsubscribe(listener: (event: ChangeEvent) => void | Promise<void>): void;\n}\n\nexport class LocalBus implements ChangeBus {\n\tprivate readonly listeners = new Set<\n\t\t(event: ChangeEvent) => void | Promise<void>\n\t>();\n\n\tasync publish(event: ChangeEvent): Promise<void> {\n\t\tawait Promise.all(\n\t\t\t[...this.listeners].map((listener) =>\n\t\t\t\tPromise.resolve(listener(event)),\n\t\t\t),\n\t\t);\n\t}\n\n\tsubscribe(listener: (event: ChangeEvent) => void | Promise<void>): void {\n\t\tthis.listeners.add(listener);\n\t}\n}\n","import type { Scope, ScopeHierarchy, Value } from '../core/types';\nimport type { ChangeBus, ChangeEvent } from './change-bus';\n\nexport interface CacheOptions {\n\tenabled?: boolean;\n\tttlMs?: number;\n\tmaxEntries?: number;\n}\n\ninterface Entry {\n\tkey: string;\n\tscopeKind: string;\n\tscopeRefId: string | null;\n\tvalue: Value;\n\texpiresAt: number;\n}\n\nconst DEFAULT_TTL_MS = 30_000;\nconst DEFAULT_MAX_ENTRIES = 50_000;\n\nexport class Cache {\n\tprivate readonly store = new Map<string, Entry>();\n\n\tconstructor(\n\t\tprivate readonly bus: ChangeBus,\n\t\tprivate readonly options: CacheOptions = {},\n\t\tprivate readonly hierarchy?: ScopeHierarchy,\n\t) {\n\t\tthis.bus.subscribe((event) => this.onChange(event));\n\t}\n\n\tget(key: string, scope: Scope): Value | undefined {\n\t\tif (this.options.enabled === false) return undefined;\n\t\tconst cacheKey = this.keyFor(key, scope);\n\t\tconst entry = this.store.get(cacheKey);\n\t\tif (!entry) return undefined;\n\t\tif (entry.expiresAt <= Date.now()) {\n\t\t\tthis.store.delete(cacheKey);\n\t\t\treturn undefined;\n\t\t}\n\t\treturn entry.value;\n\t}\n\n\tset(key: string, scope: Scope, value: Value): void {\n\t\tif (this.options.enabled === false) return;\n\t\tconst cacheKey = this.keyFor(key, scope);\n\t\tif (\n\t\t\t!this.store.has(cacheKey) &&\n\t\t\tthis.store.size >= (this.options.maxEntries ?? DEFAULT_MAX_ENTRIES)\n\t\t) {\n\t\t\tconst oldest = this.store.keys().next().value;\n\t\t\tif (oldest !== undefined) this.store.delete(oldest);\n\t\t}\n\t\tconst ttlMs = this.options.ttlMs ?? DEFAULT_TTL_MS;\n\t\tthis.store.set(cacheKey, {\n\t\t\tkey,\n\t\t\tscopeKind: scope.kind,\n\t\t\tscopeRefId: scope.refId,\n\t\t\tvalue,\n\t\t\texpiresAt: Date.now() + ttlMs,\n\t\t});\n\t}\n\n\tdrop(key: string): void {\n\t\tfor (const [cacheKey, entry] of this.store) {\n\t\t\tif (entry.key === key) this.store.delete(cacheKey);\n\t\t}\n\t}\n\n\tdropAll(): void {\n\t\tthis.store.clear();\n\t}\n\n\tdropForScopes(scopeRefIds: Iterable<string>): void {\n\t\tconst targets = new Set(scopeRefIds);\n\t\tif (targets.size === 0) return;\n\t\tfor (const [cacheKey, entry] of this.store) {\n\t\t\tif (entry.scopeRefId !== null && targets.has(entry.scopeRefId)) {\n\t\t\t\tthis.store.delete(cacheKey);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate dropScoped(key: string, scopeRefIds: Iterable<string>): void {\n\t\tconst targets = new Set(scopeRefIds);\n\t\tfor (const [cacheKey, entry] of this.store) {\n\t\t\tif (\n\t\t\t\tentry.key === key &&\n\t\t\t\tentry.scopeRefId !== null &&\n\t\t\t\ttargets.has(entry.scopeRefId)\n\t\t\t) {\n\t\t\t\tthis.store.delete(cacheKey);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async onChange(event: ChangeEvent): Promise<void> {\n\t\tif (this.hierarchy && event.scopeRefId !== null) {\n\t\t\tconst descendants = await this.hierarchy\n\t\t\t\t.descendants(event.scopeRefId)\n\t\t\t\t.catch(() => null);\n\t\t\tif (descendants !== null) {\n\t\t\t\tthis.dropScoped(event.key, descendants);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tthis.drop(event.key);\n\t}\n\n\tprivate keyFor(key: string, scope: Scope): string {\n\t\treturn JSON.stringify([key, scope.kind, scope.refId]);\n\t}\n}\n","import { CycleError } from '../core/errors';\nimport type { ScopeHierarchy } from '../core/types';\n\nexport class LocalScopeHierarchy implements ScopeHierarchy {\n\tprivate readonly parentOf = new Map<string, string | null>();\n\tprivate readonly childrenOf = new Map<string, Set<string>>();\n\n\tasync chain(id: string): Promise<string[]> {\n\t\tconst result: string[] = [];\n\t\tconst seen = new Set<string>();\n\t\tlet current: string | null = id;\n\t\twhile (current !== null) {\n\t\t\tif (seen.has(current)) break;\n\t\t\tseen.add(current);\n\t\t\tresult.push(current);\n\t\t\tcurrent = this.parentOf.get(current) ?? null;\n\t\t}\n\t\treturn result;\n\t}\n\n\tasync descendants(id: string): Promise<string[]> {\n\t\tconst result: string[] = [];\n\t\tconst stack = [id];\n\t\tconst seen = new Set<string>();\n\t\twhile (stack.length > 0) {\n\t\t\tconst current = stack.pop()!;\n\t\t\tif (seen.has(current)) continue;\n\t\t\tseen.add(current);\n\t\t\tresult.push(current);\n\t\t\tconst kids = this.childrenOf.get(current);\n\t\t\tif (kids) stack.push(...kids);\n\t\t}\n\t\treturn result;\n\t}\n\n\tasync children(id: string): Promise<string[]> {\n\t\treturn [...(this.childrenOf.get(id) ?? [])];\n\t}\n\n\tasync parent(id: string): Promise<string | null> {\n\t\treturn this.parentOf.get(id) ?? null;\n\t}\n\n\tasync attach(id: string, parentId: string | null): Promise<void> {\n\t\tif (parentId !== null) await this.assertNoCycle(id, parentId);\n\t\tthis.parentOf.set(id, parentId);\n\t\tif (parentId !== null) this.addChild(parentId, id);\n\t\tif (!this.childrenOf.has(id)) this.childrenOf.set(id, new Set());\n\t}\n\n\tasync move(id: string, newParentId: string | null): Promise<void> {\n\t\tif (newParentId !== null) await this.assertNoCycle(id, newParentId);\n\t\tconst oldParent = this.parentOf.get(id) ?? null;\n\t\tif (oldParent !== null) this.childrenOf.get(oldParent)?.delete(id);\n\t\tthis.parentOf.set(id, newParentId);\n\t\tif (newParentId !== null) this.addChild(newParentId, id);\n\t}\n\n\tasync detach(id: string): Promise<void> {\n\t\tconst parentId = this.parentOf.get(id) ?? null;\n\t\tconst kids = [...(this.childrenOf.get(id) ?? [])];\n\t\tfor (const kid of kids) {\n\t\t\tawait this.move(kid, parentId);\n\t\t}\n\t\tif (parentId !== null) this.childrenOf.get(parentId)?.delete(id);\n\t\tthis.parentOf.delete(id);\n\t\tthis.childrenOf.delete(id);\n\t}\n\n\tprivate addChild(parentId: string, id: string): void {\n\t\tif (!this.childrenOf.has(parentId))\n\t\t\tthis.childrenOf.set(parentId, new Set());\n\t\tthis.childrenOf.get(parentId)!.add(id);\n\t}\n\n\tprivate async assertNoCycle(\n\t\tid: string,\n\t\tnewParentId: string,\n\t): Promise<void> {\n\t\tif (\n\t\t\tid === newParentId ||\n\t\t\t(await this.chain(newParentId)).includes(id)\n\t\t) {\n\t\t\tthrow new CycleError(id, newParentId);\n\t\t}\n\t}\n}\n","import type {\n\tAuditRecord,\n\tCreateAuditInput,\n\tCreateDefInput,\n\tCreateValueInput,\n\tFindAuditQuery,\n\tFindChainQuery,\n\tFindValuesQuery,\n\tListValuesQuery,\n\tListValuesResult,\n\tStorageAdapter,\n\tStorageTx,\n} from './storage-port';\nimport type {\n\tDefRecord,\n\tStatus,\n\tValue,\n\tValueRecord,\n\tValueType,\n} from '../core/types';\nimport { NotFoundError } from '../core/errors';\n\ninterface StoredValue extends ValueRecord {\n\tvalidFrom: Date;\n\tvalidTo: Date | null;\n}\n\nfunction toTypedColumns(type: ValueType, value: Value) {\n\treturn {\n\t\tbool: type === 'BOOLEAN' ? (value as boolean) : null,\n\t\tnum: type === 'NUMERIC' ? (value as number) : null,\n\t\ttext: type === 'TEXT' || type === 'ENUM' ? (value as string) : null,\n\t\tjson: type === 'JSON' ? value : null,\n\t\tjsonSet: type === 'JSON',\n\t\tdate: type === 'DATE' ? (value as Date) : null,\n\t};\n}\n\nexport class MemoryStorageAdapter implements StorageAdapter {\n\tprivate defs: DefRecord[] = [];\n\tprivate values: StoredValue[] = [];\n\tprivate auditLog: AuditRecord[] = [];\n\tprivate nextId = 1;\n\tprivate txQueue: Promise<unknown> = Promise.resolve();\n\n\tprivate newId(prefix: string): string {\n\t\treturn `${prefix}-${this.nextId++}`;\n\t}\n\n\tasync findDefs(keys: string[]): Promise<DefRecord[]> {\n\t\tconst result: DefRecord[] = [];\n\t\tfor (const key of keys) {\n\t\t\tconst found = this.latestByStatus(key, ['STABLE', 'DEPRECATED']);\n\t\t\tif (found) result.push(found);\n\t\t}\n\t\treturn result;\n\t}\n\n\tasync findValues(query: FindValuesQuery): Promise<ValueRecord[]> {\n\t\tconst asOf = query.asOf ?? new Date();\n\t\tconst ids = new Set(query.definitionIds);\n\t\treturn this.values.filter(\n\t\t\t(v) =>\n\t\t\t\tids.has(v.definitionId) &&\n\t\t\t\tv.scopeKind === query.scopeKind &&\n\t\t\t\tv.scopeRefId === query.scopeRefId &&\n\t\t\t\tv.validFrom <= asOf &&\n\t\t\t\t(v.validTo === null || v.validTo > asOf),\n\t\t);\n\t}\n\n\tasync findChainValues(query: FindChainQuery): Promise<ValueRecord[]> {\n\t\tconst asOf = query.asOf ?? new Date();\n\t\tconst defIds = new Set(query.definitionIds);\n\t\tconst refIds = new Set(query.chain);\n\t\treturn this.values.filter(\n\t\t\t(v) =>\n\t\t\t\tdefIds.has(v.definitionId) &&\n\t\t\t\tv.scopeRefId !== null &&\n\t\t\t\trefIds.has(v.scopeRefId) &&\n\t\t\t\tv.validFrom <= asOf &&\n\t\t\t\t(v.validTo === null || v.validTo > asOf),\n\t\t);\n\t}\n\n\tasync findDefsByIds(ids: string[]): Promise<DefRecord[]> {\n\t\tconst idSet = new Set(ids);\n\t\treturn this.defs.filter((d) => idSet.has(d.id));\n\t}\n\n\tasync findAnyDef(key: string): Promise<DefRecord | null> {\n\t\treturn this.latestVersion(key) ?? null;\n\t}\n\n\tasync listValues(query: ListValuesQuery): Promise<ListValuesResult> {\n\t\tconst now = new Date();\n\t\tconst active = this.values\n\t\t\t.filter(\n\t\t\t\t(v) =>\n\t\t\t\t\tv.scopeKind === query.scopeKind &&\n\t\t\t\t\tv.scopeRefId === query.scopeRefId &&\n\t\t\t\t\tv.validFrom <= now &&\n\t\t\t\t\t(v.validTo === null || v.validTo > now),\n\t\t\t)\n\t\t\t.sort((a, b) => a.id.localeCompare(b.id));\n\n\t\tconst startIndex = query.cursor\n\t\t\t? active.findIndex((v) => v.id === query.cursor) + 1\n\t\t\t: 0;\n\t\tconst limit = query.limit ?? active.length - startIndex;\n\t\tconst page = active.slice(startIndex, startIndex + limit);\n\t\tconst nextCursor =\n\t\t\tstartIndex + page.length < active.length\n\t\t\t\t? (page[page.length - 1]?.id ?? null)\n\t\t\t\t: null;\n\n\t\treturn { values: page, nextCursor };\n\t}\n\n\tasync findAudit(query: FindAuditQuery): Promise<AuditRecord[]> {\n\t\treturn this.auditLog\n\t\t\t.filter(\n\t\t\t\t(a) =>\n\t\t\t\t\ta.definitionId === query.definitionId &&\n\t\t\t\t\t(query.scopeKind === undefined ||\n\t\t\t\t\t\ta.scopeKind === query.scopeKind) &&\n\t\t\t\t\t(query.scopeRefId === undefined ||\n\t\t\t\t\t\ta.scopeRefId === query.scopeRefId),\n\t\t\t)\n\t\t\t.sort((a, b) => a.at.getTime() - b.at.getTime());\n\t}\n\n\tasync createDef(input: CreateDefInput): Promise<DefRecord> {\n\t\tconst existingVersions = this.defs.filter((d) => d.key === input.key);\n\t\tconst version =\n\t\t\texistingVersions.length > 0\n\t\t\t\t? Math.max(...existingVersions.map((d) => d.version)) + 1\n\t\t\t\t: 1;\n\t\tconst record: DefRecord = {\n\t\t\tid: this.newId('def'),\n\t\t\tkey: input.key,\n\t\t\tversion,\n\t\t\tlabel: input.label,\n\t\t\tdescription: input.description ?? null,\n\t\t\ttype: input.type,\n\t\t\toptions: input.options ?? [],\n\t\t\tmin: input.min ?? null,\n\t\t\tmax: input.max ?? null,\n\t\t\tscopes: input.scopes,\n\t\t\tinherit: input.inherit,\n\t\t\trequired: input.required,\n\t\t\tsecret: input.secret ?? false,\n\t\t\tstatus: input.status ?? 'DRAFT',\n\t\t\tcategory: input.category ?? null,\n\t\t};\n\t\tthis.defs.push(record);\n\t\treturn record;\n\t}\n\n\tasync updateDefStatus(key: string, status: Status): Promise<DefRecord> {\n\t\tconst current = this.latestVersion(key);\n\t\tif (!current) throw new NotFoundError(key);\n\n\t\tcurrent.status = status;\n\t\treturn current;\n\t}\n\n\tasync listDefs(status?: Status): Promise<DefRecord[]> {\n\t\tconst rows = status\n\t\t\t? this.defs.filter((d) => d.status === status)\n\t\t\t: this.defs;\n\t\treturn [...rows].sort(\n\t\t\t(a, b) =>\n\t\t\t\t(a.category ?? '').localeCompare(b.category ?? '') ||\n\t\t\t\ta.key.localeCompare(b.key),\n\t\t);\n\t}\n\n\tasync transact<T>(fn: (tx: StorageTx) => Promise<T>): Promise<T> {\n\t\tconst run = this.txQueue.then(() => fn(this.tx()));\n\t\tthis.txQueue = run.catch(() => {});\n\t\treturn run;\n\t}\n\n\tprivate latestByStatus(\n\t\tkey: string,\n\t\tstatuses: Status[],\n\t): DefRecord | undefined {\n\t\tconst latest = this.latestVersion(key);\n\t\treturn latest && statuses.includes(latest.status) ? latest : undefined;\n\t}\n\n\tprivate latestVersion(key: string): DefRecord | undefined {\n\t\treturn this.defs\n\t\t\t.filter((d) => d.key === key)\n\t\t\t.sort((a, b) => b.version - a.version)[0];\n\t}\n\n\tprivate tx(): StorageTx {\n\t\treturn {\n\t\t\tfindDef: async (key: string) =>\n\t\t\t\tthis.latestByStatus(key, ['STABLE']) ?? null,\n\n\t\t\tfindValue: async (definitionId, scopeKind, scopeRefId) =>\n\t\t\t\tthis.values.find(\n\t\t\t\t\t(v) =>\n\t\t\t\t\t\tv.definitionId === definitionId &&\n\t\t\t\t\t\tv.scopeKind === scopeKind &&\n\t\t\t\t\t\tv.scopeRefId === scopeRefId &&\n\t\t\t\t\t\tv.validTo === null,\n\t\t\t\t) ?? null,\n\n\t\t\tcloseValue: async (id: string) => {\n\t\t\t\tconst row = this.values.find((v) => v.id === id);\n\t\t\t\tif (row) row.validTo = new Date();\n\t\t\t},\n\n\t\t\tcreateValue: async (input: CreateValueInput) => {\n\t\t\t\tconst record: StoredValue = {\n\t\t\t\t\tid: this.newId('val'),\n\t\t\t\t\tdefinitionId: input.definitionId,\n\t\t\t\t\tscopeKind: input.scopeKind,\n\t\t\t\t\tscopeRefId: input.scopeRefId,\n\t\t\t\t\tversion: input.version,\n\t\t\t\t\tvalidFrom: new Date(),\n\t\t\t\t\tvalidTo: null,\n\t\t\t\t\t...toTypedColumns(input.type, input.value),\n\t\t\t\t};\n\t\t\t\tthis.values.push(record);\n\t\t\t\treturn record;\n\t\t\t},\n\n\t\t\tcreateAudit: async (input: CreateAuditInput): Promise<void> => {\n\t\t\t\tthis.auditLog.push({\n\t\t\t\t\t...input,\n\t\t\t\t\tid: this.newId('audit'),\n\t\t\t\t\tat: new Date(),\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n}\n","import type {\n\tDefRecord,\n\tScope,\n\tScopeHierarchy,\n\tValue,\n\tValueRecord,\n} from '../core/types';\nimport { DEFAULT_SCOPE } from '../core/types';\nimport {\n\tCorruptError,\n\tRequiredError,\n\tScopeError,\n\tNotFoundError,\n} from '../core/errors';\nimport type { StorageReader } from '../storage/storage-port';\nimport type { Cache } from '../cache/cache';\n\nexport interface ListAtPage {\n\tentries: Record<string, Value>;\n\tnextCursor: string | null;\n}\n\nexport class Resolver {\n\tconstructor(\n\t\tprivate readonly storage: StorageReader,\n\t\tprivate readonly hierarchy?: ScopeHierarchy,\n\t\tprivate readonly cache?: Cache,\n\t) {}\n\n\tasync get(key: string, scope: Scope, asOf?: Date): Promise<Value> {\n\t\tconst result = await this.getMany([key], scope, asOf);\n\t\treturn result[key];\n\t}\n\n\tasync listAt(\n\t\tscope: Scope,\n\t\topts: { limit?: number; cursor?: string } = {},\n\t): Promise<ListAtPage> {\n\t\tconst { values, nextCursor } = await this.storage.listValues({\n\t\t\tscopeKind: scope.kind,\n\t\t\tscopeRefId: scope.refId,\n\t\t\tlimit: opts.limit,\n\t\t\tcursor: opts.cursor,\n\t\t});\n\t\tif (values.length === 0) return { entries: {}, nextCursor };\n\n\t\tconst defs = await this.storage.findDefsByIds([\n\t\t\t...new Set(values.map((v) => v.definitionId)),\n\t\t]);\n\t\tconst defById = new Map(defs.map((d) => [d.id, d]));\n\n\t\tconst entries: Record<string, Value> = {};\n\t\tfor (const row of values) {\n\t\t\tconst def = defById.get(row.definitionId);\n\t\t\tif (!def) continue;\n\t\t\tentries[def.key] = this.unwrap(def, row);\n\t\t}\n\t\treturn { entries, nextCursor };\n\t}\n\n\tasync getMany(\n\t\tkeys: string[],\n\t\tscope: Scope,\n\t\tasOf?: Date,\n\t): Promise<Record<string, Value>> {\n\t\tconst uniqueKeys = [...new Set(keys)];\n\t\tconst result: Record<string, Value> = {};\n\t\tconst uncached: string[] = [];\n\n\t\tif (asOf === undefined) {\n\t\t\tfor (const key of uniqueKeys) {\n\t\t\t\tconst cached = this.cache?.get(key, scope);\n\t\t\t\tif (cached !== undefined) result[key] = cached;\n\t\t\t\telse uncached.push(key);\n\t\t\t}\n\t\t} else {\n\t\t\tuncached.push(...uniqueKeys);\n\t\t}\n\t\tif (uncached.length === 0) return result;\n\n\t\tconst defByKey = await this.getDefs(uncached);\n\t\tfor (const key of uncached) {\n\t\t\tthis.checkScope(defByKey.get(key)!, scope);\n\t\t}\n\n\t\tconst exactDefs: DefRecord[] = [];\n\t\tconst chainDefs: DefRecord[] = [];\n\t\tfor (const key of uncached) {\n\t\t\tconst def = defByKey.get(key)!;\n\t\t\tconst climbsHierarchy =\n\t\t\t\tdef.inherit !== 'INDEPENDENT' &&\n\t\t\t\tscope.refId !== null &&\n\t\t\t\tthis.hierarchy;\n\t\t\t(climbsHierarchy ? chainDefs : exactDefs).push(def);\n\t\t}\n\n\t\tconst chain =\n\t\t\tchainDefs.length > 0 && scope.refId !== null && this.hierarchy\n\t\t\t\t? await this.hierarchy.chain(scope.refId)\n\t\t\t\t: [];\n\n\t\tconst [exactRows, chainRows] = await Promise.all([\n\t\t\texactDefs.length > 0\n\t\t\t\t? this.storage.findValues({\n\t\t\t\t\t\tdefinitionIds: exactDefs.map((d) => d.id),\n\t\t\t\t\t\tscopeKind: scope.kind,\n\t\t\t\t\t\tscopeRefId: scope.refId,\n\t\t\t\t\t\tasOf,\n\t\t\t\t\t})\n\t\t\t\t: Promise.resolve([] as ValueRecord[]),\n\t\t\tchainDefs.length > 0 && chain.length > 0\n\t\t\t\t? this.storage.findChainValues({\n\t\t\t\t\t\tdefinitionIds: chainDefs.map((d) => d.id),\n\t\t\t\t\t\tchain,\n\t\t\t\t\t\tasOf,\n\t\t\t\t\t})\n\t\t\t\t: Promise.resolve([] as ValueRecord[]),\n\t\t]);\n\n\t\tconst exactByDef = new Map(exactRows.map((r) => [r.definitionId, r]));\n\t\tconst chainByDef = new Map<string, ValueRecord[]>();\n\t\tfor (const row of chainRows) {\n\t\t\tconst list = chainByDef.get(row.definitionId) ?? [];\n\t\t\tlist.push(row);\n\t\t\tchainByDef.set(row.definitionId, list);\n\t\t}\n\t\tconst chainDefIds = new Set(chainDefs.map((d) => d.id));\n\n\t\tconst missing: DefRecord[] = [];\n\t\tfor (const key of uncached) {\n\t\t\tconst def = defByKey.get(key)!;\n\t\t\tlet row: ValueRecord | undefined;\n\t\t\tif (chainDefIds.has(def.id)) {\n\t\t\t\tconst byRef = new Map(\n\t\t\t\t\t(chainByDef.get(def.id) ?? []).map((v) => [\n\t\t\t\t\t\tv.scopeRefId,\n\t\t\t\t\t\tv,\n\t\t\t\t\t]),\n\t\t\t\t);\n\t\t\t\tfor (const ref of chain) {\n\t\t\t\t\trow = byRef.get(ref);\n\t\t\t\t\tif (row) break;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\trow = exactByDef.get(def.id);\n\t\t\t}\n\t\t\tif (row) {\n\t\t\t\tresult[key] = this.unwrap(def, row);\n\t\t\t\tif (asOf === undefined)\n\t\t\t\t\tthis.cache?.set(key, scope, result[key]);\n\t\t\t} else {\n\t\t\t\tmissing.push(def);\n\t\t\t}\n\t\t}\n\n\t\tif (missing.length > 0)\n\t\t\tawait this.resolveMissing(\n\t\t\t\tmissing,\n\t\t\t\tscope,\n\t\t\t\tuncached,\n\t\t\t\tdefByKey,\n\t\t\t\tresult,\n\t\t\t\tasOf,\n\t\t\t);\n\n\t\treturn result;\n\t}\n\n\tprivate async resolveMissing(\n\t\tmissing: DefRecord[],\n\t\tscope: Scope,\n\t\tkeysInOrder: string[],\n\t\tdefByKey: Map<string, DefRecord>,\n\t\tresult: Record<string, Value>,\n\t\tasOf?: Date,\n\t): Promise<void> {\n\t\tconst defaultRows = await this.storage.findValues({\n\t\t\tdefinitionIds: missing.map((d) => d.id),\n\t\t\tscopeKind: DEFAULT_SCOPE.kind,\n\t\t\tscopeRefId: DEFAULT_SCOPE.refId,\n\t\t});\n\t\tconst defaultByDef = new Map(\n\t\t\tdefaultRows.map((r) => [r.definitionId, r]),\n\t\t);\n\t\tconst missingIds = new Set(missing.map((d) => d.id));\n\n\t\tfor (const key of keysInOrder) {\n\t\t\tconst def = defByKey.get(key)!;\n\t\t\tif (!missingIds.has(def.id)) continue;\n\t\t\tconst row = defaultByDef.get(def.id);\n\t\t\tif (!row) {\n\t\t\t\tthrow new RequiredError(def.key, scope.kind, scope.refId);\n\t\t\t}\n\t\t\tresult[key] = this.unwrap(def, row);\n\t\t\tif (asOf === undefined) this.cache?.set(key, scope, result[key]);\n\t\t}\n\t}\n\n\tprivate async getDefs(keys: string[]): Promise<Map<string, DefRecord>> {\n\t\tconst defs = await this.storage.findDefs(keys);\n\t\tconst byKey = new Map(defs.map((d) => [d.key, d]));\n\t\tfor (const key of keys) {\n\t\t\tif (!byKey.has(key)) throw new NotFoundError(key);\n\t\t}\n\t\treturn byKey;\n\t}\n\n\tprivate checkScope(def: DefRecord, scope: Scope): void {\n\t\tif (scope.kind === 'default') return;\n\t\tif (!def.scopes.includes(scope.kind)) {\n\t\t\tthrow new ScopeError(def.key, scope.kind);\n\t\t}\n\t}\n\n\tprivate unwrap(def: DefRecord, row: ValueRecord): Value {\n\t\tswitch (def.type) {\n\t\t\tcase 'BOOLEAN':\n\t\t\t\tif (row.bool === null) throw new CorruptError(row.id);\n\t\t\t\treturn row.bool;\n\t\t\tcase 'NUMERIC':\n\t\t\t\tif (row.num === null) throw new CorruptError(row.id);\n\t\t\t\treturn row.num;\n\t\t\tcase 'TEXT':\n\t\t\tcase 'ENUM':\n\t\t\t\tif (row.text === null) throw new CorruptError(row.id);\n\t\t\t\treturn row.text;\n\t\t\tcase 'JSON':\n\t\t\t\tif (!row.jsonSet) throw new CorruptError(row.id);\n\t\t\t\treturn row.json as Value;\n\t\t\tcase 'DATE':\n\t\t\t\tif (row.date === null) throw new CorruptError(row.id);\n\t\t\t\treturn row.date;\n\t\t}\n\t}\n}\n","import type { DefRecord, Scope, Value, ValueRecord } from '../core/types';\nimport {\n\tConflictError,\n\tScopeError,\n\tValueError,\n\tNotFoundError,\n} from '../core/errors';\nimport type { StorageAdapter, StorageTx } from '../storage/storage-port';\nimport type { ChangeBus } from '../cache/change-bus';\n\nexport interface SetParams {\n\tkey: string;\n\tscope: Scope;\n\tvalue: Value;\n\texpectedVersion?: number;\n\tauthorId: string;\n\treason?: string;\n}\n\nexport interface UnsetParams {\n\tkey: string;\n\tscope: Scope;\n\texpectedVersion?: number;\n\tauthorId: string;\n\treason?: string;\n}\n\nconst REDACTED = '[redacted]';\n\nexport class Writer {\n\tconstructor(\n\t\tprivate readonly storage: StorageAdapter,\n\t\tprivate readonly bus?: ChangeBus,\n\t) {}\n\n\tasync set(params: SetParams): Promise<ValueRecord> {\n\t\tconst created = await this.storage.transact((tx) =>\n\t\t\tthis.setInTx(tx, params),\n\t\t);\n\t\tawait this.emit(created, params.key);\n\t\treturn created;\n\t}\n\n\tasync setMany(paramsList: SetParams[]): Promise<ValueRecord[]> {\n\t\tconst created = await this.storage.transact(async (tx) => {\n\t\t\tconst results: ValueRecord[] = [];\n\t\t\tfor (const params of paramsList) {\n\t\t\t\tresults.push(await this.setInTx(tx, params));\n\t\t\t}\n\t\t\treturn results;\n\t\t});\n\t\tawait Promise.all(\n\t\t\tcreated.map((row, i) => this.emit(row, paramsList[i].key)),\n\t\t);\n\t\treturn created;\n\t}\n\n\tprivate async setInTx(\n\t\ttx: StorageTx,\n\t\tparams: SetParams,\n\t): Promise<ValueRecord> {\n\t\tconst def = await tx.findDef(params.key);\n\t\tif (!def) throw new NotFoundError(params.key);\n\n\t\tif (\n\t\t\tparams.scope.kind !== 'default' &&\n\t\t\t!def.scopes.includes(params.scope.kind)\n\t\t) {\n\t\t\tthrow new ScopeError(def.key, params.scope.kind);\n\t\t}\n\n\t\tthis.validate(def, params.value);\n\n\t\tconst current = await tx.findValue(\n\t\t\tdef.id,\n\t\t\tparams.scope.kind,\n\t\t\tparams.scope.refId,\n\t\t);\n\n\t\tconst currentVersion = current?.version ?? 0;\n\t\tconst expected = params.expectedVersion ?? 0;\n\t\tif (currentVersion !== expected) {\n\t\t\tthrow new ConflictError(\n\t\t\t\tdef.key,\n\t\t\t\tparams.scope.kind,\n\t\t\t\tparams.scope.refId,\n\t\t\t);\n\t\t}\n\n\t\tif (current) {\n\t\t\tawait tx.closeValue(current.id);\n\t\t}\n\n\t\tconst created = await tx.createValue({\n\t\t\tdefinitionId: def.id,\n\t\t\tscopeKind: params.scope.kind,\n\t\t\tscopeRefId: params.scope.refId,\n\t\t\tversion: currentVersion + 1,\n\t\t\tauthorId: params.authorId,\n\t\t\treason: params.reason,\n\t\t\ttype: def.type,\n\t\t\tvalue: params.value,\n\t\t});\n\n\t\tawait tx.createAudit({\n\t\t\tvalueId: created.id,\n\t\t\tdefinitionId: def.id,\n\t\t\tscopeKind: created.scopeKind,\n\t\t\tscopeRefId: created.scopeRefId,\n\t\t\taction: current ? 'superseded' : 'created',\n\t\t\tauthorId: params.authorId,\n\t\t\tbefore: current ? this.snapshotOf(def, current) : undefined,\n\t\t\tafter: this.snapshotOf(def, created),\n\t\t\treason: params.reason,\n\t\t});\n\n\t\treturn created;\n\t}\n\n\tasync unset(params: UnsetParams): Promise<void> {\n\t\tconst closed = await this.storage.transact((tx) =>\n\t\t\tthis.unsetInTx(tx, params),\n\t\t);\n\t\tif (closed) await this.emit(closed, params.key);\n\t}\n\n\tprivate async unsetInTx(\n\t\ttx: StorageTx,\n\t\tparams: UnsetParams,\n\t): Promise<ValueRecord | null> {\n\t\tconst def = await tx.findDef(params.key);\n\t\tif (!def) throw new NotFoundError(params.key);\n\n\t\tif (\n\t\t\tparams.scope.kind !== 'default' &&\n\t\t\t!def.scopes.includes(params.scope.kind)\n\t\t) {\n\t\t\tthrow new ScopeError(def.key, params.scope.kind);\n\t\t}\n\n\t\tconst current = await tx.findValue(\n\t\t\tdef.id,\n\t\t\tparams.scope.kind,\n\t\t\tparams.scope.refId,\n\t\t);\n\n\t\tconst currentVersion = current?.version ?? 0;\n\t\tconst expected = params.expectedVersion ?? 0;\n\t\tif (currentVersion !== expected) {\n\t\t\tthrow new ConflictError(\n\t\t\t\tdef.key,\n\t\t\t\tparams.scope.kind,\n\t\t\t\tparams.scope.refId,\n\t\t\t);\n\t\t}\n\t\tif (!current) return null;\n\n\t\tawait tx.closeValue(current.id);\n\t\tawait tx.createAudit({\n\t\t\tvalueId: current.id,\n\t\t\tdefinitionId: def.id,\n\t\t\tscopeKind: current.scopeKind,\n\t\t\tscopeRefId: current.scopeRefId,\n\t\t\taction: 'unset',\n\t\t\tauthorId: params.authorId,\n\t\t\tbefore: this.snapshotOf(def, current),\n\t\t\treason: params.reason,\n\t\t});\n\n\t\treturn current;\n\t}\n\n\tprivate async emit(created: ValueRecord, key: string): Promise<void> {\n\t\tawait this.bus?.publish({\n\t\t\tdefinitionId: created.definitionId,\n\t\t\tkey,\n\t\t\tscopeKind: created.scopeKind,\n\t\t\tscopeRefId: created.scopeRefId,\n\t\t});\n\t}\n\n\tprivate validate(def: DefRecord, value: Value): void {\n\t\tswitch (def.type) {\n\t\t\tcase 'BOOLEAN':\n\t\t\t\tif (typeof value !== 'boolean') {\n\t\t\t\t\tthrow new ValueError(\n\t\t\t\t\t\t`Setting \"${def.key}\" expects a boolean`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'NUMERIC': {\n\t\t\t\tif (typeof value !== 'number' || !Number.isFinite(value)) {\n\t\t\t\t\tthrow new ValueError(\n\t\t\t\t\t\t`Setting \"${def.key}\" expects a finite number`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (def.min !== null && value < def.min) {\n\t\t\t\t\tthrow new ValueError(\n\t\t\t\t\t\t`Setting \"${def.key}\" must be >= ${def.min}, got ${value}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (def.max !== null && value > def.max) {\n\t\t\t\t\tthrow new ValueError(\n\t\t\t\t\t\t`Setting \"${def.key}\" must be <= ${def.max}, got ${value}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'TEXT':\n\t\t\t\tif (typeof value !== 'string') {\n\t\t\t\t\tthrow new ValueError(\n\t\t\t\t\t\t`Setting \"${def.key}\" expects a string`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'ENUM':\n\t\t\t\tif (typeof value !== 'string' || !def.options.includes(value)) {\n\t\t\t\t\tthrow new ValueError(\n\t\t\t\t\t\t`Setting \"${def.key}\" must be one of: ${def.options.join(', ')}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'JSON':\n\t\t\t\ttry {\n\t\t\t\t\tJSON.stringify(value);\n\t\t\t\t} catch {\n\t\t\t\t\tthrow new ValueError(\n\t\t\t\t\t\t`Setting \"${def.key}\" expects a JSON-serializable value`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'DATE':\n\t\t\t\tif (!(value instanceof Date) || Number.isNaN(value.getTime())) {\n\t\t\t\t\tthrow new ValueError(\n\t\t\t\t\t\t`Setting \"${def.key}\" expects a valid Date`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate snapshotOf(def: DefRecord, row: ValueRecord) {\n\t\tif (def.secret) {\n\t\t\treturn {\n\t\t\t\tscopeKind: row.scopeKind,\n\t\t\t\tscopeRefId: row.scopeRefId,\n\t\t\t\tversion: row.version,\n\t\t\t\tvalue: REDACTED,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tscopeKind: row.scopeKind,\n\t\t\tscopeRefId: row.scopeRefId,\n\t\t\tversion: row.version,\n\t\t\tbool: row.bool,\n\t\t\tnum: row.num,\n\t\t\ttext: row.text,\n\t\t\tjson: row.jsonSet ? row.json : undefined,\n\t\t\tdate: row.date,\n\t\t};\n\t}\n}\n","import type { Scope } from '../core/types';\nimport { NotFoundError } from '../core/errors';\nimport type { AuditRecord, StorageReader } from '../storage/storage-port';\n\nexport class Auditor {\n\tconstructor(private readonly storage: StorageReader) {}\n\n\tasync history(key: string, scope?: Scope): Promise<AuditRecord[]> {\n\t\tconst def = await this.storage.findAnyDef(key);\n\t\tif (!def) throw new NotFoundError(key);\n\n\t\treturn this.storage.findAudit({\n\t\t\tdefinitionId: def.id,\n\t\t\tscopeKind: scope?.kind,\n\t\t\tscopeRefId: scope?.refId,\n\t\t});\n\t}\n}\n","import type { Cache } from '../cache/cache';\nimport type { ScopeHierarchy } from '../core/types';\n\nexport function withHierarchyInvalidation(\n\thierarchy: ScopeHierarchy,\n\tcache: Cache,\n): ScopeHierarchy {\n\treturn {\n\t\tchain: (id) => hierarchy.chain(id),\n\t\tdescendants: (id) => hierarchy.descendants(id),\n\t\tchildren: (id) => hierarchy.children(id),\n\t\tparent: (id) => hierarchy.parent(id),\n\t\tattach: async (id, parentId) => {\n\t\t\tawait hierarchy.attach(id, parentId);\n\t\t\tcache.dropForScopes(await hierarchy.descendants(id));\n\t\t},\n\t\tmove: async (id, newParentId) => {\n\t\t\tconst descendants = await hierarchy.descendants(id);\n\t\t\tawait hierarchy.move(id, newParentId);\n\t\t\tcache.dropForScopes(descendants);\n\t\t},\n\t\tdetach: async (id) => {\n\t\t\tconst descendants = await hierarchy.descendants(id);\n\t\t\tawait hierarchy.detach(id);\n\t\t\tcache.dropForScopes(descendants);\n\t\t},\n\t};\n}\n","import type { ChangeBus } from '../cache/change-bus';\nimport { LocalBus } from '../cache/change-bus';\nimport type { CacheOptions } from '../cache/cache';\nimport { Cache } from '../cache/cache';\nimport { withHierarchyInvalidation } from './hierarchy-cache-sync';\nimport { MemoryStorageAdapter } from '../storage/memory-storage';\nimport { Resolver } from './resolver';\nimport { LocalScopeHierarchy } from '../hierarchy/scope-hierarchy';\nimport type { StorageAdapter } from '../storage/storage-port';\nimport type { ScopeHierarchy } from '../core/types';\nimport { Writer } from './writer';\nimport { Auditor } from './auditor';\n\nexport interface EngineOptions {\n\tstorage?: StorageAdapter;\n\thierarchy?: ScopeHierarchy;\n\tbus?: ChangeBus;\n\tcache?: CacheOptions | false;\n}\n\nexport interface Engine {\n\tstorage: StorageAdapter;\n\thierarchy: ScopeHierarchy;\n\tbus: ChangeBus;\n\tcache: Cache;\n\tresolver: Resolver;\n\twriter: Writer;\n\tauditor: Auditor;\n}\n\nexport function createEngine(options: EngineOptions = {}): Engine {\n\tconst storage = options.storage ?? new MemoryStorageAdapter();\n\tconst rawHierarchy = options.hierarchy ?? new LocalScopeHierarchy();\n\tconst bus = options.bus ?? new LocalBus();\n\tconst cacheOptions =\n\t\toptions.cache === false ? { enabled: false } : (options.cache ?? {});\n\tconst cache = new Cache(bus, cacheOptions, rawHierarchy);\n\tconst hierarchy = withHierarchyInvalidation(rawHierarchy, cache);\n\tconst resolver = new Resolver(storage, hierarchy, cache);\n\tconst writer = new Writer(storage, bus);\n\tconst auditor = new Auditor(storage);\n\treturn { storage, hierarchy, bus, cache, resolver, writer, auditor };\n}\n","import type { Scope } from '../core/types';\nimport type { Resolver } from '../engine/resolver';\nimport type { SettingScopeKind, SettingValue } from './registry';\n\nexport class TypedResolver<Registry> {\n\tconstructor(private readonly resolver: Resolver) {}\n\n\tget<K extends keyof Registry & string>(\n\t\tkey: K,\n\t\tscope: Scope & { kind: SettingScopeKind<Registry, K> },\n\t\tasOf?: Date,\n\t): Promise<SettingValue<Registry, K>> {\n\t\treturn this.resolver.get(key, scope, asOf) as Promise<\n\t\t\tSettingValue<Registry, K>\n\t\t>;\n\t}\n\n\tasync getMany<K extends readonly (keyof Registry & string)[]>(\n\t\tkeys: K,\n\t\tscope: Scope,\n\t\tasOf?: Date,\n\t): Promise<{ [P in K[number]]: SettingValue<Registry, P> }> {\n\t\tconst result = await this.resolver.getMany([...keys], scope, asOf);\n\t\treturn result as { [P in K[number]]: SettingValue<Registry, P> };\n\t}\n\n\tasync listAt(\n\t\tscope: Scope,\n\t\topts: { limit?: number; cursor?: string } = {},\n\t): Promise<{\n\t\tentries: Partial<{\n\t\t\t[K in keyof Registry & string]: SettingValue<Registry, K>;\n\t\t}>;\n\t\tnextCursor: string | null;\n\t}> {\n\t\tconst page = await this.resolver.listAt(scope, opts);\n\t\treturn page as {\n\t\t\tentries: Partial<{\n\t\t\t\t[K in keyof Registry & string]: SettingValue<Registry, K>;\n\t\t\t}>;\n\t\t\tnextCursor: string | null;\n\t\t};\n\t}\n}\n","import type { Scope, ValueRecord } from '../core/types';\nimport type { SetParams, Writer } from '../engine/writer';\nimport type { SettingScopeKind, SettingValue } from './registry';\n\nexport interface TypedSetParams<Registry, K extends keyof Registry & string> {\n\tkey: K;\n\tscope: Scope & { kind: SettingScopeKind<Registry, K> };\n\tvalue: SettingValue<Registry, K>;\n\texpectedVersion?: number;\n\tauthorId: string;\n\treason?: string;\n}\n\nexport interface TypedUnsetParams<Registry, K extends keyof Registry & string> {\n\tkey: K;\n\tscope: Scope & { kind: SettingScopeKind<Registry, K> };\n\texpectedVersion?: number;\n\tauthorId: string;\n\treason?: string;\n}\n\nexport class TypedWriter<Registry> {\n\tconstructor(private readonly writer: Writer) {}\n\n\tset<K extends keyof Registry & string>(\n\t\tparams: TypedSetParams<Registry, K>,\n\t): Promise<ValueRecord> {\n\t\treturn this.writer.set(params as unknown as SetParams);\n\t}\n\n\tsetMany(\n\t\tparamsList: {\n\t\t\t[K in keyof Registry & string]: TypedSetParams<Registry, K>;\n\t\t}[keyof Registry & string][],\n\t): Promise<ValueRecord[]> {\n\t\treturn this.writer.setMany(paramsList as unknown as SetParams[]);\n\t}\n\n\tunset<K extends keyof Registry & string>(\n\t\tparams: TypedUnsetParams<Registry, K>,\n\t): Promise<void> {\n\t\treturn this.writer.unset(params);\n\t}\n}\n","import type { Scope } from '../core/types';\nimport type { Auditor } from '../engine/auditor';\nimport type { AuditRecord } from '../storage/storage-port';\nimport type { SettingScopeKind } from './registry';\n\nexport class TypedAuditor<Registry> {\n\tconstructor(private readonly auditor: Auditor) {}\n\n\thistory<K extends keyof Registry & string>(\n\t\tkey: K,\n\t\tscope?: Scope & { kind: SettingScopeKind<Registry, K> },\n\t): Promise<AuditRecord[]> {\n\t\treturn this.auditor.history(key, scope);\n\t}\n}\n","import type { Engine } from '../engine/engine';\nimport { TypedResolver } from './typed-resolver';\nimport { TypedWriter } from './typed-writer';\nimport { TypedAuditor } from './typed-auditor';\n\nexport interface TypedEngine<Registry> {\n\tresolver: TypedResolver<Registry>;\n\twriter: TypedWriter<Registry>;\n\tauditor: TypedAuditor<Registry>;\n}\n\nexport function createTypedEngine<Registry>(\n\tengine: Engine,\n): TypedEngine<Registry> {\n\treturn {\n\t\tresolver: new TypedResolver<Registry>(engine.resolver),\n\t\twriter: new TypedWriter<Registry>(engine.writer),\n\t\tauditor: new TypedAuditor<Registry>(engine.auditor),\n\t};\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/core/types.ts","../src/core/errors.ts","../src/cache/change-bus.ts","../src/cache/cache.ts","../src/hierarchy/scope-hierarchy.ts","../src/storage/memory-storage.ts","../src/engine/resolver.ts","../src/engine/writer.ts","../src/engine/auditor.ts","../src/engine/hierarchy-cache-sync.ts","../src/engine/engine.ts","../src/typed/typed-resolver.ts","../src/typed/typed-writer.ts","../src/typed/typed-auditor.ts","../src/typed/typed-engine.ts"],"sourcesContent":["export type JsonValue =\n\t| null\n\t| boolean\n\t| number\n\t| string\n\t| JsonValue[]\n\t| { [key: string]: JsonValue };\n\nexport type Value = Date | JsonValue;\n\nexport interface Scope {\n\tkind: string;\n\trefId: string | null;\n}\n\nexport const DEFAULT_SCOPE: Scope = { kind: 'default', refId: null };\n\nexport type ValueType =\n\t'BOOLEAN' | 'NUMERIC' | 'TEXT' | 'ENUM' | 'JSON' | 'DATE';\n\nexport type Inherit = 'LOCKED' | 'INHERITABLE_OVERRIDABLE' | 'INDEPENDENT';\n\nexport type Status = 'DRAFT' | 'STABLE' | 'DEPRECATED' | 'RETIRED';\n\nexport interface DefRecord {\n\tid: string;\n\tkey: string;\n\tversion: number;\n\tlabel: string;\n\tdescription: string | null;\n\ttype: ValueType;\n\toptions: string[];\n\tmin: number | null;\n\tmax: number | null;\n\tscopes: string[];\n\tinherit: Inherit;\n\trequired: boolean;\n\tsecret: boolean;\n\tstatus: Status;\n\tcategory: string | null;\n}\n\nexport interface ValueRecord {\n\tid: string;\n\tdefinitionId: string;\n\tscopeKind: string;\n\tscopeRefId: string | null;\n\tbool: boolean | null;\n\tnum: number | null;\n\ttext: string | null;\n\tjson: unknown;\n\tjsonSet: boolean;\n\tdate: Date | null;\n\tversion: number;\n}\n\nexport interface ScopeHierarchy {\n\tchain(scopeRefId: string): Promise<string[]>;\n\tdescendants(scopeRefId: string): Promise<string[]>;\n\tchildren(scopeRefId: string): Promise<string[]>;\n\tparent(scopeRefId: string): Promise<string | null>;\n\tattach(id: string, parentId: string | null): Promise<void>;\n\tmove(id: string, newParentId: string | null): Promise<void>;\n\tdetach(id: string): Promise<void>;\n}\n","export type ErrorCode =\n\t| 'NOT_FOUND'\n\t| 'SCOPE'\n\t| 'REQUIRED'\n\t| 'VALUE'\n\t| 'CONFLICT'\n\t| 'CORRUPT'\n\t| 'CYCLE';\n\nexport class ConfTreeError extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\tpublic readonly code: ErrorCode,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = new.target.name;\n\t\tError.captureStackTrace?.(this, new.target);\n\t}\n}\n\nexport class NotFoundError extends ConfTreeError {\n\tconstructor(key: string) {\n\t\tsuper(`Unknown setting definition: \"${key}\"`, 'NOT_FOUND');\n\t}\n}\n\nexport class ScopeError extends ConfTreeError {\n\tconstructor(key: string, scopeKind: string) {\n\t\tsuper(\n\t\t\t`Setting \"${key}\" cannot be set or read at scope kind \"${scopeKind}\"`,\n\t\t\t'SCOPE',\n\t\t);\n\t}\n}\n\nexport class RequiredError extends ConfTreeError {\n\tconstructor(key: string, scopeKind: string, scopeRefId: string | null) {\n\t\tsuper(\n\t\t\t`Required setting \"${key}\" has no resolvable value for scope ${scopeKind}:${scopeRefId ?? 'null'} ` +\n\t\t\t\t`and no default is defined`,\n\t\t\t'REQUIRED',\n\t\t);\n\t}\n}\n\nexport class ValueError extends ConfTreeError {\n\tconstructor(message: string) {\n\t\tsuper(message, 'VALUE');\n\t}\n}\n\nexport class ConflictError extends ConfTreeError {\n\tconstructor(key: string, scopeKind: string, scopeRefId: string | null) {\n\t\tsuper(\n\t\t\t`Setting \"${key}\" at scope ${scopeKind}:${scopeRefId ?? 'null'} was modified concurrently. ` +\n\t\t\t\t`Reload the current value and retry.`,\n\t\t\t'CONFLICT',\n\t\t);\n\t}\n}\n\nexport class CorruptError extends ConfTreeError {\n\tconstructor(valueId: string) {\n\t\tsuper(\n\t\t\t`setting value row ${valueId} has no typed value set: data corruption`,\n\t\t\t'CORRUPT',\n\t\t);\n\t}\n}\n\nexport class CycleError extends ConfTreeError {\n\tconstructor(id: string, newParentId: string) {\n\t\tsuper(\n\t\t\t`Cannot attach/move scope \"${id}\" under \"${newParentId}\": would create a cycle`,\n\t\t\t'CYCLE',\n\t\t);\n\t}\n}\n","export interface ChangeEvent {\n\tdefinitionId: string;\n\tkey: string;\n\tscopeKind: string;\n\tscopeRefId: string | null;\n}\n\nexport interface ChangeBus {\n\tpublish(event: ChangeEvent): Promise<void>;\n\tsubscribe(listener: (event: ChangeEvent) => void | Promise<void>): void;\n}\n\nexport class LocalBus implements ChangeBus {\n\tprivate readonly listeners = new Set<\n\t\t(event: ChangeEvent) => void | Promise<void>\n\t>();\n\n\tasync publish(event: ChangeEvent): Promise<void> {\n\t\tawait Promise.all(\n\t\t\t[...this.listeners].map((listener) =>\n\t\t\t\tPromise.resolve(listener(event)),\n\t\t\t),\n\t\t);\n\t}\n\n\tsubscribe(listener: (event: ChangeEvent) => void | Promise<void>): void {\n\t\tthis.listeners.add(listener);\n\t}\n}\n","import type { Scope, ScopeHierarchy, Value } from '../core/types';\nimport type { ChangeBus, ChangeEvent } from './change-bus';\n\nexport interface CacheOptions {\n\tenabled?: boolean;\n\tttlMs?: number;\n\tmaxEntries?: number;\n}\n\ninterface Entry {\n\tkey: string;\n\tscopeKind: string;\n\tscopeRefId: string | null;\n\tvalue: Value;\n\texpiresAt: number;\n}\n\nconst DEFAULT_TTL_MS = 30_000;\nconst DEFAULT_MAX_ENTRIES = 50_000;\n\nexport class Cache {\n\tprivate readonly store = new Map<string, Entry>();\n\n\tconstructor(\n\t\tprivate readonly bus: ChangeBus,\n\t\tprivate readonly options: CacheOptions = {},\n\t\tprivate readonly hierarchy?: ScopeHierarchy,\n\t) {\n\t\tthis.bus.subscribe((event) => this.onChange(event));\n\t}\n\n\tget(key: string, scope: Scope): Value | undefined {\n\t\tif (this.options.enabled === false) return undefined;\n\t\tconst cacheKey = this.keyFor(key, scope);\n\t\tconst entry = this.store.get(cacheKey);\n\t\tif (!entry) return undefined;\n\t\tif (entry.expiresAt <= Date.now()) {\n\t\t\tthis.store.delete(cacheKey);\n\t\t\treturn undefined;\n\t\t}\n\t\treturn entry.value;\n\t}\n\n\tset(key: string, scope: Scope, value: Value): void {\n\t\tif (this.options.enabled === false) return;\n\t\tconst cacheKey = this.keyFor(key, scope);\n\t\tif (\n\t\t\t!this.store.has(cacheKey) &&\n\t\t\tthis.store.size >= (this.options.maxEntries ?? DEFAULT_MAX_ENTRIES)\n\t\t) {\n\t\t\tconst oldest = this.store.keys().next().value;\n\t\t\tif (oldest !== undefined) this.store.delete(oldest);\n\t\t}\n\t\tconst ttlMs = this.options.ttlMs ?? DEFAULT_TTL_MS;\n\t\tthis.store.set(cacheKey, {\n\t\t\tkey,\n\t\t\tscopeKind: scope.kind,\n\t\t\tscopeRefId: scope.refId,\n\t\t\tvalue,\n\t\t\texpiresAt: Date.now() + ttlMs,\n\t\t});\n\t}\n\n\tdrop(key: string): void {\n\t\tfor (const [cacheKey, entry] of this.store) {\n\t\t\tif (entry.key === key) this.store.delete(cacheKey);\n\t\t}\n\t}\n\n\tdropAll(): void {\n\t\tthis.store.clear();\n\t}\n\n\tdropForScopes(scopeRefIds: Iterable<string>): void {\n\t\tconst targets = new Set(scopeRefIds);\n\t\tif (targets.size === 0) return;\n\t\tfor (const [cacheKey, entry] of this.store) {\n\t\t\tif (entry.scopeRefId !== null && targets.has(entry.scopeRefId)) {\n\t\t\t\tthis.store.delete(cacheKey);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate dropScoped(key: string, scopeRefIds: Iterable<string>): void {\n\t\tconst targets = new Set(scopeRefIds);\n\t\tfor (const [cacheKey, entry] of this.store) {\n\t\t\tif (\n\t\t\t\tentry.key === key &&\n\t\t\t\tentry.scopeRefId !== null &&\n\t\t\t\ttargets.has(entry.scopeRefId)\n\t\t\t) {\n\t\t\t\tthis.store.delete(cacheKey);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async onChange(event: ChangeEvent): Promise<void> {\n\t\tif (this.hierarchy && event.scopeRefId !== null) {\n\t\t\tconst descendants = await this.hierarchy\n\t\t\t\t.descendants(event.scopeRefId)\n\t\t\t\t.catch(() => null);\n\t\t\tif (descendants !== null) {\n\t\t\t\tthis.dropScoped(event.key, descendants);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tthis.drop(event.key);\n\t}\n\n\tprivate keyFor(key: string, scope: Scope): string {\n\t\treturn JSON.stringify([key, scope.kind, scope.refId]);\n\t}\n}\n","import { CycleError } from '../core/errors';\nimport type { ScopeHierarchy } from '../core/types';\n\nexport class LocalScopeHierarchy implements ScopeHierarchy {\n\tprivate readonly parentOf = new Map<string, string | null>();\n\tprivate readonly childrenOf = new Map<string, Set<string>>();\n\n\tasync chain(id: string): Promise<string[]> {\n\t\tconst result: string[] = [];\n\t\tconst seen = new Set<string>();\n\t\tlet current: string | null = id;\n\t\twhile (current !== null) {\n\t\t\tif (seen.has(current)) break;\n\t\t\tseen.add(current);\n\t\t\tresult.push(current);\n\t\t\tcurrent = this.parentOf.get(current) ?? null;\n\t\t}\n\t\treturn result;\n\t}\n\n\tasync descendants(id: string): Promise<string[]> {\n\t\tconst result: string[] = [];\n\t\tconst stack = [id];\n\t\tconst seen = new Set<string>();\n\t\twhile (stack.length > 0) {\n\t\t\tconst current = stack.pop()!;\n\t\t\tif (seen.has(current)) continue;\n\t\t\tseen.add(current);\n\t\t\tresult.push(current);\n\t\t\tconst kids = this.childrenOf.get(current);\n\t\t\tif (kids) stack.push(...kids);\n\t\t}\n\t\treturn result;\n\t}\n\n\tasync children(id: string): Promise<string[]> {\n\t\treturn [...(this.childrenOf.get(id) ?? [])];\n\t}\n\n\tasync parent(id: string): Promise<string | null> {\n\t\treturn this.parentOf.get(id) ?? null;\n\t}\n\n\tasync attach(id: string, parentId: string | null): Promise<void> {\n\t\tif (parentId !== null) await this.assertNoCycle(id, parentId);\n\t\tconst oldParent = this.parentOf.get(id) ?? null;\n\t\tif (oldParent !== null) this.childrenOf.get(oldParent)?.delete(id);\n\t\tthis.parentOf.set(id, parentId);\n\t\tif (parentId !== null) this.addChild(parentId, id);\n\t\tif (!this.childrenOf.has(id)) this.childrenOf.set(id, new Set());\n\t}\n\n\tasync move(id: string, newParentId: string | null): Promise<void> {\n\t\tif (newParentId !== null) await this.assertNoCycle(id, newParentId);\n\t\tconst oldParent = this.parentOf.get(id) ?? null;\n\t\tif (oldParent !== null) this.childrenOf.get(oldParent)?.delete(id);\n\t\tthis.parentOf.set(id, newParentId);\n\t\tif (newParentId !== null) this.addChild(newParentId, id);\n\t}\n\n\tasync detach(id: string): Promise<void> {\n\t\tconst parentId = this.parentOf.get(id) ?? null;\n\t\tconst kids = [...(this.childrenOf.get(id) ?? [])];\n\t\tfor (const kid of kids) {\n\t\t\tawait this.move(kid, parentId);\n\t\t}\n\t\tif (parentId !== null) this.childrenOf.get(parentId)?.delete(id);\n\t\tthis.parentOf.delete(id);\n\t\tthis.childrenOf.delete(id);\n\t}\n\n\tprivate addChild(parentId: string, id: string): void {\n\t\tif (!this.childrenOf.has(parentId))\n\t\t\tthis.childrenOf.set(parentId, new Set());\n\t\tthis.childrenOf.get(parentId)!.add(id);\n\t}\n\n\tprivate async assertNoCycle(\n\t\tid: string,\n\t\tnewParentId: string,\n\t): Promise<void> {\n\t\tif (\n\t\t\tid === newParentId ||\n\t\t\t(await this.chain(newParentId)).includes(id)\n\t\t) {\n\t\t\tthrow new CycleError(id, newParentId);\n\t\t}\n\t}\n}\n","import type {\n\tAuditRecord,\n\tCreateAuditInput,\n\tCreateDefInput,\n\tCreateValueInput,\n\tFindAuditQuery,\n\tFindChainQuery,\n\tFindValuesQuery,\n\tListValuesQuery,\n\tListValuesResult,\n\tStorageAdapter,\n\tStorageTx,\n} from './storage-port';\nimport type {\n\tDefRecord,\n\tStatus,\n\tValue,\n\tValueRecord,\n\tValueType,\n} from '../core/types';\nimport { NotFoundError } from '../core/errors';\n\ninterface StoredValue extends ValueRecord {\n\tvalidFrom: Date;\n\tvalidTo: Date | null;\n}\n\nfunction toTypedColumns(type: ValueType, value: Value) {\n\treturn {\n\t\tbool: type === 'BOOLEAN' ? (value as boolean) : null,\n\t\tnum: type === 'NUMERIC' ? (value as number) : null,\n\t\ttext: type === 'TEXT' || type === 'ENUM' ? (value as string) : null,\n\t\tjson: type === 'JSON' ? value : null,\n\t\tjsonSet: type === 'JSON',\n\t\tdate: type === 'DATE' ? (value as Date) : null,\n\t};\n}\n\nexport class MemoryStorageAdapter implements StorageAdapter {\n\tprivate defs: DefRecord[] = [];\n\tprivate values: StoredValue[] = [];\n\tprivate auditLog: AuditRecord[] = [];\n\tprivate nextId = 1;\n\tprivate txQueue: Promise<unknown> = Promise.resolve();\n\n\tprivate newId(prefix: string): string {\n\t\treturn `${prefix}-${this.nextId++}`;\n\t}\n\n\tasync findDefs(keys: string[]): Promise<DefRecord[]> {\n\t\tconst result: DefRecord[] = [];\n\t\tfor (const key of keys) {\n\t\t\tconst found = this.latestByStatus(key, ['STABLE', 'DEPRECATED']);\n\t\t\tif (found) result.push(found);\n\t\t}\n\t\treturn result;\n\t}\n\n\tasync findValues(query: FindValuesQuery): Promise<ValueRecord[]> {\n\t\tconst asOf = query.asOf ?? new Date();\n\t\tconst ids = new Set(query.definitionIds);\n\t\treturn this.values.filter(\n\t\t\t(v) =>\n\t\t\t\tids.has(v.definitionId) &&\n\t\t\t\tv.scopeKind === query.scopeKind &&\n\t\t\t\tv.scopeRefId === query.scopeRefId &&\n\t\t\t\tv.validFrom <= asOf &&\n\t\t\t\t(v.validTo === null || v.validTo > asOf),\n\t\t);\n\t}\n\n\tasync findChainValues(query: FindChainQuery): Promise<ValueRecord[]> {\n\t\tconst asOf = query.asOf ?? new Date();\n\t\tconst defIds = new Set(query.definitionIds);\n\t\tconst refIds = new Set(query.chain);\n\t\treturn this.values.filter(\n\t\t\t(v) =>\n\t\t\t\tdefIds.has(v.definitionId) &&\n\t\t\t\tv.scopeRefId !== null &&\n\t\t\t\trefIds.has(v.scopeRefId) &&\n\t\t\t\tv.validFrom <= asOf &&\n\t\t\t\t(v.validTo === null || v.validTo > asOf),\n\t\t);\n\t}\n\n\tasync findDefsByIds(ids: string[]): Promise<DefRecord[]> {\n\t\tconst idSet = new Set(ids);\n\t\treturn this.defs.filter((d) => idSet.has(d.id));\n\t}\n\n\tasync findAnyDef(key: string): Promise<DefRecord | null> {\n\t\treturn this.latestVersion(key) ?? null;\n\t}\n\n\tasync listValues(query: ListValuesQuery): Promise<ListValuesResult> {\n\t\tconst now = new Date();\n\t\tconst active = this.values\n\t\t\t.filter(\n\t\t\t\t(v) =>\n\t\t\t\t\tv.scopeKind === query.scopeKind &&\n\t\t\t\t\tv.scopeRefId === query.scopeRefId &&\n\t\t\t\t\tv.validFrom <= now &&\n\t\t\t\t\t(v.validTo === null || v.validTo > now),\n\t\t\t)\n\t\t\t.sort((a, b) => a.id.localeCompare(b.id));\n\n\t\tconst startIndex = query.cursor\n\t\t\t? active.findIndex((v) => v.id === query.cursor) + 1\n\t\t\t: 0;\n\t\tconst limit = query.limit ?? active.length - startIndex;\n\t\tconst page = active.slice(startIndex, startIndex + limit);\n\t\tconst nextCursor =\n\t\t\tstartIndex + page.length < active.length\n\t\t\t\t? (page[page.length - 1]?.id ?? null)\n\t\t\t\t: null;\n\n\t\treturn { values: page, nextCursor };\n\t}\n\n\tasync findAudit(query: FindAuditQuery): Promise<AuditRecord[]> {\n\t\treturn this.auditLog\n\t\t\t.filter(\n\t\t\t\t(a) =>\n\t\t\t\t\ta.definitionId === query.definitionId &&\n\t\t\t\t\t(query.scopeKind === undefined ||\n\t\t\t\t\t\ta.scopeKind === query.scopeKind) &&\n\t\t\t\t\t(query.scopeRefId === undefined ||\n\t\t\t\t\t\ta.scopeRefId === query.scopeRefId),\n\t\t\t)\n\t\t\t.sort((a, b) => a.at.getTime() - b.at.getTime());\n\t}\n\n\tasync createDef(input: CreateDefInput): Promise<DefRecord> {\n\t\tconst existingVersions = this.defs.filter((d) => d.key === input.key);\n\t\tconst version =\n\t\t\texistingVersions.length > 0\n\t\t\t\t? Math.max(...existingVersions.map((d) => d.version)) + 1\n\t\t\t\t: 1;\n\t\tconst record: DefRecord = {\n\t\t\tid: this.newId('def'),\n\t\t\tkey: input.key,\n\t\t\tversion,\n\t\t\tlabel: input.label,\n\t\t\tdescription: input.description ?? null,\n\t\t\ttype: input.type,\n\t\t\toptions: input.options ?? [],\n\t\t\tmin: input.min ?? null,\n\t\t\tmax: input.max ?? null,\n\t\t\tscopes: input.scopes,\n\t\t\tinherit: input.inherit,\n\t\t\trequired: input.required,\n\t\t\tsecret: input.secret ?? false,\n\t\t\tstatus: input.status ?? 'DRAFT',\n\t\t\tcategory: input.category ?? null,\n\t\t};\n\t\tthis.defs.push(record);\n\t\treturn record;\n\t}\n\n\tasync updateDefStatus(key: string, status: Status): Promise<DefRecord> {\n\t\tconst current = this.latestVersion(key);\n\t\tif (!current) throw new NotFoundError(key);\n\n\t\tconst updated: DefRecord = { ...current, status };\n\t\tthis.defs = this.defs.map((d) => (d === current ? updated : d));\n\t\treturn updated;\n\t}\n\n\tasync listDefs(status?: Status): Promise<DefRecord[]> {\n\t\tconst rows = status\n\t\t\t? this.defs.filter((d) => d.status === status)\n\t\t\t: this.defs;\n\t\treturn [...rows].sort(\n\t\t\t(a, b) =>\n\t\t\t\t(a.category ?? '').localeCompare(b.category ?? '') ||\n\t\t\t\ta.key.localeCompare(b.key),\n\t\t);\n\t}\n\n\tasync transact<T>(fn: (tx: StorageTx) => Promise<T>): Promise<T> {\n\t\tconst run = this.txQueue.then(async () => {\n\t\t\tconst valuesSnapshot = structuredClone(this.values);\n\t\t\tconst auditLogSnapshot = structuredClone(this.auditLog);\n\t\t\ttry {\n\t\t\t\treturn await fn(this.tx());\n\t\t\t} catch (err) {\n\t\t\t\tthis.values = valuesSnapshot;\n\t\t\t\tthis.auditLog = auditLogSnapshot;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t});\n\t\tthis.txQueue = run.catch(() => {});\n\t\treturn run;\n\t}\n\n\tprivate latestByStatus(\n\t\tkey: string,\n\t\tstatuses: Status[],\n\t): DefRecord | undefined {\n\t\tconst latest = this.latestVersion(key);\n\t\treturn latest && statuses.includes(latest.status) ? latest : undefined;\n\t}\n\n\tprivate latestVersion(key: string): DefRecord | undefined {\n\t\treturn this.defs\n\t\t\t.filter((d) => d.key === key)\n\t\t\t.sort((a, b) => b.version - a.version)[0];\n\t}\n\n\tprivate tx(): StorageTx {\n\t\treturn {\n\t\t\tfindDef: async (key: string) =>\n\t\t\t\tthis.latestByStatus(key, ['STABLE']) ?? null,\n\n\t\t\tfindValue: async (definitionId, scopeKind, scopeRefId) =>\n\t\t\t\tthis.values.find(\n\t\t\t\t\t(v) =>\n\t\t\t\t\t\tv.definitionId === definitionId &&\n\t\t\t\t\t\tv.scopeKind === scopeKind &&\n\t\t\t\t\t\tv.scopeRefId === scopeRefId &&\n\t\t\t\t\t\tv.validTo === null,\n\t\t\t\t) ?? null,\n\n\t\t\tcloseValue: async (id: string) => {\n\t\t\t\tconst row = this.values.find((v) => v.id === id);\n\t\t\t\tif (row) row.validTo = new Date();\n\t\t\t},\n\n\t\t\tcreateValue: async (input: CreateValueInput) => {\n\t\t\t\tconst record: StoredValue = {\n\t\t\t\t\tid: this.newId('val'),\n\t\t\t\t\tdefinitionId: input.definitionId,\n\t\t\t\t\tscopeKind: input.scopeKind,\n\t\t\t\t\tscopeRefId: input.scopeRefId,\n\t\t\t\t\tversion: input.version,\n\t\t\t\t\tvalidFrom: new Date(),\n\t\t\t\t\tvalidTo: null,\n\t\t\t\t\t...toTypedColumns(input.type, input.value),\n\t\t\t\t};\n\t\t\t\tthis.values.push(record);\n\t\t\t\treturn record;\n\t\t\t},\n\n\t\t\tcreateAudit: async (input: CreateAuditInput): Promise<void> => {\n\t\t\t\tthis.auditLog.push({\n\t\t\t\t\t...input,\n\t\t\t\t\tid: this.newId('audit'),\n\t\t\t\t\tat: new Date(),\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n}\n","import type {\n\tDefRecord,\n\tScope,\n\tScopeHierarchy,\n\tValue,\n\tValueRecord,\n} from '../core/types';\nimport { DEFAULT_SCOPE } from '../core/types';\nimport {\n\tCorruptError,\n\tRequiredError,\n\tScopeError,\n\tNotFoundError,\n} from '../core/errors';\nimport type { StorageReader } from '../storage/storage-port';\nimport type { Cache } from '../cache/cache';\n\nexport interface ListAtPage {\n\tentries: Record<string, Value>;\n\tnextCursor: string | null;\n}\n\nexport class Resolver {\n\tconstructor(\n\t\tprivate readonly storage: StorageReader,\n\t\tprivate readonly hierarchy?: ScopeHierarchy,\n\t\tprivate readonly cache?: Cache,\n\t) {}\n\n\tasync get(key: string, scope: Scope, asOf?: Date): Promise<Value> {\n\t\tconst result = await this.getMany([key], scope, asOf);\n\t\treturn result[key];\n\t}\n\n\tasync listAt(\n\t\tscope: Scope,\n\t\topts: { limit?: number; cursor?: string } = {},\n\t): Promise<ListAtPage> {\n\t\tconst { values, nextCursor } = await this.storage.listValues({\n\t\t\tscopeKind: scope.kind,\n\t\t\tscopeRefId: scope.refId,\n\t\t\tlimit: opts.limit,\n\t\t\tcursor: opts.cursor,\n\t\t});\n\t\tif (values.length === 0) return { entries: {}, nextCursor };\n\n\t\tconst defs = await this.storage.findDefsByIds([\n\t\t\t...new Set(values.map((v) => v.definitionId)),\n\t\t]);\n\t\tconst defById = new Map(defs.map((d) => [d.id, d]));\n\n\t\tconst entries: Record<string, Value> = {};\n\t\tfor (const row of values) {\n\t\t\tconst def = defById.get(row.definitionId);\n\t\t\tif (!def) continue;\n\t\t\tentries[def.key] = this.unwrap(def, row);\n\t\t}\n\t\treturn { entries, nextCursor };\n\t}\n\n\tasync getMany(\n\t\tkeys: string[],\n\t\tscope: Scope,\n\t\tasOf?: Date,\n\t): Promise<Record<string, Value>> {\n\t\tconst uniqueKeys = [...new Set(keys)];\n\t\tconst result: Record<string, Value> = {};\n\t\tconst uncached: string[] = [];\n\n\t\tif (asOf === undefined) {\n\t\t\tfor (const key of uniqueKeys) {\n\t\t\t\tconst cached = this.cache?.get(key, scope);\n\t\t\t\tif (cached !== undefined) result[key] = cached;\n\t\t\t\telse uncached.push(key);\n\t\t\t}\n\t\t} else {\n\t\t\tuncached.push(...uniqueKeys);\n\t\t}\n\t\tif (uncached.length === 0) return result;\n\n\t\tconst defByKey = await this.getDefs(uncached);\n\t\tfor (const key of uncached) {\n\t\t\tthis.checkScope(defByKey.get(key)!, scope);\n\t\t}\n\n\t\tconst exactDefs: DefRecord[] = [];\n\t\tconst chainDefs: DefRecord[] = [];\n\t\tfor (const key of uncached) {\n\t\t\tconst def = defByKey.get(key)!;\n\t\t\tconst climbsHierarchy =\n\t\t\t\tdef.inherit !== 'INDEPENDENT' &&\n\t\t\t\tscope.refId !== null &&\n\t\t\t\tthis.hierarchy;\n\t\t\t(climbsHierarchy ? chainDefs : exactDefs).push(def);\n\t\t}\n\n\t\tconst chain =\n\t\t\tchainDefs.length > 0 && scope.refId !== null && this.hierarchy\n\t\t\t\t? await this.hierarchy.chain(scope.refId)\n\t\t\t\t: [];\n\n\t\tconst [exactRows, chainRows] = await Promise.all([\n\t\t\texactDefs.length > 0\n\t\t\t\t? this.storage.findValues({\n\t\t\t\t\t\tdefinitionIds: exactDefs.map((d) => d.id),\n\t\t\t\t\t\tscopeKind: scope.kind,\n\t\t\t\t\t\tscopeRefId: scope.refId,\n\t\t\t\t\t\tasOf,\n\t\t\t\t\t})\n\t\t\t\t: Promise.resolve([] as ValueRecord[]),\n\t\t\tchainDefs.length > 0 && chain.length > 0\n\t\t\t\t? this.storage.findChainValues({\n\t\t\t\t\t\tdefinitionIds: chainDefs.map((d) => d.id),\n\t\t\t\t\t\tchain,\n\t\t\t\t\t\tasOf,\n\t\t\t\t\t})\n\t\t\t\t: Promise.resolve([] as ValueRecord[]),\n\t\t]);\n\n\t\tconst exactByDef = new Map(exactRows.map((r) => [r.definitionId, r]));\n\t\tconst chainByDef = new Map<string, ValueRecord[]>();\n\t\tfor (const row of chainRows) {\n\t\t\tconst list = chainByDef.get(row.definitionId) ?? [];\n\t\t\tlist.push(row);\n\t\t\tchainByDef.set(row.definitionId, list);\n\t\t}\n\t\tconst chainDefIds = new Set(chainDefs.map((d) => d.id));\n\n\t\tconst missing: DefRecord[] = [];\n\t\tfor (const key of uncached) {\n\t\t\tconst def = defByKey.get(key)!;\n\t\t\tlet row: ValueRecord | undefined;\n\t\t\tif (chainDefIds.has(def.id)) {\n\t\t\t\tconst byRef = new Map(\n\t\t\t\t\t(chainByDef.get(def.id) ?? []).map((v) => [\n\t\t\t\t\t\tv.scopeRefId,\n\t\t\t\t\t\tv,\n\t\t\t\t\t]),\n\t\t\t\t);\n\t\t\t\tfor (const ref of chain) {\n\t\t\t\t\trow = byRef.get(ref);\n\t\t\t\t\tif (row) break;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\trow = exactByDef.get(def.id);\n\t\t\t}\n\t\t\tif (row) {\n\t\t\t\tresult[key] = this.unwrap(def, row);\n\t\t\t\tif (asOf === undefined)\n\t\t\t\t\tthis.cache?.set(key, scope, result[key]);\n\t\t\t} else {\n\t\t\t\tmissing.push(def);\n\t\t\t}\n\t\t}\n\n\t\tif (missing.length > 0)\n\t\t\tawait this.resolveMissing(\n\t\t\t\tmissing,\n\t\t\t\tscope,\n\t\t\t\tuncached,\n\t\t\t\tdefByKey,\n\t\t\t\tresult,\n\t\t\t\tasOf,\n\t\t\t);\n\n\t\treturn result;\n\t}\n\n\tprivate async resolveMissing(\n\t\tmissing: DefRecord[],\n\t\tscope: Scope,\n\t\tkeysInOrder: string[],\n\t\tdefByKey: Map<string, DefRecord>,\n\t\tresult: Record<string, Value>,\n\t\tasOf?: Date,\n\t): Promise<void> {\n\t\tconst defaultRows = await this.storage.findValues({\n\t\t\tdefinitionIds: missing.map((d) => d.id),\n\t\t\tscopeKind: DEFAULT_SCOPE.kind,\n\t\t\tscopeRefId: DEFAULT_SCOPE.refId,\n\t\t\tasOf,\n\t\t});\n\t\tconst defaultByDef = new Map(\n\t\t\tdefaultRows.map((r) => [r.definitionId, r]),\n\t\t);\n\t\tconst missingIds = new Set(missing.map((d) => d.id));\n\n\t\tfor (const key of keysInOrder) {\n\t\t\tconst def = defByKey.get(key)!;\n\t\t\tif (!missingIds.has(def.id)) continue;\n\t\t\tconst row = defaultByDef.get(def.id);\n\t\t\tif (!row) {\n\t\t\t\tthrow new RequiredError(def.key, scope.kind, scope.refId);\n\t\t\t}\n\t\t\tresult[key] = this.unwrap(def, row);\n\t\t\tif (asOf === undefined) this.cache?.set(key, scope, result[key]);\n\t\t}\n\t}\n\n\tprivate async getDefs(keys: string[]): Promise<Map<string, DefRecord>> {\n\t\tconst defs = await this.storage.findDefs(keys);\n\t\tconst byKey = new Map(defs.map((d) => [d.key, d]));\n\t\tfor (const key of keys) {\n\t\t\tif (!byKey.has(key)) throw new NotFoundError(key);\n\t\t}\n\t\treturn byKey;\n\t}\n\n\tprivate checkScope(def: DefRecord, scope: Scope): void {\n\t\tif (scope.kind === 'default') return;\n\t\tif (!def.scopes.includes(scope.kind)) {\n\t\t\tthrow new ScopeError(def.key, scope.kind);\n\t\t}\n\t}\n\n\tprivate unwrap(def: DefRecord, row: ValueRecord): Value {\n\t\tswitch (def.type) {\n\t\t\tcase 'BOOLEAN':\n\t\t\t\tif (row.bool === null) throw new CorruptError(row.id);\n\t\t\t\treturn row.bool;\n\t\t\tcase 'NUMERIC':\n\t\t\t\tif (row.num === null) throw new CorruptError(row.id);\n\t\t\t\treturn row.num;\n\t\t\tcase 'TEXT':\n\t\t\tcase 'ENUM':\n\t\t\t\tif (row.text === null) throw new CorruptError(row.id);\n\t\t\t\treturn row.text;\n\t\t\tcase 'JSON':\n\t\t\t\tif (!row.jsonSet) throw new CorruptError(row.id);\n\t\t\t\treturn row.json as Value;\n\t\t\tcase 'DATE':\n\t\t\t\tif (row.date === null) throw new CorruptError(row.id);\n\t\t\t\treturn row.date;\n\t\t}\n\t}\n}\n","import type { DefRecord, Scope, Value, ValueRecord } from '../core/types';\nimport {\n\tConflictError,\n\tScopeError,\n\tValueError,\n\tNotFoundError,\n} from '../core/errors';\nimport type { StorageAdapter, StorageTx } from '../storage/storage-port';\nimport type { ChangeBus } from '../cache/change-bus';\n\nexport interface SetParams {\n\tkey: string;\n\tscope: Scope;\n\tvalue: Value;\n\texpectedVersion?: number;\n\tauthorId: string;\n\treason?: string;\n}\n\nexport interface UnsetParams {\n\tkey: string;\n\tscope: Scope;\n\texpectedVersion?: number;\n\tauthorId: string;\n\treason?: string;\n}\n\nconst REDACTED = '[redacted]';\n\nexport class Writer {\n\tconstructor(\n\t\tprivate readonly storage: StorageAdapter,\n\t\tprivate readonly bus?: ChangeBus,\n\t) {}\n\n\tasync set(params: SetParams): Promise<ValueRecord> {\n\t\tconst created = await this.storage.transact((tx) =>\n\t\t\tthis.setInTx(tx, params),\n\t\t);\n\t\tawait this.emit(created, params.key);\n\t\treturn created;\n\t}\n\n\tasync setMany(paramsList: SetParams[]): Promise<ValueRecord[]> {\n\t\tconst created = await this.storage.transact(async (tx) => {\n\t\t\tconst results: ValueRecord[] = [];\n\t\t\tfor (const params of paramsList) {\n\t\t\t\tresults.push(await this.setInTx(tx, params));\n\t\t\t}\n\t\t\treturn results;\n\t\t});\n\t\tawait Promise.all(\n\t\t\tcreated.map((row, i) => this.emit(row, paramsList[i].key)),\n\t\t);\n\t\treturn created;\n\t}\n\n\tprivate async setInTx(\n\t\ttx: StorageTx,\n\t\tparams: SetParams,\n\t): Promise<ValueRecord> {\n\t\tconst def = await tx.findDef(params.key);\n\t\tif (!def) throw new NotFoundError(params.key);\n\n\t\tif (\n\t\t\tparams.scope.kind !== 'default' &&\n\t\t\t!def.scopes.includes(params.scope.kind)\n\t\t) {\n\t\t\tthrow new ScopeError(def.key, params.scope.kind);\n\t\t}\n\n\t\tthis.validate(def, params.value);\n\n\t\tconst current = await tx.findValue(\n\t\t\tdef.id,\n\t\t\tparams.scope.kind,\n\t\t\tparams.scope.refId,\n\t\t);\n\n\t\tconst currentVersion = current?.version ?? 0;\n\t\tconst expected = params.expectedVersion ?? 0;\n\t\tif (currentVersion !== expected) {\n\t\t\tthrow new ConflictError(\n\t\t\t\tdef.key,\n\t\t\t\tparams.scope.kind,\n\t\t\t\tparams.scope.refId,\n\t\t\t);\n\t\t}\n\n\t\tif (current) {\n\t\t\tawait tx.closeValue(current.id);\n\t\t}\n\n\t\tconst created = await tx.createValue({\n\t\t\tdefinitionId: def.id,\n\t\t\tscopeKind: params.scope.kind,\n\t\t\tscopeRefId: params.scope.refId,\n\t\t\tversion: currentVersion + 1,\n\t\t\tauthorId: params.authorId,\n\t\t\treason: params.reason,\n\t\t\ttype: def.type,\n\t\t\tvalue: params.value,\n\t\t});\n\n\t\tawait tx.createAudit({\n\t\t\tvalueId: created.id,\n\t\t\tdefinitionId: def.id,\n\t\t\tscopeKind: created.scopeKind,\n\t\t\tscopeRefId: created.scopeRefId,\n\t\t\taction: current ? 'superseded' : 'created',\n\t\t\tauthorId: params.authorId,\n\t\t\tbefore: current ? this.snapshotOf(def, current) : undefined,\n\t\t\tafter: this.snapshotOf(def, created),\n\t\t\treason: params.reason,\n\t\t});\n\n\t\treturn created;\n\t}\n\n\tasync unset(params: UnsetParams): Promise<void> {\n\t\tconst closed = await this.storage.transact((tx) =>\n\t\t\tthis.unsetInTx(tx, params),\n\t\t);\n\t\tif (closed) await this.emit(closed, params.key);\n\t}\n\n\tprivate async unsetInTx(\n\t\ttx: StorageTx,\n\t\tparams: UnsetParams,\n\t): Promise<ValueRecord | null> {\n\t\tconst def = await tx.findDef(params.key);\n\t\tif (!def) throw new NotFoundError(params.key);\n\n\t\tif (\n\t\t\tparams.scope.kind !== 'default' &&\n\t\t\t!def.scopes.includes(params.scope.kind)\n\t\t) {\n\t\t\tthrow new ScopeError(def.key, params.scope.kind);\n\t\t}\n\n\t\tconst current = await tx.findValue(\n\t\t\tdef.id,\n\t\t\tparams.scope.kind,\n\t\t\tparams.scope.refId,\n\t\t);\n\n\t\tconst currentVersion = current?.version ?? 0;\n\t\tconst expected = params.expectedVersion ?? 0;\n\t\tif (currentVersion !== expected) {\n\t\t\tthrow new ConflictError(\n\t\t\t\tdef.key,\n\t\t\t\tparams.scope.kind,\n\t\t\t\tparams.scope.refId,\n\t\t\t);\n\t\t}\n\t\tif (!current) return null;\n\n\t\tawait tx.closeValue(current.id);\n\t\tawait tx.createAudit({\n\t\t\tvalueId: current.id,\n\t\t\tdefinitionId: def.id,\n\t\t\tscopeKind: current.scopeKind,\n\t\t\tscopeRefId: current.scopeRefId,\n\t\t\taction: 'unset',\n\t\t\tauthorId: params.authorId,\n\t\t\tbefore: this.snapshotOf(def, current),\n\t\t\treason: params.reason,\n\t\t});\n\n\t\treturn current;\n\t}\n\n\tprivate async emit(created: ValueRecord, key: string): Promise<void> {\n\t\ttry {\n\t\t\tawait this.bus?.publish({\n\t\t\t\tdefinitionId: created.definitionId,\n\t\t\t\tkey,\n\t\t\t\tscopeKind: created.scopeKind,\n\t\t\t\tscopeRefId: created.scopeRefId,\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tconsole.error('conftree: change bus publish failed', err);\n\t\t}\n\t}\n\n\tprivate validate(def: DefRecord, value: Value): void {\n\t\tswitch (def.type) {\n\t\t\tcase 'BOOLEAN':\n\t\t\t\tif (typeof value !== 'boolean') {\n\t\t\t\t\tthrow new ValueError(\n\t\t\t\t\t\t`Setting \"${def.key}\" expects a boolean`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'NUMERIC': {\n\t\t\t\tif (typeof value !== 'number' || !Number.isFinite(value)) {\n\t\t\t\t\tthrow new ValueError(\n\t\t\t\t\t\t`Setting \"${def.key}\" expects a finite number`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (def.min !== null && value < def.min) {\n\t\t\t\t\tthrow new ValueError(\n\t\t\t\t\t\t`Setting \"${def.key}\" must be >= ${def.min}, got ${value}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (def.max !== null && value > def.max) {\n\t\t\t\t\tthrow new ValueError(\n\t\t\t\t\t\t`Setting \"${def.key}\" must be <= ${def.max}, got ${value}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'TEXT':\n\t\t\t\tif (typeof value !== 'string') {\n\t\t\t\t\tthrow new ValueError(\n\t\t\t\t\t\t`Setting \"${def.key}\" expects a string`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'ENUM':\n\t\t\t\tif (typeof value !== 'string' || !def.options.includes(value)) {\n\t\t\t\t\tthrow new ValueError(\n\t\t\t\t\t\t`Setting \"${def.key}\" must be one of: ${def.options.join(', ')}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'JSON': {\n\t\t\t\tlet serialized: string | undefined;\n\t\t\t\ttry {\n\t\t\t\t\tserialized = JSON.stringify(value);\n\t\t\t\t} catch {\n\t\t\t\t\tserialized = undefined;\n\t\t\t\t}\n\t\t\t\tif (serialized === undefined) {\n\t\t\t\t\tthrow new ValueError(\n\t\t\t\t\t\t`Setting \"${def.key}\" expects a JSON-serializable value`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'DATE':\n\t\t\t\tif (!(value instanceof Date) || Number.isNaN(value.getTime())) {\n\t\t\t\t\tthrow new ValueError(\n\t\t\t\t\t\t`Setting \"${def.key}\" expects a valid Date`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate snapshotOf(def: DefRecord, row: ValueRecord) {\n\t\tif (def.secret) {\n\t\t\treturn {\n\t\t\t\tscopeKind: row.scopeKind,\n\t\t\t\tscopeRefId: row.scopeRefId,\n\t\t\t\tversion: row.version,\n\t\t\t\tvalue: REDACTED,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tscopeKind: row.scopeKind,\n\t\t\tscopeRefId: row.scopeRefId,\n\t\t\tversion: row.version,\n\t\t\tbool: row.bool,\n\t\t\tnum: row.num,\n\t\t\ttext: row.text,\n\t\t\tjson: row.jsonSet ? row.json : undefined,\n\t\t\tdate: row.date,\n\t\t};\n\t}\n}\n","import type { Scope } from '../core/types';\nimport { NotFoundError } from '../core/errors';\nimport type { AuditRecord, StorageReader } from '../storage/storage-port';\n\nexport class Auditor {\n\tconstructor(private readonly storage: StorageReader) {}\n\n\tasync history(key: string, scope?: Scope): Promise<AuditRecord[]> {\n\t\tconst def = await this.storage.findAnyDef(key);\n\t\tif (!def) throw new NotFoundError(key);\n\n\t\treturn this.storage.findAudit({\n\t\t\tdefinitionId: def.id,\n\t\t\tscopeKind: scope?.kind,\n\t\t\tscopeRefId: scope?.refId,\n\t\t});\n\t}\n}\n","import type { Cache } from '../cache/cache';\nimport type { ScopeHierarchy } from '../core/types';\n\nexport function withHierarchyInvalidation(\n\thierarchy: ScopeHierarchy,\n\tcache: Cache,\n): ScopeHierarchy {\n\treturn {\n\t\tchain: (id) => hierarchy.chain(id),\n\t\tdescendants: (id) => hierarchy.descendants(id),\n\t\tchildren: (id) => hierarchy.children(id),\n\t\tparent: (id) => hierarchy.parent(id),\n\t\tattach: async (id, parentId) => {\n\t\t\tawait hierarchy.attach(id, parentId);\n\t\t\tcache.dropForScopes(await hierarchy.descendants(id));\n\t\t},\n\t\tmove: async (id, newParentId) => {\n\t\t\tconst descendants = await hierarchy.descendants(id);\n\t\t\tawait hierarchy.move(id, newParentId);\n\t\t\tcache.dropForScopes(descendants);\n\t\t},\n\t\tdetach: async (id) => {\n\t\t\tconst descendants = await hierarchy.descendants(id);\n\t\t\tawait hierarchy.detach(id);\n\t\t\tcache.dropForScopes(descendants);\n\t\t},\n\t};\n}\n","import type { ChangeBus } from '../cache/change-bus';\nimport { LocalBus } from '../cache/change-bus';\nimport type { CacheOptions } from '../cache/cache';\nimport { Cache } from '../cache/cache';\nimport { withHierarchyInvalidation } from './hierarchy-cache-sync';\nimport { MemoryStorageAdapter } from '../storage/memory-storage';\nimport { Resolver } from './resolver';\nimport { LocalScopeHierarchy } from '../hierarchy/scope-hierarchy';\nimport type { StorageAdapter } from '../storage/storage-port';\nimport type { ScopeHierarchy } from '../core/types';\nimport { Writer } from './writer';\nimport { Auditor } from './auditor';\n\nexport interface EngineOptions {\n\tstorage?: StorageAdapter;\n\thierarchy?: ScopeHierarchy;\n\tbus?: ChangeBus;\n\tcache?: CacheOptions | false;\n}\n\nexport interface Engine {\n\tstorage: StorageAdapter;\n\thierarchy: ScopeHierarchy;\n\tbus: ChangeBus;\n\tcache: Cache;\n\tresolver: Resolver;\n\twriter: Writer;\n\tauditor: Auditor;\n}\n\nexport function createEngine(options: EngineOptions = {}): Engine {\n\tconst storage = options.storage ?? new MemoryStorageAdapter();\n\tconst rawHierarchy = options.hierarchy ?? new LocalScopeHierarchy();\n\tconst bus = options.bus ?? new LocalBus();\n\tconst cacheOptions =\n\t\toptions.cache === false ? { enabled: false } : (options.cache ?? {});\n\tconst cache = new Cache(bus, cacheOptions, rawHierarchy);\n\tconst hierarchy = withHierarchyInvalidation(rawHierarchy, cache);\n\tconst resolver = new Resolver(storage, hierarchy, cache);\n\tconst writer = new Writer(storage, bus);\n\tconst auditor = new Auditor(storage);\n\treturn { storage, hierarchy, bus, cache, resolver, writer, auditor };\n}\n","import type { Scope } from '../core/types';\nimport type { Resolver } from '../engine/resolver';\nimport type { SettingScopeKind, SettingValue } from './registry';\n\nexport class TypedResolver<Registry> {\n\tconstructor(private readonly resolver: Resolver) {}\n\n\tget<K extends keyof Registry & string>(\n\t\tkey: K,\n\t\tscope: Scope & { kind: SettingScopeKind<Registry, K> },\n\t\tasOf?: Date,\n\t): Promise<SettingValue<Registry, K>> {\n\t\treturn this.resolver.get(key, scope, asOf) as Promise<\n\t\t\tSettingValue<Registry, K>\n\t\t>;\n\t}\n\n\tasync getMany<K extends readonly (keyof Registry & string)[]>(\n\t\tkeys: K,\n\t\tscope: Scope,\n\t\tasOf?: Date,\n\t): Promise<{ [P in K[number]]: SettingValue<Registry, P> }> {\n\t\tconst result = await this.resolver.getMany([...keys], scope, asOf);\n\t\treturn result as { [P in K[number]]: SettingValue<Registry, P> };\n\t}\n\n\tasync listAt(\n\t\tscope: Scope,\n\t\topts: { limit?: number; cursor?: string } = {},\n\t): Promise<{\n\t\tentries: Partial<{\n\t\t\t[K in keyof Registry & string]: SettingValue<Registry, K>;\n\t\t}>;\n\t\tnextCursor: string | null;\n\t}> {\n\t\tconst page = await this.resolver.listAt(scope, opts);\n\t\treturn page as {\n\t\t\tentries: Partial<{\n\t\t\t\t[K in keyof Registry & string]: SettingValue<Registry, K>;\n\t\t\t}>;\n\t\t\tnextCursor: string | null;\n\t\t};\n\t}\n}\n","import type { Scope, ValueRecord } from '../core/types';\nimport type { SetParams, Writer } from '../engine/writer';\nimport type { SettingScopeKind, SettingValue } from './registry';\n\nexport interface TypedSetParams<Registry, K extends keyof Registry & string> {\n\tkey: K;\n\tscope: Scope & { kind: SettingScopeKind<Registry, K> };\n\tvalue: SettingValue<Registry, K>;\n\texpectedVersion?: number;\n\tauthorId: string;\n\treason?: string;\n}\n\nexport interface TypedUnsetParams<Registry, K extends keyof Registry & string> {\n\tkey: K;\n\tscope: Scope & { kind: SettingScopeKind<Registry, K> };\n\texpectedVersion?: number;\n\tauthorId: string;\n\treason?: string;\n}\n\nexport class TypedWriter<Registry> {\n\tconstructor(private readonly writer: Writer) {}\n\n\tset<K extends keyof Registry & string>(\n\t\tparams: TypedSetParams<Registry, K>,\n\t): Promise<ValueRecord> {\n\t\treturn this.writer.set(params as unknown as SetParams);\n\t}\n\n\tsetMany(\n\t\tparamsList: {\n\t\t\t[K in keyof Registry & string]: TypedSetParams<Registry, K>;\n\t\t}[keyof Registry & string][],\n\t): Promise<ValueRecord[]> {\n\t\treturn this.writer.setMany(paramsList as unknown as SetParams[]);\n\t}\n\n\tunset<K extends keyof Registry & string>(\n\t\tparams: TypedUnsetParams<Registry, K>,\n\t): Promise<void> {\n\t\treturn this.writer.unset(params);\n\t}\n}\n","import type { Scope } from '../core/types';\nimport type { Auditor } from '../engine/auditor';\nimport type { AuditRecord } from '../storage/storage-port';\nimport type { SettingScopeKind } from './registry';\n\nexport class TypedAuditor<Registry> {\n\tconstructor(private readonly auditor: Auditor) {}\n\n\thistory<K extends keyof Registry & string>(\n\t\tkey: K,\n\t\tscope?: Scope & { kind: SettingScopeKind<Registry, K> },\n\t): Promise<AuditRecord[]> {\n\t\treturn this.auditor.history(key, scope);\n\t}\n}\n","import type { Engine } from '../engine/engine';\nimport { TypedResolver } from './typed-resolver';\nimport { TypedWriter } from './typed-writer';\nimport { TypedAuditor } from './typed-auditor';\n\nexport interface TypedEngine<Registry> {\n\tresolver: TypedResolver<Registry>;\n\twriter: TypedWriter<Registry>;\n\tauditor: TypedAuditor<Registry>;\n}\n\nexport function createTypedEngine<Registry>(\n\tengine: Engine,\n): TypedEngine<Registry> {\n\treturn {\n\t\tresolver: new TypedResolver<Registry>(engine.resolver),\n\t\twriter: new TypedWriter<Registry>(engine.writer),\n\t\tauditor: new TypedAuditor<Registry>(engine.auditor),\n\t};\n}\n"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"memory-storage.d.ts","sourceRoot":"","sources":["../../src/storage/memory-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,WAAW,EAEX,cAAc,EAEd,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACX,SAAS,EACT,MAAM,EAEN,WAAW,EAEX,MAAM,eAAe,CAAC;AAmBvB,qBAAa,oBAAqB,YAAW,cAAc;IAC1D,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAuC;IAEtD,OAAO,CAAC,KAAK;IAIP,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAS9C,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAa1D,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAc9D,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAKlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAIlD,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAyB7D,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAaxD,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;IA2BpD,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAQhE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAW/C,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAMhE,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,EAAE;CA2CV"}
1
+ {"version":3,"file":"memory-storage.d.ts","sourceRoot":"","sources":["../../src/storage/memory-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,WAAW,EAEX,cAAc,EAEd,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACX,SAAS,EACT,MAAM,EAEN,WAAW,EAEX,MAAM,eAAe,CAAC;AAmBvB,qBAAa,oBAAqB,YAAW,cAAc;IAC1D,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAuC;IAEtD,OAAO,CAAC,KAAK;IAIP,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAS9C,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAa1D,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAc9D,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAKlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAIlD,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAyB7D,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAaxD,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;IA2BpD,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAShE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAW/C,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAgBhE,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,EAAE;CA2CV"}
@@ -112,8 +112,9 @@ class MemoryStorageAdapter {
112
112
  const current = this.latestVersion(key);
113
113
  if (!current)
114
114
  throw new errors_1.NotFoundError(key);
115
- current.status = status;
116
- return current;
115
+ const updated = { ...current, status };
116
+ this.defs = this.defs.map((d) => (d === current ? updated : d));
117
+ return updated;
117
118
  }
118
119
  async listDefs(status) {
119
120
  const rows = status
@@ -123,7 +124,18 @@ class MemoryStorageAdapter {
123
124
  a.key.localeCompare(b.key));
124
125
  }
125
126
  async transact(fn) {
126
- const run = this.txQueue.then(() => fn(this.tx()));
127
+ const run = this.txQueue.then(async () => {
128
+ const valuesSnapshot = structuredClone(this.values);
129
+ const auditLogSnapshot = structuredClone(this.auditLog);
130
+ try {
131
+ return await fn(this.tx());
132
+ }
133
+ catch (err) {
134
+ this.values = valuesSnapshot;
135
+ this.auditLog = auditLogSnapshot;
136
+ throw err;
137
+ }
138
+ });
127
139
  this.txQueue = run.catch(() => { });
128
140
  return run;
129
141
  }
@@ -1 +1 @@
1
- {"version":3,"file":"memory-storage.js","sourceRoot":"","sources":["../../src/storage/memory-storage.ts"],"names":[],"mappings":";;;AAoBA,2CAA+C;AAO/C,SAAS,cAAc,CAAC,IAAe,EAAE,KAAY;IACpD,OAAO;QACN,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAE,KAAiB,CAAC,CAAC,CAAC,IAAI;QACpD,GAAG,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAE,KAAgB,CAAC,CAAC,CAAC,IAAI;QAClD,IAAI,EAAE,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,CAAE,KAAgB,CAAC,CAAC,CAAC,IAAI;QACnE,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QACpC,OAAO,EAAE,IAAI,KAAK,MAAM;QACxB,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAE,KAAc,CAAC,CAAC,CAAC,IAAI;KAC9C,CAAC;AACH,CAAC;AAED,MAAa,oBAAoB;IACxB,IAAI,GAAgB,EAAE,CAAC;IACvB,MAAM,GAAkB,EAAE,CAAC;IAC3B,QAAQ,GAAkB,EAAE,CAAC;IAC7B,MAAM,GAAG,CAAC,CAAC;IACX,OAAO,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;IAE9C,KAAK,CAAC,MAAc;QAC3B,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAc;QAC5B,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;YACjE,IAAI,KAAK;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAsB;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CACxB,CAAC,CAAC,EAAE,EAAE,CACL,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC;YACvB,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;YAC/B,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;YACjC,CAAC,CAAC,SAAS,IAAI,IAAI;YACnB,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,CACzC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAAqB;QAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CACxB,CAAC,CAAC,EAAE,EAAE,CACL,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC;YAC1B,CAAC,CAAC,UAAU,KAAK,IAAI;YACrB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;YACxB,CAAC,CAAC,SAAS,IAAI,IAAI;YACnB,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,CACzC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAa;QAChC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAsB;QACtC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;aACxB,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;YAC/B,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;YACjC,CAAC,CAAC,SAAS,IAAI,GAAG;YAClB,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,CACxC;aACA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3C,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM;YAC9B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;YACpD,CAAC,CAAC,CAAC,CAAC;QACL,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;QACxD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,KAAK,CAAC,CAAC;QAC1D,MAAM,UAAU,GACf,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;YACvC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC;YACrC,CAAC,CAAC,IAAI,CAAC;QAET,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAqB;QACpC,OAAO,IAAI,CAAC,QAAQ;aAClB,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY;YACrC,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS;gBAC7B,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC;YACjC,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS;gBAC9B,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,CAAC,CACpC;aACA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAqB;QACpC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC;QACtE,MAAM,OAAO,GACZ,gBAAgB,CAAC,MAAM,GAAG,CAAC;YAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC;YACzD,CAAC,CAAC,CAAC,CAAC;QACN,MAAM,MAAM,GAAc;YACzB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACrB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,OAAO;YACP,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI;YACtC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;YAC5B,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,IAAI;YACtB,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,IAAI;YACtB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK;YAC7B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,OAAO;YAC/B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;SAChC,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,OAAO,MAAM,CAAC;IACf,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAW,EAAE,MAAc;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,sBAAa,CAAC,GAAG,CAAC,CAAC;QAE3C,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QACxB,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAe;QAC7B,MAAM,IAAI,GAAG,MAAM;YAClB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;YAC9C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACb,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CACpB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACR,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;YAClD,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAC3B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAI,EAAiC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACnC,OAAO,GAAG,CAAC;IACZ,CAAC;IAEO,cAAc,CACrB,GAAW,EACX,QAAkB;QAElB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,CAAC;IAEO,aAAa,CAAC,GAAW;QAChC,OAAO,IAAI,CAAC,IAAI;aACd,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;aAC5B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAEO,EAAE;QACT,OAAO;YACN,OAAO,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE,CAC9B,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI;YAE7C,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,CACxD,IAAI,CAAC,MAAM,CAAC,IAAI,CACf,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,YAAY,KAAK,YAAY;gBAC/B,CAAC,CAAC,SAAS,KAAK,SAAS;gBACzB,CAAC,CAAC,UAAU,KAAK,UAAU;gBAC3B,CAAC,CAAC,OAAO,KAAK,IAAI,CACnB,IAAI,IAAI;YAEV,UAAU,EAAE,KAAK,EAAE,EAAU,EAAE,EAAE;gBAChC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBACjD,IAAI,GAAG;oBAAE,GAAG,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YACnC,CAAC;YAED,WAAW,EAAE,KAAK,EAAE,KAAuB,EAAE,EAAE;gBAC9C,MAAM,MAAM,GAAgB;oBAC3B,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;oBACrB,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,SAAS,EAAE,IAAI,IAAI,EAAE;oBACrB,OAAO,EAAE,IAAI;oBACb,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;iBAC1C,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzB,OAAO,MAAM,CAAC;YACf,CAAC;YAED,WAAW,EAAE,KAAK,EAAE,KAAuB,EAAiB,EAAE;gBAC7D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAClB,GAAG,KAAK;oBACR,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBACvB,EAAE,EAAE,IAAI,IAAI,EAAE;iBACd,CAAC,CAAC;YACJ,CAAC;SACD,CAAC;IACH,CAAC;CACD;AA3MD,oDA2MC"}
1
+ {"version":3,"file":"memory-storage.js","sourceRoot":"","sources":["../../src/storage/memory-storage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "conftree",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Generic hierarchical configuration engine with arbitrary scopes, inheritance, caching, and audit. Zero required dependencies: works standalone or with any storage/pub-sub backend via simple ports.",
5
5
  "repository": {
6
6
  "type": "git",