@learncard/vc-plugin 1.1.8 → 1.1.10
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/helpers.d.ts +7 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/issueCredential.d.ts.map +1 -1
- package/dist/issuePresentation.d.ts.map +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/vc-plugin.cjs.development.js +25 -6
- package/dist/vc-plugin.cjs.development.js.map +3 -3
- package/dist/vc-plugin.cjs.production.min.js +1 -1
- package/dist/vc-plugin.cjs.production.min.js.map +3 -3
- package/dist/vc-plugin.esm.js +25 -6
- package/dist/vc-plugin.esm.js.map +3 -3
- package/package.json +4 -4
@@ -0,0 +1,7 @@
|
|
1
|
+
import { VCImplicitLearnCard } from './types';
|
2
|
+
/**
|
3
|
+
* Determines the default verification method to use for a given did by resolving it and looking
|
4
|
+
* for a keypair that matches the default keypair for the LearnCard
|
5
|
+
*/
|
6
|
+
export declare const getDefaultVerificationMethod: (learnCard: VCImplicitLearnCard, issuerDid: string) => Promise<string>;
|
7
|
+
//# sourceMappingURL=helpers.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,4BAA4B,cAC1B,mBAAmB,aACnB,MAAM,oBAsBpB,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"issueCredential.d.ts","sourceRoot":"","sources":["../src/issueCredential.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;
|
1
|
+
{"version":3,"file":"issueCredential.d.ts","sourceRoot":"","sources":["../src/issueCredential.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAGpE,eAAO,MAAM,eAAe,kBAAmB,oBAAoB,iBAEhD,mBAAmB,cAClB,UAAU,mBACN,QAAQ,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2B5C,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"issuePresentation.d.ts","sourceRoot":"","sources":["../src/issuePresentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;
|
1
|
+
{"version":3,"file":"issuePresentation.d.ts","sourceRoot":"","sources":["../src/issuePresentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAGpE,eAAO,MAAM,iBAAiB,kBAAmB,oBAAoB,iBAElD,mBAAmB,gBAChB,UAAU,mBACR,QAAQ,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsB5C,CAAC"}
|
package/dist/types.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { JWK, UnsignedVC, VC, UnsignedVP, VP, VerificationCheck } from '@learncard/types';
|
1
|
+
import { JWK, UnsignedVC, VC, UnsignedVP, VP, VerificationCheck, DidDocument } from '@learncard/types';
|
2
2
|
import { Plugin, LearnCard } from '@learncard/core';
|
3
3
|
import { ProofOptions, InputMetadata } from '@learncard/didkit-plugin';
|
4
4
|
/** @group VC Plugin */
|
@@ -11,7 +11,7 @@ export type VCPluginDependentMethods = {
|
|
11
11
|
verifyCredential: (credential: VC, options?: ProofOptions) => Promise<VerificationCheck>;
|
12
12
|
issuePresentation: (presentation: UnsignedVP, options: ProofOptions, keypair: JWK) => Promise<VP>;
|
13
13
|
verifyPresentation: (presentation: VP | string, options?: ProofOptions) => Promise<VerificationCheck>;
|
14
|
-
resolveDid: (did: string, inputMetadata?: InputMetadata) => Promise<
|
14
|
+
resolveDid: (did: string, inputMetadata?: InputMetadata) => Promise<DidDocument>;
|
15
15
|
};
|
16
16
|
/** @group VC Plugin */
|
17
17
|
export type VCPluginMethods = {
|
package/dist/types.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
@@ -24,19 +24,38 @@ __export(src_exports, {
|
|
24
24
|
});
|
25
25
|
module.exports = __toCommonJS(src_exports);
|
26
26
|
|
27
|
+
// src/helpers.ts
|
28
|
+
var getDefaultVerificationMethod = /* @__PURE__ */ __name(async (learnCard, issuerDid) => {
|
29
|
+
const kp = learnCard.id.keypair();
|
30
|
+
if (!kp) {
|
31
|
+
throw new Error("Cannot get default verification method: unable to get subject keypair");
|
32
|
+
}
|
33
|
+
const issuerDidDoc = await learnCard.invoke.resolveDid(issuerDid);
|
34
|
+
const verificationMethodEntry = typeof issuerDidDoc === "string" ? void 0 : issuerDidDoc?.verificationMethod?.find((entry) => typeof entry === "string" ? false : entry?.publicKeyJwk?.x === kp.x);
|
35
|
+
const verificationMethod = typeof verificationMethodEntry !== "string" && verificationMethodEntry?.id || await learnCard.invoke.didToVerificationMethod(issuerDid);
|
36
|
+
return verificationMethod;
|
37
|
+
}, "getDefaultVerificationMethod");
|
38
|
+
|
27
39
|
// src/issueCredential.ts
|
28
40
|
var issueCredential = /* @__PURE__ */ __name((initLearnCard) => {
|
29
41
|
return async (learnCard, credential, signingOptions = {}) => {
|
30
42
|
const kp = learnCard.id.keypair();
|
31
43
|
if (!kp)
|
32
44
|
throw new Error("Cannot issue credential: Could not get subject keypair");
|
33
|
-
const verificationMethod = await learnCard.invoke.didToVerificationMethod(typeof credential.issuer === "string" ? credential.issuer : credential.issuer.id);
|
34
45
|
const options = {
|
35
|
-
verificationMethod,
|
36
46
|
proofPurpose: "assertionMethod",
|
37
47
|
type: "Ed25519Signature2020",
|
38
48
|
...signingOptions
|
39
49
|
};
|
50
|
+
if (!("verificationMethod" in options)) {
|
51
|
+
const issuerDid = typeof credential.issuer === "string" ? credential.issuer : credential.issuer.id;
|
52
|
+
options.verificationMethod = await getDefaultVerificationMethod(learnCard, issuerDid);
|
53
|
+
}
|
54
|
+
learnCard.debug?.("Signing with these options", {
|
55
|
+
credential,
|
56
|
+
options,
|
57
|
+
kp
|
58
|
+
});
|
40
59
|
return initLearnCard.invoke.issueCredential(credential, options, kp);
|
41
60
|
};
|
42
61
|
}, "issueCredential");
|
@@ -62,13 +81,13 @@ var issuePresentation = /* @__PURE__ */ __name((initLearnCard) => {
|
|
62
81
|
const kp = learnCard.id.keypair();
|
63
82
|
if (!kp)
|
64
83
|
throw new Error("Cannot issue credential: Could not get subject keypair");
|
65
|
-
const verificationMethod = await learnCard.invoke.didToVerificationMethod(learnCard.id.did());
|
66
84
|
const options = {
|
67
|
-
|
68
|
-
...signingOptions.proofFormat === "jwt" ? {} : { proofPurpose: "assertionMethod" },
|
69
|
-
...signingOptions.proofFormat === "jwt" ? {} : { type: "Ed25519Signature2020" },
|
85
|
+
...signingOptions.proofFormat === "jwt" ? {} : { proofPurpose: "assertionMethod", type: "Ed25519Signature2020" },
|
70
86
|
...signingOptions
|
71
87
|
};
|
88
|
+
if (!("verificationMethod" in options)) {
|
89
|
+
options.verificationMethod = await getDefaultVerificationMethod(learnCard, learnCard.id.did());
|
90
|
+
}
|
72
91
|
return initLearnCard.invoke.issuePresentation(presentation, options, kp);
|
73
92
|
};
|
74
93
|
}, "issuePresentation");
|
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"version": 3,
|
3
|
-
"sources": ["../src/index.ts", "../src/issueCredential.ts", "../src/verifyCredential.ts", "../src/issuePresentation.ts", "../src/verifyPresentation.ts", "../src/vc.ts"],
|
4
|
-
"sourcesContent": ["export { getVCPlugin } from './vc';\nexport * from './types';\n", "import { UnsignedVC } from '@learncard/types';\n\nimport { ProofOptions } from '@learncard/didkit-plugin';\nimport { VCDependentLearnCard, VCImplicitLearnCard } from './types';\n\nexport const issueCredential = (initLearnCard: VCDependentLearnCard) => {\n return async (\n learnCard: VCImplicitLearnCard,\n credential: UnsignedVC,\n signingOptions: Partial<ProofOptions> = {}\n ) => {\n const kp = learnCard.id.keypair();\n\n if (!kp) throw new Error('Cannot issue credential: Could not get subject keypair');\n\n const
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;
|
3
|
+
"sources": ["../src/index.ts", "../src/helpers.ts", "../src/issueCredential.ts", "../src/verifyCredential.ts", "../src/issuePresentation.ts", "../src/verifyPresentation.ts", "../src/vc.ts"],
|
4
|
+
"sourcesContent": ["export { getVCPlugin } from './vc';\nexport * from './types';\n", "import { VCImplicitLearnCard } from './types';\n\n/**\n * Determines the default verification method to use for a given did by resolving it and looking\n * for a keypair that matches the default keypair for the LearnCard\n */\nexport const getDefaultVerificationMethod = async (\n learnCard: VCImplicitLearnCard,\n issuerDid: string\n) => {\n const kp = learnCard.id.keypair();\n\n if (!kp) {\n throw new Error('Cannot get default verification method: unable to get subject keypair');\n }\n\n const issuerDidDoc = await learnCard.invoke.resolveDid(issuerDid);\n\n const verificationMethodEntry =\n typeof issuerDidDoc === 'string'\n ? undefined\n : issuerDidDoc?.verificationMethod?.find(entry =>\n typeof entry === 'string' ? false : entry?.publicKeyJwk?.x === kp.x\n );\n\n const verificationMethod =\n (typeof verificationMethodEntry !== 'string' && verificationMethodEntry?.id) ||\n (await learnCard.invoke.didToVerificationMethod(issuerDid));\n\n return verificationMethod;\n};\n", "import { UnsignedVC } from '@learncard/types';\n\nimport { ProofOptions } from '@learncard/didkit-plugin';\nimport { VCDependentLearnCard, VCImplicitLearnCard } from './types';\nimport { getDefaultVerificationMethod } from './helpers';\n\nexport const issueCredential = (initLearnCard: VCDependentLearnCard) => {\n return async (\n learnCard: VCImplicitLearnCard,\n credential: UnsignedVC,\n signingOptions: Partial<ProofOptions> = {}\n ) => {\n const kp = learnCard.id.keypair();\n\n if (!kp) throw new Error('Cannot issue credential: Could not get subject keypair');\n\n const options = {\n proofPurpose: 'assertionMethod',\n type: 'Ed25519Signature2020',\n ...signingOptions,\n };\n\n if (!('verificationMethod' in options)) {\n const issuerDid =\n typeof credential.issuer === 'string' ? credential.issuer : credential.issuer.id!;\n\n options.verificationMethod = await getDefaultVerificationMethod(learnCard, issuerDid);\n }\n\n learnCard.debug?.('Signing with these options', {\n credential,\n options,\n kp,\n });\n\n return initLearnCard.invoke.issueCredential(credential, options, kp);\n };\n};\n", "import { VC } from '@learncard/types';\n\nimport { ProofOptions } from '@learncard/didkit-plugin';\nimport { VCDependentLearnCard, VCImplicitLearnCard } from './types';\n\nexport const verifyCredential = (initLearnCard: VCDependentLearnCard) => {\n return async (\n _learnCard: VCImplicitLearnCard,\n credential: VC,\n _options: Partial<ProofOptions> = {}\n ) => {\n const options = _options;\n\n if (!options.checks) {\n options.checks = ['proof'];\n if (credential.credentialStatus) options.checks.push('credentialStatus');\n if (credential.credentialSchema) options.checks.push('credentialSchema');\n }\n\n return initLearnCard.invoke.verifyCredential(credential, options);\n };\n};\n", "import { UnsignedVP } from '@learncard/types';\n\nimport { ProofOptions } from '@learncard/didkit-plugin';\nimport { VCDependentLearnCard, VCImplicitLearnCard } from './types';\nimport { getDefaultVerificationMethod } from './helpers';\n\nexport const issuePresentation = (initLearnCard: VCDependentLearnCard) => {\n return async (\n learnCard: VCImplicitLearnCard,\n presentation: UnsignedVP,\n signingOptions: Partial<ProofOptions> = {}\n ) => {\n const kp = learnCard.id.keypair();\n\n if (!kp) throw new Error('Cannot issue credential: Could not get subject keypair');\n\n const options = {\n ...(signingOptions.proofFormat === 'jwt'\n ? {}\n : { proofPurpose: 'assertionMethod', type: 'Ed25519Signature2020' }),\n ...signingOptions,\n };\n\n if (!('verificationMethod' in options)) {\n options.verificationMethod = await getDefaultVerificationMethod(\n learnCard,\n learnCard.id.did()\n );\n }\n\n return initLearnCard.invoke.issuePresentation(presentation, options, kp);\n };\n};\n", "import { VP } from '@learncard/types';\n\nimport { ProofOptions } from '@learncard/didkit-plugin';\nimport { VCDependentLearnCard, VCImplicitLearnCard } from './types';\n\nexport const verifyPresentation = (initLearnCard: VCDependentLearnCard) => {\n return async (\n _learnCard: VCImplicitLearnCard,\n presentation: VP | string,\n options: Partial<ProofOptions> = {}\n ) => {\n return initLearnCard.invoke.verifyPresentation(presentation, options);\n };\n};\n", "import { issueCredential } from './issueCredential';\nimport { verifyCredential } from './verifyCredential';\nimport { issuePresentation } from './issuePresentation';\nimport { verifyPresentation } from './verifyPresentation';\n\nimport { VCDependentLearnCard, VCPlugin } from './types';\nimport { UnsignedVP } from '@learncard/types';\n\n/**\n * @group Plugins\n */\nexport const getVCPlugin = (learnCard: VCDependentLearnCard): VCPlugin => {\n return {\n name: 'VC',\n displayName: 'VC',\n description:\n 'Handles the infrastructure needed to issue and verify credentials and presentations',\n methods: {\n issueCredential: issueCredential(learnCard),\n verifyCredential: verifyCredential(learnCard),\n issuePresentation: issuePresentation(learnCard),\n verifyPresentation: verifyPresentation(learnCard),\n getTestVc: (_learnCard, subject = 'did:example:d23dd687a7dc6787646f2eb98d0') => {\n const did = _learnCard.id.did();\n\n return {\n '@context': ['https://www.w3.org/2018/credentials/v1'],\n id: 'http://example.org/credentials/3731',\n type: ['VerifiableCredential'],\n issuer: did,\n issuanceDate: '2020-08-19T21:41:50Z',\n credentialSubject: { id: subject },\n };\n },\n getTestVp: async (_learnCard, _credential) => {\n const credential =\n _credential ||\n (await _learnCard.invoke.issueCredential(_learnCard.invoke.getTestVc()));\n\n const did = _learnCard.id.did();\n\n return {\n '@context': ['https://www.w3.org/2018/credentials/v1'],\n type: ['VerifiablePresentation'],\n holder: did,\n verifiableCredential: credential,\n };\n },\n getDidAuthVp: async (_learnCard, options = {}) => {\n const did = _learnCard.id.did();\n const unsignedVP: UnsignedVP = {\n '@context': ['https://www.w3.org/2018/credentials/v1'],\n type: ['VerifiablePresentation'],\n holder: did,\n };\n\n return _learnCard.invoke.issuePresentation(unsignedVP, {\n proofPurpose: 'authentication',\n ...options,\n });\n },\n },\n };\n};\n"],
|
5
|
+
"mappings": "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",
|
6
6
|
"names": []
|
7
7
|
}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
var
|
1
|
+
var d=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var o=(i,e)=>d(i,"name",{value:e,configurable:!0});var g=(i,e)=>{for(var t in e)d(i,t,{get:e[t],enumerable:!0})},P=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of l(e))!h.call(i,r)&&r!==t&&d(i,r,{get:()=>e[r],enumerable:!(n=V(e,r))||n.enumerable});return i};var y=i=>P(d({},"__esModule",{value:!0}),i);var v={};g(v,{getVCPlugin:()=>C});module.exports=y(v);var p=o(async(i,e)=>{let t=i.id.keypair();if(!t)throw new Error("Cannot get default verification method: unable to get subject keypair");let n=await i.invoke.resolveDid(e),r=typeof n=="string"?void 0:n?.verificationMethod?.find(a=>typeof a=="string"?!1:a?.publicKeyJwk?.x===t.x);return typeof r!="string"&&r?.id||await i.invoke.didToVerificationMethod(e)},"getDefaultVerificationMethod");var c=o(i=>async(e,t,n={})=>{let r=e.id.keypair();if(!r)throw new Error("Cannot issue credential: Could not get subject keypair");let s={proofPurpose:"assertionMethod",type:"Ed25519Signature2020",...n};if(!("verificationMethod"in s)){let a=typeof t.issuer=="string"?t.issuer:t.issuer.id;s.verificationMethod=await p(e,a)}return e.debug?.("Signing with these options",{credential:t,options:s,kp:r}),i.invoke.issueCredential(t,s,r)},"issueCredential");var f=o(i=>async(e,t,n={})=>{let r=n;return r.checks||(r.checks=["proof"],t.credentialStatus&&r.checks.push("credentialStatus"),t.credentialSchema&&r.checks.push("credentialSchema")),i.invoke.verifyCredential(t,r)},"verifyCredential");var u=o(i=>async(e,t,n={})=>{let r=e.id.keypair();if(!r)throw new Error("Cannot issue credential: Could not get subject keypair");let s={...n.proofFormat==="jwt"?{}:{proofPurpose:"assertionMethod",type:"Ed25519Signature2020"},...n};return"verificationMethod"in s||(s.verificationMethod=await p(e,e.id.did())),i.invoke.issuePresentation(t,s,r)},"issuePresentation");var m=o(i=>async(e,t,n={})=>i.invoke.verifyPresentation(t,n),"verifyPresentation");var C=o(i=>({name:"VC",displayName:"VC",description:"Handles the infrastructure needed to issue and verify credentials and presentations",methods:{issueCredential:c(i),verifyCredential:f(i),issuePresentation:u(i),verifyPresentation:m(i),getTestVc:(e,t="did:example:d23dd687a7dc6787646f2eb98d0")=>{let n=e.id.did();return{"@context":["https://www.w3.org/2018/credentials/v1"],id:"http://example.org/credentials/3731",type:["VerifiableCredential"],issuer:n,issuanceDate:"2020-08-19T21:41:50Z",credentialSubject:{id:t}}},getTestVp:async(e,t)=>{let n=t||await e.invoke.issueCredential(e.invoke.getTestVc()),r=e.id.did();return{"@context":["https://www.w3.org/2018/credentials/v1"],type:["VerifiablePresentation"],holder:r,verifiableCredential:n}},getDidAuthVp:async(e,t={})=>{let n=e.id.did(),r={"@context":["https://www.w3.org/2018/credentials/v1"],type:["VerifiablePresentation"],holder:n};return e.invoke.issuePresentation(r,{proofPurpose:"authentication",...t})}}}),"getVCPlugin");
|
2
2
|
//# sourceMappingURL=vc-plugin.cjs.production.min.js.map
|
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"version": 3,
|
3
|
-
"sources": ["../src/index.ts", "../src/issueCredential.ts", "../src/verifyCredential.ts", "../src/issuePresentation.ts", "../src/verifyPresentation.ts", "../src/vc.ts"],
|
4
|
-
"sourcesContent": ["export { getVCPlugin } from './vc';\nexport * from './types';\n", "import { UnsignedVC } from '@learncard/types';\n\nimport { ProofOptions } from '@learncard/didkit-plugin';\nimport { VCDependentLearnCard, VCImplicitLearnCard } from './types';\n\nexport const issueCredential = (initLearnCard: VCDependentLearnCard) => {\n return async (\n learnCard: VCImplicitLearnCard,\n credential: UnsignedVC,\n signingOptions: Partial<ProofOptions> = {}\n ) => {\n const kp = learnCard.id.keypair();\n\n if (!kp) throw new Error('Cannot issue credential: Could not get subject keypair');\n\n const
|
5
|
-
"mappings": "+cAAA,
|
3
|
+
"sources": ["../src/index.ts", "../src/helpers.ts", "../src/issueCredential.ts", "../src/verifyCredential.ts", "../src/issuePresentation.ts", "../src/verifyPresentation.ts", "../src/vc.ts"],
|
4
|
+
"sourcesContent": ["export { getVCPlugin } from './vc';\nexport * from './types';\n", "import { VCImplicitLearnCard } from './types';\n\n/**\n * Determines the default verification method to use for a given did by resolving it and looking\n * for a keypair that matches the default keypair for the LearnCard\n */\nexport const getDefaultVerificationMethod = async (\n learnCard: VCImplicitLearnCard,\n issuerDid: string\n) => {\n const kp = learnCard.id.keypair();\n\n if (!kp) {\n throw new Error('Cannot get default verification method: unable to get subject keypair');\n }\n\n const issuerDidDoc = await learnCard.invoke.resolveDid(issuerDid);\n\n const verificationMethodEntry =\n typeof issuerDidDoc === 'string'\n ? undefined\n : issuerDidDoc?.verificationMethod?.find(entry =>\n typeof entry === 'string' ? false : entry?.publicKeyJwk?.x === kp.x\n );\n\n const verificationMethod =\n (typeof verificationMethodEntry !== 'string' && verificationMethodEntry?.id) ||\n (await learnCard.invoke.didToVerificationMethod(issuerDid));\n\n return verificationMethod;\n};\n", "import { UnsignedVC } from '@learncard/types';\n\nimport { ProofOptions } from '@learncard/didkit-plugin';\nimport { VCDependentLearnCard, VCImplicitLearnCard } from './types';\nimport { getDefaultVerificationMethod } from './helpers';\n\nexport const issueCredential = (initLearnCard: VCDependentLearnCard) => {\n return async (\n learnCard: VCImplicitLearnCard,\n credential: UnsignedVC,\n signingOptions: Partial<ProofOptions> = {}\n ) => {\n const kp = learnCard.id.keypair();\n\n if (!kp) throw new Error('Cannot issue credential: Could not get subject keypair');\n\n const options = {\n proofPurpose: 'assertionMethod',\n type: 'Ed25519Signature2020',\n ...signingOptions,\n };\n\n if (!('verificationMethod' in options)) {\n const issuerDid =\n typeof credential.issuer === 'string' ? credential.issuer : credential.issuer.id!;\n\n options.verificationMethod = await getDefaultVerificationMethod(learnCard, issuerDid);\n }\n\n learnCard.debug?.('Signing with these options', {\n credential,\n options,\n kp,\n });\n\n return initLearnCard.invoke.issueCredential(credential, options, kp);\n };\n};\n", "import { VC } from '@learncard/types';\n\nimport { ProofOptions } from '@learncard/didkit-plugin';\nimport { VCDependentLearnCard, VCImplicitLearnCard } from './types';\n\nexport const verifyCredential = (initLearnCard: VCDependentLearnCard) => {\n return async (\n _learnCard: VCImplicitLearnCard,\n credential: VC,\n _options: Partial<ProofOptions> = {}\n ) => {\n const options = _options;\n\n if (!options.checks) {\n options.checks = ['proof'];\n if (credential.credentialStatus) options.checks.push('credentialStatus');\n if (credential.credentialSchema) options.checks.push('credentialSchema');\n }\n\n return initLearnCard.invoke.verifyCredential(credential, options);\n };\n};\n", "import { UnsignedVP } from '@learncard/types';\n\nimport { ProofOptions } from '@learncard/didkit-plugin';\nimport { VCDependentLearnCard, VCImplicitLearnCard } from './types';\nimport { getDefaultVerificationMethod } from './helpers';\n\nexport const issuePresentation = (initLearnCard: VCDependentLearnCard) => {\n return async (\n learnCard: VCImplicitLearnCard,\n presentation: UnsignedVP,\n signingOptions: Partial<ProofOptions> = {}\n ) => {\n const kp = learnCard.id.keypair();\n\n if (!kp) throw new Error('Cannot issue credential: Could not get subject keypair');\n\n const options = {\n ...(signingOptions.proofFormat === 'jwt'\n ? {}\n : { proofPurpose: 'assertionMethod', type: 'Ed25519Signature2020' }),\n ...signingOptions,\n };\n\n if (!('verificationMethod' in options)) {\n options.verificationMethod = await getDefaultVerificationMethod(\n learnCard,\n learnCard.id.did()\n );\n }\n\n return initLearnCard.invoke.issuePresentation(presentation, options, kp);\n };\n};\n", "import { VP } from '@learncard/types';\n\nimport { ProofOptions } from '@learncard/didkit-plugin';\nimport { VCDependentLearnCard, VCImplicitLearnCard } from './types';\n\nexport const verifyPresentation = (initLearnCard: VCDependentLearnCard) => {\n return async (\n _learnCard: VCImplicitLearnCard,\n presentation: VP | string,\n options: Partial<ProofOptions> = {}\n ) => {\n return initLearnCard.invoke.verifyPresentation(presentation, options);\n };\n};\n", "import { issueCredential } from './issueCredential';\nimport { verifyCredential } from './verifyCredential';\nimport { issuePresentation } from './issuePresentation';\nimport { verifyPresentation } from './verifyPresentation';\n\nimport { VCDependentLearnCard, VCPlugin } from './types';\nimport { UnsignedVP } from '@learncard/types';\n\n/**\n * @group Plugins\n */\nexport const getVCPlugin = (learnCard: VCDependentLearnCard): VCPlugin => {\n return {\n name: 'VC',\n displayName: 'VC',\n description:\n 'Handles the infrastructure needed to issue and verify credentials and presentations',\n methods: {\n issueCredential: issueCredential(learnCard),\n verifyCredential: verifyCredential(learnCard),\n issuePresentation: issuePresentation(learnCard),\n verifyPresentation: verifyPresentation(learnCard),\n getTestVc: (_learnCard, subject = 'did:example:d23dd687a7dc6787646f2eb98d0') => {\n const did = _learnCard.id.did();\n\n return {\n '@context': ['https://www.w3.org/2018/credentials/v1'],\n id: 'http://example.org/credentials/3731',\n type: ['VerifiableCredential'],\n issuer: did,\n issuanceDate: '2020-08-19T21:41:50Z',\n credentialSubject: { id: subject },\n };\n },\n getTestVp: async (_learnCard, _credential) => {\n const credential =\n _credential ||\n (await _learnCard.invoke.issueCredential(_learnCard.invoke.getTestVc()));\n\n const did = _learnCard.id.did();\n\n return {\n '@context': ['https://www.w3.org/2018/credentials/v1'],\n type: ['VerifiablePresentation'],\n holder: did,\n verifiableCredential: credential,\n };\n },\n getDidAuthVp: async (_learnCard, options = {}) => {\n const did = _learnCard.id.did();\n const unsignedVP: UnsignedVP = {\n '@context': ['https://www.w3.org/2018/credentials/v1'],\n type: ['VerifiablePresentation'],\n holder: did,\n };\n\n return _learnCard.invoke.issuePresentation(unsignedVP, {\n proofPurpose: 'authentication',\n ...options,\n });\n },\n },\n };\n};\n"],
|
5
|
+
"mappings": "+cAAA,sDCMO,GAAM,GAA+B,QACxC,EACA,IACC,CACD,GAAM,GAAK,EAAU,GAAG,QAAQ,EAEhC,GAAI,CAAC,EACD,KAAM,IAAI,OAAM,uEAAuE,EAG3F,GAAM,GAAe,KAAM,GAAU,OAAO,WAAW,CAAS,EAE1D,EACF,MAAO,IAAiB,SAClB,OACA,GAAc,oBAAoB,KAAK,GACrC,MAAO,IAAU,SAAW,GAAQ,GAAO,cAAc,IAAM,EAAG,CACtE,EAMR,MAHK,OAAO,IAA4B,UAAY,GAAyB,IACxE,KAAM,GAAU,OAAO,wBAAwB,CAAS,CAGjE,EAxB4C,gCCArC,GAAM,GAAkB,EAAC,GACrB,MACH,EACA,EACA,EAAwC,CAAC,IACxC,CACD,GAAM,GAAK,EAAU,GAAG,QAAQ,EAEhC,GAAI,CAAC,EAAI,KAAM,IAAI,OAAM,wDAAwD,EAEjF,GAAM,GAAU,CACZ,aAAc,kBACd,KAAM,0BACH,CACP,EAEA,GAAI,CAAE,uBAAwB,IAAU,CACpC,GAAM,GACF,MAAO,GAAW,QAAW,SAAW,EAAW,OAAS,EAAW,OAAO,GAElF,EAAQ,mBAAqB,KAAM,GAA6B,EAAW,CAAS,CACxF,CAEA,SAAU,QAAQ,6BAA8B,CAC5C,aACA,UACA,IACJ,CAAC,EAEM,EAAc,OAAO,gBAAgB,EAAY,EAAS,CAAE,CACvE,EA9B2B,mBCDxB,GAAM,GAAmB,EAAC,GACtB,MACH,EACA,EACA,EAAkC,CAAC,IAClC,CACD,GAAM,GAAU,EAEhB,MAAK,GAAQ,QACT,GAAQ,OAAS,CAAC,OAAO,EACrB,EAAW,kBAAkB,EAAQ,OAAO,KAAK,kBAAkB,EACnE,EAAW,kBAAkB,EAAQ,OAAO,KAAK,kBAAkB,GAGpE,EAAc,OAAO,iBAAiB,EAAY,CAAO,CACpE,EAf4B,oBCCzB,GAAM,GAAoB,EAAC,GACvB,MACH,EACA,EACA,EAAwC,CAAC,IACxC,CACD,GAAM,GAAK,EAAU,GAAG,QAAQ,EAEhC,GAAI,CAAC,EAAI,KAAM,IAAI,OAAM,wDAAwD,EAEjF,GAAM,GAAU,IACR,EAAe,cAAgB,MAC7B,CAAC,EACD,CAAE,aAAc,kBAAmB,KAAM,sBAAuB,KACnE,CACP,EAEA,MAAM,sBAAwB,IAC1B,GAAQ,mBAAqB,KAAM,GAC/B,EACA,EAAU,GAAG,IAAI,CACrB,GAGG,EAAc,OAAO,kBAAkB,EAAc,EAAS,CAAE,CAC3E,EAzB6B,qBCD1B,GAAM,GAAqB,EAAC,GACxB,MACH,EACA,EACA,EAAiC,CAAC,IAE3B,EAAc,OAAO,mBAAmB,EAAc,CAAO,EAN1C,sBCM3B,GAAM,GAAc,EAAC,GACjB,EACH,KAAM,KACN,YAAa,KACb,YACI,sFACJ,QAAS,CACL,gBAAiB,EAAgB,CAAS,EAC1C,iBAAkB,EAAiB,CAAS,EAC5C,kBAAmB,EAAkB,CAAS,EAC9C,mBAAoB,EAAmB,CAAS,EAChD,UAAW,CAAC,EAAY,EAAU,4CAA8C,CAC5E,GAAM,GAAM,EAAW,GAAG,IAAI,EAE9B,MAAO,CACH,WAAY,CAAC,wCAAwC,EACrD,GAAI,sCACJ,KAAM,CAAC,sBAAsB,EAC7B,OAAQ,EACR,aAAc,uBACd,kBAAmB,CAAE,GAAI,CAAQ,CACrC,CACJ,EACA,UAAW,MAAO,EAAY,IAAgB,CAC1C,GAAM,GACF,GACC,KAAM,GAAW,OAAO,gBAAgB,EAAW,OAAO,UAAU,CAAC,EAEpE,EAAM,EAAW,GAAG,IAAI,EAE9B,MAAO,CACH,WAAY,CAAC,wCAAwC,EACrD,KAAM,CAAC,wBAAwB,EAC/B,OAAQ,EACR,qBAAsB,CAC1B,CACJ,EACA,aAAc,MAAO,EAAY,EAAU,CAAC,IAAM,CAC9C,GAAM,GAAM,EAAW,GAAG,IAAI,EACxB,EAAyB,CAC3B,WAAY,CAAC,wCAAwC,EACrD,KAAM,CAAC,wBAAwB,EAC/B,OAAQ,CACZ,EAEA,MAAO,GAAW,OAAO,kBAAkB,EAAY,CACnD,aAAc,oBACX,CACP,CAAC,CACL,CACJ,CACJ,GAnDuB",
|
6
6
|
"names": []
|
7
7
|
}
|
package/dist/vc-plugin.esm.js
CHANGED
@@ -1,19 +1,38 @@
|
|
1
1
|
var __defProp = Object.defineProperty;
|
2
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
3
3
|
|
4
|
+
// src/helpers.ts
|
5
|
+
var getDefaultVerificationMethod = /* @__PURE__ */ __name(async (learnCard, issuerDid) => {
|
6
|
+
const kp = learnCard.id.keypair();
|
7
|
+
if (!kp) {
|
8
|
+
throw new Error("Cannot get default verification method: unable to get subject keypair");
|
9
|
+
}
|
10
|
+
const issuerDidDoc = await learnCard.invoke.resolveDid(issuerDid);
|
11
|
+
const verificationMethodEntry = typeof issuerDidDoc === "string" ? void 0 : issuerDidDoc?.verificationMethod?.find((entry) => typeof entry === "string" ? false : entry?.publicKeyJwk?.x === kp.x);
|
12
|
+
const verificationMethod = typeof verificationMethodEntry !== "string" && verificationMethodEntry?.id || await learnCard.invoke.didToVerificationMethod(issuerDid);
|
13
|
+
return verificationMethod;
|
14
|
+
}, "getDefaultVerificationMethod");
|
15
|
+
|
4
16
|
// src/issueCredential.ts
|
5
17
|
var issueCredential = /* @__PURE__ */ __name((initLearnCard) => {
|
6
18
|
return async (learnCard, credential, signingOptions = {}) => {
|
7
19
|
const kp = learnCard.id.keypair();
|
8
20
|
if (!kp)
|
9
21
|
throw new Error("Cannot issue credential: Could not get subject keypair");
|
10
|
-
const verificationMethod = await learnCard.invoke.didToVerificationMethod(typeof credential.issuer === "string" ? credential.issuer : credential.issuer.id);
|
11
22
|
const options = {
|
12
|
-
verificationMethod,
|
13
23
|
proofPurpose: "assertionMethod",
|
14
24
|
type: "Ed25519Signature2020",
|
15
25
|
...signingOptions
|
16
26
|
};
|
27
|
+
if (!("verificationMethod" in options)) {
|
28
|
+
const issuerDid = typeof credential.issuer === "string" ? credential.issuer : credential.issuer.id;
|
29
|
+
options.verificationMethod = await getDefaultVerificationMethod(learnCard, issuerDid);
|
30
|
+
}
|
31
|
+
learnCard.debug?.("Signing with these options", {
|
32
|
+
credential,
|
33
|
+
options,
|
34
|
+
kp
|
35
|
+
});
|
17
36
|
return initLearnCard.invoke.issueCredential(credential, options, kp);
|
18
37
|
};
|
19
38
|
}, "issueCredential");
|
@@ -39,13 +58,13 @@ var issuePresentation = /* @__PURE__ */ __name((initLearnCard) => {
|
|
39
58
|
const kp = learnCard.id.keypair();
|
40
59
|
if (!kp)
|
41
60
|
throw new Error("Cannot issue credential: Could not get subject keypair");
|
42
|
-
const verificationMethod = await learnCard.invoke.didToVerificationMethod(learnCard.id.did());
|
43
61
|
const options = {
|
44
|
-
|
45
|
-
...signingOptions.proofFormat === "jwt" ? {} : { proofPurpose: "assertionMethod" },
|
46
|
-
...signingOptions.proofFormat === "jwt" ? {} : { type: "Ed25519Signature2020" },
|
62
|
+
...signingOptions.proofFormat === "jwt" ? {} : { proofPurpose: "assertionMethod", type: "Ed25519Signature2020" },
|
47
63
|
...signingOptions
|
48
64
|
};
|
65
|
+
if (!("verificationMethod" in options)) {
|
66
|
+
options.verificationMethod = await getDefaultVerificationMethod(learnCard, learnCard.id.did());
|
67
|
+
}
|
49
68
|
return initLearnCard.invoke.issuePresentation(presentation, options, kp);
|
50
69
|
};
|
51
70
|
}, "issuePresentation");
|
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"version": 3,
|
3
|
-
"sources": ["../src/issueCredential.ts", "../src/verifyCredential.ts", "../src/issuePresentation.ts", "../src/verifyPresentation.ts", "../src/vc.ts"],
|
4
|
-
"sourcesContent": ["import { UnsignedVC } from '@learncard/types';\n\nimport { ProofOptions } from '@learncard/didkit-plugin';\nimport { VCDependentLearnCard, VCImplicitLearnCard } from './types';\n\nexport const issueCredential = (initLearnCard: VCDependentLearnCard) => {\n return async (\n learnCard: VCImplicitLearnCard,\n credential: UnsignedVC,\n signingOptions: Partial<ProofOptions> = {}\n ) => {\n const kp = learnCard.id.keypair();\n\n if (!kp) throw new Error('Cannot issue credential: Could not get subject keypair');\n\n const
|
5
|
-
"mappings": ";;;;
|
3
|
+
"sources": ["../src/helpers.ts", "../src/issueCredential.ts", "../src/verifyCredential.ts", "../src/issuePresentation.ts", "../src/verifyPresentation.ts", "../src/vc.ts"],
|
4
|
+
"sourcesContent": ["import { VCImplicitLearnCard } from './types';\n\n/**\n * Determines the default verification method to use for a given did by resolving it and looking\n * for a keypair that matches the default keypair for the LearnCard\n */\nexport const getDefaultVerificationMethod = async (\n learnCard: VCImplicitLearnCard,\n issuerDid: string\n) => {\n const kp = learnCard.id.keypair();\n\n if (!kp) {\n throw new Error('Cannot get default verification method: unable to get subject keypair');\n }\n\n const issuerDidDoc = await learnCard.invoke.resolveDid(issuerDid);\n\n const verificationMethodEntry =\n typeof issuerDidDoc === 'string'\n ? undefined\n : issuerDidDoc?.verificationMethod?.find(entry =>\n typeof entry === 'string' ? false : entry?.publicKeyJwk?.x === kp.x\n );\n\n const verificationMethod =\n (typeof verificationMethodEntry !== 'string' && verificationMethodEntry?.id) ||\n (await learnCard.invoke.didToVerificationMethod(issuerDid));\n\n return verificationMethod;\n};\n", "import { UnsignedVC } from '@learncard/types';\n\nimport { ProofOptions } from '@learncard/didkit-plugin';\nimport { VCDependentLearnCard, VCImplicitLearnCard } from './types';\nimport { getDefaultVerificationMethod } from './helpers';\n\nexport const issueCredential = (initLearnCard: VCDependentLearnCard) => {\n return async (\n learnCard: VCImplicitLearnCard,\n credential: UnsignedVC,\n signingOptions: Partial<ProofOptions> = {}\n ) => {\n const kp = learnCard.id.keypair();\n\n if (!kp) throw new Error('Cannot issue credential: Could not get subject keypair');\n\n const options = {\n proofPurpose: 'assertionMethod',\n type: 'Ed25519Signature2020',\n ...signingOptions,\n };\n\n if (!('verificationMethod' in options)) {\n const issuerDid =\n typeof credential.issuer === 'string' ? credential.issuer : credential.issuer.id!;\n\n options.verificationMethod = await getDefaultVerificationMethod(learnCard, issuerDid);\n }\n\n learnCard.debug?.('Signing with these options', {\n credential,\n options,\n kp,\n });\n\n return initLearnCard.invoke.issueCredential(credential, options, kp);\n };\n};\n", "import { VC } from '@learncard/types';\n\nimport { ProofOptions } from '@learncard/didkit-plugin';\nimport { VCDependentLearnCard, VCImplicitLearnCard } from './types';\n\nexport const verifyCredential = (initLearnCard: VCDependentLearnCard) => {\n return async (\n _learnCard: VCImplicitLearnCard,\n credential: VC,\n _options: Partial<ProofOptions> = {}\n ) => {\n const options = _options;\n\n if (!options.checks) {\n options.checks = ['proof'];\n if (credential.credentialStatus) options.checks.push('credentialStatus');\n if (credential.credentialSchema) options.checks.push('credentialSchema');\n }\n\n return initLearnCard.invoke.verifyCredential(credential, options);\n };\n};\n", "import { UnsignedVP } from '@learncard/types';\n\nimport { ProofOptions } from '@learncard/didkit-plugin';\nimport { VCDependentLearnCard, VCImplicitLearnCard } from './types';\nimport { getDefaultVerificationMethod } from './helpers';\n\nexport const issuePresentation = (initLearnCard: VCDependentLearnCard) => {\n return async (\n learnCard: VCImplicitLearnCard,\n presentation: UnsignedVP,\n signingOptions: Partial<ProofOptions> = {}\n ) => {\n const kp = learnCard.id.keypair();\n\n if (!kp) throw new Error('Cannot issue credential: Could not get subject keypair');\n\n const options = {\n ...(signingOptions.proofFormat === 'jwt'\n ? {}\n : { proofPurpose: 'assertionMethod', type: 'Ed25519Signature2020' }),\n ...signingOptions,\n };\n\n if (!('verificationMethod' in options)) {\n options.verificationMethod = await getDefaultVerificationMethod(\n learnCard,\n learnCard.id.did()\n );\n }\n\n return initLearnCard.invoke.issuePresentation(presentation, options, kp);\n };\n};\n", "import { VP } from '@learncard/types';\n\nimport { ProofOptions } from '@learncard/didkit-plugin';\nimport { VCDependentLearnCard, VCImplicitLearnCard } from './types';\n\nexport const verifyPresentation = (initLearnCard: VCDependentLearnCard) => {\n return async (\n _learnCard: VCImplicitLearnCard,\n presentation: VP | string,\n options: Partial<ProofOptions> = {}\n ) => {\n return initLearnCard.invoke.verifyPresentation(presentation, options);\n };\n};\n", "import { issueCredential } from './issueCredential';\nimport { verifyCredential } from './verifyCredential';\nimport { issuePresentation } from './issuePresentation';\nimport { verifyPresentation } from './verifyPresentation';\n\nimport { VCDependentLearnCard, VCPlugin } from './types';\nimport { UnsignedVP } from '@learncard/types';\n\n/**\n * @group Plugins\n */\nexport const getVCPlugin = (learnCard: VCDependentLearnCard): VCPlugin => {\n return {\n name: 'VC',\n displayName: 'VC',\n description:\n 'Handles the infrastructure needed to issue and verify credentials and presentations',\n methods: {\n issueCredential: issueCredential(learnCard),\n verifyCredential: verifyCredential(learnCard),\n issuePresentation: issuePresentation(learnCard),\n verifyPresentation: verifyPresentation(learnCard),\n getTestVc: (_learnCard, subject = 'did:example:d23dd687a7dc6787646f2eb98d0') => {\n const did = _learnCard.id.did();\n\n return {\n '@context': ['https://www.w3.org/2018/credentials/v1'],\n id: 'http://example.org/credentials/3731',\n type: ['VerifiableCredential'],\n issuer: did,\n issuanceDate: '2020-08-19T21:41:50Z',\n credentialSubject: { id: subject },\n };\n },\n getTestVp: async (_learnCard, _credential) => {\n const credential =\n _credential ||\n (await _learnCard.invoke.issueCredential(_learnCard.invoke.getTestVc()));\n\n const did = _learnCard.id.did();\n\n return {\n '@context': ['https://www.w3.org/2018/credentials/v1'],\n type: ['VerifiablePresentation'],\n holder: did,\n verifiableCredential: credential,\n };\n },\n getDidAuthVp: async (_learnCard, options = {}) => {\n const did = _learnCard.id.did();\n const unsignedVP: UnsignedVP = {\n '@context': ['https://www.w3.org/2018/credentials/v1'],\n type: ['VerifiablePresentation'],\n holder: did,\n };\n\n return _learnCard.invoke.issuePresentation(unsignedVP, {\n proofPurpose: 'authentication',\n ...options,\n });\n },\n },\n };\n};\n"],
|
5
|
+
"mappings": "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",
|
6
6
|
"names": []
|
7
7
|
}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@learncard/vc-plugin",
|
3
|
-
"version": "1.1.
|
3
|
+
"version": "1.1.10",
|
4
4
|
"description": "",
|
5
5
|
"main": "./dist/index.js",
|
6
6
|
"module": "./dist/vc-plugin.esm.js",
|
@@ -30,9 +30,9 @@
|
|
30
30
|
},
|
31
31
|
"types": "./dist/index.d.ts",
|
32
32
|
"dependencies": {
|
33
|
-
"@learncard/
|
34
|
-
"@learncard/
|
35
|
-
"@learncard/
|
33
|
+
"@learncard/core": "9.2.1",
|
34
|
+
"@learncard/types": "5.5.1",
|
35
|
+
"@learncard/didkit-plugin": "^1.4.5"
|
36
36
|
},
|
37
37
|
"scripts": {
|
38
38
|
"build": "node ./scripts/build.mjs && shx cp ./scripts/mixedEntypoint.js ./dist/index.js && tsc --p tsconfig.json",
|