@enbox/dwn-server 0.0.2 → 0.0.4
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/LICENSE +3 -2
- package/README.md +115 -215
- package/dist/esm/src/admin/activity-log.d.ts +44 -0
- package/dist/esm/src/admin/activity-log.d.ts.map +1 -0
- package/dist/esm/src/admin/activity-log.js +85 -0
- package/dist/esm/src/admin/activity-log.js.map +1 -0
- package/dist/esm/src/admin/admin-api.d.ts +61 -0
- package/dist/esm/src/admin/admin-api.d.ts.map +1 -0
- package/dist/esm/src/admin/admin-api.js +1047 -0
- package/dist/esm/src/admin/admin-api.js.map +1 -0
- package/dist/esm/src/admin/admin-auth.d.ts +9 -0
- package/dist/esm/src/admin/admin-auth.d.ts.map +1 -0
- package/dist/esm/src/admin/admin-auth.js +45 -0
- package/dist/esm/src/admin/admin-auth.js.map +1 -0
- package/dist/esm/src/admin/admin-store.d.ts +111 -0
- package/dist/esm/src/admin/admin-store.d.ts.map +1 -0
- package/dist/esm/src/admin/admin-store.js +376 -0
- package/dist/esm/src/admin/admin-store.js.map +1 -0
- package/dist/esm/src/admin/audit-log.d.ts +94 -0
- package/dist/esm/src/admin/audit-log.d.ts.map +1 -0
- package/dist/esm/src/admin/audit-log.js +220 -0
- package/dist/esm/src/admin/audit-log.js.map +1 -0
- package/dist/esm/src/admin/index.d.ts +10 -0
- package/dist/esm/src/admin/index.d.ts.map +1 -0
- package/dist/esm/src/admin/index.js +7 -0
- package/dist/esm/src/admin/index.js.map +1 -0
- package/dist/esm/src/admin/types.d.ts +306 -0
- package/dist/esm/src/admin/types.d.ts.map +1 -0
- package/dist/esm/src/admin/types.js +2 -0
- package/dist/esm/src/admin/types.js.map +1 -0
- package/dist/esm/src/admin/webhook-manager.d.ts +55 -0
- package/dist/esm/src/admin/webhook-manager.d.ts.map +1 -0
- package/dist/esm/src/admin/webhook-manager.js +184 -0
- package/dist/esm/src/admin/webhook-manager.js.map +1 -0
- package/dist/esm/src/config.d.ts +124 -9
- package/dist/esm/src/config.d.ts.map +1 -1
- package/dist/esm/src/config.js +155 -13
- package/dist/esm/src/config.js.map +1 -1
- package/dist/esm/src/connection/connection-manager.d.ts +32 -9
- package/dist/esm/src/connection/connection-manager.d.ts.map +1 -1
- package/dist/esm/src/connection/connection-manager.js +38 -5
- package/dist/esm/src/connection/connection-manager.js.map +1 -1
- package/dist/esm/src/connection/flow-controller.d.ts +53 -0
- package/dist/esm/src/connection/flow-controller.d.ts.map +1 -0
- package/dist/esm/src/connection/flow-controller.js +101 -0
- package/dist/esm/src/connection/flow-controller.js.map +1 -0
- package/dist/esm/src/connection/socket-connection.d.ts +54 -18
- package/dist/esm/src/connection/socket-connection.d.ts.map +1 -1
- package/dist/esm/src/connection/socket-connection.js +102 -40
- package/dist/esm/src/connection/socket-connection.js.map +1 -1
- package/dist/esm/src/delivery-service.d.ts +43 -0
- package/dist/esm/src/delivery-service.d.ts.map +1 -0
- package/dist/esm/src/delivery-service.js +574 -0
- package/dist/esm/src/delivery-service.js.map +1 -0
- package/dist/esm/src/dwn-error.d.ts +10 -1
- package/dist/esm/src/dwn-error.d.ts.map +1 -1
- package/dist/esm/src/dwn-error.js +9 -0
- package/dist/esm/src/dwn-error.js.map +1 -1
- package/dist/esm/src/dwn-server.d.ts +13 -6
- package/dist/esm/src/dwn-server.d.ts.map +1 -1
- package/dist/esm/src/dwn-server.js +199 -24
- package/dist/esm/src/dwn-server.js.map +1 -1
- package/dist/esm/src/http-api.d.ts +28 -13
- package/dist/esm/src/http-api.d.ts.map +1 -1
- package/dist/esm/src/http-api.js +649 -374
- package/dist/esm/src/http-api.js.map +1 -1
- package/dist/esm/src/index.d.ts +6 -2
- package/dist/esm/src/index.d.ts.map +1 -1
- package/dist/esm/src/index.js +4 -1
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/json-rpc-api.js +2 -1
- package/dist/esm/src/json-rpc-api.js.map +1 -1
- package/dist/esm/src/json-rpc-handlers/dwn/process-message.d.ts.map +1 -1
- package/dist/esm/src/json-rpc-handlers/dwn/process-message.js +109 -7
- package/dist/esm/src/json-rpc-handlers/dwn/process-message.js.map +1 -1
- package/dist/esm/src/json-rpc-handlers/subscription/ack.d.ts +20 -0
- package/dist/esm/src/json-rpc-handlers/subscription/ack.d.ts.map +1 -0
- package/dist/esm/src/json-rpc-handlers/subscription/ack.js +41 -0
- package/dist/esm/src/json-rpc-handlers/subscription/ack.js.map +1 -0
- package/dist/esm/src/json-rpc-handlers/subscription/close.d.ts.map +1 -1
- package/dist/esm/src/json-rpc-handlers/subscription/close.js +1 -1
- package/dist/esm/src/json-rpc-handlers/subscription/close.js.map +1 -1
- package/dist/esm/src/json-rpc-handlers/subscription/index.d.ts +1 -0
- package/dist/esm/src/json-rpc-handlers/subscription/index.d.ts.map +1 -1
- package/dist/esm/src/json-rpc-handlers/subscription/index.js +1 -0
- package/dist/esm/src/json-rpc-handlers/subscription/index.js.map +1 -1
- package/dist/esm/src/lib/json-rpc-router.d.ts +25 -8
- package/dist/esm/src/lib/json-rpc-router.d.ts.map +1 -1
- package/dist/esm/src/lib/json-rpc-router.js.map +1 -1
- package/dist/esm/src/lib/sql-utils.d.ts +6 -0
- package/dist/esm/src/lib/sql-utils.d.ts.map +1 -0
- package/dist/esm/src/lib/sql-utils.js +8 -0
- package/dist/esm/src/lib/sql-utils.js.map +1 -0
- package/dist/esm/src/main.js +0 -6
- package/dist/esm/src/main.js.map +1 -1
- package/dist/esm/src/message-processed-hook.d.ts +35 -0
- package/dist/esm/src/message-processed-hook.d.ts.map +1 -0
- package/dist/esm/src/message-processed-hook.js +2 -0
- package/dist/esm/src/message-processed-hook.js.map +1 -0
- package/dist/esm/src/metrics.d.ts +14 -2
- package/dist/esm/src/metrics.d.ts.map +1 -1
- package/dist/esm/src/metrics.js +41 -1
- package/dist/esm/src/metrics.js.map +1 -1
- package/dist/esm/src/plugins/event-log-nats.d.ts +25 -0
- package/dist/esm/src/plugins/event-log-nats.d.ts.map +1 -0
- package/dist/esm/src/plugins/event-log-nats.js +379 -0
- package/dist/esm/src/plugins/event-log-nats.js.map +1 -0
- package/dist/esm/src/rate-limiter.d.ts +60 -0
- package/dist/esm/src/rate-limiter.d.ts.map +1 -0
- package/dist/esm/src/rate-limiter.js +116 -0
- package/dist/esm/src/rate-limiter.js.map +1 -0
- package/dist/esm/src/registration/jwt-provider-auth-plugin.d.ts +53 -0
- package/dist/esm/src/registration/jwt-provider-auth-plugin.d.ts.map +1 -0
- package/dist/esm/src/registration/jwt-provider-auth-plugin.js +90 -0
- package/dist/esm/src/registration/jwt-provider-auth-plugin.js.map +1 -0
- package/dist/esm/src/registration/open-auth-handler.d.ts +37 -0
- package/dist/esm/src/registration/open-auth-handler.d.ts.map +1 -0
- package/dist/esm/src/registration/open-auth-handler.js +214 -0
- package/dist/esm/src/registration/open-auth-handler.js.map +1 -0
- package/dist/esm/src/registration/proof-of-work-manager.d.ts +1 -1
- package/dist/esm/src/registration/proof-of-work-manager.d.ts.map +1 -1
- package/dist/esm/src/registration/proof-of-work-manager.js +3 -3
- package/dist/esm/src/registration/proof-of-work-manager.js.map +1 -1
- package/dist/esm/src/registration/provider-auth-plugin.d.ts +46 -0
- package/dist/esm/src/registration/provider-auth-plugin.d.ts.map +1 -0
- package/dist/esm/src/registration/provider-auth-plugin.js +29 -0
- package/dist/esm/src/registration/provider-auth-plugin.js.map +1 -0
- package/dist/esm/src/registration/registration-manager.d.ts +28 -5
- package/dist/esm/src/registration/registration-manager.d.ts.map +1 -1
- package/dist/esm/src/registration/registration-manager.js +83 -12
- package/dist/esm/src/registration/registration-manager.js.map +1 -1
- package/dist/esm/src/registration/registration-store.d.ts +83 -3
- package/dist/esm/src/registration/registration-store.d.ts.map +1 -1
- package/dist/esm/src/registration/registration-store.js +248 -11
- package/dist/esm/src/registration/registration-store.js.map +1 -1
- package/dist/esm/src/storage.d.ts +5 -5
- package/dist/esm/src/storage.d.ts.map +1 -1
- package/dist/esm/src/storage.js +105 -24
- package/dist/esm/src/storage.js.map +1 -1
- package/dist/esm/src/web5-connect/sql-ttl-cache.d.ts.map +1 -1
- package/dist/esm/src/web5-connect/sql-ttl-cache.js +11 -3
- package/dist/esm/src/web5-connect/sql-ttl-cache.js.map +1 -1
- package/dist/esm/src/web5-connect/web5-connect-server.d.ts.map +1 -1
- package/dist/esm/src/web5-connect/web5-connect-server.js +2 -2
- package/dist/esm/src/web5-connect/web5-connect-server.js.map +1 -1
- package/dist/esm/src/ws-api.d.ts +18 -4
- package/dist/esm/src/ws-api.d.ts.map +1 -1
- package/dist/esm/src/ws-api.js +12 -16
- package/dist/esm/src/ws-api.js.map +1 -1
- package/package.json +34 -53
- package/src/admin/activity-log.ts +100 -0
- package/src/admin/admin-api.ts +1308 -0
- package/src/admin/admin-auth.ts +56 -0
- package/src/admin/admin-store.ts +515 -0
- package/src/admin/audit-log.ts +327 -0
- package/src/admin/index.ts +34 -0
- package/src/admin/types.ts +352 -0
- package/src/admin/webhook-manager.ts +245 -0
- package/src/config.ts +190 -22
- package/src/connection/connection-manager.ts +67 -17
- package/src/connection/flow-controller.ts +117 -0
- package/src/connection/socket-connection.ts +144 -67
- package/src/delivery-service.ts +740 -0
- package/src/dwn-error.ts +11 -2
- package/src/dwn-server.ts +254 -39
- package/src/http-api.ts +736 -392
- package/src/index.ts +13 -2
- package/src/json-rpc-api.ts +2 -1
- package/src/json-rpc-handlers/dwn/process-message.ts +149 -15
- package/src/json-rpc-handlers/subscription/ack.ts +63 -0
- package/src/json-rpc-handlers/subscription/close.ts +5 -9
- package/src/json-rpc-handlers/subscription/index.ts +1 -0
- package/src/lib/json-rpc-router.ts +26 -11
- package/src/lib/sql-utils.ts +7 -0
- package/src/main.ts +0 -8
- package/src/message-processed-hook.ts +33 -0
- package/src/metrics.ts +57 -8
- package/src/plugins/event-log-nats.ts +466 -0
- package/src/process-handlers.ts +5 -5
- package/src/rate-limiter.ts +143 -0
- package/src/registration/jwt-provider-auth-plugin.ts +119 -0
- package/src/registration/open-auth-handler.ts +263 -0
- package/src/registration/proof-of-work-manager.ts +11 -10
- package/src/registration/provider-auth-plugin.ts +84 -0
- package/src/registration/registration-manager.ts +129 -31
- package/src/registration/registration-store.ts +332 -22
- package/src/storage.ts +136 -40
- package/src/web5-connect/sql-ttl-cache.ts +12 -5
- package/src/web5-connect/web5-connect-server.ts +9 -8
- package/src/ws-api.ts +39 -26
- package/dist/cjs/index.js +0 -6811
- package/dist/cjs/package.json +0 -1
- package/dist/esm/src/json-rpc-socket.d.ts +0 -39
- package/dist/esm/src/json-rpc-socket.d.ts.map +0 -1
- package/dist/esm/src/json-rpc-socket.js +0 -125
- package/dist/esm/src/json-rpc-socket.js.map +0 -1
- package/dist/esm/src/lib/http-server-shutdown-handler.d.ts +0 -10
- package/dist/esm/src/lib/http-server-shutdown-handler.d.ts.map +0 -1
- package/dist/esm/src/lib/http-server-shutdown-handler.js +0 -65
- package/dist/esm/src/lib/http-server-shutdown-handler.js.map +0 -1
- package/dist/esm/src/lib/json-rpc.d.ts +0 -54
- package/dist/esm/src/lib/json-rpc.d.ts.map +0 -1
- package/dist/esm/src/lib/json-rpc.js +0 -60
- package/dist/esm/src/lib/json-rpc.js.map +0 -1
- package/dist/esm/src/registration/proof-of-work-types.d.ts +0 -8
- package/dist/esm/src/registration/proof-of-work-types.d.ts.map +0 -1
- package/dist/esm/src/registration/proof-of-work-types.js +0 -2
- package/dist/esm/src/registration/proof-of-work-types.js.map +0 -1
- package/dist/esm/src/registration/registration-types.d.ts +0 -18
- package/dist/esm/src/registration/registration-types.d.ts.map +0 -1
- package/dist/esm/src/registration/registration-types.js +0 -2
- package/dist/esm/src/registration/registration-types.js.map +0 -1
- package/dist/esm/tests/common-scenario-validator.d.ts +0 -11
- package/dist/esm/tests/common-scenario-validator.d.ts.map +0 -1
- package/dist/esm/tests/common-scenario-validator.js +0 -114
- package/dist/esm/tests/common-scenario-validator.js.map +0 -1
- package/dist/esm/tests/connection/connection-manager.spec.d.ts +0 -2
- package/dist/esm/tests/connection/connection-manager.spec.d.ts.map +0 -1
- package/dist/esm/tests/connection/connection-manager.spec.js +0 -47
- package/dist/esm/tests/connection/connection-manager.spec.js.map +0 -1
- package/dist/esm/tests/connection/socket-connection.spec.d.ts +0 -2
- package/dist/esm/tests/connection/socket-connection.spec.d.ts.map +0 -1
- package/dist/esm/tests/connection/socket-connection.spec.js +0 -125
- package/dist/esm/tests/connection/socket-connection.spec.js.map +0 -1
- package/dist/esm/tests/cors/http-api.browser.d.ts +0 -2
- package/dist/esm/tests/cors/http-api.browser.d.ts.map +0 -1
- package/dist/esm/tests/cors/http-api.browser.js +0 -60
- package/dist/esm/tests/cors/http-api.browser.js.map +0 -1
- package/dist/esm/tests/cors/ping.browser.d.ts +0 -2
- package/dist/esm/tests/cors/ping.browser.d.ts.map +0 -1
- package/dist/esm/tests/cors/ping.browser.js +0 -7
- package/dist/esm/tests/cors/ping.browser.js.map +0 -1
- package/dist/esm/tests/dwn-process-message.spec.d.ts +0 -2
- package/dist/esm/tests/dwn-process-message.spec.d.ts.map +0 -1
- package/dist/esm/tests/dwn-process-message.spec.js +0 -172
- package/dist/esm/tests/dwn-process-message.spec.js.map +0 -1
- package/dist/esm/tests/dwn-server.spec.d.ts +0 -2
- package/dist/esm/tests/dwn-server.spec.d.ts.map +0 -1
- package/dist/esm/tests/dwn-server.spec.js +0 -49
- package/dist/esm/tests/dwn-server.spec.js.map +0 -1
- package/dist/esm/tests/http-api.spec.d.ts +0 -2
- package/dist/esm/tests/http-api.spec.d.ts.map +0 -1
- package/dist/esm/tests/http-api.spec.js +0 -775
- package/dist/esm/tests/http-api.spec.js.map +0 -1
- package/dist/esm/tests/json-rpc-socket.spec.d.ts +0 -2
- package/dist/esm/tests/json-rpc-socket.spec.d.ts.map +0 -1
- package/dist/esm/tests/json-rpc-socket.spec.js +0 -225
- package/dist/esm/tests/json-rpc-socket.spec.js.map +0 -1
- package/dist/esm/tests/plugins/data-store-sqlite.d.ts +0 -17
- package/dist/esm/tests/plugins/data-store-sqlite.d.ts.map +0 -1
- package/dist/esm/tests/plugins/data-store-sqlite.js +0 -23
- package/dist/esm/tests/plugins/data-store-sqlite.js.map +0 -1
- package/dist/esm/tests/plugins/event-log-sqlite.d.ts +0 -17
- package/dist/esm/tests/plugins/event-log-sqlite.d.ts.map +0 -1
- package/dist/esm/tests/plugins/event-log-sqlite.js +0 -23
- package/dist/esm/tests/plugins/event-log-sqlite.js.map +0 -1
- package/dist/esm/tests/plugins/event-stream-in-memory.d.ts +0 -17
- package/dist/esm/tests/plugins/event-stream-in-memory.d.ts.map +0 -1
- package/dist/esm/tests/plugins/event-stream-in-memory.js +0 -21
- package/dist/esm/tests/plugins/event-stream-in-memory.js.map +0 -1
- package/dist/esm/tests/plugins/message-store-sqlite.d.ts +0 -17
- package/dist/esm/tests/plugins/message-store-sqlite.d.ts.map +0 -1
- package/dist/esm/tests/plugins/message-store-sqlite.js +0 -23
- package/dist/esm/tests/plugins/message-store-sqlite.js.map +0 -1
- package/dist/esm/tests/plugins/resumable-task-store-sqlite.d.ts +0 -17
- package/dist/esm/tests/plugins/resumable-task-store-sqlite.d.ts.map +0 -1
- package/dist/esm/tests/plugins/resumable-task-store-sqlite.js +0 -23
- package/dist/esm/tests/plugins/resumable-task-store-sqlite.js.map +0 -1
- package/dist/esm/tests/process-handler.spec.d.ts +0 -2
- package/dist/esm/tests/process-handler.spec.d.ts.map +0 -1
- package/dist/esm/tests/process-handler.spec.js +0 -60
- package/dist/esm/tests/process-handler.spec.js.map +0 -1
- package/dist/esm/tests/registration/proof-of-work-manager.spec.d.ts +0 -2
- package/dist/esm/tests/registration/proof-of-work-manager.spec.d.ts.map +0 -1
- package/dist/esm/tests/registration/proof-of-work-manager.spec.js +0 -157
- package/dist/esm/tests/registration/proof-of-work-manager.spec.js.map +0 -1
- package/dist/esm/tests/rpc-subscribe-close.spec.d.ts +0 -2
- package/dist/esm/tests/rpc-subscribe-close.spec.d.ts.map +0 -1
- package/dist/esm/tests/rpc-subscribe-close.spec.js +0 -81
- package/dist/esm/tests/rpc-subscribe-close.spec.js.map +0 -1
- package/dist/esm/tests/scenarios/dynamic-plugin-loading.spec.d.ts +0 -2
- package/dist/esm/tests/scenarios/dynamic-plugin-loading.spec.d.ts.map +0 -1
- package/dist/esm/tests/scenarios/dynamic-plugin-loading.spec.js +0 -73
- package/dist/esm/tests/scenarios/dynamic-plugin-loading.spec.js.map +0 -1
- package/dist/esm/tests/scenarios/registration.spec.d.ts +0 -2
- package/dist/esm/tests/scenarios/registration.spec.d.ts.map +0 -1
- package/dist/esm/tests/scenarios/registration.spec.js +0 -507
- package/dist/esm/tests/scenarios/registration.spec.js.map +0 -1
- package/dist/esm/tests/scenarios/web5-connect.spec.d.ts +0 -2
- package/dist/esm/tests/scenarios/web5-connect.spec.d.ts.map +0 -1
- package/dist/esm/tests/scenarios/web5-connect.spec.js +0 -137
- package/dist/esm/tests/scenarios/web5-connect.spec.js.map +0 -1
- package/dist/esm/tests/test-dwn.d.ts +0 -7
- package/dist/esm/tests/test-dwn.d.ts.map +0 -1
- package/dist/esm/tests/test-dwn.js +0 -34
- package/dist/esm/tests/test-dwn.js.map +0 -1
- package/dist/esm/tests/utils.d.ts +0 -46
- package/dist/esm/tests/utils.d.ts.map +0 -1
- package/dist/esm/tests/utils.js +0 -116
- package/dist/esm/tests/utils.js.map +0 -1
- package/dist/esm/tests/ws-api.spec.d.ts +0 -2
- package/dist/esm/tests/ws-api.spec.d.ts.map +0 -1
- package/dist/esm/tests/ws-api.spec.js +0 -327
- package/dist/esm/tests/ws-api.spec.js.map +0 -1
- package/src/json-rpc-socket.ts +0 -155
- package/src/lib/http-server-shutdown-handler.ts +0 -79
- package/src/lib/json-rpc.ts +0 -126
- package/src/registration/proof-of-work-types.ts +0 -7
- package/src/registration/registration-types.ts +0 -18
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import fetch from 'node-fetch';
|
|
2
|
-
import sinon from 'sinon';
|
|
3
|
-
import { config } from '../../src/config.js';
|
|
4
|
-
import { DwnServer } from '../../src/dwn-server.js';
|
|
5
|
-
import { expect } from 'chai';
|
|
6
|
-
import { Poller } from '@enbox/dwn-sdk-js';
|
|
7
|
-
import { useFakeTimers } from 'sinon';
|
|
8
|
-
import { Web5ConnectServer } from '../../src/web5-connect/web5-connect-server.js';
|
|
9
|
-
import { randomUUID, webcrypto } from 'node:crypto';
|
|
10
|
-
// node.js 18 and earlier needs globalThis.crypto polyfill
|
|
11
|
-
if (!globalThis.crypto) {
|
|
12
|
-
// @ts-ignore
|
|
13
|
-
globalThis.crypto = webcrypto;
|
|
14
|
-
}
|
|
15
|
-
describe('Web5 Connect scenarios', function () {
|
|
16
|
-
const web5ConnectBaseUrl = 'http://localhost:3000';
|
|
17
|
-
let clock;
|
|
18
|
-
let dwnServer;
|
|
19
|
-
const dwnServerConfig = { ...config }; // not touching the original config
|
|
20
|
-
before(async function () {
|
|
21
|
-
// NOTE: using SQL to workaround an issue where multiple instances of DwnServer cannot be started using LevelDB in the same test run,
|
|
22
|
-
// and dwn-server.spec.ts already uses LevelDB.
|
|
23
|
-
dwnServerConfig.messageStore = 'sqlite://',
|
|
24
|
-
dwnServerConfig.dataStore = 'sqlite://',
|
|
25
|
-
dwnServerConfig.resumableTaskStore = 'sqlite://',
|
|
26
|
-
dwnServerConfig.eventLog = 'sqlite://',
|
|
27
|
-
dwnServer = new DwnServer({ config: dwnServerConfig });
|
|
28
|
-
});
|
|
29
|
-
after(async () => {
|
|
30
|
-
await dwnServer.stop();
|
|
31
|
-
});
|
|
32
|
-
beforeEach(async () => {
|
|
33
|
-
sinon.restore(); // wipe all previous stubs/spies/mocks/fakes/clock
|
|
34
|
-
// IMPORTANT: MUST be called AFTER `sinon.restore()` because `sinon.restore()` resets fake timers
|
|
35
|
-
clock = useFakeTimers({ shouldAdvanceTime: true });
|
|
36
|
-
await dwnServer.start();
|
|
37
|
-
});
|
|
38
|
-
afterEach(async () => {
|
|
39
|
-
clock.restore();
|
|
40
|
-
await dwnServer.stop();
|
|
41
|
-
});
|
|
42
|
-
it('should be able to set and get Web5 Connect Request & Response objects', async () => {
|
|
43
|
-
// Scenario:
|
|
44
|
-
// 1. App sends the Web5 Connect Request object to the Web5 Connect server.
|
|
45
|
-
// 2. Identity Provider (wallet) fetches the Web5 Connect Request object from the Web5 Connect server.
|
|
46
|
-
// 3. Should receive 404 if fetching the same Web5 Connect Request again
|
|
47
|
-
// 4. Identity Provider (wallet) should receive 400 if sending an incomplete response.
|
|
48
|
-
// 5. Identity Provider (wallet) sends the Web5 Connect Response object to the Web5 Connect server.
|
|
49
|
-
// 6. App fetches the Web5 Connect Response object from the Web5 Connect server.
|
|
50
|
-
// 7. Should receive 404 if fetching the same Web5 Connect Response object again.
|
|
51
|
-
// 1. App sends the Web5 Connect Request object to the Web5 Connect server.
|
|
52
|
-
const requestBody = { request: { dummyProperty: 'dummyValue' } };
|
|
53
|
-
const postWeb5ConnectRequestResult = await fetch(`${web5ConnectBaseUrl}/connect/par`, {
|
|
54
|
-
method: 'POST',
|
|
55
|
-
headers: { 'Content-Type': 'application/json' },
|
|
56
|
-
body: JSON.stringify(requestBody),
|
|
57
|
-
});
|
|
58
|
-
expect(postWeb5ConnectRequestResult.status).to.equal(201);
|
|
59
|
-
// 2. Identity Provider (wallet) fetches the Web5 Connect Request object from the Web5 Connect server.
|
|
60
|
-
const requestUrl = (await postWeb5ConnectRequestResult.json()).request_uri;
|
|
61
|
-
const regex = /^http:\/\/localhost:3000\/connect\/authorize\/[a-zA-Z0-9\-]{21,}\.jwt$/;
|
|
62
|
-
expect(requestUrl).to.match(regex);
|
|
63
|
-
let getWeb5ConnectRequestResult;
|
|
64
|
-
await Poller.pollUntilSuccessOrTimeout(async () => {
|
|
65
|
-
console.log('Polling for Web5 Connect Request object...');
|
|
66
|
-
getWeb5ConnectRequestResult = await fetch(requestUrl, { method: 'GET' });
|
|
67
|
-
expect(getWeb5ConnectRequestResult.status).to.equal(200);
|
|
68
|
-
});
|
|
69
|
-
const fetchedRequest = await getWeb5ConnectRequestResult.json();
|
|
70
|
-
expect(fetchedRequest).to.deep.equal(requestBody.request);
|
|
71
|
-
// 3. Should receive 404 if fetching the same Web5 Connect Request again
|
|
72
|
-
await Poller.pollUntilSuccessOrTimeout(async () => {
|
|
73
|
-
const getWeb5ConnectRequestResult2 = await fetch(requestUrl, { method: 'GET' });
|
|
74
|
-
expect(getWeb5ConnectRequestResult2.status).to.equal(404);
|
|
75
|
-
});
|
|
76
|
-
// 4. Identity Provider (wallet) should receive 400 if sending an incomplete response.
|
|
77
|
-
const incompleteResponseBody = {
|
|
78
|
-
id_token: { dummyToken: 'dummyToken' },
|
|
79
|
-
// state : 'dummyState', // intentionally missing
|
|
80
|
-
};
|
|
81
|
-
const postIncompleteWeb5ConnectResponseResult = await fetch(`${web5ConnectBaseUrl}/connect/callback`, {
|
|
82
|
-
method: 'POST',
|
|
83
|
-
headers: { 'Content-Type': 'application/json' },
|
|
84
|
-
body: JSON.stringify(incompleteResponseBody),
|
|
85
|
-
});
|
|
86
|
-
expect(postIncompleteWeb5ConnectResponseResult.status).to.equal(400);
|
|
87
|
-
const state = `dummyState-${randomUUID()}`;
|
|
88
|
-
// 5. Identity Provider (wallet) sends the Web5 Connect Response object to the Web5 Connect server.
|
|
89
|
-
const web5ConnectResponseBody = {
|
|
90
|
-
id_token: { dummyToken: 'dummyToken' },
|
|
91
|
-
state
|
|
92
|
-
};
|
|
93
|
-
const postWeb5ConnectResponseResult = await fetch(`${web5ConnectBaseUrl}/connect/callback`, {
|
|
94
|
-
method: 'POST',
|
|
95
|
-
headers: { 'Content-Type': 'application/json' },
|
|
96
|
-
body: JSON.stringify(web5ConnectResponseBody),
|
|
97
|
-
});
|
|
98
|
-
expect(postWeb5ConnectResponseResult.status).to.equal(201);
|
|
99
|
-
// 6. App fetches the Web5 Connect Response object from the Web5 Connect server.
|
|
100
|
-
const web5ConnectResponseUrl = `${web5ConnectBaseUrl}/connect/token/${web5ConnectResponseBody.state}.jwt`;
|
|
101
|
-
let getWeb5ConnectResponseResult;
|
|
102
|
-
await Poller.pollUntilSuccessOrTimeout(async () => {
|
|
103
|
-
getWeb5ConnectResponseResult = await fetch(web5ConnectResponseUrl, { method: 'GET' });
|
|
104
|
-
expect(getWeb5ConnectResponseResult.status).to.equal(200);
|
|
105
|
-
});
|
|
106
|
-
const fetchedResponse = await getWeb5ConnectResponseResult.json();
|
|
107
|
-
expect(fetchedResponse).to.deep.equal(web5ConnectResponseBody.id_token);
|
|
108
|
-
// 7. Should receive 404 if fetching the same Web5 Connect Response object again.
|
|
109
|
-
await Poller.pollUntilSuccessOrTimeout(async () => {
|
|
110
|
-
const getWeb5ConnectResponseResult2 = await fetch(web5ConnectResponseUrl, { method: 'GET' });
|
|
111
|
-
expect(getWeb5ConnectResponseResult2.status).to.equal(404);
|
|
112
|
-
});
|
|
113
|
-
});
|
|
114
|
-
it('should clean up objects that are expired', async () => {
|
|
115
|
-
// Scenario:
|
|
116
|
-
// 1. App sends the Web5 Connect Request object to the Web5 Connect server.
|
|
117
|
-
// 2. Time passes and the Web5 Connect Request object is expired.
|
|
118
|
-
// 3. Should receive 404 when fetching Web5 Connect Request.
|
|
119
|
-
// 1. App sends the Web5 Connect Request object to the Web5 Connect server.
|
|
120
|
-
const requestBody = { request: { dummyProperty: 'dummyValue' } };
|
|
121
|
-
const postWeb5ConnectRequestResult = await fetch(`${web5ConnectBaseUrl}/connect/par`, {
|
|
122
|
-
method: 'POST',
|
|
123
|
-
headers: { 'Content-Type': 'application/json' },
|
|
124
|
-
body: JSON.stringify(requestBody),
|
|
125
|
-
});
|
|
126
|
-
expect(postWeb5ConnectRequestResult.status).to.equal(201);
|
|
127
|
-
// 2. Time passes and the Web5 Connect Request object is expired.
|
|
128
|
-
await clock.tickAsync(Web5ConnectServer.ttlInSeconds * 1000);
|
|
129
|
-
// 3. Should receive 404 when fetching the expired Web5 Connect Request.
|
|
130
|
-
const requestUrl = (await postWeb5ConnectRequestResult.json()).request_uri;
|
|
131
|
-
const getWeb5ConnectRequestResult = await fetch(requestUrl, {
|
|
132
|
-
method: 'GET',
|
|
133
|
-
});
|
|
134
|
-
expect(getWeb5ConnectRequestResult.status).to.equal(404);
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
//# sourceMappingURL=web5-connect.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"web5-connect.spec.js","sourceRoot":"","sources":["../../../../tests/scenarios/web5-connect.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-dwn.d.ts","sourceRoot":"","sources":["../../../tests/test-dwn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAUpD,OAAO,EAAE,GAAG,EAAsB,MAAM,mBAAmB,CAAC;AAE5D,wBAAsB,UAAU,CAAC,OAAO,GAAE;IACxC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC,GAAG,CAAC,CA8BpB"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { getDialectFromUrl } from '../src/storage.js';
|
|
2
|
-
import { DataStoreSql, EventLogSql, MessageStoreSql, ResumableTaskStoreSql, } from '@enbox/dwn-sql-store';
|
|
3
|
-
import { DidDht, DidIon, DidKey, UniversalResolver } from '@enbox/dids';
|
|
4
|
-
import { Dwn, EventEmitterStream } from '@enbox/dwn-sdk-js';
|
|
5
|
-
export async function getTestDwn(options = {}) {
|
|
6
|
-
const { tenantGate, withEvents = false } = options;
|
|
7
|
-
const dialect = getDialectFromUrl(new URL('sqlite://'));
|
|
8
|
-
const dataStore = new DataStoreSql(dialect);
|
|
9
|
-
const eventLog = new EventLogSql(dialect);
|
|
10
|
-
const messageStore = new MessageStoreSql(dialect);
|
|
11
|
-
const resumableTaskStore = new ResumableTaskStoreSql(dialect);
|
|
12
|
-
const eventStream = withEvents ? new EventEmitterStream() : undefined;
|
|
13
|
-
// NOTE: no resolver cache used here to avoid locking LevelDB
|
|
14
|
-
const didResolver = new UniversalResolver({
|
|
15
|
-
didResolvers: [DidDht, DidIon, DidKey],
|
|
16
|
-
});
|
|
17
|
-
let dwn;
|
|
18
|
-
try {
|
|
19
|
-
dwn = await Dwn.create({
|
|
20
|
-
eventLog,
|
|
21
|
-
dataStore,
|
|
22
|
-
messageStore,
|
|
23
|
-
resumableTaskStore,
|
|
24
|
-
eventStream,
|
|
25
|
-
tenantGate,
|
|
26
|
-
didResolver
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
catch (e) {
|
|
30
|
-
throw e;
|
|
31
|
-
}
|
|
32
|
-
return dwn;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=test-dwn.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-dwn.js","sourceRoot":"","sources":["../../../tests/test-dwn.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,WAAW,EACX,eAAe,EACf,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,GAAG,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAG7B,EAAE;IACJ,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IACnD,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,kBAAkB,GAAG,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtE,6DAA6D;IAC7D,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC;QACxC,YAAY,EAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KACxC,CAAC,CAAC;IAEH,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC;YACrB,QAAQ;YACR,SAAS;YACT,YAAY;YACZ,kBAAkB;YAClB,WAAW;YACX,UAAU;YACV,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,CAAC;IACV,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import type { GenericMessage, Persona, UnionMessageReply } from '@enbox/dwn-sdk-js';
|
|
2
|
-
import type { Response } from 'node-fetch';
|
|
3
|
-
import { RecordsWrite } from '@enbox/dwn-sdk-js';
|
|
4
|
-
import fs from 'node:fs';
|
|
5
|
-
import type { Readable } from 'readable-stream';
|
|
6
|
-
export type CreateRecordsWriteOverrides = ({
|
|
7
|
-
dataCid?: string;
|
|
8
|
-
dataSize?: number;
|
|
9
|
-
dateCreated?: string;
|
|
10
|
-
published?: boolean;
|
|
11
|
-
recordId?: string;
|
|
12
|
-
protocol?: string;
|
|
13
|
-
protocolPath?: string;
|
|
14
|
-
} & {
|
|
15
|
-
data?: never;
|
|
16
|
-
}) | ({
|
|
17
|
-
dataCid?: never;
|
|
18
|
-
dataSize?: never;
|
|
19
|
-
dateCreated?: string;
|
|
20
|
-
published?: boolean;
|
|
21
|
-
recordId?: string;
|
|
22
|
-
protocol?: string;
|
|
23
|
-
protocolPath?: string;
|
|
24
|
-
} & {
|
|
25
|
-
data?: Uint8Array;
|
|
26
|
-
});
|
|
27
|
-
export type GenerateRecordsWriteOutput = {
|
|
28
|
-
recordsWrite: RecordsWrite;
|
|
29
|
-
dataStream: Readable | undefined;
|
|
30
|
-
};
|
|
31
|
-
export declare function createRecordsWriteMessage(signer: Persona, overrides?: CreateRecordsWriteOverrides): Promise<GenerateRecordsWriteOutput>;
|
|
32
|
-
export declare function randomBytes(length: number): Uint8Array;
|
|
33
|
-
export declare function getFileAsReadStream(filePath: string): Promise<{
|
|
34
|
-
stream: fs.ReadStream;
|
|
35
|
-
cid: string;
|
|
36
|
-
size: number;
|
|
37
|
-
}>;
|
|
38
|
-
export declare function getDwnResponse(response: Response): UnionMessageReply;
|
|
39
|
-
export declare function sendHttpMessage(options: {
|
|
40
|
-
url: string;
|
|
41
|
-
target: string;
|
|
42
|
-
message: GenericMessage;
|
|
43
|
-
data?: any;
|
|
44
|
-
}): Promise<UnionMessageReply>;
|
|
45
|
-
export declare function sendWsMessage(address: string, message: any): Promise<Buffer>;
|
|
46
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../tests/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAmB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAWhD,MAAM,MAAM,2BAA2B,GACnC,CAAC;IACC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG;IAAE,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,GACrB,CAAC;IACC,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG;IAAE,IAAI,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC;AAE/B,MAAM,MAAM,0BAA0B,GAAG;IACvC,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAC;CAClC,CAAC;AAEF,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,OAAO,EACf,SAAS,GAAE,2BAAgC,GAC1C,OAAO,CAAC,0BAA0B,CAAC,CAoBrC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAOtD;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB/D;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,iBAAiB,CAEpE;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAoD7B;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,GAAG,GACX,OAAO,CAAC,MAAM,CAAC,CAajB"}
|
package/dist/esm/tests/utils.js
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { Cid, DataStream, RecordsWrite } from '@enbox/dwn-sdk-js';
|
|
2
|
-
import fs from 'node:fs';
|
|
3
|
-
import path from 'path';
|
|
4
|
-
import { v4 as uuidv4 } from 'uuid';
|
|
5
|
-
import fetch from 'node-fetch';
|
|
6
|
-
import { fileURLToPath } from 'url';
|
|
7
|
-
import { WebSocket } from 'ws';
|
|
8
|
-
import { createJsonRpcRequest } from '../src/lib/json-rpc.js';
|
|
9
|
-
// __filename and __dirname are not defined in ES module scope
|
|
10
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
11
|
-
const __dirname = path.dirname(__filename);
|
|
12
|
-
export async function createRecordsWriteMessage(signer, overrides = {}) {
|
|
13
|
-
if (!overrides.dataCid && !overrides.data) {
|
|
14
|
-
overrides.data = randomBytes(32);
|
|
15
|
-
}
|
|
16
|
-
const recordsWrite = await RecordsWrite.create({
|
|
17
|
-
...overrides,
|
|
18
|
-
dataFormat: 'application/json',
|
|
19
|
-
signer: signer.signer,
|
|
20
|
-
});
|
|
21
|
-
let dataStream;
|
|
22
|
-
if (overrides.data) {
|
|
23
|
-
dataStream = DataStream.fromBytes(overrides.data);
|
|
24
|
-
}
|
|
25
|
-
return {
|
|
26
|
-
recordsWrite,
|
|
27
|
-
dataStream,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
export function randomBytes(length) {
|
|
31
|
-
const randomBytes = new Uint8Array(length);
|
|
32
|
-
for (let i = 0; i < length; i++) {
|
|
33
|
-
randomBytes[i] = Math.floor(Math.random() * 256);
|
|
34
|
-
}
|
|
35
|
-
return randomBytes;
|
|
36
|
-
}
|
|
37
|
-
export async function getFileAsReadStream(filePath) {
|
|
38
|
-
const absoluteFilePath = `${__dirname}/${filePath}`;
|
|
39
|
-
let readStream = fs.createReadStream(absoluteFilePath);
|
|
40
|
-
const cid = await Cid.computeDagPbCidFromStream(readStream);
|
|
41
|
-
let size = 0;
|
|
42
|
-
readStream = fs.createReadStream(absoluteFilePath);
|
|
43
|
-
readStream.on('data', (chunk) => {
|
|
44
|
-
size += chunk['byteLength'];
|
|
45
|
-
});
|
|
46
|
-
return new Promise((resolve) => {
|
|
47
|
-
readStream.on('close', () => {
|
|
48
|
-
return resolve({
|
|
49
|
-
stream: fs.createReadStream(absoluteFilePath),
|
|
50
|
-
cid,
|
|
51
|
-
size,
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
export function getDwnResponse(response) {
|
|
57
|
-
return JSON.parse(response.headers.get('dwn-response'));
|
|
58
|
-
}
|
|
59
|
-
export async function sendHttpMessage(options) {
|
|
60
|
-
const { url, target, message, data } = options;
|
|
61
|
-
// First RecordsWrite that creates the record.
|
|
62
|
-
const requestId = uuidv4();
|
|
63
|
-
const jsonRpcRequest = createJsonRpcRequest(requestId, 'dwn.processMessage', {
|
|
64
|
-
target,
|
|
65
|
-
message,
|
|
66
|
-
});
|
|
67
|
-
const fetchOpts = {
|
|
68
|
-
method: 'POST',
|
|
69
|
-
headers: {
|
|
70
|
-
'dwn-request': JSON.stringify(jsonRpcRequest)
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
if (data !== undefined) {
|
|
74
|
-
fetchOpts.headers['content-type'] = 'application/octet-stream';
|
|
75
|
-
fetchOpts['body'] = data;
|
|
76
|
-
}
|
|
77
|
-
const resp = await fetch(url, fetchOpts);
|
|
78
|
-
let dwnRpcResponse;
|
|
79
|
-
// check to see if response is in header first. if it is, that means the response is a ReadableStream
|
|
80
|
-
let dataStream;
|
|
81
|
-
const { headers } = resp;
|
|
82
|
-
if (headers.has('dwn-response')) {
|
|
83
|
-
const jsonRpcResponse = JSON.parse(headers.get('dwn-response'));
|
|
84
|
-
if (jsonRpcResponse == null) {
|
|
85
|
-
throw new Error(`failed to parse json rpc response. dwn url: ${url}`);
|
|
86
|
-
}
|
|
87
|
-
dataStream = resp.body;
|
|
88
|
-
dwnRpcResponse = jsonRpcResponse;
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
const responseBody = await resp.text();
|
|
92
|
-
dwnRpcResponse = JSON.parse(responseBody);
|
|
93
|
-
}
|
|
94
|
-
if (dwnRpcResponse.error) {
|
|
95
|
-
const { code, message } = dwnRpcResponse.error;
|
|
96
|
-
throw new Error(`(${code}) - ${message}`);
|
|
97
|
-
}
|
|
98
|
-
const { reply } = dwnRpcResponse.result;
|
|
99
|
-
if (dataStream) {
|
|
100
|
-
reply['record']['data'] = dataStream;
|
|
101
|
-
}
|
|
102
|
-
return reply;
|
|
103
|
-
}
|
|
104
|
-
export async function sendWsMessage(address, message) {
|
|
105
|
-
return new Promise((resolve) => {
|
|
106
|
-
const socket = new WebSocket(address);
|
|
107
|
-
socket.onopen = (_event) => {
|
|
108
|
-
socket.onmessage = (event) => {
|
|
109
|
-
socket.terminate();
|
|
110
|
-
return resolve(event.data);
|
|
111
|
-
};
|
|
112
|
-
socket.send(message);
|
|
113
|
-
};
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../tests/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ws-api.spec.d.ts","sourceRoot":"","sources":["../../../tests/ws-api.spec.ts"],"names":[],"mappings":""}
|