@cldmv/slothlet 3.2.1 → 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/README.md CHANGED
@@ -55,18 +55,17 @@ 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.1 (April 2026)
58
+ ### Latest: v3.2.3 (April 2026)
59
59
 
60
- - **Missing `defineProperty` trap** — the version dispatcher proxy introduced in v3.2.0 had no `defineProperty` trap; calls fell through to the raw target, bypassing version routing, and non-configurable writes could trigger V8 proxy invariant `TypeError` on subsequent reads
61
- - **Pre-commit tooling** removed duplicate `build:cleanup` step from `precommit-validation.mjs`; sequence is now `build:dev → debug → test:node → vitest`
62
- - [View full v3.2.1 Changelog](./docs/changelog/v3/v3.2.1.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)
63
62
 
64
63
  ### Recent Releases
65
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))
66
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))
67
68
  - **v3.1.0** (March 2026) — Frozen `api.slothlet.env` snapshot; `env.include` allowlist; reload immunity ([Changelog](./docs/changelog/v3/v3.1.0.md))
68
- - **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))
69
- - **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))
70
69
 
71
70
 
72
71
  📚 **For complete version history and detailed release notes, see [docs/changelog/](./docs/changelog/) folder.**
@@ -154,7 +153,7 @@ Automatic context preservation across all asynchronous boundaries:
154
153
  - **TypeScript-Friendly**: Comprehensive JSDoc annotations with auto-generated declarations
155
154
  - **Configurable Debug**: Detailed logging via CLI flags or environment variables
156
155
  - **Multiple Instances**: Parameter-based isolation for complex applications
157
- - **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+)
158
157
  - **Development Checks**: Built-in environment detection with silent production behavior
159
158
 
160
159
  ---
@@ -969,7 +968,7 @@ try {
969
968
  - **Debug Mode**: Comprehensive i18n-translated logging via `--slothletdebug` flag or `SLOTHLET_DEBUG=true`
970
969
  - **Development Check**: `devcheck.mjs` for environment validation
971
970
  - **Source Detection**: Automatic `src/` vs `dist/` mode detection
972
- - **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+)
973
972
 
974
973
  ---
975
974
 
@@ -508,6 +508,30 @@ export class VersionManager extends ComponentBase {
508
508
  return manager.#walkApiPath([versionTag, ...logicalPath.split(".")]);
509
509
  };
510
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
+
511
535
  const handlers = {
512
536
 
513
537
  get(t, prop) {
@@ -566,24 +590,26 @@ export class VersionManager extends ComponentBase {
566
590
 
567
591
 
568
592
 
569
- if (typeof prop === "symbol" && prop.toString() === "Symbol(nodejs.util.inspect.custom)") {
570
- return () => {
593
+
594
+ if (prop === inspect.custom) {
595
+ return (_depth, options, inspectFn) => {
571
596
  const vw = resolveVersionedWrapper();
572
597
  if (vw) {
573
598
  try {
574
- return inspect(vw);
599
+ return typeof inspectFn === "function" ? inspectFn(vw, options) : inspect(vw, options);
575
600
  } catch {
576
601
 
602
+
577
603
  void 0;
578
604
  }
579
605
  }
580
606
 
607
+
581
608
  const entry = manager.#registry.get(logicalPath);
582
609
  const versions = entry ? Array.from(entry.versions.keys()) : [];
583
610
  return { __versionDispatcher: logicalPath, versions };
584
611
  };
585
612
  }
586
-
587
613
 
588
614
 
589
615
  if (prop === "toString") return () => `[VersionDispatcher: ${logicalPath}]`;
@@ -741,6 +767,53 @@ export class VersionManager extends ComponentBase {
741
767
  }
742
768
 
743
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);
744
817
  }
745
818
  };
746
819
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cldmv/slothlet",
3
- "version": "3.2.1",
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":"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,CAqYlB;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;8BA9mC6B,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"}