@cldmv/slothlet 2.9.0 → 2.11.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/AGENT-USAGE.md +41 -0
- package/README.md +95 -20
- package/dist/lib/engine/slothlet_child.mjs +1 -1
- package/dist/lib/engine/slothlet_engine.mjs +1 -1
- package/dist/lib/engine/slothlet_esm.mjs +1 -1
- package/dist/lib/engine/slothlet_helpers.mjs +1 -1
- package/dist/lib/engine/slothlet_worker.mjs +1 -1
- package/dist/lib/helpers/als-eventemitter.mjs +1 -1
- package/dist/lib/helpers/api_builder/add_api.mjs +321 -5
- package/dist/lib/helpers/api_builder/analysis.mjs +13 -3
- package/dist/lib/helpers/api_builder/construction.mjs +41 -3
- package/dist/lib/helpers/api_builder/decisions.mjs +16 -5
- package/dist/lib/helpers/api_builder/metadata.mjs +248 -0
- package/dist/lib/helpers/api_builder.mjs +1 -1
- package/dist/lib/helpers/auto-wrap.mjs +1 -1
- package/dist/lib/helpers/hooks.mjs +1 -1
- package/dist/lib/helpers/instance-manager.mjs +1 -1
- package/dist/lib/helpers/metadata-api.mjs +201 -0
- package/dist/lib/helpers/multidefault.mjs +12 -3
- package/dist/lib/helpers/resolve-from-caller.mjs +48 -11
- package/dist/lib/helpers/sanitize.mjs +1 -1
- package/dist/lib/helpers/utilities.mjs +1 -1
- package/dist/lib/modes/slothlet_eager.mjs +30 -2
- package/dist/lib/modes/slothlet_lazy.mjs +95 -5
- package/dist/lib/runtime/runtime-asynclocalstorage.mjs +5 -1
- package/dist/lib/runtime/runtime-livebindings.mjs +5 -1
- package/dist/lib/runtime/runtime.mjs +12 -1
- package/dist/slothlet.mjs +70 -6
- package/docs/API-RULES-CONDITIONS.md +511 -307
- package/docs/API-RULES.md +617 -589
- package/package.json +2 -2
- package/types/dist/lib/helpers/api_builder/add_api.d.mts +64 -22
- package/types/dist/lib/helpers/api_builder/add_api.d.mts.map +1 -1
- package/types/dist/lib/helpers/api_builder/analysis.d.mts.map +1 -1
- package/types/dist/lib/helpers/api_builder/construction.d.mts.map +1 -1
- package/types/dist/lib/helpers/api_builder/decisions.d.mts.map +1 -1
- package/types/dist/lib/helpers/api_builder/metadata.d.mts +99 -0
- package/types/dist/lib/helpers/api_builder/metadata.d.mts.map +1 -0
- package/types/dist/lib/helpers/metadata-api.d.mts +132 -0
- package/types/dist/lib/helpers/metadata-api.d.mts.map +1 -0
- package/types/dist/lib/helpers/multidefault.d.mts.map +1 -1
- package/types/dist/lib/helpers/resolve-from-caller.d.mts.map +1 -1
- package/types/dist/lib/modes/slothlet_eager.d.mts.map +1 -1
- package/types/dist/lib/modes/slothlet_lazy.d.mts.map +1 -1
- package/types/dist/lib/runtime/runtime-asynclocalstorage.d.mts +2 -0
- package/types/dist/lib/runtime/runtime-asynclocalstorage.d.mts.map +1 -1
- package/types/dist/lib/runtime/runtime-livebindings.d.mts +2 -0
- package/types/dist/lib/runtime/runtime-livebindings.d.mts.map +1 -1
- package/types/dist/lib/runtime/runtime.d.mts +1 -0
- package/types/dist/lib/runtime/runtime.d.mts.map +1 -1
- package/types/dist/slothlet.d.mts +8 -0
- package/types/dist/slothlet.d.mts.map +1 -1
- package/types/index.d.mts.map +1 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cldmv/slothlet",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.11.0",
|
|
4
4
|
"moduleVersions": {
|
|
5
5
|
"lazy": "1.3.1",
|
|
6
6
|
"eager": "1.3.1",
|
|
@@ -132,7 +132,7 @@
|
|
|
132
132
|
"zero-dependencies"
|
|
133
133
|
],
|
|
134
134
|
"engines": {
|
|
135
|
-
"node": ">=16.
|
|
135
|
+
"node": ">=16.20.2"
|
|
136
136
|
},
|
|
137
137
|
"author": {
|
|
138
138
|
"name": "Shinrai",
|
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* @typedef {Object} AddApiFromFolderParams
|
|
3
|
+
* @property {string} apiPath - Dot-notation path where modules will be added
|
|
4
|
+
* @property {string} folderPath - Path to folder containing modules to load
|
|
5
|
+
* @property {object} instance - Slothlet instance with api, boundapi, config, modes, etc.
|
|
6
|
+
* @property {object} [metadata={}] - Metadata to attach to all loaded functions
|
|
7
|
+
* @property {object} [options={}] - Additional options for module loading
|
|
8
|
+
* @property {boolean} [options.forceOverwrite=false] - Allow overwriting existing APIs (requires Rule 12)
|
|
9
|
+
* @property {string} [options.moduleId] - Module identifier for ownership tracking (required with forceOverwrite)
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* @description
|
|
2
13
|
* Dynamically adds API modules from a new folder to the existing API at a specified path.
|
|
3
14
|
*
|
|
4
15
|
* @function addApiFromFolder
|
|
5
16
|
* @memberof module:@cldmv/slothlet.lib.helpers.api_builder.add_api
|
|
6
|
-
* @param {
|
|
7
|
-
* @param {string} options.apiPath - Dot-notation path where modules will be added
|
|
8
|
-
* @param {string} options.folderPath - Path to folder containing modules to load
|
|
9
|
-
* @param {object} options.instance - Slothlet instance with api, boundapi, config, modes, etc.
|
|
17
|
+
* @param {AddApiFromFolderParams} params - Configuration object
|
|
10
18
|
* @returns {Promise<void>}
|
|
11
19
|
* @throws {Error} If API not loaded, invalid parameters, folder does not exist, or merge conflicts
|
|
12
20
|
* @package
|
|
13
21
|
*
|
|
14
|
-
* @description
|
|
15
22
|
* This function enables runtime extension of the API by loading modules from a folder
|
|
16
23
|
* and merging them into a specified location in the API tree. It performs comprehensive
|
|
17
24
|
* validation, supports both relative and absolute paths, handles intermediate object
|
|
@@ -30,31 +37,66 @@
|
|
|
30
37
|
* import { addApiFromFolder } from "./add_api.mjs";
|
|
31
38
|
*
|
|
32
39
|
* // Add additional modules at runtime.plugins path
|
|
33
|
-
* await addApiFromFolder(
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
40
|
+
* await addApiFromFolder(
|
|
41
|
+
* "runtime.plugins",
|
|
42
|
+
* "./plugins",
|
|
43
|
+
* slothletInstance
|
|
44
|
+
* );
|
|
38
45
|
*
|
|
39
46
|
* @example
|
|
40
47
|
* // Add modules to root level
|
|
41
|
-
* await addApiFromFolder(
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
48
|
+
* await addApiFromFolder(
|
|
49
|
+
* "utilities",
|
|
50
|
+
* "./utils",
|
|
51
|
+
* slothletInstance
|
|
52
|
+
* );
|
|
46
53
|
*
|
|
47
54
|
* @example
|
|
48
55
|
* // Add deep nested modules
|
|
49
|
-
* await addApiFromFolder(
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
56
|
+
* await addApiFromFolder(
|
|
57
|
+
* "services.external.stripe",
|
|
58
|
+
* "./services/stripe",
|
|
59
|
+
* slothletInstance
|
|
60
|
+
* );
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* // Add modules with metadata
|
|
64
|
+
* await addApiFromFolder(
|
|
65
|
+
* "extensions.untrusted",
|
|
66
|
+
* "./untrusted-plugins",
|
|
67
|
+
* slothletInstance,
|
|
68
|
+
* {
|
|
69
|
+
* trusted: false,
|
|
70
|
+
* permissions: ["read"],
|
|
71
|
+
* version: "1.0.0",
|
|
72
|
+
* author: "external"
|
|
73
|
+
* }
|
|
74
|
+
* );
|
|
54
75
|
*/
|
|
55
|
-
export function addApiFromFolder({ apiPath, folderPath, instance }:
|
|
76
|
+
export function addApiFromFolder({ apiPath, folderPath, instance, metadata, options }: AddApiFromFolderParams): Promise<void>;
|
|
77
|
+
export type AddApiFromFolderParams = {
|
|
78
|
+
/**
|
|
79
|
+
* - Dot-notation path where modules will be added
|
|
80
|
+
*/
|
|
56
81
|
apiPath: string;
|
|
82
|
+
/**
|
|
83
|
+
* - Path to folder containing modules to load
|
|
84
|
+
*/
|
|
57
85
|
folderPath: string;
|
|
86
|
+
/**
|
|
87
|
+
* - Slothlet instance with api, boundapi, config, modes, etc.
|
|
88
|
+
*/
|
|
58
89
|
instance: object;
|
|
59
|
-
|
|
90
|
+
/**
|
|
91
|
+
* - Metadata to attach to all loaded functions
|
|
92
|
+
*/
|
|
93
|
+
metadata?: object;
|
|
94
|
+
/**
|
|
95
|
+
* - Additional options for module loading
|
|
96
|
+
*/
|
|
97
|
+
options?: {
|
|
98
|
+
forceOverwrite?: boolean;
|
|
99
|
+
moduleId?: string;
|
|
100
|
+
};
|
|
101
|
+
};
|
|
60
102
|
//# sourceMappingURL=add_api.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add_api.d.mts","sourceRoot":"","sources":["../../../../../dist/lib/helpers/api_builder/add_api.mjs"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add_api.d.mts","sourceRoot":"","sources":["../../../../../dist/lib/helpers/api_builder/add_api.mjs"],"names":[],"mappings":"AAkDA;;;;;;;;;GASG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,uFA3DW,sBAAsB,GACpB,OAAO,CAAC,IAAI,CAAC,CAskBzB;;;;;aAtlBa,MAAM;;;;gBACN,MAAM;;;;cACN,MAAM;;;;eACN,MAAM;;;;cAEjB;QAA6B,cAAc,GAAhC,OAAO;QACU,QAAQ,GAAzB,MAAM;KACnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis.d.mts","sourceRoot":"","sources":["../../../../../dist/lib/helpers/api_builder/analysis.mjs"],"names":[],"mappings":"AA0CA;;;;;;;;GAQG;AACH,0CAHW,GAAC,GACC,OAAO,CAcnB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,0CAvBW,MAAM,YAEd;IAA0B,KAAK,GAAvB,OAAO;IACU,QAAQ,GAAzB,MAAM;CACd,GAAU,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9B,iBAAiB,EAAE,UAAU,GAAC,QAAQ,GAAC,IAAI,CAAC;IAC5C,oBAAoB,EAAE,OAAO,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAC,
|
|
1
|
+
{"version":3,"file":"analysis.d.mts","sourceRoot":"","sources":["../../../../../dist/lib/helpers/api_builder/analysis.mjs"],"names":[],"mappings":"AA0CA;;;;;;;;GAQG;AACH,0CAHW,GAAC,GACC,OAAO,CAcnB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,0CAvBW,MAAM,YAEd;IAA0B,KAAK,GAAvB,OAAO;IACU,QAAQ,GAAzB,MAAM;CACd,GAAU,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9B,iBAAiB,EAAE,UAAU,GAAC,QAAQ,GAAC,IAAI,CAAC;IAC5C,oBAAoB,EAAE,OAAO,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAC,CA4GJ;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,oDAZW,MAAM,YAEd;IAAyB,QAAQ,GAAzB,MAAM;IACY,KAAK,GAAvB,OAAO;CACf,GAAU,MAAM,CA4NlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wDA1BW,MAAM,YAEd;IAAwB,QAAQ,EAAxB,MAAM;IACW,YAAY,GAA7B,MAAM;IACW,QAAQ,GAAzB,MAAM;IACY,KAAK,GAAvB,OAAO;CACf,GAAU,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,aAAa,GAAC,YAAY,GAAC,OAAO,CAAC;IACvD,eAAe,EAAE,MAAM,CAAA;CACxB,CAAC,CAkEJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,2DA1BW,MAAM,YAEd;IAAwB,QAAQ,EAAxB,MAAM;IACW,YAAY,GAA7B,MAAM;IACW,QAAQ,GAAzB,MAAM;IACY,KAAK,GAAvB,OAAO;CACf,GAAU,OAAO,CAAC;IAChB,kBAAkB,EAAE,aAAa,GAAC,YAAY,GAAC,OAAO,CAAC;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,OAAO,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,GAAG,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IACnH,cAAc,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IAC3E,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yBAAyB,EAAE;QAAC,aAAa,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAAA;CACxE,CAAC,CAmHJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"construction.d.mts","sourceRoot":"","sources":["../../../../../dist/lib/helpers/api_builder/construction.mjs"],"names":[],"mappings":"AA0CA;;;;;;;;;;;;;;GAcG;AACH,mCARW,MAAM,mBACN,MAAM,GACJ,MAAM,CAQlB;AAED;;;;;;;;;;;;;GAaG;AACH,yCAPW,MAAM,GACJ,OAAO,CAgBnB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qDAzBW,MAAM,YAEd;IAAyB,YAAY,GAA7B,MAAM;IACW,QAAQ,GAAzB,MAAM;IACW,IAAI,GAArB,MAAM;IACa,aAAa;IAChB,QAAQ,EAAxB,MAAM;CACd,GAAU,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"construction.d.mts","sourceRoot":"","sources":["../../../../../dist/lib/helpers/api_builder/construction.mjs"],"names":[],"mappings":"AA0CA;;;;;;;;;;;;;;GAcG;AACH,mCARW,MAAM,mBACN,MAAM,GACJ,MAAM,CAQlB;AAED;;;;;;;;;;;;;GAaG;AACH,yCAPW,MAAM,GACJ,OAAO,CAgBnB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qDAzBW,MAAM,YAEd;IAAyB,YAAY,GAA7B,MAAM;IACW,QAAQ,GAAzB,MAAM;IACW,IAAI,GAArB,MAAM;IACa,aAAa;IAChB,QAAQ,EAAxB,MAAM;CACd,GAAU,OAAO,CAAC,MAAM,CAAC,CA+U3B;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,kCAtBW,MAAM,YAEd;IAA0B,IAAI,GAAtB,OAAO;IACU,QAAQ,GAAzB,MAAM;IACU,QAAQ,EAAxB,MAAM;CACd,GAAU,OAAO,CAAC,MAAM,WAAS,CAAC,CAoIpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decisions.d.mts","sourceRoot":"","sources":["../../../../../dist/lib/helpers/api_builder/decisions.mjs"],"names":[],"mappings":"AAwCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,+CAtCG;IAAwB,GAAG,EAAnB,MAAM;IACU,QAAQ,EAAxB,MAAM;IACU,UAAU,EAA1B,MAAM;IACW,yBAAyB,EAA1C,OAAO;IACU,iBAAiB,EAAlC,OAAO;IACW,gBAAgB,GAAlC,OAAO;IAGU,YAAY,GAA7B,MAAM;IACW,YAAY,GAA7B,MAAM;IACY,KAAK,GAAvB,OAAO;CACf,GAAU;IACR,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAA;CACf,CAyHH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qDAtBG;IAAwB,GAAG,EAAnB,MAAM;IACU,QAAQ,EAAxB,MAAM;IACU,UAAU,EAA1B,MAAM;IACU,eAAe,EAA/B,MAAM;IACY,YAAY;IACZ,KAAK,GAAvB,OAAO;CACf,GAAU;IAAC,gBAAgB,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAC,CA4D7D;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,6CAvCG;IAAwB,GAAG,EAAnB,MAAM;IACU,QAAQ,EAAxB,MAAM;IACU,UAAU,EAA1B,MAAM;IACW,yBAAyB,EAA1C,OAAO;IACU,iBAAiB,EAAlC,OAAO;IACS,GAAG,EAAnB,MAAM;IACa,cAAc;IACd,cAAc;IAChB,OAAO,GAChC;QAAkC,KAAK,GAA/B,OAAO;QACkB,IAAI,GAA7B,MAAM;QACmB,YAAY,GAArC,MAAM;QACmB,YAAY,GAArC,MAAM;KACd;CAAA,GAAU;IACR,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CACpC,
|
|
1
|
+
{"version":3,"file":"decisions.d.mts","sourceRoot":"","sources":["../../../../../dist/lib/helpers/api_builder/decisions.mjs"],"names":[],"mappings":"AAwCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,+CAtCG;IAAwB,GAAG,EAAnB,MAAM;IACU,QAAQ,EAAxB,MAAM;IACU,UAAU,EAA1B,MAAM;IACW,yBAAyB,EAA1C,OAAO;IACU,iBAAiB,EAAlC,OAAO;IACW,gBAAgB,GAAlC,OAAO;IAGU,YAAY,GAA7B,MAAM;IACW,YAAY,GAA7B,MAAM;IACY,KAAK,GAAvB,OAAO;CACf,GAAU;IACR,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAA;CACf,CAyHH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qDAtBG;IAAwB,GAAG,EAAnB,MAAM;IACU,QAAQ,EAAxB,MAAM;IACU,UAAU,EAA1B,MAAM;IACU,eAAe,EAA/B,MAAM;IACY,YAAY;IACZ,KAAK,GAAvB,OAAO;CACf,GAAU;IAAC,gBAAgB,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAC,CA4D7D;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,6CAvCG;IAAwB,GAAG,EAAnB,MAAM;IACU,QAAQ,EAAxB,MAAM;IACU,UAAU,EAA1B,MAAM;IACW,yBAAyB,EAA1C,OAAO;IACU,iBAAiB,EAAlC,OAAO;IACS,GAAG,EAAnB,MAAM;IACa,cAAc;IACd,cAAc;IAChB,OAAO,GAChC;QAAkC,KAAK,GAA/B,OAAO;QACkB,IAAI,GAA7B,MAAM;QACmB,YAAY,GAArC,MAAM;QACmB,YAAY,GAArC,MAAM;KACd;CAAA,GAAU;IACR,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CACpC,CAsLH;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qDAzBW,MAAM,YAEd;IAAyB,YAAY,GAA7B,MAAM;IACW,QAAQ,GAAzB,MAAM;IACW,IAAI,GAArB,MAAM;IACa,aAAa;IAChB,QAAQ,EAAxB,MAAM;CACd,GAAU,OAAO,CAAC,MAAM,CAAC,CA2Z3B"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @Project: @cldmv/slothlet
|
|
3
|
+
* @Filename: /src/lib/helpers/api_builder/metadata.mjs
|
|
4
|
+
* @Date: 2025-12-31 00:00:00 -08:00
|
|
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-12-31 22:30:16 -08:00 (1767249016)
|
|
10
|
+
* -----
|
|
11
|
+
* @Copyright: Copyright (c) 2013-2025 Catalyzed Motivation Inc. All rights reserved.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* @fileoverview Metadata management utilities for API functions.
|
|
15
|
+
* @module @cldmv/slothlet/lib/helpers/api_builder/metadata
|
|
16
|
+
* @memberof module:@cldmv/slothlet.lib.helpers.api_builder
|
|
17
|
+
* @internal
|
|
18
|
+
* @private
|
|
19
|
+
*
|
|
20
|
+
* @description
|
|
21
|
+
* Provides utilities for tagging functions with immutable metadata, cleaning stale metadata
|
|
22
|
+
* from cached modules, and creating immutable metadata objects with deep freezing.
|
|
23
|
+
*
|
|
24
|
+
* Key Features:
|
|
25
|
+
* - Immutable metadata with Proxy-based enforcement
|
|
26
|
+
* - Deep freezing of nested objects and arrays
|
|
27
|
+
* - Recursive traversal for tagging/cleaning object trees
|
|
28
|
+
* - CommonJS cache-aware metadata cleanup
|
|
29
|
+
*/
|
|
30
|
+
/**
|
|
31
|
+
* Creates an immutable-but-extensible metadata proxy object.
|
|
32
|
+
*
|
|
33
|
+
* @function createImmutableMetadata
|
|
34
|
+
* @param {object} initial - Initial metadata properties
|
|
35
|
+
* @returns {object} Object with immutable existing properties but allows adding new ones
|
|
36
|
+
*
|
|
37
|
+
* @description
|
|
38
|
+
* Creates an object that enforces immutability of existing properties while allowing
|
|
39
|
+
* new properties to be added. This prevents tampering with security-critical metadata
|
|
40
|
+
* while allowing runtime extension of metadata for additional context.
|
|
41
|
+
*
|
|
42
|
+
* Security features:
|
|
43
|
+
* - Existing properties cannot be modified (non-writable, non-configurable after first set)
|
|
44
|
+
* - Properties cannot be deleted
|
|
45
|
+
* - New properties can be added, which then become immutable
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* const meta = createImmutableMetadata({ trusted: true, version: "1.0" });
|
|
49
|
+
* meta.author = "Alice"; // OK - new property
|
|
50
|
+
* meta.author = "Bob"; // FAIL - cannot modify after setting
|
|
51
|
+
* meta.trusted = false; // FAIL - cannot modify existing property
|
|
52
|
+
* delete meta.version; // FAIL - cannot delete properties
|
|
53
|
+
*/
|
|
54
|
+
export function createImmutableMetadata(initial?: object): object;
|
|
55
|
+
/**
|
|
56
|
+
* Removes metadata from all functions in an object tree.
|
|
57
|
+
*
|
|
58
|
+
* @function cleanMetadata
|
|
59
|
+
* @param {object|Function} obj - Object or function to clean
|
|
60
|
+
* @param {WeakSet} [visited] - Visited objects tracker to prevent infinite recursion
|
|
61
|
+
* @returns {void}
|
|
62
|
+
*
|
|
63
|
+
* @description
|
|
64
|
+
* Traverses an object/function tree and removes __metadata and __sourceFolder properties.
|
|
65
|
+
* This is needed when reloading CommonJS modules that cache function object references.
|
|
66
|
+
*/
|
|
67
|
+
export function cleanMetadata(obj: object | Function, visited?: WeakSet<any>): void;
|
|
68
|
+
/**
|
|
69
|
+
* Recursively tags all functions in an object tree with metadata.
|
|
70
|
+
*
|
|
71
|
+
* @function tagLoadedFunctions
|
|
72
|
+
* @param {object|Function} obj - Object or function to tag
|
|
73
|
+
* @param {object} metadata - Metadata object to attach
|
|
74
|
+
* @param {string} baseDir - Base directory path for relative file tracking
|
|
75
|
+
* @param {WeakSet} [visited] - Visited objects tracker to prevent infinite recursion
|
|
76
|
+
* @returns {void}
|
|
77
|
+
*
|
|
78
|
+
* @description
|
|
79
|
+
* Traverses an object/function tree and attaches immutable metadata to all functions.
|
|
80
|
+
* Also tracks source file information (__sourceFile, __sourceLine) for stack trace
|
|
81
|
+
* matching. Only tags functions that don't already have metadata (non-overwriting).
|
|
82
|
+
*
|
|
83
|
+
* Attached properties:
|
|
84
|
+
* - __metadata: Immutable metadata proxy with all user-provided metadata
|
|
85
|
+
* - __sourceFolder: Absolute path to the folder the module was loaded from
|
|
86
|
+
* - __sourceFile: Absolute file path (for stack trace matching)
|
|
87
|
+
* - __sourceLine: Line number where function is defined (for stack trace matching)
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* const modules = { math: { add: (a, b) => a + b } };
|
|
91
|
+
* tagLoadedFunctions(modules, {
|
|
92
|
+
* trusted: true,
|
|
93
|
+
* version: "1.0.0",
|
|
94
|
+
* author: "Alice"
|
|
95
|
+
* }, "/path/to/plugins");
|
|
96
|
+
* // Now modules.math.add.__metadata.trusted === true
|
|
97
|
+
*/
|
|
98
|
+
export function tagLoadedFunctions(obj: object | Function, metadata: object, baseDir: string, visited?: WeakSet<any>): void;
|
|
99
|
+
//# sourceMappingURL=metadata.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.mts","sourceRoot":"","sources":["../../../../../dist/lib/helpers/api_builder/metadata.mjs"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,kDApBW,MAAM,GACJ,MAAM,CAmJlB;AAED;;;;;;;;;;;GAWG;AACH,mCARW,MAAM,WAAS,2BAEb,IAAI,CAyChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wCA1BW,MAAM,WAAS,YACf,MAAM,WACN,MAAM,2BAEJ,IAAI,CA+EhB"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
export namespace metadataAPI {
|
|
2
|
+
/**
|
|
3
|
+
* Get metadata of the function that called the current function.
|
|
4
|
+
*
|
|
5
|
+
* @function caller
|
|
6
|
+
* @memberof metadataAPI
|
|
7
|
+
* @returns {object|null} Caller's metadata object or null if not found
|
|
8
|
+
* @public
|
|
9
|
+
*
|
|
10
|
+
* @description
|
|
11
|
+
* Uses stack trace analysis to identify the calling function and retrieve
|
|
12
|
+
* its attached metadata. Useful for implementing access control where a
|
|
13
|
+
* function needs to verify the identity/permissions of its caller.
|
|
14
|
+
*
|
|
15
|
+
* Stack trace structure:
|
|
16
|
+
* - Line 0: Error
|
|
17
|
+
* - Line 1: metadataAPI.caller (this function)
|
|
18
|
+
* - Line 2: Current function (the one checking)
|
|
19
|
+
* - Line 3: The caller we want to identify
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* // In a secure function
|
|
23
|
+
* import { metadataAPI } from "@cldmv/slothlet/runtime";
|
|
24
|
+
*
|
|
25
|
+
* export function getSecrets() {
|
|
26
|
+
* const caller = metadataAPI.caller();
|
|
27
|
+
*
|
|
28
|
+
* if (!caller?.trusted) {
|
|
29
|
+
* throw new Error("Access denied: untrusted caller");
|
|
30
|
+
* }
|
|
31
|
+
*
|
|
32
|
+
* if (!caller.permissions?.includes("read_secrets")) {
|
|
33
|
+
* throw new Error("Access denied: insufficient permissions");
|
|
34
|
+
* }
|
|
35
|
+
*
|
|
36
|
+
* return { apiKey: "secret123", token: "xyz" };
|
|
37
|
+
* }
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* // With custom metadata tags
|
|
41
|
+
* const caller = metadataAPI.caller();
|
|
42
|
+
* console.log("Caller source:", caller?.sourceFolder);
|
|
43
|
+
* console.log("Caller version:", caller?.version);
|
|
44
|
+
* console.log("Caller author:", caller?.author);
|
|
45
|
+
*/
|
|
46
|
+
function caller(): object | null;
|
|
47
|
+
/**
|
|
48
|
+
* Get metadata of the current function.
|
|
49
|
+
*
|
|
50
|
+
* @function self
|
|
51
|
+
* @memberof metadataAPI
|
|
52
|
+
* @returns {object|null} Current function's metadata or null if not found
|
|
53
|
+
* @public
|
|
54
|
+
*
|
|
55
|
+
* @description
|
|
56
|
+
* Retrieves metadata attached to the currently executing function. Useful
|
|
57
|
+
* for functions that need to inspect their own metadata (e.g., for logging,
|
|
58
|
+
* conditional behavior based on load source).
|
|
59
|
+
*
|
|
60
|
+
* Stack trace structure:
|
|
61
|
+
* - Line 0: Error
|
|
62
|
+
* - Line 1: metadataAPI.self (this function)
|
|
63
|
+
* - Line 2: Current function (the one we want to identify)
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* // Function checking its own metadata
|
|
67
|
+
* import { metadataAPI } from "@cldmv/slothlet/runtime";
|
|
68
|
+
*
|
|
69
|
+
* export function smartFunction() {
|
|
70
|
+
* const meta = metadataAPI.self();
|
|
71
|
+
*
|
|
72
|
+
* if (meta?.environment === "development") {
|
|
73
|
+
* console.log("Running in development mode");
|
|
74
|
+
* }
|
|
75
|
+
*
|
|
76
|
+
* if (meta?.version) {
|
|
77
|
+
* console.log(`Function version: ${meta.version}`);
|
|
78
|
+
* }
|
|
79
|
+
*
|
|
80
|
+
* return "result";
|
|
81
|
+
* }
|
|
82
|
+
*/
|
|
83
|
+
function self(): object | null;
|
|
84
|
+
/**
|
|
85
|
+
* Get metadata of any function by API path.
|
|
86
|
+
*
|
|
87
|
+
* @function get
|
|
88
|
+
* @memberof metadataAPI
|
|
89
|
+
* @param {string} path - Dot-notation API path (e.g., "math.add", "plugins.helper")
|
|
90
|
+
* @param {object} [apiRoot] - Optional API root object (uses runtime.self if not provided)
|
|
91
|
+
* @returns {object|null} Function's metadata or null if not found
|
|
92
|
+
* @public
|
|
93
|
+
*
|
|
94
|
+
* @description
|
|
95
|
+
* Retrieves metadata for any function in the API tree by its path. Useful
|
|
96
|
+
* for checking metadata of functions you have references to, or for
|
|
97
|
+
* administrative/introspection purposes.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* // Check metadata of a specific function
|
|
101
|
+
* import { metadataAPI } from "@cldmv/slothlet/runtime";
|
|
102
|
+
*
|
|
103
|
+
* export function checkPermissions() {
|
|
104
|
+
* const pluginMeta = metadataAPI.get("plugins.userPlugin");
|
|
105
|
+
*
|
|
106
|
+
* if (!pluginMeta) {
|
|
107
|
+
* throw new Error("Plugin not found or has no metadata");
|
|
108
|
+
* }
|
|
109
|
+
*
|
|
110
|
+
* if (pluginMeta.trusted) {
|
|
111
|
+
* console.log("Plugin is trusted");
|
|
112
|
+
* } else {
|
|
113
|
+
* console.log("Plugin is untrusted");
|
|
114
|
+
* }
|
|
115
|
+
* }
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* // Iterate and check all plugins
|
|
119
|
+
* const pluginPaths = ["plugins.auth", "plugins.logger", "plugins.cache"];
|
|
120
|
+
* for (const path of pluginPaths) {
|
|
121
|
+
* const meta = metadataAPI.get(path);
|
|
122
|
+
* console.log(`${path}: ${meta?.version || "unknown"}`);
|
|
123
|
+
* }
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* // From outside slothlet context, pass API root explicitly
|
|
127
|
+
* const api = await slothlet({ dir: "./modules" });
|
|
128
|
+
* const meta = await metadataAPI.get("plugins.helper", api);
|
|
129
|
+
*/
|
|
130
|
+
function get(path: string, apiRoot?: object): object | null;
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=metadata-api.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata-api.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/metadata-api.mjs"],"names":[],"mappings":";IAmNC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2CG;IACH,mBAvCa,MAAM,GAAC,IAAI,CAgEvB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,iBA/Ba,MAAM,GAAC,IAAI,CAsDvB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACH,mBAzCW,MAAM,YACN,MAAM,GACJ,MAAM,GAAC,IAAI,CAsDvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multidefault.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/multidefault.mjs"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,yDAlBW,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAAC,WACrB,MAAM,YAEd;IAA0B,KAAK,GAAvB,OAAO;IACe,QAAQ,GAA9B,MAAM,GAAC,IAAI;CACnB,GAAU,OAAO,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yBAAyB,EAAE,OAAO,CAAC;IACnC,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,kBAAkB,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC,CAAC,CAAA;CACjE,CAAC,
|
|
1
|
+
{"version":3,"file":"multidefault.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/multidefault.mjs"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,yDAlBW,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAAC,WACrB,MAAM,YAEd;IAA0B,KAAK,GAAvB,OAAO;IACe,QAAQ,GAA9B,MAAM,GAAC,IAAI;CACnB,GAAU,OAAO,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yBAAyB,EAAE,OAAO,CAAC;IACnC,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,kBAAkB,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC,CAAC,CAAA;CACjE,CAAC,CAuGJ;AAED;;;;;;;;GAQG;AACH,0DALW,MAAM,GACJ,OAAO,CAWnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,4DAvBG;IAAyB,yBAAyB,EAA1C,OAAO;IACU,gBAAgB,EAAjC,OAAO;IACU,iBAAiB,EAAlC,OAAO;IACgB,UAAU,EAAjC,KAAK,CAAC,MAAM,CAAC;IACG,UAAU,EAA1B,MAAM;IACU,gBAAgB,EAAhC,MAAM;IACY,KAAK,GAAvB,OAAO;CACf,GAAU;IACR,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAA;CACf,CA4FH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-from-caller.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/resolve-from-caller.mjs"],"names":[],"mappings":"AAqFA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,6CAhCa,KAAK,CAAC,QAAQ,CAAC,CA0C3B;
|
|
1
|
+
{"version":3,"file":"resolve-from-caller.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/resolve-from-caller.mjs"],"names":[],"mappings":"AAqFA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,6CAhCa,KAAK,CAAC,QAAQ,CAAC,CA0C3B;AAsPD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,2CAzCW,MAAM,GACJ,MAAM,CAsDlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,0CA1CW,MAAM,GACJ,MAAM,CAuDlB;AAhaM,4BAvBI,GAAG,GACD,MAAM,GAAC,IAAI,CAsB+F;;iBAoazG,MAAY,MAAM,GAAC,SAAS;mBAC5B,MAAY,MAAM,GAAC,SAAS;qBAC5B,MAAY,MAAM,GAAC,SAAS;iBAC5B,MAAY,MAAM,GAAC,SAAS;mBAC5B,MAAY,MAAM,GAAC,SAAS;8BAC5B,MAAY,MAAM,GAAC,SAAS;qBAC5B,MAAY,MAAM,GAAC,SAAS;cAC5B,MAAY,OAAO,GAAC,SAAS;YAC7B,MAAY,OAAO,GAAC,SAAS;mBAC7B,MAAY,OAAO,GAAC,SAAS;gBAC7B,MAAY,OAAO,GAAC,SAAS;aAC7B,MAAY,OAAO,GAAC,SAAS;kBAC7B,MAAY,OAAO,GAAC,SAAS;qBAC7B,MAAY,MAAM,GAAC,SAAS"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slothlet_eager.d.mts","sourceRoot":"","sources":["../../../../dist/lib/modes/slothlet_eager.mjs"],"names":[],"mappings":"AA4IA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAsDH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,4BArBW,MAAM,aACN,MAAM,iBACN,MAAM,GACJ,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"slothlet_eager.d.mts","sourceRoot":"","sources":["../../../../dist/lib/modes/slothlet_eager.mjs"],"names":[],"mappings":"AA4IA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAsDH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,4BArBW,MAAM,aACN,MAAM,iBACN,MAAM,GACJ,OAAO,CAAC,MAAM,CAAC,CA4I3B"}
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,CAmKpC"}
|
|
@@ -60,6 +60,8 @@ export const context: object;
|
|
|
60
60
|
* console.log(reference); // Current reference data
|
|
61
61
|
*/
|
|
62
62
|
export const reference: object;
|
|
63
|
+
export { metadataAPI };
|
|
63
64
|
export type AsyncLocalStorageType = AsyncLocalStorage<any>;
|
|
65
|
+
import { metadataAPI } from "@cldmv/slothlet/helpers/metadata-api";
|
|
64
66
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
65
67
|
//# sourceMappingURL=runtime-asynclocalstorage.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-asynclocalstorage.d.mts","sourceRoot":"","sources":["../../../../dist/lib/runtime/runtime-asynclocalstorage.mjs"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime-asynclocalstorage.d.mts","sourceRoot":"","sources":["../../../../dist/lib/runtime/runtime-asynclocalstorage.mjs"],"names":[],"mappings":"AAwCA;;;;;GAKG;AACH,wBAHU,qBAAqB,CAGkB;AAEjD;;;;;GAKG;AACH,yBAHU,qBAAqB,CAGmB;AAsB3C,gCAdI,MAAM,yBAEN,GAAG,gBAED,GAAG,CAwGf;AAiBM,0BAZM,MAAM,GAAC,IAAI,CAY0B;AAkN3C,iCAjBI,MAAM,YAiJhB;AA2TD;;;;;;;;;;;;;GAaG;AACH,mBATU,WAAS,MAAM,CAS6B;AAEtD;;;;;;;;;;;;;GAaG;AACH,sBATU,MAAM,CAS4C;AAE5D;;;;;;;;;;;;;GAaG;AACH,wBATU,MAAM,CASgD;;;4BAl1BpC,sCAAsC;kCAHhC,kBAAkB"}
|
|
@@ -63,5 +63,7 @@ export namespace contextManager {
|
|
|
63
63
|
export { setContext as set };
|
|
64
64
|
export { runWithCtx };
|
|
65
65
|
}
|
|
66
|
+
export { metadataAPI };
|
|
66
67
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
68
|
+
import { metadataAPI } from "@cldmv/slothlet/helpers/metadata-api";
|
|
67
69
|
//# sourceMappingURL=runtime-livebindings.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-livebindings.d.mts","sourceRoot":"","sources":["../../../../dist/lib/runtime/runtime-livebindings.mjs"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime-livebindings.d.mts","sourceRoot":"","sources":["../../../../dist/lib/runtime/runtime-livebindings.mjs"],"names":[],"mappings":"AAgTA;;;;;;;;;GASG;AACH,gCANW,MAAM,yBAEN,GAAG,gBAED,GAAG,CAoFf;AAED;;;;;;GAMG;AACH,iCAHW,MAAM,YAiEhB;AAID;;;GAGG;AAEH,kCAEC;AAED,kDASC;AA/bD;;;;;GAKG;AACH,gDAAkD;AA8ClD;;;;;GAKG;AACH,mBAHU,MAAM,CAmDd;AAEF;;;;;GAKG;AACH,sBAHU,MAAM,CA0Dd;AAEF;;;;;GAKG;AACH,wBAHU,MAAM,CA+Cd;AAEF;;;;;GAKG;AACH,yBAHU,MAAM,CAkCd;;;;;;;kCA7QgC,kBAAkB;4BAOxB,sCAAsC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.mts","sourceRoot":"","sources":["../../../../dist/lib/runtime/runtime.mjs"],"names":[],"mappings":"AAoMA,4EAGC;AAED,gDAGC;AAED,8BAGC;AArKA,6BAA+B;AAkDhC,yBAiDE;AAEF,2BAiDE;AAiBF,6BAOK;AAEL,4BAAuD"}
|
|
1
|
+
{"version":3,"file":"runtime.d.mts","sourceRoot":"","sources":["../../../../dist/lib/runtime/runtime.mjs"],"names":[],"mappings":"AAoMA,4EAGC;AAED,gDAGC;AAED,8BAGC;AArKA,6BAA+B;AAkDhC,yBAiDE;AAEF,2BAiDE;AAiBF,6BAOK;AAEL,4BAAuD;AAGvD,6BAQE"}
|
|
@@ -88,6 +88,14 @@ export type SlothletOptions = {
|
|
|
88
88
|
* - Applies to both function and object overwrites at the final key of the API path
|
|
89
89
|
*/
|
|
90
90
|
allowApiOverwrite?: boolean;
|
|
91
|
+
/**
|
|
92
|
+
* - Enable module-based API ownership tracking for selective overwrites:
|
|
93
|
+
* - `true`: Track which modules register APIs, enable forceOverwrite with moduleId validation
|
|
94
|
+
* - `false`: Disable ownership tracking (default, no performance overhead)
|
|
95
|
+
* - When enabled, supports hot-reloading scenarios where modules can selectively overwrite only their own APIs
|
|
96
|
+
* - Requires moduleId parameter in addApi options when using forceOverwrite capability
|
|
97
|
+
*/
|
|
98
|
+
enableModuleOwnership?: boolean;
|
|
91
99
|
/**
|
|
92
100
|
* - Context data object injected into live-binding `context` reference.
|
|
93
101
|
* - Available to all loaded modules via `import { context } from "@cldmv/slothlet/runtime"`. Useful for request data,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slothlet.d.mts","sourceRoot":"","sources":["../../dist/slothlet.mjs"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slothlet.d.mts","sourceRoot":"","sources":["../../dist/slothlet.mjs"],"names":[],"mappings":"AA+LA;;;;;;;GAOG;AACH,mBAJU,MAAM,CAIO;AAEvB;;;;;GAKG;AACH,sBAJU,MAAM,CAIU;AAE1B;;;;;GAKG;AACH,wBAJU,MAAM,CAIY;;;;;;;;;UAqtCd,MAAM;;;;;;WAIN,OAAO;;;;;;;;WAGP,MAAM;;;;;;;;aAKN,MAAM;;;;;;;cAKN,MAAM;;;;;;;eAIN,MAAM;;;;;;;;YAIN,OAAO;;;;;;;eAKP,MAAM;;;;;;;wBAIN,OAAO;;;;;;;;4BAIP,OAAO;;;;;;cAKP,MAAM;;;;;;gBAGN,MAAM;;;;;;eAMjB;QAA8B,UAAU,GAA7B,OAAO;QACY,gBAAgB,GAAnC,OAAO;QACY,gBAAgB,GAAnC,OAAO;QACW,KAAK,GAClC;YAAqC,KAAK,GAA/B,MAAM,EAAE;YACkB,gBAAgB,GAA1C,MAAM,EAAE;YACkB,KAAK,GAA/B,MAAM,EAAE;YACkB,KAAK,GAA/B,MAAM,EAAE;SACrB;KAAA;;;;;;cAIa,MAAM,OAAO,CAAC,IAAI,CAAC;;;;YACnB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;;;;cACtD,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,MAAM,GAAC,MAAM,CAAC,EAAE,GAAC,MAAM,GAAC,OAAO,CAAC,MAAM,CAAC,CAAC;;AArxC/E;;;;;;;;GAQG;AACH,mCAJW,eAAe,GACb,OAAO,CAAC,WAAW,CAAC,CAiChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../index.mjs"],"names":[],"mappings":"AA2CA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,2CAlBG;IAAyB,GAAG,GAApB,MAAM;IACY,IAAI,GAAtB,OAAO;IACU,IAAI,GAArB,MAAM;IACW,MAAM,GAAvB,MAAM;IACW,QAAQ,GAAzB,MAAM;IACY,KAAK,GAAvB,OAAO;IACU,QAAQ,GAAzB,MAAM;IACY,iBAAiB,GAAnC,OAAO;IACU,OAAO,GAAxB,MAAM;IACW,SAAS,GAA1B,MAAM;CACd,GAAU,OAAO,CAAC,OAAO,oBAAoB,EAAE,WAAW,CAAC,CAiC7D"}
|