@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,10 +1,11 @@
|
|
|
1
1
|
import type { DidResolver } from '@enbox/dids';
|
|
2
|
-
import type { ProcessHandlers } from './process-handlers.js';
|
|
3
|
-
import type { Server } from 'http';
|
|
4
|
-
import type { WebSocketServer } from 'ws';
|
|
5
2
|
import type { DwnServerConfig } from './config.js';
|
|
6
|
-
import {
|
|
3
|
+
import type { MessageProcessedHook } from './message-processed-hook.js';
|
|
4
|
+
import type { ProcessHandlers } from './process-handlers.js';
|
|
5
|
+
import type { Server } from 'bun';
|
|
6
|
+
import type { WsData } from './http-api.js';
|
|
7
7
|
import { Dwn } from '@enbox/dwn-sdk-js';
|
|
8
|
+
import { RegistrationManager } from './registration/registration-manager.js';
|
|
8
9
|
/**
|
|
9
10
|
* Options for the DwnServer constructor.
|
|
10
11
|
* This is different to DwnServerConfig in that the DwnServerConfig defines configuration that come from environment variables so (more) user facing.
|
|
@@ -18,6 +19,13 @@ export type DwnServerOptions = {
|
|
|
18
19
|
didResolver?: DidResolver;
|
|
19
20
|
dwn?: Dwn;
|
|
20
21
|
config?: DwnServerConfig;
|
|
22
|
+
/**
|
|
23
|
+
* Hooks invoked after every `dwn.processMessage()` call.
|
|
24
|
+
* The built-in DeliveryService hook is always prepended automatically
|
|
25
|
+
* when forwarding or delivery is enabled. Additional hooks provided here
|
|
26
|
+
* are appended after the DeliveryService hook.
|
|
27
|
+
*/
|
|
28
|
+
messageProcessedHooks?: MessageProcessedHook[];
|
|
21
29
|
};
|
|
22
30
|
/**
|
|
23
31
|
* State of the DwnServer, either Stopped or Started, to help short-circuit start and stop logic.
|
|
@@ -49,8 +57,7 @@ export declare class DwnServer {
|
|
|
49
57
|
* Stops the DWN server.
|
|
50
58
|
*/
|
|
51
59
|
stop(): Promise<void>;
|
|
52
|
-
get httpServer(): Server
|
|
53
|
-
get wsServer(): WebSocketServer | undefined;
|
|
60
|
+
get httpServer(): Server<WsData>;
|
|
54
61
|
/**
|
|
55
62
|
* Gets the RegistrationManager for testing purposes.
|
|
56
63
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dwn-server.d.ts","sourceRoot":"","sources":["../../../src/dwn-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"dwn-server.d.ts","sourceRoot":"","sources":["../../../src/dwn-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAElC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAK5C,OAAO,EAAE,GAAG,EAAwB,MAAM,mBAAmB,CAAC;AAgB9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAM7E;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAChD,CAAC;AAEF;;GAEG;AACH,aAAK,cAAc;IACjB,OAAO,IAAA;IACP,OAAO,IAAA;CACR;AAED,qBAAa,SAAS;;IACpB,WAAW,iBAA0B;IACrC,eAAe,EAAE,eAAe,CAAC;IAEjC;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,eAAe,CAAC;IASxB;;OAEG;gBACS,OAAO,GAAE,gBAAqB;IAa1C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiP5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoC3B,IAAI,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,CAE/B;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,mBAAmB,CAE7C;CACF"}
|
|
@@ -1,13 +1,23 @@
|
|
|
1
1
|
import log from 'loglevel';
|
|
2
2
|
import prefix from 'loglevel-plugin-prefix';
|
|
3
|
+
import { DidDht, DidJwk, DidKey, DidWeb, UniversalResolver } from '@enbox/dids';
|
|
4
|
+
import { Dwn, EventEmitterEventLog } from '@enbox/dwn-sdk-js';
|
|
5
|
+
import { ActivityLog } from './admin/activity-log.js';
|
|
6
|
+
import { AdminApi } from './admin/admin-api.js';
|
|
7
|
+
import { AdminStore } from './admin/admin-store.js';
|
|
8
|
+
import { AuditLog } from './admin/audit-log.js';
|
|
3
9
|
import { config as defaultConfig } from './config.js';
|
|
4
|
-
import {
|
|
5
|
-
import { HttpServerShutdownHandler } from './lib/http-server-shutdown-handler.js';
|
|
10
|
+
import { DeliveryService } from './delivery-service.js';
|
|
6
11
|
import { HttpApi } from './http-api.js';
|
|
12
|
+
import { JwtProviderAuthPlugin } from './registration/jwt-provider-auth-plugin.js';
|
|
13
|
+
import { loadProviderAuthPlugin } from './registration/provider-auth-plugin.js';
|
|
14
|
+
import { OpenAuthHandler } from './registration/open-auth-handler.js';
|
|
7
15
|
import { PluginLoader } from './plugin-loader.js';
|
|
16
|
+
import { RateLimiter } from './rate-limiter.js';
|
|
8
17
|
import { RegistrationManager } from './registration/registration-manager.js';
|
|
18
|
+
import { WebhookManager } from './admin/webhook-manager.js';
|
|
9
19
|
import { WsApi } from './ws-api.js';
|
|
10
|
-
import {
|
|
20
|
+
import { getDialectFromUrl, getDwnConfig } from './storage.js';
|
|
11
21
|
import { removeProcessHandlers, setProcessHandlers } from './process-handlers.js';
|
|
12
22
|
/**
|
|
13
23
|
* State of the DwnServer, either Stopped or Started, to help short-circuit start and stop logic.
|
|
@@ -27,9 +37,13 @@ export class DwnServer {
|
|
|
27
37
|
didResolver;
|
|
28
38
|
dwn;
|
|
29
39
|
config;
|
|
30
|
-
#httpServerShutdownHandler;
|
|
31
40
|
#httpApi;
|
|
32
41
|
#wsApi;
|
|
42
|
+
#adminApi;
|
|
43
|
+
#ipRateLimiter;
|
|
44
|
+
#tenantRateLimiter;
|
|
45
|
+
#auditLog;
|
|
46
|
+
#externalHooks;
|
|
33
47
|
/**
|
|
34
48
|
* @param options.dwn - Dwn instance to use as an override. Registration endpoint will not be enabled if this is provided.
|
|
35
49
|
*/
|
|
@@ -37,6 +51,7 @@ export class DwnServer {
|
|
|
37
51
|
this.config = options.config ?? defaultConfig;
|
|
38
52
|
this.didResolver = options.didResolver;
|
|
39
53
|
this.dwn = options.dwn;
|
|
54
|
+
this.#externalHooks = options.messageProcessedHooks ?? [];
|
|
40
55
|
log.setLevel(this.config.logLevel);
|
|
41
56
|
prefix.reg(log);
|
|
42
57
|
prefix.apply(log);
|
|
@@ -59,38 +74,191 @@ export class DwnServer {
|
|
|
59
74
|
async #setupServer() {
|
|
60
75
|
let registrationManager;
|
|
61
76
|
if (!this.dwn) {
|
|
77
|
+
// Load provider auth plugin if configured.
|
|
78
|
+
let providerAuthPlugin;
|
|
79
|
+
if (this.config.providerAuthEnabled) {
|
|
80
|
+
if (this.config.providerAuthPluginPath) {
|
|
81
|
+
// Custom external plugin.
|
|
82
|
+
providerAuthPlugin = await loadProviderAuthPlugin(this.config.providerAuthPluginPath);
|
|
83
|
+
log.info('Provider auth plugin loaded from path');
|
|
84
|
+
}
|
|
85
|
+
else if (this.config.providerAuthJwtSecret || this.config.providerAuthJwtJwksUrl) {
|
|
86
|
+
// Built-in JWT plugin.
|
|
87
|
+
providerAuthPlugin = await JwtProviderAuthPlugin.create({
|
|
88
|
+
secret: this.config.providerAuthJwtSecret,
|
|
89
|
+
jwksUrl: this.config.providerAuthJwtJwksUrl,
|
|
90
|
+
issuer: this.config.baseUrl,
|
|
91
|
+
audience: this.config.baseUrl,
|
|
92
|
+
});
|
|
93
|
+
log.info('Built-in JWT provider auth plugin created');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
62
96
|
// undefined registrationStoreUrl is used as a signal that there is no need for tenant registration, DWN is open for all.
|
|
63
97
|
registrationManager = await RegistrationManager.create({
|
|
64
98
|
registrationStoreUrl: this.config.registrationStoreUrl,
|
|
65
99
|
termsOfServiceFilePath: this.config.termsOfServiceFilePath,
|
|
66
100
|
proofOfWorkChallengeNonceSeed: this.config.registrationProofOfWorkSeed,
|
|
67
101
|
proofOfWorkInitialMaximumAllowedHash: this.config.registrationProofOfWorkInitialMaxHash,
|
|
102
|
+
providerAuthPlugin,
|
|
68
103
|
});
|
|
69
|
-
|
|
104
|
+
// Warn if the tenant gate is active but no registration method is enabled.
|
|
105
|
+
// This is almost certainly a misconfiguration — new tenants will be rejected
|
|
106
|
+
// with 401 and have no way to register.
|
|
107
|
+
if (this.config.registrationStoreUrl
|
|
108
|
+
&& !this.config.registrationProofOfWorkEnabled
|
|
109
|
+
&& !providerAuthPlugin) {
|
|
110
|
+
log.warn('*** WARNING: DWN_REGISTRATION_STORE_URL is set (tenant gate active) but neither ' +
|
|
111
|
+
'proof-of-work (DWN_REGISTRATION_PROOF_OF_WORK_ENABLED) nor provider auth ' +
|
|
112
|
+
'(DWN_PROVIDER_AUTH_ENABLED + secret/plugin) is configured. ' +
|
|
113
|
+
'New tenants will be unable to register. ***');
|
|
114
|
+
}
|
|
115
|
+
let eventLog;
|
|
70
116
|
if (this.config.webSocketSupport) {
|
|
71
|
-
// If
|
|
72
|
-
if (this.config.
|
|
73
|
-
|
|
117
|
+
// If EventLog plugin is not specified, use `EventEmitterEventLog` implementation as default.
|
|
118
|
+
if (this.config.eventLogPluginPath === undefined || this.config.eventLogPluginPath === '') {
|
|
119
|
+
eventLog = new EventEmitterEventLog();
|
|
74
120
|
}
|
|
75
121
|
else {
|
|
76
|
-
|
|
122
|
+
eventLog = await PluginLoader.loadPlugin(this.config.eventLogPluginPath);
|
|
77
123
|
}
|
|
78
124
|
}
|
|
125
|
+
// Create a DID resolver explicitly without LevelDB cache. The default
|
|
126
|
+
// Dwn.create() uses DidResolverCacheLevel which requires exclusive file
|
|
127
|
+
// locks and is not managed by the DWN's open()/close() lifecycle. In
|
|
128
|
+
// containerized deployments this causes "Database is not open" errors
|
|
129
|
+
// when the LevelDB lock file persists across restarts or when concurrent
|
|
130
|
+
// async operations (e.g. DeliveryService) race with the deferred open.
|
|
131
|
+
// UniversalResolver defaults to DidResolverCacheNoop when no cache is provided.
|
|
132
|
+
const didResolver = this.didResolver ?? new UniversalResolver({
|
|
133
|
+
didResolvers: [DidDht, DidJwk, DidKey, DidWeb],
|
|
134
|
+
});
|
|
79
135
|
const dwnConfig = await getDwnConfig(this.config, {
|
|
80
|
-
didResolver
|
|
136
|
+
didResolver,
|
|
81
137
|
tenantGate: registrationManager,
|
|
82
|
-
|
|
138
|
+
eventLog,
|
|
83
139
|
});
|
|
84
140
|
this.dwn = await Dwn.create(dwnConfig);
|
|
85
141
|
}
|
|
86
|
-
|
|
142
|
+
// Assemble message-processed hooks.
|
|
143
|
+
const messageProcessedHooks = [];
|
|
144
|
+
// Add the built-in DeliveryService hook when forwarding or delivery is enabled.
|
|
145
|
+
if (this.config.forwardingEnabled || this.config.deliveryEnabled) {
|
|
146
|
+
const deliveryResolver = this.didResolver ?? new UniversalResolver({
|
|
147
|
+
didResolvers: [DidDht, DidJwk, DidKey, DidWeb],
|
|
148
|
+
});
|
|
149
|
+
const deliveryService = DeliveryService.create(this.dwn, deliveryResolver, this.config);
|
|
150
|
+
messageProcessedHooks.push(deliveryService);
|
|
151
|
+
log.info(`Delivery service enabled (forwarding: ${this.config.forwardingEnabled}, delivery: ${this.config.deliveryEnabled})`);
|
|
152
|
+
}
|
|
153
|
+
// Append externally provided hooks.
|
|
154
|
+
messageProcessedHooks.push(...this.#externalHooks);
|
|
155
|
+
// Create rate limiters when configured.
|
|
156
|
+
let ipRateLimiter;
|
|
157
|
+
let tenantRateLimiter;
|
|
158
|
+
if (this.config.rateLimitRequestsPerSecond > 0) {
|
|
159
|
+
ipRateLimiter = new RateLimiter({
|
|
160
|
+
refillRate: this.config.rateLimitRequestsPerSecond,
|
|
161
|
+
maxTokens: this.config.rateLimitBurst,
|
|
162
|
+
});
|
|
163
|
+
log.info(`Per-IP rate limiting enabled: ${this.config.rateLimitRequestsPerSecond} req/s, burst ${this.config.rateLimitBurst}`);
|
|
164
|
+
}
|
|
165
|
+
if (this.config.rateLimitTenantRequestsPerSecond > 0) {
|
|
166
|
+
tenantRateLimiter = new RateLimiter({
|
|
167
|
+
refillRate: this.config.rateLimitTenantRequestsPerSecond,
|
|
168
|
+
maxTokens: this.config.rateLimitTenantBurst,
|
|
169
|
+
});
|
|
170
|
+
log.info(`Per-tenant rate limiting enabled: ${this.config.rateLimitTenantRequestsPerSecond} req/s, burst ${this.config.rateLimitTenantBurst}`);
|
|
171
|
+
}
|
|
172
|
+
const registrationStore = registrationManager?.getRegistrationStore();
|
|
173
|
+
// Initialize admin API if an admin token is configured.
|
|
174
|
+
let adminApi;
|
|
175
|
+
let activityLog;
|
|
176
|
+
let adminStore;
|
|
177
|
+
let auditLog;
|
|
178
|
+
let webhookManager;
|
|
179
|
+
if (this.config.adminToken) {
|
|
180
|
+
const storageUrl = this.config.messageStore;
|
|
181
|
+
adminStore = AdminStore.create(storageUrl);
|
|
182
|
+
activityLog = new ActivityLog(this.config.adminActivityLogCapacity);
|
|
183
|
+
// Create the persistent audit log using the registration store's dialect
|
|
184
|
+
// (same DB) or the message store URL as fallback.
|
|
185
|
+
if (this.config.registrationStoreUrl) {
|
|
186
|
+
try {
|
|
187
|
+
const auditDialect = getDialectFromUrl(new URL(this.config.registrationStoreUrl));
|
|
188
|
+
auditLog = await AuditLog.create(auditDialect, {
|
|
189
|
+
maxAgeDays: this.config.auditLogMaxAgeDays,
|
|
190
|
+
maxRows: this.config.auditLogMaxRows,
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
catch (err) {
|
|
194
|
+
log.warn('Failed to create audit log:', err);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// Create webhook manager using the same dialect as the audit log.
|
|
198
|
+
if (this.config.registrationStoreUrl) {
|
|
199
|
+
try {
|
|
200
|
+
const webhookDialect = getDialectFromUrl(new URL(this.config.registrationStoreUrl));
|
|
201
|
+
webhookManager = await WebhookManager.create(webhookDialect);
|
|
202
|
+
}
|
|
203
|
+
catch (err) {
|
|
204
|
+
log.warn('Failed to create webhook manager:', err);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
adminApi = AdminApi.create({
|
|
208
|
+
config: this.config,
|
|
209
|
+
dwn: this.dwn,
|
|
210
|
+
adminStore,
|
|
211
|
+
registrationManager,
|
|
212
|
+
registrationStore,
|
|
213
|
+
activityLog,
|
|
214
|
+
auditLog,
|
|
215
|
+
ipRateLimiter,
|
|
216
|
+
tenantRateLimiter,
|
|
217
|
+
webhookManager,
|
|
218
|
+
});
|
|
219
|
+
// Record server start event in audit log.
|
|
220
|
+
if (auditLog) {
|
|
221
|
+
await auditLog.record({ actor: 'system', action: 'server.start' });
|
|
222
|
+
}
|
|
223
|
+
log.info('Admin API enabled');
|
|
224
|
+
}
|
|
225
|
+
// Store references for cleanup in stop().
|
|
226
|
+
this.#adminApi = adminApi;
|
|
227
|
+
this.#ipRateLimiter = ipRateLimiter;
|
|
228
|
+
this.#tenantRateLimiter = tenantRateLimiter;
|
|
229
|
+
this.#auditLog = auditLog;
|
|
230
|
+
// Create open-auth handler if provider auth is enabled with a JWT secret
|
|
231
|
+
// and authorize/token URLs point to this server (or are not set — defaulting to built-in).
|
|
232
|
+
let openAuthHandler;
|
|
233
|
+
if (this.config.providerAuthEnabled && this.config.providerAuthJwtSecret && !this.config.providerAuthPluginPath) {
|
|
234
|
+
openAuthHandler = OpenAuthHandler.create(this.config.providerAuthJwtSecret, this.config.baseUrl);
|
|
235
|
+
log.info('Built-in open-auth endpoints enabled');
|
|
236
|
+
// Auto-configure authorize/token/refresh URLs if not explicitly set.
|
|
237
|
+
if (!this.config.providerAuthAuthorizeUrl) {
|
|
238
|
+
this.config.providerAuthAuthorizeUrl = `${this.config.baseUrl}/provider-auth/authorize`;
|
|
239
|
+
}
|
|
240
|
+
if (!this.config.providerAuthTokenUrl) {
|
|
241
|
+
this.config.providerAuthTokenUrl = `${this.config.baseUrl}/provider-auth/token`;
|
|
242
|
+
}
|
|
243
|
+
if (!this.config.providerAuthRefreshUrl) {
|
|
244
|
+
this.config.providerAuthRefreshUrl = `${this.config.baseUrl}/provider-auth/refresh`;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
this.#httpApi = await HttpApi.create(this.config, this.dwn, registrationManager, adminApi, activityLog, { adminStore, registrationStore, ipRateLimiter, tenantRateLimiter, messageProcessedHooks, openAuthHandler });
|
|
87
248
|
await this.#httpApi.start(this.config.port);
|
|
88
249
|
log.info(`HttpServer listening on port ${this.config.port}`);
|
|
89
|
-
this.#httpServerShutdownHandler = new HttpServerShutdownHandler(this.#httpApi.server);
|
|
90
250
|
if (this.config.webSocketSupport) {
|
|
91
|
-
this.#wsApi = new WsApi(this.#httpApi.
|
|
251
|
+
this.#wsApi = new WsApi(this.#httpApi, this.dwn, undefined, this.config.maxInFlight, activityLog, { adminStore, registrationStore, config: this.config, tenantRateLimiter, messageProcessedHooks });
|
|
92
252
|
this.#wsApi.start();
|
|
93
253
|
log.info('WebSocketServer ready...');
|
|
254
|
+
// Wire connection manager to admin API for connection counting.
|
|
255
|
+
if (adminApi) {
|
|
256
|
+
adminApi.setConnectionManager(this.#wsApi.connectionManager);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
// Start periodic Prometheus gauge updates.
|
|
260
|
+
if (adminApi) {
|
|
261
|
+
adminApi.startMetricsUpdater();
|
|
94
262
|
}
|
|
95
263
|
}
|
|
96
264
|
/**
|
|
@@ -100,26 +268,33 @@ export class DwnServer {
|
|
|
100
268
|
if (this.serverState === DwnServerState.Stopped) {
|
|
101
269
|
return;
|
|
102
270
|
}
|
|
271
|
+
// Stop admin metrics updater and record shutdown audit event.
|
|
272
|
+
if (this.#adminApi) {
|
|
273
|
+
this.#adminApi.stopMetricsUpdater();
|
|
274
|
+
}
|
|
275
|
+
if (this.#auditLog) {
|
|
276
|
+
await this.#auditLog.record({ actor: 'system', action: 'server.stop' });
|
|
277
|
+
await this.#auditLog.close();
|
|
278
|
+
}
|
|
279
|
+
// Clean up rate limiters (stops their interval timers).
|
|
280
|
+
if (this.#ipRateLimiter) {
|
|
281
|
+
this.#ipRateLimiter.destroy();
|
|
282
|
+
}
|
|
283
|
+
if (this.#tenantRateLimiter) {
|
|
284
|
+
this.#tenantRateLimiter.destroy();
|
|
285
|
+
}
|
|
103
286
|
await this.dwn.close();
|
|
104
|
-
|
|
105
|
-
// close WebSocket server if it was initialized
|
|
287
|
+
// Close WebSocket server if it was initialized.
|
|
106
288
|
if (this.#wsApi !== undefined) {
|
|
107
289
|
await this.#wsApi.close();
|
|
108
290
|
}
|
|
109
|
-
await
|
|
110
|
-
this.#httpServerShutdownHandler.stop(() => {
|
|
111
|
-
resolve();
|
|
112
|
-
});
|
|
113
|
-
});
|
|
291
|
+
await this.#httpApi.close();
|
|
114
292
|
removeProcessHandlers(this.processHandlers);
|
|
115
293
|
this.serverState = DwnServerState.Stopped;
|
|
116
294
|
}
|
|
117
295
|
get httpServer() {
|
|
118
296
|
return this.#httpApi.server;
|
|
119
297
|
}
|
|
120
|
-
get wsServer() {
|
|
121
|
-
return this.#wsApi?.server;
|
|
122
|
-
}
|
|
123
298
|
/**
|
|
124
299
|
* Gets the RegistrationManager for testing purposes.
|
|
125
300
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dwn-server.js","sourceRoot":"","sources":["../../../src/dwn-server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dwn-server.js","sourceRoot":"","sources":["../../../src/dwn-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +1,41 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
3
|
-
import
|
|
1
|
+
import type { Server, ServerWebSocket } from 'bun';
|
|
2
|
+
import type { ActivityLog } from './admin/activity-log.js';
|
|
3
|
+
import type { AdminApi } from './admin/admin-api.js';
|
|
4
|
+
import type { AdminStore } from './admin/admin-store.js';
|
|
4
5
|
import type { DwnServerConfig } from './config.js';
|
|
6
|
+
import type { MessageProcessedHook } from './message-processed-hook.js';
|
|
7
|
+
import type { OpenAuthHandler } from './registration/open-auth-handler.js';
|
|
8
|
+
import type { RateLimiter } from './rate-limiter.js';
|
|
5
9
|
import type { RegistrationManager } from './registration/registration-manager.js';
|
|
10
|
+
import type { RegistrationStore } from './registration/registration-store.js';
|
|
11
|
+
import type { SocketConnection } from './connection/socket-connection.js';
|
|
12
|
+
import { type Dwn } from '@enbox/dwn-sdk-js';
|
|
6
13
|
import { Web5ConnectServer } from './web5-connect/web5-connect-server.js';
|
|
14
|
+
/** Data attached to each Bun WebSocket via `ws.data`. */
|
|
15
|
+
export interface WsData {
|
|
16
|
+
connection: SocketConnection;
|
|
17
|
+
}
|
|
7
18
|
export declare class HttpApi {
|
|
8
19
|
#private;
|
|
9
20
|
web5ConnectServer: Web5ConnectServer;
|
|
10
21
|
registrationManager: RegistrationManager;
|
|
11
22
|
dwn: Dwn;
|
|
23
|
+
/** Called by WsApi/ConnectionManager when a new WS connection is established. */
|
|
24
|
+
onWebSocketConnection?: (ws: ServerWebSocket<WsData>) => void;
|
|
12
25
|
private constructor();
|
|
13
|
-
static create(config: DwnServerConfig, dwn: Dwn, registrationManager?: RegistrationManager
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
26
|
+
static create(config: DwnServerConfig, dwn: Dwn, registrationManager?: RegistrationManager, adminApi?: AdminApi, activityLog?: ActivityLog, options?: {
|
|
27
|
+
adminStore?: AdminStore;
|
|
28
|
+
registrationStore?: RegistrationStore;
|
|
29
|
+
ipRateLimiter?: RateLimiter;
|
|
30
|
+
tenantRateLimiter?: RateLimiter;
|
|
31
|
+
messageProcessedHooks?: MessageProcessedHook[];
|
|
32
|
+
openAuthHandler?: OpenAuthHandler;
|
|
33
|
+
}): Promise<HttpApi>;
|
|
34
|
+
get server(): Server<WsData>;
|
|
35
|
+
get ipRateLimiter(): RateLimiter | undefined;
|
|
36
|
+
get tenantRateLimiter(): RateLimiter | undefined;
|
|
37
|
+
get messageProcessedHooks(): MessageProcessedHook[];
|
|
20
38
|
start(port: number): Promise<void>;
|
|
21
|
-
/**
|
|
22
|
-
* Stops the HTTP API endpoint.
|
|
23
|
-
*/
|
|
24
39
|
close(): Promise<void>;
|
|
25
40
|
}
|
|
26
41
|
//# sourceMappingURL=http-api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-api.d.ts","sourceRoot":"","sources":["../../../src/http-api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http-api.d.ts","sourceRoot":"","sources":["../../../src/http-api.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAQ1E,OAAO,EAAwB,KAAK,GAAG,EAA6C,MAAM,mBAAmB,CAAC;AAO9G,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAgB1E,yDAAyD;AACzD,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,gBAAgB,CAAC;CAC9B;AAED,qBAAa,OAAO;;IAalB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,GAAG,EAAE,GAAG,CAAC;IAET,iFAAiF;IACjF,qBAAqB,CAAC,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IAE9D,OAAO;WAEa,MAAM,CACxB,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,EAAE,mBAAmB,EAC5E,QAAQ,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,WAAW,EAC9C,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAG,UAAU,CAAC;QACzB,iBAAiB,CAAC,EAAG,iBAAiB,CAAC;QACvC,aAAa,CAAC,EAAG,WAAW,CAAC;QAC7B,iBAAiB,CAAC,EAAG,WAAW,CAAC;QACjC,qBAAqB,CAAC,EAAG,oBAAoB,EAAE,CAAC;QAChD,eAAe,CAAC,EAAG,eAAe,CAAC;KACpC,GACA,OAAO,CAAC,OAAO,CAAC;IA2CnB,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAE3B;IAED,IAAI,aAAa,IAAI,WAAW,GAAG,SAAS,CAE3C;IAED,IAAI,iBAAiB,IAAI,WAAW,GAAG,SAAS,CAE/C;IAED,IAAI,qBAAqB,IAAI,oBAAoB,EAAE,CAElD;IAMK,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqGlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CA2nB7B"}
|