Skip to main content
Glama
deleonio
by deleonio
hydration-options.test.mjs1.95 kB
import assert from 'node:assert/strict'; import { test } from 'node:test'; import { hydrateFragment } from '../../dist/index.mjs'; test('hydrateFragment applies safe defaults for each render', async () => { const seenOptions = []; const renderer = async (_html, options) => { seenOptions.push(options ?? {}); return { html: '<hydrated></hydrated>' }; }; await hydrateFragment(renderer, '<kol-demo></kol-demo>'); await hydrateFragment(renderer, '<kol-demo></kol-demo>'); assert.equal(seenOptions.length, 2); assert.notStrictEqual(seenOptions[0], seenOptions[1], 'options object should not be reused between renders'); for (const options of seenOptions) { assert.equal(options.destroyDocument, true); assert.equal(options.destroyWindow, true); assert.equal(options.serializeToHtml, true); assert.equal(options.clientHydrateAnnotations, false); } }); test('hydrateFragment merges provided and default options without mutation', async () => { const observedOptions = []; const renderer = async (_html, options) => { observedOptions.push({ ...(options ?? {}) }); if (options) { options.destroyWindow = 'mutated by renderer'; } return { html: '<hydrated></hydrated>' }; }; const baseOptions = { timeout: 42, removeHtmlComments: false }; const requestOptions = { destroyWindow: false, customFlag: true }; await hydrateFragment(renderer, '<kol-demo></kol-demo>', requestOptions, baseOptions); await hydrateFragment(renderer, '<kol-demo></kol-demo>'); assert.equal(observedOptions.length, 2); const [firstCall, secondCall] = observedOptions; assert.equal(firstCall.destroyDocument, true); assert.equal(firstCall.destroyWindow, false); assert.equal(firstCall.timeout, 42); assert.equal(firstCall.removeHtmlComments, false); assert.equal(firstCall.customFlag, true); assert.equal(secondCall.destroyWindow, true, 'mutations from previous call must not leak'); assert.equal(secondCall.timeout, 5000); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/deleonio/public-ui-kolibri'

If you have feedback or need assistance with the MCP directory API, please join our Discord server