@cldmv/slothlet 2.5.6 → 2.6.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.
package/dist/slothlet.mjs CHANGED
@@ -30,9 +30,32 @@ import {
30
30
  getCategoryBuildingDecisions,
31
31
  buildCategoryDecisions
32
32
  } from "@cldmv/slothlet/helpers/api_builder";
33
+ import { updateInstanceData, cleanupInstance } from "./lib/helpers/instance-manager.mjs";
33
34
 
34
35
 
35
36
 
37
+
38
+ function normalizeRuntimeType(runtime) {
39
+ if (!runtime || typeof runtime !== "string") {
40
+ return "async";
41
+ }
42
+
43
+ const normalized = runtime.toLowerCase().trim();
44
+
45
+
46
+ if (normalized === "async" || normalized === "asynclocal" || normalized === "asynclocalstorage") {
47
+ return "async";
48
+ }
49
+
50
+
51
+ if (normalized === "live" || normalized === "livebindings" || normalized === "experimental") {
52
+ return "live";
53
+ }
54
+
55
+
56
+ return "async";
57
+ }
58
+
36
59
  const __filename = fileURLToPath(import.meta.url);
37
60
  const __dirname = path.dirname(__filename);
38
61
 
@@ -128,7 +151,25 @@ const slothletObject = {
128
151
  }
129
152
 
130
153
 
131
- this.instanceId = `slothlet_${Date.now()}_${Math.random().toString(36).slice(2, 11).padEnd(9, "0")}`;
154
+
155
+
156
+ const { entry = import.meta.url, engine = "singleton", mode, api_mode = "auto" } = options ?? {};
157
+
158
+
159
+ const executionEngine = mode && ["singleton", "vm", "worker", "fork"].includes(mode) ? mode : engine;
160
+
161
+
162
+ let isLazyMode;
163
+ if (mode && ["lazy", "eager"].includes(mode)) {
164
+ isLazyMode = mode === "lazy";
165
+ } else {
166
+ isLazyMode = options.lazy !== undefined ? options.lazy : this.config.lazy;
167
+ }
168
+
169
+
170
+ const runtimeType = normalizeRuntimeType(options.runtime || "async");
171
+ const loadingModeStr = isLazyMode ? "lazy" : "eager";
172
+ this.instanceId = `slothlet_${runtimeType}_${loadingModeStr}_${Date.now()}_${Math.random().toString(36).slice(2, 11).padEnd(9, "0")}`;
132
173
 
133
174
 
134
175
  if (!this.modes) {
@@ -172,18 +213,16 @@ const slothletObject = {
172
213
 
173
214
 
174
215
 
175
- const { entry = import.meta.url, mode = "singleton", api_mode = "auto" } = options ?? {};
176
-
177
-
178
-
179
216
 
180
217
 
181
- this.mode = mode;
218
+ this.mode = executionEngine;
182
219
  this.api_mode = api_mode;
183
220
  let api;
184
221
  let dispose;
185
- if (mode === "singleton") {
186
- const { context = null, reference = null, sanitize = null, ...loadConfig } = options;
222
+ if (executionEngine === "singleton") {
223
+
224
+
225
+ const { context = null, reference = null, sanitize = null, engine, mode, ...loadConfig } = options;
187
226
  this.context = context;
188
227
  this.reference = reference;
189
228
 
@@ -193,6 +232,9 @@ const slothletObject = {
193
232
  }
194
233
 
195
234
 
235
+ loadConfig.lazy = isLazyMode;
236
+
237
+
196
238
 
197
239
  if (this.api_mode === "function") {
198
240
  this.boundapi = function (...args) {
@@ -215,7 +257,8 @@ const slothletObject = {
215
257
  return this.boundapi;
216
258
  } else {
217
259
  const { createEngine } = await import("./lib/engine/slothlet_engine.mjs");
218
- ({ api, dispose } = await createEngine({ entry, ...options }));
260
+
261
+ ({ api, dispose } = await createEngine({ entry, mode: executionEngine, ...options }));
219
262
 
220
263
 
221
264
  if (typeof dispose === "function") {
@@ -235,6 +278,19 @@ const slothletObject = {
235
278
 
236
279
  async load(config = {}, ctxRef = { context: null, reference: null }) {
237
280
  this.config = { ...this.config, ...config };
281
+
282
+
283
+ this.config.runtime = normalizeRuntimeType(this.config.runtime);
284
+
285
+ if (!this.runtime) {
286
+ if (this.config.runtime === "live") {
287
+ this.runtime = await import("@cldmv/slothlet/runtime/live");
288
+ } else {
289
+
290
+ this.runtime = await import("@cldmv/slothlet/runtime/async");
291
+ }
292
+ }
293
+
238
294
 
239
295
 
240
296
  let apiDir = this.config.dir || "api";
@@ -823,9 +879,23 @@ const slothletObject = {
823
879
 
824
880
 
825
881
  mutateLiveBindingFunction(self, newSelf);
826
- Object.assign(context, newContext || {});
882
+
883
+
884
+ const contextWithRuntime = {
885
+ ...newContext,
886
+ runtimeType: this.config.runtime
887
+ };
888
+ Object.assign(context, contextWithRuntime || {});
827
889
  Object.assign(reference, newReference || {});
828
890
 
891
+
892
+ if (this.instanceId) {
893
+ updateInstanceData(this.instanceId, "self", newSelf);
894
+ updateInstanceData(this.instanceId, "context", contextWithRuntime);
895
+ updateInstanceData(this.instanceId, "reference", newReference);
896
+ updateInstanceData(this.instanceId, "config", this.config);
897
+ }
898
+
829
899
  this.safeDefine(this.boundapi, "__ctx", {
830
900
  self: this.boundapi,
831
901
  context: this.context,
@@ -1032,6 +1102,14 @@ const slothletObject = {
1032
1102
  this.reference = {};
1033
1103
  this._dispose = null;
1034
1104
  this._boundAPIShutdown = null;
1105
+
1106
+
1107
+
1108
+
1109
+ if (this.instanceId) {
1110
+ await cleanupInstance(this.instanceId);
1111
+ }
1112
+
1035
1113
  if (apiError || internalError) throw apiError || internalError;
1036
1114
  }
1037
1115
  } finally {
package/index.cjs CHANGED
@@ -1,26 +1,27 @@
1
1
  /**
2
- * @fileoverview CommonJS entry point for @cldmv/slothlet with automatic source/dist detection and live-binding context.
3
- * @module @cldmv/slothlet
2
+ * @Project: @cldmv/slothlet
3
+ * @Filename: /index.cjs
4
+ * @Date: 2025-11-09 11:15:17 -08:00 (1762715717)
5
+ * @Author: Nate Hyson <CLDMV>
6
+ * @Email: <Shinrai@users.noreply.github.com>
7
+ * -----
8
+ * @Last modified by: Nate Hyson <CLDMV> (Shinrai@users.noreply.github.com)
9
+ * @Last modified time: 2025-11-09 14:43:17 -08:00 (1762728197)
10
+ * -----
11
+ * @Copyright: Copyright (c) 2013-2025 Catalyzed Motivation Inc. All rights reserved.
4
12
  */
5
13
 
6
- const runtimePromise = import("@cldmv/slothlet/runtime");
7
- const modPromise = import("@cldmv/slothlet/slothlet");
8
-
9
- // Development environment check (must happen before slothlet imports)
10
- (async () => {
11
- try {
12
- await import("@cldmv/slothlet/devcheck");
13
- } catch {
14
- // ignore
15
- }
16
- })();
14
+ /**
15
+ * @fileoverview CommonJS entry point for @cldmv/slothlet - imports ESM implementation for single source of truth.
16
+ * @module @cldmv/slothlet
17
+ */
17
18
 
18
19
  /**
19
- * Creates a slothlet API instance with live-binding context and AsyncLocalStorage support.
20
- * Automatically wraps all API functions with context isolation for multi-instance support.
20
+ * CommonJS entry that dynamically imports the ESM implementation.
21
+ * This ensures single source of truth in index.mjs while maintaining CJS compatibility.
22
+ * Eliminates code duplication between entry points and ensures consistent behavior.
21
23
  * @public
22
24
  * @async
23
- *
24
25
  * @param {object} [options={}] - Configuration options for the slothlet instance
25
26
  * @param {string} [options.dir="api"] - Directory to load API modules from
26
27
  * @param {boolean} [options.lazy=false] - Use lazy loading (true) or eager loading (false)
@@ -28,38 +29,28 @@ const modPromise = import("@cldmv/slothlet/slothlet");
28
29
  * @param {boolean} [options.debug=false] - Enable debug logging
29
30
  * @param {string} [options.mode="singleton"] - Execution mode (singleton, vm, worker, fork)
30
31
  * @param {string} [options.api_mode="auto"] - API structure mode (auto, function, object)
32
+ * @param {string} [options.runtime] - Runtime type ("async", "asynclocalstorage", "live", "livebindings", "experimental")
31
33
  * @param {object} [options.context={}] - Context data for live bindings
32
34
  * @param {object} [options.reference={}] - Reference objects to merge into API root
33
35
  * @returns {Promise<function|object>} The bound API object with live-binding context
34
36
  *
35
- * @example // CJS
37
+ * @example // CJS usage
36
38
  * const slothlet = require("@cldmv/slothlet");
37
39
  * const api = await slothlet({ dir: "./api", context: { user: "alice" } });
38
40
  * console.log(api.config.username); // Access configuration
41
+ *
42
+ * @example // CJS usage with runtime selection
43
+ * const slothlet = require("@cldmv/slothlet");
44
+ * const api = await slothlet({ dir: "./api", runtime: "live" });
45
+ *
46
+ * @example // CJS named destructuring
47
+ * const { slothlet } = require("@cldmv/slothlet");
48
+ * const api = await slothlet({ dir: "./api" });
39
49
  */
40
50
  async function slothlet(options = {}) {
41
- const [runtime, mod] = await Promise.all([runtimePromise, modPromise]);
42
- const { makeWrapper } = runtime;
43
- const build = mod.slothlet ?? mod.default;
44
-
45
- const api = await build(options);
46
-
47
- // Prefer an explicit instance context the internal attached to the API (api.__ctx),
48
- // else fall back to module-level pieces if you expose them.
49
- const ctx = api?.__ctx ?? { self: mod.self, context: mod.context, reference: mod.reference };
50
-
51
- // console.log("[DEBUG index.cjs] Context setup:", {
52
- // hasApiCtx: !!api?.__ctx,
53
- // ctxSelfType: typeof ctx.self,
54
- // ctxSelfKeys: Object.keys(ctx.self || {}),
55
- // ctxContextType: typeof ctx.context,
56
- // ctxContextKeys: Object.keys(ctx.context || {}),
57
- // ctxReferenceType: typeof ctx.reference,
58
- // ctxReferenceKeys: Object.keys(ctx.reference || {}),
59
- // fallbackToMod: !api?.__ctx
60
- // });
61
-
62
- return makeWrapper(ctx)(api);
51
+ // Dynamic import of ESM entry point - single source of truth
52
+ const { default: esmSlothlet } = await import("./index.mjs");
53
+ return esmSlothlet(options);
63
54
  }
64
55
 
65
56
  /**
package/index.mjs CHANGED
@@ -3,6 +3,35 @@
3
3
  * @module @cldmv/slothlet
4
4
  */
5
5
 
6
+ /**
7
+ * Normalize runtime input to internal standard format.
8
+ * @function normalizeRuntimeType
9
+ * @param {string} runtime - Input runtime type (various formats accepted)
10
+ * @returns {string} Normalized runtime type ("async" or "live")
11
+ * @internal
12
+ * @private
13
+ */
14
+ function normalizeRuntimeType(runtime) {
15
+ if (!runtime || typeof runtime !== "string") {
16
+ return "async"; // Default to AsyncLocalStorage
17
+ }
18
+
19
+ const normalized = runtime.toLowerCase().trim();
20
+
21
+ // AsyncLocalStorage runtime variants
22
+ if (normalized === "async" || normalized === "asynclocal" || normalized === "asynclocalstorage") {
23
+ return "async";
24
+ }
25
+
26
+ // Live bindings runtime variants
27
+ if (normalized === "live" || normalized === "livebindings" || normalized === "experimental") {
28
+ return "live";
29
+ }
30
+
31
+ // Default to async for unknown values
32
+ return "async";
33
+ }
34
+
6
35
  // Development environment check (must happen before slothlet imports)
7
36
  (async () => {
8
37
  try {
@@ -20,10 +49,11 @@
20
49
  *
21
50
  * @param {object} [options={}] - Configuration options for the slothlet instance
22
51
  * @param {string} [options.dir="api"] - Directory to load API modules from
23
- * @param {boolean} [options.lazy=false] - Use lazy loading (true) or eager loading (false)
52
+ * @param {boolean} [options.lazy=false] - Use lazy loading (true) or eager loading (false) - legacy option
53
+ * @param {string} [options.mode] - Loading mode ("lazy", "eager") or execution mode ("singleton", "vm", "worker", "fork") - takes precedence over lazy option
54
+ * @param {string} [options.engine="singleton"] - Execution mode (singleton, vm, worker, fork)
24
55
  * @param {number} [options.apiDepth=Infinity] - Maximum directory depth to scan
25
56
  * @param {boolean} [options.debug=false] - Enable debug logging
26
- * @param {string} [options.mode="singleton"] - Execution mode (singleton, vm, worker, fork)
27
57
  * @param {string} [options.api_mode="auto"] - API structure mode (auto, function, object)
28
58
  * @param {object} [options.context={}] - Context data for live bindings
29
59
  * @param {object} [options.reference={}] - Reference objects to merge into API root
@@ -37,28 +67,28 @@
37
67
  */
38
68
  export default async function slothlet(options = {}) {
39
69
  // Dynamic imports after environment check
40
- const [runtime, mod] = await Promise.all([import("@cldmv/slothlet/runtime"), import("@cldmv/slothlet/slothlet")]);
70
+ // Dynamic imports after environment check
71
+ const mod = await import("@cldmv/slothlet/slothlet");
41
72
 
42
- const { makeWrapper } = runtime;
43
73
  const build = mod.slothlet ?? mod.default;
44
74
 
45
75
  const api = await build(options);
46
76
 
77
+ // Use the same runtime selection logic as slothlet.mjs
78
+ const normalizedRuntime = normalizeRuntimeType(options.runtime);
79
+ let runtimeModule;
80
+ if (normalizedRuntime === "live") {
81
+ runtimeModule = await import("@cldmv/slothlet/runtime/live");
82
+ } else {
83
+ // Default to AsyncLocalStorage runtime (original master branch implementation)
84
+ runtimeModule = await import("@cldmv/slothlet/runtime/async");
85
+ }
86
+ const { makeWrapper } = runtimeModule;
87
+
47
88
  // Prefer an explicit instance context the internal attached to the API (api.__ctx),
48
89
  // else fall back to module-level pieces if you expose them.
49
90
  const ctx = api?.__ctx ?? { self: mod.self, context: mod.context, reference: mod.reference };
50
91
 
51
- // console.log("[DEBUG index.mjs] Context setup:", {
52
- // hasApiCtx: !!api?.__ctx,
53
- // ctxSelfType: typeof ctx.self,
54
- // ctxSelfKeys: Object.keys(ctx.self || {}),
55
- // ctxContextType: typeof ctx.context,
56
- // ctxContextKeys: Object.keys(ctx.context || {}),
57
- // ctxReferenceType: typeof ctx.reference,
58
- // ctxReferenceKeys: Object.keys(ctx.reference || {}),
59
- // fallbackToMod: !api?.__ctx
60
- // });
61
- // return api;
62
92
  return makeWrapper(ctx)(api);
63
93
  }
64
94
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cldmv/slothlet",
3
- "version": "2.5.6",
3
+ "version": "2.6.0",
4
4
  "moduleVersions": {
5
5
  "lazy": "1.3.0",
6
6
  "eager": "1.3.0"
@@ -34,6 +34,22 @@
34
34
  "types": "./types/dist/lib/runtime/runtime.d.mts",
35
35
  "import": "./dist/lib/runtime/runtime.mjs"
36
36
  },
37
+ "./runtime/async": {
38
+ "development": {
39
+ "types": "./types/src/lib/runtime/runtime-asynclocalstorage.d.mts",
40
+ "import": "./src/lib/runtime/runtime-asynclocalstorage.mjs"
41
+ },
42
+ "types": "./types/dist/lib/runtime/runtime-asynclocalstorage.d.mts",
43
+ "import": "./dist/lib/runtime/runtime-asynclocalstorage.mjs"
44
+ },
45
+ "./runtime/live": {
46
+ "development": {
47
+ "types": "./types/src/lib/runtime/runtime-livebindings.d.mts",
48
+ "import": "./src/lib/runtime/runtime-livebindings.mjs"
49
+ },
50
+ "types": "./types/dist/lib/runtime/runtime-livebindings.d.mts",
51
+ "import": "./dist/lib/runtime/runtime-livebindings.mjs"
52
+ },
37
53
  "./helpers/*": {
38
54
  "development": {
39
55
  "types": "./types/src/lib/helpers/*.d.mts",
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @function enableAlsForEventEmitters
5
5
  * @package
6
- * @param {AsyncLocalStorage} [als=sharedALS] - The AsyncLocalStorage instance to use (defaults to slothlet's shared instance)
6
+ * @param {AsyncLocalStorage} [als] - The AsyncLocalStorage instance to use (defaults to slothlet's shared instance)
7
7
  *
8
8
  * @description
9
9
  * Patches EventEmitter.prototype to automatically preserve AsyncLocalStorage context
@@ -18,6 +18,6 @@
18
18
  * import { enableAlsForEventEmitters } from "./als-eventemitter.mjs";
19
19
  * enableAlsForEventEmitters(als);
20
20
  */
21
- export function enableAlsForEventEmitters(als?: AsyncLocalStorage): void;
22
- export type AsyncLocalStorage = import("async_hooks").AsyncLocalStorage<any>;
21
+ export function enableAlsForEventEmitters(als?: AsyncLocalStorage<any>): void;
22
+ import { AsyncLocalStorage } from "node:async_hooks";
23
23
  //# sourceMappingURL=als-eventemitter.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"als-eventemitter.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/als-eventemitter.mjs"],"names":[],"mappings":"AAoCA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,gDAfW,iBAAiB,QAoK3B"}
1
+ {"version":3,"file":"als-eventemitter.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/als-eventemitter.mjs"],"names":[],"mappings":"AAuCA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,8EAqJC;kCA9KiC,kBAAkB"}
@@ -1 +1 @@
1
- {"version":3,"file":"api_builder.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/api_builder.mjs"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api_builder.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/api_builder.mjs"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"auto-wrap.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/auto-wrap.mjs"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;GAIG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,kDAdW,SAAS,GACP,SAAS,CA2CrB;AAED;;;;;;;GAOG;AACH,0BAJa,OAAO,CAAC,SAAS,CAAC,CAO9B;wBAGY,cAAc,UAAU,CAAC;wBACzB,OAAO,UAAU,EAAE,MAAM"}
1
+ {"version":3,"file":"auto-wrap.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/auto-wrap.mjs"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;GAIG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,kDAdW,SAAS,GACP,SAAS,CA6CrB;AAED;;;;;;;GAOG;AACH,0BAJa,OAAO,CAAC,SAAS,CAAC,CAO9B;wBAGY,cAAc,UAAU,CAAC;wBACzB,OAAO,UAAU,EAAE,MAAM"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Get instance data by ID
3
+ * @param {string} instanceId - Instance identifier
4
+ * @returns {object|null} Instance data or null if not found
5
+ */
6
+ export function getInstanceData(instanceId: string): object | null;
7
+ /**
8
+ * Update instance data for a specific key
9
+ * @param {string} instanceId - Instance identifier
10
+ * @param {string} key - Data key (self, context, reference)
11
+ * @param {any} value - Data value
12
+ * @returns {void}
13
+ */
14
+ export function updateInstanceData(instanceId: string, key: string, value: any): void;
15
+ /**
16
+ * Clean up instance data when no longer needed
17
+ * @param {string} instanceId - Instance identifier
18
+ * @returns {Promise<void>}
19
+ */
20
+ export function cleanupInstance(instanceId: string): Promise<void>;
21
+ /**
22
+ * Set the currently active instance (called during module loading)
23
+ * @param {string|null} instanceId - Instance ID to set as active
24
+ */
25
+ export function setActiveInstance(instanceId: string | null): void;
26
+ /**
27
+ * Get the current active instance ID
28
+ * @returns {string|null} Current active instance ID
29
+ */
30
+ export function getCurrentActiveInstanceId(): string | null;
31
+ /**
32
+ * Detect current instance ID from stack trace
33
+ * @returns {string|null} Detected instance ID or null
34
+ */
35
+ export function detectCurrentInstanceId(): string | null;
36
+ /**
37
+ * Get all registered instance IDs
38
+ * @returns {string[]} Array of instance IDs
39
+ */
40
+ export function getAllInstanceIds(): string[];
41
+ //# sourceMappingURL=instance-manager.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance-manager.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/instance-manager.mjs"],"names":[],"mappings":"AAmBA;;;;GAIG;AACH,4CAHW,MAAM,GACJ,MAAM,GAAC,IAAI,CAIvB;AAED;;;;;;GAMG;AACH,+CALW,MAAM,OACN,MAAM,SACN,GAAG,GACD,IAAI,CAqBhB;AAED;;;;GAIG;AACH,4CAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CASzB;AAED;;;GAGG;AACH,8CAFW,MAAM,GAAC,IAAI,QAKrB;AAED;;;GAGG;AACH,8CAFa,MAAM,GAAC,IAAI,CAIvB;AAED;;;GAGG;AACH,2CAFa,MAAM,GAAC,IAAI,CAkCvB;AAED;;;GAGG;AACH,qCAFa,MAAM,EAAE,CAIpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"slothlet_lazy.d.mts","sourceRoot":"","sources":["../../../../dist/lib/modes/slothlet_lazy.mjs"],"names":[],"mappings":"AAiKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,4BAtBW,MAAM,aACN,MAAM,iBACN,MAAM,GACJ,OAAO,CAAC,WAAS,MAAM,CAAC,CA4JpC"}
1
+ {"version":3,"file":"slothlet_lazy.d.mts","sourceRoot":"","sources":["../../../../dist/lib/modes/slothlet_lazy.mjs"],"names":[],"mappings":"AAgKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,4BAtBW,MAAM,aACN,MAAM,iBACN,MAAM,GACJ,OAAO,CAAC,WAAS,MAAM,CAAC,CAkKpC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Shared AsyncLocalStorage instance for all slothlet instances.
3
+ * Provides unified context management across all EventEmitter wrappers.
4
+ * @type {AsyncLocalStorageType}
5
+ * @public
6
+ */
7
+ export const sharedALS: AsyncLocalStorageType;
8
+ export function runWithCtx(ctx: object, fn: Function, thisArg: any, args: any[]): any;
9
+ export function getCtx(): object | null;
10
+ export function makeWrapper(ctx: object): Function;
11
+ /**
12
+ * @constant self
13
+ * @memberof module:@cldmv/slothlet/runtime
14
+ * @export module:@cldmv/slothlet/runtime
15
+ * @public
16
+ * @type {function|object}
17
+ *
18
+ * @description
19
+ * Live binding to the current instance's 'self' reference from AsyncLocalStorage context.
20
+ *
21
+ * @example
22
+ * // Access current instance self
23
+ * console.log(self); // Current slothlet instance
24
+ */
25
+ export const self: Function | object;
26
+ /**
27
+ * @constant context
28
+ * @memberof module:@cldmv/slothlet/runtime
29
+ * @export module:@cldmv/slothlet/runtime
30
+ * @public
31
+ * @type {object}
32
+ *
33
+ * @description
34
+ * Live binding to the current instance's 'context' data from AsyncLocalStorage context.
35
+ *
36
+ * @example
37
+ * // Access current context data
38
+ * console.log(context); // Current context object
39
+ */
40
+ export const context: object;
41
+ /**
42
+ * @constant reference
43
+ * @memberof module:@cldmv/slothlet/runtime
44
+ * @export module:@cldmv/slothlet/runtime
45
+ * @public
46
+ * @type {object}
47
+ *
48
+ * @description
49
+ * Live binding to the current instance's 'reference' object from AsyncLocalStorage context.
50
+ *
51
+ * @example
52
+ * // Access current reference object
53
+ * console.log(reference); // Current reference data
54
+ */
55
+ export const reference: object;
56
+ export type AsyncLocalStorageType = AsyncLocalStorage<any>;
57
+ import { AsyncLocalStorage } from "node:async_hooks";
58
+ //# sourceMappingURL=runtime-asynclocalstorage.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-asynclocalstorage.d.mts","sourceRoot":"","sources":["../../../../dist/lib/runtime/runtime-asynclocalstorage.mjs"],"names":[],"mappings":"AAuCA;;;;;GAKG;AACH,wBAHU,qBAAqB,CAGkB;AAsB1C,gCAdI,MAAM,yBAEN,GAAG,gBAED,GAAG,CA6Bf;AAiBM,0BAZM,MAAM,GAAC,IAAI,CAY0B;AAiL3C,iCAjBI,MAAM,YAgIhB;AAuSD;;;;;;;;;;;;;GAaG;AACH,mBATU,WAAS,MAAM,CAS6B;AAEtD;;;;;;;;;;;;;GAaG;AACH,sBATU,MAAM,CAS4C;AAE5D;;;;;;;;;;;;;GAaG;AACH,wBATU,MAAM,CASgD;;kCA3rB9B,kBAAkB"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Context-aware function execution with temporary active instance override.
3
+ * Sets the active instance based on the context before calling the function,
4
+ * ensuring CJS runtime imports detect the correct instance.
5
+ * @param {object} ctx - Context object containing instanceId
6
+ * @param {Function} fn - Function to execute
7
+ * @param {any} thisArg - The this argument
8
+ * @param {Array} args - The function arguments
9
+ * @returns {any} The function result
10
+ */
11
+ export function runWithCtx(ctx: object, fn: Function, thisArg: any, args: any[]): any;
12
+ /**
13
+ * Legacy makeWrapper function for backwards compatibility.
14
+ * @internal
15
+ * @param {object} ctx - The context to bind
16
+ * @returns {function} A wrapper function
17
+ */
18
+ export function makeWrapper(_: any): Function;
19
+ /**
20
+ * Legacy context management functions - kept for backwards compatibility
21
+ * but may not be needed with instance detection approach.
22
+ */
23
+ export function getContext(): any;
24
+ export function setContext(newContext: any): void;
25
+ /**
26
+ * Live-binding reference to the current API instance.
27
+ * Automatically resolves to the appropriate instance based on calling context.
28
+ * @type {object}
29
+ * @public
30
+ */
31
+ export const self: object;
32
+ /**
33
+ * Live-binding reference for contextual data.
34
+ * Automatically resolves to the appropriate instance context.
35
+ * @type {object}
36
+ * @public
37
+ */
38
+ export const context: object;
39
+ /**
40
+ * Live-binding reference for reference data.
41
+ * Automatically resolves to the appropriate instance reference.
42
+ * @type {object}
43
+ * @public
44
+ */
45
+ export const reference: object;
46
+ /**
47
+ * Live-binding reference to the current instance ID.
48
+ * Automatically resolves to the current instance identifier.
49
+ * @type {string}
50
+ * @public
51
+ */
52
+ export const instanceId: string;
53
+ export namespace contextManager {
54
+ export { getContext as get };
55
+ export { setContext as set };
56
+ export { runWithCtx };
57
+ }
58
+ //# sourceMappingURL=runtime-livebindings.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-livebindings.d.mts","sourceRoot":"","sources":["../../../../dist/lib/runtime/runtime-livebindings.mjs"],"names":[],"mappings":"AA2RA;;;;;;;;;GASG;AACH,gCANW,MAAM,yBAEN,GAAG,gBAED,GAAG,CAkBf;AAED;;;;;GAKG;AACH,8CAMC;AAID;;;GAGG;AAEH,kCAEC;AAED,kDASC;AArQD;;;;;GAKG;AACH,mBAHU,MAAM,CAmDd;AAEF;;;;;GAKG;AACH,sBAHU,MAAM,CA+Cd;AAEF;;;;;GAKG;AACH,wBAHU,MAAM,CA+Cd;AAEF;;;;;GAKG;AACH,yBAHU,MAAM,CAkCd"}