@ours.network/messenger-server 1.0.31-nightly.2 → 1.0.31-nightly.20
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/README.md +62 -16
- package/dist/chunks/{chunk-LTPYVSZY.js → chunk-UNTKMIUK.js} +14 -1
- package/dist/chunks/{server-KABHYEOT.js → server-NUFQF4R5.js} +3204 -2820
- package/dist/cli.js +8 -2
- package/package.json +8 -35
- package/dist/web/assets/abnfDiagram-VCTEODGH-C7sCshIv.js +0 -2
- package/dist/web/assets/abnfDiagram-VCTEODGH-C7sCshIv.js.map +0 -1
- package/dist/web/assets/arc-DuWY9UWo.js +0 -2
- package/dist/web/assets/arc-DuWY9UWo.js.map +0 -1
- package/dist/web/assets/architectureDiagram-5GKGNRK7-D7yCIw3t.js +0 -37
- package/dist/web/assets/architectureDiagram-5GKGNRK7-D7yCIw3t.js.map +0 -1
- package/dist/web/assets/blockDiagram-I7D4REHJ-Da5P4vro.js +0 -130
- package/dist/web/assets/blockDiagram-I7D4REHJ-Da5P4vro.js.map +0 -1
- package/dist/web/assets/browser-QxGICbzJ.js +0 -9
- package/dist/web/assets/browser-QxGICbzJ.js.map +0 -1
- package/dist/web/assets/c4Diagram-7LVT6UL2-CjG_YG67.js +0 -39
- package/dist/web/assets/c4Diagram-7LVT6UL2-CjG_YG67.js.map +0 -1
- package/dist/web/assets/channel-Cl82Zhc8.js +0 -2
- package/dist/web/assets/channel-Cl82Zhc8.js.map +0 -1
- package/dist/web/assets/chunk-2Q5K7J3B-CIh9dNoC.js +0 -2
- package/dist/web/assets/chunk-2Q5K7J3B-CIh9dNoC.js.map +0 -1
- package/dist/web/assets/chunk-5VM5RSS4-CIHiRw-z.js +0 -16
- package/dist/web/assets/chunk-5VM5RSS4-CIHiRw-z.js.map +0 -1
- package/dist/web/assets/chunk-F27PBJKO-DAcRgGh-.js +0 -2
- package/dist/web/assets/chunk-F27PBJKO-DAcRgGh-.js.map +0 -1
- package/dist/web/assets/chunk-IMKFNOWR-IzFFmjKW.js +0 -232
- package/dist/web/assets/chunk-IMKFNOWR-IzFFmjKW.js.map +0 -1
- package/dist/web/assets/chunk-JWPE2WC7-CEYpUDRn.js +0 -2
- package/dist/web/assets/chunk-JWPE2WC7-CEYpUDRn.js.map +0 -1
- package/dist/web/assets/chunk-POPQ4Y6H-D4MHweCv.js +0 -2
- package/dist/web/assets/chunk-POPQ4Y6H-D4MHweCv.js.map +0 -1
- package/dist/web/assets/chunk-SVP7TREG-phncKrkr.js +0 -89
- package/dist/web/assets/chunk-SVP7TREG-phncKrkr.js.map +0 -1
- package/dist/web/assets/chunk-TICWLB2K-BnuK4s1I.js +0 -207
- package/dist/web/assets/chunk-TICWLB2K-BnuK4s1I.js.map +0 -1
- package/dist/web/assets/chunk-XXDRQBXY-B8tdZjO0.js +0 -2
- package/dist/web/assets/chunk-XXDRQBXY-B8tdZjO0.js.map +0 -1
- package/dist/web/assets/classDiagram-ZZMXUADV-BqjNzI9E.js +0 -2
- package/dist/web/assets/classDiagram-ZZMXUADV-BqjNzI9E.js.map +0 -1
- package/dist/web/assets/classDiagram-v2-VYDZK3BY-BqjNzI9E.js +0 -2
- package/dist/web/assets/classDiagram-v2-VYDZK3BY-BqjNzI9E.js.map +0 -1
- package/dist/web/assets/cose-bilkent-JH36ORCC-B7WSa9lz.js +0 -2
- package/dist/web/assets/cose-bilkent-JH36ORCC-B7WSa9lz.js.map +0 -1
- package/dist/web/assets/cynefin-OW5HDTMX-DiVkqKbh.js +0 -179
- package/dist/web/assets/cynefin-OW5HDTMX-DiVkqKbh.js.map +0 -1
- package/dist/web/assets/cynefinDiagram-5FMLGOSQ-D1cONV2_.js +0 -63
- package/dist/web/assets/cynefinDiagram-5FMLGOSQ-D1cONV2_.js.map +0 -1
- package/dist/web/assets/cytoscape.esm-CtNdOvlO.js +0 -332
- package/dist/web/assets/cytoscape.esm-CtNdOvlO.js.map +0 -1
- package/dist/web/assets/dagre-GXQ25YYZ-p1Cw-oFp.js +0 -5
- package/dist/web/assets/dagre-GXQ25YYZ-p1Cw-oFp.js.map +0 -1
- package/dist/web/assets/defaultLocale-DX6XiGOO.js +0 -2
- package/dist/web/assets/defaultLocale-DX6XiGOO.js.map +0 -1
- package/dist/web/assets/diagram-S7CK7UJ4-BgahzlGd.js +0 -31
- package/dist/web/assets/diagram-S7CK7UJ4-BgahzlGd.js.map +0 -1
- package/dist/web/assets/diagram-UQ7AKVKN-BaI6QznD.js +0 -42
- package/dist/web/assets/diagram-UQ7AKVKN-BaI6QznD.js.map +0 -1
- package/dist/web/assets/diagram-VSXAHHWV-DyEdcsUZ.js +0 -4
- package/dist/web/assets/diagram-VSXAHHWV-DyEdcsUZ.js.map +0 -1
- package/dist/web/assets/diagram-VX7I27RA-CAfi11Qd.js +0 -25
- package/dist/web/assets/diagram-VX7I27RA-CAfi11Qd.js.map +0 -1
- package/dist/web/assets/diagram-Z3DM3KII-hcb201an.js +0 -25
- package/dist/web/assets/diagram-Z3DM3KII-hcb201an.js.map +0 -1
- package/dist/web/assets/ebnfDiagram-PWID7BFC-CImXcCoQ.js +0 -2
- package/dist/web/assets/ebnfDiagram-PWID7BFC-CImXcCoQ.js.map +0 -1
- package/dist/web/assets/erDiagram-RLTQ6QDP-CP6M9zsy.js +0 -100
- package/dist/web/assets/erDiagram-RLTQ6QDP-CP6M9zsy.js.map +0 -1
- package/dist/web/assets/flowDiagram-HODETNUW-Dp8yuKWw.js +0 -169
- package/dist/web/assets/flowDiagram-HODETNUW-Dp8yuKWw.js.map +0 -1
- package/dist/web/assets/ganttDiagram-EL5Y4UJY-CPYchw0n.js +0 -293
- package/dist/web/assets/ganttDiagram-EL5Y4UJY-CPYchw0n.js.map +0 -1
- package/dist/web/assets/gitGraphDiagram-WWUBYQGX-miuqjtQ7.js +0 -107
- package/dist/web/assets/gitGraphDiagram-WWUBYQGX-miuqjtQ7.js.map +0 -1
- package/dist/web/assets/index-BlqcHRF3.css +0 -1
- package/dist/web/assets/index-CCgroSKL.js +0 -332
- package/dist/web/assets/index-CCgroSKL.js.map +0 -1
- package/dist/web/assets/infoDiagram-27XIBGKW-DgXC3e-f.js +0 -3
- package/dist/web/assets/infoDiagram-27XIBGKW-DgXC3e-f.js.map +0 -1
- package/dist/web/assets/init-Gi6I4Gst.js +0 -2
- package/dist/web/assets/init-Gi6I4Gst.js.map +0 -1
- package/dist/web/assets/ishikawaDiagram-5VMMS53U-BMV_w82E.js +0 -71
- package/dist/web/assets/ishikawaDiagram-5VMMS53U-BMV_w82E.js.map +0 -1
- package/dist/web/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
- package/dist/web/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
- package/dist/web/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
- package/dist/web/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
- package/dist/web/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
- package/dist/web/assets/journeyDiagram-3NMN7TZE-DjhTrdGN.js +0 -140
- package/dist/web/assets/journeyDiagram-3NMN7TZE-DjhTrdGN.js.map +0 -1
- package/dist/web/assets/jsQR-D1jKQDnp.js +0 -2
- package/dist/web/assets/jsQR-D1jKQDnp.js.map +0 -1
- package/dist/web/assets/kanban-definition-UXKFOSKX-DH_-vob_.js +0 -90
- package/dist/web/assets/kanban-definition-UXKFOSKX-DH_-vob_.js.map +0 -1
- package/dist/web/assets/katex-HP8lGamR.js +0 -258
- package/dist/web/assets/katex-HP8lGamR.js.map +0 -1
- package/dist/web/assets/layout-Drqg9YnR.js +0 -2
- package/dist/web/assets/layout-Drqg9YnR.js.map +0 -1
- package/dist/web/assets/linear-BkUpMSIo.js +0 -2
- package/dist/web/assets/linear-BkUpMSIo.js.map +0 -1
- package/dist/web/assets/mermaid.core-CEG7DMMN.js +0 -313
- package/dist/web/assets/mermaid.core-CEG7DMMN.js.map +0 -1
- package/dist/web/assets/mindmap-definition-YA3MSWOX-BFk9isWC.js +0 -97
- package/dist/web/assets/mindmap-definition-YA3MSWOX-BFk9isWC.js.map +0 -1
- package/dist/web/assets/ordinal-Cboi1Yqb.js +0 -2
- package/dist/web/assets/ordinal-Cboi1Yqb.js.map +0 -1
- package/dist/web/assets/pegDiagram-XKGWAZYB-pq0M_xa9.js +0 -2
- package/dist/web/assets/pegDiagram-XKGWAZYB-pq0M_xa9.js.map +0 -1
- package/dist/web/assets/pieDiagram-E7YTZNPT-BMWAQpDg.js +0 -40
- package/dist/web/assets/pieDiagram-E7YTZNPT-BMWAQpDg.js.map +0 -1
- package/dist/web/assets/quadrantDiagram-AXDQQJYC-83Ki1EqQ.js +0 -8
- package/dist/web/assets/quadrantDiagram-AXDQQJYC-83Ki1EqQ.js.map +0 -1
- package/dist/web/assets/railroadDiagram-O6MQD6OU-Dou1p6qX.js +0 -2
- package/dist/web/assets/railroadDiagram-O6MQD6OU-Dou1p6qX.js.map +0 -1
- package/dist/web/assets/requirementDiagram-BXWQKSXE-CwNAiRYe.js +0 -85
- package/dist/web/assets/requirementDiagram-BXWQKSXE-CwNAiRYe.js.map +0 -1
- package/dist/web/assets/sankeyDiagram-P5KCCOFB-DxKg4Mkl.js +0 -41
- package/dist/web/assets/sankeyDiagram-P5KCCOFB-DxKg4Mkl.js.map +0 -1
- package/dist/web/assets/sequenceDiagram-WJ2MYXX4-CeHUvWaP.js +0 -163
- package/dist/web/assets/sequenceDiagram-WJ2MYXX4-CeHUvWaP.js.map +0 -1
- package/dist/web/assets/sizeCapture-INFHLROL-W9aZkwhw.js +0 -2
- package/dist/web/assets/sizeCapture-INFHLROL-W9aZkwhw.js.map +0 -1
- package/dist/web/assets/stateDiagram-D77RDMKH-PAHb1UCa.js +0 -2
- package/dist/web/assets/stateDiagram-D77RDMKH-PAHb1UCa.js.map +0 -1
- package/dist/web/assets/stateDiagram-v2-MP3YSRHH-DukY0aaQ.js +0 -2
- package/dist/web/assets/stateDiagram-v2-MP3YSRHH-DukY0aaQ.js.map +0 -1
- package/dist/web/assets/swimlanes-42K2YHIH-DHMfrooz.js +0 -2
- package/dist/web/assets/swimlanes-42K2YHIH-DHMfrooz.js.map +0 -1
- package/dist/web/assets/swimlanesDiagram-VR7AAH4N-Bck01cDk.js +0 -9
- package/dist/web/assets/swimlanesDiagram-VR7AAH4N-Bck01cDk.js.map +0 -1
- package/dist/web/assets/timeline-definition-24CTP7MA-DmawAv_Y.js +0 -121
- package/dist/web/assets/timeline-definition-24CTP7MA-DmawAv_Y.js.map +0 -1
- package/dist/web/assets/vennDiagram-4TSXK5OY-Bnaxr8q6.js +0 -35
- package/dist/web/assets/vennDiagram-4TSXK5OY-Bnaxr8q6.js.map +0 -1
- package/dist/web/assets/wardleyDiagram-VM6X3IG4-DSvkshdu.js +0 -79
- package/dist/web/assets/wardleyDiagram-VM6X3IG4-DSvkshdu.js.map +0 -1
- package/dist/web/assets/xychartDiagram-S5SC5T6Z-BYry5jCP.js +0 -8
- package/dist/web/assets/xychartDiagram-S5SC5T6Z-BYry5jCP.js.map +0 -1
- package/dist/web/icons/apple-touch-icon.png +0 -0
- package/dist/web/icons/favicon-16.png +0 -0
- package/dist/web/icons/favicon-32.png +0 -0
- package/dist/web/icons/icon-192-maskable.png +0 -0
- package/dist/web/icons/icon-192.png +0 -0
- package/dist/web/icons/icon-512-maskable.png +0 -0
- package/dist/web/icons/icon-512.png +0 -0
- package/dist/web/index.html +0 -19
- package/dist/web/manifest.webmanifest +0 -17
- package/dist/web/sw.js +0 -181
- package/dist/web/version.json +0 -1
package/README.md
CHANGED
|
@@ -54,7 +54,7 @@ exit unsuccessfully; repeated close calls retain that result.
|
|
|
54
54
|
|
|
55
55
|
## Running
|
|
56
56
|
|
|
57
|
-
Install and start the shared daemon with `@ours.network/
|
|
57
|
+
Install and start the shared daemon with `@ours.network/daemon`, create the identity
|
|
58
58
|
there, then start messenger with the same daemon selection. The following
|
|
59
59
|
example uses the temporary local configuration path:
|
|
60
60
|
|
|
@@ -62,9 +62,9 @@ example uses the temporary local configuration path:
|
|
|
62
62
|
npm install
|
|
63
63
|
npm run build
|
|
64
64
|
|
|
65
|
-
# One-time host setup
|
|
66
|
-
ours config setup --port 3070 --state-dir /srv/ours
|
|
67
|
-
ours
|
|
65
|
+
# One-time host setup: daemon lifecycle is separate from API client commands.
|
|
66
|
+
ours-daemon config setup --port 3070 --state-dir /srv/ours
|
|
67
|
+
ours-daemon start
|
|
68
68
|
ours identity create-root --name 'Ada@server'
|
|
69
69
|
|
|
70
70
|
OURS_MESSENGER_STATE_DIR=/srv/ours-messenger \
|
|
@@ -95,11 +95,11 @@ OURS_MESSENGER_VAPID_PRIVATE_KEY optional secret; never expose to the browser
|
|
|
95
95
|
OURS_MESSENGER_VAPID_SUBJECT default mailto:admin@localhost
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
The
|
|
99
|
-
`dist/web
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
98
|
+
The browser application is built in the standalone `ours-web` repository. Set
|
|
99
|
+
`OURS_MESSENGER_WEB_DIR` to its `dist/web` directory if this server should host
|
|
100
|
+
that artifact; without it the API remains available and frontend routes report
|
|
101
|
+
503. Static hosting keeps `index.html` uncached and hashed assets immutable.
|
|
102
|
+
Use `npm run dev:server` for backend development.
|
|
103
103
|
|
|
104
104
|
Every state-changing HTTP request must carry `Content-Type: application/json`,
|
|
105
105
|
an exact single `Origin` equal to `OURS_MESSENGER_PUBLIC_ORIGIN`, and
|
|
@@ -134,9 +134,7 @@ The focused client does not persist messages, identities, receipts, or API
|
|
|
134
134
|
responses in browser storage. Its service worker caches only the application
|
|
135
135
|
shell and static assets for offline launch; all `/api/*` requests bypass it.
|
|
136
136
|
|
|
137
|
-
The web UI and its same-origin transport adapter
|
|
138
|
-
this repository; their presentation scope and transport exclusions are recorded
|
|
139
|
-
in `web/src/CANONICAL_UI_PROVENANCE.md`. The interface
|
|
137
|
+
The web UI and its same-origin transport adapter now live in the standalone `ours-web` repository. This repository builds only the Messenger backend. To optionally serve a separately built frontend, set `OURS_MESSENGER_WEB_DIR` to its `dist/web` directory; otherwise deploy the API behind the same-origin frontend gateway. The interface
|
|
140
138
|
includes grouped identity-root contacts; contact add, approval, rename and
|
|
141
139
|
removal; one-time/public invite creation and revocation; public bio editing;
|
|
142
140
|
message and attachment replies; drag/drop/paste and picker uploads with bounded
|
|
@@ -313,10 +311,11 @@ conversation reads, graceful lease release, bundle execution, token redaction,
|
|
|
313
311
|
`/mcp` 404, programmatic shutdown and partial-start rollback, receipt semantics,
|
|
314
312
|
REST/WebPush encryption and full payloads, reply correlation, immutable media and
|
|
315
313
|
version round-trips, hostile top-level media navigation, exact voice MIME/bytes,
|
|
316
|
-
sandboxed
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
314
|
+
sandboxed preview responses, corrupt push-state preservation/recovery and SSE
|
|
315
|
+
backpressure. UI, PWA, browser layout, and client read-gate tests live in `ours-web`.
|
|
316
|
+
The optional `tests/v1-live-push.integration.mjs` service integration requires
|
|
317
|
+
Firefox, public Autopush egress, and an explicit `OURS_MESSENGER_WEB_DIR` pointing
|
|
318
|
+
to a separately built frontend; it is outside the default local test suite.
|
|
320
319
|
|
|
321
320
|
## SDK lifecycle boundary
|
|
322
321
|
|
|
@@ -391,3 +390,50 @@ node scripts/check-build-selected.mjs --sdk /artifacts/ours.network-sdk-3.7.2.tg
|
|
|
391
390
|
```
|
|
392
391
|
|
|
393
392
|
For development against the selected, unpublished SDK/CLI sources, see [selected-source development](docs/selected-source-development.md).
|
|
393
|
+
|
|
394
|
+
### Gateway mount path
|
|
395
|
+
|
|
396
|
+
Set `OURS_MESSENGER_BASE_PATH=/base/messenger/` when a reverse proxy strips that prefix before forwarding to Messenger. `OURS_MESSENGER_PUBLIC_ORIGIN` remains the exact external origin, for example `https://ours.example`, with no path. Assets, API requests, browser routes, service-worker scope and presence WebSockets retain the configured mount. `ours-messenger-server capabilities` reports `messenger.gateway-prefix-v1`.
|
|
397
|
+
|
|
398
|
+
Messenger still has no application authentication. Use the installer's loopback gateway or an authenticated external proxy/tunnel. A shared gateway origin trusts every hosted application; path prefixes and Cowork's separate server-token prompt do not isolate or authenticate Messenger. Keep backend ports private and use the installer documentation's browser-authenticated entry configuration.
|
|
399
|
+
|
|
400
|
+
### Fleet web application
|
|
401
|
+
|
|
402
|
+
The live local Fleet application is available at `/fleet`; Messenger remains at `/chats`.
|
|
403
|
+
Use the companion Fleet gateway and its local password/session authentication.
|
|
404
|
+
See [Fleet setup and verification](docs/FLEET-PREVIEW.md) for connection requirements,
|
|
405
|
+
current coverage and limitations. `npm run test:fleet` runs the current isolated fixture gates.
|
|
406
|
+
The older mock walkthrough and its browser tests describe an earlier design stage.
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
### Dedicated notification service
|
|
410
|
+
|
|
411
|
+
Set `OURS_NOTIFICATIONS_ORIGIN` and a Messenger-scoped `OURS_NOTIFICATIONS_PRODUCER_TOKEN` to forward incoming messages/files to [ours-notifications](https://github.com/adapt-toolkit/ours-notifications). Both settings must be provided together. The canonical watcher durably queues notifications even without a local push binding, freezes projected content before its first HTTP attempt, and retries the same payload after outages/restarts. Keep the Messenger state directory across restarts. When configured, new events use the dedicated service; legacy pending push jobs may finish. Existing standalone push endpoints remain for compatibility.
|
|
412
|
+
|
|
413
|
+
Workspace enrollment supports optional `preserveProfile: true` on its protected POST endpoint. This skips human profile creation/replacement (including an absent profile); root checks and the signed binding command remain mandatory. The protected enrollment-identity response advertises `preserveProfile: true` so clients can fail closed against older servers. Omitted/false keeps fresh-host account profile setup.
|
|
414
|
+
|
|
415
|
+
Messenger may run as the Human root or as a permanent identity under it. For the latter, the enrollment-identity response also carries `rootCid`, the root the daemon describes for the bound identity; `POST /api/identity/profile` accepts both. Only a Messenger bound to the root itself signs the workspace binding on `POST /api/workspace/enroll`; for an identity under the root the caller obtains that signature from the root outside Messenger.
|
|
416
|
+
|
|
417
|
+
After successful contact removal, the notification producer durably retires that
|
|
418
|
+
conversation through the notification service's scoped `/api/v1/delete-target`
|
|
419
|
+
route. Pending sends for that contact are removed; cleanup follows any already
|
|
420
|
+
inflight send and retries after service outages or restart. Watch replay confirms
|
|
421
|
+
absence against a complete contacts/pending inventory before dropping an event.
|
|
422
|
+
Inventory errors preserve the queue. The gateway and notification service must
|
|
423
|
+
support this producer lifecycle route before source cleanup can be delivered.
|
|
424
|
+
|
|
425
|
+
Profile-preserving workspace enrollment reuses an already authenticated contact
|
|
426
|
+
with the exact pinned enrollment server CID. This permits a fresh signed account
|
|
427
|
+
challenge after the one-time invitation was used for registration retirement;
|
|
428
|
+
account-side invitation provenance or an exact signed replacement handoff still
|
|
429
|
+
controls proof acceptance.
|
|
430
|
+
|
|
431
|
+
`POST /api/workspace/unregister` carries the first-party retirement command when
|
|
432
|
+
Messenger already holds the Human root lease. It requires local API/CSRF
|
|
433
|
+
authentication, a permanent root matching `rootCid`, the exact ready enrollment
|
|
434
|
+
server contact, and well-formed workspace/host/nonce identifiers. An optional
|
|
435
|
+
three-field replacement challenge is forwarded unchanged. The account service
|
|
436
|
+
owns retirement authorization and cleanup; this route only sends the signed
|
|
437
|
+
command and acknowledges submission.
|
|
438
|
+
|
|
439
|
+
Conversation notifications use `/fleet/chats/contacts/:contactId`, escaping the ID once and preserving the matching message anchor. Contact retirement matches canonical contact identity independent of filters and anchors. Deploy the app, notification service, and producers together: old query-based conversation links are intentionally unsupported. Previously frozen delivery URLs replay unchanged for idempotency, and unsupported persisted cleanup URLs remain pending without being sent or blocking canonical cleanup. Contact lifecycle authorization and inventory checks still apply.
|
|
@@ -38,10 +38,21 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
38
38
|
var define_MESSENGER_BUILD_INFO_default;
|
|
39
39
|
var init_define_MESSENGER_BUILD_INFO = __esm({
|
|
40
40
|
"<define:__MESSENGER_BUILD_INFO__>"() {
|
|
41
|
-
define_MESSENGER_BUILD_INFO_default = { name: "@ours.network/messenger-server", version: "1.0.31-nightly.
|
|
41
|
+
define_MESSENGER_BUILD_INFO_default = { name: "@ours.network/messenger-server", version: "1.0.31-nightly.20", sha: "388e6a471fb581f710dcf25c704c973cf05670b7", dirty: true };
|
|
42
42
|
}
|
|
43
43
|
});
|
|
44
44
|
|
|
45
|
+
// src/base-path.ts
|
|
46
|
+
init_define_MESSENGER_BUILD_INFO();
|
|
47
|
+
function normalizeBasePath(value = "/") {
|
|
48
|
+
if (!/^\/(?:[A-Za-z0-9_-]+\/)*[A-Za-z0-9_-]*$/.test(value)) throw new Error("Base path must contain plain URL path segments");
|
|
49
|
+
return value === "/" ? "/" : value.replace(/\/$/, "") + "/";
|
|
50
|
+
}
|
|
51
|
+
function prefixDocument(html, basePath) {
|
|
52
|
+
const base = normalizeBasePath(basePath);
|
|
53
|
+
return html.replace("<head>", `<head><meta name="ours-base-path" content="${base}">`).replace(/((?:src|href)=")\.?\/(?!\/)([^"\s]+)(")/g, `$1${base}$2$3`);
|
|
54
|
+
}
|
|
55
|
+
|
|
45
56
|
// src/security.ts
|
|
46
57
|
init_define_MESSENGER_BUILD_INFO();
|
|
47
58
|
import { randomUUID } from "node:crypto";
|
|
@@ -84,6 +95,8 @@ export {
|
|
|
84
95
|
__toESM,
|
|
85
96
|
init_define_MESSENGER_BUILD_INFO,
|
|
86
97
|
define_MESSENGER_BUILD_INFO_default,
|
|
98
|
+
normalizeBasePath,
|
|
99
|
+
prefixDocument,
|
|
87
100
|
ConfigurationError,
|
|
88
101
|
operatorError,
|
|
89
102
|
reportFailure,
|