@absolutejs/absolute 0.20.0-beta.169 → 0.20.0-beta.170
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/CHANGELOG.md +80 -0
- package/README.md +232 -0
- package/changelog.json +228 -0
- package/dist/angular/browser.js +7 -8
- package/dist/angular/browser.js.map +6 -5
- package/dist/angular/components/core/streamingSlotRegistrar.js +6 -2
- package/dist/angular/components/core/streamingSlotRegistry.js +7 -3
- package/dist/angular/index.js +555 -156
- package/dist/angular/index.js.map +29 -23
- package/dist/angular/server.js +555 -156
- package/dist/angular/server.js.map +29 -23
- package/dist/build/buildWorker.js +14 -8
- package/dist/build.js +4949 -1941
- package/dist/build.js.map +72 -42
- package/dist/cli/{add-7azr0c83.js → add-6a7pjkn9.js} +11 -7
- package/dist/cli/{analyze-3cyek6v3.js → analyze-606fshwa.js} +1 -1
- package/dist/cli/{build-25rz8v25.js → build-g81xqbb9.js} +1 -1
- package/dist/cli/{compile-4jnfxts9.js → compile-9y1w9zpj.js} +3 -3
- package/dist/cli/config/server.js +10699 -1538
- package/dist/cli/{dev-9tk5hn2e.js → dev-hyeb89hp.js} +5 -1
- package/dist/cli/{doctor-4nv2c2j3.js → doctor-h55y9hj1.js} +1 -1
- package/dist/cli/{generate-v75p2fct.js → generate-20x1pkf7.js} +4 -4
- package/dist/cli/{htmx-427swtdz.js → htmx-6mz2h7k1.js} +2 -2
- package/dist/cli/{index-bhbs6d5z.js → index-32ge2w1f.js} +12 -4
- package/dist/cli/{index-a4ws2jwd.js → index-3wz3mktm.js} +1 -1
- package/dist/cli/{index-b7hjgknf.js → index-9sksd8c8.js} +13 -4
- package/dist/cli/{index-eyzwc7gz.js → index-qbrzvmh9.js} +4 -2
- package/dist/cli/index-qw98g1p6.js +269 -0
- package/dist/cli/{index-434b7j4a.js → index-vtp20gwf.js} +69 -1
- package/dist/cli/{index-h7qhz02e.js → index-wk0pyxrg.js} +3 -0
- package/dist/cli/{index-k3y8cb6c.js → index-z6f43b20.js} +1 -1
- package/dist/cli/index.js +16 -16
- package/dist/cli/{islands-8sgky9gh.js → islands-dc54e5y1.js} +1 -1
- package/dist/cli/{ls-4m4yqwww.js → ls-b6zz24nt.js} +1 -1
- package/dist/cli/{mobile-hcxjr2gf.js → mobile-ajnnvqtv.js} +3 -3
- package/dist/cli/prerender-fqpp0m1j.js +10 -0
- package/dist/cli/{remove-1ycjx85k.js → remove-t8x1mrxg.js} +4 -4
- package/dist/cli/{start-mbaejxhm.js → start-d6p831ny.js} +3 -3
- package/dist/cli/{typecheck-dr068pmh.js → typecheck-stbt0qt5.js} +6 -1
- package/dist/cli/{workspace-1sycp9g1.js → workspace-61hh6jq1.js} +1 -1
- package/dist/client/chunks/index-6b66nzyf.js +381 -0
- package/dist/client/chunks/index-6b66nzyf.js.map +11 -0
- package/dist/client/chunks/{islands-rc28k5sx.js → islands-s2ta5ajb.js} +5 -2
- package/dist/client/chunks/{islands-rc28k5sx.js.map → islands-s2ta5ajb.js.map} +7 -6
- package/dist/client/index.js +160 -3
- package/dist/client/index.js.map +6 -4
- package/dist/client/navigation.js +764 -0
- package/dist/client/navigation.js.map +10 -0
- package/dist/client/prefetch.js +33 -375
- package/dist/client/prefetch.js.map +3 -4
- package/dist/core/streamingSlotRegistrar.js +5 -2
- package/dist/core/streamingSlotRegistrar.js.map +5 -4
- package/dist/core/streamingSlotRegistry.js +5 -2
- package/dist/core/streamingSlotRegistry.js.map +5 -4
- package/dist/dev/client/cspNonce.ts +28 -0
- package/dist/dev/client/handlers/html.ts +4 -3
- package/dist/dev/client/handlers/htmx.ts +3 -2
- package/dist/dev/client/handlers/svelte.ts +15 -90
- package/dist/dev/client/syncDevtools.ts +2 -1
- package/dist/dev/serverBootstrap.js +11 -4
- package/dist/i18n/index.js +543 -0
- package/dist/i18n/index.js.map +15 -0
- package/dist/index.js +6339 -2233
- package/dist/index.js.map +89 -54
- package/dist/islands/index.js +282 -40
- package/dist/islands/index.js.map +14 -10
- package/dist/mobile/browser.js +7 -2
- package/dist/mobile/browser.js.map +5 -4
- package/dist/mobile/index.js +7 -2
- package/dist/mobile/index.js.map +5 -4
- package/dist/mobile/remoteMacAgentEntry.js +1 -1
- package/dist/react/components/browser/index.js +94 -4
- package/dist/react/components/index.js +150 -10
- package/dist/react/components/index.js.map +15 -10
- package/dist/react/hooks/index.js +479 -13
- package/dist/react/hooks/index.js.map +12 -4
- package/dist/react/index.js +769 -166
- package/dist/react/index.js.map +32 -21
- package/dist/react/router/browser.js +21 -4
- package/dist/react/router/browser.js.map +5 -4
- package/dist/react/router/index.js +21 -4
- package/dist/react/router/index.js.map +5 -4
- package/dist/react/server.js +597 -203
- package/dist/react/server.js.map +25 -15
- package/dist/src/angular/zoneRuntime.d.ts +5 -0
- package/dist/src/build/buildReactServerComponents.d.ts +22 -0
- package/dist/src/build/downlevelAsyncForZone.d.ts +1 -0
- package/dist/src/build/fileRoutes.d.ts +65 -0
- package/dist/src/build/fonts/buildFonts.d.ts +25 -0
- package/dist/src/build/fonts/fallbackMetrics.d.ts +13 -0
- package/dist/src/build/fonts/googleFonts.d.ts +18 -0
- package/dist/src/build/fonts/injectFontTags.d.ts +7 -0
- package/dist/src/build/fonts/parseFontMetrics.d.ts +4 -0
- package/dist/src/build/generateReactIndexes.d.ts +7 -1
- package/dist/src/build/htmlIncludes.d.ts +16 -0
- package/dist/src/build/inlineSourceMapComment.d.ts +1 -0
- package/dist/src/build/scanConventions.d.ts +3 -0
- package/dist/src/build/vitals.d.ts +21 -0
- package/dist/src/client/formActions.d.ts +29 -0
- package/dist/src/client/index.d.ts +2 -0
- package/dist/src/client/navigation.d.ts +16 -0
- package/dist/src/client/prefetch.d.ts +2 -30
- package/dist/src/core/build.d.ts +2 -2
- package/dist/src/core/cspNonce.d.ts +12 -0
- package/dist/src/core/fileRouteAdapter.d.ts +15 -0
- package/dist/src/core/fileRoutes.d.ts +5 -0
- package/dist/src/core/formActionFlash.d.ts +25 -0
- package/dist/src/core/formActions.d.ts +249 -0
- package/dist/src/core/index.d.ts +5 -0
- package/dist/src/core/partialPrerender.d.ts +28 -0
- package/dist/src/core/partialPrerenderServe.d.ts +24 -0
- package/dist/src/core/precompressed.d.ts +11 -1
- package/dist/src/core/prerenderNonce.d.ts +9 -0
- package/dist/src/core/productionRuntime.d.ts +4 -2
- package/dist/src/core/serverOnlyStaticFiles.d.ts +8 -0
- package/dist/src/core/staticHtmlNonce.d.ts +2 -0
- package/dist/src/core/vitals.d.ts +108 -0
- package/dist/src/dev/angular/fastHmrCompiler.d.ts +1 -1
- package/dist/src/dev/client/cspNonce.d.ts +2 -0
- package/dist/src/dev/fileRouteRefresher.d.ts +5 -0
- package/dist/src/dev/importCost/instrument.d.ts +1 -1
- package/dist/src/dev/reactServerComponentsRebuild.d.ts +3 -0
- package/dist/src/i18n/defineMessages.d.ts +5 -0
- package/dist/src/i18n/formatMessage.d.ts +26 -0
- package/dist/src/i18n/index.d.ts +6 -0
- package/dist/src/i18n/intlCache.d.ts +5 -0
- package/dist/src/i18n/routing.d.ts +28 -0
- package/dist/src/i18n/translator.d.ts +11 -0
- package/dist/src/mobile/androidRelease.d.ts +2 -2
- package/dist/src/mobile/iosRelease.d.ts +4 -4
- package/dist/src/mobile/materializedBundle.d.ts +1 -1
- package/dist/src/mobile/mobileInspect.d.ts +1 -1
- package/dist/src/mobile/releaseArtifact.d.ts +2 -2
- package/dist/src/mobile/remoteMacProtocol.d.ts +2 -2
- package/dist/src/plugins/i18n.d.ts +30 -0
- package/dist/src/plugins/index.d.ts +2 -1
- package/dist/src/plugins/secureHeaders.d.ts +48 -0
- package/dist/src/react/components/Head.d.ts +1 -1
- package/dist/src/react/components/StreamSlot.browser.d.ts +1 -0
- package/dist/src/react/components/StreamSlot.d.ts +5 -1
- package/dist/src/react/components/SuspenseSlot.browser.d.ts +2 -0
- package/dist/src/react/components/SuspenseSlot.d.ts +12 -0
- package/dist/src/react/fileRoute.d.ts +18 -0
- package/dist/src/react/hooks/index.d.ts +4 -0
- package/dist/src/react/hooks/useFormAction.d.ts +42 -0
- package/dist/src/react/hooks/useI18n.d.ts +15 -0
- package/dist/src/react/index.d.ts +2 -0
- package/dist/src/react/server.d.ts +2 -0
- package/dist/src/react/serverComponents/constants.d.ts +11 -0
- package/dist/src/react/serverComponents/flightPayload.d.ts +2 -0
- package/dist/src/react/serverComponents/pageHandler.d.ts +14 -0
- package/dist/src/svelte/browser.d.ts +1 -0
- package/dist/src/svelte/fileRoute.d.ts +15 -0
- package/dist/src/svelte/i18n.d.ts +8 -0
- package/dist/src/svelte/index.d.ts +2 -0
- package/dist/src/svelte/lowerAwaitSlotSyntax.d.ts +5 -1
- package/dist/src/svelte/renderToReadableStream.d.ts +10 -2
- package/dist/src/svelte/router/browser.d.ts +3 -1
- package/dist/src/svelte/router/goto.d.ts +13 -10
- package/dist/src/svelte/router/guards.d.ts +43 -0
- package/dist/src/svelte/router/index.d.ts +3 -1
- package/dist/src/svelte/router/lazy.d.ts +17 -0
- package/dist/src/svelte/router/lazyModule.d.ts +29 -0
- package/dist/src/svelte/router/navigation.d.ts +55 -0
- package/dist/src/svelte/router/pushState.d.ts +4 -2
- package/dist/src/svelte/router/scroll.d.ts +34 -0
- package/dist/src/svelte/routerSsr.d.ts +9 -0
- package/dist/src/svelte/server.d.ts +1 -0
- package/dist/src/utils/cspNonceRef.d.ts +8 -0
- package/dist/src/utils/fontAssets.d.ts +17 -0
- package/dist/src/utils/formActionProtocol.d.ts +10 -0
- package/dist/src/utils/generateHeadElement.d.ts +1 -1
- package/dist/src/utils/index.d.ts +1 -0
- package/dist/src/utils/inlinePageCss.d.ts +18 -0
- package/dist/src/utils/loadConfig.d.ts +5 -0
- package/dist/src/utils/localeRef.d.ts +10 -0
- package/dist/src/utils/resolveConvention.d.ts +6 -1
- package/dist/src/utils/streamingSlots.d.ts +5 -0
- package/dist/src/vue/browser.d.ts +2 -0
- package/dist/src/vue/components/Image.d.ts +2 -2
- package/dist/src/vue/index.d.ts +2 -0
- package/dist/src/vue/serverDataPayload.d.ts +32 -0
- package/dist/src/vue/serverDataState.d.ts +9 -0
- package/dist/src/vue/useServerData.browser.d.ts +6 -0
- package/dist/src/vue/useServerData.d.ts +24 -0
- package/dist/svelte/browser.js +330 -3
- package/dist/svelte/browser.js.map +8 -4
- package/dist/svelte/components/AwaitSlot.svelte +5 -0
- package/dist/svelte/components/Head.svelte +50 -0
- package/dist/svelte/components/JsonLd.svelte +9 -1
- package/dist/svelte/components/StreamSlot.svelte +5 -0
- package/dist/svelte/index.js +1017 -117
- package/dist/svelte/index.js.map +38 -24
- package/dist/svelte/router/Link.svelte +40 -8
- package/dist/svelte/router/Route.svelte +157 -12
- package/dist/svelte/router/Route.svelte.d.ts +39 -5
- package/dist/svelte/router/Router.svelte +140 -25
- package/dist/svelte/router/Router.svelte.d.ts +5 -1
- package/dist/svelte/router/browser.ts +10 -0
- package/dist/svelte/router/goto.ts +15 -86
- package/dist/svelte/router/guards.ts +112 -0
- package/dist/svelte/router/index.ts +10 -0
- package/dist/svelte/router/lazy.ts +82 -0
- package/dist/svelte/router/lazyModule.ts +74 -0
- package/dist/svelte/router/navigation.ts +412 -0
- package/dist/svelte/router/pushState.ts +7 -4
- package/dist/svelte/router/scroll.ts +286 -0
- package/dist/svelte/server.js +747 -252
- package/dist/svelte/server.js.map +30 -20
- package/dist/types/angular.d.ts +2 -0
- package/dist/types/build.d.ts +37 -0
- package/dist/types/conventions.d.ts +3 -0
- package/dist/types/fileRoutes.d.ts +72 -0
- package/dist/types/fonts.d.ts +86 -0
- package/dist/types/formAction.d.ts +54 -0
- package/dist/types/globals.d.ts +10 -0
- package/dist/types/i18n.d.ts +185 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/metadata.d.ts +11 -0
- package/dist/types/navigation.d.ts +37 -0
- package/dist/types/prefetch.d.ts +10 -0
- package/dist/types/sitemap.d.ts +4 -0
- package/dist/types/svelteRouter.d.ts +89 -2
- package/dist/types/svelteRouter.ts +112 -2
- package/dist/types/vue.d.ts +46 -1
- package/dist/utils/iconVersion.ts +34 -0
- package/dist/vue/browser.js +107 -11
- package/dist/vue/browser.js.map +7 -4
- package/dist/vue/components/index.js +5 -2
- package/dist/vue/components/index.js.map +5 -4
- package/dist/vue/index.js +712 -158
- package/dist/vue/index.js.map +32 -23
- package/dist/vue/server.js +310 -79
- package/dist/vue/server.js.map +20 -15
- package/package.json +9 -1
- package/dist/cli/prerender-mfnwsvyt.js +0 -7
- package/dist/src/plugins/pageRouter.d.ts +0 -1
- /package/dist/cli/{index-j7m8pq48.js → index-rervww4p.js} +0 -0
|
@@ -72,6 +72,51 @@ var __esm = (fn, res, err) => () => {
|
|
|
72
72
|
};
|
|
73
73
|
var __require = import.meta.require;
|
|
74
74
|
|
|
75
|
+
// src/utils/cspNonceRef.ts
|
|
76
|
+
var GETTER_KEY, nonceAttr = (nonce = readCspNonce()) => nonce ? ` nonce="${nonce}"` : "", nonceSvelteHeadStyles = (head, nonce = readCspNonce()) => nonce ? head.replace(/<style(?=\s+id="svelte-[^"]*")(?![^>]*\snonce=)/g, `<style nonce="${nonce}"`) : head, readCspNonce = () => {
|
|
77
|
+
const getter = Reflect.get(globalThis, GETTER_KEY);
|
|
78
|
+
if (typeof getter !== "function")
|
|
79
|
+
return;
|
|
80
|
+
const nonce = getter();
|
|
81
|
+
return typeof nonce === "string" ? nonce : undefined;
|
|
82
|
+
}, registerCspNonceGetter = (getter) => {
|
|
83
|
+
Reflect.set(globalThis, GETTER_KEY, getter);
|
|
84
|
+
};
|
|
85
|
+
var init_cspNonceRef = __esm(() => {
|
|
86
|
+
GETTER_KEY = Symbol.for("absolutejs.cspNonceGetter");
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
// src/utils/fontAssets.ts
|
|
90
|
+
var FONT_PRELOAD_MANIFEST_PREFIX = "AbsoluteFontPreload", FONTS_CSS_MANIFEST_KEY = "AbsoluteFontsCSS", FONTS_REMOTE_CSS_MANIFEST_PREFIX = "AbsoluteFontsRemoteCSS", MIME_BY_EXTENSION, numberedValues = (manifest, prefix) => Object.keys(manifest).filter((key) => key.startsWith(prefix)).map((key) => ({
|
|
91
|
+
index: Number(key.slice(prefix.length)),
|
|
92
|
+
value: manifest[key]
|
|
93
|
+
})).filter((entry) => Number.isInteger(entry.index) && entry.value !== undefined).sort((left, right) => left.index - right.index).map((entry) => entry.value), fontAssets = (manifest) => {
|
|
94
|
+
const stylesheet = manifest[FONTS_CSS_MANIFEST_KEY];
|
|
95
|
+
const assets = {
|
|
96
|
+
preload: numberedValues(manifest, FONT_PRELOAD_MANIFEST_PREFIX),
|
|
97
|
+
stylesheets: [
|
|
98
|
+
...numberedValues(manifest, FONTS_REMOTE_CSS_MANIFEST_PREFIX),
|
|
99
|
+
...stylesheet ? [stylesheet] : []
|
|
100
|
+
]
|
|
101
|
+
};
|
|
102
|
+
return assets;
|
|
103
|
+
}, fontMimeType = (href) => {
|
|
104
|
+
const extension = /\.([a-z0-9]+)(?:[?#].*)?$/i.exec(href)?.[1]?.toLowerCase();
|
|
105
|
+
return (extension && MIME_BY_EXTENSION[extension]) ?? "font/woff2";
|
|
106
|
+
}, escapeAttribute = (value) => value.replace(/&/g, "&").replace(/"/g, """), isRemote = (href) => /^https?:\/\//i.test(href), fontPreconnectOrigins = (fonts) => fonts.stylesheets.some(isRemote) ? ["https://fonts.googleapis.com", "https://fonts.gstatic.com"] : [], renderFontTags = (fonts) => [
|
|
107
|
+
...fontPreconnectOrigins(fonts).map((origin) => origin.includes("gstatic") ? `<link rel="preconnect" href="${origin}" crossorigin>` : `<link rel="preconnect" href="${origin}">`),
|
|
108
|
+
...fonts.preload.map((href) => `<link rel="preload" href="${escapeAttribute(href)}" as="font" type="${fontMimeType(href)}" crossorigin>`),
|
|
109
|
+
...fonts.stylesheets.map((href) => `<link rel="stylesheet" href="${escapeAttribute(href)}" data-absolute-fonts>`)
|
|
110
|
+
];
|
|
111
|
+
var init_fontAssets = __esm(() => {
|
|
112
|
+
MIME_BY_EXTENSION = {
|
|
113
|
+
otf: "font/otf",
|
|
114
|
+
ttf: "font/ttf",
|
|
115
|
+
woff: "font/woff",
|
|
116
|
+
woff2: "font/woff2"
|
|
117
|
+
};
|
|
118
|
+
});
|
|
119
|
+
|
|
75
120
|
// src/utils/iconVersion.ts
|
|
76
121
|
var iconMimeType = (icon) => {
|
|
77
122
|
if (icon.endsWith(".svg"))
|
|
@@ -83,6 +128,20 @@ var iconMimeType = (icon) => {
|
|
|
83
128
|
resolver = resolverFn;
|
|
84
129
|
};
|
|
85
130
|
|
|
131
|
+
// src/utils/escapeScriptContent.ts
|
|
132
|
+
var ESCAPE_LOOKUP, ESCAPE_REGEX, escapeScriptContent = (content) => content.replace(ESCAPE_REGEX, (char) => {
|
|
133
|
+
const escaped = ESCAPE_LOOKUP[char];
|
|
134
|
+
return escaped !== undefined ? escaped : char;
|
|
135
|
+
});
|
|
136
|
+
var init_escapeScriptContent = __esm(() => {
|
|
137
|
+
ESCAPE_LOOKUP = {
|
|
138
|
+
"\u2028": "\\u2028",
|
|
139
|
+
"\u2029": "\\u2029",
|
|
140
|
+
"<": "\\u003C"
|
|
141
|
+
};
|
|
142
|
+
ESCAPE_REGEX = /[<\u2028\u2029]/g;
|
|
143
|
+
});
|
|
144
|
+
|
|
86
145
|
// src/constants.ts
|
|
87
146
|
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;
|
|
88
147
|
var init_constants = __esm(() => {
|
|
@@ -102,12 +161,25 @@ var init_constants = __esm(() => {
|
|
|
102
161
|
MILLISECONDS_IN_A_DAY = MILLISECONDS_IN_A_SECOND * SECONDS_IN_A_MINUTE * MINUTES_IN_AN_HOUR * HOURS_IN_DAY;
|
|
103
162
|
TWO_THIRDS = 2 / 3;
|
|
104
163
|
});
|
|
164
|
+
|
|
165
|
+
// src/utils/runtimeMode.ts
|
|
166
|
+
var ENV_VAR = "NODE_ENV", getNodeEnv = () => process.env[ENV_VAR], isDevelopmentRuntime = () => process.env[ENV_VAR] === "development", isProductionRuntime = () => process.env[ENV_VAR] === "production";
|
|
167
|
+
|
|
168
|
+
// src/react/components/Head.tsx
|
|
169
|
+
init_cspNonceRef();
|
|
170
|
+
init_fontAssets();
|
|
171
|
+
|
|
172
|
+
// src/utils/generateHeadElement.ts
|
|
173
|
+
init_fontAssets();
|
|
174
|
+
init_cspNonceRef();
|
|
175
|
+
|
|
105
176
|
// src/utils/jsonLd.ts
|
|
177
|
+
init_escapeScriptContent();
|
|
106
178
|
var jsonLd = (schema) => `<script type="application/ld+json">${serializeJsonLd(schema)}</script>`;
|
|
107
179
|
var serializeJsonLd = (schema) => {
|
|
108
180
|
const schemaOrgContext = "https://schema.org";
|
|
109
181
|
const data = Array.isArray(schema) ? { "@context": schemaOrgContext, "@graph": schema } : { "@context": schemaOrgContext, ...schema };
|
|
110
|
-
return JSON.stringify(data);
|
|
182
|
+
return escapeScriptContent(JSON.stringify(data));
|
|
111
183
|
};
|
|
112
184
|
|
|
113
185
|
// src/utils/generateHeadElement.ts
|
|
@@ -194,6 +266,8 @@ var renderMetaTag = (tag) => {
|
|
|
194
266
|
return `<meta name="${tag.name}" content="${tag.content}">`;
|
|
195
267
|
return;
|
|
196
268
|
};
|
|
269
|
+
var escapeAttribute2 = (value) => value.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<");
|
|
270
|
+
var renderAlternateLinks = (alternates = []) => alternates.map(({ href, hreflang }) => `<link rel="alternate" hreflang="${escapeAttribute2(hreflang)}" href="${escapeAttribute2(href)}">`);
|
|
197
271
|
var renderPreloadLink = (preload) => {
|
|
198
272
|
const rel = preload.module ? "modulepreload" : "preload";
|
|
199
273
|
const asAttribute = !preload.module && preload.as ? ` as="${preload.as}"` : "";
|
|
@@ -205,8 +279,10 @@ var generateHeadElement = ({
|
|
|
205
279
|
title = "AbsoluteJS",
|
|
206
280
|
description = "A page created using AbsoluteJS",
|
|
207
281
|
font,
|
|
282
|
+
fonts,
|
|
208
283
|
icon = "/assets/ico/favicon.ico",
|
|
209
284
|
canonical,
|
|
285
|
+
alternates,
|
|
210
286
|
openGraph,
|
|
211
287
|
twitter,
|
|
212
288
|
robots,
|
|
@@ -225,6 +301,7 @@ var generateHeadElement = ({
|
|
|
225
301
|
if (canonical) {
|
|
226
302
|
tags.push(`<link rel="canonical" href="${canonical}">`);
|
|
227
303
|
}
|
|
304
|
+
tags.push(...renderAlternateLinks(alternates));
|
|
228
305
|
tags.push(...renderOpenGraphTags(openGraph, title, description));
|
|
229
306
|
tags.push(...renderTwitterTags(twitter, title, description));
|
|
230
307
|
const robotsContent = robots ? renderRobotsContent(robots) : "";
|
|
@@ -236,19 +313,22 @@ var generateHeadElement = ({
|
|
|
236
313
|
if (font) {
|
|
237
314
|
tags.push(`<link rel="preconnect" href="https://fonts.googleapis.com">`, `<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>`, `<link href="https://fonts.googleapis.com/css2?family=${font}:wght@100..900&display=swap" rel="stylesheet">`);
|
|
238
315
|
}
|
|
316
|
+
if (fonts) {
|
|
317
|
+
tags.push(...renderFontTags(fonts));
|
|
318
|
+
}
|
|
239
319
|
for (const link of preload ?? []) {
|
|
240
320
|
tags.push(renderPreloadLink(link));
|
|
241
321
|
}
|
|
242
322
|
const speculation = speculationRules ? serializeSpeculationRules(speculationRules) : undefined;
|
|
243
323
|
if (speculation) {
|
|
244
|
-
tags.push(`<script type="speculationrules">${speculation}</script>`);
|
|
324
|
+
tags.push(`<script${nonceAttr()} type="speculationrules">${speculation}</script>`);
|
|
245
325
|
}
|
|
246
326
|
const cssPaths = cssPath ? [cssPath].flat() : [];
|
|
247
327
|
for (const path of cssPaths) {
|
|
248
328
|
tags.push(`<link rel="stylesheet" href="${path}" type="text/css">`);
|
|
249
329
|
}
|
|
250
330
|
if (jsonLd) {
|
|
251
|
-
tags.push(`<script type="application/ld+json">${serializeJsonLd(jsonLd)}</script>`);
|
|
331
|
+
tags.push(`<script${nonceAttr()} type="application/ld+json">${serializeJsonLd(jsonLd)}</script>`);
|
|
252
332
|
}
|
|
253
333
|
return `<head>
|
|
254
334
|
${tags.join(`
|
|
@@ -405,6 +485,29 @@ var toCrossOrigin = (value) => {
|
|
|
405
485
|
return value;
|
|
406
486
|
return "anonymous";
|
|
407
487
|
};
|
|
488
|
+
var FontLinks = ({ fonts }) => /* @__PURE__ */ jsxs(Fragment, {
|
|
489
|
+
children: [
|
|
490
|
+
fontPreconnectOrigins(fonts).map((origin) => /* @__PURE__ */ jsx("link", {
|
|
491
|
+
crossOrigin: origin.includes("gstatic") ? "anonymous" : undefined,
|
|
492
|
+
href: origin,
|
|
493
|
+
rel: "preconnect"
|
|
494
|
+
}, `preconnect:${origin}`)),
|
|
495
|
+
fonts.preload.map((href) => /* @__PURE__ */ jsx("link", {
|
|
496
|
+
as: "font",
|
|
497
|
+
crossOrigin: "anonymous",
|
|
498
|
+
href,
|
|
499
|
+
rel: "preload",
|
|
500
|
+
suppressHydrationWarning: true,
|
|
501
|
+
type: fontMimeType(href)
|
|
502
|
+
}, `preload:${href}`)),
|
|
503
|
+
fonts.stylesheets.map((href) => /* @__PURE__ */ jsx("link", {
|
|
504
|
+
"data-absolute-fonts": "",
|
|
505
|
+
href,
|
|
506
|
+
rel: "stylesheet",
|
|
507
|
+
suppressHydrationWarning: true
|
|
508
|
+
}, `stylesheet:${href}`))
|
|
509
|
+
]
|
|
510
|
+
});
|
|
408
511
|
var SpeculationRulesScript = ({
|
|
409
512
|
rules
|
|
410
513
|
}) => {
|
|
@@ -413,6 +516,8 @@ var SpeculationRulesScript = ({
|
|
|
413
516
|
return null;
|
|
414
517
|
return /* @__PURE__ */ jsx("script", {
|
|
415
518
|
dangerouslySetInnerHTML: { __html: body },
|
|
519
|
+
nonce: readCspNonce(),
|
|
520
|
+
suppressHydrationWarning: true,
|
|
416
521
|
type: "speculationrules"
|
|
417
522
|
});
|
|
418
523
|
};
|
|
@@ -421,8 +526,10 @@ var Head = ({
|
|
|
421
526
|
description = "A page created using AbsoluteJS",
|
|
422
527
|
icon = "/assets/ico/favicon.ico",
|
|
423
528
|
font,
|
|
529
|
+
fonts,
|
|
424
530
|
cssPath,
|
|
425
531
|
canonical,
|
|
532
|
+
alternates,
|
|
426
533
|
openGraph,
|
|
427
534
|
twitter,
|
|
428
535
|
robots,
|
|
@@ -456,6 +563,11 @@ var Head = ({
|
|
|
456
563
|
href: canonical,
|
|
457
564
|
rel: "canonical"
|
|
458
565
|
}),
|
|
566
|
+
alternates?.map(({ href, hreflang }) => /* @__PURE__ */ jsx("link", {
|
|
567
|
+
href,
|
|
568
|
+
hrefLang: hreflang,
|
|
569
|
+
rel: "alternate"
|
|
570
|
+
}, `alternate:${hreflang}`)),
|
|
459
571
|
openGraph && /* @__PURE__ */ jsx(OpenGraphTags, {
|
|
460
572
|
description,
|
|
461
573
|
openGraph,
|
|
@@ -491,6 +603,9 @@ var Head = ({
|
|
|
491
603
|
})
|
|
492
604
|
]
|
|
493
605
|
}),
|
|
606
|
+
fonts && /* @__PURE__ */ jsx(FontLinks, {
|
|
607
|
+
fonts
|
|
608
|
+
}),
|
|
494
609
|
preload?.map((link) => /* @__PURE__ */ jsx("link", {
|
|
495
610
|
as: link.module ? undefined : link.as,
|
|
496
611
|
crossOrigin: toCrossOrigin(link.crossorigin),
|
|
@@ -508,6 +623,8 @@ var Head = ({
|
|
|
508
623
|
}, path)),
|
|
509
624
|
jsonLd && /* @__PURE__ */ jsx("script", {
|
|
510
625
|
dangerouslySetInnerHTML: { __html: serializeJsonLd(jsonLd) },
|
|
626
|
+
nonce: readCspNonce(),
|
|
627
|
+
suppressHydrationWarning: true,
|
|
511
628
|
type: "application/ld+json"
|
|
512
629
|
})
|
|
513
630
|
]
|
|
@@ -735,7 +852,7 @@ var setStreamingSlotWarningController = (controller) => {
|
|
|
735
852
|
Reflect.set(globalThis, STREAMING_SLOT_WARNING_STORAGE_KEY, controller);
|
|
736
853
|
};
|
|
737
854
|
var warnMissingStreamingSlotCollector = (primitiveName) => {
|
|
738
|
-
if (isStreamingSlotCollectionActive()) {
|
|
855
|
+
if (isProductionRuntime() || isStreamingSlotCollectionActive()) {
|
|
739
856
|
return;
|
|
740
857
|
}
|
|
741
858
|
getWarningController()?.maybeWarn(primitiveName);
|
|
@@ -746,10 +863,12 @@ import { jsx as jsx4 } from "react/jsx-runtime";
|
|
|
746
863
|
var isLegacyProps = (props) => ("fallbackHtml" in props) || ("errorHtml" in props);
|
|
747
864
|
var renderReactNodeToHtml = async (node) => {
|
|
748
865
|
const { Fragment } = await import("react");
|
|
749
|
-
const {
|
|
750
|
-
|
|
866
|
+
const { renderToReadableStream } = await import("react-dom/server");
|
|
867
|
+
const stream = await renderToReadableStream(/* @__PURE__ */ jsx4(Fragment, {
|
|
751
868
|
children: node
|
|
752
869
|
}));
|
|
870
|
+
await stream.allReady;
|
|
871
|
+
return new Response(stream).text();
|
|
753
872
|
};
|
|
754
873
|
var hasRenderChildren = (props) => typeof props.children === "function";
|
|
755
874
|
async function resolveRenderSuspenseValue(props) {
|
|
@@ -781,6 +900,7 @@ var renderErrorFallback = async (props, error) => {
|
|
|
781
900
|
};
|
|
782
901
|
var registerLegacySuspenseSlot = (props) => {
|
|
783
902
|
registerStreamingSlot({
|
|
903
|
+
dynamic: props.dynamic,
|
|
784
904
|
errorHtml: props.errorHtml,
|
|
785
905
|
fallbackHtml: props.fallbackHtml,
|
|
786
906
|
id: props.id,
|
|
@@ -790,6 +910,7 @@ var registerLegacySuspenseSlot = (props) => {
|
|
|
790
910
|
};
|
|
791
911
|
var registerFrameworkSuspenseSlot = (props) => {
|
|
792
912
|
registerStreamingSlot({
|
|
913
|
+
dynamic: props.dynamic,
|
|
793
914
|
id: props.id,
|
|
794
915
|
timeoutMs: props.timeoutMs,
|
|
795
916
|
resolve: async () => {
|
|
@@ -837,6 +958,7 @@ var SuspenseSlot = (props) => {
|
|
|
837
958
|
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
838
959
|
var StreamSlot = ({
|
|
839
960
|
className,
|
|
961
|
+
dynamic,
|
|
840
962
|
errorHtml,
|
|
841
963
|
fallbackHtml = "",
|
|
842
964
|
id,
|
|
@@ -845,6 +967,7 @@ var StreamSlot = ({
|
|
|
845
967
|
}) => {
|
|
846
968
|
if (isStreamingSlotCollectionActive()) {
|
|
847
969
|
registerStreamingSlot({
|
|
970
|
+
dynamic,
|
|
848
971
|
errorHtml,
|
|
849
972
|
fallbackHtml,
|
|
850
973
|
id,
|
|
@@ -867,6 +990,20 @@ import {
|
|
|
867
990
|
useContext
|
|
868
991
|
} from "react";
|
|
869
992
|
|
|
993
|
+
// src/dev/client/cspNonce.ts
|
|
994
|
+
var applyPageNonce = (element) => {
|
|
995
|
+
const nonce = readPageNonce();
|
|
996
|
+
if (nonce)
|
|
997
|
+
element.nonce = nonce;
|
|
998
|
+
return element;
|
|
999
|
+
};
|
|
1000
|
+
var readPageNonce = () => {
|
|
1001
|
+
if (typeof document === "undefined")
|
|
1002
|
+
return;
|
|
1003
|
+
const carrier = document.querySelector("script[nonce], style[nonce]");
|
|
1004
|
+
return carrier?.nonce || undefined;
|
|
1005
|
+
};
|
|
1006
|
+
|
|
870
1007
|
// src/client/prefetch.ts
|
|
871
1008
|
var PREFETCH_CACHE_LIMIT = 16;
|
|
872
1009
|
var HOVER_DEBOUNCE_MS = 250;
|
|
@@ -1141,7 +1278,7 @@ var speculate = (url) => {
|
|
|
1141
1278
|
liveSpeculationRules.get(oldest.value)?.remove();
|
|
1142
1279
|
liveSpeculationRules.delete(oldest.value);
|
|
1143
1280
|
}
|
|
1144
|
-
const script = document.createElement("script");
|
|
1281
|
+
const script = applyPageNonce(document.createElement("script"));
|
|
1145
1282
|
script.type = "speculationrules";
|
|
1146
1283
|
script.textContent = JSON.stringify({
|
|
1147
1284
|
prerender: [{ eagerness: "immediate", urls: [url] }]
|
|
@@ -1160,6 +1297,7 @@ var scheduleHoverPrefetch = (url, options = {}) => {
|
|
|
1160
1297
|
prefetch(url, { kind: options.kind ?? "route" });
|
|
1161
1298
|
if (options.prerender)
|
|
1162
1299
|
speculate(url);
|
|
1300
|
+
options.onPrefetch?.();
|
|
1163
1301
|
}, HOVER_DEBOUNCE_MS);
|
|
1164
1302
|
return {
|
|
1165
1303
|
cancel: () => window.clearTimeout(timer)
|
|
@@ -1174,8 +1312,10 @@ var handleIntersections = (entries) => {
|
|
|
1174
1312
|
const target = viewportTargets.get(entry.target);
|
|
1175
1313
|
viewportObserver?.unobserve(entry.target);
|
|
1176
1314
|
viewportTargets.delete(entry.target);
|
|
1177
|
-
if (target)
|
|
1178
|
-
|
|
1315
|
+
if (!target)
|
|
1316
|
+
continue;
|
|
1317
|
+
prefetch(target.url, { kind: target.options.kind });
|
|
1318
|
+
target.options.onVisible?.();
|
|
1179
1319
|
}
|
|
1180
1320
|
};
|
|
1181
1321
|
var getViewportObserver = () => {
|
|
@@ -1351,5 +1491,5 @@ export {
|
|
|
1351
1491
|
usePrefetch
|
|
1352
1492
|
};
|
|
1353
1493
|
|
|
1354
|
-
//# debugId=
|
|
1494
|
+
//# debugId=4FB4CF45E57F77C164756E2164756E21
|
|
1355
1495
|
//# sourceMappingURL=index.js.map
|