Skip to content

Commit

Permalink
chore: explicit reexports (sveltejs#10970)
Browse files Browse the repository at this point in the history
* explicit re-exports

* explicit re-exports

* regenerate types
  • Loading branch information
Rich-Harris authored Mar 28, 2024
1 parent 8a758d8 commit d49e2ae
Show file tree
Hide file tree
Showing 22 changed files with 192 additions and 182 deletions.
4 changes: 3 additions & 1 deletion packages/svelte/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,9 @@
"knip": {
"entry": [
"src/*/index.js",
"src/*/public.d.ts"
"src/index-client.ts",
"src/index-server.ts",
"src/index.d.ts"
],
"project": [
"src/**"
Expand Down
13 changes: 0 additions & 13 deletions packages/svelte/src/compiler/phases/2-analyze/utils/push_array.js

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ export function client_component(source, analysis, options) {

const setter = b.set(key, [
b.stmt(b.call(b.id(name), b.id('$$value'))),
b.stmt(b.call('$.flushSync'))
b.stmt(b.call('$.flush_sync'))
]);

if (analysis.runes && binding.initial) {
Expand Down
2 changes: 1 addition & 1 deletion packages/svelte/src/compiler/utils/mapped_code.js
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,7 @@ export function merge_with_preprocessor_map(result, options, source_name) {
* @param {string} from
* @param {string} to
*/
export function get_relative_path(from, to) {
function get_relative_path(from, to) {
// Don't use node's utils here to ensure the compiler is usable in a browser environment
const from_parts = from.split(/[/\\]/);
const to_parts = to.split(/[/\\]/);
Expand Down
1 change: 0 additions & 1 deletion packages/svelte/src/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,6 @@ export const DOMBooleanAttributes = [
];

export const namespace_svg = 'http://www.w3.org/2000/svg';
export const namespace_html = 'http://www.w3.org/1999/xhtml';

// while `input` is also an interactive element, it is never moved by the browser, so we don't need to check for it
export const interactive_elements = new Set([
Expand Down
33 changes: 19 additions & 14 deletions packages/svelte/src/index-client.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { current_component_context, untrack } from './internal/client/runtime.js';
import { current_component_context, flush_sync, untrack } from './internal/client/runtime.js';
import { is_array } from './internal/client/utils.js';
import { user_effect } from './internal/client/index.js';

Expand Down Expand Up @@ -167,19 +167,24 @@ function init_update_callbacks(context) {
return (context.u ??= { a: [], b: [], m: [] });
}

// TODO bring implementations in here
// (except probably untrack — do we want to expose that, if there's also a rune?)
/**
* Synchronously flushes any pending state changes and those that result from it.
* @param {() => void} [fn]
* @returns {void}
*/
export function flushSync(fn) {
flush_sync(fn);
}

export { unstate } from './internal/client/proxy.js';

export { hydrate, mount, unmount } from './internal/client/render.js';

export {
flushSync,
mount,
hydrate,
tick,
unmount,
untrack,
unstate,
createRoot,
hasContext,
getContext,
getAllContexts,
setContext
} from './internal/client/index.js';
hasContext,
setContext,
tick,
untrack
} from './internal/client/runtime.js';
3 changes: 1 addition & 2 deletions packages/svelte/src/index-server.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ export {
setContext,
tick,
unmount,
untrack,
createRoot
untrack
} from './index-client.js';

/** @returns {void} */
Expand Down
2 changes: 1 addition & 1 deletion packages/svelte/src/internal/client/dev/ownership.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ const boundaries = {};
const chrome_pattern = /at (?:.+ \()?(.+):(\d+):(\d+)\)?$/;
const firefox_pattern = /@(.+):(\d+):(\d+)$/;

export function get_stack() {
function get_stack() {
const stack = new Error().stack;
if (!stack) return null;

Expand Down
4 changes: 2 additions & 2 deletions packages/svelte/src/internal/client/dom/blocks/await.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { is_promise } from '../../../common.js';
import {
current_component_context,
flushSync,
flush_sync,
set_current_component_context,
set_current_effect,
set_current_reaction
Expand Down Expand Up @@ -48,7 +48,7 @@ export function await_block(anchor, get_input, pending_fn, then_fn, catch_fn) {

// without this, the DOM does not update until two ticks after the promise,
// resolves which is unexpected behaviour (and somewhat irksome to test)
flushSync();
flush_sync();

return e;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ function split_srcset(srcset) {
* @param {string | undefined | null} srcset
* @returns {boolean}
*/
export function srcset_url_equal(element, srcset) {
function srcset_url_equal(element, srcset) {
var element_urls = split_srcset(element.srcset);
var urls = split_srcset(srcset ?? '');

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { createClassComponent } from '../../../../legacy/legacy-client.js';
import { destroy_effect, render_effect } from '../../reactivity/effects.js';
import { append } from '../template.js';
import { define_property } from '../../utils.js';
import { define_property, object_keys } from '../../utils.js';

/**
* @typedef {Object} CustomElementPropDefinition
Expand Down Expand Up @@ -145,7 +145,7 @@ if (typeof HTMLElement === 'function') {
// Reflect component props as attributes
this.$$me = render_effect(() => {
this.$$r = true;
for (const key of Object.keys(this.$$c)) {
for (const key of object_keys(this.$$c)) {
if (!this.$$p_d[key]?.reflect) continue;
this.$$d[key] = this.$$c[key];
const attribute_value = get_custom_element_value(
Expand Down Expand Up @@ -205,7 +205,7 @@ if (typeof HTMLElement === 'function') {
*/
$$g_p(attribute_name) {
return (
Object.keys(this.$$p_d).find(
object_keys(this.$$p_d).find(
(key) =>
this.$$p_d[key].attribute === attribute_name ||
(!this.$$p_d[key].attribute && key.toLowerCase() === attribute_name)
Expand Down Expand Up @@ -290,12 +290,12 @@ export function create_custom_element(
this.$$p_d = props_definition;
}
static get observedAttributes() {
return Object.keys(props_definition).map((key) =>
return object_keys(props_definition).map((key) =>
(props_definition[key].attribute || key).toLowerCase()
);
}
};
Object.keys(props_definition).forEach((prop) => {
object_keys(props_definition).forEach((prop) => {
define_property(Class.prototype, prop, {
get() {
return this.$$c && prop in this.$$c ? this.$$c[prop] : this.$$d[prop];
Expand Down
12 changes: 0 additions & 12 deletions packages/svelte/src/internal/client/dom/task.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,6 @@ function process_raf_task() {
run_all(tasks);
}

/**
* @param {() => void} fn
* @returns {void}
*/
export function schedule_raf_task(fn) {
if (!is_raf_queued) {
is_raf_queued = true;
requestAnimationFrame(process_raf_task);
}
current_raf_tasks.push(fn);
}

/**
* Synchronously run any queued tasks.
*/
Expand Down
151 changes: 111 additions & 40 deletions packages/svelte/src/internal/client/index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,106 @@
export { add_owner, mark_module_start, mark_module_end } from './dev/ownership.js';
export { await_block as await } from './dom/blocks/await.js';
export { if_block as if } from './dom/blocks/if.js';
export { key_block as key } from './dom/blocks/key.js';
export { css_props } from './dom/blocks/css-props.js';
export { each_keyed, each_indexed } from './dom/blocks/each.js';
export { html } from './dom/blocks/html.js';
export { snippet } from './dom/blocks/snippet.js';
export { component } from './dom/blocks/svelte-component.js';
export { element } from './dom/blocks/svelte-element.js';
export { head } from './dom/blocks/svelte-head.js';
export { action } from './dom/elements/actions.js';
export {
remove_input_attr_defaults,
set_attribute,
set_attributes,
set_custom_element_data,
set_dynamic_element_attributes,
set_xlink_attribute
} from './dom/elements/attributes.js';
export { set_class, set_svg_class, toggle_class } from './dom/elements/class.js';
export { event, delegate } from './dom/elements/events.js';
export { autofocus, remove_textarea_child } from './dom/elements/misc.js';
export { set_style } from './dom/elements/style.js';
export { animation, transition } from './dom/elements/transitions.js';
export { bind_checked, bind_files, bind_group, bind_value } from './dom/elements/bindings/input.js';
export {
bind_buffered,
bind_current_time,
bind_ended,
bind_muted,
bind_paused,
bind_playback_rate,
bind_played,
bind_ready_state,
bind_seekable,
bind_seeking,
bind_volume
} from './dom/elements/bindings/media.js';
export { bind_online } from './dom/elements/bindings/navigator.js';
export { bind_prop } from './dom/elements/bindings/props.js';
export { bind_select_value, init_select, select_option } from './dom/elements/bindings/select.js';
export { bind_element_size, bind_resize_observer } from './dom/elements/bindings/size.js';
export { bind_this } from './dom/elements/bindings/this.js';
export { bind_content_editable, bind_property } from './dom/elements/bindings/universal.js';
export { bind_window_scroll, bind_window_size } from './dom/elements/bindings/window.js';
export {
once,
preventDefault,
self,
stopImmediatePropagation,
stopPropagation,
trusted
} from './dom/legacy/event-modifiers.js';
export { init } from './dom/legacy/lifecycle.js';
export {
add_legacy_event_listener,
bubble_event,
reactive_import,
update_legacy_props
} from './dom/legacy/misc.js';
export {
append,
comment,
svg_template,
svg_template_with_script,
template,
template_with_script,
text
} from './dom/template.js';
export { derived, derived_safe_equal } from './reactivity/deriveds.js';
export {
effect_active,
effect_root,
legacy_pre_effect,
legacy_pre_effect_reset,
render_effect,
user_effect,
user_pre_effect
} from './reactivity/effects.js';
export { mutable_source, mutate, source, set } from './reactivity/sources.js';
export {
prop,
rest_props,
spread_props,
update_pre_prop,
update_prop
} from './reactivity/props.js';
export {
invalidate_store,
mutate_store,
store_get,
store_set,
store_unsub,
unsubscribe_on_destroy,
update_pre_store,
update_store
} from './reactivity/store.js';
export { append_styles, sanitize_slots, set_text, slot, stringify } from './render.js';
export {
get,
invalidate_inner_signals,
flushSync,
flush_sync,
tick,
untrack,
update,
Expand All @@ -20,45 +119,17 @@ export {
setContext,
hasContext
} from './runtime.js';
export * from './dev/ownership.js';
export { await_block as await } from './dom/blocks/await.js';
export { if_block as if } from './dom/blocks/if.js';
export { key_block as key } from './dom/blocks/key.js';
export * from './dom/blocks/css-props.js';
export * from './dom/blocks/each.js';
export * from './dom/blocks/html.js';
export * from './dom/blocks/snippet.js';
export * from './dom/blocks/svelte-component.js';
export * from './dom/blocks/svelte-element.js';
export * from './dom/blocks/svelte-head.js';
export * from './dom/elements/actions.js';
export * from './dom/elements/attributes.js';
export * from './dom/elements/class.js';
export * from './dom/elements/events.js';
export * from './dom/elements/misc.js';
export * from './dom/elements/style.js';
export * from './dom/elements/transitions.js';
export * from './dom/elements/bindings/input.js';
export * from './dom/elements/bindings/media.js';
export * from './dom/elements/bindings/navigator.js';
export * from './dom/elements/bindings/props.js';
export * from './dom/elements/bindings/select.js';
export * from './dom/elements/bindings/size.js';
export * from './dom/elements/bindings/this.js';
export * from './dom/elements/bindings/universal.js';
export * from './dom/elements/bindings/window.js';
export * from './dom/legacy/event-modifiers.js';
export * from './dom/legacy/lifecycle.js';
export * from './dom/legacy/misc.js';
export * from './dom/template.js';
export * from './reactivity/deriveds.js';
export * from './reactivity/effects.js';
export * from './reactivity/sources.js';
export * from './reactivity/equality.js';
export * from './reactivity/props.js';
export * from './reactivity/store.js';
export * from './render.js';
export * from './validate.js';
export {
add_snippet_symbol,
validate_component,
validate_dynamic_component,
validate_dynamic_element_tag,
validate_each_keys,
validate_prop_bindings,
validate_snippet,
validate_store,
validate_void_dynamic_element
} from './validate.js';
export { raf } from './timing.js';
export { proxy, unstate } from './proxy.js';
export { create_custom_element } from './dom/elements/custom-element.js';
Expand Down
2 changes: 1 addition & 1 deletion packages/svelte/src/internal/client/reactivity/props.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { get_descriptor, is_function } from '../utils.js';
import { mutable_source, set } from './sources.js';
import { derived } from './deriveds.js';
import { get, inspect_fn, is_signals_recorded, untrack } from '../runtime.js';
import { safe_equals, safe_not_equal } from './equality.js';
import { safe_equals } from './equality.js';

/**
* @param {((value?: number) => number)} fn
Expand Down
Loading

0 comments on commit d49e2ae

Please sign in to comment.