@absolutejs/absolute 0.19.0-beta.4 → 0.19.0-beta.41
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/.absolutejs/tsconfig.tsbuildinfo +1 -1
- package/.claude/settings.local.json +23 -1
- package/dist/build.js +633 -59
- package/dist/build.js.map +13 -10
- package/dist/cli/index.js +29 -1
- package/dist/dev/client/frameworkDetect.ts +1 -2
- package/dist/dev/client/handlers/react.ts +96 -4
- package/dist/index.js +897 -209
- package/dist/index.js.map +17 -13
- package/dist/react/index.js +86 -1
- package/dist/react/index.js.map +5 -4
- package/dist/src/build/buildDepVendor.d.ts +2 -0
- package/dist/src/dev/clientManager.d.ts +2 -0
- package/dist/src/dev/moduleServer.d.ts +11 -0
- package/dist/src/dev/ssrRenderer.d.ts +7 -0
- package/dist/src/dev/ssrWorker.d.ts +0 -0
- package/dist/src/dev/transformCache.d.ts +4 -0
- package/dist/src/plugins/hmr.d.ts +1 -1
- package/dist/ssrWorker.ts +55 -0
- package/dist/types/messages.d.ts +5 -1
- package/native/packages/darwin-arm64/fast_ops.dylib +0 -0
- package/native/packages/darwin-arm64/package.json +1 -1
- package/native/packages/darwin-x64/fast_ops.dylib +0 -0
- package/native/packages/darwin-x64/package.json +1 -1
- package/native/packages/linux-arm64/package.json +1 -1
- package/native/packages/linux-x64/fast_ops.so +0 -0
- package/native/packages/linux-x64/package.json +1 -1
- package/package.json +6 -6
- package/types/globals.d.ts +1 -0
- package/types/messages.ts +7 -1
- package/types/typeGuards.ts +2 -0
package/dist/build.js
CHANGED
|
@@ -419,7 +419,7 @@ var indexContentCache, resolveDevClientDir = () => {
|
|
|
419
419
|
const hasher = new Bun.CryptoHasher("md5");
|
|
420
420
|
hasher.update(content);
|
|
421
421
|
const contentHash = hasher.digest("hex");
|
|
422
|
-
if (indexContentCache.get(indexPath) === contentHash) {
|
|
422
|
+
if (indexContentCache.get(indexPath) === contentHash && existsSync(indexPath)) {
|
|
423
423
|
return;
|
|
424
424
|
}
|
|
425
425
|
indexContentCache.set(indexPath, contentHash);
|
|
@@ -170927,7 +170927,7 @@ import {
|
|
|
170927
170927
|
rmSync,
|
|
170928
170928
|
writeFileSync as writeFileSync3
|
|
170929
170929
|
} from "fs";
|
|
170930
|
-
import { basename as basename5, join as join11, resolve as resolve9 } from "path";
|
|
170930
|
+
import { basename as basename5, join as join11, relative as relative6, resolve as resolve9 } from "path";
|
|
170931
170931
|
import { cwd, env as env2, exit } from "process";
|
|
170932
170932
|
var {build: bunBuild4, Glob: Glob5 } = globalThis.Bun;
|
|
170933
170933
|
var isDev, extractBuildError = (logs, pass, label, frameworkNames, isIncremental, throwOnError) => {
|
|
@@ -171464,6 +171464,18 @@ var isDev, extractBuildError = (logs, pass, label, frameworkNames, isIncremental
|
|
|
171464
171464
|
...cssOutputs.map((a) => a.path)
|
|
171465
171465
|
]);
|
|
171466
171466
|
}
|
|
171467
|
+
if (hmr && reactIndexesPath && reactPagesPath) {
|
|
171468
|
+
const { readdirSync: readDir } = await import("fs");
|
|
171469
|
+
const devIndexDir = join11(buildPath, "_src_indexes");
|
|
171470
|
+
mkdirSync6(devIndexDir, { recursive: true });
|
|
171471
|
+
const indexFiles = readDir(reactIndexesPath).filter((f) => f.endsWith(".tsx"));
|
|
171472
|
+
const pagesRel = relative6(process.cwd(), resolve9(reactPagesPath)).replace(/\\/g, "/");
|
|
171473
|
+
for (const file3 of indexFiles) {
|
|
171474
|
+
let content = readFileSync5(join11(reactIndexesPath, file3), "utf-8");
|
|
171475
|
+
content = content.replace(/from\s*['"]\.\.\/pages\/([^'"]+)['"]/g, `from '/@src/${pagesRel}/$1'`);
|
|
171476
|
+
writeFileSync3(join11(devIndexDir, file3), content);
|
|
171477
|
+
}
|
|
171478
|
+
}
|
|
171467
171479
|
if (!options?.preserveIntermediateFiles)
|
|
171468
171480
|
await cleanup({
|
|
171469
171481
|
angularDir,
|
|
@@ -172312,6 +172324,8 @@ var isValidHMRClientMessage = (data) => {
|
|
|
172312
172324
|
return true;
|
|
172313
172325
|
case "hydration-error":
|
|
172314
172326
|
return true;
|
|
172327
|
+
case "hmr-timing":
|
|
172328
|
+
return true;
|
|
172315
172329
|
default:
|
|
172316
172330
|
return false;
|
|
172317
172331
|
}
|
|
@@ -172394,6 +172408,18 @@ var trySendMessage = (client, messageStr) => {
|
|
|
172394
172408
|
state.activeFrameworks.add(data.framework);
|
|
172395
172409
|
}
|
|
172396
172410
|
break;
|
|
172411
|
+
case "hmr-timing": {
|
|
172412
|
+
const timing = data;
|
|
172413
|
+
if (timing.duration !== undefined) {
|
|
172414
|
+
const lastPath = state.lastHmrPath ?? "";
|
|
172415
|
+
const breakdown = timing.serverMs !== undefined ? ` (server ${timing.serverMs}ms + fetch ${timing.fetchMs ?? 0}ms + refresh ${timing.refreshMs ?? 0}ms)` : "";
|
|
172416
|
+
logHmrUpdate(lastPath, state.lastHmrFramework, timing.duration);
|
|
172417
|
+
if (breakdown) {
|
|
172418
|
+
console.log(` ${breakdown}`);
|
|
172419
|
+
}
|
|
172420
|
+
}
|
|
172421
|
+
break;
|
|
172422
|
+
}
|
|
172397
172423
|
}
|
|
172398
172424
|
}, handleHMRMessage = (state, client, message) => {
|
|
172399
172425
|
try {
|
|
@@ -172407,7 +172433,9 @@ var trySendMessage = (client, messageStr) => {
|
|
|
172407
172433
|
handleParsedMessage(state, client, parsedData);
|
|
172408
172434
|
} catch {}
|
|
172409
172435
|
};
|
|
172410
|
-
var init_webSocket = () => {
|
|
172436
|
+
var init_webSocket = __esm(() => {
|
|
172437
|
+
init_logger();
|
|
172438
|
+
});
|
|
172411
172439
|
|
|
172412
172440
|
// src/utils/ssrErrorPage.ts
|
|
172413
172441
|
var ssrErrorPage = (framework, error) => {
|
|
@@ -202101,16 +202129,363 @@ var init_pageHandler = __esm(() => {
|
|
|
202101
202129
|
setSsrContextGetter(() => angularSsrContext.getStore());
|
|
202102
202130
|
});
|
|
202103
202131
|
|
|
202132
|
+
// src/dev/transformCache.ts
|
|
202133
|
+
var exports_transformCache = {};
|
|
202134
|
+
__export(exports_transformCache, {
|
|
202135
|
+
setTransformed: () => setTransformed,
|
|
202136
|
+
invalidateAll: () => invalidateAll,
|
|
202137
|
+
invalidate: () => invalidate,
|
|
202138
|
+
getTransformed: () => getTransformed
|
|
202139
|
+
});
|
|
202140
|
+
import { statSync } from "fs";
|
|
202141
|
+
var globalStore, cache, getTransformed = (filePath) => {
|
|
202142
|
+
const entry = cache.get(filePath);
|
|
202143
|
+
if (!entry)
|
|
202144
|
+
return;
|
|
202145
|
+
try {
|
|
202146
|
+
const stat2 = statSync(filePath);
|
|
202147
|
+
if (stat2.mtimeMs === entry.mtime)
|
|
202148
|
+
return entry.content;
|
|
202149
|
+
} catch {
|
|
202150
|
+
cache.delete(filePath);
|
|
202151
|
+
}
|
|
202152
|
+
return;
|
|
202153
|
+
}, setTransformed = (filePath, content, mtime) => {
|
|
202154
|
+
cache.set(filePath, { content, mtime });
|
|
202155
|
+
}, invalidate = (filePath) => {
|
|
202156
|
+
cache.delete(filePath);
|
|
202157
|
+
}, invalidateAll = () => {
|
|
202158
|
+
cache.clear();
|
|
202159
|
+
};
|
|
202160
|
+
var init_transformCache = __esm(() => {
|
|
202161
|
+
globalStore = globalThis;
|
|
202162
|
+
cache = globalStore.__transformCache ?? new Map;
|
|
202163
|
+
globalStore.__transformCache = cache;
|
|
202164
|
+
});
|
|
202165
|
+
|
|
202166
|
+
// src/dev/moduleServer.ts
|
|
202167
|
+
var exports_moduleServer = {};
|
|
202168
|
+
__export(exports_moduleServer, {
|
|
202169
|
+
warmCache: () => warmCache,
|
|
202170
|
+
setGlobalModuleServer: () => setGlobalModuleServer,
|
|
202171
|
+
invalidateModule: () => invalidateModule,
|
|
202172
|
+
createModuleServer: () => createModuleServer,
|
|
202173
|
+
SRC_URL_PREFIX: () => SRC_URL_PREFIX
|
|
202174
|
+
});
|
|
202175
|
+
import { readFileSync as readFileSync9, statSync as statSync2 } from "fs";
|
|
202176
|
+
import { dirname as dirname7, extname as extname3, resolve as resolve16, relative as relative7 } from "path";
|
|
202177
|
+
var SRC_PREFIX = "/@src/", jsTranspiler2, tsTranspiler2, TRANSPILABLE, ALL_EXPORTS_RE, preserveTypeExports = (originalSource, transpiled, valueExports) => {
|
|
202178
|
+
const allExports = [];
|
|
202179
|
+
let match;
|
|
202180
|
+
ALL_EXPORTS_RE.lastIndex = 0;
|
|
202181
|
+
while ((match = ALL_EXPORTS_RE.exec(originalSource)) !== null) {
|
|
202182
|
+
if (match[1])
|
|
202183
|
+
allExports.push(match[1]);
|
|
202184
|
+
}
|
|
202185
|
+
const valueSet = new Set(valueExports);
|
|
202186
|
+
const typeExports = allExports.filter((e) => !valueSet.has(e));
|
|
202187
|
+
if (typeExports.length === 0)
|
|
202188
|
+
return transpiled;
|
|
202189
|
+
const stubs = typeExports.map((name) => `export const ${name} = undefined;`).join(`
|
|
202190
|
+
`);
|
|
202191
|
+
return `${transpiled}
|
|
202192
|
+
${stubs}
|
|
202193
|
+
`;
|
|
202194
|
+
}, REACT_EXTENSIONS, escapeRegex3 = (str) => str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), buildImportRewriter = (vendorPaths) => {
|
|
202195
|
+
const entries = Object.entries(vendorPaths).sort(([a], [b]) => b.length - a.length);
|
|
202196
|
+
if (entries.length === 0)
|
|
202197
|
+
return null;
|
|
202198
|
+
const alt = entries.map(([spec]) => escapeRegex3(spec)).join("|");
|
|
202199
|
+
const lookup = new Map(entries);
|
|
202200
|
+
const fromRegex = new RegExp(`(from\\s*["'])(${alt})(["'])`, "g");
|
|
202201
|
+
const sideEffectRegex = new RegExp(`(import\\s*["'])(${alt})(["']\\s*;?)`, "g");
|
|
202202
|
+
const dynamicRegex = new RegExp(`(import\\s*\\(\\s*["'])(${alt})(["']\\s*\\))`, "g");
|
|
202203
|
+
return { dynamicRegex, fromRegex, lookup, sideEffectRegex };
|
|
202204
|
+
}, rewriteImports2 = (code, filePath, projectRoot, rewriter) => {
|
|
202205
|
+
let result = code;
|
|
202206
|
+
result = result.replace(/^(import\s+.+?\s+from\s*["'])([^"'./][^"']*)(["'])/gm, (_match, prefix, specifier, suffix) => {
|
|
202207
|
+
const webPath = rewriter?.lookup.get(specifier);
|
|
202208
|
+
if (webPath)
|
|
202209
|
+
return `${prefix}${webPath}${suffix}`;
|
|
202210
|
+
return `${prefix}/@stub/${encodeURIComponent(specifier)}${suffix}`;
|
|
202211
|
+
});
|
|
202212
|
+
result = result.replace(/^(import\s*["'])([^"'./][^"']*)(["'])/gm, (_match, prefix, specifier, suffix) => {
|
|
202213
|
+
const webPath = rewriter?.lookup.get(specifier);
|
|
202214
|
+
if (webPath)
|
|
202215
|
+
return `${prefix}${webPath}${suffix}`;
|
|
202216
|
+
return `${prefix}/@stub/${encodeURIComponent(specifier)}${suffix}`;
|
|
202217
|
+
});
|
|
202218
|
+
result = result.replace(/^(export\s+.+?\s+from\s*["'])([^"'./][^"']*)(["'])/gm, (_match, prefix, specifier, suffix) => {
|
|
202219
|
+
const webPath = rewriter?.lookup.get(specifier);
|
|
202220
|
+
if (webPath)
|
|
202221
|
+
return `${prefix}${webPath}${suffix}`;
|
|
202222
|
+
return `${prefix}/@stub/${encodeURIComponent(specifier)}${suffix}`;
|
|
202223
|
+
});
|
|
202224
|
+
const fileDir = dirname7(filePath);
|
|
202225
|
+
result = result.replace(/(from\s*["'])(\.\.?\/[^"']+)(["'])/g, (_match, prefix, relPath, suffix) => {
|
|
202226
|
+
const absPath = resolve16(fileDir, relPath);
|
|
202227
|
+
const rel = relative7(projectRoot, absPath);
|
|
202228
|
+
let srcPath = rel;
|
|
202229
|
+
if (!extname3(srcPath)) {
|
|
202230
|
+
const extensions = [".tsx", ".ts", ".jsx", ".js"];
|
|
202231
|
+
for (const ext of extensions) {
|
|
202232
|
+
try {
|
|
202233
|
+
statSync2(resolve16(projectRoot, srcPath + ext));
|
|
202234
|
+
srcPath += ext;
|
|
202235
|
+
break;
|
|
202236
|
+
} catch {}
|
|
202237
|
+
}
|
|
202238
|
+
}
|
|
202239
|
+
return `${prefix}${SRC_PREFIX}${srcPath.replace(/\\/g, "/")}${suffix}`;
|
|
202240
|
+
});
|
|
202241
|
+
result = result.replace(/(import\s*\(\s*["'])(\.\.?\/[^"']+)(["']\s*\))/g, (_match, prefix, relPath, suffix) => {
|
|
202242
|
+
const absPath = resolve16(fileDir, relPath);
|
|
202243
|
+
const rel = relative7(projectRoot, absPath);
|
|
202244
|
+
return `${prefix}${SRC_PREFIX}${rel.replace(/\\/g, "/")}${suffix}`;
|
|
202245
|
+
});
|
|
202246
|
+
result = result.replace(/(import\s*["'])(\.\.?\/[^"']+)(["']\s*;?)/g, (_match, prefix, relPath, suffix) => {
|
|
202247
|
+
const absPath = resolve16(fileDir, relPath);
|
|
202248
|
+
const rel = relative7(projectRoot, absPath);
|
|
202249
|
+
let srcPath = rel;
|
|
202250
|
+
if (!extname3(srcPath)) {
|
|
202251
|
+
const extensions = [".tsx", ".ts", ".jsx", ".js", ".css"];
|
|
202252
|
+
for (const ext of extensions) {
|
|
202253
|
+
try {
|
|
202254
|
+
statSync2(resolve16(projectRoot, srcPath + ext));
|
|
202255
|
+
srcPath += ext;
|
|
202256
|
+
break;
|
|
202257
|
+
} catch {}
|
|
202258
|
+
}
|
|
202259
|
+
}
|
|
202260
|
+
return `${prefix}${SRC_PREFIX}${srcPath.replace(/\\/g, "/")}${suffix}`;
|
|
202261
|
+
});
|
|
202262
|
+
result = result.replace(/((?:from|import)\s*["'])(\/[^"']+\.(tsx?|jsx?|ts))(["'])/g, (_match, prefix, absPath, _ext, suffix) => {
|
|
202263
|
+
if (absPath.startsWith(projectRoot)) {
|
|
202264
|
+
const rel2 = relative7(projectRoot, absPath).replace(/\\/g, "/");
|
|
202265
|
+
return `${prefix}${SRC_PREFIX}${rel2}${suffix}`;
|
|
202266
|
+
}
|
|
202267
|
+
const rel = relative7(projectRoot, absPath).replace(/\\/g, "/");
|
|
202268
|
+
if (!rel.startsWith("..")) {
|
|
202269
|
+
return `${prefix}${SRC_PREFIX}${rel}${suffix}`;
|
|
202270
|
+
}
|
|
202271
|
+
return _match;
|
|
202272
|
+
});
|
|
202273
|
+
return result;
|
|
202274
|
+
}, HOOK_NAMES, REFRESH_PREAMBLE, JSX_AUTO_RE, JSXS_AUTO_RE, JSX_PROD_RE, FRAGMENT_RE, addJsxImport = (code) => {
|
|
202275
|
+
const imports = [];
|
|
202276
|
+
const jsxDevMatch = JSX_AUTO_RE.exec(code);
|
|
202277
|
+
if (jsxDevMatch) {
|
|
202278
|
+
imports.push(`import { jsxDEV as ${jsxDevMatch[1]} } from "react/jsx-dev-runtime";`);
|
|
202279
|
+
}
|
|
202280
|
+
const jsxsMatch = JSXS_AUTO_RE.exec(code);
|
|
202281
|
+
if (jsxsMatch && (!jsxDevMatch || jsxsMatch[1] !== jsxDevMatch[1])) {
|
|
202282
|
+
imports.push(`import { jsxs as ${jsxsMatch[1]} } from "react/jsx-runtime";`);
|
|
202283
|
+
}
|
|
202284
|
+
const jsxProdMatch = JSX_PROD_RE.exec(code);
|
|
202285
|
+
if (jsxProdMatch) {
|
|
202286
|
+
imports.push(`import { jsx as ${jsxProdMatch[1]} } from "react/jsx-runtime";`);
|
|
202287
|
+
}
|
|
202288
|
+
const fragmentMatch = FRAGMENT_RE.exec(code);
|
|
202289
|
+
if (fragmentMatch) {
|
|
202290
|
+
imports.push(`import { Fragment as ${fragmentMatch[1]} } from "react";`);
|
|
202291
|
+
}
|
|
202292
|
+
if (imports.length === 0)
|
|
202293
|
+
return code;
|
|
202294
|
+
return imports.join(`
|
|
202295
|
+
`) + `
|
|
202296
|
+
` + code;
|
|
202297
|
+
}, reactTranspiler, transformReactFile = (filePath, projectRoot, rewriter) => {
|
|
202298
|
+
const raw = readFileSync9(filePath, "utf-8");
|
|
202299
|
+
const valueExports = tsTranspiler2.scan(raw).exports;
|
|
202300
|
+
let transpiled = reactTranspiler.transformSync(raw);
|
|
202301
|
+
transpiled = preserveTypeExports(raw, transpiled, valueExports);
|
|
202302
|
+
transpiled = addJsxImport(transpiled);
|
|
202303
|
+
transpiled = transpiled.replace(/import\s*\{[^}]*\}\s*from\s*["']react-refresh\/runtime["'];?\n?/, "");
|
|
202304
|
+
transpiled = transpiled.replace(/\$RefreshReg\$_[a-z0-9]+/g, "$RefreshReg$");
|
|
202305
|
+
transpiled = transpiled.replace(/\$RefreshSig\$_[a-z0-9]+/g, "$RefreshSig$");
|
|
202306
|
+
transpiled = `var $RefreshReg$ = window.$RefreshReg$ || function(){};
|
|
202307
|
+
` + `var $RefreshSig$ = window.$RefreshSig$ || function(){ return function(t){ return t; }; };
|
|
202308
|
+
` + transpiled;
|
|
202309
|
+
const relPath = relative7(projectRoot, filePath).replace(/\\/g, "/");
|
|
202310
|
+
transpiled = transpiled.replace(/\binput\.tsx:/g, `${relPath}:`);
|
|
202311
|
+
return rewriteImports2(transpiled, filePath, projectRoot, rewriter);
|
|
202312
|
+
}, transformPlainFile = (filePath, projectRoot, rewriter) => {
|
|
202313
|
+
const raw = readFileSync9(filePath, "utf-8");
|
|
202314
|
+
const ext = extname3(filePath);
|
|
202315
|
+
const isTS = ext === ".ts" || ext === ".tsx";
|
|
202316
|
+
const transpiler3 = isTS ? tsTranspiler2 : jsTranspiler2;
|
|
202317
|
+
const valueExports = isTS ? transpiler3.scan(raw).exports : [];
|
|
202318
|
+
let transpiled = transpiler3.transformSync(raw);
|
|
202319
|
+
if (isTS) {
|
|
202320
|
+
transpiled = preserveTypeExports(raw, transpiled, valueExports);
|
|
202321
|
+
}
|
|
202322
|
+
return rewriteImports2(transpiled, filePath, projectRoot, rewriter);
|
|
202323
|
+
}, handleCssRequest = (filePath) => {
|
|
202324
|
+
const raw = readFileSync9(filePath, "utf-8");
|
|
202325
|
+
const escaped = raw.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$/g, "\\$");
|
|
202326
|
+
return [
|
|
202327
|
+
`const style = document.createElement('style');`,
|
|
202328
|
+
`style.textContent = \`${escaped}\`;`,
|
|
202329
|
+
`style.dataset.hmrId = ${JSON.stringify(filePath)};`,
|
|
202330
|
+
`const existing = document.querySelector(\`style[data-hmr-id="${filePath}"]\`);`,
|
|
202331
|
+
`if (existing) existing.remove();`,
|
|
202332
|
+
`document.head.appendChild(style);`
|
|
202333
|
+
].join(`
|
|
202334
|
+
`);
|
|
202335
|
+
}, createModuleServer = (config) => {
|
|
202336
|
+
const { projectRoot, vendorPaths } = config;
|
|
202337
|
+
const rewriter = buildImportRewriter(vendorPaths);
|
|
202338
|
+
return async (pathname) => {
|
|
202339
|
+
if (pathname.startsWith("/@stub/")) {
|
|
202340
|
+
const specifier = decodeURIComponent(pathname.slice("/@stub/".length));
|
|
202341
|
+
let stubCode = `export default {};
|
|
202342
|
+
`;
|
|
202343
|
+
try {
|
|
202344
|
+
const mod = await import(specifier);
|
|
202345
|
+
const names = Object.keys(mod).filter((k) => k !== "default" && k !== "__esModule");
|
|
202346
|
+
if (names.length > 0) {
|
|
202347
|
+
const noops = names.map((n) => `export const ${n} = () => {};`).join(`
|
|
202348
|
+
`);
|
|
202349
|
+
stubCode = `${noops}
|
|
202350
|
+
export default {};
|
|
202351
|
+
`;
|
|
202352
|
+
}
|
|
202353
|
+
} catch {}
|
|
202354
|
+
return new Response(stubCode, {
|
|
202355
|
+
headers: {
|
|
202356
|
+
"Cache-Control": "public, max-age=31536000, immutable",
|
|
202357
|
+
"Content-Type": "application/javascript"
|
|
202358
|
+
}
|
|
202359
|
+
});
|
|
202360
|
+
}
|
|
202361
|
+
if (!pathname.startsWith(SRC_PREFIX))
|
|
202362
|
+
return;
|
|
202363
|
+
const relPath = pathname.slice(SRC_PREFIX.length);
|
|
202364
|
+
let filePath = resolve16(projectRoot, relPath);
|
|
202365
|
+
let ext = extname3(filePath);
|
|
202366
|
+
if (!ext) {
|
|
202367
|
+
const tryExts = [".tsx", ".ts", ".jsx", ".js"];
|
|
202368
|
+
for (const tryExt of tryExts) {
|
|
202369
|
+
try {
|
|
202370
|
+
statSync2(filePath + tryExt);
|
|
202371
|
+
filePath += tryExt;
|
|
202372
|
+
ext = tryExt;
|
|
202373
|
+
break;
|
|
202374
|
+
} catch {}
|
|
202375
|
+
}
|
|
202376
|
+
}
|
|
202377
|
+
try {
|
|
202378
|
+
if (ext === ".css") {
|
|
202379
|
+
return new Response(handleCssRequest(filePath), {
|
|
202380
|
+
headers: {
|
|
202381
|
+
"Cache-Control": "no-cache",
|
|
202382
|
+
"Content-Type": "application/javascript"
|
|
202383
|
+
}
|
|
202384
|
+
});
|
|
202385
|
+
}
|
|
202386
|
+
if (!TRANSPILABLE.has(ext))
|
|
202387
|
+
return;
|
|
202388
|
+
const cached = getTransformed(filePath);
|
|
202389
|
+
if (cached) {
|
|
202390
|
+
return new Response(cached, {
|
|
202391
|
+
headers: {
|
|
202392
|
+
"Cache-Control": "no-cache",
|
|
202393
|
+
"Content-Type": "application/javascript"
|
|
202394
|
+
}
|
|
202395
|
+
});
|
|
202396
|
+
}
|
|
202397
|
+
const stat2 = statSync2(filePath);
|
|
202398
|
+
let content;
|
|
202399
|
+
if (REACT_EXTENSIONS.has(ext)) {
|
|
202400
|
+
content = transformReactFile(filePath, projectRoot, rewriter);
|
|
202401
|
+
} else {
|
|
202402
|
+
content = transformPlainFile(filePath, projectRoot, rewriter);
|
|
202403
|
+
}
|
|
202404
|
+
setTransformed(filePath, content, stat2.mtimeMs);
|
|
202405
|
+
return new Response(content, {
|
|
202406
|
+
headers: {
|
|
202407
|
+
"Cache-Control": "no-cache",
|
|
202408
|
+
"Content-Type": "application/javascript"
|
|
202409
|
+
}
|
|
202410
|
+
});
|
|
202411
|
+
} catch (err) {
|
|
202412
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
202413
|
+
return new Response(`console.error('[ModuleServer] Transform error:', ${JSON.stringify(message)});`, {
|
|
202414
|
+
headers: { "Content-Type": "application/javascript" },
|
|
202415
|
+
status: 500
|
|
202416
|
+
});
|
|
202417
|
+
}
|
|
202418
|
+
};
|
|
202419
|
+
}, invalidateModule, warmCache = (pathname) => {
|
|
202420
|
+
if (!pathname.startsWith(SRC_PREFIX))
|
|
202421
|
+
return;
|
|
202422
|
+
if (!globalModuleServer)
|
|
202423
|
+
return;
|
|
202424
|
+
globalModuleServer(pathname);
|
|
202425
|
+
}, globalModuleServer = null, setGlobalModuleServer = (handler) => {
|
|
202426
|
+
globalModuleServer = handler;
|
|
202427
|
+
}, SRC_URL_PREFIX;
|
|
202428
|
+
var init_moduleServer = __esm(() => {
|
|
202429
|
+
init_transformCache();
|
|
202430
|
+
jsTranspiler2 = new Bun.Transpiler({
|
|
202431
|
+
loader: "js",
|
|
202432
|
+
trimUnusedImports: true
|
|
202433
|
+
});
|
|
202434
|
+
tsTranspiler2 = new Bun.Transpiler({
|
|
202435
|
+
loader: "tsx",
|
|
202436
|
+
trimUnusedImports: true
|
|
202437
|
+
});
|
|
202438
|
+
TRANSPILABLE = new Set([".ts", ".tsx", ".js", ".jsx", ".mjs"]);
|
|
202439
|
+
ALL_EXPORTS_RE = /export\s+(?:type|interface|const|let|var|function|class|enum|abstract\s+class)\s+(\w+)/g;
|
|
202440
|
+
REACT_EXTENSIONS = new Set([".tsx", ".jsx"]);
|
|
202441
|
+
HOOK_NAMES = new Set([
|
|
202442
|
+
"useState",
|
|
202443
|
+
"useReducer",
|
|
202444
|
+
"useEffect",
|
|
202445
|
+
"useLayoutEffect",
|
|
202446
|
+
"useMemo",
|
|
202447
|
+
"useCallback",
|
|
202448
|
+
"useRef",
|
|
202449
|
+
"useContext",
|
|
202450
|
+
"useImperativeHandle",
|
|
202451
|
+
"useDebugValue",
|
|
202452
|
+
"useDeferredValue",
|
|
202453
|
+
"useTransition",
|
|
202454
|
+
"useId",
|
|
202455
|
+
"useSyncExternalStore",
|
|
202456
|
+
"useInsertionEffect",
|
|
202457
|
+
"useOptimistic",
|
|
202458
|
+
"useFormStatus",
|
|
202459
|
+
"useActionState"
|
|
202460
|
+
]);
|
|
202461
|
+
REFRESH_PREAMBLE = [
|
|
202462
|
+
"var $RefreshReg$ = window.$RefreshReg$ || function(){};",
|
|
202463
|
+
"var $RefreshSig$ = window.$RefreshSig$ || function(){ return function(t){ return t; }; };"
|
|
202464
|
+
].join(`
|
|
202465
|
+
`);
|
|
202466
|
+
JSX_AUTO_RE = /\b(jsxDEV_[a-z0-9]+)\b/;
|
|
202467
|
+
JSXS_AUTO_RE = /\b(jsxs_[a-z0-9]+)\b/;
|
|
202468
|
+
JSX_PROD_RE = /\b(jsx_[a-z0-9]+)\b/;
|
|
202469
|
+
FRAGMENT_RE = /\b(Fragment_[a-z0-9]+)\b/;
|
|
202470
|
+
reactTranspiler = new Bun.Transpiler({
|
|
202471
|
+
loader: "tsx",
|
|
202472
|
+
reactFastRefresh: true,
|
|
202473
|
+
trimUnusedImports: true
|
|
202474
|
+
});
|
|
202475
|
+
invalidateModule = invalidate;
|
|
202476
|
+
SRC_URL_PREFIX = SRC_PREFIX;
|
|
202477
|
+
});
|
|
202478
|
+
|
|
202104
202479
|
// src/dev/simpleHTMLHMR.ts
|
|
202105
202480
|
var exports_simpleHTMLHMR = {};
|
|
202106
202481
|
__export(exports_simpleHTMLHMR, {
|
|
202107
202482
|
handleHTMLUpdate: () => handleHTMLUpdate
|
|
202108
202483
|
});
|
|
202109
|
-
import { resolve as
|
|
202484
|
+
import { resolve as resolve17 } from "path";
|
|
202110
202485
|
var handleHTMLUpdate = async (htmlFilePath) => {
|
|
202111
202486
|
let htmlContent;
|
|
202112
202487
|
try {
|
|
202113
|
-
const resolvedPath =
|
|
202488
|
+
const resolvedPath = resolve17(htmlFilePath);
|
|
202114
202489
|
const file3 = Bun.file(resolvedPath);
|
|
202115
202490
|
if (!await file3.exists()) {
|
|
202116
202491
|
return null;
|
|
@@ -202136,11 +202511,11 @@ var exports_simpleHTMXHMR = {};
|
|
|
202136
202511
|
__export(exports_simpleHTMXHMR, {
|
|
202137
202512
|
handleHTMXUpdate: () => handleHTMXUpdate
|
|
202138
202513
|
});
|
|
202139
|
-
import { resolve as
|
|
202514
|
+
import { resolve as resolve18 } from "path";
|
|
202140
202515
|
var handleHTMXUpdate = async (htmxFilePath) => {
|
|
202141
202516
|
let htmlContent;
|
|
202142
202517
|
try {
|
|
202143
|
-
const resolvedPath =
|
|
202518
|
+
const resolvedPath = resolve18(htmxFilePath);
|
|
202144
202519
|
const file3 = Bun.file(resolvedPath);
|
|
202145
202520
|
if (!await file3.exists()) {
|
|
202146
202521
|
return null;
|
|
@@ -202164,7 +202539,7 @@ var init_simpleHTMXHMR = () => {};
|
|
|
202164
202539
|
// src/dev/rebuildTrigger.ts
|
|
202165
202540
|
import { existsSync as existsSync13 } from "fs";
|
|
202166
202541
|
import { rm as rm6 } from "fs/promises";
|
|
202167
|
-
import { basename as basename7, relative as
|
|
202542
|
+
import { basename as basename7, relative as relative8, resolve as resolve19 } from "path";
|
|
202168
202543
|
var parseErrorLocationFromMessage = (msg) => {
|
|
202169
202544
|
const pathLineCol = msg.match(/^([^\s:]+):(\d+)(?::(\d+))?/);
|
|
202170
202545
|
if (pathLineCol) {
|
|
@@ -202236,7 +202611,7 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202236
202611
|
state.fileHashes.delete(filePathInSet);
|
|
202237
202612
|
try {
|
|
202238
202613
|
const affectedFiles = getAffectedFiles(state.dependencyGraph, filePathInSet);
|
|
202239
|
-
const deletedPathResolved =
|
|
202614
|
+
const deletedPathResolved = resolve19(filePathInSet);
|
|
202240
202615
|
affectedFiles.forEach((affectedFile) => {
|
|
202241
202616
|
if (isValidDeletedAffectedFile(affectedFile, deletedPathResolved, processedFiles)) {
|
|
202242
202617
|
validFiles.push(affectedFile);
|
|
@@ -202280,7 +202655,7 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202280
202655
|
if (storedHash !== undefined && storedHash === fileHash) {
|
|
202281
202656
|
return;
|
|
202282
202657
|
}
|
|
202283
|
-
const normalizedFilePath =
|
|
202658
|
+
const normalizedFilePath = resolve19(filePathInSet);
|
|
202284
202659
|
if (!processedFiles.has(normalizedFilePath)) {
|
|
202285
202660
|
validFiles.push(normalizedFilePath);
|
|
202286
202661
|
processedFiles.add(normalizedFilePath);
|
|
@@ -202371,7 +202746,7 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202371
202746
|
}
|
|
202372
202747
|
if (!graph)
|
|
202373
202748
|
return componentFile;
|
|
202374
|
-
const dependents = graph.dependents.get(
|
|
202749
|
+
const dependents = graph.dependents.get(resolve19(componentFile));
|
|
202375
202750
|
if (!dependents)
|
|
202376
202751
|
return componentFile;
|
|
202377
202752
|
for (const dep of dependents) {
|
|
@@ -202380,7 +202755,7 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202380
202755
|
}
|
|
202381
202756
|
return componentFile;
|
|
202382
202757
|
}, resolveAngularPageEntries = (state, angularFiles, angularPagesPath) => {
|
|
202383
|
-
const pageEntries = angularFiles.filter((file3) => file3.endsWith(".ts") &&
|
|
202758
|
+
const pageEntries = angularFiles.filter((file3) => file3.endsWith(".ts") && resolve19(file3).startsWith(angularPagesPath));
|
|
202384
202759
|
if (pageEntries.length > 0 || !state.dependencyGraph) {
|
|
202385
202760
|
return pageEntries;
|
|
202386
202761
|
}
|
|
@@ -202389,7 +202764,7 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202389
202764
|
const lookupFile = resolveComponentLookupFile(componentFile, state.dependencyGraph);
|
|
202390
202765
|
const affected = getAffectedFiles(state.dependencyGraph, lookupFile);
|
|
202391
202766
|
affected.forEach((file3) => {
|
|
202392
|
-
if (file3.endsWith(".ts") &&
|
|
202767
|
+
if (file3.endsWith(".ts") && resolve19(file3).startsWith(angularPagesPath)) {
|
|
202393
202768
|
resolvedPages.add(file3);
|
|
202394
202769
|
}
|
|
202395
202770
|
});
|
|
@@ -202438,8 +202813,8 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202438
202813
|
return;
|
|
202439
202814
|
}
|
|
202440
202815
|
if (angVendorPaths) {
|
|
202441
|
-
const { rewriteImports:
|
|
202442
|
-
await
|
|
202816
|
+
const { rewriteImports: rewriteImports3 } = await Promise.resolve().then(() => exports_rewriteImports);
|
|
202817
|
+
await rewriteImports3(clientResult.outputs.map((artifact) => artifact.path), angVendorPaths);
|
|
202443
202818
|
}
|
|
202444
202819
|
const clientManifest = generateManifest2(clientResult.outputs, buildDir);
|
|
202445
202820
|
Object.assign(state.manifest, clientManifest);
|
|
@@ -202470,7 +202845,7 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202470
202845
|
const { clientPaths, serverPaths } = await compileAngular2(pageEntries, angularDir, true);
|
|
202471
202846
|
serverPaths.forEach((serverPath) => {
|
|
202472
202847
|
const fileBase = basename7(serverPath, ".js");
|
|
202473
|
-
state.manifest[toPascal(fileBase)] =
|
|
202848
|
+
state.manifest[toPascal(fileBase)] = resolve19(serverPath);
|
|
202474
202849
|
});
|
|
202475
202850
|
if (clientPaths.length > 0) {
|
|
202476
202851
|
await bundleAngularClient(state, clientPaths, state.resolvedPaths.buildDir);
|
|
@@ -202478,14 +202853,14 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202478
202853
|
}, handleAngularFastPath = async (state, config, filesToRebuild, startTime, onRebuildComplete) => {
|
|
202479
202854
|
const angularDir = config.angularDirectory ?? "";
|
|
202480
202855
|
const angularFiles = filesToRebuild.filter((file3) => detectFramework(file3, state.resolvedPaths) === "angular");
|
|
202481
|
-
const angularPagesPath =
|
|
202856
|
+
const angularPagesPath = resolve19(angularDir, "pages");
|
|
202482
202857
|
const pageEntries = resolveAngularPageEntries(state, angularFiles, angularPagesPath);
|
|
202483
202858
|
if (pageEntries.length > 0) {
|
|
202484
202859
|
await compileAndBundleAngular(state, pageEntries, angularDir);
|
|
202485
202860
|
invalidateAngularSsrCache();
|
|
202486
202861
|
}
|
|
202487
202862
|
if (pageEntries.length > 0 && !config.options?.preserveIntermediateFiles) {
|
|
202488
|
-
await rm6(
|
|
202863
|
+
await rm6(resolve19(angularDir, "compiled"), {
|
|
202489
202864
|
force: true,
|
|
202490
202865
|
recursive: true
|
|
202491
202866
|
});
|
|
@@ -202499,7 +202874,7 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202499
202874
|
return manifest;
|
|
202500
202875
|
}, resolveReactEntryForPageFile = (normalized, pagesPathResolved, reactIndexesPath) => {
|
|
202501
202876
|
const pageName = basename7(normalized, ".tsx");
|
|
202502
|
-
const indexPath =
|
|
202877
|
+
const indexPath = resolve19(reactIndexesPath, `${pageName}.tsx`);
|
|
202503
202878
|
if (!existsSync13(indexPath)) {
|
|
202504
202879
|
return;
|
|
202505
202880
|
}
|
|
@@ -202511,13 +202886,13 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202511
202886
|
return;
|
|
202512
202887
|
}
|
|
202513
202888
|
const pageName = basename7(dep, ".tsx");
|
|
202514
|
-
const indexPath =
|
|
202889
|
+
const indexPath = resolve19(reactIndexesPath, `${pageName}.tsx`);
|
|
202515
202890
|
if (existsSync13(indexPath) && !reactEntries.includes(indexPath)) {
|
|
202516
202891
|
reactEntries.push(indexPath);
|
|
202517
202892
|
}
|
|
202518
202893
|
});
|
|
202519
202894
|
}, resolveReactEntryForFile = (state, file3, pagesPathResolved, reactIndexesPath, reactEntries) => {
|
|
202520
|
-
const normalized =
|
|
202895
|
+
const normalized = resolve19(file3);
|
|
202521
202896
|
if (!normalized.startsWith(pagesPathResolved)) {
|
|
202522
202897
|
resolveReactEntriesFromDeps(state, normalized, pagesPathResolved, reactIndexesPath, reactEntries);
|
|
202523
202898
|
return;
|
|
@@ -202528,7 +202903,7 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202528
202903
|
}
|
|
202529
202904
|
}, collectReactEntries = (state, filesToRebuild, reactPagesPath, reactIndexesPath) => {
|
|
202530
202905
|
const reactEntries = [];
|
|
202531
|
-
const pagesPathResolved =
|
|
202906
|
+
const pagesPathResolved = resolve19(reactPagesPath);
|
|
202532
202907
|
filesToRebuild.forEach((file3) => {
|
|
202533
202908
|
resolveReactEntryForFile(state, file3, pagesPathResolved, reactIndexesPath, reactEntries);
|
|
202534
202909
|
});
|
|
@@ -202539,7 +202914,7 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202539
202914
|
const { getDevVendorPaths: getDevVendorPaths2 } = await Promise.resolve().then(() => exports_devVendorPaths);
|
|
202540
202915
|
const { rewriteReactImports: rewriteReactImports2 } = await Promise.resolve().then(() => (init_rewriteReactImports(), exports_rewriteReactImports));
|
|
202541
202916
|
const clientRoot = await computeClientRoot(state.resolvedPaths);
|
|
202542
|
-
const refreshEntry =
|
|
202917
|
+
const refreshEntry = resolve19(reactIndexesPath, "_refresh.tsx");
|
|
202543
202918
|
if (!reactEntries.includes(refreshEntry)) {
|
|
202544
202919
|
reactEntries.push(refreshEntry);
|
|
202545
202920
|
}
|
|
@@ -202551,7 +202926,7 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202551
202926
|
setDevVendorPaths2(vendorPaths);
|
|
202552
202927
|
}
|
|
202553
202928
|
const { rmSync: rmSync2 } = await import("fs");
|
|
202554
|
-
rmSync2(
|
|
202929
|
+
rmSync2(resolve19(buildDir, "react", "indexes"), {
|
|
202555
202930
|
force: true,
|
|
202556
202931
|
recursive: true
|
|
202557
202932
|
});
|
|
@@ -202577,11 +202952,51 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202577
202952
|
const clientManifest = generateManifest2(clientResult.outputs, buildDir);
|
|
202578
202953
|
Object.assign(state.manifest, clientManifest);
|
|
202579
202954
|
await populateAssetStore(state.assetStore, clientManifest, buildDir);
|
|
202955
|
+
}, getReactModule = async (pageFile) => {
|
|
202956
|
+
const { invalidateModule: invalidateModule2, warmCache: warmCache2, SRC_URL_PREFIX: SRC_URL_PREFIX2 } = await Promise.resolve().then(() => (init_moduleServer(), exports_moduleServer));
|
|
202957
|
+
const { getTransformed: getTransformed2 } = await Promise.resolve().then(() => (init_transformCache(), exports_transformCache));
|
|
202958
|
+
invalidateModule2(pageFile);
|
|
202959
|
+
const rel = relative8(process.cwd(), pageFile).replace(/\\/g, "/");
|
|
202960
|
+
const url = `${SRC_URL_PREFIX2}${rel}`;
|
|
202961
|
+
warmCache2(url);
|
|
202962
|
+
const code = getTransformed2(resolve19(pageFile));
|
|
202963
|
+
return { code, url };
|
|
202580
202964
|
}, handleReactFastPath = async (state, config, filesToRebuild, startTime, onRebuildComplete) => {
|
|
202581
202965
|
const reactDir = config.reactDirectory ?? "";
|
|
202582
|
-
const reactPagesPath =
|
|
202583
|
-
const reactIndexesPath =
|
|
202966
|
+
const reactPagesPath = resolve19(reactDir, "pages");
|
|
202967
|
+
const reactIndexesPath = resolve19(reactDir, "indexes");
|
|
202584
202968
|
const { buildDir } = state.resolvedPaths;
|
|
202969
|
+
const reactFiles = filesToRebuild.filter((file3) => detectFramework(file3, state.resolvedPaths) === "react");
|
|
202970
|
+
if (reactFiles.length > 0) {
|
|
202971
|
+
const [changedFile] = reactFiles;
|
|
202972
|
+
if (changedFile) {
|
|
202973
|
+
const { code, url } = await getReactModule(changedFile);
|
|
202974
|
+
if (url) {
|
|
202975
|
+
const serverDuration = Date.now() - startTime;
|
|
202976
|
+
state.lastHmrPath = changedFile;
|
|
202977
|
+
state.lastHmrFramework = "react";
|
|
202978
|
+
broadcastToClients(state, {
|
|
202979
|
+
data: {
|
|
202980
|
+
code,
|
|
202981
|
+
framework: "react",
|
|
202982
|
+
hasComponentChanges: true,
|
|
202983
|
+
hasCSSChanges: false,
|
|
202984
|
+
manifest: state.manifest,
|
|
202985
|
+
pageModuleUrl: url,
|
|
202986
|
+
primarySource: changedFile,
|
|
202987
|
+
serverDuration,
|
|
202988
|
+
sourceFiles: reactFiles
|
|
202989
|
+
},
|
|
202990
|
+
type: "react-update"
|
|
202991
|
+
});
|
|
202992
|
+
onRebuildComplete({
|
|
202993
|
+
hmrState: state,
|
|
202994
|
+
manifest: state.manifest
|
|
202995
|
+
});
|
|
202996
|
+
return state.manifest;
|
|
202997
|
+
}
|
|
202998
|
+
}
|
|
202999
|
+
}
|
|
202585
203000
|
const { generateReactIndexFiles: generateReactIndexFiles2 } = await Promise.resolve().then(() => (init_generateReactIndexes(), exports_generateReactIndexes));
|
|
202586
203001
|
await generateReactIndexFiles2(reactPagesPath, reactIndexesPath, true);
|
|
202587
203002
|
const reactEntries = collectReactEntries(state, filesToRebuild, reactPagesPath, reactIndexesPath);
|
|
@@ -202591,7 +203006,6 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202591
203006
|
await rm6(reactIndexesPath, { force: true, recursive: true });
|
|
202592
203007
|
const { manifest } = state;
|
|
202593
203008
|
const duration = Date.now() - startTime;
|
|
202594
|
-
const reactFiles = filesToRebuild.filter((file3) => detectFramework(file3, state.resolvedPaths) === "react");
|
|
202595
203009
|
const reactPageFiles = reactFiles.filter((file3) => file3.replace(/\\/g, "/").includes("/pages/"));
|
|
202596
203010
|
const sourceFiles = reactPageFiles.length > 0 ? reactPageFiles : reactFiles;
|
|
202597
203011
|
logHmrUpdate(sourceFiles[0] ?? reactFiles[0] ?? "", "react", duration);
|
|
@@ -202626,7 +203040,7 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202626
203040
|
}, handleSvelteFastPath = async (state, config, filesToRebuild, startTime, onRebuildComplete) => {
|
|
202627
203041
|
const svelteDir = config.svelteDirectory ?? "";
|
|
202628
203042
|
const { buildDir } = state.resolvedPaths;
|
|
202629
|
-
const svelteFiles = filesToRebuild.filter((file3) => file3.endsWith(".svelte") &&
|
|
203043
|
+
const svelteFiles = filesToRebuild.filter((file3) => file3.endsWith(".svelte") && resolve19(file3).startsWith(resolve19(svelteDir, "pages")));
|
|
202630
203044
|
if (svelteFiles.length > 0) {
|
|
202631
203045
|
const { compileSvelte: compileSvelte2 } = await Promise.resolve().then(() => (init_compileSvelte(), exports_compileSvelte));
|
|
202632
203046
|
const { build: bunBuild5 } = await Promise.resolve(globalThis.Bun);
|
|
@@ -202634,8 +203048,8 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202634
203048
|
const { svelteServerPaths, svelteIndexPaths, svelteClientPaths } = await compileSvelte2(svelteFiles, svelteDir, new Map, true);
|
|
202635
203049
|
const serverEntries = [...svelteServerPaths];
|
|
202636
203050
|
const clientEntries = [...svelteIndexPaths, ...svelteClientPaths];
|
|
202637
|
-
const serverRoot =
|
|
202638
|
-
const serverOutDir =
|
|
203051
|
+
const serverRoot = resolve19(svelteDir, "server");
|
|
203052
|
+
const serverOutDir = resolve19(buildDir, basename7(svelteDir));
|
|
202639
203053
|
const [serverResult, clientResult] = await Promise.all([
|
|
202640
203054
|
serverEntries.length > 0 ? bunBuild5({
|
|
202641
203055
|
entrypoints: serverEntries,
|
|
@@ -202661,15 +203075,15 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202661
203075
|
await handleClientManifestUpdate(state, clientResult, buildDir);
|
|
202662
203076
|
}
|
|
202663
203077
|
await Promise.all([
|
|
202664
|
-
rm6(
|
|
203078
|
+
rm6(resolve19(svelteDir, "client"), {
|
|
202665
203079
|
force: true,
|
|
202666
203080
|
recursive: true
|
|
202667
203081
|
}),
|
|
202668
|
-
rm6(
|
|
203082
|
+
rm6(resolve19(svelteDir, "indexes"), {
|
|
202669
203083
|
force: true,
|
|
202670
203084
|
recursive: true
|
|
202671
203085
|
}),
|
|
202672
|
-
rm6(
|
|
203086
|
+
rm6(resolve19(svelteDir, "server"), {
|
|
202673
203087
|
force: true,
|
|
202674
203088
|
recursive: true
|
|
202675
203089
|
})
|
|
@@ -202702,7 +203116,7 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202702
203116
|
}, handleVueFastPath = async (state, config, filesToRebuild, startTime, onRebuildComplete) => {
|
|
202703
203117
|
const vueDir = config.vueDirectory ?? "";
|
|
202704
203118
|
const { buildDir } = state.resolvedPaths;
|
|
202705
|
-
const vueFiles = filesToRebuild.filter((file3) => file3.endsWith(".vue") &&
|
|
203119
|
+
const vueFiles = filesToRebuild.filter((file3) => file3.endsWith(".vue") && resolve19(file3).startsWith(resolve19(vueDir, "pages")));
|
|
202706
203120
|
if (vueFiles.length > 0) {
|
|
202707
203121
|
const { compileVue: compileVue2 } = await Promise.resolve().then(() => (init_compileVue(), exports_compileVue));
|
|
202708
203122
|
const { build: bunBuild5 } = await Promise.resolve(globalThis.Bun);
|
|
@@ -202710,8 +203124,8 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202710
203124
|
const { vueServerPaths, vueIndexPaths, vueClientPaths } = await compileVue2(vueFiles, vueDir, true);
|
|
202711
203125
|
const serverEntries = [...vueServerPaths];
|
|
202712
203126
|
const clientEntries = [...vueIndexPaths, ...vueClientPaths];
|
|
202713
|
-
const serverRoot =
|
|
202714
|
-
const serverOutDir =
|
|
203127
|
+
const serverRoot = resolve19(vueDir, "server");
|
|
203128
|
+
const serverOutDir = resolve19(buildDir, basename7(vueDir));
|
|
202715
203129
|
const vueFeatureFlags2 = {
|
|
202716
203130
|
__VUE_OPTIONS_API__: "true",
|
|
202717
203131
|
__VUE_PROD_DEVTOOLS__: "true",
|
|
@@ -202743,19 +203157,19 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202743
203157
|
await handleClientManifestUpdate(state, clientResult, buildDir);
|
|
202744
203158
|
}
|
|
202745
203159
|
await Promise.all([
|
|
202746
|
-
rm6(
|
|
203160
|
+
rm6(resolve19(vueDir, "client"), {
|
|
202747
203161
|
force: true,
|
|
202748
203162
|
recursive: true
|
|
202749
203163
|
}),
|
|
202750
|
-
rm6(
|
|
203164
|
+
rm6(resolve19(vueDir, "indexes"), {
|
|
202751
203165
|
force: true,
|
|
202752
203166
|
recursive: true
|
|
202753
203167
|
}),
|
|
202754
|
-
rm6(
|
|
203168
|
+
rm6(resolve19(vueDir, "server"), {
|
|
202755
203169
|
force: true,
|
|
202756
203170
|
recursive: true
|
|
202757
203171
|
}),
|
|
202758
|
-
rm6(
|
|
203172
|
+
rm6(resolve19(vueDir, "compiled"), {
|
|
202759
203173
|
force: true,
|
|
202760
203174
|
recursive: true
|
|
202761
203175
|
})
|
|
@@ -202770,7 +203184,7 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202770
203184
|
const cssKey = `${pascalName}CSS`;
|
|
202771
203185
|
const cssUrl = manifest[cssKey] || null;
|
|
202772
203186
|
const vueRoot = config.vueDirectory;
|
|
202773
|
-
const hmrId = vueRoot ?
|
|
203187
|
+
const hmrId = vueRoot ? relative8(vueRoot, vuePagePath).replace(/\\/g, "/").replace(/\.vue$/, "") : baseName;
|
|
202774
203188
|
logHmrUpdate(vuePagePath, "vue", duration);
|
|
202775
203189
|
broadcastToClients(state, {
|
|
202776
203190
|
data: {
|
|
@@ -202875,10 +203289,10 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202875
203289
|
}, computeOutputPagesDir = (state, config, framework) => {
|
|
202876
203290
|
const isSingle = !config.reactDirectory && !config.svelteDirectory && !config.vueDirectory && (framework === "html" ? !config.htmxDirectory : !config.htmlDirectory);
|
|
202877
203291
|
if (isSingle) {
|
|
202878
|
-
return
|
|
203292
|
+
return resolve19(state.resolvedPaths.buildDir, "pages");
|
|
202879
203293
|
}
|
|
202880
203294
|
const dirName = framework === "html" ? basename7(config.htmlDirectory ?? "html") : basename7(config.htmxDirectory ?? "htmx");
|
|
202881
|
-
return
|
|
203295
|
+
return resolve19(state.resolvedPaths.buildDir, dirName, "pages");
|
|
202882
203296
|
}, processHtmlPageUpdate = async (state, pageFile, builtHtmlPagePath, manifest, duration) => {
|
|
202883
203297
|
try {
|
|
202884
203298
|
const { handleHTMLUpdate: handleHTMLUpdate2 } = await Promise.resolve().then(() => (init_simpleHTMLHMR(), exports_simpleHTMLHMR));
|
|
@@ -202914,7 +203328,7 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202914
203328
|
const outputHtmlPages = computeOutputPagesDir(state, config, "html");
|
|
202915
203329
|
for (const pageFile of htmlPageFiles) {
|
|
202916
203330
|
const htmlPageName = basename7(pageFile);
|
|
202917
|
-
const builtHtmlPagePath =
|
|
203331
|
+
const builtHtmlPagePath = resolve19(outputHtmlPages, htmlPageName);
|
|
202918
203332
|
await processHtmlPageUpdate(state, pageFile, builtHtmlPagePath, manifest, duration);
|
|
202919
203333
|
}
|
|
202920
203334
|
}, handleVueCssOnlyUpdate = (state, vueCssFiles, manifest, duration) => {
|
|
@@ -202975,11 +203389,11 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
202975
203389
|
const baseName = fileName.replace(/\.vue$/, "");
|
|
202976
203390
|
const pascalName = toPascal(baseName);
|
|
202977
203391
|
const vueRoot = config.vueDirectory;
|
|
202978
|
-
const hmrId = vueRoot ?
|
|
203392
|
+
const hmrId = vueRoot ? relative8(vueRoot, vuePagePath).replace(/\\/g, "/").replace(/\.vue$/, "") : baseName;
|
|
202979
203393
|
const cssKey = `${pascalName}CSS`;
|
|
202980
203394
|
const cssUrl = manifest[cssKey] || null;
|
|
202981
203395
|
const { vueHmrMetadata: vueHmrMetadata2 } = await Promise.resolve().then(() => (init_compileVue(), exports_compileVue));
|
|
202982
|
-
const hmrMeta = vueHmrMetadata2.get(
|
|
203396
|
+
const hmrMeta = vueHmrMetadata2.get(resolve19(vuePagePath));
|
|
202983
203397
|
const changeType = hmrMeta?.changeType ?? "full";
|
|
202984
203398
|
if (changeType === "style-only") {
|
|
202985
203399
|
broadcastVueStyleOnly(state, vuePagePath, baseName, cssUrl, hmrId, manifest, duration);
|
|
@@ -203213,7 +203627,7 @@ var parseErrorLocationFromMessage = (msg) => {
|
|
|
203213
203627
|
const outputHtmxPages = computeOutputPagesDir(state, config, "htmx");
|
|
203214
203628
|
for (const htmxPageFile of htmxPageFiles) {
|
|
203215
203629
|
const htmxPageName = basename7(htmxPageFile);
|
|
203216
|
-
const builtHtmxPagePath =
|
|
203630
|
+
const builtHtmxPagePath = resolve19(outputHtmxPages, htmxPageName);
|
|
203217
203631
|
await processHtmxPageUpdate(state, htmxPageFile, builtHtmxPagePath, manifest, duration);
|
|
203218
203632
|
}
|
|
203219
203633
|
}, collectUpdatedModulePaths = (allModuleUpdates) => {
|
|
@@ -203425,14 +203839,155 @@ var init_rebuildTrigger = __esm(() => {
|
|
|
203425
203839
|
init_pageHandler();
|
|
203426
203840
|
});
|
|
203427
203841
|
|
|
203842
|
+
// src/build/buildDepVendor.ts
|
|
203843
|
+
var exports_buildDepVendor = {};
|
|
203844
|
+
__export(exports_buildDepVendor, {
|
|
203845
|
+
computeDepVendorPaths: () => computeDepVendorPaths,
|
|
203846
|
+
buildDepVendor: () => buildDepVendor
|
|
203847
|
+
});
|
|
203848
|
+
import { mkdirSync as mkdirSync7 } from "fs";
|
|
203849
|
+
import { join as join14 } from "path";
|
|
203850
|
+
import { rm as rm7 } from "fs/promises";
|
|
203851
|
+
var {build: bunBuild5, Glob: Glob6 } = globalThis.Bun;
|
|
203852
|
+
var toSafeFileName3 = (specifier) => specifier.replace(/\//g, "_").replace(/@/g, "").replace(/-/g, "_"), isResolvable2 = (specifier) => {
|
|
203853
|
+
try {
|
|
203854
|
+
__require.resolve(specifier);
|
|
203855
|
+
return true;
|
|
203856
|
+
} catch {
|
|
203857
|
+
return false;
|
|
203858
|
+
}
|
|
203859
|
+
}, isBareSpecifier = (spec) => !spec.startsWith(".") && !spec.startsWith("/") && !spec.startsWith("@src/"), FRAMEWORK_SPECIFIERS, scanBareImports = async (directories) => {
|
|
203860
|
+
const specifiers = new Set;
|
|
203861
|
+
const transpiler3 = new Bun.Transpiler({ loader: "tsx" });
|
|
203862
|
+
for (const dir of directories) {
|
|
203863
|
+
const glob = new Glob6("**/*.{ts,tsx,js,jsx}");
|
|
203864
|
+
try {
|
|
203865
|
+
for await (const file3 of glob.scan({
|
|
203866
|
+
absolute: true,
|
|
203867
|
+
cwd: dir
|
|
203868
|
+
})) {
|
|
203869
|
+
if (file3.includes("node_modules"))
|
|
203870
|
+
continue;
|
|
203871
|
+
if (file3.includes("/build/"))
|
|
203872
|
+
continue;
|
|
203873
|
+
if (file3.includes("/dist/"))
|
|
203874
|
+
continue;
|
|
203875
|
+
if (file3.includes("/indexes/"))
|
|
203876
|
+
continue;
|
|
203877
|
+
try {
|
|
203878
|
+
const content = await Bun.file(file3).text();
|
|
203879
|
+
const imports = transpiler3.scanImports(content);
|
|
203880
|
+
for (const imp of imports) {
|
|
203881
|
+
if (isBareSpecifier(imp.path) && !FRAMEWORK_SPECIFIERS.has(imp.path)) {
|
|
203882
|
+
specifiers.add(imp.path);
|
|
203883
|
+
}
|
|
203884
|
+
}
|
|
203885
|
+
} catch {}
|
|
203886
|
+
}
|
|
203887
|
+
} catch {}
|
|
203888
|
+
}
|
|
203889
|
+
return Array.from(specifiers).filter(isResolvable2);
|
|
203890
|
+
}, generateEntrySource2 = (specifier) => `export * from '${specifier}';
|
|
203891
|
+
`, computeDepVendorPaths = async (directories) => {
|
|
203892
|
+
const specifiers = await scanBareImports(directories);
|
|
203893
|
+
const paths = {};
|
|
203894
|
+
for (const specifier of specifiers) {
|
|
203895
|
+
paths[specifier] = `/vendor/${toSafeFileName3(specifier)}.js`;
|
|
203896
|
+
}
|
|
203897
|
+
return paths;
|
|
203898
|
+
}, buildDepVendor = async (buildDir, directories) => {
|
|
203899
|
+
const specifiers = await scanBareImports(directories);
|
|
203900
|
+
if (specifiers.length === 0)
|
|
203901
|
+
return {};
|
|
203902
|
+
const vendorDir = join14(buildDir, "vendor");
|
|
203903
|
+
mkdirSync7(vendorDir, { recursive: true });
|
|
203904
|
+
const tmpDir = join14(buildDir, "_dep_vendor_tmp");
|
|
203905
|
+
mkdirSync7(tmpDir, { recursive: true });
|
|
203906
|
+
const entrypoints = await Promise.all(specifiers.map(async (specifier) => {
|
|
203907
|
+
const safeName = toSafeFileName3(specifier);
|
|
203908
|
+
const entryPath = join14(tmpDir, `${safeName}.ts`);
|
|
203909
|
+
const source = await generateEntrySource2(specifier);
|
|
203910
|
+
await Bun.write(entryPath, source);
|
|
203911
|
+
return entryPath;
|
|
203912
|
+
}));
|
|
203913
|
+
const result = await bunBuild5({
|
|
203914
|
+
entrypoints,
|
|
203915
|
+
external: [...FRAMEWORK_SPECIFIERS],
|
|
203916
|
+
format: "esm",
|
|
203917
|
+
minify: false,
|
|
203918
|
+
naming: "[name].[ext]",
|
|
203919
|
+
outdir: vendorDir,
|
|
203920
|
+
splitting: true,
|
|
203921
|
+
target: "browser",
|
|
203922
|
+
throw: false
|
|
203923
|
+
});
|
|
203924
|
+
await rm7(tmpDir, { force: true, recursive: true });
|
|
203925
|
+
if (result.success) {
|
|
203926
|
+
const { readdirSync: readdirSync2, readFileSync: readFileSync10, writeFileSync: writeFileSync5 } = await import("fs");
|
|
203927
|
+
const { computeVendorPaths: computeVendorPaths2 } = await Promise.resolve().then(() => (init_buildReactVendor(), exports_buildReactVendor));
|
|
203928
|
+
const reactPaths = computeVendorPaths2();
|
|
203929
|
+
const files = readdirSync2(vendorDir).filter((f) => f.endsWith(".js"));
|
|
203930
|
+
for (const file3 of files) {
|
|
203931
|
+
const filePath = join14(vendorDir, file3);
|
|
203932
|
+
let content = readFileSync10(filePath, "utf-8");
|
|
203933
|
+
let changed = false;
|
|
203934
|
+
for (const [specifier, webPath] of Object.entries(reactPaths)) {
|
|
203935
|
+
const escaped = specifier.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
203936
|
+
const re = new RegExp(`(from\\s*["'])${escaped}(["'])`, "g");
|
|
203937
|
+
const newContent = content.replace(re, `$1${webPath}$2`);
|
|
203938
|
+
if (newContent !== content) {
|
|
203939
|
+
content = newContent;
|
|
203940
|
+
changed = true;
|
|
203941
|
+
}
|
|
203942
|
+
}
|
|
203943
|
+
if (changed) {
|
|
203944
|
+
writeFileSync5(filePath, content);
|
|
203945
|
+
}
|
|
203946
|
+
}
|
|
203947
|
+
}
|
|
203948
|
+
if (!result.success) {
|
|
203949
|
+
console.warn("\u26A0\uFE0F Dependency vendor build had errors:", result.logs);
|
|
203950
|
+
}
|
|
203951
|
+
const paths = {};
|
|
203952
|
+
for (const specifier of specifiers) {
|
|
203953
|
+
paths[specifier] = `/vendor/${toSafeFileName3(specifier)}.js`;
|
|
203954
|
+
}
|
|
203955
|
+
return paths;
|
|
203956
|
+
};
|
|
203957
|
+
var init_buildDepVendor = __esm(() => {
|
|
203958
|
+
FRAMEWORK_SPECIFIERS = new Set([
|
|
203959
|
+
"react",
|
|
203960
|
+
"react-dom",
|
|
203961
|
+
"react-dom/client",
|
|
203962
|
+
"react-dom/server",
|
|
203963
|
+
"react/jsx-runtime",
|
|
203964
|
+
"react/jsx-dev-runtime",
|
|
203965
|
+
"react-refresh/runtime",
|
|
203966
|
+
"svelte",
|
|
203967
|
+
"svelte/internal",
|
|
203968
|
+
"svelte/internal/client",
|
|
203969
|
+
"svelte/server",
|
|
203970
|
+
"svelte/compiler",
|
|
203971
|
+
"vue",
|
|
203972
|
+
"vue/server-renderer",
|
|
203973
|
+
"@vue/compiler-sfc",
|
|
203974
|
+
"@angular/core",
|
|
203975
|
+
"@angular/common",
|
|
203976
|
+
"@angular/compiler",
|
|
203977
|
+
"@angular/platform-browser",
|
|
203978
|
+
"@angular/platform-server",
|
|
203979
|
+
"@angular/ssr"
|
|
203980
|
+
]);
|
|
203981
|
+
});
|
|
203982
|
+
|
|
203428
203983
|
// src/core/devBuild.ts
|
|
203429
203984
|
var exports_devBuild = {};
|
|
203430
203985
|
__export(exports_devBuild, {
|
|
203431
203986
|
devBuild: () => devBuild
|
|
203432
203987
|
});
|
|
203433
203988
|
import { readdir as readdir3 } from "fs/promises";
|
|
203434
|
-
import { statSync } from "fs";
|
|
203435
|
-
import { resolve as
|
|
203989
|
+
import { statSync as statSync3 } from "fs";
|
|
203990
|
+
import { resolve as resolve20 } from "path";
|
|
203436
203991
|
var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
|
|
203437
203992
|
const config = {};
|
|
203438
203993
|
const dirPattern = /(\w+Directory)\s*:\s*['"]([^'"]+)['"]/g;
|
|
@@ -203445,7 +204000,7 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
|
|
|
203445
204000
|
return Object.keys(config).length > 0 ? config : null;
|
|
203446
204001
|
}, reloadConfig = async () => {
|
|
203447
204002
|
try {
|
|
203448
|
-
const configPath2 =
|
|
204003
|
+
const configPath2 = resolve20(process.env.ABSOLUTE_CONFIG ?? "absolute.config.ts");
|
|
203449
204004
|
const source = await Bun.file(configPath2).text();
|
|
203450
204005
|
return parseDirectoryConfig(source);
|
|
203451
204006
|
} catch {
|
|
@@ -203518,7 +204073,7 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
|
|
|
203518
204073
|
state.fileChangeQueue.clear();
|
|
203519
204074
|
}
|
|
203520
204075
|
}, handleCachedReload = async () => {
|
|
203521
|
-
const serverMtime =
|
|
204076
|
+
const serverMtime = statSync3(resolve20(Bun.main)).mtimeMs;
|
|
203522
204077
|
const lastMtime = globalThis.__hmrServerMtime;
|
|
203523
204078
|
globalThis.__hmrServerMtime = serverMtime;
|
|
203524
204079
|
const cached = globalThis.__hmrDevResult;
|
|
@@ -203546,8 +204101,8 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
|
|
|
203546
204101
|
return true;
|
|
203547
204102
|
}, resolveAbsoluteVersion2 = async () => {
|
|
203548
204103
|
const candidates = [
|
|
203549
|
-
|
|
203550
|
-
|
|
204104
|
+
resolve20(import.meta.dir, "..", "..", "package.json"),
|
|
204105
|
+
resolve20(import.meta.dir, "..", "package.json")
|
|
203551
204106
|
];
|
|
203552
204107
|
for (const candidate of candidates) {
|
|
203553
204108
|
const found = await tryReadPackageVersion(candidate);
|
|
@@ -203560,7 +204115,7 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
|
|
|
203560
204115
|
const entries = await readdir3(vendorDir).catch(() => emptyStringArray);
|
|
203561
204116
|
await Promise.all(entries.map(async (entry) => {
|
|
203562
204117
|
const webPath = `/${framework}/vendor/${entry}`;
|
|
203563
|
-
const bytes = await Bun.file(
|
|
204118
|
+
const bytes = await Bun.file(resolve20(vendorDir, entry)).bytes();
|
|
203564
204119
|
assetStore.set(webPath, bytes);
|
|
203565
204120
|
}));
|
|
203566
204121
|
}, devBuild = async (config) => {
|
|
@@ -203594,7 +204149,7 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
|
|
|
203594
204149
|
await populateAssetStore(state.assetStore, manifest ?? {}, state.resolvedPaths.buildDir);
|
|
203595
204150
|
cleanStaleAssets(state.assetStore, manifest ?? {}, state.resolvedPaths.buildDir);
|
|
203596
204151
|
const buildReactVendorTask = config.reactDirectory ? buildReactVendor(state.resolvedPaths.buildDir).then(async () => {
|
|
203597
|
-
const vendorDir =
|
|
204152
|
+
const vendorDir = resolve20(state.resolvedPaths.buildDir, "react", "vendor");
|
|
203598
204153
|
await loadVendorFiles(state.assetStore, vendorDir, "react");
|
|
203599
204154
|
if (!globalThis.__reactModuleRef) {
|
|
203600
204155
|
globalThis.__reactModuleRef = await import("react");
|
|
@@ -203602,11 +204157,30 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
|
|
|
203602
204157
|
return true;
|
|
203603
204158
|
}) : undefined;
|
|
203604
204159
|
const buildAngularVendorTask = config.angularDirectory ? buildAngularVendor(state.resolvedPaths.buildDir).then(async () => {
|
|
203605
|
-
const vendorDir =
|
|
204160
|
+
const vendorDir = resolve20(state.resolvedPaths.buildDir, "angular", "vendor");
|
|
203606
204161
|
await loadVendorFiles(state.assetStore, vendorDir, "angular");
|
|
203607
204162
|
return true;
|
|
203608
204163
|
}) : undefined;
|
|
203609
|
-
await Promise.
|
|
204164
|
+
const { buildDepVendor: buildDepVendor2 } = await Promise.resolve().then(() => (init_buildDepVendor(), exports_buildDepVendor));
|
|
204165
|
+
const sourceDirs = [
|
|
204166
|
+
config.reactDirectory,
|
|
204167
|
+
config.svelteDirectory,
|
|
204168
|
+
config.vueDirectory,
|
|
204169
|
+
config.angularDirectory,
|
|
204170
|
+
config.htmlDirectory,
|
|
204171
|
+
config.htmxDirectory
|
|
204172
|
+
].filter((dir) => Boolean(dir));
|
|
204173
|
+
const buildDepVendorTask = buildDepVendor2(state.resolvedPaths.buildDir, sourceDirs).then(async (depPaths) => {
|
|
204174
|
+
const vendorDir = resolve20(state.resolvedPaths.buildDir, "vendor");
|
|
204175
|
+
await loadVendorFiles(state.assetStore, vendorDir, "vendor");
|
|
204176
|
+
globalThis.__depVendorPaths = depPaths;
|
|
204177
|
+
return true;
|
|
204178
|
+
});
|
|
204179
|
+
await Promise.all([
|
|
204180
|
+
buildReactVendorTask,
|
|
204181
|
+
buildAngularVendorTask,
|
|
204182
|
+
buildDepVendorTask
|
|
204183
|
+
]);
|
|
203610
204184
|
state.manifest = manifest;
|
|
203611
204185
|
startFileWatching(state, config, (filePath) => {
|
|
203612
204186
|
queueFileChange(state, filePath, config, (newBuildResult) => {
|
|
@@ -203620,7 +204194,7 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
|
|
|
203620
204194
|
manifest
|
|
203621
204195
|
};
|
|
203622
204196
|
globalThis.__hmrDevResult = result;
|
|
203623
|
-
globalThis.__hmrServerMtime =
|
|
204197
|
+
globalThis.__hmrServerMtime = statSync3(resolve20(Bun.main)).mtimeMs;
|
|
203624
204198
|
return result;
|
|
203625
204199
|
};
|
|
203626
204200
|
var init_devBuild = __esm(() => {
|
|
@@ -203653,5 +204227,5 @@ export {
|
|
|
203653
204227
|
build
|
|
203654
204228
|
};
|
|
203655
204229
|
|
|
203656
|
-
//# debugId=
|
|
204230
|
+
//# debugId=8043AA6879663C2A64756E2164756E21
|
|
203657
204231
|
//# sourceMappingURL=build.js.map
|