@absolutejs/absolute 0.19.0-beta.945 → 0.19.0-beta.947

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";
@@ -18952,6 +18963,7 @@ var resolveBuildPaths = (config) => {
18952
18963
  emberDir: optional(config.emberDirectory),
18953
18964
  htmlDir: optional(config.htmlDirectory),
18954
18965
  htmxDir: optional(config.htmxDirectory),
18966
+ publicDir: optional(config.publicDirectory),
18955
18967
  reactDir: optional(config.reactDirectory),
18956
18968
  stylesDir: optional(typeof config.stylesConfig === "string" ? config.stylesConfig : config.stylesConfig?.path),
18957
18969
  svelteDir: optional(config.svelteDirectory),
@@ -20121,6 +20133,114 @@ var init_ssrCache = __esm(() => {
20121
20133
  dirtyFrameworks = new Set;
20122
20134
  });
20123
20135
 
20136
+ // src/utils/loadConfig.ts
20137
+ var exports_loadConfig = {};
20138
+ __export(exports_loadConfig, {
20139
+ loadRawConfig: () => loadRawConfig,
20140
+ loadConfig: () => loadConfig,
20141
+ isWorkspaceConfig: () => isWorkspaceConfig,
20142
+ getWorkspaceServices: () => getWorkspaceServices
20143
+ });
20144
+ import { resolve as resolve33 } from "path";
20145
+ 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) => {
20146
+ if (!isObject2(config)) {
20147
+ return false;
20148
+ }
20149
+ const entries = Object.entries(config);
20150
+ if (entries.length === 0) {
20151
+ return false;
20152
+ }
20153
+ if (entries.some(([key]) => RESERVED_TOP_LEVEL_KEYS.has(key))) {
20154
+ return false;
20155
+ }
20156
+ return entries.every(([, value]) => isServiceCandidate(value));
20157
+ }, isConfigInput = (value) => isObject2(value), getWorkspaceServices = (config) => {
20158
+ if (!isWorkspaceConfig(config)) {
20159
+ 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`.");
20160
+ }
20161
+ return config;
20162
+ }, projectServiceConfig = (config, serviceName) => {
20163
+ const services = getWorkspaceServices(config);
20164
+ const service = services[serviceName];
20165
+ if (!service) {
20166
+ throw new Error(`Config file does not define service "${serviceName}".`);
20167
+ }
20168
+ if (isCommandService(service)) {
20169
+ throw new Error(`Service "${serviceName}" is a command service and cannot be loaded as an AbsoluteJS app config.`);
20170
+ }
20171
+ const {
20172
+ command: _command,
20173
+ config: _config,
20174
+ cwd: _cwd,
20175
+ dependsOn: _dependsOn,
20176
+ env: _env,
20177
+ kind: _kind,
20178
+ port: _port,
20179
+ ready: _ready,
20180
+ visibility: _visibility,
20181
+ ...serviceConfig
20182
+ } = service;
20183
+ return serviceConfig;
20184
+ }, loadConfig = async (configPath2) => {
20185
+ const config = await loadRawConfig(configPath2);
20186
+ const serviceName = process.env.ABSOLUTE_WORKSPACE_SERVICE_NAME;
20187
+ if (typeof serviceName === "string" && serviceName.length > 0) {
20188
+ return projectServiceConfig(config, serviceName);
20189
+ }
20190
+ if (isWorkspaceConfig(config)) {
20191
+ 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.");
20192
+ }
20193
+ return config;
20194
+ }, loadRawConfig = async (configPath2) => {
20195
+ const resolved = resolve33(configPath2 ?? process.env.ABSOLUTE_CONFIG ?? "absolute.config.ts");
20196
+ const mod = await import(resolved);
20197
+ const config = mod.default ?? mod.config;
20198
+ if (!config) {
20199
+ throw new Error(`Config file "${resolved}" does not export a valid configuration.
20200
+ Expected: export default defineConfig({ ... })`);
20201
+ }
20202
+ if (!isConfigInput(config)) {
20203
+ throw new Error(`Config file "${resolved}" must export an object configuration.`);
20204
+ }
20205
+ return config;
20206
+ };
20207
+ var init_loadConfig = __esm(() => {
20208
+ RESERVED_TOP_LEVEL_KEYS = new Set([
20209
+ "assetsDirectory",
20210
+ "astroDirectory",
20211
+ "buildDirectory",
20212
+ "bunBuild",
20213
+ "command",
20214
+ "config",
20215
+ "cwd",
20216
+ "dependsOn",
20217
+ "dev",
20218
+ "emberDirectory",
20219
+ "entry",
20220
+ "env",
20221
+ "htmlDirectory",
20222
+ "htmxDirectory",
20223
+ "images",
20224
+ "incrementalFiles",
20225
+ "islands",
20226
+ "kind",
20227
+ "mode",
20228
+ "options",
20229
+ "port",
20230
+ "postcss",
20231
+ "publicDirectory",
20232
+ "reactDirectory",
20233
+ "sitemap",
20234
+ "static",
20235
+ "stylesConfig",
20236
+ "svelteDirectory",
20237
+ "tailwind",
20238
+ "ready",
20239
+ "visibility",
20240
+ "vueDirectory"
20241
+ ]);
20242
+ });
20243
+
20124
20244
  // src/dev/moduleServer.ts
20125
20245
  var exports_moduleServer = {};
20126
20246
  __export(exports_moduleServer, {
@@ -20133,7 +20253,7 @@ __export(exports_moduleServer, {
20133
20253
  SRC_URL_PREFIX: () => SRC_URL_PREFIX
20134
20254
  });
20135
20255
  import { existsSync as existsSync25, readFileSync as readFileSync19, statSync as statSync4 } from "fs";
20136
- import { basename as basename10, dirname as dirname19, extname as extname10, join as join29, resolve as resolve33, relative as relative14 } from "path";
20256
+ import { basename as basename10, dirname as dirname19, extname as extname10, join as join29, resolve as resolve34, relative as relative14 } from "path";
20137
20257
  var SRC_PREFIX = "/@src/", jsTranspiler2, tsTranspiler2, tsxTranspiler, TRANSPILABLE, ALL_EXPORTS_RE, STRING_CONTENTS_RE, preserveTypeExports = (originalSource, transpiled, valueExports) => {
20138
20258
  const codeOnly = originalSource.replace(STRING_CONTENTS_RE, '""');
20139
20259
  const allExports = [];
@@ -20153,7 +20273,7 @@ var SRC_PREFIX = "/@src/", jsTranspiler2, tsTranspiler2, tsxTranspiler, TRANSPIL
20153
20273
  ${stubs}
20154
20274
  `;
20155
20275
  }, resolveRelativeExtension = (srcPath, projectRoot, extensions) => {
20156
- const found = extensions.find((ext) => existsSync25(resolve33(projectRoot, srcPath + ext)));
20276
+ const found = extensions.find((ext) => existsSync25(resolve34(projectRoot, srcPath + ext)));
20157
20277
  return found ? srcPath + found : srcPath;
20158
20278
  }, IMPORT_EXTENSIONS, SIDE_EFFECT_EXTENSIONS, MODULE_EXTENSIONS, RESOLVED_MODULE_EXTENSIONS, REACT_EXTENSIONS, escapeRegex3 = (str) => str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), buildImportRewriter = (vendorPaths) => {
20159
20279
  const entries = Object.entries(vendorPaths).sort(([a], [b2]) => b2.length - a.length);
@@ -20168,7 +20288,7 @@ ${stubs}
20168
20288
  return invalidationVersion > 0 ? `${mtime}.${invalidationVersion}` : `${mtime}`;
20169
20289
  }, srcUrl = (relPath, projectRoot) => {
20170
20290
  const base = `${SRC_PREFIX}${relPath.replace(/\\/g, "/")}`;
20171
- const absPath = resolve33(projectRoot, relPath);
20291
+ const absPath = resolve34(projectRoot, relPath);
20172
20292
  const cached = mtimeCache.get(absPath);
20173
20293
  if (cached !== undefined)
20174
20294
  return `${base}?v=${buildVersion(cached, absPath)}`;
@@ -20180,12 +20300,12 @@ ${stubs}
20180
20300
  return base;
20181
20301
  }
20182
20302
  }, resolveRelativeImport = (relPath, fileDir, projectRoot, extensions) => {
20183
- const absPath = resolve33(fileDir, relPath);
20303
+ const absPath = resolve34(fileDir, relPath);
20184
20304
  const rel = relative14(projectRoot, absPath);
20185
20305
  const extension = extname10(rel);
20186
20306
  let srcPath = RESOLVED_MODULE_EXTENSIONS.has(extension) ? rel : resolveRelativeExtension(rel, projectRoot, extensions);
20187
20307
  if (extname10(srcPath) === ".svelte") {
20188
- srcPath = relative14(projectRoot, resolveSvelteModulePath(resolve33(projectRoot, srcPath)));
20308
+ srcPath = relative14(projectRoot, resolveSvelteModulePath(resolve34(projectRoot, srcPath)));
20189
20309
  }
20190
20310
  return srcUrl(srcPath, projectRoot);
20191
20311
  }, NODE_BUILTIN_RE, resolveAbsoluteSpecifier = (specifier, projectRoot) => {
@@ -20204,13 +20324,13 @@ ${stubs}
20204
20324
  const packageName = isScoped ? `${parts[0]}/${parts[1]}` : parts[0];
20205
20325
  const subpath = isScoped ? parts.slice(2).join("/") : parts.slice(1).join("/");
20206
20326
  if (!subpath) {
20207
- const pkgDir = resolve33(projectRoot, "node_modules", packageName ?? "");
20327
+ const pkgDir = resolve34(projectRoot, "node_modules", packageName ?? "");
20208
20328
  const pkgJsonPath = join29(pkgDir, "package.json");
20209
20329
  if (existsSync25(pkgJsonPath)) {
20210
20330
  const pkg = JSON.parse(readFileSync19(pkgJsonPath, "utf-8"));
20211
20331
  const esmEntry = typeof pkg.module === "string" && pkg.module || typeof pkg.browser === "string" && pkg.browser;
20212
20332
  if (esmEntry) {
20213
- const resolved = resolve33(pkgDir, esmEntry);
20333
+ const resolved = resolve34(pkgDir, esmEntry);
20214
20334
  if (existsSync25(resolved))
20215
20335
  return relative14(projectRoot, resolved);
20216
20336
  }
@@ -20257,12 +20377,12 @@ ${stubs}
20257
20377
  result = result.replace(/((?:from|import)\s*["'])(\/[^"']+\.(tsx?|jsx?|ts))(["'])/g, rewriteAbsoluteToSrc);
20258
20378
  result = result.replace(/(import\s*\(\s*["'])(\/[^"']+\.(tsx?|jsx?|ts))(["']\s*\))/g, rewriteAbsoluteToSrc);
20259
20379
  result = result.replace(/new\s+URL\(\s*["'](\.\.?\/[^"']+)["']\s*,\s*import\.meta\.url\s*\)/g, (_match, relPath) => {
20260
- const absPath = resolve33(fileDir, relPath);
20380
+ const absPath = resolve34(fileDir, relPath);
20261
20381
  const rel = relative14(projectRoot, absPath);
20262
20382
  return `new URL('${srcUrl(rel, projectRoot)}', import.meta.url)`;
20263
20383
  });
20264
20384
  result = result.replace(/import\.meta\.resolve\(\s*["'](\.\.?\/[^"']+)["']\s*\)/g, (_match, relPath) => {
20265
- const absPath = resolve33(fileDir, relPath);
20385
+ const absPath = resolve34(fileDir, relPath);
20266
20386
  const rel = relative14(projectRoot, absPath);
20267
20387
  return `'${srcUrl(rel, projectRoot)}'`;
20268
20388
  });
@@ -20575,7 +20695,7 @@ ${code}`;
20575
20695
  code = injectVueHmr(code, filePath, projectRoot, vueDir);
20576
20696
  return rewriteImports(code, filePath, projectRoot, rewriter);
20577
20697
  }, injectVueHmr = (code, filePath, projectRoot, vueDir) => {
20578
- const hmrBase = vueDir ? resolve33(vueDir) : projectRoot;
20698
+ const hmrBase = vueDir ? resolve34(vueDir) : projectRoot;
20579
20699
  const hmrId = relative14(hmrBase, filePath).replace(/\\/g, "/").replace(/\.vue$/, "");
20580
20700
  let result = code.replace(/export\s+default\s+/, "var __hmr_comp__ = ");
20581
20701
  result += [
@@ -20739,7 +20859,7 @@ export default {};
20739
20859
  const escaped = virtualCss.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$/g, "\\$");
20740
20860
  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);`);
20741
20861
  }, resolveSourcePath = (relPath, projectRoot) => {
20742
- const filePath = resolve33(projectRoot, relPath);
20862
+ const filePath = resolve34(projectRoot, relPath);
20743
20863
  const ext = extname10(filePath);
20744
20864
  if (ext === ".svelte")
20745
20865
  return { ext, filePath: resolveSvelteModulePath(filePath) };
@@ -20755,6 +20875,54 @@ export default {};
20755
20875
  }, transformAndCache = async (filePath, ext, projectRoot, rewriter, vueDir, stylePreprocessors) => {
20756
20876
  if (ext === ".css")
20757
20877
  return jsResponse(handleCssRequest(filePath));
20878
+ if (ext === ".json") {
20879
+ try {
20880
+ const { readFile: readFile6, stat: stat4 } = await import("fs/promises");
20881
+ const fileExists = async (p2) => {
20882
+ try {
20883
+ await stat4(p2);
20884
+ return true;
20885
+ } catch {
20886
+ return false;
20887
+ }
20888
+ };
20889
+ let sourcePath = filePath;
20890
+ if (!await fileExists(sourcePath)) {
20891
+ const { getFrameworkGeneratedDir: getFrameworkGeneratedDir2 } = await Promise.resolve().then(() => (init_generatedDir(), exports_generatedDir));
20892
+ const generatedAngularRoot = getFrameworkGeneratedDir2("angular").replace(/\\/g, "/");
20893
+ const normalized = filePath.replace(/\\/g, "/");
20894
+ if (normalized.startsWith(generatedAngularRoot + "/") || normalized.startsWith(generatedAngularRoot)) {
20895
+ const tail = normalized.slice(generatedAngularRoot.length + 1);
20896
+ const absoluteCandidate = "/" + tail.replace(/^\/+/, "");
20897
+ const candidates = [
20898
+ absoluteCandidate,
20899
+ resolve34(projectRoot, tail)
20900
+ ];
20901
+ try {
20902
+ const { loadConfig: loadConfig2 } = await Promise.resolve().then(() => (init_loadConfig(), exports_loadConfig));
20903
+ const cfg = await loadConfig2();
20904
+ const angularDir = cfg.angularDirectory && resolve34(projectRoot, cfg.angularDirectory);
20905
+ if (angularDir)
20906
+ candidates.push(resolve34(angularDir, tail));
20907
+ } catch {}
20908
+ for (const candidate of candidates) {
20909
+ if (await fileExists(candidate)) {
20910
+ sourcePath = candidate;
20911
+ break;
20912
+ }
20913
+ }
20914
+ }
20915
+ }
20916
+ const text = await readFile6(sourcePath, "utf-8");
20917
+ JSON.parse(text);
20918
+ return jsResponse(`export default ${text};`);
20919
+ } catch (err) {
20920
+ return new Response(`console.error('[ModuleServer] JSON load error in ${filePath}:', ${JSON.stringify(String(err))});`, {
20921
+ headers: { "Content-Type": "application/javascript" },
20922
+ status: 500
20923
+ });
20924
+ }
20925
+ }
20758
20926
  const isSvelte = ext === ".svelte" || filePath.endsWith(".svelte.ts") || filePath.endsWith(".svelte.js");
20759
20927
  const cached = getTransformed(filePath);
20760
20928
  if (cached)
@@ -20766,7 +20934,7 @@ export default {};
20766
20934
  if (!TRANSPILABLE.has(ext))
20767
20935
  return;
20768
20936
  const stat3 = statSync4(filePath);
20769
- const resolvedVueDir = vueDir ? resolve33(vueDir) : undefined;
20937
+ const resolvedVueDir = vueDir ? resolve34(vueDir) : undefined;
20770
20938
  let content = REACT_EXTENSIONS.has(ext) ? transformReactFile(filePath, projectRoot, rewriter) : transformPlainFile(filePath, projectRoot, rewriter, resolvedVueDir);
20771
20939
  const isAngularGeneratedJs = ext === ".js" && filePath.replace(/\\/g, "/").includes("/.absolutejs/generated/angular/");
20772
20940
  if (isAngularGeneratedJs) {
@@ -20825,7 +20993,7 @@ export default {};
20825
20993
  const relPath = pathname.slice(SRC_PREFIX.length);
20826
20994
  if (relPath === "bun:wrap" || relPath.startsWith("bun:wrap?"))
20827
20995
  return handleBunWrapRequest();
20828
- const virtualCssResponse = handleVirtualSvelteCss(resolve33(projectRoot, relPath));
20996
+ const virtualCssResponse = handleVirtualSvelteCss(resolve34(projectRoot, relPath));
20829
20997
  if (virtualCssResponse)
20830
20998
  return virtualCssResponse;
20831
20999
  const { filePath, ext } = resolveSourcePath(relPath, projectRoot);
@@ -20841,11 +21009,11 @@ export default {};
20841
21009
  SRC_IMPORT_RE.lastIndex = 0;
20842
21010
  while ((match = SRC_IMPORT_RE.exec(content)) !== null) {
20843
21011
  if (match[1])
20844
- files.push(resolve33(projectRoot, match[1]));
21012
+ files.push(resolve34(projectRoot, match[1]));
20845
21013
  }
20846
21014
  return files;
20847
21015
  }, invalidateModule = (filePath) => {
20848
- const resolved = resolve33(filePath);
21016
+ const resolved = resolve34(filePath);
20849
21017
  invalidate(filePath);
20850
21018
  if (resolved !== filePath)
20851
21019
  invalidate(resolved);
@@ -20990,7 +21158,7 @@ __export(exports_hmrCompiler, {
20990
21158
  getApplyMetadataModule: () => getApplyMetadataModule,
20991
21159
  encodeHmrComponentId: () => encodeHmrComponentId
20992
21160
  });
20993
- import { dirname as dirname20, relative as relative15, resolve as resolve34 } from "path";
21161
+ import { dirname as dirname20, relative as relative15, resolve as resolve35 } from "path";
20994
21162
  import { performance as performance2 } from "perf_hooks";
20995
21163
  var getApplyMetadataModule = async (encodedId) => {
20996
21164
  const decoded = decodeURIComponent(encodedId);
@@ -20999,7 +21167,7 @@ var getApplyMetadataModule = async (encodedId) => {
20999
21167
  return null;
21000
21168
  const filePathRel = decoded.slice(0, at2);
21001
21169
  const className = decoded.slice(at2 + 1);
21002
- const componentFilePath = resolve34(process.cwd(), filePathRel);
21170
+ const componentFilePath = resolve35(process.cwd(), filePathRel);
21003
21171
  const projectRelPath = relative15(process.cwd(), componentFilePath).replace(/\\/g, "/");
21004
21172
  const cacheKey2 = encodeURIComponent(`${projectRelPath}@${className}`);
21005
21173
  const { takePendingModule: takePendingModule2 } = await Promise.resolve().then(() => (init_fastHmrCompiler(), exports_fastHmrCompiler));
@@ -21161,11 +21329,11 @@ var exports_simpleHTMLHMR = {};
21161
21329
  __export(exports_simpleHTMLHMR, {
21162
21330
  handleHTMLUpdate: () => handleHTMLUpdate
21163
21331
  });
21164
- import { resolve as resolve35 } from "path";
21332
+ import { resolve as resolve36 } from "path";
21165
21333
  var handleHTMLUpdate = async (htmlFilePath) => {
21166
21334
  let htmlContent;
21167
21335
  try {
21168
- const resolvedPath = resolve35(htmlFilePath);
21336
+ const resolvedPath = resolve36(htmlFilePath);
21169
21337
  const file4 = Bun.file(resolvedPath);
21170
21338
  if (!await file4.exists()) {
21171
21339
  return null;
@@ -21191,11 +21359,11 @@ var exports_simpleHTMXHMR = {};
21191
21359
  __export(exports_simpleHTMXHMR, {
21192
21360
  handleHTMXUpdate: () => handleHTMXUpdate
21193
21361
  });
21194
- import { resolve as resolve36 } from "path";
21362
+ import { resolve as resolve37 } from "path";
21195
21363
  var handleHTMXUpdate = async (htmxFilePath) => {
21196
21364
  let htmlContent;
21197
21365
  try {
21198
- const resolvedPath = resolve36(htmxFilePath);
21366
+ const resolvedPath = resolve37(htmxFilePath);
21199
21367
  const file4 = Bun.file(resolvedPath);
21200
21368
  if (!await file4.exists()) {
21201
21369
  return null;
@@ -21218,7 +21386,7 @@ var init_simpleHTMXHMR = () => {};
21218
21386
 
21219
21387
  // src/dev/rebuildTrigger.ts
21220
21388
  import { existsSync as existsSync26 } from "fs";
21221
- import { basename as basename11, dirname as dirname21, relative as relative16, resolve as resolve37, sep as sep4 } from "path";
21389
+ import { basename as basename11, dirname as dirname21, relative as relative16, resolve as resolve38, sep as sep4 } from "path";
21222
21390
  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) => {
21223
21391
  if (!config.tailwind)
21224
21392
  return;
@@ -21229,7 +21397,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21229
21397
  if (!cssChanged)
21230
21398
  return;
21231
21399
  try {
21232
- const outputPath = resolve37(state.resolvedPaths.buildDir, config.tailwind.output);
21400
+ const outputPath = resolve38(state.resolvedPaths.buildDir, config.tailwind.output);
21233
21401
  const bytes = await Bun.file(outputPath).bytes();
21234
21402
  const webPath = `/${config.tailwind.output.replace(/^\/+/, "")}`;
21235
21403
  state.assetStore.set(webPath, bytes);
@@ -21316,7 +21484,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21316
21484
  state.fileHashes.delete(filePathInSet);
21317
21485
  try {
21318
21486
  const affectedFiles = getAffectedFiles(state.dependencyGraph, filePathInSet);
21319
- const deletedPathResolved = resolve37(filePathInSet);
21487
+ const deletedPathResolved = resolve38(filePathInSet);
21320
21488
  affectedFiles.forEach((affectedFile) => {
21321
21489
  if (isValidDeletedAffectedFile(affectedFile, deletedPathResolved, processedFiles)) {
21322
21490
  validFiles.push(affectedFile);
@@ -21360,7 +21528,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21360
21528
  if (storedHash !== undefined && storedHash === fileHash) {
21361
21529
  return;
21362
21530
  }
21363
- const normalizedFilePath = resolve37(filePathInSet);
21531
+ const normalizedFilePath = resolve38(filePathInSet);
21364
21532
  if (!processedFiles.has(normalizedFilePath)) {
21365
21533
  validFiles.push(normalizedFilePath);
21366
21534
  processedFiles.add(normalizedFilePath);
@@ -21492,8 +21660,44 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21492
21660
  if (!hasFileChanged(filePath, currentHash, state.fileHashes)) {
21493
21661
  return;
21494
21662
  }
21663
+ const publicDir = state.resolvedPaths.publicDir;
21664
+ const assetsDir = state.resolvedPaths.assetsDir;
21665
+ const handleStaticMirror = async (sourceDir, urlPrefix) => {
21666
+ const absSource = resolve38(filePath);
21667
+ const normalizedSource = absSource.replace(/\\/g, "/");
21668
+ const normalizedDir = sourceDir.replace(/\\/g, "/");
21669
+ if (!normalizedSource.startsWith(normalizedDir + "/"))
21670
+ return false;
21671
+ try {
21672
+ const relFromDir = normalizedSource.slice(normalizedDir.length + 1);
21673
+ const buildDir = state.resolvedPaths.buildDir;
21674
+ const destPath = resolve38(buildDir, urlPrefix ? `${urlPrefix}/${relFromDir}` : relFromDir);
21675
+ const { mkdir: mkdir7, copyFile, readFile: readFile6 } = await import("fs/promises");
21676
+ const { dirname: dirname22 } = await import("path");
21677
+ await mkdir7(dirname22(destPath), { recursive: true });
21678
+ await copyFile(absSource, destPath);
21679
+ const bytes = await readFile6(destPath);
21680
+ const webPath = urlPrefix ? `/${urlPrefix}/${relFromDir}` : `/${relFromDir}`;
21681
+ state.assetStore.set(webPath, new Uint8Array(bytes));
21682
+ state.fileHashes.set(absSource, currentHash);
21683
+ logHmrUpdate(relative16(process.cwd(), filePath));
21684
+ broadcastToClients(state, {
21685
+ data: {
21686
+ framework: urlPrefix || "public",
21687
+ manifest: state.manifest
21688
+ },
21689
+ message: `${urlPrefix || "Public"} asset updated`,
21690
+ type: "style-update"
21691
+ });
21692
+ } catch {}
21693
+ return true;
21694
+ };
21695
+ if (publicDir && await handleStaticMirror(publicDir, ""))
21696
+ return;
21697
+ if (assetsDir && await handleStaticMirror(assetsDir, "assets"))
21698
+ return;
21495
21699
  if (framework === "unknown") {
21496
- invalidate(resolve37(filePath));
21700
+ invalidate(resolve38(filePath));
21497
21701
  const relPath = relative16(process.cwd(), filePath);
21498
21702
  logHmrUpdate(relPath);
21499
21703
  const angularDir = state.resolvedPaths.angularDir;
@@ -21501,10 +21705,10 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21501
21705
  if (angularDir && state.dependencyGraph) {
21502
21706
  try {
21503
21707
  const { addFileToGraph: addFileToGraph2 } = await Promise.resolve().then(() => (init_dependencyGraph(), exports_dependencyGraph));
21504
- addFileToGraph2(state.dependencyGraph, resolve37(filePath));
21505
- const affected = getAffectedFiles(state.dependencyGraph, resolve37(filePath));
21708
+ addFileToGraph2(state.dependencyGraph, resolve38(filePath));
21709
+ const affected = getAffectedFiles(state.dependencyGraph, resolve38(filePath));
21506
21710
  for (const dependent of affected) {
21507
- if (dependent === resolve37(filePath))
21711
+ if (dependent === resolve38(filePath))
21508
21712
  continue;
21509
21713
  const dependentFramework = detectFramework(dependent, state.resolvedPaths);
21510
21714
  if (dependentFramework !== "angular")
@@ -21527,7 +21731,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21527
21731
  const { getFrameworkGeneratedDir: getFrameworkGeneratedDir2 } = await Promise.resolve().then(() => (init_generatedDir(), exports_generatedDir));
21528
21732
  const { invalidateModule: invalidateModuleServer } = await Promise.resolve().then(() => (init_moduleServer(), exports_moduleServer));
21529
21733
  const generatedAngularRoot = getFrameworkGeneratedDir2("angular");
21530
- const sourceAbs = resolve37(filePath).replace(/\\/g, "/");
21734
+ const sourceAbs = resolve38(filePath).replace(/\\/g, "/");
21531
21735
  const generatedTwin = `${generatedAngularRoot.replace(/\\/g, "/")}${sourceAbs.replace(/\.ts$/, ".js")}`;
21532
21736
  invalidateModuleServer(generatedTwin);
21533
21737
  } catch {}
@@ -21561,7 +21765,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21561
21765
  const userEditedFiles = new Set;
21562
21766
  state.fileChangeQueue.forEach((filePaths) => {
21563
21767
  for (const filePath2 of filePaths) {
21564
- userEditedFiles.add(resolve37(filePath2));
21768
+ userEditedFiles.add(resolve38(filePath2));
21565
21769
  }
21566
21770
  });
21567
21771
  state.lastUserEditedFiles = userEditedFiles;
@@ -21590,7 +21794,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21590
21794
  }
21591
21795
  if (!graph)
21592
21796
  return componentFile;
21593
- const dependents = graph.dependents.get(resolve37(componentFile));
21797
+ const dependents = graph.dependents.get(resolve38(componentFile));
21594
21798
  if (!dependents)
21595
21799
  return componentFile;
21596
21800
  for (const dep of dependents) {
@@ -21599,7 +21803,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21599
21803
  }
21600
21804
  return componentFile;
21601
21805
  }, resolveAngularPageEntries = (state, angularFiles, angularPagesPath) => {
21602
- const pageEntries = angularFiles.filter((file4) => file4.endsWith(".ts") && resolve37(file4).startsWith(angularPagesPath));
21806
+ const pageEntries = angularFiles.filter((file4) => file4.endsWith(".ts") && resolve38(file4).startsWith(angularPagesPath));
21603
21807
  if (pageEntries.length > 0 || !state.dependencyGraph) {
21604
21808
  return pageEntries;
21605
21809
  }
@@ -21608,7 +21812,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21608
21812
  const lookupFile = resolveComponentLookupFile(componentFile, state.dependencyGraph);
21609
21813
  const affected = getAffectedFiles(state.dependencyGraph, lookupFile);
21610
21814
  affected.forEach((file4) => {
21611
- if (file4.endsWith(".ts") && resolve37(file4).startsWith(angularPagesPath)) {
21815
+ if (file4.endsWith(".ts") && resolve38(file4).startsWith(angularPagesPath)) {
21612
21816
  resolvedPages.add(file4);
21613
21817
  }
21614
21818
  });
@@ -21730,8 +21934,8 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21730
21934
  if (detected !== "unknown")
21731
21935
  continue;
21732
21936
  try {
21733
- const affected = getAffectedFiles(state.dependencyGraph, resolve37(editedFile));
21734
- const hasAngularConsumer = affected.some((dep) => dep !== resolve37(editedFile) && detectFramework(dep, state.resolvedPaths) === "angular");
21937
+ const affected = getAffectedFiles(state.dependencyGraph, resolve38(editedFile));
21938
+ const hasAngularConsumer = affected.some((dep) => dep !== resolve38(editedFile) && detectFramework(dep, state.resolvedPaths) === "angular");
21735
21939
  if (hasAngularConsumer) {
21736
21940
  return {
21737
21941
  kind: "rebootstrap",
@@ -21776,9 +21980,9 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21776
21980
  tier: 1
21777
21981
  };
21778
21982
  }
21779
- if (owners.length === 0 && editedFile.endsWith(".ts") && !editedFile.endsWith(".d.ts")) {
21983
+ if (owners.length === 0 && (editedFile.endsWith(".ts") || editedFile.endsWith(".json")) && !editedFile.endsWith(".d.ts")) {
21780
21984
  const normalized = editedFile.replace(/\\/g, "/");
21781
- const angularDirAbs = resolve37(angularDir).replace(/\\/g, "/");
21985
+ const angularDirAbs = resolve38(angularDir).replace(/\\/g, "/");
21782
21986
  if (normalized.startsWith(angularDirAbs + "/")) {
21783
21987
  return {
21784
21988
  kind: "rebootstrap",
@@ -21922,16 +22126,16 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21922
22126
  };
21923
22127
  const fire = () => {
21924
22128
  ctx.debounceTimer = null;
21925
- const resolve38 = ctx.debouncedResolve;
22129
+ const resolve39 = ctx.debouncedResolve;
21926
22130
  ctx.debouncedResolve = null;
21927
22131
  ctx.debouncedPromise = null;
21928
22132
  if (ctx.inFlight) {
21929
22133
  ctx.pending = true;
21930
- ctx.inFlight.finally(() => resolve38?.());
22134
+ ctx.inFlight.finally(() => resolve39?.());
21931
22135
  return;
21932
22136
  }
21933
22137
  ctx.inFlight = drive();
21934
- ctx.inFlight.finally(() => resolve38?.());
22138
+ ctx.inFlight.finally(() => resolve39?.());
21935
22139
  };
21936
22140
  return ({ immediate = false } = {}) => {
21937
22141
  if (!ctx.debouncedPromise) {
@@ -21958,9 +22162,9 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21958
22162
  const diskRefreshPromise = (async () => {
21959
22163
  if (!angularDir || editedFiles.size === 0)
21960
22164
  return;
21961
- const angularDirAbs = resolve37(angularDir);
22165
+ const angularDirAbs = resolve38(angularDir);
21962
22166
  const filesUnderAngular = Array.from(editedFiles).filter((file4) => {
21963
- const abs = resolve37(file4);
22167
+ const abs = resolve38(file4);
21964
22168
  return abs === angularDirAbs || abs.startsWith(angularDirAbs + sep4);
21965
22169
  });
21966
22170
  if (filesUnderAngular.length === 0)
@@ -21982,7 +22186,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21982
22186
  if (!ext)
21983
22187
  continue;
21984
22188
  if (ext === ".ts" || ext === ".tsx") {
21985
- tsFilesToRefresh.add(resolve37(file4));
22189
+ tsFilesToRefresh.add(resolve38(file4));
21986
22190
  continue;
21987
22191
  }
21988
22192
  const owners = resolveOwningComponents2({
@@ -21990,7 +22194,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
21990
22194
  userAngularRoot: angularDirAbs
21991
22195
  });
21992
22196
  for (const owner of owners) {
21993
- tsFilesToRefresh.add(resolve37(owner.componentFilePath));
22197
+ tsFilesToRefresh.add(resolve38(owner.componentFilePath));
21994
22198
  }
21995
22199
  }
21996
22200
  if (tsFilesToRefresh.size === 0)
@@ -22002,7 +22206,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22002
22206
  const { invalidateModule: invalidateModule2 } = await Promise.resolve().then(() => (init_moduleServer(), exports_moduleServer));
22003
22207
  for (const tsFile of tsFilesToRefresh) {
22004
22208
  const rel = relative16(angularDirAbs, tsFile).replace(/\\/g, "/").replace(/\.[tj]sx?$/, ".js");
22005
- const compiledFile = resolve37(compiledRoot, rel);
22209
+ const compiledFile = resolve38(compiledRoot, rel);
22006
22210
  invalidateModule2(compiledFile);
22007
22211
  }
22008
22212
  } catch {}
@@ -22053,7 +22257,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22053
22257
  serverPaths.forEach((serverPath, idx) => {
22054
22258
  const fileBase = basename11(serverPath, ".js");
22055
22259
  const ssrPath = ssrPaths[idx] ?? serverPath;
22056
- state.manifest[toPascal(fileBase)] = resolve37(ssrPath);
22260
+ state.manifest[toPascal(fileBase)] = resolve38(ssrPath);
22057
22261
  });
22058
22262
  if (clientPaths.length > 0) {
22059
22263
  await bundleAngularClient(state, clientPaths, state.resolvedPaths.buildDir, angularDir);
@@ -22062,9 +22266,9 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22062
22266
  const angularDir = config.angularDirectory ?? "";
22063
22267
  const angularFiles = filesToRebuild.filter((file4) => detectFramework(file4, state.resolvedPaths) === "angular");
22064
22268
  for (const file4 of angularFiles) {
22065
- state.fileHashes.set(resolve37(file4), computeFileHash(file4));
22269
+ state.fileHashes.set(resolve38(file4), computeFileHash(file4));
22066
22270
  }
22067
- const angularPagesPath = resolve37(angularDir, "pages");
22271
+ const angularPagesPath = resolve38(angularDir, "pages");
22068
22272
  const pageEntries = resolveAngularPageEntries(state, angularFiles, angularPagesPath);
22069
22273
  const tierStart = performance.now();
22070
22274
  const verdict = await decideAngularTier(state, angularDir);
@@ -22103,11 +22307,11 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22103
22307
  if (isComponentFile2)
22104
22308
  return primaryFile;
22105
22309
  const { findNearestComponent: findNearestComponent2 } = await Promise.resolve().then(() => (init_transformCache(), exports_transformCache));
22106
- const nearest = findNearestComponent2(resolve37(primaryFile));
22310
+ const nearest = findNearestComponent2(resolve38(primaryFile));
22107
22311
  return nearest ?? primaryFile;
22108
22312
  }, handleReactModuleServerPath = async (state, reactFiles, startTime, onRebuildComplete) => {
22109
22313
  for (const file4 of reactFiles) {
22110
- state.fileHashes.set(resolve37(file4), computeFileHash(file4));
22314
+ state.fileHashes.set(resolve38(file4), computeFileHash(file4));
22111
22315
  }
22112
22316
  markSsrCacheDirty("react");
22113
22317
  const primaryFile = reactFiles.find((file4) => !file4.replace(/\\/g, "/").includes("/pages/")) ?? reactFiles[0];
@@ -22189,7 +22393,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22189
22393
  });
22190
22394
  }, handleSvelteModuleServerPath = async (state, svelteFiles, startTime, onRebuildComplete) => {
22191
22395
  for (const file4 of svelteFiles) {
22192
- state.fileHashes.set(resolve37(file4), computeFileHash(file4));
22396
+ state.fileHashes.set(resolve38(file4), computeFileHash(file4));
22193
22397
  }
22194
22398
  markSsrCacheDirty("svelte");
22195
22399
  const serverDuration = Date.now() - startTime;
@@ -22214,8 +22418,8 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22214
22418
  const serverEntries = [...svelteServerPaths];
22215
22419
  const clientEntries = [...svelteIndexPaths, ...svelteClientPaths];
22216
22420
  const { getFrameworkGeneratedDir: getFrameworkGeneratedDir2 } = await Promise.resolve().then(() => (init_generatedDir(), exports_generatedDir));
22217
- const serverRoot = resolve37(getFrameworkGeneratedDir2("svelte"), "server");
22218
- const serverOutDir = resolve37(buildDir, basename11(svelteDir));
22421
+ const serverRoot = resolve38(getFrameworkGeneratedDir2("svelte"), "server");
22422
+ const serverOutDir = resolve38(buildDir, basename11(svelteDir));
22219
22423
  const [serverResult, clientResult] = await Promise.all([
22220
22424
  serverEntries.length > 0 ? bunBuild9({
22221
22425
  entrypoints: serverEntries,
@@ -22312,7 +22516,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22312
22516
  });
22313
22517
  }, handleVueModuleServerPath = async (state, vueFiles, nonVueFiles, startTime, onRebuildComplete) => {
22314
22518
  for (const file4 of [...vueFiles, ...nonVueFiles]) {
22315
- state.fileHashes.set(resolve37(file4), computeFileHash(file4));
22519
+ state.fileHashes.set(resolve38(file4), computeFileHash(file4));
22316
22520
  }
22317
22521
  markSsrCacheDirty("vue");
22318
22522
  await invalidateNonVueModules(nonVueFiles);
@@ -22340,7 +22544,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22340
22544
  recursive: true,
22341
22545
  withFileTypes: true
22342
22546
  });
22343
- return entries.filter((entry) => entry.isFile() && EMBER_PAGE_EXTENSIONS.some((ext) => entry.name.endsWith(ext))).map((entry) => resolve37(emberPagesPath, entry.name));
22547
+ return entries.filter((entry) => entry.isFile() && EMBER_PAGE_EXTENSIONS.some((ext) => entry.name.endsWith(ext))).map((entry) => resolve38(emberPagesPath, entry.name));
22344
22548
  } catch {
22345
22549
  return [];
22346
22550
  }
@@ -22352,10 +22556,10 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22352
22556
  return state.manifest;
22353
22557
  }
22354
22558
  for (const file4 of emberFiles) {
22355
- state.fileHashes.set(resolve37(file4), computeFileHash(file4));
22559
+ state.fileHashes.set(resolve38(file4), computeFileHash(file4));
22356
22560
  }
22357
- const emberPagesPath = resolve37(emberDir, "pages");
22358
- const directPageEntries = emberFiles.filter((file4) => resolve37(file4).startsWith(emberPagesPath));
22561
+ const emberPagesPath = resolve38(emberDir, "pages");
22562
+ const directPageEntries = emberFiles.filter((file4) => resolve38(file4).startsWith(emberPagesPath));
22359
22563
  const allPageEntries = directPageEntries.length > 0 ? directPageEntries : await collectAllEmberPages(emberPagesPath);
22360
22564
  if (allPageEntries.length === 0) {
22361
22565
  onRebuildComplete({ hmrState: state, manifest: state.manifest });
@@ -22365,7 +22569,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22365
22569
  const { serverPaths } = await compileEmber2(allPageEntries, emberDir, process.cwd(), true);
22366
22570
  for (const serverPath of serverPaths) {
22367
22571
  const fileBase = basename11(serverPath, ".js");
22368
- state.manifest[toPascal(fileBase)] = resolve37(serverPath);
22572
+ state.manifest[toPascal(fileBase)] = resolve38(serverPath);
22369
22573
  }
22370
22574
  const { invalidateEmberSsrCache: invalidateEmberSsrCache2 } = await Promise.resolve().then(() => (init_ember(), exports_ember));
22371
22575
  invalidateEmberSsrCache2();
@@ -22457,8 +22661,8 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22457
22661
  if (!buildReference?.source) {
22458
22662
  return;
22459
22663
  }
22460
- const sourcePath = buildReference.source.startsWith("file://") ? new URL(buildReference.source).pathname : resolve37(dirname21(buildInfo.resolvedRegistryPath), buildReference.source);
22461
- islandFiles.add(resolve37(sourcePath));
22664
+ const sourcePath = buildReference.source.startsWith("file://") ? new URL(buildReference.source).pathname : resolve38(dirname21(buildInfo.resolvedRegistryPath), buildReference.source);
22665
+ islandFiles.add(resolve38(sourcePath));
22462
22666
  }, resolveIslandSourceFiles = async (config) => {
22463
22667
  const registryPath = config.islands?.registry;
22464
22668
  if (!registryPath) {
@@ -22466,7 +22670,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22466
22670
  }
22467
22671
  const buildInfo = await loadIslandRegistryBuildInfo(registryPath);
22468
22672
  const islandFiles = new Set([
22469
- resolve37(buildInfo.resolvedRegistryPath)
22673
+ resolve38(buildInfo.resolvedRegistryPath)
22470
22674
  ]);
22471
22675
  for (const definition of buildInfo.definitions) {
22472
22676
  resolveIslandDefinitionSource(definition, buildInfo, islandFiles);
@@ -22477,7 +22681,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22477
22681
  if (islandFiles.size === 0) {
22478
22682
  return false;
22479
22683
  }
22480
- return filesToRebuild.some((file4) => islandFiles.has(resolve37(file4)));
22684
+ return filesToRebuild.some((file4) => islandFiles.has(resolve38(file4)));
22481
22685
  }, handleIslandSourceReload = async (state, config, filesToRebuild, manifest) => {
22482
22686
  const shouldReload = await didStaticPagesNeedIslandRefresh(config, filesToRebuild);
22483
22687
  if (!shouldReload) {
@@ -22512,10 +22716,10 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22512
22716
  }, computeOutputPagesDir = (state, config, framework) => {
22513
22717
  const isSingle = !config.reactDirectory && !config.svelteDirectory && !config.vueDirectory && (framework === "html" ? !config.htmxDirectory : !config.htmlDirectory);
22514
22718
  if (isSingle) {
22515
- return resolve37(state.resolvedPaths.buildDir, "pages");
22719
+ return resolve38(state.resolvedPaths.buildDir, "pages");
22516
22720
  }
22517
22721
  const dirName = framework === "html" ? basename11(config.htmlDirectory ?? "html") : basename11(config.htmxDirectory ?? "htmx");
22518
- return resolve37(state.resolvedPaths.buildDir, dirName, "pages");
22722
+ return resolve38(state.resolvedPaths.buildDir, dirName, "pages");
22519
22723
  }, processHtmlPageUpdate = async (state, pageFile, builtHtmlPagePath, manifest, duration) => {
22520
22724
  try {
22521
22725
  const { handleHTMLUpdate: handleHTMLUpdate2 } = await Promise.resolve().then(() => (init_simpleHTMLHMR(), exports_simpleHTMLHMR));
@@ -22554,7 +22758,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22554
22758
  const pageFilesToUpdate = shouldRefreshAllPages ? await scanEntryPoints(outputHtmlPages, "*.html") : htmlPageFiles;
22555
22759
  await runSequentially(pageFilesToUpdate, async (pageFile) => {
22556
22760
  const htmlPageName = basename11(pageFile);
22557
- const builtHtmlPagePath = resolve37(outputHtmlPages, htmlPageName);
22761
+ const builtHtmlPagePath = resolve38(outputHtmlPages, htmlPageName);
22558
22762
  await processHtmlPageUpdate(state, pageFile, builtHtmlPagePath, manifest, duration);
22559
22763
  });
22560
22764
  }, handleVueCssOnlyUpdate = (state, vueCssFiles, manifest, duration) => {
@@ -22619,7 +22823,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22619
22823
  const cssKey = `${pascalName}CSS`;
22620
22824
  const cssUrl = manifest[cssKey] || null;
22621
22825
  const { vueHmrMetadata: vueHmrMetadata2 } = await Promise.resolve().then(() => (init_compileVue(), exports_compileVue));
22622
- const hmrMeta = vueHmrMetadata2.get(resolve37(vuePagePath));
22826
+ const hmrMeta = vueHmrMetadata2.get(resolve38(vuePagePath));
22623
22827
  const changeType = hmrMeta?.changeType ?? "full";
22624
22828
  if (changeType === "style-only") {
22625
22829
  broadcastVueStyleOnly(state, vuePagePath, baseName, cssUrl, hmrId, manifest, duration);
@@ -22804,7 +23008,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22804
23008
  const pageFilesToUpdate = shouldRefreshAllPages ? await scanEntryPoints(outputHtmxPages, "*.html") : htmxPageFiles;
22805
23009
  await runSequentially(pageFilesToUpdate, async (htmxPageFile) => {
22806
23010
  const htmxPageName = basename11(htmxPageFile);
22807
- const builtHtmxPagePath = resolve37(outputHtmxPages, htmxPageName);
23011
+ const builtHtmxPagePath = resolve38(outputHtmxPages, htmxPageName);
22808
23012
  await processHtmxPageUpdate(state, htmxPageFile, builtHtmxPagePath, manifest, duration);
22809
23013
  });
22810
23014
  }, collectUpdatedModulePaths = (allModuleUpdates) => {
@@ -22913,7 +23117,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, runSequent
22913
23117
  html = html.slice(0, bodyClose.index) + hmrScript + html.slice(bodyClose.index);
22914
23118
  writeFs(destPath, html);
22915
23119
  }, processMarkupFileFastPath = async (state, sourceFile, outputDir, framework, startTime, updateAssetPaths2, handleUpdate, readFs, writeFs) => {
22916
- const destPath = resolve37(outputDir, basename11(sourceFile));
23120
+ const destPath = resolve38(outputDir, basename11(sourceFile));
22917
23121
  const hmrScript = extractHmrScript(destPath, readFs);
22918
23122
  const source = await Bun.file(sourceFile).text();
22919
23123
  await Bun.write(destPath, source);
@@ -23481,7 +23685,7 @@ __export(exports_devBuild, {
23481
23685
  });
23482
23686
  import { readdir as readdir5 } from "fs/promises";
23483
23687
  import { statSync as statSync5 } from "fs";
23484
- import { resolve as resolve38 } from "path";
23688
+ import { resolve as resolve39 } from "path";
23485
23689
  var FRAMEWORK_DIR_KEYS, collectDepVendorSourceDirs = (config) => {
23486
23690
  const configuredDirs = [
23487
23691
  config.reactDirectory,
@@ -23504,7 +23708,7 @@ var FRAMEWORK_DIR_KEYS, collectDepVendorSourceDirs = (config) => {
23504
23708
  return Object.keys(config).length > 0 ? config : null;
23505
23709
  }, reloadConfig = async () => {
23506
23710
  try {
23507
- const configPath2 = resolve38(process.env.ABSOLUTE_CONFIG ?? "absolute.config.ts");
23711
+ const configPath2 = resolve39(process.env.ABSOLUTE_CONFIG ?? "absolute.config.ts");
23508
23712
  const source = await Bun.file(configPath2).text();
23509
23713
  return parseDirectoryConfig(source);
23510
23714
  } catch {
@@ -23589,7 +23793,7 @@ var FRAMEWORK_DIR_KEYS, collectDepVendorSourceDirs = (config) => {
23589
23793
  state.fileChangeQueue.clear();
23590
23794
  }
23591
23795
  }, handleCachedReload = async () => {
23592
- const serverMtime = statSync5(resolve38(Bun.main)).mtimeMs;
23796
+ const serverMtime = statSync5(resolve39(Bun.main)).mtimeMs;
23593
23797
  const lastMtime = globalThis.__hmrServerMtime;
23594
23798
  globalThis.__hmrServerMtime = serverMtime;
23595
23799
  const cached = globalThis.__hmrDevResult;
@@ -23626,8 +23830,8 @@ var FRAMEWORK_DIR_KEYS, collectDepVendorSourceDirs = (config) => {
23626
23830
  return true;
23627
23831
  }, resolveAbsoluteVersion2 = async () => {
23628
23832
  const candidates = [
23629
- resolve38(import.meta.dir, "..", "..", "package.json"),
23630
- resolve38(import.meta.dir, "..", "package.json")
23833
+ resolve39(import.meta.dir, "..", "..", "package.json"),
23834
+ resolve39(import.meta.dir, "..", "package.json")
23631
23835
  ];
23632
23836
  const [candidate, ...remaining] = candidates;
23633
23837
  if (!candidate) {
@@ -23653,7 +23857,7 @@ var FRAMEWORK_DIR_KEYS, collectDepVendorSourceDirs = (config) => {
23653
23857
  const entries = await readdir5(vendorDir).catch(() => emptyStringArray);
23654
23858
  await Promise.all(entries.filter((entry) => entry.endsWith(".js")).map(async (entry) => {
23655
23859
  const webPath = `/${framework}/vendor/${entry}`;
23656
- const bytes = await Bun.file(resolve38(vendorDir, entry)).bytes();
23860
+ const bytes = await Bun.file(resolve39(vendorDir, entry)).bytes();
23657
23861
  assetStore.set(webPath, bytes);
23658
23862
  }));
23659
23863
  }, devBuild = async (config) => {
@@ -23721,11 +23925,11 @@ var FRAMEWORK_DIR_KEYS, collectDepVendorSourceDirs = (config) => {
23721
23925
  cleanStaleAssets(state.assetStore, manifest, state.resolvedPaths.buildDir);
23722
23926
  recordStep("populate asset store", stepStartedAt);
23723
23927
  stepStartedAt = performance.now();
23724
- const reactVendorDir = resolve38(state.resolvedPaths.buildDir, "react", "vendor");
23725
- const angularVendorDir = resolve38(state.resolvedPaths.buildDir, "angular", "vendor");
23726
- const svelteVendorDir = resolve38(state.resolvedPaths.buildDir, "svelte", "vendor");
23727
- const vueVendorDir = resolve38(state.resolvedPaths.buildDir, "vue", "vendor");
23728
- const depVendorDir = resolve38(state.resolvedPaths.buildDir, "vendor");
23928
+ const reactVendorDir = resolve39(state.resolvedPaths.buildDir, "react", "vendor");
23929
+ const angularVendorDir = resolve39(state.resolvedPaths.buildDir, "angular", "vendor");
23930
+ const svelteVendorDir = resolve39(state.resolvedPaths.buildDir, "svelte", "vendor");
23931
+ const vueVendorDir = resolve39(state.resolvedPaths.buildDir, "vue", "vendor");
23932
+ const depVendorDir = resolve39(state.resolvedPaths.buildDir, "vendor");
23729
23933
  const { buildDepVendor: buildDepVendor2 } = await Promise.resolve().then(() => (init_buildDepVendor(), exports_buildDepVendor));
23730
23934
  const [, angularSpecs, , , , , depPaths] = await Promise.all([
23731
23935
  config.reactDirectory ? buildReactVendor(state.resolvedPaths.buildDir) : Promise.resolve(undefined),
@@ -23803,7 +24007,7 @@ var FRAMEWORK_DIR_KEYS, collectDepVendorSourceDirs = (config) => {
23803
24007
  manifest
23804
24008
  };
23805
24009
  globalThis.__hmrDevResult = result;
23806
- globalThis.__hmrServerMtime = statSync5(resolve38(Bun.main)).mtimeMs;
24010
+ globalThis.__hmrServerMtime = statSync5(resolve39(Bun.main)).mtimeMs;
23807
24011
  return result;
23808
24012
  };
23809
24013
  var init_devBuild = __esm(() => {
@@ -23840,5 +24044,5 @@ export {
23840
24044
  build
23841
24045
  };
23842
24046
 
23843
- //# debugId=8684D1812337845164756E2164756E21
24047
+ //# debugId=23D5B57CAFDE1D0564756E2164756E21
23844
24048
  //# sourceMappingURL=build.js.map