@enbox/dwn-server 0.0.2 → 0.0.3

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 (146) hide show
  1. package/README.md +13 -13
  2. package/dist/esm/src/config.d.ts +2 -6
  3. package/dist/esm/src/config.d.ts.map +1 -1
  4. package/dist/esm/src/config.js +4 -8
  5. package/dist/esm/src/config.js.map +1 -1
  6. package/dist/esm/src/connection/connection-manager.d.ts +9 -9
  7. package/dist/esm/src/connection/connection-manager.d.ts.map +1 -1
  8. package/dist/esm/src/connection/connection-manager.js +5 -3
  9. package/dist/esm/src/connection/connection-manager.js.map +1 -1
  10. package/dist/esm/src/connection/socket-connection.d.ts +18 -17
  11. package/dist/esm/src/connection/socket-connection.d.ts.map +1 -1
  12. package/dist/esm/src/connection/socket-connection.js +26 -35
  13. package/dist/esm/src/connection/socket-connection.js.map +1 -1
  14. package/dist/esm/src/dwn-error.js.map +1 -1
  15. package/dist/esm/src/dwn-server.d.ts +5 -6
  16. package/dist/esm/src/dwn-server.d.ts.map +1 -1
  17. package/dist/esm/src/dwn-server.js +3 -14
  18. package/dist/esm/src/dwn-server.js.map +1 -1
  19. package/dist/esm/src/http-api.d.ts +9 -11
  20. package/dist/esm/src/http-api.d.ts.map +1 -1
  21. package/dist/esm/src/http-api.js +450 -375
  22. package/dist/esm/src/http-api.js.map +1 -1
  23. package/dist/esm/src/json-rpc-handlers/dwn/process-message.d.ts.map +1 -1
  24. package/dist/esm/src/json-rpc-handlers/dwn/process-message.js +3 -3
  25. package/dist/esm/src/json-rpc-handlers/dwn/process-message.js.map +1 -1
  26. package/dist/esm/src/json-rpc-handlers/subscription/close.d.ts.map +1 -1
  27. package/dist/esm/src/json-rpc-handlers/subscription/close.js.map +1 -1
  28. package/dist/esm/src/json-rpc-socket.d.ts +1 -1
  29. package/dist/esm/src/json-rpc-socket.d.ts.map +1 -1
  30. package/dist/esm/src/json-rpc-socket.js +1 -1
  31. package/dist/esm/src/json-rpc-socket.js.map +1 -1
  32. package/dist/esm/src/lib/json-rpc-router.d.ts +3 -4
  33. package/dist/esm/src/lib/json-rpc-router.d.ts.map +1 -1
  34. package/dist/esm/src/lib/json-rpc-router.js.map +1 -1
  35. package/dist/esm/src/lib/json-rpc.d.ts.map +1 -1
  36. package/dist/esm/src/lib/json-rpc.js.map +1 -1
  37. package/dist/esm/src/main.js +0 -0
  38. package/dist/esm/src/metrics.d.ts +1 -1
  39. package/dist/esm/src/metrics.js.map +1 -1
  40. package/dist/esm/src/registration/proof-of-work-manager.d.ts +1 -1
  41. package/dist/esm/src/registration/proof-of-work-manager.d.ts.map +1 -1
  42. package/dist/esm/src/registration/proof-of-work-manager.js +3 -3
  43. package/dist/esm/src/registration/proof-of-work-manager.js.map +1 -1
  44. package/dist/esm/src/registration/registration-manager.d.ts +3 -3
  45. package/dist/esm/src/registration/registration-manager.d.ts.map +1 -1
  46. package/dist/esm/src/registration/registration-manager.js +6 -6
  47. package/dist/esm/src/registration/registration-manager.js.map +1 -1
  48. package/dist/esm/src/registration/registration-store.d.ts +1 -1
  49. package/dist/esm/src/registration/registration-store.d.ts.map +1 -1
  50. package/dist/esm/src/registration/registration-store.js.map +1 -1
  51. package/dist/esm/src/storage.d.ts +2 -2
  52. package/dist/esm/src/storage.d.ts.map +1 -1
  53. package/dist/esm/src/storage.js +5 -4
  54. package/dist/esm/src/storage.js.map +1 -1
  55. package/dist/esm/src/web5-connect/sql-ttl-cache.d.ts.map +1 -1
  56. package/dist/esm/src/web5-connect/sql-ttl-cache.js +3 -2
  57. package/dist/esm/src/web5-connect/sql-ttl-cache.js.map +1 -1
  58. package/dist/esm/src/web5-connect/web5-connect-server.d.ts.map +1 -1
  59. package/dist/esm/src/web5-connect/web5-connect-server.js +2 -2
  60. package/dist/esm/src/web5-connect/web5-connect-server.js.map +1 -1
  61. package/dist/esm/src/ws-api.d.ts +2 -4
  62. package/dist/esm/src/ws-api.d.ts.map +1 -1
  63. package/dist/esm/src/ws-api.js +6 -17
  64. package/dist/esm/src/ws-api.js.map +1 -1
  65. package/dist/esm/tests/common-scenario-validator.d.ts.map +1 -1
  66. package/dist/esm/tests/common-scenario-validator.js +2 -3
  67. package/dist/esm/tests/common-scenario-validator.js.map +1 -1
  68. package/dist/esm/tests/connection/connection-manager.spec.js +11 -9
  69. package/dist/esm/tests/connection/connection-manager.spec.js.map +1 -1
  70. package/dist/esm/tests/connection/socket-connection.spec.js +40 -18
  71. package/dist/esm/tests/connection/socket-connection.spec.js.map +1 -1
  72. package/dist/esm/tests/cors/http-api.browser.js +1 -1
  73. package/dist/esm/tests/cors/http-api.browser.js.map +1 -1
  74. package/dist/esm/tests/dwn-process-message.spec.js +4 -4
  75. package/dist/esm/tests/dwn-process-message.spec.js.map +1 -1
  76. package/dist/esm/tests/dwn-server.spec.js +8 -9
  77. package/dist/esm/tests/dwn-server.spec.js.map +1 -1
  78. package/dist/esm/tests/http-api.spec.js +92 -85
  79. package/dist/esm/tests/http-api.spec.js.map +1 -1
  80. package/dist/esm/tests/json-rpc-socket.spec.js +11 -9
  81. package/dist/esm/tests/json-rpc-socket.spec.js.map +1 -1
  82. package/dist/esm/tests/plugins/data-store-sqlite.d.ts +2 -2
  83. package/dist/esm/tests/plugins/data-store-sqlite.js +2 -2
  84. package/dist/esm/tests/plugins/event-log-sqlite.d.ts +2 -2
  85. package/dist/esm/tests/plugins/event-log-sqlite.js +2 -2
  86. package/dist/esm/tests/plugins/event-stream-in-memory.d.ts +2 -2
  87. package/dist/esm/tests/plugins/event-stream-in-memory.d.ts.map +1 -1
  88. package/dist/esm/tests/plugins/event-stream-in-memory.js +1 -1
  89. package/dist/esm/tests/plugins/event-stream-in-memory.js.map +1 -1
  90. package/dist/esm/tests/plugins/message-store-sqlite.d.ts +2 -2
  91. package/dist/esm/tests/plugins/message-store-sqlite.d.ts.map +1 -1
  92. package/dist/esm/tests/plugins/message-store-sqlite.js +2 -2
  93. package/dist/esm/tests/plugins/message-store-sqlite.js.map +1 -1
  94. package/dist/esm/tests/plugins/resumable-task-store-sqlite.d.ts +2 -2
  95. package/dist/esm/tests/plugins/resumable-task-store-sqlite.d.ts.map +1 -1
  96. package/dist/esm/tests/plugins/resumable-task-store-sqlite.js +2 -2
  97. package/dist/esm/tests/plugins/resumable-task-store-sqlite.js.map +1 -1
  98. package/dist/esm/tests/process-handler.spec.js +6 -6
  99. package/dist/esm/tests/process-handler.spec.js.map +1 -1
  100. package/dist/esm/tests/registration/proof-of-work-manager.spec.js +3 -4
  101. package/dist/esm/tests/registration/proof-of-work-manager.spec.js.map +1 -1
  102. package/dist/esm/tests/rpc-subscribe-close.spec.js +1 -1
  103. package/dist/esm/tests/rpc-subscribe-close.spec.js.map +1 -1
  104. package/dist/esm/tests/scenarios/dynamic-plugin-loading.spec.js +11 -10
  105. package/dist/esm/tests/scenarios/dynamic-plugin-loading.spec.js.map +1 -1
  106. package/dist/esm/tests/scenarios/registration.spec.js +16 -12
  107. package/dist/esm/tests/scenarios/registration.spec.js.map +1 -1
  108. package/dist/esm/tests/scenarios/web5-connect.spec.js +12 -8
  109. package/dist/esm/tests/scenarios/web5-connect.spec.js.map +1 -1
  110. package/dist/esm/tests/test-dwn.d.ts.map +1 -1
  111. package/dist/esm/tests/test-dwn.js +9 -15
  112. package/dist/esm/tests/test-dwn.js.map +1 -1
  113. package/dist/esm/tests/utils.d.ts +3 -6
  114. package/dist/esm/tests/utils.d.ts.map +1 -1
  115. package/dist/esm/tests/utils.js +9 -18
  116. package/dist/esm/tests/utils.js.map +1 -1
  117. package/dist/esm/tests/ws-api.spec.js +28 -23
  118. package/dist/esm/tests/ws-api.spec.js.map +1 -1
  119. package/package.json +25 -44
  120. package/src/config.ts +15 -19
  121. package/src/connection/connection-manager.ts +18 -12
  122. package/src/connection/socket-connection.ts +52 -57
  123. package/src/dwn-error.ts +2 -2
  124. package/src/dwn-server.ts +17 -30
  125. package/src/http-api.ts +499 -396
  126. package/src/json-rpc-handlers/dwn/process-message.ts +9 -10
  127. package/src/json-rpc-handlers/subscription/close.ts +4 -4
  128. package/src/json-rpc-socket.ts +3 -2
  129. package/src/lib/json-rpc-router.ts +5 -6
  130. package/src/lib/json-rpc.ts +6 -6
  131. package/src/metrics.ts +7 -7
  132. package/src/process-handlers.ts +5 -5
  133. package/src/registration/proof-of-work-manager.ts +11 -10
  134. package/src/registration/registration-manager.ts +23 -21
  135. package/src/registration/registration-store.ts +8 -7
  136. package/src/storage.ts +15 -13
  137. package/src/web5-connect/sql-ttl-cache.ts +5 -4
  138. package/src/web5-connect/web5-connect-server.ts +9 -8
  139. package/src/ws-api.ts +11 -26
  140. package/dist/cjs/index.js +0 -6811
  141. package/dist/cjs/package.json +0 -1
  142. package/dist/esm/src/lib/http-server-shutdown-handler.d.ts +0 -10
  143. package/dist/esm/src/lib/http-server-shutdown-handler.d.ts.map +0 -1
  144. package/dist/esm/src/lib/http-server-shutdown-handler.js +0 -65
  145. package/dist/esm/src/lib/http-server-shutdown-handler.js.map +0 -1
  146. package/src/lib/http-server-shutdown-handler.ts +0 -79
@@ -1,20 +1,22 @@
1
- import { DataStream, Message, TestDataGenerator } from '@enbox/dwn-sdk-js';
2
- import { expect } from 'chai';
3
1
  import { base64url } from 'multiformats/bases/base64';
2
+ import { expect } from 'chai';
4
3
  import { useFakeTimers } from 'sinon';
5
4
  import { v4 as uuidv4 } from 'uuid';
6
- import { createJsonRpcRequest, createJsonRpcSubscriptionRequest, JsonRpcErrorCodes, } from '../src/lib/json-rpc.js';
5
+ import { DataStream, Message, TestDataGenerator } from '@enbox/dwn-sdk-js';
7
6
  import { config } from '../src/config.js';
8
- import { WsApi } from '../src/ws-api.js';
9
7
  import { getTestDwn } from './test-dwn.js';
10
- import { createRecordsWriteMessage, sendWsMessage, sendHttpMessage } from './utils.js';
11
8
  import { HttpApi } from '../src/http-api.js';
12
9
  import { JsonRpcSocket } from '../src/json-rpc-socket.js';
10
+ import { WsApi } from '../src/ws-api.js';
11
+ import { createJsonRpcRequest, createJsonRpcSubscriptionRequest, JsonRpcErrorCodes, } from '../src/lib/json-rpc.js';
12
+ import { createRecordsWriteMessage, sendHttpMessage, sendWsMessage } from './utils.js';
13
13
  describe('websocket api', function () {
14
14
  let httpApi;
15
15
  let wsApi;
16
16
  let dwn;
17
17
  let clock;
18
+ let wsUrl;
19
+ let httpUrl;
18
20
  before(() => {
19
21
  clock = useFakeTimers({ shouldAdvanceTime: true });
20
22
  });
@@ -24,8 +26,11 @@ describe('websocket api', function () {
24
26
  beforeEach(async function () {
25
27
  dwn = await getTestDwn({ withEvents: true });
26
28
  httpApi = await HttpApi.create(config, dwn);
27
- await httpApi.start(9002);
28
- wsApi = new WsApi(httpApi.server, dwn);
29
+ await httpApi.start(0);
30
+ const port = httpApi.server.port;
31
+ wsUrl = `ws://127.0.0.1:${port}`;
32
+ httpUrl = `http://localhost:${port}`;
33
+ wsApi = new WsApi(httpApi, dwn);
29
34
  wsApi.start();
30
35
  });
31
36
  afterEach(async function () {
@@ -34,13 +39,13 @@ describe('websocket api', function () {
34
39
  await dwn.close();
35
40
  });
36
41
  it('returns an error response if no request payload is provided', async function () {
37
- const data = await sendWsMessage('ws://127.0.0.1:9002', Buffer.from(''));
42
+ const data = await sendWsMessage(wsUrl, Buffer.from(''));
38
43
  const resp = JSON.parse(data.toString());
39
44
  expect(resp.error.code).to.equal(JsonRpcErrorCodes.BadRequest);
40
45
  expect(resp.error.message).to.equal('request payload required.');
41
46
  });
42
47
  it('returns an error response if parsing dwn request fails', async function () {
43
- const data = await sendWsMessage('ws://127.0.0.1:9002', Buffer.from('@#$%^&*&%$#'));
48
+ const data = await sendWsMessage(wsUrl, Buffer.from('@#$%^&*&%$#'));
44
49
  const resp = JSON.parse(data.toString());
45
50
  expect(resp.error.code).to.equal(JsonRpcErrorCodes.BadRequest);
46
51
  expect(resp.error.message).to.include('JSON');
@@ -56,7 +61,7 @@ describe('websocket api', function () {
56
61
  target: alice.did,
57
62
  encodedData,
58
63
  });
59
- const connection = await JsonRpcSocket.connect('ws://127.0.0.1:9002');
64
+ const connection = await JsonRpcSocket.connect(wsUrl);
60
65
  const response = await connection.request(dwnRequest);
61
66
  expect(response.id).to.equal(requestId);
62
67
  expect(response.error).to.not.be.undefined;
@@ -81,7 +86,7 @@ describe('websocket api', function () {
81
86
  message: message,
82
87
  target: alice.did,
83
88
  });
84
- const connection = await JsonRpcSocket.connect('ws://127.0.0.1:9002');
89
+ const connection = await JsonRpcSocket.connect(wsUrl);
85
90
  const { response, close } = await connection.subscribe(dwnRequest, (response) => {
86
91
  const { event } = response.result;
87
92
  subscriptionHandler(event);
@@ -95,7 +100,7 @@ describe('websocket api', function () {
95
100
  dataFormat: 'text/plain'
96
101
  });
97
102
  const writeResult1 = await sendHttpMessage({
98
- url: 'http://localhost:9002',
103
+ url: httpUrl,
99
104
  target: alice.did,
100
105
  message: write1Message.message,
101
106
  data: write1Message.dataBytes,
@@ -107,7 +112,7 @@ describe('websocket api', function () {
107
112
  dataFormat: 'text/plain'
108
113
  });
109
114
  const writeResult2 = await sendHttpMessage({
110
- url: 'http://localhost:9002',
115
+ url: httpUrl,
111
116
  target: alice.did,
112
117
  message: write2Message.message,
113
118
  data: write2Message.dataBytes,
@@ -140,7 +145,7 @@ describe('websocket api', function () {
140
145
  message: message,
141
146
  target: alice.did,
142
147
  }, subscribeId);
143
- const connection = await JsonRpcSocket.connect('ws://127.0.0.1:9002');
148
+ const connection = await JsonRpcSocket.connect(wsUrl);
144
149
  const { response, close } = await connection.subscribe(dwnRequest, (response) => {
145
150
  const { event } = response.result;
146
151
  subscriptionHandler(event);
@@ -154,7 +159,7 @@ describe('websocket api', function () {
154
159
  dataFormat: 'text/plain'
155
160
  });
156
161
  const writeResult1 = await sendHttpMessage({
157
- url: 'http://localhost:9002',
162
+ url: httpUrl,
158
163
  target: alice.did,
159
164
  message: write1Message.message,
160
165
  data: write1Message.dataBytes,
@@ -169,7 +174,7 @@ describe('websocket api', function () {
169
174
  dataFormat: 'text/plain'
170
175
  });
171
176
  const writeResult2 = await sendHttpMessage({
172
- url: 'http://localhost:9002',
177
+ url: httpUrl,
173
178
  target: alice.did,
174
179
  message: write2Message.message,
175
180
  data: write2Message.dataBytes,
@@ -181,7 +186,7 @@ describe('websocket api', function () {
181
186
  dataFormat: 'text/plain'
182
187
  });
183
188
  const writeResult3 = await sendHttpMessage({
184
- url: 'http://localhost:9002',
189
+ url: httpUrl,
185
190
  target: alice.did,
186
191
  message: write3Message.message,
187
192
  data: write3Message.dataBytes,
@@ -209,7 +214,7 @@ describe('websocket api', function () {
209
214
  message: message,
210
215
  target: alice.did
211
216
  }, subscribeId);
212
- const connection = await JsonRpcSocket.connect('ws://127.0.0.1:9002');
217
+ const connection = await JsonRpcSocket.connect(wsUrl);
213
218
  const { close } = await connection.subscribe(dwnRequest, (response) => {
214
219
  const { event } = response.result;
215
220
  subscriptionHandler(event);
@@ -233,7 +238,7 @@ describe('websocket api', function () {
233
238
  dataFormat: 'text/plain'
234
239
  });
235
240
  const writeResult1 = await sendHttpMessage({
236
- url: 'http://localhost:9002',
241
+ url: httpUrl,
237
242
  target: alice.did,
238
243
  message: write1Message.message,
239
244
  data: write1Message.dataBytes,
@@ -245,7 +250,7 @@ describe('websocket api', function () {
245
250
  dataFormat: 'text/plain'
246
251
  });
247
252
  const writeResult2 = await sendHttpMessage({
248
- url: 'http://localhost:9002',
253
+ url: httpUrl,
249
254
  target: alice.did,
250
255
  message: write2Message.message,
251
256
  data: write2Message.dataBytes,
@@ -268,7 +273,7 @@ describe('websocket api', function () {
268
273
  dataFormat: 'text/plain'
269
274
  });
270
275
  const writeResult1 = await sendHttpMessage({
271
- url: 'http://localhost:9002',
276
+ url: httpUrl,
272
277
  target: alice.did,
273
278
  message: initialWrite.message,
274
279
  data: initialWrite.dataBytes,
@@ -295,7 +300,7 @@ describe('websocket api', function () {
295
300
  message: message,
296
301
  target: alice.did
297
302
  }, subscribeId);
298
- const connection = await JsonRpcSocket.connect('ws://127.0.0.1:9002');
303
+ const connection = await JsonRpcSocket.connect(wsUrl);
299
304
  const { close } = await connection.subscribe(dwnRequest, (response) => {
300
305
  const { event } = response.result;
301
306
  subscriptionHandler(event);
@@ -309,7 +314,7 @@ describe('websocket api', function () {
309
314
  existingWrite: initialWrite.recordsWrite,
310
315
  });
311
316
  const updateResult = await sendHttpMessage({
312
- url: 'http://localhost:9002',
317
+ url: httpUrl,
313
318
  target: alice.did,
314
319
  message: updatedMessage.message,
315
320
  data: updatedMessage.dataBytes,
@@ -1 +1 @@
1
- {"version":3,"file":"ws-api.spec.js","sourceRoot":"","sources":["../../../tests/ws-api.spec.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EACL,oBAAoB,EACpB,gCAAgC,EAChC,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D,QAAQ,CAAC,eAAe,EAAE;IACxB,IAAI,OAAgB,CAAC;IACrB,IAAI,KAAY,CAAC;IACjB,IAAI,GAAQ,CAAC;IACb,IAAI,KAAsB,CAAC;IAE3B,MAAM,CAAC,GAAG,EAAE;QACV,KAAK,GAAG,aAAa,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,GAAG,EAAE;QACT,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,KAAK;QACd,GAAG,GAAG,MAAM,UAAU,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,OAAO,GAAI,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7C,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACvC,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK;QACb,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK;QACrE,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,qBAAqB,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC/D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK;QAChE,MAAM,IAAI,GAAG,MAAM,aAAa,CAC9B,qBAAqB,EACrB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAC3B,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC/D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK;QACjD,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,qBAAqB,EAAE,CAAC;QAE9D,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,MAAM,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAEpD,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,oBAAoB,CAAC,SAAS,EAAE,oBAAoB,EAAE;YACvE,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE;YAC9B,MAAM,EAAE,KAAK,CAAC,GAAG;YACjB,WAAW;SACZ,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;QAC3C,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACtE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,qBAAqB,EAAE,CAAC;QAE9D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,iBAAiB,CAAC,wBAAwB,CAAC;YACnE,MAAM,EAAE,KAAK;YACb,MAAM,EAAE;gBACN,MAAM,EAAE,SAAS;aAClB;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,mBAAmB,GAAG,KAAK,EAAE,KAAmB,EAAiB,EAAE;YACvE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;YACzB,OAAO,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,gCAAgC,CAAC,SAAS,EAAE,kCAAkC,EAAE;YACjG,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,KAAK,CAAC,GAAG;SAClB,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACtE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;YAC9E,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;YAClC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QACvC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxD,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;QAElC,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,oBAAoB,CAAC;YACjE,MAAM,EAAO,KAAK;YAClB,MAAM,EAAO,SAAS;YACtB,UAAU,EAAG,YAAY;SAC1B,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC;YACzC,GAAG,EAAS,uBAAuB;YACnC,MAAM,EAAM,KAAK,CAAC,GAAG;YACrB,OAAO,EAAK,aAAa,CAAC,OAAO;YACjC,IAAI,EAAQ,aAAa,CAAC,SAAS;SACpC,CAAC,CAAC;QACH,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE/C,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,oBAAoB,CAAC;YACjE,MAAM,EAAO,KAAK;YAClB,MAAM,EAAO,SAAS;YACtB,UAAU,EAAG,YAAY;SAC1B,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC;YACzC,GAAG,EAAS,uBAAuB;YACnC,MAAM,EAAM,KAAK,CAAC,GAAG;YACrB,OAAO,EAAK,aAAa,CAAC,OAAO;YACjC,IAAI,EAAQ,aAAa,CAAC,SAAS;SACpC,CAAC,CAAA;QACF,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE/C,yBAAyB;QACzB,MAAM,KAAK,EAAE,CAAC;QAEd,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC;QACzF,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;YAC9B,MAAM,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;YAC3C,MAAM,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;SAC5C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,qBAAqB,EAAE,CAAC;QAE9D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,iBAAiB,CAAC,wBAAwB,CAAC;YACnE,MAAM,EAAE,KAAK;YACb,MAAM,EAAE;gBACN,MAAM,EAAE,SAAS;aAClB;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,mBAAmB,GAAG,KAAK,EAAE,KAAmB,EAAiB,EAAE;YACvE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,gCAAgC,CAAC,SAAS,EAAE,kCAAkC,EAAE;YACjG,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,KAAK,CAAC,GAAG;SAClB,EAAE,WAAW,CAAC,CAAC;QAEhB,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACtE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;YAC9E,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;YAClC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QACvC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxD,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;QAElC,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,oBAAoB,CAAC;YACjE,MAAM,EAAO,KAAK;YAClB,MAAM,EAAO,SAAS;YACtB,UAAU,EAAG,YAAY;SAC1B,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC;YACzC,GAAG,EAAS,uBAAuB;YACnC,MAAM,EAAM,KAAK,CAAC,GAAG;YACrB,OAAO,EAAK,aAAa,CAAC,OAAO;YACjC,IAAI,EAAQ,aAAa,CAAC,SAAS;SACpC,CAAC,CAAC;QACH,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE/C,8CAA8C;QAC9C,MAAM,KAAK,EAAE,CAAC;QAEd,6DAA6D;QAC7D,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,oBAAoB,CAAC;YACjE,MAAM,EAAO,KAAK;YAClB,MAAM,EAAO,SAAS;YACtB,UAAU,EAAG,YAAY;SAC1B,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC;YACzC,GAAG,EAAS,uBAAuB;YACnC,MAAM,EAAM,KAAK,CAAC,GAAG;YACrB,OAAO,EAAK,aAAa,CAAC,OAAO;YACjC,IAAI,EAAQ,aAAa,CAAC,SAAS;SACpC,CAAC,CAAA;QACF,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE/C,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,oBAAoB,CAAC;YACjE,MAAM,EAAO,KAAK;YAClB,MAAM,EAAO,SAAS;YACtB,UAAU,EAAG,YAAY;SAC1B,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC;YACzC,GAAG,EAAS,uBAAuB;YACnC,MAAM,EAAM,KAAK,CAAC,GAAG;YACrB,OAAO,EAAK,aAAa,CAAC,OAAO;YACjC,IAAI,EAAQ,aAAa,CAAC,SAAS;SACpC,CAAC,CAAA;QACF,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE/C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC;QACzF,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAE,MAAM,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAE,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2GAA2G,EAAE,KAAK,IAAI,EAAE;QACzH,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,qBAAqB,EAAE,CAAC;QAE9D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,iBAAiB,CAAC,wBAAwB,CAAC;YACnE,MAAM,EAAE,KAAK;YACb,MAAM,EAAE;gBACN,MAAM,EAAE,SAAS;aAClB;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,mBAAmB,GAAG,KAAK,EAAE,KAAmB,EAAiB,EAAE;YACvE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;YACzB,OAAO,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,gCAAgC,CAAC,SAAS,EAAE,kCAAkC,EAAE;YACjG,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,KAAK,CAAC,GAAG;SAClB,EAAE,WAAW,CAAC,CAAC;QAEhB,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACtE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;YACpE,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;YAClC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,iBAAiB,CAAC,wBAAwB,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAEjI,6DAA6D;QAC7D,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,gCAAgC,CAAC,UAAU,EAAE,kCAAkC,EAAE;YACnG,OAAO,EAAE,QAAQ;YACjB,MAAM,EAAE,KAAK,CAAC,GAAG;SAClB,EAAE,WAAW,CAAC,CAAC;QAEhB,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,EAAE;YACnF,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;YAClC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACvE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,WAAW,sCAAsC,CAAC,CAAC;QAEjG,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,oBAAoB,CAAC;YACjE,MAAM,EAAO,KAAK;YAClB,MAAM,EAAO,SAAS;YACtB,UAAU,EAAG,YAAY;SAC1B,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC;YACzC,GAAG,EAAS,uBAAuB;YACnC,MAAM,EAAM,KAAK,CAAC,GAAG;YACrB,OAAO,EAAK,aAAa,CAAC,OAAO;YACjC,IAAI,EAAQ,aAAa,CAAC,SAAS;SACpC,CAAC,CAAC;QACH,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE/C,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,oBAAoB,CAAC;YACjE,MAAM,EAAO,KAAK;YAClB,MAAM,EAAO,SAAS;YACtB,UAAU,EAAG,YAAY;SAC1B,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC;YACzC,GAAG,EAAS,uBAAuB;YACnC,MAAM,EAAM,KAAK,CAAC,GAAG;YACrB,OAAO,EAAK,aAAa,CAAC,OAAO;YACjC,IAAI,EAAQ,aAAa,CAAC,SAAS;SACpC,CAAC,CAAA;QACF,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE/C,yBAAyB;QACzB,MAAM,KAAK,EAAE,CAAC;QAEd,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC;QACzF,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;YAC9B,MAAM,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;YAC3C,MAAM,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;SAC5C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6FAA6F,EAAE,KAAK,IAAI,EAAE;QAC3G,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,qBAAqB,EAAE,CAAC;QAE9D,2BAA2B;QAC3B,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,oBAAoB,CAAC;YAChE,MAAM,EAAO,KAAK;YAClB,MAAM,EAAO,SAAS;YACtB,UAAU,EAAG,YAAY;SAC1B,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC;YACzC,GAAG,EAAS,uBAAuB;YACnC,MAAM,EAAM,KAAK,CAAC,GAAG;YACrB,OAAO,EAAK,YAAY,CAAC,OAAO;YAChC,IAAI,EAAQ,YAAY,CAAC,SAAS;SACnC,CAAC,CAAC;QACH,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE/C,kCAAkC;QAClC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,iBAAiB,CAAC,wBAAwB,CAAC;YACnE,MAAM,EAAE,KAAK;YACb,MAAM,EAAE;gBACN,MAAM,EAAE,SAAS;aAClB;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,mBAAmB,GAAG,KAAK,EAAE,KAAmB,EAAiB,EAAE;YACvE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,KAAK,CAAA;YACvC,IAAI,YAAY,EAAG,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,gCAAgC,CAAC,SAAS,EAAE,kCAAkC,EAAE;YACjG,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,KAAK,CAAC,GAAG;SAClB,EAAE,WAAW,CAAC,CAAC;QAEhB,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACtE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;YACpE,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;YAClC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,8FAA8F;QAC9F,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE1C,6BAA6B;QAC7B,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,wBAAwB,CAAC;YACtE,MAAM,EAAU,KAAK;YACrB,aAAa,EAAG,YAAY,CAAC,YAAY;SAC1C,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC;YACzC,GAAG,EAAS,uBAAuB;YACnC,MAAM,EAAM,KAAK,CAAC,GAAG;YACrB,OAAO,EAAK,cAAc,CAAC,OAAO;YAClC,IAAI,EAAQ,cAAc,CAAC,SAAS;SACrC,CAAC,CAAC;QACH,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE/C,MAAM,KAAK,EAAE,CAAC;QAEd,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC;QAEzF,2CAA2C;QAC3C,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;YAC9B,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC;YAC1C,MAAM,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;SAC7C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"ws-api.spec.js","sourceRoot":"","sources":["../../../tests/ws-api.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,17 +1,16 @@
1
1
  {
2
2
  "name": "@enbox/dwn-server",
3
3
  "type": "module",
4
- "version": "0.0.2",
4
+ "version": "0.0.3",
5
5
  "files": [
6
6
  "dist",
7
7
  "src"
8
8
  ],
9
- "main": "./dist/cjs/index.js",
9
+ "main": "./dist/esm/src/index.js",
10
10
  "module": "./dist/esm/src/index.js",
11
11
  "exports": {
12
12
  ".": {
13
- "import": "./dist/esm/src/index.js",
14
- "require": "./dist/cjs/index.js"
13
+ "import": "./dist/esm/src/index.js"
15
14
  }
16
15
  },
17
16
  "bin": {
@@ -30,50 +29,39 @@
30
29
  "access": "public"
31
30
  },
32
31
  "dependencies": {
33
- "better-sqlite3": "^8.5.0",
34
- "body-parser": "^1.20.2",
32
+ "@enbox/common": "workspace:*",
33
+ "@enbox/crypto": "workspace:*",
34
+ "@enbox/dids": "workspace:*",
35
+ "@enbox/dwn-sdk-js": "workspace:*",
36
+ "@enbox/dwn-sql-store": "workspace:*",
35
37
  "bytes": "3.1.2",
36
- "cors": "2.8.5",
37
- "express": "^4.20.0",
38
38
  "kysely": "^0.26.3",
39
39
  "loglevel": "^1.8.1",
40
40
  "loglevel-plugin-prefix": "^0.8.4",
41
- "multiformats": "11.0.2",
42
41
  "mysql2": "^3.9.7",
43
- "node-fetch": "3.3.1",
44
42
  "pg": "^8.11.2",
45
43
  "pg-cursor": "^2.10.2",
46
44
  "prom-client": "14.2.0",
47
- "readable-stream": "4.4.2",
48
- "response-time": "2.3.2",
49
45
  "uuid": "9.0.0",
50
- "ws": "8.18.0",
51
- "@enbox/common": "0.0.2",
52
- "@enbox/crypto": "0.0.2",
53
- "@enbox/dwn-sdk-js": "0.0.2",
54
- "@enbox/dwn-sql-store": "0.0.2",
55
- "@enbox/dids": "0.0.2"
46
+ "ws": "8.18.0"
56
47
  },
57
48
  "devDependencies": {
49
+ "@types/bun": "^1.3.9",
58
50
  "@types/bytes": "3.1.1",
59
51
  "@types/chai": "4.3.4",
60
52
  "@types/chai-as-promised": "7.1.5",
61
- "@types/express": "4.17.21",
62
53
  "@types/mocha": "10.0.1",
63
54
  "@types/node": "18.11.18",
64
- "@types/readable-stream": "4.0.6",
65
55
  "@types/sinon": "17.0.3",
66
- "@types/supertest": "2.0.12",
67
56
  "@types/ws": "8.5.10",
68
- "@typescript-eslint/eslint-plugin": "^7.8.0",
69
- "@typescript-eslint/parser": "^7.8.0",
57
+ "@typescript-eslint/eslint-plugin": "8.32.1",
58
+ "@typescript-eslint/parser": "8.32.1",
70
59
  "c8": "8.0.1",
71
60
  "chai": "4.3.6",
72
61
  "chai-as-promised": "7.1.1",
73
62
  "crypto-browserify": "^3.12.0",
74
63
  "esbuild": "0.16.17",
75
- "eslint": "8.56.0",
76
- "eslint-plugin-import": "^2.29.1",
64
+ "eslint": "9.7.0",
77
65
  "eslint-plugin-mocha": "^10.4.3",
78
66
  "eslint-plugin-todo-plz": "^1.3.0",
79
67
  "http-proxy": "^1.18.1",
@@ -84,12 +72,20 @@
84
72
  "karma-mocha": "^2.0.1",
85
73
  "lint-staged": "^15.2.9",
86
74
  "mocha": "^10.2.0",
75
+ "multiformats": "11.0.2",
87
76
  "puppeteer": "^22.11.2",
88
77
  "rimraf": "^5.0.0",
89
78
  "sinon": "17.0.1",
90
- "stream-browserify": "^3.0.0",
91
- "supertest": "6.3.3",
92
- "typescript": "^5.1.6"
79
+ "typescript": "5.5.4"
80
+ },
81
+ "scripts": {
82
+ "build:esm": "bun run clean && tsc",
83
+ "build": "bun run clean && bun run build:esm",
84
+ "clean": "rimraf dist && rimraf generated/*",
85
+ "lint": "eslint . --max-warnings 0",
86
+ "lint:fix": "eslint . --fix",
87
+ "test": "bun run build:esm && cp -R tests/fixtures dist/esm/tests && bunx --bun mocha",
88
+ "server": "bun run build:esm && bun dist/esm/src/main.js"
93
89
  },
94
90
  "husky": {
95
91
  "hooks": {
@@ -100,20 +96,5 @@
100
96
  "*.{js,ts}": [
101
97
  "eslint --fix"
102
98
  ]
103
- },
104
- "overrides": {
105
- "express": {
106
- "serve-static": "^1.16.2"
107
- }
108
- },
109
- "scripts": {
110
- "build:esm": "pnpm clean & tsc",
111
- "build:cjs": "pnpm build:esm && node build/create-cjs-bundle.cjs && echo '{\"type\": \"commonjs\"}' > ./dist/cjs/package.json",
112
- "build": "pnpm clean && pnpm build:esm && pnpm build:cjs",
113
- "clean": "rimraf dist && rimraf generated/*",
114
- "lint": "eslint . --ext .ts --max-warnings 0",
115
- "lint:fix": "eslint . --ext .ts --fix",
116
- "test": "pnpm build:esm && cp -R tests/fixtures dist/esm/tests && c8 mocha",
117
- "server": "pnpm build:esm && node dist/esm/src/main.js"
118
99
  }
119
- }
100
+ }
package/src/config.ts CHANGED
@@ -5,11 +5,8 @@ export type DwnServerConfig = typeof config;
5
5
  export const config = {
6
6
  /**
7
7
  * Used to populate the `server` property returned by the `/info` endpoint.
8
- *
9
- * If running using `npm` the `process.env.npm_package_name` variable exists and we use that,
10
- * otherwise we fall back on the use defined `DWN_SERVER_PACKAGE_NAME` or `@enbox/dwn-server`.
11
8
  */
12
- serverName: process.env.npm_package_name || process.env.DWN_SERVER_PACKAGE_NAME || '@enbox/dwn-server',
9
+ serverName: process.env.DWN_SERVER_PACKAGE_NAME || '@enbox/dwn-server',
13
10
 
14
11
  /**
15
12
  * The base external URL of this DWN.
@@ -26,7 +23,7 @@ export const config = {
26
23
  /**
27
24
  * The URL of the TTL cache used by the DWN.
28
25
  * NOTE: Used for session/state keeping, thus requires the cache to be commonly addressable by nodes in a cloud cluster environment.
29
- *
26
+ *
30
27
  * Currently only supports SQL databases, e.g.
31
28
  * Postgres: 'postgres://root:dwn@localhost:5432/dwn'
32
29
  * MySQL: 'mysql://root:dwn@localhost:3306/dwn'
@@ -37,13 +34,12 @@ export const config = {
37
34
  * Used to populate the `version` and `sdkVersion` properties returned by the `/info` endpoint.
38
35
  *
39
36
  * The `version` and `sdkVersion` are pulled from `package.json` at runtime.
40
- * If running using `npm` the `process.env.npm_package_json` variable exists as the filepath, so we use that.
41
- * Otherwise we check to see if a specific `DWN_SERVER_PACKAGE_JSON` exists, if it does we use that.
42
- * Finally if both of those options don't exist we resort to the path within the docker server image, located at `/dwn-server/package.json`
37
+ * If `DWN_SERVER_PACKAGE_JSON` is set, we use that path.
38
+ * Otherwise we resort to the path within the docker server image, located at `/dwn-server/package.json`.
43
39
  */
44
- packageJsonPath: process.env.npm_package_json || process.env.DWN_SERVER_PACKAGE_JSON || '/dwn-server/package.json',
40
+ packageJsonPath : process.env.DWN_SERVER_PACKAGE_JSON || '/dwn-server/package.json',
45
41
  // max size of data that can be provided with a RecordsWrite
46
- maxRecordDataSize: bytes(process.env.MAX_RECORD_DATA_SIZE || '1gb'),
42
+ maxRecordDataSize : bytes(process.env.MAX_RECORD_DATA_SIZE || '1gb'),
47
43
 
48
44
  // whether to enable 'ws:'
49
45
  webSocketSupport: { on: true, off: false }[process.env.DS_WEBSOCKET_SERVER] ?? true,
@@ -54,17 +50,17 @@ export const config = {
54
50
  eventStreamPluginPath: process.env.DWN_EVENT_STREAM_PLUGIN_PATH,
55
51
 
56
52
  // where to store persistent data
57
- messageStore: process.env.DWN_STORAGE_MESSAGES || process.env.DWN_STORAGE || 'level://data',
58
- dataStore: process.env.DWN_STORAGE_DATA || process.env.DWN_STORAGE || 'level://data',
59
- eventLog: process.env.DWN_STORAGE_EVENTS || process.env.DWN_STORAGE || 'level://data',
60
- resumableTaskStore: process.env.DWN_STORAGE_RESUMABLE_TASKS || process.env.DWN_STORAGE || 'level://data',
53
+ messageStore : process.env.DWN_STORAGE_MESSAGES || process.env.DWN_STORAGE || 'level://data',
54
+ dataStore : process.env.DWN_STORAGE_DATA || process.env.DWN_STORAGE || 'level://data',
55
+ eventLog : process.env.DWN_STORAGE_EVENTS || process.env.DWN_STORAGE || 'level://data',
56
+ resumableTaskStore : process.env.DWN_STORAGE_RESUMABLE_TASKS || process.env.DWN_STORAGE || 'level://data',
61
57
 
62
58
  // tenant registration feature configuration
63
- registrationStoreUrl: process.env.DWN_REGISTRATION_STORE_URL || process.env.DWN_STORAGE,
64
- registrationProofOfWorkSeed: process.env.DWN_REGISTRATION_PROOF_OF_WORK_SEED,
65
- registrationProofOfWorkEnabled: process.env.DWN_REGISTRATION_PROOF_OF_WORK_ENABLED === 'true',
66
- registrationProofOfWorkInitialMaxHash: process.env.DWN_REGISTRATION_PROOF_OF_WORK_INITIAL_MAX_HASH,
67
- termsOfServiceFilePath: process.env.DWN_TERMS_OF_SERVICE_FILE_PATH,
59
+ registrationStoreUrl : process.env.DWN_REGISTRATION_STORE_URL || process.env.DWN_STORAGE,
60
+ registrationProofOfWorkSeed : process.env.DWN_REGISTRATION_PROOF_OF_WORK_SEED,
61
+ registrationProofOfWorkEnabled : process.env.DWN_REGISTRATION_PROOF_OF_WORK_ENABLED === 'true',
62
+ registrationProofOfWorkInitialMaxHash : process.env.DWN_REGISTRATION_PROOF_OF_WORK_INITIAL_MAX_HASH,
63
+ termsOfServiceFilePath : process.env.DWN_TERMS_OF_SERVICE_FILE_PATH,
68
64
 
69
65
  // log level - trace/debug/info/warn/error
70
66
  logLevel: process.env.DWN_SERVER_LOG_LEVEL || 'INFO',
@@ -1,39 +1,45 @@
1
- import type { Dwn } from "@enbox/dwn-sdk-js";
1
+ import type { Dwn } from '@enbox/dwn-sdk-js';
2
+ import type { ServerWebSocket } from 'bun';
2
3
 
3
- import type { IncomingMessage } from "http";
4
- import type { WebSocket } from 'ws';
4
+ import type { WsData } from '../http-api.js';
5
5
 
6
- import { SocketConnection } from "./socket-connection.js";
6
+ import { SocketConnection } from './socket-connection.js';
7
7
 
8
8
  /**
9
9
  * Interface for managing `WebSocket` connections as they arrive.
10
10
  */
11
11
  export interface ConnectionManager {
12
- /** connect handler used for the `WebSockets` `'connection'` event. */
13
- connect(socket: WebSocket, request?: IncomingMessage): Promise<void>;
12
+ /** connect handler invoked when a new WebSocket connection is established. */
13
+ connect(socket: ServerWebSocket<WsData>): Promise<void>;
14
14
  /** closes all of the connections */
15
15
  closeAll(): Promise<void>
16
16
  }
17
17
 
18
18
  /**
19
19
  * A Simple In Memory ConnectionManager implementation.
20
- * It uses a `Map<WebSocket, SocketConnection>` to manage connections.
20
+ * It uses a `Map<ServerWebSocket, SocketConnection>` to manage connections.
21
21
  */
22
22
  export class InMemoryConnectionManager implements ConnectionManager {
23
- constructor(private dwn: Dwn, private connections: Map<WebSocket, SocketConnection> = new Map()) {}
23
+ constructor(
24
+ private dwn: Dwn,
25
+ private connections: Map<ServerWebSocket<WsData>, SocketConnection> = new Map()
26
+ ) {}
24
27
 
25
- async connect(socket: WebSocket): Promise<void> {
28
+ async connect(socket: ServerWebSocket<WsData>): Promise<void> {
26
29
  const connection = new SocketConnection(socket, this.dwn, () => {
27
30
  // this is the onClose handler to clean up any closed connections.
28
31
  this.connections.delete(socket);
29
32
  });
30
33
 
34
+ // Attach the connection to the ws.data so Bun's websocket handlers can delegate to it.
35
+ socket.data.connection = connection;
36
+
31
37
  this.connections.set(socket, connection);
32
38
  }
33
39
 
34
40
  async closeAll(): Promise<void> {
35
- const closePromises = [];
36
- this.connections.forEach(connection => closePromises.push(connection.close()));
41
+ const closePromises: Promise<void>[] = [];
42
+ this.connections.forEach((connection) => closePromises.push(connection.close()));
37
43
  await Promise.all(closePromises);
38
44
  }
39
- }
45
+ }