@nifrajs/web 2.2.0 → 2.4.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/README.md +3 -3
- package/dist/build-vite.d.ts +4 -4
- package/dist/build-vite.d.ts.map +1 -1
- package/dist/build-vite.js +20 -74
- package/dist/build-vite.js.map +1 -1
- package/dist/build.d.ts +64 -42
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +100 -78
- 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/chunk-names.js +1 -1
- package/dist/client.d.ts +3 -9
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +201 -29
- package/dist/client.js.map +1 -1
- package/dist/conformance.d.ts +2 -2
- package/dist/conformance.js +3 -3
- package/dist/deferred.d.ts +11 -11
- package/dist/deferred.d.ts.map +1 -1
- package/dist/deferred.js +16 -16
- package/dist/dev-diagnostics.d.ts +20 -0
- package/dist/dev-diagnostics.d.ts.map +1 -0
- package/dist/dev-diagnostics.js +34 -0
- package/dist/dev-diagnostics.js.map +1 -0
- package/dist/dev-error.d.ts +10 -13
- package/dist/dev-error.d.ts.map +1 -1
- package/dist/dev-error.js +51 -37
- package/dist/dev-error.js.map +1 -1
- package/dist/dev-port.d.ts +3 -3
- package/dist/dev-port.d.ts.map +1 -1
- package/dist/dev-port.js +10 -4
- package/dist/dev-port.js.map +1 -1
- package/dist/dev.d.ts +4 -4
- package/dist/dev.d.ts.map +1 -1
- package/dist/dev.js +28 -12
- package/dist/dev.js.map +1 -1
- package/dist/diagnostic.d.ts +93 -0
- package/dist/diagnostic.d.ts.map +1 -0
- package/dist/diagnostic.js +205 -0
- package/dist/diagnostic.js.map +1 -0
- package/dist/draft.d.ts +12 -12
- package/dist/draft.js +11 -11
- package/dist/fn-state.d.ts +56 -0
- package/dist/fn-state.d.ts.map +1 -0
- package/dist/fn-state.js +77 -0
- package/dist/fn-state.js.map +1 -0
- package/dist/fn.d.ts +111 -0
- package/dist/fn.d.ts.map +1 -0
- package/dist/fn.js +125 -0
- package/dist/fn.js.map +1 -0
- package/dist/fonts-google.d.ts +9 -9
- package/dist/fonts-google.js +10 -10
- package/dist/fonts.d.ts +7 -7
- package/dist/fonts.js +1 -1
- package/dist/forms.d.ts +8 -8
- package/dist/fs.d.ts +1 -1
- package/dist/fs.js +1 -1
- package/dist/index.d.ts +151 -70
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +317 -139
- package/dist/index.js.map +1 -1
- package/dist/internal/head-attributes.d.ts +15 -0
- package/dist/internal/head-attributes.d.ts.map +1 -0
- package/dist/internal/head-attributes.js +99 -0
- package/dist/internal/head-attributes.js.map +1 -0
- package/dist/internal/script-types.d.ts +14 -0
- package/dist/internal/script-types.d.ts.map +1 -0
- package/dist/internal/script-types.js +17 -0
- package/dist/internal/script-types.js.map +1 -0
- package/dist/internal/server-boundary.d.ts +60 -0
- package/dist/internal/server-boundary.d.ts.map +1 -0
- package/dist/internal/server-boundary.js +174 -0
- package/dist/internal/server-boundary.js.map +1 -0
- package/dist/internal/timing-safe-equal.d.ts +1 -1
- package/dist/internal/timing-safe-equal.js +1 -1
- package/dist/internal/vite-import.d.ts +63 -0
- package/dist/internal/vite-import.d.ts.map +1 -0
- package/dist/internal/vite-import.js +94 -0
- package/dist/internal/vite-import.js.map +1 -0
- package/dist/islands.d.ts +5 -5
- package/dist/islands.js +5 -5
- package/dist/isr.d.ts +15 -15
- package/dist/isr.js +7 -7
- package/dist/manifest.d.ts +73 -35
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +10 -16
- package/dist/manifest.js.map +1 -1
- package/dist/module-graph.d.ts +5 -5
- package/dist/module-graph.js +4 -4
- package/dist/navigation.d.ts +120 -5
- package/dist/navigation.d.ts.map +1 -1
- package/dist/navigation.js +37 -5
- package/dist/navigation.js.map +1 -1
- package/dist/plugins/css-modules.d.ts +3 -3
- package/dist/plugins/css-modules.js +0 -0
- package/dist/plugins/kit.d.ts +8 -8
- package/dist/plugins/kit.js +9 -9
- package/dist/plugins/scss.js +3 -3
- package/dist/plugins/vite-leak-guard.d.ts +1 -1
- package/dist/plugins/vite-leak-guard.js +1 -1
- package/dist/plugins/vite-server-fn.d.ts +23 -0
- package/dist/plugins/vite-server-fn.d.ts.map +1 -0
- package/dist/plugins/vite-server-fn.js +51 -0
- package/dist/plugins/vite-server-fn.js.map +1 -0
- package/dist/plugins/vite-server-only.d.ts +49 -0
- package/dist/plugins/vite-server-only.d.ts.map +1 -0
- package/dist/plugins/vite-server-only.js +57 -0
- package/dist/plugins/vite-server-only.js.map +1 -0
- package/dist/prerender.d.ts +5 -5
- package/dist/prerender.js +7 -7
- package/dist/query.d.ts +10 -10
- package/dist/query.js +15 -15
- package/dist/route-manifest.d.ts +1 -1
- package/dist/route-manifest.js +2 -2
- package/dist/router.d.ts +30 -21
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +62 -32
- package/dist/router.js.map +1 -1
- package/dist/search.d.ts +94 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +232 -0
- package/dist/search.js.map +1 -0
- package/dist/server-only.d.ts +6 -6
- package/dist/server-only.js +7 -7
- package/dist/service-worker.d.ts +56 -0
- package/dist/service-worker.d.ts.map +1 -0
- package/dist/service-worker.js +127 -0
- package/dist/service-worker.js.map +1 -0
- package/dist/vite.d.ts +16 -14
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +51 -24
- package/dist/vite.js.map +1 -1
- package/package.json +38 -4
- package/server-manifest.d.ts +31 -0
- package/src/build-vite.ts +24 -77
- package/src/build.ts +137 -105
- package/src/bun-dev-entry.ts +1 -1
- package/src/chunk-names.ts +1 -1
- package/src/client.ts +215 -32
- package/src/conformance.ts +3 -3
- package/src/deferred.ts +17 -17
- package/src/dev-diagnostics.ts +47 -0
- package/src/dev-error.ts +64 -33
- package/src/dev-port.ts +17 -5
- package/src/dev.ts +36 -20
- package/src/diagnostic.ts +284 -0
- package/src/draft.ts +15 -15
- package/src/fn-state.ts +107 -0
- package/src/fn.ts +199 -0
- package/src/fonts-google.ts +13 -13
- package/src/fonts.ts +7 -7
- package/src/forms.ts +8 -8
- package/src/fs.ts +2 -2
- package/src/index.ts +460 -181
- package/src/internal/head-attributes.ts +109 -0
- package/src/internal/script-types.ts +18 -0
- package/src/internal/server-boundary.ts +187 -0
- package/src/internal/timing-safe-equal.ts +1 -1
- package/src/internal/vite-import.ts +92 -0
- package/src/islands.ts +7 -7
- package/src/isr.ts +17 -17
- package/src/manifest.ts +83 -42
- package/src/module-graph.ts +6 -6
- package/src/navigation.ts +151 -5
- package/src/plugins/css-modules.ts +0 -0
- package/src/plugins/kit.ts +11 -11
- package/src/plugins/scss.ts +3 -3
- package/src/plugins/vite-leak-guard.ts +2 -2
- package/src/plugins/vite-server-fn.ts +67 -0
- package/src/plugins/vite-server-only.ts +75 -0
- package/src/prerender.ts +10 -10
- package/src/query.ts +22 -22
- package/src/route-manifest.ts +3 -3
- package/src/router.ts +98 -45
- package/src/search.ts +297 -0
- package/src/server-only.ts +7 -7
- package/src/service-worker.ts +165 -0
- package/src/vite.ts +61 -32
package/dist/build.d.ts
CHANGED
|
@@ -34,7 +34,7 @@ export interface BuildClientOptions {
|
|
|
34
34
|
* Prefix that opts an environment variable into the **client** bundle (Vite/Next convention; default
|
|
35
35
|
* `"PUBLIC_"`). Every var in the build environment whose name starts with this prefix is baked into
|
|
36
36
|
* the client `define` as `"process.env.NAME": JSON.stringify(value)`, so `process.env.PUBLIC_API_URL`
|
|
37
|
-
* compiles to its literal value in the browser. Vars WITHOUT the prefix are never exposed
|
|
37
|
+
* compiles to its literal value in the browser. Vars WITHOUT the prefix are never exposed - the bare
|
|
38
38
|
* `process.env` define resolves them to `undefined`, so server secrets can't leak into the client
|
|
39
39
|
* bundle. Set to `""` to disable auto-exposure entirely (no var is baked in). `options.define` still
|
|
40
40
|
* wins over an auto-exposed var (it's layered last). Sourced from `Bun.env` (falls back to
|
|
@@ -82,7 +82,7 @@ export declare function cloudflareRouteRules(publicFiles: readonly string[],
|
|
|
82
82
|
* a dangerous one to arrive at by forgetting the argument.
|
|
83
83
|
*/
|
|
84
84
|
routePatterns: readonly string[]): CloudflareRouteRules;
|
|
85
|
-
/** The built asset map
|
|
85
|
+
/** The built asset map - the server reads `entry` for the client script + serves `assets`. */
|
|
86
86
|
/**
|
|
87
87
|
* Copy `from` into `to`, returning the URL paths copied (sorted).
|
|
88
88
|
*
|
|
@@ -94,9 +94,9 @@ export declare function copyPublicDir(from: string, to: string): Promise<string[
|
|
|
94
94
|
export interface BuildManifest {
|
|
95
95
|
/** URL of the client entry module (content-hashed). */
|
|
96
96
|
readonly entry: string;
|
|
97
|
-
/** URLs of every emitted asset (entry + chunks)
|
|
97
|
+
/** URLs of every emitted asset (entry + chunks) - for serving + preloading. */
|
|
98
98
|
readonly assets: readonly string[];
|
|
99
|
-
/** `routeId → [layout chunk URLs…, own chunk URL]`
|
|
99
|
+
/** `routeId → [layout chunk URLs…, own chunk URL]` - the chunks a route needs, for `createWebApp`'s
|
|
100
100
|
* `routePreload` (`<link rel="modulepreload">` the matched route alongside the entry). Each route +
|
|
101
101
|
* layout is also a build entrypoint, so it gets a named chunk the bootstrap's lazy import dedupes to. */
|
|
102
102
|
readonly routes: Readonly<Record<string, readonly string[]>>;
|
|
@@ -104,16 +104,16 @@ export interface BuildManifest {
|
|
|
104
104
|
* directory per request, and lets an adapter that needs a file list (CDN upload, platform static
|
|
105
105
|
* assets) consume one. Omitted when there is no `public/`. */
|
|
106
106
|
readonly publicFiles?: readonly string[];
|
|
107
|
-
/** The app's bundled, content-hashed stylesheet(s)
|
|
107
|
+
/** The app's bundled, content-hashed stylesheet(s) - the bootstrap's **aggregate** CSS (every
|
|
108
108
|
* `import './x.css'` reachable from the app). The complete stylesheet regardless of which file
|
|
109
109
|
* imported the CSS; the always-safe fallback `createWebApp` links when a route has no per-route entry
|
|
110
110
|
* in {@link routeStyles}. Omitted when the app imports no CSS. */
|
|
111
111
|
readonly css?: readonly string[];
|
|
112
|
-
/** `routeId → [chain CSS URLs]`
|
|
112
|
+
/** `routeId → [chain CSS URLs]` - only the stylesheets the matched route's layout chain + own file
|
|
113
113
|
* actually use (Bun emits a per-entrypoint CSS bundle per route/layout, with shared-component CSS
|
|
114
114
|
* inlined into each consumer). `createWebApp` links these instead of the aggregate, so a page ships
|
|
115
115
|
* only its own CSS. A route is omitted (→ aggregate fallback) when its `[name]` collides with another
|
|
116
|
-
* route's basename (ambiguous CSS↔route) or the build emitted orphan shared-chunk CSS
|
|
116
|
+
* route's basename (ambiguous CSS↔route) or the build emitted orphan shared-chunk CSS - correctness
|
|
117
117
|
* over minimality. Absent entirely when the app imports no CSS. */
|
|
118
118
|
readonly routeStyles?: Readonly<Record<string, readonly string[]>>;
|
|
119
119
|
}
|
|
@@ -134,11 +134,11 @@ export interface NodeBuiltinFinding {
|
|
|
134
134
|
* Scan a build's metafile for any `node:` builtin that a USER module pulled into a CLIENT output
|
|
135
135
|
* chunk, returning a sorted, deduped list of {@link NodeBuiltinFinding}s. Three graph facts combine so
|
|
136
136
|
* the report is precise AND actionable:
|
|
137
|
-
* 1. **What the user wrote**
|
|
137
|
+
* 1. **What the user wrote** - only builtins imported by a NON-`node:` input count, so Bun's own
|
|
138
138
|
* polyfill chain (`node:crypto` → `node:buffer`/`node:stream`/…) doesn't bury the real cause.
|
|
139
|
-
* 2. **Where it landed**
|
|
139
|
+
* 2. **Where it landed** - the chunk is read from the per-output `inputs`, so the error names the
|
|
140
140
|
* emitted file to look at.
|
|
141
|
-
* 3. **How it got there**
|
|
141
|
+
* 3. **How it got there** - the shortest import chain from a user entry to the builtin
|
|
142
142
|
* (`shortestBuiltinChain`), so the error points straight at the offending `import` line instead of
|
|
143
143
|
* leaving the dev to grep the dependency tree (the DX gap this closes).
|
|
144
144
|
* Graph-based (never the emitted text), so it survives minification and can't be fooled by a string
|
|
@@ -165,9 +165,9 @@ export interface ServerOnlyFinding {
|
|
|
165
165
|
* Scan a build's metafile for any module that opts into the `server-only` marker (a side-effect
|
|
166
166
|
* `import "@nifrajs/web/server-only"`) yet landed in a CLIENT output chunk, returning a sorted, deduped
|
|
167
167
|
* list of {@link ServerOnlyFinding}s. Mirrors {@link detectNodeBuiltinsInClient}: it reads the SAME
|
|
168
|
-
* graph facts
|
|
168
|
+
* graph facts - which inputs import the marker (the "marked" modules), which chunk each landed in (the
|
|
169
169
|
* per-output `inputs`), and the shortest import chain from a user entry to it. The marker module ITSELF
|
|
170
|
-
* (which imports nothing) is excluded
|
|
170
|
+
* (which imports nothing) is excluded - only the modules that *opt in* are flagged. Pure + exported for
|
|
171
171
|
* unit testing. Empty ⇒ clean.
|
|
172
172
|
*/
|
|
173
173
|
export declare function detectServerOnlyInClient(graph: ClientModuleGraph): ReadonlyArray<ServerOnlyFinding>;
|
|
@@ -184,7 +184,7 @@ export interface ChunkSize {
|
|
|
184
184
|
/** Gzipped byte length (what the client actually downloads, modulo brotli). */
|
|
185
185
|
readonly gzip: number;
|
|
186
186
|
}
|
|
187
|
-
/** A whole build's size report
|
|
187
|
+
/** A whole build's size report - every chunk (largest first) + the totals. */
|
|
188
188
|
export interface SizeReport {
|
|
189
189
|
/** Per-chunk sizes, sorted biggest gzip first (the regression you want to see at the top). */
|
|
190
190
|
readonly chunks: readonly ChunkSize[];
|
|
@@ -195,24 +195,24 @@ export interface SizeReport {
|
|
|
195
195
|
}
|
|
196
196
|
/**
|
|
197
197
|
* Aggregate a list of measured chunks into a {@link SizeReport}: sort biggest-gzip-first (ties broken
|
|
198
|
-
* by raw bytes, then name for stable output) and sum the totals. Pure
|
|
198
|
+
* by raw bytes, then name for stable output) and sum the totals. Pure - the measurement (reading the
|
|
199
199
|
* file + `Bun.gzipSync`) happens in the orchestrator; this is the deterministic, unit-testable core.
|
|
200
200
|
*/
|
|
201
201
|
export declare function aggregateSizeReport(chunks: readonly ChunkSize[]): SizeReport;
|
|
202
202
|
/** Human-readable byte count: `B`/`KB`/`MB` with one decimal above 1 KB (e.g. `12.3 KB`). Pure. */
|
|
203
203
|
export declare function formatBytes(bytes: number): string;
|
|
204
204
|
/**
|
|
205
|
-
* Render a {@link SizeReport} as a terse aligned table (biggest first) with a totals row
|
|
205
|
+
* Render a {@link SizeReport} as a terse aligned table (biggest first) with a totals row - the text
|
|
206
206
|
* `nifra build --report` prints. Pure (string in, string out) so the formatting is unit-testable.
|
|
207
207
|
*/
|
|
208
208
|
export declare function renderSizeReport(report: SizeReport): string;
|
|
209
209
|
/** A drift finding between a committed server-manifest and the live `routes/` tree. */
|
|
210
210
|
export interface ManifestDrift {
|
|
211
|
-
/** Route files present in `routes/` but ABSENT from the committed manifest (the manifest is stale
|
|
211
|
+
/** Route files present in `routes/` but ABSENT from the committed manifest (the manifest is stale -
|
|
212
212
|
* the new route won't be served by the worker). */
|
|
213
213
|
readonly missing: readonly string[];
|
|
214
214
|
/** Route files the committed manifest imports that no longer exist in `routes/` (a deleted/renamed
|
|
215
|
-
* route still wired into the worker
|
|
215
|
+
* route still wired into the worker - a build/runtime break). */
|
|
216
216
|
readonly extra: readonly string[];
|
|
217
217
|
}
|
|
218
218
|
/**
|
|
@@ -220,7 +220,7 @@ export interface ManifestDrift {
|
|
|
220
220
|
* `routes/`-relative keys `discoverRoutes` produces (e.g. `docs/index.tsx`). `routesPrefix` is the
|
|
221
221
|
* specifier prefix the manifest used for the routes dir (default `./routes/`, what `buildServer`'s
|
|
222
222
|
* default `resolve` emits). Only import specifiers under that prefix are route files; the
|
|
223
|
-
* `@nifrajs/web` import (and any other bare specifier) is ignored. Pure
|
|
223
|
+
* `@nifrajs/web` import (and any other bare specifier) is ignored. Pure - operates on source text.
|
|
224
224
|
*/
|
|
225
225
|
export declare function parseManifestRouteFiles(source: string, routesPrefix?: string): string[];
|
|
226
226
|
/** The baked `clientEntry` URL in a committed server-manifest, or `undefined` if absent. Pure. */
|
|
@@ -240,8 +240,8 @@ export declare function parseManifestRouteStyles(source: string): Record<string,
|
|
|
240
240
|
export declare function resyncServerManifestSource(source: string, manifest: Parameters<typeof generateServerManifest>[0], routesPrefix: string): string;
|
|
241
241
|
/**
|
|
242
242
|
* Diff the route files a committed server-manifest imports against the files freshly discovered in
|
|
243
|
-
* `routes/`. Returns the `missing` (in routes/, not in manifest
|
|
244
|
-
* manifest, gone from routes/
|
|
243
|
+
* `routes/`. Returns the `missing` (in routes/, not in manifest - stale manifest) and `extra` (in
|
|
244
|
+
* manifest, gone from routes/ - dangling import) sets. Empty arrays ⇒ in sync. Pure - the caller
|
|
245
245
|
* supplies both file lists (the committed source is parsed via {@link parseManifestRouteFiles}; the
|
|
246
246
|
* fresh list comes from `discoverRoutes`). Lists need not be pre-sorted; the result is sorted.
|
|
247
247
|
*/
|
|
@@ -256,37 +256,37 @@ export declare function isManifestInSync(drift: ManifestDrift): boolean;
|
|
|
256
256
|
export declare function formatManifestDrift(drift: ManifestDrift, manifestPath?: string): string | undefined;
|
|
257
257
|
/**
|
|
258
258
|
* Build the client bundle for a file-routed app. Writes the hashed assets + `manifest.json` to
|
|
259
|
-
* `outDir` and returns the manifest. Throws (with the bundler logs) on build failure
|
|
259
|
+
* `outDir` and returns the manifest. Throws (with the bundler logs) on build failure - never
|
|
260
260
|
* silently ships a broken bundle.
|
|
261
261
|
*/
|
|
262
262
|
export declare function buildClient(options: BuildClientOptions): Promise<BuildManifest>;
|
|
263
263
|
export interface BuildServerOptions {
|
|
264
264
|
/** The `routes/` directory to discover (absolute path). */
|
|
265
265
|
readonly routesDir: string;
|
|
266
|
-
/** The worker entry module (absolute path)
|
|
266
|
+
/** The worker entry module (absolute path) - your `worker.ts`. It imports `{ manifest, clientEntry }`
|
|
267
267
|
* from the generated `./server-manifest`, builds `createWebApp`, and `export default toFetchHandler(app)`. */
|
|
268
268
|
readonly serverEntry: string;
|
|
269
269
|
/** Output directory for the bundled worker (absolute path). */
|
|
270
270
|
readonly outDir: string;
|
|
271
|
-
/** The content-hashed client entry URL (from `buildClient`'s manifest)
|
|
271
|
+
/** The content-hashed client entry URL (from `buildClient`'s manifest) - **baked** into the generated
|
|
272
272
|
* server manifest, since a disk-less worker can't read `manifest.json` at runtime. */
|
|
273
273
|
readonly clientEntry: string;
|
|
274
|
-
/** The app's aggregate stylesheet URLs (`buildClient`'s `BuildManifest.css`)
|
|
274
|
+
/** The app's aggregate stylesheet URLs (`buildClient`'s `BuildManifest.css`) - baked into the generated
|
|
275
275
|
* manifest so the server entry hands them to `createWebApp` (→ `<link rel="stylesheet">`). Omit ⇒ no CSS
|
|
276
276
|
* link (the built SSR page would otherwise render unstyled). */
|
|
277
277
|
readonly styles?: readonly string[] | undefined;
|
|
278
|
-
/** Per-route stylesheet URLs (`buildClient`'s `BuildManifest.routeStyles`)
|
|
278
|
+
/** Per-route stylesheet URLs (`buildClient`'s `BuildManifest.routeStyles`) - baked alongside `styles`. */
|
|
279
279
|
readonly routeStyles?: Readonly<Record<string, readonly string[]>> | undefined;
|
|
280
280
|
/** Route/layout file → import specifier in the generated manifest (default: a relative path from the
|
|
281
|
-
* manifest's location
|
|
281
|
+
* manifest's location - written next to `serverEntry` - to `routesDir`). */
|
|
282
282
|
readonly resolve?: (file: string) => string;
|
|
283
283
|
/** Filename for the generated server-manifest module, written next to `serverEntry` (default
|
|
284
284
|
* `"server-manifest.ts"`); your `serverEntry` imports it as `./server-manifest`. */
|
|
285
285
|
readonly manifestFile?: string;
|
|
286
|
-
/** Adapter build plugins (e.g. `solidBunPlugin("ssr")`
|
|
286
|
+
/** Adapter build plugins (e.g. `solidBunPlugin("ssr")` - Solid routes need their SSR transform at
|
|
287
287
|
* build time; React's JSX is Bun-native and needs none). */
|
|
288
288
|
readonly plugins?: readonly BunPlugin[];
|
|
289
|
-
/** `Bun.build` resolution conditions (default `["workerd", "edge-light", "browser"]`)
|
|
289
|
+
/** `Bun.build` resolution conditions (default `["workerd", "edge-light", "browser"]`) - selects each
|
|
290
290
|
* dependency's edge build. */
|
|
291
291
|
readonly conditions?: readonly string[];
|
|
292
292
|
/** Compile-time replacements (default `{ "process.env.NODE_ENV": '"production"' }` → production
|
|
@@ -294,7 +294,7 @@ export interface BuildServerOptions {
|
|
|
294
294
|
readonly define?: Readonly<Record<string, string>>;
|
|
295
295
|
/** Minify the output (default `true`). */
|
|
296
296
|
readonly minify?: boolean;
|
|
297
|
-
/** `Bun.build` target (default `"browser"`
|
|
297
|
+
/** `Bun.build` target (default `"browser"` - the right shape for edge runtimes: Cloudflare Workers,
|
|
298
298
|
* Vercel Edge, Deno, Deno Deploy). Use `"node"` for a `@nifrajs/node` server (so `node:*` built-ins
|
|
299
299
|
* stay external), or `"bun"` for a Bun server. The default `conditions` + the edge resolve shims
|
|
300
300
|
* only apply to the `"browser"` target; `"node"`/`"bun"` resolve their own renderer builds via the
|
|
@@ -303,24 +303,24 @@ export interface BuildServerOptions {
|
|
|
303
303
|
/** **Lazy/code-split routes** (default `false`): emit `() => import(route)` loaders + bundle with
|
|
304
304
|
* `splitting`, so each route is its own chunk loaded on first request (smaller cold-start parse)
|
|
305
305
|
* instead of all parsed at boot. The output becomes the worker entry **+ chunk files** in `outDir`
|
|
306
|
-
*
|
|
306
|
+
* - on Cloudflare, ship them with wrangler's `no_bundle` + `find_additional_modules` + an ESModule
|
|
307
307
|
* `rule` (Node/Deno import the chunks natively). Eager (one self-contained file) stays the default. */
|
|
308
308
|
readonly lazy?: boolean;
|
|
309
309
|
}
|
|
310
|
-
/** The built worker bundle
|
|
310
|
+
/** The built worker bundle - point your `wrangler.toml`'s `main` at `worker`. */
|
|
311
311
|
export interface ServerBuild {
|
|
312
312
|
/** Path to the bundled, self-contained worker entry. */
|
|
313
313
|
readonly worker: string;
|
|
314
|
-
/** Paths of every emitted output (entry + any code-split chunks)
|
|
314
|
+
/** Paths of every emitted output (entry + any code-split chunks) - what to ship to the platform. */
|
|
315
315
|
readonly outputs: readonly string[];
|
|
316
316
|
}
|
|
317
317
|
export declare const reactDedupePlugin: (from: string) => BunPlugin;
|
|
318
318
|
export declare const preactDedupePlugin: (from: string) => BunPlugin;
|
|
319
319
|
/**
|
|
320
|
-
* Dedupe Svelte to a single copy
|
|
320
|
+
* Dedupe Svelte to a single copy - the Svelte analogue of `reactDedupePlugin`/`preactDedupePlugin`, closing
|
|
321
321
|
* the same class of bug for Svelte (which had NO build-time dedup before). A workspace- or file-linked
|
|
322
322
|
* `@nifrajs/web-svelte` can resolve its OWN `svelte` (e.g. a sibling repo's install store) while the app's
|
|
323
|
-
* components resolve another
|
|
323
|
+
* components resolve another - SAME version, two physical copies. Svelte 5's client runtime
|
|
324
324
|
* (`svelte/internal/client`) holds module-level component-context state, so two copies means the compiled
|
|
325
325
|
* components register on one runtime while `hydrate` runs on the other → hydration throws
|
|
326
326
|
* `Cannot read properties of undefined (reading 'call')` and the server-rendered markup is wiped.
|
|
@@ -332,14 +332,36 @@ export declare const preactDedupePlugin: (from: string) => BunPlugin;
|
|
|
332
332
|
* when Svelte isn't used / isn't resolvable from `from`.
|
|
333
333
|
*/
|
|
334
334
|
export declare const svelteDedupePlugin: (from: string) => BunPlugin;
|
|
335
|
+
/**
|
|
336
|
+
* Remix-style `.server` convention for the CLIENT build. A module named `*.server.ts(x)` (`db.server.ts`,
|
|
337
|
+
* `auth.server.ts`, …) is server-only - empty it in the browser bundle so its (possibly `node:` / native /
|
|
338
|
+
* Capacitor) import subtree never reaches the client. The body is CJS-with-a-Proxy so any named OR default
|
|
339
|
+
* import resolves to `undefined` rather than a "missing export" bundle error (verified), and the real
|
|
340
|
+
* import subtree is gone. The complement to the node-builtin guard: when a server-only import is co-located
|
|
341
|
+
* in a route file (so it can't be tree-shaken out and the guard fails loud), moving it into a `*.server`
|
|
342
|
+
* module is the fix. CLIENT-only - buildServer keeps the real module, which runs server-side.
|
|
343
|
+
*/
|
|
335
344
|
export declare const serverOnlyEmptyPlugin: () => BunPlugin;
|
|
345
|
+
/**
|
|
346
|
+
* Server functions in the CLIENT build: replace each `*.fn.ts` module with stubs that call the routes
|
|
347
|
+
* the server mounted, so the function bodies - and everything they import - never reach a browser.
|
|
348
|
+
*
|
|
349
|
+
* The sibling of {@link serverOnlyEmptyPlugin}, and a deliberate contrast: a `*.server` module is
|
|
350
|
+
* EMPTIED because nothing may call it from the client, while a `*.fn` module is REPLACED because the
|
|
351
|
+
* client is supposed to call it, just over HTTP. The generation itself is in
|
|
352
|
+
* `internal/server-boundary.ts` so the Vite pipeline emits identical stubs from the same code; two
|
|
353
|
+
* hand-written copies would be a client that works in dev and 404s in production.
|
|
354
|
+
*
|
|
355
|
+
* CLIENT-only. The server build keeps the real module, which is what `serverFunctions()` mounts.
|
|
356
|
+
*/
|
|
357
|
+
export declare const serverFnStubPlugin: () => BunPlugin;
|
|
336
358
|
/**
|
|
337
359
|
* Build a self-contained **worker bundle** for a file-routed app on a disk-less edge (Cloudflare
|
|
338
360
|
* Workers / workerd). Discovers routes (build-time fs), codegens the static-import server manifest
|
|
339
361
|
* (`generateServerManifest`, written next to `serverEntry`), then bundles `serverEntry` with
|
|
340
362
|
* `Bun.build` using **edge conditions** + the adapter's SSR plugins. The output imports no `node:fs`
|
|
341
363
|
* and does no dynamic-path import, so it runs on workerd: point `wrangler.toml`'s `main` at it and
|
|
342
|
-
* serve the client assets via Workers Assets. Throws (with the bundler logs) on failure
|
|
364
|
+
* serve the client assets via Workers Assets. Throws (with the bundler logs) on failure - never
|
|
343
365
|
* silently ships a broken worker.
|
|
344
366
|
*/
|
|
345
367
|
export declare function buildServer(options: BuildServerOptions): Promise<ServerBuild>;
|
|
@@ -357,7 +379,7 @@ export declare function isBuildTarget(value: string): value is BuildTarget;
|
|
|
357
379
|
* - `deno`: same fetch-handler default, plus `Deno.serve` self-host when run directly.
|
|
358
380
|
* - `bun` / `node`: a self-hosting server that ALSO serves the client bundle from disk (those
|
|
359
381
|
* runtimes have a filesystem; the static `/assets/*` sit next to the entry).
|
|
360
|
-
* `adapterImport`/`backendImport` are the specifiers the entry uses (relative to where it's written)
|
|
382
|
+
* `adapterImport`/`backendImport` are the specifiers the entry uses (relative to where it's written) -
|
|
361
383
|
* `buildServer` writes the entry next to `serverEntry`, so they're resolved from there. Pure (string in,
|
|
362
384
|
* string out) so the generation is unit-testable without a real build.
|
|
363
385
|
*/
|
|
@@ -386,7 +408,7 @@ export interface BuildTargetOptions {
|
|
|
386
408
|
readonly adapterImport: string;
|
|
387
409
|
/** Import specifier (resolvable from `workDir`) of the module exporting `backend`, or `undefined`. */
|
|
388
410
|
readonly backendImport?: string;
|
|
389
|
-
/** Factory that builds the app for `static` prerendering, GIVEN the client build's manifest
|
|
411
|
+
/** Factory that builds the app for `static` prerendering, GIVEN the client build's manifest - so the
|
|
390
412
|
* emitted hydration `<script src>` uses the REAL content-hashed entry (`client.entry`) plus the same
|
|
391
413
|
* styles/route-preload the server targets use. A pre-built instance can't work here: the hash isn't known
|
|
392
414
|
* until `buildClient` runs inside `buildTarget`, so a hardcoded entry 404s → pages render but never
|
|
@@ -407,11 +429,11 @@ export interface BuildTargetOptions {
|
|
|
407
429
|
/** Document `<title>` for the generated server entry. */
|
|
408
430
|
readonly title?: string;
|
|
409
431
|
}
|
|
410
|
-
/** Minimal app surface `buildTarget`'s static path needs
|
|
432
|
+
/** Minimal app surface `buildTarget`'s static path needs - a fetch handler (a built `createWebApp`). */
|
|
411
433
|
export interface PrerenderAppLike {
|
|
412
434
|
fetch(req: Request): Response | Promise<Response>;
|
|
413
435
|
}
|
|
414
|
-
/** The result of a target build
|
|
436
|
+
/** The result of a target build - the deploy dir + the client manifest + an optional size report. */
|
|
415
437
|
export interface BuildTargetResult {
|
|
416
438
|
/** The deploy target that was built. */
|
|
417
439
|
readonly target: BuildTarget;
|
|
@@ -431,7 +453,7 @@ export interface BuildTargetResult {
|
|
|
431
453
|
* - `static`: prerenders opted-in routes (`prerenderRoutes`) to `<outDir>/<path>/index.html` (+
|
|
432
454
|
* `_data.json`); needs `prerenderApp`. No server.
|
|
433
455
|
* - `cf-pages`: a `_worker.js` (edge bundle) + a `_routes.json` excluding /assets/* from the worker.
|
|
434
|
-
* - `vercel`: a `.vercel/output`-shaped function isn't emitted here
|
|
456
|
+
* - `vercel`: a `.vercel/output`-shaped function isn't emitted here - `vercel` emits the bundled edge
|
|
435
457
|
* entry as `<outDir>/index.js` (the CLI's docs point at `vercel`'s Build Output wrapper). [see note]
|
|
436
458
|
* - `deno`/`node`/`bun`: the self-hosting server bundle (`server.js`) next to the assets.
|
|
437
459
|
* The server entry is GENERATED (`generateServerEntry`) and bundled (`buildServer`); the app supplies
|
|
@@ -441,7 +463,7 @@ export interface BuildTargetResult {
|
|
|
441
463
|
* remain app-owned scripts; this command targets the common single-bundle deploys. See the CLI docs.
|
|
442
464
|
*/
|
|
443
465
|
/**
|
|
444
|
-
* A build-tool STRATEGY for {@link buildTargetWith}
|
|
466
|
+
* A build-tool STRATEGY for {@link buildTargetWith} - the two bundling steps, and nothing else. Everything
|
|
445
467
|
* around them (server-entry codegen, deploy assembly, prerender, size report) is bundler-agnostic and
|
|
446
468
|
* lives in `buildTargetWith`, so a second bundler (Vite) is this interface, not a second orchestrator.
|
|
447
469
|
*
|
|
@@ -474,7 +496,7 @@ export interface Bundler {
|
|
|
474
496
|
readonly root?: string;
|
|
475
497
|
}): Promise<ServerBuild>;
|
|
476
498
|
}
|
|
477
|
-
/** The default (Bun) strategy
|
|
499
|
+
/** The default (Bun) strategy - `buildClient`/`buildServer` from this module. */
|
|
478
500
|
export declare const bunBundler: Bundler;
|
|
479
501
|
/** Build a full deploy dir for `target` using the default Bun bundler. See {@link buildTargetWith}. */
|
|
480
502
|
export declare function buildTarget(target: BuildTarget, options: BuildTargetOptions): Promise<BuildTargetResult>;
|
package/dist/build.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,SAAS,EAAQ,MAAM,KAAK,CAAA;AAG1C,OAAO,EAAuB,sBAAsB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
|