@cldmv/slothlet 3.0.1 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +16 -14
  2. package/dist/lib/builders/api_builder.mjs +104 -4
  3. package/dist/lib/handlers/api-manager.mjs +179 -14
  4. package/dist/lib/handlers/metadata.mjs +15 -0
  5. package/dist/lib/handlers/unified-wrapper.mjs +22 -11
  6. package/dist/lib/handlers/version-manager.mjs +773 -0
  7. package/dist/lib/helpers/config.mjs +33 -5
  8. package/dist/lib/i18n/languages/de-de.json +15 -1
  9. package/dist/lib/i18n/languages/en-gb.json +15 -1
  10. package/dist/lib/i18n/languages/en-us.json +15 -1
  11. package/dist/lib/i18n/languages/es-mx.json +15 -1
  12. package/dist/lib/i18n/languages/fr-fr.json +15 -1
  13. package/dist/lib/i18n/languages/hi-in.json +15 -1
  14. package/dist/lib/i18n/languages/ja-jp.json +15 -1
  15. package/dist/lib/i18n/languages/ko-kr.json +15 -1
  16. package/dist/lib/i18n/languages/pt-br.json +15 -1
  17. package/dist/lib/i18n/languages/ru-ru.json +15 -1
  18. package/dist/lib/i18n/languages/zh-cn.json +15 -1
  19. package/dist/lib/i18n/translations.mjs +2 -0
  20. package/dist/slothlet.mjs +98 -1
  21. package/package.json +5 -2
  22. package/types/dist/lib/builders/api_builder.d.mts.map +1 -1
  23. package/types/dist/lib/handlers/api-manager.d.mts +28 -0
  24. package/types/dist/lib/handlers/api-manager.d.mts.map +1 -1
  25. package/types/dist/lib/handlers/metadata.d.mts +15 -0
  26. package/types/dist/lib/handlers/metadata.d.mts.map +1 -1
  27. package/types/dist/lib/handlers/unified-wrapper.d.mts.map +1 -1
  28. package/types/dist/lib/handlers/version-manager.d.mts +234 -0
  29. package/types/dist/lib/handlers/version-manager.d.mts.map +1 -0
  30. package/types/dist/lib/helpers/config.d.mts +33 -0
  31. package/types/dist/lib/helpers/config.d.mts.map +1 -1
  32. package/types/dist/lib/i18n/translations.d.mts.map +1 -1
  33. package/types/dist/slothlet.d.mts +25 -0
  34. package/types/dist/slothlet.d.mts.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cldmv/slothlet",
3
- "version": "3.0.1",
3
+ "version": "3.2.0",
4
4
  "moduleVersions": {
5
5
  "lazy": "3.0.0",
6
6
  "eager": "3.0.0",
@@ -125,6 +125,7 @@
125
125
  "vitest": "node tests/vitests/run-all-vitest.mjs --workers 8",
126
126
  "baseline": "npm run vitest -- --baseline",
127
127
  "coverage": "npm run vitest -- --coverage-quiet",
128
+ "ci:coverage": "npm run coverage",
128
129
  "test": "npm run test:pre-build",
129
130
  "test:pre-build": "node tests/test-conditional.mjs",
130
131
  "test:post-build": "npm run test:types",
@@ -132,6 +133,7 @@
132
133
  "test:node": "node tests/run-all-tests.mjs",
133
134
  "test:all": "node tests/test-conditional.mjs && npm run test:node",
134
135
  "test:types": "node tests/validate-typescript.mjs",
136
+ "ci:test:types": "npm run build:dist && npm run build:types && npm run test:types",
135
137
  "test:performance": "node tests/performance/performance-benchmark-aggregated.mjs",
136
138
  "test:performance-simple": "node tests/performance/performance-benchmark.mjs",
137
139
  "lint": "eslint --config .configs/eslint.config.mjs .",
@@ -141,7 +143,8 @@
141
143
  "fix:headers": "node tools/dev/fix-headers.mjs",
142
144
  "build": "npm run build:dev",
143
145
  "build:ci": "npm run build:cleanup && npm run build:dist && npm run build:types && npm run build:exports && npm run test:types && npm run build:prepend-license && npm run ci:cleanup-src",
144
- "build:dev": "npm run build:cleanup && npm run build:dist && npm run build:types && npm run build:exports && npm run test:types && npm run build:prepend-license && npm run build:cleanup",
146
+ "build:dev": "npm run build:cleanup && npm run build:dist && npm run build:types && npm run build:exports && npm run test:types && npm run build:prepend-license",
147
+ "build:dev:test": "npm run build:cleanup && npm run build:dist && npm run build:types && npm run build:exports && npm run test:types && npm run build:prepend-license && npm run build:cleanup",
145
148
  "build:unsafe": "npm run build:cleanup && npm run build:dist && npm run build:types && npm run build:exports && npm run test:types && npm run build:prepend-license",
146
149
  "ci:cleanup-src": "node tools/ci/ci-cleanup-src.mjs",
147
150
  "build:cleanup": "shx rm -rf types && shx rm -rf dist",
@@ -1 +1 @@
1
- {"version":3,"file":"api_builder.d.mts","sourceRoot":"","sources":["../../../../dist/lib/builders/api_builder.mjs"],"names":[],"mappings":"AAkEA;;;;;;;;;;;;;GAaG;AACH;IACC,gCAAuC;IAcvC;;;;;OAKG;IACH,oCAHa,OAAO,KAAQ,CAiG3B;IAED;;;;;;;;;;;OAWG;IACH,gCAghCC;IAED;;;;OAIG;IACH,+BAYC;IAED;;;;OAIG;IACH,0BAgCC;IAED;;;;OAIG;IACH,4BAoMC;IAED;;;;;OAKG;IACH,8BAyCC;IAED;;;;;OAKG;IACH,uBAgCC;CACD;;;;;;;;;;;;;;;;;;;;;;;;;;8BAriD6B,0CAA0C"}
1
+ {"version":3,"file":"api_builder.d.mts","sourceRoot":"","sources":["../../../../dist/lib/builders/api_builder.mjs"],"names":[],"mappings":"AAyEA;;;;;;;;;;;;;GAaG;AACH;IACC,gCAAuC;IAcvC;;;;;OAKG;IACH,oCAHa,OAAO,KAAQ,CAiG3B;IAED;;;;;;;;;;;OAWG;IACH,gCA2uCC;IAED;;;;OAIG;IACH,+BAYC;IAED;;;;OAIG;IACH,0BAgCC;IAED;;;;OAIG;IACH,4BAoMC;IAED;;;;;OAKG;IACH,8BAyCC;IAED;;;;;OAKG;IACH,uBAgCC;CACD;;;;;;;;;;;;;;;;;;;;;;;;;;8BAvwD6B,0CAA0C"}
@@ -273,6 +273,34 @@ export class ApiManager extends ComponentBase {
273
273
  folderPath: string | string[];
274
274
  options?: Record<string, unknown>;
275
275
  }): Promise<string | string[]>;
276
+ /**
277
+ * Roll back a failed versioned add.
278
+ *
279
+ * @description
280
+ * Called when `versionManager.registerVersion()` throws after the API tree, cache,
281
+ * ownership, and history have already been mutated by `addApiComponent()`. Scrubs
282
+ * the orphaned "add" entry from `operationHistory`, then delegates tree/cache/ownership
283
+ * and `addHistory` cleanup to `removeApiComponent({ recordHistory: false })` so that
284
+ * no spurious "remove" entry is pushed into `operationHistory`.
285
+ *
286
+ * The rollback is best-effort: if `removeApiComponent` itself throws the error is
287
+ * swallowed and the caller re-throws the original registration error.
288
+ *
289
+ * @param {object} opts - Rollback context.
290
+ * @param {string} opts.moduleID - The moduleID of the just-added component.
291
+ * @param {string} opts.effectivePath - The effective (versioned) mount path, e.g. "v1.auth".
292
+ * @param {string} opts.normalizedPath - The logical path, e.g. "auth".
293
+ * @returns {Promise<void>}
294
+ * @package
295
+ *
296
+ * @example
297
+ * await this._rollbackFailedVersionedAdd({ moduleID, effectivePath, normalizedPath });
298
+ */
299
+ _rollbackFailedVersionedAdd({ moduleID, effectivePath, normalizedPath }: {
300
+ moduleID: string;
301
+ effectivePath: string;
302
+ normalizedPath: string;
303
+ }): Promise<void>;
276
304
  /**
277
305
  * Remove API modules at runtime.
278
306
  * @param {string} pathOrModuleId - API path (with dots) or module ID (with underscore) to remove.
@@ -1 +1 @@
1
- {"version":3,"file":"api-manager.d.mts","sourceRoot":"","sources":["../../../../dist/lib/handlers/api-manager.mjs"],"names":[],"mappings":"AAmDA;;;;;;;;;;;;;;GAcG;AACH;IACC,gCAAuC;IAgBtC;;;;MAMC;IAGF;;;;;;;;;;;;;;;;;;OAkBG;IACH,yBAuFC;IAED;;;;;;;;;;;;;;OAcG;IACH,oBA+BC;IAED;;;;;;;;;;;;;;OAcG;IACH,0BA4BC;IAED;;;;;;;;;;;;OAYG;IACH,6BAIC;IAED;;;;;;;;;;;;OAYG;IACH,uBASC;IAED;;;;;;;;;;;;;OAaG;IACH,yBAkCC;IAED;;;;;;;;;;;;;OAaG;IACH,uBAEC;IAED;;;;;;;;;;;;;;OAcG;IACH,oBAmNC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,uBAkGC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,uBA8GC;IAED;;;;;;;;;;;;OAYG;IACH,mBAmGC;IACD;;;;;;;;;;;;OAYG;IACH,uBAwEC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACH,wBA3CG;QAAuB,OAAO,EAAtB,MAAM;QACkB,UAAU,EAAlC,MAAM,GAAC,MAAM,EAAE;QACkB,OAAO,GAAxC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;KAC/B,GAAU,OAAO,CAAC,MAAM,GAAC,MAAM,EAAE,CAAC,CA4epC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,mCAfW,MAAM,iBACJ,OAAO,CAAC,IAAI,CAAC,CA6XzB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,2BAdG;QAAwB,OAAO,EAAtB,MAAM,OAAA;QACS,QAAQ,EAAvB,MAAM,OAAA;KACf,GAAU,OAAO,CAAC,IAAI,CAAC,CAuCzB;IAED;;;;;;;;;;OAUG;IACH,0BAiEC;IAED;;;;;;;;;;;;;;OAcG;IACH,yBAsFC;IAED;;;;;;;;;;;;;OAaG;IACH,4BA0FC;IAED;;;;;;;;OAQG;IACH,iCAuDC;IAED;;;;;OAKG;IACH,iCAeC;IAED;;;;;;;;;;;;;OAaG;IACH,wBA+TC;CACD;8BA5nF6B,0CAA0C"}
1
+ {"version":3,"file":"api-manager.d.mts","sourceRoot":"","sources":["../../../../dist/lib/handlers/api-manager.mjs"],"names":[],"mappings":"AAmDA;;;;;;;;;;;;;;GAcG;AACH;IACC,gCAAuC;IAgBtC;;;;MAMC;IAGF;;;;;;;;;;;;;;;;;;OAkBG;IACH,yBAuFC;IAED;;;;;;;;;;;;;;OAcG;IACH,oBA+BC;IAED;;;;;;;;;;;;;;OAcG;IACH,0BA4BC;IAED;;;;;;;;;;;;OAYG;IACH,6BAIC;IAED;;;;;;;;;;;;OAYG;IACH,uBASC;IAED;;;;;;;;;;;;;OAaG;IACH,yBAkCC;IAED;;;;;;;;;;;;;OAaG;IACH,uBAEC;IAED;;;;;;;;;;;;;;OAcG;IACH,oBAmNC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,uBAkGC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,uBA8GC;IAED;;;;;;;;;;;;OAYG;IACH,mBAmGC;IACD;;;;;;;;;;;;OAYG;IACH,uBAwEC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACH,wBA3CG;QAAuB,OAAO,EAAtB,MAAM;QACkB,UAAU,EAAlC,MAAM,GAAC,MAAM,EAAE;QACkB,OAAO,GAAxC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;KAC/B,GAAU,OAAO,CAAC,MAAM,GAAC,MAAM,EAAE,CAAC,CAijBpC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,yEATG;QAAqB,QAAQ,EAArB,MAAM;QACO,aAAa,EAA1B,MAAM;QACO,cAAc,EAA3B,MAAM;KACd,GAAU,OAAO,CAAC,IAAI,CAAC,CAuCzB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,mCAfW,MAAM,iBACJ,OAAO,CAAC,IAAI,CAAC,CA2ZzB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,2BAdG;QAAwB,OAAO,EAAtB,MAAM,OAAA;QACS,QAAQ,EAAvB,MAAM,OAAA;KACf,GAAU,OAAO,CAAC,IAAI,CAAC,CAuCzB;IAED;;;;;;;;;;OAUG;IACH,0BAsEC;IAED;;;;;;;;;;;;;;OAcG;IACH,yBAsFC;IAED;;;;;;;;;;;;;OAaG;IACH,4BA0FC;IAED;;;;;;;;OAQG;IACH,iCAuDC;IAED;;;;;OAKG;IACH,iCAeC;IAED;;;;;;;;;;;;;OAaG;IACH,wBAwVC;CACD;8BAvzF6B,0CAA0C"}
@@ -116,6 +116,21 @@ export class Metadata extends ComponentBase {
116
116
  * @public
117
117
  */
118
118
  public setPathMetadata(apiPath: string, keyOrObj: string | any, value?: unknown): void;
119
+ /**
120
+ * Get the user metadata collected from the path store for a given API path.
121
+ *
122
+ * @description
123
+ * Traverses from root segment to leaf, merging parent → child metadata — the same
124
+ * traversal used by `collectMetadataFromParents` inside `getMetadata()`. Does not
125
+ * include immutable system metadata; only user-supplied path store entries are returned.
126
+ *
127
+ * @param {string} apiPath - Dot-notation API path (e.g. `"v1.auth"`, `"math"`).
128
+ * @returns {Object} Merged user metadata for the path (not frozen).
129
+ * @public
130
+ * @example
131
+ * metadata.getPathMetadata("v1.auth"); // { stable: true, category: "auth" }
132
+ */
133
+ public getPathMetadata(apiPath: string): any;
119
134
  /**
120
135
  * Remove metadata keys (or all metadata) for an API path.
121
136
  *
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.mts","sourceRoot":"","sources":["../../../../dist/lib/handlers/metadata.mjs"],"names":[],"mappings":"AAwBA;;;;;GAKG;AACH;IACC,gCAAqC;IASrC,iBAAmB;IAkCnB;;;;;;;;;;;;;;;OAeG;IACH,0BAyCC;IAED;;;;;OAKG;IACH,0BAJW,cAAe,GACb,MAAO,IAAI,CAYvB;IAED;;;;;;OAMG;IACH,2BAJW,cAAe,OAoEzB;IAED;;;;;OAKG;IACH,8BAJW,MAAM,SACN,OAAO,QAKjB;IAED;;;;;;OAMG;IACH,8CAJW,MAAM,SACN,OAAO,QA+CjB;IAED;;;;;;;;OAQG;IACH,kDANW,MAAM,GAAC,MAAM,EAAE,GAAC;YAAO,MAAM,GAAE,MAAM,EAAE;KAAC,QAkFlD;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,iCAJW,MAAM,uBA2BhB;IAED;;;;;;;;;OASG;IACH,qCAHW,MAAM,QAMhB;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,gCALW,MAAM,YACN,MAAM,MAAO,UACb,OAAO,QAyBjB;IAED;;;;;;;;;;;;OAYG;IACH,mCAJW,MAAM,QACN,MAAM,GAAC,MAAM,EAAE,QA+BzB;IAED;;;;;;;;;;OAUG;IACH,mBAHa;QAAE,cAAc,MAAS;QAAC,iBAAiB,gBAAK;KAAE,CAe9D;IAED;;;;;;;;;;;;;;;OAeG;IACH,uBAHW;QAAE,cAAc,MAAS;QAAC,iBAAiB,gBAAK;KAAE,QAgC5D;IAED;;;;;;;;;;;;;OAaG;IACH,iBAJW,MAAM,GACJ,OAAO,CAAC,MAAM,GAAC,IAAI,CAAC,CAkChC;IAED;;;;;;;;;;;;;OAaG;IACH,eAHa,MAAM,CASlB;IAED;;;;;;;;;;;;OAYG;IACH,iBAHa,MAAM,GAAC,IAAI,CAOvB;;CACD;8BAhpB6B,0CAA0C"}
1
+ {"version":3,"file":"metadata.d.mts","sourceRoot":"","sources":["../../../../dist/lib/handlers/metadata.mjs"],"names":[],"mappings":"AAwBA;;;;;GAKG;AACH;IACC,gCAAqC;IASrC,iBAAmB;IAkCnB;;;;;;;;;;;;;;;OAeG;IACH,0BAyCC;IAED;;;;;OAKG;IACH,0BAJW,cAAe,GACb,MAAO,IAAI,CAYvB;IAED;;;;;;OAMG;IACH,2BAJW,cAAe,OAoEzB;IAED;;;;;OAKG;IACH,8BAJW,MAAM,SACN,OAAO,QAKjB;IAED;;;;;;OAMG;IACH,8CAJW,MAAM,SACN,OAAO,QA+CjB;IAED;;;;;;;;OAQG;IACH,kDANW,MAAM,GAAC,MAAM,EAAE,GAAC;YAAO,MAAM,GAAE,MAAM,EAAE;KAAC,QAkFlD;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,iCAJW,MAAM,uBA2BhB;IAED;;;;;;;;;OASG;IACH,qCAHW,MAAM,QAMhB;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,gCALW,MAAM,YACN,MAAM,MAAO,UACb,OAAO,QAyBjB;IAED;;;;;;;;;;;;;OAaG;IACH,gCANW,MAAM,OAkBhB;IAED;;;;;;;;;;;;OAYG;IACH,mCAJW,MAAM,QACN,MAAM,GAAC,MAAM,EAAE,QA+BzB;IAED;;;;;;;;;;OAUG;IACH,mBAHa;QAAE,cAAc,MAAS;QAAC,iBAAiB,gBAAK;KAAE,CAe9D;IAED;;;;;;;;;;;;;;;OAeG;IACH,uBAHW;QAAE,cAAc,MAAS;QAAC,iBAAiB,gBAAK;KAAE,QAgC5D;IAED;;;;;;;;;;;;;OAaG;IACH,iBAJW,MAAM,GACJ,OAAO,CAAC,MAAM,GAAC,IAAI,CAAC,CAkChC;IAED;;;;;;;;;;;;;OAaG;IACH,eAHa,MAAM,CASlB;IAED;;;;;;;;;;;;OAYG;IACH,iBAHa,MAAM,GAAC,IAAI,CAOvB;;CACD;8BA5qB6B,0CAA0C"}
@@ -1 +1 @@
1
- {"version":3,"file":"unified-wrapper.d.mts","sourceRoot":"","sources":["../../../../dist/lib/handlers/unified-wrapper.mjs"],"names":[],"mappings":"AAquGA;;;;;;;;;;;GAWG;AACH,sCAPW,OAAO,GACL,cAAc,GAAC,IAAI,CAkB/B;;;;;AAjpGD;;;;;;;;;;GAUG;AACH;IAiQC;;;;;;;;;;;;;;;;OAgBG;IACH,0BA8BC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,gCA0DC;IApWD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,+IAtBG;QAAwB,IAAI,EAApB,MAAM;QACU,OAAO,EAAvB,MAAM;QACW,WAAW;QACT,eAAe;QAChB,UAAU,GAA5B,OAAO;QACW,mBAAmB,GAArC,OAAO;QACU,QAAQ,GAAzB,MAAM;QACW,QAAQ,GAAzB,MAAM;QACW,YAAY,GAA7B,MAAM;KAEd,EA4KF;IA1MD;;;;;;;;;;;OAWG;IACH,4BAFa,MAAO,SAAS,CAK5B;IA+ND;;;;OAIG;IACH,qBAHa,MAAO,IAAI,CAKvB;IAkID;;;;;;;;;;;OAWG;IACH,sBAiCC;IAED;;;;;;;;;;;;OAYG;IACH,mBAgDC;IAED;;;;;;;;;OASG;IACH,qBAmDC;IAED;;;;OAIG;IACH,uBA+FC;IAED;;;;;;;;;OASG;IACH,qBAEC;IAED;;;;;;;;;OASG;IACH,sBAiBC;IAED;;;;;;;;;;OAUG;IACH,6BAmbC;IAED;;;;;;;;;;;OAWG;IACH,8BAwIC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,8BA8oBC;IAED;;;;;;OAMG;IACH,uCA8qCC;IAjVE,mBAA0B;IApkF7B;;;OAGG;IACH,2EAFa,GAAC,CA8Bb;;CAs3FD;8BA7sG6B,0CAA0C;iBADvD,WAAW"}
1
+ {"version":3,"file":"unified-wrapper.d.mts","sourceRoot":"","sources":["../../../../dist/lib/handlers/unified-wrapper.mjs"],"names":[],"mappings":"AAgvGA;;;;;;;;;;;GAWG;AACH,sCAPW,OAAO,GACL,cAAc,GAAC,IAAI,CAkB/B;;;;;AA5pGD;;;;;;;;;;GAUG;AACH;IAiQC;;;;;;;;;;;;;;;;OAgBG;IACH,0BA8BC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,gCA0DC;IApWD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,+IAtBG;QAAwB,IAAI,EAApB,MAAM;QACU,OAAO,EAAvB,MAAM;QACW,WAAW;QACT,eAAe;QAChB,UAAU,GAA5B,OAAO;QACW,mBAAmB,GAArC,OAAO;QACU,QAAQ,GAAzB,MAAM;QACW,QAAQ,GAAzB,MAAM;QACW,YAAY,GAA7B,MAAM;KAEd,EA4KF;IA1MD;;;;;;;;;;;OAWG;IACH,4BAFa,MAAO,SAAS,CAK5B;IA+ND;;;;OAIG;IACH,qBAHa,MAAO,IAAI,CAKvB;IAkID;;;;;;;;;;;OAWG;IACH,sBAiCC;IAED;;;;;;;;;;;;OAYG;IACH,mBAgDC;IAED;;;;;;;;;OASG;IACH,qBAmDC;IAED;;;;OAIG;IACH,uBA+FC;IAED;;;;;;;;;OASG;IACH,qBAEC;IAED;;;;;;;;;OASG;IACH,sBAiBC;IAED;;;;;;;;;;OAUG;IACH,6BA2bC;IAED;;;;;;;;;;;OAWG;IACH,8BAwIC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,8BAipBC;IAED;;;;;;OAMG;IACH,uCA8qCC;IAjVE,mBAA0B;IA/kF7B;;;OAGG;IACH,2EAFa,GAAC,CA8Bb;;CAi4FD;8BAxtG6B,0CAA0C;iBADvD,WAAW"}
@@ -0,0 +1,234 @@
1
+ /**
2
+ * Manages versioned API paths and their dispatcher proxies.
3
+ *
4
+ * Allows the same logical API path (e.g. `auth`) to be registered under multiple
5
+ * version tags (e.g. `v1`, `v2`). A dispatcher proxy lives at the logical path and
6
+ * routes property accesses to the correct versioned namespace at call time.
7
+ *
8
+ * @class VersionManager
9
+ * @extends ComponentBase
10
+ * @package
11
+ */
12
+ export class VersionManager extends ComponentBase {
13
+ static slothletProperty: string;
14
+ /**
15
+ * Register a new version for a logical path and rebuild the dispatcher.
16
+ *
17
+ * @param {string} logicalPath - Logical API path (e.g. `"auth"`).
18
+ * @param {string} versionTag - Version tag (e.g. `"v1"`).
19
+ * @param {string} moduleID - Module ID of the mounted versioned module.
20
+ * @param {object} versionMeta - User-supplied version metadata (stored in VersionManager only).
21
+ * @param {boolean} isDefault - Whether this version should be the explicit default.
22
+ * @returns {void}
23
+ * @example
24
+ * versionManager.registerVersion("auth", "v1", "auth_abc", { stable: true }, true);
25
+ */
26
+ registerVersion(logicalPath: string, versionTag: string, moduleID: string, versionMeta: object, isDefault: boolean): void;
27
+ /**
28
+ * Unregister a version for a logical path.
29
+ * Rebuilds or tears down the dispatcher accordingly.
30
+ *
31
+ * @param {string} logicalPath - Logical API path.
32
+ * @param {string} versionTag - Version tag to remove.
33
+ * @returns {boolean} `true` when the version was found and removed.
34
+ * @example
35
+ * versionManager.unregisterVersion("auth", "v2");
36
+ */
37
+ unregisterVersion(logicalPath: string, versionTag: string): boolean;
38
+ /**
39
+ * Get the version key (logicalPath + versionTag) for a given module ID.
40
+ * Used as a reverse lookup during remove operations.
41
+ *
42
+ * @param {string} moduleID - Module ID.
43
+ * @returns {{ logicalPath: string, versionTag: string } | undefined}
44
+ * @example
45
+ * versionManager.getVersionKeyForModule("auth_abc123"); // { logicalPath: "auth", versionTag: "v1" }
46
+ */
47
+ getVersionKeyForModule(moduleID: string): {
48
+ logicalPath: string;
49
+ versionTag: string;
50
+ } | undefined;
51
+ /**
52
+ * Returns `true` when a live dispatcher proxy is tracked for the given logical path.
53
+ * Used by ApiManager to detect whether a removed path was a logical dispatcher.
54
+ *
55
+ * @param {string} logicalPath - Logical API path (e.g. `"auth"`).
56
+ * @returns {boolean}
57
+ * @example
58
+ * versionManager.hasDispatcher("auth"); // true
59
+ */
60
+ hasDispatcher(logicalPath: string): boolean;
61
+ /**
62
+ * Retrieve the VersionManager-only metadata object stored for a module ID.
63
+ * Used internally by `buildAllVersionsArg` and `buildCallerArg`.
64
+ *
65
+ * @param {string} moduleID - Opaque module ID.
66
+ * @returns {object | undefined} Stored version metadata or `undefined`.
67
+ * @example
68
+ * versionManager.getVersionMetadata("auth_abc123"); // { version: "v1", logicalPath: "auth", stable: true }
69
+ */
70
+ getVersionMetadata(moduleID: string): object | undefined;
71
+ /**
72
+ * Retrieve the VersionManager-only metadata for a logical path and version tag.
73
+ *
74
+ * @param {string} logicalPath - Logical API path (e.g. `"auth"`).
75
+ * @param {string} versionTag - Version tag (e.g. `"v1"`, `"2.3.0"`).
76
+ * @returns {object | undefined} Stored version metadata or `undefined` if not registered.
77
+ * @example
78
+ * versionManager.getVersionMetadataByPath("auth", "v1"); // { version: "v1", logicalPath: "auth", stable: true }
79
+ */
80
+ getVersionMetadataByPath(logicalPath: string, versionTag: string): object | undefined;
81
+ /**
82
+ * Patch (merge) the VersionManager-only metadata for a registered logical path and version tag at runtime.
83
+ * The injected `version` and `logicalPath` keys always win over any user-supplied fields in `patch`.
84
+ *
85
+ * @param {string} logicalPath - Logical API path (e.g. `"auth"`).
86
+ * @param {string} versionTag - Version tag (e.g. `"v1"`, `"2.3.0"`).
87
+ * @param {object} patch - Plain object of keys to merge into the stored version metadata.
88
+ * @returns {void}
89
+ * @throws {SlothletError} When the logical path or version tag is not registered.
90
+ * @example
91
+ * versionManager.setVersionMetadataByPath("auth", "v1", { stable: true });
92
+ */
93
+ setVersionMetadataByPath(logicalPath: string, versionTag: string, patch: object): void;
94
+ /**
95
+ * Return a snapshot of all registered versions and the default tag for a logical path.
96
+ *
97
+ * @param {string} logicalPath - Logical API path.
98
+ * @returns {{ versions: object, default: string | null } | undefined} Snapshot object, or `undefined` if the path is not registered.
99
+ * @example
100
+ * versionManager.list("auth"); // { versions: { v1: {...}, v2: {...} }, default: "v2" }
101
+ * versionManager.list("unknown"); // undefined
102
+ */
103
+ list(logicalPath: string): {
104
+ versions: object;
105
+ default: string | null;
106
+ } | undefined;
107
+ /**
108
+ * Explicitly override the default version for a logical path at runtime.
109
+ * Clears any previous explicit defaults and marks only the specified tag.
110
+ *
111
+ * @param {string} logicalPath - Logical API path.
112
+ * @param {string} versionTag - Version tag to set as default.
113
+ * @returns {void}
114
+ * @throws {SlothletError} When the version tag is not registered for the path.
115
+ * @example
116
+ * versionManager.setDefault("auth", "v1");
117
+ */
118
+ setDefault(logicalPath: string, versionTag: string): void;
119
+ /**
120
+ * Determine the default version tag for a logical path.
121
+ *
122
+ * Algorithm:
123
+ * 1. Return the first version entry with `isDefault === true`.
124
+ * 2. Otherwise, normalise all tags, sort descending, return highest.
125
+ * 3. Return `null` when no versions are registered.
126
+ *
127
+ * @param {string} logicalPath - Logical API path.
128
+ * @returns {string | null} The default version tag, or `null`.
129
+ * @example
130
+ * // Given: ["v1", "v3", "v8", "v2"]
131
+ * versionManager.getDefaultVersion("auth"); // "v8"
132
+ */
133
+ getDefaultVersion(logicalPath: string): string | null;
134
+ /**
135
+ * Run the configured discriminator and return the winning version tag.
136
+ *
137
+ * When the configured `versionDispatcher` is a string, reads that key from
138
+ * `caller.versionMetadata`. When it is a function, calls it with `(allVersions, caller)`.
139
+ *
140
+ * @param {string} logicalPath - Logical API path.
141
+ * @param {object} allVersions - Pre-built allVersions arg (see `buildAllVersionsArg`).
142
+ * @param {object} caller - Pre-built caller arg (see `buildCallerArg`).
143
+ * @returns {string | null} Resolved version tag, or `null` to fall through to default.
144
+ * @example
145
+ * const tag = versionManager.resolveForPath("auth", allVersions, caller); // "v2"
146
+ */
147
+ resolveForPath(logicalPath: string, allVersions: object, caller: object): string | null;
148
+ /**
149
+ * Build the `allVersions` argument passed to function discriminators.
150
+ *
151
+ * Each key is a version tag; each value contains `version`, `default`, `metadata`
152
+ * (regular Metadata system data), and `versionMetadata` (VersionManager-only store).
153
+ *
154
+ * @param {string} logicalPath - Logical API path.
155
+ * @returns {object} Map-like object keyed by version tag.
156
+ * @example
157
+ * versionManager.buildAllVersionsArg("auth");
158
+ * // { v1: { version: "v1", default: true, metadata: {...}, versionMetadata: {...} } }
159
+ */
160
+ buildAllVersionsArg(logicalPath: string): object;
161
+ /**
162
+ * Build the `caller` argument passed to function discriminators.
163
+ *
164
+ * Returns `null` for version-specific fields when the caller is not a registered
165
+ * versioned module.
166
+ *
167
+ * @param {object | null | undefined} callerWrapper - The caller's UnifiedWrapper proxy.
168
+ * @returns {{ version: string|null, default: boolean|null, metadata: object, versionMetadata: object|null }}
169
+ * @example
170
+ * versionManager.buildCallerArg(callerWrapper);
171
+ * // { version: "v2", default: false, metadata: {...}, versionMetadata: {...} }
172
+ */
173
+ buildCallerArg(callerWrapper: object | null | undefined): {
174
+ version: string | null;
175
+ default: boolean | null;
176
+ metadata: object;
177
+ versionMetadata: object | null;
178
+ };
179
+ /**
180
+ * Create a native Proxy that dispatches property accesses to the correct versioned path.
181
+ *
182
+ * The dispatcher handles all property categories defined in the spec (framework
183
+ * internal keys, stable framework accessors, `then`, symbols, routing, etc.).
184
+ *
185
+ * @param {string} logicalPath - Logical API path this dispatcher covers.
186
+ * @returns {object} A Proxy instance for version-dispatched property access. The returned
187
+ * value is a Proxy wrapping a frozen plain-object target; it is NOT the Proxy constructor.
188
+ * @example
189
+ * const proxy = versionManager.createDispatcher("auth");
190
+ * proxy.login; // resolves version then returns api.v2.auth.login
191
+ */
192
+ createDispatcher(logicalPath: string): object;
193
+ /**
194
+ * Rebuild (or create) the dispatcher proxy for a logical path and mount it
195
+ * on both `api` and `boundApi`.
196
+ *
197
+ * @param {string} logicalPath - Logical API path.
198
+ * @returns {void}
199
+ * @example
200
+ * versionManager.updateDispatcher("auth");
201
+ */
202
+ updateDispatcher(logicalPath: string): void;
203
+ /**
204
+ * Tear down the dispatcher for a logical path, removing it from the API tree.
205
+ *
206
+ * @param {string} logicalPath - Logical API path.
207
+ * @returns {void}
208
+ * @example
209
+ * versionManager.teardownDispatcher("auth");
210
+ */
211
+ teardownDispatcher(logicalPath: string): void;
212
+ /**
213
+ * Called after a versioned module is reloaded.
214
+ * Refreshes internal metadata and rebuilds the dispatcher for the affected path.
215
+ *
216
+ * @param {string} moduleID - Module ID that was reloaded.
217
+ * @returns {void}
218
+ * @example
219
+ * versionManager.onVersionedModuleReload("auth_abc");
220
+ */
221
+ onVersionedModuleReload(moduleID: string): void;
222
+ /**
223
+ * Clear all internal state.
224
+ * Called automatically by the shutdown sequence.
225
+ *
226
+ * @returns {void}
227
+ * @example
228
+ * versionManager.shutdown();
229
+ */
230
+ shutdown(): void;
231
+ #private;
232
+ }
233
+ import { ComponentBase } from "@cldmv/slothlet/factories/component-base";
234
+ //# sourceMappingURL=version-manager.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-manager.d.mts","sourceRoot":"","sources":["../../../../dist/lib/handlers/version-manager.mjs"],"names":[],"mappings":"AAsGA;;;;;;;;;;GAUG;AACH;IACC,gCAA2C;IA8B3C;;;;;;;;;;;OAWG;IACH,6BATW,MAAM,cACN,MAAM,YACN,MAAM,eACN,MAAM,aACN,OAAO,GACL,IAAI,CAyDhB;IAED;;;;;;;;;OASG;IACH,+BANW,MAAM,cACN,MAAM,GACJ,OAAO,CAqCnB;IAED;;;;;;;;OAQG;IACH,iCALW,MAAM,GACJ;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAMnE;IAED;;;;;;;;OAQG;IACH,2BALW,MAAM,GACJ,OAAO,CAMnB;IAED;;;;;;;;OAQG;IACH,6BALW,MAAM,GACJ,MAAM,GAAG,SAAS,CAM9B;IAED;;;;;;;;OAQG;IACH,sCANW,MAAM,cACN,MAAM,GACJ,MAAM,GAAG,SAAS,CAU9B;IAED;;;;;;;;;;;OAWG;IACH,sCARW,MAAM,cACN,MAAM,SACN,MAAM,GACJ,IAAI,CAsBhB;IAED;;;;;;;;OAQG;IACH,kBANW,MAAM,GACJ;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,SAAS,CAcpE;IAED;;;;;;;;;;OAUG;IACH,wBAPW,MAAM,cACN,MAAM,GACJ,IAAI,CAwBhB;IAID;;;;;;;;;;;;;OAaG;IACH,+BANW,MAAM,GACJ,MAAM,GAAG,IAAI,CAqCzB;IAID;;;;;;;;;;;;OAYG;IACH,4BAPW,MAAM,eACN,MAAM,UACN,MAAM,GACJ,MAAM,GAAG,IAAI,CAkDzB;IAID;;;;;;;;;;;OAWG;IACH,iCANW,MAAM,GACJ,MAAM,CAmClB;IAED;;;;;;;;;;;OAWG;IACH,8BANW,MAAM,GAAG,IAAI,GAAG,SAAS,GACvB;QAAE,OAAO,EAAE,MAAM,GAAC,IAAI,CAAC;QAAC,OAAO,EAAE,OAAO,GAAC,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,GAAC,IAAI,CAAA;KAAE,CAkC3G;IAwDD;;;;;;;;;;;;OAYG;IACH,8BAPW,MAAM,GACJ,MAAM,CA2RlB;IAED;;;;;;;;OAQG;IACH,8BALW,MAAM,GACJ,IAAI,CAiChB;IAED;;;;;;;OAOG;IACH,gCALW,MAAM,GACJ,IAAI,CAkBhB;IAID;;;;;;;;OAQG;IACH,kCALW,MAAM,GACJ,IAAI,CAmBhB;IAED;;;;;;;OAOG;IACH,YAJa,IAAI,CAShB;;CACD;8BAhgC6B,0CAA0C"}
@@ -91,6 +91,39 @@ export class Config extends ComponentBase {
91
91
  * @public
92
92
  */
93
93
  public normalizeTypeScript(typescript: boolean | string | any): any | null;
94
+ /**
95
+ * Normalize env snapshot configuration.
96
+ *
97
+ * @description
98
+ * Validates the `env` option from user config. When `include` is a non-empty
99
+ * string array, returns `{ include }` (the allowlist used by `_captureEnvSnapshot`).
100
+ * Any other value — including `undefined`, `null`, `{}`, or an empty `include`
101
+ * array — is normalised to `null`, meaning the full `process.env` snapshot is used.
102
+ *
103
+ * @param {Object|null|undefined} env - Raw env option from user config.
104
+ * @param {string[]} [env.include] - Allowlist of env variable names to capture.
105
+ * @returns {{ include: string[] }|null} Normalized env config, or `null` for full snapshot.
106
+ * @public
107
+ *
108
+ * @example
109
+ * // No restriction — full snapshot
110
+ * normalizeEnv(undefined); // => null
111
+ * normalizeEnv(null); // => null
112
+ * normalizeEnv({}); // => null
113
+ *
114
+ * @example
115
+ * // Include allowlist
116
+ * normalizeEnv({ include: ["NODE_ENV", "PORT"] });
117
+ * // => { include: ["NODE_ENV", "PORT"] }
118
+ *
119
+ * @example
120
+ * // Non-string keys in the include array are filtered out
121
+ * normalizeEnv({ include: ["NODE_ENV", 42, null] });
122
+ * // => { include: ["NODE_ENV"] }
123
+ */
124
+ public normalizeEnv(env: any | null | undefined): {
125
+ include: string[];
126
+ } | null;
94
127
  }
95
128
  import { ComponentBase } from "@cldmv/slothlet/factories/component-base";
96
129
  //# sourceMappingURL=config.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/config.mjs"],"names":[],"mappings":"AAoBA;;;;;GAKG;AACH;IACC,gCAAmC;IAEnC;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,qCAxBW,MAAM,MAAO,OAkDvB;IAED;;;;;OAKG;IACH,iCAJW,MAAM,GACJ,MAAM,CAsBlB;IAED;;;;;OAKG;IACH,2BAJW,MAAM,GACJ,MAAM,CAsBlB;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,+CAcC;IAED;;;;;OAKG;IACH,6BAJW,OAAO,MAAO,OA6DxB;IAED;;;;;;OAMG;IACH,0CA+HC;IAED;;;;;OAKG;IACH,uCAJW,OAAO,GAAC,MAAM,MAAO,GACnB,MAAO,IAAI,CAsCvB;CACD;8BA/Y6B,0CAA0C"}
1
+ {"version":3,"file":"config.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/config.mjs"],"names":[],"mappings":"AAoBA;;;;;GAKG;AACH;IACC,gCAAmC;IAEnC;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,qCAxBW,MAAM,MAAO,OAkDvB;IAED;;;;;OAKG;IACH,iCAJW,MAAM,GACJ,MAAM,CAsBlB;IAED;;;;;OAKG;IACH,2BAJW,MAAM,GACJ,MAAM,CAsBlB;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,+CAcC;IAED;;;;;OAKG;IACH,6BAJW,OAAO,MAAO,OAiExB;IAED;;;;;;OAMG;IACH,0CA2IC;IAED;;;;;OAKG;IACH,uCAJW,OAAO,GAAC,MAAM,MAAO,GACnB,MAAO,IAAI,CAsCvB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,yBArBW,MAAO,IAAI,GAAC,SAAS,GAEnB;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,GAAC,IAAI,CA4BtC;CACD;8BAxc6B,0CAA0C"}
@@ -1 +1 @@
1
- {"version":3,"file":"translations.d.mts","sourceRoot":"","sources":["../../../../dist/lib/i18n/translations.mjs"],"names":[],"mappings":"AAqFA;;;;;GAKG;AACH,kCAHW,MAAM,QAsBhB;AAED;;;;GAIG;AACH,+BAHa,MAAM,CAKlB;AAED;;;;;;GAMG;AACH,qCALW,MAAM,iBAEJ,MAAM,CAyBlB;AAED;;;;;GAKG;AACH,mCAHG;IAAyB,QAAQ,GAAzB,MAAM;CACd,QAiBF;AApDD;;;;;;GAMG;AACH,6BALW,MAAM,iBAEJ,MAAM,CAyBlB"}
1
+ {"version":3,"file":"translations.d.mts","sourceRoot":"","sources":["../../../../dist/lib/i18n/translations.mjs"],"names":[],"mappings":"AAuFA;;;;;GAKG;AACH,kCAHW,MAAM,QAsBhB;AAED;;;;GAIG;AACH,+BAHa,MAAM,CAKlB;AAED;;;;;;GAMG;AACH,qCALW,MAAM,iBAEJ,MAAM,CAyBlB;AAED;;;;;GAKG;AACH,mCAHG;IAAyB,QAAQ,GAAzB,MAAM;CACd,QAiBF;AApDD;;;;;;GAMG;AACH,6BALW,MAAM,iBAEJ,MAAM,CAyBlB"}
@@ -123,6 +123,15 @@ export type SlothletOptions = {
123
123
  * `{ language: string }` — selects the locale for framework messages (e.g. `"en-us"`, `"fr-fr"`, `"ja-jp"`).
124
124
  */
125
125
  i18n?: object;
126
+ /**
127
+ * - Environment variable snapshot configuration.
128
+ * Pass `{ include: ["KEY"] }` to capture only the listed variable names in `api.slothlet.env`.
129
+ * Omit (or pass `undefined`) to capture a full frozen snapshot of `process.env`.
130
+ * Non-string entries in `include` are silently ignored; an all-non-string array falls back to the full snapshot.
131
+ */
132
+ env?: {
133
+ include?: string[];
134
+ };
126
135
  /**
127
136
  * - TypeScript support.
128
137
  * - `false` — disabled (default).
@@ -131,6 +140,14 @@ export type SlothletOptions = {
131
140
  * See [TYPESCRIPT.md](docs/TYPESCRIPT.md) for the full configuration reference.
132
141
  */
133
142
  typescript?: boolean | "fast" | "strict" | object;
143
+ /**
144
+ * - Version routing discriminator for versioned API paths.
145
+ * - **string** (e.g. `"version"`) — at dispatch time, reads that key from the calling module's version metadata to select a version tag.
146
+ * - **function** — called as `(allVersions, caller) => versionTag | null`; return a registered version tag to force routing, or `null`/`undefined` to fall through to the automatic default.
147
+ * - **omitted / `undefined`** — behaves identically to `"version"`.
148
+ * Only relevant when modules are registered via `api.slothlet.api.add()` with a `versionConfig` argument.
149
+ */
150
+ versionDispatcher?: string | Function | null;
134
151
  };
135
152
  /**
136
153
  * Bound API object returned by `slothlet()`.
@@ -149,6 +166,7 @@ export type SlothletAPI = {
149
166
  * - Built-in control namespace. All framework internals live here to avoid collisions with loaded modules.
150
167
  */
151
168
  slothlet: {
169
+ env: Readonly<Record<string, string | undefined>>;
152
170
  api: {
153
171
  add: Function;
154
172
  reload: Function;
@@ -214,6 +232,13 @@ export type SlothletAPI = {
214
232
  get: Function;
215
233
  unregister: Function;
216
234
  };
235
+ versioning: {
236
+ list: Function;
237
+ setDefault: Function;
238
+ unregister: Function;
239
+ getVersionMetadata: Function;
240
+ setVersionMetadata: Function;
241
+ };
217
242
  reference?: object;
218
243
  reload: Function;
219
244
  run: Function;
@@ -1 +1 @@
1
- {"version":3,"file":"slothlet.d.mts","sourceRoot":"","sources":["../../dist/slothlet.mjs"],"names":[],"mappings":"AAk2BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,iCAjCW,eAAe,GACb,OAAO,CAAC,WAAW,CAAC,CAsChC;;;;;;;;;SAWa,MAAM;;;;;;;WACN,OAAO,GAAC,MAAM;;;;;;;cAId,OAAO,GAAC,MAAM;;;;eAId,MAAM;;;;cACN,MAAM,GAAC,IAAI;;;;gBACX,MAAM,GAAC,IAAI;;;;YACX;QAAC,KAAK,EAAE,SAAS,GAAC,MAAM,CAAA;KAAC;;;;UAEpC;QAAuD,SAAS,GAArD,MAAM,GAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAC;QAGxB,SAAS,GAAtB,MAAM;KAEjB;;;;;;;;WAAW,OAAO,GAAC,MAAM,GAAC,MAAM;;;;;YAKrB,OAAO,GAAC,MAAM;;;;aAEd,OAAO;;;;kBACP,OAAO;;;;eACP,OAAO,GAAC,MAAM;;;;4BACd,OAAO;;;;;WACP,MAAM;;;;;;;;iBAEN,OAAO,GAAC,MAAM,GAAC,QAAQ,GAAC,MAAM;;;;;;;;;;aAW9B,MAAY,IAAI;;;;cAChB,MAAY,IAAI;;;;cAE3B;QAA4B,GAAG,EAC/B;YAAkC,GAAG;YACH,MAAM;YACN,MAAM;SACxC;QAA4B,OAAO,EACnC;YAAsC,GAAG;YACO,OAAO,EAA5C,SAAkB;YACS,GAAG;YACH,KAAK;YACL,GAAG;SACzC;QAA6B,IAAI,GACjC;YAAkC,MAAM,GACxC;gBAAqD,GAAG,GAA7C,SAAkB;gBAC0B,eAAe,GAA3D,MAAY,MAAM,EAAE;gBACY,GAAG;aAC9C;YAAkC,OAAO,GAA9B,MAAM;YACmB,QAAQ;YACE,MAAM,GAAzC,SAAkB;YACiB,YAAY,GAA/C,SAAkB;YACK,IAAI,GAA3B,MAAM;YAC6B,OAAO,GAA1C,SAAkB;YACK,KAAK,GACvC;gBAA0C,GAAG;aAC7C;YAAkC,SAAS,GAAhC,MAAM;YACsC,eAAe,GAA3D,MAAY,eAAe;SACtC;QAA4B,IAAI,EAChC;YAAmC,KAAK;YACL,OAAO;YACP,MAAM;YACN,IAAI;YACJ,GAAG;YACH,EAAE;YACF,MAAM;SACzC;QAA4B,SAAS,EACrC;YAAwC,GAAG;YACH,EAAE;SAC1C;QAA4B,WAAW,EACvC;YAAoD,GAAG,EAA5C,SAAkB;YACY,YAAY,EAA1C,OAAO;YAC0C,IAAI,EAArD,MAAY,OAAO,CAAE,IAAI,CAAC;SACrC;QAA4B,QAAQ,EACpC;YAAsD,MAAM,EAAjD,MAAY,MAAO,IAAI;YACK,GAAG;YACH,MAAM;YACN,SAAS;YACM,IAAI,EAA/C,MAAY,MAAO,IAAI;YACK,GAAG;YACH,MAAM;YACN,SAAS;SAChD;QAA4B,KAAK,EACjC;YAAoC,GAAG;SACvC;QAA4B,SAAS,EACrC;YAAwC,GAAG;YACH,UAAU;SAClD;QAA6B,SAAS,GAA3B,MAAM;QACa,MAAM;QACN,GAAG;QACH,KAAK;QACa,QAAQ,EAA7C,MAAY,OAAO,CAAE,IAAI,CAAC;KACvC;;gCA56B6D,wBAAwB"}
1
+ {"version":3,"file":"slothlet.d.mts","sourceRoot":"","sources":["../../dist/slothlet.mjs"],"names":[],"mappings":"AA4+BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,iCAjCW,eAAe,GACb,OAAO,CAAC,WAAW,CAAC,CAsChC;;;;;;;;;SAWa,MAAM;;;;;;;WACN,OAAO,GAAC,MAAM;;;;;;;cAId,OAAO,GAAC,MAAM;;;;eAId,MAAM;;;;cACN,MAAM,GAAC,IAAI;;;;gBACX,MAAM,GAAC,IAAI;;;;YACX;QAAC,KAAK,EAAE,SAAS,GAAC,MAAM,CAAA;KAAC;;;;UAEpC;QAAuD,SAAS,GAArD,MAAM,GAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAC;QAGxB,SAAS,GAAtB,MAAM;KAEjB;;;;;;;;WAAW,OAAO,GAAC,MAAM,GAAC,MAAM;;;;;YAKrB,OAAO,GAAC,MAAM;;;;aAEd,OAAO;;;;kBACP,OAAO;;;;eACP,OAAO,GAAC,MAAM;;;;4BACd,OAAO;;;;;WACP,MAAM;;;;;;;UAMjB;QAA0B,OAAO,GAAtB,MAAM,EAAE;KACnB;;;;;;;;iBAAW,OAAO,GAAC,MAAM,GAAC,QAAQ,GAAC,MAAM;;;;;;;;wBAK9B,MAAM,cAAU,IAAI;;;;;;;;;;aAWpB,MAAY,IAAI;;;;cAChB,MAAY,IAAI;;;;cAE3B;QAAgE,GAAG,EAAxD,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAC,SAAS,CAAC,CAAC;QACzB,GAAG,EAC/B;YAAkC,GAAG;YACH,MAAM;YACN,MAAM;SACxC;QAA4B,OAAO,EACnC;YAAsC,GAAG;YACO,OAAO,EAA5C,SAAkB;YACS,GAAG;YACH,KAAK;YACL,GAAG;SACzC;QAA6B,IAAI,GACjC;YAAkC,MAAM,GACxC;gBAAqD,GAAG,GAA7C,SAAkB;gBAC0B,eAAe,GAA3D,MAAY,MAAM,EAAE;gBACY,GAAG;aAC9C;YAAkC,OAAO,GAA9B,MAAM;YACmB,QAAQ;YACE,MAAM,GAAzC,SAAkB;YACiB,YAAY,GAA/C,SAAkB;YACK,IAAI,GAA3B,MAAM;YAC6B,OAAO,GAA1C,SAAkB;YACK,KAAK,GACvC;gBAA0C,GAAG;aAC7C;YAAkC,SAAS,GAAhC,MAAM;YACsC,eAAe,GAA3D,MAAY,eAAe;SACtC;QAA4B,IAAI,EAChC;YAAmC,KAAK;YACL,OAAO;YACP,MAAM;YACN,IAAI;YACJ,GAAG;YACH,EAAE;YACF,MAAM;SACzC;QAA4B,SAAS,EACrC;YAAwC,GAAG;YACH,EAAE;SAC1C;QAA4B,WAAW,EACvC;YAAoD,GAAG,EAA5C,SAAkB;YACY,YAAY,EAA1C,OAAO;YAC0C,IAAI,EAArD,MAAY,OAAO,CAAE,IAAI,CAAC;SACrC;QAA4B,QAAQ,EACpC;YAAsD,MAAM,EAAjD,MAAY,MAAO,IAAI;YACK,GAAG;YACH,MAAM;YACN,SAAS;YACM,IAAI,EAA/C,MAAY,MAAO,IAAI;YACK,GAAG;YACH,MAAM;YACN,SAAS;SAChD;QAA4B,KAAK,EACjC;YAAoC,GAAG;SACvC;QAA4B,SAAS,EACrC;YAAwC,GAAG;YACH,UAAU;SAClD;QAA4B,UAAU,EACtC;YAAyC,IAAI;YACJ,UAAU;YACV,UAAU;YACV,kBAAkB;YAClB,kBAAkB;SAC3D;QAA6B,SAAS,GAA3B,MAAM;QACa,MAAM;QACN,GAAG;QACH,KAAK;QACa,QAAQ,EAA7C,MAAY,OAAO,CAAE,IAAI,CAAC;KACvC;;gCAvkC6D,wBAAwB"}