svelte 5.43.14 → 5.44.0
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/compiler/index.js +1 -1
- package/package.json +2 -1
- package/src/index-client.js +1 -0
- package/src/index-server.js +2 -0
- package/src/internal/client/constants.js +9 -0
- package/src/internal/client/dev/inspect.js +2 -2
- package/src/internal/client/dev/tracing.js +0 -57
- package/src/internal/client/dom/elements/attachments.js +2 -2
- package/src/internal/client/dom/elements/attributes.js +2 -2
- package/src/internal/client/errors.js +17 -16
- package/src/internal/client/hydratable.js +33 -0
- package/src/internal/client/proxy.js +3 -2
- package/src/internal/client/reactivity/batch.js +8 -9
- package/src/internal/client/reactivity/deriveds.js +3 -3
- package/src/internal/client/reactivity/effects.js +14 -1
- package/src/internal/client/reactivity/sources.js +6 -7
- package/src/internal/client/runtime.js +18 -7
- package/src/internal/client/warnings.js +12 -0
- package/src/internal/server/dev.js +10 -0
- package/src/internal/server/errors.js +66 -0
- package/src/internal/server/hydratable.js +136 -0
- package/src/internal/server/render-context.js +74 -0
- package/src/internal/server/renderer.js +76 -10
- package/src/internal/server/warnings.js +24 -1
- package/src/internal/shared/dev.js +65 -0
- package/src/internal/shared/errors.js +17 -0
- package/src/internal/shared/utils.js +1 -1
- package/src/version.js +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +4 -1
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/** @import { HydratableLookupEntry } from '#server' */
|
|
2
|
+
import { async_mode_flag } from '../flags/index.js';
|
|
3
|
+
import { get_render_context } from './render-context.js';
|
|
4
|
+
import * as e from './errors.js';
|
|
5
|
+
import * as devalue from 'devalue';
|
|
6
|
+
import { get_stack } from '../shared/dev.js';
|
|
7
|
+
import { DEV } from 'esm-env';
|
|
8
|
+
import { get_user_code_location } from './dev.js';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @template T
|
|
12
|
+
* @param {string} key
|
|
13
|
+
* @param {() => T} fn
|
|
14
|
+
* @returns {T}
|
|
15
|
+
*/
|
|
16
|
+
export function hydratable(key, fn) {
|
|
17
|
+
if (!async_mode_flag) {
|
|
18
|
+
e.experimental_async_required('hydratable');
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const { hydratable } = get_render_context();
|
|
22
|
+
|
|
23
|
+
let entry = hydratable.lookup.get(key);
|
|
24
|
+
|
|
25
|
+
if (entry !== undefined) {
|
|
26
|
+
if (DEV) {
|
|
27
|
+
const comparison = compare(key, entry, encode(key, fn()));
|
|
28
|
+
comparison.catch(() => {});
|
|
29
|
+
hydratable.comparisons.push(comparison);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return /** @type {T} */ (entry.value);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const value = fn();
|
|
36
|
+
|
|
37
|
+
entry = encode(key, value, hydratable.unresolved_promises);
|
|
38
|
+
hydratable.lookup.set(key, entry);
|
|
39
|
+
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* @param {string} key
|
|
45
|
+
* @param {any} value
|
|
46
|
+
* @param {Map<Promise<any>, string>} [unresolved]
|
|
47
|
+
*/
|
|
48
|
+
function encode(key, value, unresolved) {
|
|
49
|
+
/** @type {HydratableLookupEntry} */
|
|
50
|
+
const entry = { value, serialized: '' };
|
|
51
|
+
|
|
52
|
+
if (DEV) {
|
|
53
|
+
entry.stack = get_user_code_location();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
let uid = 1;
|
|
57
|
+
|
|
58
|
+
entry.serialized = devalue.uneval(entry.value, (value, uneval) => {
|
|
59
|
+
if (value instanceof Promise) {
|
|
60
|
+
const p = value
|
|
61
|
+
.then((v) => `r(${uneval(v)})`)
|
|
62
|
+
.catch((devalue_error) =>
|
|
63
|
+
e.hydratable_serialization_failed(
|
|
64
|
+
key,
|
|
65
|
+
serialization_stack(entry.stack, devalue_error?.stack)
|
|
66
|
+
)
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
// prevent unhandled rejections from crashing the server
|
|
70
|
+
p.catch(() => {});
|
|
71
|
+
|
|
72
|
+
// track which promises are still resolving when render is complete
|
|
73
|
+
unresolved?.set(p, key);
|
|
74
|
+
p.finally(() => unresolved?.delete(p));
|
|
75
|
+
|
|
76
|
+
// we serialize promises as `"${i}"`, because it's impossible for that string
|
|
77
|
+
// to occur 'naturally' (since the quote marks would have to be escaped)
|
|
78
|
+
const placeholder = `"${uid++}"`;
|
|
79
|
+
|
|
80
|
+
(entry.promises ??= []).push(
|
|
81
|
+
p.then((s) => {
|
|
82
|
+
entry.serialized = entry.serialized.replace(placeholder, s);
|
|
83
|
+
})
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
return placeholder;
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
return entry;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* @param {string} key
|
|
95
|
+
* @param {HydratableLookupEntry} a
|
|
96
|
+
* @param {HydratableLookupEntry} b
|
|
97
|
+
*/
|
|
98
|
+
async function compare(key, a, b) {
|
|
99
|
+
// note: these need to be loops (as opposed to Promise.all) because
|
|
100
|
+
// additional promises can get pushed to them while we're awaiting
|
|
101
|
+
// an earlier one
|
|
102
|
+
for (const p of a?.promises ?? []) {
|
|
103
|
+
await p;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
for (const p of b?.promises ?? []) {
|
|
107
|
+
await p;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (a.serialized !== b.serialized) {
|
|
111
|
+
const a_stack = /** @type {string} */ (a.stack);
|
|
112
|
+
const b_stack = /** @type {string} */ (b.stack);
|
|
113
|
+
|
|
114
|
+
const stack =
|
|
115
|
+
a_stack === b_stack
|
|
116
|
+
? `Occurred at:\n${a_stack}`
|
|
117
|
+
: `First occurrence at:\n${a_stack}\n\nSecond occurrence at:\n${b_stack}`;
|
|
118
|
+
|
|
119
|
+
e.hydratable_clobbering(key, stack);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* @param {string | undefined} root_stack
|
|
125
|
+
* @param {string | undefined} uneval_stack
|
|
126
|
+
*/
|
|
127
|
+
function serialization_stack(root_stack, uneval_stack) {
|
|
128
|
+
let out = '';
|
|
129
|
+
if (root_stack) {
|
|
130
|
+
out += root_stack + '\n';
|
|
131
|
+
}
|
|
132
|
+
if (uneval_stack) {
|
|
133
|
+
out += 'Caused by:\n' + uneval_stack + '\n';
|
|
134
|
+
}
|
|
135
|
+
return out || '<missing stack trace>';
|
|
136
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// @ts-ignore -- we don't include node types in the production build
|
|
2
|
+
/** @import { AsyncLocalStorage } from 'node:async_hooks' */
|
|
3
|
+
/** @import { RenderContext } from '#server' */
|
|
4
|
+
|
|
5
|
+
import { deferred } from '../shared/utils.js';
|
|
6
|
+
import * as e from './errors.js';
|
|
7
|
+
|
|
8
|
+
/** @type {Promise<void> | null} */
|
|
9
|
+
let current_render = null;
|
|
10
|
+
|
|
11
|
+
/** @type {RenderContext | null} */
|
|
12
|
+
let context = null;
|
|
13
|
+
|
|
14
|
+
/** @returns {RenderContext} */
|
|
15
|
+
export function get_render_context() {
|
|
16
|
+
const store = context ?? als?.getStore();
|
|
17
|
+
|
|
18
|
+
if (!store) {
|
|
19
|
+
e.server_context_required();
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return store;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @template T
|
|
27
|
+
* @param {() => Promise<T>} fn
|
|
28
|
+
* @returns {Promise<T>}
|
|
29
|
+
*/
|
|
30
|
+
export async function with_render_context(fn) {
|
|
31
|
+
context = {
|
|
32
|
+
hydratable: {
|
|
33
|
+
lookup: new Map(),
|
|
34
|
+
comparisons: [],
|
|
35
|
+
unresolved_promises: new Map()
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
if (in_webcontainer()) {
|
|
40
|
+
const { promise, resolve } = deferred();
|
|
41
|
+
const previous_render = current_render;
|
|
42
|
+
current_render = promise;
|
|
43
|
+
await previous_render;
|
|
44
|
+
return fn().finally(resolve);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
try {
|
|
48
|
+
if (als === null) {
|
|
49
|
+
e.async_local_storage_unavailable();
|
|
50
|
+
}
|
|
51
|
+
return als.run(context, fn);
|
|
52
|
+
} finally {
|
|
53
|
+
context = null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** @type {AsyncLocalStorage<RenderContext | null> | null} */
|
|
58
|
+
let als = null;
|
|
59
|
+
|
|
60
|
+
export async function init_render_context() {
|
|
61
|
+
if (als !== null) return;
|
|
62
|
+
try {
|
|
63
|
+
// @ts-ignore -- we don't include node types in the production build
|
|
64
|
+
const { AsyncLocalStorage } = await import('node:async_hooks');
|
|
65
|
+
als = new AsyncLocalStorage();
|
|
66
|
+
} catch {}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// this has to be a function because rollup won't treeshake it if it's a constant
|
|
70
|
+
function in_webcontainer() {
|
|
71
|
+
// @ts-ignore -- this will fail when we run typecheck because we exclude node types
|
|
72
|
+
// eslint-disable-next-line n/prefer-global/process
|
|
73
|
+
return !!globalThis.process?.versions?.webcontainer;
|
|
74
|
+
}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
/** @import { Component } from 'svelte' */
|
|
2
|
-
/** @import { RenderOutput, SSRContext, SyncRenderOutput } from './types.js' */
|
|
2
|
+
/** @import { HydratableContext, RenderOutput, SSRContext, SyncRenderOutput } from './types.js' */
|
|
3
|
+
/** @import { MaybePromise } from '#shared' */
|
|
3
4
|
import { async_mode_flag } from '../flags/index.js';
|
|
4
5
|
import { abort } from './abort-signal.js';
|
|
5
|
-
import { pop, push, set_ssr_context, ssr_context } from './context.js';
|
|
6
|
+
import { pop, push, set_ssr_context, ssr_context, save } from './context.js';
|
|
6
7
|
import * as e from './errors.js';
|
|
8
|
+
import * as w from './warnings.js';
|
|
7
9
|
import { BLOCK_CLOSE, BLOCK_OPEN } from './hydration.js';
|
|
8
10
|
import { attributes } from './index.js';
|
|
11
|
+
import { get_render_context, with_render_context, init_render_context } from './render-context.js';
|
|
12
|
+
import { DEV } from 'esm-env';
|
|
9
13
|
|
|
10
14
|
/** @typedef {'head' | 'body'} RendererType */
|
|
11
15
|
/** @typedef {{ [key in RendererType]: string }} AccumulatedContent */
|
|
12
|
-
|
|
13
|
-
* @template T
|
|
14
|
-
* @typedef {T | Promise<T>} MaybePromise<T>
|
|
15
|
-
*/
|
|
16
|
+
|
|
16
17
|
/**
|
|
17
18
|
* @typedef {string | Renderer} RendererItem
|
|
18
19
|
*/
|
|
@@ -423,7 +424,9 @@ export class Renderer {
|
|
|
423
424
|
});
|
|
424
425
|
return Promise.resolve(user_result);
|
|
425
426
|
}
|
|
426
|
-
async ??=
|
|
427
|
+
async ??= init_render_context().then(() =>
|
|
428
|
+
with_render_context(() => Renderer.#render_async(component, options))
|
|
429
|
+
);
|
|
427
430
|
return async.then((result) => {
|
|
428
431
|
Object.defineProperty(result, 'html', {
|
|
429
432
|
// eslint-disable-next-line getter-return
|
|
@@ -515,15 +518,19 @@ export class Renderer {
|
|
|
515
518
|
* @returns {Promise<AccumulatedContent>}
|
|
516
519
|
*/
|
|
517
520
|
static async #render_async(component, options) {
|
|
518
|
-
|
|
521
|
+
const previous_context = ssr_context;
|
|
522
|
+
|
|
519
523
|
try {
|
|
520
524
|
const renderer = Renderer.#open_render('async', component, options);
|
|
521
|
-
|
|
522
525
|
const content = await renderer.#collect_content_async();
|
|
526
|
+
const hydratables = await renderer.#collect_hydratables();
|
|
527
|
+
if (hydratables !== null) {
|
|
528
|
+
content.head = hydratables + content.head;
|
|
529
|
+
}
|
|
523
530
|
return Renderer.#close_render(content, renderer);
|
|
524
531
|
} finally {
|
|
525
|
-
abort();
|
|
526
532
|
set_ssr_context(previous_context);
|
|
533
|
+
abort();
|
|
527
534
|
}
|
|
528
535
|
}
|
|
529
536
|
|
|
@@ -564,6 +571,23 @@ export class Renderer {
|
|
|
564
571
|
return content;
|
|
565
572
|
}
|
|
566
573
|
|
|
574
|
+
async #collect_hydratables() {
|
|
575
|
+
const ctx = get_render_context().hydratable;
|
|
576
|
+
|
|
577
|
+
for (const [_, key] of ctx.unresolved_promises) {
|
|
578
|
+
// this is a problem -- it means we've finished the render but we're still waiting on a promise to resolve so we can
|
|
579
|
+
// serialize it, so we're blocking the response on useless content.
|
|
580
|
+
w.unresolved_hydratable(key, ctx.lookup.get(key)?.stack ?? '<missing stack trace>');
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
for (const comparison of ctx.comparisons) {
|
|
584
|
+
// these reject if there's a mismatch
|
|
585
|
+
await comparison;
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
return await Renderer.#hydratable_block(ctx);
|
|
589
|
+
}
|
|
590
|
+
|
|
567
591
|
/**
|
|
568
592
|
* @template {Record<string, any>} Props
|
|
569
593
|
* @param {'sync' | 'async'} mode
|
|
@@ -617,6 +641,48 @@ export class Renderer {
|
|
|
617
641
|
body
|
|
618
642
|
};
|
|
619
643
|
}
|
|
644
|
+
|
|
645
|
+
/**
|
|
646
|
+
* @param {HydratableContext} ctx
|
|
647
|
+
*/
|
|
648
|
+
static async #hydratable_block(ctx) {
|
|
649
|
+
if (ctx.lookup.size === 0) {
|
|
650
|
+
return null;
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
let entries = [];
|
|
654
|
+
let has_promises = false;
|
|
655
|
+
|
|
656
|
+
for (const [k, v] of ctx.lookup) {
|
|
657
|
+
if (v.promises) {
|
|
658
|
+
has_promises = true;
|
|
659
|
+
for (const p of v.promises) await p;
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
entries.push(`[${JSON.stringify(k)},${v.serialized}]`);
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
let prelude = `const h = (window.__svelte ??= {}).h ??= new Map();`;
|
|
666
|
+
|
|
667
|
+
if (has_promises) {
|
|
668
|
+
prelude = `const r = (v) => Promise.resolve(v);
|
|
669
|
+
${prelude}`;
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
// TODO csp -- have discussed but not implemented
|
|
673
|
+
return `
|
|
674
|
+
<script>
|
|
675
|
+
{
|
|
676
|
+
${prelude}
|
|
677
|
+
|
|
678
|
+
for (const [k, v] of [
|
|
679
|
+
${entries.join(',\n\t\t\t\t\t')}
|
|
680
|
+
]) {
|
|
681
|
+
h.set(k, v);
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
</script>`;
|
|
685
|
+
}
|
|
620
686
|
}
|
|
621
687
|
|
|
622
688
|
export class SSRState {
|
|
@@ -3,4 +3,27 @@
|
|
|
3
3
|
import { DEV } from 'esm-env';
|
|
4
4
|
|
|
5
5
|
var bold = 'font-weight: bold';
|
|
6
|
-
var normal = 'font-weight: normal';
|
|
6
|
+
var normal = 'font-weight: normal';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A `hydratable` value with key `%key%` was created, but at least part of it was not used during the render.
|
|
10
|
+
*
|
|
11
|
+
* The `hydratable` was initialized in:
|
|
12
|
+
* %stack%
|
|
13
|
+
* @param {string} key
|
|
14
|
+
* @param {string} stack
|
|
15
|
+
*/
|
|
16
|
+
export function unresolved_hydratable(key, stack) {
|
|
17
|
+
if (DEV) {
|
|
18
|
+
console.warn(
|
|
19
|
+
`%c[svelte] unresolved_hydratable\n%cA \`hydratable\` value with key \`${key}\` was created, but at least part of it was not used during the render.
|
|
20
|
+
|
|
21
|
+
The \`hydratable\` was initialized in:
|
|
22
|
+
${stack}\nhttps://svelte.dev/e/unresolved_hydratable`,
|
|
23
|
+
bold,
|
|
24
|
+
normal
|
|
25
|
+
);
|
|
26
|
+
} else {
|
|
27
|
+
console.warn(`https://svelte.dev/e/unresolved_hydratable`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { define_property } from './utils.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @param {string} label
|
|
5
|
+
* @returns {Error & { stack: string } | null}
|
|
6
|
+
*/
|
|
7
|
+
export function get_error(label) {
|
|
8
|
+
const error = new Error();
|
|
9
|
+
const stack = get_stack();
|
|
10
|
+
|
|
11
|
+
if (stack.length === 0) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
stack.unshift('\n');
|
|
16
|
+
|
|
17
|
+
define_property(error, 'stack', {
|
|
18
|
+
value: stack.join('\n')
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
define_property(error, 'name', {
|
|
22
|
+
value: label
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
return /** @type {Error & { stack: string }} */ (error);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @returns {string[]}
|
|
30
|
+
*/
|
|
31
|
+
export function get_stack() {
|
|
32
|
+
// @ts-ignore - doesn't exist everywhere
|
|
33
|
+
const limit = Error.stackTraceLimit;
|
|
34
|
+
// @ts-ignore - doesn't exist everywhere
|
|
35
|
+
Error.stackTraceLimit = Infinity;
|
|
36
|
+
const stack = new Error().stack;
|
|
37
|
+
// @ts-ignore - doesn't exist everywhere
|
|
38
|
+
Error.stackTraceLimit = limit;
|
|
39
|
+
|
|
40
|
+
if (!stack) return [];
|
|
41
|
+
|
|
42
|
+
const lines = stack.split('\n');
|
|
43
|
+
const new_lines = [];
|
|
44
|
+
|
|
45
|
+
for (let i = 0; i < lines.length; i++) {
|
|
46
|
+
const line = lines[i];
|
|
47
|
+
const posixified = line.replaceAll('\\', '/');
|
|
48
|
+
|
|
49
|
+
if (line.trim() === 'Error') {
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (line.includes('validate_each_keys')) {
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (posixified.includes('svelte/src/internal') || posixified.includes('node_modules/.vite')) {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
new_lines.push(line);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return new_lines;
|
|
65
|
+
}
|
|
@@ -2,6 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
import { DEV } from 'esm-env';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Cannot use `%name%(...)` unless the `experimental.async` compiler option is `true`
|
|
7
|
+
* @param {string} name
|
|
8
|
+
* @returns {never}
|
|
9
|
+
*/
|
|
10
|
+
export function experimental_async_required(name) {
|
|
11
|
+
if (DEV) {
|
|
12
|
+
const error = new Error(`experimental_async_required\nCannot use \`${name}(...)\` unless the \`experimental.async\` compiler option is \`true\`\nhttps://svelte.dev/e/experimental_async_required`);
|
|
13
|
+
|
|
14
|
+
error.name = 'Svelte error';
|
|
15
|
+
|
|
16
|
+
throw error;
|
|
17
|
+
} else {
|
|
18
|
+
throw new Error(`https://svelte.dev/e/experimental_async_required`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
5
22
|
/**
|
|
6
23
|
* Cannot use `{@render children(...)}` if the parent component uses `let:` directives. Consider using a named snippet instead
|
|
7
24
|
* @returns {never}
|
package/src/version.js
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -450,6 +450,7 @@ declare module 'svelte' {
|
|
|
450
450
|
* @deprecated Use [`$effect`](https://svelte.dev/docs/svelte/$effect) instead
|
|
451
451
|
* */
|
|
452
452
|
export function afterUpdate(fn: () => void): void;
|
|
453
|
+
export function hydratable<T>(key: string, fn: () => T): T;
|
|
453
454
|
/**
|
|
454
455
|
* Create a snippet programmatically
|
|
455
456
|
* */
|
package/types/index.d.ts.map
CHANGED
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"createEventDispatcher",
|
|
21
21
|
"beforeUpdate",
|
|
22
22
|
"afterUpdate",
|
|
23
|
+
"hydratable",
|
|
23
24
|
"createRawSnippet",
|
|
24
25
|
"NotFunction",
|
|
25
26
|
"flushSync",
|
|
@@ -170,6 +171,7 @@
|
|
|
170
171
|
"sources": [
|
|
171
172
|
"../src/index.d.ts",
|
|
172
173
|
"../src/index-client.js",
|
|
174
|
+
"../src/internal/client/hydratable.js",
|
|
173
175
|
"../src/internal/client/dom/blocks/snippet.js",
|
|
174
176
|
"../src/internal/types.d.ts",
|
|
175
177
|
"../src/internal/client/reactivity/batch.js",
|
|
@@ -261,8 +263,9 @@
|
|
|
261
263
|
null,
|
|
262
264
|
null,
|
|
263
265
|
null,
|
|
266
|
+
null,
|
|
264
267
|
null
|
|
265
268
|
],
|
|
266
|
-
"mappings": ";;;;;;;kBAUiBA,2BAA2BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAkC/BC,eAAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAwEhBC,kBAAkBA;;;;;;;;;;;;;;;;;;;;;;;;kBAwBbC,SAASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAoCbC,oBAAoBA;;;;;;;;;;;;;;;;;;;;;;;;aAwBrBC,eAAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAiCfC,cAAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA6BdC,aAAaA;;;;;;;;;;;;;;;;;;;;;;;kBAuBRC,OAAOA;;;;;;;;;;;;;;;;kBAgBPC,eAAeA;;;;;;;;;;;;;;;;aAgBpBC,YAAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA0CPC,IAAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBCnSLC,cAAcA;;;;;;;;;;;;iBAsBdC,OAAOA;;;;;;;;iBAwBPC,SAASA;;;;;;;;;;;;;;;;;;;;;;iBA0CTC,qBAAqBA;;;;;;;;;;iBA2CrBC,YAAYA;;;;;;;;;;iBAuBZC,WAAWA;;;;
|
|
269
|
+
"mappings": "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",
|
|
267
270
|
"ignoreList": []
|
|
268
271
|
}
|