@learncard/init 2.4.3 → 2.4.5

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/package.json CHANGED
@@ -1,96 +1,88 @@
1
1
  {
2
- "name": "@learncard/init",
3
- "version": "2.4.3",
4
- "description": "Primary initialization of LearnCard SDK",
5
- "type": "module",
6
- "main": "./dist/index.cjs",
7
- "module": "./dist/init.esm.js",
8
- "exports": {
9
- ".": {
10
- "node": {
11
- "import": {
12
- "types": "./dist/index.d.ts",
13
- "default": "./dist/node-esm.mjs"
2
+ "name": "@learncard/init",
3
+ "version": "2.4.5",
4
+ "description": "Primary initialization of LearnCard SDK",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/init.esm.js",
8
+ "exports": {
9
+ ".": {
10
+ "development": "./src/index.ts",
11
+ "import": {
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/init.esm.js"
14
+ },
15
+ "require": {
16
+ "types": "./dist/index.d.cts",
17
+ "default": "./dist/index.cjs"
18
+ }
14
19
  },
15
- "require": {
16
- "types": "./dist/index.d.cts",
17
- "default": "./dist/index.cjs"
20
+ "./dist/init.esm.js": {
21
+ "types": "./dist/index.d.ts",
22
+ "default": "./dist/init.esm.js"
18
23
  }
19
- },
20
- "import": {
21
- "types": "./dist/index.d.ts",
22
- "default": "./dist/init.esm.js"
23
- },
24
- "require": {
25
- "types": "./dist/index.d.cts",
26
- "default": "./dist/index.cjs"
27
- }
28
24
  },
29
- "./dist/init.esm.js": {
30
- "types": "./dist/index.d.ts",
31
- "default": "./dist/init.esm.js"
32
- }
33
- },
34
- "files": [
35
- "dist"
36
- ],
37
- "author": "Learning Economy Foundation (www.learningeconomy.io)",
38
- "license": "MIT",
39
- "homepage": "https://github.com/learningeconomy/LearnCard/tree/main/packages/learn-card-init/README.md",
40
- "repository": {
41
- "type": "git",
42
- "url": "https://github.com/learningeconomy/LearnCard"
43
- },
44
- "bugs": {
45
- "url": "https://github.com/learningeconomy/LearnCard/issues"
46
- },
47
- "devDependencies": {
48
- "@types/jest": "^29.2.2",
49
- "@types/node": "^17.0.31",
50
- "aqu": "0.4.3",
51
- "esbuild": "^0.27.1",
52
- "esbuild-jest": "^0.5.0",
53
- "esbuild-plugin-copy": "^1.3.0",
54
- "jest": "^29.3.0",
55
- "jest-resolver-enhanced": "^1.1.0",
56
- "jimp": "^0.16.1",
57
- "qrcode-reader": "^1.0.4",
58
- "shx": "^0.3.4",
59
- "ts-jest": "^29.0.3"
60
- },
61
- "types": "./dist/index.d.ts",
62
- "dependencies": {
63
- "@learncard/chapi-plugin": "1.1.24",
64
- "@learncard/core": "9.4.24",
65
- "@learncard/didkey-plugin": "1.1.24",
66
- "@learncard/dynamic-loader-plugin": "1.1.24",
67
- "@learncard/didkit-plugin": "1.9.4",
68
- "@learncard/did-web-plugin": "1.1.24",
69
- "@learncard/crypto-plugin": "1.1.24",
70
- "@learncard/encryption-plugin": "1.1.24",
71
- "@learncard/ethereum-plugin": "1.1.25",
72
- "@learncard/expiration-plugin": "1.2.24",
73
- "@learncard/learn-card-plugin": "1.2.24",
74
- "@learncard/learn-cloud-plugin": "2.3.29",
75
- "@learncard/helpers": "1.3.6",
76
- "@learncard/network-plugin": "^2.13.5",
77
- "@learncard/openid4vc-plugin": "0.2.2",
78
- "@learncard/sd-jwt-vc-plugin": "0.2.2",
79
- "@learncard/types": "5.17.4",
80
- "@learncard/vc-api-plugin": "1.1.24",
81
- "@learncard/vc-plugin": "1.5.4",
82
- "@learncard/vpqr-plugin": "1.1.24",
83
- "@learncard/vc-templates-plugin": "1.1.24"
84
- },
85
- "optionalDependencies": {
86
- "@learncard/didkit-plugin-node": "0.2.22"
87
- },
88
- "sideEffects": false,
89
- "scripts": {
90
- "build": "node ./scripts/build.mjs && shx cp ./scripts/mixedEntypoint.js ./dist/index.cjs && tsc --p tsconfig.build.json && shx cp ./dist/index.d.ts ./dist/index.d.cts",
91
- "start": "aqu watch",
92
- "lint": "aqu lint",
93
- "lint:fix": "aqu lint --fix",
94
- "test": "vitest"
95
- }
96
- }
25
+ "files": [
26
+ "dist",
27
+ "src"
28
+ ],
29
+ "scripts": {
30
+ "build": "node ./scripts/build.mjs && shx cp ./scripts/mixedEntypoint.js ./dist/index.cjs && tsc --p tsconfig.build.json && shx cp ./dist/index.d.ts ./dist/index.d.cts",
31
+ "start": "aqu watch",
32
+ "lint": "aqu lint",
33
+ "lint:fix": "aqu lint --fix",
34
+ "test": "vitest"
35
+ },
36
+ "author": "Learning Economy Foundation (www.learningeconomy.io)",
37
+ "license": "MIT",
38
+ "homepage": "https://github.com/learningeconomy/LearnCard/tree/main/packages/learn-card-init/README.md",
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "https://github.com/learningeconomy/LearnCard"
42
+ },
43
+ "bugs": {
44
+ "url": "https://github.com/learningeconomy/LearnCard/issues"
45
+ },
46
+ "devDependencies": {
47
+ "@types/jest": "^29.2.2",
48
+ "@types/node": "^17.0.31",
49
+ "aqu": "0.4.3",
50
+ "esbuild": "^0.27.1",
51
+ "esbuild-jest": "^0.5.0",
52
+ "esbuild-plugin-copy": "^1.3.0",
53
+ "jest": "^29.3.0",
54
+ "jest-resolver-enhanced": "^1.1.0",
55
+ "jimp": "^0.16.1",
56
+ "qrcode-reader": "^1.0.4",
57
+ "shx": "^0.3.4",
58
+ "ts-jest": "^29.0.3"
59
+ },
60
+ "types": "./dist/index.d.ts",
61
+ "dependencies": {
62
+ "@learncard/chapi-plugin": "1.1.26",
63
+ "@learncard/core": "9.4.26",
64
+ "@learncard/crypto-plugin": "1.1.26",
65
+ "@learncard/didkey-plugin": "1.1.26",
66
+ "@learncard/didkit-plugin": "1.9.6",
67
+ "@learncard/did-web-plugin": "1.1.26",
68
+ "@learncard/dynamic-loader-plugin": "1.1.26",
69
+ "@learncard/encryption-plugin": "1.1.26",
70
+ "@learncard/ethereum-plugin": "1.1.27",
71
+ "@learncard/expiration-plugin": "1.2.26",
72
+ "@learncard/helpers": "1.3.8",
73
+ "@learncard/learn-card-plugin": "1.2.26",
74
+ "@learncard/learn-cloud-plugin": "2.3.31",
75
+ "@learncard/network-plugin": "^2.13.7",
76
+ "@learncard/openid4vc-plugin": "0.2.4",
77
+ "@learncard/sd-jwt-vc-plugin": "0.2.4",
78
+ "@learncard/types": "5.17.5",
79
+ "@learncard/vc-api-plugin": "1.1.26",
80
+ "@learncard/vc-plugin": "1.5.6",
81
+ "@learncard/vc-templates-plugin": "1.1.26",
82
+ "@learncard/vpqr-plugin": "1.1.26"
83
+ },
84
+ "optionalDependencies": {
85
+ "@learncard/didkit-plugin-node": "0.2.24"
86
+ },
87
+ "sideEffects": false
88
+ }
@@ -0,0 +1,6 @@
1
+ import { EthereumConfig } from '@learncard/ethereum-plugin';
2
+
3
+ export const defaultEthereumArgs: EthereumConfig = {
4
+ infuraProjectId: '',
5
+ network: 'mainnet',
6
+ };
package/src/index.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './init';
2
+ export * from './types/LearnCard';
package/src/init.ts ADDED
@@ -0,0 +1,144 @@
1
+ import { customLearnCard } from './initializers/customLearnCard';
2
+ import { emptyLearnCard } from './initializers/emptyLearnCard';
3
+ import { learnCardFromSeed } from './initializers/learnCardFromSeed';
4
+ import { networkLearnCardFromSeed } from './initializers/networkLearnCardFromSeed';
5
+ import { didWebLearnCardFromSeed } from './initializers/didWebLearnCardFromSeed';
6
+ import { didWebNetworkLearnCardFromSeed } from './initializers/didWebNetworkLearnCardFromSeed';
7
+ import { networkLearnCardFromApiKey } from './initializers/networkLearnCardFromApiKey';
8
+ import { learnCardFromApiUrl } from './initializers/apiLearnCard';
9
+
10
+ import {
11
+ InitLearnCard,
12
+ EmptyLearnCard,
13
+ LearnCardFromSeed,
14
+ LearnCardFromVcApi,
15
+ CustomLearnCard,
16
+ NetworkLearnCardFromSeed,
17
+ DidWebLearnCardFromSeed,
18
+ DidWebNetworkLearnCardFromSeed,
19
+ NetworkLearnCardFromApiKey,
20
+ } from './types/LearnCard';
21
+
22
+ export * from './initializers/customLearnCard';
23
+ export * from './initializers/emptyLearnCard';
24
+ export * from './initializers/learnCardFromSeed';
25
+ export * from './initializers/networkLearnCardFromSeed';
26
+ export * from './initializers/didWebLearnCardFromSeed';
27
+ export * from './initializers/didWebNetworkLearnCardFromSeed';
28
+ export * from './initializers/apiLearnCard';
29
+ export * from './initializers/networkLearnCardFromApiKey';
30
+
31
+ // Overloads (Unfortunately necessary boilerplate 😢)
32
+
33
+ /**
34
+ * Generates an Empty Wallet
35
+ *
36
+ * @group Init Functions
37
+ */
38
+ export function initLearnCard(
39
+ config?: EmptyLearnCard['args']
40
+ ): Promise<EmptyLearnCard['returnValue']>;
41
+
42
+ /**
43
+ * Generates a full wallet from a 32 byte seed
44
+ *
45
+ * @group Init Functions
46
+ */
47
+ export function initLearnCard(
48
+ config: LearnCardFromSeed['args']
49
+ ): Promise<LearnCardFromSeed['returnValue']>;
50
+
51
+ /**
52
+ * Generates a full wallet from a 32 byte seed
53
+ *
54
+ * @group Init Functions
55
+ */
56
+ export function initLearnCard(
57
+ config: DidWebLearnCardFromSeed['args']
58
+ ): Promise<DidWebLearnCardFromSeed['returnValue']>;
59
+
60
+ /**
61
+ * Generates a full wallet with access to LearnCard Network from a 32 byte seed
62
+ *
63
+ * @group Init Functions
64
+ */
65
+ export function initLearnCard(
66
+ config: NetworkLearnCardFromSeed['args']
67
+ ): Promise<NetworkLearnCardFromSeed['returnValue']>;
68
+
69
+ /**
70
+ * Generates a full wallet with access to LearnCard Network from a 32 byte seed using a different did:web
71
+ *
72
+ * @group Init Functions
73
+ */
74
+ export function initLearnCard(
75
+ config: DidWebNetworkLearnCardFromSeed['args']
76
+ ): Promise<DidWebNetworkLearnCardFromSeed['returnValue']>;
77
+
78
+ /**
79
+ * Generates a wallet with access to LearnCard Network using an API key (no local seed)
80
+ *
81
+ * @group Init Functions
82
+ */
83
+ export function initLearnCard(
84
+ config: NetworkLearnCardFromApiKey['args']
85
+ ): Promise<NetworkLearnCardFromApiKey['returnValue']>;
86
+
87
+ /**
88
+ * Generates a wallet that can sign VCs/VPs from a VC API
89
+ *
90
+ * @group Init Functions
91
+ */
92
+ export function initLearnCard(
93
+ config: LearnCardFromVcApi['args']
94
+ ): Promise<LearnCardFromVcApi['returnValue']>;
95
+
96
+ /**
97
+ * Generates a custom wallet with no plugins added
98
+ *
99
+ * @group Init Functions
100
+ */
101
+ export function initLearnCard(
102
+ config: CustomLearnCard['args']
103
+ ): Promise<CustomLearnCard['returnValue']>;
104
+
105
+ // Implementation
106
+
107
+ /**
108
+ * Generates a new LearnCard wallet
109
+ *
110
+ * @group Init Functions
111
+ */
112
+ export async function initLearnCard(
113
+ config: InitLearnCard['args'] = {}
114
+ ): InitLearnCard['returnValue'] {
115
+ if ('custom' in config) return customLearnCard({ debug: config.debug });
116
+
117
+ if ('vcApi' in config) {
118
+ const { vcApi, did, debug } = config;
119
+
120
+ return learnCardFromApiUrl({
121
+ url: typeof vcApi === 'string' ? vcApi : 'https://bridge.learncard.com',
122
+ did: vcApi === true ? 'did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh' : did,
123
+ debug,
124
+ });
125
+ }
126
+
127
+ if ('apiKey' in config) {
128
+ return networkLearnCardFromApiKey(config as NetworkLearnCardFromApiKey['args']);
129
+ }
130
+
131
+ if ('seed' in config) {
132
+ if ('network' in config) {
133
+ if ('didWeb' in config) return didWebNetworkLearnCardFromSeed(config);
134
+
135
+ return networkLearnCardFromSeed(config);
136
+ }
137
+
138
+ if ('didWeb' in config) return didWebLearnCardFromSeed(config);
139
+
140
+ return learnCardFromSeed(config);
141
+ }
142
+
143
+ return emptyLearnCard(config);
144
+ }
@@ -0,0 +1,36 @@
1
+ import { generateLearnCard } from '@learncard/core';
2
+ import { CryptoPlugin } from '@learncard/crypto-plugin';
3
+ import { getVCAPIPlugin } from '@learncard/vc-api-plugin';
4
+ import { expirationPlugin } from '@learncard/expiration-plugin';
5
+ import { getVCTemplatesPlugin } from '@learncard/vc-templates-plugin';
6
+ import { getCHAPIPlugin } from '@learncard/chapi-plugin';
7
+ import { getLearnCardPlugin } from '@learncard/learn-card-plugin';
8
+
9
+ import { LearnCardFromVcApi } from '../types/LearnCard';
10
+
11
+ /**
12
+ * Generates a LearnCard Wallet from a 64 character seed string
13
+ *
14
+ * @group Init Functions
15
+ */
16
+ export const learnCardFromApiUrl = async ({
17
+ url,
18
+ did,
19
+ debug,
20
+ }: {
21
+ url: string;
22
+ did?: string;
23
+ debug?: typeof console.log;
24
+ }): Promise<LearnCardFromVcApi['returnValue']> => {
25
+ const cryptoLc = await (await generateLearnCard({ debug })).addPlugin(CryptoPlugin);
26
+
27
+ const apiLc = await cryptoLc.addPlugin(await getVCAPIPlugin({ url, did }));
28
+
29
+ const expirationLc = await apiLc.addPlugin(expirationPlugin(apiLc));
30
+
31
+ const templateLc = await expirationLc.addPlugin(getVCTemplatesPlugin());
32
+
33
+ const chapiLc = await templateLc.addPlugin(await getCHAPIPlugin());
34
+
35
+ return chapiLc.addPlugin(getLearnCardPlugin(chapiLc));
36
+ };
@@ -0,0 +1,11 @@
1
+ import { generateLearnCard } from '@learncard/core';
2
+ import { CustomLearnCard } from '../types/LearnCard';
3
+
4
+ /**
5
+ * Generates a custom LearnCard with no plugins added
6
+ *
7
+ * @group Init Functions
8
+ */
9
+ export const customLearnCard = async ({ debug }: Partial<CustomLearnCard['args']> = {}): Promise<
10
+ CustomLearnCard['returnValue']
11
+ > => generateLearnCard({ debug });
@@ -0,0 +1,96 @@
1
+ import { generateLearnCard } from '@learncard/core';
2
+ import { DynamicLoaderPlugin } from '@learncard/dynamic-loader-plugin';
3
+ import { CryptoPlugin } from '@learncard/crypto-plugin';
4
+ import { DidMethod, getDidKitPlugin } from '@learncard/didkit-plugin';
5
+ import { getDidKeyPlugin } from '@learncard/didkey-plugin';
6
+ import { getEncryptionPlugin } from '@learncard/encryption-plugin';
7
+ import { getVCPlugin } from '@learncard/vc-plugin';
8
+ import { getVCTemplatesPlugin } from '@learncard/vc-templates-plugin';
9
+ import { getLearnCloudPlugin } from '@learncard/learn-cloud-plugin';
10
+ import { expirationPlugin } from '@learncard/expiration-plugin';
11
+ import { getEthereumPlugin } from '@learncard/ethereum-plugin';
12
+
13
+ import { getVpqrPlugin } from '@learncard/vpqr-plugin';
14
+ import { getCHAPIPlugin } from '@learncard/chapi-plugin';
15
+ import { getLearnCardPlugin } from '@learncard/learn-card-plugin';
16
+ import { getDidWebPlugin } from '@learncard/did-web-plugin';
17
+ import { getOpenID4VCPlugin } from '@learncard/openid4vc-plugin';
18
+ import { getSdJwtVcPlugin } from '@learncard/sd-jwt-vc-plugin';
19
+
20
+ import { DidWebLearnCardFromSeed } from '../types/LearnCard';
21
+ import { defaultEthereumArgs } from '../defaults';
22
+
23
+ /**
24
+ * Generates a LearnCard Wallet from a 64 character seed string
25
+ *
26
+ * @group Init Functions
27
+ */
28
+ export const didWebLearnCardFromSeed = async ({
29
+ seed,
30
+ didWeb,
31
+ cloud: {
32
+ url = 'https://cloud.learncard.com/trpc',
33
+ unencryptedFields = [],
34
+ unencryptedCustomFields = [],
35
+ automaticallyAssociateDids = true,
36
+ } = {},
37
+ didkit,
38
+ allowRemoteContexts = false,
39
+ ethereumConfig = defaultEthereumArgs,
40
+ openid4vc,
41
+ debug,
42
+ }: DidWebLearnCardFromSeed['args']): Promise<DidWebLearnCardFromSeed['returnValue']> => {
43
+ const dynamicLc = await (await generateLearnCard({ debug })).addPlugin(DynamicLoaderPlugin);
44
+
45
+ const cryptoLc = await dynamicLc.addPlugin(CryptoPlugin);
46
+
47
+ const getDidkit = async (): Promise<typeof getDidKitPlugin> => {
48
+ if (didkit === 'node') {
49
+ const mod = await import('@learncard/didkit-plugin-node');
50
+ return mod.getDidKitPlugin as typeof getDidKitPlugin;
51
+ }
52
+ return getDidKitPlugin;
53
+ };
54
+
55
+ const didkitLc = await cryptoLc.addPlugin(
56
+ await (
57
+ await getDidkit()
58
+ )(didkit === 'node' ? undefined : didkit, allowRemoteContexts)
59
+ );
60
+
61
+ const didkeyLc = await didkitLc.addPlugin(
62
+ await getDidKeyPlugin<DidMethod>(didkitLc, seed, 'key')
63
+ );
64
+
65
+ const encryptionLc = await didkeyLc.addPlugin(await getEncryptionPlugin(didkeyLc));
66
+
67
+ const vcLc = await encryptionLc.addPlugin(getVCPlugin(encryptionLc));
68
+
69
+ const templateLc = await vcLc.addPlugin(getVCTemplatesPlugin());
70
+
71
+ const cloudLc = await templateLc.addPlugin(
72
+ await getLearnCloudPlugin(
73
+ templateLc,
74
+ url,
75
+ unencryptedFields,
76
+ unencryptedCustomFields,
77
+ automaticallyAssociateDids
78
+ )
79
+ );
80
+
81
+ const expirationLc = await cloudLc.addPlugin(expirationPlugin(cloudLc));
82
+
83
+ const ethLc = await expirationLc.addPlugin(getEthereumPlugin(expirationLc, ethereumConfig));
84
+
85
+ const vpqrLc = await ethLc.addPlugin(getVpqrPlugin(ethLc));
86
+
87
+ const chapiLc = await vpqrLc.addPlugin(await getCHAPIPlugin());
88
+
89
+ const sdJwtVcLc = await chapiLc.addPlugin(getSdJwtVcPlugin(chapiLc));
90
+
91
+ const lcLc = await sdJwtVcLc.addPlugin(getLearnCardPlugin(sdJwtVcLc));
92
+
93
+ const didWebLc = await lcLc.addPlugin(await getDidWebPlugin(lcLc, didWeb));
94
+
95
+ return didWebLc.addPlugin(getOpenID4VCPlugin(didWebLc, openid4vc));
96
+ };
@@ -0,0 +1,114 @@
1
+ import { generateLearnCard } from '@learncard/core';
2
+ import { DynamicLoaderPlugin } from '@learncard/dynamic-loader-plugin';
3
+ import { CryptoPlugin } from '@learncard/crypto-plugin';
4
+ import { DidMethod, getDidKitPlugin } from '@learncard/didkit-plugin';
5
+ import { getDidKeyPlugin } from '@learncard/didkey-plugin';
6
+ import { getEncryptionPlugin } from '@learncard/encryption-plugin';
7
+ import { getVCPlugin } from '@learncard/vc-plugin';
8
+ import { getVCTemplatesPlugin } from '@learncard/vc-templates-plugin';
9
+ import { getLearnCloudPlugin } from '@learncard/learn-cloud-plugin';
10
+ import { expirationPlugin } from '@learncard/expiration-plugin';
11
+ import { getEthereumPlugin } from '@learncard/ethereum-plugin';
12
+
13
+ import { getVpqrPlugin } from '@learncard/vpqr-plugin';
14
+ import { getCHAPIPlugin } from '@learncard/chapi-plugin';
15
+ import { getVerifyBoostPlugin, getLearnCardNetworkPlugin } from '@learncard/network-plugin';
16
+ import { getLearnCardPlugin } from '@learncard/learn-card-plugin';
17
+ import { getDidWebPlugin } from '@learncard/did-web-plugin';
18
+ import { getOpenID4VCPlugin } from '@learncard/openid4vc-plugin';
19
+ import { getSdJwtVcPlugin } from '@learncard/sd-jwt-vc-plugin';
20
+
21
+ import { DidWebNetworkLearnCardFromSeed } from '../types/LearnCard';
22
+ import { defaultEthereumArgs } from '../defaults';
23
+
24
+ /**
25
+ * Generates a Network LearnCard Wallet with a custom did:web did from a 64 character seed string
26
+ *
27
+ * @group Init Functions
28
+ */
29
+ export const didWebNetworkLearnCardFromSeed = async ({
30
+ seed,
31
+ didWeb,
32
+ network: _network,
33
+ trustedBoostRegistry = 'https://raw.githubusercontent.com/learningeconomy/registries/main/learncard/trusted-app-registry.json',
34
+ guardianApprovalGetter,
35
+ extraHeaders,
36
+
37
+ cloud: {
38
+ url = 'https://cloud.learncard.com/trpc',
39
+ unencryptedFields = [],
40
+ unencryptedCustomFields = [],
41
+ automaticallyAssociateDids = true,
42
+ } = {},
43
+ didkit,
44
+ allowRemoteContexts = false,
45
+ ethereumConfig = defaultEthereumArgs,
46
+ openid4vc,
47
+ debug,
48
+ }: DidWebNetworkLearnCardFromSeed['args']): Promise<
49
+ DidWebNetworkLearnCardFromSeed['returnValue']
50
+ > => {
51
+ const network = typeof _network === 'boolean' ? 'https://network.learncard.com/trpc' : _network;
52
+
53
+ const dynamicLc = await (await generateLearnCard({ debug })).addPlugin(DynamicLoaderPlugin);
54
+
55
+ const cryptoLc = await dynamicLc.addPlugin(CryptoPlugin);
56
+
57
+ const getDidkit = async (): Promise<typeof getDidKitPlugin> => {
58
+ if (didkit === 'node') {
59
+ const mod = await import('@learncard/didkit-plugin-node');
60
+ return mod.getDidKitPlugin as typeof getDidKitPlugin;
61
+ }
62
+ return getDidKitPlugin;
63
+ };
64
+
65
+ const didkitLc = await cryptoLc.addPlugin(
66
+ await (
67
+ await getDidkit()
68
+ )(didkit === 'node' ? undefined : didkit, allowRemoteContexts)
69
+ );
70
+
71
+ const didkeyLc = await didkitLc.addPlugin(
72
+ await getDidKeyPlugin<DidMethod>(didkitLc, seed, 'key')
73
+ );
74
+
75
+ const encryptionLc = await didkeyLc.addPlugin(await getEncryptionPlugin(didkeyLc));
76
+
77
+ const vcLc = await encryptionLc.addPlugin(getVCPlugin(encryptionLc));
78
+
79
+ const templateLc = await vcLc.addPlugin(getVCTemplatesPlugin());
80
+
81
+ const cloudLc = await templateLc.addPlugin(
82
+ await getLearnCloudPlugin(
83
+ templateLc,
84
+ url,
85
+ unencryptedFields,
86
+ unencryptedCustomFields,
87
+ automaticallyAssociateDids
88
+ )
89
+ );
90
+
91
+ const expirationLc = await cloudLc.addPlugin(expirationPlugin(cloudLc));
92
+
93
+ const ethLc = await expirationLc.addPlugin(getEthereumPlugin(expirationLc, ethereumConfig));
94
+
95
+ const vpqrLc = await ethLc.addPlugin(getVpqrPlugin(ethLc));
96
+
97
+ const chapiLc = await vpqrLc.addPlugin(await getCHAPIPlugin());
98
+
99
+ const boostVerificationLc = await chapiLc.addPlugin(
100
+ await getVerifyBoostPlugin(chapiLc, trustedBoostRegistry)
101
+ );
102
+
103
+ const sdJwtVcLc = await boostVerificationLc.addPlugin(getSdJwtVcPlugin(boostVerificationLc));
104
+
105
+ const lcLc = await sdJwtVcLc.addPlugin(getLearnCardPlugin(sdJwtVcLc));
106
+
107
+ const didWebLc = await lcLc.addPlugin(await getDidWebPlugin(lcLc, didWeb));
108
+
109
+ const networkLc = await didWebLc.addPlugin(
110
+ await getLearnCardNetworkPlugin(didWebLc, network, { guardianApprovalGetter, extraHeaders })
111
+ );
112
+
113
+ return networkLc.addPlugin(getOpenID4VCPlugin(networkLc, openid4vc));
114
+ };
@@ -0,0 +1,46 @@
1
+ import { generateLearnCard } from '@learncard/core';
2
+ import { DynamicLoaderPlugin } from '@learncard/dynamic-loader-plugin';
3
+ import { CryptoPlugin } from '@learncard/crypto-plugin';
4
+ import { getDidKitPlugin } from '@learncard/didkit-plugin';
5
+ import { expirationPlugin } from '@learncard/expiration-plugin';
6
+ import { getVCTemplatesPlugin } from '@learncard/vc-templates-plugin';
7
+ import { getCHAPIPlugin } from '@learncard/chapi-plugin';
8
+ import { getLearnCardPlugin } from '@learncard/learn-card-plugin';
9
+
10
+ import { EmptyLearnCard } from '../types/LearnCard';
11
+
12
+ /**
13
+ * Generates an empty wallet with no key material
14
+ *
15
+ * @group Init Functions
16
+ */
17
+ export const emptyLearnCard = async ({
18
+ didkit,
19
+ allowRemoteContexts = false,
20
+ debug,
21
+ }: EmptyLearnCard['args'] = {}): Promise<EmptyLearnCard['returnValue']> => {
22
+ const dynamicLc = await (await generateLearnCard({ debug })).addPlugin(DynamicLoaderPlugin);
23
+
24
+ const cryptoLc = await dynamicLc.addPlugin(CryptoPlugin);
25
+
26
+ const getDidkit = async (): Promise<typeof getDidKitPlugin> => {
27
+ if (didkit === 'node') {
28
+ const mod = await import('@learncard/didkit-plugin-node');
29
+ return mod.getDidKitPlugin as typeof getDidKitPlugin;
30
+ }
31
+
32
+ return getDidKitPlugin;
33
+ };
34
+
35
+ const didkitLc = await cryptoLc.addPlugin(
36
+ await (await getDidkit())(didkit === 'node' ? undefined : didkit, allowRemoteContexts)
37
+ );
38
+
39
+ const expirationLc = await didkitLc.addPlugin(expirationPlugin(didkitLc));
40
+
41
+ const templatesLc = await expirationLc.addPlugin(getVCTemplatesPlugin());
42
+
43
+ const chapiLc = await templatesLc.addPlugin(await getCHAPIPlugin());
44
+
45
+ return chapiLc.addPlugin(getLearnCardPlugin(chapiLc));
46
+ };