chore: replace custom `window` management with `globalThis`

Co-authored-by: Copilot <copilot@github.com>
svelte-custom-renderer
paoloricciuti 1 week ago
parent 4b4a134113
commit 2af595b31e

@ -148,7 +148,7 @@ export interface CompileOptions extends ModuleCompileOptions {
*/
runes?: boolean | undefined | ((options: { filename: string }) => boolean | undefined);
/**
* If `true`, exposes the Svelte major version in the browser by adding it to a `Set` stored in the global `window.__svelte.v`.
* If `true`, exposes the Svelte major version in the browser by adding it to a `Set` stored in the global `globalThis.__svelte.v`.
*
* @default true
*/

@ -7,9 +7,6 @@
*/
export let current_renderer = null;
// allow for a "window" for each custom renderer...to use with `$props.id`
export let custom_renderer_window_map = new WeakMap();
/**
* @param {Renderer<any, any, any, any> | null} value
*/

@ -13,7 +13,7 @@ import {
} from '#client/constants';
import { eager_block_effects } from '../reactivity/batch.js';
import { NAMESPACE_HTML } from '../../../constants.js';
import { custom_renderer_window_map, current_renderer } from '../custom-renderer/state.js';
import { current_renderer } from '../custom-renderer/state.js';
// export these for reference in the compiled code, making global name deduplication unnecessary
/** @type {Window} */
@ -794,15 +794,3 @@ export function class_list_toggle(element, name, force) {
}
element.classList.toggle(name, force);
}
export function get_window() {
if (current_renderer) {
var custom_renderer_window = custom_renderer_window_map.get(current_renderer);
if (!custom_renderer_window) {
custom_renderer_window = {};
custom_renderer_window_map.set(current_renderer, custom_renderer_window);
}
return custom_renderer_window;
}
return window;
}

@ -1,30 +1,12 @@
/** @import { Effect, EffectNodes, TemplateNode } from '#client' */
/** @import { TemplateStructure } from './types' */
import { hydrate_next, hydrate_node, hydrating, set_hydrate_node } from './hydration.js';
import {
create_text,
get_first_child,
get_next_sibling,
is_firefox,
create_element,
create_fragment,
create_comment,
set_attribute,
merge_text_nodes,
get_last_child,
import_node,
clone_node,
append_child,
insert_before,
set_text_content,
replace_with,
node_type,
get_node_value,
node_name,
get_window
} from './operations.js';
import { create_fragment_from_html } from './reconciler.js';
import { active_effect } from '../runtime.js';
COMMENT_NODE,
DOCUMENT_FRAGMENT_NODE,
IS_XHTML,
REACTION_RAN,
TEXT_NODE
} from '#client/constants';
import {
NAMESPACE_MATHML,
NAMESPACE_SVG,
@ -33,14 +15,30 @@ import {
TEMPLATE_USE_MATHML,
TEMPLATE_USE_SVG
} from '../../../constants.js';
import {
COMMENT_NODE,
DOCUMENT_FRAGMENT_NODE,
IS_XHTML,
REACTION_RAN,
TEXT_NODE
} from '#client/constants';
import { current_renderer } from '../custom-renderer/state.js';
import { active_effect } from '../runtime.js';
import { hydrate_next, hydrate_node, hydrating, set_hydrate_node } from './hydration.js';
import {
append_child,
clone_node,
create_comment,
create_element,
create_fragment,
create_text,
get_first_child,
get_last_child,
get_node_value,
import_node,
insert_before,
is_firefox,
merge_text_nodes,
node_name,
node_type,
replace_with,
set_attribute,
set_text_content
} from './operations.js';
import { create_fragment_from_html } from './reconciler.js';
const TEMPLATE_TAG = IS_XHTML ? 'template' : 'TEMPLATE';
const SCRIPT_TAG = IS_XHTML ? 'script' : 'SCRIPT';
@ -418,10 +416,7 @@ export function props_id() {
return id;
}
let window = get_window();
// This way we ensure the id is unique even across Svelte runtimes
(window.__svelte ??= {}).uid ??= 1;
/**@type {*}*/ (globalThis.__svelte ??= {}).uid ??= 1;
return `c${window.__svelte.uid++}`;
return `c${/**@type {*}*/ (globalThis.__svelte).uid++}`;
}

@ -2,5 +2,5 @@ import { PUBLIC_VERSION } from '../version.js';
if (typeof window !== 'undefined') {
// @ts-expect-error
((window.__svelte ??= {}).v ??= new Set()).add(PUBLIC_VERSION);
((globalThis.__svelte ??= {}).v ??= new Set()).add(PUBLIC_VERSION);
}

@ -1105,7 +1105,7 @@ declare module 'svelte/compiler' {
*/
runes?: boolean | undefined | ((options: { filename: string }) => boolean | undefined);
/**
* If `true`, exposes the Svelte major version in the browser by adding it to a `Set` stored in the global `window.__svelte.v`.
* If `true`, exposes the Svelte major version in the browser by adding it to a `Set` stored in the global `globalThis.__svelte.v`.
*
* @default true
*/
@ -3398,7 +3398,7 @@ declare module 'svelte/types/compiler/interfaces' {
*/
runes?: boolean | undefined | ((options: { filename: string }) => boolean | undefined);
/**
* If `true`, exposes the Svelte major version in the browser by adding it to a `Set` stored in the global `window.__svelte.v`.
* If `true`, exposes the Svelte major version in the browser by adding it to a `Set` stored in the global `globalThis.__svelte.v`.
*
* @default true
*/

Loading…
Cancel
Save