@dxos/echo-db 2.33.9-dev.7d11f506 → 2.33.9-dev.b6f4ca19

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.
Files changed (116) hide show
  1. package/dist/src/api/result-set.js +4 -4
  2. package/dist/src/api/result-set.js.map +1 -1
  3. package/dist/src/echo.js +2 -2
  4. package/dist/src/echo.js.map +1 -1
  5. package/dist/src/echo.test.js +3 -3
  6. package/dist/src/echo.test.js.map +1 -1
  7. package/dist/src/halo/halo-factory.js +8 -8
  8. package/dist/src/halo/halo-factory.js.map +1 -1
  9. package/dist/src/halo/halo-party.js +3 -3
  10. package/dist/src/halo/halo-party.js.map +1 -1
  11. package/dist/src/halo/halo.js +9 -9
  12. package/dist/src/halo/halo.js.map +1 -1
  13. package/dist/src/halo/identity-manager.js +6 -6
  14. package/dist/src/halo/identity-manager.js.map +1 -1
  15. package/dist/src/halo/identity.js +2 -2
  16. package/dist/src/halo/identity.js.map +1 -1
  17. package/dist/src/halo/preferences.js +6 -6
  18. package/dist/src/halo/preferences.js.map +1 -1
  19. package/dist/src/invitations/greeting-initiator.js +6 -6
  20. package/dist/src/invitations/greeting-initiator.js.map +1 -1
  21. package/dist/src/invitations/greeting-responder.js +5 -5
  22. package/dist/src/invitations/greeting-responder.js.map +1 -1
  23. package/dist/src/invitations/halo-recovery-initiator.js +6 -6
  24. package/dist/src/invitations/halo-recovery-initiator.js.map +1 -1
  25. package/dist/src/invitations/invitation-descriptor.js +9 -9
  26. package/dist/src/invitations/invitation-descriptor.js.map +1 -1
  27. package/dist/src/invitations/invitation-factory.js +3 -3
  28. package/dist/src/invitations/invitation-factory.js.map +1 -1
  29. package/dist/src/invitations/offline-invitation-claimer.js +7 -7
  30. package/dist/src/invitations/offline-invitation-claimer.js.map +1 -1
  31. package/dist/src/packlets/database/data-mirror.js +8 -8
  32. package/dist/src/packlets/database/data-mirror.js.map +1 -1
  33. package/dist/src/packlets/database/data-service-host.js +3 -3
  34. package/dist/src/packlets/database/data-service-host.js.map +1 -1
  35. package/dist/src/packlets/database/data-service-router.js +5 -5
  36. package/dist/src/packlets/database/data-service-router.js.map +1 -1
  37. package/dist/src/packlets/database/database-backend.js +3 -3
  38. package/dist/src/packlets/database/database-backend.js.map +1 -1
  39. package/dist/src/packlets/database/database.js +2 -2
  40. package/dist/src/packlets/database/database.js.map +1 -1
  41. package/dist/src/packlets/database/item-demuxer.js +14 -14
  42. package/dist/src/packlets/database/item-demuxer.js.map +1 -1
  43. package/dist/src/packlets/database/item-manager.js +18 -18
  44. package/dist/src/packlets/database/item-manager.js.map +1 -1
  45. package/dist/src/packlets/database/link.js +3 -3
  46. package/dist/src/packlets/database/link.js.map +1 -1
  47. package/dist/src/packlets/database/selection/result.js +2 -2
  48. package/dist/src/packlets/database/selection/result.js.map +1 -1
  49. package/dist/src/parties/data-party.js +11 -11
  50. package/dist/src/parties/data-party.js.map +1 -1
  51. package/dist/src/parties/party-factory.js +4 -4
  52. package/dist/src/parties/party-factory.js.map +1 -1
  53. package/dist/src/parties/party-manager.js +6 -6
  54. package/dist/src/parties/party-manager.js.map +1 -1
  55. package/dist/src/parties/party-manager.test.js +6 -6
  56. package/dist/src/parties/party-manager.test.js.map +1 -1
  57. package/dist/src/parties/party-preferences.js +2 -2
  58. package/dist/src/parties/party-preferences.js.map +1 -1
  59. package/dist/src/pipeline/feed-muxer.js +3 -3
  60. package/dist/src/pipeline/feed-muxer.js.map +1 -1
  61. package/dist/src/pipeline/message-selector.js +2 -2
  62. package/dist/src/pipeline/message-selector.js.map +1 -1
  63. package/dist/src/pipeline/metadata-store.js +4 -4
  64. package/dist/src/pipeline/metadata-store.js.map +1 -1
  65. package/dist/src/pipeline/party-feed-provider.js +3 -3
  66. package/dist/src/pipeline/party-feed-provider.js.map +1 -1
  67. package/dist/src/pipeline/party-pipeline.js +13 -13
  68. package/dist/src/pipeline/party-pipeline.js.map +1 -1
  69. package/dist/src/pipeline/party-processor.js +3 -3
  70. package/dist/src/pipeline/party-processor.js.map +1 -1
  71. package/dist/src/protocol/authenticator.test.js +53 -12
  72. package/dist/src/protocol/authenticator.test.js.map +1 -1
  73. package/dist/src/snapshots/snapshot-store.js +2 -2
  74. package/dist/src/snapshots/snapshot-store.js.map +1 -1
  75. package/dist/src/testing/testing-factories.js +2 -2
  76. package/dist/src/testing/testing-factories.js.map +1 -1
  77. package/dist/tsconfig.tsbuildinfo +1 -1
  78. package/package.json +21 -17
  79. package/src/api/result-set.ts +1 -1
  80. package/src/echo.test.ts +2 -2
  81. package/src/echo.ts +1 -1
  82. package/src/halo/halo-factory.ts +1 -1
  83. package/src/halo/halo-party.ts +1 -1
  84. package/src/halo/halo.ts +1 -1
  85. package/src/halo/identity-manager.ts +1 -1
  86. package/src/halo/identity.ts +1 -1
  87. package/src/halo/preferences.ts +1 -1
  88. package/src/invitations/greeting-initiator.ts +1 -1
  89. package/src/invitations/greeting-responder.ts +1 -1
  90. package/src/invitations/halo-recovery-initiator.ts +1 -1
  91. package/src/invitations/invitation-descriptor.ts +1 -1
  92. package/src/invitations/invitation-factory.ts +1 -1
  93. package/src/invitations/offline-invitation-claimer.ts +1 -1
  94. package/src/packlets/database/data-mirror.ts +1 -1
  95. package/src/packlets/database/data-service-host.ts +1 -1
  96. package/src/packlets/database/data-service-router.ts +1 -1
  97. package/src/packlets/database/database-backend.ts +1 -1
  98. package/src/packlets/database/database.ts +1 -1
  99. package/src/packlets/database/item-demuxer.ts +1 -1
  100. package/src/packlets/database/item-manager.ts +1 -1
  101. package/src/packlets/database/link.ts +1 -1
  102. package/src/packlets/database/selection/result.ts +1 -1
  103. package/src/parties/data-party.ts +1 -1
  104. package/src/parties/party-factory.ts +1 -1
  105. package/src/parties/party-manager.test.ts +1 -1
  106. package/src/parties/party-manager.ts +1 -1
  107. package/src/parties/party-preferences.ts +1 -1
  108. package/src/pipeline/feed-muxer.ts +1 -1
  109. package/src/pipeline/message-selector.ts +1 -1
  110. package/src/pipeline/metadata-store.ts +1 -1
  111. package/src/pipeline/party-feed-provider.ts +1 -1
  112. package/src/pipeline/party-pipeline.ts +1 -1
  113. package/src/pipeline/party-processor.ts +1 -1
  114. package/src/protocol/authenticator.test.ts +102 -17
  115. package/src/snapshots/snapshot-store.ts +1 -1
  116. package/src/testing/testing-factories.ts +1 -1
package/package.json CHANGED
@@ -1,31 +1,35 @@
1
1
  {
2
2
  "name": "@dxos/echo-db",
3
- "version": "2.33.9-dev.7d11f506",
3
+ "version": "2.33.9-dev.b6f4ca19",
4
4
  "description": "ECHO database.",
5
5
  "license": "MIT",
6
6
  "main": "dist/src/index.js",
7
7
  "types": "dist/src/index.d.ts",
8
+ "browser": {
9
+ "node:assert": "assert"
10
+ },
8
11
  "files": [
9
12
  "dist",
10
13
  "src"
11
14
  ],
12
15
  "dependencies": {
13
- "@dxos/async": "2.33.9-dev.7d11f506",
14
- "@dxos/codec-protobuf": "2.33.9-dev.7d11f506",
15
- "@dxos/credentials": "2.33.9-dev.7d11f506",
16
- "@dxos/crypto": "2.33.9-dev.7d11f506",
17
- "@dxos/debug": "2.33.9-dev.7d11f506",
18
- "@dxos/echo-protocol": "2.33.9-dev.7d11f506",
19
- "@dxos/feed-store": "2.33.9-dev.7d11f506",
20
- "@dxos/mesh-protocol": "2.33.9-dev.7d11f506",
21
- "@dxos/model-factory": "2.33.9-dev.7d11f506",
22
- "@dxos/network-manager": "2.33.9-dev.7d11f506",
23
- "@dxos/object-model": "2.33.9-dev.7d11f506",
24
- "@dxos/protocol-plugin-presence": "2.33.9-dev.7d11f506",
25
- "@dxos/protocol-plugin-replicator": "2.33.9-dev.7d11f506",
26
- "@dxos/protocols": "2.33.9-dev.7d11f506",
27
- "@dxos/random-access-multi-storage": "2.33.9-dev.7d11f506",
28
- "@dxos/util": "2.33.9-dev.7d11f506",
16
+ "@dxos/async": "2.33.9-dev.b6f4ca19",
17
+ "@dxos/codec-protobuf": "2.33.9-dev.b6f4ca19",
18
+ "@dxos/credentials": "2.33.9-dev.b6f4ca19",
19
+ "@dxos/crypto": "2.33.9-dev.b6f4ca19",
20
+ "@dxos/debug": "2.33.9-dev.b6f4ca19",
21
+ "@dxos/echo-protocol": "2.33.9-dev.b6f4ca19",
22
+ "@dxos/feed-store": "2.33.9-dev.b6f4ca19",
23
+ "@dxos/mesh-protocol": "2.33.9-dev.b6f4ca19",
24
+ "@dxos/model-factory": "2.33.9-dev.b6f4ca19",
25
+ "@dxos/network-manager": "2.33.9-dev.b6f4ca19",
26
+ "@dxos/object-model": "2.33.9-dev.b6f4ca19",
27
+ "@dxos/protocol-plugin-presence": "2.33.9-dev.b6f4ca19",
28
+ "@dxos/protocol-plugin-replicator": "2.33.9-dev.b6f4ca19",
29
+ "@dxos/protocols": "2.33.9-dev.b6f4ca19",
30
+ "@dxos/random-access-multi-storage": "2.33.9-dev.b6f4ca19",
31
+ "@dxos/util": "2.33.9-dev.b6f4ca19",
32
+ "assert": "^2.0.0",
29
33
  "base-x": "~3.0.9",
30
34
  "buffer-json-encoding": "^1.0.2",
31
35
  "debug": "^4.3.3",
@@ -2,7 +2,7 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
5
+ import assert from 'node:assert';
6
6
 
7
7
  import { Event, ReadOnlyEvent } from '@dxos/async';
8
8
 
package/src/echo.test.ts CHANGED
@@ -2,10 +2,10 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
7
6
  import expect from 'expect';
8
7
  import { it as test } from 'mocha';
8
+ import assert from 'node:assert';
9
9
 
10
10
  import { latch, promiseTimeout, waitForCondition } from '@dxos/async';
11
11
  import {
@@ -374,7 +374,7 @@ describe('ECHO', () => {
374
374
 
375
375
  }).timeout(10_000);
376
376
 
377
- test.skip('3 devices', async () => {
377
+ test('3 devices', async () => {
378
378
  const a = await setup({ createProfile: true });
379
379
  const b = await setup();
380
380
 
package/src/echo.ts CHANGED
@@ -2,9 +2,9 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
7
6
  import memdown from 'memdown';
7
+ import assert from 'node:assert';
8
8
 
9
9
  import { synchronized } from '@dxos/async';
10
10
  import { Keyring, KeyStore, SecretProvider } from '@dxos/credentials';
@@ -2,8 +2,8 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import {
9
9
  createDeviceInfoMessage,
@@ -2,7 +2,7 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
5
+ import assert from 'node:assert';
6
6
 
7
7
  import { Event, synchronized } from '@dxos/async';
8
8
  import { timed } from '@dxos/debug';
package/src/halo/halo.ts CHANGED
@@ -2,8 +2,8 @@
2
2
  // Copyright 2021 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { synchronized } from '@dxos/async';
9
9
  import { KeyRecord, Keyring, KeyType, SecretProvider } from '@dxos/credentials';
@@ -2,8 +2,8 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { Event, synchronized, waitForCondition } from '@dxos/async';
9
9
  import { Filter, KeyRecord, Keyring, KeyType, SecretProvider } from '@dxos/credentials';
@@ -2,8 +2,8 @@
2
2
  // Copyright 2021 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { Filter, KeyChain, KeyRecord, Keyring, KeyType, SignedMessage, Signer } from '@dxos/credentials';
9
9
  import { failUndefined } from '@dxos/debug';
@@ -2,9 +2,9 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import stableStringify from 'json-stable-stringify';
7
6
  import defaultsDeep from 'lodash.defaultsdeep';
7
+ import assert from 'node:assert';
8
8
 
9
9
  import { Event } from '@dxos/async';
10
10
  import { raise } from '@dxos/debug';
@@ -2,8 +2,8 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { waitForEvent } from '@dxos/async';
9
9
  import {
@@ -2,8 +2,8 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { Event, waitForCondition } from '@dxos/async';
9
9
  import {
@@ -2,8 +2,8 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { waitForEvent } from '@dxos/async';
9
9
  import {
@@ -2,9 +2,9 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import base from 'base-x';
7
6
  import stableStringify from 'json-stable-stringify';
7
+ import assert from 'node:assert';
8
8
 
9
9
  import { ripemd160 } from '@dxos/crypto';
10
10
  import { SwarmKey } from '@dxos/echo-protocol';
@@ -2,7 +2,7 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
5
+ import assert from 'node:assert';
6
6
 
7
7
  import { createPartyInvitationMessage, Message as HaloMessage } from '@dxos/credentials';
8
8
  import { FeedWriter } from '@dxos/echo-protocol';
@@ -2,8 +2,8 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { waitForEvent } from '@dxos/async';
9
9
  import {
@@ -2,8 +2,8 @@
2
2
  // Copyright 2021 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { failUndefined } from '@dxos/debug';
9
9
  import { DataService } from '@dxos/echo-protocol';
@@ -2,8 +2,8 @@
2
2
  // Copyright 2021 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { Stream } from '@dxos/codec-protobuf';
9
9
  import { failUndefined, raise } from '@dxos/debug';
@@ -2,8 +2,8 @@
2
2
  // Copyright 2021 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { Stream } from '@dxos/codec-protobuf';
9
9
  import { raise } from '@dxos/debug';
@@ -2,8 +2,8 @@
2
2
  // Copyright 2021 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { DatabaseSnapshot, DataService, EchoEnvelope, FeedWriter, PartyKey } from '@dxos/echo-protocol';
9
9
  import { ModelFactory } from '@dxos/model-factory';
@@ -2,7 +2,7 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
5
+ import assert from 'node:assert';
6
6
 
7
7
  import { Event, synchronized } from '@dxos/async';
8
8
  import { ItemID, ItemType } from '@dxos/echo-protocol';
@@ -2,8 +2,8 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { Event } from '@dxos/async';
9
9
  import { failUndefined } from '@dxos/debug';
@@ -2,8 +2,8 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { Event, trigger } from '@dxos/async';
9
9
  import { createId } from '@dxos/crypto';
@@ -2,7 +2,7 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
5
+ import assert from 'node:assert';
6
6
 
7
7
  import { ItemID, ItemType } from '@dxos/echo-protocol';
8
8
  import { Model, StateManager } from '@dxos/model-factory';
@@ -2,7 +2,7 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
5
+ import assert from 'node:assert';
6
6
 
7
7
  import { Event } from '@dxos/async';
8
8
 
@@ -2,7 +2,7 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
5
+ import assert from 'node:assert';
6
6
 
7
7
  import { synchronized, Event } from '@dxos/async';
8
8
  import { timed } from '@dxos/debug';
@@ -2,8 +2,8 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import {
9
9
  createEnvelopeMessage,
@@ -4,10 +4,10 @@
4
4
 
5
5
  /* eslint-disable jest/no-conditional-expect */
6
6
 
7
- import assert from 'assert';
8
7
  import debug from 'debug';
9
8
  import expect from 'expect';
10
9
  import { it as test } from 'mocha';
10
+ import assert from 'node:assert';
11
11
 
12
12
  import { latch } from '@dxos/async';
13
13
  import {
@@ -2,9 +2,9 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
7
6
  import unionWith from 'lodash.unionwith';
7
+ import assert from 'node:assert';
8
8
 
9
9
  import { Event, synchronized } from '@dxos/async';
10
10
  import { SecretProvider } from '@dxos/credentials';
@@ -2,7 +2,7 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
5
+ import assert from 'node:assert';
6
6
 
7
7
  import { PARTY_TITLE_PROPERTY, DataParty } from '.';
8
8
  import { Preferences } from '../halo/preferences';
@@ -2,8 +2,8 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { Event } from '@dxos/async';
9
9
  import { Message as HaloMessage } from '@dxos/credentials';
@@ -2,8 +2,8 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { MessageSelector } from '@dxos/echo-protocol';
9
9
 
@@ -2,8 +2,8 @@
2
2
  // Copyright 2021 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { synchronized } from '@dxos/async';
9
9
  import { failUndefined } from '@dxos/debug';
@@ -2,8 +2,8 @@
2
2
  // Copyright 2021 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { Event, synchronized } from '@dxos/async';
9
9
  import { Keyring, KeyType } from '@dxos/credentials';
@@ -2,7 +2,7 @@
2
2
  // Copyright 2021 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
5
+ import assert from 'node:assert';
6
6
 
7
7
  import { synchronized } from '@dxos/async';
8
8
  import { KeyType, Message as HaloMessage } from '@dxos/credentials';
@@ -2,8 +2,8 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { Event } from '@dxos/async';
9
9
  import {
@@ -5,21 +5,18 @@
5
5
  import expect from 'expect';
6
6
  import { it as test } from 'mocha';
7
7
 
8
- import { createAuthMessage, createKeyAdmitMessage, createPartyGenesisMessage, Keyring, KeyType } from '@dxos/credentials';
8
+ import { createAuthMessage, createEnvelopeMessage, createFeedAdmitMessage, createKeyAdmitMessage, createPartyGenesisMessage, Keyring, KeyType, wrapMessage } from '@dxos/credentials';
9
9
 
10
10
  import { PartyProcessor } from '../pipeline';
11
11
  import { createAuthenticator } from './authenticator';
12
- import { CredentialsSigner } from './credentials-signer';
12
+ import { createTestIdentityCredentials } from './identity-credentials';
13
13
 
14
14
  describe('authenticator', () => {
15
- // TODO(dmaretskyi): Figure out how credentials work and if this test makes sense.
16
- test.skip('authenticates admitted peer', async () => {
15
+ test('authenticates party creator', async () => {
17
16
  const keyring = new Keyring();
17
+ const identity = await createTestIdentityCredentials(keyring);
18
18
  const partyKey = await keyring.createKeyRecord({ type: KeyType.PARTY });
19
- const identityKey = await keyring.createKeyRecord({ type: KeyType.IDENTITY });
20
- const deviceKey = await keyring.createKeyRecord({ type: KeyType.DEVICE });
21
- const feedKey = await keyring.createKeyRecord({ type: KeyType.FEED });
22
- const signer = CredentialsSigner.createDirectDeviceSigner(keyring);
19
+ const feedKey = await keyring.createKeyRecord({ type: KeyType.PARTY });
23
20
 
24
21
  const partyProcessor = new PartyProcessor(partyKey.publicKey);
25
22
  await partyProcessor.processMessage({
@@ -27,16 +24,106 @@ describe('authenticator', () => {
27
24
  keyring,
28
25
  partyKey,
29
26
  feedKey.publicKey,
30
- identityKey
27
+ partyKey
31
28
  ),
32
29
  meta: {} as any
33
30
  });
31
+ await partyProcessor.processMessage({
32
+ data: createEnvelopeMessage(
33
+ identity.keyring,
34
+ partyKey.publicKey,
35
+ wrapMessage(identity.identityGenesis),
36
+ [partyKey]
37
+ ),
38
+ meta: {} as any
39
+ });
40
+ await partyProcessor.processMessage({
41
+ data: createFeedAdmitMessage(
42
+ keyring,
43
+ partyKey.publicKey,
44
+ feedKey.publicKey,
45
+ [identity.deviceKeyChain]
46
+ ),
47
+ meta: {} as any
48
+ });
49
+
50
+ const authenticator = createAuthenticator(partyProcessor, identity.createCredentialsSigner(), null as any);
51
+
52
+ //
53
+ // This test follows the same party creation routing as party factory.
54
+ // Oddly, it does not admit the device key to the party.
55
+ // This means that authentication is actually done using the signature created using the feed key.
56
+ //
57
+
58
+ // Does not authenticate without the feed key.
59
+ {
60
+ const credential = createAuthMessage(
61
+ keyring,
62
+ partyKey.publicKey,
63
+ identity.identityKey,
64
+ identity.deviceKey
65
+ );
66
+ expect(await authenticator.authenticate(credential.payload)).toEqual(false);
67
+ }
68
+
69
+ // Does authenticate with the feed key.
70
+ {
71
+ const credential = createAuthMessage(
72
+ keyring,
73
+ partyKey.publicKey,
74
+ identity.identityKey,
75
+ identity.deviceKey,
76
+ feedKey.publicKey
77
+ );
78
+ expect(await authenticator.authenticate(credential.payload)).toEqual(true);
79
+ }
80
+ });
81
+
82
+ test('authenticates another identity', async () => {
83
+ const keyring = new Keyring();
84
+ const identity = await createTestIdentityCredentials(keyring);
85
+ const partyKey = await keyring.createKeyRecord({ type: KeyType.PARTY });
86
+ const feedKey = await keyring.createKeyRecord({ type: KeyType.PARTY });
87
+
88
+ const partyProcessor = new PartyProcessor(partyKey.publicKey);
89
+ await partyProcessor.processMessage({
90
+ data: createPartyGenesisMessage(
91
+ keyring,
92
+ partyKey,
93
+ feedKey.publicKey,
94
+ partyKey
95
+ ),
96
+ meta: {} as any
97
+ });
98
+ await partyProcessor.processMessage({
99
+ data: createEnvelopeMessage(
100
+ identity.keyring,
101
+ partyKey.publicKey,
102
+ wrapMessage(identity.identityGenesis),
103
+ [partyKey]
104
+ ),
105
+ meta: {} as any
106
+ });
107
+ await partyProcessor.processMessage({
108
+ data: createFeedAdmitMessage(
109
+ keyring,
110
+ partyKey.publicKey,
111
+ feedKey.publicKey,
112
+ [identity.deviceKeyChain]
113
+ ),
114
+ meta: {} as any
115
+ });
116
+
117
+ const authenticator = createAuthenticator(partyProcessor, identity.createCredentialsSigner(), null as any);
118
+
119
+ const identity2 = await createTestIdentityCredentials(keyring);
120
+
34
121
  await partyProcessor.processMessage({
35
122
  data: createKeyAdmitMessage(
36
123
  keyring,
37
124
  partyKey.publicKey,
38
- identityKey,
39
- [partyKey, identityKey]
125
+ identity2.identityKey,
126
+ [identity.deviceKeyChain]
40
127
  ),
41
128
  meta: {} as any
42
129
  });
@@ -44,20 +131,18 @@ describe('authenticator', () => {
44
131
  data: createKeyAdmitMessage(
45
132
  keyring,
46
133
  partyKey.publicKey,
47
- deviceKey,
48
- [identityKey, deviceKey]
134
+ identity2.deviceKey,
135
+ [identity.deviceKeyChain]
49
136
  ),
50
137
  meta: {} as any
51
138
  });
52
139
 
53
- const authenticator = createAuthenticator(partyProcessor, signer, null as any);
54
140
  const credential = createAuthMessage(
55
141
  keyring,
56
142
  partyKey.publicKey,
57
- identityKey,
58
- deviceKey
143
+ identity2.identityKey,
144
+ identity2.deviceKey
59
145
  );
60
-
61
146
  expect(await authenticator.authenticate(credential.payload)).toEqual(true);
62
147
  });
63
148
  });
@@ -2,8 +2,8 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { schema, PartyKey, PartySnapshot } from '@dxos/echo-protocol';
9
9
  import { PublicKey } from '@dxos/protocols';
@@ -2,7 +2,7 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
5
+ import assert from 'node:assert';
6
6
 
7
7
  import { Model } from '@dxos/model-factory';
8
8
  import { ObjectModel } from '@dxos/object-model';