@absolutejs/absolute 0.20.0-beta.136 → 0.20.0-beta.138

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 (112) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/changelog.json +32 -0
  3. package/dist/angular/browser.js +2 -2
  4. package/dist/angular/browser.js.map +3 -3
  5. package/dist/angular/components/constants.js +3 -0
  6. package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
  7. package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
  8. package/dist/angular/index.js +2 -2
  9. package/dist/angular/index.js.map +3 -3
  10. package/dist/angular/server.js +2 -2
  11. package/dist/angular/server.js.map +3 -3
  12. package/dist/build.js +10 -8
  13. package/dist/build.js.map +6 -6
  14. package/dist/cli/{add-hvqeg5sz.js → add-a33ashpx.js} +9 -9
  15. package/dist/cli/{analyze-c2x2aym5.js → analyze-3cyek6v3.js} +3 -3
  16. package/dist/cli/{androidEmulatorController-j73a1br6.js → androidEmulatorController-3zn6a4j3.js} +6 -6
  17. package/dist/cli/{androidNativeWatcher-ctbnsr1v.js → androidNativeWatcher-wz7vhnkr.js} +6 -6
  18. package/dist/cli/{api-rk13rfd9.js → api-m3n8xbcv.js} +8 -8
  19. package/dist/cli/{build-20y4b6rj.js → build-25rz8v25.js} +3 -3
  20. package/dist/cli/{buildDepVendor-axqvbbm6.js → buildDepVendor-bpac1bhq.js} +3 -3
  21. package/dist/cli/{compile-c7798g5y.js → compile-3hrjsbjq.js} +6 -5
  22. package/dist/cli/{db-p8pc325y.js → db-5b4s1kvx.js} +2 -2
  23. package/dist/cli/{dev-k5mbc04f.js → dev-5akk4tw6.js} +14 -14
  24. package/dist/cli/{doctor-8rm8p4dm.js → doctor-f13ntk9a.js} +3 -3
  25. package/dist/cli/{emulatorDoctor-cwa70kgt.js → emulatorDoctor-1m4rr9y3.js} +5 -5
  26. package/dist/cli/{emulatorInstaller-dx3fmm2m.js → emulatorInstaller-70v711bj.js} +6 -6
  27. package/dist/cli/{env-2107nff1.js → env-snb0597q.js} +3 -3
  28. package/dist/cli/{expoDevController-s70fj7vf.js → expoDevController-hen9sra5.js} +6 -6
  29. package/dist/cli/{generate-nz4w03yz.js → generate-vx6tz1y2.js} +8 -8
  30. package/dist/cli/{heapDiff-2etr2r26.js → heapDiff-wqj8vrq8.js} +3 -3
  31. package/dist/cli/{htmx-0xcaqrny.js → htmx-dym03fq5.js} +6 -6
  32. package/dist/cli/{index-xcr3r6a1.js → index-14fbvz34.js} +2 -2
  33. package/dist/cli/{index-1ff9q1vx.js → index-3y57kd7x.js} +3 -3
  34. package/dist/cli/{index-j57pgg5m.js → index-52a2csjm.js} +1 -1
  35. package/dist/cli/{index-92hmw204.js → index-74m7kh8c.js} +1 -1
  36. package/dist/cli/{index-gmwb037j.js → index-7whcck3r.js} +1 -1
  37. package/dist/cli/{index-fkn59pcp.js → index-b1vyj26r.js} +3 -3
  38. package/dist/cli/{index-8w2wazrk.js → index-bvwkwgjw.js} +2 -2
  39. package/dist/cli/{index-adywn74r.js → index-cvkfb73g.js} +1 -1
  40. package/dist/cli/{index-8kdmmgvc.js → index-d3br7c47.js} +1 -1
  41. package/dist/cli/{index-73sk1ney.js → index-g4ehq6ev.js} +1 -1
  42. package/dist/cli/{index-3gtnqd57.js → index-g8489j4d.js} +1 -1
  43. package/dist/cli/{index-ma1dw7x2.js → index-h5qx5jpk.js} +1 -1
  44. package/dist/cli/{index-1x1vah31.js → index-kye08pjx.js} +1 -1
  45. package/dist/cli/{index-jcjwsdqt.js → index-px7fqsfk.js} +1 -1
  46. package/dist/cli/{index-k4t9k1xk.js → index-v4cg4dvm.js} +2 -2
  47. package/dist/cli/{index-snbzdwb9.js → index-vy8zejts.js} +1 -1
  48. package/dist/cli/{index-wy0yh4jj.js → index-x1swv7rw.js} +1 -1
  49. package/dist/cli/{index-31j3beht.js → index-xj68ep9n.js} +2 -2
  50. package/dist/cli/{index-djme2zmz.js → index-xv9msedx.js} +4 -4
  51. package/dist/cli/{index-ppxed116.js → index-xw1byvzp.js} +1 -1
  52. package/dist/cli/{index-m1vntzf1.js → index-ys2rzqhg.js} +1 -1
  53. package/dist/cli/index.js +32 -32
  54. package/dist/cli/{info-kx5510rq.js → info-1hfrhf86.js} +4 -4
  55. package/dist/cli/{inspect-5dj06x0m.js → inspect-c7s117j0.js} +5 -5
  56. package/dist/cli/{iosNativeWatcher-p1z40vbb.js → iosNativeWatcher-7n2a7nh5.js} +7 -7
  57. package/dist/cli/{iosSimulatorController-491k640d.js → iosSimulatorController-6qfhmbq0.js} +7 -7
  58. package/dist/cli/{islands-z4adh55n.js → islands-rq6wx0kh.js} +3 -3
  59. package/dist/cli/{logs-3p2vrq5h.js → logs-ej1add2b.js} +3 -3
  60. package/dist/cli/{ls-nkspq73y.js → ls-4m4yqwww.js} +3 -3
  61. package/dist/cli/{mem-h3f497cr.js → mem-5q7n3ymb.js} +5 -5
  62. package/dist/cli/{migrate-52bqqp08.js → migrate-6nm4kdf6.js} +2 -2
  63. package/dist/cli/{mobile-jx4e7r2w.js → mobile-rb3zcs4f.js} +13 -13
  64. package/dist/cli/{prettier-c1624g36.js → prettier-phdtvqef.js} +1 -1
  65. package/dist/cli/{ps-0jedm91n.js → ps-0tryaye0.js} +6 -6
  66. package/dist/cli/{psTui-tpr5nbmc.js → psTui-0nx63pmr.js} +7 -7
  67. package/dist/cli/{remoteMacProtocol-5qxgxk21.js → remoteMacProtocol-2vffjhdd.js} +7 -7
  68. package/dist/cli/{remove-z0brj5nd.js → remove-qgme4h2s.js} +8 -8
  69. package/dist/cli/{routes-ey0sw1eq.js → routes-3xj256gx.js} +3 -3
  70. package/dist/cli/{start-7qsbfdxf.js → start-7q57gc22.js} +5 -5
  71. package/dist/cli/{typecheck-nmf6e7k7.js → typecheck-w6kex2xj.js} +126 -39
  72. package/dist/cli/{workspace-yetzedke.js → workspace-atcxzyee.js} +5 -5
  73. package/dist/client/chunks/{islands-rc28k5sx.js → islands-eexr591d.js} +7 -7
  74. package/dist/client/chunks/{islands-rc28k5sx.js.map → islands-eexr591d.js.map} +3 -3
  75. package/dist/client/index.js +2 -2
  76. package/dist/dev/client/constants.ts +4 -0
  77. package/dist/dev/client/cssUtils.ts +94 -9
  78. package/dist/dev/serverBootstrap.js +1 -1
  79. package/dist/index.js +13 -8
  80. package/dist/index.js.map +7 -7
  81. package/dist/islands/index.js +2 -2
  82. package/dist/islands/index.js.map +3 -3
  83. package/dist/mobile/index.js +2 -2
  84. package/dist/mobile/index.js.map +3 -3
  85. package/dist/mobile/remoteMacAgentEntry.js +59 -59
  86. package/dist/react/components/index.js +2 -2
  87. package/dist/react/components/index.js.map +3 -3
  88. package/dist/react/index.js +2 -2
  89. package/dist/react/index.js.map +3 -3
  90. package/dist/react/server.js +2 -2
  91. package/dist/react/server.js.map +3 -3
  92. package/dist/src/angular/components/constants.d.ts +3 -0
  93. package/dist/src/build/compileTailwind.d.ts +8 -2
  94. package/dist/src/cli/scripts/bunCheck.d.ts +19 -0
  95. package/dist/src/constants.d.ts +3 -0
  96. package/dist/src/core/build.d.ts +2 -0
  97. package/dist/svelte/index.js +2 -2
  98. package/dist/svelte/index.js.map +3 -3
  99. package/dist/svelte/server.js +2 -2
  100. package/dist/svelte/server.js.map +3 -3
  101. package/dist/types/client.d.ts +5 -0
  102. package/dist/types/style-module-shim.d.ts +15 -0
  103. package/dist/vue/components/Image.js +2 -2
  104. package/dist/vue/components/Image.js.map +3 -3
  105. package/dist/vue/components/index.js +2 -2
  106. package/dist/vue/components/index.js.map +3 -3
  107. package/dist/vue/index.js +2 -2
  108. package/dist/vue/index.js.map +3 -3
  109. package/dist/vue/server.js +2 -2
  110. package/dist/vue/server.js.map +3 -3
  111. package/package.json +1 -1
  112. /package/dist/cli/{index-hxqprc80.js → index-fgz435qn.js} +0 -0
@@ -8,12 +8,16 @@ export const ANGULAR_INIT_TIMEOUT_MS = 500;
8
8
  export const CSS_ERROR_RESOLVE_DELAY_MS = 50;
9
9
  export const CSS_MAX_CHECK_ATTEMPTS = 10;
10
10
  export const CSS_MAX_PARSE_TIMEOUT_MS = 500;
11
+ export const CSS_RELOAD_BACKOFF_BASE_MS = 1000;
12
+ export const CSS_RELOAD_BACKOFF_MAX_MS = 60_000;
11
13
  export const CSS_SHEET_READY_TIMEOUT_MS = 100;
12
14
  export const DOM_UPDATE_DELAY_MS = 50;
13
15
  export const FOCUS_ID_PREFIX_LENGTH = 3;
14
16
  export const FOCUS_IDX_PREFIX_LENGTH = 4;
15
17
  export const FOCUS_NAME_PREFIX_LENGTH = 5;
16
18
  export const HMR_UPDATE_TIMEOUT_MS = 2000;
19
+ export const HTTP_STATUS_GONE = 410;
20
+ export const HTTP_STATUS_NOT_FOUND = 404;
17
21
  export const MAX_RECONNECT_ATTEMPTS = 60;
18
22
  export const OVERLAY_FADE_DURATION_MS = 150;
19
23
  export const PING_INTERVAL_MS = 30_000;
@@ -1,13 +1,20 @@
1
1
  import type {} from '../../types/globals';
2
2
  /* CSS reload/preload utilities for HMR */
3
3
 
4
- import type { CSSUpdateResult } from '../../types/client';
4
+ import type {
5
+ CSSUpdateResult,
6
+ StylesheetReloadFailure
7
+ } from '../../types/client';
5
8
  import {
6
9
  CSS_ERROR_RESOLVE_DELAY_MS,
7
10
  CSS_MAX_CHECK_ATTEMPTS,
8
11
  CSS_MAX_PARSE_TIMEOUT_MS,
12
+ CSS_RELOAD_BACKOFF_BASE_MS,
13
+ CSS_RELOAD_BACKOFF_MAX_MS,
9
14
  CSS_SHEET_READY_TIMEOUT_MS,
10
15
  DOM_UPDATE_DELAY_MS,
16
+ HTTP_STATUS_GONE,
17
+ HTTP_STATUS_NOT_FOUND,
11
18
  RAF_BATCH_COUNT
12
19
  } from './constants';
13
20
  import { hmrState } from './hmrState';
@@ -166,6 +173,63 @@ const adoptHref = (
166
173
  setTimeout(dropReplacement, CSS_MAX_PARSE_TIMEOUT_MS);
167
174
  };
168
175
 
176
+ /* A stylesheet whose replacement fails is either gone (its source was
177
+ deleted, so the server answers 404) or briefly unreachable (a rate limit,
178
+ a dropped connection). Neither may be refetched on every update: each
179
+ `style-update` reloads every stylesheet on the page, so an agent writing
180
+ files turned one deleted stylesheet into thousands of requests.
181
+ A gone stylesheet is disabled and only tried again once the manifest
182
+ points it at a different file; an unreachable one backs off. */
183
+ const MISSING_STYLESHEET_ATTRIBUTE = 'data-absolute-hmr-missing';
184
+ const reloadFailures = new WeakMap<HTMLLinkElement, StylesheetReloadFailure>();
185
+
186
+ const hrefPath = (href: string) => new URL(href, window.location.href).pathname;
187
+
188
+ const isStylesheetGone = (href: string) =>
189
+ fetch(href, { cache: 'no-store' }).then(
190
+ (response) =>
191
+ response.status === HTTP_STATUS_NOT_FOUND ||
192
+ response.status === HTTP_STATUS_GONE,
193
+ () => false
194
+ );
195
+
196
+ const markStylesheetGone = (link: HTMLLinkElement, href: string) => {
197
+ reloadFailures.delete(link);
198
+ // Disable rather than remove: a framework that rendered the `<link>`
199
+ // (React hoists page links into `<head>`) still owns the node.
200
+ link.disabled = true;
201
+ link.setAttribute(MISSING_STYLESHEET_ATTRIBUTE, hrefPath(href));
202
+ };
203
+
204
+ const recordReloadFailure = (link: HTMLLinkElement, href: string) => {
205
+ const path = hrefPath(href);
206
+ const previous = reloadFailures.get(link);
207
+ const count = previous?.path === path ? previous.count + 1 : 1;
208
+ const delay = Math.min(
209
+ CSS_RELOAD_BACKOFF_BASE_MS * 2 ** (count - 1),
210
+ CSS_RELOAD_BACKOFF_MAX_MS
211
+ );
212
+ reloadFailures.set(link, { count, path, retryAt: Date.now() + delay });
213
+ };
214
+
215
+ const clearReloadFailure = (link: HTMLLinkElement) => {
216
+ reloadFailures.delete(link);
217
+ if (!link.hasAttribute(MISSING_STYLESHEET_ATTRIBUTE)) return;
218
+ link.removeAttribute(MISSING_STYLESHEET_ATTRIBUTE);
219
+ link.disabled = false;
220
+ };
221
+
222
+ /* Whether a reload of `link` to `href` should be skipped: the stylesheet is
223
+ known to be gone and the manifest still names the same file, or it failed
224
+ recently and is backing off. */
225
+ const shouldSkipReload = (link: HTMLLinkElement, href: string) => {
226
+ const path = hrefPath(href);
227
+ if (link.getAttribute(MISSING_STYLESHEET_ATTRIBUTE) === path) return true;
228
+ const failure = reloadFailures.get(link);
229
+
230
+ return failure?.path === path && Date.now() < failure.retryAt;
231
+ };
232
+
169
233
  const replaceStylesheetLink = (
170
234
  existingLink: HTMLLinkElement,
171
235
  newHref: string,
@@ -175,29 +239,47 @@ const replaceStylesheetLink = (
175
239
  if (!(replacement instanceof HTMLLinkElement)) {
176
240
  return Promise.resolve(false);
177
241
  }
242
+ replacement.disabled = false;
243
+ replacement.removeAttribute(MISSING_STYLESHEET_ATTRIBUTE);
178
244
  const { promise, resolve } = Promise.withResolvers<boolean>();
179
245
  let settled = false;
180
246
  const finish = (applied: boolean) => {
181
247
  if (settled) return;
182
248
  settled = true;
183
- if (applied) adoptHref(existingLink, replacement, newHref);
184
- else replacement.remove();
249
+ if (applied) {
250
+ clearReloadFailure(existingLink);
251
+ adoptHref(existingLink, replacement, newHref);
252
+ } else {
253
+ replacement.remove();
254
+ recordReloadFailure(existingLink, newHref);
255
+ }
185
256
  resolve(applied);
186
257
  };
258
+ // The `<link>` error does not say why it failed. Ask once: a 404/410
259
+ // means the stylesheet was deleted, anything else is worth one retry.
260
+ const recoverFromError = async () => {
261
+ if (await isStylesheetGone(newHref)) {
262
+ markStylesheetGone(existingLink, newHref);
263
+ resolve(false);
264
+
265
+ return;
266
+ }
267
+ const retryHref = `${newHref}${newHref.includes('?') ? '&' : '?'}retry=${Date.now()}`;
268
+ resolve(
269
+ await replaceStylesheetLink(existingLink, retryHref, attempt + 1)
270
+ );
271
+ };
187
272
  replacement.onload = () => finish(true);
188
273
  replacement.onerror = () => {
274
+ if (settled) return;
189
275
  if (attempt >= 1) {
190
276
  finish(false);
191
277
 
192
278
  return;
193
279
  }
194
- replacement.remove();
195
280
  settled = true;
196
- void replaceStylesheetLink(
197
- existingLink,
198
- `${newHref}${newHref.includes('?') ? '&' : '?'}retry=${Date.now()}`,
199
- attempt + 1
200
- ).then(resolve);
281
+ replacement.remove();
282
+ void recoverFromError();
201
283
  };
202
284
  replacement.href = newHref;
203
285
  existingLink.after(replacement);
@@ -237,6 +319,9 @@ const updateStylesheetLink = (
237
319
  currentUrl.searchParams.set('t', Date.now().toString());
238
320
  replacementHref = currentUrl.toString();
239
321
  }
322
+ if (shouldSkipReload(link, replacementHref)) {
323
+ return Promise.resolve(link.hasAttribute(MISSING_STYLESHEET_ATTRIBUTE));
324
+ }
240
325
 
241
326
  return replaceStylesheetLink(link, replacementHref);
242
327
  };
@@ -3810,7 +3810,7 @@ var require_source_map_support = __commonJS(function(exports, module) {
3810
3810
 
3811
3811
  // node_modules/typescript/lib/typescript.js
3812
3812
  var require_typescript = __commonJS(function(exports, module) {
3813
- var __dirname = "/home/runner/work/absolutejs/absolutejs/node_modules/typescript/lib", __filename = "/home/runner/work/absolutejs/absolutejs/node_modules/typescript/lib/typescript.js";
3813
+ var __dirname = "/home/alexkahn/abs/absolutejs/node_modules/typescript/lib", __filename = "/home/alexkahn/abs/absolutejs/node_modules/typescript/lib/typescript.js";
3814
3814
  /*! *****************************************************************************
3815
3815
  Copyright (c) Microsoft Corporation. All rights reserved.
3816
3816
  Licensed under the Apache License, Version 2.0 (the "License"); you may not use
package/dist/index.js CHANGED
@@ -114,7 +114,7 @@ var resolveAngularPackageDir = (specifier) => {
114
114
  var init_resolveAngularPackage = () => {};
115
115
 
116
116
  // src/constants.ts
117
- 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, DEFAULT_HTTP_IDLE_TIMEOUT_SECONDS = 240, MAX_HTTP_IDLE_TIMEOUT_SECONDS = 255, 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;
117
+ 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_RELOAD_BACKOFF_BASE_MS = 1000, CSS_RELOAD_BACKOFF_MAX_MS = 60000, 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, HTTP_STATUS_GONE = 410, 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, DEFAULT_HTTP_IDLE_TIMEOUT_SECONDS = 240, MAX_HTTP_IDLE_TIMEOUT_SECONDS = 255, 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;
118
118
  var init_constants = __esm(() => {
119
119
  TAILWIND_BUN_CSS_WARNING_PATTERN = /invalid @ rule encountered: '@(theme|tailwind|source|utility|variant|custom-variant|apply|reference|plugin|config)'/;
120
120
  IMAGE_DEFAULT_DEVICE_SIZES = [
@@ -5899,7 +5899,7 @@ var computeFrameworkTailwindSources = (config) => {
5899
5899
  }, TAILWIND_CANDIDATE_EXTENSION_PATTERN, isTailwindCandidate = (filePath) => TAILWIND_CANDIDATE_EXTENSION_PATTERN.test(filePath), compileTailwind = async (input, output, buildPath, styleTransformConfig, extraSources = [], changedFiles = []) => {
5900
5900
  const outputPath = join4(buildPath, output);
5901
5901
  await mkdir(dirname4(outputPath), { recursive: true });
5902
- await incrementalTailwindBuild({ input, output }, buildPath, changedFiles, styleTransformConfig, extraSources);
5902
+ return incrementalTailwindBuild({ input, output }, buildPath, changedFiles, styleTransformConfig, extraSources);
5903
5903
  }, compileTailwindConfig = async (tailwind, buildPath, styleTransformConfig, extraSources = [], changedFiles = []) => compileTailwind(tailwind.input, tailwind.output, buildPath, styleTransformConfig, extraSources, changedFiles);
5904
5904
  var init_compileTailwind = __esm(() => {
5905
5905
  init_tailwindCompiler();
@@ -24675,7 +24675,7 @@ var init_compileAngular = __esm(() => {
24675
24675
 
24676
24676
  // node_modules/content-tag/pkg/node/content_tag.cjs
24677
24677
  var require_content_tag = __commonJS(function(exports, module) {
24678
- var __dirname = "/home/runner/work/absolutejs/absolutejs/node_modules/content-tag/pkg/node";
24678
+ var __dirname = "/home/alexkahn/abs/absolutejs/node_modules/content-tag/pkg/node";
24679
24679
  var imports = {};
24680
24680
  imports["__wbindgen_placeholder__"] = exports;
24681
24681
  var wasm;
@@ -26435,7 +26435,7 @@ ${offenders.map((o) => ` \u2022 ${o}`).join(`
26435
26435
  htmxPagesPath
26436
26436
  ].filter((path) => Boolean(path));
26437
26437
  const [
26438
- ,
26438
+ tailwindResult,
26439
26439
  allReactEntries,
26440
26440
  allHtmlEntries,
26441
26441
  reactConventionResult,
@@ -27542,7 +27542,8 @@ ${offenders.map((o) => ` \u2022 ${o}`).join(`
27542
27542
  conventions: conventionsMap,
27543
27543
  errors: passErrors.length > 0 ? passErrors : undefined,
27544
27544
  manifest,
27545
- pageEntries
27545
+ pageEntries,
27546
+ tailwindChanged: tailwindResult?.cssChanged ?? false
27546
27547
  };
27547
27548
  }
27548
27549
  writeFileSync10(join51(buildPath, "manifest.json"), JSON.stringify(manifest, null, "\t"));
@@ -27575,7 +27576,8 @@ ${offenders.map((o) => ` \u2022 ${o}`).join(`
27575
27576
  conventions: conventionsMap,
27576
27577
  errors: passErrors.length > 0 ? passErrors : undefined,
27577
27578
  manifest,
27578
- pageEntries
27579
+ pageEntries,
27580
+ tailwindChanged: tailwindResult?.cssChanged ?? false
27579
27581
  };
27580
27582
  }, build2 = async (config) => {
27581
27583
  const projectRoot = cwd();
@@ -34550,7 +34552,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, clearDevSs
34550
34552
  type: "rebuild-complete"
34551
34553
  });
34552
34554
  const hasDedicatedStyleUpdate = affectedFrameworks.some((framework) => framework === "styles" || framework === "assets");
34553
- if (config.tailwind && filesToRebuild && filesToRebuild.some(isTailwindCandidate) && !hasDedicatedStyleUpdate) {
34555
+ if (config.tailwind && buildResult.tailwindChanged && filesToRebuild && filesToRebuild.some(isTailwindCandidate) && !hasDedicatedStyleUpdate) {
34554
34556
  try {
34555
34557
  const outputPath = resolvePath(state.resolvedPaths.buildDir, config.tailwind.output);
34556
34558
  const bytes = await Bun.file(outputPath).bytes();
@@ -43650,6 +43652,8 @@ export {
43650
43652
  CSS_ERROR_RESOLVE_DELAY_MS,
43651
43653
  CSS_MAX_CHECK_ATTEMPTS,
43652
43654
  CSS_MAX_PARSE_TIMEOUT_MS,
43655
+ CSS_RELOAD_BACKOFF_BASE_MS,
43656
+ CSS_RELOAD_BACKOFF_MAX_MS,
43653
43657
  CSS_SHEET_READY_TIMEOUT_MS,
43654
43658
  DEFAULT_CHUNK_SIZE,
43655
43659
  DEFAULT_DEBOUNCE_MS,
@@ -43670,6 +43674,7 @@ export {
43670
43674
  HOURS_IN_DAY,
43671
43675
  HOURS_IN_HALF_DAY,
43672
43676
  HTTP_STATUS_BAD_REQUEST,
43677
+ HTTP_STATUS_GONE,
43673
43678
  HTTP_STATUS_NOT_FOUND,
43674
43679
  HTTP_STATUS_OK,
43675
43680
  IMAGE_DEFAULT_DEVICE_SIZES,
@@ -43821,5 +43826,5 @@ export {
43821
43826
  wrapPageHandlerWithStreamingSlots
43822
43827
  };
43823
43828
 
43824
- //# debugId=CF052FF52214E05F64756E2164756E21
43829
+ //# debugId=3CF62DC116A4C34564756E2164756E21
43825
43830
  //# sourceMappingURL=index.js.map