@absolutejs/absolute 0.20.0-beta.181 → 0.20.0-beta.182

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 (120) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/changelog.json +54 -0
  3. package/dist/angular/browser.js +2 -2
  4. package/dist/angular/browser.js.map +4 -4
  5. package/dist/angular/components/constants.js +4 -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 +344 -48
  9. package/dist/angular/index.js.map +10 -10
  10. package/dist/angular/server.js +344 -48
  11. package/dist/angular/server.js.map +10 -10
  12. package/dist/build.js +431 -78
  13. package/dist/build.js.map +15 -15
  14. package/dist/cli/{add-8gw9mk2b.js → add-jft96bp4.js} +9 -9
  15. package/dist/cli/{analyze-e57zz9x8.js → analyze-5w46d1f0.js} +3 -3
  16. package/dist/cli/{androidEmulatorController-vqc5m2rp.js → androidEmulatorController-gbf9r660.js} +6 -6
  17. package/dist/cli/{androidNativeWatcher-s03aczxv.js → androidNativeWatcher-3astrxxz.js} +6 -6
  18. package/dist/cli/{api-8ppxw487.js → api-zmvnvdsf.js} +8 -8
  19. package/dist/cli/{build-fz7qbdn3.js → build-mskrk9zb.js} +3 -3
  20. package/dist/cli/{build-ptx5a72p.js → build-p3qra1nj.js} +64 -6
  21. package/dist/cli/{buildDepVendor-qnwfct22.js → buildDepVendor-36d1aa7c.js} +2 -2
  22. package/dist/cli/{buildReactServerComponents-01s87hnk.js → buildReactServerComponents-vc9hh2rd.js} +5 -5
  23. package/dist/cli/{compile-54rb8szn.js → compile-7mjd739p.js} +10 -6
  24. package/dist/cli/config/server.js +18 -17
  25. package/dist/cli/{db-qbzjw3en.js → db-mpmj37jq.js} +2 -2
  26. package/dist/cli/{dev-6s6g5tnk.js → dev-9d6d7757.js} +14 -14
  27. package/dist/cli/{doctor-m36tmx4d.js → doctor-nng9szw6.js} +3 -3
  28. package/dist/cli/{emulatorDoctor-s1z5tkp7.js → emulatorDoctor-3eszsqs8.js} +5 -5
  29. package/dist/cli/{emulatorInstaller-pgkdswvq.js → emulatorInstaller-1r6cawm0.js} +6 -6
  30. package/dist/cli/{env-5nz1qm8e.js → env-bfa7vs35.js} +3 -3
  31. package/dist/cli/{expoDevController-018anvbm.js → expoDevController-s0msdwbm.js} +6 -6
  32. package/dist/cli/{generate-5vyz1s44.js → generate-xk3a7qnc.js} +8 -8
  33. package/dist/cli/{heapDiff-kncvdtn8.js → heapDiff-3ba8p8wf.js} +3 -3
  34. package/dist/cli/{htmx-26hs6jdm.js → htmx-an2x3gpx.js} +6 -6
  35. package/dist/cli/{index-7854xf0m.js → index-1bszxtdj.js} +1 -1
  36. package/dist/cli/{index-kx2d067c.js → index-3066eqr3.js} +8 -5
  37. package/dist/cli/{index-8khbn8qr.js → index-3a9h87v5.js} +3 -3
  38. package/dist/cli/{index-9djrap79.js → index-3pz5sjaz.js} +1 -1
  39. package/dist/cli/{index-50ag35xg.js → index-3ys9tz53.js} +2 -2
  40. package/dist/cli/{index-6f448d7m.js → index-4ynx0cq6.js} +26 -12
  41. package/dist/cli/{index-btp4fyf1.js → index-785hpa2r.js} +2 -2
  42. package/dist/cli/{index-5w8arh3m.js → index-7zwzyymv.js} +2 -2
  43. package/dist/cli/{index-kes8he5s.js → index-9sqqzeq4.js} +1 -1
  44. package/dist/cli/{index-pr1skxen.js → index-akseq9ps.js} +1 -1
  45. package/dist/cli/{index-23hvdyxf.js → index-c6j2727a.js} +1 -1
  46. package/dist/cli/{index-pkw3jktb.js → index-eh786rj4.js} +2 -2
  47. package/dist/cli/{index-aemhvvwb.js → index-eydgkr7w.js} +1 -1
  48. package/dist/cli/{index-rz56x932.js → index-fbmfpqk8.js} +1 -1
  49. package/dist/cli/{index-c8rcfe5a.js → index-fy4th3n0.js} +1 -1
  50. package/dist/cli/{index-prza6tkp.js → index-gx6pjzzk.js} +3 -3
  51. package/dist/cli/{index-125cfzvn.js → index-hker5fs4.js} +2 -2
  52. package/dist/cli/{index-cgmp9d02.js → index-hqkcxa2p.js} +1 -1
  53. package/dist/cli/{index-jkg2h10c.js → index-mmm6d3k5.js} +3 -3
  54. package/dist/cli/{index-enbw9484.js → index-wpgsermq.js} +1 -1
  55. package/dist/cli/{index-0z5fgb80.js → index-wqpg377f.js} +1 -1
  56. package/dist/cli/{index-3sfcmb49.js → index-x7h6w6td.js} +1 -1
  57. package/dist/cli/{index-a6xx0p9e.js → index-ydaxsftq.js} +1 -1
  58. package/dist/cli/{index-3ewt17wm.js → index-yhkg5by0.js} +1 -1
  59. package/dist/cli/{index-aqe25w4h.js → index-zeeep92g.js} +1 -1
  60. package/dist/cli/index.js +32 -32
  61. package/dist/cli/{info-k124sh7g.js → info-5rwsbhe2.js} +4 -4
  62. package/dist/cli/{inspect-n6pcfvfw.js → inspect-nmwb0q5k.js} +5 -5
  63. package/dist/cli/{iosNativeWatcher-wdq2fvj1.js → iosNativeWatcher-7r9gnk87.js} +7 -7
  64. package/dist/cli/{iosSimulatorController-n97dpa8p.js → iosSimulatorController-w963vv9r.js} +7 -7
  65. package/dist/cli/{islands-17tfx8jf.js → islands-w9xrehpk.js} +3 -3
  66. package/dist/cli/{logs-shg23fbt.js → logs-m793x8a7.js} +3 -3
  67. package/dist/cli/{ls-0wr74w0b.js → ls-k31npd5b.js} +3 -3
  68. package/dist/cli/{mem-16sy1707.js → mem-jm6kw6gr.js} +5 -5
  69. package/dist/cli/{migrate-k91k050s.js → migrate-95bjkqkr.js} +2 -2
  70. package/dist/cli/{mobile-hpqpy61f.js → mobile-cpp8vfn7.js} +13 -13
  71. package/dist/cli/prerender-26pzynh4.js +13 -0
  72. package/dist/cli/{prettier-dh5fh786.js → prettier-0ws9pbc1.js} +1 -1
  73. package/dist/cli/{ps-pk7ncjac.js → ps-fx8mz3e3.js} +6 -6
  74. package/dist/cli/{psTui-50wf0b72.js → psTui-0e9c7an6.js} +7 -7
  75. package/dist/cli/{remoteMacProtocol-g10s408w.js → remoteMacProtocol-y7h79gr8.js} +7 -7
  76. package/dist/cli/{remove-x987pvd3.js → remove-xhvph8bz.js} +8 -8
  77. package/dist/cli/{routes-mc3ymp8t.js → routes-hq9yje5z.js} +3 -3
  78. package/dist/cli/{start-mbn2zgs2.js → start-5mjh9hh2.js} +5 -5
  79. package/dist/cli/{typecheck-ynzw2eep.js → typecheck-yjme4fv1.js} +36 -14
  80. package/dist/cli/{workspace-7sbyyc59.js → workspace-xeb6abxj.js} +5 -5
  81. package/dist/index.js +446 -90
  82. package/dist/index.js.map +17 -17
  83. package/dist/islands/index.js +312 -23
  84. package/dist/islands/index.js.map +5 -5
  85. package/dist/mobile/index.js +2 -2
  86. package/dist/mobile/index.js.map +3 -3
  87. package/dist/react/browser.js +18 -1
  88. package/dist/react/browser.js.map +6 -4
  89. package/dist/react/components/index.js +2 -2
  90. package/dist/react/components/index.js.map +3 -3
  91. package/dist/react/index.js +361 -61
  92. package/dist/react/index.js.map +13 -12
  93. package/dist/react/server.js +42 -35
  94. package/dist/react/server.js.map +9 -9
  95. package/dist/src/angular/components/constants.d.ts +1 -0
  96. package/dist/src/angular/components/defer-slot-payload.d.ts +5 -0
  97. package/dist/src/cli/scripts/manifestKeysEditorHint.d.ts +9 -0
  98. package/dist/src/constants.d.ts +1 -0
  99. package/dist/src/core/prerender.d.ts +10 -0
  100. package/dist/src/react/browser.d.ts +1 -0
  101. package/dist/src/react/index.d.ts +1 -0
  102. package/dist/src/svelte/lowerAwaitSlotSyntax.d.ts +23 -0
  103. package/dist/src/utils/pageCspNonce.d.ts +14 -0
  104. package/dist/svelte/index.js +363 -68
  105. package/dist/svelte/index.js.map +10 -10
  106. package/dist/svelte/server.js +354 -59
  107. package/dist/svelte/server.js.map +10 -10
  108. package/dist/types/manifest.d.ts +3 -2
  109. package/dist/types/svelte.d.ts +3 -0
  110. package/dist/vue/components/Image.js +2 -2
  111. package/dist/vue/components/Image.js.map +3 -3
  112. package/dist/vue/components/index.js +2 -2
  113. package/dist/vue/components/index.js.map +3 -3
  114. package/dist/vue/index.js +355 -60
  115. package/dist/vue/index.js.map +10 -10
  116. package/dist/vue/server.js +45 -39
  117. package/dist/vue/server.js.map +8 -8
  118. package/package.json +1 -1
  119. package/dist/cli/prerender-w65xp6h8.js +0 -11
  120. /package/dist/cli/{index-t8jmj8w1.js → index-fm9x6sjs.js} +0 -0
@@ -1364,7 +1364,7 @@ var resolveExportPath = (entry, conditions) => {
1364
1364
  var init_resolvePackageImport = () => {};
1365
1365
 
1366
1366
  // src/constants.ts
1367
- 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, HTTP_STATUS_INTERNAL_SERVER_ERROR = 500, 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;
1367
+ 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, HTML_CONTENT_TYPE = "text/html; charset=utf-8", HTTP_STATUS_OK = 200, HTTP_STATUS_BAD_REQUEST = 400, HTTP_STATUS_NOT_FOUND = 404, HTTP_STATUS_GONE = 410, HTTP_STATUS_INTERNAL_SERVER_ERROR = 500, 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;
1368
1368
  var init_constants = __esm(() => {
1369
1369
  TAILWIND_BUN_CSS_WARNING_PATTERN = /invalid @ rule encountered: '@(theme|tailwind|source|utility|variant|custom-variant|apply|reference|plugin|config)'/;
1370
1370
  IMAGE_DEFAULT_DEVICE_SIZES = [
@@ -1492,23 +1492,247 @@ var AWAIT_STREAM_DIRECTIVE = "<!-- absolute:stream -->", DIRECTIVE_RE, BRANCH_TA
1492
1492
  index = markup.indexOf("{", end);
1493
1493
  }
1494
1494
  return tags;
1495
- }, escapeTemplateLiteral = (value) => value.replaceAll("\\", "\\\\").replaceAll("`", "\\`").replaceAll("${", "\\${"), markupToTemplateLiteral = (markup) => {
1496
- const parts = topLevelTags(markup.trim());
1497
- const trimmed = markup.trim();
1498
- let cursor = 0;
1499
- let literal = "";
1500
- for (const { end, start, text } of parts) {
1501
- literal += escapeTemplateLiteral(trimmed.slice(cursor, start));
1502
- literal += `\${${text.slice(1, -1).trim()}}`;
1503
- cursor = end;
1495
+ }, escapeTemplateLiteral = (value) => value.replaceAll("\\", "\\\\").replaceAll("`", "\\`").replaceAll("${", "\\${"), HTML_HELPERS = "__absoluteAwaitHtml", AWAIT_SCOPE_CLASS_PLACEHOLDER = "__absoluteAwaitScopeClass__", AWAIT_HTML_HELPERS_SOURCE, applyAwaitScopeClass = (code, scopeClass) => code.replaceAll(AWAIT_SCOPE_CLASS_PLACEHOLDER, scopeClass), createAwaitScopeClassCapture = () => {
1496
+ let scopeClass = "";
1497
+ const cssHash = ({ css, filename, hash }) => {
1498
+ scopeClass = `svelte-${hash(filename === "(unknown)" ? css : filename ?? css)}`;
1499
+ return scopeClass;
1500
+ };
1501
+ const apply = (code) => applyAwaitScopeClass(code, scopeClass);
1502
+ return { apply, cssHash };
1503
+ }, BOOLEAN_ATTRIBUTES, DIRECTIVE_ATTRIBUTE_RE, ATTRIBUTE_NAME_END_RE, RAW_TEXT_ELEMENTS, helperCall = (name, ...args) => `\${${HTML_HELPERS}.${name}(${args.join(", ")})}`, SHADOW_VALUE, END_TAG_RE, isShadowAttribute = (name) => !DIRECTIVE_ATTRIBUTE_RE.test(name) && !/^on/i.test(name), pushText = (scan, text) => {
1504
+ scan.literal += escapeTemplateLiteral(text);
1505
+ }, readExpressionTag = (scan) => {
1506
+ const end = findTagEnd(scan.source, scan.index);
1507
+ if (end === -1) {
1508
+ fail(scan.filePath, `unterminated tag in the ${scan.branch} branch`);
1509
+ }
1510
+ const inner = scan.source.slice(scan.index + 1, end - 1).trim();
1511
+ scan.index = end;
1512
+ return inner;
1513
+ }, failAttribute = (scan, detail) => fail(scan.filePath, `the ${scan.branch} branch of a streamed {#await} has ${detail}`), atValueEnd = (scan, quote) => {
1514
+ const char = scan.source[scan.index] ?? "";
1515
+ if (quote)
1516
+ return char === quote;
1517
+ return /[\s>]/.test(char) || scan.source.startsWith("/>", scan.index);
1518
+ }, readValueText = (scan, quote) => {
1519
+ const start = scan.index;
1520
+ while (scan.index < scan.source.length && scan.source[scan.index] !== "{" && !atValueEnd(scan, quote)) {
1521
+ scan.index += 1;
1522
+ }
1523
+ return scan.source.slice(start, scan.index);
1524
+ }, readAttributeValue = (scan) => {
1525
+ const { source } = scan;
1526
+ const quote = source[scan.index];
1527
+ const chunks = [];
1528
+ const isQuoted = quote === '"' || quote === "'";
1529
+ if (isQuoted)
1530
+ scan.index += 1;
1531
+ if (!isQuoted && source[scan.index] === "{") {
1532
+ chunks.push({ code: readExpressionTag(scan) });
1533
+ return chunks;
1534
+ }
1535
+ const valueQuote = isQuoted ? quote : undefined;
1536
+ while (scan.index < source.length && !atValueEnd(scan, valueQuote)) {
1537
+ chunks.push({ text: readValueText(scan, valueQuote) });
1538
+ if (source[scan.index] === "{")
1539
+ chunks.push({ code: readExpressionTag(scan) });
1540
+ }
1541
+ if (isQuoted)
1542
+ scan.index += 1;
1543
+ return chunks.filter((chunk) => !("text" in chunk) || chunk.text !== "");
1544
+ }, pushDynamicAttribute = (scan, name, chunks) => {
1545
+ if (DIRECTIVE_ATTRIBUTE_RE.test(name) || /^on/i.test(name)) {
1546
+ failAttribute(scan, `an expression in ${name}= (directives and event handlers need Svelte to run them)`);
1547
+ }
1548
+ const tag = chunks.find((chunk) => ("code" in chunk) && /^[#:/@]/.test(chunk.code));
1549
+ if (tag && "code" in tag) {
1550
+ failAttribute(scan, `{${tag.code}} in the ${name}= attribute`);
1551
+ }
1552
+ if (isShadowAttribute(name))
1553
+ scan.shadow += ` ${name}=${SHADOW_VALUE}`;
1554
+ const isClass = name === "class";
1555
+ if (isClass)
1556
+ scan.hasClass = true;
1557
+ const [only] = chunks;
1558
+ const codes = chunks.flatMap((chunk) => ("code" in chunk) ? [`(${chunk.code})`] : []);
1559
+ if (isClass && chunks.length > 1 && codes.length === chunks.length) {
1560
+ scan.literal += helperCall("class", `${HTML_HELPERS}.join(${codes.join(", ")})`);
1561
+ return;
1562
+ }
1563
+ if (chunks.length === 1 && only && "code" in only) {
1564
+ const value = `(${only.code})`;
1565
+ if (name === "class")
1566
+ scan.literal += helperCall("class", value);
1567
+ else if (name === "style")
1568
+ scan.literal += helperCall("style", value);
1569
+ else
1570
+ scan.literal += helperCall("attr", JSON.stringify(name), value, String(BOOLEAN_ATTRIBUTES.has(name)));
1571
+ return;
1572
+ }
1573
+ pushText(scan, ` ${name}="`);
1574
+ for (const chunk of chunks) {
1575
+ if ("code" in chunk)
1576
+ scan.literal += helperCall("part", `(${chunk.code})`);
1577
+ else
1578
+ pushText(scan, chunk.text.replaceAll('"', "&quot;"));
1579
+ }
1580
+ if (isClass)
1581
+ scan.literal += helperCall("scoped");
1582
+ pushText(scan, '"');
1583
+ }, pushStaticAttribute = (scan, whitespace, name, value) => {
1584
+ if (isShadowAttribute(name))
1585
+ scan.shadow += `${whitespace}${name}=${value}`;
1586
+ if (name !== "class") {
1587
+ pushText(scan, `${whitespace}${name}=${value}`);
1588
+ return;
1589
+ }
1590
+ scan.hasClass = true;
1591
+ const [first = ""] = value;
1592
+ const isQuoted = first === '"' || first === "'";
1593
+ const quote = isQuoted ? first : '"';
1594
+ const classes = isQuoted ? value.slice(1, -1) : value;
1595
+ if (classes === "") {
1596
+ scan.literal += helperCall("class", "''");
1597
+ return;
1598
+ }
1599
+ pushText(scan, `${whitespace}${name}=${quote}${classes}`);
1600
+ scan.literal += helperCall("scoped");
1601
+ pushText(scan, quote);
1602
+ }, readAttributeName = (scan) => {
1603
+ const { source } = scan;
1604
+ const start = scan.index;
1605
+ while (scan.index < source.length && !ATTRIBUTE_NAME_END_RE.test(source[scan.index] ?? "")) {
1606
+ scan.index += 1;
1607
+ }
1608
+ return source.slice(start, scan.index);
1609
+ }, skipWhitespace = (scan) => {
1610
+ const start = scan.index;
1611
+ while (/\s/.test(scan.source[scan.index] ?? ""))
1612
+ scan.index += 1;
1613
+ return scan.source.slice(start, scan.index);
1614
+ }, pushTagExpression = (scan) => {
1615
+ const inner = readExpressionTag(scan);
1616
+ if (!/^[A-Za-z_$][\w$]*$/.test(inner)) {
1617
+ failAttribute(scan, `{${inner}} in a start tag`);
1618
+ }
1619
+ pushDynamicAttribute(scan, inner, [{ code: inner }]);
1620
+ }, pushAttribute = (scan) => {
1621
+ const { source } = scan;
1622
+ const whitespace = skipWhitespace(scan);
1623
+ const closing = source.startsWith("/>", scan.index) ? "/>" : ">";
1624
+ const isEnd = scan.index >= source.length;
1625
+ if (isEnd || source.startsWith(closing, scan.index)) {
1626
+ if (!scan.hasClass)
1627
+ scan.literal += helperCall("scope");
1628
+ const tagEnd = isEnd ? "" : closing;
1629
+ pushText(scan, whitespace + tagEnd);
1630
+ scan.shadow += whitespace + (isEnd ? ">" : closing);
1631
+ scan.index += tagEnd.length;
1632
+ return false;
1633
+ }
1634
+ if (source[scan.index] === "{") {
1635
+ pushTagExpression(scan);
1636
+ return true;
1637
+ }
1638
+ const name = readAttributeName(scan);
1639
+ if (!name) {
1640
+ pushText(scan, whitespace + (source[scan.index] ?? ""));
1641
+ scan.index += 1;
1642
+ return true;
1504
1643
  }
1505
- literal += escapeTemplateLiteral(trimmed.slice(cursor));
1506
- return `\`${literal}\``;
1644
+ const beforeEquals = scan.index;
1645
+ skipWhitespace(scan);
1646
+ if (source[scan.index] !== "=") {
1647
+ scan.index = beforeEquals;
1648
+ pushText(scan, whitespace + name);
1649
+ if (isShadowAttribute(name))
1650
+ scan.shadow += whitespace + name;
1651
+ return true;
1652
+ }
1653
+ scan.index += 1;
1654
+ skipWhitespace(scan);
1655
+ const valueStart = scan.index;
1656
+ const chunks = readAttributeValue(scan);
1657
+ if (chunks.some((chunk) => ("code" in chunk))) {
1658
+ pushDynamicAttribute(scan, name, chunks);
1659
+ return true;
1660
+ }
1661
+ pushStaticAttribute(scan, whitespace, name, source.slice(valueStart, scan.index));
1662
+ return true;
1663
+ }, pushStartTag = (scan) => {
1664
+ const { source } = scan;
1665
+ const nameMatch = source.slice(scan.index + 1).match(/^[^\s/>{]+/);
1666
+ const tagName = nameMatch?.[0] ?? "";
1667
+ pushText(scan, `<${tagName}`);
1668
+ scan.shadow += `<${tagName}`;
1669
+ scan.hasClass = RAW_TEXT_ELEMENTS.has(tagName.toLowerCase());
1670
+ scan.index += 1 + tagName.length;
1671
+ while (pushAttribute(scan))
1672
+ ;
1673
+ return tagName.toLowerCase();
1674
+ }, pushRawText = (scan, tagName, shadowStart) => {
1675
+ const { source } = scan;
1676
+ const close = source.toLowerCase().indexOf(`</${tagName}`, scan.index);
1677
+ const closeEnd = close === -1 ? -1 : source.indexOf(">", close);
1678
+ const end = closeEnd === -1 ? source.length : closeEnd + 1;
1679
+ pushText(scan, source.slice(scan.index, end));
1680
+ scan.shadow = scan.shadow.slice(0, shadowStart);
1681
+ scan.index = end;
1682
+ }, pushTextExpression = (scan) => {
1683
+ const inner = readExpressionTag(scan);
1684
+ const rawHtml = inner.match(/^@html\s([\s\S]*)$/);
1685
+ if (rawHtml) {
1686
+ scan.literal += helperCall("html", `(${(rawHtml[1] ?? "").trim()})`);
1687
+ return;
1688
+ }
1689
+ scan.literal += helperCall("text", `(${inner})`);
1690
+ }, pushComment = (scan) => {
1691
+ const close = scan.source.indexOf("-->", scan.index + "<!--".length);
1692
+ const end = close === -1 ? scan.source.length : close + "-->".length;
1693
+ pushText(scan, scan.source.slice(scan.index, end));
1694
+ scan.index = end;
1695
+ }, scanTextPosition = (scan) => {
1696
+ const { index, source } = scan;
1697
+ if (source.startsWith("<!--", index)) {
1698
+ pushComment(scan);
1699
+ return;
1700
+ }
1701
+ if (source[index] === "<" && /[A-Za-z]/.test(source[index + 1] ?? "")) {
1702
+ const shadowStart = scan.shadow.length;
1703
+ const tagName = pushStartTag(scan);
1704
+ if (RAW_TEXT_ELEMENTS.has(tagName))
1705
+ pushRawText(scan, tagName, shadowStart);
1706
+ return;
1707
+ }
1708
+ if (source[index] === "{") {
1709
+ pushTextExpression(scan);
1710
+ return;
1711
+ }
1712
+ const next = source.slice(index + 1).search(/[<{]/);
1713
+ const end = next === -1 ? source.length : index + 1 + next;
1714
+ const text = source.slice(index, end);
1715
+ pushText(scan, text);
1716
+ scan.shadow += (text.match(END_TAG_RE) ?? []).join("");
1717
+ scan.index = end;
1718
+ }, lowerBranch = (markup, branch, filePath) => {
1719
+ const scan = {
1720
+ branch,
1721
+ filePath,
1722
+ hasClass: false,
1723
+ index: 0,
1724
+ literal: "",
1725
+ shadow: "",
1726
+ source: markup.trim()
1727
+ };
1728
+ while (scan.index < scan.source.length)
1729
+ scanTextPosition(scan);
1730
+ return { literal: `\`${scan.literal}\``, shadow: scan.shadow };
1507
1731
  }, fail = (filePath, message) => {
1508
1732
  throw new Error(`${filePath ? `${filePath}: ` : ""}${message} (${AWAIT_STREAM_DIRECTIVE} streams plain HTML; remove the directive to let Svelte render the block and hydrate it)`);
1509
1733
  }, assertPlainHtml = (markup, branch, filePath) => {
1510
1734
  const withoutExpressions = topLevelTags(markup).reduceRight((text, { end, start }) => text.slice(0, start) + text.slice(end), markup);
1511
- const nestedTag = topLevelTags(markup).find(({ text }) => /^\{[#:/@]/.test(text));
1735
+ const nestedTag = topLevelTags(markup).find(({ text }) => /^\{(?:[#:/]|@(?!html\s))/.test(text));
1512
1736
  if (nestedTag || SVELTE_ONLY_MARKUP_RE.test(withoutExpressions)) {
1513
1737
  fail(filePath, `the ${branch} branch of a streamed {#await} holds Svelte markup (${nestedTag?.text ?? withoutExpressions.match(SVELTE_ONLY_MARKUP_RE)?.[0]}\u2026)`);
1514
1738
  }
@@ -1552,12 +1776,16 @@ var AWAIT_STREAM_DIRECTIVE = "<!-- absolute:stream -->", DIRECTIVE_RE, BRANCH_TA
1552
1776
  thenIdentifier: thenMatch?.[2],
1553
1777
  thenMarkup
1554
1778
  };
1555
- }, renderSlot = (block, slotId, dynamic) => {
1779
+ }, renderSlot = (block, slotId, dynamic, filePath) => {
1556
1780
  const thenValueIdentifier = block.thenIdentifier ?? "__awaitValue";
1557
1781
  const catchValueIdentifier = block.catchIdentifier ?? "__awaitError";
1558
- const catchBranch = block.catchMarkup === undefined ? "catch (_absoluteAwaitError) { throw _absoluteAwaitError; }" : `catch (${catchValueIdentifier}) { return ${markupToTemplateLiteral(block.catchMarkup)}; }`;
1559
- return `<AbsoluteAwaitSlot id="${slotId}"${dynamic ? " dynamic" : ""} fallbackHtml={${markupToTemplateLiteral(block.pendingMarkup)}} resolve={async () => { try { const ${thenValueIdentifier} = await (${block.expression}); return ${markupToTemplateLiteral(block.thenMarkup)}; } ${catchBranch} }} />`;
1560
- }, IMPORT_LINE = 'import AbsoluteAwaitSlot from "@absolutejs/absolute/svelte/components/AwaitSlot.svelte";', lowerSvelteAwaitSlotSyntax = (source, filePath) => {
1782
+ const pending = lowerBranch(block.pendingMarkup, "pending", filePath);
1783
+ const then = lowerBranch(block.thenMarkup, "then", filePath);
1784
+ const caught = block.catchMarkup === undefined ? undefined : lowerBranch(block.catchMarkup, "catch", filePath);
1785
+ const catchBranch = caught ? `catch (${catchValueIdentifier}) { return ${caught.literal}; }` : "catch (_absoluteAwaitError) { throw _absoluteAwaitError; }";
1786
+ const shadows = [pending, then, caught].map((branch) => branch ? `<svelte:element this={'div'} data-absolute-slot="true">${branch.shadow}</svelte:element>` : "").join("");
1787
+ return `<AbsoluteAwaitSlot id="${slotId}"${dynamic ? " dynamic" : ""} fallbackHtml={${pending.literal}} resolve={async () => { try { const ${thenValueIdentifier} = await (${block.expression}); return ${then.literal}; } ${catchBranch} }} />{#if ${HTML_HELPERS}.shadow}${shadows}{/if}`;
1788
+ }, IMPORT_LINE = 'import AbsoluteAwaitSlot from "@absolutejs/absolute/svelte/components/AwaitSlot.svelte";', INJECTED_SCRIPT, lowerSvelteAwaitSlotSyntax = (source, filePath) => {
1561
1789
  if (!source.includes("absolute:stream")) {
1562
1790
  return { code: source, transformed: false };
1563
1791
  }
@@ -1572,7 +1800,7 @@ var AWAIT_STREAM_DIRECTIVE = "<!-- absolute:stream -->", DIRECTIVE_RE, BRANCH_TA
1572
1800
  const slotId = `absolute-svelte-await-${awaitIndex.toString(BASE_36_RADIX)}`;
1573
1801
  awaitIndex += 1;
1574
1802
  lowered += source.slice(cursor, directive.index);
1575
- lowered += renderSlot(block, slotId, directive[1] !== undefined);
1803
+ lowered += renderSlot(block, slotId, directive[1] !== undefined, filePath);
1576
1804
  cursor = block.end;
1577
1805
  }
1578
1806
  if (awaitIndex === 0) {
@@ -1582,14 +1810,14 @@ var AWAIT_STREAM_DIRECTIVE = "<!-- absolute:stream -->", DIRECTIVE_RE, BRANCH_TA
1582
1810
  if (lowered.includes("<script")) {
1583
1811
  return {
1584
1812
  code: lowered.replace(/<script(\s[^>]*)?>/, (match) => `${match}
1585
- ${IMPORT_LINE}
1813
+ ${INJECTED_SCRIPT}
1586
1814
  `),
1587
1815
  transformed: true
1588
1816
  };
1589
1817
  }
1590
1818
  return {
1591
1819
  code: `<script lang="ts">
1592
- ${IMPORT_LINE}
1820
+ ${INJECTED_SCRIPT}
1593
1821
  </script>
1594
1822
  ${lowered}`,
1595
1823
  transformed: true
@@ -1601,6 +1829,64 @@ var init_lowerAwaitSlotSyntax = __esm(() => {
1601
1829
  BRANCH_TAG_RE = /^\{:(then|catch)(?:\s+([A-Za-z_$][\w$]*))?\s*\}$/;
1602
1830
  SVELTE_ONLY_MARKUP_RE = /\{[#:/@]|<[A-Z]|<svelte:/;
1603
1831
  QUOTES = new Set(['"', "'", "`"]);
1832
+ AWAIT_HTML_HELPERS_SOURCE = [
1833
+ `const ${HTML_HELPERS} = (() => {`,
1834
+ ` const scope = ${JSON.stringify(AWAIT_SCOPE_CLASS_PLACEHOLDER)};`,
1835
+ ` const escape = (value, isAttr) => String(value ?? '').replace(isAttr ? /[&"<]/g : /[&<]/g, (char) => char === '&' ? '&amp;' : char === '"' ? '&quot;' : '&lt;');`,
1836
+ "\tconst stringify = (value) => typeof value === 'string' ? value : value == null ? '' : value + '';",
1837
+ "\tconst classNames = (value) => { if (Array.isArray(value)) return value.filter(Boolean).map(classNames).filter(Boolean).join(' '); if (value && typeof value === 'object') return Object.keys(value).filter((key) => value[key]).join(' '); return typeof value === 'string' || typeof value === 'number' ? String(value) : ''; };",
1838
+ "\treturn {",
1839
+ ` attr: (name, value, isBoolean) => { const boolean = isBoolean || (name === 'hidden' && value !== 'until-found'); if (value == null || (!value && boolean)) return ''; const normalized = name === 'translate' && typeof value === 'boolean' ? (value ? 'yes' : 'no') : value; return boolean ? ' ' + name + '=""' : ' ' + name + '="' + escape(normalized, true) + '"'; },`,
1840
+ ` class: (value) => { const resolved = typeof value === 'object' ? classNames(value) : value ?? ''; let name = '' + resolved; if (scope) name = name ? name + ' ' + scope : scope; return name ? ' class="' + escape(name, true) + '"' : ''; },`,
1841
+ "\t\thtml: (value) => String(value ?? ''),",
1842
+ "\t\tjoin: (...values) => values.map(stringify).join(''),",
1843
+ "\t\tpart: (value) => escape(stringify(value), true),",
1844
+ ` scope: () => scope ? ' class="' + scope + '"' : '',`,
1845
+ "\t\tscoped: () => scope ? ' ' + scope : '',",
1846
+ "\t\tshadow: false,",
1847
+ ` style: (value) => { const style = value == null ? '' : String(value); return style ? ' style="' + escape(style, true) + '"' : ''; },`,
1848
+ "\t\ttext: (value) => escape(value, false)",
1849
+ "\t};",
1850
+ "})();"
1851
+ ].join(`
1852
+ `);
1853
+ BOOLEAN_ATTRIBUTES = new Set([
1854
+ "allowfullscreen",
1855
+ "async",
1856
+ "autofocus",
1857
+ "autoplay",
1858
+ "checked",
1859
+ "controls",
1860
+ "default",
1861
+ "defer",
1862
+ "disabled",
1863
+ "disablepictureinpicture",
1864
+ "disableremoteplayback",
1865
+ "formnovalidate",
1866
+ "indeterminate",
1867
+ "inert",
1868
+ "ismap",
1869
+ "loop",
1870
+ "multiple",
1871
+ "muted",
1872
+ "nomodule",
1873
+ "novalidate",
1874
+ "open",
1875
+ "playsinline",
1876
+ "readonly",
1877
+ "required",
1878
+ "reversed",
1879
+ "seamless",
1880
+ "selected",
1881
+ "webkitdirectory"
1882
+ ]);
1883
+ DIRECTIVE_ATTRIBUTE_RE = /^(?:animate|bind|class|in|let|on|out|style|transition|use):/;
1884
+ ATTRIBUTE_NAME_END_RE = /[\s=>/{]/;
1885
+ RAW_TEXT_ELEMENTS = new Set(["script", "style"]);
1886
+ SHADOW_VALUE = `{${HTML_HELPERS}.shadow}`;
1887
+ END_TAG_RE = /<\/[A-Za-z][^\s>]*\s*>/g;
1888
+ INJECTED_SCRIPT = `${IMPORT_LINE}
1889
+ ${AWAIT_HTML_HELPERS_SOURCE}`;
1604
1890
  });
1605
1891
 
1606
1892
  // src/build/stylePreprocessor.ts
@@ -2372,15 +2658,18 @@ var serverCacheRoot2, compiledModuleCache2, originalSourcePathCache, syncIslandG
2372
2658
  for (const [spec, resolvedModuleImport] of rewrittenModulePaths) {
2373
2659
  transpiled = replaceQuotedSpecifier(transpiled, spec, resolvedModuleImport);
2374
2660
  }
2375
- let compiledCode = compile(transpiled, {
2661
+ const scopeClass = createAwaitScopeClassCapture();
2662
+ const compiledServer = compile(transpiled, {
2376
2663
  css: "injected",
2664
+ cssHash: scopeClass.cssHash,
2377
2665
  experimental: {
2378
2666
  async: loweredAwaitSource.transformed || loweredSource.transformed
2379
2667
  },
2380
2668
  filename: resolutionSourcePath,
2381
2669
  generate: "server",
2382
2670
  hmr: isDevelopmentRuntime()
2383
- }).js.code;
2671
+ });
2672
+ let compiledCode = scopeClass.apply(compiledServer.js.code);
2384
2673
  for (const [spec, compiledChildPath] of childModulePaths) {
2385
2674
  compiledCode = replaceQuotedSpecifier(compiledCode, spec, ensureRelativeImportPath(getCachedModulePath2(sourcePath), compiledChildPath));
2386
2675
  }
@@ -2853,5 +3142,5 @@ export {
2853
3142
  renderIslandMarkup
2854
3143
  };
2855
3144
 
2856
- //# debugId=DD743F6ECCD5B2B564756E2164756E21
3145
+ //# debugId=67ED53C837B4A77E64756E2164756E21
2857
3146
  //# sourceMappingURL=index.js.map