@cldmv/slothlet 3.2.0 → 3.2.3

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/AGENT-USAGE.md CHANGED
@@ -409,6 +409,34 @@ export const secureOperation = {
409
409
 
410
410
  ---
411
411
 
412
+ ## 🌍 Environment Snapshot (v3.1+)
413
+
414
+ Slothlet captures a **frozen snapshot of `process.env` at init time** and exposes it at `api.slothlet.env`. The snapshot is deeply read-only — mutating `process.env` after init does not affect `api.slothlet.env`.
415
+
416
+ ```js
417
+ const api = await slothlet({
418
+ dir: "./api",
419
+ env: true,
420
+ // env: { include: ["NODE_ENV", "DATABASE_URL", "PORT"] } // allowlist
421
+ });
422
+
423
+ // Access inside any module:
424
+ import { self } from "@cldmv/slothlet/runtime";
425
+
426
+ export const getConfig = () => ({
427
+ mode: self.slothlet.env.NODE_ENV,
428
+ dbUrl: self.slothlet.env.DATABASE_URL
429
+ });
430
+ ```
431
+
432
+ **Key behaviors:**
433
+ - `env: true` → all `process.env` variables are captured
434
+ - `env: { include: [...] }` → only the listed keys are captured (recommended for security)
435
+ - `api.slothlet.env` is a frozen object — writes throw in strict mode
436
+ - Snapshot is taken at init time — late `process.env` mutations are NOT reflected
437
+
438
+ ---
439
+
412
440
  ## 🔁 Hot Reload / Dynamic API Management
413
441
 
414
442
  ```js
@@ -457,6 +485,69 @@ api.slothlet.lifecycle.off("materialized:complete", handler);
457
485
 
458
486
  ---
459
487
 
488
+ ## 🔀 API Path Versioning (v3.2+)
489
+
490
+ Mount multiple versions of the same logical path and dispatch to the correct version automatically based on the caller's version metadata.
491
+
492
+ ### Setup
493
+
494
+ ```js
495
+ const api = await slothlet({
496
+ dir: "./api",
497
+ versionDispatcher: "version" // use caller's versionMetadata.version field
498
+ // versionDispatcher: (allVersions, caller) => { ... } // custom function
499
+ });
500
+
501
+ // Register versioned modules — 4th argument is versionConfig
502
+ await api.slothlet.api.add("auth", "./api/v1", {}, { version: "v1", default: true });
503
+ await api.slothlet.api.add("auth", "./api/v2", {}, { version: "v2" });
504
+ ```
505
+
506
+ ### Access Patterns
507
+
508
+ ```js
509
+ // Dispatcher — routes via discriminator (use this in most cases)
510
+ api.auth.login(user, pass) // → routes to v1 or v2 based on caller metadata
511
+
512
+ // Direct versioned access — bypasses dispatcher entirely
513
+ api.v1.auth.login(user, pass) // → always v1
514
+ api.v2.auth.login(user, pass) // → always v2
515
+ ```
516
+
517
+ ### Attaching Version Metadata to a Caller
518
+
519
+ ```js
520
+ // Register a module WITH a version tag so the discriminator can use it
521
+ await api.slothlet.api.add("services/payments", "./payments", {}, {
522
+ version: "v2",
523
+ metadata: { stable: true } // versionConfig.metadata — stored in VersionManager only
524
+ });
525
+
526
+ // options.metadata (3rd arg) → regular Metadata system (metadata.caller() etc.)
527
+ // versionConfig.metadata (4th arg) → version-system only, used by the discriminator
528
+ ```
529
+
530
+ ### Runtime Version Management
531
+
532
+ ```js
533
+ // List registered versions for a path
534
+ api.slothlet.versioning.list("auth");
535
+ // → { versions: { v1: { ... }, v2: { ... } }, default: "v2" }
536
+
537
+ // Change the default dispatcher fallback
538
+ api.slothlet.versioning.setDefault("auth", "v1");
539
+
540
+ // Unregister a version (removes api.v1.auth; dispatcher updates automatically)
541
+ await api.slothlet.versioning.unregister("auth", "v1");
542
+
543
+ // Read version metadata stored at registration
544
+ api.slothlet.versioning.getVersionMetadata(moduleID);
545
+ ```
546
+
547
+ > 📖 See [`docs/VERSIONING.md`](docs/VERSIONING.md) for full documentation.
548
+
549
+ ---
550
+
460
551
  ## 📁 File Organization Best Practices
461
552
 
462
553
  ### ✅ Clean Folder Structure
@@ -550,6 +641,41 @@ api.slothlet.lifecycle.on("materialized:complete", handler);
550
641
  api.slothlet.lifecycle.off("materialized:complete", handler);
551
642
  ```
552
643
 
644
+ ### ❌ Mistake 6: Assuming `api.v1.auth` Goes Through the Dispatcher
645
+
646
+ ```js
647
+ // ❌ WRONG — direct versioned path bypasses the discriminator entirely
648
+ api.v1.auth.login(user, pass); // always v1, no routing logic
649
+
650
+ // ✅ CORRECT — use the logical dispatcher path for dynamic routing
651
+ api.auth.login(user, pass); // routes based on caller version metadata
652
+ ```
653
+
654
+ ### ❌ Mistake 7: Wrong Config Key for Versioning
655
+
656
+ ```js
657
+ // ❌ WRONG
658
+ const api = await slothlet({ dir: "./api", versionResolver: "version" });
659
+
660
+ // ✅ CORRECT
661
+ const api = await slothlet({ dir: "./api", versionDispatcher: "version" });
662
+ ```
663
+
664
+ ### ❌ Mistake 8: Conflating versionConfig.metadata with options.metadata
665
+
666
+ ```js
667
+ // ❌ WRONG — puts version tag in the regular Metadata system instead of VersionManager
668
+ await api.slothlet.api.add("auth", "./v2", { metadata: { version: "v2" } });
669
+
670
+ // ✅ CORRECT
671
+ // options.metadata (3rd arg) → regular Metadata system (metadata.caller() etc.)
672
+ // versionConfig.metadata (4th arg) → VersionManager only, used by the discriminator
673
+ await api.slothlet.api.add("auth", "./v2",
674
+ { metadata: { role: "core" } },
675
+ { version: "v2", metadata: { stable: true } }
676
+ );
677
+ ```
678
+
553
679
  ---
554
680
 
555
681
  ## ✅ AI Agent Checklist
@@ -563,6 +689,9 @@ api.slothlet.lifecycle.off("materialized:complete", handler);
563
689
  - [ ] **Lifecycle** uses `api.slothlet.lifecycle.on/off()` only
564
690
  - [ ] **Lazy mode**: if using background materialization, use `api.slothlet.materialize.wait()` before accessing the API
565
691
  - [ ] **Hook subsets**: auth/security → `subset: "before"`, main logic → `"primary"`, audit → `"after"`
692
+ - [ ] **Versioning config key is `versionDispatcher:`**, not `versionResolver:` or `versionDiscriminator:`
693
+ - [ ] **Use `api.auth` (dispatcher path) for dynamic routing**, not `api.v1.auth` (direct path bypasses discriminator)
694
+ - [ ] **`versionConfig.metadata` (4th arg)** and **`options.metadata` (3rd arg)** are separate systems — don't conflate them
566
695
  - [ ] **Double quotes everywhere** - follow Slothlet coding standards
567
696
 
568
697
  ---
package/README.md CHANGED
@@ -55,22 +55,18 @@ Every feature has been hardened with a comprehensive test suite - over **5,300 t
55
55
 
56
56
  ## ✨ What's New
57
57
 
58
- ### Latest: v3.2.0 (April 2026)
58
+ ### Latest: v3.2.3 (April 2026)
59
59
 
60
- - **API Path Versioning** — register the same logical path (e.g. `auth`) under multiple version tags (`v1`, `v2`); a configurable discriminator routes each caller to the correct version at dispatch time
61
- - **`versionDispatcher` config** `"version"` (string key lookup), custom function `(allVersions, caller) => tag`, or omit to use the `"version"` default
62
- - **`api.slothlet.versioning.*`** — runtime management: `list()`, `setDefault()`, `unregister()`, `getVersionMetadata()`
63
- - **Separate version metadata** — `versionConfig.metadata` stored in VersionManager; never merged with `options.metadata` (regular Metadata system)
64
- - **Shutdown race fix** — `shutdown()` now drains in-flight lazy-mode ESM `import()` calls before teardown, preventing unhandled rejections on worker exit
65
- - [View full v3.2.0 Changelog](./docs/changelog/v3/v3.2.0.md)
60
+ - **Publish workflow fix** — switched CI trigger from `pull_request` to `push` on master so releases publish immediately on merge without depending on the PR event payload
61
+ - [View full v3.2.3 Changelog](./docs/changelog/v3/v3.2.3.md)
66
62
 
67
63
  ### Recent Releases
68
64
 
65
+ - **v3.2.2** (April 2026) — missing `set` trap on version dispatchers; `util.inspect(api.auth)` now shows resolved versioned namespace ([Changelog](./docs/changelog/v3/v3.2.2.md))
66
+ - **v3.2.1** (April 2026) — version-dispatcher `defineProperty` trap fix; pre-commit validation cleanup ([Changelog](./docs/changelog/v3/v3.2.1.md))
67
+ - **v3.2.0** (April 2026) — API Path Versioning (`versionDispatcher`, `api.slothlet.versioning.*`, version metadata, dispatcher proxy); lazy-mode shutdown race fix ([Changelog](./docs/changelog/v3/v3.2.0.md))
69
68
  - **v3.1.0** (March 2026) — Frozen `api.slothlet.env` snapshot; `env.include` allowlist; reload immunity ([Changelog](./docs/changelog/v3/v3.1.0.md))
70
- - **v3.0.1** (March 2026) — Resolver fix for user `index.mjs` mis-classified as internal; CI `slothlet-dev` stripping hardening; respawn race fix; resilient `build:dist` script ([Changelog](./docs/changelog/v3/v3.0.1.md))
71
- - **v3.0.0** (February 2026) — Unified Wrapper architecture, redesigned hook system, full i18n, background materialization, lifecycle events, collision modes, mutation controls ([Changelog](./docs/changelog/v3.0.md))
72
- - **v2.11.0** — AddApi Special File Pattern (Rule 11), smart flattening enhancements ([Changelog](https://github.com/CLDMV/slothlet/blob/master/docs/changelog/v2.11.md))
73
- - **v2.10.0** — Function metadata tagging and introspection capabilities ([Changelog](https://github.com/CLDMV/slothlet/blob/master/docs/changelog/v2.10.md))
69
+
74
70
 
75
71
  📚 **For complete version history and detailed release notes, see [docs/changelog/](./docs/changelog/) folder.**
76
72
 
@@ -157,7 +153,7 @@ Automatic context preservation across all asynchronous boundaries:
157
153
  - **TypeScript-Friendly**: Comprehensive JSDoc annotations with auto-generated declarations
158
154
  - **Configurable Debug**: Detailed logging via CLI flags or environment variables
159
155
  - **Multiple Instances**: Parameter-based isolation for complex applications
160
- - **Inspectable APIs**: `console.log(api.math)` now shows real module contents (v3+)
156
+ - **Inspectable APIs**: `console.log(api.math)` and logical versioned paths like `console.log(api.auth)` show real module contents instead of proxy internals (v3+)
161
157
  - **Development Checks**: Built-in environment detection with silent production behavior
162
158
 
163
159
  ---
@@ -972,7 +968,7 @@ try {
972
968
  - **Debug Mode**: Comprehensive i18n-translated logging via `--slothletdebug` flag or `SLOTHLET_DEBUG=true`
973
969
  - **Development Check**: `devcheck.mjs` for environment validation
974
970
  - **Source Detection**: Automatic `src/` vs `dist/` mode detection
975
- - **API Inspection**: `console.log(api.math)` shows real module contents (v3+)
971
+ - **API Inspection**: `console.log(api.math)` and versioned dispatcher paths like `console.log(api.auth)` show real module contents (v3+)
976
972
 
977
973
  ---
978
974
 
@@ -584,9 +584,7 @@ export class ApiBuilder extends ComponentBase {
584
584
  throw new slothlet.SlothletError("METADATA_NOT_AVAILABLE", {
585
585
  handlersKeys: slothlet.handlers
586
586
  ? Object.keys(slothlet.handlers).join(", ")
587
- :
588
-
589
- "undefined",
587
+ : "undefined",
590
588
  validationError: true
591
589
  });
592
590
  }
@@ -372,6 +372,8 @@ export class Metadata extends ComponentBase {
372
372
 
373
373
 
374
374
  getPathMetadata(apiPath) {
375
+
376
+
375
377
  if (!apiPath || typeof apiPath !== "string") return {};
376
378
  const parts = apiPath.split(".");
377
379
  const collected = {};
@@ -1342,6 +1342,8 @@ export class UnifiedWrapper extends ComponentBase {
1342
1342
 
1343
1343
 
1344
1344
 
1345
+
1346
+
1345
1347
  wrapper._materialize().catch(() => {});
1346
1348
  }
1347
1349
 
@@ -1900,7 +1902,9 @@ export class UnifiedWrapper extends ComponentBase {
1900
1902
  !wrapper.____slothletInternal.state.materialized &&
1901
1903
  wrapper.____slothletInternal.materializeFunc
1902
1904
  ) {
1903
- wrapper._materialize().catch(() => {});
1905
+
1906
+
1907
+ wrapper._materialize().catch(() => {});
1904
1908
  }
1905
1909
 
1906
1910
 
@@ -2054,6 +2058,8 @@ export class UnifiedWrapper extends ComponentBase {
2054
2058
  !wrapper.____slothletInternal.state.materialized &&
2055
2059
  !wrapper.____slothletInternal.state.inFlight
2056
2060
  ) {
2061
+
2062
+
2057
2063
  wrapper._materialize().catch(() => {});
2058
2064
  }
2059
2065
 
@@ -2305,6 +2311,8 @@ export class UnifiedWrapper extends ComponentBase {
2305
2311
  !cachedWrapper.____slothletInternal.state.materialized &&
2306
2312
  !cachedWrapper.____slothletInternal.state.inFlight
2307
2313
  ) {
2314
+
2315
+
2308
2316
  cachedWrapper._materialize().catch(() => {});
2309
2317
  }
2310
2318
  }
@@ -2565,6 +2573,8 @@ export class UnifiedWrapper extends ComponentBase {
2565
2573
  !wrapper.____slothletInternal.state.materialized &&
2566
2574
  !wrapper.____slothletInternal.state.inFlight
2567
2575
  ) {
2576
+
2577
+
2568
2578
  wrapper._materialize().catch(() => {});
2569
2579
  }
2570
2580
 
@@ -2772,6 +2782,8 @@ export class UnifiedWrapper extends ComponentBase {
2772
2782
  !wrapper.____slothletInternal.state.materialized &&
2773
2783
  !wrapper.____slothletInternal.state.inFlight
2774
2784
  ) {
2785
+
2786
+
2775
2787
  wrapper._materialize().catch(() => {});
2776
2788
  }
2777
2789
 
@@ -2799,6 +2811,8 @@ export class UnifiedWrapper extends ComponentBase {
2799
2811
  !wrapper.____slothletInternal.state.materialized &&
2800
2812
  !wrapper.____slothletInternal.state.inFlight
2801
2813
  ) {
2814
+
2815
+
2802
2816
  wrapper._materialize().catch(() => {});
2803
2817
  }
2804
2818
 
@@ -2848,6 +2862,8 @@ export class UnifiedWrapper extends ComponentBase {
2848
2862
  !wrapper.____slothletInternal.state.materialized &&
2849
2863
  !wrapper.____slothletInternal.state.inFlight
2850
2864
  ) {
2865
+
2866
+
2851
2867
  wrapper._materialize().catch(() => {});
2852
2868
  }
2853
2869
 
@@ -212,6 +212,8 @@ export class VersionManager extends ComponentBase {
212
212
  });
213
213
  }
214
214
  const ve = entry.versions.get(versionTag);
215
+
216
+
215
217
  const existing = this.#versionMetadataByModule.get(ve.moduleID) ?? {};
216
218
 
217
219
  this.#versionMetadataByModule.set(ve.moduleID, {
@@ -435,6 +437,8 @@ export class VersionManager extends ComponentBase {
435
437
  let node = this.slothlet.api;
436
438
 
437
439
 
440
+
441
+
438
442
  const segments = Array.isArray(apiPath) ? apiPath : apiPath.split(".");
439
443
  for (const segment of segments) {
440
444
 
@@ -504,6 +508,30 @@ export class VersionManager extends ComponentBase {
504
508
  return manager.#walkApiPath([versionTag, ...logicalPath.split(".")]);
505
509
  };
506
510
 
511
+
512
+
513
+
514
+
515
+
516
+ target[Symbol.for("nodejs.util.inspect.custom")] = function (_depth, options, inspectFn) {
517
+ const vw = resolveVersionedWrapper();
518
+ if (vw) {
519
+ try {
520
+ return typeof inspectFn === "function" ? inspectFn(vw, options) : inspect(vw, options);
521
+ } catch {
522
+
523
+
524
+ void 0;
525
+ }
526
+ }
527
+
528
+
529
+
530
+ const entry = manager.#registry.get(logicalPath);
531
+ const versions = entry ? Array.from(entry.versions.keys()) : [];
532
+ return { __versionDispatcher: logicalPath, versions };
533
+ };
534
+
507
535
  const handlers = {
508
536
 
509
537
  get(t, prop) {
@@ -562,24 +590,26 @@ export class VersionManager extends ComponentBase {
562
590
 
563
591
 
564
592
 
565
- if (typeof prop === "symbol" && prop.toString() === "Symbol(nodejs.util.inspect.custom)") {
566
- return () => {
593
+
594
+ if (prop === inspect.custom) {
595
+ return (_depth, options, inspectFn) => {
567
596
  const vw = resolveVersionedWrapper();
568
597
  if (vw) {
569
598
  try {
570
- return inspect(vw);
599
+ return typeof inspectFn === "function" ? inspectFn(vw, options) : inspect(vw, options);
571
600
  } catch {
572
601
 
602
+
573
603
  void 0;
574
604
  }
575
605
  }
576
606
 
607
+
577
608
  const entry = manager.#registry.get(logicalPath);
578
609
  const versions = entry ? Array.from(entry.versions.keys()) : [];
579
610
  return { __versionDispatcher: logicalPath, versions };
580
611
  };
581
612
  }
582
-
583
613
 
584
614
 
585
615
  if (prop === "toString") return () => `[VersionDispatcher: ${logicalPath}]`;
@@ -678,14 +708,112 @@ export class VersionManager extends ComponentBase {
678
708
 
679
709
 
680
710
  getOwnPropertyDescriptor(t, prop) {
681
-
682
711
  const targetDesc = Reflect.getOwnPropertyDescriptor(t, prop);
683
- if (targetDesc) return { configurable: true, enumerable: true, writable: false, value: t[prop] };
712
+ if (targetDesc) {
713
+ if (!targetDesc.configurable) {
714
+
715
+
716
+
717
+
718
+
719
+ return targetDesc;
720
+ }
721
+
722
+
723
+ return { configurable: true, enumerable: true, writable: false, value: t[prop] };
724
+ }
684
725
 
685
726
 
686
727
 
687
-
688
728
  return { configurable: true, enumerable: true, writable: false, value: undefined };
729
+ },
730
+
731
+
732
+ defineProperty(t, prop, descriptor) {
733
+ const vw = resolveVersionedWrapper();
734
+
735
+
736
+
737
+ if (!vw) return Reflect.defineProperty(t, prop, descriptor);
738
+ if (descriptor.configurable === false) {
739
+
740
+
741
+
742
+
743
+
744
+
745
+ const shadow = Object.create(Reflect.getPrototypeOf(t));
746
+ const currentDescriptor = Reflect.getOwnPropertyDescriptor(t, prop);
747
+ if (currentDescriptor) {
748
+ Reflect.defineProperty(shadow, prop, currentDescriptor);
749
+ }
750
+
751
+
752
+
753
+
754
+
755
+
756
+
757
+ if (!Reflect.isExtensible(t)) {
758
+ Reflect.preventExtensions(shadow);
759
+ }
760
+ if (!Reflect.defineProperty(shadow, prop, descriptor)) return false;
761
+
762
+ if (!Reflect.defineProperty(vw, prop, descriptor)) return false;
763
+
764
+
765
+
766
+ return Reflect.defineProperty(t, prop, descriptor);
767
+ }
768
+
769
+ return Reflect.defineProperty(vw, prop, descriptor);
770
+ },
771
+
772
+
773
+ set(t, prop, value) {
774
+
775
+
776
+
777
+
778
+
779
+ if (typeof prop === "symbol") return true;
780
+
781
+
782
+ if (prop === "____slothletInternal" || prop === "_impl" || prop === "__impl" || prop === "__state" || prop === "__invalid")
783
+ return true;
784
+
785
+
786
+ if (
787
+ prop === "__isVersionDispatcher" ||
788
+ prop === "__mode" ||
789
+ prop === "__apiPath" ||
790
+ prop === "__slothletPath" ||
791
+ prop === "__isCallable" ||
792
+ prop === "__materializeOnCreate" ||
793
+ prop === "__materialized" ||
794
+ prop === "__inFlight" ||
795
+ prop === "__displayName" ||
796
+ prop === "__moduleID" ||
797
+ prop === "_materialize" ||
798
+ prop === "length" ||
799
+ prop === "name"
800
+ )
801
+ return true;
802
+
803
+
804
+ if (prop === "then" || prop === "constructor" || prop === "toString" || prop === "valueOf" || prop === "toJSON") return true;
805
+
806
+ const vw = resolveVersionedWrapper();
807
+
808
+
809
+
810
+
811
+
812
+ if (!vw) return true;
813
+
814
+
815
+
816
+ return Reflect.set(vw, prop, value, vw);
689
817
  }
690
818
  };
691
819
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cldmv/slothlet",
3
- "version": "3.2.0",
3
+ "version": "3.2.3",
4
4
  "moduleVersions": {
5
5
  "lazy": "3.0.0",
6
6
  "eager": "3.0.0",
@@ -1 +1 @@
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"}
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,gCAyuCC;IAED;;;;OAIG;IACH,+BAYC;IAED;;;;OAIG;IACH,0BAgCC;IAED;;;;OAIG;IACH,4BAoMC;IAED;;;;;OAKG;IACH,8BAyCC;IAED;;;;;OAKG;IACH,uBAgCC;CACD;;;;;;;;;;;;;;;;;;;;;;;;;;8BArwD6B,0CAA0C"}
@@ -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;;;;;;;;;;;;;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
+ {"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,OAoBhB;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;8BA9qB6B,0CAA0C"}
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"unified-wrapper.d.mts","sourceRoot":"","sources":["../../../../dist/lib/handlers/unified-wrapper.mjs"],"names":[],"mappings":"AAgwGA;;;;;;;;;;;GAWG;AACH,sCAPW,OAAO,GACL,cAAc,GAAC,IAAI,CAkB/B;;;;;AA5qGD;;;;;;;;;;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,8BAmpBC;IAED;;;;;;OAMG;IACH,uCA4rCC;IAvVE,mBAA0B;IAzlF7B;;;OAGG;IACH,2EAFa,GAAC,CA8Bb;;CAi5FD;8BAxuG6B,0CAA0C;iBADvD,WAAW"}
@@ -1 +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"}
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,CAwBhB;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;IA0DD;;;;;;;;;;;;OAYG;IACH,8BAPW,MAAM,GACJ,MAAM,CA6elB;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;8BAttC6B,0CAA0C"}