@learncard/core 1.1.4 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. package/README.md +16 -5
  2. package/dist/core.cjs.development.js +3855 -12007
  3. package/dist/core.cjs.development.js.map +3 -3
  4. package/dist/core.cjs.production.min.js +204 -290
  5. package/dist/core.cjs.production.min.js.map +3 -3
  6. package/dist/core.d.ts +4756 -0
  7. package/dist/core.esm.js +3857 -12007
  8. package/dist/core.esm.js.map +3 -3
  9. package/package.json +22 -17
  10. package/dist/didkit/index.d.ts +0 -4
  11. package/dist/index.d.ts +0 -3
  12. package/dist/types/LearnCard.d.ts +0 -77
  13. package/dist/types/wallet.d.ts +0 -27
  14. package/dist/wallet/base/crypto.d.ts +0 -3
  15. package/dist/wallet/base/functions/index.d.ts +0 -2
  16. package/dist/wallet/base/functions/passwordToKey.d.ts +0 -1
  17. package/dist/wallet/base/functions/seedToId.d.ts +0 -1
  18. package/dist/wallet/base/index.d.ts +0 -2
  19. package/dist/wallet/base/wallet.d.ts +0 -2
  20. package/dist/wallet/defaults.d.ts +0 -2
  21. package/dist/wallet/init.d.ts +0 -3
  22. package/dist/wallet/plugins/didkey/index.d.ts +0 -3
  23. package/dist/wallet/plugins/didkey/types.d.ts +0 -19
  24. package/dist/wallet/plugins/expiration/index.d.ts +0 -3
  25. package/dist/wallet/plugins/idx/idx.d.ts +0 -6
  26. package/dist/wallet/plugins/idx/index.d.ts +0 -4
  27. package/dist/wallet/plugins/idx/types.d.ts +0 -20
  28. package/dist/wallet/plugins/vc/index.d.ts +0 -2
  29. package/dist/wallet/plugins/vc/issueCredential.d.ts +0 -5
  30. package/dist/wallet/plugins/vc/issuePresentation.d.ts +0 -6
  31. package/dist/wallet/plugins/vc/types.d.ts +0 -18
  32. package/dist/wallet/plugins/vc/vc.d.ts +0 -6
  33. package/dist/wallet/plugins/vc/verifyCredential.d.ts +0 -2
  34. package/dist/wallet/plugins/vc/verifyPresentation.d.ts +0 -2
  35. package/dist/wallet/verify.d.ts +0 -3
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@learncard/core",
3
- "version": "1.1.4",
3
+ "version": "1.3.1",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/core.esm.js",
7
7
  "files": [
8
8
  "dist"
9
9
  ],
10
- "author": "Taylor Beeston <beeston.taylor@gmail.com>",
10
+ "author": "Learning Economy Foundation (www.learningeconomy.io)",
11
11
  "license": "MIT",
12
12
  "homepage": "https://github.com/WeLibraryOS/LearnCard#readme",
13
13
  "repository": {
@@ -19,37 +19,42 @@
19
19
  },
20
20
  "devDependencies": {
21
21
  "@glazed/types": "^0.2.0",
22
- "@learncard/types": "2.1.1",
22
+ "@learncard/types": "2.1.2",
23
+ "@types/jest": "^27.5.0",
23
24
  "@types/node": "^17.0.31",
24
25
  "aqu": "0.3.2",
25
26
  "esbuild": "^0.14.38",
27
+ "esbuild-jest": "^0.5.0",
26
28
  "esbuild-plugin-copy": "^1.3.0",
29
+ "jest": "27",
30
+ "ts-jest": "^28.0.5",
27
31
  "tsc-alias": "^1.6.9",
28
32
  "typescript": "^4.6.4"
29
33
  },
30
- "types": "./dist/index.d.ts",
34
+ "types": "./dist/core.d.ts",
31
35
  "dependencies": {
32
- "@ceramicnetwork/common": "^2.0.4",
33
- "@ceramicnetwork/http-client": "2.0.4",
34
- "@ceramicnetwork/stream-tile": "^2.1.3",
35
- "@ceramicnetwork/streamid": "^2.0.4",
36
- "@glazed/did-datastore": "^0.3.1",
37
- "@glazed/tile-loader": "^0.2.0",
38
- "@peculiar/webcrypto": "^1.4.0",
36
+ "@ceramicnetwork/common": "^2.2.1",
37
+ "@ceramicnetwork/http-client": "2.3.0",
38
+ "@ceramicnetwork/stream-tile": "^2.2.2",
39
+ "@ceramicnetwork/streamid": "^2.1.0",
40
+ "@glazed/did-datastore": "^0.3.2",
41
+ "@glazed/tile-loader": "^0.2.1",
42
+ "abort-controller": "^3.0.0",
39
43
  "date-fns": "^2.28.0",
40
- "dids": "^3.1.0",
44
+ "dids": "^3.2.0",
41
45
  "hex-lite": "^1.5.0",
46
+ "isomorphic-fetch": "^3.0.0",
47
+ "isomorphic-webcrypto": "^2.3.8",
42
48
  "key-did-provider-ed25519": "^2.0.0",
43
- "key-did-resolver": "1.2.1"
49
+ "key-did-resolver": "1.4.4"
44
50
  },
45
51
  "scripts": {
46
52
  "build": "aqu build && tsc-alias",
47
53
  "start": "aqu watch",
48
54
  "lint": "aqu lint",
49
55
  "lint:fix": "aqu lint --fix",
50
- "test": "aqu test --passWithNoTests",
51
- "test:watch": "aqu test --passWithNoTests --watch",
52
- "test:coverage": "aqu test --silent --ci --coverage --coverageReporters=\"text\" --coverageReporters=\"text-summary\"",
53
- "release": "np"
56
+ "test": "jest",
57
+ "test:watch": "jest --watch",
58
+ "test:coverage": "jest --silent --ci --coverage --coverageReporters=\"text\" --coverageReporters=\"text-summary\""
54
59
  }
55
60
  }
@@ -1,4 +0,0 @@
1
- import { InitInput } from './pkg/didkit_wasm';
2
- export * from './pkg/didkit_wasm';
3
- export declare const init: (arg?: InitInput | Promise<InitInput>) => Promise<import("./pkg/didkit_wasm").InitOutput | undefined>;
4
- export default init;
package/dist/index.d.ts DELETED
@@ -1,3 +0,0 @@
1
- /// <reference types="types/global" />
2
- export { walletFromKey } from './wallet/init';
3
- export { Wallet, UnlockedWallet, LockedWallet, Plugin } from './types/wallet';
@@ -1,77 +0,0 @@
1
- import { ModelAliases } from '@glazed/types';
2
- import { VerificationItem, UnsignedVC, VC, VP } from '@learncard/types';
3
- import { DidKeyPluginMethods } from '../wallet/plugins/didkey/types';
4
- import { IDXCredential, IDXPluginMethods } from '../wallet/plugins/idx/types';
5
- import { VCPluginMethods, VerificationCheck } from '../wallet/plugins/vc/types';
6
- import { InitInput } from '../didkit';
7
- import { UnlockedWallet } from './wallet';
8
- export * from '@learncard/types';
9
- export declare type LearnCardRawWallet = UnlockedWallet<'DID Key' | 'VC' | 'IDX' | 'Expiration', DidKeyPluginMethods & VCPluginMethods & IDXPluginMethods>;
10
- export declare type LearnCardWallet = {
11
- /** Raw IoE wallet instance. You shouldn't need to drop down to this level! */
12
- _wallet: LearnCardRawWallet;
13
- /** Wallet holder's did */
14
- did: string;
15
- /** Wallet holder's ed25519 key pair */
16
- keypair: Record<string, string>;
17
- /** Signs an unsigned Verifiable Credential, returning the signed VC */
18
- issueCredential: (credential: UnsignedVC) => Promise<VC>;
19
- /**
20
- * Verifies a signed Verifiable Credential
21
- *
22
- * Empty error/warnings arrays means verification was successful
23
- */
24
- verifyCredential: (credential: VC) => Promise<VerificationItem[]>;
25
- /** Creates a signed Verifiable Presentation from a signed Verifiable Credential */
26
- issuePresentation: (credential: VC) => Promise<VP>;
27
- /**
28
- * Verifies a signed Verifiable Presentation
29
- *
30
- * Empry error/warnings arrays means verification was successful
31
- */
32
- verifyPresentation: (presentation: VP) => Promise<VerificationCheck>;
33
- /** Returns the credential marked with `title` from IDX */
34
- getCredential: (title: string) => Promise<any>;
35
- /** Returns all credentials from IDX */
36
- getCredentials: () => Promise<any[]>;
37
- /**
38
- * Publishes a credential to Ceramic, returning the credential's stream ID
39
- *
40
- * This stream ID may then be shared/persisted/resolved to gain access to the credential
41
- *
42
- * Resolving a stream ID can be done by passing the stream ID to `readFromCeramic`
43
- */
44
- publishCredential: (credential: any) => Promise<string>;
45
- /**
46
- * Adds a stream ID pointing to a credential (such as the one returned by `publishCredential`)
47
- * to IDX with a bespoke title
48
- *
49
- * The credential may then be retrieved using `getCredential` and passing in that bespoke title,
50
- * or by using `getCredentials` to get a list of all credentials that have been added to IDX
51
- */
52
- addCredential: (credential: IDXCredential) => Promise<void>;
53
- /**
54
- * Resolves a stream ID, returning its contents
55
- *
56
- * This can be given the return value of `publishCredential` to gain access to the credential
57
- * that was published
58
- */
59
- readFromCeramic: (streamId: string) => Promise<any>;
60
- /**
61
- * Returns an example credential, optionally allowing a subject's did to be passed in
62
- *
63
- * You can use this to test out implementations that use this library!
64
- */
65
- getTestVc: (subject?: string) => UnsignedVC;
66
- };
67
- export declare type CeramicIDXArgs = {
68
- modelData: ModelAliases;
69
- credentialAlias: string;
70
- ceramicEndpoint: string;
71
- defaultContentFamily: string;
72
- };
73
- export declare type LearnCardConfig = {
74
- ceramicIdx: CeramicIDXArgs;
75
- didkit: InitInput | Promise<InitInput>;
76
- defaultContents: any[];
77
- };
@@ -1,27 +0,0 @@
1
- export declare type Plugin<Name extends string, PublicMethods extends Record<string, (...args: any[]) => any> = Record<never, never>> = {
2
- name?: Name;
3
- pluginMethods: {
4
- [Key in keyof PublicMethods]: <T extends UnlockedWallet<any, PublicMethods>>(wallet: T, ...args: Parameters<PublicMethods[Key]>) => ReturnType<PublicMethods[Key]>;
5
- };
6
- };
7
- export declare type PublicFieldsObj<PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never>> = {
8
- pluginMethods: PluginMethods;
9
- };
10
- export declare enum WalletStatus {
11
- Locked = "LOCKED",
12
- Unlocked = "UNLOCKED"
13
- }
14
- export declare type BaseWallet<PluginNames extends string = '', PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never>> = PublicFieldsObj<PluginMethods> & {
15
- contents: any[];
16
- plugins: Plugin<PluginNames, Record<string, (...args: any[]) => any>>[];
17
- };
18
- export declare type LockedWallet<PluginNames extends string = '', PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never>> = BaseWallet<PluginNames, PluginMethods> & {
19
- status: WalletStatus.Locked;
20
- };
21
- export declare type UnlockedWallet<PluginNames extends string = '', PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never>> = BaseWallet<PluginNames, PluginMethods> & {
22
- status: WalletStatus.Unlocked;
23
- add: (content: any) => Promise<UnlockedWallet<PluginNames, PluginMethods>>;
24
- remove: (contentId: string) => Promise<UnlockedWallet<PluginNames, PluginMethods>>;
25
- 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>>;
26
- };
27
- export declare type Wallet<PluginNames extends string = '', PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never>> = LockedWallet<PluginNames, PluginMethods> | UnlockedWallet<PluginNames, PluginMethods>;
@@ -1,3 +0,0 @@
1
- import { Crypto } from '@peculiar/webcrypto';
2
- declare let crypto: Crypto;
3
- export default crypto;
@@ -1,2 +0,0 @@
1
- export * from './passwordToKey';
2
- export * from './seedToId';
@@ -1 +0,0 @@
1
- export declare const passwordToKey: (password: string, salt?: string, iterations?: number, digest?: string) => Promise<Uint8Array>;
@@ -1 +0,0 @@
1
- export declare const seedToId: (seed: Uint8Array) => Promise<string>;
@@ -1,2 +0,0 @@
1
- export * from './functions';
2
- export * from './wallet';
@@ -1,2 +0,0 @@
1
- import { UnlockedWallet } from '../../types/wallet';
2
- export declare const generateWallet: <PluginNames extends string, PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never>>(contents?: any[], _wallet?: Partial<UnlockedWallet<any, PluginMethods>>) => Promise<UnlockedWallet<PluginNames, PluginMethods>>;
@@ -1,2 +0,0 @@
1
- import { CeramicIDXArgs } from '../types/LearnCard';
2
- export declare const defaultCeramicIDXArgs: CeramicIDXArgs;
@@ -1,3 +0,0 @@
1
- import { LearnCardConfig, LearnCardWallet } from '../types/LearnCard';
2
- /** Generates a LearnCard Wallet from a 64 character seed string */
3
- export declare const walletFromKey: (key: string, { ceramicIdx, didkit, defaultContents, }?: Partial<LearnCardConfig>) => Promise<LearnCardWallet>;
@@ -1,3 +0,0 @@
1
- import { DidKeyPluginMethods } from './types';
2
- import { Plugin } from '../../../types/wallet';
3
- export declare const getDidKeyPlugin: (key: string) => Promise<Plugin<'DID Key', DidKeyPluginMethods>>;
@@ -1,19 +0,0 @@
1
- export declare type JWK = {
2
- id: string;
3
- type: string | string[];
4
- controller?: string;
5
- publicKeyJwk?: any;
6
- privateKeyJwk?: any;
7
- '@context': string[];
8
- name: string;
9
- image: string;
10
- description: string;
11
- tags: string[];
12
- value?: string;
13
- generatedFrom?: [string];
14
- };
15
- export declare type DidKeyPluginMethods = {
16
- getSubjectDid: () => string;
17
- getSubjectKeypair: () => Record<string, string>;
18
- getKey: () => string;
19
- };
@@ -1,3 +0,0 @@
1
- import { VerifyExtension } from '../vc/types';
2
- import { Plugin, UnlockedWallet } from '../../../types/wallet';
3
- export declare const ExpirationPlugin: (wallet: UnlockedWallet<any, VerifyExtension>) => Plugin<'Expiration', VerifyExtension>;
@@ -1,6 +0,0 @@
1
- import { IDXPluginMethods } from './types';
2
- import { Plugin, UnlockedWallet } from '../../../types/wallet';
3
- import { CeramicIDXArgs } from '../../../types/LearnCard';
4
- export declare const getIDXPlugin: (wallet: UnlockedWallet<any, {
5
- getKey: () => string;
6
- }>, { modelData, credentialAlias, ceramicEndpoint, defaultContentFamily }: CeramicIDXArgs) => Promise<Plugin<'IDX', IDXPluginMethods>>;
@@ -1,4 +0,0 @@
1
- import { getIDXPlugin } from './idx';
2
- export { getIDXPlugin } from './idx';
3
- export * from './types';
4
- export default getIDXPlugin;
@@ -1,20 +0,0 @@
1
- import { StreamID } from '@ceramicnetwork/streamid';
2
- export declare type IDXPluginMethods = {
3
- getCredentialsListFromIndex: (alias?: string) => Promise<CredentialsList>;
4
- publishContentToCeramic: (cred: any) => Promise<string>;
5
- readContentFromCeramic: (streamId: string) => Promise<any>;
6
- getVerifiableCredentialFromIndex: (title: string) => Promise<any>;
7
- getVerifiableCredentialsFromIndex: () => Promise<any>;
8
- addVerifiableCredentialInIdx: (cred: IDXCredential) => Promise<StreamID>;
9
- };
10
- export declare enum StorageType {
11
- ceramic = "ceramic"
12
- }
13
- export declare type IDXCredential = {
14
- id: string;
15
- title: string;
16
- storageType?: StorageType;
17
- };
18
- export declare type CredentialsList = {
19
- credentials: IDXCredential[];
20
- };
@@ -1,2 +0,0 @@
1
- export { getVCPlugin } from './vc';
2
- export * from './types';
@@ -1,5 +0,0 @@
1
- import { UnsignedVC } from '@learncard/types';
2
- import { UnlockedWallet } from '../../../types/wallet';
3
- export declare const issueCredential: (wallet: UnlockedWallet<any, {
4
- getSubjectKeypair: () => Record<string, string>;
5
- }>, credential: UnsignedVC) => Promise<any>;
@@ -1,6 +0,0 @@
1
- import { VC } from '@learncard/types';
2
- import { UnlockedWallet } from '../../../types/wallet';
3
- export declare const issuePresentation: (wallet: UnlockedWallet<any, {
4
- getSubjectDid: () => string;
5
- getSubjectKeypair: () => Record<string, string>;
6
- }>, credential: VC) => Promise<any>;
@@ -1,18 +0,0 @@
1
- import { UnsignedVC, VC, VP } from '@learncard/types';
2
- export declare type VerificationCheck = {
3
- checks: string[];
4
- warnings: string[];
5
- errors: string[];
6
- };
7
- export declare type VCPluginMethods = {
8
- issueCredential: (credential: UnsignedVC) => Promise<VC>;
9
- verifyCredential: (credential: VC) => Promise<VerificationCheck>;
10
- issuePresentation: (credential: VC) => Promise<VP>;
11
- verifyPresentation: (presentation: VP) => Promise<VerificationCheck>;
12
- getTestVc: (subject?: string) => UnsignedVC;
13
- getSubjectDid: () => string;
14
- getSubjectKeypair: () => Record<string, string>;
15
- };
16
- export declare type VerifyExtension = {
17
- verifyCredential: (credential: VC) => Promise<VerificationCheck>;
18
- };
@@ -1,6 +0,0 @@
1
- import { VCPluginMethods } from './types';
2
- import { Plugin, UnlockedWallet } from '../../../types/wallet';
3
- export declare const getVCPlugin: (wallet: UnlockedWallet<any, {
4
- getSubjectDid: () => string;
5
- getSubjectKeypair: () => Record<string, string>;
6
- }>) => Promise<Plugin<'VC', VCPluginMethods>>;
@@ -1,2 +0,0 @@
1
- import { VC } from '@learncard/types';
2
- export declare const verifyCredential: (credential: VC) => Promise<any>;
@@ -1,2 +0,0 @@
1
- import { VP } from '@learncard/types';
2
- export declare const verifyPresentation: (presentation: VP) => Promise<any>;
@@ -1,3 +0,0 @@
1
- import { VC, VerificationItem } from '@learncard/types';
2
- import { LearnCardRawWallet } from '../types/LearnCard';
3
- export declare const verifyCredential: (wallet: LearnCardRawWallet) => (credential: VC) => Promise<VerificationItem[]>;