@learncard/core 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core.cjs.development.js +37 -89
- package/dist/core.cjs.development.js.map +3 -3
- package/dist/core.cjs.production.min.js +42 -42
- package/dist/core.cjs.production.min.js.map +3 -3
- package/dist/core.d.ts +17 -37
- package/dist/core.esm.js +37 -89
- package/dist/core.esm.js.map +3 -3
- package/package.json +1 -2
package/dist/core.d.ts
CHANGED
@@ -69,28 +69,10 @@ export declare type UnsignedVP = {
|
|
69
69
|
export declare type VP = UnsignedVP & {
|
70
70
|
proof: Proof;
|
71
71
|
};
|
72
|
-
export declare type JWK = {
|
73
|
-
id: string;
|
74
|
-
type: string | string[];
|
75
|
-
controller?: string;
|
76
|
-
publicKeyJwk?: any;
|
77
|
-
privateKeyJwk?: any;
|
78
|
-
"@context": string[];
|
79
|
-
name: string;
|
80
|
-
image: string;
|
81
|
-
description: string;
|
82
|
-
tags: string[];
|
83
|
-
value?: string;
|
84
|
-
generatedFrom?: [
|
85
|
-
string
|
86
|
-
];
|
87
|
-
};
|
88
72
|
export declare type DidKeyPluginMethods = {
|
89
73
|
getSubjectDid: () => string;
|
90
74
|
getSubjectKeypair: () => Record<string, string>;
|
91
|
-
|
92
|
-
export declare type DidKeyPluginConstants = {
|
93
|
-
generateContentFromSeed: (seed: Uint8Array) => Promise<JWK[]>;
|
75
|
+
getKey: () => string;
|
94
76
|
};
|
95
77
|
export declare type IDXPluginMethods = {
|
96
78
|
getCredentialsListFromIndex: (alias?: string) => Promise<CredentialsList>;
|
@@ -126,36 +108,34 @@ export declare type VCPluginMethods = {
|
|
126
108
|
getSubjectKeypair: () => Record<string, string>;
|
127
109
|
};
|
128
110
|
export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
|
129
|
-
export declare type Plugin<Name extends string, PublicMethods extends Record<string, (...args: any[]) => any> = Record<never, never
|
111
|
+
export declare type Plugin<Name extends string, PublicMethods extends Record<string, (...args: any[]) => any> = Record<never, never>> = {
|
130
112
|
name?: Name;
|
131
113
|
pluginMethods: {
|
132
|
-
[Key in keyof PublicMethods]: <T extends UnlockedWallet<any, PublicMethods
|
114
|
+
[Key in keyof PublicMethods]: <T extends UnlockedWallet<any, PublicMethods>>(wallet: T, ...args: Parameters<PublicMethods[Key]>) => ReturnType<PublicMethods[Key]>;
|
133
115
|
};
|
134
|
-
pluginConstants: PublicConstants;
|
135
116
|
};
|
136
|
-
export declare type PublicFieldsObj<PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never
|
117
|
+
export declare type PublicFieldsObj<PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never>> = {
|
137
118
|
pluginMethods: PluginMethods;
|
138
|
-
pluginConstants: PluginConstants;
|
139
119
|
};
|
140
120
|
declare enum WalletStatus {
|
141
121
|
Locked = "LOCKED",
|
142
122
|
Unlocked = "UNLOCKED"
|
143
123
|
}
|
144
|
-
export declare type BaseWallet<PluginNames extends string = "", PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never
|
124
|
+
export declare type BaseWallet<PluginNames extends string = "", PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never>> = PublicFieldsObj<PluginMethods> & {
|
145
125
|
contents: any[];
|
146
|
-
plugins: Plugin<PluginNames, Record<string, (...args: any[]) => any
|
126
|
+
plugins: Plugin<PluginNames, Record<string, (...args: any[]) => any>>[];
|
147
127
|
};
|
148
|
-
export declare type LockedWallet<PluginNames extends string = "", PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never
|
128
|
+
export declare type LockedWallet<PluginNames extends string = "", PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never>> = BaseWallet<PluginNames, PluginMethods> & {
|
149
129
|
status: WalletStatus.Locked;
|
150
130
|
};
|
151
|
-
export declare type UnlockedWallet<PluginNames extends string = "", PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never
|
131
|
+
export declare type UnlockedWallet<PluginNames extends string = "", PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never>> = BaseWallet<PluginNames, PluginMethods> & {
|
152
132
|
status: WalletStatus.Unlocked;
|
153
|
-
add: (content: any) => Promise<UnlockedWallet<PluginNames, PluginMethods
|
154
|
-
remove: (contentId: string) => Promise<UnlockedWallet<PluginNames, PluginMethods
|
155
|
-
addPlugin: <Name extends string, Methods extends Record<string, (...args: any[]) => any> = Record<never, never
|
133
|
+
add: (content: any) => Promise<UnlockedWallet<PluginNames, PluginMethods>>;
|
134
|
+
remove: (contentId: string) => Promise<UnlockedWallet<PluginNames, PluginMethods>>;
|
135
|
+
addPlugin: <Name extends string, Methods extends Record<string, (...args: any[]) => any> = Record<never, never>>(plugin: Plugin<Name, Methods>) => Promise<UnlockedWallet<"" extends PluginNames ? Name : PluginNames | Name, Record<never, never> extends PluginMethods ? Methods : PluginMethods & Methods>>;
|
156
136
|
};
|
157
|
-
export declare type Wallet<PluginNames extends string = "", PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never
|
158
|
-
export declare type LearnCardRawWallet = UnlockedWallet<"DID Key" | "VC" | "IDX" | "Expiration", DidKeyPluginMethods & VCPluginMethods & IDXPluginMethods
|
137
|
+
export declare type Wallet<PluginNames extends string = "", PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never>> = LockedWallet<PluginNames, PluginMethods> | UnlockedWallet<PluginNames, PluginMethods>;
|
138
|
+
export declare type LearnCardRawWallet = UnlockedWallet<"DID Key" | "VC" | "IDX" | "Expiration", DidKeyPluginMethods & VCPluginMethods & IDXPluginMethods>;
|
159
139
|
export declare type LearnCardWallet = {
|
160
140
|
/** Raw IoE wallet instance. You shouldn't need to drop down to this level! */
|
161
141
|
_wallet: LearnCardRawWallet;
|
@@ -222,11 +202,11 @@ export declare type CeramicIDXArgs = {
|
|
222
202
|
export declare type LearnCardConfig = {
|
223
203
|
ceramicIdx: CeramicIDXArgs;
|
224
204
|
didkit: InitInput | Promise<InitInput>;
|
205
|
+
defaultContents: any[];
|
225
206
|
};
|
226
|
-
|
227
|
-
|
228
|
-
export
|
229
|
-
export { createWallet, walletFromKey } from "@wallet/init";
|
207
|
+
/** Generates a LearnCard Wallet from a 64 character seed string */
|
208
|
+
export declare const walletFromKey: (key: string, { ceramicIdx, didkit, defaultContents, }?: Partial<LearnCardConfig>) => Promise<LearnCardWallet>;
|
209
|
+
export { walletFromKey } from "@wallet/init";
|
230
210
|
export { Wallet, UnlockedWallet, LockedWallet, Plugin } from "types/wallet";
|
231
211
|
|
232
212
|
export {};
|
package/dist/core.esm.js
CHANGED
@@ -26909,19 +26909,6 @@ var require_query_string = __commonJS({
|
|
26909
26909
|
}
|
26910
26910
|
});
|
26911
26911
|
|
26912
|
-
// ../../node_modules/.pnpm/hex-lite@1.5.0/node_modules/hex-lite/dist/hex-lite.mjs
|
26913
|
-
function toUint8Array(str) {
|
26914
|
-
var s = 0, sl = str.length, bytes = [];
|
26915
|
-
if (sl % 2) {
|
26916
|
-
throw new Error("invalid hex:" + str);
|
26917
|
-
}
|
26918
|
-
for (; s < sl; s += 2) {
|
26919
|
-
bytes.push(parseInt(str.substr(s, 2), 16));
|
26920
|
-
}
|
26921
|
-
return new Uint8Array(bytes);
|
26922
|
-
}
|
26923
|
-
__name(toUint8Array, "toUint8Array");
|
26924
|
-
|
26925
26912
|
// src/didkit/pkg/didkit_wasm.js
|
26926
26913
|
var wasm;
|
26927
26914
|
var cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });
|
@@ -36022,7 +36009,6 @@ if (isNodejs()) {
|
|
36022
36009
|
} else {
|
36023
36010
|
crypto3 = window.crypto;
|
36024
36011
|
}
|
36025
|
-
var crypto_default = crypto3;
|
36026
36012
|
|
36027
36013
|
// src/wallet/base/wallet.ts
|
36028
36014
|
var addPluginToWallet = /* @__PURE__ */ __name((wallet, plugin) => __async(void 0, null, function* () {
|
@@ -36041,11 +36027,10 @@ var removeFromWallet = /* @__PURE__ */ __name((wallet, contentId) => __async(voi
|
|
36041
36027
|
var bindMethods = /* @__PURE__ */ __name((wallet, pluginMethods) => Object.fromEntries(Object.entries(pluginMethods).map(([key2, method]) => [key2, method.bind(wallet, wallet)])), "bindMethods");
|
36042
36028
|
var generateWallet = /* @__PURE__ */ __name((..._0) => __async(void 0, [..._0], function* (contents = [], _wallet = {}) {
|
36043
36029
|
const { plugins = [] } = _wallet;
|
36044
|
-
const
|
36045
|
-
const newPluginMethods = __spreadValues(__spreadValues({},
|
36046
|
-
|
36047
|
-
|
36048
|
-
}, { pluginMethods: {}, pluginConstants: {} });
|
36030
|
+
const pluginMethods = plugins.reduce((cumulativePluginMethods, plugin) => {
|
36031
|
+
const newPluginMethods = __spreadValues(__spreadValues({}, cumulativePluginMethods), plugin.pluginMethods);
|
36032
|
+
return newPluginMethods;
|
36033
|
+
}, {});
|
36049
36034
|
const wallet = {
|
36050
36035
|
contents: [...contents],
|
36051
36036
|
add: function(content) {
|
@@ -36057,7 +36042,6 @@ var generateWallet = /* @__PURE__ */ __name((..._0) => __async(void 0, [..._0],
|
|
36057
36042
|
status: "UNLOCKED" /* Unlocked */,
|
36058
36043
|
plugins,
|
36059
36044
|
pluginMethods,
|
36060
|
-
pluginConstants,
|
36061
36045
|
addPlugin: function(plugin) {
|
36062
36046
|
return addPluginToWallet(this, plugin);
|
36063
36047
|
}
|
@@ -43332,6 +43316,19 @@ var DID = class {
|
|
43332
43316
|
};
|
43333
43317
|
__name(DID, "DID");
|
43334
43318
|
|
43319
|
+
// ../../node_modules/.pnpm/hex-lite@1.5.0/node_modules/hex-lite/dist/hex-lite.mjs
|
43320
|
+
function toUint8Array(str) {
|
43321
|
+
var s = 0, sl = str.length, bytes = [];
|
43322
|
+
if (sl % 2) {
|
43323
|
+
throw new Error("invalid hex:" + str);
|
43324
|
+
}
|
43325
|
+
for (; s < sl; s += 2) {
|
43326
|
+
bytes.push(parseInt(str.substr(s, 2), 16));
|
43327
|
+
}
|
43328
|
+
return new Uint8Array(bytes);
|
43329
|
+
}
|
43330
|
+
__name(toUint8Array, "toUint8Array");
|
43331
|
+
|
43335
43332
|
// src/wallet/plugins/idx/idx.ts
|
43336
43333
|
var import_key_did_resolver = __toESM(require_lib());
|
43337
43334
|
|
@@ -48356,13 +48353,11 @@ __name(CeramicClient, "CeramicClient");
|
|
48356
48353
|
|
48357
48354
|
// src/wallet/plugins/idx/idx.ts
|
48358
48355
|
var getCeramicClientFromWalletSuite = /* @__PURE__ */ __name((wallet, ceramicEndpoint) => __async(void 0, null, function* () {
|
48359
|
-
var _a2, _b;
|
48360
48356
|
const client = new CeramicClient(ceramicEndpoint);
|
48361
48357
|
const resolver = __spreadValues({}, import_key_did_resolver.default.getResolver());
|
48362
48358
|
const did = new DID({ resolver });
|
48363
48359
|
client.did = did;
|
48364
|
-
const
|
48365
|
-
const key2 = (_b = (_a2 = contents == null ? void 0 : contents.find((c) => (c == null ? void 0 : c.name) === "DID Key Secret")) == null ? void 0 : _a2.value) != null ? _b : "";
|
48360
|
+
const key2 = wallet.pluginMethods.getKey();
|
48366
48361
|
const ceramicProvider = new Ed25519Provider(toUint8Array(key2));
|
48367
48362
|
client.did.setProvider(ceramicProvider);
|
48368
48363
|
yield client.did.authenticate();
|
@@ -48432,65 +48427,22 @@ var getIDXPlugin = /* @__PURE__ */ __name((_0, _1) => __async(void 0, [_0, _1],
|
|
48432
48427
|
addVerifiableCredentialInIdx: (_02, _12) => __async(void 0, [_02, _12], function* (_wallet, { title, id }) {
|
48433
48428
|
return addCredentialStreamIdToIndex({ title, id });
|
48434
48429
|
})
|
48435
|
-
}
|
48436
|
-
pluginConstants: {}
|
48430
|
+
}
|
48437
48431
|
};
|
48438
48432
|
}), "getIDXPlugin");
|
48439
48433
|
|
48440
|
-
// src/wallet/plugins/didkey/generateContentFromSeed.ts
|
48441
|
-
var seedToId = /* @__PURE__ */ __name((seed) => __async(void 0, null, function* () {
|
48442
|
-
const buffer2 = yield crypto_default.subtle.digest("SHA-256", seed);
|
48443
|
-
return `urn:digest:${Buffer.from(new Uint8Array(buffer2)).toString("hex")}`;
|
48444
|
-
}), "seedToId");
|
48445
|
-
var generateContentFromSeed = /* @__PURE__ */ __name((seed) => __async(void 0, null, function* () {
|
48446
|
-
const privateKeyJwk = JSON.parse(generateEd25519KeyFromBytes(seed));
|
48447
|
-
const controller = keyToDID("key", JSON.stringify(privateKeyJwk));
|
48448
|
-
const _a2 = privateKeyJwk, { d } = _a2, publicKeyJwk = __objRest(_a2, ["d"]);
|
48449
|
-
const signingKey = {
|
48450
|
-
controller,
|
48451
|
-
id: `${controller}#${controller.split(":").at(-1)}`,
|
48452
|
-
privateKeyJwk,
|
48453
|
-
publicKeyJwk,
|
48454
|
-
type: "JsonWebKey2020"
|
48455
|
-
};
|
48456
|
-
const seedId = yield seedToId(seed);
|
48457
|
-
const secret = {
|
48458
|
-
"@context": ["http://w3id.org/wallet/v1"],
|
48459
|
-
id: seedId,
|
48460
|
-
name: "DID Key Secret",
|
48461
|
-
image: "https://via.placeholder.com/150",
|
48462
|
-
description: "Used to generate a DID with a signing and encryption key.",
|
48463
|
-
tags: ["inception"],
|
48464
|
-
type: "Entropy",
|
48465
|
-
value: Buffer.from(seed).toString("hex")
|
48466
|
-
};
|
48467
|
-
const key0 = __spreadProps(__spreadValues({}, signingKey), {
|
48468
|
-
"@context": ["http://w3id.org/wallet/v1"],
|
48469
|
-
name: "Signing Key",
|
48470
|
-
image: "https://via.placeholder.com/150",
|
48471
|
-
description: "Used to produce digital signatures.",
|
48472
|
-
tags: ["inception"],
|
48473
|
-
generatedFrom: [secret.id]
|
48474
|
-
});
|
48475
|
-
return [secret, key0];
|
48476
|
-
}), "generateContentFromSeed");
|
48477
|
-
|
48478
48434
|
// src/wallet/plugins/didkey/index.ts
|
48479
|
-
var
|
48480
|
-
|
48481
|
-
|
48482
|
-
|
48483
|
-
|
48484
|
-
|
48485
|
-
|
48486
|
-
|
48487
|
-
return (_a2 = wallet.contents.find((content) => content.name === "Signing Key")) == null ? void 0 : _a2.privateKeyJwk;
|
48435
|
+
var getDidKeyPlugin = /* @__PURE__ */ __name((key2) => __async(void 0, null, function* () {
|
48436
|
+
const keypair = JSON.parse(generateEd25519KeyFromBytes(toUint8Array(key2.padStart(64, "0"))));
|
48437
|
+
const did = keyToDID("key", JSON.stringify(keypair));
|
48438
|
+
return {
|
48439
|
+
pluginMethods: {
|
48440
|
+
getSubjectDid: () => did,
|
48441
|
+
getSubjectKeypair: () => keypair,
|
48442
|
+
getKey: () => key2
|
48488
48443
|
}
|
48489
|
-
}
|
48490
|
-
|
48491
|
-
generateContentFromSeed
|
48492
|
-
}
|
48493
|
-
};
|
48444
|
+
};
|
48445
|
+
}), "getDidKeyPlugin");
|
48494
48446
|
|
48495
48447
|
// src/wallet/plugins/expiration/index.ts
|
48496
48448
|
var ExpirationPlugin = /* @__PURE__ */ __name((wallet) => ({
|
@@ -48505,8 +48457,7 @@ var ExpirationPlugin = /* @__PURE__ */ __name((wallet) => ({
|
|
48505
48457
|
}
|
48506
48458
|
return verificationCheck;
|
48507
48459
|
})
|
48508
|
-
}
|
48509
|
-
pluginConstants: {}
|
48460
|
+
}
|
48510
48461
|
}), "ExpirationPlugin");
|
48511
48462
|
|
48512
48463
|
// src/wallet/plugins/vc/issueCredential.ts
|
@@ -48578,8 +48529,7 @@ var getVCPlugin = /* @__PURE__ */ __name((wallet) => __async(void 0, null, funct
|
|
48578
48529
|
credentialSubject: { id: subject }
|
48579
48530
|
};
|
48580
48531
|
}
|
48581
|
-
})
|
48582
|
-
pluginConstants: {}
|
48532
|
+
})
|
48583
48533
|
};
|
48584
48534
|
}), "getVCPlugin");
|
48585
48535
|
|
@@ -48639,9 +48589,13 @@ var defaultCeramicIDXArgs = {
|
|
48639
48589
|
};
|
48640
48590
|
|
48641
48591
|
// src/wallet/init.ts
|
48642
|
-
var
|
48592
|
+
var walletFromKey = /* @__PURE__ */ __name((_0, ..._1) => __async(void 0, [_0, ..._1], function* (key2, {
|
48593
|
+
ceramicIdx = defaultCeramicIDXArgs,
|
48594
|
+
didkit,
|
48595
|
+
defaultContents = []
|
48596
|
+
} = {}) {
|
48643
48597
|
yield didkit_default(didkit);
|
48644
|
-
const didkeyWallet = yield (yield generateWallet(defaultContents)).addPlugin(
|
48598
|
+
const didkeyWallet = yield (yield generateWallet(defaultContents)).addPlugin(yield getDidKeyPlugin(key2));
|
48645
48599
|
const didkeyAndVCWallet = yield didkeyWallet.addPlugin(yield getVCPlugin(didkeyWallet));
|
48646
48600
|
const idxWallet = yield didkeyAndVCWallet.addPlugin(yield getIDXPlugin(didkeyAndVCWallet, ceramicIdx));
|
48647
48601
|
const wallet = yield idxWallet.addPlugin(ExpirationPlugin(idxWallet));
|
@@ -48666,14 +48620,8 @@ var createWallet = /* @__PURE__ */ __name((_0, ..._1) => __async(void 0, [_0, ..
|
|
48666
48620
|
readFromCeramic: wallet.pluginMethods.readContentFromCeramic,
|
48667
48621
|
getTestVc: wallet.pluginMethods.getTestVc
|
48668
48622
|
};
|
48669
|
-
}), "createWallet");
|
48670
|
-
var walletFromKey = /* @__PURE__ */ __name((_0, ..._1) => __async(void 0, [_0, ..._1], function* (key2, { ceramicIdx = defaultCeramicIDXArgs, didkit } = {}) {
|
48671
|
-
yield didkit_default(didkit);
|
48672
|
-
const didDocuments = yield DidKeyPlugin.pluginConstants.generateContentFromSeed(toUint8Array(key2.padStart(64, "0")));
|
48673
|
-
return createWallet(didDocuments, { ceramicIdx, didkit });
|
48674
48623
|
}), "walletFromKey");
|
48675
48624
|
export {
|
48676
|
-
createWallet,
|
48677
48625
|
walletFromKey
|
48678
48626
|
};
|
48679
48627
|
/*!
|