Home / File/ url-search-params.js — svelte Source File

url-search-params.js — svelte Source File

Architecture documentation for url-search-params.js, a javascript file in the svelte codebase. 10 imports, 2 dependents.

File javascript SharedInternal BitFlags 10 imports 2 dependents 1 classes

Entity Profile

Dependency Diagram

graph LR
  bb708ca7_388e_3591_68c1_42bce13ff37d["url-search-params.js"]
  e5c35d51_28d8_9054_923d_b7f82a3c8dc2["sources.js"]
  bb708ca7_388e_3591_68c1_42bce13ff37d --> e5c35d51_28d8_9054_923d_b7f82a3c8dc2
  39208392_58c1_7201_b748_aa74d97cadb9["state"]
  bb708ca7_388e_3591_68c1_42bce13ff37d --> 39208392_58c1_7201_b748_aa74d97cadb9
  7602fc38_fab9_8955_83f0_8643d7c6c7a4["increment"]
  bb708ca7_388e_3591_68c1_42bce13ff37d --> 7602fc38_fab9_8955_83f0_8643d7c6c7a4
  2696eb67_452f_4c32_3e13_ee172192b366["tracing.js"]
  bb708ca7_388e_3591_68c1_42bce13ff37d --> 2696eb67_452f_4c32_3e13_ee172192b366
  4dfcf957_8573_ff55_bd31_4181227109e3["tag"]
  bb708ca7_388e_3591_68c1_42bce13ff37d --> 4dfcf957_8573_ff55_bd31_4181227109e3
  bde4209f_8ffc_1594_4024_b1835a44bcf6["runtime.js"]
  bb708ca7_388e_3591_68c1_42bce13ff37d --> bde4209f_8ffc_1594_4024_b1835a44bcf6
  a08b6cc5_af73_1be4_d02f_3113cf8a8305["get"]
  bb708ca7_388e_3591_68c1_42bce13ff37d --> a08b6cc5_af73_1be4_d02f_3113cf8a8305
  19ab2c95_d135_7687_9e01_bd8cfc8a8f42["url.js"]
  bb708ca7_388e_3591_68c1_42bce13ff37d --> 19ab2c95_d135_7687_9e01_bd8cfc8a8f42
  de12be9e_d5e5_abca_67f3_9801d2f108a2["get_current_url"]
  bb708ca7_388e_3591_68c1_42bce13ff37d --> de12be9e_d5e5_abca_67f3_9801d2f108a2
  c9866d91_a204_fa55_a9e3_6bcc6aaaec1e["esm-env"]
  bb708ca7_388e_3591_68c1_42bce13ff37d --> c9866d91_a204_fa55_a9e3_6bcc6aaaec1e
  b13a3c81_1fb3_08ab_9e18_61efe88dbaac["url-search-params.test.ts"]
  b13a3c81_1fb3_08ab_9e18_61efe88dbaac --> bb708ca7_388e_3591_68c1_42bce13ff37d
  19ab2c95_d135_7687_9e01_bd8cfc8a8f42["url.js"]
  19ab2c95_d135_7687_9e01_bd8cfc8a8f42 --> bb708ca7_388e_3591_68c1_42bce13ff37d
  style bb708ca7_388e_3591_68c1_42bce13ff37d fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { DEV } from 'esm-env';
import { state, increment } from '../internal/client/reactivity/sources.js';
import { tag } from '../internal/client/dev/tracing.js';
import { get } from '../internal/client/runtime.js';
import { get_current_url } from './url.js';

export const REPLACE = Symbol();

/**
 * A reactive version of the built-in [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams) object.
 * Reading its contents (by iterating, or by calling `params.get(...)` or `params.getAll(...)` as in the [example](https://svelte.dev/playground/b3926c86c5384bab9f2cf993bc08c1c8) below) in an [effect](https://svelte.dev/docs/svelte/$effect) or [derived](https://svelte.dev/docs/svelte/$derived)
 * will cause it to be re-evaluated as necessary when the params are updated.
 *
 * ```svelte
 * <script>
 * 	import { SvelteURLSearchParams } from 'svelte/reactivity';
 *
 * 	const params = new SvelteURLSearchParams('message=hello');
 *
 * 	let key = $state('key');
 * 	let value = $state('value');
 * </script>
 *
 * <input bind:value={key} />
 * <input bind:value={value} />
 * <button onclick={() => params.append(key, value)}>append</button>
 *
 * <p>?{params.toString()}</p>
 *
 * {#each params as [key, value]}
 * 	<p>{key}: {value}</p>
 * {/each}
 * ```
 */
export class SvelteURLSearchParams extends URLSearchParams {
	#version = DEV ? tag(state(0), 'SvelteURLSearchParams version') : state(0);
	#url = get_current_url();

	#updating = false;

	#update_url() {
		if (!this.#url || this.#updating) return;
		this.#updating = true;

		const search = this.toString();
		this.#url.search = search && `?${search}`;

		this.#updating = false;
	}

	/**
	 * @param {URLSearchParams} params
	 * @internal
	 */
	[REPLACE](params) {
		if (this.#updating) return;
		this.#updating = true;

		for (const key of [...super.keys()]) {
			super.delete(key);
// ... (115 more lines)

Subdomains

Frequently Asked Questions

What does url-search-params.js do?
url-search-params.js is a source file in the svelte codebase, written in javascript. It belongs to the SharedInternal domain, BitFlags subdomain.
What does url-search-params.js depend on?
url-search-params.js imports 10 module(s): esm-env, get, get_current_url, increment, runtime.js, sources.js, state, tag, and 2 more.
What files import url-search-params.js?
url-search-params.js is imported by 2 file(s): url-search-params.test.ts, url.js.
Where is url-search-params.js in the architecture?
url-search-params.js is located at packages/svelte/src/reactivity/url-search-params.js (domain: SharedInternal, subdomain: BitFlags, directory: packages/svelte/src/reactivity).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free