@lit-protocol/vincent-ability-sdk 0.0.1-ea
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/CHANGELOG.md +64 -0
- package/CONTRIBUTING.md +117 -0
- package/README.md +213 -0
- package/dist/package.json +44 -0
- package/dist/src/index.d.ts +15 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +21 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/internal.d.ts +12 -0
- package/dist/src/internal.d.ts.map +1 -0
- package/dist/src/internal.js +32 -0
- package/dist/src/internal.js.map +1 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/abilityContext.d.ts +28 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/abilityContext.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/abilityContext.js +51 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/abilityContext.js.map +1 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/resultCreators.d.ts +18 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/resultCreators.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/resultCreators.js +48 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/resultCreators.js.map +1 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/types.d.ts +31 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/types.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/types.js +9 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/types.js.map +1 -0
- package/dist/src/lib/abilityCore/abilityConfig/types.d.ts +20 -0
- package/dist/src/lib/abilityCore/abilityConfig/types.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/abilityConfig/types.js +4 -0
- package/dist/src/lib/abilityCore/abilityConfig/types.js.map +1 -0
- package/dist/src/lib/abilityCore/bundledAbility/bundledAbility.d.ts +5 -0
- package/dist/src/lib/abilityCore/bundledAbility/bundledAbility.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/bundledAbility/bundledAbility.js +21 -0
- package/dist/src/lib/abilityCore/bundledAbility/bundledAbility.js.map +1 -0
- package/dist/src/lib/abilityCore/bundledAbility/types.d.ts +18 -0
- package/dist/src/lib/abilityCore/bundledAbility/types.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/bundledAbility/types.js +4 -0
- package/dist/src/lib/abilityCore/bundledAbility/types.js.map +1 -0
- package/dist/src/lib/abilityCore/helpers/getMappedAbilityPolicyParams.d.ts +5 -0
- package/dist/src/lib/abilityCore/helpers/getMappedAbilityPolicyParams.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/helpers/getMappedAbilityPolicyParams.js +18 -0
- package/dist/src/lib/abilityCore/helpers/getMappedAbilityPolicyParams.js.map +1 -0
- package/dist/src/lib/abilityCore/helpers/getPkpInfo.d.ts +10 -0
- package/dist/src/lib/abilityCore/helpers/getPkpInfo.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/helpers/getPkpInfo.js +26 -0
- package/dist/src/lib/abilityCore/helpers/getPkpInfo.js.map +1 -0
- package/dist/src/lib/abilityCore/helpers/index.d.ts +5 -0
- package/dist/src/lib/abilityCore/helpers/index.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/helpers/index.js +12 -0
- package/dist/src/lib/abilityCore/helpers/index.js.map +1 -0
- package/dist/src/lib/abilityCore/helpers/resultCreators.d.ts +21 -0
- package/dist/src/lib/abilityCore/helpers/resultCreators.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/helpers/resultCreators.js +48 -0
- package/dist/src/lib/abilityCore/helpers/resultCreators.js.map +1 -0
- package/dist/src/lib/abilityCore/helpers/supportedPoliciesForAbility.d.ts +55 -0
- package/dist/src/lib/abilityCore/helpers/supportedPoliciesForAbility.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/helpers/supportedPoliciesForAbility.js +68 -0
- package/dist/src/lib/abilityCore/helpers/supportedPoliciesForAbility.js.map +1 -0
- package/dist/src/lib/abilityCore/helpers/typeGuards.d.ts +8 -0
- package/dist/src/lib/abilityCore/helpers/typeGuards.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/helpers/typeGuards.js +28 -0
- package/dist/src/lib/abilityCore/helpers/typeGuards.js.map +1 -0
- package/dist/src/lib/abilityCore/helpers/validatePolicies.d.ts +24 -0
- package/dist/src/lib/abilityCore/helpers/validatePolicies.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/helpers/validatePolicies.js +31 -0
- package/dist/src/lib/abilityCore/helpers/validatePolicies.js.map +1 -0
- package/dist/src/lib/abilityCore/helpers/zod.d.ts +43 -0
- package/dist/src/lib/abilityCore/helpers/zod.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/helpers/zod.js +70 -0
- package/dist/src/lib/abilityCore/helpers/zod.js.map +1 -0
- package/dist/src/lib/abilityCore/vincentAbility.d.ts +54 -0
- package/dist/src/lib/abilityCore/vincentAbility.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/vincentAbility.js +162 -0
- package/dist/src/lib/abilityCore/vincentAbility.js.map +1 -0
- package/dist/src/lib/assertSupportedAbilityVersion.d.ts +2 -0
- package/dist/src/lib/assertSupportedAbilityVersion.d.ts.map +1 -0
- package/dist/src/lib/assertSupportedAbilityVersion.js +15 -0
- package/dist/src/lib/assertSupportedAbilityVersion.js.map +1 -0
- package/dist/src/lib/constants.d.ts +2 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +5 -0
- package/dist/src/lib/constants.js.map +1 -0
- package/dist/src/lib/handlers/constants.d.ts +2 -0
- package/dist/src/lib/handlers/constants.d.ts.map +1 -0
- package/dist/src/lib/handlers/constants.js +6 -0
- package/dist/src/lib/handlers/constants.js.map +1 -0
- package/dist/src/lib/handlers/evaluatePolicies.d.ts +11 -0
- package/dist/src/lib/handlers/evaluatePolicies.d.ts.map +1 -0
- package/dist/src/lib/handlers/evaluatePolicies.js +110 -0
- package/dist/src/lib/handlers/evaluatePolicies.js.map +1 -0
- package/dist/src/lib/handlers/vincentAbilityHandler.d.ts +15 -0
- package/dist/src/lib/handlers/vincentAbilityHandler.d.ts.map +1 -0
- package/dist/src/lib/handlers/vincentAbilityHandler.js +160 -0
- package/dist/src/lib/handlers/vincentAbilityHandler.js.map +1 -0
- package/dist/src/lib/handlers/vincentPolicyHandler.d.ts +13 -0
- package/dist/src/lib/handlers/vincentPolicyHandler.d.ts.map +1 -0
- package/dist/src/lib/handlers/vincentPolicyHandler.js +70 -0
- package/dist/src/lib/handlers/vincentPolicyHandler.js.map +1 -0
- package/dist/src/lib/policyCore/bundledPolicy/bundledPolicy.d.ts +5 -0
- package/dist/src/lib/policyCore/bundledPolicy/bundledPolicy.d.ts.map +1 -0
- package/dist/src/lib/policyCore/bundledPolicy/bundledPolicy.js +21 -0
- package/dist/src/lib/policyCore/bundledPolicy/bundledPolicy.js.map +1 -0
- package/dist/src/lib/policyCore/bundledPolicy/types.d.ts +17 -0
- package/dist/src/lib/policyCore/bundledPolicy/types.d.ts.map +1 -0
- package/dist/src/lib/policyCore/bundledPolicy/types.js +4 -0
- package/dist/src/lib/policyCore/bundledPolicy/types.js.map +1 -0
- package/dist/src/lib/policyCore/helpers/index.d.ts +5 -0
- package/dist/src/lib/policyCore/helpers/index.d.ts.map +1 -0
- package/dist/src/lib/policyCore/helpers/index.js +16 -0
- package/dist/src/lib/policyCore/helpers/index.js.map +1 -0
- package/dist/src/lib/policyCore/helpers/resultCreators.d.ts +38 -0
- package/dist/src/lib/policyCore/helpers/resultCreators.d.ts.map +1 -0
- package/dist/src/lib/policyCore/helpers/resultCreators.js +89 -0
- package/dist/src/lib/policyCore/helpers/resultCreators.js.map +1 -0
- package/dist/src/lib/policyCore/helpers/typeGuards.d.ts +7 -0
- package/dist/src/lib/policyCore/helpers/typeGuards.d.ts.map +1 -0
- package/dist/src/lib/policyCore/helpers/typeGuards.js +23 -0
- package/dist/src/lib/policyCore/helpers/typeGuards.js.map +1 -0
- package/dist/src/lib/policyCore/helpers/zod.d.ts +55 -0
- package/dist/src/lib/policyCore/helpers/zod.d.ts.map +1 -0
- package/dist/src/lib/policyCore/helpers/zod.js +82 -0
- package/dist/src/lib/policyCore/helpers/zod.js.map +1 -0
- package/dist/src/lib/policyCore/index.d.ts +3 -0
- package/dist/src/lib/policyCore/index.d.ts.map +1 -0
- package/dist/src/lib/policyCore/index.js +8 -0
- package/dist/src/lib/policyCore/index.js.map +1 -0
- package/dist/src/lib/policyCore/policyConfig/context/policyConfigContext.d.ts +12 -0
- package/dist/src/lib/policyCore/policyConfig/context/policyConfigContext.d.ts.map +1 -0
- package/dist/src/lib/policyCore/policyConfig/context/policyConfigContext.js +20 -0
- package/dist/src/lib/policyCore/policyConfig/context/policyConfigContext.js.map +1 -0
- package/dist/src/lib/policyCore/policyConfig/context/resultCreators.d.ts +6 -0
- package/dist/src/lib/policyCore/policyConfig/context/resultCreators.d.ts.map +1 -0
- package/dist/src/lib/policyCore/policyConfig/context/resultCreators.js +30 -0
- package/dist/src/lib/policyCore/policyConfig/context/resultCreators.js.map +1 -0
- package/dist/src/lib/policyCore/policyConfig/context/types.d.ts +24 -0
- package/dist/src/lib/policyCore/policyConfig/context/types.d.ts.map +1 -0
- package/dist/src/lib/policyCore/policyConfig/context/types.js +5 -0
- package/dist/src/lib/policyCore/policyConfig/context/types.js.map +1 -0
- package/dist/src/lib/policyCore/policyConfig/types.d.ts +46 -0
- package/dist/src/lib/policyCore/policyConfig/types.d.ts.map +1 -0
- package/dist/src/lib/policyCore/policyConfig/types.js +3 -0
- package/dist/src/lib/policyCore/policyConfig/types.js.map +1 -0
- package/dist/src/lib/policyCore/policyParameters/getOnchainPolicyParams.d.ts +17 -0
- package/dist/src/lib/policyCore/policyParameters/getOnchainPolicyParams.d.ts.map +1 -0
- package/dist/src/lib/policyCore/policyParameters/getOnchainPolicyParams.js +54 -0
- package/dist/src/lib/policyCore/policyParameters/getOnchainPolicyParams.js.map +1 -0
- package/dist/src/lib/policyCore/vincentPolicy.d.ts +92 -0
- package/dist/src/lib/policyCore/vincentPolicy.d.ts.map +1 -0
- package/dist/src/lib/policyCore/vincentPolicy.js +242 -0
- package/dist/src/lib/policyCore/vincentPolicy.js.map +1 -0
- package/dist/src/lib/types.d.ts +260 -0
- package/dist/src/lib/types.d.ts.map +1 -0
- package/dist/src/lib/types.js +4 -0
- package/dist/src/lib/types.js.map +1 -0
- package/dist/src/lib/utils.d.ts +2 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +8 -0
- package/dist/src/lib/utils.js.map +1 -0
- package/dist/src/type-inference-verification/ability-definition-tests.d.ts +702 -0
- package/dist/src/type-inference-verification/ability-definition-tests.d.ts.map +1 -0
- package/dist/src/type-inference-verification/ability-definition-tests.js +203 -0
- package/dist/src/type-inference-verification/ability-definition-tests.js.map +1 -0
- package/dist/src/type-inference-verification/ability-lifecycle-inference.d.ts +2 -0
- package/dist/src/type-inference-verification/ability-lifecycle-inference.d.ts.map +1 -0
- package/dist/src/type-inference-verification/ability-lifecycle-inference.js +109 -0
- package/dist/src/type-inference-verification/ability-lifecycle-inference.js.map +1 -0
- package/dist/src/type-inference-verification/ability-lifecycle-succeed-fail-tests.d.ts +923 -0
- package/dist/src/type-inference-verification/ability-lifecycle-succeed-fail-tests.d.ts.map +1 -0
- package/dist/src/type-inference-verification/ability-lifecycle-succeed-fail-tests.js +196 -0
- package/dist/src/type-inference-verification/ability-lifecycle-succeed-fail-tests.js.map +1 -0
- package/dist/src/type-inference-verification/allow-deny-test-cases-ability.d.ts +4305 -0
- package/dist/src/type-inference-verification/allow-deny-test-cases-ability.d.ts.map +1 -0
- package/dist/src/type-inference-verification/allow-deny-test-cases-ability.js +644 -0
- package/dist/src/type-inference-verification/allow-deny-test-cases-ability.js.map +1 -0
- package/dist/src/type-inference-verification/allow-deny-test-cases.d.ts +646 -0
- package/dist/src/type-inference-verification/allow-deny-test-cases.d.ts.map +1 -0
- package/dist/src/type-inference-verification/allow-deny-test-cases.js +264 -0
- package/dist/src/type-inference-verification/allow-deny-test-cases.js.map +1 -0
- package/dist/src/type-inference-verification/context-switching-tests.d.ts +637 -0
- package/dist/src/type-inference-verification/context-switching-tests.d.ts.map +1 -0
- package/dist/src/type-inference-verification/context-switching-tests.js +229 -0
- package/dist/src/type-inference-verification/context-switching-tests.js.map +1 -0
- package/dist/src/type-inference-verification/create-policy-map-from-tool-policies.d.ts +2 -0
- package/dist/src/type-inference-verification/create-policy-map-from-tool-policies.d.ts.map +1 -0
- package/dist/src/type-inference-verification/create-policy-map-from-tool-policies.js +56 -0
- package/dist/src/type-inference-verification/create-policy-map-from-tool-policies.js.map +1 -0
- package/dist/src/type-inference-verification/create-vincent-ability-policy.d.ts +2 -0
- package/dist/src/type-inference-verification/create-vincent-ability-policy.d.ts.map +1 -0
- package/dist/src/type-inference-verification/create-vincent-ability-policy.js +49 -0
- package/dist/src/type-inference-verification/create-vincent-ability-policy.js.map +1 -0
- package/dist/src/type-inference-verification/create-vincent-ability.d.ts +250 -0
- package/dist/src/type-inference-verification/create-vincent-ability.d.ts.map +1 -0
- package/dist/src/type-inference-verification/create-vincent-ability.js +68 -0
- package/dist/src/type-inference-verification/create-vincent-ability.js.map +1 -0
- package/dist/src/type-inference-verification/parameter-inference-tests-tool.d.ts +1710 -0
- package/dist/src/type-inference-verification/parameter-inference-tests-tool.d.ts.map +1 -0
- package/dist/src/type-inference-verification/parameter-inference-tests-tool.js +537 -0
- package/dist/src/type-inference-verification/parameter-inference-tests-tool.js.map +1 -0
- package/dist/src/type-inference-verification/parameter-inference-tests.d.ts +456 -0
- package/dist/src/type-inference-verification/parameter-inference-tests.d.ts.map +1 -0
- package/dist/src/type-inference-verification/parameter-inference-tests.js +179 -0
- package/dist/src/type-inference-verification/parameter-inference-tests.js.map +1 -0
- package/dist/src/type-inference-verification/playground.d.ts +1556 -0
- package/dist/src/type-inference-verification/playground.d.ts.map +1 -0
- package/dist/src/type-inference-verification/playground.js +473 -0
- package/dist/src/type-inference-verification/playground.js.map +1 -0
- package/dist/src/type-inference-verification/schema-test.d.ts +470 -0
- package/dist/src/type-inference-verification/schema-test.d.ts.map +1 -0
- package/dist/src/type-inference-verification/schema-test.js +252 -0
- package/dist/src/type-inference-verification/schema-test.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validatePolicies.d.ts","sourceRoot":"","sources":["../../../../../src/lib/abilityCore/helpers/validatePolicies.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAEtF,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAMtE,MAAM,MAAM,kBAAkB,CAC5B,mBAAmB,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/C,qBAAqB,SAAS,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,IAC/E,KAAK,CACP;KACG,OAAO,IAAI,MAAM,qBAAqB,GAAG;QACxC,UAAU,EACN;YACE,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC;SAC1B,GACD,SAAS,CAAC;QACd,iBAAiB,EAAE,OAAO,CAAC;QAC3B,mBAAmB,EAAE;aAClB,cAAc,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC,0BAA0B,CAAC,CAAC,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC,0BAA0B,CAAC,CAAC,GAC7I,MAAM,GAAG,mBAAmB,CAAC;iBAC5B,eAAe,IAAI,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC,0BAA0B,CAAC,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC,0BAA0B,CAAC,CAAC,eAAe,CAAC,SAAS,cAAc,GACrL,eAAe,GACf,KAAK;aACV,CAAC,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC,0BAA0B,CAAC,CAAC,GACjE,MAAM,mBAAmB,CAAC;SAC7B,CAAC;KACH;CACF,CAAC,MAAM,qBAAqB,CAAC,CAC/B,CAAC;AAEF,wBAAsB,gBAAgB,CACpC,mBAAmB,SAAS,CAAC,CAAC,OAAO,EACrC,SAAS,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,EAC5C,qBAAqB,SAAS,SAAS,CAAC,qBAAqB,CAAC,EAC9D,EACA,eAAe,EACf,cAAc,EACd,cAAc,EACd,mBAAmB,GACpB,EAAE;IACD,eAAe,EAAE,0BAA0B,CAAC;IAC5C,cAAc,EAAE,cAAc,CAC5B,mBAAmB,EACnB,MAAM,qBAAqB,GAAG,MAAM,EACpC,SAAS,EACT,qBAAqB,EACrB,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,CACJ,CAAC;IACF,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;CACnD,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAuDnF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/lib/abilityCore/helpers/validatePolicies.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.validatePolicies = validatePolicies;
|
|
5
|
+
const getMappedAbilityPolicyParams_1 = require("./getMappedAbilityPolicyParams");
|
|
6
|
+
async function validatePolicies({ decodedPolicies, vincentAbility, abilityIpfsCid, parsedAbilityParams, }) {
|
|
7
|
+
const validatedPolicies = [];
|
|
8
|
+
for (const policyIpfsCid of Object.keys(decodedPolicies)) {
|
|
9
|
+
const abilityPolicy = vincentAbility.supportedPolicies.policyByIpfsCid[policyIpfsCid];
|
|
10
|
+
console.log('vincentAbility.supportedPolicies', Object.keys(vincentAbility.supportedPolicies.policyByIpfsCid));
|
|
11
|
+
if (!abilityPolicy) {
|
|
12
|
+
throw new Error(`Policy with IPFS CID ${policyIpfsCid} is registered on-chain but not supported by this ability. Vincent Ability: ${abilityIpfsCid}`);
|
|
13
|
+
}
|
|
14
|
+
const policyPackageName = abilityPolicy.vincentPolicy.packageName;
|
|
15
|
+
if (!abilityPolicy.abilityParameterMappings) {
|
|
16
|
+
throw new Error('abilityParameterMappings missing on policy');
|
|
17
|
+
}
|
|
18
|
+
console.log('abilityPolicy.abilityParameterMappings', JSON.stringify(abilityPolicy.abilityParameterMappings));
|
|
19
|
+
const abilityPolicyParams = (0, getMappedAbilityPolicyParams_1.getMappedAbilityPolicyParams)({
|
|
20
|
+
abilityParameterMappings: abilityPolicy.abilityParameterMappings,
|
|
21
|
+
parsedAbilityParams,
|
|
22
|
+
});
|
|
23
|
+
validatedPolicies.push({
|
|
24
|
+
parameters: decodedPolicies[policyIpfsCid] || {},
|
|
25
|
+
policyPackageName,
|
|
26
|
+
abilityPolicyParams,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return validatedPolicies;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=validatePolicies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validatePolicies.js","sourceRoot":"","sources":["../../../../../src/lib/abilityCore/helpers/validatePolicies.ts"],"names":[],"mappings":";AAAA,kDAAkD;;AAsClD,4CAgFC;AA7GD,iFAA8E;AA6BvE,KAAK,UAAU,gBAAgB,CAIpC,EACA,eAAe,EACf,cAAc,EACd,cAAc,EACd,mBAAmB,GAiBpB;IACC,MAAM,iBAAiB,GAQlB,EAAE,CAAC;IAER,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;QACzD,MAAM,aAAa,GAAG,cAAc,CAAC,iBAAiB,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QAEtF,OAAO,CAAC,GAAG,CACT,kCAAkC,EAClC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAC9D,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,wBAAwB,aAAa,+EAA+E,cAAc,EAAE,CACrI,CAAC;QACJ,CAAC;QAED,MAAM,iBAAiB,GAAG,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC;QAElE,IAAI,CAAC,aAAa,CAAC,wBAAwB,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,CAAC,GAAG,CACT,wCAAwC,EACxC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,wBAAwB,CAAC,CACvD,CAAC;QACF,MAAM,mBAAmB,GAAG,IAAA,2DAA4B,EAAC;YACvD,wBAAwB,EAAE,aAAa,CAAC,wBAGvC;YACD,mBAAmB;SACpB,CAEA,CAAC;QAEF,iBAAiB,CAAC,IAAI,CAAC;YACrB,UAAU,EAAE,eAAe,CAAC,aAAa,CAAC,IAAI,EAAE;YAChD,iBAAiB;YACjB,mBAAmB;SACpB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,iBAGN,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { ZodType } from 'zod';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import type { AbilityResultFailure, AbilityResultFailureNoResult } from '../../types';
|
|
4
|
+
/**
|
|
5
|
+
* Matches the minimum structure of a AbilityResult.
|
|
6
|
+
* This is useful when validating that a response shape is at least plausible.
|
|
7
|
+
*/
|
|
8
|
+
export declare const AbilityResultShape: z.ZodObject<{
|
|
9
|
+
success: z.ZodBoolean;
|
|
10
|
+
result: z.ZodUnknown;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
success: boolean;
|
|
13
|
+
result?: unknown;
|
|
14
|
+
}, {
|
|
15
|
+
success: boolean;
|
|
16
|
+
result?: unknown;
|
|
17
|
+
}>;
|
|
18
|
+
/**
|
|
19
|
+
* Validates a value using a Zod schema (or requires undefined if none given).
|
|
20
|
+
* Returns parsed result or a standardized failure object.
|
|
21
|
+
*
|
|
22
|
+
* @param value - The raw value to validate
|
|
23
|
+
* @param schema - A Zod schema to apply
|
|
24
|
+
* @param stage - Whether this is input or output validation
|
|
25
|
+
* @param phase - Whether this is 'precheck' or 'execute'
|
|
26
|
+
*/
|
|
27
|
+
export declare function validateOrFail<T extends ZodType<any, any, any>>(value: unknown, schema: T, phase: 'precheck' | 'execute', stage: 'input' | 'output'): z.infer<T> | AbilityResultFailure<never> | AbilityResultFailureNoResult;
|
|
28
|
+
/**
|
|
29
|
+
* Given an unknown ability response result and the known success/failure schemas,
|
|
30
|
+
* this function returns the appropriate Zod schema to use when validating `.result`.
|
|
31
|
+
*
|
|
32
|
+
* - If the response shape is invalid, returns a Zod schema matching the AbilityResult structure.
|
|
33
|
+
* - If the shape is valid, returns either the success or failure result schema.
|
|
34
|
+
*/
|
|
35
|
+
export declare function getSchemaForAbilityResult({ value, successResultSchema, failureResultSchema, }: {
|
|
36
|
+
value: unknown;
|
|
37
|
+
successResultSchema?: ZodType;
|
|
38
|
+
failureResultSchema?: ZodType;
|
|
39
|
+
}): {
|
|
40
|
+
schemaToUse: ZodType;
|
|
41
|
+
parsedType: 'success' | 'failure' | 'unknown';
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=zod.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["../../../../../src/lib/abilityCore/helpers/zod.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAEnC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAKtF;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;EAG7B,CAAC;AAOH;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC7D,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,UAAU,GAAG,SAAS,EAC7B,KAAK,EAAE,OAAO,GAAG,QAAQ,GACxB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,4BAA4B,CAkBzE;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,KAAK,EACL,mBAAmB,EACnB,mBAAmB,GACpB,EAAE;IACD,KAAK,EAAE,OAAO,CAAC;IACf,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,GAAG;IACF,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;CAC/C,CAgBA"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/lib/abilityCore/helpers/zod.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.AbilityResultShape = void 0;
|
|
5
|
+
exports.validateOrFail = validateOrFail;
|
|
6
|
+
exports.getSchemaForAbilityResult = getSchemaForAbilityResult;
|
|
7
|
+
const zod_1 = require("zod");
|
|
8
|
+
const resultCreators_1 = require("./resultCreators");
|
|
9
|
+
const typeGuards_1 = require("./typeGuards");
|
|
10
|
+
/**
|
|
11
|
+
* Matches the minimum structure of a AbilityResult.
|
|
12
|
+
* This is useful when validating that a response shape is at least plausible.
|
|
13
|
+
*/
|
|
14
|
+
exports.AbilityResultShape = zod_1.z.object({
|
|
15
|
+
success: zod_1.z.boolean(),
|
|
16
|
+
result: zod_1.z.unknown(),
|
|
17
|
+
});
|
|
18
|
+
/**
|
|
19
|
+
* Used as the default fallback schema when one is missing and the result must be undefined.
|
|
20
|
+
*/
|
|
21
|
+
const mustBeUndefinedSchema = zod_1.z.undefined();
|
|
22
|
+
/**
|
|
23
|
+
* Validates a value using a Zod schema (or requires undefined if none given).
|
|
24
|
+
* Returns parsed result or a standardized failure object.
|
|
25
|
+
*
|
|
26
|
+
* @param value - The raw value to validate
|
|
27
|
+
* @param schema - A Zod schema to apply
|
|
28
|
+
* @param stage - Whether this is input or output validation
|
|
29
|
+
* @param phase - Whether this is 'precheck' or 'execute'
|
|
30
|
+
*/
|
|
31
|
+
function validateOrFail(value, schema, phase, stage) {
|
|
32
|
+
const effectiveSchema = schema ?? mustBeUndefinedSchema;
|
|
33
|
+
const parsed = effectiveSchema.safeParse(value);
|
|
34
|
+
if (!parsed.success) {
|
|
35
|
+
const descriptor = stage === 'input' ? 'parameters' : 'result';
|
|
36
|
+
const message = `Invalid ${phase} ${descriptor}.`;
|
|
37
|
+
return (0, resultCreators_1.createAbilityFailureResult)({
|
|
38
|
+
runtimeError: message,
|
|
39
|
+
schemaValidationError: {
|
|
40
|
+
zodError: parsed.error,
|
|
41
|
+
phase,
|
|
42
|
+
stage,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return parsed.data;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Given an unknown ability response result and the known success/failure schemas,
|
|
50
|
+
* this function returns the appropriate Zod schema to use when validating `.result`.
|
|
51
|
+
*
|
|
52
|
+
* - If the response shape is invalid, returns a Zod schema matching the AbilityResult structure.
|
|
53
|
+
* - If the shape is valid, returns either the success or failure result schema.
|
|
54
|
+
*/
|
|
55
|
+
function getSchemaForAbilityResult({ value, successResultSchema, failureResultSchema, }) {
|
|
56
|
+
if (!(0, typeGuards_1.isAbilityResult)(value)) {
|
|
57
|
+
return {
|
|
58
|
+
schemaToUse: exports.AbilityResultShape,
|
|
59
|
+
parsedType: 'unknown',
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const schemaToUse = value.success
|
|
63
|
+
? (successResultSchema ?? zod_1.z.undefined())
|
|
64
|
+
: (failureResultSchema ?? zod_1.z.undefined());
|
|
65
|
+
return {
|
|
66
|
+
schemaToUse,
|
|
67
|
+
parsedType: value.success ? 'success' : 'failure',
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=zod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod.js","sourceRoot":"","sources":["../../../../../src/lib/abilityCore/helpers/zod.ts"],"names":[],"mappings":";AAAA,qCAAqC;;;AAmCrC,wCAuBC;AASD,8DA2BC;AAzFD,6BAAwB;AAIxB,qDAA8D;AAC9D,6CAA+C;AAE/C;;;GAGG;AACU,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE;IACpB,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE;CACpB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,qBAAqB,GAAG,OAAC,CAAC,SAAS,EAAE,CAAC;AAE5C;;;;;;;;GAQG;AACH,SAAgB,cAAc,CAC5B,KAAc,EACd,MAAS,EACT,KAA6B,EAC7B,KAAyB;IAEzB,MAAM,eAAe,GAAG,MAAM,IAAI,qBAAqB,CAAC;IACxD,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAEhD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,UAAU,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC/D,MAAM,OAAO,GAAG,WAAW,KAAK,IAAI,UAAU,GAAG,CAAC;QAClD,OAAO,IAAA,2CAA0B,EAAC;YAChC,YAAY,EAAE,OAAO;YACrB,qBAAqB,EAAE;gBACrB,QAAQ,EAAE,MAAM,CAAC,KAAK;gBACtB,KAAK;gBACL,KAAK;aACN;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,yBAAyB,CAAC,EACxC,KAAK,EACL,mBAAmB,EACnB,mBAAmB,GAKpB;IAIC,IAAI,CAAC,IAAA,4BAAe,EAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,WAAW,EAAE,0BAAkB;YAC/B,UAAU,EAAE,SAAS;SACtB,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO;QAC/B,CAAC,CAAC,CAAC,mBAAmB,IAAI,OAAC,CAAC,SAAS,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC,mBAAmB,IAAI,OAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAE3C,OAAO;QACL,WAAW;QACX,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;KAClD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { PolicyEvaluationResultContext, AbilityExecutionPolicyContext, VincentAbility } from '../types';
|
|
3
|
+
import type { AbilityConfigLifecycleFunction, VincentAbilityConfig } from './abilityConfig/types';
|
|
4
|
+
import type { AbilityPolicyMap } from './helpers';
|
|
5
|
+
/**
|
|
6
|
+
* The `createVincentAbility()` method is used to define an ability's lifecycle methods and ensure that arguments provided to the ability's
|
|
7
|
+
* lifecycle methods, as well as their return values, are validated and fully type-safe by defining ZOD schemas for them.
|
|
8
|
+
*
|
|
9
|
+
*```typescript
|
|
10
|
+
* const exampleSimpleAbility = createVincentAbility({
|
|
11
|
+
* packageName: '@lit-protocol/yesability@1.0.0',
|
|
12
|
+
* abilityDescription: 'Yes Ability description',
|
|
13
|
+
* abilityParamsSchema: testSchema,
|
|
14
|
+
* supportedPolicies: supportedPoliciesForAbility([testPolicy]),
|
|
15
|
+
*
|
|
16
|
+
* precheck: async (params, { succeed, fail }) => {
|
|
17
|
+
* // Should allow succeed() with no arguments
|
|
18
|
+
* succeed();
|
|
19
|
+
*
|
|
20
|
+
* // Should allow fail() with string error
|
|
21
|
+
* fail('Error message');
|
|
22
|
+
*
|
|
23
|
+
* // @ts-expect-error - Should not allow succeed() with arguments when no schema
|
|
24
|
+
* succeed({ message: 'test' });
|
|
25
|
+
*
|
|
26
|
+
* // @ts-expect-error - Should not allow fail() with object when no schema
|
|
27
|
+
* fail({ error: 'test' });
|
|
28
|
+
*
|
|
29
|
+
* return succeed();
|
|
30
|
+
* },
|
|
31
|
+
*
|
|
32
|
+
* execute: async (params, { succeed }) => {
|
|
33
|
+
* // Should allow succeed() with no arguments
|
|
34
|
+
* succeed();
|
|
35
|
+
*
|
|
36
|
+
* // @ts-expect-error - Should not allow succeed() with arguments when no schema
|
|
37
|
+
* return succeed({ data: 'test' });
|
|
38
|
+
* },
|
|
39
|
+
* });
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @typeParam AbilityParamsSchema {@removeTypeParameterCompletely}
|
|
43
|
+
* @typeParam PkgNames {@removeTypeParameterCompletely}
|
|
44
|
+
* @typeParam PolicyMap {@removeTypeParameterCompletely}
|
|
45
|
+
* @typeParam PolicyMapByPackageName {@removeTypeParameterCompletely}
|
|
46
|
+
* @typeParam PrecheckSuccessSchema {@removeTypeParameterCompletely}
|
|
47
|
+
* @typeParam PrecheckFailSchema {@removeTypeParameterCompletely}
|
|
48
|
+
* @typeParam ExecuteSuccessSchema {@removeTypeParameterCompletely}
|
|
49
|
+
* @typeParam ExecuteFailSchema {@removeTypeParameterCompletely}
|
|
50
|
+
*
|
|
51
|
+
* @category API Methods
|
|
52
|
+
*/
|
|
53
|
+
export declare function createVincentAbility<AbilityParamsSchema extends z.ZodType, const PkgNames extends string, const PolicyMap extends AbilityPolicyMap<any, PkgNames>, PolicyMapByPackageName extends PolicyMap['policyByPackageName'], PrecheckSuccessSchema extends z.ZodType = z.ZodUndefined, PrecheckFailSchema extends z.ZodType = z.ZodUndefined, ExecuteSuccessSchema extends z.ZodType = z.ZodUndefined, ExecuteFailSchema extends z.ZodType = z.ZodUndefined>(AbilityConfig: VincentAbilityConfig<AbilityParamsSchema, PkgNames, PolicyMap, PolicyMapByPackageName, PrecheckSuccessSchema, PrecheckFailSchema, ExecuteSuccessSchema, ExecuteFailSchema, AbilityConfigLifecycleFunction<AbilityParamsSchema, PolicyEvaluationResultContext<PolicyMapByPackageName>, PrecheckSuccessSchema, PrecheckFailSchema>, AbilityConfigLifecycleFunction<AbilityParamsSchema, AbilityExecutionPolicyContext<PolicyMapByPackageName>, ExecuteSuccessSchema, ExecuteFailSchema>>): VincentAbility<AbilityParamsSchema, PkgNames, PolicyMap, PolicyMapByPackageName, ExecuteSuccessSchema, ExecuteFailSchema, PrecheckSuccessSchema, PrecheckFailSchema>;
|
|
54
|
+
//# sourceMappingURL=vincentAbility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vincentAbility.d.ts","sourceRoot":"","sources":["../../../../src/lib/abilityCore/vincentAbility.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EACV,6BAA6B,EAC7B,6BAA6B,EAG7B,cAAc,EACf,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAelD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,wBAAgB,oBAAoB,CAClC,mBAAmB,SAAS,CAAC,CAAC,OAAO,EACrC,KAAK,CAAC,QAAQ,SAAS,MAAM,EAC7B,KAAK,CAAC,SAAS,SAAS,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,EACvD,sBAAsB,SAAS,SAAS,CAAC,qBAAqB,CAAC,EAC/D,qBAAqB,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,YAAY,EACxD,kBAAkB,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,YAAY,EACrD,oBAAoB,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,YAAY,EACvD,iBAAiB,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,YAAY,EAEpD,aAAa,EAAE,oBAAoB,CACjC,mBAAmB,EACnB,QAAQ,EACR,SAAS,EACT,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,8BAA8B,CAC5B,mBAAmB,EACnB,6BAA6B,CAAC,sBAAsB,CAAC,EACrD,qBAAqB,EACrB,kBAAkB,CACnB,EACD,8BAA8B,CAC5B,mBAAmB,EACnB,6BAA6B,CAAC,sBAAsB,CAAC,EACrD,oBAAoB,EACpB,iBAAiB,CAClB,CACF,GAsJI,cAAc,CACjB,mBAAmB,EACnB,QAAQ,EACR,SAAS,EACT,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,CACnB,CACF"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/lib/abilityCore/vincentAbility.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.createVincentAbility = createVincentAbility;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const assertSupportedAbilityVersion_1 = require("../assertSupportedAbilityVersion");
|
|
7
|
+
const constants_1 = require("../constants");
|
|
8
|
+
const utils_1 = require("../utils");
|
|
9
|
+
const abilityContext_1 = require("./abilityConfig/context/abilityContext");
|
|
10
|
+
const resultCreators_1 = require("./helpers/resultCreators");
|
|
11
|
+
const typeGuards_1 = require("./helpers/typeGuards");
|
|
12
|
+
const zod_2 = require("./helpers/zod");
|
|
13
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
14
|
+
/**
|
|
15
|
+
* The `createVincentAbility()` method is used to define an ability's lifecycle methods and ensure that arguments provided to the ability's
|
|
16
|
+
* lifecycle methods, as well as their return values, are validated and fully type-safe by defining ZOD schemas for them.
|
|
17
|
+
*
|
|
18
|
+
*```typescript
|
|
19
|
+
* const exampleSimpleAbility = createVincentAbility({
|
|
20
|
+
* packageName: '@lit-protocol/yesability@1.0.0',
|
|
21
|
+
* abilityDescription: 'Yes Ability description',
|
|
22
|
+
* abilityParamsSchema: testSchema,
|
|
23
|
+
* supportedPolicies: supportedPoliciesForAbility([testPolicy]),
|
|
24
|
+
*
|
|
25
|
+
* precheck: async (params, { succeed, fail }) => {
|
|
26
|
+
* // Should allow succeed() with no arguments
|
|
27
|
+
* succeed();
|
|
28
|
+
*
|
|
29
|
+
* // Should allow fail() with string error
|
|
30
|
+
* fail('Error message');
|
|
31
|
+
*
|
|
32
|
+
* // @ts-expect-error - Should not allow succeed() with arguments when no schema
|
|
33
|
+
* succeed({ message: 'test' });
|
|
34
|
+
*
|
|
35
|
+
* // @ts-expect-error - Should not allow fail() with object when no schema
|
|
36
|
+
* fail({ error: 'test' });
|
|
37
|
+
*
|
|
38
|
+
* return succeed();
|
|
39
|
+
* },
|
|
40
|
+
*
|
|
41
|
+
* execute: async (params, { succeed }) => {
|
|
42
|
+
* // Should allow succeed() with no arguments
|
|
43
|
+
* succeed();
|
|
44
|
+
*
|
|
45
|
+
* // @ts-expect-error - Should not allow succeed() with arguments when no schema
|
|
46
|
+
* return succeed({ data: 'test' });
|
|
47
|
+
* },
|
|
48
|
+
* });
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @typeParam AbilityParamsSchema {@removeTypeParameterCompletely}
|
|
52
|
+
* @typeParam PkgNames {@removeTypeParameterCompletely}
|
|
53
|
+
* @typeParam PolicyMap {@removeTypeParameterCompletely}
|
|
54
|
+
* @typeParam PolicyMapByPackageName {@removeTypeParameterCompletely}
|
|
55
|
+
* @typeParam PrecheckSuccessSchema {@removeTypeParameterCompletely}
|
|
56
|
+
* @typeParam PrecheckFailSchema {@removeTypeParameterCompletely}
|
|
57
|
+
* @typeParam ExecuteSuccessSchema {@removeTypeParameterCompletely}
|
|
58
|
+
* @typeParam ExecuteFailSchema {@removeTypeParameterCompletely}
|
|
59
|
+
*
|
|
60
|
+
* @category API Methods
|
|
61
|
+
*/
|
|
62
|
+
function createVincentAbility(AbilityConfig) {
|
|
63
|
+
const { policyByPackageName, policyByIpfsCid } = AbilityConfig.supportedPolicies;
|
|
64
|
+
for (const policyId in policyByIpfsCid) {
|
|
65
|
+
const policy = policyByIpfsCid[policyId];
|
|
66
|
+
const { vincentAbilityApiVersion } = policy;
|
|
67
|
+
(0, assertSupportedAbilityVersion_1.assertSupportedAbilityVersion)(vincentAbilityApiVersion);
|
|
68
|
+
}
|
|
69
|
+
const executeSuccessSchema = (AbilityConfig.executeSuccessSchema ??
|
|
70
|
+
zod_1.z.undefined());
|
|
71
|
+
const executeFailSchema = (AbilityConfig.executeFailSchema ?? zod_1.z.undefined());
|
|
72
|
+
const execute = async ({ abilityParams }, baseAbilityContext) => {
|
|
73
|
+
try {
|
|
74
|
+
const context = (0, abilityContext_1.createExecutionAbilityContext)({
|
|
75
|
+
baseContext: baseAbilityContext,
|
|
76
|
+
policiesByPackageName: policyByPackageName,
|
|
77
|
+
});
|
|
78
|
+
const parsedAbilityParams = (0, zod_2.validateOrFail)(abilityParams, AbilityConfig.abilityParamsSchema, 'execute', 'input');
|
|
79
|
+
if ((0, typeGuards_1.isAbilityFailureResult)(parsedAbilityParams)) {
|
|
80
|
+
// In this case, we have an invalid input to the ability -- return { success: fail, runtimeError, schemaValidationError }
|
|
81
|
+
return parsedAbilityParams;
|
|
82
|
+
}
|
|
83
|
+
const result = await AbilityConfig.execute({ abilityParams: parsedAbilityParams }, {
|
|
84
|
+
...context,
|
|
85
|
+
policiesContext: { ...context.policiesContext, allow: true },
|
|
86
|
+
});
|
|
87
|
+
console.log('AbilityConfig execute result', JSON.stringify(result, utils_1.bigintReplacer));
|
|
88
|
+
const { schemaToUse } = (0, zod_2.getSchemaForAbilityResult)({
|
|
89
|
+
value: result,
|
|
90
|
+
successResultSchema: executeSuccessSchema,
|
|
91
|
+
failureResultSchema: executeFailSchema,
|
|
92
|
+
});
|
|
93
|
+
const resultOrFailure = (0, zod_2.validateOrFail)(result.result, schemaToUse, 'execute', 'output');
|
|
94
|
+
if ((0, typeGuards_1.isAbilityFailureResult)(resultOrFailure)) {
|
|
95
|
+
return resultOrFailure;
|
|
96
|
+
}
|
|
97
|
+
// We parsed the result -- it may be a success or a failure; return appropriately.
|
|
98
|
+
if ((0, typeGuards_1.isAbilityFailureResult)(result)) {
|
|
99
|
+
return (0, resultCreators_1.wrapFailure)(resultOrFailure);
|
|
100
|
+
}
|
|
101
|
+
return (0, resultCreators_1.wrapSuccess)(resultOrFailure);
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
return (0, resultCreators_1.wrapNoResultFailure)(err instanceof Error ? err.message : 'Unknown error');
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
const precheckSuccessSchema = (AbilityConfig.precheckSuccessSchema ??
|
|
108
|
+
zod_1.z.undefined());
|
|
109
|
+
const precheckFailSchema = (AbilityConfig.precheckFailSchema ??
|
|
110
|
+
zod_1.z.undefined());
|
|
111
|
+
const { precheck: precheckFn } = AbilityConfig;
|
|
112
|
+
const precheck = precheckFn
|
|
113
|
+
? (async ({ abilityParams }, baseAbilityContext) => {
|
|
114
|
+
try {
|
|
115
|
+
const context = (0, abilityContext_1.createPrecheckAbilityContext)({
|
|
116
|
+
baseContext: baseAbilityContext,
|
|
117
|
+
});
|
|
118
|
+
const parsedAbilityParams = (0, zod_2.validateOrFail)(abilityParams, AbilityConfig.abilityParamsSchema, 'precheck', 'input');
|
|
119
|
+
if ((0, typeGuards_1.isAbilityFailureResult)(parsedAbilityParams)) {
|
|
120
|
+
return parsedAbilityParams;
|
|
121
|
+
}
|
|
122
|
+
const result = await precheckFn({ abilityParams }, context);
|
|
123
|
+
console.log('AbilityConfig precheck result', JSON.stringify(result, utils_1.bigintReplacer));
|
|
124
|
+
const { schemaToUse } = (0, zod_2.getSchemaForAbilityResult)({
|
|
125
|
+
value: result,
|
|
126
|
+
successResultSchema: precheckSuccessSchema,
|
|
127
|
+
failureResultSchema: precheckFailSchema,
|
|
128
|
+
});
|
|
129
|
+
const resultOrFailure = (0, zod_2.validateOrFail)(result.result, schemaToUse, 'precheck', 'output');
|
|
130
|
+
if ((0, typeGuards_1.isAbilityFailureResult)(resultOrFailure)) {
|
|
131
|
+
return resultOrFailure;
|
|
132
|
+
}
|
|
133
|
+
// We parsed the result successfully -- it may be a success or a failure, return appropriately
|
|
134
|
+
if ((0, typeGuards_1.isAbilityFailureResult)(result)) {
|
|
135
|
+
return (0, resultCreators_1.wrapFailure)(resultOrFailure, result.runtimeError);
|
|
136
|
+
}
|
|
137
|
+
return (0, resultCreators_1.wrapSuccess)(resultOrFailure);
|
|
138
|
+
}
|
|
139
|
+
catch (err) {
|
|
140
|
+
return (0, resultCreators_1.wrapNoResultFailure)(err instanceof Error ? err.message : 'Unknown error');
|
|
141
|
+
}
|
|
142
|
+
})
|
|
143
|
+
: undefined;
|
|
144
|
+
return {
|
|
145
|
+
packageName: AbilityConfig.packageName,
|
|
146
|
+
vincentAbilityApiVersion: constants_1.VINCENT_TOOL_API_VERSION,
|
|
147
|
+
abilityDescription: AbilityConfig.abilityDescription,
|
|
148
|
+
execute,
|
|
149
|
+
precheck,
|
|
150
|
+
supportedPolicies: AbilityConfig.supportedPolicies,
|
|
151
|
+
policyByPackageName,
|
|
152
|
+
abilityParamsSchema: AbilityConfig.abilityParamsSchema,
|
|
153
|
+
/** @hidden */
|
|
154
|
+
__schemaTypes: {
|
|
155
|
+
precheckSuccessSchema: AbilityConfig.precheckSuccessSchema,
|
|
156
|
+
precheckFailSchema: AbilityConfig.precheckFailSchema,
|
|
157
|
+
executeSuccessSchema: AbilityConfig.executeSuccessSchema,
|
|
158
|
+
executeFailSchema: AbilityConfig.executeFailSchema,
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=vincentAbility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vincentAbility.js","sourceRoot":"","sources":["../../../../src/lib/abilityCore/vincentAbility.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertSupportedAbilityVersion.d.ts","sourceRoot":"","sources":["../../../src/lib/assertSupportedAbilityVersion.ts"],"names":[],"mappings":"AAIA,wBAAgB,6BAA6B,CAC3C,oBAAoB,EAAE,MAAM,GAAG,SAAS,GACvC,OAAO,CAAC,oBAAoB,IAAI,MAAM,CAWxC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assertSupportedAbilityVersion = assertSupportedAbilityVersion;
|
|
4
|
+
const semver_1 = require("semver");
|
|
5
|
+
const constants_1 = require("./constants");
|
|
6
|
+
function assertSupportedAbilityVersion(abilityVersionSemver) {
|
|
7
|
+
if (!abilityVersionSemver) {
|
|
8
|
+
throw new Error('Ability version is required');
|
|
9
|
+
}
|
|
10
|
+
// Check if the ability's API version has the same major version as the current API version
|
|
11
|
+
if ((0, semver_1.major)(abilityVersionSemver) !== (0, semver_1.major)(constants_1.VINCENT_TOOL_API_VERSION)) {
|
|
12
|
+
throw new Error(`Ability version ${abilityVersionSemver} is not supported. Current version: ${constants_1.VINCENT_TOOL_API_VERSION}. Major versions must match.`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=assertSupportedAbilityVersion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertSupportedAbilityVersion.js","sourceRoot":"","sources":["../../../src/lib/assertSupportedAbilityVersion.ts"],"names":[],"mappings":";;AAIA,sEAaC;AAjBD,mCAA+B;AAE/B,2CAAuD;AAEvD,SAAgB,6BAA6B,CAC3C,oBAAwC;IAExC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,2FAA2F;IAC3F,IAAI,IAAA,cAAK,EAAC,oBAAoB,CAAC,KAAK,IAAA,cAAK,EAAC,oCAAwB,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CACb,mBAAmB,oBAAoB,uCAAuC,oCAAwB,8BAA8B,CACrI,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,EAAG,OAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,wBAAwB,GAAG,OAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,+BAA+B,+CAA+C,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/lib/handlers/constants.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.LIT_DATIL_PUBKEY_ROUTER_ADDRESS = void 0;
|
|
5
|
+
exports.LIT_DATIL_PUBKEY_ROUTER_ADDRESS = '0xF182d6bEf16Ba77e69372dD096D8B70Bc3d5B475';
|
|
6
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/lib/handlers/constants.ts"],"names":[],"mappings":";AAAA,gCAAgC;;;AAEnB,QAAA,+BAA+B,GAAG,4CAA4C,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { AbilityPolicyMap } from '../abilityCore/helpers';
|
|
3
|
+
import type { ValidatedPolicyMap } from '../abilityCore/helpers/validatePolicies';
|
|
4
|
+
import type { BaseContext, PolicyEvaluationResultContext, VincentAbility } from '../types';
|
|
5
|
+
export declare function evaluatePolicies<AbilityParamsSchema extends z.ZodType, PolicyMap extends AbilityPolicyMap<any, any>, PoliciesByPackageName extends PolicyMap['policyByPackageName']>({ vincentAbility, context, validatedPolicies, vincentAbilityApiVersion, }: {
|
|
6
|
+
vincentAbility: VincentAbility<AbilityParamsSchema, keyof PoliciesByPackageName & string, PolicyMap, PoliciesByPackageName, any, any, any, any>;
|
|
7
|
+
context: BaseContext;
|
|
8
|
+
validatedPolicies: ValidatedPolicyMap<z.infer<AbilityParamsSchema>, PoliciesByPackageName>;
|
|
9
|
+
vincentAbilityApiVersion: string;
|
|
10
|
+
}): Promise<PolicyEvaluationResultContext<PoliciesByPackageName>>;
|
|
11
|
+
//# sourceMappingURL=evaluatePolicies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluatePolicies.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/evaluatePolicies.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,KAAK,EACV,WAAW,EACX,6BAA6B,EAK7B,cAAc,EAEf,MAAM,UAAU,CAAC;AAyBlB,wBAAsB,gBAAgB,CACpC,mBAAmB,SAAS,CAAC,CAAC,OAAO,EACrC,SAAS,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,EAC5C,qBAAqB,SAAS,SAAS,CAAC,qBAAqB,CAAC,EAC9D,EACA,cAAc,EACd,OAAO,EACP,iBAAiB,EACjB,wBAAwB,GACzB,EAAE;IACD,cAAc,EAAE,cAAc,CAC5B,mBAAmB,EACnB,MAAM,qBAAqB,GAAG,MAAM,EACpC,SAAS,EACT,qBAAqB,EACrB,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,CACJ,CAAC;IACF,OAAO,EAAE,WAAW,CAAC;IACrB,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAC3F,wBAAwB,EAAE,MAAM,CAAC;CAClC,GAAG,OAAO,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,CAAC,CAmEhE"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/lib/handlers/evaluatePolicies.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.evaluatePolicies = evaluatePolicies;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const helpers_1 = require("../policyCore/helpers");
|
|
7
|
+
const resultCreators_1 = require("../policyCore/helpers/resultCreators");
|
|
8
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
9
|
+
async function evaluatePolicies({ vincentAbility, context, validatedPolicies, vincentAbilityApiVersion, }) {
|
|
10
|
+
const evaluatedPolicies = [];
|
|
11
|
+
let policyDeniedResult = undefined;
|
|
12
|
+
const rawAllowedPolicies = {};
|
|
13
|
+
for (const { policyPackageName, abilityPolicyParams } of validatedPolicies) {
|
|
14
|
+
evaluatedPolicies.push(policyPackageName);
|
|
15
|
+
const policy = vincentAbility.supportedPolicies.policyByPackageName[policyPackageName];
|
|
16
|
+
try {
|
|
17
|
+
const litActionResponse = await Lit.Actions.call({
|
|
18
|
+
ipfsId: policy.ipfsCid,
|
|
19
|
+
params: {
|
|
20
|
+
abilityParams: abilityPolicyParams,
|
|
21
|
+
context: {
|
|
22
|
+
abilityIpfsCid: context.abilityIpfsCid,
|
|
23
|
+
delegatorPkpEthAddress: context.delegation.delegatorPkpInfo.ethAddress,
|
|
24
|
+
},
|
|
25
|
+
vincentAbilityApiVersion,
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
console.log(`evaluated ${String(policyPackageName)} policy, result is:`, JSON.stringify(litActionResponse));
|
|
29
|
+
const result = parseAndValidateEvaluateResult({
|
|
30
|
+
litActionResponse,
|
|
31
|
+
vincentPolicy: policy.vincentPolicy,
|
|
32
|
+
});
|
|
33
|
+
if ((0, helpers_1.isPolicyDenyResponse)(result)) {
|
|
34
|
+
policyDeniedResult = {
|
|
35
|
+
...result,
|
|
36
|
+
packageName: policyPackageName,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
rawAllowedPolicies[policyPackageName] = {
|
|
41
|
+
result: result.result,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
const denyResult = (0, helpers_1.createDenyResult)({
|
|
47
|
+
runtimeError: err instanceof Error ? err.message : 'Unknown error',
|
|
48
|
+
});
|
|
49
|
+
policyDeniedResult = { ...denyResult, packageName: policyPackageName };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (policyDeniedResult) {
|
|
53
|
+
return (0, resultCreators_1.createDenyEvaluationResult)({
|
|
54
|
+
allowedPolicies: rawAllowedPolicies,
|
|
55
|
+
evaluatedPolicies,
|
|
56
|
+
deniedPolicy: policyDeniedResult,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
return (0, resultCreators_1.createAllowEvaluationResult)({
|
|
60
|
+
evaluatedPolicies,
|
|
61
|
+
allowedPolicies: rawAllowedPolicies,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function parseAndValidateEvaluateResult({ litActionResponse, vincentPolicy, }) {
|
|
65
|
+
let parsedLitActionResponse;
|
|
66
|
+
try {
|
|
67
|
+
parsedLitActionResponse = JSON.parse(litActionResponse);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
console.log('rawLitActionResponse (parsePolicyExecutionResult)', litActionResponse);
|
|
71
|
+
throw new Error(`Failed to JSON parse Lit Action Response: ${error instanceof Error ? error.message : String(error)}. rawLitActionResponse in request logs (parsePolicyExecutionResult)`);
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
console.log('parseAndValidateEvaluateResult', JSON.stringify(parsedLitActionResponse));
|
|
75
|
+
if ((0, helpers_1.isPolicyDenyResponse)(parsedLitActionResponse) &&
|
|
76
|
+
(parsedLitActionResponse.schemaValidationError || parsedLitActionResponse.runtimeError)) {
|
|
77
|
+
console.log('parsedLitActionResponse is a deny response with a runtime error or schema validation error; skipping schema validation');
|
|
78
|
+
return parsedLitActionResponse;
|
|
79
|
+
}
|
|
80
|
+
if (!(0, helpers_1.isPolicyResponse)(parsedLitActionResponse)) {
|
|
81
|
+
throw new Error(`Invalid response from policy: ${JSON.stringify(parsedLitActionResponse)}`);
|
|
82
|
+
}
|
|
83
|
+
const { schemaToUse, parsedType } = (0, helpers_1.getSchemaForPolicyResponseResult)({
|
|
84
|
+
value: parsedLitActionResponse,
|
|
85
|
+
denyResultSchema: vincentPolicy.evalDenyResultSchema || zod_1.z.undefined(),
|
|
86
|
+
allowResultSchema: vincentPolicy.evalAllowResultSchema || zod_1.z.undefined(),
|
|
87
|
+
});
|
|
88
|
+
console.log('parsedType', parsedType);
|
|
89
|
+
const parsedResult = (0, helpers_1.validateOrDeny)(parsedLitActionResponse.result, schemaToUse, 'evaluate', 'output');
|
|
90
|
+
if ((0, helpers_1.isPolicyDenyResponse)(parsedResult)) {
|
|
91
|
+
// Failed schema parsing!
|
|
92
|
+
return parsedResult;
|
|
93
|
+
}
|
|
94
|
+
if ((0, helpers_1.isPolicyDenyResponse)(parsedLitActionResponse)) {
|
|
95
|
+
return (0, helpers_1.createDenyResult)({
|
|
96
|
+
runtimeError: parsedLitActionResponse.runtimeError,
|
|
97
|
+
schemaValidationError: parsedLitActionResponse.schemaValidationError,
|
|
98
|
+
result: parsedResult,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
return (0, resultCreators_1.createAllowResult)({
|
|
102
|
+
result: parsedResult,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
console.log('parseAndValidateEvaluateResult error; returning noResultDeny', err.message, err.stack);
|
|
107
|
+
return (0, resultCreators_1.returnNoResultDeny)(err instanceof Error ? err.message : 'Unknown error');
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=evaluatePolicies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluatePolicies.js","sourceRoot":"","sources":["../../../../src/lib/handlers/evaluatePolicies.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
import type { AbilityPolicyMap } from '../abilityCore/helpers';
|
|
3
|
+
import type { BaseContext, PolicyEvaluationResultContext, AbilityConsumerContext, AbilityExecutionPolicyContext, VincentAbility } from '../types';
|
|
4
|
+
export declare function createAbilityExecutionContext<AbilityParamsSchema extends z.ZodType, PkgNames extends string, PolicyMap extends AbilityPolicyMap<any, PkgNames>, PoliciesByPackageName extends PolicyMap['policyByPackageName']>({ vincentAbility, policyEvaluationResults, baseContext, }: {
|
|
5
|
+
vincentAbility: VincentAbility<AbilityParamsSchema, PkgNames, PolicyMap, PoliciesByPackageName, any, any, any, any>;
|
|
6
|
+
policyEvaluationResults: PolicyEvaluationResultContext<PoliciesByPackageName>;
|
|
7
|
+
baseContext: BaseContext;
|
|
8
|
+
}): AbilityExecutionPolicyContext<PoliciesByPackageName>;
|
|
9
|
+
/** @hidden */
|
|
10
|
+
export declare const vincentAbilityHandler: <AbilityParamsSchema extends z.ZodType, PkgNames extends string, PolicyMap extends AbilityPolicyMap<any, PkgNames>, PoliciesByPackageName extends PolicyMap["policyByPackageName"]>({ vincentAbility, abilityParams, context, }: {
|
|
11
|
+
vincentAbility: VincentAbility<AbilityParamsSchema, PkgNames, PolicyMap, PoliciesByPackageName, any, any, any, any>;
|
|
12
|
+
context: AbilityConsumerContext;
|
|
13
|
+
abilityParams: Record<string, unknown>;
|
|
14
|
+
}) => () => Promise<void>;
|
|
15
|
+
//# sourceMappingURL=vincentAbilityHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vincentAbilityHandler.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/vincentAbilityHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAK7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EACV,WAAW,EACX,6BAA6B,EAC7B,sBAAsB,EACtB,6BAA6B,EAC7B,cAAc,EACf,MAAM,UAAU,CAAC;AA4BlB,wBAAgB,6BAA6B,CAC3C,mBAAmB,SAAS,CAAC,CAAC,OAAO,EACrC,QAAQ,SAAS,MAAM,EACvB,SAAS,SAAS,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,EACjD,qBAAqB,SAAS,SAAS,CAAC,qBAAqB,CAAC,EAC9D,EACA,cAAc,EACd,uBAAuB,EACvB,WAAW,GACZ,EAAE;IACD,cAAc,EAAE,cAAc,CAC5B,mBAAmB,EACnB,QAAQ,EACR,SAAS,EACT,qBAAqB,EACrB,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,CACJ,CAAC;IACF,uBAAuB,EAAE,6BAA6B,CAAC,qBAAqB,CAAC,CAAC;IAC9E,WAAW,EAAE,WAAW,CAAC;CAC1B,GAAG,6BAA6B,CAAC,qBAAqB,CAAC,CA6CvD;AAED,cAAc;AACd,eAAO,MAAM,qBAAqB,GAChC,mBAAmB,SAAS,CAAC,CAAC,OAAO,EACrC,QAAQ,SAAS,MAAM,EACvB,SAAS,SAAS,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,EACjD,qBAAqB,SAAS,SAAS,CAAC,qBAAqB,CAAC,EAC9D,6CAIC;IACD,cAAc,EAAE,cAAc,CAC5B,mBAAmB,EACnB,QAAQ,EACR,SAAS,EACT,qBAAqB,EACrB,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,CACJ,CAAC;IACF,OAAO,EAAE,sBAAsB,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC,wBAwIA,CAAC"}
|