@docknetwork/wallet-sdk-wasm 0.4.22 → 1.5.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/lib/{account-614e6414.js → account-bf00e5c0.js} +5 -5
- package/lib/{account-ee524484.js → account-e48dc9b6.js} +5 -5
- package/lib/core/polkadot-utils.js +18 -4
- package/lib/core/polkadot-utils.mjs +15 -2
- package/lib/index.js +16 -19
- package/lib/index.mjs +20 -23
- package/lib/modules/account.js +10 -5
- package/lib/modules/account.mjs +10 -5
- package/lib/modules/accounts.js +10 -5
- package/lib/modules/accounts.mjs +10 -5
- package/lib/modules/network-manager.js +4 -2
- package/lib/modules/network-manager.mjs +4 -2
- package/lib/modules/wallet.js +13 -8
- package/lib/modules/wallet.mjs +13 -8
- package/lib/rpc-server.js +16 -19
- package/lib/rpc-server.mjs +20 -23
- package/lib/services/blockchain/configs.js +7 -0
- package/lib/services/blockchain/configs.mjs +3 -0
- package/lib/services/{dock → blockchain}/index.android.js +3 -4
- package/lib/services/{dock → blockchain}/index.android.mjs +3 -4
- package/lib/services/{dock → blockchain}/index.ios.js +3 -4
- package/lib/services/{dock → blockchain}/index.ios.mjs +3 -4
- package/lib/services/blockchain/index.js +30 -0
- package/lib/services/blockchain/index.mjs +22 -0
- package/lib/services/{dock → blockchain}/service-rpc.js +5 -7
- package/lib/services/{dock → blockchain}/service-rpc.mjs +5 -7
- package/lib/services/blockchain/service.js +212 -0
- package/lib/services/blockchain/service.mjs +206 -0
- package/lib/services/credential/bbs-revocation.js +41 -60
- package/lib/services/credential/bbs-revocation.mjs +42 -57
- package/lib/services/credential/bound-check.js +0 -8
- package/lib/services/credential/bound-check.mjs +1 -5
- package/lib/services/credential/index.js +21 -24
- package/lib/services/credential/index.mjs +22 -25
- package/lib/services/credential/pex-helpers.js +134 -34
- package/lib/services/credential/pex-helpers.mjs +133 -35
- package/lib/services/credential/service.js +55 -56
- package/lib/services/credential/service.mjs +45 -43
- package/lib/services/credential/utils.js +12 -18
- package/lib/services/credential/utils.mjs +11 -14
- package/lib/services/dids/config.js +8 -0
- package/lib/services/dids/config.mjs +8 -0
- package/lib/services/dids/index.js +11 -10
- package/lib/services/dids/index.mjs +12 -11
- package/lib/services/dids/service-rpc.js +2 -2
- package/lib/services/dids/service-rpc.mjs +2 -2
- package/lib/services/dids/service.js +28 -36
- package/lib/services/dids/service.mjs +27 -33
- package/lib/services/edv/hmac.js +5 -0
- package/lib/services/edv/hmac.mjs +5 -0
- package/lib/services/edv/index.js +13 -11
- package/lib/services/edv/index.mjs +16 -14
- package/lib/services/edv/service-rpc.js +4 -0
- package/lib/services/edv/service-rpc.mjs +4 -0
- package/lib/services/edv/service.js +29 -13
- package/lib/services/edv/service.mjs +31 -16
- package/lib/services/example/service.js +3 -1
- package/lib/services/example/service.mjs +3 -1
- package/lib/services/index.js +14 -17
- package/lib/services/index.mjs +18 -21
- package/lib/services/keyring/configs.js +12 -0
- package/lib/services/keyring/configs.mjs +12 -0
- package/lib/services/keyring/service.js +5 -0
- package/lib/services/keyring/service.mjs +5 -0
- package/lib/services/pex/service.js +17 -15
- package/lib/services/pex/service.mjs +17 -15
- package/lib/services/relay-service/index.mjs +1 -1
- package/lib/services/relay-service/service.mjs +2 -2
- package/lib/services/substrate/api-utils.js +19 -6
- package/lib/services/substrate/api-utils.mjs +19 -6
- package/lib/services/substrate/index.js +14 -6
- package/lib/services/substrate/index.mjs +14 -6
- package/lib/services/substrate/service.js +17 -9
- package/lib/services/substrate/service.mjs +17 -9
- package/lib/services/test-utils.js +27 -17
- package/lib/services/test-utils.mjs +27 -17
- package/lib/services/trust-registry/index.js +17 -5
- package/lib/services/trust-registry/index.mjs +17 -5
- package/lib/services/trust-registry/service.js +27 -10
- package/lib/services/trust-registry/service.mjs +27 -10
- package/lib/services/util-crypto/configs.js +3 -0
- package/lib/services/util-crypto/configs.mjs +3 -0
- package/lib/services/util-crypto/service-rpc.js +6 -0
- package/lib/services/util-crypto/service-rpc.mjs +6 -0
- package/lib/services/util-crypto/service.js +5 -0
- package/lib/services/util-crypto/service.mjs +6 -1
- package/lib/setup-nodejs.js +16 -19
- package/lib/setup-nodejs.mjs +20 -23
- package/lib/setup-tests.js +16 -19
- package/lib/setup-tests.mjs +20 -23
- package/lib/src/core/polkadot-utils.d.ts +1 -0
- package/lib/src/core/polkadot-utils.d.ts.map +1 -1
- package/lib/src/modules/network-manager.d.ts +1 -0
- package/lib/src/modules/network-manager.d.ts.map +1 -1
- package/lib/src/services/blockchain/configs.d.ts +8 -0
- package/lib/src/services/blockchain/configs.d.ts.map +1 -0
- package/lib/src/services/blockchain/index.d.ts +2 -0
- package/lib/src/services/blockchain/index.d.ts.map +1 -0
- package/lib/src/services/blockchain/service.d.ts +52 -0
- package/lib/src/services/blockchain/service.d.ts.map +1 -0
- package/lib/src/services/credential/bbs-revocation.d.ts.map +1 -1
- package/lib/src/services/credential/bound-check.d.ts +0 -4
- package/lib/src/services/credential/bound-check.d.ts.map +1 -1
- package/lib/src/services/credential/index.d.ts +2 -7
- package/lib/src/services/credential/index.d.ts.map +1 -1
- package/lib/src/services/credential/pex-helpers.d.ts +5 -3
- package/lib/src/services/credential/pex-helpers.d.ts.map +1 -1
- package/lib/src/services/credential/service.d.ts +2 -7
- package/lib/src/services/credential/service.d.ts.map +1 -1
- package/lib/src/services/credential/utils.d.ts.map +1 -1
- package/lib/src/services/dids/config.d.ts +5 -0
- package/lib/src/services/dids/config.d.ts.map +1 -1
- package/lib/src/services/dids/service-rpc.d.ts +1 -1
- package/lib/src/services/dids/service-rpc.d.ts.map +1 -1
- package/lib/src/services/dids/service.d.ts +9 -4
- package/lib/src/services/dids/service.d.ts.map +1 -1
- package/lib/src/services/edv/hmac.d.ts +1 -0
- package/lib/src/services/edv/hmac.d.ts.map +1 -1
- package/lib/src/services/edv/service.d.ts +5 -0
- package/lib/src/services/edv/service.d.ts.map +1 -1
- package/lib/src/services/example/service.d.ts.map +1 -1
- package/lib/src/services/keyring/configs.d.ts +6 -0
- package/lib/src/services/keyring/configs.d.ts.map +1 -1
- package/lib/src/services/pex/service.d.ts.map +1 -1
- package/lib/src/services/trust-registry/service.d.ts.map +1 -1
- package/lib/src/services/util-crypto/configs.d.ts +1 -0
- package/lib/src/services/util-crypto/configs.d.ts.map +1 -1
- package/lib/src/services/util-crypto/service.d.ts +1 -0
- package/lib/src/services/util-crypto/service.d.ts.map +1 -1
- package/lib/test/setup-test-state.js +11 -6
- package/lib/test/setup-test-state.mjs +11 -6
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -4
- package/src/core/polkadot-utils.js +14 -3
- package/src/modules/network-manager.ts +5 -2
- package/src/modules/wallet.ts +5 -5
- package/src/services/blockchain/configs.ts +11 -0
- package/src/services/blockchain/index.android.js +3 -0
- package/src/services/blockchain/index.ios.js +3 -0
- package/src/services/blockchain/index.js +1 -0
- package/src/services/blockchain/index.test.js +34 -0
- package/src/services/{dock → blockchain}/service-rpc.js +5 -6
- package/src/services/blockchain/service.ts +261 -0
- package/src/services/credential/bbs-revocation.ts +41 -85
- package/src/services/credential/bound-check.test.ts +2 -5
- package/src/services/credential/bound-check.ts +0 -5
- package/src/services/credential/index.test.js +148 -7
- package/src/services/credential/pex-helpers.js +132 -34
- package/src/services/credential/pex-helpers.test.js +284 -27
- package/src/services/credential/service.ts +44 -27
- package/src/services/credential/utils.js +5 -14
- package/src/services/dids/config.ts +15 -0
- package/src/services/dids/index.test.js +5 -23
- package/src/services/dids/service-rpc.ts +2 -2
- package/src/services/dids/service.ts +34 -44
- package/src/services/edv/hmac.ts +13 -0
- package/src/services/edv/index.test.js +22 -0
- package/src/services/edv/service-rpc.js +4 -0
- package/src/services/edv/service.ts +22 -0
- package/src/services/example/service.ts +3 -1
- package/src/services/index.js +2 -2
- package/src/services/keyring/configs.ts +21 -0
- package/src/services/keyring/service.ts +13 -0
- package/src/services/pex/service.ts +29 -18
- package/src/services/pex/tests/pex-service.test.js +163 -6
- package/src/services/substrate/api-utils.test.js +7 -7
- package/src/services/substrate/api-utils.ts +3 -3
- package/src/services/substrate/service.ts +6 -6
- package/src/services/test-utils.js +13 -11
- package/src/services/trust-registry/index.test.js +6 -4
- package/src/services/trust-registry/service.ts +13 -7
- package/src/services/util-crypto/configs.ts +4 -0
- package/src/services/util-crypto/service-rpc.js +6 -0
- package/src/services/util-crypto/service.ts +8 -0
- package/src/test/setup-test-state.js +2 -2
- package/lib/services/dock/configs.js +0 -18
- package/lib/services/dock/configs.mjs +0 -10
- package/lib/services/dock/index.js +0 -17
- package/lib/services/dock/index.mjs +0 -9
- package/lib/services/dock/service.js +0 -138
- package/lib/services/dock/service.mjs +0 -126
- package/lib/src/services/dock/configs.d.ts +0 -7
- package/lib/src/services/dock/configs.d.ts.map +0 -1
- package/lib/src/services/dock/index.d.ts +0 -2
- package/lib/src/services/dock/index.d.ts.map +0 -1
- package/lib/src/services/dock/service.d.ts +0 -44
- package/lib/src/services/dock/service.d.ts.map +0 -1
- package/src/services/dock/configs.ts +0 -12
- package/src/services/dock/index.android.js +0 -3
- package/src/services/dock/index.ios.js +0 -3
- package/src/services/dock/index.js +0 -1
- package/src/services/dock/index.test.js +0 -48
- package/src/services/dock/service.ts +0 -154
|
@@ -371,6 +371,114 @@ describe('Pex Examples', () => {
|
|
|
371
371
|
expect(results.verifiableCredential).toBeTruthy();
|
|
372
372
|
});
|
|
373
373
|
|
|
374
|
+
it('should handle DID format filter', () => {
|
|
375
|
+
const presentationDefinition = {
|
|
376
|
+
id: 'df3d2615-7955-4f9d-b2df-ef5c6202bdaf',
|
|
377
|
+
input_descriptors: [
|
|
378
|
+
{
|
|
379
|
+
id: 'Credential 1',
|
|
380
|
+
name: 'Validate Test Credential',
|
|
381
|
+
purpose: 'verify Test credential',
|
|
382
|
+
constraints: {
|
|
383
|
+
fields: [
|
|
384
|
+
{
|
|
385
|
+
path: [
|
|
386
|
+
'$.issuer.id',
|
|
387
|
+
'$.issuer',
|
|
388
|
+
'$.vc.issuer.id',
|
|
389
|
+
'$.vc.issuer',
|
|
390
|
+
'$.iss',
|
|
391
|
+
],
|
|
392
|
+
filter: {
|
|
393
|
+
const:
|
|
394
|
+
'did:dock:5HPb8aoNXNQv5XxbupZRorHyc7CdBUYWFFxeczHxqVgeGPjT',
|
|
395
|
+
format: 'did',
|
|
396
|
+
},
|
|
397
|
+
optional: false,
|
|
398
|
+
predicate: 'required',
|
|
399
|
+
},
|
|
400
|
+
],
|
|
401
|
+
},
|
|
402
|
+
},
|
|
403
|
+
],
|
|
404
|
+
};
|
|
405
|
+
|
|
406
|
+
const credentials = [
|
|
407
|
+
{
|
|
408
|
+
'@context': [
|
|
409
|
+
'https://www.w3.org/2018/credentials/v1',
|
|
410
|
+
'https://ld.dock.io/credentials/extensions-v1',
|
|
411
|
+
'https://ld.dock.io/security/bbs23/v1',
|
|
412
|
+
{
|
|
413
|
+
age: 'dk:age',
|
|
414
|
+
dk: 'https://ld.dock.io/credentials#',
|
|
415
|
+
grade: 'dk:grade',
|
|
416
|
+
graduated: 'dk:graduated',
|
|
417
|
+
},
|
|
418
|
+
],
|
|
419
|
+
credentialStatus: {
|
|
420
|
+
id: 'dock:accumulator:0xfa7403ff3a3f3546a1fe443bf08a094492e08fa8c358c8abdda334598f68b52c',
|
|
421
|
+
type: 'DockVBAccumulator2022',
|
|
422
|
+
revocationCheck: 'membership',
|
|
423
|
+
revocationId: '17',
|
|
424
|
+
},
|
|
425
|
+
id: 'https://creds-testnet.dock.io/74c3a74fbad2fea4f7bb991092165a29de9fc7fb556ee71074755f7804bfaf0e',
|
|
426
|
+
type: ['VerifiableCredential', 'UniversityDegree'],
|
|
427
|
+
credentialSubject: {
|
|
428
|
+
graduated: true,
|
|
429
|
+
grade: 12,
|
|
430
|
+
age: 31,
|
|
431
|
+
},
|
|
432
|
+
issuanceDate: '2024-11-29T11:39:01.959Z',
|
|
433
|
+
issuer: {
|
|
434
|
+
name: 'Test',
|
|
435
|
+
description: ' ',
|
|
436
|
+
logo: 'https://img.dock.io/b1026229cdb6a2fbd59605ba7228db0a',
|
|
437
|
+
id: 'did:dock:5HPb8aoNXNQv5XxbupZRorHyc7CdBUYWFFxeczHxqVgeGPjT',
|
|
438
|
+
},
|
|
439
|
+
credentialSchema: {
|
|
440
|
+
id: 'https://schema.dock.io/Test-V2-1731009346611.json',
|
|
441
|
+
type: 'JsonSchemaValidator2018',
|
|
442
|
+
details:
|
|
443
|
+
'{"jsonSchema":{"$id":"https://schema.dock.io/Test-V2-1731009346611.json","$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":true,"description":"","name":"test University Degree","properties":{"@context":{"type":"string"},"credentialSchema":{"properties":{"details":{"type":"string"},"id":{"type":"string"},"type":{"type":"string"},"version":{"type":"string"}},"type":"object"},"credentialStatus":{"properties":{"id":{"type":"string"},"revocationCheck":{"type":"string"},"revocationId":{"type":"string"},"type":{"type":"string"}},"type":"object"},"credentialSubject":{"properties":{"age":{"description":"","title":"Age","type":"number"},"grade":{"title":"Grade","type":"number"},"graduated":{"default":false,"title":"Graduated","type":"boolean"}},"required":["graduated","age"],"type":"object"},"cryptoVersion":{"type":"string"},"id":{"type":"string"},"issuanceDate":{"format":"date-time","type":"string"},"issuer":{"properties":{"description":{"type":"string"},"id":{"type":"string"},"logo":{"type":"string"},"name":{"type":"string"}},"type":"object"},"name":{"type":"string"},"proof":{"properties":{"@context":{"items":[{"properties":{"proof":{"properties":{"@container":{"type":"string"},"@id":{"type":"string"},"@type":{"type":"string"}},"type":"object"},"sec":{"type":"string"}},"type":"object"},{"type":"string"}],"type":"array"},"created":{"format":"date-time","type":"string"},"proofPurpose":{"type":"string"},"type":{"type":"string"},"verificationMethod":{"type":"string"}},"type":"object"},"type":{"type":"string"}},"type":"object"},"parsingOptions":{"defaultDecimalPlaces":4,"defaultMinimumDate":-17592186044415,"defaultMinimumInteger":-4294967295,"useDefaults":true}}',
|
|
444
|
+
version: '0.4.0',
|
|
445
|
+
},
|
|
446
|
+
name: 'Test University Degree',
|
|
447
|
+
cryptoVersion: '0.6.0',
|
|
448
|
+
proof: {
|
|
449
|
+
'@context': [
|
|
450
|
+
{
|
|
451
|
+
sec: 'https://w3id.org/security#',
|
|
452
|
+
proof: {
|
|
453
|
+
'@id': 'sec:proof',
|
|
454
|
+
'@type': '@id',
|
|
455
|
+
'@container': '@graph',
|
|
456
|
+
},
|
|
457
|
+
},
|
|
458
|
+
'https://ld.dock.io/security/bbs23/v1',
|
|
459
|
+
],
|
|
460
|
+
type: 'Bls12381BBSSignatureDock2023',
|
|
461
|
+
created: '2024-11-29T11:39:15Z',
|
|
462
|
+
verificationMethod:
|
|
463
|
+
'did:dock:5HPb8aoNXNQv5XxbupZRorHyc7CdBUYWFFxeczHxqVgeGPjT#keys-2',
|
|
464
|
+
proofPurpose: 'assertionMethod',
|
|
465
|
+
proofValue:
|
|
466
|
+
'z2e9knFyNq7RPasmUbAASyQ5uALQHHdQsVTXQuLvQTRao6RNbkcyjTcAVBVpMTAZvdm2rW8qZFTCr8ATA1HMuAbZGJD2EM9gtyPFzXHfRUssKuo',
|
|
467
|
+
},
|
|
468
|
+
$$accum__witness$$:
|
|
469
|
+
'{"blockNo":9950875,"witness":"0x975eb3fa6bb302f0679103f187aa6cdb6732739eda6b0254b9a37573a684a5a1c27230f9b1a7a9b472db547b5a180ac7"}',
|
|
470
|
+
},
|
|
471
|
+
];
|
|
472
|
+
|
|
473
|
+
const results = pexService.filterCredentials({
|
|
474
|
+
credentials,
|
|
475
|
+
presentationDefinition,
|
|
476
|
+
});
|
|
477
|
+
|
|
478
|
+
expect(results.verifiableCredential).toBeTruthy();
|
|
479
|
+
expect(results.verifiableCredential.length).toBe(1);
|
|
480
|
+
});
|
|
481
|
+
|
|
374
482
|
describe('removeOptionalAttribute', () => {
|
|
375
483
|
const getFieldsWithOptionalAttributes = template => {
|
|
376
484
|
return template.input_descriptors[0].constraints.fields.filter(
|
|
@@ -410,8 +518,12 @@ describe('Pex Examples', () => {
|
|
|
410
518
|
let result = removeOptionalAttribute(template);
|
|
411
519
|
expect(getFieldsWithOptionalAttributes(result)).toBe(0);
|
|
412
520
|
expect(result.input_descriptors[0].constraints.fields.length).toBe(1);
|
|
521
|
+
expect(result).not.toBe(template); // Ensure immutability
|
|
522
|
+
expect(template.input_descriptors[0].constraints.fields.length).toBe(2); // Original remains unchanged
|
|
523
|
+
});
|
|
413
524
|
|
|
414
|
-
|
|
525
|
+
it('should handle fields with unsupported formats', () => {
|
|
526
|
+
let template = {
|
|
415
527
|
id: 'income_test',
|
|
416
528
|
input_descriptors: [
|
|
417
529
|
{
|
|
@@ -422,6 +534,9 @@ describe('Pex Examples', () => {
|
|
|
422
534
|
fields: [
|
|
423
535
|
{
|
|
424
536
|
path: ['$.credentialSubject.id'],
|
|
537
|
+
filter: {
|
|
538
|
+
format: 'did',
|
|
539
|
+
},
|
|
425
540
|
},
|
|
426
541
|
{
|
|
427
542
|
path: ['$.type[*]'],
|
|
@@ -438,11 +553,17 @@ describe('Pex Examples', () => {
|
|
|
438
553
|
|
|
439
554
|
expect(getFieldsWithOptionalAttributes(template)).toBe(1);
|
|
440
555
|
|
|
441
|
-
result = removeOptionalAttribute(template);
|
|
556
|
+
let result = removeOptionalAttribute(template);
|
|
442
557
|
expect(getFieldsWithOptionalAttributes(result)).toBe(0);
|
|
443
558
|
expect(result.input_descriptors[0].constraints.fields.length).toBe(1);
|
|
559
|
+
expect(
|
|
560
|
+
result.input_descriptors[0].constraints.fields[0].filter?.format,
|
|
561
|
+
).toBeUndefined();
|
|
562
|
+
expect(result).not.toBe(template); // Ensure immutability
|
|
563
|
+
});
|
|
444
564
|
|
|
445
|
-
|
|
565
|
+
it('should handle templates with no optional attributes', () => {
|
|
566
|
+
let template = {
|
|
446
567
|
id: 'income_test',
|
|
447
568
|
input_descriptors: [
|
|
448
569
|
{
|
|
@@ -461,11 +582,16 @@ describe('Pex Examples', () => {
|
|
|
461
582
|
};
|
|
462
583
|
|
|
463
584
|
expect(getFieldsWithOptionalAttributes(template)).toBe(0);
|
|
464
|
-
|
|
585
|
+
|
|
586
|
+
let result = removeOptionalAttribute(template);
|
|
465
587
|
expect(getFieldsWithOptionalAttributes(result)).toBe(0);
|
|
466
588
|
expect(result.input_descriptors[0].constraints.fields.length).toBe(1);
|
|
589
|
+
// Ensure immutability
|
|
590
|
+
expect(result).not.toBe(template);
|
|
591
|
+
});
|
|
467
592
|
|
|
468
|
-
|
|
593
|
+
it('should handle templates where all fields are optional', () => {
|
|
594
|
+
let template = {
|
|
469
595
|
id: 'income_test',
|
|
470
596
|
input_descriptors: [
|
|
471
597
|
{
|
|
@@ -485,9 +611,40 @@ describe('Pex Examples', () => {
|
|
|
485
611
|
};
|
|
486
612
|
|
|
487
613
|
expect(getFieldsWithOptionalAttributes(template)).toBe(1);
|
|
488
|
-
|
|
614
|
+
|
|
615
|
+
let result = removeOptionalAttribute(template);
|
|
489
616
|
expect(getFieldsWithOptionalAttributes(result)).toBe(0);
|
|
490
617
|
expect(result.input_descriptors[0].constraints.fields.length).toBe(1);
|
|
618
|
+
expect(result.input_descriptors[0].constraints.fields[0].path).toEqual([
|
|
619
|
+
'$.id',
|
|
620
|
+
]);
|
|
621
|
+
expect(result).not.toBe(template); // Ensure immutability
|
|
622
|
+
});
|
|
623
|
+
|
|
624
|
+
it('should add a placeholder field if all fields are removed', () => {
|
|
625
|
+
let template = {
|
|
626
|
+
id: 'income_test',
|
|
627
|
+
input_descriptors: [
|
|
628
|
+
{
|
|
629
|
+
id: 'Credential 1',
|
|
630
|
+
constraints: {
|
|
631
|
+
fields: [
|
|
632
|
+
{
|
|
633
|
+
path: ['$.type[*]'],
|
|
634
|
+
optional: true,
|
|
635
|
+
},
|
|
636
|
+
],
|
|
637
|
+
},
|
|
638
|
+
},
|
|
639
|
+
],
|
|
640
|
+
};
|
|
641
|
+
|
|
642
|
+
let result = removeOptionalAttribute(template);
|
|
643
|
+
expect(result.input_descriptors[0].constraints.fields.length).toBe(1);
|
|
644
|
+
expect(result.input_descriptors[0].constraints.fields[0].path).toEqual([
|
|
645
|
+
'$.id',
|
|
646
|
+
]);
|
|
647
|
+
expect(result).not.toBe(template); // Ensure immutability
|
|
491
648
|
});
|
|
492
649
|
});
|
|
493
650
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {DOCK_TOKEN_UNIT} from '../../core/format-utils';
|
|
2
2
|
import {TestFixtures} from '../../fixtures';
|
|
3
3
|
import {once} from '../../modules/event-manager';
|
|
4
|
-
import {
|
|
4
|
+
import {blockchainService} from '../blockchain/service';
|
|
5
5
|
import {mockDockService, setMockTransactionError} from '../test-utils';
|
|
6
6
|
import {signAndSend} from './api-utils';
|
|
7
7
|
import {substrateService} from './service';
|
|
@@ -16,8 +16,8 @@ describe('ApiUtils', () => {
|
|
|
16
16
|
describe('signAndSend', () => {
|
|
17
17
|
it('expect to send tokens', async () => {
|
|
18
18
|
const account = TestFixtures.account1.getKeyring();
|
|
19
|
-
|
|
20
|
-
const extrinsic =
|
|
19
|
+
blockchainService.dock.setAccount(account);
|
|
20
|
+
const extrinsic = blockchainService.dock.api.tx.balances.transfer(
|
|
21
21
|
TestFixtures.account2.address,
|
|
22
22
|
1,
|
|
23
23
|
);
|
|
@@ -32,8 +32,8 @@ describe('ApiUtils', () => {
|
|
|
32
32
|
|
|
33
33
|
it('expect to get error: Inability to pay fees', async () => {
|
|
34
34
|
const account = TestFixtures.noBalanceAccount.getKeyring();
|
|
35
|
-
|
|
36
|
-
const extrinsic =
|
|
35
|
+
blockchainService.dock.setAccount(account);
|
|
36
|
+
const extrinsic = blockchainService.dock.api.tx.balances.transfer(
|
|
37
37
|
TestFixtures.account2.address,
|
|
38
38
|
1,
|
|
39
39
|
);
|
|
@@ -49,11 +49,11 @@ describe('ApiUtils', () => {
|
|
|
49
49
|
|
|
50
50
|
it('expect to get error: Not enough balance', async () => {
|
|
51
51
|
const account = TestFixtures.account1.getKeyring();
|
|
52
|
-
|
|
52
|
+
blockchainService.dock.setAccount(account);
|
|
53
53
|
const balance = await substrateService.getAccountBalance({
|
|
54
54
|
address: TestFixtures.account1.address,
|
|
55
55
|
});
|
|
56
|
-
const extrinsic =
|
|
56
|
+
const extrinsic = blockchainService.dock.api.tx.balances.transfer(
|
|
57
57
|
TestFixtures.account2.address,
|
|
58
58
|
balance * 2 * DOCK_TOKEN_UNIT,
|
|
59
59
|
);
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import assert from 'assert';
|
|
3
3
|
import {EventEmitter} from 'events';
|
|
4
4
|
import {Logger} from '../../core/logger';
|
|
5
|
-
import {
|
|
5
|
+
import {blockchainService} from '../blockchain/service';
|
|
6
6
|
|
|
7
7
|
export const extrisicErrorsFilter = ({event}) => {
|
|
8
|
-
return
|
|
8
|
+
return blockchainService.dock.api.events.system.ExtrinsicFailed.is(event);
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
export const mapEventToErrorMessage = ({event}) => {
|
|
@@ -16,7 +16,7 @@ export const mapEventToErrorMessage = ({event}) => {
|
|
|
16
16
|
|
|
17
17
|
if (error.isModule) {
|
|
18
18
|
// for module errors, we have the section indexed, lookup
|
|
19
|
-
const decoded =
|
|
19
|
+
const decoded = blockchainService.dock.api.registry.findMetaError(error.asModule);
|
|
20
20
|
const {docs, method, section} = decoded;
|
|
21
21
|
|
|
22
22
|
return `${section}.${method}: ${docs.join(' ')}`;
|
|
@@ -3,7 +3,7 @@ import assert from 'assert';
|
|
|
3
3
|
import BigNumber from 'bignumber.js';
|
|
4
4
|
import BN from 'bn.js';
|
|
5
5
|
import {DOCK_TOKEN_UNIT, getPlainDockAmount} from '../../core/format-utils';
|
|
6
|
-
import {
|
|
6
|
+
import {blockchainService} from '../blockchain/service';
|
|
7
7
|
import {signAndSend} from './api-utils';
|
|
8
8
|
import {
|
|
9
9
|
GetAccountBalanceParams,
|
|
@@ -36,13 +36,13 @@ export class SubstrateService {
|
|
|
36
36
|
validation.getAccountBalance(params);
|
|
37
37
|
|
|
38
38
|
console.log('ensure dock ready');
|
|
39
|
-
await
|
|
39
|
+
await blockchainService.ensureBlockchainReady();
|
|
40
40
|
|
|
41
41
|
console.log('ensure dock ready done');
|
|
42
42
|
|
|
43
43
|
const {
|
|
44
44
|
data: {free},
|
|
45
|
-
} = await
|
|
45
|
+
} = await blockchainService.dock.api.query.system.account(params.address);
|
|
46
46
|
|
|
47
47
|
return free.toNumber() / DOCK_TOKEN_UNIT;
|
|
48
48
|
}
|
|
@@ -58,9 +58,9 @@ export class SubstrateService {
|
|
|
58
58
|
password: '',
|
|
59
59
|
});
|
|
60
60
|
|
|
61
|
-
|
|
61
|
+
blockchainService.dock.setAccount(account);
|
|
62
62
|
|
|
63
|
-
const extrinsic =
|
|
63
|
+
const extrinsic = blockchainService.dock.api.tx.balances.transfer(
|
|
64
64
|
toAddress,
|
|
65
65
|
amount,
|
|
66
66
|
);
|
|
@@ -81,7 +81,7 @@ export class SubstrateService {
|
|
|
81
81
|
jsonData: keyPair,
|
|
82
82
|
password: '',
|
|
83
83
|
});
|
|
84
|
-
const {dock} =
|
|
84
|
+
const {dock} = blockchainService;
|
|
85
85
|
|
|
86
86
|
dock.setAccount(account);
|
|
87
87
|
|
|
@@ -4,11 +4,11 @@ import BigNumber from 'bignumber.js';
|
|
|
4
4
|
import {DOCK_TOKEN_UNIT} from '../core/format-utils';
|
|
5
5
|
import {TestFixtures} from '../fixtures';
|
|
6
6
|
import {NetworkManager} from '../modules/network-manager';
|
|
7
|
-
import {dockService, getDock, setDock} from './dock/service';
|
|
8
7
|
import {keyringService} from './keyring';
|
|
9
8
|
import {RpcService} from './rpc-service-client';
|
|
10
9
|
import {walletService} from './wallet';
|
|
11
10
|
import Keyring from '@polkadot/keyring';
|
|
11
|
+
import {blockchainService} from './blockchain/service';
|
|
12
12
|
|
|
13
13
|
export async function initializeWalletService() {
|
|
14
14
|
await cryptoWaitReady();
|
|
@@ -50,21 +50,21 @@ export async function mockDockService() {
|
|
|
50
50
|
let sdkMock;
|
|
51
51
|
|
|
52
52
|
if (API_MOCK_DISABLED) {
|
|
53
|
-
return
|
|
53
|
+
return blockchainService.init({
|
|
54
54
|
address: NetworkManager.getInstance().getNetworkInfo().substrateUrl,
|
|
55
55
|
});
|
|
56
56
|
} else {
|
|
57
57
|
sdkMock = mockDockSdkConnection();
|
|
58
|
-
await
|
|
58
|
+
await blockchainService.init({
|
|
59
59
|
address: NetworkManager.getInstance().getNetworkInfo().substrateUrl,
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
const _dockSdk =
|
|
63
|
+
const _dockSdk = blockchainService.dock;
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
blockchainService.isDockReady = true;
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
blockchainService.dock = {
|
|
68
68
|
api: {
|
|
69
69
|
events: {
|
|
70
70
|
system: {
|
|
@@ -125,11 +125,11 @@ export async function mockDockService() {
|
|
|
125
125
|
};
|
|
126
126
|
|
|
127
127
|
return () => {
|
|
128
|
-
|
|
128
|
+
blockchainService.dock = _dockSdk;
|
|
129
129
|
if (sdkMock) {
|
|
130
130
|
sdkMock.clear();
|
|
131
131
|
}
|
|
132
|
-
|
|
132
|
+
blockchainService.disconnect();
|
|
133
133
|
};
|
|
134
134
|
}
|
|
135
135
|
|
|
@@ -164,7 +164,7 @@ export async function setupTestWallet() {
|
|
|
164
164
|
|
|
165
165
|
export function mockDockSdkConnection(connectionError) {
|
|
166
166
|
const result = 'result';
|
|
167
|
-
const dock =
|
|
167
|
+
const dock = blockchainService.dock;
|
|
168
168
|
const mocks = [
|
|
169
169
|
jest.spyOn(dock, 'init').mockImplementation(() => {
|
|
170
170
|
if (connectionError) {
|
|
@@ -178,7 +178,7 @@ export function mockDockSdkConnection(connectionError) {
|
|
|
178
178
|
|
|
179
179
|
let currentAccount;
|
|
180
180
|
|
|
181
|
-
|
|
181
|
+
blockchainService.dock = {
|
|
182
182
|
...dock,
|
|
183
183
|
setAccount(account) {
|
|
184
184
|
currentAccount = account;
|
|
@@ -229,7 +229,7 @@ export function mockDockSdkConnection(connectionError) {
|
|
|
229
229
|
return kr.createFromUri('//Alice');
|
|
230
230
|
}),
|
|
231
231
|
},
|
|
232
|
-
}
|
|
232
|
+
};
|
|
233
233
|
|
|
234
234
|
return {
|
|
235
235
|
result,
|
|
@@ -255,6 +255,8 @@ export function assertRpcService(
|
|
|
255
255
|
const rpcService = new ServiceClass();
|
|
256
256
|
const validationTmp = {};
|
|
257
257
|
|
|
258
|
+
assert(rpcService.serviceName === service.name, 'service name mismatch');
|
|
259
|
+
|
|
258
260
|
Object.keys(validation).forEach(key => {
|
|
259
261
|
validationTmp[key] = validation[key];
|
|
260
262
|
validation[key] = () => true;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {blockchainService} from '../blockchain/service';
|
|
2
2
|
|
|
3
3
|
import {trustRegistryService as service} from './service';
|
|
4
4
|
import {
|
|
@@ -23,7 +23,7 @@ describe('TrustRegistryService', () => {
|
|
|
23
23
|
const result = await service.getTrustRegistries(params);
|
|
24
24
|
|
|
25
25
|
const queryObject =
|
|
26
|
-
|
|
26
|
+
blockchainService.dock.trustRegistry.registriesInfo.mock.calls[0][0];
|
|
27
27
|
expect(queryObject.issuers.AnyOf).toHaveLength(1);
|
|
28
28
|
expect(queryObject.verifiers.AnyOf).toHaveLength(1);
|
|
29
29
|
expect(queryObject.schemaIds.AnyOf[0]).toEqual(
|
|
@@ -42,10 +42,12 @@ describe('TrustRegistryService', () => {
|
|
|
42
42
|
};
|
|
43
43
|
const result = await service.getTrustRegistryVerifiers(params);
|
|
44
44
|
const queryObject =
|
|
45
|
-
|
|
45
|
+
blockchainService.dock.trustRegistry.registrySchemasMetadata.mock
|
|
46
|
+
.calls[0][0];
|
|
46
47
|
|
|
47
48
|
expect(
|
|
48
|
-
|
|
49
|
+
blockchainService.dock.trustRegistry.registrySchemasMetadata.mock
|
|
50
|
+
.calls[0][1],
|
|
49
51
|
).toEqual(trustRegistryId);
|
|
50
52
|
expect(queryObject.issuers.AnyOf).toHaveLength(1);
|
|
51
53
|
expect(queryObject.schemaIds[0]).toEqual(
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
2
|
import {serviceName} from './configs';
|
|
3
|
-
import {typedHexDID} from '@docknetwork/sdk/utils/did/typed-did/helpers';
|
|
4
3
|
import {createHash} from 'crypto';
|
|
5
|
-
import {
|
|
4
|
+
import {blockchainService} from '../blockchain/service';
|
|
6
5
|
import {validation} from './configs';
|
|
7
6
|
|
|
7
|
+
|
|
8
|
+
// TODO: Implement this function when the Trust Registry support is added to the SDK
|
|
9
|
+
function typedHexDID(resolver, issuerDID) {
|
|
10
|
+
return issuerDID;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// Trust Registry Service is not supported in the current version of the SDK
|
|
8
14
|
class TrustRegistryService {
|
|
9
15
|
constructor() {
|
|
10
16
|
this.name = serviceName;
|
|
@@ -35,7 +41,7 @@ class TrustRegistryService {
|
|
|
35
41
|
}
|
|
36
42
|
|
|
37
43
|
if (issuerDID) {
|
|
38
|
-
const issuerDIDMethodKey = typedHexDID(
|
|
44
|
+
const issuerDIDMethodKey = typedHexDID(blockchainService.dock.api, issuerDID);
|
|
39
45
|
queryOptions.issuers = {
|
|
40
46
|
AnyOf: [issuerDIDMethodKey],
|
|
41
47
|
};
|
|
@@ -43,7 +49,7 @@ class TrustRegistryService {
|
|
|
43
49
|
|
|
44
50
|
if (verifierDID) {
|
|
45
51
|
const verifierDIDMethodKey = typedHexDID(
|
|
46
|
-
|
|
52
|
+
blockchainService.dock.api,
|
|
47
53
|
verifierDID,
|
|
48
54
|
);
|
|
49
55
|
queryOptions.verifiers = {
|
|
@@ -51,7 +57,7 @@ class TrustRegistryService {
|
|
|
51
57
|
};
|
|
52
58
|
}
|
|
53
59
|
|
|
54
|
-
const registryInfo = await
|
|
60
|
+
const registryInfo = await blockchainService.dock.trustRegistry?.registriesInfo(
|
|
55
61
|
queryOptions,
|
|
56
62
|
);
|
|
57
63
|
|
|
@@ -65,11 +71,11 @@ class TrustRegistryService {
|
|
|
65
71
|
const schemaIdHex = '0x' + hashedId;
|
|
66
72
|
|
|
67
73
|
const issuerDIDMethodKey = issuerDID
|
|
68
|
-
? typedHexDID(
|
|
74
|
+
? typedHexDID(blockchainService.dock.api, issuerDID)
|
|
69
75
|
: null;
|
|
70
76
|
|
|
71
77
|
const metadata =
|
|
72
|
-
await
|
|
78
|
+
await blockchainService.dock.trustRegistry.registrySchemasMetadata(
|
|
73
79
|
{
|
|
74
80
|
schemaIds: [schemaIdHex],
|
|
75
81
|
...(issuerDIDMethodKey && {
|
|
@@ -17,6 +17,10 @@ export const validation = {
|
|
|
17
17
|
}
|
|
18
18
|
},
|
|
19
19
|
|
|
20
|
+
mnemonicToMiniSecret(phrase: string) {
|
|
21
|
+
assert(typeof phrase === 'string', 'invalid mnemonic phrase');
|
|
22
|
+
},
|
|
23
|
+
|
|
20
24
|
mnemonicValidate(phrase: string) {
|
|
21
25
|
assert(typeof phrase === 'string', 'invalid mnemonic phrase');
|
|
22
26
|
},
|
|
@@ -12,6 +12,12 @@ export class UtilCryptoServiceRpc extends RpcService {
|
|
|
12
12
|
return this.call('mnemonicGenerate', numWords);
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
mnemonicToMiniSecret(phrase: string): Promise<any> {
|
|
16
|
+
validation.mnemonicToMiniSecret(phrase);
|
|
17
|
+
|
|
18
|
+
return this.call('mnemonicToMiniSecret', phrase);
|
|
19
|
+
}
|
|
20
|
+
|
|
15
21
|
mnemonicValidate(phrase: string): Promise<any> {
|
|
16
22
|
validation.mnemonicValidate(phrase);
|
|
17
23
|
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
cryptoWaitReady,
|
|
7
7
|
keyExtractSuri,
|
|
8
8
|
mnemonicGenerate,
|
|
9
|
+
mnemonicToMiniSecret,
|
|
9
10
|
mnemonicValidate,
|
|
10
11
|
} from '@polkadot/util-crypto';
|
|
11
12
|
import assert from 'assert';
|
|
@@ -14,6 +15,7 @@ import {validation} from './configs';
|
|
|
14
15
|
export class UtilCryptoService {
|
|
15
16
|
rpcMethods = [
|
|
16
17
|
UtilCryptoService.prototype.mnemonicGenerate,
|
|
18
|
+
UtilCryptoService.prototype.mnemonicToMiniSecret,
|
|
17
19
|
UtilCryptoService.prototype.mnemonicValidate,
|
|
18
20
|
UtilCryptoService.prototype.cryptoWaitReady,
|
|
19
21
|
UtilCryptoService.prototype.cryptoIsReady,
|
|
@@ -33,6 +35,12 @@ export class UtilCryptoService {
|
|
|
33
35
|
return mnemonicGenerate(numWords);
|
|
34
36
|
}
|
|
35
37
|
|
|
38
|
+
mnemonicToMiniSecret(phrase) {
|
|
39
|
+
validation.mnemonicToMiniSecret(phrase);
|
|
40
|
+
|
|
41
|
+
return mnemonicToMiniSecret(phrase);
|
|
42
|
+
}
|
|
43
|
+
|
|
36
44
|
isBase64(value) {
|
|
37
45
|
if (typeof value !== 'string') {
|
|
38
46
|
return false;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {TestFixtures} from '../fixtures';
|
|
2
2
|
import {NetworkManager} from '../modules/network-manager';
|
|
3
3
|
import {Wallet} from '../modules/wallet';
|
|
4
|
-
import {
|
|
4
|
+
import {blockchainService} from '../services/blockchain';
|
|
5
5
|
import {mockDockService} from '../services/test-utils';
|
|
6
6
|
import promiseMemoize from 'promise-memoize';
|
|
7
7
|
import {setStorage} from '../core/storage';
|
|
@@ -29,7 +29,7 @@ export const getTestWallet: Wallet = promiseMemoize(async () => {
|
|
|
29
29
|
mnemonic: TestFixtures.noBalanceAccount.mnemonic,
|
|
30
30
|
});
|
|
31
31
|
|
|
32
|
-
await
|
|
32
|
+
await blockchainService.init({
|
|
33
33
|
address: NetworkManager.getInstance().getNetworkInfo().substrateUrl,
|
|
34
34
|
});
|
|
35
35
|
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var assert = require('assert');
|
|
6
|
-
|
|
7
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
|
-
|
|
9
|
-
var assert__default = /*#__PURE__*/_interopDefaultLegacy(assert);
|
|
10
|
-
|
|
11
|
-
// @ts-nocheck
|
|
12
|
-
const validation = {
|
|
13
|
-
init(params) {
|
|
14
|
-
assert__default["default"](!!params.address, `invalid substrate address ${params.address}`);
|
|
15
|
-
},
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
exports.validation = validation;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var services_dock_service = require('./service.js');
|
|
6
|
-
require('@docknetwork/sdk');
|
|
7
|
-
require('@docknetwork/sdk/resolver');
|
|
8
|
-
require('@docknetwork/crypto-wasm-ts/lib/index');
|
|
9
|
-
require('events');
|
|
10
|
-
require('../../core/logger.js');
|
|
11
|
-
require('../../modules/event-manager.js');
|
|
12
|
-
require('assert');
|
|
13
|
-
require('./configs.js');
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
exports.dockService = services_dock_service.dockService;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export { dockService } from './service.mjs';
|
|
2
|
-
import '@docknetwork/sdk';
|
|
3
|
-
import '@docknetwork/sdk/resolver';
|
|
4
|
-
import '@docknetwork/crypto-wasm-ts/lib/index';
|
|
5
|
-
import 'events';
|
|
6
|
-
import '../../core/logger.mjs';
|
|
7
|
-
import '../../modules/event-manager.mjs';
|
|
8
|
-
import 'assert';
|
|
9
|
-
import './configs.mjs';
|