@docknetwork/wallet-sdk-wasm 1.7.7-alpha.0 → 1.9.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/package.json +7 -20
- package/rollup.config.mjs +1 -0
- package/src/globals.d.ts +4 -1
- package/src/services/blockchain/cached-did-resolver.ts +4 -3
- package/src/services/blockchain/normalize-did-document.ts +73 -0
- package/src/services/blockchain/service.ts +0 -2
- package/src/services/credential/bbs-revocation.test.js +147 -0
- package/src/services/credential/bbs-revocation.ts +65 -18
- package/src/services/credential/config.ts +7 -0
- package/src/services/credential/index.test.js +261 -17
- package/src/services/credential/oid4vci.js +44 -0
- package/src/services/credential/oid4vci.test.js +162 -0
- package/src/services/credential/pex-helpers.js +77 -31
- package/src/services/credential/pex-helpers.test.js +4 -4
- package/src/services/credential/sd-jwt.ts +41 -5
- package/src/services/credential/service-rpc.js +6 -0
- package/src/services/credential/service.ts +171 -16
- package/src/services/credential/utils.js +3 -5
- package/src/services/delegation/index.android.js +3 -0
- package/src/services/delegation/index.ios.js +3 -0
- package/src/services/delegation/index.ts +1 -0
- package/src/services/delegation/service-rpc.ts +21 -0
- package/src/services/delegation/service.ts +59 -0
- package/src/services/edv/service-rpc.js +18 -2
- package/src/services/edv/service.test.js +327 -0
- package/src/services/edv/service.ts +103 -13
- package/src/services/index.js +2 -0
- package/src/wallet/rpc-storage-interface.js +9 -4
- package/lib/core/crypto.js +0 -45
- package/lib/core/crypto.mjs +0 -33
- package/lib/core/format-utils.js +0 -51
- package/lib/core/format-utils.mjs +0 -42
- package/lib/core/keychain.js +0 -61
- package/lib/core/keychain.mjs +0 -37
- package/lib/core/logger.js +0 -13
- package/lib/core/logger.mjs +0 -9
- package/lib/core/storage.js +0 -14
- package/lib/core/storage.mjs +0 -9
- package/lib/core/validation.js +0 -29
- package/lib/core/validation.mjs +0 -16
- package/lib/core/webview-logger.js +0 -49
- package/lib/core/webview-logger.mjs +0 -41
- package/lib/errors.js +0 -17
- package/lib/errors.mjs +0 -12
- package/lib/events.js +0 -18
- package/lib/events.mjs +0 -13
- package/lib/index.js +0 -146
- package/lib/index.mjs +0 -144
- package/lib/logger.js +0 -22
- package/lib/logger.mjs +0 -17
- package/lib/modules/event-manager.js +0 -46
- package/lib/modules/event-manager.mjs +0 -37
- package/lib/modules/network-manager.js +0 -80
- package/lib/modules/network-manager.mjs +0 -71
- package/lib/mrklt.js +0 -2
- package/lib/mrklt.mjs +0 -1
- package/lib/rpc-client.js +0 -83
- package/lib/rpc-client.mjs +0 -73
- package/lib/rpc-server.js +0 -97
- package/lib/rpc-server.mjs +0 -95
- package/lib/rpc-util.js +0 -113
- package/lib/rpc-util.mjs +0 -103
- package/lib/sandbox-rpc-server.js +0 -28
- package/lib/sandbox-rpc-server.mjs +0 -26
- package/lib/sandbox.js +0 -102
- package/lib/sandbox.mjs +0 -100
- package/lib/services/blockchain/cached-did-resolver.js +0 -113
- package/lib/services/blockchain/cached-did-resolver.mjs +0 -109
- package/lib/services/blockchain/configs.js +0 -7
- package/lib/services/blockchain/configs.mjs +0 -3
- package/lib/services/blockchain/index.android.js +0 -18
- package/lib/services/blockchain/index.android.mjs +0 -14
- package/lib/services/blockchain/index.ios.js +0 -18
- package/lib/services/blockchain/index.ios.mjs +0 -14
- package/lib/services/blockchain/index.js +0 -36
- package/lib/services/blockchain/index.mjs +0 -28
- package/lib/services/blockchain/service-rpc.js +0 -72
- package/lib/services/blockchain/service-rpc.mjs +0 -68
- package/lib/services/blockchain/service.js +0 -312
- package/lib/services/blockchain/service.mjs +0 -306
- package/lib/services/credential/bbs-revocation.js +0 -92
- package/lib/services/credential/bbs-revocation.mjs +0 -87
- package/lib/services/credential/bound-check.js +0 -77
- package/lib/services/credential/bound-check.mjs +0 -64
- package/lib/services/credential/config.js +0 -56
- package/lib/services/credential/config.mjs +0 -47
- package/lib/services/credential/delegatable-credentials.js +0 -300
- package/lib/services/credential/delegatable-credentials.mjs +0 -263
- package/lib/services/credential/index.android.js +0 -19
- package/lib/services/credential/index.android.mjs +0 -15
- package/lib/services/credential/index.ios.js +0 -19
- package/lib/services/credential/index.ios.mjs +0 -15
- package/lib/services/credential/index.js +0 -106
- package/lib/services/credential/index.mjs +0 -67
- package/lib/services/credential/pex-helpers.js +0 -333
- package/lib/services/credential/pex-helpers.mjs +0 -319
- package/lib/services/credential/range-proofs-example.js +0 -107
- package/lib/services/credential/range-proofs-example.mjs +0 -103
- package/lib/services/credential/sd-jwt.js +0 -214
- package/lib/services/credential/sd-jwt.mjs +0 -200
- package/lib/services/credential/service-rpc.js +0 -61
- package/lib/services/credential/service-rpc.mjs +0 -57
- package/lib/services/credential/service.js +0 -683
- package/lib/services/credential/service.mjs +0 -672
- package/lib/services/credential/utils.js +0 -103
- package/lib/services/credential/utils.mjs +0 -78
- package/lib/services/dids/config.js +0 -40
- package/lib/services/dids/config.mjs +0 -31
- package/lib/services/dids/index.android.js +0 -19
- package/lib/services/dids/index.android.mjs +0 -15
- package/lib/services/dids/index.ios.js +0 -19
- package/lib/services/dids/index.ios.mjs +0 -15
- package/lib/services/dids/index.js +0 -23
- package/lib/services/dids/index.mjs +0 -19
- package/lib/services/dids/keypair-utils.js +0 -142
- package/lib/services/dids/keypair-utils.mjs +0 -113
- package/lib/services/dids/service-rpc.js +0 -37
- package/lib/services/dids/service-rpc.mjs +0 -33
- package/lib/services/dids/service.js +0 -100
- package/lib/services/dids/service.mjs +0 -92
- package/lib/services/edv/configs.js +0 -25
- package/lib/services/edv/configs.mjs +0 -16
- package/lib/services/edv/hmac.js +0 -88
- package/lib/services/edv/hmac.mjs +0 -63
- package/lib/services/edv/index.android.js +0 -19
- package/lib/services/edv/index.android.mjs +0 -15
- package/lib/services/edv/index.ios.js +0 -19
- package/lib/services/edv/index.ios.mjs +0 -15
- package/lib/services/edv/index.js +0 -32
- package/lib/services/edv/index.mjs +0 -24
- package/lib/services/edv/service-rpc.js +0 -78
- package/lib/services/edv/service-rpc.mjs +0 -74
- package/lib/services/edv/service.js +0 -370
- package/lib/services/edv/service.mjs +0 -357
- package/lib/services/index.js +0 -94
- package/lib/services/index.mjs +0 -92
- package/lib/services/pex/config.js +0 -29
- package/lib/services/pex/config.mjs +0 -20
- package/lib/services/pex/index.android.js +0 -19
- package/lib/services/pex/index.android.mjs +0 -15
- package/lib/services/pex/index.ios.js +0 -19
- package/lib/services/pex/index.ios.mjs +0 -15
- package/lib/services/pex/index.js +0 -12
- package/lib/services/pex/index.mjs +0 -4
- package/lib/services/pex/service-rpc.js +0 -39
- package/lib/services/pex/service-rpc.mjs +0 -35
- package/lib/services/pex/service.js +0 -91
- package/lib/services/pex/service.mjs +0 -86
- package/lib/services/pex/tests/jest.config.js +0 -25
- package/lib/services/pex/tests/jest.config.mjs +0 -23
- package/lib/services/relay-service/configs.js +0 -45
- package/lib/services/relay-service/configs.mjs +0 -36
- package/lib/services/relay-service/index.android.js +0 -21
- package/lib/services/relay-service/index.android.mjs +0 -17
- package/lib/services/relay-service/index.ios.js +0 -21
- package/lib/services/relay-service/index.ios.mjs +0 -17
- package/lib/services/relay-service/index.js +0 -14
- package/lib/services/relay-service/index.mjs +0 -6
- package/lib/services/relay-service/service-rpc.js +0 -47
- package/lib/services/relay-service/service-rpc.mjs +0 -43
- package/lib/services/relay-service/service.js +0 -181
- package/lib/services/relay-service/service.mjs +0 -173
- package/lib/services/rpc-service-client.js +0 -36
- package/lib/services/rpc-service-client.mjs +0 -28
- package/lib/services/sandbox.js +0 -10
- package/lib/services/sandbox.mjs +0 -8
- package/lib/services/storage/configs.js +0 -7
- package/lib/services/storage/configs.mjs +0 -3
- package/lib/services/storage/index.android.js +0 -18
- package/lib/services/storage/index.android.mjs +0 -14
- package/lib/services/storage/index.ios.js +0 -18
- package/lib/services/storage/index.ios.mjs +0 -14
- package/lib/services/storage/index.js +0 -26
- package/lib/services/storage/index.mjs +0 -24
- package/lib/services/storage/service-rpc.js +0 -37
- package/lib/services/storage/service-rpc.mjs +0 -33
- package/lib/services/storage/service.js +0 -32
- package/lib/services/storage/service.mjs +0 -27
- package/lib/services/test-utils.js +0 -98
- package/lib/services/test-utils.mjs +0 -84
- package/lib/services/util-crypto/configs.js +0 -23
- package/lib/services/util-crypto/configs.mjs +0 -15
- package/lib/services/util-crypto/index.android.js +0 -19
- package/lib/services/util-crypto/index.android.mjs +0 -15
- package/lib/services/util-crypto/index.ios.js +0 -19
- package/lib/services/util-crypto/index.ios.mjs +0 -15
- package/lib/services/util-crypto/index.js +0 -14
- package/lib/services/util-crypto/index.mjs +0 -6
- package/lib/services/util-crypto/service-rpc.js +0 -42
- package/lib/services/util-crypto/service-rpc.mjs +0 -38
- package/lib/services/util-crypto/service.js +0 -108
- package/lib/services/util-crypto/service.mjs +0 -83
- package/lib/services/wallet/configs.js +0 -32
- package/lib/services/wallet/configs.mjs +0 -23
- package/lib/services/wallet/index.android.js +0 -21
- package/lib/services/wallet/index.android.mjs +0 -17
- package/lib/services/wallet/index.ios.js +0 -21
- package/lib/services/wallet/index.ios.mjs +0 -17
- package/lib/services/wallet/index.js +0 -17
- package/lib/services/wallet/index.mjs +0 -9
- package/lib/services/wallet/service-rpc.js +0 -33
- package/lib/services/wallet/service-rpc.mjs +0 -29
- package/lib/services/wallet/service.js +0 -62
- package/lib/services/wallet/service.mjs +0 -57
- package/lib/setup-nodejs.js +0 -93
- package/lib/setup-nodejs.mjs +0 -91
- package/lib/setup-tests.js +0 -92
- package/lib/setup-tests.mjs +0 -90
- package/lib/src/core/crypto.d.ts +0 -8
- package/lib/src/core/crypto.d.ts.map +0 -1
- package/lib/src/core/format-utils.d.ts +0 -26
- package/lib/src/core/format-utils.d.ts.map +0 -1
- package/lib/src/core/logger.d.ts +0 -3
- package/lib/src/core/logger.d.ts.map +0 -1
- package/lib/src/core/storage.d.ts +0 -8
- package/lib/src/core/storage.d.ts.map +0 -1
- package/lib/src/core/validation.d.ts +0 -6
- package/lib/src/core/validation.d.ts.map +0 -1
- package/lib/src/errors.d.ts +0 -7
- package/lib/src/errors.d.ts.map +0 -1
- package/lib/src/logger.d.ts +0 -5
- package/lib/src/logger.d.ts.map +0 -1
- package/lib/src/modules/event-manager.d.ts +0 -12
- package/lib/src/modules/event-manager.d.ts.map +0 -1
- package/lib/src/modules/network-manager.d.ts +0 -32
- package/lib/src/modules/network-manager.d.ts.map +0 -1
- package/lib/src/rpc-client.d.ts +0 -4
- package/lib/src/rpc-client.d.ts.map +0 -1
- package/lib/src/rpc-util.d.ts +0 -11
- package/lib/src/rpc-util.d.ts.map +0 -1
- package/lib/src/services/blockchain/cached-did-resolver.d.ts +0 -28
- package/lib/src/services/blockchain/cached-did-resolver.d.ts.map +0 -1
- package/lib/src/services/blockchain/cached-did-resolver.test.d.ts +0 -2
- package/lib/src/services/blockchain/cached-did-resolver.test.d.ts.map +0 -1
- package/lib/src/services/blockchain/configs.d.ts +0 -7
- package/lib/src/services/blockchain/configs.d.ts.map +0 -1
- package/lib/src/services/blockchain/service.d.ts +0 -155
- package/lib/src/services/blockchain/service.d.ts.map +0 -1
- package/lib/src/services/credential/bbs-revocation.d.ts +0 -10
- package/lib/src/services/credential/bbs-revocation.d.ts.map +0 -1
- package/lib/src/services/credential/bound-check.d.ts +0 -61
- package/lib/src/services/credential/bound-check.d.ts.map +0 -1
- package/lib/src/services/credential/bound-check.test.d.ts +0 -2
- package/lib/src/services/credential/bound-check.test.d.ts.map +0 -1
- package/lib/src/services/credential/config.d.ts +0 -10
- package/lib/src/services/credential/config.d.ts.map +0 -1
- package/lib/src/services/credential/delegatable-credentials.d.ts +0 -272
- package/lib/src/services/credential/delegatable-credentials.d.ts.map +0 -1
- package/lib/src/services/credential/index.d.ts +0 -35
- package/lib/src/services/credential/index.d.ts.map +0 -1
- package/lib/src/services/credential/pex-helpers.d.ts +0 -23
- package/lib/src/services/credential/pex-helpers.d.ts.map +0 -1
- package/lib/src/services/credential/range-proofs-example.d.ts +0 -2
- package/lib/src/services/credential/range-proofs-example.d.ts.map +0 -1
- package/lib/src/services/credential/sd-jwt.test.d.ts +0 -2
- package/lib/src/services/credential/sd-jwt.test.d.ts.map +0 -1
- package/lib/src/services/credential/service.d.ts +0 -313
- package/lib/src/services/credential/service.d.ts.map +0 -1
- package/lib/src/services/credential/utils.d.ts +0 -3
- package/lib/src/services/credential/utils.d.ts.map +0 -1
- package/lib/src/services/dids/config.d.ts +0 -24
- package/lib/src/services/dids/config.d.ts.map +0 -1
- package/lib/src/services/dids/keypair-utils.d.ts +0 -15
- package/lib/src/services/dids/keypair-utils.d.ts.map +0 -1
- package/lib/src/services/dids/service-rpc.d.ts +0 -11
- package/lib/src/services/dids/service-rpc.d.ts.map +0 -1
- package/lib/src/services/dids/service.d.ts +0 -70
- package/lib/src/services/dids/service.d.ts.map +0 -1
- package/lib/src/services/edv/configs.d.ts +0 -12
- package/lib/src/services/edv/configs.d.ts.map +0 -1
- package/lib/src/services/edv/hmac.d.ts +0 -29
- package/lib/src/services/edv/hmac.d.ts.map +0 -1
- package/lib/src/services/edv/service.d.ts +0 -229
- package/lib/src/services/edv/service.d.ts.map +0 -1
- package/lib/src/services/pex/config.d.ts +0 -21
- package/lib/src/services/pex/config.d.ts.map +0 -1
- package/lib/src/services/pex/service.d.ts +0 -21
- package/lib/src/services/pex/service.d.ts.map +0 -1
- package/lib/src/services/relay-service/configs.d.ts +0 -35
- package/lib/src/services/relay-service/configs.d.ts.map +0 -1
- package/lib/src/services/relay-service/service-rpc.d.ts +0 -12
- package/lib/src/services/relay-service/service-rpc.d.ts.map +0 -1
- package/lib/src/services/relay-service/service.d.ts +0 -159
- package/lib/src/services/relay-service/service.d.ts.map +0 -1
- package/lib/src/services/rpc-service-client.d.ts +0 -7
- package/lib/src/services/rpc-service-client.d.ts.map +0 -1
- package/lib/src/services/storage/configs.d.ts +0 -2
- package/lib/src/services/storage/configs.d.ts.map +0 -1
- package/lib/src/services/storage/index.d.ts +0 -2
- package/lib/src/services/storage/index.d.ts.map +0 -1
- package/lib/src/services/storage/service-rpc.d.ts +0 -9
- package/lib/src/services/storage/service-rpc.d.ts.map +0 -1
- package/lib/src/services/storage/service.d.ts +0 -10
- package/lib/src/services/storage/service.d.ts.map +0 -1
- package/lib/src/services/util-crypto/configs.d.ts +0 -5
- package/lib/src/services/util-crypto/configs.d.ts.map +0 -1
- package/lib/src/services/util-crypto/index.d.ts +0 -2
- package/lib/src/services/util-crypto/index.d.ts.map +0 -1
- package/lib/src/services/util-crypto/service.d.ts +0 -10
- package/lib/src/services/util-crypto/service.d.ts.map +0 -1
- package/lib/src/services/wallet/configs.d.ts +0 -13
- package/lib/src/services/wallet/configs.d.ts.map +0 -1
- package/lib/src/services/wallet/service.d.ts +0 -13
- package/lib/src/services/wallet/service.d.ts.map +0 -1
- package/lib/src/types.d.ts +0 -12
- package/lib/src/types.d.ts.map +0 -1
- package/lib/src/wallet/memory-storage-interface.d.ts +0 -31
- package/lib/src/wallet/memory-storage-interface.d.ts.map +0 -1
- package/lib/src/wallet/memory-storage-wallet.d.ts +0 -6
- package/lib/src/wallet/memory-storage-wallet.d.ts.map +0 -1
- package/lib/src/wallet/rpc-storage-interface.d.ts +0 -32
- package/lib/src/wallet/rpc-storage-interface.d.ts.map +0 -1
- package/lib/src/wallet/rpc-storage-wallet.d.ts +0 -6
- package/lib/src/wallet/rpc-storage-wallet.d.ts.map +0 -1
- package/lib/test-utils.js +0 -46
- package/lib/test-utils.mjs +0 -38
- package/lib/tsconfig.tsbuildinfo +0 -1
- package/lib/types.js +0 -7
- package/lib/types.mjs +0 -3
- package/lib/wallet/memory-storage-interface.js +0 -101
- package/lib/wallet/memory-storage-interface.mjs +0 -95
- package/lib/wallet/memory-storage-wallet.js +0 -30
- package/lib/wallet/memory-storage-wallet.mjs +0 -24
- package/lib/wallet/rpc-storage-interface.js +0 -134
- package/lib/wallet/rpc-storage-interface.mjs +0 -128
- package/lib/wallet/rpc-storage-wallet.js +0 -46
- package/lib/wallet/rpc-storage-wallet.mjs +0 -40
package/lib/rpc-util.js
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var assert = require('assert');
|
|
6
|
-
var core_crypto = require('./core/crypto.js');
|
|
7
|
-
var core_logger = require('./core/logger.js');
|
|
8
|
-
require('crypto');
|
|
9
|
-
|
|
10
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
11
|
-
|
|
12
|
-
var assert__default = /*#__PURE__*/_interopDefaultLegacy(assert);
|
|
13
|
-
|
|
14
|
-
function createMethodResolver({service, methodFn, methodName}) {
|
|
15
|
-
if (methodFn === undefined) {
|
|
16
|
-
throw new Error(
|
|
17
|
-
`Resolver is undefined for ${methodName} in ${service.name}`,
|
|
18
|
-
);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const methodPath = `${service.name}.${methodName}`;
|
|
22
|
-
|
|
23
|
-
return {
|
|
24
|
-
name: methodPath,
|
|
25
|
-
resolver: async (params = {}) => {
|
|
26
|
-
try {
|
|
27
|
-
let result;
|
|
28
|
-
|
|
29
|
-
if (!methodFn) {
|
|
30
|
-
throw new Error('Resolver is undefined');
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
if (params.__args) {
|
|
34
|
-
result = methodFn.apply(service, params.__args);
|
|
35
|
-
} else {
|
|
36
|
-
result = methodFn.apply(service, [params]);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
return Promise.resolve(result).then(value => {
|
|
40
|
-
core_logger.Logger.debug(`Result for ${methodPath}`, value);
|
|
41
|
-
return value;
|
|
42
|
-
});
|
|
43
|
-
} catch (err) {
|
|
44
|
-
core_logger.Logger.debug(`Error for ${methodPath}`, err.toString());
|
|
45
|
-
throw err;
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function createRpcService(service) {
|
|
52
|
-
const {name, rpcMethods} = service;
|
|
53
|
-
|
|
54
|
-
assert__default["default"](
|
|
55
|
-
typeof name === 'string',
|
|
56
|
-
`invalid name: ${name} for service ${service.constructor.name}`,
|
|
57
|
-
);
|
|
58
|
-
assert__default["default"](
|
|
59
|
-
typeof rpcMethods === 'object',
|
|
60
|
-
`invalid routes: ${rpcMethods} for service ${service.constructor.name}`,
|
|
61
|
-
);
|
|
62
|
-
|
|
63
|
-
let methods = rpcMethods;
|
|
64
|
-
|
|
65
|
-
if (!Array.isArray(rpcMethods)) {
|
|
66
|
-
return Object.keys(rpcMethods).map(key => {
|
|
67
|
-
return createMethodResolver({
|
|
68
|
-
methodFn: rpcMethods[key],
|
|
69
|
-
methodName: key,
|
|
70
|
-
service,
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return methods.map(methodFn => {
|
|
76
|
-
if (methodFn === undefined) {
|
|
77
|
-
throw new Error(
|
|
78
|
-
`Method is undefined in ${
|
|
79
|
-
service.name
|
|
80
|
-
}, available methods: ${Object.keys(service.rpcMethods).join(', ')}`,
|
|
81
|
-
);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
return createMethodResolver({
|
|
85
|
-
methodFn,
|
|
86
|
-
methodName: methodFn.name,
|
|
87
|
-
service,
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
function patchRpcServer(server) {
|
|
93
|
-
server.__receive = server.receive;
|
|
94
|
-
|
|
95
|
-
server.receive = function (reqData) {
|
|
96
|
-
try {
|
|
97
|
-
if (core_crypto.SECURE_JSON_RPC && reqData.params && reqData.params.encryptedData) {
|
|
98
|
-
const params = core_crypto.decryptData(reqData.params);
|
|
99
|
-
reqData.params = JSON.parse(params).reqParams;
|
|
100
|
-
}
|
|
101
|
-
} catch (err) {
|
|
102
|
-
console.error(err);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
return server.__receive(reqData);
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
return server;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
exports.createMethodResolver = createMethodResolver;
|
|
112
|
-
exports.createRpcService = createRpcService;
|
|
113
|
-
exports.patchRpcServer = patchRpcServer;
|
package/lib/rpc-util.mjs
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import assert from 'assert';
|
|
2
|
-
import { SECURE_JSON_RPC, decryptData } from './core/crypto.mjs';
|
|
3
|
-
import { Logger } from './core/logger.mjs';
|
|
4
|
-
import 'crypto';
|
|
5
|
-
|
|
6
|
-
function createMethodResolver({service, methodFn, methodName}) {
|
|
7
|
-
if (methodFn === undefined) {
|
|
8
|
-
throw new Error(
|
|
9
|
-
`Resolver is undefined for ${methodName} in ${service.name}`,
|
|
10
|
-
);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const methodPath = `${service.name}.${methodName}`;
|
|
14
|
-
|
|
15
|
-
return {
|
|
16
|
-
name: methodPath,
|
|
17
|
-
resolver: async (params = {}) => {
|
|
18
|
-
try {
|
|
19
|
-
let result;
|
|
20
|
-
|
|
21
|
-
if (!methodFn) {
|
|
22
|
-
throw new Error('Resolver is undefined');
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
if (params.__args) {
|
|
26
|
-
result = methodFn.apply(service, params.__args);
|
|
27
|
-
} else {
|
|
28
|
-
result = methodFn.apply(service, [params]);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
return Promise.resolve(result).then(value => {
|
|
32
|
-
Logger.debug(`Result for ${methodPath}`, value);
|
|
33
|
-
return value;
|
|
34
|
-
});
|
|
35
|
-
} catch (err) {
|
|
36
|
-
Logger.debug(`Error for ${methodPath}`, err.toString());
|
|
37
|
-
throw err;
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
function createRpcService(service) {
|
|
44
|
-
const {name, rpcMethods} = service;
|
|
45
|
-
|
|
46
|
-
assert(
|
|
47
|
-
typeof name === 'string',
|
|
48
|
-
`invalid name: ${name} for service ${service.constructor.name}`,
|
|
49
|
-
);
|
|
50
|
-
assert(
|
|
51
|
-
typeof rpcMethods === 'object',
|
|
52
|
-
`invalid routes: ${rpcMethods} for service ${service.constructor.name}`,
|
|
53
|
-
);
|
|
54
|
-
|
|
55
|
-
let methods = rpcMethods;
|
|
56
|
-
|
|
57
|
-
if (!Array.isArray(rpcMethods)) {
|
|
58
|
-
return Object.keys(rpcMethods).map(key => {
|
|
59
|
-
return createMethodResolver({
|
|
60
|
-
methodFn: rpcMethods[key],
|
|
61
|
-
methodName: key,
|
|
62
|
-
service,
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
return methods.map(methodFn => {
|
|
68
|
-
if (methodFn === undefined) {
|
|
69
|
-
throw new Error(
|
|
70
|
-
`Method is undefined in ${
|
|
71
|
-
service.name
|
|
72
|
-
}, available methods: ${Object.keys(service.rpcMethods).join(', ')}`,
|
|
73
|
-
);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return createMethodResolver({
|
|
77
|
-
methodFn,
|
|
78
|
-
methodName: methodFn.name,
|
|
79
|
-
service,
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
function patchRpcServer(server) {
|
|
85
|
-
server.__receive = server.receive;
|
|
86
|
-
|
|
87
|
-
server.receive = function (reqData) {
|
|
88
|
-
try {
|
|
89
|
-
if (SECURE_JSON_RPC && reqData.params && reqData.params.encryptedData) {
|
|
90
|
-
const params = decryptData(reqData.params);
|
|
91
|
-
reqData.params = JSON.parse(params).reqParams;
|
|
92
|
-
}
|
|
93
|
-
} catch (err) {
|
|
94
|
-
console.error(err);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return server.__receive(reqData);
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
return server;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
export { createMethodResolver, createRpcService, patchRpcServer };
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsonRpc2_0 = require('json-rpc-2.0');
|
|
4
|
-
var rpcUtil = require('./rpc-util.js');
|
|
5
|
-
var services_sandbox = require('./services/sandbox.js');
|
|
6
|
-
require('assert');
|
|
7
|
-
require('./core/crypto.js');
|
|
8
|
-
require('crypto');
|
|
9
|
-
require('./core/logger.js');
|
|
10
|
-
require('./services/pex/service.js');
|
|
11
|
-
require('./services/pex/config.js');
|
|
12
|
-
require('@sphereon/pex');
|
|
13
|
-
|
|
14
|
-
const rpcServer = new jsonRpc2_0.JSONRPCServer();
|
|
15
|
-
|
|
16
|
-
services_sandbox.forEach(service => {
|
|
17
|
-
const rpcService = rpcUtil.createRpcService(service);
|
|
18
|
-
|
|
19
|
-
rpcService.forEach(method => {
|
|
20
|
-
rpcServer.addMethod(method.name, params => {
|
|
21
|
-
return Promise.resolve(method.resolver(params));
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
var rpcServer$1 = rpcUtil.patchRpcServer(rpcServer);
|
|
27
|
-
|
|
28
|
-
module.exports = rpcServer$1;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { JSONRPCServer } from 'json-rpc-2.0';
|
|
2
|
-
import { createRpcService, patchRpcServer } from './rpc-util.mjs';
|
|
3
|
-
import services from './services/sandbox.mjs';
|
|
4
|
-
import 'assert';
|
|
5
|
-
import './core/crypto.mjs';
|
|
6
|
-
import 'crypto';
|
|
7
|
-
import './core/logger.mjs';
|
|
8
|
-
import './services/pex/service.mjs';
|
|
9
|
-
import './services/pex/config.mjs';
|
|
10
|
-
import '@sphereon/pex';
|
|
11
|
-
|
|
12
|
-
const rpcServer = new JSONRPCServer();
|
|
13
|
-
|
|
14
|
-
services.forEach(service => {
|
|
15
|
-
const rpcService = createRpcService(service);
|
|
16
|
-
|
|
17
|
-
rpcService.forEach(method => {
|
|
18
|
-
rpcServer.addMethod(method.name, params => {
|
|
19
|
-
return Promise.resolve(method.resolver(params));
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
var rpcServer$1 = patchRpcServer(rpcServer);
|
|
25
|
-
|
|
26
|
-
export { rpcServer$1 as default };
|
package/lib/sandbox.js
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var rpcClient = require('./rpc-client.js');
|
|
4
|
-
var logger = require('./logger.js');
|
|
5
|
-
var sandboxRpcServer = require('./sandbox-rpc-server.js');
|
|
6
|
-
require('assert');
|
|
7
|
-
require('json-rpc-2.0');
|
|
8
|
-
require('./core/crypto.js');
|
|
9
|
-
require('crypto');
|
|
10
|
-
require('./core/logger.js');
|
|
11
|
-
require('./rpc-util.js');
|
|
12
|
-
require('./services/sandbox.js');
|
|
13
|
-
require('./services/pex/service.js');
|
|
14
|
-
require('./services/pex/config.js');
|
|
15
|
-
require('@sphereon/pex');
|
|
16
|
-
|
|
17
|
-
global.fetch = () => {
|
|
18
|
-
throw new Error('fetch is not available in the sandbox');
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
global.XMLHttpRequest = () => {
|
|
22
|
-
throw new Error('XMLHttpRequest is not available in the sandbox');
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
global.WebSocket = () => {
|
|
26
|
-
throw new Error('WebSocket is not available in the sandbox');
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
global.Worker = () => {
|
|
30
|
-
throw new Error('Worker is not available in the sandbox');
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
global.ServiceWorker = () => {
|
|
34
|
-
throw new Error('ServiceWorker is not available in the sandbox');
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
global.XMLHttpRequestEventTarget = () => {
|
|
38
|
-
throw new Error('XMLHttpRequestEventTarget is not available in the sandbox');
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
global.SharedWorker = () => {
|
|
42
|
-
throw new Error('SharedWorker is not available in the sandbox');
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
global.WebSocketEventTarget = () => {
|
|
46
|
-
throw new Error('WebSocketEventTarget is not available in the sandbox');
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
rpcClient.initRpcClient(jsonRPCRequest => {
|
|
50
|
-
postMessage({
|
|
51
|
-
type: 'json-rpc-request',
|
|
52
|
-
body: jsonRPCRequest,
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
return Promise.resolve(jsonRPCRequest);
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
const postMessage = message => {
|
|
59
|
-
if (window.ReactNativeWebView) {
|
|
60
|
-
window.ReactNativeWebView.postMessage(JSON.stringify(message));
|
|
61
|
-
} else {
|
|
62
|
-
console.log(message);
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
const addEventListener = (...args) =>
|
|
67
|
-
(navigator.appVersion.includes('Android')
|
|
68
|
-
? document
|
|
69
|
-
: window
|
|
70
|
-
).addEventListener(...args);
|
|
71
|
-
|
|
72
|
-
logger.setLogger({
|
|
73
|
-
log: (...params) => {
|
|
74
|
-
// Logger disabled for sandbox
|
|
75
|
-
},
|
|
76
|
-
debug: (...params) => {
|
|
77
|
-
// Logger disabled for sandbox
|
|
78
|
-
},
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
global.handleEvent = event => {
|
|
82
|
-
const data = event.data;
|
|
83
|
-
|
|
84
|
-
if (data && data.type === 'json-rpc-request') {
|
|
85
|
-
sandboxRpcServer.receive(data.body).then(response => {
|
|
86
|
-
postMessage({
|
|
87
|
-
type: 'json-rpc-response',
|
|
88
|
-
body: response,
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
if (data && data.type === 'json-rpc-response') {
|
|
94
|
-
rpcClient.getRpcClient().receive(data.body);
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
addEventListener('message', global.handleEvent);
|
|
99
|
-
|
|
100
|
-
postMessage({
|
|
101
|
-
type: 'json-rpc-ready',
|
|
102
|
-
});
|
package/lib/sandbox.mjs
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { initRpcClient, getRpcClient } from './rpc-client.mjs';
|
|
2
|
-
import { setLogger } from './logger.mjs';
|
|
3
|
-
import rpcServer from './sandbox-rpc-server.mjs';
|
|
4
|
-
import 'assert';
|
|
5
|
-
import 'json-rpc-2.0';
|
|
6
|
-
import './core/crypto.mjs';
|
|
7
|
-
import 'crypto';
|
|
8
|
-
import './core/logger.mjs';
|
|
9
|
-
import './rpc-util.mjs';
|
|
10
|
-
import './services/sandbox.mjs';
|
|
11
|
-
import './services/pex/service.mjs';
|
|
12
|
-
import './services/pex/config.mjs';
|
|
13
|
-
import '@sphereon/pex';
|
|
14
|
-
|
|
15
|
-
global.fetch = () => {
|
|
16
|
-
throw new Error('fetch is not available in the sandbox');
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
global.XMLHttpRequest = () => {
|
|
20
|
-
throw new Error('XMLHttpRequest is not available in the sandbox');
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
global.WebSocket = () => {
|
|
24
|
-
throw new Error('WebSocket is not available in the sandbox');
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
global.Worker = () => {
|
|
28
|
-
throw new Error('Worker is not available in the sandbox');
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
global.ServiceWorker = () => {
|
|
32
|
-
throw new Error('ServiceWorker is not available in the sandbox');
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
global.XMLHttpRequestEventTarget = () => {
|
|
36
|
-
throw new Error('XMLHttpRequestEventTarget is not available in the sandbox');
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
global.SharedWorker = () => {
|
|
40
|
-
throw new Error('SharedWorker is not available in the sandbox');
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
global.WebSocketEventTarget = () => {
|
|
44
|
-
throw new Error('WebSocketEventTarget is not available in the sandbox');
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
initRpcClient(jsonRPCRequest => {
|
|
48
|
-
postMessage({
|
|
49
|
-
type: 'json-rpc-request',
|
|
50
|
-
body: jsonRPCRequest,
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
return Promise.resolve(jsonRPCRequest);
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
const postMessage = message => {
|
|
57
|
-
if (window.ReactNativeWebView) {
|
|
58
|
-
window.ReactNativeWebView.postMessage(JSON.stringify(message));
|
|
59
|
-
} else {
|
|
60
|
-
console.log(message);
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
const addEventListener = (...args) =>
|
|
65
|
-
(navigator.appVersion.includes('Android')
|
|
66
|
-
? document
|
|
67
|
-
: window
|
|
68
|
-
).addEventListener(...args);
|
|
69
|
-
|
|
70
|
-
setLogger({
|
|
71
|
-
log: (...params) => {
|
|
72
|
-
// Logger disabled for sandbox
|
|
73
|
-
},
|
|
74
|
-
debug: (...params) => {
|
|
75
|
-
// Logger disabled for sandbox
|
|
76
|
-
},
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
global.handleEvent = event => {
|
|
80
|
-
const data = event.data;
|
|
81
|
-
|
|
82
|
-
if (data && data.type === 'json-rpc-request') {
|
|
83
|
-
rpcServer.receive(data.body).then(response => {
|
|
84
|
-
postMessage({
|
|
85
|
-
type: 'json-rpc-response',
|
|
86
|
-
body: response,
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
if (data && data.type === 'json-rpc-response') {
|
|
92
|
-
getRpcClient().receive(data.body);
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
addEventListener('message', global.handleEvent);
|
|
97
|
-
|
|
98
|
-
postMessage({
|
|
99
|
-
type: 'json-rpc-ready',
|
|
100
|
-
});
|
|
@@ -1,113 +0,0 @@
|
|
|
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;
|
|
@@ -1,109 +0,0 @@
|
|
|
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 };
|