@ours.network/messenger-server 1.0.31-nightly.7 → 1.0.31-nightly.9
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 +19 -12
- package/dist/chunks/{chunk-DCYUZTNK.js → chunk-HU34I5SB.js} +1 -1
- package/dist/chunks/{server-TAUHXIOW.js → server-QVJD4Z33.js} +2 -2
- package/dist/cli.js +2 -2
- package/package.json +8 -36
- package/dist/web/assets/abnfDiagram-VCTEODGH-CsM1O6Sj.js +0 -2
- package/dist/web/assets/abnfDiagram-VCTEODGH-CsM1O6Sj.js.map +0 -1
- package/dist/web/assets/arc-Dr_c27EK.js +0 -2
- package/dist/web/assets/arc-Dr_c27EK.js.map +0 -1
- package/dist/web/assets/architectureDiagram-5GKGNRK7-W5JkxewR.js +0 -37
- package/dist/web/assets/architectureDiagram-5GKGNRK7-W5JkxewR.js.map +0 -1
- package/dist/web/assets/blockDiagram-I7D4REHJ-CtR5PufM.js +0 -130
- package/dist/web/assets/blockDiagram-I7D4REHJ-CtR5PufM.js.map +0 -1
- package/dist/web/assets/browser-44thQEpR.js +0 -9
- package/dist/web/assets/browser-44thQEpR.js.map +0 -1
- package/dist/web/assets/c4Diagram-7LVT6UL2-rlejRLnh.js +0 -39
- package/dist/web/assets/c4Diagram-7LVT6UL2-rlejRLnh.js.map +0 -1
- package/dist/web/assets/channel-DhTTlGWe.js +0 -2
- package/dist/web/assets/channel-DhTTlGWe.js.map +0 -1
- package/dist/web/assets/chunk-2Q5K7J3B-fvzWm2Pc.js +0 -2
- package/dist/web/assets/chunk-2Q5K7J3B-fvzWm2Pc.js.map +0 -1
- package/dist/web/assets/chunk-5VM5RSS4-cBchmFx7.js +0 -16
- package/dist/web/assets/chunk-5VM5RSS4-cBchmFx7.js.map +0 -1
- package/dist/web/assets/chunk-F27PBJKO-BLGEfbbz.js +0 -2
- package/dist/web/assets/chunk-F27PBJKO-BLGEfbbz.js.map +0 -1
- package/dist/web/assets/chunk-IMKFNOWR-DE99S_zF.js +0 -232
- package/dist/web/assets/chunk-IMKFNOWR-DE99S_zF.js.map +0 -1
- package/dist/web/assets/chunk-JWPE2WC7-8NO77qhH.js +0 -2
- package/dist/web/assets/chunk-JWPE2WC7-8NO77qhH.js.map +0 -1
- package/dist/web/assets/chunk-POPQ4Y6H-CRvx6MAt.js +0 -2
- package/dist/web/assets/chunk-POPQ4Y6H-CRvx6MAt.js.map +0 -1
- package/dist/web/assets/chunk-SVP7TREG-ygtbXxah.js +0 -89
- package/dist/web/assets/chunk-SVP7TREG-ygtbXxah.js.map +0 -1
- package/dist/web/assets/chunk-TICWLB2K-KwYJUYq4.js +0 -207
- package/dist/web/assets/chunk-TICWLB2K-KwYJUYq4.js.map +0 -1
- package/dist/web/assets/chunk-XXDRQBXY-LRFN_ylH.js +0 -2
- package/dist/web/assets/chunk-XXDRQBXY-LRFN_ylH.js.map +0 -1
- package/dist/web/assets/classDiagram-ZZMXUADV-RvSlJCxD.js +0 -2
- package/dist/web/assets/classDiagram-ZZMXUADV-RvSlJCxD.js.map +0 -1
- package/dist/web/assets/classDiagram-v2-VYDZK3BY-RvSlJCxD.js +0 -2
- package/dist/web/assets/classDiagram-v2-VYDZK3BY-RvSlJCxD.js.map +0 -1
- package/dist/web/assets/cose-bilkent-JH36ORCC-DLc2ss_B.js +0 -2
- package/dist/web/assets/cose-bilkent-JH36ORCC-DLc2ss_B.js.map +0 -1
- package/dist/web/assets/cynefin-OW5HDTMX-Kr8RTAaI.js +0 -179
- package/dist/web/assets/cynefin-OW5HDTMX-Kr8RTAaI.js.map +0 -1
- package/dist/web/assets/cynefinDiagram-5FMLGOSQ-CFFl985G.js +0 -63
- package/dist/web/assets/cynefinDiagram-5FMLGOSQ-CFFl985G.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-sz8ilME5.js +0 -5
- package/dist/web/assets/dagre-GXQ25YYZ-sz8ilME5.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-DkIHXkJz.js +0 -31
- package/dist/web/assets/diagram-S7CK7UJ4-DkIHXkJz.js.map +0 -1
- package/dist/web/assets/diagram-UQ7AKVKN-CqfU72yU.js +0 -42
- package/dist/web/assets/diagram-UQ7AKVKN-CqfU72yU.js.map +0 -1
- package/dist/web/assets/diagram-VSXAHHWV-B54K2zMN.js +0 -4
- package/dist/web/assets/diagram-VSXAHHWV-B54K2zMN.js.map +0 -1
- package/dist/web/assets/diagram-VX7I27RA-Bc1SxkYv.js +0 -25
- package/dist/web/assets/diagram-VX7I27RA-Bc1SxkYv.js.map +0 -1
- package/dist/web/assets/diagram-Z3DM3KII-DWscKBlC.js +0 -25
- package/dist/web/assets/diagram-Z3DM3KII-DWscKBlC.js.map +0 -1
- package/dist/web/assets/ebnfDiagram-PWID7BFC-BOCJhRBj.js +0 -2
- package/dist/web/assets/ebnfDiagram-PWID7BFC-BOCJhRBj.js.map +0 -1
- package/dist/web/assets/erDiagram-RLTQ6QDP-BEHTIlCd.js +0 -100
- package/dist/web/assets/erDiagram-RLTQ6QDP-BEHTIlCd.js.map +0 -1
- package/dist/web/assets/flowDiagram-HODETNUW-Bi7g8Jq1.js +0 -169
- package/dist/web/assets/flowDiagram-HODETNUW-Bi7g8Jq1.js.map +0 -1
- package/dist/web/assets/ganttDiagram-EL5Y4UJY-DG1MCrP_.js +0 -293
- package/dist/web/assets/ganttDiagram-EL5Y4UJY-DG1MCrP_.js.map +0 -1
- package/dist/web/assets/gitGraphDiagram-WWUBYQGX-BFPhdxmK.js +0 -107
- package/dist/web/assets/gitGraphDiagram-WWUBYQGX-BFPhdxmK.js.map +0 -1
- package/dist/web/assets/index-B3tML0Mx.js +0 -332
- package/dist/web/assets/index-B3tML0Mx.js.map +0 -1
- package/dist/web/assets/index-D5Q5XY4t.css +0 -1
- package/dist/web/assets/infoDiagram-27XIBGKW-cpX58LMT.js +0 -3
- package/dist/web/assets/infoDiagram-27XIBGKW-cpX58LMT.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-DGGlXMl3.js +0 -71
- package/dist/web/assets/ishikawaDiagram-5VMMS53U-DGGlXMl3.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-HqeZOfxZ.js +0 -140
- package/dist/web/assets/journeyDiagram-3NMN7TZE-HqeZOfxZ.js.map +0 -1
- package/dist/web/assets/jsQR-BcYr0YPw.js +0 -2
- package/dist/web/assets/jsQR-BcYr0YPw.js.map +0 -1
- package/dist/web/assets/kanban-definition-UXKFOSKX-Dk-UCpS9.js +0 -90
- package/dist/web/assets/kanban-definition-UXKFOSKX-Dk-UCpS9.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-LADH46lk.js +0 -2
- package/dist/web/assets/layout-LADH46lk.js.map +0 -1
- package/dist/web/assets/linear-BCJaik9M.js +0 -2
- package/dist/web/assets/linear-BCJaik9M.js.map +0 -1
- package/dist/web/assets/mermaid.core-4qwMNlHt.js +0 -313
- package/dist/web/assets/mermaid.core-4qwMNlHt.js.map +0 -1
- package/dist/web/assets/mindmap-definition-YA3MSWOX-Dq6SBuAr.js +0 -97
- package/dist/web/assets/mindmap-definition-YA3MSWOX-Dq6SBuAr.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-Dzdz76oe.js +0 -2
- package/dist/web/assets/pegDiagram-XKGWAZYB-Dzdz76oe.js.map +0 -1
- package/dist/web/assets/pieDiagram-E7YTZNPT-B-mYnsIi.js +0 -40
- package/dist/web/assets/pieDiagram-E7YTZNPT-B-mYnsIi.js.map +0 -1
- package/dist/web/assets/quadrantDiagram-AXDQQJYC-B_o5DWK_.js +0 -8
- package/dist/web/assets/quadrantDiagram-AXDQQJYC-B_o5DWK_.js.map +0 -1
- package/dist/web/assets/railroadDiagram-O6MQD6OU-BKNRBBpI.js +0 -2
- package/dist/web/assets/railroadDiagram-O6MQD6OU-BKNRBBpI.js.map +0 -1
- package/dist/web/assets/requirementDiagram-BXWQKSXE-B7BXl7WO.js +0 -85
- package/dist/web/assets/requirementDiagram-BXWQKSXE-B7BXl7WO.js.map +0 -1
- package/dist/web/assets/sankeyDiagram-P5KCCOFB-CEYD41Wi.js +0 -41
- package/dist/web/assets/sankeyDiagram-P5KCCOFB-CEYD41Wi.js.map +0 -1
- package/dist/web/assets/sequenceDiagram-WJ2MYXX4-CxLqXWeO.js +0 -163
- package/dist/web/assets/sequenceDiagram-WJ2MYXX4-CxLqXWeO.js.map +0 -1
- package/dist/web/assets/sizeCapture-INFHLROL-DDSfV8kn.js +0 -2
- package/dist/web/assets/sizeCapture-INFHLROL-DDSfV8kn.js.map +0 -1
- package/dist/web/assets/stateDiagram-D77RDMKH-BXDoEImt.js +0 -2
- package/dist/web/assets/stateDiagram-D77RDMKH-BXDoEImt.js.map +0 -1
- package/dist/web/assets/stateDiagram-v2-MP3YSRHH-BqXWAduY.js +0 -2
- package/dist/web/assets/stateDiagram-v2-MP3YSRHH-BqXWAduY.js.map +0 -1
- package/dist/web/assets/swimlanes-42K2YHIH-B2k44tI9.js +0 -2
- package/dist/web/assets/swimlanes-42K2YHIH-B2k44tI9.js.map +0 -1
- package/dist/web/assets/swimlanesDiagram-VR7AAH4N-DJBKJjao.js +0 -9
- package/dist/web/assets/swimlanesDiagram-VR7AAH4N-DJBKJjao.js.map +0 -1
- package/dist/web/assets/timeline-definition-24CTP7MA-BBmJTedx.js +0 -121
- package/dist/web/assets/timeline-definition-24CTP7MA-BBmJTedx.js.map +0 -1
- package/dist/web/assets/vennDiagram-4TSXK5OY-tWv0ZpyS.js +0 -35
- package/dist/web/assets/vennDiagram-4TSXK5OY-tWv0ZpyS.js.map +0 -1
- package/dist/web/assets/wardleyDiagram-VM6X3IG4-X3cMij72.js +0 -79
- package/dist/web/assets/wardleyDiagram-VM6X3IG4-X3cMij72.js.map +0 -1
- package/dist/web/assets/xychartDiagram-S5SC5T6Z-D5PBGDl-.js +0 -8
- package/dist/web/assets/xychartDiagram-S5SC5T6Z-D5PBGDl-.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 -190
- package/dist/web/version.json +0 -1
package/README.md
CHANGED
|
@@ -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
|
|
|
@@ -397,3 +396,11 @@ For development against the selected, unpublished SDK/CLI sources, see [selected
|
|
|
397
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`.
|
|
398
397
|
|
|
399
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.
|
|
@@ -38,7 +38,7 @@ 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.9", sha: "6a01873ba636d187e4410aef45723a5a77d7d691", dirty: true };
|
|
42
42
|
}
|
|
43
43
|
});
|
|
44
44
|
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
publicEngineError,
|
|
11
11
|
publicInternalError,
|
|
12
12
|
reportFailure
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-HU34I5SB.js";
|
|
14
14
|
|
|
15
15
|
// node_modules/bn.js/lib/bn.js
|
|
16
16
|
var require_bn = __commonJS({
|
|
@@ -20056,7 +20056,7 @@ function transformHtmlPreview(bytes) {
|
|
|
20056
20056
|
}
|
|
20057
20057
|
}
|
|
20058
20058
|
|
|
20059
|
-
//
|
|
20059
|
+
// src/html-preview-policy.mjs
|
|
20060
20060
|
init_define_MESSENGER_BUILD_INFO();
|
|
20061
20061
|
var HTML_PREVIEW_CSP = [
|
|
20062
20062
|
"default-src 'none'",
|
package/dist/cli.js
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
normalizeBasePath,
|
|
8
8
|
operatorError,
|
|
9
9
|
reportFailure
|
|
10
|
-
} from "./chunks/chunk-
|
|
10
|
+
} from "./chunks/chunk-HU34I5SB.js";
|
|
11
11
|
|
|
12
12
|
// src/cli.ts
|
|
13
13
|
init_define_MESSENGER_BUILD_INFO();
|
|
@@ -131,7 +131,7 @@ async function main() {
|
|
|
131
131
|
}
|
|
132
132
|
if (process.argv.length !== 3) throw new ConfigurationError("serve does not accept command-line options");
|
|
133
133
|
const cfg = loadConfig();
|
|
134
|
-
const { start } = await import("./chunks/server-
|
|
134
|
+
const { start } = await import("./chunks/server-QVJD4Z33.js");
|
|
135
135
|
const handle = await start(cfg, BUILD_INFO);
|
|
136
136
|
let closing = false;
|
|
137
137
|
const shutdown = (signal) => {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ours.network/messenger-server",
|
|
3
|
-
"version": "1.0.31-nightly.
|
|
4
|
-
"description": "Self-hosted
|
|
3
|
+
"version": "1.0.31-nightly.9",
|
|
4
|
+
"description": "Self-hosted Messenger REST/SSE backend for one identity on a shared Ours daemon.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "FSL-1.1-Apache-2.0",
|
|
7
7
|
"author": "Adapt Toolkit",
|
|
@@ -28,59 +28,31 @@
|
|
|
28
28
|
},
|
|
29
29
|
"scripts": {
|
|
30
30
|
"build": "npm run typecheck && node build.mjs",
|
|
31
|
-
"dev": "vite --config vite.config.ts",
|
|
32
31
|
"dev:server": "tsx src/cli.ts serve",
|
|
33
32
|
"serve": "node dist/cli.js serve",
|
|
34
33
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
35
|
-
"test:swipe": "node --import tsx web/tests/swipe-reply-core.test.ts",
|
|
36
|
-
"test:reply-navigation": "node tests/browser-reply-navigation.test.mjs",
|
|
37
|
-
"test:timestamps": "TZ=Europe/Prague node --import tsx web/tests/timestamp.test.tsx",
|
|
38
|
-
"test:mobile": "MOBILE_BROWSER_ENGINES=chromium node tests/browser-mobile-layout-webkit.test.mjs",
|
|
39
|
-
"test:mobile-webkit": "MOBILE_BROWSER_ENGINES=webkit node tests/browser-mobile-layout-webkit.test.mjs && HTML_BROWSER_ENGINE=webkit node --import tsx tests/browser-html-preview.test.mjs && SLASH_BROWSER_ENGINE=webkit node tests/browser-slash-commands.test.mjs",
|
|
40
|
-
"test:mobile-webkit-ci": "if [ \"${CI:-}\" = \"true\" ]; then npx playwright install --with-deps webkit && npm run test:mobile-webkit; else echo 'WebKit gate runs in CI (host dependencies unavailable locally)'; fi",
|
|
41
34
|
"test:startup": "node --import tsx tests/startup-readiness.test.mjs",
|
|
42
35
|
"test:runtime-catalog-candidate": "node --import tsx tests/runtime-command-catalog-reopen-e2e.test.mjs",
|
|
43
|
-
"test:offline": "for f in tests/base-path.test.mjs tests/
|
|
36
|
+
"test:offline": "for f in tests/base-path.test.mjs tests/build-epoch.test.mjs tests/owner-session.test.mjs tests/v1-runtime.test.mjs tests/typed-commands-core.test.mjs tests/shared-daemon-contract.test.mjs tests/room-envelope-matrix.test.mjs tests/bundle-smoke.test.mjs tests/build-metadata.test.mjs tests/production-security.test.mjs tests/conversation-page.test.mjs tests/media-response.test.mjs tests/html-preview-transform.test.mjs tests/html-preview-response.test.mjs tests/push-store.test.mjs tests/push-store-hardening.test.mjs tests/push-delivery.test.mjs tests/push-queue-saturation.test.mjs tests/events.test.mjs tests/watch-cursor.test.mjs tests/watch-reconcile.test.mjs tests/introduction-send-guard.test.mjs tests/sse-e2e.test.mjs tests/presence.test.mjs tests/static-hosting.test.mjs tests/room-preview.test.mjs; do echo \"# $f\"; node --import tsx \"$f\" || exit 1; done",
|
|
44
37
|
"test:loopback": "for f in tests/shared-daemon-e2e.test.mjs tests/typed-command-loopback-e2e.test.mjs tests/introduction-send.test.mjs tests/rest-e2e.test.mjs; do echo \"# $f\"; node --import tsx \"$f\" || exit 1; done",
|
|
45
|
-
"test
|
|
46
|
-
"test": "npm run build && npm run test:swipe && npm run test:timestamps && npm run test:mobile && npm run test:mobile-webkit-ci && npm run test:startup && npm run test:offline && npm run test:loopback && npm run test:browser"
|
|
38
|
+
"test": "npm run build && npm run test:startup && npm run test:offline && npm run test:loopback"
|
|
47
39
|
},
|
|
48
40
|
"dependencies": {
|
|
49
41
|
"@eslint-community/regexpp": "4.12.2",
|
|
50
|
-
"@
|
|
51
|
-
"@ours.network/sdk": "3.8.1-nightly.13",
|
|
52
|
-
"@radix-ui/react-dialog": "^1.1.23",
|
|
53
|
-
"framer-motion": "^12.43.0",
|
|
54
|
-
"jsqr": "^1.4.0",
|
|
55
|
-
"lucide-react": "^0.468.0",
|
|
56
|
-
"mdast-util-from-markdown": "^2.0.3",
|
|
57
|
-
"mdast-util-gfm": "^3.1.0",
|
|
58
|
-
"mermaid": "^11.16.1",
|
|
59
|
-
"micromark-extension-gfm": "^3.0.0",
|
|
42
|
+
"@ours.network/sdk": "3.8.1-nightly.15",
|
|
60
43
|
"parse5": "^8.0.1",
|
|
61
|
-
"qrcode": "^1.5.4",
|
|
62
|
-
"react": "^18.3.1",
|
|
63
|
-
"react-dom": "^18.3.1",
|
|
64
|
-
"react-markdown": "^10.1.0",
|
|
65
|
-
"remark-gfm": "^4.0.1",
|
|
66
44
|
"web-push": "^3.6.7",
|
|
67
45
|
"ws": "^8.21.0"
|
|
68
46
|
},
|
|
69
47
|
"devDependencies": {
|
|
70
|
-
"@ours.network/cli": "2.8.1-nightly.
|
|
48
|
+
"@ours.network/cli": "2.8.1-nightly.12",
|
|
49
|
+
"@ours.network/daemon": "3.8.1-nightly.7",
|
|
71
50
|
"@playwright/test": "^1.62.1",
|
|
72
|
-
"@tailwindcss/vite": "^4.3.3",
|
|
73
51
|
"@types/node": "^20.14.0",
|
|
74
|
-
"@types/react": "^18.3.3",
|
|
75
|
-
"@types/react-dom": "^18.3.0",
|
|
76
52
|
"@types/web-push": "^3.6.4",
|
|
77
53
|
"@types/ws": "^8.18.1",
|
|
78
|
-
"@vitejs/plugin-react": "^4.7.0",
|
|
79
54
|
"esbuild": "^0.25.0",
|
|
80
|
-
"tailwindcss": "^4.3.3",
|
|
81
55
|
"tsx": "^4.19.0",
|
|
82
|
-
"typescript": "^5.5.4"
|
|
83
|
-
"vite": "^6.4.3",
|
|
84
|
-
"@ours.network/daemon": "3.8.1-nightly.5"
|
|
56
|
+
"typescript": "^5.5.4"
|
|
85
57
|
}
|
|
86
58
|
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{g as p,r as u,d as a}from"./chunk-SVP7TREG-ygtbXxah.js";import{p as f}from"./chunk-JWPE2WC7-8NO77qhH.js";import{_ as n,l as o}from"./mermaid.core-4qwMNlHt.js";import{M as c,b as d}from"./cynefin-OW5HDTMX-Kr8RTAaI.js";import"./index-B3tML0Mx.js";var v=d().RailroadAbnf.parser.LangiumParser,i=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),l=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:l,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=n(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:i(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},B={parser:R,db:a,renderer:u,styles:p};export{B as diagram};
|
|
2
|
-
//# sourceMappingURL=abnfDiagram-VCTEODGH-CsM1O6Sj.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"abnfDiagram-VCTEODGH-CsM1O6Sj.js","sources":["../../../node_modules/mermaid/dist/chunks/mermaid.core/abnfDiagram-VCTEODGH.mjs"],"sourcesContent":["import {\n db,\n getStyles,\n renderer\n} from \"./chunk-SVP7TREG.mjs\";\nimport {\n populateCommonDb\n} from \"./chunk-JWPE2WC7.mjs\";\nimport \"./chunk-CLGD4ZFX.mjs\";\nimport \"./chunk-DU6HZSFF.mjs\";\nimport {\n log\n} from \"./chunk-X3CZISLH.mjs\";\nimport {\n __name\n} from \"./chunk-Y2CYZVJY.mjs\";\n\n// src/diagrams/railroad/parser/abnfParser.ts\nimport {\n MermaidParseError,\n createRailroadAbnfServices\n} from \"@mermaid-js/parser\";\nvar langiumParser = createRailroadAbnfServices().RailroadAbnf.parser.LangiumParser;\nvar transformAlternation = /* @__PURE__ */ __name((alt) => {\n const alternatives = alt.alternatives.map(transformConcatenation);\n if (alternatives.length === 1) {\n return alternatives[0];\n }\n return {\n type: \"choice\",\n alternatives\n };\n}, \"transformAlternation\");\nvar transformConcatenation = /* @__PURE__ */ __name((concat) => {\n const elements = concat.elements.map(transformElement);\n if (elements.length === 1) {\n return elements[0];\n }\n return {\n type: \"sequence\",\n elements\n };\n}, \"transformConcatenation\");\nvar parseRepeat = /* @__PURE__ */ __name((repeat) => {\n if (repeat.includes(\"*\")) {\n const [minStr, maxStr] = repeat.split(\"*\");\n const min = minStr ? parseInt(minStr, 10) : 0;\n const max = maxStr ? parseInt(maxStr, 10) : Infinity;\n return { min, max };\n }\n const exact = parseInt(repeat, 10);\n return { min: exact, max: exact };\n}, \"parseRepeat\");\nvar transformElement = /* @__PURE__ */ __name((element) => {\n const inner = transformPrimary(element.primary);\n if (!element.repeat) {\n return inner;\n }\n const { min, max } = parseRepeat(element.repeat);\n if (min === 0 && max === 1) {\n return { type: \"optional\", element: inner };\n }\n return {\n type: \"repetition\",\n element: inner,\n min,\n max\n };\n}, \"transformElement\");\nvar transformPrimary = /* @__PURE__ */ __name((primary) => {\n switch (primary.$type) {\n case \"AbnfStringLiteral\":\n return {\n type: \"terminal\",\n value: primary.value\n };\n case \"AbnfNumVal\":\n return {\n type: \"terminal\",\n value: primary.value\n };\n case \"AbnfRuleName\":\n return {\n type: \"nonterminal\",\n name: primary.name\n };\n case \"AbnfGroup\":\n return transformAlternation(primary.element);\n case \"AbnfOptionalGroup\":\n return {\n type: \"optional\",\n element: transformAlternation(primary.element)\n };\n default:\n throw new Error(`Unsupported ABNF primary node: ${primary.$type}`);\n }\n}, \"transformPrimary\");\nvar transformRule = /* @__PURE__ */ __name((rule) => {\n return {\n name: rule.name,\n definition: transformAlternation(rule.definition)\n };\n}, \"transformRule\");\nvar populateDb = /* @__PURE__ */ __name((ast) => {\n populateCommonDb(ast, db);\n if (ast.title) {\n db.setTitle(ast.title);\n }\n ast.rules.map((rule) => db.addRule(transformRule(rule)));\n}, \"populateDb\");\nvar parser = {\n parse: /* @__PURE__ */ __name((input) => {\n db.clear();\n log.debug(\"[ABNF Parser] Starting Langium parse\");\n const result = langiumParser.parse(input);\n if (result.lexerErrors.length > 0 || result.parserErrors.length > 0) {\n throw new MermaidParseError(result);\n }\n const ast = result.value;\n log.debug(\"[ABNF Parser] Parsed rules:\", ast.rules.length);\n populateDb(ast);\n log.debug(\"[ABNF Parser] Parse complete\");\n }, \"parse\"),\n parser: {\n yy: db\n }\n};\n\n// src/diagrams/railroad/abnfDiagram.ts\nvar diagram = {\n parser,\n db,\n renderer,\n styles: getStyles\n};\nexport {\n diagram\n};\n"],"names":["langiumParser","createRailroadAbnfServices","transformAlternation","__name","alt","alternatives","transformConcatenation","concat","elements","transformElement","parseRepeat","repeat","minStr","maxStr","min","max","exact","element","inner","transformPrimary","primary","transformRule","rule","populateDb","ast","populateCommonDb","db","parser","input","log","result","MermaidParseError","diagram","renderer","getStyles"],"mappings":"4PAsBA,IAAIA,EAAgBC,EAA0B,EAAG,aAAa,OAAO,cACjEC,EAAuCC,EAAQC,GAAQ,CACzD,MAAMC,EAAeD,EAAI,aAAa,IAAIE,CAAsB,EAChE,OAAID,EAAa,SAAW,EACnBA,EAAa,CAAC,EAEhB,CACL,KAAM,SACN,aAAAA,CACJ,CACA,EAAG,sBAAsB,EACrBC,EAAyCH,EAAQI,GAAW,CAC9D,MAAMC,EAAWD,EAAO,SAAS,IAAIE,CAAgB,EACrD,OAAID,EAAS,SAAW,EACfA,EAAS,CAAC,EAEZ,CACL,KAAM,WACN,SAAAA,CACJ,CACA,EAAG,wBAAwB,EACvBE,EAA8BP,EAAQQ,GAAW,CACnD,GAAIA,EAAO,SAAS,GAAG,EAAG,CACxB,KAAM,CAACC,EAAQC,CAAM,EAAIF,EAAO,MAAM,GAAG,EACnCG,EAAMF,EAAS,SAASA,EAAQ,EAAE,EAAI,EACtCG,EAAMF,EAAS,SAASA,EAAQ,EAAE,EAAI,IAC5C,MAAO,CAAE,IAAAC,EAAK,IAAAC,CAAG,CACnB,CACA,MAAMC,EAAQ,SAASL,EAAQ,EAAE,EACjC,MAAO,CAAE,IAAKK,EAAO,IAAKA,CAAK,CACjC,EAAG,aAAa,EACZP,EAAmCN,EAAQc,GAAY,CACzD,MAAMC,EAAQC,EAAiBF,EAAQ,OAAO,EAC9C,GAAI,CAACA,EAAQ,OACX,OAAOC,EAET,KAAM,CAAE,IAAAJ,EAAK,IAAAC,CAAG,EAAKL,EAAYO,EAAQ,MAAM,EAC/C,OAAIH,IAAQ,GAAKC,IAAQ,EAChB,CAAE,KAAM,WAAY,QAASG,CAAK,EAEpC,CACL,KAAM,aACN,QAASA,EACT,IAAAJ,EACA,IAAAC,CACJ,CACA,EAAG,kBAAkB,EACjBI,EAAmChB,EAAQiB,GAAY,CACzD,OAAQA,EAAQ,MAAK,CACnB,IAAK,oBACH,MAAO,CACL,KAAM,WACN,MAAOA,EAAQ,KACvB,EACI,IAAK,aACH,MAAO,CACL,KAAM,WACN,MAAOA,EAAQ,KACvB,EACI,IAAK,eACH,MAAO,CACL,KAAM,cACN,KAAMA,EAAQ,IACtB,EACI,IAAK,YACH,OAAOlB,EAAqBkB,EAAQ,OAAO,EAC7C,IAAK,oBACH,MAAO,CACL,KAAM,WACN,QAASlB,EAAqBkB,EAAQ,OAAO,CACrD,EACI,QACE,MAAM,IAAI,MAAM,kCAAkCA,EAAQ,KAAK,EAAE,CACvE,CACA,EAAG,kBAAkB,EACjBC,EAAgClB,EAAQmB,IACnC,CACL,KAAMA,EAAK,KACX,WAAYpB,EAAqBoB,EAAK,UAAU,CACpD,GACG,eAAe,EACdC,EAA6BpB,EAAQqB,GAAQ,CAC/CC,EAAiBD,EAAKE,CAAE,EACpBF,EAAI,OACNE,EAAG,SAASF,EAAI,KAAK,EAEvBA,EAAI,MAAM,IAAKF,GAASI,EAAG,QAAQL,EAAcC,CAAI,CAAC,CAAC,CACzD,EAAG,YAAY,EACXK,EAAS,CACX,MAAuBxB,EAAQyB,GAAU,CACvCF,EAAG,MAAK,EACRG,EAAI,MAAM,sCAAsC,EAChD,MAAMC,EAAS9B,EAAc,MAAM4B,CAAK,EACxC,GAAIE,EAAO,YAAY,OAAS,GAAKA,EAAO,aAAa,OAAS,EAChE,MAAM,IAAIC,EAAkBD,CAAM,EAEpC,MAAMN,EAAMM,EAAO,MACnBD,EAAI,MAAM,8BAA+BL,EAAI,MAAM,MAAM,EACzDD,EAAWC,CAAG,EACdK,EAAI,MAAM,8BAA8B,CAC1C,EAAG,OAAO,EACV,OAAQ,CACN,GAAIH,CACR,CACA,EAGIM,EAAU,CACZ,OAAAL,EACA,GAAAD,EACA,SAAAO,EACA,OAAQC,CACV","x_google_ignoreList":[0]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a0 as ln,a1 as an,a2 as H,a3 as q,a4 as B,a5 as un,a6 as y,a7 as tn,a8 as L,a9 as _,aa as rn,ab as o,ac as on,ad as sn,ae as fn}from"./mermaid.core-4qwMNlHt.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,C,a){var O=I-l,i=D-h,n=C-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,F=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*L(on(0,T*T*R-P*P)),j=(P*g-m*S)/R,z=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=j-F,e=z-t,r=w-F,G=p-t;return x*x+e*e>r*r+G*G&&(j=w,z=p),{cx:j,cy:z,x01:-n,y01:-d,x11:j*(v/T-1),y11:z*(v/T-1)}}function hn(){var l=cn,h=yn,I=B(0),D=null,v=gn,A=dn,C=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,F=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(F>tn-y)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*H(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>y&&(D?+D.apply(this,arguments):L(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(z>y){var G=sn(z/u*q(j)),M=sn(z/s*q(j));(P-=G*2)>y?(G*=t?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>y?(M*=t?1:-1,m+=M,g-=M):(S=0,m=g=(f+c)/2)}var J=s*H(m),K=s*q(m),N=u*H(T),Q=u*q(T);if(w>y){var U=s*H(g),V=s*q(g),X=u*H(R),Y=u*q(R),E;if(F<an)if(E=pn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(fn((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=W(X,Y,J,K,s,x,t),r=W(U,V,N,Q,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(J,K),a.arc(0,0,s,m,g,!t)):a.moveTo(J,K),!(u>y)||!(P>y)?a.lineTo(N,Q):p>y?(e=W(N,Q,U,V,u,-p,t),r=W(J,K,X,Y,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[H(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|
|
2
|
-
//# sourceMappingURL=arc-Dr_c27EK.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"arc-Dr_c27EK.js","sources":["../../../node_modules/d3-shape/src/arc.js"],"sourcesContent":["import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it’s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n"],"names":["arcInnerRadius","d","arcOuterRadius","arcStartAngle","arcEndAngle","arcPadAngle","intersect","x0","y0","x1","y1","x2","y2","x3","y3","x10","y10","x32","y32","t","epsilon","cornerTangents","r1","rc","cw","x01","y01","lo","sqrt","ox","oy","x11","y11","x00","y00","dx","dy","d2","r","D","max","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","d3arc","innerRadius","outerRadius","cornerRadius","constant","padRadius","startAngle","endAngle","padAngle","context","path","withPath","arc","buffer","r0","a0","halfPi","a1","da","abs","tau","cos","sin","a01","a11","a00","a10","da0","da1","ap","rp","min","rc0","rc1","t0","t1","p0","asin","p1","oc","pi","ax","ay","bx","by","kc","acos","lc","atan2","a","_"],"mappings":"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","x_google_ignoreList":[0]}
|