@cldmv/slothlet 3.2.1 → 3.3.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/README.md +24 -10
- package/dist/lib/builders/api_builder.mjs +233 -3
- package/dist/lib/handlers/api-manager.mjs +23 -0
- package/dist/lib/handlers/context-async.mjs +4 -0
- package/dist/lib/handlers/context-live.mjs +5 -0
- package/dist/lib/handlers/hook-manager.mjs +5 -111
- package/dist/lib/handlers/permission-manager.mjs +408 -0
- package/dist/lib/handlers/unified-wrapper.mjs +90 -22
- package/dist/lib/handlers/version-manager.mjs +77 -4
- package/dist/lib/helpers/config.mjs +91 -7
- package/dist/lib/helpers/pattern-matcher.mjs +141 -0
- package/dist/lib/i18n/languages/de-de.json +21 -1
- package/dist/lib/i18n/languages/en-gb.json +21 -1
- package/dist/lib/i18n/languages/en-us.json +21 -1
- package/dist/lib/i18n/languages/es-mx.json +21 -1
- package/dist/lib/i18n/languages/fr-fr.json +21 -1
- package/dist/lib/i18n/languages/hi-in.json +21 -1
- package/dist/lib/i18n/languages/ja-jp.json +21 -1
- package/dist/lib/i18n/languages/ko-kr.json +21 -1
- package/dist/lib/i18n/languages/pt-br.json +21 -1
- package/dist/lib/i18n/languages/ru-ru.json +21 -1
- package/dist/lib/i18n/languages/zh-cn.json +21 -1
- package/dist/slothlet.mjs +11 -2
- package/package.json +4 -1
- package/types/dist/lib/builders/api_builder.d.mts.map +1 -1
- package/types/dist/lib/handlers/api-manager.d.mts.map +1 -1
- package/types/dist/lib/handlers/context-async.d.mts.map +1 -1
- package/types/dist/lib/handlers/context-live.d.mts.map +1 -1
- package/types/dist/lib/handlers/hook-manager.d.mts.map +1 -1
- package/types/dist/lib/handlers/permission-manager.d.mts +151 -0
- package/types/dist/lib/handlers/permission-manager.d.mts.map +1 -0
- package/types/dist/lib/handlers/unified-wrapper.d.mts.map +1 -1
- package/types/dist/lib/handlers/version-manager.d.mts.map +1 -1
- package/types/dist/lib/helpers/config.d.mts +16 -0
- package/types/dist/lib/helpers/config.d.mts.map +1 -1
- package/types/dist/lib/helpers/pattern-matcher.d.mts +44 -0
- package/types/dist/lib/helpers/pattern-matcher.d.mts.map +1 -0
- package/types/dist/slothlet.d.mts.map +1 -1
|
@@ -381,7 +381,27 @@
|
|
|
381
381
|
"DEBUG_VERSION_RESOLVED": "已解析版本:{version},路径:{apiPath}(调用方:{callerModule})",
|
|
382
382
|
"DEBUG_VERSION_DEFAULT_USED": "路径 {apiPath} 无匹配判别器;使用默认版本 {version}。",
|
|
383
383
|
"DEBUG_VERSION_REGISTERED": "版本 {version} 已在 {logicalPath} 注册(moduleID:{moduleID})",
|
|
384
|
-
"DEBUG_VERSION_UNREGISTERED": "版本 {version} 已从 {logicalPath} 注销"
|
|
384
|
+
"DEBUG_VERSION_UNREGISTERED": "版本 {version} 已从 {logicalPath} 注销",
|
|
385
|
+
|
|
386
|
+
"PERMISSION_DENIED": "访问被拒绝:调用方 '{caller}' 无权访问 '{target}'",
|
|
387
|
+
"HINT_PERMISSION_DENIED": "请检查此调用方/目标对的权限规则。使用 api.slothlet.permissions.global.rulesForPath('{target}') 检查活动规则。",
|
|
388
|
+
"PERMISSION_SELF_MODIFY": "模块 '{moduleID}' 无法移除自身的权限规则 '{ruleId}'",
|
|
389
|
+
"HINT_PERMISSION_SELF_MODIFY": "权限规则对所属模块是不可变的。必须由另一个模块移除此规则。",
|
|
390
|
+
"INVALID_PERMISSION_RULE": "无效的权限规则:{reason}(收到:{received})",
|
|
391
|
+
"HINT_INVALID_PERMISSION_RULE": "权限规则要求:caller(string glob)、target(string glob)和 effect('allow' 或 'deny')。",
|
|
392
|
+
"DEBUG_PERMISSION_DENIED": "权限被拒绝:调用方 '{caller}' -> 目标 '{target}'",
|
|
393
|
+
"DEBUG_PERMISSION_ALLOWED": "权限已允许:调用方 '{caller}' -> 目标 '{target}'",
|
|
394
|
+
"DEBUG_PERMISSION_SELF_BYPASS": "权限自绕过:调用方和目标共享 moduleID '{moduleID}'",
|
|
395
|
+
"DEBUG_PERMISSION_DEFAULT": "默认权限策略已应用:调用方 '{caller}' -> 目标 '{target}' -> {effect}",
|
|
396
|
+
"DEBUG_PERMISSION_RULE_ADDED": "权限规则已添加:{ruleId}({caller} -> {target}:{effect},所有者:{ownerModuleID})",
|
|
397
|
+
"DEBUG_PERMISSION_RULE_REMOVED": "权限规则已移除:{ruleId}({caller} -> {target}:{effect})",
|
|
398
|
+
"PERM_RULE_NOT_OBJECT": "规则必须是非空对象",
|
|
399
|
+
"PERM_RULE_CALLER_REQUIRED": "rule.caller 必须是非空字符串",
|
|
400
|
+
"PERM_RULE_TARGET_REQUIRED": "rule.target 必须是非空字符串",
|
|
401
|
+
"PERM_RULE_EFFECT_INVALID": "rule.effect 必须是 'allow' 或 'deny'",
|
|
402
|
+
"BRACE_EXPANSION_MAX_DEPTH": "花括号展开超过了最大深度 {maxDepth}",
|
|
403
|
+
"HINT_BRACE_EXPANSION_MAX_DEPTH": "减少括号模式中的嵌套层数或增加 maxDepth 选项。",
|
|
404
|
+
"PERMISSION_MANAGER_NOT_AVAILABLE": "权限管理器在此 Slothlet 实例中不可用"
|
|
385
405
|
},
|
|
386
406
|
"metadata": {
|
|
387
407
|
"code": "zh-cn",
|
package/dist/slothlet.mjs
CHANGED
|
@@ -600,8 +600,6 @@ class Slothlet {
|
|
|
600
600
|
moduleID: `replay_${this.helpers.utilities.generateId().substring(0, 8)}`,
|
|
601
601
|
versionConfig: operation.versionConfig || null
|
|
602
602
|
});
|
|
603
|
-
|
|
604
|
-
|
|
605
603
|
} else if (operation.type === "remove") {
|
|
606
604
|
|
|
607
605
|
|
|
@@ -614,6 +612,14 @@ class Slothlet {
|
|
|
614
612
|
const rootSegment = operation.apiPath.split(".")[0];
|
|
615
613
|
this.handlers.metadata.removeUserMetadataByApiPath(rootSegment);
|
|
616
614
|
}
|
|
615
|
+
} else if (operation.type === "addPermissionRule") {
|
|
616
|
+
if (this.handlers.permissionManager) {
|
|
617
|
+
this.handlers.permissionManager.addRule(operation.rule, operation.ownerModuleID, operation.ruleId);
|
|
618
|
+
}
|
|
619
|
+
} else if (operation.type === "removePermissionRule") {
|
|
620
|
+
if (this.handlers.permissionManager) {
|
|
621
|
+
this.handlers.permissionManager.removeRule(operation.ruleId, operation.callerModuleID);
|
|
622
|
+
}
|
|
617
623
|
}
|
|
618
624
|
}
|
|
619
625
|
|
|
@@ -753,6 +759,9 @@ class Slothlet {
|
|
|
753
759
|
this.handlers.versionManager?.shutdown();
|
|
754
760
|
|
|
755
761
|
|
|
762
|
+
await this.handlers.permissionManager?.shutdown();
|
|
763
|
+
|
|
764
|
+
|
|
756
765
|
|
|
757
766
|
this.isLoaded = false;
|
|
758
767
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cldmv/slothlet",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
4
4
|
"moduleVersions": {
|
|
5
5
|
"lazy": "3.0.0",
|
|
6
6
|
"eager": "3.0.0",
|
|
@@ -126,6 +126,7 @@
|
|
|
126
126
|
"baseline": "npm run vitest -- --baseline",
|
|
127
127
|
"coverage": "npm run vitest -- --coverage-quiet",
|
|
128
128
|
"ci:coverage": "npm run coverage",
|
|
129
|
+
"coverage:analyze": "node tools/coverage/analyze-coverage.mjs",
|
|
129
130
|
"test": "npm run test:pre-build",
|
|
130
131
|
"test:pre-build": "node tests/test-conditional.mjs",
|
|
131
132
|
"test:post-build": "npm run test:types",
|
|
@@ -269,11 +270,13 @@
|
|
|
269
270
|
"@html-eslint/parser": "^0.45.0",
|
|
270
271
|
"@types/node": "^24.9.1",
|
|
271
272
|
"@vitest/coverage-v8": "^4.0.18",
|
|
273
|
+
"acorn": "^8.16.0",
|
|
272
274
|
"chalk": "^5.6.0",
|
|
273
275
|
"chokidar": "^5.0.0",
|
|
274
276
|
"dmd": "^7.1.1",
|
|
275
277
|
"esbuild": "^0.27.3",
|
|
276
278
|
"eslint": "^10.0.2",
|
|
279
|
+
"estree-walker": "^3.0.3",
|
|
277
280
|
"globals": "^17.4.0",
|
|
278
281
|
"jsdoc": "^4.0.4",
|
|
279
282
|
"jsdoc-to-markdown": "^9.1.2",
|
|
@@ -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,
|
|
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,gCA0iDC;IAED;;;;OAIG;IACH,+BAYC;IAED;;;;OAIG;IACH,0BAgCC;IAED;;;;OAIG;IACH,4BAoMC;IAED;;;;;OAKG;IACH,8BAyCC;IAED;;;;;OAKG;IACH,uBAgCC;CACD;;;;;;;;;;;;;;;;;;;;;;;;;;8BAtkE6B,0CAA0C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-manager.d.mts","sourceRoot":"","sources":["../../../../dist/lib/handlers/api-manager.mjs"],"names":[],"mappings":"AAmDA;;;;;;;;;;;;;;GAcG;AACH;IACC,gCAAuC;IAgBtC;;;;MAMC;IAGF;;;;;;;;;;;;;;;;;;OAkBG;IACH,yBAuFC;IAED;;;;;;;;;;;;;;OAcG;IACH,oBA+BC;IAED;;;;;;;;;;;;;;OAcG;IACH,0BA4BC;IAED;;;;;;;;;;;;OAYG;IACH,6BAIC;IAED;;;;;;;;;;;;OAYG;IACH,uBASC;IAED;;;;;;;;;;;;;OAaG;IACH,yBAkCC;IAED;;;;;;;;;;;;;OAaG;IACH,uBAEC;IAED;;;;;;;;;;;;;;OAcG;IACH,oBAmNC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,uBAkGC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,uBA8GC;IAED;;;;;;;;;;;;OAYG;IACH,mBAmGC;IACD;;;;;;;;;;;;OAYG;IACH,uBAwEC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACH,wBA3CG;QAAuB,OAAO,EAAtB,MAAM;QACkB,UAAU,EAAlC,MAAM,GAAC,MAAM,EAAE;QACkB,OAAO,GAAxC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;KAC/B,GAAU,OAAO,CAAC,MAAM,GAAC,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"api-manager.d.mts","sourceRoot":"","sources":["../../../../dist/lib/handlers/api-manager.mjs"],"names":[],"mappings":"AAmDA;;;;;;;;;;;;;;GAcG;AACH;IACC,gCAAuC;IAgBtC;;;;MAMC;IAGF;;;;;;;;;;;;;;;;;;OAkBG;IACH,yBAuFC;IAED;;;;;;;;;;;;;;OAcG;IACH,oBA+BC;IAED;;;;;;;;;;;;;;OAcG;IACH,0BA4BC;IAED;;;;;;;;;;;;OAYG;IACH,6BAIC;IAED;;;;;;;;;;;;OAYG;IACH,uBASC;IAED;;;;;;;;;;;;;OAaG;IACH,yBAkCC;IAED;;;;;;;;;;;;;OAaG;IACH,uBAEC;IAED;;;;;;;;;;;;;;OAcG;IACH,oBAmNC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,uBAkGC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,uBA8GC;IAED;;;;;;;;;;;;OAYG;IACH,mBAmGC;IACD;;;;;;;;;;;;OAYG;IACH,uBAwEC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACH,wBA3CG;QAAuB,OAAO,EAAtB,MAAM;QACkB,UAAU,EAAlC,MAAM,GAAC,MAAM,EAAE;QACkB,OAAO,GAAxC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;KAC/B,GAAU,OAAO,CAAC,MAAM,GAAC,MAAM,EAAE,CAAC,CAwkBpC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,yEATG;QAAqB,QAAQ,EAArB,MAAM;QACO,aAAa,EAA1B,MAAM;QACO,cAAc,EAA3B,MAAM;KACd,GAAU,OAAO,CAAC,IAAI,CAAC,CAuCzB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,mCAfW,MAAM,iBACJ,OAAO,CAAC,IAAI,CAAC,CA2ZzB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,2BAdG;QAAwB,OAAO,EAAtB,MAAM,OAAA;QACS,QAAQ,EAAvB,MAAM,OAAA;KACf,GAAU,OAAO,CAAC,IAAI,CAAC,CAuCzB;IAED;;;;;;;;;;OAUG;IACH,0BAsEC;IAED;;;;;;;;;;;;;;OAcG;IACH,yBAsFC;IAED;;;;;;;;;;;;;OAaG;IACH,4BA0FC;IAED;;;;;;;;OAQG;IACH,iCAuDC;IAED;;;;;OAKG;IACH,iCAeC;IAED;;;;;;;;;;;;;OAaG;IACH,wBAwVC;CACD;8BA90F6B,0CAA0C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-async.d.mts","sourceRoot":"","sources":["../../../../dist/lib/handlers/context-async.mjs"],"names":[],"mappings":"AAuBA;;;;GAIG;AACH;IAEE,4BAAkC;IAClC,yBAA0B;IAG3B;;;;OAIG;IACH,kDAKC;IAED;;;;;;OAMG;IACH,8BALW,MAAM,qBAoBhB;IAED;;;;;;;;;OASG;IACH,gCARW,MAAM,yBAEN,GAAC,sCAGC,GAAC,
|
|
1
|
+
{"version":3,"file":"context-async.d.mts","sourceRoot":"","sources":["../../../../dist/lib/handlers/context-async.mjs"],"names":[],"mappings":"AAuBA;;;;GAIG;AACH;IAEE,4BAAkC;IAClC,yBAA0B;IAG3B;;;;OAIG;IACH,kDAKC;IAED;;;;;;OAMG;IACH,8BALW,MAAM,qBAoBhB;IAED;;;;;;;;;OASG;IACH,gCARW,MAAM,yBAEN,GAAC,sCAGC,GAAC,CAgFb;IAED;;;;;OAKG;IACH,yBAMC;IAED;;;;OAIG;IACH,wBAHa,MAAO,SAAS,CAK5B;IAED;;;;OAIG;IACH,2BAHW,MAAM,QAoBhB;IAED;;;;OAIG;IACH,6BAWC;CACD;AAED;;;GAGG;AACH,sDAA6D;kCAnN3B,kBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-live.d.mts","sourceRoot":"","sources":["../../../../dist/lib/handlers/context-live.mjs"],"names":[],"mappings":"AAqBA;;;;GAIG;AACH;IAEE,yBAA0B;IAC1B,uBAA6B;IAG9B;;;;OAIG;IACH,kDAIC;IAED;;;;;;OAMG;IACH,8BALW,MAAM,qBA0BhB;IAED;;;;;;;;;OASG;IACH,gCARW,MAAM,yBAEN,GAAC,sCAGC,GAAC,
|
|
1
|
+
{"version":3,"file":"context-live.d.mts","sourceRoot":"","sources":["../../../../dist/lib/handlers/context-live.mjs"],"names":[],"mappings":"AAqBA;;;;GAIG;AACH;IAEE,yBAA0B;IAC1B,uBAA6B;IAG9B;;;;OAIG;IACH,kDAIC;IAED;;;;;;OAMG;IACH,8BALW,MAAM,qBA0BhB;IAED;;;;;;;;;OASG;IACH,gCARW,MAAM,yBAEN,GAAC,sCAGC,GAAC,CAyDb;IAED;;;;;OAKG;IACH,yBAmBC;IAED;;;;OAIG;IACH,wBAHa,MAAO,SAAS,CAQ5B;IAED;;;;OAIG;IACH,2BAHW,MAAM,QAyBhB;IAED;;;;OAIG;IACH,6BAWC;CACD;AAED;;;GAGG;AACH,oDAA2D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-manager.d.mts","sourceRoot":"","sources":["../../../../dist/lib/handlers/hook-manager.mjs"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hook-manager.d.mts","sourceRoot":"","sources":["../../../../dist/lib/handlers/hook-manager.mjs"],"names":[],"mappings":"AAmCA;;;;;;GAMG;AACH;IACC;;;;OAIG;IACH,yBAHU,MAAM,CAGwB;IAoDvC,aAAiC;IACjC,oBAAgD;IAChD,oBAAwD;IACxD,0BAAgC;IAChC,6BAAgC;IAEhC,qBAAsB;IACtB,0BAA0B;IAC1B,gCAAmC;IAGpC;;;;;;;;;;;;;;;;;OAiBG;IACH,uBAfW,MAAM,+BAGd;QAAyB,EAAE,GAAnB,MAAM;QACW,QAAQ,GAAzB,MAAM;QACW,MAAM,GAAvB,MAAM;KACd,GAAU,MAAM,CA+ElB;IAED;;;;;;;;;OASG;IACH,uBANG;QAAwB,EAAE,GAAlB,MAAM;QACU,IAAI,GAApB,MAAM;QACU,OAAO,GAAvB,MAAM;KACd,GAAU,MAAM,CA8ClB;IAED;;;;;;;;;OASG;IACH,uBAPW,MAAM,GAAC,MAAM,GAIX,MAAM,CAalB;IAED;;;;;;;;;OASG;IACH,wBAPW,MAAM,GAAC,MAAM,GAIX,MAAM,CAclB;IAED;;;;;;;;;;OAUG;IACH,qBARW,MAAM,GAAC,MAAM,GAKX,MAAM,CA8DlB;IAED;;;;;;;;OAQG;IACH,6BALW,MAAM,WACN,MAAM,GACJ,KAAK,CAAC,MAAM,CAAC,CAqDzB;IAED;;;;;;;;;OASG;IACH,gCAPW,MAAM,oBAEN,MAAM,OACN,MAAM,GACJ,MAAM,CA6ClB;IAED;;;;;;;;;;OAUG;IACH,+BARW,MAAM,UACN,GAAC,oBAED,MAAM,OACN,MAAM,GACJ,mBAAmB,CA+C/B;IAED;;;;;;;;;;;OAWG;IACH,gCATW,MAAM,8BAEN,GAAC,YACD,OAAO,UACP,KAAK,CAAC,KAAK,CAAC,OACZ,MAAM,OACN,MAAM,QA8BhB;IAED;;;;;;;;;;OAUG;IACH,+BARW,MAAM,SACN,KAAK,UACL,MAAM,oBAEN,MAAM,OACN,MAAM,QA4BhB;IAuDD;;;;;;OAMG;IACH,4CAEC;IA6ID;;;;;;OAMG;IACH,sBAHa,KAAK,CAAC,MAAM,CAAC,CAkBzB;IAED;;;;;;;OAOG;IACH,kCAJW,KAAK,CAAC,MAAM,CAAC,GACX,IAAI,CAWhB;IAED;;;OAGG;IACH,iCAUC;;CACD;;;;;;;;cA31Ba,OAAO;;;;aACP,GAAC;;8BAPe,0CAA0C"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manages access control rules for API path invocations.
|
|
3
|
+
* Rules are glob-pattern-based (same syntax as hooks: *, **, ?, {a,b}, !negation).
|
|
4
|
+
* Self-calls (same moduleID) always bypass the permission system.
|
|
5
|
+
*
|
|
6
|
+
* @class PermissionManager
|
|
7
|
+
* @extends ComponentBase
|
|
8
|
+
*/
|
|
9
|
+
export class PermissionManager extends ComponentBase {
|
|
10
|
+
/**
|
|
11
|
+
* Property name for auto-discovery by _initializeComponents.
|
|
12
|
+
* @type {string}
|
|
13
|
+
* @static
|
|
14
|
+
*/
|
|
15
|
+
static slothletProperty: string;
|
|
16
|
+
/**
|
|
17
|
+
* Add a permission rule.
|
|
18
|
+
*
|
|
19
|
+
* @param {object} rule - The rule definition.
|
|
20
|
+
* @param {string} rule.caller - Glob pattern matching caller API paths.
|
|
21
|
+
* @param {string} rule.target - Glob pattern matching target API paths.
|
|
22
|
+
* @param {string} rule.effect - "allow" or "deny".
|
|
23
|
+
* @param {string|null} [ownerModuleID=null] - Module ID that owns this rule.
|
|
24
|
+
* @param {string|null} [ruleId=null] - Optional rule ID to reuse (for replay).
|
|
25
|
+
* @returns {string} The rule ID (generated or reused).
|
|
26
|
+
* @throws {SlothletError} INVALID_PERMISSION_RULE if rule is malformed.
|
|
27
|
+
* @example
|
|
28
|
+
* pm.addRule({ caller: "payments.**", target: "db.write", effect: "allow" }, "mod_abc123");
|
|
29
|
+
*/
|
|
30
|
+
addRule(rule: {
|
|
31
|
+
caller: string;
|
|
32
|
+
target: string;
|
|
33
|
+
effect: string;
|
|
34
|
+
}, ownerModuleID?: string | null, ruleId?: string | null): string;
|
|
35
|
+
/**
|
|
36
|
+
* Remove a permission rule by ID.
|
|
37
|
+
* A module cannot remove rules it owns (immutability).
|
|
38
|
+
*
|
|
39
|
+
* @param {string} ruleId - The rule ID to remove.
|
|
40
|
+
* @param {string|null} [callerModuleID=null] - Module ID of the caller attempting removal.
|
|
41
|
+
* @returns {boolean} True if the rule was removed.
|
|
42
|
+
* @throws {SlothletError} PERMISSION_SELF_MODIFY if caller owns the rule.
|
|
43
|
+
* @example
|
|
44
|
+
* pm.removeRule("perm-3", "mod_other");
|
|
45
|
+
*/
|
|
46
|
+
removeRule(ruleId: string, callerModuleID?: string | null): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Check whether a caller path is allowed to access a target path.
|
|
49
|
+
* This is the main enforcement method called from applyTrap.
|
|
50
|
+
*
|
|
51
|
+
* @param {string} callerPath - The calling module's API path.
|
|
52
|
+
* @param {string} targetPath - The target API path being accessed.
|
|
53
|
+
* @param {string|null} [callerFilePath=null] - Caller's source file path (for self-call bypass).
|
|
54
|
+
* @param {string|null} [targetFilePath=null] - Target's source file path (for self-call bypass).
|
|
55
|
+
* @returns {boolean} True if access is allowed.
|
|
56
|
+
* @example
|
|
57
|
+
* const allowed = pm.checkAccess("payments.charge", "db.write", "/src/pay.mjs", "/src/db.mjs");
|
|
58
|
+
*/
|
|
59
|
+
checkAccess(callerPath: string, targetPath: string, callerFilePath?: string | null, targetFilePath?: string | null): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Get all rules that match a given target path.
|
|
62
|
+
*
|
|
63
|
+
* @param {string} targetPath - Target API path to check.
|
|
64
|
+
* @returns {Array<object>} Array of matching rule objects (serialized).
|
|
65
|
+
* @example
|
|
66
|
+
* const rules = pm.getRulesForPath("db.write");
|
|
67
|
+
*/
|
|
68
|
+
getRulesForPath(targetPath: string): Array<object>;
|
|
69
|
+
/**
|
|
70
|
+
* Get all rules owned by a given module.
|
|
71
|
+
*
|
|
72
|
+
* @param {string} moduleID - Module ID to look up.
|
|
73
|
+
* @returns {Array<object>} Array of rule objects (serialized).
|
|
74
|
+
* @example
|
|
75
|
+
* const rules = pm.getRulesByModule("mod_abc123");
|
|
76
|
+
*/
|
|
77
|
+
getRulesByModule(moduleID: string): Array<object>;
|
|
78
|
+
/**
|
|
79
|
+
* Get all rules where the caller pattern matches a given caller path.
|
|
80
|
+
* Used by `self.rules()` to show what rules affect the calling module.
|
|
81
|
+
*
|
|
82
|
+
* @param {string} callerPath - Caller API path.
|
|
83
|
+
* @returns {Array<object>} Array of matching rule objects (serialized).
|
|
84
|
+
* @example
|
|
85
|
+
* const rules = pm.getRulesForCaller("payments.charge");
|
|
86
|
+
*/
|
|
87
|
+
getRulesForCaller(callerPath: string): Array<object>;
|
|
88
|
+
/**
|
|
89
|
+
* Enable the permission system globally.
|
|
90
|
+
*
|
|
91
|
+
* @returns {void}
|
|
92
|
+
* @example
|
|
93
|
+
* pm.enable();
|
|
94
|
+
*/
|
|
95
|
+
enable(): void;
|
|
96
|
+
/**
|
|
97
|
+
* Disable the permission system globally (all calls allowed).
|
|
98
|
+
*
|
|
99
|
+
* @returns {void}
|
|
100
|
+
* @example
|
|
101
|
+
* pm.disable();
|
|
102
|
+
*/
|
|
103
|
+
disable(): void;
|
|
104
|
+
/**
|
|
105
|
+
* Whether the permission system is currently enabled.
|
|
106
|
+
*
|
|
107
|
+
* @returns {boolean} True if enabled.
|
|
108
|
+
* @example
|
|
109
|
+
* if (pm.isEnabled()) { ... }
|
|
110
|
+
*/
|
|
111
|
+
isEnabled(): boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Export all registered rules for replay during full reload.
|
|
114
|
+
*
|
|
115
|
+
* @returns {Array<object>} Snapshot of all current rules.
|
|
116
|
+
* @example
|
|
117
|
+
* const snapshot = pm.exportRules();
|
|
118
|
+
*/
|
|
119
|
+
exportRules(): Array<object>;
|
|
120
|
+
/**
|
|
121
|
+
* Re-register rules exported by {@link exportRules}.
|
|
122
|
+
* Called after a full reload to restore programmatic rules.
|
|
123
|
+
*
|
|
124
|
+
* @param {Array<object>} registrations - Snapshot returned by exportRules().
|
|
125
|
+
* @returns {void}
|
|
126
|
+
* @example
|
|
127
|
+
* pm.importRules(snapshot);
|
|
128
|
+
*/
|
|
129
|
+
importRules(registrations: Array<object>): void;
|
|
130
|
+
/**
|
|
131
|
+
* Cleanup permission manager on shutdown.
|
|
132
|
+
* Clears all internal state.
|
|
133
|
+
*
|
|
134
|
+
* @returns {Promise<void>}
|
|
135
|
+
* @example
|
|
136
|
+
* await pm.shutdown();
|
|
137
|
+
*/
|
|
138
|
+
shutdown(): Promise<void>;
|
|
139
|
+
/**
|
|
140
|
+
* Emit a debug message. Delegates to slothlet.debug().
|
|
141
|
+
*
|
|
142
|
+
* @param {string} category - Debug category.
|
|
143
|
+
* @param {object} data - Debug data.
|
|
144
|
+
* @returns {void}
|
|
145
|
+
* @private
|
|
146
|
+
*/
|
|
147
|
+
private debug;
|
|
148
|
+
#private;
|
|
149
|
+
}
|
|
150
|
+
import { ComponentBase } from "@cldmv/slothlet/factories/component-base";
|
|
151
|
+
//# sourceMappingURL=permission-manager.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission-manager.d.mts","sourceRoot":"","sources":["../../../../dist/lib/handlers/permission-manager.mjs"],"names":[],"mappings":"AAgCA;;;;;;;GAOG;AACH;IACC;;;;OAIG;IACH,yBAHU,MAAM,CAG8B;IA8E9C;;;;;;;;;;;;;OAaG;IACH,cAVG;QAAqB,MAAM,EAAnB,MAAM;QACO,MAAM,EAAnB,MAAM;QACO,MAAM,EAAnB,MAAM;KACd,kBAAQ,MAAM,GAAC,IAAI,WACX,MAAM,GAAC,IAAI,GACT,MAAM,CA+BlB;IAED;;;;;;;;;;OAUG;IACH,mBAPW,MAAM,mBACN,MAAM,GAAC,IAAI,GACT,OAAO,CAiCnB;IAED;;;;;;;;;;;OAWG;IACH,wBARW,MAAM,cACN,MAAM,mBACN,MAAM,GAAC,IAAI,mBACX,MAAM,GAAC,IAAI,GACT,OAAO,CAqCnB;IAED;;;;;;;OAOG;IACH,4BALW,MAAM,GACJ,KAAK,CAAC,MAAM,CAAC,CAazB;IAED;;;;;;;OAOG;IACH,2BALW,MAAM,GACJ,KAAK,CAAC,MAAM,CAAC,CAYzB;IAED;;;;;;;;OAQG;IACH,8BALW,MAAM,GACJ,KAAK,CAAC,MAAM,CAAC,CAazB;IAED;;;;;;OAMG;IACH,UAJa,IAAI,CAOhB;IAED;;;;;;OAMG;IACH,WAJa,IAAI,CAOhB;IAED;;;;;;OAMG;IACH,aAJa,OAAO,CAMnB;IAED;;;;;;OAMG;IAIH,eAPa,KAAK,CAAC,MAAM,CAAC,CAgBzB;IAED;;;;;;;;OAQG;IACH,2BALW,KAAK,CAAC,MAAM,CAAC,GACX,IAAI,CAShB;IAGD;;;;;;;OAOG;IACH,YAJa,OAAO,CAAC,IAAI,CAAC,CAWzB;IA8MD;;;;;;;OAOG;IACH,cAEC;;CACD;8BAllB6B,0CAA0C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unified-wrapper.d.mts","sourceRoot":"","sources":["../../../../dist/lib/handlers/unified-wrapper.mjs"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"unified-wrapper.d.mts","sourceRoot":"","sources":["../../../../dist/lib/handlers/unified-wrapper.mjs"],"names":[],"mappings":"AAo0GA;;;;;;;;;;;GAWG;AACH,sCAPW,OAAO,GACL,cAAc,GAAC,IAAI,CAkB/B;;;;;AAhvGD;;;;;;;;;;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,8BA+qBC;IAED;;;;;;OAMG;IACH,uCAouCC;IAvVE,mBAA0B;IA7pF7B;;;OAGG;IACH,2EAFa,GAAC,CA8Bb;;CAq9FD;8BA5yG6B,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,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,
|
|
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"}
|
|
@@ -124,6 +124,22 @@ export class Config extends ComponentBase {
|
|
|
124
124
|
public normalizeEnv(env: any | null | undefined): {
|
|
125
125
|
include: string[];
|
|
126
126
|
} | null;
|
|
127
|
+
/**
|
|
128
|
+
* Normalize permissions configuration.
|
|
129
|
+
*
|
|
130
|
+
* @param {object|null} [permissions] - Raw permissions config from user.
|
|
131
|
+
* @param {string} [permissions.defaultPolicy="allow"] - Fallback policy: "allow" or "deny".
|
|
132
|
+
* @param {boolean} [permissions.enabled=true] - Global toggle.
|
|
133
|
+
* @param {string|boolean} [permissions.audit="default"] - Audit level: `"default"` (denied + self-bypass only),
|
|
134
|
+
* `"verbose"` (all decisions). `true` and `false` are accepted and both normalize to `"default"`.
|
|
135
|
+
* @param {Array<object>} [permissions.rules=[]] - Initial permission rules.
|
|
136
|
+
* @returns {object|null} Normalized permissions config, or null when permissions is absent or not an object.
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* normalizePermissions({ defaultPolicy: "deny", rules: [{ caller: "**", target: "admin.**", effect: "deny" }] });
|
|
140
|
+
* // => { defaultPolicy: "deny", enabled: true, audit: "default", rules: [...] }
|
|
141
|
+
*/
|
|
142
|
+
normalizePermissions(permissions?: object | null): object | null;
|
|
127
143
|
}
|
|
128
144
|
import { ComponentBase } from "@cldmv/slothlet/factories/component-base";
|
|
129
145
|
//# sourceMappingURL=config.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/config.mjs"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/config.mjs"],"names":[],"mappings":"AAqBA;;;;;GAKG;AACH;IACC,gCAAmC;IAEnC;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,qCAxBW,MAAM,MAAO,OAkDvB;IAED;;;;;OAKG;IACH,iCAJW,MAAM,GACJ,MAAM,CAsBlB;IAED;;;;;OAKG;IACH,2BAJW,MAAM,GACJ,MAAM,CAsBlB;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,+CAeC;IAED;;;;;OAKG;IACH,6BAJW,OAAO,MAAO,OAqExB;IAED;;;;;;OAMG;IACH,0CA+IC;IAED;;;;;OAKG;IACH,uCAJW,OAAO,GAAC,MAAM,MAAO,GACnB,MAAO,IAAI,CAsCvB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,yBArBW,MAAO,IAAI,GAAC,SAAS,GAEnB;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,GAAC,IAAI,CA4BtC;IAED;;;;;;;;;;;;;;OAcG;IACH,mCAZW,MAAM,GAAC,IAAI,GAMT,MAAM,GAAC,IAAI,CA6EvB;CACD;8BA1iB6B,0CAA0C"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compile a glob pattern into a matcher function.
|
|
3
|
+
* Supports: * (any chars except .), ** (any chars including .), ? (single char),
|
|
4
|
+
* {a,b} brace expansion, !pattern negation
|
|
5
|
+
*
|
|
6
|
+
* @param {string} pattern - Glob pattern
|
|
7
|
+
* @param {object} [options={}] - Options
|
|
8
|
+
* @param {Function} [options.onMaxDepth] - Called when brace expansion exceeds max depth.
|
|
9
|
+
* Should throw an error. If not provided, a SlothletError("BRACE_EXPANSION_MAX_DEPTH") is thrown.
|
|
10
|
+
* @returns {function} Matcher function that takes a path and returns boolean
|
|
11
|
+
* @example
|
|
12
|
+
* const matcher = compilePattern("payments.**");
|
|
13
|
+
* matcher("payments.charge"); // true
|
|
14
|
+
* matcher("admin.users"); // false
|
|
15
|
+
*/
|
|
16
|
+
export function compilePattern(pattern: string, options?: {
|
|
17
|
+
onMaxDepth?: Function;
|
|
18
|
+
}): Function;
|
|
19
|
+
/**
|
|
20
|
+
* Expand brace patterns {a,b,c} into multiple patterns.
|
|
21
|
+
* Supports nested braces with configurable depth limit.
|
|
22
|
+
*
|
|
23
|
+
* @param {string} pattern - Pattern with braces to expand
|
|
24
|
+
* @param {number} [depth=0] - Current recursion depth
|
|
25
|
+
* @param {number} [maxDepth=10] - Maximum nesting depth
|
|
26
|
+
* @param {object} [options={}] - Options
|
|
27
|
+
* @param {Function} [options.onMaxDepth] - Called when max depth exceeded. Should throw.
|
|
28
|
+
* @returns {string[]} Array of expanded patterns
|
|
29
|
+
* @example
|
|
30
|
+
* expandBraces("{a,b}.path"); // ["a.path", "b.path"]
|
|
31
|
+
*/
|
|
32
|
+
export function expandBraces(pattern: string, depth?: number, maxDepth?: number, options?: {
|
|
33
|
+
onMaxDepth?: Function;
|
|
34
|
+
}): string[];
|
|
35
|
+
/**
|
|
36
|
+
* Split brace alternatives on commas, respecting nested braces.
|
|
37
|
+
*
|
|
38
|
+
* @param {string} content - Content inside braces
|
|
39
|
+
* @returns {string[]} Array of alternatives
|
|
40
|
+
* @example
|
|
41
|
+
* splitBraceAlternatives("a,b,c"); // ["a", "b", "c"]
|
|
42
|
+
*/
|
|
43
|
+
export function splitBraceAlternatives(content: string): string[];
|
|
44
|
+
//# sourceMappingURL=pattern-matcher.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-matcher.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/pattern-matcher.mjs"],"names":[],"mappings":"AAoCA;;;;;;;;;;;;;;GAcG;AACH,wCAVW,MAAM,YAEd;IAA2B,UAAU;CAErC,YAsCF;AAED;;;;;;;;;;;;GAYG;AACH,sCATW,MAAM,UACN,MAAM,aACN,MAAM,YAEd;IAA2B,UAAU;CACrC,GAAU,MAAM,EAAE,CAwDpB;AAED;;;;;;;GAOG;AACH,gDALW,MAAM,GACJ,MAAM,EAAE,CA+BpB"}
|
|
@@ -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":"AAq/BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,iCAjCW,eAAe,GACb,OAAO,CAAC,WAAW,CAAC,CAsChC;;;;;;;;;SAWa,MAAM;;;;;;;WACN,OAAO,GAAC,MAAM;;;;;;;cAId,OAAO,GAAC,MAAM;;;;eAId,MAAM;;;;cACN,MAAM,GAAC,IAAI;;;;gBACX,MAAM,GAAC,IAAI;;;;YACX;QAAC,KAAK,EAAE,SAAS,GAAC,MAAM,CAAA;KAAC;;;;UAEpC;QAAuD,SAAS,GAArD,MAAM,GAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAC;QAGxB,SAAS,GAAtB,MAAM;KAEjB;;;;;;;;WAAW,OAAO,GAAC,MAAM,GAAC,MAAM;;;;;YAKrB,OAAO,GAAC,MAAM;;;;aAEd,OAAO;;;;kBACP,OAAO;;;;eACP,OAAO,GAAC,MAAM;;;;4BACd,OAAO;;;;;WACP,MAAM;;;;;;;UAMjB;QAA0B,OAAO,GAAtB,MAAM,EAAE;KACnB;;;;;;;;iBAAW,OAAO,GAAC,MAAM,GAAC,QAAQ,GAAC,MAAM;;;;;;;;wBAK9B,MAAM,cAAU,IAAI;;;;;;;;;;aAWpB,MAAY,IAAI;;;;cAChB,MAAY,IAAI;;;;cAE3B;QAAgE,GAAG,EAAxD,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAC,SAAS,CAAC,CAAC;QACzB,GAAG,EAC/B;YAAkC,GAAG;YACH,MAAM;YACN,MAAM;SACxC;QAA4B,OAAO,EACnC;YAAsC,GAAG;YACO,OAAO,EAA5C,SAAkB;YACS,GAAG;YACH,KAAK;YACL,GAAG;SACzC;QAA6B,IAAI,GACjC;YAAkC,MAAM,GACxC;gBAAqD,GAAG,GAA7C,SAAkB;gBAC0B,eAAe,GAA3D,MAAY,MAAM,EAAE;gBACY,GAAG;aAC9C;YAAkC,OAAO,GAA9B,MAAM;YACmB,QAAQ;YACE,MAAM,GAAzC,SAAkB;YACiB,YAAY,GAA/C,SAAkB;YACK,IAAI,GAA3B,MAAM;YAC6B,OAAO,GAA1C,SAAkB;YACK,KAAK,GACvC;gBAA0C,GAAG;aAC7C;YAAkC,SAAS,GAAhC,MAAM;YACsC,eAAe,GAA3D,MAAY,eAAe;SACtC;QAA4B,IAAI,EAChC;YAAmC,KAAK;YACL,OAAO;YACP,MAAM;YACN,IAAI;YACJ,GAAG;YACH,EAAE;YACF,MAAM;SACzC;QAA4B,SAAS,EACrC;YAAwC,GAAG;YACH,EAAE;SAC1C;QAA4B,WAAW,EACvC;YAAoD,GAAG,EAA5C,SAAkB;YACY,YAAY,EAA1C,OAAO;YAC0C,IAAI,EAArD,MAAY,OAAO,CAAE,IAAI,CAAC;SACrC;QAA4B,QAAQ,EACpC;YAAsD,MAAM,EAAjD,MAAY,MAAO,IAAI;YACK,GAAG;YACH,MAAM;YACN,SAAS;YACM,IAAI,EAA/C,MAAY,MAAO,IAAI;YACK,GAAG;YACH,MAAM;YACN,SAAS;SAChD;QAA4B,KAAK,EACjC;YAAoC,GAAG;SACvC;QAA4B,SAAS,EACrC;YAAwC,GAAG;YACH,UAAU;SAClD;QAA4B,UAAU,EACtC;YAAyC,IAAI;YACJ,UAAU;YACV,UAAU;YACV,kBAAkB;YAClB,kBAAkB;SAC3D;QAA6B,SAAS,GAA3B,MAAM;QACa,MAAM;QACN,GAAG;QACH,KAAK;QACa,QAAQ,EAA7C,MAAY,OAAO,CAAE,IAAI,CAAC;KACvC;;gCAhlC6D,wBAAwB"}
|