{"id":"eb0ab72c0f45bd57","repo":"sindresorhus/is","slug":"expected-value-which-is-urlsearchparams-receive","errorCode":null,"errorMessage":"Expected value which is `URLSearchParams`, received value of type `${is(value)}`.","messagePattern":"Expected value which is `URLSearchParams`, received value of type `(.+?)`\\.","errorType":"validation","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"source/index.ts","lineNumber":1963,"sourceCode":"\t}\n}\n\nexport function assertUndefined(value: unknown, message?: string): asserts value is undefined {\n\tif (!isUndefined(value)) {\n\t\tthrow new TypeError(message ?? typeErrorMessage('undefined', value));\n\t}\n}\n\nexport function assertUrlInstance(value: unknown, message?: string): asserts value is URL {\n\tif (!isUrlInstance(value)) {\n\t\tthrow new TypeError(message ?? typeErrorMessage('URL', value));\n\t}\n}\n\n// eslint-disable-next-line unicorn/prevent-abbreviations\nexport function assertUrlSearchParams(value: unknown, message?: string): asserts value is URLSearchParams {\n\tif (!isUrlSearchParams(value)) {\n\t\tthrow new TypeError(message ?? typeErrorMessage('URLSearchParams', value));\n\t}\n}\n\nexport function assertUrlString(value: unknown, message?: string): asserts value is UrlString {\n\tif (!isUrlString(value)) {\n\t\tthrow new TypeError(message ?? typeErrorMessage('string with a URL', value));\n\t}\n}\n\nexport function assertValidDate(value: unknown, message?: string): asserts value is Date {\n\tif (!isValidDate(value)) {\n\t\tthrow new TypeError(message ?? typeErrorMessage('valid Date', value));\n\t}\n}\n\nexport function assertValidLength(value: unknown, message?: string): asserts value is number {\n\tif (!isValidLength(value)) {\n\t\tthrow new TypeError(message ?? typeErrorMessage('valid length', value));","sourceCodeStart":1945,"sourceCodeEnd":1981,"githubUrl":"https://github.com/sindresorhus/is/blob/7821031c66cdeb7256a0feb2d506535f9e84fcaf/source/index.ts#L1945-L1981","documentation":"Thrown by `assertUrlSearchParams()` in @sindresorhus/is when the value is not a `URLSearchParams` instance. Query-string data represented as a raw string or plain object fails, because those need explicit construction into URLSearchParams.","triggerScenarios":"`assert.urlSearchParams(value)` with a query string (\"a=1&b=2\"), a plain `{a: '1'}` object, a Map, or FormData.","commonSituations":"Framework request handlers exposing `req.query` as a plain object; passing `url.search` (a string) instead of `url.searchParams`; serialized params from fetch options.","solutions":["Construct it: `new URLSearchParams(value)` accepts a query string, an object of string pairs, or an array of pairs.","Use `url.searchParams` instead of `url.search` when you already have a URL object.","If you only need key/value semantics, assert a record/object shape instead of URLSearchParams."],"exampleFix":"// before\nassert.urlSearchParams(url.search);\n// after\nassert.urlSearchParams(url.searchParams);","handlingStrategy":"type-guard","validationCode":"if (!is.urlSearchParams(value)) {\n  value = new URLSearchParams(value); // from string, object, or entries\n}","typeGuard":"if (is.urlSearchParams(value)) {\n  // value is URLSearchParams here\n}","tryCatchPattern":"try {\n  assert.urlSearchParams(value);\n} catch (error) {\n  if (error instanceof TypeError) { /* got query string or plain object instead */ }\n  throw error;\n}","preventionTips":["A query string like '?a=1' or a plain object is not URLSearchParams — wrap with new URLSearchParams()","Use url.searchParams (already an instance) instead of parsing url.search manually","Guard with is.urlSearchParams() before asserting"],"tags":["typescript","type-assertion","url","query-string"],"analyzedSha":"7821031c66cdeb7256a0feb2d506535f9e84fcaf","analyzedAt":"2026-07-31T18:34:06.268Z","schemaVersion":2}