@learncard/core 5.1.1 → 6.1.0

Sign up to get free protection for your applications and to get access to all the features.
package/dist/core.esm.js CHANGED
@@ -35278,6 +35278,34 @@ import "abort-controller/polyfill";
35278
35278
  import crypto2 from "isomorphic-webcrypto";
35279
35279
  if (typeof window === "undefined" && !globalThis.crypto)
35280
35280
  globalThis.crypto = crypto2;
35281
+ var crypto_default = crypto2;
35282
+
35283
+ // src/wallet/base/functions/passwordToKey.ts
35284
+ var passwordToKey = /* @__PURE__ */ __name((password, salt = "salt", iterations = 1e5, digest2 = "SHA-256") => __async(void 0, null, function* () {
35285
+ var saltBuffer = Buffer.from(salt);
35286
+ var passphraseKey = Buffer.from(password);
35287
+ return crypto_default.subtle.importKey("raw", passphraseKey, { name: "PBKDF2" }, false, [
35288
+ "deriveBits",
35289
+ "deriveKey"
35290
+ ]).then(function(key2) {
35291
+ return crypto_default.subtle.deriveKey({
35292
+ name: "PBKDF2",
35293
+ salt: saltBuffer,
35294
+ iterations,
35295
+ hash: digest2
35296
+ }, key2, { name: "AES-CBC", length: 256 }, true, ["encrypt", "decrypt"]);
35297
+ }).then((webKey) => {
35298
+ return crypto_default.subtle.exportKey("raw", webKey);
35299
+ }).then((buffer2) => {
35300
+ return new Uint8Array(buffer2);
35301
+ });
35302
+ }), "passwordToKey");
35303
+
35304
+ // src/wallet/base/functions/seedToId.ts
35305
+ var seedToId = /* @__PURE__ */ __name((seed) => __async(void 0, null, function* () {
35306
+ const buffer2 = yield crypto_default.subtle.digest("SHA-256", seed);
35307
+ return `urn:digest:${Buffer.from(new Int8Array(buffer2)).toString("hex")}`;
35308
+ }), "seedToId");
35281
35309
 
35282
35310
  // src/wallet/base/wallet.ts
35283
35311
  var addPluginToWallet = /* @__PURE__ */ __name((wallet, plugin) => __async(void 0, null, function* () {
@@ -35985,7 +36013,7 @@ function getImports() {
35985
36013
  const ret = wasm.memory;
35986
36014
  return addHeapObject(ret);
35987
36015
  };
35988
- imports.wbg.__wbindgen_closure_wrapper10020 = function(arg0, arg1, arg2) {
36016
+ imports.wbg.__wbindgen_closure_wrapper10021 = function(arg0, arg1, arg2) {
35989
36017
  const ret = makeMutClosure(arg0, arg1, 3552, __wbg_adapter_24);
35990
36018
  return addHeapObject(ret);
35991
36019
  };
@@ -36022,7 +36050,7 @@ var didkit_wasm_default = init;
36022
36050
 
36023
36051
  // src/didkit/index.ts
36024
36052
  var initialized = false;
36025
- var init2 = /* @__PURE__ */ __name((arg = "https://cdn.filestackcontent.com/soErM6xgSNqxVeJZzo7v") => __async(void 0, null, function* () {
36053
+ var init2 = /* @__PURE__ */ __name((arg = "https://cdn.filestackcontent.com/R0BsvnoVRhezGazRDUy5") => __async(void 0, null, function* () {
36026
36054
  if (initialized)
36027
36055
  return;
36028
36056
  initialized = true;
@@ -36087,6 +36115,90 @@ var ExpirationPlugin = /* @__PURE__ */ __name((wallet) => ({
36087
36115
  }
36088
36116
  }), "ExpirationPlugin");
36089
36117
 
36118
+ // src/wallet/helpers/wallet.helpers.ts
36119
+ var recycleDependents = /* @__PURE__ */ __name((_methods) => ({}), "recycleDependents");
36120
+
36121
+ // src/wallet/plugins/vc-templates/templates.ts
36122
+ var VC_TEMPLATES = {
36123
+ basic: ({
36124
+ did = "did:example:d23dd687a7dc6787646f2eb98d0",
36125
+ subject = "did:example:d23dd687a7dc6787646f2eb98d0",
36126
+ issuanceDate = "2020-08-19T21:41:50Z"
36127
+ } = {}) => ({
36128
+ "@context": ["https://www.w3.org/2018/credentials/v1"],
36129
+ id: "http://example.org/credentials/3731",
36130
+ type: ["VerifiableCredential"],
36131
+ issuer: did,
36132
+ issuanceDate,
36133
+ credentialSubject: { id: subject }
36134
+ }),
36135
+ achievement: ({
36136
+ did = "did:example:d23dd687a7dc6787646f2eb98d0",
36137
+ subject = "did:example:d23dd687a7dc6787646f2eb98d0",
36138
+ name: name5 = "Teamwork Badge",
36139
+ achievementName = "Teamwork",
36140
+ description = "This badge recognizes the development of the capacity to collaborate within a group environment.",
36141
+ criteriaNarrative = "Team members are nominated for this badge by their peers and recognized upon review by Example Corp management.",
36142
+ issuanceDate = "2020-08-19T21:41:50Z"
36143
+ } = {}) => ({
36144
+ "@context": [
36145
+ "https://www.w3.org/2018/credentials/v1",
36146
+ "https://imsglobal.github.io/openbadges-specification/context.json"
36147
+ ],
36148
+ id: "http://example.com/credentials/3527",
36149
+ type: ["VerifiableCredential", "OpenBadgeCredential"],
36150
+ issuer: did,
36151
+ issuanceDate,
36152
+ name: name5,
36153
+ credentialSubject: {
36154
+ id: subject,
36155
+ type: ["AchievementSubject"],
36156
+ achievement: {
36157
+ id: "https://example.com/achievements/21st-century-skills/teamwork",
36158
+ type: ["Achievement"],
36159
+ criteria: { narrative: criteriaNarrative },
36160
+ description,
36161
+ name: achievementName
36162
+ }
36163
+ }
36164
+ })
36165
+ };
36166
+
36167
+ // src/wallet/plugins/vc-templates/vc-templates.ts
36168
+ var getVCTemplatesPlugin = /* @__PURE__ */ __name((wallet) => {
36169
+ return {
36170
+ pluginMethods: __spreadProps(__spreadValues({}, recycleDependents(wallet.pluginMethods)), {
36171
+ newCredential: (_wallet, args = { type: "basic" }) => {
36172
+ var _a, _b;
36173
+ const did = args.did || ((_b = (_a = _wallet.pluginMethods).getSubjectDid) == null ? void 0 : _b.call(_a, "key"));
36174
+ if (!did)
36175
+ throw new Error("Could not get issuer did!");
36176
+ const defaults = {
36177
+ did,
36178
+ subject: "did:example:d23dd687a7dc6787646f2eb98d0",
36179
+ issuanceDate: "2020-08-19T21:41:50Z"
36180
+ };
36181
+ const _c = args, { type = "basic" } = _c, functionArgs = __objRest(_c, ["type"]);
36182
+ if (!(type in VC_TEMPLATES))
36183
+ throw new Error("Invalid Test VC Type!");
36184
+ return VC_TEMPLATES[type](__spreadValues(__spreadValues({}, defaults), functionArgs));
36185
+ },
36186
+ newPresentation: (_0, _1, ..._2) => __async(void 0, [_0, _1, ..._2], function* (_wallet, credential, args = {}) {
36187
+ var _a, _b;
36188
+ const did = (args == null ? void 0 : args.did) || ((_b = (_a = _wallet.pluginMethods).getSubjectDid) == null ? void 0 : _b.call(_a, "key"));
36189
+ if (!did)
36190
+ throw new Error("Could not get issuer did!");
36191
+ return {
36192
+ "@context": ["https://www.w3.org/2018/credentials/v1"],
36193
+ type: ["VerifiablePresentation"],
36194
+ holder: did,
36195
+ verifiableCredential: credential
36196
+ };
36197
+ })
36198
+ })
36199
+ };
36200
+ }, "getVCTemplatesPlugin");
36201
+
36090
36202
  // ../../node_modules/.pnpm/zod@3.17.3/node_modules/zod/lib/index.mjs
36091
36203
  var util;
36092
36204
  (function(util2) {
@@ -38831,12 +38943,12 @@ var ImageValidator = mod.string().or(mod.object({
38831
38943
  caption: mod.string().optional()
38832
38944
  }));
38833
38945
  var GeoCoordinatesValidator = mod.object({
38834
- type: mod.string().array().nonempty(),
38946
+ type: mod.string().min(1).or(mod.string().array().nonempty()),
38835
38947
  latitude: mod.number(),
38836
38948
  longitude: mod.number()
38837
38949
  });
38838
38950
  var AddressValidator = mod.object({
38839
- type: mod.string().array().nonempty(),
38951
+ type: mod.string().min(1).or(mod.string().array().nonempty()),
38840
38952
  addressCountry: mod.string().optional(),
38841
38953
  addressCountryCode: mod.string().optional(),
38842
38954
  addressRegion: mod.string().optional(),
@@ -38867,7 +38979,7 @@ var IdentifierTypeValidator = mod.enum([
38867
38979
  "identifier"
38868
38980
  ]).or(mod.string());
38869
38981
  var IdentifierEntryValidator = mod.object({
38870
- type: mod.string().array().nonempty(),
38982
+ type: mod.string().min(1).or(mod.string().array().nonempty()),
38871
38983
  identifier: mod.string(),
38872
38984
  identifierType: IdentifierTypeValidator
38873
38985
  });
@@ -39087,7 +39199,7 @@ var AchievementSubjectValidator = mod.object({
39087
39199
  activityStartDate: mod.string().optional(),
39088
39200
  creditsEarned: mod.number().optional(),
39089
39201
  achievement: AchievementValidator.optional(),
39090
- identifier: IdentityObjectValidator.optional(),
39202
+ identifier: IdentityObjectValidator.array().optional(),
39091
39203
  image: ImageValidator.optional(),
39092
39204
  licenseNumber: mod.string().optional(),
39093
39205
  narrative: mod.string().optional(),
@@ -39108,7 +39220,7 @@ var EvidenceValidator = mod.object({
39108
39220
  var UnsignedAchievementCredentialValidator = UnsignedVCValidator.extend({
39109
39221
  name: mod.string().optional(),
39110
39222
  description: mod.string().optional(),
39111
- image: mod.string().optional(),
39223
+ image: ImageValidator.optional(),
39112
39224
  credentialSubject: AchievementSubjectValidator.or(AchievementSubjectValidator.array()),
39113
39225
  endorsement: UnsignedVCValidator.array().optional(),
39114
39226
  evidence: EvidenceValidator.array().optional()
@@ -40755,9 +40867,12 @@ var verifyCredential2 = /* @__PURE__ */ __name((wallet) => {
40755
40867
  // src/wallet/initializers/emptyWallet.ts
40756
40868
  var emptyWallet = /* @__PURE__ */ __name((..._0) => __async(void 0, [..._0], function* ({ didkit } = {}) {
40757
40869
  const didkitWallet = yield (yield generateWallet()).addPlugin(yield getDidKitPlugin(didkit));
40758
- const wallet = yield didkitWallet.addPlugin(ExpirationPlugin(didkitWallet));
40870
+ const expirationWallet = yield didkitWallet.addPlugin(ExpirationPlugin(didkitWallet));
40871
+ const wallet = yield expirationWallet.addPlugin(getVCTemplatesPlugin(expirationWallet));
40759
40872
  return {
40760
40873
  _wallet: wallet,
40874
+ newCredential: wallet.pluginMethods.newCredential,
40875
+ newPresentation: wallet.pluginMethods.newPresentation,
40761
40876
  verifyCredential: verifyCredential2(wallet),
40762
40877
  verifyPresentation: wallet.pluginMethods.verifyPresentation,
40763
40878
  resolveDid: wallet.pluginMethods.resolveDid
@@ -53455,16 +53570,7 @@ var CeramicClient = class {
53455
53570
  __name(CeramicClient, "CeramicClient");
53456
53571
 
53457
53572
  // src/wallet/plugins/idx/types.ts
53458
- var StorageTypeValidator2 = mod.enum(["ceramic"]);
53459
- var StorageTypeEnum2 = StorageTypeValidator2.enum;
53460
- var CredentialMetadataValidator = mod.object({ name: mod.string().optional(), image: mod.string().optional() }).catchall(mod.any());
53461
- var IDXCredentialValidator2 = mod.object({
53462
- id: mod.string(),
53463
- title: mod.string(),
53464
- storageType: StorageTypeValidator2.optional(),
53465
- metadata: CredentialMetadataValidator.optional()
53466
- }).strict();
53467
- var CredentialsListValidator = mod.object({ credentials: IDXCredentialValidator2.array() }).strict();
53573
+ var CredentialsListValidator = mod.object({ credentials: IDXCredentialValidator.array() }).strict();
53468
53574
 
53469
53575
  // src/wallet/plugins/idx/idx.ts
53470
53576
  var getCeramicClientFromWalletSuite = /* @__PURE__ */ __name((wallet, ceramicEndpoint) => __async(void 0, null, function* () {
@@ -53493,7 +53599,7 @@ var getIDXPlugin = /* @__PURE__ */ __name((_0, _1) => __async(void 0, [_0, _1],
53493
53599
  throw new Error("Invalid credentials list stored in IDX");
53494
53600
  }), "getCredentialsListFromIdx");
53495
53601
  const addCredentialStreamIdToIdx = /* @__PURE__ */ __name((_record, alias) => __async(void 0, null, function* () {
53496
- const record = IDXCredentialValidator2.parse(_record);
53602
+ const record = IDXCredentialValidator.parse(_record);
53497
53603
  if (!record)
53498
53604
  throw new Error("record is required");
53499
53605
  if (!record.id)
@@ -53639,9 +53745,6 @@ var getDidKeyPlugin = /* @__PURE__ */ __name((wallet, key2) => __async(void 0, n
53639
53745
  };
53640
53746
  }), "getDidKeyPlugin");
53641
53747
 
53642
- // src/wallet/helpers/wallet.helpers.ts
53643
- var recycleDependents = /* @__PURE__ */ __name((_methods) => ({}), "recycleDependents");
53644
-
53645
53748
  // src/wallet/plugins/vc/issueCredential.ts
53646
53749
  var issueCredential2 = /* @__PURE__ */ __name((initWallet) => {
53647
53750
  return (wallet, credential) => __async(void 0, null, function* () {
@@ -53685,7 +53788,7 @@ var verifyPresentation2 = /* @__PURE__ */ __name((initWallet) => {
53685
53788
  }, "verifyPresentation");
53686
53789
 
53687
53790
  // src/wallet/plugins/vc/vc.ts
53688
- var getVCPlugin = /* @__PURE__ */ __name((wallet) => __async(void 0, null, function* () {
53791
+ var getVCPlugin = /* @__PURE__ */ __name((wallet) => {
53689
53792
  return {
53690
53793
  pluginMethods: __spreadProps(__spreadValues({}, recycleDependents(wallet.pluginMethods)), {
53691
53794
  issueCredential: issueCredential2(wallet),
@@ -53715,7 +53818,7 @@ var getVCPlugin = /* @__PURE__ */ __name((wallet) => __async(void 0, null, funct
53715
53818
  })
53716
53819
  })
53717
53820
  };
53718
- }), "getVCPlugin");
53821
+ }, "getVCPlugin");
53719
53822
 
53720
53823
  // src/wallet/plugins/EthereumPlugin/index.ts
53721
53824
  import { ethers as ethers2 } from "ethers";
@@ -57066,8 +57169,9 @@ var walletFromKey = /* @__PURE__ */ __name((_0, ..._1) => __async(void 0, [_0, .
57066
57169
  } = {}) {
57067
57170
  const didkitWallet = yield (yield generateWallet(defaultContents)).addPlugin(yield getDidKitPlugin(didkit));
57068
57171
  const didkeyWallet = yield didkitWallet.addPlugin(yield getDidKeyPlugin(didkitWallet, key2));
57069
- const didkeyAndVCWallet = yield didkeyWallet.addPlugin(yield getVCPlugin(didkeyWallet));
57070
- const idxWallet = yield didkeyAndVCWallet.addPlugin(yield getIDXPlugin(didkeyAndVCWallet, ceramicIdx));
57172
+ const didkeyAndVCWallet = yield didkeyWallet.addPlugin(getVCPlugin(didkeyWallet));
57173
+ const templateWallet = yield didkeyAndVCWallet.addPlugin(getVCTemplatesPlugin(didkeyAndVCWallet));
57174
+ const idxWallet = yield templateWallet.addPlugin(yield getIDXPlugin(templateWallet, ceramicIdx));
57071
57175
  const expirationWallet = yield idxWallet.addPlugin(ExpirationPlugin(idxWallet));
57072
57176
  const ethWallet = yield expirationWallet.addPlugin(getEthereumPlugin(expirationWallet, ethereumConfig));
57073
57177
  const wallet = yield ethWallet.addPlugin(getVpqrPlugin(ethWallet));
@@ -57075,6 +57179,8 @@ var walletFromKey = /* @__PURE__ */ __name((_0, ..._1) => __async(void 0, [_0, .
57075
57179
  _wallet: wallet,
57076
57180
  did: (type = "key") => wallet.pluginMethods.getSubjectDid(type),
57077
57181
  keypair: (type = "ed25519") => wallet.pluginMethods.getSubjectKeypair(type),
57182
+ newCredential: wallet.pluginMethods.newCredential,
57183
+ newPresentation: wallet.pluginMethods.newPresentation,
57078
57184
  issueCredential: wallet.pluginMethods.issueCredential,
57079
57185
  verifyCredential: verifyCredential2(wallet),
57080
57186
  issuePresentation: wallet.pluginMethods.issuePresentation,
@@ -57119,8 +57225,19 @@ function initLearnCard() {
57119
57225
  }
57120
57226
  __name(initLearnCard, "initLearnCard");
57121
57227
  export {
57228
+ CredentialsListValidator,
57229
+ ExpirationPlugin,
57122
57230
  emptyWallet,
57231
+ generateWallet,
57232
+ getDidKeyPlugin,
57233
+ getDidKitPlugin,
57234
+ getEthereumPlugin,
57235
+ getIDXPlugin,
57236
+ getVCPlugin,
57237
+ getVpqrPlugin,
57123
57238
  initLearnCard,
57239
+ passwordToKey,
57240
+ seedToId,
57124
57241
  walletFromKey
57125
57242
  };
57126
57243
  /*!