@echojs-ecosystem/url-state 0.1.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/README.md +86 -0
- package/dist/index.d.ts +210 -0
- package/dist/index.js +993 -0
- package/dist/index.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/equality.ts","../src/core/parser-meta.ts","../src/core/default-visibility.ts","../src/core/options.ts","../src/core/url.ts","../src/core/update-queue.ts","../src/core/query-state.ts","../src/adapters/browser-adapter.ts","../src/adapters/memory-adapter.ts","../src/adapters/adapter.ts","../src/core/create-query-param.ts","../src/adapters/router-adapter.ts","../src/adapters/router-registry.ts","../src/adapters/auto-router-adapter.ts","../src/core/create-query-params.ts","../src/adapters/bind-router-query-params.ts","../src/core/parser.ts","../src/parsers/string.ts","../src/parsers/integer.ts","../src/parsers/float.ts","../src/parsers/boolean.ts","../src/parsers/literal.ts","../src/core/custom-multi-parser.ts","../src/parsers/array.ts","../src/parsers/native-array.ts","../src/core/custom-parser.ts","../src/core/standard-schema.ts","../src/parsers/json.ts","../src/parsers/date.ts","../src/parsers/timestamp.ts","../src/utils/throttle.ts","../src/utils/debounce.ts"],"names":["signal","ops","first"],"mappings":"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","file":"index.js","sourcesContent":["export const defaultEquals = (a: unknown, b: unknown): boolean => Object.is(a, b);\n\n","import type { Parser, ParserWithDefault } from \"./types\";\n\nexport const hasDefault = <Value>(parser: Parser<Value>): parser is ParserWithDefault<Value> =>\n Object.prototype.hasOwnProperty.call(parser, \"defaultValue\");\n","import { defaultEquals } from \"../utils/equality\";\nimport type { DefaultVisibility, Parser, ParserWithDefault, QueryStateSetOptions } from \"./types\";\nimport { hasDefault } from \"./parser-meta\";\n\nconst isVisibilityMode = (value: unknown): value is DefaultVisibility =>\n value === \"hide\" || value === \"show\";\n\nexport const resolveDefaultVisibility = (options: QueryStateSetOptions): DefaultVisibility => {\n if (isVisibilityMode(options.defaultVisibility)) return options.defaultVisibility;\n if (isVisibilityMode(options.defaultParamsBehavior)) return options.defaultParamsBehavior;\n\n if (options.clearOnDefault === false) return \"show\";\n if (options.clearOnDefault === true) return \"hide\";\n\n return \"hide\";\n};\n\nexport const shouldHideDefaultInUrl = <Value>(\n value: Value,\n parser: Parser<Value>,\n options: QueryStateSetOptions,\n): boolean => {\n if (!hasDefault(parser)) return false;\n if (resolveDefaultVisibility(options) === \"show\") return false;\n\n const parserEq = parser.eq;\n const equals =\n options.equals === false ? null : (parserEq ?? options.equals ?? defaultEquals);\n return equals ? equals(value, (parser as ParserWithDefault<Value>).defaultValue) : false;\n};\n\n/** @deprecated Use {@link shouldHideDefaultInUrl} */\nexport const shouldClearOnDefault = shouldHideDefaultInUrl;\n","import type { QueryStateOptions, QueryStateSetOptions } from \"./types\";\n\nexport const DEFAULT_QUERY_STATE_OPTIONS = {\n history: \"replace\",\n clearOnDefault: true,\n shallow: true,\n scroll: false,\n limitUrlUpdates: false,\n} as const satisfies Partial<QueryStateOptions>;\n\nexport const resolveSetOptions = (args: {\n createOptions?: QueryStateOptions | undefined;\n parserOptions?: Partial<QueryStateOptions> | undefined;\n setOptions?: QueryStateSetOptions | undefined;\n}): QueryStateSetOptions => {\n const merged: QueryStateSetOptions = {\n ...DEFAULT_QUERY_STATE_OPTIONS,\n ...(args.createOptions ?? {}),\n ...(args.parserOptions ?? {}),\n ...(args.setOptions ?? {}),\n };\n\n if (merged.defaultVisibility === \"show\") merged.clearOnDefault = false;\n else if (merged.defaultVisibility === \"hide\") merged.clearOnDefault = true;\n\n return merged;\n};\n","export type SearchParamValue = string | readonly string[] | null;\n\nexport const normalizeSearch = (search: string): string => {\n if (!search) return \"\";\n if (search === \"?\") return \"\";\n return search.startsWith(\"?\") ? search : `?${search}`;\n};\n\nexport const parseSearch = (search: string): URLSearchParams => new URLSearchParams(normalizeSearch(search));\n\nconst paramsToMap = (params: URLSearchParams): Map<string, string[]> => {\n const map = new Map<string, string[]>();\n for (const [key, value] of params.entries()) {\n const arr = map.get(key);\n if (arr) arr.push(value);\n else map.set(key, [value]);\n }\n return map;\n};\n\nexport const stringifySearch = (params: URLSearchParams): string => {\n const map = paramsToMap(params);\n const keys = [...map.keys()].sort();\n const next = new URLSearchParams();\n for (const key of keys) {\n const values = map.get(key)!;\n for (const value of values) next.append(key, value);\n }\n const str = next.toString();\n return str ? `?${str}` : \"\";\n};\n\nexport const getSearchParam = (search: string, key: string): SearchParamValue => {\n const params = parseSearch(search);\n const all = params.getAll(key);\n if (all.length === 0) return null;\n if (all.length === 1) return all[0]!;\n return all;\n};\n\nexport const removeSearchParam = (search: string, key: string): string => {\n const params = parseSearch(search);\n params.delete(key);\n return stringifySearch(params);\n};\n\nexport const setSearchParam = (search: string, key: string, value: SearchParamValue): string => {\n const params = parseSearch(search);\n params.delete(key);\n if (value === null) return stringifySearch(params);\n if (Array.isArray(value)) {\n for (const item of value) params.append(key, item);\n } else {\n params.set(key, value as string);\n }\n return stringifySearch(params);\n};\n\n","import type { SearchParamValue } from \"./url\";\nimport { setSearchParam } from \"./url\";\nimport type { QueryStateSetOptions, UrlStateAdapter } from \"./types\";\n\ntype Pending = {\n ops: { key: string; value: SearchParamValue }[];\n options: QueryStateSetOptions;\n};\n\ntype QueueState = {\n pending: Pending | null;\n microtaskQueued: boolean;\n};\n\nconst queues = new WeakMap<UrlStateAdapter, QueueState>();\n\nconst getQueue = (adapter: UrlStateAdapter): QueueState => {\n const existing = queues.get(adapter);\n if (existing) return existing;\n const next: QueueState = { pending: null, microtaskQueued: false };\n queues.set(adapter, next);\n return next;\n};\n\nconst mergePending = (prev: Pending | null, next: Pending): Pending => {\n if (!prev) return next;\n const history =\n prev.options.history === \"push\" || next.options.history === \"push\"\n ? \"push\"\n : next.options.history ?? prev.options.history;\n return {\n ops: [...prev.ops, ...next.ops],\n options: {\n ...prev.options,\n ...next.options,\n history,\n },\n };\n};\n\nexport const queueUrlUpdate = (\n adapter: UrlStateAdapter,\n ops: Pending[\"ops\"],\n options: QueryStateSetOptions,\n): void => {\n const state = getQueue(adapter);\n state.pending = mergePending(state.pending, { ops, options });\n if (state.microtaskQueued) return;\n\n state.microtaskQueued = true;\n queueMicrotask(() => {\n state.microtaskQueued = false;\n const pending = state.pending;\n state.pending = null;\n if (!pending) return;\n\n const doSet = (): void => {\n let nextSearch = adapter.getSearch();\n for (const op of pending.ops) {\n nextSearch = setSearchParam(nextSearch, op.key, op.value);\n }\n\n adapter.setSearch(nextSearch, {\n history: pending.options.history,\n shallow: pending.options.shallow,\n scroll: pending.options.scroll,\n });\n };\n\n const limiter = pending.options.limitUrlUpdates;\n if (limiter) limiter.schedule(doSet);\n else doSet();\n });\n};\n\n","import { signal, type Signal } from \"@echojs-ecosystem/reactivity\";\nimport { defaultEquals } from \"../utils/equality\";\nimport type { Parser, QueryStateOptions, QueryStateSetOptions, UrlStateAdapter } from \"./types\";\nimport { resolveSetOptions } from \"./options\";\nimport { hasDefault } from \"./parser-meta\";\nimport { getSearchParam, type SearchParamValue } from \"./url\";\nimport { queueUrlUpdate } from \"./update-queue\";\n\nexport { hasDefault } from \"./parser-meta\";\n\nexport const parseRaw = <Value>(parser: Parser<Value>, raw: SearchParamValue): Value | null => {\n const parsed = parser.parse(raw);\n if (parsed === null && hasDefault(parser)) return parser.defaultValue;\n return parsed;\n};\n\nconst rawEquals = (a: SearchParamValue, b: SearchParamValue): boolean => {\n if (a === b) return true;\n if (a === null || b === null) return false;\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i += 1) if (a[i] !== b[i]) return false;\n return true;\n }\n return false;\n};\n\nexport const readRawValue = (adapter: UrlStateAdapter, key: string): SearchParamValue => {\n return getSearchParam(adapter.getSearch(), key);\n};\n\nexport { shouldClearOnDefault, shouldHideDefaultInUrl } from \"./default-visibility\";\n\nexport const createSyncedSignals = <Value>(args: {\n adapter: UrlStateAdapter;\n key: string;\n parser: Parser<Value>;\n options?: QueryStateOptions | undefined;\n}): {\n $rawValue: Signal<SearchParamValue>;\n $value: Signal<Value>;\n getOptions(setOptions?: QueryStateSetOptions | undefined): QueryStateSetOptions;\n write(next: SearchParamValue, setOptions?: QueryStateSetOptions | undefined): void;\n dispose(): void;\n} => {\n const getOptions = (setOptions?: QueryStateSetOptions): QueryStateSetOptions =>\n resolveSetOptions({ createOptions: args.options, parserOptions: args.parser.options, setOptions });\n\n const initialRaw = readRawValue(args.adapter, args.key);\n const initialParsed = parseRaw(args.parser, initialRaw);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const $value = signal((initialParsed ?? (hasDefault(args.parser) ? args.parser.defaultValue : null)) as Value);\n const $rawValue = signal<SearchParamValue>(initialRaw);\n\n const syncFromAdapter = (): void => {\n const adapterRaw = readRawValue(args.adapter, args.key);\n if (!rawEquals(adapterRaw, $rawValue.peek())) $rawValue.set(adapterRaw);\n\n const parsed = parseRaw(args.parser, adapterRaw);\n const next = (parsed ?? (hasDefault(args.parser) ? args.parser.defaultValue : null)) as Value;\n const equals = getOptions().equals === false ? null : (getOptions().equals ?? defaultEquals);\n if (!equals || !equals(next, $value.peek())) $value.set(next);\n };\n\n const unsubscribe = args.adapter.subscribe(syncFromAdapter);\n\n const write = (next: SearchParamValue, setOptions?: QueryStateSetOptions): void => {\n const options = getOptions(setOptions);\n const parsed = parseRaw(args.parser, next);\n const nextValue = (parsed ?? (hasDefault(args.parser) ? args.parser.defaultValue : null)) as Value;\n\n const equals = options.equals === false ? null : (options.equals ?? defaultEquals);\n if (!rawEquals(next, $rawValue.peek())) $rawValue.set(next);\n if (!equals || !equals(nextValue, $value.peek())) $value.set(nextValue);\n\n queueUrlUpdate(args.adapter, [{ key: args.key, value: next }], options);\n };\n\n return {\n $rawValue,\n $value,\n getOptions,\n write,\n dispose: unsubscribe,\n };\n};\n\n","import type { UrlStateAdapter } from \"../core/types\";\nimport { normalizeSearch } from \"../core/url\";\n\nexport const createBrowserUrlStateAdapter = (): UrlStateAdapter => {\n if (typeof window === \"undefined\" || typeof window.history === \"undefined\" || typeof window.location === \"undefined\") {\n throw new Error(\"@echojs-ecosystem/url-state: Browser adapter requires `window`\");\n }\n\n const listeners = new Set<() => void>();\n\n const notify = (): void => {\n for (const listener of listeners) listener();\n };\n\n window.addEventListener(\"popstate\", notify);\n\n return {\n kind: \"browser\",\n getSearch() {\n return normalizeSearch(window.location.search);\n },\n setSearch(search, options) {\n const normalized = normalizeSearch(search);\n const pathname = window.location.pathname;\n const hash = window.location.hash ?? \"\";\n const nextUrl = `${pathname}${normalized}${hash}`;\n const historyMode = options?.history ?? \"replace\";\n if (historyMode === \"push\") window.history.pushState({}, \"\", nextUrl);\n else window.history.replaceState({}, \"\", nextUrl);\n notify();\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n if (listeners.size === 0) {\n // Keep it simple for now; browser adapter is usually global/singleton.\n }\n };\n },\n };\n};\n\n","import type { UrlStateAdapter } from \"../core/types\";\nimport { normalizeSearch } from \"../core/url\";\n\nexport const createMemoryUrlStateAdapter = (initialSearch: string = \"\"): UrlStateAdapter => {\n let search = normalizeSearch(initialSearch);\n const listeners = new Set<() => void>();\n\n return {\n kind: \"memory\",\n getSearch() {\n return search;\n },\n setSearch(next) {\n const normalized = normalizeSearch(next);\n if (normalized === search) return;\n search = normalized;\n for (const listener of listeners) listener();\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n };\n};\n\n","import type { UrlStateAdapter } from \"../core/types\";\nimport { createBrowserUrlStateAdapter } from \"./browser-adapter\";\nimport { createMemoryUrlStateAdapter } from \"./memory-adapter\";\n\nexport const getDefaultUrlStateAdapter = (): UrlStateAdapter => {\n if (typeof window !== \"undefined\" && typeof window.location !== \"undefined\") {\n return createBrowserUrlStateAdapter();\n }\n return createMemoryUrlStateAdapter(\"\");\n};\n\n","import type { Parser, QueryParamState, QueryStateOptions, QueryStateSetOptions } from \"./types\";\nimport { shouldHideDefaultInUrl } from \"./default-visibility\";\nimport { createSyncedSignals, hasDefault } from \"./query-state\";\nimport { getDefaultUrlStateAdapter } from \"../adapters/adapter\";\n\nexport const createQueryParam = <Value>(\n key: string,\n parser: Parser<Value>,\n options: QueryStateOptions = { defaultVisibility: \"show\" },\n): QueryParamState<Value> => {\n const adapter = options.adapter ?? getDefaultUrlStateAdapter();\n\n const state = createSyncedSignals<Value>({\n adapter,\n key,\n parser,\n options,\n });\n\n const subscribe: QueryParamState<Value>[\"subscribe\"] = (listener) => {\n let prev = state.$value.peek();\n return state.$value.subscribe(() => {\n const next = state.$value.peek();\n if (Object.is(next, prev)) return;\n const p = prev;\n prev = next;\n listener(next, p);\n });\n };\n\n const set: QueryParamState<Value>[\"set\"] = (value, setOptions) => {\n const resolved = state.getOptions(setOptions);\n if (value === null) {\n state.write(null, resolved);\n return;\n }\n\n if (shouldHideDefaultInUrl(value, parser, resolved)) {\n state.write(null, resolved);\n return;\n }\n\n const raw = parser.serialize(value);\n state.write(raw, resolved);\n };\n\n const update: QueryParamState<Value>[\"update\"] = (updater, setOptions) => {\n const current = state.$value.peek();\n set(updater(current), setOptions);\n };\n\n const reset: QueryParamState<Value>[\"reset\"] = (setOptions) => {\n if (hasDefault(parser)) set(parser.defaultValue, setOptions);\n else set(null, setOptions);\n };\n\n const clear: QueryParamState<Value>[\"clear\"] = (setOptions) => set(null, setOptions);\n\n return {\n kind: \"query-param\",\n key,\n value: () => state.$value.value(),\n set,\n update,\n reset,\n clear,\n $value: state.$value,\n $rawValue: state.$rawValue,\n subscribe,\n };\n};\n\n","import type { UrlStateAdapter } from \"../core/types\";\nimport { normalizeSearch } from \"../core/url\";\n\nexport type RouterLike = {\n readonly $fullPath: { value(): string; subscribe(fn: () => void): () => void };\n go(path: string, options?: { replace?: boolean }): void;\n replace?(path: string): void;\n};\n\nconst splitFullPath = (\n fullPath: string,\n): {\n pathname: string;\n search: string;\n hash: string;\n} => {\n const hashIndex = fullPath.indexOf(\"#\");\n const beforeHash = hashIndex >= 0 ? fullPath.slice(0, hashIndex) : fullPath;\n const hash = hashIndex >= 0 ? fullPath.slice(hashIndex) : \"\";\n\n const qIndex = beforeHash.indexOf(\"?\");\n const pathname = qIndex >= 0 ? beforeHash.slice(0, qIndex) : beforeHash;\n const search = qIndex >= 0 ? beforeHash.slice(qIndex) : \"\";\n return { pathname: pathname || \"/\", search: normalizeSearch(search), hash };\n};\n\nexport const createRouterUrlStateAdapter = (router: RouterLike): UrlStateAdapter | undefined => {\n if (!router) return undefined;\n return {\n kind: \"router\",\n getSearch() {\n const { search } = splitFullPath(router.$fullPath.value());\n return search;\n },\n setSearch(search, options) {\n const { pathname, hash } = splitFullPath(router.$fullPath.value());\n const normalized = normalizeSearch(search);\n const next = `${pathname}${normalized}${hash}`;\n\n const historyMode = options?.history ?? \"replace\";\n if (historyMode === \"replace\" && router.replace) router.replace(next);\n else router.go(next, { replace: historyMode === \"replace\" });\n },\n subscribe(listener) {\n return router.$fullPath.subscribe(listener);\n },\n };\n};\n\n","import type { UrlStateAdapter } from \"../core/types\";\nimport { createRouterUrlStateAdapter, type RouterLike } from \"./router-adapter\";\n\nlet activeRouter: RouterLike | null = null;\n\nconst onRouterReady: Array<() => void> = [];\n\ntype PendingSubscription = {\n listener: () => void;\n dispose?: () => void;\n};\n\nconst pendingSubscriptions: PendingSubscription[] = [];\n\nexport const registerUrlStateRouter = (router: RouterLike): void => {\n activeRouter = router;\n\n const adapter = createRouterUrlStateAdapter(router)!;\n\n for (const pending of pendingSubscriptions) {\n pending.dispose = adapter.subscribe(pending.listener);\n pending.listener();\n }\n\n for (const sync of onRouterReady) sync();\n onRouterReady.length = 0;\n};\n\nexport const getUrlStateRouter = (): RouterLike | null => activeRouter;\n\nexport const onUrlStateRouterReady = (listener: () => void): (() => void) => {\n if (activeRouter) {\n listener();\n return () => {};\n }\n onRouterReady.push(listener);\n return () => {\n const index = onRouterReady.indexOf(listener);\n if (index >= 0) onRouterReady.splice(index, 1);\n };\n};\n","import type { UrlStateAdapter } from \"../core/types\";\nimport { getDefaultUrlStateAdapter } from \"./adapter\";\nimport { createRouterUrlStateAdapter } from \"./router-adapter\";\nimport { getUrlStateRouter, onUrlStateRouterReady } from \"./router-registry\";\n\n/**\n * Uses the active router adapter when `createRouter` registered;\n * otherwise falls back to browser/memory (tests, SSR).\n */\nexport const createAutoRouterUrlStateAdapter = (): UrlStateAdapter => {\n const fallback = getDefaultUrlStateAdapter();\n\n const activeAdapter = (): UrlStateAdapter => {\n const router = getUrlStateRouter();\n if (router) return createRouterUrlStateAdapter(router)!;\n return fallback;\n };\n\n return {\n kind: \"auto-router\",\n getSearch: () => activeAdapter().getSearch(),\n setSearch: (search, options) => activeAdapter().setSearch(search, options),\n subscribe(listener) {\n let unsub = activeAdapter().subscribe(listener);\n\n const offReady = onUrlStateRouterReady(() => {\n unsub();\n listener();\n unsub = activeAdapter().subscribe(listener);\n });\n\n return () => {\n offReady();\n unsub();\n };\n },\n };\n};\n","import { signal } from \"@echojs-ecosystem/reactivity\";\nimport type {\n CreateQueryParamsOptions,\n ParsedSchema,\n Parser,\n QueryParamsState,\n QueryStateSetOptions,\n} from \"./types\";\nimport { resolveSetOptions } from \"./options\";\nimport { defaultEquals } from \"../utils/equality\";\nimport { getSearchParam, type SearchParamValue } from \"./url\";\nimport { queueUrlUpdate } from \"./update-queue\";\nimport { createAutoRouterUrlStateAdapter } from \"../adapters/auto-router-adapter\";\nimport { onUrlStateRouterReady } from \"../adapters/router-registry\";\nimport { resolveDefaultVisibility, shouldHideDefaultInUrl } from \"./default-visibility\";\nimport { hasDefault, parseRaw } from \"./query-state\";\n\nconst getUrlKey = <Schema extends Record<string, Parser<any>>>(\n schemaKey: keyof Schema,\n options: CreateQueryParamsOptions<Schema> | undefined,\n): string => {\n const override = options?.urlKeys?.[schemaKey];\n return (override ?? (schemaKey as string)) as string;\n};\n\nexport const createQueryParams = <Schema extends Record<string, Parser<any>>>(\n schema: Schema,\n options: CreateQueryParamsOptions<Schema> = {},\n): QueryParamsState<Schema> => {\n const adapter = options.adapter ?? createAutoRouterUrlStateAdapter();\n const usesAutoRouter = options.adapter === undefined;\n\n const resolveOptions = (setOptions?: QueryStateSetOptions): QueryStateSetOptions =>\n resolveSetOptions({ createOptions: options, parserOptions: undefined, setOptions });\n\n const readSchema = (): ParsedSchema<Schema> => {\n const search = adapter.getSearch();\n const out: Record<string, unknown> = {};\n for (const key of Object.keys(schema) as (keyof Schema)[]) {\n const parser = schema[key];\n const urlKey = getUrlKey(key, options);\n const raw = getSearchParam(search, urlKey);\n const parsed = parseRaw(parser as any, raw);\n out[key as string] = (parsed ?? (hasDefault(parser as any) ? (parser as any).defaultValue : null)) as unknown;\n }\n return out as ParsedSchema<Schema>;\n };\n\n const $value = signal<ParsedSchema<Schema>>(readSchema());\n\n const syncFromAdapter = (): void => {\n const next = readSchema();\n const equals = resolveOptions().equals === false ? null : (resolveOptions().equals ?? defaultEquals);\n if (!equals || !equals(next, $value.peek())) $value.set(next);\n };\n\n const unsubscribe = adapter.subscribe(syncFromAdapter);\n\n const emit = (next: ParsedSchema<Schema>, prev: ParsedSchema<Schema>, listener: (v: any, p: any) => void): void => {\n if (Object.is(next, prev)) return;\n listener(next, prev);\n };\n\n const subscribe: QueryParamsState<Schema>[\"subscribe\"] = (listener) => {\n let prev = $value.peek() as any;\n return $value.subscribe(() => {\n const next = $value.peek() as any;\n const p = prev;\n prev = next;\n emit(next, p, listener as any);\n });\n };\n\n const writeOps = (\n ops: { key: string; value: SearchParamValue }[],\n nextValue: ParsedSchema<Schema>,\n setOptions?: QueryStateSetOptions,\n ): void => {\n const resolved = resolveOptions(setOptions);\n const equals = resolved.equals === false ? null : (resolved.equals ?? defaultEquals);\n if (!equals || !equals(nextValue, $value.peek())) $value.set(nextValue);\n queueUrlUpdate(adapter, ops, resolved);\n };\n\n const resetValue = (): ParsedSchema<Schema> => {\n const out: Record<string, unknown> = {};\n for (const key of Object.keys(schema) as (keyof Schema)[]) {\n const parser = schema[key] as any;\n out[key as string] = hasDefault(parser) ? parser.defaultValue : null;\n }\n return out as ParsedSchema<Schema>;\n };\n\n const buildUrlOpsFromSnapshot = (\n snapshot: ParsedSchema<Schema>,\n resolved: QueryStateSetOptions,\n ): { key: string; value: SearchParamValue }[] => {\n const ops: { key: string; value: SearchParamValue }[] = [];\n for (const key of Object.keys(schema) as (keyof Schema)[]) {\n const parser = schema[key]!;\n const fieldValue = snapshot[key];\n const urlKey = getUrlKey(key, options);\n\n if (fieldValue === null) {\n ops.push({ key: urlKey, value: null });\n continue;\n }\n\n if (shouldHideDefaultInUrl(fieldValue, parser, resolved)) {\n ops.push({ key: urlKey, value: null });\n } else {\n ops.push({ key: urlKey, value: parser.serialize(fieldValue) });\n }\n }\n return ops;\n };\n\n const syncDefaultsToUrl = (setOptions?: QueryStateSetOptions): void => {\n const resolved = resolveOptions(setOptions);\n if (resolveDefaultVisibility(resolved) !== \"show\") return;\n const snapshot = $value.peek() as ParsedSchema<Schema>;\n writeOps(buildUrlOpsFromSnapshot(snapshot, resolved), snapshot, resolved);\n };\n\n if (usesAutoRouter) {\n onUrlStateRouterReady(() => {\n syncFromAdapter();\n syncDefaultsToUrl();\n });\n } else {\n queueMicrotask(() => syncDefaultsToUrl());\n }\n\n const set: QueryParamsState<Schema>[\"set\"] = (partialOrNull, setOptions) => {\n const resolved = resolveOptions(setOptions);\n\n if (partialOrNull === null) {\n const ops: { key: string; value: SearchParamValue }[] = [];\n for (const key of Object.keys(schema) as (keyof Schema)[]) {\n ops.push({ key: getUrlKey(key, options), value: null });\n }\n writeOps(ops, resetValue(), resolved);\n return;\n }\n\n const prev = $value.peek();\n const next: Record<string, unknown> = { ...(prev as any) };\n const ops: { key: string; value: SearchParamValue }[] = [];\n\n for (const key of Object.keys(partialOrNull) as (keyof typeof partialOrNull)[]) {\n const schemaKey = key as keyof Schema;\n const parser = schema[schemaKey] as any;\n const urlKey = getUrlKey(schemaKey, options);\n const value = (partialOrNull as any)[schemaKey] as unknown;\n\n if (value === undefined) continue;\n\n if (value === null) {\n next[schemaKey as string] = hasDefault(parser) ? parser.defaultValue : null;\n ops.push({ key: urlKey, value: null });\n continue;\n }\n\n next[schemaKey as string] = value;\n\n if (shouldHideDefaultInUrl(value, parser, resolved)) {\n ops.push({ key: urlKey, value: null });\n } else {\n ops.push({ key: urlKey, value: parser.serialize(value) });\n }\n }\n\n writeOps(ops, next as ParsedSchema<Schema>, resolved);\n };\n\n const update: QueryParamsState<Schema>[\"update\"] = (updater, setOptions) => {\n const current = $value.peek();\n set(updater(current), setOptions);\n };\n\n const reset: QueryParamsState<Schema>[\"reset\"] = (setOptions) => {\n const resolved = resolveOptions(setOptions);\n const ops: { key: string; value: SearchParamValue }[] = [];\n const next = resetValue();\n\n for (const key of Object.keys(schema) as (keyof Schema)[]) {\n const parser = schema[key]!;\n const urlKey = getUrlKey(key, options);\n const value = next[key];\n\n if (value === null) {\n ops.push({ key: urlKey, value: null });\n continue;\n }\n\n if (shouldHideDefaultInUrl(value, parser, resolved)) ops.push({ key: urlKey, value: null });\n else ops.push({ key: urlKey, value: parser.serialize(value) });\n }\n\n writeOps(ops, next, resolved);\n };\n\n const clear: QueryParamsState<Schema>[\"clear\"] = (setOptions) => set(null, setOptions);\n\n return {\n kind: \"query-params\",\n value: () => $value.value(),\n set,\n update,\n reset,\n clear,\n $value,\n subscribe,\n };\n};\n\n","import { createQueryParams } from \"../core/create-query-params\";\nimport type { CreateQueryParamsOptions, Parser, QueryParamsState } from \"../core/types\";\nimport { createRouterUrlStateAdapter, type RouterLike } from \"./router-adapter\";\nimport { registerUrlStateRouter } from \"./router-registry\";\n\nexport type RouterBoundQueryParams = <\n Schema extends Record<string, Parser<any>>,\n>(\n schema: Schema,\n options?: Omit<CreateQueryParamsOptions<Schema>, \"adapter\">,\n) => QueryParamsState<Schema>;\n\nexport type RouterWithQueryParams<TRouter extends RouterLike> = TRouter & {\n createQueryParams: RouterBoundQueryParams;\n};\n\nexport const attachRouterQueryParams = <TRouter extends RouterLike>(\n router: TRouter,\n): RouterWithQueryParams<TRouter> => {\n registerUrlStateRouter(router);\n\n const bound: RouterBoundQueryParams = (schema, options) =>\n createQueryParams(schema, {\n ...options,\n adapter: createRouterUrlStateAdapter(router)!,\n });\n\n return Object.assign(router, { createQueryParams: bound }) as RouterWithQueryParams<TRouter>;\n};\n","import type { Parser, ParserWithDefault, QueryStateOptions } from \"./types\";\n\nexport const createParser = <Value>(impl: {\n parse(value: string | string[] | null): Value | null;\n serialize(value: Value): string | string[] | null;\n}): Parser<Value> => {\n const base: Parser<Value> = {\n parserMode: \"single\",\n parse: impl.parse,\n serialize: impl.serialize,\n\n withDefault(defaultValue: Value): ParserWithDefault<Value> {\n return createParserWithDefault(base, defaultValue);\n },\n\n withOptions(options: Partial<QueryStateOptions>): Parser<Value> {\n return createParserWithOptions(base, options);\n },\n };\n return base;\n};\n\nconst createParserWithDefault = <Value>(\n parser: Parser<Value>,\n defaultValue: Value,\n): ParserWithDefault<Value> => {\n const next: ParserWithDefault<Value> = {\n ...parser,\n defaultValue,\n withDefault(value) {\n return createParserWithDefault(next, value);\n },\n withOptions(options) {\n return createParserWithOptions(next, options) as ParserWithDefault<Value>;\n },\n };\n return next;\n};\n\nconst createParserWithOptions = <Value>(parser: Parser<Value>, options: Partial<QueryStateOptions>): Parser<Value> => {\n const next: Parser<Value> = {\n ...parser,\n options: { ...(parser.options ?? {}), ...options },\n withDefault(defaultValue) {\n return createParserWithDefault(next, defaultValue);\n },\n withOptions(more) {\n return createParserWithOptions(next, more);\n },\n };\n return next;\n};\n\n","import { createParser } from \"../core/parser\";\n\nconst first = (value: string | string[] | null): string | null => {\n if (value === null) return null;\n if (Array.isArray(value)) return value[0] ?? null;\n return value;\n};\n\nexport const parseAsString = createParser<string>({\n parse(value) {\n const v = first(value);\n if (v === null) return null;\n return v;\n },\n serialize(value) {\n return value;\n },\n});\n","import { createParser } from \"../core/parser\";\n\nconst first = (value: string | string[] | null): string | null => {\n if (value === null) return null;\n if (Array.isArray(value)) return value[0] ?? null;\n return value;\n};\n\nexport const parseAsInteger = createParser<number>({\n parse(value) {\n const v = first(value);\n if (v === null) return null;\n if (!/^[+-]?\\d+$/.test(v)) return null;\n const n = Number.parseInt(v, 10);\n return Number.isFinite(n) ? n : null;\n },\n serialize(value) {\n if (!Number.isFinite(value)) return null;\n return String(Math.trunc(value));\n },\n});\n","import { createParser } from \"../core/parser\";\n\nconst first = (value: string | string[] | null): string | null => {\n if (value === null) return null;\n if (Array.isArray(value)) return value[0] ?? null;\n return value;\n};\n\nexport const parseAsFloat = createParser<number>({\n parse(value) {\n const v = first(value);\n if (v === null || v === \"\") return null;\n const n = Number(v);\n return Number.isFinite(n) ? n : null;\n },\n serialize(value) {\n if (!Number.isFinite(value)) return null;\n return String(value);\n },\n});\n","import { createParser } from \"../core/parser\";\n\nconst first = (value: string | string[] | null): string | null => {\n if (value === null) return null;\n if (Array.isArray(value)) return value[0] ?? null;\n return value;\n};\n\nexport const parseAsBoolean = createParser<boolean>({\n parse(value) {\n const v = first(value);\n if (v === null) return null;\n const lowered = v.toLowerCase();\n if (lowered === \"true\") return true;\n if (lowered === \"false\") return false;\n if (lowered === \"1\") return true;\n if (lowered === \"0\") return false;\n return null;\n },\n serialize(value) {\n return value ? \"true\" : \"false\";\n },\n});\n","import { createParser } from \"../core/parser\";\n\nconst first = (value: string | string[] | null): string | null => {\n if (value === null) return null;\n if (Array.isArray(value)) return value[0] ?? null;\n return value;\n};\n\nexport const parseAsLiteral = <const Values extends readonly (string | number)[]>(values: Values) => {\n const allowed = new Set(values.map((v) => String(v)));\n return createParser<Values[number]>({\n parse(value) {\n const v = first(value);\n if (v === null) return null;\n if (!allowed.has(v)) return null;\n return values.find((item) => String(item) === v) ?? null;\n },\n serialize(value) {\n return String(value);\n },\n });\n};\n\nexport const parseAsStringLiteral = <const Values extends readonly string[]>(values: Values) => parseAsLiteral(values);\n\nexport const parseAsNumberLiteral = <const Values extends readonly number[]>(values: Values) => parseAsLiteral(values);\n","import type { MultiParser, ParserWithDefault, QueryStateOptions } from \"./types\";\nimport type { SearchParamValue } from \"./url\";\n\nexport type CustomMultiParserConfig<Value> = {\n parse: (values: readonly string[]) => Value | null;\n serialize: (value: Value) => readonly string[];\n eq?: (a: Value, b: Value) => boolean;\n};\n\nconst toQueryValues = (raw: SearchParamValue): string[] => {\n if (raw === null) return [];\n if (typeof raw === \"string\") return [raw];\n return [...raw];\n};\n\nconst createMultiParserWithDefault = <Value>(\n parser: MultiParser<Value>,\n defaultValue: Value,\n): MultiParser<Value> & ParserWithDefault<Value> => {\n const next: MultiParser<Value> & ParserWithDefault<Value> = {\n ...parser,\n parserMode: \"multi\",\n defaultValue,\n withDefault(value: Value) {\n return createMultiParserWithDefault(parser, value);\n },\n withOptions(options: Partial<QueryStateOptions>) {\n return createMultiParserWithOptions(parser, options);\n },\n };\n return next;\n};\n\nconst createMultiParserWithOptions = <Value>(\n parser: MultiParser<Value>,\n options: Partial<QueryStateOptions>,\n): MultiParser<Value> => ({\n ...parser,\n options: { ...(parser.options ?? {}), ...options },\n withDefault(defaultValue: Value) {\n return createMultiParserWithDefault(parser, defaultValue);\n },\n withOptions(more: Partial<QueryStateOptions>) {\n return createMultiParserWithOptions(parser, more);\n },\n});\n\nexport const createCustomMultiParser = <Value>(\n config: CustomMultiParserConfig<Value>,\n): MultiParser<Value> => {\n const parser: MultiParser<Value> = {\n parserMode: \"multi\",\n parse(raw: SearchParamValue) {\n return config.parse(toQueryValues(raw));\n },\n serialize(value: Value) {\n return [...config.serialize(value)];\n },\n withDefault(defaultValue: Value) {\n return createMultiParserWithDefault(parser, defaultValue);\n },\n withOptions(options: Partial<QueryStateOptions>) {\n return createMultiParserWithOptions(parser, options);\n },\n };\n\n if (config.eq) parser.eq = config.eq;\n\n return parser;\n};\n\nexport const isMultiParser = <Value>(parser: { parserMode?: string }): parser is MultiParser<Value> =>\n parser.parserMode === \"multi\";\n","import { createCustomMultiParser } from \"../core/custom-multi-parser\";\nimport type { MultiParser, Parser } from \"../core/types\";\n\n/**\n * Array serialized as repeated keys or a custom separator in one key (see second argument).\n *\n * For native `?tag=a&tag=b` only, prefer {@link parseAsNativeArrayOf}.\n */\nexport const parseAsArrayOf = <Item>(item: Parser<Item>, separator?: string) =>\n createCustomMultiParser<Item[]>({\n parse(value) {\n let rawItems: readonly string[];\n if (value.length === 0) return [];\n if (separator && value.length === 1) {\n rawItems = value[0]!.split(separator).filter(Boolean);\n } else {\n rawItems = value;\n }\n\n const out: Item[] = [];\n for (const raw of rawItems) {\n const parsed = item.parse(raw);\n if (parsed === null) return null;\n out.push(parsed);\n }\n return out;\n },\n serialize(items) {\n if (separator) {\n const parts: string[] = [];\n for (const entry of items) {\n const serialized = item.serialize(entry);\n if (serialized === null) return [];\n if (Array.isArray(serialized)) parts.push(...serialized);\n else parts.push(serialized as string);\n }\n return parts.length ? [parts.join(separator)] : [];\n }\n\n const out: string[] = [];\n for (const entry of items) {\n const serialized = item.serialize(entry);\n if (serialized === null) return [];\n if (Array.isArray(serialized)) out.push(...serialized);\n else out.push(serialized as string);\n }\n return out;\n },\n eq(a, b) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i += 1) {\n if (!Object.is(a[i], b[i])) return false;\n }\n return true;\n },\n });\n","import { createCustomMultiParser } from \"../core/custom-multi-parser\";\nimport type { Parser } from \"../core/types\";\nimport type { SearchParamValue } from \"../core/url\";\n\nconst serializeItem = <Item>(item: Parser<Item>, value: Item): string | null => {\n const serialized = item.serialize(value);\n if (serialized === null) return null;\n if (Array.isArray(serialized)) return serialized[0] ?? null;\n return serialized as string;\n};\n\n/**\n * Native URL arrays via repeated keys: `?tag=a&tag=b`.\n *\n * @see https://nuqs.dev/docs/parsers/built-in#native-arrays\n */\nexport const parseAsNativeArrayOf = <Item>(item: Parser<Item>) =>\n createCustomMultiParser<Item[]>({\n parse(values) {\n const out: Item[] = [];\n for (const raw of values) {\n const parsed = item.parse(raw);\n if (parsed === null) return null;\n out.push(parsed);\n }\n return out;\n },\n serialize(items) {\n const out: string[] = [];\n for (const entry of items) {\n const next = serializeItem(item, entry);\n if (next === null) return [];\n out.push(next);\n }\n return out;\n },\n eq(a, b) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i += 1) {\n if (!Object.is(a[i], b[i])) return false;\n }\n return true;\n },\n }).withDefault([]);\n","import { createParser } from \"./parser\";\nimport type { Parser, ParserWithDefault, QueryStateOptions } from \"./types\";\nimport type { SearchParamValue } from \"./url\";\n\nexport type CustomParserConfig<Value> = {\n parse: (value: SearchParamValue) => Value | null;\n serialize: (value: Value) => SearchParamValue;\n /** Used for `defaultVisibility: \"hide\"` equality checks (like nuqs `eq`). */\n eq?: (a: Value, b: Value) => boolean;\n};\n\nexport const createCustomParser = <Value>(config: CustomParserConfig<Value>): Parser<Value> => {\n const parser = createParser<Value>({\n parse: config.parse,\n serialize: (value) => config.serialize(value) as string | string[] | null,\n }) as Parser<Value> & { eq?: (a: Value, b: Value) => boolean };\n\n if (config.eq) parser.eq = config.eq;\n parser.parserMode = \"single\";\n\n return parser;\n};\n","/** Minimal Standard Schema v1 shape (Zod 4, Valibot, ArkType, …). */\nexport type StandardSchemaLike<T = unknown> = {\n \"~standard\": {\n readonly version: 1;\n readonly vendor: string;\n readonly validate: (value: unknown) => StandardSchemaResult<T>;\n };\n};\n\ntype StandardSchemaResult<T> =\n | { readonly value: T; readonly issues?: undefined }\n | { readonly issues: ReadonlyArray<{ readonly message: string }> };\n\nexport type JsonSchema<T> = StandardSchemaLike<T> | ((value: unknown) => T | null);\n\nconst isStandardSchema = <T>(schema: JsonSchema<T>): schema is StandardSchemaLike<T> =>\n typeof schema === \"object\" && schema !== null && \"~standard\" in schema;\n\nexport const validateJsonSchema = <T>(schema: JsonSchema<T> | undefined, value: unknown): T | null => {\n if (!schema) return value as T;\n\n if (typeof schema === \"function\") {\n try {\n return schema(value);\n } catch {\n return null;\n }\n }\n\n const result = schema[\"~standard\"].validate(value);\n if (result && \"value\" in result && result.issues === undefined) {\n return result.value;\n }\n return null;\n};\n","import { createCustomParser } from \"../core/custom-parser\";\nimport type { JsonSchema } from \"../core/standard-schema\";\nimport { validateJsonSchema } from \"../core/standard-schema\";\nimport type { SearchParamValue } from \"../core/url\";\n\nconst first = (value: SearchParamValue): string | null => {\n if (value === null) return null;\n if (Array.isArray(value)) return value[0] ?? null;\n return value as string;\n};\n\n/**\n * JSON in a single query param. Optional Standard Schema (Zod, Valibot, …) or sync validator.\n *\n * @see https://nuqs.dev/docs/parsers/built-in#json\n */\nexport const parseAsJson = <T = unknown>(schema?: JsonSchema<T>) =>\n createCustomParser<T>({\n parse(value) {\n const raw = first(value);\n if (raw === null) return null;\n try {\n const data: unknown = JSON.parse(raw);\n return validateJsonSchema(schema, data);\n } catch {\n return null;\n }\n },\n serialize(value) {\n try {\n return JSON.stringify(value);\n } catch {\n return null;\n }\n },\n });\n","import { createParser } from \"../core/parser\";\n\nconst first = (value: string | string[] | null): string | null => {\n if (value === null) return null;\n if (Array.isArray(value)) return value[0] ?? null;\n return value;\n};\n\nexport const parseAsIsoDate = createParser<Date>({\n parse(value) {\n const v = first(value);\n if (v === null) return null;\n const date = new Date(v);\n return Number.isNaN(date.getTime()) ? null : date;\n },\n serialize(value) {\n const t = value.getTime();\n if (Number.isNaN(t)) return null;\n return value.toISOString();\n },\n});\n","import { createParser } from \"../core/parser\";\n\nconst first = (value: string | string[] | null): string | null => {\n if (value === null) return null;\n if (Array.isArray(value)) return value[0] ?? null;\n return value;\n};\n\nexport const parseAsTimestamp = createParser<number>({\n parse(value) {\n const v = first(value);\n if (v === null) return null;\n if (!/^[+-]?\\d+(\\.\\d+)?$/.test(v)) return null;\n const n = Number(v);\n return Number.isFinite(n) ? n : null;\n },\n serialize(value) {\n if (!Number.isFinite(value)) return null;\n return String(value);\n },\n});\n","export type ThrottleController = {\n kind: \"throttle\";\n ms: number;\n schedule(fn: () => void): void;\n cancel(): void;\n};\n\nexport const throttle = (ms: number): ThrottleController => {\n let timer: ReturnType<typeof setTimeout> | null = null;\n let pending: (() => void) | null = null;\n\n const flush = (): void => {\n if (!pending) return;\n const fn = pending;\n pending = null;\n fn();\n };\n\n return {\n kind: \"throttle\",\n ms,\n schedule(fn) {\n pending = fn;\n if (timer) return;\n timer = setTimeout(() => {\n timer = null;\n flush();\n }, ms);\n },\n cancel() {\n if (timer) clearTimeout(timer);\n timer = null;\n pending = null;\n },\n };\n};\n\n","export type DebounceController = {\n kind: \"debounce\";\n ms: number;\n schedule(fn: () => void): void;\n cancel(): void;\n};\n\nexport const debounce = (ms: number): DebounceController => {\n let timer: ReturnType<typeof setTimeout> | null = null;\n let pending: (() => void) | null = null;\n\n const flush = (): void => {\n if (!pending) return;\n const fn = pending;\n pending = null;\n fn();\n };\n\n return {\n kind: \"debounce\",\n ms,\n schedule(fn) {\n pending = fn;\n if (timer) clearTimeout(timer);\n timer = setTimeout(() => {\n timer = null;\n flush();\n }, ms);\n },\n cancel() {\n if (timer) clearTimeout(timer);\n timer = null;\n pending = null;\n },\n };\n};\n\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@echojs-ecosystem/url-state",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"files": [
|
|
5
|
+
"dist"
|
|
6
|
+
],
|
|
7
|
+
"type": "module",
|
|
8
|
+
"sideEffects": false,
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./package.json": "./package.json"
|
|
15
|
+
},
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsup",
|
|
18
|
+
"check-types": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.typing.json --noEmit",
|
|
19
|
+
"typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.typing.json --noEmit",
|
|
20
|
+
"test:types": "tsc -p tsconfig.typing.json --noEmit",
|
|
21
|
+
"lint": "oxlint .",
|
|
22
|
+
"lint:fix": "oxlint . --fix",
|
|
23
|
+
"format": "oxfmt --check .",
|
|
24
|
+
"format:fix": "oxfmt .",
|
|
25
|
+
"test": "vitest run",
|
|
26
|
+
"test:watch": "vitest",
|
|
27
|
+
"test:coverage": "vitest run --coverage"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@echojs-ecosystem/reactivity": "workspace:*"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@echojs-ecosystem/oxc-config": "workspace:*",
|
|
34
|
+
"jsdom": "^26.1.0",
|
|
35
|
+
"typescript": "5.9.2",
|
|
36
|
+
"vitest": "^4.1.4"
|
|
37
|
+
},
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"access": "public"
|
|
40
|
+
},
|
|
41
|
+
"repository": {
|
|
42
|
+
"type": "git",
|
|
43
|
+
"url": "https://github.com/echojs-ecosystem/echojs-core.git",
|
|
44
|
+
"directory": "packages/url-state"
|
|
45
|
+
}
|
|
46
|
+
}
|