@nifrajs/web 3.3.0 → 4.0.0
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/dist/backend-only.d.ts +15 -0
- package/dist/backend-only.d.ts.map +1 -0
- package/dist/backend-only.js +16 -0
- package/dist/backend-only.js.map +1 -0
- package/dist/boundary.d.ts +5 -0
- package/dist/boundary.d.ts.map +1 -1
- package/dist/boundary.js +11 -2
- package/dist/boundary.js.map +1 -1
- package/dist/build-plan.d.ts +35 -6
- package/dist/build-plan.d.ts.map +1 -1
- package/dist/build-plan.js +89 -35
- package/dist/build-plan.js.map +1 -1
- package/dist/build-vite.d.ts +18 -0
- package/dist/build-vite.d.ts.map +1 -1
- package/dist/build-vite.js +97 -17
- package/dist/build-vite.js.map +1 -1
- package/dist/build.d.ts +72 -23
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +411 -98
- package/dist/build.js.map +1 -1
- package/dist/bun-dev-entry.d.ts +1 -1
- package/dist/bun-dev-entry.js +1 -1
- package/dist/cdn.d.ts +74 -0
- package/dist/cdn.d.ts.map +1 -0
- package/dist/cdn.js +132 -0
- package/dist/cdn.js.map +1 -0
- package/dist/client.d.ts +21 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +226 -15
- package/dist/client.js.map +1 -1
- package/dist/conformance.d.ts +4 -3
- package/dist/conformance.d.ts.map +1 -1
- package/dist/conformance.js +12 -3
- package/dist/conformance.js.map +1 -1
- package/dist/csp.d.ts +93 -0
- package/dist/csp.d.ts.map +1 -0
- package/dist/csp.js +122 -0
- package/dist/csp.js.map +1 -0
- package/dist/css-contract.d.ts +21 -0
- package/dist/css-contract.d.ts.map +1 -0
- package/dist/css-contract.js +28 -0
- package/dist/css-contract.js.map +1 -0
- package/dist/dev-client.d.ts +76 -0
- package/dist/dev-client.d.ts.map +1 -0
- package/dist/dev-client.js +280 -0
- package/dist/dev-client.js.map +1 -0
- package/dist/dev-diagnostics.d.ts +26 -2
- package/dist/dev-diagnostics.d.ts.map +1 -1
- package/dist/dev-diagnostics.js +38 -7
- package/dist/dev-diagnostics.js.map +1 -1
- package/dist/dev-error.d.ts +4 -13
- package/dist/dev-error.d.ts.map +1 -1
- package/dist/dev-error.js +46 -4
- package/dist/dev-error.js.map +1 -1
- package/dist/dev-feed.d.ts +298 -0
- package/dist/dev-feed.d.ts.map +1 -0
- package/dist/dev-feed.js +797 -0
- package/dist/dev-feed.js.map +1 -0
- package/dist/dev-indicator.d.ts +38 -0
- package/dist/dev-indicator.d.ts.map +1 -0
- package/dist/dev-indicator.js +93 -0
- package/dist/dev-indicator.js.map +1 -0
- package/dist/dev-session.d.ts +77 -0
- package/dist/dev-session.d.ts.map +1 -0
- package/dist/dev-session.js +580 -0
- package/dist/dev-session.js.map +1 -0
- package/dist/dev-sourcemap.d.ts +27 -0
- package/dist/dev-sourcemap.d.ts.map +1 -0
- package/dist/dev-sourcemap.js +235 -0
- package/dist/dev-sourcemap.js.map +1 -0
- package/dist/dev-ssr-graph.d.ts.map +1 -1
- package/dist/dev-ssr-graph.js +13 -5
- package/dist/dev-ssr-graph.js.map +1 -1
- package/dist/dev.d.ts +15 -2
- package/dist/dev.d.ts.map +1 -1
- package/dist/dev.js +69 -44
- package/dist/dev.js.map +1 -1
- package/dist/diagnostic-catalog.d.ts +35 -0
- package/dist/diagnostic-catalog.d.ts.map +1 -0
- package/dist/diagnostic-catalog.js +203 -0
- package/dist/diagnostic-catalog.js.map +1 -0
- package/dist/diagnostic-prompt.d.ts +49 -0
- package/dist/diagnostic-prompt.d.ts.map +1 -0
- package/dist/diagnostic-prompt.js +303 -0
- package/dist/diagnostic-prompt.js.map +1 -0
- package/dist/diagnostic.d.ts +17 -23
- package/dist/diagnostic.d.ts.map +1 -1
- package/dist/diagnostic.js +31 -39
- package/dist/diagnostic.js.map +1 -1
- package/dist/draft.d.ts.map +1 -1
- package/dist/draft.js +4 -1
- package/dist/draft.js.map +1 -1
- package/dist/fn.d.ts +5 -0
- package/dist/fn.d.ts.map +1 -1
- package/dist/fn.js +13 -3
- package/dist/fn.js.map +1 -1
- package/dist/fs.d.ts.map +1 -1
- package/dist/fs.js +4 -2
- package/dist/fs.js.map +1 -1
- package/dist/index.d.ts +15 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -12
- package/dist/index.js.map +1 -1
- package/dist/internal/cdn/cloudflare.d.ts +48 -0
- package/dist/internal/cdn/cloudflare.d.ts.map +1 -0
- package/dist/internal/cdn/cloudflare.js +94 -0
- package/dist/internal/cdn/cloudflare.js.map +1 -0
- package/dist/internal/cdn/core.d.ts +91 -0
- package/dist/internal/cdn/core.d.ts.map +1 -0
- package/dist/internal/cdn/core.js +220 -0
- package/dist/internal/cdn/core.js.map +1 -0
- package/dist/internal/cdn/fastly.d.ts +17 -0
- package/dist/internal/cdn/fastly.d.ts.map +1 -0
- package/dist/internal/cdn/fastly.js +43 -0
- package/dist/internal/cdn/fastly.js.map +1 -0
- package/dist/internal/cdn/vercel.d.ts +31 -0
- package/dist/internal/cdn/vercel.d.ts.map +1 -0
- package/dist/internal/cdn/vercel.js +56 -0
- package/dist/internal/cdn/vercel.js.map +1 -0
- package/dist/internal/code-unit-order.d.ts +4 -0
- package/dist/internal/code-unit-order.d.ts.map +1 -0
- package/dist/internal/code-unit-order.js +6 -0
- package/dist/internal/code-unit-order.js.map +1 -0
- package/dist/internal/codegen.d.ts +3 -0
- package/dist/internal/codegen.d.ts.map +1 -1
- package/dist/internal/codegen.js +151 -30
- package/dist/internal/codegen.js.map +1 -1
- package/dist/internal/dev-csp.d.ts +24 -0
- package/dist/internal/dev-csp.d.ts.map +1 -0
- package/dist/internal/dev-csp.js +160 -0
- package/dist/internal/dev-csp.js.map +1 -0
- package/dist/internal/dev-reserved.d.ts +25 -0
- package/dist/internal/dev-reserved.d.ts.map +1 -0
- package/dist/internal/dev-reserved.js +39 -0
- package/dist/internal/dev-reserved.js.map +1 -0
- package/dist/internal/html-spans.d.ts +10 -0
- package/dist/internal/html-spans.d.ts.map +1 -0
- package/dist/internal/html-spans.js +46 -0
- package/dist/internal/html-spans.js.map +1 -0
- package/dist/internal/loading-runtime.d.ts +44 -0
- package/dist/internal/loading-runtime.d.ts.map +1 -0
- package/dist/internal/loading-runtime.js +206 -0
- package/dist/internal/loading-runtime.js.map +1 -0
- package/dist/internal/matches-runtime.d.ts +8 -0
- package/dist/internal/matches-runtime.d.ts.map +1 -0
- package/dist/internal/matches-runtime.js +61 -0
- package/dist/internal/matches-runtime.js.map +1 -0
- package/dist/internal/mount-shadow.d.ts +36 -0
- package/dist/internal/mount-shadow.d.ts.map +1 -0
- package/dist/internal/mount-shadow.js +65 -0
- package/dist/internal/mount-shadow.js.map +1 -0
- package/dist/internal/node-builtins.d.ts +3 -0
- package/dist/internal/node-builtins.d.ts.map +1 -0
- package/dist/internal/node-builtins.js +79 -0
- package/dist/internal/node-builtins.js.map +1 -0
- package/dist/internal/output-guard.d.ts +65 -0
- package/dist/internal/output-guard.d.ts.map +1 -0
- package/dist/internal/output-guard.js +630 -0
- package/dist/internal/output-guard.js.map +1 -0
- package/dist/internal/page-execution.d.ts +69 -0
- package/dist/internal/page-execution.d.ts.map +1 -0
- package/dist/internal/page-execution.js +1021 -0
- package/dist/internal/page-execution.js.map +1 -0
- package/dist/internal/parity.d.ts +21 -0
- package/dist/internal/parity.d.ts.map +1 -1
- package/dist/internal/parity.js +104 -22
- package/dist/internal/parity.js.map +1 -1
- package/dist/internal/private-env.d.ts +12 -0
- package/dist/internal/private-env.d.ts.map +1 -0
- package/dist/internal/private-env.js +335 -0
- package/dist/internal/private-env.js.map +1 -0
- package/dist/internal/public-url.d.ts +3 -0
- package/dist/internal/public-url.d.ts.map +1 -0
- package/dist/internal/public-url.js +18 -0
- package/dist/internal/public-url.js.map +1 -0
- package/dist/internal/render-document.d.ts +37 -21
- package/dist/internal/render-document.d.ts.map +1 -1
- package/dist/internal/render-document.js +104 -65
- package/dist/internal/render-document.js.map +1 -1
- package/dist/internal/request-url.d.ts +3 -0
- package/dist/internal/request-url.d.ts.map +1 -0
- package/dist/internal/request-url.js +14 -0
- package/dist/internal/request-url.js.map +1 -0
- package/dist/internal/response-controls.d.ts +75 -0
- package/dist/internal/response-controls.d.ts.map +1 -0
- package/dist/internal/response-controls.js +256 -0
- package/dist/internal/response-controls.js.map +1 -0
- package/dist/internal/runtime-contract.d.ts +11 -16
- package/dist/internal/runtime-contract.d.ts.map +1 -1
- package/dist/internal/runtime-contract.js.map +1 -1
- package/dist/internal/secret-scan.d.ts +104 -0
- package/dist/internal/secret-scan.d.ts.map +1 -0
- package/dist/internal/secret-scan.js +485 -0
- package/dist/internal/secret-scan.js.map +1 -0
- package/dist/internal/server-boundary.d.ts +6 -29
- package/dist/internal/server-boundary.d.ts.map +1 -1
- package/dist/internal/server-boundary.js +6 -66
- package/dist/internal/server-boundary.js.map +1 -1
- package/dist/internal/source-map.d.ts +47 -0
- package/dist/internal/source-map.d.ts.map +1 -0
- package/dist/internal/source-map.js +225 -0
- package/dist/internal/source-map.js.map +1 -0
- package/dist/internal/target-compat.d.ts +27 -0
- package/dist/internal/target-compat.d.ts.map +1 -0
- package/dist/internal/target-compat.js +77 -0
- package/dist/internal/target-compat.js.map +1 -0
- package/dist/internal/timing-safe-equal.d.ts +6 -0
- package/dist/internal/timing-safe-equal.d.ts.map +1 -1
- package/dist/internal/timing-safe-equal.js +10 -0
- package/dist/internal/timing-safe-equal.js.map +1 -1
- package/dist/internal/vitals-runtime.d.ts +18 -0
- package/dist/internal/vitals-runtime.d.ts.map +1 -0
- package/dist/internal/vitals-runtime.js +38 -0
- package/dist/internal/vitals-runtime.js.map +1 -0
- package/dist/internal/web-app.d.ts +56 -8
- package/dist/internal/web-app.d.ts.map +1 -1
- package/dist/internal/web-app.js +215 -772
- package/dist/internal/web-app.js.map +1 -1
- package/dist/internal/zone-graph.d.ts +89 -0
- package/dist/internal/zone-graph.d.ts.map +1 -0
- package/dist/internal/zone-graph.js +492 -0
- package/dist/internal/zone-graph.js.map +1 -0
- package/dist/isr.d.ts +83 -6
- package/dist/isr.d.ts.map +1 -1
- package/dist/isr.js +301 -39
- package/dist/isr.js.map +1 -1
- package/dist/llms-txt.d.ts +3 -0
- package/dist/llms-txt.d.ts.map +1 -1
- package/dist/llms-txt.js +37 -9
- package/dist/llms-txt.js.map +1 -1
- package/dist/manifest.d.ts +221 -14
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +386 -9
- package/dist/manifest.js.map +1 -1
- package/dist/module-graph.d.ts +26 -5
- package/dist/module-graph.d.ts.map +1 -1
- package/dist/module-graph.js +17 -7
- package/dist/module-graph.js.map +1 -1
- package/dist/navigation.d.ts +17 -3
- package/dist/navigation.d.ts.map +1 -1
- package/dist/navigation.js +11 -5
- package/dist/navigation.js.map +1 -1
- package/dist/nonce.d.ts +47 -0
- package/dist/nonce.d.ts.map +1 -0
- package/dist/nonce.js +63 -0
- package/dist/nonce.js.map +1 -0
- package/dist/plugins/css-modules.d.ts.map +1 -1
- package/dist/plugins/css-modules.js +4 -3
- package/dist/plugins/css-modules.js.map +1 -1
- package/dist/plugins/kit.d.ts +9 -0
- package/dist/plugins/kit.d.ts.map +1 -1
- package/dist/plugins/kit.js +18 -0
- package/dist/plugins/kit.js.map +1 -1
- package/dist/plugins/svg.d.ts +22 -3
- package/dist/plugins/svg.d.ts.map +1 -1
- package/dist/plugins/svg.js +112 -1
- package/dist/plugins/svg.js.map +1 -1
- package/dist/plugins/vite-leak-guard.d.ts +107 -3
- package/dist/plugins/vite-leak-guard.d.ts.map +1 -1
- package/dist/plugins/vite-leak-guard.js +378 -17
- package/dist/plugins/vite-leak-guard.js.map +1 -1
- package/dist/plugins/vite-zone-guard.d.ts +61 -0
- package/dist/plugins/vite-zone-guard.d.ts.map +1 -0
- package/dist/plugins/vite-zone-guard.js +208 -0
- package/dist/plugins/vite-zone-guard.js.map +1 -0
- package/dist/plugins/zone-guard.d.ts +27 -0
- package/dist/plugins/zone-guard.d.ts.map +1 -0
- package/dist/plugins/zone-guard.js +72 -0
- package/dist/plugins/zone-guard.js.map +1 -0
- package/dist/prerender.d.ts +10 -0
- package/dist/prerender.d.ts.map +1 -1
- package/dist/prerender.js +35 -3
- package/dist/prerender.js.map +1 -1
- package/dist/public-dir.d.ts +9 -0
- package/dist/public-dir.d.ts.map +1 -1
- package/dist/public-dir.js +131 -48
- package/dist/public-dir.js.map +1 -1
- package/dist/pwa-manifest.d.ts +68 -0
- package/dist/pwa-manifest.d.ts.map +1 -0
- package/dist/pwa-manifest.js +178 -0
- package/dist/pwa-manifest.js.map +1 -0
- package/dist/query.js +4 -4
- package/dist/query.js.map +1 -1
- package/dist/render-seam.d.ts +42 -2
- package/dist/render-seam.d.ts.map +1 -1
- package/dist/render-seam.js +6 -0
- package/dist/render-seam.js.map +1 -1
- package/dist/route-manifest.d.ts +3 -0
- package/dist/route-manifest.d.ts.map +1 -1
- package/dist/route-manifest.js +26 -3
- package/dist/route-manifest.js.map +1 -1
- package/dist/route-types.d.ts +24 -0
- package/dist/route-types.d.ts.map +1 -0
- package/dist/route-types.js +195 -0
- package/dist/route-types.js.map +1 -0
- package/dist/router.d.ts +28 -6
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +129 -40
- package/dist/router.js.map +1 -1
- package/dist/trusted-html.d.ts +34 -0
- package/dist/trusted-html.d.ts.map +1 -0
- package/dist/trusted-html.js +35 -0
- package/dist/trusted-html.js.map +1 -0
- package/dist/vitals.d.ts +33 -0
- package/dist/vitals.d.ts.map +1 -0
- package/dist/vitals.js +16 -0
- package/dist/vitals.js.map +1 -0
- package/dist/vite.d.ts +16 -1
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +187 -36
- package/dist/vite.js.map +1 -1
- package/dist/zones.d.ts +70 -0
- package/dist/zones.d.ts.map +1 -0
- package/dist/zones.js +365 -0
- package/dist/zones.js.map +1 -0
- package/package.json +67 -14
- package/src/backend-only.ts +16 -0
- package/src/boundary.ts +18 -5
- package/src/build-plan.ts +113 -36
- package/src/build-vite.ts +124 -15
- package/src/build.ts +535 -102
- package/src/bun-dev-entry.ts +1 -1
- package/src/cdn.ts +216 -0
- package/src/client.ts +251 -18
- package/src/conformance.ts +16 -3
- package/src/csp.ts +194 -0
- package/src/css-contract.ts +44 -0
- package/src/dev-client.ts +349 -0
- package/src/dev-diagnostics.ts +60 -7
- package/src/dev-error.ts +49 -5
- package/src/dev-feed.ts +1140 -0
- package/src/dev-indicator.ts +113 -0
- package/src/dev-session.ts +729 -0
- package/src/dev-sourcemap.ts +281 -0
- package/src/dev-ssr-graph.ts +16 -5
- package/src/dev.ts +86 -43
- package/src/diagnostic-catalog.ts +243 -0
- package/src/diagnostic-prompt.ts +355 -0
- package/src/diagnostic.ts +63 -66
- package/src/draft.ts +4 -1
- package/src/fn.ts +19 -3
- package/src/fs.ts +13 -2
- package/src/index.ts +57 -10
- package/src/internal/cdn/cloudflare.ts +146 -0
- package/src/internal/cdn/core.ts +316 -0
- package/src/internal/cdn/fastly.ts +62 -0
- package/src/internal/cdn/vercel.ts +95 -0
- package/src/internal/code-unit-order.ts +5 -0
- package/src/internal/codegen.ts +180 -29
- package/src/internal/dev-csp.ts +176 -0
- package/src/internal/dev-reserved.ts +52 -0
- package/src/internal/html-spans.ts +50 -0
- package/src/internal/loading-runtime.ts +244 -0
- package/src/internal/matches-runtime.ts +62 -0
- package/src/internal/mount-shadow.ts +88 -0
- package/src/internal/node-builtins.ts +79 -0
- package/src/internal/output-guard.ts +701 -0
- package/src/internal/page-execution.ts +1371 -0
- package/src/internal/parity.ts +150 -36
- package/src/internal/private-env.ts +334 -0
- package/src/internal/public-url.ts +22 -0
- package/src/internal/render-document.ts +153 -73
- package/src/internal/request-url.ts +14 -0
- package/src/internal/response-controls.ts +284 -0
- package/src/internal/runtime-contract.ts +10 -15
- package/src/internal/secret-scan.ts +623 -0
- package/src/internal/server-boundary.ts +6 -69
- package/src/internal/source-map.ts +256 -0
- package/src/internal/target-compat.ts +92 -0
- package/src/internal/timing-safe-equal.ts +13 -0
- package/src/internal/vitals-runtime.ts +53 -0
- package/src/internal/web-app.ts +290 -879
- package/src/internal/zone-graph.ts +593 -0
- package/src/isr.ts +366 -39
- package/src/llms-txt.ts +44 -8
- package/src/manifest.ts +671 -17
- package/src/module-graph.ts +53 -9
- package/src/navigation.ts +29 -6
- package/src/nonce.ts +104 -0
- package/src/plugins/css-modules.ts +5 -3
- package/src/plugins/kit.ts +24 -0
- package/src/plugins/svg.ts +135 -4
- package/src/plugins/vite-leak-guard.ts +529 -16
- package/src/plugins/vite-zone-guard.ts +263 -0
- package/src/plugins/zone-guard.ts +110 -0
- package/src/prerender.ts +49 -3
- package/src/public-dir.ts +135 -49
- package/src/pwa-manifest.ts +226 -0
- package/src/query.ts +4 -4
- package/src/render-seam.ts +46 -1
- package/src/route-manifest.ts +15 -3
- package/src/route-types.ts +264 -0
- package/src/router.ts +163 -63
- package/src/trusted-html.ts +44 -0
- package/src/vitals.ts +44 -0
- package/src/vite.ts +207 -36
- package/src/zones.ts +430 -0
- package/dist/plugins/vite-server-only.d.ts +0 -49
- package/dist/plugins/vite-server-only.d.ts.map +0 -1
- package/dist/plugins/vite-server-only.js +0 -57
- package/dist/plugins/vite-server-only.js.map +0 -1
- package/dist/server-only.d.ts +0 -21
- package/dist/server-only.d.ts.map +0 -1
- package/dist/server-only.js +0 -25
- package/dist/server-only.js.map +0 -1
- package/src/plugins/vite-server-only.ts +0 -75
- package/src/server-only.ts +0 -25
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The in-page issues indicator: a badge a dev page shows once the browser reported an error, opening a
|
|
3
|
+
* panel with each error's code, message, source location, recognised fix and a Copy prompt button per
|
|
4
|
+
* fix. The dev client loads it on the first error the server answers for (so a page without errors
|
|
5
|
+
* never fetches it), and the server only ever hands a page the errors that page itself reported.
|
|
6
|
+
*
|
|
7
|
+
* Rendered into a closed shadow root with a constructable stylesheet, so the page's styles and a strict
|
|
8
|
+
* `style-src` leave it alone; every string goes through `textContent`. Dev only.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/** One reported error, as the ingest endpoint answers it. */
|
|
12
|
+
export interface DevIssue {
|
|
13
|
+
readonly id: string
|
|
14
|
+
readonly seq: number
|
|
15
|
+
readonly count: number
|
|
16
|
+
readonly code: string
|
|
17
|
+
readonly category: string
|
|
18
|
+
readonly message: string
|
|
19
|
+
readonly page?: string | undefined
|
|
20
|
+
readonly at?: string | undefined
|
|
21
|
+
readonly codeframe?:
|
|
22
|
+
| { readonly lines: ReadonlyArray<{ number: number; text: string; caret: boolean }> }
|
|
23
|
+
| undefined
|
|
24
|
+
readonly cause?: string | undefined
|
|
25
|
+
readonly fix?: string | undefined
|
|
26
|
+
readonly docs?: string | undefined
|
|
27
|
+
readonly prompts: ReadonlyArray<{ readonly label: string; readonly prompt: string }>
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** At most this many issues reach a page per batch, and the panel keeps the newest of this many. */
|
|
31
|
+
export const DEV_INDICATOR_MAX_ISSUES = 10
|
|
32
|
+
|
|
33
|
+
// ES2017, no dependencies. `__nifraDevClient` is the inline client's state object: `issues` queues what
|
|
34
|
+
// arrived before this module ran, `indicator` is how the client hands over later ones.
|
|
35
|
+
export const DEV_INDICATOR_SOURCE = String.raw`(function(){
|
|
36
|
+
var C=window.__nifraDevClient;
|
|
37
|
+
if(!C||typeof C!=="object"||C.indicator)return;
|
|
38
|
+
var MAX=50,issues=[],hidden=false,open=false,host,root,badge,panel,list,status;
|
|
39
|
+
var CSS=":host{all:initial}"+
|
|
40
|
+
".badge{position:fixed;left:16px;bottom:16px;z-index:2147483647;display:flex;align-items:center;gap:8px;font:600 13px/1 ui-sans-serif,system-ui,sans-serif;color:#fff;background:#b42318;border:0;border-radius:999px;padding:9px 14px;cursor:pointer;box-shadow:0 2px 10px rgba(0,0,0,.3)}"+
|
|
41
|
+
".badge:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid #fdb022;outline-offset:2px}"+
|
|
42
|
+
".panel{position:fixed;left:16px;bottom:60px;z-index:2147483647;width:min(600px,calc(100vw - 32px));max-height:min(70vh,640px);overflow:auto;box-sizing:border-box;font:13px/1.5 ui-sans-serif,system-ui,sans-serif;color:#1f2328;background:#fff;border:1px solid #d0d7de;border-radius:10px;box-shadow:0 8px 30px rgba(0,0,0,.25)}"+
|
|
43
|
+
".head{position:sticky;top:0;display:flex;align-items:center;gap:8px;padding:10px 14px;background:inherit;border-bottom:1px solid #d0d7de}"+
|
|
44
|
+
".head h2{margin:0;font-size:13px;flex:1}"+
|
|
45
|
+
".head button{font:inherit;background:none;border:1px solid #d0d7de;border-radius:6px;padding:3px 8px;cursor:pointer;color:inherit}"+
|
|
46
|
+
"ol{list-style:none;margin:0;padding:0}"+
|
|
47
|
+
"li{padding:12px 14px;border-bottom:1px solid #d0d7de}"+
|
|
48
|
+
".tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}"+
|
|
49
|
+
".tag{font:600 11px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;padding:0 7px;border-radius:999px;background:#ffebe9;color:#a40e26}"+
|
|
50
|
+
".tag.cat{background:#eaeef2;color:#424a53}"+
|
|
51
|
+
".msg{margin:0 0 6px;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap;word-break:break-word;max-height:9em;overflow:auto}"+
|
|
52
|
+
".at{font:12px ui-monospace,SFMono-Regular,Menlo,monospace;color:#57606a;margin:0 0 6px}"+
|
|
53
|
+
"pre{margin:0 0 8px;padding:8px;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;background:#f6f8fa;border-radius:6px;overflow:auto}"+
|
|
54
|
+
".caret{background:#ffebe9;display:block}"+
|
|
55
|
+
".fix{margin:0 0 8px;color:#424a53}"+
|
|
56
|
+
".actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}"+
|
|
57
|
+
".actions button{font:inherit;font-size:12px;color:#fff;background:#1f6feb;border:0;border-radius:6px;padding:5px 10px;cursor:pointer}"+
|
|
58
|
+
".actions a{font-size:12px;color:#0969da}"+
|
|
59
|
+
"textarea{width:100%;box-sizing:border-box;margin-top:6px;font:11px/1.4 ui-monospace,Menlo,monospace}"+
|
|
60
|
+
".status{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}"+
|
|
61
|
+
"@media (prefers-color-scheme:dark){.panel{color:#e6edf3;background:#161b22;border-color:#30363d}.head,li{border-color:#30363d}.head button{border-color:#30363d}.tag.cat{background:#30363d;color:#c9d1d9}.at,.fix{color:#9da7b3}pre{background:#0d1117}.caret{background:#3d1d20}.tag{background:#3d1d20;color:#ffa198}.actions a{color:#58a6ff}}";
|
|
62
|
+
function el(tag,cls,text){var e=document.createElement(tag);if(cls)e.className=cls;if(text!=null)e.textContent=String(text);return e}
|
|
63
|
+
function say(text){if(status)status.textContent=text}
|
|
64
|
+
function copy(text,into){
|
|
65
|
+
function manual(){var t=el("textarea");t.readOnly=true;t.rows=8;t.value=text;into.appendChild(t);t.focus();t.select();var ok=false;try{ok=document.execCommand("copy")}catch(e){}
|
|
66
|
+
if(ok){t.remove();say("Copied. Paste it into your coding agent.")}else say("Select the text and copy it.")}
|
|
67
|
+
if(window.isSecureContext&&navigator.clipboard)navigator.clipboard.writeText(text).then(function(){say("Copied. Paste it into your coding agent.")},manual);else manual()}
|
|
68
|
+
function item(issue){
|
|
69
|
+
var li=el("li"),tags=el("div","tags");
|
|
70
|
+
tags.appendChild(el("span","tag",issue.code));tags.appendChild(el("span","tag cat",issue.category+(issue.count>1?" x"+issue.count:"")));
|
|
71
|
+
li.appendChild(tags);li.appendChild(el("p","msg",issue.message));
|
|
72
|
+
if(issue.at)li.appendChild(el("p","at",issue.at));
|
|
73
|
+
if(issue.codeframe&&issue.codeframe.lines){var pre=el("pre");issue.codeframe.lines.forEach(function(l){var row=el("span",l.caret?"caret":"",(l.caret?"> ":" ")+l.number+" | "+l.text);pre.appendChild(row);if(!l.caret)pre.appendChild(document.createTextNode("\n"))});li.appendChild(pre)}
|
|
74
|
+
if(issue.fix)li.appendChild(el("p","fix",issue.fix));
|
|
75
|
+
var actions=el("div","actions");
|
|
76
|
+
(issue.prompts||[]).forEach(function(p){var b=el("button","",issue.prompts.length>1?"Copy prompt: "+p.label:"Copy prompt");b.type="button";b.addEventListener("click",function(){copy(p.prompt,li)});actions.appendChild(b)});
|
|
77
|
+
if(issue.docs&&/^https:\/\//.test(issue.docs)){var a=el("a","","Docs");a.href=issue.docs;a.target="_blank";a.rel="noreferrer";actions.appendChild(a)}
|
|
78
|
+
li.appendChild(actions);return li}
|
|
79
|
+
function render(){
|
|
80
|
+
if(hidden)return;
|
|
81
|
+
var n=issues.length;badge.textContent=n+(n===1?" issue":" issues");badge.setAttribute("aria-expanded",open?"true":"false");
|
|
82
|
+
panel.hidden=!open;
|
|
83
|
+
while(list.firstChild)list.removeChild(list.firstChild);
|
|
84
|
+
for(var i=issues.length-1;i>=0;i--)list.appendChild(item(issues[i]))}
|
|
85
|
+
function toggle(to){open=to;render();if(open){var first=panel.querySelector("button");if(first)first.focus()}else badge.focus()}
|
|
86
|
+
function mount(){
|
|
87
|
+
host=document.createElement("nifra-dev-indicator");
|
|
88
|
+
root=host.attachShadow({mode:"closed"});
|
|
89
|
+
try{var sheet=new CSSStyleSheet();sheet.replaceSync(CSS);root.adoptedStyleSheets=[sheet]}catch(e){root.appendChild(el("style","",CSS))}
|
|
90
|
+
badge=el("button","badge");badge.type="button";badge.setAttribute("aria-controls","nifra-dev-panel");
|
|
91
|
+
badge.addEventListener("click",function(){toggle(!open)});
|
|
92
|
+
panel=el("section","panel");panel.id="nifra-dev-panel";panel.setAttribute("aria-label","nifra dev issues");panel.hidden=true;
|
|
93
|
+
var head=el("div","head");head.appendChild(el("h2","","nifra dev: browser errors"));
|
|
94
|
+
var hide=el("button","","Hide");hide.type="button";hide.addEventListener("click",function(){hidden=true;host.remove()});
|
|
95
|
+
var close=el("button","","Close");close.type="button";close.addEventListener("click",function(){toggle(false)});
|
|
96
|
+
head.appendChild(close);head.appendChild(hide);panel.appendChild(head);
|
|
97
|
+
list=el("ol");panel.appendChild(list);
|
|
98
|
+
status=el("div","status");status.setAttribute("role","status");status.setAttribute("aria-live","polite");
|
|
99
|
+
root.appendChild(badge);root.appendChild(panel);root.appendChild(status);
|
|
100
|
+
root.addEventListener("keydown",function(e){if(e.key==="Escape"&&open){e.stopPropagation();toggle(false)}});
|
|
101
|
+
(document.body||document.documentElement).appendChild(host)}
|
|
102
|
+
function add(list2){
|
|
103
|
+
if(hidden||!list2||!list2.length)return;
|
|
104
|
+
for(var i=0;i<list2.length;i++){var x=list2[i];if(!x||typeof x.id!=="string")continue;
|
|
105
|
+
for(var j=0;j<issues.length;j++)if(issues[j].id===x.id){issues.splice(j,1);break}
|
|
106
|
+
issues.push(x)}
|
|
107
|
+
while(issues.length>MAX)issues.shift();
|
|
108
|
+
if(!host)mount();
|
|
109
|
+
render()}
|
|
110
|
+
C.indicator={add:function(l){try{add(l)}catch(e){}}};
|
|
111
|
+
var queued=C.issues||[];C.issues=[];
|
|
112
|
+
if(document.body)C.indicator.add(queued);else document.addEventListener("DOMContentLoaded",function(){C.indicator.add(queued)});
|
|
113
|
+
})()`
|