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.
- package/dist/engine/resolver.d.ts.map +1 -1
- package/dist/engine/resolver.js +1 -0
- package/dist/engine/resolver.js.map +1 -1
- package/dist/engine/writer.d.ts.map +1 -1
- package/dist/engine/writer.js +18 -8
- package/dist/engine/writer.js.map +1 -1
- package/dist/hierarchy/scope-hierarchy.d.ts.map +1 -1
- package/dist/hierarchy/scope-hierarchy.js +3 -0
- package/dist/hierarchy/scope-hierarchy.js.map +1 -1
- package/dist/index.mjs +35 -12
- package/dist/index.mjs.map +1 -1
- package/dist/storage/memory-storage.d.ts.map +1 -1
- package/dist/storage/memory-storage.js +15 -3
- package/dist/storage/memory-storage.js.map +1 -1
- package/package.json +1 -1
|
@@ -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;
|
|
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"}
|
package/dist/engine/resolver.js
CHANGED
|
@@ -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":";;;AAOA,yCAA8C;AAC9C,2CAKwB;AASxB,MAAa,QAAQ;IAEF;IACA;IACA;IAHlB,YACkB,OAAsB,EACtB,SAA0B,EAC1B,KAAa;QAFb,YAAO,GAAP,OAAO,CAAe;QACtB,cAAS,GAAT,SAAS,CAAiB;QAC1B,UAAK,GAAL,KAAK,CAAQ;IAC5B,CAAC;IAEJ,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAY,EAAE,IAAW;QAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,MAAM,CACX,KAAY,EACZ,OAA4C,EAAE;QAE9C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YAC5D,SAAS,EAAE,KAAK,CAAC,IAAI;YACrB,UAAU,EAAE,KAAK,CAAC,KAAK;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;SACnB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;QAE5D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YAC7C,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;SAC7C,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpD,MAAM,OAAO,GAA0B,EAAE,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,OAAO,CACZ,IAAc,EACd,KAAY,EACZ,IAAW;QAEX,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,MAAM,MAAM,GAA0B,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC3C,IAAI,MAAM,KAAK,SAAS;oBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;;oBAC1C,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;QACF,CAAC;aAAM,CAAC;YACP,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QAEzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAE,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,SAAS,GAAgB,EAAE,CAAC;QAClC,MAAM,SAAS,GAAgB,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;YAC/B,MAAM,eAAe,GACpB,GAAG,CAAC,OAAO,KAAK,aAAa;gBAC7B,KAAK,CAAC,KAAK,KAAK,IAAI;gBACpB,IAAI,CAAC,SAAS,CAAC;YAChB,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,KAAK,GACV,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS;YAC7D,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YACzC,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAChD,SAAS,CAAC,MAAM,GAAG,CAAC;gBACnB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;oBACxB,aAAa,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzC,SAAS,EAAE,KAAK,CAAC,IAAI;oBACrB,UAAU,EAAE,KAAK,CAAC,KAAK;oBACvB,IAAI;iBACJ,CAAC;gBACH,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAmB,CAAC;YACvC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBACvC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;oBAC7B,aAAa,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzC,KAAK;oBACL,IAAI;iBACJ,CAAC;gBACH,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAmB,CAAC;SACvC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;QACpD,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAExD,MAAM,OAAO,GAAgB,EAAE,CAAC;QAChC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;YAC/B,IAAI,GAA4B,CAAC;YACjC,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,IAAI,GAAG,CACpB,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBACzC,CAAC,CAAC,UAAU;oBACZ,CAAC;iBACD,CAAC,CACF,CAAC;gBACF,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;oBACzB,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACrB,IAAI,GAAG;wBAAE,MAAM;gBAChB,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9B,CAAC;YACD,IAAI,GAAG,EAAE,CAAC;gBACT,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACpC,IAAI,IAAI,KAAK,SAAS;oBACrB,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACF,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YACrB,MAAM,IAAI,CAAC,cAAc,CACxB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,IAAI,CACJ,CAAC;QAEH,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,cAAc,CAC3B,OAAoB,EACpB,KAAY,EACZ,WAAqB,EACrB,QAAgC,EAChC,MAA6B,EAC7B,IAAW;QAEX,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACjD,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,SAAS,EAAE,qBAAa,CAAC,IAAI;YAC7B,UAAU,EAAE,qBAAa,CAAC,KAAK;
|
|
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;
|
|
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"}
|
package/dist/engine/writer.js
CHANGED
|
@@ -102,12 +102,17 @@ class Writer {
|
|
|
102
102
|
return current;
|
|
103
103
|
}
|
|
104
104
|
async emit(created, key) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
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;
|
|
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
|
-
|
|
325
|
-
|
|
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(() =>
|
|
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
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
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(
|
package/dist/index.mjs.map
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
116
|
-
|
|
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(() =>
|
|
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,
|
|
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,MAAM,OAAO,GAAc,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,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,KAAK,IAAI,EAAE;YACxC,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxD,IAAI,CAAC;gBACJ,OAAO,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC;gBAC7B,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC;gBACjC,MAAM,GAAG,CAAC;YACX,CAAC;QACF,CAAC,CAAC,CAAC;QACH,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;AAtND,oDAsNC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "conftree",
|
|
3
|
-
"version": "0.1.
|
|
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",
|