@powerhousedao/builder-tools 6.2.3-dev.45 → 6.2.3-dev.46
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/index.d.mts +238 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +821 -17
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
package/dist/index.d.mts
CHANGED
|
@@ -113,6 +113,14 @@ export declare const VENDOR_URL_PREFIX = "/__vendor__/";
|
|
|
113
113
|
* Returns null on any failure (caller falls back to a normal dev server).
|
|
114
114
|
*/
|
|
115
115
|
export declare function prebuildConnectVendor(options: VendorPrebuildOptions): Promise<PrebuiltVendor | null>;
|
|
116
|
+
export declare const LOCK_STALE_MS: number;
|
|
117
|
+
export interface VendorLock {
|
|
118
|
+
dir: string;
|
|
119
|
+
token: string;
|
|
120
|
+
timer: ReturnType<typeof setInterval>;
|
|
121
|
+
}
|
|
122
|
+
export declare function acquireLock(lockDir: string): VendorLock | null;
|
|
123
|
+
export declare function releaseLock(lock: VendorLock): void;
|
|
116
124
|
/**
|
|
117
125
|
* The published specifiers whose entry file the vendor build never emitted.
|
|
118
126
|
* URLs are base-less (`/__vendor__/x.js`) and resolve inside `vendorDir`.
|
|
@@ -133,6 +141,235 @@ export declare function missingVendorEntries(vendorDir: string, imports: Record<
|
|
|
133
141
|
*/
|
|
134
142
|
export declare function withVendorBase(imports: Record<string, string>, base: string): Record<string, string>;
|
|
135
143
|
//#endregion
|
|
144
|
+
//#region connect-utils/reactor-worker-build.d.ts
|
|
145
|
+
/** URL prefix the worker bundle is served under, next to `__vendor__/`. */
|
|
146
|
+
export declare const REACTOR_WORKER_URL_PREFIX = "/__reactor_worker__/";
|
|
147
|
+
/** Entry filename of the bundle; the tab constructs its SharedWorker from it. */
|
|
148
|
+
export declare const REACTOR_WORKER_ENTRY = "reactor.worker.js";
|
|
149
|
+
/** Content-Type for the extensions the worker build emits; JS is the default. */
|
|
150
|
+
export declare const REACTOR_WORKER_MIME: Record<string, string>;
|
|
151
|
+
export interface ReactorWorkerVendorOptions {
|
|
152
|
+
/** The vendor's import map (`spec -> /__vendor__/<entry>.js`). */
|
|
153
|
+
imports: Record<string, string>;
|
|
154
|
+
/** The built vendor dir, needed to verify which entries are worker-safe. */
|
|
155
|
+
dir: string;
|
|
156
|
+
}
|
|
157
|
+
export interface ReactorWorkerBuildOptions {
|
|
158
|
+
/** Project root the worker's dependencies resolve from. */
|
|
159
|
+
dirname: string;
|
|
160
|
+
/** Directory to hold the bundle (e.g. `<dist>/__reactor_worker__`). */
|
|
161
|
+
outDir: string;
|
|
162
|
+
/**
|
|
163
|
+
* The prebuilt vendor to share dependencies with. Only the worker-safe
|
|
164
|
+
* subset of its entries is externalized (see
|
|
165
|
+
* {@link workerSafeVendorImports}); omit to bundle everything.
|
|
166
|
+
*/
|
|
167
|
+
vendor?: ReactorWorkerVendorOptions;
|
|
168
|
+
/**
|
|
169
|
+
* Worker entry to build. Defaults to the installed Connect dist's
|
|
170
|
+
* `reactor.worker.js`; tests inject a fixture entry here.
|
|
171
|
+
*/
|
|
172
|
+
entryPath?: string;
|
|
173
|
+
/** NODE_ENV define for the build (default "development"). */
|
|
174
|
+
nodeEnv?: "development" | "production";
|
|
175
|
+
/** Filled with the failure cause when the prebuild returns null. */
|
|
176
|
+
errorRef?: {
|
|
177
|
+
message?: string;
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
export interface PrebuiltReactorWorker {
|
|
181
|
+
outDir: string;
|
|
182
|
+
/** Entry filename inside outDir ({@link REACTOR_WORKER_ENTRY}). */
|
|
183
|
+
entry: string;
|
|
184
|
+
/**
|
|
185
|
+
* Digest of everything that shaped this bundle's output (see
|
|
186
|
+
* {@link computeSourceDigest}); identical for a cache hit and a fresh
|
|
187
|
+
* build. The dev plugin serves it in `worker-meta.json` next to the
|
|
188
|
+
* bundle; `apps/connect/src/utils/reactor-worker-url.ts` fetches it to
|
|
189
|
+
* fold the actual built worker code into the tab's version fingerprint
|
|
190
|
+
* (W0.6).
|
|
191
|
+
*/
|
|
192
|
+
sourceDigest: string;
|
|
193
|
+
/**
|
|
194
|
+
* The worker-safe vendor subset this bundle externalizes (see
|
|
195
|
+
* {@link workerSafeVendorImports}); empty without a vendor.
|
|
196
|
+
*/
|
|
197
|
+
vendorImports: Record<string, string>;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* The installed Connect dist's worker entry, or null when the installed
|
|
201
|
+
* version predates the worker (the feature is then unavailable, not broken).
|
|
202
|
+
*/
|
|
203
|
+
export declare function resolveReactorWorkerSource(dirname: string): string | null;
|
|
204
|
+
/** `/__vendor__/<entry>.js` -> `../__vendor__/<entry>.js` (sibling dirs). */
|
|
205
|
+
export declare function vendorRelativePath(vendorUrl: string): string;
|
|
206
|
+
/**
|
|
207
|
+
* Module specifiers a worker cannot resolve: anything that is not relative,
|
|
208
|
+
* root-relative, or an http(s)/data/blob URL. Used as a post-build guard so a
|
|
209
|
+
* leftover bare (or `node:`) import fails the build with a name instead of
|
|
210
|
+
* shipping a worker that dies on its first import statement.
|
|
211
|
+
*
|
|
212
|
+
* Expects minified (comment-free) output: a raw-text scan cannot tell a real
|
|
213
|
+
* import from a JSDoc code sample, and unminified kysely/viem are full of the
|
|
214
|
+
* latter. The build below always minifies for exactly this reason.
|
|
215
|
+
*/
|
|
216
|
+
export declare function findDisallowedSpecifiers(code: string): string[];
|
|
217
|
+
/**
|
|
218
|
+
* Packages whose BUILT dist shapes the worker bundle's output even when
|
|
219
|
+
* connect's own dist/reactor.worker.js entry file did not change.
|
|
220
|
+
*
|
|
221
|
+
* That entry is a library artifact whose bare imports this build resolves
|
|
222
|
+
* through node_modules at BUILD time, so a rebuilt dist anywhere in its
|
|
223
|
+
* closure changes the bundle output without touching the entry file's own
|
|
224
|
+
* size/mtime. The list is DERIVED from the installed Connect's own
|
|
225
|
+
* dependencies rather than hardcoded: the bundle pulls `@renown/sdk`,
|
|
226
|
+
* `@powerhousedao/powerhouse-vetra-packages` and `@powerhousedao/shared` out
|
|
227
|
+
* of node_modules too, and a hardcoded pair left every one of those able to be
|
|
228
|
+
* rebuilt behind a cache hit. Connect's dependency list is the cheap stand-in
|
|
229
|
+
* for the resolved bundle graph: every workspace package the worker can reach
|
|
230
|
+
* is reachable through it, and a package not in the bundle only costs a readdir.
|
|
231
|
+
*/
|
|
232
|
+
export declare function upstreamWorkerPackages(dirname: string): string[];
|
|
233
|
+
/**
|
|
234
|
+
* This module's own installed version, read by walking up from its file to
|
|
235
|
+
* the nearest `package.json` named "@powerhousedao/builder-tools" (same
|
|
236
|
+
* technique as `build-hash.ts`'s `readConnectVersion`: builder-tools'
|
|
237
|
+
* `exports` map has no `./package.json` subpath, so node resolution can't
|
|
238
|
+
* get there). Works whether this runs from source (tests, this monorepo) or
|
|
239
|
+
* the built dist.
|
|
240
|
+
*/
|
|
241
|
+
export declare function resolveOwnPackageVersion(): string;
|
|
242
|
+
/**
|
|
243
|
+
* This package's own version, computed once. Folded into the worker bundle
|
|
244
|
+
* cache key so a builder-tools release — which can change how the bundle is
|
|
245
|
+
* built (anything in this module beyond {@link WORKER_BUILD_WORKER} itself,
|
|
246
|
+
* e.g. `workerSafeVendorImports`, the resolve plugin) — invalidates bundles
|
|
247
|
+
* a prior builder-tools version cached.
|
|
248
|
+
*/
|
|
249
|
+
export declare const BUILDER_TOOLS_VERSION: string;
|
|
250
|
+
/**
|
|
251
|
+
* A workspace package's real directory, resolved the way Node's resolver
|
|
252
|
+
* would (through `node_modules`), or null when it is not installed (e.g. a
|
|
253
|
+
* non-monorepo consumer project — graceful, not an error). pnpm's
|
|
254
|
+
* node_modules symlinks resolve to the real package directory, so this
|
|
255
|
+
* reflects the monorepo's actual dist state, not a stale symlink target.
|
|
256
|
+
*/
|
|
257
|
+
export declare function resolveWorkspacePackageDir(dirname: string, pkgName: string): string | null;
|
|
258
|
+
/**
|
|
259
|
+
* Cheap content fingerprint of a directory's immediate files: no file bytes
|
|
260
|
+
* are read, just each entry's name/size/mtime, so it stays fast even for a
|
|
261
|
+
* large dist. Sensitive to a rebuild in the common cases: Vite's
|
|
262
|
+
* content-hashed chunk filenames change the name itself; a stable-named file
|
|
263
|
+
* (an entry point) changes size or mtime. Bounded (`maxFiles`) so a
|
|
264
|
+
* pathological directory cannot make this slow — deliberately not a
|
|
265
|
+
* full-tree hash.
|
|
266
|
+
*
|
|
267
|
+
* The names are sorted BEFORE the bound is applied, so the subset the bound
|
|
268
|
+
* keeps is the same subset on every run: readdir order is unspecified, and
|
|
269
|
+
* truncating it first made the fingerprint of a directory past the bound a
|
|
270
|
+
* function of whatever order the filesystem happened to report.
|
|
271
|
+
*/
|
|
272
|
+
export declare function distDirFingerprint(dir: string, maxFiles?: number): string;
|
|
273
|
+
export declare function computeSourceDigest(dirname: string, entryPath: string, vendorDir?: string, builderToolsVersion?: string): string;
|
|
274
|
+
/**
|
|
275
|
+
* Build the worker bundle (once, in a throwaway subprocess) into `outDir`.
|
|
276
|
+
* Idempotent: reuses a cached bundle built from the same connect dist, vendor
|
|
277
|
+
* mapping, and builder logic. Returns null on failure (`errorRef` carries the
|
|
278
|
+
* cause) or when the installed Connect has no worker entry.
|
|
279
|
+
*/
|
|
280
|
+
export declare function prebuildReactorWorker(options: ReactorWorkerBuildOptions): Promise<PrebuiltReactorWorker | null>;
|
|
281
|
+
/** Replace `outDir` with the finished `tmpDir`, old contents removed last. */
|
|
282
|
+
export declare function publishDirAtomic(tmpDir: string, outDir: string): void;
|
|
283
|
+
/**
|
|
284
|
+
* Scan the emitted JS files REACHABLE from the entry via import statements
|
|
285
|
+
* for specifiers a worker cannot resolve. Vendor externals were rewritten to
|
|
286
|
+
* ../__vendor__/ relative paths, so anything bare that survives in the graph
|
|
287
|
+
* is a real defect.
|
|
288
|
+
*
|
|
289
|
+
* Deliberately a graph walk, not a directory walk: the bundled reactor code
|
|
290
|
+
* carries `new URL(..., import.meta.url)` references to its node
|
|
291
|
+
* worker-thread entries (executor/projection workers), which Vite emits as
|
|
292
|
+
* stray assets full of node-only imports. They are unreachable dead weight in
|
|
293
|
+
* a browser bundle — the production vendor output tolerates the same files —
|
|
294
|
+
* and must not fail the build.
|
|
295
|
+
*/
|
|
296
|
+
export declare function findBundleSpecifierOffenders(bundleDir: string, entry?: string): {
|
|
297
|
+
file: string;
|
|
298
|
+
specs: string[];
|
|
299
|
+
}[];
|
|
300
|
+
/** The page-only markers present in `code`, in a fixed order. */
|
|
301
|
+
export declare function findWorkerUnsafeMarkers(code: string): string[];
|
|
302
|
+
/**
|
|
303
|
+
* The subset of the vendor's entries a worker may import.
|
|
304
|
+
*
|
|
305
|
+
* The vendor build keeps the React family external: its chunks carry bare
|
|
306
|
+
* `import "react"` statements that the PAGE resolves through its import map.
|
|
307
|
+
* A worker resolves no import map, so externalizing a vendor spec whose chunk
|
|
308
|
+
* closure reaches such an import would kill the worker on its first load —
|
|
309
|
+
* and the chunk graph is shared across vendor entries, so even a React-free
|
|
310
|
+
* module (e.g. an rpc subpath) can be entangled with React through a shared
|
|
311
|
+
* chunk. The vendor is also built for the page: a dynamic-base build rewrites
|
|
312
|
+
* its asset URLs onto a global only the page sets, and its dynamic imports go
|
|
313
|
+
* through Vite's preload helper, which needs `document`. Each entry's own
|
|
314
|
+
* closure inside the vendor dir decides: clean closure, worker-safe; anything
|
|
315
|
+
* bare or page-only in it (see {@link findWorkerUnsafeMarkers}), or a missing
|
|
316
|
+
* entry file, bundled into the worker instead.
|
|
317
|
+
*/
|
|
318
|
+
export declare function workerSafeVendorImports(vendorDir: string, vendorImports: Record<string, string>): Record<string, string>;
|
|
319
|
+
/**
|
|
320
|
+
* Builds arbitrary worker-loadable entries with the worker build config.
|
|
321
|
+
* Exported for the local-package bundles, which need the same self-contained
|
|
322
|
+
* output and vendor externalization at a different depth.
|
|
323
|
+
*/
|
|
324
|
+
export declare function runWorkerBuildEntries(dirname: string, outDir: string, entries: Record<string, string>, vendorImports: Record<string, string>, nodeEnv: "development" | "production", vendorPrefix?: string): Promise<{
|
|
325
|
+
ok: boolean;
|
|
326
|
+
stderr: string;
|
|
327
|
+
}>;
|
|
328
|
+
//#endregion
|
|
329
|
+
//#region connect-utils/worker-packages-build.d.ts
|
|
330
|
+
/** Served under `<base>__reactor_worker__/packages/`. */
|
|
331
|
+
export declare const WORKER_PACKAGES_MANIFEST = "manifest.json";
|
|
332
|
+
export interface WorkerPackagesBuildOptions {
|
|
333
|
+
/** Project root the packages resolve from. */
|
|
334
|
+
dirname: string;
|
|
335
|
+
/** Local package names (`provider: "local"` in powerhouse.config.json). */
|
|
336
|
+
packages: string[];
|
|
337
|
+
/** Directory to hold the bundles (`<dist>/__reactor_worker__/packages`). */
|
|
338
|
+
outDir: string;
|
|
339
|
+
/** The prebuilt vendor to share dependencies with, when one was built. */
|
|
340
|
+
vendor?: ReactorWorkerVendorOptions;
|
|
341
|
+
/**
|
|
342
|
+
* The vendor's worker-safe subset, when the caller already computed it
|
|
343
|
+
* (`PrebuiltReactorWorker.vendorImports`); skips walking the vendor again.
|
|
344
|
+
*/
|
|
345
|
+
safeVendorImports?: Record<string, string>;
|
|
346
|
+
nodeEnv?: "development" | "production";
|
|
347
|
+
errorRef?: {
|
|
348
|
+
message?: string;
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
export interface WorkerPackageManifestEntry {
|
|
352
|
+
name: string;
|
|
353
|
+
version?: string;
|
|
354
|
+
/** Filename inside outDir, as {@link workerPackageFileName} spells it. */
|
|
355
|
+
file: string;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* The project's own package name when it ships a models bundle, so a caller
|
|
359
|
+
* can include it beside the configured `provider: "local"` packages. A vetra
|
|
360
|
+
* project declares no package entry for itself, yet its models are exactly
|
|
361
|
+
* the ones the worker is missing.
|
|
362
|
+
*/
|
|
363
|
+
export declare function ownProjectPackage(dirname: string): string | undefined;
|
|
364
|
+
/**
|
|
365
|
+
* Build each local package's models entry into `outDir` and write the
|
|
366
|
+
* manifest the tab reads. Returns the manifest entries (empty when no local
|
|
367
|
+
* package ships a models bundle), or null when the build itself failed -
|
|
368
|
+
* `errorRef` then carries the cause. Both of those remove `outDir`, so a
|
|
369
|
+
* previous build's bundles never outlive the packages they came from.
|
|
370
|
+
*/
|
|
371
|
+
export declare function prebuildWorkerPackages(options: WorkerPackagesBuildOptions): Promise<WorkerPackageManifestEntry[] | null>;
|
|
372
|
+
//#endregion
|
|
136
373
|
//#region connect-utils/types.d.ts
|
|
137
374
|
export type IConnectOptions = {
|
|
138
375
|
mode: string;
|
|
@@ -643,7 +880,7 @@ export declare const runtimeConfigSchema: {
|
|
|
643
880
|
};
|
|
644
881
|
readonly reactorWorker: {
|
|
645
882
|
readonly type: "boolean";
|
|
646
|
-
readonly description: "Host the reactor in a shared worker instead of on the main thread. Off by default; the main-thread reactor stays the proven path until cutover is verified.";
|
|
883
|
+
readonly description: "Host the reactor in a shared worker instead of on the main thread. Off by default; the main-thread reactor stays the proven path until cutover is verified. Packaged deployments load the worker from the prebuilt bundle `ph connect build` emits under __reactor_worker__/ (the dev server builds it lazily at the same path); when that bundle is absent the feature reports itself unavailable instead of starting a worker that cannot load.";
|
|
647
884
|
readonly default: false;
|
|
648
885
|
};
|
|
649
886
|
};
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../connect-utils/constants.ts","../connect-utils/vite-plugins/build-hash.ts","../connect-utils/externalize-vendor.ts","../connect-utils/types.ts","../connect-utils/helpers.ts","../connect-utils/runtime-config-schema.ts","../connect-utils/vite-config.ts","../connect-utils/vite-plugins/dynamic-base.ts","../connect-utils/vite-plugins/ph-config.ts","../connect-utils/vite-plugins/theme-boot.ts","../connect-utils/vite-plugins/vendor-import-map.ts"],"mappings":";;;;;qBAAa;qBACA;qBACA;qBACA;;;;qBCGA;iBAEI;;EAEf;;EAEA;;;EAGA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;;;;;;;;;wBAWc,iBAAiB,OAAO;wBAyCxB,0BAA0B;EACxC;EACA;EACA,UAAU;IACR;IACA;IACA;;EAEF;EACA;EACA;;;;;;;;wBAsBc,uBAAuB,oBAAoB;;;iBC3D1C;;EAEf;;EAEA;;EAEA;;EAEA;;EAEA;IAAa;;;;;;;;;;;EAUb;;EAEA;;;;;;;qBAQW;;;;;;qBAcA;iBAYI;EACf;;EAEA,SAAS;;EAET,UAAU;;;qBAIC;;;;;;wBAWS,sBACpB,SAAS,wBACR,QAAQ;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../connect-utils/constants.ts","../connect-utils/vite-plugins/build-hash.ts","../connect-utils/externalize-vendor.ts","../connect-utils/reactor-worker-build.ts","../connect-utils/worker-packages-build.ts","../connect-utils/types.ts","../connect-utils/helpers.ts","../connect-utils/runtime-config-schema.ts","../connect-utils/vite-config.ts","../connect-utils/vite-plugins/dynamic-base.ts","../connect-utils/vite-plugins/ph-config.ts","../connect-utils/vite-plugins/theme-boot.ts","../connect-utils/vite-plugins/vendor-import-map.ts"],"mappings":"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"}
|