triiiceratops 0.9.5 → 0.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{TriiiceratopsViewer-BGtsfUPF.js → TriiiceratopsViewer-CVbWWD1o.js} +4466 -3476
- package/dist/chunks/{openseadragon-BTypULhm.js → openseadragon-H3QhDkLJ.js} +1 -1
- package/dist/components/DemoHeader.svelte +3 -6
- package/dist/paraglide/messages/_index.d.ts +89 -0
- package/dist/paraglide/messages/_index.js +90 -0
- package/dist/paraglide/messages/annotations_count.d.ts +6 -0
- package/dist/paraglide/messages/annotations_count.js +34 -0
- package/dist/paraglide/messages/attribution.d.ts +4 -0
- package/dist/paraglide/messages/attribution.js +34 -0
- package/dist/paraglide/messages/change_theme_label.d.ts +4 -0
- package/dist/paraglide/messages/change_theme_label.js +34 -0
- package/dist/paraglide/messages/close.d.ts +4 -0
- package/dist/paraglide/messages/close.js +34 -0
- package/dist/paraglide/messages/close_gallery.d.ts +4 -0
- package/dist/paraglide/messages/close_gallery.js +34 -0
- package/dist/paraglide/messages/close_menu.d.ts +4 -0
- package/dist/paraglide/messages/close_menu.js +34 -0
- package/dist/paraglide/messages/close_search.d.ts +4 -0
- package/dist/paraglide/messages/close_search.js +34 -0
- package/dist/paraglide/messages/copied.d.ts +4 -0
- package/dist/paraglide/messages/copied.js +34 -0
- package/dist/paraglide/messages/copy_config.d.ts +4 -0
- package/dist/paraglide/messages/copy_config.js +34 -0
- package/dist/paraglide/messages/demo_header_active_canvas.d.ts +4 -0
- package/dist/paraglide/messages/demo_header_active_canvas.js +34 -0
- package/dist/paraglide/messages/demo_header_external_controls.d.ts +4 -0
- package/dist/paraglide/messages/demo_header_external_controls.js +34 -0
- package/dist/paraglide/messages/docs.d.ts +4 -0
- package/dist/paraglide/messages/docs.js +34 -0
- package/dist/paraglide/messages/enter_full_screen.d.ts +4 -0
- package/dist/paraglide/messages/enter_full_screen.js +34 -0
- package/dist/paraglide/messages/error_prefix.d.ts +4 -0
- package/dist/paraglide/messages/error_prefix.js +34 -0
- package/dist/paraglide/messages/exit_full_screen.d.ts +4 -0
- package/dist/paraglide/messages/exit_full_screen.js +34 -0
- package/dist/paraglide/messages/gallery.d.ts +4 -0
- package/dist/paraglide/messages/gallery.js +34 -0
- package/dist/paraglide/messages/github.d.ts +4 -0
- package/dist/paraglide/messages/github.js +34 -0
- package/dist/paraglide/messages/hello_world.d.ts +4 -0
- package/dist/paraglide/messages/hello_world.js +34 -0
- package/dist/paraglide/messages/hide_all_annotations.d.ts +4 -0
- package/dist/paraglide/messages/hide_all_annotations.js +34 -0
- package/dist/paraglide/messages/hide_annotations.d.ts +4 -0
- package/dist/paraglide/messages/hide_annotations.js +34 -0
- package/dist/paraglide/messages/hide_gallery.d.ts +4 -0
- package/dist/paraglide/messages/hide_gallery.js +34 -0
- package/dist/paraglide/messages/iiif_manifest_label.d.ts +4 -0
- package/dist/paraglide/messages/iiif_manifest_label.js +34 -0
- package/dist/paraglide/messages/image_adjustments.d.ts +4 -0
- package/dist/paraglide/messages/image_adjustments.js +34 -0
- package/dist/paraglide/messages/language_select_label.d.ts +4 -0
- package/dist/paraglide/messages/language_select_label.js +34 -0
- package/dist/paraglide/messages/license.d.ts +4 -0
- package/dist/paraglide/messages/license.js +34 -0
- package/dist/paraglide/messages/load.d.ts +4 -0
- package/dist/paraglide/messages/load.js +34 -0
- package/dist/paraglide/messages/loading.d.ts +4 -0
- package/dist/paraglide/messages/loading.js +34 -0
- package/dist/paraglide/messages/manifest_placeholder.d.ts +4 -0
- package/dist/paraglide/messages/manifest_placeholder.js +34 -0
- package/dist/paraglide/messages/menu.d.ts +4 -0
- package/dist/paraglide/messages/menu.js +34 -0
- package/dist/paraglide/messages/metadata.d.ts +4 -0
- package/dist/paraglide/messages/metadata.js +34 -0
- package/dist/paraglide/messages/metadata_label_fallback.d.ts +4 -0
- package/dist/paraglide/messages/metadata_label_fallback.js +34 -0
- package/dist/paraglide/messages/next_canvas.d.ts +4 -0
- package/dist/paraglide/messages/next_canvas.js +34 -0
- package/dist/paraglide/messages/no_annotations_available.d.ts +4 -0
- package/dist/paraglide/messages/no_annotations_available.js +34 -0
- package/dist/paraglide/messages/no_canvases_loaded.d.ts +4 -0
- package/dist/paraglide/messages/no_canvases_loaded.js +34 -0
- package/dist/paraglide/messages/no_content.d.ts +4 -0
- package/dist/paraglide/messages/no_content.js +34 -0
- package/dist/paraglide/messages/no_image_found.d.ts +4 -0
- package/dist/paraglide/messages/no_image_found.js +34 -0
- package/dist/paraglide/messages/plugins_tooltip.d.ts +4 -0
- package/dist/paraglide/messages/plugins_tooltip.js +34 -0
- package/dist/paraglide/messages/previous_canvas.d.ts +4 -0
- package/dist/paraglide/messages/previous_canvas.js +34 -0
- package/dist/paraglide/messages/search.d.ts +4 -0
- package/dist/paraglide/messages/search.js +34 -0
- package/dist/paraglide/messages/search_panel_close.d.ts +4 -0
- package/dist/paraglide/messages/search_panel_close.js +34 -0
- package/dist/paraglide/messages/search_panel_instruction.d.ts +4 -0
- package/dist/paraglide/messages/search_panel_instruction.js +34 -0
- package/dist/paraglide/messages/search_panel_no_results.d.ts +6 -0
- package/dist/paraglide/messages/search_panel_no_results.js +34 -0
- package/dist/paraglide/messages/search_panel_placeholder.d.ts +4 -0
- package/dist/paraglide/messages/search_panel_placeholder.js +34 -0
- package/dist/paraglide/messages/search_panel_results_count.d.ts +6 -0
- package/dist/paraglide/messages/search_panel_results_count.js +34 -0
- package/dist/paraglide/messages/search_panel_title.d.ts +4 -0
- package/dist/paraglide/messages/search_panel_title.js +34 -0
- package/dist/paraglide/messages/settings_category_configuration.d.ts +4 -0
- package/dist/paraglide/messages/settings_category_configuration.js +34 -0
- package/dist/paraglide/messages/settings_category_general.d.ts +4 -0
- package/dist/paraglide/messages/settings_category_general.js +34 -0
- package/dist/paraglide/messages/settings_label.d.ts +4 -0
- package/dist/paraglide/messages/settings_label.js +34 -0
- package/dist/paraglide/messages/settings_position_bottom.d.ts +4 -0
- package/dist/paraglide/messages/settings_position_bottom.js +34 -0
- package/dist/paraglide/messages/settings_position_floating.d.ts +4 -0
- package/dist/paraglide/messages/settings_position_floating.js +34 -0
- package/dist/paraglide/messages/settings_position_left.d.ts +4 -0
- package/dist/paraglide/messages/settings_position_left.js +34 -0
- package/dist/paraglide/messages/settings_position_right.d.ts +4 -0
- package/dist/paraglide/messages/settings_position_right.js +34 -0
- package/dist/paraglide/messages/settings_position_top.d.ts +4 -0
- package/dist/paraglide/messages/settings_position_top.js +34 -0
- package/dist/paraglide/messages/settings_select_dock_position.d.ts +4 -0
- package/dist/paraglide/messages/settings_select_dock_position.js +34 -0
- package/dist/paraglide/messages/settings_submenu_annotations.d.ts +4 -0
- package/dist/paraglide/messages/settings_submenu_annotations.js +34 -0
- package/dist/paraglide/messages/settings_submenu_gallery.d.ts +4 -0
- package/dist/paraglide/messages/settings_submenu_gallery.js +34 -0
- package/dist/paraglide/messages/settings_submenu_right_menu_items.d.ts +4 -0
- package/dist/paraglide/messages/settings_submenu_right_menu_items.js +34 -0
- package/dist/paraglide/messages/settings_submenu_search.d.ts +4 -0
- package/dist/paraglide/messages/settings_submenu_search.js +34 -0
- package/dist/paraglide/messages/settings_toggle_canvas_nav.d.ts +4 -0
- package/dist/paraglide/messages/settings_toggle_canvas_nav.js +34 -0
- package/dist/paraglide/messages/settings_toggle_close_button.d.ts +4 -0
- package/dist/paraglide/messages/settings_toggle_close_button.js +34 -0
- package/dist/paraglide/messages/settings_toggle_draggable.d.ts +4 -0
- package/dist/paraglide/messages/settings_toggle_draggable.js +34 -0
- package/dist/paraglide/messages/settings_toggle_left_menu.d.ts +4 -0
- package/dist/paraglide/messages/settings_toggle_left_menu.js +34 -0
- package/dist/paraglide/messages/settings_toggle_open.d.ts +4 -0
- package/dist/paraglide/messages/settings_toggle_open.js +34 -0
- package/dist/paraglide/messages/settings_toggle_panel_open.d.ts +4 -0
- package/dist/paraglide/messages/settings_toggle_panel_open.js +34 -0
- package/dist/paraglide/messages/settings_toggle_right_menu.d.ts +4 -0
- package/dist/paraglide/messages/settings_toggle_right_menu.js +34 -0
- package/dist/paraglide/messages/settings_toggle_show_annotations.d.ts +4 -0
- package/dist/paraglide/messages/settings_toggle_show_annotations.js +34 -0
- package/dist/paraglide/messages/settings_toggle_show_fullscreen.d.ts +4 -0
- package/dist/paraglide/messages/settings_toggle_show_fullscreen.js +34 -0
- package/dist/paraglide/messages/settings_toggle_show_gallery.d.ts +4 -0
- package/dist/paraglide/messages/settings_toggle_show_gallery.js +34 -0
- package/dist/paraglide/messages/settings_toggle_show_info.d.ts +4 -0
- package/dist/paraglide/messages/settings_toggle_show_info.js +34 -0
- package/dist/paraglide/messages/settings_toggle_show_search.d.ts +4 -0
- package/dist/paraglide/messages/settings_toggle_show_search.js +34 -0
- package/dist/paraglide/messages/settings_toggle_visible_by_default.d.ts +4 -0
- package/dist/paraglide/messages/settings_toggle_visible_by_default.js +34 -0
- package/dist/paraglide/messages/show_all_annotations.d.ts +4 -0
- package/dist/paraglide/messages/show_all_annotations.js +34 -0
- package/dist/paraglide/messages/show_annotations.d.ts +4 -0
- package/dist/paraglide/messages/show_annotations.js +34 -0
- package/dist/paraglide/messages/show_gallery.d.ts +4 -0
- package/dist/paraglide/messages/show_gallery.js +34 -0
- package/dist/paraglide/messages/theme_menu_title.d.ts +4 -0
- package/dist/paraglide/messages/theme_menu_title.js +34 -0
- package/dist/paraglide/messages/toggle_annotations.d.ts +4 -0
- package/dist/paraglide/messages/toggle_annotations.js +34 -0
- package/dist/paraglide/messages/toggle_metadata.d.ts +4 -0
- package/dist/paraglide/messages/toggle_metadata.js +34 -0
- package/dist/paraglide/messages/toggle_search.d.ts +4 -0
- package/dist/paraglide/messages/toggle_search.js +34 -0
- package/dist/paraglide/messages/try_your_own.d.ts +4 -0
- package/dist/paraglide/messages/try_your_own.js +34 -0
- package/dist/paraglide/messages/viewer_variant_core.d.ts +4 -0
- package/dist/paraglide/messages/viewer_variant_core.js +34 -0
- package/dist/paraglide/messages/viewer_variant_custom_theme.d.ts +4 -0
- package/dist/paraglide/messages/viewer_variant_custom_theme.js +34 -0
- package/dist/paraglide/messages/viewer_variant_full.d.ts +4 -0
- package/dist/paraglide/messages/viewer_variant_full.js +34 -0
- package/dist/paraglide/messages/viewer_variant_svelte.d.ts +4 -0
- package/dist/paraglide/messages/viewer_variant_svelte.js +34 -0
- package/dist/paraglide/messages/viewer_variant_svelte_component_tooltip.d.ts +4 -0
- package/dist/paraglide/messages/viewer_variant_svelte_component_tooltip.js +34 -0
- package/dist/paraglide/messages/viewer_variant_tooltip_core.d.ts +4 -0
- package/dist/paraglide/messages/viewer_variant_tooltip_core.js +34 -0
- package/dist/paraglide/messages/viewer_variant_tooltip_custom_theme.d.ts +4 -0
- package/dist/paraglide/messages/viewer_variant_tooltip_custom_theme.js +34 -0
- package/dist/paraglide/messages/viewer_variant_tooltip_full.d.ts +4 -0
- package/dist/paraglide/messages/viewer_variant_tooltip_full.js +34 -0
- package/dist/paraglide/messages/visible_count.d.ts +6 -0
- package/dist/paraglide/messages/visible_count.js +34 -0
- package/dist/paraglide/messages.d.ts +2 -0
- package/dist/paraglide/messages.js +4 -0
- package/dist/paraglide/registry.d.ts +21 -0
- package/dist/paraglide/registry.js +31 -0
- package/dist/paraglide/runtime.d.ts +597 -0
- package/dist/paraglide/runtime.js +1453 -0
- package/dist/paraglide/server.d.ts +67 -0
- package/dist/paraglide/server.js +175 -0
- package/dist/state/i18n.svelte.d.ts +2 -2
- package/dist/state/i18n.svelte.js +9 -7
- package/dist/triiiceratops-bundle.js +3273 -2283
- package/dist/triiiceratops-element-image.js +1 -1
- package/dist/triiiceratops-element.js +1 -1
- package/package.json +3 -4
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server middleware that handles locale-based routing and request processing.
|
|
3
|
+
*
|
|
4
|
+
* This middleware performs several key functions:
|
|
5
|
+
*
|
|
6
|
+
* 1. Determines the locale for the incoming request using configured strategies
|
|
7
|
+
* 2. Handles URL localization and redirects (only for document requests)
|
|
8
|
+
* 3. Maintains locale state using AsyncLocalStorage to prevent request interference
|
|
9
|
+
*
|
|
10
|
+
* When URL strategy is used:
|
|
11
|
+
*
|
|
12
|
+
* - The locale is extracted from the URL for all request types
|
|
13
|
+
* - If URL doesn't match the determined locale, redirects to localized URL (only for document requests)
|
|
14
|
+
* - De-localizes URLs before passing to server (e.g., `/fr/about` → `/about`)
|
|
15
|
+
*
|
|
16
|
+
* @template T - The return type of the resolve function
|
|
17
|
+
*
|
|
18
|
+
* @param {Request} request - The incoming request object
|
|
19
|
+
* @param {(args: { request: Request, locale: import("./runtime.js").Locale }) => T | Promise<T>} resolve - Function to handle the request
|
|
20
|
+
* @param {{ onRedirect:(response: Response) => void }} [callbacks] - Callbacks to handle events from middleware
|
|
21
|
+
* @returns {Promise<Response>}
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* // Basic usage in metaframeworks like NextJS, SvelteKit, Astro, Nuxt, etc.
|
|
26
|
+
* export const handle = async ({ event, resolve }) => {
|
|
27
|
+
* return serverMiddleware(event.request, ({ request, locale }) => {
|
|
28
|
+
* // let the framework further resolve the request
|
|
29
|
+
* return resolve(request);
|
|
30
|
+
* });
|
|
31
|
+
* };
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* // Usage in a framework like Express JS or Hono
|
|
37
|
+
* app.use(async (req, res, next) => {
|
|
38
|
+
* const result = await serverMiddleware(req, ({ request, locale }) => {
|
|
39
|
+
* // If a redirect happens this won't be called
|
|
40
|
+
* return next(request);
|
|
41
|
+
* });
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* // Usage in serverless environments like Cloudflare Workers
|
|
48
|
+
* // ⚠️ WARNING: This should ONLY be used in serverless environments like Cloudflare Workers.
|
|
49
|
+
* // Disabling AsyncLocalStorage in traditional server environments risks cross-request pollution where state from
|
|
50
|
+
* // one request could leak into another concurrent request.
|
|
51
|
+
* export default {
|
|
52
|
+
* fetch: async (request) => {
|
|
53
|
+
* return serverMiddleware(
|
|
54
|
+
* request,
|
|
55
|
+
* ({ request, locale }) => handleRequest(request, locale),
|
|
56
|
+
* { disableAsyncLocalStorage: true }
|
|
57
|
+
* );
|
|
58
|
+
* }
|
|
59
|
+
* };
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export function paraglideMiddleware<T>(request: Request, resolve: (args: {
|
|
63
|
+
request: Request;
|
|
64
|
+
locale: import("./runtime.js").Locale;
|
|
65
|
+
}) => T | Promise<T>, callbacks?: {
|
|
66
|
+
onRedirect: (response: Response) => void;
|
|
67
|
+
}): Promise<Response>;
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
|
|
3
|
+
import * as runtime from "./runtime.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Server middleware that handles locale-based routing and request processing.
|
|
7
|
+
*
|
|
8
|
+
* This middleware performs several key functions:
|
|
9
|
+
*
|
|
10
|
+
* 1. Determines the locale for the incoming request using configured strategies
|
|
11
|
+
* 2. Handles URL localization and redirects (only for document requests)
|
|
12
|
+
* 3. Maintains locale state using AsyncLocalStorage to prevent request interference
|
|
13
|
+
*
|
|
14
|
+
* When URL strategy is used:
|
|
15
|
+
*
|
|
16
|
+
* - The locale is extracted from the URL for all request types
|
|
17
|
+
* - If URL doesn't match the determined locale, redirects to localized URL (only for document requests)
|
|
18
|
+
* - De-localizes URLs before passing to server (e.g., `/fr/about` → `/about`)
|
|
19
|
+
*
|
|
20
|
+
* @template T - The return type of the resolve function
|
|
21
|
+
*
|
|
22
|
+
* @param {Request} request - The incoming request object
|
|
23
|
+
* @param {(args: { request: Request, locale: import("./runtime.js").Locale }) => T | Promise<T>} resolve - Function to handle the request
|
|
24
|
+
* @param {{ onRedirect:(response: Response) => void }} [callbacks] - Callbacks to handle events from middleware
|
|
25
|
+
* @returns {Promise<Response>}
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* // Basic usage in metaframeworks like NextJS, SvelteKit, Astro, Nuxt, etc.
|
|
30
|
+
* export const handle = async ({ event, resolve }) => {
|
|
31
|
+
* return serverMiddleware(event.request, ({ request, locale }) => {
|
|
32
|
+
* // let the framework further resolve the request
|
|
33
|
+
* return resolve(request);
|
|
34
|
+
* });
|
|
35
|
+
* };
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* // Usage in a framework like Express JS or Hono
|
|
41
|
+
* app.use(async (req, res, next) => {
|
|
42
|
+
* const result = await serverMiddleware(req, ({ request, locale }) => {
|
|
43
|
+
* // If a redirect happens this won't be called
|
|
44
|
+
* return next(request);
|
|
45
|
+
* });
|
|
46
|
+
* });
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* // Usage in serverless environments like Cloudflare Workers
|
|
52
|
+
* // ⚠️ WARNING: This should ONLY be used in serverless environments like Cloudflare Workers.
|
|
53
|
+
* // Disabling AsyncLocalStorage in traditional server environments risks cross-request pollution where state from
|
|
54
|
+
* // one request could leak into another concurrent request.
|
|
55
|
+
* export default {
|
|
56
|
+
* fetch: async (request) => {
|
|
57
|
+
* return serverMiddleware(
|
|
58
|
+
* request,
|
|
59
|
+
* ({ request, locale }) => handleRequest(request, locale),
|
|
60
|
+
* { disableAsyncLocalStorage: true }
|
|
61
|
+
* );
|
|
62
|
+
* }
|
|
63
|
+
* };
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export async function paraglideMiddleware(request, resolve, callbacks) {
|
|
67
|
+
if (!runtime.disableAsyncLocalStorage && !runtime.serverAsyncLocalStorage) {
|
|
68
|
+
const { AsyncLocalStorage } = await import("async_hooks");
|
|
69
|
+
runtime.overwriteServerAsyncLocalStorage(new AsyncLocalStorage());
|
|
70
|
+
}
|
|
71
|
+
else if (!runtime.serverAsyncLocalStorage) {
|
|
72
|
+
runtime.overwriteServerAsyncLocalStorage(createMockAsyncLocalStorage());
|
|
73
|
+
}
|
|
74
|
+
const decision = await runtime.shouldRedirect({ request });
|
|
75
|
+
const locale = decision.locale;
|
|
76
|
+
const origin = new URL(request.url).origin;
|
|
77
|
+
// if the client makes a request to a URL that doesn't match
|
|
78
|
+
// the localizedUrl, redirect the client to the localized URL
|
|
79
|
+
if (request.headers.get("Sec-Fetch-Dest") === "document" &&
|
|
80
|
+
decision.shouldRedirect &&
|
|
81
|
+
decision.redirectUrl) {
|
|
82
|
+
// Create headers object with Vary header if preferredLanguage strategy is used
|
|
83
|
+
/** @type {Record<string, string>} */
|
|
84
|
+
const headers = {};
|
|
85
|
+
if (runtime.strategy.includes("preferredLanguage")) {
|
|
86
|
+
headers["Vary"] = "Accept-Language";
|
|
87
|
+
}
|
|
88
|
+
const response = new Response(null, {
|
|
89
|
+
status: 307,
|
|
90
|
+
headers: {
|
|
91
|
+
Location: decision.redirectUrl.href,
|
|
92
|
+
...headers,
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
callbacks?.onRedirect(response);
|
|
96
|
+
return response;
|
|
97
|
+
}
|
|
98
|
+
// If the strategy includes "url", we need to de-localize the URL
|
|
99
|
+
// before passing it to the server middleware.
|
|
100
|
+
//
|
|
101
|
+
// The middleware is responsible for mapping a localized URL to the
|
|
102
|
+
// de-localized URL e.g. `/en/about` to `/about`. Otherwise,
|
|
103
|
+
// the server can't render the correct page.
|
|
104
|
+
const newRequest = runtime.strategy.includes("url")
|
|
105
|
+
? new Request(runtime.deLocalizeUrl(request.url), request)
|
|
106
|
+
: // need to create a new request object because some metaframeworks (nextjs!) throw otherwise
|
|
107
|
+
// https://github.com/opral/inlang-paraglide-js/issues/411
|
|
108
|
+
new Request(request);
|
|
109
|
+
// the message functions that have been called in this request
|
|
110
|
+
/** @type {Set<string>} */
|
|
111
|
+
const messageCalls = new Set();
|
|
112
|
+
const response = await runtime.serverAsyncLocalStorage?.run({ locale, origin, messageCalls }, () => resolve({ locale, request: newRequest }));
|
|
113
|
+
// Only modify HTML responses
|
|
114
|
+
if (runtime.experimentalMiddlewareLocaleSplitting &&
|
|
115
|
+
response.headers.get("Content-Type")?.includes("html")) {
|
|
116
|
+
const body = await response.text();
|
|
117
|
+
const messages = [];
|
|
118
|
+
// using .values() to avoid polyfilling in older projects. else the following error is thrown
|
|
119
|
+
// Type 'Set<string>' can only be iterated through when using the '--downlevelIteration' flag or with a '--target' of 'es2015' or higher.
|
|
120
|
+
for (const messageCall of Array.from(messageCalls)) {
|
|
121
|
+
const [id, locale] =
|
|
122
|
+
/** @type {[string, import("./runtime.js").Locale]} */ (messageCall.split(":"));
|
|
123
|
+
messages.push(`${id}: ${compiledBundles[id]?.[locale]}`);
|
|
124
|
+
}
|
|
125
|
+
const script = `<script>globalThis.__paraglide_ssr = { ${messages.join(",")} }</script>`;
|
|
126
|
+
// Insert the script before the closing head tag
|
|
127
|
+
const newBody = body.replace("</head>", `${script}</head>`);
|
|
128
|
+
// Create a new response with the modified body
|
|
129
|
+
// Clone all headers except Content-Length which will be set automatically
|
|
130
|
+
const newHeaders = new Headers(response.headers);
|
|
131
|
+
newHeaders.delete("Content-Length"); // Let the browser calculate the correct length
|
|
132
|
+
return new Response(newBody, {
|
|
133
|
+
status: response.status,
|
|
134
|
+
statusText: response.statusText,
|
|
135
|
+
headers: newHeaders,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
return response;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Creates a mock AsyncLocalStorage implementation for environments where
|
|
142
|
+
* native AsyncLocalStorage is not available or disabled.
|
|
143
|
+
*
|
|
144
|
+
* This mock implementation mimics the behavior of the native AsyncLocalStorage
|
|
145
|
+
* but doesn't require the async_hooks module. It's designed to be used in
|
|
146
|
+
* environments like Cloudflare Workers where AsyncLocalStorage is not available.
|
|
147
|
+
*
|
|
148
|
+
* @returns {import("./runtime.js").ParaglideAsyncLocalStorage}
|
|
149
|
+
*/
|
|
150
|
+
function createMockAsyncLocalStorage() {
|
|
151
|
+
/** @type {any} */
|
|
152
|
+
let currentStore = undefined;
|
|
153
|
+
return {
|
|
154
|
+
getStore() {
|
|
155
|
+
return currentStore;
|
|
156
|
+
},
|
|
157
|
+
async run(store, callback) {
|
|
158
|
+
currentStore = store;
|
|
159
|
+
try {
|
|
160
|
+
return await callback();
|
|
161
|
+
}
|
|
162
|
+
finally {
|
|
163
|
+
currentStore = undefined;
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* The compiled messages for the server middleware.
|
|
170
|
+
*
|
|
171
|
+
* Only populated if `enableMiddlewareOptimizations` is set to `true`.
|
|
172
|
+
*
|
|
173
|
+
* @type {Record<string, Record<import("./runtime.js").Locale, string>>}
|
|
174
|
+
*/
|
|
175
|
+
const compiledBundles = {};
|
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
import * as messages from
|
|
2
|
-
import {
|
|
3
|
-
let tag = $state(
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import * as messages from '../paraglide/messages.js';
|
|
2
|
+
import { getLocale, setLocale as baseSetLocale, overwriteSetLocale, } from '../paraglide/runtime.js';
|
|
3
|
+
let tag = $state(getLocale());
|
|
4
|
+
// Wrap setLocale to update our reactive state when locale changes
|
|
5
|
+
overwriteSetLocale((newLocale, options) => {
|
|
6
|
+
baseSetLocale(newLocale, options);
|
|
7
|
+
tag = getLocale();
|
|
6
8
|
});
|
|
7
9
|
export const language = {
|
|
8
10
|
get current() {
|
|
9
11
|
return tag;
|
|
10
|
-
}
|
|
12
|
+
},
|
|
11
13
|
};
|
|
12
14
|
export const m = new Proxy(messages, {
|
|
13
15
|
get(target, prop, receiver) {
|
|
14
16
|
// Register dependency by accessing the signal
|
|
15
17
|
tag;
|
|
16
18
|
return Reflect.get(target, prop, receiver);
|
|
17
|
-
}
|
|
19
|
+
},
|
|
18
20
|
});
|