@powerhousedao/builder-tools 6.2.3-dev.44 → 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 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
  };
@@ -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":"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"}
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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"}