@absolutejs/absolute 0.19.0-beta.1071 → 0.19.0-beta.1073

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.
Files changed (37) hide show
  1. package/dist/angular/browser.js +2 -2
  2. package/dist/angular/browser.js.map +3 -3
  3. package/dist/angular/components/constants.js +10 -0
  4. package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
  5. package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
  6. package/dist/angular/index.js +56 -3
  7. package/dist/angular/index.js.map +4 -4
  8. package/dist/angular/server.js +56 -3
  9. package/dist/angular/server.js.map +4 -4
  10. package/dist/build.js +56 -3
  11. package/dist/build.js.map +4 -4
  12. package/dist/cli/index.js +73 -19
  13. package/dist/index.js +65 -3
  14. package/dist/index.js.map +5 -5
  15. package/dist/islands/index.js +2 -2
  16. package/dist/islands/index.js.map +3 -3
  17. package/dist/react/components/index.js +2 -2
  18. package/dist/react/components/index.js.map +3 -3
  19. package/dist/react/index.js +2 -2
  20. package/dist/react/index.js.map +3 -3
  21. package/dist/react/server.js +2 -2
  22. package/dist/react/server.js.map +3 -3
  23. package/dist/src/angular/components/constants.d.ts +1 -0
  24. package/dist/src/constants.d.ts +1 -0
  25. package/dist/svelte/index.js +2 -2
  26. package/dist/svelte/index.js.map +3 -3
  27. package/dist/svelte/server.js +2 -2
  28. package/dist/svelte/server.js.map +3 -3
  29. package/dist/vue/components/Image.js +2 -2
  30. package/dist/vue/components/Image.js.map +3 -3
  31. package/dist/vue/components/index.js +2 -2
  32. package/dist/vue/components/index.js.map +3 -3
  33. package/dist/vue/index.js +2 -2
  34. package/dist/vue/index.js.map +3 -3
  35. package/dist/vue/server.js +2 -2
  36. package/dist/vue/server.js.map +3 -3
  37. package/package.json +1 -1
package/dist/cli/index.js CHANGED
@@ -48,7 +48,7 @@ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
48
48
  var __require = import.meta.require;
49
49
 
50
50
  // src/constants.ts
51
- var ANSI_ESCAPE_CODE = 27, ANSI_ESCAPE_LENGTH = 3, ASCII_SPACE = 32, BASE_36_RADIX = 36, BYTES_PER_KILOBYTE = 1024, CLI_ARGS_OFFSET = 3, DEFAULT_PORT = 3000, EXCLUDE_LAST_OFFSET = -1, HTTP_STATUS_OK = 200, HOURS_IN_DAY = 24, HOURS_IN_HALF_DAY = 12, INSTANCE_PROBE_TIMEOUT_MS = 250, MAX_ERROR_LENGTH = 200, MILLISECONDS_IN_A_SECOND = 1000, MINUTES_IN_AN_HOUR = 60, SECONDS_IN_A_MINUTE = 60, MILLISECONDS_IN_A_MINUTE, MILLISECONDS_IN_A_DAY, LIST_LOG_TAIL_MAX_BYTES = 65536, LIST_TUI_COLUMN_GAP = 2, LIST_TUI_DEFAULT_HEIGHT = 28, LIST_TUI_DEFAULT_WIDTH = 100, LIST_TUI_ESCAPE_SEQUENCE_TIMEOUT_MS = 30, LIST_TUI_FOOTER_LINE_COUNT = 2, LIST_TUI_MARKER_WIDTH = 2, LIST_TUI_MIN_LOG_HEIGHT = 3, LIST_TUI_MIN_URL_WIDTH = 16, LIST_TUI_RENDER_DEBOUNCE_MS = 16, LIST_TUI_STATUS_MESSAGE_TIMEOUT_MS = 4000, LIST_WATCH_REFRESH_MS = 1000, SIGINT_EXIT_CODE = 130, SIGTERM_EXIT_CODE = 143, TIME_PRECISION = 2, TWO_THIRDS, UNFOUND_INDEX = -1, WORKSPACE_COMMAND_ARGS_OFFSET = 3, WORKSPACE_FAILURE_LOG_PRINT_LIMIT = 30, WORKSPACE_FAILURE_RECENT_LOG_LIMIT = 60, WORKSPACE_READY_ATTEMPT_TIMEOUT_MS = 5000, WORKSPACE_READY_PROBE_INTERVAL_MS = 250, WORKSPACE_READY_TIMEOUT_MS = 30000, WORKSPACE_SHUTDOWN_TIMEOUT_MS = 1e4, WORKSPACE_TUI_DEFAULT_HEIGHT = 28, WORKSPACE_TUI_DEFAULT_WIDTH = 100, WORKSPACE_TUI_ESCAPE_SEQUENCE_TIMEOUT_MS = 30, WORKSPACE_TUI_FOOTER_LINE_COUNT = 3, WORKSPACE_TUI_MIN_LOG_HEIGHT = 3, WORKSPACE_TUI_MIN_SERVICE_NAME_WIDTH = 7, WORKSPACE_TUI_MIN_TARGET_WIDTH = 8, WORKSPACE_TUI_MIN_WRAP_WIDTH = 12, WORKSPACE_TUI_PROMPT_CURSOR_OFFSET = 3, WORKSPACE_TUI_RECENT_LOG_LIMIT = 40, WORKSPACE_TUI_RENDER_DEBOUNCE_MS = 16, WORKSPACE_TUI_STATUS_WIDTH = 10, WORKSPACE_TUI_TARGET_PADDING_WIDTH = 6, WORKSPACE_TUI_VISIBILITY_WIDTH = 8;
51
+ var ANSI_ESCAPE_CODE = 27, ANSI_ESCAPE_LENGTH = 3, ASCII_SPACE = 32, BASE_36_RADIX = 36, BYTES_PER_KILOBYTE = 1024, CLI_ARGS_OFFSET = 3, DEFAULT_PORT = 3000, EXCLUDE_LAST_OFFSET = -1, HTTP_STATUS_OK = 200, HOURS_IN_DAY = 24, HOURS_IN_HALF_DAY = 12, INSTANCE_PROBE_TIMEOUT_MS = 250, MAX_ERROR_LENGTH = 200, MILLISECONDS_IN_A_SECOND = 1000, MINUTES_IN_AN_HOUR = 60, SECONDS_IN_A_MINUTE = 60, MILLISECONDS_IN_A_MINUTE, MILLISECONDS_IN_A_DAY, LIST_LOG_TAIL_MAX_BYTES = 65536, LIST_TUI_COLUMN_GAP = 2, LIST_TUI_DEFAULT_HEIGHT = 28, LIST_TUI_DEFAULT_WIDTH = 100, LIST_TUI_ESCAPE_SEQUENCE_TIMEOUT_MS = 30, LIST_TUI_FOOTER_LINE_COUNT = 2, LIST_TUI_MARKER_WIDTH = 2, LIST_TUI_MIN_LOG_HEIGHT = 3, LIST_TUI_MIN_URL_WIDTH = 16, LIST_TUI_RENDER_DEBOUNCE_MS = 16, LIST_TUI_STATUS_MESSAGE_TIMEOUT_MS = 4000, LIST_WATCH_REFRESH_MS = 1000, SIGINT_EXIT_CODE = 130, SIGTERM_EXIT_CODE = 143, TIME_PRECISION = 2, TWO_THIRDS, UNFOUND_INDEX = -1, DEFAULT_WEBSOCKET_IDLE_TIMEOUT_SECONDS = 240, WORKSPACE_COMMAND_ARGS_OFFSET = 3, WORKSPACE_FAILURE_LOG_PRINT_LIMIT = 30, WORKSPACE_FAILURE_RECENT_LOG_LIMIT = 60, WORKSPACE_READY_ATTEMPT_TIMEOUT_MS = 5000, WORKSPACE_READY_PROBE_INTERVAL_MS = 250, WORKSPACE_READY_TIMEOUT_MS = 30000, WORKSPACE_SHUTDOWN_TIMEOUT_MS = 1e4, WORKSPACE_TUI_DEFAULT_HEIGHT = 28, WORKSPACE_TUI_DEFAULT_WIDTH = 100, WORKSPACE_TUI_ESCAPE_SEQUENCE_TIMEOUT_MS = 30, WORKSPACE_TUI_FOOTER_LINE_COUNT = 3, WORKSPACE_TUI_MIN_LOG_HEIGHT = 3, WORKSPACE_TUI_MIN_SERVICE_NAME_WIDTH = 7, WORKSPACE_TUI_MIN_TARGET_WIDTH = 8, WORKSPACE_TUI_MIN_WRAP_WIDTH = 12, WORKSPACE_TUI_PROMPT_CURSOR_OFFSET = 3, WORKSPACE_TUI_RECENT_LOG_LIMIT = 40, WORKSPACE_TUI_RENDER_DEBOUNCE_MS = 16, WORKSPACE_TUI_STATUS_WIDTH = 10, WORKSPACE_TUI_TARGET_PADDING_WIDTH = 6, WORKSPACE_TUI_VISIBILITY_WIDTH = 8;
52
52
  var init_constants = __esm(() => {
53
53
  MILLISECONDS_IN_A_MINUTE = MILLISECONDS_IN_A_SECOND * SECONDS_IN_A_MINUTE;
54
54
  MILLISECONDS_IN_A_DAY = MILLISECONDS_IN_A_SECOND * SECONDS_IN_A_MINUTE * MINUTES_IN_AN_HOUR * HOURS_IN_DAY;
@@ -177314,7 +177314,20 @@ const server = Bun.serve({
177314
177314
  // Registering Elysia's WebSocket dispatcher here (plus assigning app.server in
177315
177315
  // resolveRuntimeFetch) is what makes .ws() routes work in a compiled server \u2014
177316
177316
  // without it, every upgrade request falls through to the 404 below.
177317
- websocket: elysiaWebsocket,
177317
+ //
177318
+ // idleTimeout + sendPings keep long-lived sockets (voice intake, referee,
177319
+ // realtime sync) alive through greeting playback / silent listening. The
177320
+ // compiled runtime builds its own Bun.serve and never reads the app's
177321
+ // config.websocket, so without these a quiet caller was killed at Bun's small
177322
+ // fallback (~60s) with INACTIVE_CLIENT. sendPings (Bun default, explicit here)
177323
+ // is protocol-level keepalive the browser answers without JS \u2014 so a throttled
177324
+ // background tab still responds. elysiaWebsocket has no idleTimeout/sendPings,
177325
+ // so spreading it last keeps the dispatcher without clobbering these.
177326
+ websocket: {
177327
+ idleTimeout: ${DEFAULT_WEBSOCKET_IDLE_TIMEOUT_SECONDS},
177328
+ sendPings: true,
177329
+ ...elysiaWebsocket
177330
+ },
177318
177331
  async fetch(request) {
177319
177332
  const url = new URL(request.url);
177320
177333
 
@@ -178649,6 +178662,7 @@ var resolveDevPort = async (requestedPort, options = {}) => {
178649
178662
  init_utils();
178650
178663
  var cliTag = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[cli]\x1B[0m ${color}${message}\x1B[0m`;
178651
178664
  var DEFAULT_PORT_RANGE = 10;
178665
+ var RESTART_PARK_POLL_MS = 20;
178652
178666
  var NODE_API_IMPORT_ERROR = "To load Node-API modules, use require() or process.dlopen instead of import.";
178653
178667
  var formatServerBootDiagnostic = (output, serverEntry) => {
178654
178668
  if (!output.includes(NODE_API_IMPORT_ERROR))
@@ -179000,17 +179014,30 @@ var dev = async (serverEntry, configPath2) => {
179000
179014
  let serverProcess = await spawnServer();
179001
179015
  const sessionStart = Date.now();
179002
179016
  let serverRestartPending = false;
179017
+ let serverRestartQueued = false;
179018
+ const runServerRestart = async () => {
179019
+ serverRestartQueued = false;
179020
+ try {
179021
+ await restartServer();
179022
+ } catch (err) {
179023
+ console.error(cliTag("\x1B[31m", `Restart failed: ${err}`));
179024
+ }
179025
+ if (serverRestartQueued) {
179026
+ await runServerRestart();
179027
+ return;
179028
+ }
179029
+ serverRestartPending = false;
179030
+ };
179003
179031
  const scheduleServerRestart = (filePath) => {
179004
- if (serverRestartPending)
179032
+ if (serverRestartPending) {
179033
+ serverRestartQueued = true;
179005
179034
  return;
179035
+ }
179006
179036
  serverRestartPending = true;
179007
179037
  const relPath = filePath.startsWith(process.cwd()) ? filePath.slice(process.cwd().length + 1) : filePath;
179008
179038
  console.log(cliTag("\x1B[36m", `Server file changed: ${relPath} \u2014 restarting...`));
179009
179039
  setTimeout(() => {
179010
- serverRestartPending = false;
179011
- restartServer().catch((err) => {
179012
- console.error(cliTag("\x1B[31m", `Restart failed: ${err}`));
179013
- });
179040
+ runServerRestart();
179014
179041
  }, 80);
179015
179042
  };
179016
179043
  try {
@@ -179112,8 +179139,8 @@ var dev = async (serverEntry, configPath2) => {
179112
179139
  } catch {}
179113
179140
  updateInstance(instancePid, { frameworks });
179114
179141
  sendTelemetryEvent("dev:start", { entry: serverEntry, frameworks });
179115
- const killChildTree = (signal) => {
179116
- const childPid = serverProcess.pid;
179142
+ const signalChildTree = (proc, signal) => {
179143
+ const childPid = proc.pid;
179117
179144
  if (typeof childPid !== "number")
179118
179145
  return;
179119
179146
  try {
@@ -179124,6 +179151,28 @@ var dev = async (serverEntry, configPath2) => {
179124
179151
  process.kill(childPid, signal);
179125
179152
  } catch {}
179126
179153
  };
179154
+ const killChildTree = (signal) => signalChildTree(serverProcess, signal);
179155
+ const FORCE_KILL_GRACE_MS = 2 * MILLISECONDS_IN_A_SECOND;
179156
+ const terminateChild = (proc) => new Promise((res) => {
179157
+ if (proc.exitCode !== null || typeof proc.pid !== "number") {
179158
+ res();
179159
+ return;
179160
+ }
179161
+ let settled = false;
179162
+ const finish = () => {
179163
+ if (settled)
179164
+ return;
179165
+ settled = true;
179166
+ clearTimeout(killTimer);
179167
+ res();
179168
+ };
179169
+ proc.once("exit", finish);
179170
+ signalChildTree(proc, "SIGTERM");
179171
+ const killTimer = setTimeout(() => {
179172
+ signalChildTree(proc, "SIGKILL");
179173
+ }, FORCE_KILL_GRACE_MS);
179174
+ killTimer.unref();
179175
+ });
179127
179176
  const cleanup = async (exitCode = 0) => {
179128
179177
  if (cleaning)
179129
179178
  return;
@@ -179157,6 +179206,7 @@ var dev = async (serverEntry, configPath2) => {
179157
179206
  removeHeapPreload();
179158
179207
  process.exit(exitCode);
179159
179208
  };
179209
+ let intentionalRestart = false;
179160
179210
  const restartServer = async () => {
179161
179211
  serverReady = false;
179162
179212
  console.log(cliTag("\x1B[36m", "Restarting server..."));
@@ -179166,17 +179216,10 @@ var dev = async (serverEntry, configPath2) => {
179166
179216
  sendSignal("SIGCONT");
179167
179217
  paused = false;
179168
179218
  }
179169
- try {
179170
- old.kill("SIGTERM");
179171
- } catch {}
179219
+ intentionalRestart = true;
179220
+ await terminateChild(old);
179172
179221
  serverProcess = await spawnServer();
179173
- await new Promise((res) => {
179174
- if (old.exitCode !== null) {
179175
- res();
179176
- return;
179177
- }
179178
- old.once("exit", () => res());
179179
- });
179222
+ intentionalRestart = false;
179180
179223
  console.log(cliTag("\x1B[32m", "Server restarted."));
179181
179224
  };
179182
179225
  const sendSignalToGroup = (signal) => {
@@ -179325,6 +179368,12 @@ var dev = async (serverEntry, configPath2) => {
179325
179368
  serverProcess = await spawnServer();
179326
179369
  return true;
179327
179370
  };
179371
+ const waitForIntentionalRestart = async () => {
179372
+ if (!intentionalRestart)
179373
+ return;
179374
+ await Bun.sleep(RESTART_PARK_POLL_MS);
179375
+ await waitForIntentionalRestart();
179376
+ };
179328
179377
  const monitorServer = async () => {
179329
179378
  if (cleaning) {
179330
179379
  return;
@@ -179337,6 +179386,11 @@ var dev = async (serverEntry, configPath2) => {
179337
179386
  }
179338
179387
  current.once("exit", (code) => res(code));
179339
179388
  });
179389
+ if (intentionalRestart) {
179390
+ await waitForIntentionalRestart();
179391
+ await monitorServer();
179392
+ return;
179393
+ }
179340
179394
  if (cleaning || serverProcess !== current) {
179341
179395
  await monitorServer();
179342
179396
  return;
package/dist/index.js CHANGED
@@ -5921,7 +5921,7 @@ var init_compileTailwind = __esm(() => {
5921
5921
  });
5922
5922
 
5923
5923
  // src/constants.ts
5924
- var ANGULAR_INIT_TIMEOUT_MS = 500, ANSI_ESCAPE_CODE = 27, ANSI_ESCAPE_LENGTH = 3, ASCII_SPACE = 32, BASE_36_RADIX = 36, BUN_BUILD_WARNING_SUPPRESSION = "wildcard sideEffects are not supported yet", TAILWIND_BUN_CSS_WARNING_PATTERN, BODY_SLICE_LENGTH = 2000, BYTES_PER_KILOBYTE = 1024, CLI_ARGS_OFFSET = 3, CSS_ERROR_RESOLVE_DELAY_MS = 50, CSS_MAX_CHECK_ATTEMPTS = 10, CSS_MAX_PARSE_TIMEOUT_MS = 500, CSS_SHEET_READY_TIMEOUT_MS = 100, DEFAULT_CHUNK_SIZE = 16384, DEFAULT_DEBOUNCE_MS = 15, DEFAULT_PORT = 3000, DEV_SERVER_RESTART_DEBOUNCE_MS = 100, DOM_UPDATE_DELAY_MS = 50, FILE_PROTOCOL_PREFIX_LENGTH = 7, FOCUS_ID_PREFIX_LENGTH = 3, FOCUS_IDX_PREFIX_LENGTH = 4, FOCUS_NAME_PREFIX_LENGTH = 5, ESLINT_STUDIO_DEFAULT_HOST = "eslint.absolute.localhost", ESLINT_STUDIO_DEFAULT_PORT = 4099, CONFIG_DEFAULT_HOST = "config.absolute.localhost", CONFIG_DEFAULT_PORT = 4099, HMR_UPDATE_TIMEOUT_MS = 2000, HOOK_SIGNATURE_LENGTH = 12, EXCLUDE_LAST_OFFSET = -1, HTTP_STATUS_OK = 200, HTTP_STATUS_BAD_REQUEST = 400, HTTP_STATUS_NOT_FOUND = 404, HOURS_IN_DAY = 24, HOURS_IN_HALF_DAY = 12, IMAGE_DEFAULT_DEVICE_SIZES, IMAGE_DEFAULT_IMAGE_SIZES, IMAGE_DEFAULT_QUALITY = 75, IMAGE_GLOB_SUFFIX_LENGTH = 2, INSTANCE_PROBE_TIMEOUT_MS = 250, MAX_ERROR_LENGTH = 200, MAX_RECONNECT_ATTEMPTS = 60, MILLISECONDS_IN_A_SECOND = 1000, MINUTES_IN_AN_HOUR = 60, SECONDS_IN_A_MINUTE = 60, MILLISECONDS_IN_A_MINUTE, MILLISECONDS_IN_A_DAY, OVERLAY_FADE_DURATION_MS = 150, PING_INTERVAL_MS = 30000, LIST_LOG_TAIL_MAX_BYTES = 65536, LIST_TUI_COLUMN_GAP = 2, LIST_TUI_DEFAULT_HEIGHT = 28, LIST_TUI_DEFAULT_WIDTH = 100, LIST_TUI_ESCAPE_SEQUENCE_TIMEOUT_MS = 30, LIST_TUI_FOOTER_LINE_COUNT = 2, LIST_TUI_MARKER_WIDTH = 2, LIST_TUI_MIN_LOG_HEIGHT = 3, LIST_TUI_MIN_URL_WIDTH = 16, LIST_TUI_RENDER_DEBOUNCE_MS = 16, LIST_TUI_STATUS_MESSAGE_TIMEOUT_MS = 4000, LIST_WATCH_REFRESH_MS = 1000, RAF_BATCH_COUNT = 3, RANDOM_ID_END_INDEX = 11, REBUILD_BATCH_DELAY_MS = 10, REBUILD_RELOAD_DELAY_MS = 200, RECONNECT_INITIAL_DELAY_MS = 500, RECONNECT_POLL_INTERVAL_MS = 300, REACT_STREAM_SLOT_FAST_DELAY_MS = 5, REACT_STREAM_SLOT_SLOW_DELAY_MS = 20, SIGINT_EXIT_CODE = 130, SIGTERM_EXIT_CODE = 143, SVELTE_CSS_LOAD_TIMEOUT_MS = 500, TIME_PRECISION = 2, TWO_THIRDS, UNFOUND_INDEX = -1, WEBSOCKET_NORMAL_CLOSURE = 1000, WORKSPACE_COMMAND_ARGS_OFFSET = 3, WORKSPACE_FAILURE_LOG_PRINT_LIMIT = 30, WORKSPACE_FAILURE_RECENT_LOG_LIMIT = 60, WORKSPACE_READY_ATTEMPT_TIMEOUT_MS = 5000, WORKSPACE_READY_PROBE_INTERVAL_MS = 250, WORKSPACE_READY_TIMEOUT_MS = 30000, WORKSPACE_SHUTDOWN_TIMEOUT_MS = 1e4, WORKSPACE_TUI_DEFAULT_HEIGHT = 28, WORKSPACE_TUI_DEFAULT_WIDTH = 100, WORKSPACE_TUI_ESCAPE_SEQUENCE_TIMEOUT_MS = 30, WORKSPACE_TUI_FOOTER_LINE_COUNT = 3, WORKSPACE_TUI_MIN_LOG_HEIGHT = 3, WORKSPACE_TUI_MIN_SERVICE_NAME_WIDTH = 7, WORKSPACE_TUI_MIN_TARGET_WIDTH = 8, WORKSPACE_TUI_MIN_WRAP_WIDTH = 12, WORKSPACE_TUI_PROMPT_CURSOR_OFFSET = 3, WORKSPACE_TUI_RECENT_LOG_LIMIT = 40, WORKSPACE_TUI_RENDER_DEBOUNCE_MS = 16, WORKSPACE_TUI_STATUS_WIDTH = 10, WORKSPACE_TUI_TARGET_PADDING_WIDTH = 6, WORKSPACE_TUI_VISIBILITY_WIDTH = 8;
5924
+ var ANGULAR_INIT_TIMEOUT_MS = 500, ANSI_ESCAPE_CODE = 27, ANSI_ESCAPE_LENGTH = 3, ASCII_SPACE = 32, BASE_36_RADIX = 36, BUN_BUILD_WARNING_SUPPRESSION = "wildcard sideEffects are not supported yet", TAILWIND_BUN_CSS_WARNING_PATTERN, BODY_SLICE_LENGTH = 2000, BYTES_PER_KILOBYTE = 1024, CLI_ARGS_OFFSET = 3, CSS_ERROR_RESOLVE_DELAY_MS = 50, CSS_MAX_CHECK_ATTEMPTS = 10, CSS_MAX_PARSE_TIMEOUT_MS = 500, CSS_SHEET_READY_TIMEOUT_MS = 100, DEFAULT_CHUNK_SIZE = 16384, DEFAULT_DEBOUNCE_MS = 15, DEFAULT_PORT = 3000, DEV_SERVER_RESTART_DEBOUNCE_MS = 100, DOM_UPDATE_DELAY_MS = 50, FILE_PROTOCOL_PREFIX_LENGTH = 7, FOCUS_ID_PREFIX_LENGTH = 3, FOCUS_IDX_PREFIX_LENGTH = 4, FOCUS_NAME_PREFIX_LENGTH = 5, ESLINT_STUDIO_DEFAULT_HOST = "eslint.absolute.localhost", ESLINT_STUDIO_DEFAULT_PORT = 4099, CONFIG_DEFAULT_HOST = "config.absolute.localhost", CONFIG_DEFAULT_PORT = 4099, HMR_UPDATE_TIMEOUT_MS = 2000, HOOK_SIGNATURE_LENGTH = 12, EXCLUDE_LAST_OFFSET = -1, HTTP_STATUS_OK = 200, HTTP_STATUS_BAD_REQUEST = 400, HTTP_STATUS_NOT_FOUND = 404, HOURS_IN_DAY = 24, HOURS_IN_HALF_DAY = 12, IMAGE_DEFAULT_DEVICE_SIZES, IMAGE_DEFAULT_IMAGE_SIZES, IMAGE_DEFAULT_QUALITY = 75, IMAGE_GLOB_SUFFIX_LENGTH = 2, INSTANCE_PROBE_TIMEOUT_MS = 250, MAX_ERROR_LENGTH = 200, MAX_RECONNECT_ATTEMPTS = 60, MILLISECONDS_IN_A_SECOND = 1000, MINUTES_IN_AN_HOUR = 60, SECONDS_IN_A_MINUTE = 60, MILLISECONDS_IN_A_MINUTE, MILLISECONDS_IN_A_DAY, OVERLAY_FADE_DURATION_MS = 150, PING_INTERVAL_MS = 30000, LIST_LOG_TAIL_MAX_BYTES = 65536, LIST_TUI_COLUMN_GAP = 2, LIST_TUI_DEFAULT_HEIGHT = 28, LIST_TUI_DEFAULT_WIDTH = 100, LIST_TUI_ESCAPE_SEQUENCE_TIMEOUT_MS = 30, LIST_TUI_FOOTER_LINE_COUNT = 2, LIST_TUI_MARKER_WIDTH = 2, LIST_TUI_MIN_LOG_HEIGHT = 3, LIST_TUI_MIN_URL_WIDTH = 16, LIST_TUI_RENDER_DEBOUNCE_MS = 16, LIST_TUI_STATUS_MESSAGE_TIMEOUT_MS = 4000, LIST_WATCH_REFRESH_MS = 1000, RAF_BATCH_COUNT = 3, RANDOM_ID_END_INDEX = 11, REBUILD_BATCH_DELAY_MS = 10, REBUILD_RELOAD_DELAY_MS = 200, RECONNECT_INITIAL_DELAY_MS = 500, RECONNECT_POLL_INTERVAL_MS = 300, REACT_STREAM_SLOT_FAST_DELAY_MS = 5, REACT_STREAM_SLOT_SLOW_DELAY_MS = 20, SIGINT_EXIT_CODE = 130, SIGTERM_EXIT_CODE = 143, SVELTE_CSS_LOAD_TIMEOUT_MS = 500, TIME_PRECISION = 2, TWO_THIRDS, UNFOUND_INDEX = -1, WEBSOCKET_NORMAL_CLOSURE = 1000, DEFAULT_WEBSOCKET_IDLE_TIMEOUT_SECONDS = 240, WORKSPACE_COMMAND_ARGS_OFFSET = 3, WORKSPACE_FAILURE_LOG_PRINT_LIMIT = 30, WORKSPACE_FAILURE_RECENT_LOG_LIMIT = 60, WORKSPACE_READY_ATTEMPT_TIMEOUT_MS = 5000, WORKSPACE_READY_PROBE_INTERVAL_MS = 250, WORKSPACE_READY_TIMEOUT_MS = 30000, WORKSPACE_SHUTDOWN_TIMEOUT_MS = 1e4, WORKSPACE_TUI_DEFAULT_HEIGHT = 28, WORKSPACE_TUI_DEFAULT_WIDTH = 100, WORKSPACE_TUI_ESCAPE_SEQUENCE_TIMEOUT_MS = 30, WORKSPACE_TUI_FOOTER_LINE_COUNT = 3, WORKSPACE_TUI_MIN_LOG_HEIGHT = 3, WORKSPACE_TUI_MIN_SERVICE_NAME_WIDTH = 7, WORKSPACE_TUI_MIN_TARGET_WIDTH = 8, WORKSPACE_TUI_MIN_WRAP_WIDTH = 12, WORKSPACE_TUI_PROMPT_CURSOR_OFFSET = 3, WORKSPACE_TUI_RECENT_LOG_LIMIT = 40, WORKSPACE_TUI_RENDER_DEBOUNCE_MS = 16, WORKSPACE_TUI_STATUS_WIDTH = 10, WORKSPACE_TUI_TARGET_PADDING_WIDTH = 6, WORKSPACE_TUI_VISIBILITY_WIDTH = 8;
5925
5925
  var init_constants = __esm(() => {
5926
5926
  TAILWIND_BUN_CSS_WARNING_PATTERN = /invalid @ rule encountered: '@(theme|tailwind|source|utility|variant|custom-variant|apply|reference|plugin|config)'/;
5927
5927
  IMAGE_DEFAULT_DEVICE_SIZES = [
@@ -25255,6 +25255,59 @@ ${fields}
25255
25255
  deferSlots: inlinedTemplate.deferSlots,
25256
25256
  source: result
25257
25257
  };
25258
+ }, CLASS_KEYWORD = "class", isIdentifierChar = (char) => char !== undefined && /[A-Za-z0-9_$]/.test(char), skipStringLiteral = (source, start) => {
25259
+ const quote = source[start];
25260
+ let index = start + 1;
25261
+ while (index < source.length) {
25262
+ if (source[index] === "\\") {
25263
+ index += 2;
25264
+ continue;
25265
+ }
25266
+ if (source[index] === quote)
25267
+ return index + 1;
25268
+ index += 1;
25269
+ }
25270
+ return index;
25271
+ }, findDecoratedClassKeyword = (source, start) => {
25272
+ let index = start;
25273
+ let depth = 0;
25274
+ while (index < source.length) {
25275
+ const char = source[index];
25276
+ if (char === '"' || char === "'" || char === "`") {
25277
+ index = skipStringLiteral(source, index);
25278
+ continue;
25279
+ }
25280
+ const isOpen = char === "(" || char === "[" || char === "{";
25281
+ const isClose = char === ")" || char === "]" || char === "}";
25282
+ const atClass = depth === 0 && source.startsWith(CLASS_KEYWORD, index) && !isIdentifierChar(source[index - 1]) && !isIdentifierChar(source[index + CLASS_KEYWORD.length]);
25283
+ if (atClass)
25284
+ return index;
25285
+ if (isOpen)
25286
+ depth += 1;
25287
+ else if (isClose)
25288
+ depth -= 1;
25289
+ index += 1;
25290
+ }
25291
+ return -1;
25292
+ }, hoistExportPastDecorators = (source) => {
25293
+ const exportBeforeDecorator = /\bexport\s+(?=@)/g;
25294
+ let result = "";
25295
+ let lastIndex = 0;
25296
+ let match = exportBeforeDecorator.exec(source);
25297
+ while (match !== null) {
25298
+ const decoratorStart = match.index + match[0].length;
25299
+ const classIndex = findDecoratedClassKeyword(source, decoratorStart);
25300
+ if (classIndex !== -1) {
25301
+ result += source.slice(lastIndex, match.index);
25302
+ result += source.slice(decoratorStart, classIndex);
25303
+ result += `export ${CLASS_KEYWORD}`;
25304
+ lastIndex = classIndex + CLASS_KEYWORD.length;
25305
+ exportBeforeDecorator.lastIndex = lastIndex;
25306
+ }
25307
+ match = exportBeforeDecorator.exec(source);
25308
+ }
25309
+ result += source.slice(lastIndex);
25310
+ return result;
25258
25311
  }, compileAngularFileJIT = async (inputPath, outDir, rootDir, stylePreprocessors, cacheBuster) => {
25259
25312
  const entryPath = resolve24(inputPath);
25260
25313
  const allOutputs = [];
@@ -25319,7 +25372,7 @@ ${fields}
25319
25372
  return specifier.includes("?") ? `${specifier}&t=${cacheBuster}` : `${specifier}?t=${cacheBuster}`;
25320
25373
  };
25321
25374
  const transpileAndRewrite = (sourceCode, relativeDir, actualPath, importRewrites) => {
25322
- let processedContent = angularTranspiler.transformSync(sourceCode);
25375
+ let processedContent = angularTranspiler.transformSync(hoistExportPastDecorators(sourceCode));
25323
25376
  const outputPath = toOutputPath(actualPath);
25324
25377
  const rewriteBareImport = (prefix, specifier, suffix) => {
25325
25378
  const rewritten = importRewrites.get(specifier);
@@ -40034,9 +40087,17 @@ var selfRegisterInstance = () => {
40034
40087
  startedAt: new Date().toISOString()
40035
40088
  });
40036
40089
  };
40090
+ var applyWebSocketKeepaliveDefaults = (app) => {
40091
+ app.config.websocket = {
40092
+ idleTimeout: DEFAULT_WEBSOCKET_IDLE_TIMEOUT_SECONDS,
40093
+ sendPings: true,
40094
+ ...app.config.websocket ?? {}
40095
+ };
40096
+ };
40037
40097
  var networking = (app) => {
40038
40098
  if (env4.ABSOLUTE_COMPILED_RUNTIME === "1")
40039
40099
  return app;
40100
+ applyWebSocketKeepaliveDefaults(app);
40040
40101
  if (env4.NODE_ENV === "development") {
40041
40102
  app.get("/__absolute/routes", () => app.routes.map((route) => ({
40042
40103
  method: route.method,
@@ -46588,6 +46649,7 @@ export {
46588
46649
  ESLINT_STUDIO_DEFAULT_HOST,
46589
46650
  DOM_UPDATE_DELAY_MS,
46590
46651
  DEV_SERVER_RESTART_DEBOUNCE_MS,
46652
+ DEFAULT_WEBSOCKET_IDLE_TIMEOUT_SECONDS,
46591
46653
  DEFAULT_PORT,
46592
46654
  DEFAULT_DEBOUNCE_MS,
46593
46655
  DEFAULT_CHUNK_SIZE,
@@ -46608,5 +46670,5 @@ export {
46608
46670
  ANGULAR_INIT_TIMEOUT_MS
46609
46671
  };
46610
46672
 
46611
- //# debugId=119C10E5B5088D9764756E2164756E21
46673
+ //# debugId=C9D8370D5AE5318964756E2164756E21
46612
46674
  //# sourceMappingURL=index.js.map