summaryrefslogtreecommitdiffhomepage
path: root/packages/sdk/js/src/gen
diff options
context:
space:
mode:
authorDax <[email protected]>2025-12-07 19:04:14 -0500
committerGitHub <[email protected]>2025-12-07 19:04:14 -0500
commitea7ec60f51f9fe3c6382f644c328188a43545b7b (patch)
tree5204cbc059fe10b87c54ffd25782ad83710bdcdb /packages/sdk/js/src/gen
parent6667856ba5dac3e5dd77c7008cee2d09be894472 (diff)
downloadopencode-ea7ec60f51f9fe3c6382f644c328188a43545b7b.tar.gz
opencode-ea7ec60f51f9fe3c6382f644c328188a43545b7b.zip
v2 SDK (#5216)
Co-authored-by: GitHub Action <[email protected]>
Diffstat (limited to 'packages/sdk/js/src/gen')
-rw-r--r--packages/sdk/js/src/gen/core/queryKeySerializer.gen.ts111
1 files changed, 111 insertions, 0 deletions
diff --git a/packages/sdk/js/src/gen/core/queryKeySerializer.gen.ts b/packages/sdk/js/src/gen/core/queryKeySerializer.gen.ts
new file mode 100644
index 000000000..320204aef
--- /dev/null
+++ b/packages/sdk/js/src/gen/core/queryKeySerializer.gen.ts
@@ -0,0 +1,111 @@
+// This file is auto-generated by @hey-api/openapi-ts
+
+/**
+ * JSON-friendly union that mirrors what Pinia Colada can hash.
+ */
+export type JsonValue = null | string | number | boolean | JsonValue[] | { [key: string]: JsonValue }
+
+/**
+ * Replacer that converts non-JSON values (bigint, Date, etc.) to safe substitutes.
+ */
+export const queryKeyJsonReplacer = (_key: string, value: unknown) => {
+ if (value === undefined || typeof value === "function" || typeof value === "symbol") {
+ return undefined
+ }
+ if (typeof value === "bigint") {
+ return value.toString()
+ }
+ if (value instanceof Date) {
+ return value.toISOString()
+ }
+ return value
+}
+
+/**
+ * Safely stringifies a value and parses it back into a JsonValue.
+ */
+export const stringifyToJsonValue = (input: unknown): JsonValue | undefined => {
+ try {
+ const json = JSON.stringify(input, queryKeyJsonReplacer)
+ if (json === undefined) {
+ return undefined
+ }
+ return JSON.parse(json) as JsonValue
+ } catch {
+ return undefined
+ }
+}
+
+/**
+ * Detects plain objects (including objects with a null prototype).
+ */
+const isPlainObject = (value: unknown): value is Record<string, unknown> => {
+ if (value === null || typeof value !== "object") {
+ return false
+ }
+ const prototype = Object.getPrototypeOf(value as object)
+ return prototype === Object.prototype || prototype === null
+}
+
+/**
+ * Turns URLSearchParams into a sorted JSON object for deterministic keys.
+ */
+const serializeSearchParams = (params: URLSearchParams): JsonValue => {
+ const entries = Array.from(params.entries()).sort(([a], [b]) => a.localeCompare(b))
+ const result: Record<string, JsonValue> = {}
+
+ for (const [key, value] of entries) {
+ const existing = result[key]
+ if (existing === undefined) {
+ result[key] = value
+ continue
+ }
+
+ if (Array.isArray(existing)) {
+ ;(existing as string[]).push(value)
+ } else {
+ result[key] = [existing, value]
+ }
+ }
+
+ return result
+}
+
+/**
+ * Normalizes any accepted value into a JSON-friendly shape for query keys.
+ */
+export const serializeQueryKeyValue = (value: unknown): JsonValue | undefined => {
+ if (value === null) {
+ return null
+ }
+
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
+ return value
+ }
+
+ if (value === undefined || typeof value === "function" || typeof value === "symbol") {
+ return undefined
+ }
+
+ if (typeof value === "bigint") {
+ return value.toString()
+ }
+
+ if (value instanceof Date) {
+ return value.toISOString()
+ }
+
+ if (Array.isArray(value)) {
+ return stringifyToJsonValue(value)
+ }
+
+ if (typeof URLSearchParams !== "undefined" && value instanceof URLSearchParams) {
+ return serializeSearchParams(value)
+ }
+
+ if (isPlainObject(value)) {
+ return stringifyToJsonValue(value)
+ }
+
+ return undefined
+}