@absolutejs/absolute 0.19.0-beta.946 → 0.19.0-beta.948

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/build.js CHANGED
@@ -11884,7 +11884,7 @@ var traceAngularPhase = async (name, fn2, metadata) => {
11884
11884
  if (fileName.startsWith(outDir))
11885
11885
  return fileName.substring(outDir.length + 1);
11886
11886
  return fileName;
11887
- }, hasJsLikeExtension = (path) => /\.(js|ts|mjs|cjs)$/.test(path), splitSpecifierAndQuery = (specifier) => {
11887
+ }, hasJsLikeExtension = (path) => /\.(js|ts|mjs|cjs|json)$/.test(path), splitSpecifierAndQuery = (specifier) => {
11888
11888
  const separator = specifier.indexOf("?");
11889
11889
  if (separator === -1) {
11890
11890
  return {
@@ -12444,11 +12444,12 @@ ${fields}
12444
12444
  });
12445
12445
  const tsconfigAliases = readTsconfigPathAliases();
12446
12446
  const resolveSourceFile2 = (candidate) => {
12447
- const candidates = candidate.match(/\.[cm]?[tj]sx?$/) ? [candidate] : [
12447
+ const candidates = candidate.match(/\.(?:[cm]?[tj]sx?|json)$/) ? [candidate] : [
12448
12448
  `${candidate}.ts`,
12449
12449
  `${candidate}.tsx`,
12450
12450
  `${candidate}.js`,
12451
12451
  `${candidate}.jsx`,
12452
+ `${candidate}.json`,
12452
12453
  join18(candidate, "index.ts"),
12453
12454
  join18(candidate, "index.tsx"),
12454
12455
  join18(candidate, "index.js"),
@@ -12526,6 +12527,16 @@ ${fields}
12526
12527
  if (visited.has(resolved))
12527
12528
  return;
12528
12529
  visited.add(resolved);
12530
+ if (resolved.endsWith(".json") && existsSync16(resolved)) {
12531
+ const inputDir2 = dirname12(resolved);
12532
+ const relativeDir2 = inputDir2.startsWith(baseDir) ? inputDir2.substring(baseDir.length + 1) : inputDir2;
12533
+ const targetDir2 = join18(outDir, relativeDir2);
12534
+ const targetPath2 = join18(targetDir2, basename6(resolved));
12535
+ await fs.mkdir(targetDir2, { recursive: true });
12536
+ await fs.copyFile(resolved, targetPath2);
12537
+ allOutputs.push(targetPath2);
12538
+ return;
12539
+ }
12529
12540
  let actualPath = resolved;
12530
12541
  if (!actualPath.endsWith(".ts"))
12531
12542
  actualPath += ".ts";
@@ -14829,7 +14840,18 @@ var fail = (reason, detail, location) => ({
14829
14840
  if (!initializerShapeIsStructural(init))
14830
14841
  continue;
14831
14842
  const name = member.name.getText();
14832
- const bodyHash = djb2Hash(init.getText());
14843
+ let bodyText;
14844
+ try {
14845
+ const printer = ts6.createPrinter({
14846
+ newLine: ts6.NewLineKind.LineFeed,
14847
+ omitTrailingSemicolon: true,
14848
+ removeComments: true
14849
+ });
14850
+ bodyText = printer.printNode(ts6.EmitHint.Unspecified, init, cls.getSourceFile());
14851
+ } catch {
14852
+ bodyText = init.getText();
14853
+ }
14854
+ const bodyHash = djb2Hash(bodyText);
14833
14855
  entries.push(`${name}:${bodyHash}`);
14834
14856
  }
14835
14857
  return entries.sort();
@@ -15038,15 +15060,21 @@ var fail = (reason, detail, location) => ({
15038
15060
  const providerImportSig = extractProviderImportSig(decoratorMeta.importsExpr, sourceFile, componentDir);
15039
15061
  const topLevelImports = extractTopLevelImports(sourceFile);
15040
15062
  const propertyFieldNames = extractPropertyFieldNames(cls);
15041
- const importsArraySig = decoratorMeta.importsExpr ? djb2Hash(decoratorMeta.importsExpr.getText()) : "";
15042
- const hostDirectivesSig = decoratorMeta.hostDirectivesExpr ? djb2Hash(decoratorMeta.hostDirectivesExpr.getText()) : "";
15043
- const animationsArraySig = decoratorMeta.animationsExpr ? djb2Hash(decoratorMeta.animationsExpr.getText()) : "";
15044
- const providersArraySig = decoratorMeta.providersExpr ? djb2Hash(decoratorMeta.providersExpr.getText()) : "";
15045
- const viewProvidersArraySig = decoratorMeta.viewProvidersExpr ? djb2Hash(decoratorMeta.viewProvidersExpr.getText()) : "";
15046
- const decoratorInputsArraySig = decoratorMeta.inputsArrayExpr ? djb2Hash(decoratorMeta.inputsArrayExpr.getText()) : "";
15047
- const decoratorOutputsArraySig = decoratorMeta.outputsArrayExpr ? djb2Hash(decoratorMeta.outputsArrayExpr.getText()) : "";
15048
- const hostBindingsSig = decoratorMeta.hostExpr ? djb2Hash(decoratorMeta.hostExpr.getText()) : "";
15049
- const schemasSig = decoratorMeta.schemasExpr ? djb2Hash(decoratorMeta.schemasExpr.getText()) : "";
15063
+ const printer = ts6.createPrinter({
15064
+ newLine: ts6.NewLineKind.LineFeed,
15065
+ omitTrailingSemicolon: true,
15066
+ removeComments: true
15067
+ });
15068
+ const canonicalText = (node) => printer.printNode(ts6.EmitHint.Unspecified, node, sourceFile);
15069
+ const importsArraySig = decoratorMeta.importsExpr ? djb2Hash(canonicalText(decoratorMeta.importsExpr)) : "";
15070
+ const hostDirectivesSig = decoratorMeta.hostDirectivesExpr ? djb2Hash(canonicalText(decoratorMeta.hostDirectivesExpr)) : "";
15071
+ const animationsArraySig = decoratorMeta.animationsExpr ? djb2Hash(canonicalText(decoratorMeta.animationsExpr)) : "";
15072
+ const providersArraySig = decoratorMeta.providersExpr ? djb2Hash(canonicalText(decoratorMeta.providersExpr)) : "";
15073
+ const viewProvidersArraySig = decoratorMeta.viewProvidersExpr ? djb2Hash(canonicalText(decoratorMeta.viewProvidersExpr)) : "";
15074
+ const decoratorInputsArraySig = decoratorMeta.inputsArrayExpr ? djb2Hash(canonicalText(decoratorMeta.inputsArrayExpr)) : "";
15075
+ const decoratorOutputsArraySig = decoratorMeta.outputsArrayExpr ? djb2Hash(canonicalText(decoratorMeta.outputsArrayExpr)) : "";
15076
+ const hostBindingsSig = decoratorMeta.hostExpr ? djb2Hash(canonicalText(decoratorMeta.hostExpr)) : "";
15077
+ const schemasSig = decoratorMeta.schemasExpr ? djb2Hash(canonicalText(decoratorMeta.schemasExpr)) : "";
15050
15078
  const PAGE_EXPORT_NAMES = new Set(["providers", "routes"]);
15051
15079
  const pageExportEntries = [];
15052
15080
  for (const stmt of sourceFile.statements) {
@@ -15062,7 +15090,7 @@ var fail = (reason, detail, location) => ({
15062
15090
  continue;
15063
15091
  if (!decl.initializer)
15064
15092
  continue;
15065
- pageExportEntries.push(`${decl.name.text}=${djb2Hash(decl.initializer.getText())}`);
15093
+ pageExportEntries.push(`${decl.name.text}=${djb2Hash(canonicalText(decl.initializer))}`);
15066
15094
  }
15067
15095
  }
15068
15096
  pageExportEntries.sort();
@@ -20122,6 +20150,114 @@ var init_ssrCache = __esm(() => {
20122
20150
  dirtyFrameworks = new Set;
20123
20151
  });
20124
20152
 
20153
+ // src/utils/loadConfig.ts
20154
+ var exports_loadConfig = {};
20155
+ __export(exports_loadConfig, {
20156
+ loadRawConfig: () => loadRawConfig,
20157
+ loadConfig: () => loadConfig,
20158
+ isWorkspaceConfig: () => isWorkspaceConfig,
20159
+ getWorkspaceServices: () => getWorkspaceServices
20160
+ });
20161
+ import { resolve as resolve33 } from "path";
20162
+ var RESERVED_TOP_LEVEL_KEYS, isObject2 = (value) => typeof value === "object" && value !== null, isCommandService = (service) => service.kind === "command" || Array.isArray(service.command), isServiceCandidate = (value) => isObject2(value) && (typeof value.entry === "string" || Array.isArray(value.command)), isWorkspaceConfig = (config) => {
20163
+ if (!isObject2(config)) {
20164
+ return false;
20165
+ }
20166
+ const entries = Object.entries(config);
20167
+ if (entries.length === 0) {
20168
+ return false;
20169
+ }
20170
+ if (entries.some(([key]) => RESERVED_TOP_LEVEL_KEYS.has(key))) {
20171
+ return false;
20172
+ }
20173
+ return entries.every(([, value]) => isServiceCandidate(value));
20174
+ }, isConfigInput = (value) => isObject2(value), getWorkspaceServices = (config) => {
20175
+ if (!isWorkspaceConfig(config)) {
20176
+ throw new Error("absolute.config.ts is not a multi-service config. Define top-level named services with `entry` or `command` before using `absolute workspace dev`.");
20177
+ }
20178
+ return config;
20179
+ }, projectServiceConfig = (config, serviceName) => {
20180
+ const services = getWorkspaceServices(config);
20181
+ const service = services[serviceName];
20182
+ if (!service) {
20183
+ throw new Error(`Config file does not define service "${serviceName}".`);
20184
+ }
20185
+ if (isCommandService(service)) {
20186
+ throw new Error(`Service "${serviceName}" is a command service and cannot be loaded as an AbsoluteJS app config.`);
20187
+ }
20188
+ const {
20189
+ command: _command,
20190
+ config: _config,
20191
+ cwd: _cwd,
20192
+ dependsOn: _dependsOn,
20193
+ env: _env,
20194
+ kind: _kind,
20195
+ port: _port,
20196
+ ready: _ready,
20197
+ visibility: _visibility,
20198
+ ...serviceConfig
20199
+ } = service;
20200
+ return serviceConfig;
20201
+ }, loadConfig = async (configPath2) => {
20202
+ const config = await loadRawConfig(configPath2);
20203
+ const serviceName = process.env.ABSOLUTE_WORKSPACE_SERVICE_NAME;
20204
+ if (typeof serviceName === "string" && serviceName.length > 0) {
20205
+ return projectServiceConfig(config, serviceName);
20206
+ }
20207
+ if (isWorkspaceConfig(config)) {
20208
+ throw new Error("absolute.config.ts defines multiple services. Use `absolute workspace dev` or set ABSOLUTE_WORKSPACE_SERVICE_NAME before loading a specific service config.");
20209
+ }
20210
+ return config;
20211
+ }, loadRawConfig = async (configPath2) => {
20212
+ const resolved = resolve33(configPath2 ?? process.env.ABSOLUTE_CONFIG ?? "absolute.config.ts");
20213
+ const mod = await import(resolved);
20214
+ const config = mod.default ?? mod.config;
20215
+ if (!config) {
20216
+ throw new Error(`Config file "${resolved}" does not export a valid configuration.
20217
+ Expected: export default defineConfig({ ... })`);
20218
+ }
20219
+ if (!isConfigInput(config)) {
20220
+ throw new Error(`Config file "${resolved}" must export an object configuration.`);
20221
+ }
20222
+ return config;
20223
+ };
20224
+ var init_loadConfig = __esm(() => {
20225
+ RESERVED_TOP_LEVEL_KEYS = new Set([
20226
+ "assetsDirectory",
20227
+ "astroDirectory",
20228
+ "buildDirectory",
20229
+ "bunBuild",
20230
+ "command",
20231
+ "config",
20232
+ "cwd",
20233
+ "dependsOn",
20234
+ "dev",
20235
+ "emberDirectory",
20236
+ "entry",
20237
+ "env",
20238
+ "htmlDirectory",
20239
+ "htmxDirectory",
20240
+ "images",
20241
+ "incrementalFiles",
20242
+ "islands",
20243
+ "kind",
20244
+ "mode",
20245
+ "options",
20246
+ "port",
20247
+ "postcss",
20248
+ "publicDirectory",
20249
+ "reactDirectory",
20250
+ "sitemap",
20251
+ "static",
20252
+ "stylesConfig",
20253
+ "svelteDirectory",
20254
+ "tailwind",
20255
+ "ready",
20256
+ "visibility",
20257
+ "vueDirectory"
20258
+ ]);
20259
+ });
20260
+
20125
20261
  // src/dev/moduleServer.ts
20126
20262
  var exports_moduleServer = {};
20127
20263
  __export(exports_moduleServer, {
@@ -20134,7 +20270,7 @@ __export(exports_moduleServer, {
20134
20270
  SRC_URL_PREFIX: () => SRC_URL_PREFIX
20135
20271
  });
20136
20272
  import { existsSync as existsSync25, readFileSync as readFileSync19, statSync as statSync4 } from "fs";
20137
- import { basename as basename10, dirname as dirname19, extname as extname10, join as join29, resolve as resolve33, relative as relative14 } from "path";
20273
+ import { basename as basename10, dirname as dirname19, extname as extname10, join as join29, resolve as resolve34, relative as relative14 } from "path";
20138
20274
  var SRC_PREFIX = "/@src/", jsTranspiler2, tsTranspiler2, tsxTranspiler, TRANSPILABLE, ALL_EXPORTS_RE, STRING_CONTENTS_RE, preserveTypeExports = (originalSource, transpiled, valueExports) => {
20139
20275
  const codeOnly = originalSource.replace(STRING_CONTENTS_RE, '""');
20140
20276
  const allExports = [];
@@ -20154,7 +20290,7 @@ var SRC_PREFIX = "/@src/", jsTranspiler2, tsTranspiler2, tsxTranspiler, TRANSPIL
20154
20290
  ${stubs}
20155
20291
  `;
20156
20292
  }, resolveRelativeExtension = (srcPath, projectRoot, extensions) => {
20157
- const found = extensions.find((ext) => existsSync25(resolve33(projectRoot, srcPath + ext)));
20293
+ const found = extensions.find((ext) => existsSync25(resolve34(projectRoot, srcPath + ext)));
20158
20294
  return found ? srcPath + found : srcPath;
20159
20295
  }, IMPORT_EXTENSIONS, SIDE_EFFECT_EXTENSIONS, MODULE_EXTENSIONS, RESOLVED_MODULE_EXTENSIONS, REACT_EXTENSIONS, escapeRegex3 = (str) => str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), buildImportRewriter = (vendorPaths) => {
20160
20296
  const entries = Object.entries(vendorPaths).sort(([a], [b2]) => b2.length - a.length);
@@ -20169,7 +20305,7 @@ ${stubs}
20169
20305
  return invalidationVersion > 0 ? `${mtime}.${invalidationVersion}` : `${mtime}`;
20170
20306
  }, srcUrl = (relPath, projectRoot) => {
20171
20307
  const base = `${SRC_PREFIX}${relPath.replace(/\\/g, "/")}`;
20172
- const absPath = resolve33(projectRoot, relPath);
20308
+ const absPath = resolve34(projectRoot, relPath);
20173
20309
  const cached = mtimeCache.get(absPath);
20174
20310
  if (cached !== undefined)
20175
20311
  return `${base}?v=${buildVersion(cached, absPath)}`;
@@ -20181,12 +20317,12 @@ ${stubs}
20181
20317
  return base;
20182
20318
  }
20183
20319
  }, resolveRelativeImport = (relPath, fileDir, projectRoot, extensions) => {
20184
- const absPath = resolve33(fileDir, relPath);
20320
+ const absPath = resolve34(fileDir, relPath);
20185
20321
  const rel = relative14(projectRoot, absPath);
20186
20322
  const extension = extname10(rel);
20187
20323
  let srcPath = RESOLVED_MODULE_EXTENSIONS.has(extension) ? rel : resolveRelativeExtension(rel, projectRoot, extensions);
20188
20324
  if (extname10(srcPath) === ".svelte") {
20189
- srcPath = relative14(projectRoot, resolveSvelteModulePath(resolve33(projectRoot, srcPath)));
20325
+ srcPath = relative14(projectRoot, resolveSvelteModulePath(resolve34(projectRoot, srcPath)));
20190
20326
  }
20191
20327
  return srcUrl(srcPath, projectRoot);
20192
20328
  }, NODE_BUILTIN_RE, resolveAbsoluteSpecifier = (specifier, projectRoot) => {
@@ -20205,13 +20341,13 @@ ${stubs}
20205
20341
  const packageName = isScoped ? `${parts[0]}/${parts[1]}` : parts[0];
20206
20342
  const subpath = isScoped ? parts.slice(2).join("/") : parts.slice(1).join("/");
20207
20343
  if (!subpath) {
20208
- const pkgDir = resolve33(projectRoot, "node_modules", packageName ?? "");
20344
+ const pkgDir = resolve34(projectRoot, "node_modules", packageName ?? "");
20209
20345
  const pkgJsonPath = join29(pkgDir, "package.json");
20210
20346
  if (existsSync25(pkgJsonPath)) {
20211
20347
  const pkg = JSON.parse(readFileSync19(pkgJsonPath, "utf-8"));
20212
20348
  const esmEntry = typeof pkg.module === "string" && pkg.module || typeof pkg.browser === "string" && pkg.browser;
20213
20349
  if (esmEntry) {
20214
- const resolved = resolve33(pkgDir, esmEntry);
20350
+ const resolved = resolve34(pkgDir, esmEntry);
20215
20351
  if (existsSync25(resolved))
20216
20352
  return relative14(projectRoot, resolved);
20217
20353
  }
@@ -20258,12 +20394,12 @@ ${stubs}
20258
20394
  result = result.replace(/((?:from|import)\s*["'])(\/[^"']+\.(tsx?|jsx?|ts))(["'])/g, rewriteAbsoluteToSrc);
20259
20395
  result = result.replace(/(import\s*\(\s*["'])(\/[^"']+\.(tsx?|jsx?|ts))(["']\s*\))/g, rewriteAbsoluteToSrc);
20260
20396
  result = result.replace(/new\s+URL\(\s*["'](\.\.?\/[^"']+)["']\s*,\s*import\.meta\.url\s*\)/g, (_match, relPath) => {
20261
- const absPath = resolve33(fileDir, relPath);
20397
+ const absPath = resolve34(fileDir, relPath);
20262
20398
  const rel = relative14(projectRoot, absPath);
20263
20399
  return `new URL('${srcUrl(rel, projectRoot)}', import.meta.url)`;
20264
20400
  });
20265
20401
  result = result.replace(/import\.meta\.resolve\(\s*["'](\.\.?\/[^"']+)["']\s*\)/g, (_match, relPath) => {
20266
- const absPath = resolve33(fileDir, relPath);
20402
+ const absPath = resolve34(fileDir, relPath);
20267
20403
  const rel = relative14(projectRoot, absPath);
20268
20404
  return `'${srcUrl(rel, projectRoot)}'`;
20269
20405
  });
@@ -20576,7 +20712,7 @@ ${code}`;
20576
20712
  code = injectVueHmr(code, filePath, projectRoot, vueDir);
20577
20713
  return rewriteImports(code, filePath, projectRoot, rewriter);
20578
20714
  }, injectVueHmr = (code, filePath, projectRoot, vueDir) => {
20579
- const hmrBase = vueDir ? resolve33(vueDir) : projectRoot;
20715
+ const hmrBase = vueDir ? resolve34(vueDir) : projectRoot;
20580
20716
  const hmrId = relative14(hmrBase, filePath).replace(/\\/g, "/").replace(/\.vue$/, "");
20581
20717
  let result = code.replace(/export\s+default\s+/, "var __hmr_comp__ = ");
20582
20718
  result += [
@@ -20740,7 +20876,7 @@ export default {};
20740
20876
  const escaped = virtualCss.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$/g, "\\$");
20741
20877
  return jsResponse(`var s=document.createElement('style');s.textContent=\`${escaped}\`;s.dataset.svelteHmr=${JSON.stringify(cssCheckPath)};var p=document.querySelector('style[data-svelte-hmr="${cssCheckPath}"]');if(p)p.remove();document.head.appendChild(s);`);
20742
20878
  }, resolveSourcePath = (relPath, projectRoot) => {
20743
- const filePath = resolve33(projectRoot, relPath);
20879
+ const filePath = resolve34(projectRoot, relPath);
20744
20880
  const ext = extname10(filePath);
20745
20881
  if (ext === ".svelte")
20746
20882
  return { ext, filePath: resolveSvelteModulePath(filePath) };
@@ -20756,6 +20892,54 @@ export default {};
20756
20892
  }, transformAndCache = async (filePath, ext, projectRoot, rewriter, vueDir, stylePreprocessors) => {
20757
20893
  if (ext === ".css")
20758
20894
  return jsResponse(handleCssRequest(filePath));
20895
+ if (ext === ".json") {
20896
+ try {
20897
+ const { readFile: readFile6, stat: stat4 } = await import("fs/promises");
20898
+ const fileExists = async (p2) => {
20899
+ try {
20900
+ await stat4(p2);
20901
+ return true;
20902
+ } catch {
20903
+ return false;
20904
+ }
20905
+ };
20906
+ let sourcePath = filePath;
20907
+ if (!await fileExists(sourcePath)) {
20908
+ const { getFrameworkGeneratedDir: getFrameworkGeneratedDir2 } = await Promise.resolve().then(() => (init_generatedDir(), exports_generatedDir));
20909
+ const generatedAngularRoot = getFrameworkGeneratedDir2("angular").replace(/\\/g, "/");
20910
+ const normalized = filePath.replace(/\\/g, "/");
20911
+ if (normalized.startsWith(generatedAngularRoot + "/") || normalized.startsWith(generatedAngularRoot)) {
20912
+ const tail = normalized.slice(generatedAngularRoot.length + 1);
20913
+ const absoluteCandidate = "/" + tail.replace(/^\/+/, "");
20914
+ const candidates = [
20915
+ absoluteCandidate,
20916
+ resolve34(projectRoot, tail)
20917
+ ];
20918
+ try {
20919
+ const { loadConfig: loadConfig2 } = await Promise.resolve().then(() => (init_loadConfig(), exports_loadConfig));
20920
+ const cfg = await loadConfig2();
20921
+ const angularDir = cfg.angularDirectory && resolve34(projectRoot, cfg.angularDirectory);
20922
+ if (angularDir)
20923
+ candidates.push(resolve34(angularDir, tail));
20924
+ } catch {}
20925
+ for (const candidate of candidates) {
20926
+ if (await fileExists(candidate)) {
20927
+ sourcePath = candidate;
20928
+ break;
20929
+ }
20930
+ }
20931
+ }
20932
+ }
20933
+ const text = await readFile6(sourcePath, "utf-8");
20934
+ JSON.parse(text);
20935
+ return jsResponse(`export default ${text};`);
20936
+ } catch (err) {
20937
+ return new Response(`console.error('[ModuleServer] JSON load error in ${filePath}:', ${JSON.stringify(String(err))});`, {
20938
+ headers: { "Content-Type": "application/javascript" },
20939
+ status: 500
20940
+ });
20941
+ }
20942
+ }
20759
20943
  const isSvelte = ext === ".svelte" || filePath.endsWith(".svelte.ts") || filePath.endsWith(".svelte.js");
20760
20944
  const cached = getTransformed(filePath);
20761
20945
  if (cached)
@@ -20767,7 +20951,7 @@ export default {};
20767
20951
  if (!TRANSPILABLE.has(ext))
20768
20952
  return;
20769
20953
  const stat3 = statSync4(filePath);
20770
- const resolvedVueDir = vueDir ? resolve33(vueDir) : undefined;
20954
+ const resolvedVueDir = vueDir ? resolve34(vueDir) : undefined;
20771
20955
  let content = REACT_EXTENSIONS.has(ext) ? transformReactFile(filePath, projectRoot, rewriter) : transformPlainFile(filePath, projectRoot, rewriter, resolvedVueDir);
20772
20956
  const isAngularGeneratedJs = ext === ".js" && filePath.replace(/\\/g, "/").includes("/.absolutejs/generated/angular/");
20773
20957
  if (isAngularGeneratedJs) {
@@ -20826,7 +21010,7 @@ export default {};
20826
21010
  const relPath = pathname.slice(SRC_PREFIX.length);
20827
21011
  if (relPath === "bun:wrap" || relPath.startsWith("bun:wrap?"))
20828
21012
  return handleBunWrapRequest();
20829
- const virtualCssResponse = handleVirtualSvelteCss(resolve33(projectRoot, relPath));
21013
+ const virtualCssResponse = handleVirtualSvelteCss(resolve34(projectRoot, relPath));
20830
21014
  if (virtualCssResponse)
20831
21015
  return virtualCssResponse;
20832
21016
  const { filePath, ext } = resolveSourcePath(relPath, projectRoot);
@@ -20842,11 +21026,11 @@ export default {};
20842
21026
  SRC_IMPORT_RE.lastIndex = 0;
20843
21027
  while ((match = SRC_IMPORT_RE.exec(content)) !== null) {
20844
21028
  if (match[1])
20845
- files.push(resolve33(projectRoot, match[1]));
21029
+ files.push(resolve34(projectRoot, match[1]));
20846
21030
  }
20847
21031
  return files;
20848
21032
  }, invalidateModule = (filePath) => {
20849
- const resolved = resolve33(filePath);
21033
+ const resolved = resolve34(filePath);
20850
21034
  invalidate(filePath);
20851
21035
  if (resolved !== filePath)
20852
21036
  invalidate(resolved);
@@ -20991,7 +21175,7 @@ __export(exports_hmrCompiler, {
20991
21175
  getApplyMetadataModule: () => getApplyMetadataModule,
20992
21176
  encodeHmrComponentId: () => encodeHmrComponentId
20993
21177
  });
20994
- import { dirname as dirname20, relative as relative15, resolve as resolve34 } from "path";
21178
+ import { dirname as dirname20, relative as relative15, resolve as resolve35 } from "path";
20995
21179
  import { performance as performance2 } from "perf_hooks";
20996
21180
  var getApplyMetadataModule = async (encodedId) => {
20997
21181
  const decoded = decodeURIComponent(encodedId);
@@ -21000,7 +21184,7 @@ var getApplyMetadataModule = async (encodedId) => {
21000
21184
  return null;
21001
21185
  const filePathRel = decoded.slice(0, at2);
21002
21186
  const className = decoded.slice(at2 + 1);
21003
- const componentFilePath = resolve34(process.cwd(), filePathRel);
21187
+ const componentFilePath = resolve35(process.cwd(), filePathRel);
21004
21188
  const projectRelPath = relative15(process.cwd(), componentFilePath).replace(/\\/g, "/");
21005
21189
  const cacheKey2 = encodeURIComponent(`${projectRelPath}@${className}`);
21006
21190
  const { takePendingModule: takePendingModule2 } = await Promise.resolve().then(() => (init_fastHmrCompiler(), exports_fastHmrCompiler));
@@ -21162,11 +21346,11 @@ var exports_simpleHTMLHMR = {};
21162
21346
  __export(exports_simpleHTMLHMR, {
21163
21347
  handleHTMLUpdate: () => handleHTMLUpdate
21164
21348
  });
21165
- import { resolve as resolve35 } from "path";
21349
+ import { resolve as resolve36 } from "path";
21166
21350
  var handleHTMLUpdate = async (htmlFilePath) => {
21167
21351
  let htmlContent;
21168
21352
  try {
21169
- const resolvedPath = resolve35(htmlFilePath);
21353
+ const resolvedPath = resolve36(htmlFilePath);
21170
21354
  const file4 = Bun.file(resolvedPath);
21171
21355
  if (!await file4.exists()) {
21172
21356
  return null;
@@ -21192,11 +21376,11 @@ var exports_simpleHTMXHMR = {};
21192
21376
  __export(exports_simpleHTMXHMR, {
21193
21377
  handleHTMXUpdate: () => handleHTMXUpdate
21194
21378
  });
21195
- import { resolve as resolve36 } from "path";
21379
+ import { resolve as resolve37 } from "path";
21196
21380
  var handleHTMXUpdate = async (htmxFilePath) => {
21197
21381
  let htmlContent;
21198
21382
  try {
21199
- const resolvedPath = resolve36(htmxFilePath);
21383
+ const resolvedPath = resolve37(htmxFilePath);
21200
21384
  const file4 = Bun.file(resolvedPath);
21201
21385
  if (!await file4.exists()) {
21202
21386
  return null;
@@ -21219,7 +21403,7 @@ var init_simpleHTMXHMR = () => {};
21219
21403
 
21220
21404
  // src/dev/rebuildTrigger.ts
21221
21405
  import { existsSync as existsSync26 } from "fs";
21222
- import { basename as basename11, dirname as dirname21, relative as relative16, resolve as resolve37, sep as sep4 } from "path";
21406
+ import { basename as basename11, dirname as dirname21, relative as relative16, resolve as resolve38, sep as sep4 } from "path";
21223
21407
  var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequentially = (items, action) => items.reduce((chain, item) => chain.then(() => action(item)), Promise.resolve()), getStyleTransformConfig = (config) => createStyleTransformConfig(config.stylePreprocessors, config.postcss), recompileTailwindForFastPath = async (state, config, files) => {
21224
21408
  if (!config.tailwind)
21225
21409
  return;
@@ -21230,7 +21414,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21230
21414
  if (!cssChanged)
21231
21415
  return;
21232
21416
  try {
21233
- const outputPath = resolve37(state.resolvedPaths.buildDir, config.tailwind.output);
21417
+ const outputPath = resolve38(state.resolvedPaths.buildDir, config.tailwind.output);
21234
21418
  const bytes = await Bun.file(outputPath).bytes();
21235
21419
  const webPath = `/${config.tailwind.output.replace(/^\/+/, "")}`;
21236
21420
  state.assetStore.set(webPath, bytes);
@@ -21317,7 +21501,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21317
21501
  state.fileHashes.delete(filePathInSet);
21318
21502
  try {
21319
21503
  const affectedFiles = getAffectedFiles(state.dependencyGraph, filePathInSet);
21320
- const deletedPathResolved = resolve37(filePathInSet);
21504
+ const deletedPathResolved = resolve38(filePathInSet);
21321
21505
  affectedFiles.forEach((affectedFile) => {
21322
21506
  if (isValidDeletedAffectedFile(affectedFile, deletedPathResolved, processedFiles)) {
21323
21507
  validFiles.push(affectedFile);
@@ -21361,7 +21545,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21361
21545
  if (storedHash !== undefined && storedHash === fileHash) {
21362
21546
  return;
21363
21547
  }
21364
- const normalizedFilePath = resolve37(filePathInSet);
21548
+ const normalizedFilePath = resolve38(filePathInSet);
21365
21549
  if (!processedFiles.has(normalizedFilePath)) {
21366
21550
  validFiles.push(normalizedFilePath);
21367
21551
  processedFiles.add(normalizedFilePath);
@@ -21489,35 +21673,51 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21489
21673
  if (framework === "ignored") {
21490
21674
  return;
21491
21675
  }
21676
+ if (/\.(spec|test)\.(?:m?[tj]sx?)$/i.test(filePath) || /[\\/]__tests__[\\/]/.test(filePath)) {
21677
+ return;
21678
+ }
21492
21679
  const currentHash = computeFileHash(filePath);
21493
21680
  if (!hasFileChanged(filePath, currentHash, state.fileHashes)) {
21494
21681
  return;
21495
21682
  }
21496
21683
  const publicDir = state.resolvedPaths.publicDir;
21497
- if (publicDir && resolve37(filePath).replace(/\\/g, "/").startsWith(publicDir + "/")) {
21684
+ const assetsDir = state.resolvedPaths.assetsDir;
21685
+ const handleStaticMirror = async (sourceDir, urlPrefix) => {
21686
+ const absSource = resolve38(filePath);
21687
+ const normalizedSource = absSource.replace(/\\/g, "/");
21688
+ const normalizedDir = sourceDir.replace(/\\/g, "/");
21689
+ if (!normalizedSource.startsWith(normalizedDir + "/"))
21690
+ return false;
21498
21691
  try {
21499
- const absSource = resolve37(filePath);
21500
- const relFromPublic = absSource.replace(/\\/g, "/").slice(publicDir.length + 1);
21692
+ const relFromDir = normalizedSource.slice(normalizedDir.length + 1);
21501
21693
  const buildDir = state.resolvedPaths.buildDir;
21502
- const destPath = resolve37(buildDir, relFromPublic);
21694
+ const destPath = resolve38(buildDir, urlPrefix ? `${urlPrefix}/${relFromDir}` : relFromDir);
21503
21695
  const { mkdir: mkdir7, copyFile, readFile: readFile6 } = await import("fs/promises");
21504
21696
  const { dirname: dirname22 } = await import("path");
21505
21697
  await mkdir7(dirname22(destPath), { recursive: true });
21506
21698
  await copyFile(absSource, destPath);
21507
21699
  const bytes = await readFile6(destPath);
21508
- state.assetStore.set(`/${relFromPublic}`, new Uint8Array(bytes));
21700
+ const webPath = urlPrefix ? `/${urlPrefix}/${relFromDir}` : `/${relFromDir}`;
21701
+ state.assetStore.set(webPath, new Uint8Array(bytes));
21509
21702
  state.fileHashes.set(absSource, currentHash);
21510
21703
  logHmrUpdate(relative16(process.cwd(), filePath));
21511
21704
  broadcastToClients(state, {
21512
- data: { framework: "public", manifest: state.manifest },
21513
- message: "Public asset updated",
21705
+ data: {
21706
+ framework: urlPrefix || "public",
21707
+ manifest: state.manifest
21708
+ },
21709
+ message: `${urlPrefix || "Public"} asset updated`,
21514
21710
  type: "style-update"
21515
21711
  });
21516
21712
  } catch {}
21713
+ return true;
21714
+ };
21715
+ if (publicDir && await handleStaticMirror(publicDir, ""))
21716
+ return;
21717
+ if (assetsDir && await handleStaticMirror(assetsDir, "assets"))
21517
21718
  return;
21518
- }
21519
21719
  if (framework === "unknown") {
21520
- invalidate(resolve37(filePath));
21720
+ invalidate(resolve38(filePath));
21521
21721
  const relPath = relative16(process.cwd(), filePath);
21522
21722
  logHmrUpdate(relPath);
21523
21723
  const angularDir = state.resolvedPaths.angularDir;
@@ -21525,10 +21725,10 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21525
21725
  if (angularDir && state.dependencyGraph) {
21526
21726
  try {
21527
21727
  const { addFileToGraph: addFileToGraph2 } = await Promise.resolve().then(() => (init_dependencyGraph(), exports_dependencyGraph));
21528
- addFileToGraph2(state.dependencyGraph, resolve37(filePath));
21529
- const affected = getAffectedFiles(state.dependencyGraph, resolve37(filePath));
21728
+ addFileToGraph2(state.dependencyGraph, resolve38(filePath));
21729
+ const affected = getAffectedFiles(state.dependencyGraph, resolve38(filePath));
21530
21730
  for (const dependent of affected) {
21531
- if (dependent === resolve37(filePath))
21731
+ if (dependent === resolve38(filePath))
21532
21732
  continue;
21533
21733
  const dependentFramework = detectFramework(dependent, state.resolvedPaths);
21534
21734
  if (dependentFramework !== "angular")
@@ -21551,7 +21751,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21551
21751
  const { getFrameworkGeneratedDir: getFrameworkGeneratedDir2 } = await Promise.resolve().then(() => (init_generatedDir(), exports_generatedDir));
21552
21752
  const { invalidateModule: invalidateModuleServer } = await Promise.resolve().then(() => (init_moduleServer(), exports_moduleServer));
21553
21753
  const generatedAngularRoot = getFrameworkGeneratedDir2("angular");
21554
- const sourceAbs = resolve37(filePath).replace(/\\/g, "/");
21754
+ const sourceAbs = resolve38(filePath).replace(/\\/g, "/");
21555
21755
  const generatedTwin = `${generatedAngularRoot.replace(/\\/g, "/")}${sourceAbs.replace(/\.ts$/, ".js")}`;
21556
21756
  invalidateModuleServer(generatedTwin);
21557
21757
  } catch {}
@@ -21585,7 +21785,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21585
21785
  const userEditedFiles = new Set;
21586
21786
  state.fileChangeQueue.forEach((filePaths) => {
21587
21787
  for (const filePath2 of filePaths) {
21588
- userEditedFiles.add(resolve37(filePath2));
21788
+ userEditedFiles.add(resolve38(filePath2));
21589
21789
  }
21590
21790
  });
21591
21791
  state.lastUserEditedFiles = userEditedFiles;
@@ -21614,7 +21814,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21614
21814
  }
21615
21815
  if (!graph)
21616
21816
  return componentFile;
21617
- const dependents = graph.dependents.get(resolve37(componentFile));
21817
+ const dependents = graph.dependents.get(resolve38(componentFile));
21618
21818
  if (!dependents)
21619
21819
  return componentFile;
21620
21820
  for (const dep of dependents) {
@@ -21623,7 +21823,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21623
21823
  }
21624
21824
  return componentFile;
21625
21825
  }, resolveAngularPageEntries = (state, angularFiles, angularPagesPath) => {
21626
- const pageEntries = angularFiles.filter((file4) => file4.endsWith(".ts") && resolve37(file4).startsWith(angularPagesPath));
21826
+ const pageEntries = angularFiles.filter((file4) => file4.endsWith(".ts") && resolve38(file4).startsWith(angularPagesPath));
21627
21827
  if (pageEntries.length > 0 || !state.dependencyGraph) {
21628
21828
  return pageEntries;
21629
21829
  }
@@ -21632,7 +21832,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21632
21832
  const lookupFile = resolveComponentLookupFile(componentFile, state.dependencyGraph);
21633
21833
  const affected = getAffectedFiles(state.dependencyGraph, lookupFile);
21634
21834
  affected.forEach((file4) => {
21635
- if (file4.endsWith(".ts") && resolve37(file4).startsWith(angularPagesPath)) {
21835
+ if (file4.endsWith(".ts") && resolve38(file4).startsWith(angularPagesPath)) {
21636
21836
  resolvedPages.add(file4);
21637
21837
  }
21638
21838
  });
@@ -21754,8 +21954,8 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21754
21954
  if (detected !== "unknown")
21755
21955
  continue;
21756
21956
  try {
21757
- const affected = getAffectedFiles(state.dependencyGraph, resolve37(editedFile));
21758
- const hasAngularConsumer = affected.some((dep) => dep !== resolve37(editedFile) && detectFramework(dep, state.resolvedPaths) === "angular");
21957
+ const affected = getAffectedFiles(state.dependencyGraph, resolve38(editedFile));
21958
+ const hasAngularConsumer = affected.some((dep) => dep !== resolve38(editedFile) && detectFramework(dep, state.resolvedPaths) === "angular");
21759
21959
  if (hasAngularConsumer) {
21760
21960
  return {
21761
21961
  kind: "rebootstrap",
@@ -21800,9 +22000,9 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21800
22000
  tier: 1
21801
22001
  };
21802
22002
  }
21803
- if (owners.length === 0 && editedFile.endsWith(".ts") && !editedFile.endsWith(".d.ts")) {
22003
+ if (owners.length === 0 && (editedFile.endsWith(".ts") || editedFile.endsWith(".json")) && !editedFile.endsWith(".d.ts")) {
21804
22004
  const normalized = editedFile.replace(/\\/g, "/");
21805
- const angularDirAbs = resolve37(angularDir).replace(/\\/g, "/");
22005
+ const angularDirAbs = resolve38(angularDir).replace(/\\/g, "/");
21806
22006
  if (normalized.startsWith(angularDirAbs + "/")) {
21807
22007
  return {
21808
22008
  kind: "rebootstrap",
@@ -21946,16 +22146,16 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21946
22146
  };
21947
22147
  const fire = () => {
21948
22148
  ctx.debounceTimer = null;
21949
- const resolve38 = ctx.debouncedResolve;
22149
+ const resolve39 = ctx.debouncedResolve;
21950
22150
  ctx.debouncedResolve = null;
21951
22151
  ctx.debouncedPromise = null;
21952
22152
  if (ctx.inFlight) {
21953
22153
  ctx.pending = true;
21954
- ctx.inFlight.finally(() => resolve38?.());
22154
+ ctx.inFlight.finally(() => resolve39?.());
21955
22155
  return;
21956
22156
  }
21957
22157
  ctx.inFlight = drive();
21958
- ctx.inFlight.finally(() => resolve38?.());
22158
+ ctx.inFlight.finally(() => resolve39?.());
21959
22159
  };
21960
22160
  return ({ immediate = false } = {}) => {
21961
22161
  if (!ctx.debouncedPromise) {
@@ -21982,9 +22182,9 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21982
22182
  const diskRefreshPromise = (async () => {
21983
22183
  if (!angularDir || editedFiles.size === 0)
21984
22184
  return;
21985
- const angularDirAbs = resolve37(angularDir);
22185
+ const angularDirAbs = resolve38(angularDir);
21986
22186
  const filesUnderAngular = Array.from(editedFiles).filter((file4) => {
21987
- const abs = resolve37(file4);
22187
+ const abs = resolve38(file4);
21988
22188
  return abs === angularDirAbs || abs.startsWith(angularDirAbs + sep4);
21989
22189
  });
21990
22190
  if (filesUnderAngular.length === 0)
@@ -22006,7 +22206,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22006
22206
  if (!ext)
22007
22207
  continue;
22008
22208
  if (ext === ".ts" || ext === ".tsx") {
22009
- tsFilesToRefresh.add(resolve37(file4));
22209
+ tsFilesToRefresh.add(resolve38(file4));
22010
22210
  continue;
22011
22211
  }
22012
22212
  const owners = resolveOwningComponents2({
@@ -22014,7 +22214,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22014
22214
  userAngularRoot: angularDirAbs
22015
22215
  });
22016
22216
  for (const owner of owners) {
22017
- tsFilesToRefresh.add(resolve37(owner.componentFilePath));
22217
+ tsFilesToRefresh.add(resolve38(owner.componentFilePath));
22018
22218
  }
22019
22219
  }
22020
22220
  if (tsFilesToRefresh.size === 0)
@@ -22026,7 +22226,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22026
22226
  const { invalidateModule: invalidateModule2 } = await Promise.resolve().then(() => (init_moduleServer(), exports_moduleServer));
22027
22227
  for (const tsFile of tsFilesToRefresh) {
22028
22228
  const rel = relative16(angularDirAbs, tsFile).replace(/\\/g, "/").replace(/\.[tj]sx?$/, ".js");
22029
- const compiledFile = resolve37(compiledRoot, rel);
22229
+ const compiledFile = resolve38(compiledRoot, rel);
22030
22230
  invalidateModule2(compiledFile);
22031
22231
  }
22032
22232
  } catch {}
@@ -22077,7 +22277,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22077
22277
  serverPaths.forEach((serverPath, idx) => {
22078
22278
  const fileBase = basename11(serverPath, ".js");
22079
22279
  const ssrPath = ssrPaths[idx] ?? serverPath;
22080
- state.manifest[toPascal(fileBase)] = resolve37(ssrPath);
22280
+ state.manifest[toPascal(fileBase)] = resolve38(ssrPath);
22081
22281
  });
22082
22282
  if (clientPaths.length > 0) {
22083
22283
  await bundleAngularClient(state, clientPaths, state.resolvedPaths.buildDir, angularDir);
@@ -22086,9 +22286,9 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22086
22286
  const angularDir = config.angularDirectory ?? "";
22087
22287
  const angularFiles = filesToRebuild.filter((file4) => detectFramework(file4, state.resolvedPaths) === "angular");
22088
22288
  for (const file4 of angularFiles) {
22089
- state.fileHashes.set(resolve37(file4), computeFileHash(file4));
22289
+ state.fileHashes.set(resolve38(file4), computeFileHash(file4));
22090
22290
  }
22091
- const angularPagesPath = resolve37(angularDir, "pages");
22291
+ const angularPagesPath = resolve38(angularDir, "pages");
22092
22292
  const pageEntries = resolveAngularPageEntries(state, angularFiles, angularPagesPath);
22093
22293
  const tierStart = performance.now();
22094
22294
  const verdict = await decideAngularTier(state, angularDir);
@@ -22127,11 +22327,11 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22127
22327
  if (isComponentFile2)
22128
22328
  return primaryFile;
22129
22329
  const { findNearestComponent: findNearestComponent2 } = await Promise.resolve().then(() => (init_transformCache(), exports_transformCache));
22130
- const nearest = findNearestComponent2(resolve37(primaryFile));
22330
+ const nearest = findNearestComponent2(resolve38(primaryFile));
22131
22331
  return nearest ?? primaryFile;
22132
22332
  }, handleReactModuleServerPath = async (state, reactFiles, startTime, onRebuildComplete) => {
22133
22333
  for (const file4 of reactFiles) {
22134
- state.fileHashes.set(resolve37(file4), computeFileHash(file4));
22334
+ state.fileHashes.set(resolve38(file4), computeFileHash(file4));
22135
22335
  }
22136
22336
  markSsrCacheDirty("react");
22137
22337
  const primaryFile = reactFiles.find((file4) => !file4.replace(/\\/g, "/").includes("/pages/")) ?? reactFiles[0];
@@ -22213,7 +22413,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22213
22413
  });
22214
22414
  }, handleSvelteModuleServerPath = async (state, svelteFiles, startTime, onRebuildComplete) => {
22215
22415
  for (const file4 of svelteFiles) {
22216
- state.fileHashes.set(resolve37(file4), computeFileHash(file4));
22416
+ state.fileHashes.set(resolve38(file4), computeFileHash(file4));
22217
22417
  }
22218
22418
  markSsrCacheDirty("svelte");
22219
22419
  const serverDuration = Date.now() - startTime;
@@ -22238,8 +22438,8 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22238
22438
  const serverEntries = [...svelteServerPaths];
22239
22439
  const clientEntries = [...svelteIndexPaths, ...svelteClientPaths];
22240
22440
  const { getFrameworkGeneratedDir: getFrameworkGeneratedDir2 } = await Promise.resolve().then(() => (init_generatedDir(), exports_generatedDir));
22241
- const serverRoot = resolve37(getFrameworkGeneratedDir2("svelte"), "server");
22242
- const serverOutDir = resolve37(buildDir, basename11(svelteDir));
22441
+ const serverRoot = resolve38(getFrameworkGeneratedDir2("svelte"), "server");
22442
+ const serverOutDir = resolve38(buildDir, basename11(svelteDir));
22243
22443
  const [serverResult, clientResult] = await Promise.all([
22244
22444
  serverEntries.length > 0 ? bunBuild9({
22245
22445
  entrypoints: serverEntries,
@@ -22336,7 +22536,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22336
22536
  });
22337
22537
  }, handleVueModuleServerPath = async (state, vueFiles, nonVueFiles, startTime, onRebuildComplete) => {
22338
22538
  for (const file4 of [...vueFiles, ...nonVueFiles]) {
22339
- state.fileHashes.set(resolve37(file4), computeFileHash(file4));
22539
+ state.fileHashes.set(resolve38(file4), computeFileHash(file4));
22340
22540
  }
22341
22541
  markSsrCacheDirty("vue");
22342
22542
  await invalidateNonVueModules(nonVueFiles);
@@ -22364,7 +22564,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22364
22564
  recursive: true,
22365
22565
  withFileTypes: true
22366
22566
  });
22367
- return entries.filter((entry) => entry.isFile() && EMBER_PAGE_EXTENSIONS.some((ext) => entry.name.endsWith(ext))).map((entry) => resolve37(emberPagesPath, entry.name));
22567
+ return entries.filter((entry) => entry.isFile() && EMBER_PAGE_EXTENSIONS.some((ext) => entry.name.endsWith(ext))).map((entry) => resolve38(emberPagesPath, entry.name));
22368
22568
  } catch {
22369
22569
  return [];
22370
22570
  }
@@ -22376,10 +22576,10 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22376
22576
  return state.manifest;
22377
22577
  }
22378
22578
  for (const file4 of emberFiles) {
22379
- state.fileHashes.set(resolve37(file4), computeFileHash(file4));
22579
+ state.fileHashes.set(resolve38(file4), computeFileHash(file4));
22380
22580
  }
22381
- const emberPagesPath = resolve37(emberDir, "pages");
22382
- const directPageEntries = emberFiles.filter((file4) => resolve37(file4).startsWith(emberPagesPath));
22581
+ const emberPagesPath = resolve38(emberDir, "pages");
22582
+ const directPageEntries = emberFiles.filter((file4) => resolve38(file4).startsWith(emberPagesPath));
22383
22583
  const allPageEntries = directPageEntries.length > 0 ? directPageEntries : await collectAllEmberPages(emberPagesPath);
22384
22584
  if (allPageEntries.length === 0) {
22385
22585
  onRebuildComplete({ hmrState: state, manifest: state.manifest });
@@ -22389,7 +22589,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22389
22589
  const { serverPaths } = await compileEmber2(allPageEntries, emberDir, process.cwd(), true);
22390
22590
  for (const serverPath of serverPaths) {
22391
22591
  const fileBase = basename11(serverPath, ".js");
22392
- state.manifest[toPascal(fileBase)] = resolve37(serverPath);
22592
+ state.manifest[toPascal(fileBase)] = resolve38(serverPath);
22393
22593
  }
22394
22594
  const { invalidateEmberSsrCache: invalidateEmberSsrCache2 } = await Promise.resolve().then(() => (init_ember(), exports_ember));
22395
22595
  invalidateEmberSsrCache2();
@@ -22481,8 +22681,8 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22481
22681
  if (!buildReference?.source) {
22482
22682
  return;
22483
22683
  }
22484
- const sourcePath = buildReference.source.startsWith("file://") ? new URL(buildReference.source).pathname : resolve37(dirname21(buildInfo.resolvedRegistryPath), buildReference.source);
22485
- islandFiles.add(resolve37(sourcePath));
22684
+ const sourcePath = buildReference.source.startsWith("file://") ? new URL(buildReference.source).pathname : resolve38(dirname21(buildInfo.resolvedRegistryPath), buildReference.source);
22685
+ islandFiles.add(resolve38(sourcePath));
22486
22686
  }, resolveIslandSourceFiles = async (config) => {
22487
22687
  const registryPath = config.islands?.registry;
22488
22688
  if (!registryPath) {
@@ -22490,7 +22690,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22490
22690
  }
22491
22691
  const buildInfo = await loadIslandRegistryBuildInfo(registryPath);
22492
22692
  const islandFiles = new Set([
22493
- resolve37(buildInfo.resolvedRegistryPath)
22693
+ resolve38(buildInfo.resolvedRegistryPath)
22494
22694
  ]);
22495
22695
  for (const definition of buildInfo.definitions) {
22496
22696
  resolveIslandDefinitionSource(definition, buildInfo, islandFiles);
@@ -22501,7 +22701,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22501
22701
  if (islandFiles.size === 0) {
22502
22702
  return false;
22503
22703
  }
22504
- return filesToRebuild.some((file4) => islandFiles.has(resolve37(file4)));
22704
+ return filesToRebuild.some((file4) => islandFiles.has(resolve38(file4)));
22505
22705
  }, handleIslandSourceReload = async (state, config, filesToRebuild, manifest) => {
22506
22706
  const shouldReload = await didStaticPagesNeedIslandRefresh(config, filesToRebuild);
22507
22707
  if (!shouldReload) {
@@ -22536,10 +22736,10 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22536
22736
  }, computeOutputPagesDir = (state, config, framework) => {
22537
22737
  const isSingle = !config.reactDirectory && !config.svelteDirectory && !config.vueDirectory && (framework === "html" ? !config.htmxDirectory : !config.htmlDirectory);
22538
22738
  if (isSingle) {
22539
- return resolve37(state.resolvedPaths.buildDir, "pages");
22739
+ return resolve38(state.resolvedPaths.buildDir, "pages");
22540
22740
  }
22541
22741
  const dirName = framework === "html" ? basename11(config.htmlDirectory ?? "html") : basename11(config.htmxDirectory ?? "htmx");
22542
- return resolve37(state.resolvedPaths.buildDir, dirName, "pages");
22742
+ return resolve38(state.resolvedPaths.buildDir, dirName, "pages");
22543
22743
  }, processHtmlPageUpdate = async (state, pageFile, builtHtmlPagePath, manifest, duration) => {
22544
22744
  try {
22545
22745
  const { handleHTMLUpdate: handleHTMLUpdate2 } = await Promise.resolve().then(() => (init_simpleHTMLHMR(), exports_simpleHTMLHMR));
@@ -22578,7 +22778,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22578
22778
  const pageFilesToUpdate = shouldRefreshAllPages ? await scanEntryPoints(outputHtmlPages, "*.html") : htmlPageFiles;
22579
22779
  await runSequentially(pageFilesToUpdate, async (pageFile) => {
22580
22780
  const htmlPageName = basename11(pageFile);
22581
- const builtHtmlPagePath = resolve37(outputHtmlPages, htmlPageName);
22781
+ const builtHtmlPagePath = resolve38(outputHtmlPages, htmlPageName);
22582
22782
  await processHtmlPageUpdate(state, pageFile, builtHtmlPagePath, manifest, duration);
22583
22783
  });
22584
22784
  }, handleVueCssOnlyUpdate = (state, vueCssFiles, manifest, duration) => {
@@ -22643,7 +22843,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22643
22843
  const cssKey = `${pascalName}CSS`;
22644
22844
  const cssUrl = manifest[cssKey] || null;
22645
22845
  const { vueHmrMetadata: vueHmrMetadata2 } = await Promise.resolve().then(() => (init_compileVue(), exports_compileVue));
22646
- const hmrMeta = vueHmrMetadata2.get(resolve37(vuePagePath));
22846
+ const hmrMeta = vueHmrMetadata2.get(resolve38(vuePagePath));
22647
22847
  const changeType = hmrMeta?.changeType ?? "full";
22648
22848
  if (changeType === "style-only") {
22649
22849
  broadcastVueStyleOnly(state, vuePagePath, baseName, cssUrl, hmrId, manifest, duration);
@@ -22828,7 +23028,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22828
23028
  const pageFilesToUpdate = shouldRefreshAllPages ? await scanEntryPoints(outputHtmxPages, "*.html") : htmxPageFiles;
22829
23029
  await runSequentially(pageFilesToUpdate, async (htmxPageFile) => {
22830
23030
  const htmxPageName = basename11(htmxPageFile);
22831
- const builtHtmxPagePath = resolve37(outputHtmxPages, htmxPageName);
23031
+ const builtHtmxPagePath = resolve38(outputHtmxPages, htmxPageName);
22832
23032
  await processHtmxPageUpdate(state, htmxPageFile, builtHtmxPagePath, manifest, duration);
22833
23033
  });
22834
23034
  }, collectUpdatedModulePaths = (allModuleUpdates) => {
@@ -22937,7 +23137,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22937
23137
  html = html.slice(0, bodyClose.index) + hmrScript + html.slice(bodyClose.index);
22938
23138
  writeFs(destPath, html);
22939
23139
  }, processMarkupFileFastPath = async (state, sourceFile, outputDir, framework, startTime, updateAssetPaths2, handleUpdate, readFs, writeFs) => {
22940
- const destPath = resolve37(outputDir, basename11(sourceFile));
23140
+ const destPath = resolve38(outputDir, basename11(sourceFile));
22941
23141
  const hmrScript = extractHmrScript(destPath, readFs);
22942
23142
  const source = await Bun.file(sourceFile).text();
22943
23143
  await Bun.write(destPath, source);
@@ -23505,7 +23705,7 @@ __export(exports_devBuild, {
23505
23705
  });
23506
23706
  import { readdir as readdir5 } from "fs/promises";
23507
23707
  import { statSync as statSync5 } from "fs";
23508
- import { resolve as resolve38 } from "path";
23708
+ import { resolve as resolve39 } from "path";
23509
23709
  var FRAMEWORK_DIR_KEYS, collectDepVendorSourceDirs = (config) => {
23510
23710
  const configuredDirs = [
23511
23711
  config.reactDirectory,
@@ -23528,7 +23728,7 @@ var FRAMEWORK_DIR_KEYS, collectDepVendorSourceDirs = (config) => {
23528
23728
  return Object.keys(config).length > 0 ? config : null;
23529
23729
  }, reloadConfig = async () => {
23530
23730
  try {
23531
- const configPath2 = resolve38(process.env.ABSOLUTE_CONFIG ?? "absolute.config.ts");
23731
+ const configPath2 = resolve39(process.env.ABSOLUTE_CONFIG ?? "absolute.config.ts");
23532
23732
  const source = await Bun.file(configPath2).text();
23533
23733
  return parseDirectoryConfig(source);
23534
23734
  } catch {
@@ -23613,7 +23813,7 @@ var FRAMEWORK_DIR_KEYS, collectDepVendorSourceDirs = (config) => {
23613
23813
  state.fileChangeQueue.clear();
23614
23814
  }
23615
23815
  }, handleCachedReload = async () => {
23616
- const serverMtime = statSync5(resolve38(Bun.main)).mtimeMs;
23816
+ const serverMtime = statSync5(resolve39(Bun.main)).mtimeMs;
23617
23817
  const lastMtime = globalThis.__hmrServerMtime;
23618
23818
  globalThis.__hmrServerMtime = serverMtime;
23619
23819
  const cached = globalThis.__hmrDevResult;
@@ -23650,8 +23850,8 @@ var FRAMEWORK_DIR_KEYS, collectDepVendorSourceDirs = (config) => {
23650
23850
  return true;
23651
23851
  }, resolveAbsoluteVersion2 = async () => {
23652
23852
  const candidates = [
23653
- resolve38(import.meta.dir, "..", "..", "package.json"),
23654
- resolve38(import.meta.dir, "..", "package.json")
23853
+ resolve39(import.meta.dir, "..", "..", "package.json"),
23854
+ resolve39(import.meta.dir, "..", "package.json")
23655
23855
  ];
23656
23856
  const [candidate, ...remaining] = candidates;
23657
23857
  if (!candidate) {
@@ -23677,7 +23877,7 @@ var FRAMEWORK_DIR_KEYS, collectDepVendorSourceDirs = (config) => {
23677
23877
  const entries = await readdir5(vendorDir).catch(() => emptyStringArray);
23678
23878
  await Promise.all(entries.filter((entry) => entry.endsWith(".js")).map(async (entry) => {
23679
23879
  const webPath = `/${framework}/vendor/${entry}`;
23680
- const bytes = await Bun.file(resolve38(vendorDir, entry)).bytes();
23880
+ const bytes = await Bun.file(resolve39(vendorDir, entry)).bytes();
23681
23881
  assetStore.set(webPath, bytes);
23682
23882
  }));
23683
23883
  }, devBuild = async (config) => {
@@ -23745,11 +23945,11 @@ var FRAMEWORK_DIR_KEYS, collectDepVendorSourceDirs = (config) => {
23745
23945
  cleanStaleAssets(state.assetStore, manifest, state.resolvedPaths.buildDir);
23746
23946
  recordStep("populate asset store", stepStartedAt);
23747
23947
  stepStartedAt = performance.now();
23748
- const reactVendorDir = resolve38(state.resolvedPaths.buildDir, "react", "vendor");
23749
- const angularVendorDir = resolve38(state.resolvedPaths.buildDir, "angular", "vendor");
23750
- const svelteVendorDir = resolve38(state.resolvedPaths.buildDir, "svelte", "vendor");
23751
- const vueVendorDir = resolve38(state.resolvedPaths.buildDir, "vue", "vendor");
23752
- const depVendorDir = resolve38(state.resolvedPaths.buildDir, "vendor");
23948
+ const reactVendorDir = resolve39(state.resolvedPaths.buildDir, "react", "vendor");
23949
+ const angularVendorDir = resolve39(state.resolvedPaths.buildDir, "angular", "vendor");
23950
+ const svelteVendorDir = resolve39(state.resolvedPaths.buildDir, "svelte", "vendor");
23951
+ const vueVendorDir = resolve39(state.resolvedPaths.buildDir, "vue", "vendor");
23952
+ const depVendorDir = resolve39(state.resolvedPaths.buildDir, "vendor");
23753
23953
  const { buildDepVendor: buildDepVendor2 } = await Promise.resolve().then(() => (init_buildDepVendor(), exports_buildDepVendor));
23754
23954
  const [, angularSpecs, , , , , depPaths] = await Promise.all([
23755
23955
  config.reactDirectory ? buildReactVendor(state.resolvedPaths.buildDir) : Promise.resolve(undefined),
@@ -23827,7 +24027,7 @@ var FRAMEWORK_DIR_KEYS, collectDepVendorSourceDirs = (config) => {
23827
24027
  manifest
23828
24028
  };
23829
24029
  globalThis.__hmrDevResult = result;
23830
- globalThis.__hmrServerMtime = statSync5(resolve38(Bun.main)).mtimeMs;
24030
+ globalThis.__hmrServerMtime = statSync5(resolve39(Bun.main)).mtimeMs;
23831
24031
  return result;
23832
24032
  };
23833
24033
  var init_devBuild = __esm(() => {
@@ -23864,5 +24064,5 @@ export {
23864
24064
  build
23865
24065
  };
23866
24066
 
23867
- //# debugId=DFDC175610BB2AC564756E2164756E21
24067
+ //# debugId=3C052D33821FDEB764756E2164756E21
23868
24068
  //# sourceMappingURL=build.js.map