hydratable.js — svelte Source File
Architecture documentation for hydratable.js, a javascript file in the svelte codebase. 10 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 2d51c6c9_d3dc_2c19_12a2_18adb2ef1c08["hydratable.js"] 3c211218_0172_f6af_dd4f_da8028a531fc["index.js"] 2d51c6c9_d3dc_2c19_12a2_18adb2ef1c08 --> 3c211218_0172_f6af_dd4f_da8028a531fc 006232e6_7197_38b5_bd13_0b28c51c2ac8["render-context.js"] 2d51c6c9_d3dc_2c19_12a2_18adb2ef1c08 --> 006232e6_7197_38b5_bd13_0b28c51c2ac8 996c7fa5_2d99_0bb8_8ca5_ceef284d88cf["get_render_context"] 2d51c6c9_d3dc_2c19_12a2_18adb2ef1c08 --> 996c7fa5_2d99_0bb8_8ca5_ceef284d88cf aa72dc21_2f0c_e44b_b27f_dee45869de27["errors.js"] 2d51c6c9_d3dc_2c19_12a2_18adb2ef1c08 --> aa72dc21_2f0c_e44b_b27f_dee45869de27 66d86b00_6f66_4791_e665_59e2cf45dc7f["dev.js"] 2d51c6c9_d3dc_2c19_12a2_18adb2ef1c08 --> 66d86b00_6f66_4791_e665_59e2cf45dc7f dc56a025_e89c_82a9_72a2_1f21312e2aa4["get_stack"] 2d51c6c9_d3dc_2c19_12a2_18adb2ef1c08 --> dc56a025_e89c_82a9_72a2_1f21312e2aa4 4440efa2_b84c_d186_53ca_534b0add2937["dev.js"] 2d51c6c9_d3dc_2c19_12a2_18adb2ef1c08 --> 4440efa2_b84c_d186_53ca_534b0add2937 8362c319_fb03_c16d_839d_c59e10f334e7["get_user_code_location"] 2d51c6c9_d3dc_2c19_12a2_18adb2ef1c08 --> 8362c319_fb03_c16d_839d_c59e10f334e7 39cece3d_6293_5319_57d1_707aa326f944["devalue"] 2d51c6c9_d3dc_2c19_12a2_18adb2ef1c08 --> 39cece3d_6293_5319_57d1_707aa326f944 c9866d91_a204_fa55_a9e3_6bcc6aaaec1e["esm-env"] 2d51c6c9_d3dc_2c19_12a2_18adb2ef1c08 --> c9866d91_a204_fa55_a9e3_6bcc6aaaec1e style 2d51c6c9_d3dc_2c19_12a2_18adb2ef1c08 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
/** @import { HydratableLookupEntry } from '#server' */
import { async_mode_flag } from '../flags/index.js';
import { get_render_context } from './render-context.js';
import * as e from './errors.js';
import * as devalue from 'devalue';
import { get_stack } from '../shared/dev.js';
import { DEV } from 'esm-env';
import { get_user_code_location } from './dev.js';
/**
* @template T
* @param {string} key
* @param {() => T} fn
* @returns {T}
*/
export function hydratable(key, fn) {
if (!async_mode_flag) {
e.experimental_async_required('hydratable');
}
const { hydratable } = get_render_context();
let entry = hydratable.lookup.get(key);
if (entry !== undefined) {
if (DEV) {
const comparison = compare(key, entry, encode(key, fn()));
comparison.catch(() => {});
hydratable.comparisons.push(comparison);
}
return /** @type {T} */ (entry.value);
}
const value = fn();
entry = encode(key, value, hydratable.unresolved_promises);
hydratable.lookup.set(key, entry);
return value;
}
/**
* @param {string} key
* @param {any} value
* @param {Map<Promise<any>, string>} [unresolved]
*/
function encode(key, value, unresolved) {
/** @type {HydratableLookupEntry} */
const entry = { value, serialized: '' };
if (DEV) {
entry.stack = get_user_code_location();
}
let uid = 1;
entry.serialized = devalue.uneval(entry.value, (value, uneval) => {
if (is_promise(value)) {
// we serialize promises as `"${i}"`, because it's impossible for that string
// ... (83 more lines)
Domain
Subdomains
Dependencies
Source
Frequently Asked Questions
What does hydratable.js do?
hydratable.js is a source file in the svelte codebase, written in javascript. It belongs to the ServerRuntime domain, Serialization subdomain.
What functions are defined in hydratable.js?
hydratable.js defines 5 function(s): compare, encode, hydratable, is_promise, serialization_stack.
What does hydratable.js depend on?
hydratable.js imports 10 module(s): dev.js, dev.js, devalue, errors.js, esm-env, get_render_context, get_stack, get_user_code_location, and 2 more.
Where is hydratable.js in the architecture?
hydratable.js is located at packages/svelte/src/internal/server/hydratable.js (domain: ServerRuntime, subdomain: Serialization, directory: packages/svelte/src/internal/server).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free