@docknetwork/wallet-sdk-wasm 1.5.14 → 1.7.6
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/generate-docs.js +49 -0
- package/jsdoc.conf.json +29 -6
- package/lib/index.js +9 -1
- package/lib/index.mjs +9 -1
- package/lib/modules/network-manager.js +15 -12
- package/lib/modules/network-manager.mjs +15 -12
- package/lib/rpc-server.js +11 -1
- package/lib/rpc-server.mjs +11 -1
- package/lib/services/blockchain/cached-did-resolver.js +113 -0
- package/lib/services/blockchain/cached-did-resolver.mjs +109 -0
- package/lib/services/blockchain/index.js +11 -0
- package/lib/services/blockchain/index.mjs +11 -0
- package/lib/services/blockchain/service-rpc.js +12 -0
- package/lib/services/blockchain/service-rpc.mjs +12 -0
- package/lib/services/blockchain/service.js +161 -19
- package/lib/services/blockchain/service.mjs +162 -20
- package/lib/services/credential/bbs-revocation.js +11 -0
- package/lib/services/credential/bbs-revocation.mjs +11 -0
- package/lib/services/credential/bound-check.js +1 -1
- package/lib/services/credential/bound-check.mjs +1 -1
- package/lib/services/credential/config.js +4 -1
- package/lib/services/credential/config.mjs +4 -1
- package/lib/services/credential/delegatable-credentials.js +300 -0
- package/lib/services/credential/delegatable-credentials.mjs +263 -0
- package/lib/services/credential/index.js +53 -0
- package/lib/services/credential/index.mjs +18 -0
- package/lib/services/credential/pex-helpers.js +4 -4
- package/lib/services/credential/pex-helpers.mjs +4 -4
- package/lib/services/credential/sd-jwt.js +214 -0
- package/lib/services/credential/sd-jwt.mjs +200 -0
- package/lib/services/credential/service-rpc.js +9 -0
- package/lib/services/credential/service-rpc.mjs +9 -0
- package/lib/services/credential/service.js +324 -7
- package/lib/services/credential/service.mjs +324 -7
- package/lib/services/edv/index.js +1 -0
- package/lib/services/edv/index.mjs +1 -0
- package/lib/services/edv/service-rpc.js +23 -0
- package/lib/services/edv/service-rpc.mjs +23 -0
- package/lib/services/edv/service.js +226 -2
- package/lib/services/edv/service.mjs +223 -3
- package/lib/services/index.js +14 -0
- package/lib/services/index.mjs +14 -0
- package/lib/services/pex/config.js +4 -0
- package/lib/services/pex/config.mjs +4 -0
- package/lib/services/pex/service-rpc.js +4 -0
- package/lib/services/pex/service-rpc.mjs +4 -0
- package/lib/services/pex/service.js +7 -0
- package/lib/services/pex/service.mjs +7 -0
- package/lib/services/relay-service/service.js +124 -1
- package/lib/services/relay-service/service.mjs +124 -1
- package/lib/services/rpc-service-client.js +0 -3
- package/lib/services/rpc-service-client.mjs +0 -3
- package/lib/services/storage/index.js +19 -2
- package/lib/services/storage/index.mjs +24 -1
- package/lib/services/storage/service-rpc.js +7 -3
- package/lib/services/storage/service-rpc.mjs +7 -3
- package/lib/services/storage/service.js +4 -0
- package/lib/services/storage/service.mjs +4 -0
- package/lib/setup-nodejs.js +9 -1
- package/lib/setup-nodejs.mjs +9 -1
- package/lib/setup-tests.js +9 -1
- package/lib/setup-tests.mjs +9 -1
- package/lib/src/modules/event-manager.d.ts +0 -1
- package/lib/src/modules/event-manager.d.ts.map +1 -1
- package/lib/src/modules/network-manager.d.ts +2 -4
- package/lib/src/modules/network-manager.d.ts.map +1 -1
- package/lib/src/services/blockchain/cached-did-resolver.d.ts +28 -0
- package/lib/src/services/blockchain/cached-did-resolver.d.ts.map +1 -0
- package/lib/src/services/blockchain/cached-did-resolver.test.d.ts +2 -0
- package/lib/src/services/blockchain/cached-did-resolver.test.d.ts.map +1 -0
- package/lib/src/services/blockchain/configs.d.ts +1 -2
- package/lib/src/services/blockchain/configs.d.ts.map +1 -1
- package/lib/src/services/blockchain/service.d.ts +117 -19
- package/lib/src/services/blockchain/service.d.ts.map +1 -1
- package/lib/src/services/credential/bbs-revocation.d.ts +1 -1
- package/lib/src/services/credential/bbs-revocation.d.ts.map +1 -1
- package/lib/src/services/credential/bound-check.d.ts.map +1 -1
- package/lib/src/services/credential/config.d.ts.map +1 -1
- package/lib/src/services/credential/delegatable-credentials.d.ts +272 -0
- package/lib/src/services/credential/delegatable-credentials.d.ts.map +1 -0
- package/lib/src/services/credential/index.d.ts +4 -0
- package/lib/src/services/credential/index.d.ts.map +1 -1
- package/lib/src/services/credential/pex-helpers.d.ts +2 -2
- package/lib/src/services/credential/pex-helpers.d.ts.map +1 -1
- package/lib/src/services/credential/sd-jwt.test.d.ts +2 -0
- package/lib/src/services/credential/sd-jwt.test.d.ts.map +1 -0
- package/lib/src/services/credential/service.d.ts +274 -4
- package/lib/src/services/credential/service.d.ts.map +1 -1
- package/lib/src/services/dids/keypair-utils.d.ts +2 -2
- package/lib/src/services/dids/keypair-utils.d.ts.map +1 -1
- package/lib/src/services/dids/service.d.ts +35 -3
- package/lib/src/services/dids/service.d.ts.map +1 -1
- package/lib/src/services/edv/service.d.ts +201 -2
- package/lib/src/services/edv/service.d.ts.map +1 -1
- package/lib/src/services/pex/config.d.ts +1 -0
- package/lib/src/services/pex/config.d.ts.map +1 -1
- package/lib/src/services/pex/service.d.ts +1 -0
- package/lib/src/services/pex/service.d.ts.map +1 -1
- package/lib/src/services/relay-service/service.d.ts +148 -8
- package/lib/src/services/relay-service/service.d.ts.map +1 -1
- package/lib/src/services/rpc-service-client.d.ts +2 -2
- package/lib/src/services/rpc-service-client.d.ts.map +1 -1
- package/lib/src/services/storage/index.d.ts +1 -1
- package/lib/src/services/storage/index.d.ts.map +1 -1
- package/lib/src/services/storage/service-rpc.d.ts +9 -0
- package/lib/src/services/storage/service-rpc.d.ts.map +1 -0
- package/lib/src/services/storage/service.d.ts +1 -0
- package/lib/src/services/storage/service.d.ts.map +1 -1
- package/lib/src/services/util-crypto/service.d.ts +2 -2
- package/lib/src/services/util-crypto/service.d.ts.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/wallet/rpc-storage-interface.js +13 -3
- package/lib/wallet/rpc-storage-interface.mjs +11 -1
- package/lib/wallet/rpc-storage-wallet.js +10 -0
- package/lib/wallet/rpc-storage-wallet.mjs +10 -0
- package/package.json +29 -16
- package/rollup.config.mjs +5 -3
- package/src/globals.d.ts +3 -0
- package/src/modules/network-manager.ts +15 -14
- package/src/services/blockchain/cached-did-resolver.test.ts +288 -0
- package/src/services/blockchain/cached-did-resolver.ts +126 -0
- package/src/services/blockchain/configs.ts +1 -2
- package/src/services/blockchain/service-rpc.js +12 -0
- package/src/services/blockchain/service.ts +167 -20
- package/src/services/credential/bound-check.ts +1 -1
- package/src/services/credential/config.ts +7 -1
- package/src/services/credential/delegatable-credentials.ts +409 -0
- package/src/services/credential/index.ts +16 -0
- package/src/services/credential/pex-helpers.js +4 -4
- package/src/services/credential/pex-helpers.test.js +2 -2
- package/src/services/credential/sd-jwt.test.ts +718 -0
- package/src/services/credential/sd-jwt.ts +231 -0
- package/src/services/credential/service-rpc.js +9 -0
- package/src/services/credential/service.ts +328 -7
- package/src/services/edv/index.test.js +229 -0
- package/src/services/edv/service-rpc.js +23 -0
- package/src/services/edv/service.ts +272 -1
- package/src/services/pex/config.ts +4 -0
- package/src/services/pex/service-rpc.js +4 -0
- package/src/services/pex/service.ts +13 -0
- package/src/services/pex/tests/pex-service.test.js +210 -0
- package/src/services/relay-service/service.ts +130 -1
- package/src/services/rpc-service-client.js +0 -3
- package/src/services/storage/index.js +15 -1
- package/src/services/storage/service-rpc.js +7 -3
- package/src/services/storage/service.ts +5 -0
package/generate-docs.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const jsdoc2md = require('jsdoc-to-markdown');
|
|
4
|
+
const fs = require('fs');
|
|
5
|
+
const path = require('path');
|
|
6
|
+
|
|
7
|
+
async function generateMarkdownDocs() {
|
|
8
|
+
console.log('Generating markdown documentation...');
|
|
9
|
+
|
|
10
|
+
const outputDir = path.resolve('../../docs/api');
|
|
11
|
+
if (!fs.existsSync(outputDir)) {
|
|
12
|
+
fs.mkdirSync(outputDir, {recursive: true});
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const outputFile = path.join(outputDir, 'wasm.md');
|
|
16
|
+
|
|
17
|
+
// Get all source files - focusing on main service modules
|
|
18
|
+
const sourceFiles = [
|
|
19
|
+
'./src/services/blockchain/*.js',
|
|
20
|
+
'./src/services/credential/*.js',
|
|
21
|
+
'./src/services/dids/*.js',
|
|
22
|
+
'./src/services/relay-service/*.js',
|
|
23
|
+
'./src/services/wallet/*.js',
|
|
24
|
+
'./src/services/pex/*.js',
|
|
25
|
+
'./src/services/util-crypto/*.js',
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
console.log('Processing source files from packages/wasm...');
|
|
29
|
+
|
|
30
|
+
const output = await jsdoc2md.render({
|
|
31
|
+
files: sourceFiles,
|
|
32
|
+
configure: './jsdoc.conf.json',
|
|
33
|
+
'no-cache': true,
|
|
34
|
+
template: `# Wallet SDK WASM API Documentation
|
|
35
|
+
|
|
36
|
+
{{>main}}
|
|
37
|
+
`,
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// Ensure we have substantial content
|
|
41
|
+
fs.writeFileSync(outputFile, output);
|
|
42
|
+
console.log(`✅ API documentation generated successfully: ${outputFile}`);
|
|
43
|
+
console.log(`📄 Generated ${output.length} characters of documentation`);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
generateMarkdownDocs().catch(error => {
|
|
47
|
+
console.error('Error generating documentation:', error);
|
|
48
|
+
process.exit(1);
|
|
49
|
+
});
|
package/jsdoc.conf.json
CHANGED
|
@@ -1,8 +1,31 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
"
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
"source": {
|
|
3
|
+
"includePattern": ".+\\.(js|ts)$",
|
|
4
|
+
"exclude": ["node_modules", "lib", "fixtures", "test", "__tests__"]
|
|
5
|
+
},
|
|
6
|
+
"opts": {
|
|
7
|
+
"destination": "./jsdocs/",
|
|
8
|
+
"recurse": true
|
|
9
|
+
},
|
|
10
|
+
"plugins": [
|
|
11
|
+
"plugins/markdown",
|
|
12
|
+
"jsdoc-babel"
|
|
13
|
+
],
|
|
14
|
+
"babel": {
|
|
15
|
+
"extensions": ["js", "ts"],
|
|
16
|
+
"ignore": ["**/*.(test|spec).(js|ts)"],
|
|
17
|
+
"babelrc": false,
|
|
18
|
+
"presets": [
|
|
19
|
+
["@babel/preset-env", { "targets": { "node": "current" } }],
|
|
20
|
+
["@babel/preset-typescript", { "allExtensions": true }]
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
"templates": {
|
|
24
|
+
"cleverLinks": false,
|
|
25
|
+
"monospaceLinks": false
|
|
26
|
+
},
|
|
27
|
+
"tags": {
|
|
28
|
+
"allowUnknownTags": true,
|
|
29
|
+
"dictionaries": ["jsdoc", "closure"]
|
|
30
|
+
}
|
|
8
31
|
}
|
package/lib/index.js
CHANGED
|
@@ -26,6 +26,11 @@ require('@scure/bip39');
|
|
|
26
26
|
require('@scure/bip39/wordlists/english');
|
|
27
27
|
require('./services/util-crypto/configs.js');
|
|
28
28
|
require('@docknetwork/credential-sdk/types');
|
|
29
|
+
require('./services/blockchain/cached-did-resolver.js');
|
|
30
|
+
require('./services/storage/index.js');
|
|
31
|
+
require('./services/storage/service.js');
|
|
32
|
+
require('./services/storage/service-rpc.js');
|
|
33
|
+
require('./services/rpc-service-client.js');
|
|
29
34
|
require('./services/wallet/service.js');
|
|
30
35
|
require('./wallet/memory-storage-wallet.js');
|
|
31
36
|
require('@docknetwork/universal-wallet/storage-wallet');
|
|
@@ -34,7 +39,6 @@ require('@docknetwork/universal-wallet/storage/storage-interface');
|
|
|
34
39
|
require('./services/wallet/configs.js');
|
|
35
40
|
require('./core/validation.js');
|
|
36
41
|
require('./types.js');
|
|
37
|
-
require('./services/storage/service.js');
|
|
38
42
|
require('./services/dids/service.js');
|
|
39
43
|
require('@docknetwork/wallet-sdk-dids/lib');
|
|
40
44
|
require('./services/dids/config.js');
|
|
@@ -61,6 +65,9 @@ require('@docknetwork/crypto-wasm-ts/lib/legosnark');
|
|
|
61
65
|
require('./services/credential/pex-helpers.js');
|
|
62
66
|
require('@astronautlabs/jsonpath');
|
|
63
67
|
require('./services/credential/bbs-revocation.js');
|
|
68
|
+
require('./services/credential/sd-jwt.js');
|
|
69
|
+
require('@sd-jwt/sd-jwt-vc');
|
|
70
|
+
require('@sd-jwt/crypto-nodejs');
|
|
64
71
|
require('./services/relay-service/service.js');
|
|
65
72
|
require('./services/relay-service/configs.js');
|
|
66
73
|
require('@docknetwork/wallet-sdk-relay-service/lib');
|
|
@@ -73,6 +80,7 @@ require('./services/edv/hmac.js');
|
|
|
73
80
|
require('base64url-universal');
|
|
74
81
|
require('@docknetwork/universal-wallet/crypto');
|
|
75
82
|
require('@docknetwork/wallet-sdk-data-store/lib/logger');
|
|
83
|
+
require('futoin-hkdf');
|
|
76
84
|
require('winston-transport');
|
|
77
85
|
|
|
78
86
|
rpcClient.initRpcClient(jsonRPCRequest => {
|
package/lib/index.mjs
CHANGED
|
@@ -24,6 +24,11 @@ import '@scure/bip39';
|
|
|
24
24
|
import '@scure/bip39/wordlists/english';
|
|
25
25
|
import './services/util-crypto/configs.mjs';
|
|
26
26
|
import '@docknetwork/credential-sdk/types';
|
|
27
|
+
import './services/blockchain/cached-did-resolver.mjs';
|
|
28
|
+
import './services/storage/index.mjs';
|
|
29
|
+
import './services/storage/service.mjs';
|
|
30
|
+
import './services/storage/service-rpc.mjs';
|
|
31
|
+
import './services/rpc-service-client.mjs';
|
|
27
32
|
import './services/wallet/service.mjs';
|
|
28
33
|
import './wallet/memory-storage-wallet.mjs';
|
|
29
34
|
import '@docknetwork/universal-wallet/storage-wallet';
|
|
@@ -32,7 +37,6 @@ import '@docknetwork/universal-wallet/storage/storage-interface';
|
|
|
32
37
|
import './services/wallet/configs.mjs';
|
|
33
38
|
import './core/validation.mjs';
|
|
34
39
|
import './types.mjs';
|
|
35
|
-
import './services/storage/service.mjs';
|
|
36
40
|
import './services/dids/service.mjs';
|
|
37
41
|
import '@docknetwork/wallet-sdk-dids/lib';
|
|
38
42
|
import './services/dids/config.mjs';
|
|
@@ -59,6 +63,9 @@ import '@docknetwork/crypto-wasm-ts/lib/legosnark';
|
|
|
59
63
|
import './services/credential/pex-helpers.mjs';
|
|
60
64
|
import '@astronautlabs/jsonpath';
|
|
61
65
|
import './services/credential/bbs-revocation.mjs';
|
|
66
|
+
import './services/credential/sd-jwt.mjs';
|
|
67
|
+
import '@sd-jwt/sd-jwt-vc';
|
|
68
|
+
import '@sd-jwt/crypto-nodejs';
|
|
62
69
|
import './services/relay-service/service.mjs';
|
|
63
70
|
import './services/relay-service/configs.mjs';
|
|
64
71
|
import '@docknetwork/wallet-sdk-relay-service/lib';
|
|
@@ -71,6 +78,7 @@ import './services/edv/hmac.mjs';
|
|
|
71
78
|
import 'base64url-universal';
|
|
72
79
|
import '@docknetwork/universal-wallet/crypto';
|
|
73
80
|
import '@docknetwork/wallet-sdk-data-store/lib/logger';
|
|
81
|
+
import 'futoin-hkdf';
|
|
74
82
|
import 'winston-transport';
|
|
75
83
|
|
|
76
84
|
initRpcClient(jsonRPCRequest => {
|
|
@@ -9,27 +9,30 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
9
9
|
var assert__default = /*#__PURE__*/_interopDefaultLegacy(assert);
|
|
10
10
|
|
|
11
11
|
// @ts-nocheck
|
|
12
|
-
const
|
|
12
|
+
const BLOCKCHAIN_NETWORKS = {
|
|
13
13
|
mainnet: {
|
|
14
14
|
name: 'Cheqd Mainnet',
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
cheqdApiUrl: [
|
|
16
|
+
'https://mainnet.cheqd.docknode.io',
|
|
17
|
+
'https://rpc.cheqd.net',
|
|
18
|
+
],
|
|
18
19
|
},
|
|
19
20
|
testnet: {
|
|
20
21
|
name: 'Cheqd Testnet',
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
cheqdApiUrl: [
|
|
23
|
+
'https://testnet.cheqd.docknode.io',
|
|
24
|
+
'https://api.cheqd.network',
|
|
25
|
+
],
|
|
24
26
|
},
|
|
25
27
|
local: {
|
|
26
28
|
name: 'Local Node',
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
cheqdApiUrl: [
|
|
30
|
+
'http://localhost:8080',
|
|
31
|
+
],
|
|
29
32
|
},
|
|
30
33
|
};
|
|
31
34
|
function getNetworkInfo(networkId) {
|
|
32
|
-
const networkInfo =
|
|
35
|
+
const networkInfo = BLOCKCHAIN_NETWORKS[networkId];
|
|
33
36
|
assert__default["default"](!!networkInfo, `Network ${networkId} not found`);
|
|
34
37
|
return networkInfo;
|
|
35
38
|
}
|
|
@@ -50,7 +53,7 @@ class NetworkManager {
|
|
|
50
53
|
* @param {string} networkId
|
|
51
54
|
*/
|
|
52
55
|
setNetworkId(networkId) {
|
|
53
|
-
assert__default["default"](!!
|
|
56
|
+
assert__default["default"](!!BLOCKCHAIN_NETWORKS[networkId], `invalid networkId ${networkId}`);
|
|
54
57
|
this.networkId = networkId;
|
|
55
58
|
}
|
|
56
59
|
/**
|
|
@@ -73,5 +76,5 @@ class NetworkManager {
|
|
|
73
76
|
}
|
|
74
77
|
}
|
|
75
78
|
|
|
79
|
+
exports.BLOCKCHAIN_NETWORKS = BLOCKCHAIN_NETWORKS;
|
|
76
80
|
exports.NetworkManager = NetworkManager;
|
|
77
|
-
exports.SUBSTRATE_NETWORKS = SUBSTRATE_NETWORKS;
|
|
@@ -1,27 +1,30 @@
|
|
|
1
1
|
import assert from 'assert';
|
|
2
2
|
|
|
3
3
|
// @ts-nocheck
|
|
4
|
-
const
|
|
4
|
+
const BLOCKCHAIN_NETWORKS = {
|
|
5
5
|
mainnet: {
|
|
6
6
|
name: 'Cheqd Mainnet',
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
cheqdApiUrl: [
|
|
8
|
+
'https://mainnet.cheqd.docknode.io',
|
|
9
|
+
'https://rpc.cheqd.net',
|
|
10
|
+
],
|
|
10
11
|
},
|
|
11
12
|
testnet: {
|
|
12
13
|
name: 'Cheqd Testnet',
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
cheqdApiUrl: [
|
|
15
|
+
'https://testnet.cheqd.docknode.io',
|
|
16
|
+
'https://api.cheqd.network',
|
|
17
|
+
],
|
|
16
18
|
},
|
|
17
19
|
local: {
|
|
18
20
|
name: 'Local Node',
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
cheqdApiUrl: [
|
|
22
|
+
'http://localhost:8080',
|
|
23
|
+
],
|
|
21
24
|
},
|
|
22
25
|
};
|
|
23
26
|
function getNetworkInfo(networkId) {
|
|
24
|
-
const networkInfo =
|
|
27
|
+
const networkInfo = BLOCKCHAIN_NETWORKS[networkId];
|
|
25
28
|
assert(!!networkInfo, `Network ${networkId} not found`);
|
|
26
29
|
return networkInfo;
|
|
27
30
|
}
|
|
@@ -42,7 +45,7 @@ class NetworkManager {
|
|
|
42
45
|
* @param {string} networkId
|
|
43
46
|
*/
|
|
44
47
|
setNetworkId(networkId) {
|
|
45
|
-
assert(!!
|
|
48
|
+
assert(!!BLOCKCHAIN_NETWORKS[networkId], `invalid networkId ${networkId}`);
|
|
46
49
|
this.networkId = networkId;
|
|
47
50
|
}
|
|
48
51
|
/**
|
|
@@ -65,4 +68,4 @@ class NetworkManager {
|
|
|
65
68
|
}
|
|
66
69
|
}
|
|
67
70
|
|
|
68
|
-
export {
|
|
71
|
+
export { BLOCKCHAIN_NETWORKS, NetworkManager };
|
package/lib/rpc-server.js
CHANGED
|
@@ -22,6 +22,13 @@ require('@scure/bip39');
|
|
|
22
22
|
require('@scure/bip39/wordlists/english');
|
|
23
23
|
require('./services/util-crypto/configs.js');
|
|
24
24
|
require('@docknetwork/credential-sdk/types');
|
|
25
|
+
require('./services/blockchain/cached-did-resolver.js');
|
|
26
|
+
require('./services/storage/index.js');
|
|
27
|
+
require('./services/storage/service.js');
|
|
28
|
+
require('./services/storage/service-rpc.js');
|
|
29
|
+
require('./services/rpc-service-client.js');
|
|
30
|
+
require('./rpc-client.js');
|
|
31
|
+
require('./logger.js');
|
|
25
32
|
require('./services/wallet/service.js');
|
|
26
33
|
require('./wallet/memory-storage-wallet.js');
|
|
27
34
|
require('@docknetwork/universal-wallet/storage-wallet');
|
|
@@ -30,7 +37,6 @@ require('@docknetwork/universal-wallet/storage/storage-interface');
|
|
|
30
37
|
require('./services/wallet/configs.js');
|
|
31
38
|
require('./core/validation.js');
|
|
32
39
|
require('./types.js');
|
|
33
|
-
require('./services/storage/service.js');
|
|
34
40
|
require('./services/dids/service.js');
|
|
35
41
|
require('@docknetwork/wallet-sdk-dids/lib');
|
|
36
42
|
require('./services/dids/config.js');
|
|
@@ -57,6 +63,9 @@ require('@docknetwork/crypto-wasm-ts/lib/legosnark');
|
|
|
57
63
|
require('./services/credential/pex-helpers.js');
|
|
58
64
|
require('@astronautlabs/jsonpath');
|
|
59
65
|
require('./services/credential/bbs-revocation.js');
|
|
66
|
+
require('./services/credential/sd-jwt.js');
|
|
67
|
+
require('@sd-jwt/sd-jwt-vc');
|
|
68
|
+
require('@sd-jwt/crypto-nodejs');
|
|
60
69
|
require('./services/relay-service/service.js');
|
|
61
70
|
require('./services/relay-service/configs.js');
|
|
62
71
|
require('@docknetwork/wallet-sdk-relay-service/lib');
|
|
@@ -69,6 +78,7 @@ require('./services/edv/hmac.js');
|
|
|
69
78
|
require('base64url-universal');
|
|
70
79
|
require('@docknetwork/universal-wallet/crypto');
|
|
71
80
|
require('@docknetwork/wallet-sdk-data-store/lib/logger');
|
|
81
|
+
require('futoin-hkdf');
|
|
72
82
|
|
|
73
83
|
const rpcServer = new jsonRpc2_0.JSONRPCServer();
|
|
74
84
|
|
package/lib/rpc-server.mjs
CHANGED
|
@@ -20,6 +20,13 @@ import '@scure/bip39';
|
|
|
20
20
|
import '@scure/bip39/wordlists/english';
|
|
21
21
|
import './services/util-crypto/configs.mjs';
|
|
22
22
|
import '@docknetwork/credential-sdk/types';
|
|
23
|
+
import './services/blockchain/cached-did-resolver.mjs';
|
|
24
|
+
import './services/storage/index.mjs';
|
|
25
|
+
import './services/storage/service.mjs';
|
|
26
|
+
import './services/storage/service-rpc.mjs';
|
|
27
|
+
import './services/rpc-service-client.mjs';
|
|
28
|
+
import './rpc-client.mjs';
|
|
29
|
+
import './logger.mjs';
|
|
23
30
|
import './services/wallet/service.mjs';
|
|
24
31
|
import './wallet/memory-storage-wallet.mjs';
|
|
25
32
|
import '@docknetwork/universal-wallet/storage-wallet';
|
|
@@ -28,7 +35,6 @@ import '@docknetwork/universal-wallet/storage/storage-interface';
|
|
|
28
35
|
import './services/wallet/configs.mjs';
|
|
29
36
|
import './core/validation.mjs';
|
|
30
37
|
import './types.mjs';
|
|
31
|
-
import './services/storage/service.mjs';
|
|
32
38
|
import './services/dids/service.mjs';
|
|
33
39
|
import '@docknetwork/wallet-sdk-dids/lib';
|
|
34
40
|
import './services/dids/config.mjs';
|
|
@@ -55,6 +61,9 @@ import '@docknetwork/crypto-wasm-ts/lib/legosnark';
|
|
|
55
61
|
import './services/credential/pex-helpers.mjs';
|
|
56
62
|
import '@astronautlabs/jsonpath';
|
|
57
63
|
import './services/credential/bbs-revocation.mjs';
|
|
64
|
+
import './services/credential/sd-jwt.mjs';
|
|
65
|
+
import '@sd-jwt/sd-jwt-vc';
|
|
66
|
+
import '@sd-jwt/crypto-nodejs';
|
|
58
67
|
import './services/relay-service/service.mjs';
|
|
59
68
|
import './services/relay-service/configs.mjs';
|
|
60
69
|
import '@docknetwork/wallet-sdk-relay-service/lib';
|
|
@@ -67,6 +76,7 @@ import './services/edv/hmac.mjs';
|
|
|
67
76
|
import 'base64url-universal';
|
|
68
77
|
import '@docknetwork/universal-wallet/crypto';
|
|
69
78
|
import '@docknetwork/wallet-sdk-data-store/lib/logger';
|
|
79
|
+
import 'futoin-hkdf';
|
|
70
80
|
|
|
71
81
|
const rpcServer = new JSONRPCServer();
|
|
72
82
|
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var services_storage_index = require('../storage/index.js');
|
|
6
|
+
require('../storage/service.js');
|
|
7
|
+
require('../storage/service-rpc.js');
|
|
8
|
+
require('../rpc-service-client.js');
|
|
9
|
+
require('assert');
|
|
10
|
+
require('../../rpc-client.js');
|
|
11
|
+
require('json-rpc-2.0');
|
|
12
|
+
require('../../core/crypto.js');
|
|
13
|
+
require('crypto');
|
|
14
|
+
require('../../core/logger.js');
|
|
15
|
+
require('../../logger.js');
|
|
16
|
+
require('../../rpc-util.js');
|
|
17
|
+
|
|
18
|
+
class CachedDIDResolver {
|
|
19
|
+
router;
|
|
20
|
+
ttl;
|
|
21
|
+
CACHE_PREFIX = 'did-cache:';
|
|
22
|
+
constructor(router, cacheOptions = {}) {
|
|
23
|
+
this.router = router;
|
|
24
|
+
// 1 hour default
|
|
25
|
+
this.ttl = cacheOptions.ttl || 60 * 60 * 1000;
|
|
26
|
+
}
|
|
27
|
+
getCacheKey(did) {
|
|
28
|
+
return `${this.CACHE_PREFIX}${did}`;
|
|
29
|
+
}
|
|
30
|
+
async getCacheEntry(did) {
|
|
31
|
+
const key = this.getCacheKey(did);
|
|
32
|
+
const data = await services_storage_index.storageService.getItem(key);
|
|
33
|
+
try {
|
|
34
|
+
return data ? JSON.parse(data) : null;
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
console.error('Error parsing cache entry:', error);
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
async setCacheEntry(did, entry) {
|
|
42
|
+
const key = this.getCacheKey(did);
|
|
43
|
+
await services_storage_index.storageService.setItem(key, JSON.stringify(entry));
|
|
44
|
+
}
|
|
45
|
+
async getCachedDIDs() {
|
|
46
|
+
const allKeys = await services_storage_index.storageService.getAllKeys();
|
|
47
|
+
const cachedDIDs = [];
|
|
48
|
+
allKeys.forEach(key => {
|
|
49
|
+
if (key.startsWith(this.CACHE_PREFIX)) {
|
|
50
|
+
cachedDIDs.push(key.replace(this.CACHE_PREFIX, ''));
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
return cachedDIDs;
|
|
54
|
+
}
|
|
55
|
+
async resolve(did) {
|
|
56
|
+
const cached = await this.getCacheEntry(did);
|
|
57
|
+
if (cached) {
|
|
58
|
+
if (Date.now() - cached.timestamp < this.ttl) {
|
|
59
|
+
console.log('Cache hit for:', did);
|
|
60
|
+
return cached.value;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
console.log('Cache expired for:', did, 'returning stale value and refreshing in background');
|
|
64
|
+
this.refreshInBackground(did);
|
|
65
|
+
return cached.value;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
console.log('Cache miss, resolving:', did);
|
|
69
|
+
const result = await this.router.resolve(did);
|
|
70
|
+
await this.setCacheEntry(result.id, {
|
|
71
|
+
value: result,
|
|
72
|
+
id: result.id,
|
|
73
|
+
timestamp: Date.now()
|
|
74
|
+
});
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
async refreshInBackground(did) {
|
|
78
|
+
try {
|
|
79
|
+
console.log('Refreshing cache in background for:', did);
|
|
80
|
+
const result = await this.router.resolve(did);
|
|
81
|
+
await this.setCacheEntry(did, {
|
|
82
|
+
value: result,
|
|
83
|
+
id: did,
|
|
84
|
+
timestamp: Date.now()
|
|
85
|
+
});
|
|
86
|
+
console.log('Background refresh completed for:', did);
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
console.warn('Background refresh failed for:', did, error);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* if the did is provided, it will remove the specific did from the cache
|
|
94
|
+
* otherwise, it will clear the entire cache
|
|
95
|
+
* @param did
|
|
96
|
+
*/
|
|
97
|
+
async clearCache(did) {
|
|
98
|
+
if (did) {
|
|
99
|
+
const key = this.getCacheKey(did);
|
|
100
|
+
await services_storage_index.storageService.removeItem(key);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
const allKeys = await services_storage_index.storageService.getAllKeys();
|
|
104
|
+
const cacheKeys = allKeys.filter(key => key.startsWith(this.CACHE_PREFIX));
|
|
105
|
+
await Promise.all(cacheKeys.map(key => services_storage_index.storageService.removeItem(key)));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
supports(id) {
|
|
109
|
+
return this.router.supports(id);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
exports.CachedDIDResolver = CachedDIDResolver;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { storageService } from '../storage/index.mjs';
|
|
2
|
+
import '../storage/service.mjs';
|
|
3
|
+
import '../storage/service-rpc.mjs';
|
|
4
|
+
import '../rpc-service-client.mjs';
|
|
5
|
+
import 'assert';
|
|
6
|
+
import '../../rpc-client.mjs';
|
|
7
|
+
import 'json-rpc-2.0';
|
|
8
|
+
import '../../core/crypto.mjs';
|
|
9
|
+
import 'crypto';
|
|
10
|
+
import '../../core/logger.mjs';
|
|
11
|
+
import '../../logger.mjs';
|
|
12
|
+
import '../../rpc-util.mjs';
|
|
13
|
+
|
|
14
|
+
class CachedDIDResolver {
|
|
15
|
+
router;
|
|
16
|
+
ttl;
|
|
17
|
+
CACHE_PREFIX = 'did-cache:';
|
|
18
|
+
constructor(router, cacheOptions = {}) {
|
|
19
|
+
this.router = router;
|
|
20
|
+
// 1 hour default
|
|
21
|
+
this.ttl = cacheOptions.ttl || 60 * 60 * 1000;
|
|
22
|
+
}
|
|
23
|
+
getCacheKey(did) {
|
|
24
|
+
return `${this.CACHE_PREFIX}${did}`;
|
|
25
|
+
}
|
|
26
|
+
async getCacheEntry(did) {
|
|
27
|
+
const key = this.getCacheKey(did);
|
|
28
|
+
const data = await storageService.getItem(key);
|
|
29
|
+
try {
|
|
30
|
+
return data ? JSON.parse(data) : null;
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
console.error('Error parsing cache entry:', error);
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async setCacheEntry(did, entry) {
|
|
38
|
+
const key = this.getCacheKey(did);
|
|
39
|
+
await storageService.setItem(key, JSON.stringify(entry));
|
|
40
|
+
}
|
|
41
|
+
async getCachedDIDs() {
|
|
42
|
+
const allKeys = await storageService.getAllKeys();
|
|
43
|
+
const cachedDIDs = [];
|
|
44
|
+
allKeys.forEach(key => {
|
|
45
|
+
if (key.startsWith(this.CACHE_PREFIX)) {
|
|
46
|
+
cachedDIDs.push(key.replace(this.CACHE_PREFIX, ''));
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
return cachedDIDs;
|
|
50
|
+
}
|
|
51
|
+
async resolve(did) {
|
|
52
|
+
const cached = await this.getCacheEntry(did);
|
|
53
|
+
if (cached) {
|
|
54
|
+
if (Date.now() - cached.timestamp < this.ttl) {
|
|
55
|
+
console.log('Cache hit for:', did);
|
|
56
|
+
return cached.value;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
console.log('Cache expired for:', did, 'returning stale value and refreshing in background');
|
|
60
|
+
this.refreshInBackground(did);
|
|
61
|
+
return cached.value;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
console.log('Cache miss, resolving:', did);
|
|
65
|
+
const result = await this.router.resolve(did);
|
|
66
|
+
await this.setCacheEntry(result.id, {
|
|
67
|
+
value: result,
|
|
68
|
+
id: result.id,
|
|
69
|
+
timestamp: Date.now()
|
|
70
|
+
});
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
async refreshInBackground(did) {
|
|
74
|
+
try {
|
|
75
|
+
console.log('Refreshing cache in background for:', did);
|
|
76
|
+
const result = await this.router.resolve(did);
|
|
77
|
+
await this.setCacheEntry(did, {
|
|
78
|
+
value: result,
|
|
79
|
+
id: did,
|
|
80
|
+
timestamp: Date.now()
|
|
81
|
+
});
|
|
82
|
+
console.log('Background refresh completed for:', did);
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
console.warn('Background refresh failed for:', did, error);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* if the did is provided, it will remove the specific did from the cache
|
|
90
|
+
* otherwise, it will clear the entire cache
|
|
91
|
+
* @param did
|
|
92
|
+
*/
|
|
93
|
+
async clearCache(did) {
|
|
94
|
+
if (did) {
|
|
95
|
+
const key = this.getCacheKey(did);
|
|
96
|
+
await storageService.removeItem(key);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
const allKeys = await storageService.getAllKeys();
|
|
100
|
+
const cacheKeys = allKeys.filter(key => key.startsWith(this.CACHE_PREFIX));
|
|
101
|
+
await Promise.all(cacheKeys.map(key => storageService.removeItem(key)));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
supports(id) {
|
|
105
|
+
return this.router.supports(id);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export { CachedDIDResolver };
|
|
@@ -19,6 +19,17 @@ require('@scure/bip39');
|
|
|
19
19
|
require('@scure/bip39/wordlists/english');
|
|
20
20
|
require('../util-crypto/configs.js');
|
|
21
21
|
require('@docknetwork/credential-sdk/types');
|
|
22
|
+
require('./cached-did-resolver.js');
|
|
23
|
+
require('../storage/index.js');
|
|
24
|
+
require('../storage/service.js');
|
|
25
|
+
require('../storage/service-rpc.js');
|
|
26
|
+
require('../rpc-service-client.js');
|
|
27
|
+
require('../../rpc-client.js');
|
|
28
|
+
require('json-rpc-2.0');
|
|
29
|
+
require('../../core/crypto.js');
|
|
30
|
+
require('crypto');
|
|
31
|
+
require('../../logger.js');
|
|
32
|
+
require('../../rpc-util.js');
|
|
22
33
|
|
|
23
34
|
|
|
24
35
|
|
|
@@ -15,3 +15,14 @@ import '@scure/bip39';
|
|
|
15
15
|
import '@scure/bip39/wordlists/english';
|
|
16
16
|
import '../util-crypto/configs.mjs';
|
|
17
17
|
import '@docknetwork/credential-sdk/types';
|
|
18
|
+
import './cached-did-resolver.mjs';
|
|
19
|
+
import '../storage/index.mjs';
|
|
20
|
+
import '../storage/service.mjs';
|
|
21
|
+
import '../storage/service-rpc.mjs';
|
|
22
|
+
import '../rpc-service-client.mjs';
|
|
23
|
+
import '../../rpc-client.mjs';
|
|
24
|
+
import 'json-rpc-2.0';
|
|
25
|
+
import '../../core/crypto.mjs';
|
|
26
|
+
import 'crypto';
|
|
27
|
+
import '../../logger.mjs';
|
|
28
|
+
import '../../rpc-util.mjs';
|
|
@@ -55,6 +55,18 @@ class BlockchainServiceRpc extends services_rpcServiceClient.RpcService {
|
|
|
55
55
|
resolveDID(did ) {
|
|
56
56
|
return this.call('resolveDID', did);
|
|
57
57
|
}
|
|
58
|
+
|
|
59
|
+
getCachedDIDs() {
|
|
60
|
+
return this.call('getCachedDIDs');
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
getCacheEntry(did ) {
|
|
64
|
+
return this.call('getCacheEntry', did);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
clearCache(did ) {
|
|
68
|
+
return this.call('clearCache', did);
|
|
69
|
+
}
|
|
58
70
|
}
|
|
59
71
|
|
|
60
72
|
exports.BlockchainServiceRpc = BlockchainServiceRpc;
|
|
@@ -51,6 +51,18 @@ class BlockchainServiceRpc extends RpcService {
|
|
|
51
51
|
resolveDID(did ) {
|
|
52
52
|
return this.call('resolveDID', did);
|
|
53
53
|
}
|
|
54
|
+
|
|
55
|
+
getCachedDIDs() {
|
|
56
|
+
return this.call('getCachedDIDs');
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
getCacheEntry(did ) {
|
|
60
|
+
return this.call('getCacheEntry', did);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
clearCache(did ) {
|
|
64
|
+
return this.call('clearCache', did);
|
|
65
|
+
}
|
|
54
66
|
}
|
|
55
67
|
|
|
56
68
|
export { BlockchainServiceRpc };
|