{"version":3,"file":"client.cjs","names":["lazy","share","toObservable","DateResolver","DateTimeISOResolver"],"sources":["../lib/client/request.ts","../lib/client/liveQuery.ts","../lib/client/mutation.ts","../lib/helpers/deepMap.ts","../lib/client/nativeDateExchange.ts","../lib/client/query.ts","../lib/client/subscription.ts"],"sourcesContent":["import type { Client } from \"@urql/core\";\nimport { capitalize } from \"es-toolkit\";\nimport type {\n  IntrospectionInputValue,\n  IntrospectionQuery,\n  IntrospectionType,\n} from \"graphql\";\nimport { DateResolver, DateTimeISOResolver } from \"graphql-scalars\";\n\n// since svelte is optional, dub this in case the import is not available, but if it is, use the real one\nlet createSubscriber: typeof import(\"svelte/reactivity\").createSubscriber =\n  () => () => {};\nimport(\"svelte/reactivity\")\n  .then((m) => {\n    createSubscriber = m.createSubscriber;\n  })\n  .catch(() => {});\n\nimport {\n  fromValue,\n  map,\n  merge,\n  pipe,\n  type Source,\n  share,\n  subscribe,\n  take,\n  toObservable,\n} from \"wonka\";\nimport { lazy } from \"../helpers/lazy\";\n\n// TODO: this could use some refactoring and less type check disable (remove uses of any)\n// TODO: the client needs tests\n\nfunction typeToString(type: any): string {\n  if (type.kind === \"NON_NULL\") return `${typeToString(type.ofType)}!`;\n  if (type.kind === \"LIST\") return `[${typeToString(type.ofType)}]`;\n  return type.name;\n}\n\nfunction unwrapNamedType(\n  typeRef: any,\n  types: readonly IntrospectionType[],\n): IntrospectionType | undefined {\n  let t = typeRef;\n  while (t && (t.kind === \"NON_NULL\" || t.kind === \"LIST\")) t = t.ofType;\n  return types.find((x) => x.name === t?.name);\n}\n\nfunction isCompositeKind(kind: string | undefined) {\n  return kind === \"OBJECT\" || kind === \"INTERFACE\" || kind === \"UNION\";\n}\n\ntype VarContext = {\n  variables: Record<string, any>;\n  declarations: string[];\n  usedNames: Set<string>;\n};\n\nfunction allocateVarName(ctx: VarContext, baseName: string): string {\n  if (!ctx.usedNames.has(baseName)) {\n    ctx.usedNames.add(baseName);\n    return baseName;\n  }\n  let i = 1;\n  while (ctx.usedNames.has(`${baseName}${i}`)) i++;\n  const name = `${baseName}${i}`;\n  ctx.usedNames.add(name);\n  return name;\n}\n\nexport const argsKey = \"__args\";\n\nfunction makeOperation({\n  operationVerb,\n  queryName,\n  schema,\n  input,\n  autoIncludeIdField,\n}: {\n  operationVerb: \"query\" | \"subscription\" | \"mutation\";\n  queryName: string;\n  schema: IntrospectionQuery;\n  input?: Record<string, any>;\n  autoIncludeIdField?: string;\n}) {\n  const otwQueryName = `${capitalize(queryName)}${capitalize(operationVerb)}`;\n  const field = schema.__schema.types\n    .filter((t) => t.kind === \"OBJECT\")\n    .find((t) => t.name === schema.__schema[`${operationVerb}Type`]!.name)!\n    .fields.find((f) => f.name === queryName)!;\n  const types = schema.__schema.types;\n\n  const varCtx: VarContext = {\n    variables: {},\n    declarations: [],\n    usedNames: new Set(),\n  };\n\n  const returnTypeIsComposite = isCompositeKind(\n    unwrapNamedType(field.type, types)?.kind,\n  );\n\n  const selectionString =\n    input && returnTypeIsComposite\n      ? stringifySelection({\n          parentTypeName: unwrapNamedType(field.type, types)!.name,\n          selection: input,\n          types,\n          autoIncludeIdField,\n          varCtx,\n        })\n      : \"\";\n\n  const argumentString = input?.[argsKey]\n    ? serializeArguments({\n        args: input[argsKey],\n        fieldArgs: field.args,\n        types,\n        varCtx,\n      })\n    : \"\";\n\n  const varDecl = varCtx.declarations.length\n    ? `(${varCtx.declarations.join(\", \")})`\n    : \"\";\n\n  return {\n    operationString: `${operationVerb} ${otwQueryName}${varDecl} { ${queryName}${argumentString} ${selectionString}}`,\n    variables: varCtx.variables,\n  };\n}\n\nexport function makeGraphQLQueryRequest({\n  queryName,\n  schema,\n  input,\n  client,\n  enableSubscription = false,\n  forceReactivity,\n  autoIncludeIdField,\n}: {\n  queryName: string;\n  schema: IntrospectionQuery;\n  input?: Record<string, any>;\n  client: Client;\n  enableSubscription?: boolean;\n  forceReactivity?: boolean;\n  autoIncludeIdField?: string;\n}) {\n  let currentData: any;\n  const dataProxy = lazy(\n    () =>\n      new Proxy(currentData, {\n        get(_target, prop, receiver) {\n          svelteSubscriber();\n          const val = Reflect.get(currentData, prop, receiver);\n          if (typeof val === \"function\") {\n            return val.bind(currentData);\n          }\n          return val;\n        },\n      }),\n  );\n\n  const svelteSubscriber = createSubscriber((update) => {\n    const unsub = observable.subscribe((_d) => {\n      update();\n    });\n    return () => unsub.unsubscribe();\n  });\n\n  const { operationString, variables } = makeOperation({\n    operationVerb: \"query\",\n    queryName,\n    input,\n    schema,\n    autoIncludeIdField,\n  });\n\n  const observableSources: Source<any>[] = [\n    client.query(operationString, variables),\n    // client.read\n  ];\n  if (enableSubscription) {\n    const { operationString: subOpString, variables: subVars } = makeOperation({\n      operationVerb: \"subscription\",\n      queryName,\n      input,\n      schema,\n      autoIncludeIdField,\n    });\n    observableSources.push(client.subscription(subOpString, subVars));\n  }\n  const observable = toObservable(\n    pipe(\n      merge(observableSources),\n      share,\n      map((v: any) => {\n        if (v.error) {\n          throw v.error;\n        }\n\n        const data = v.data?.[queryName];\n        if (typeof data === \"object\" && data !== null) {\n          currentData = data;\n          return dataProxy();\n        }\n        return data;\n      }),\n    ),\n  );\n\n  const promise = new Promise<any>((resolve, reject) => {\n    pipe(\n      client.query(operationString, variables) as any,\n      take(1),\n      subscribe((v: any) => {\n        if (v.error) {\n          reject(v.error);\n          return;\n        }\n\n        const data = v.data?.[queryName];\n        if (typeof data !== \"object\" || data === null) {\n          resolve(data);\n          return;\n        }\n        if (typeof forceReactivity === \"boolean\" && forceReactivity) {\n          resolve(observable);\n          return;\n        }\n\n        currentData = data;\n        observableSources.push(fromValue(data));\n\n        try {\n          const r = dataProxy();\n          Object.assign(r, observable);\n          resolve(r);\n        } catch (err) {\n          reject(err);\n        }\n      }),\n    );\n  });\n\n  Object.assign(promise, observable);\n  return promise;\n}\n\nexport function makeGraphQLMutationRequest({\n  mutationName,\n  input,\n  client,\n  schema,\n  autoIncludeIdField,\n}: {\n  mutationName: string;\n  input: Record<string, any>;\n  client: Client;\n  schema: IntrospectionQuery;\n  autoIncludeIdField?: string;\n}) {\n  const { operationString, variables } = makeOperation({\n    operationVerb: \"mutation\",\n    queryName: mutationName,\n    input,\n    schema,\n    autoIncludeIdField,\n  });\n\n  const observable = toObservable(\n    pipe(\n      pipe(client.mutation(operationString, variables) as any, share),\n      map((v: any) => {\n        if (v.error) {\n          throw v.error;\n        }\n\n        const data = v.data?.[mutationName];\n        return data;\n      }),\n    ),\n  );\n\n  const promise = new Promise<any>((resolve, reject) => {\n    pipe(\n      client.mutation(operationString, variables) as any,\n      take(1),\n      subscribe((v: any) => {\n        if (v.error) {\n          reject(v.error);\n          return;\n        }\n\n        resolve(v.data?.[mutationName]);\n      }),\n    );\n  });\n\n  Object.assign(promise, observable);\n  return promise;\n}\n\nexport function makeGraphQLSubscriptionRequest({\n  subscriptionName,\n  input,\n  client,\n  schema,\n  autoIncludeIdField,\n}: {\n  subscriptionName: string;\n  input: Record<string, any>;\n  client: Client;\n  schema: IntrospectionQuery;\n  autoIncludeIdField?: string;\n}) {\n  const { operationString, variables } = makeOperation({\n    operationVerb: \"subscription\",\n    queryName: subscriptionName,\n    input,\n    schema,\n    autoIncludeIdField,\n  });\n\n  return pipe(\n    client.subscription(operationString, variables) as any,\n    map((v: any) => {\n      if (v.error) {\n        throw v.error;\n      }\n\n      return v.data?.[subscriptionName];\n    }),\n    toObservable,\n  ) as any;\n}\n\nfunction stringifySelection({\n  parentTypeName,\n  selection,\n  types,\n  autoIncludeIdField,\n  varCtx,\n}: {\n  selection: Record<string, any>;\n  parentTypeName: string;\n  types: readonly IntrospectionType[];\n  autoIncludeIdField?: string;\n  varCtx: VarContext;\n}) {\n  if (\n    autoIncludeIdField &&\n    typeof selection[autoIncludeIdField] === \"undefined\"\n  ) {\n    selection[autoIncludeIdField] = true;\n  }\n\n  const parentType = types.find((t) => t.name === parentTypeName);\n\n  const ret = Object.entries(selection)\n    .filter(([key]) => key !== argsKey)\n    .reduce((acc, [key, value]) => {\n      if (typeof value === \"object\") {\n        const subField =\n          parentType && \"fields\" in parentType\n            ? parentType.fields.find((f) => f.name === key)\n            : undefined;\n\n        let argsString = \"\";\n        if (value[argsKey] && subField) {\n          argsString = serializeArguments({\n            args: value[argsKey],\n            types,\n            fieldArgs: subField.args,\n            varCtx,\n          });\n        }\n\n        const subNamedType = subField\n          ? unwrapNamedType(subField.type, types)\n          : undefined;\n\n        if (isCompositeKind(subNamedType?.kind)) {\n          acc += `${key}${argsString} ${stringifySelection({\n            parentTypeName: subNamedType!.name,\n            selection: value,\n            types,\n            varCtx,\n          })}\n`;\n        } else {\n          acc += `${key}${argsString}\n`;\n        }\n      } else {\n        if (typeof value === \"boolean\" && value) {\n          acc += `${key}\n`;\n        }\n      }\n      return acc;\n    }, \"\");\n\n  return `{\n${ret} }`;\n}\n\nfunction serializeArguments({\n  args,\n  fieldArgs,\n  types,\n  varCtx,\n}: {\n  args: Record<any, any>;\n  fieldArgs: readonly IntrospectionInputValue[];\n  types: readonly IntrospectionType[];\n  varCtx: VarContext;\n}) {\n  const entries = Object.entries(args);\n\n  if (entries.length > 0) {\n    return `(${entries\n      .map(([key, value]) => {\n        const gqlArg = fieldArgs.find((a) => a.name === key);\n\n        if (!gqlArg) {\n          throw new Error(\n            `Argument ${key} not found in field args list ${JSON.stringify(fieldArgs.map((a) => a.name))}`,\n          );\n        }\n\n        const varName = allocateVarName(varCtx, key);\n        varCtx.declarations.push(`$${varName}: ${typeToString(gqlArg.type)}`);\n        varCtx.variables[varName] = serializeArgValue({\n          arg: value,\n          gqlArg,\n          types,\n        });\n\n        return `${key}: $${varName}`;\n      })\n      .join(\", \")})`;\n  }\n\n  return \"\";\n}\n\nfunction serializeArgValue({\n  arg,\n  gqlArg,\n  types,\n}: {\n  arg: any;\n  gqlArg: IntrospectionInputValue;\n  types: readonly IntrospectionType[];\n}): any {\n  if (arg === null) {\n    return null;\n  }\n\n  if (Array.isArray(arg)) {\n    return arg.map((v) => {\n      return serializeArgValue({\n        arg: v,\n        types,\n        gqlArg,\n      });\n    });\n  }\n\n  const argtype = typeof arg;\n\n  if (argtype === \"object\" && !(arg instanceof Date)) {\n    let type = gqlArg.type;\n\n    if (type.kind === \"NON_NULL\") {\n      type = type.ofType;\n    }\n    if (type.kind === \"LIST\") {\n      type = type.ofType;\n    }\n    if (type.kind === \"NON_NULL\") {\n      type = type.ofType;\n    }\n\n    // if (type.kind !== \"INPUT_OBJECT\") {\n    //   throw new Error(\"Expected an INPUT_OBJECT type\");\n    // }\n\n    const referenceInputObject = types.find(\n      (t) => t.name === (type as any).name,\n    );\n\n    if (!referenceInputObject) {\n      throw new Error(\n        `Expected an INPUT_OBJECT hit in name based lookup for name ${(type as any).name} with arg ${JSON.stringify(arg)}`,\n      );\n    }\n\n    if (referenceInputObject.kind !== \"INPUT_OBJECT\") {\n      throw new Error(\"Expected an INPUT_OBJECT hit in named based lookup\");\n    }\n\n    const result: Record<string, any> = {};\n    for (const [key, value] of Object.entries(arg)) {\n      const subArgType = referenceInputObject.inputFields.find(\n        (t) => t.name === key,\n      );\n\n      if (!subArgType) {\n        throw new Error(\n          `Expected an INPUT_OBJECT hit in named based lookup for name ${key} with arg ${referenceInputObject.inputFields.map((f) => f.name).join(\", \")}`,\n        );\n      }\n\n      result[key] = serializeArgValue({\n        arg: value,\n        types,\n        gqlArg: subArgType,\n      });\n    }\n    return result;\n  }\n\n  let type = gqlArg.type;\n\n  if (type.kind === \"NON_NULL\") {\n    type = type.ofType;\n  }\n\n  if (arg instanceof Date) {\n    const name = (type as any).name;\n    let value: string;\n    switch (name) {\n      case \"Date\":\n        value = DateResolver.serialize(arg);\n        break;\n      case \"DateTime\":\n        value = DateTimeISOResolver.serialize(arg);\n        break;\n      default:\n        throw new Error(\n          `Unrecognized date type ${name}, expected Date or DateTime`,\n        );\n    }\n    return value;\n  }\n\n  switch (typeof arg) {\n    case \"string\":\n    case \"number\":\n    case \"bigint\":\n    case \"boolean\":\n      return arg;\n    case \"symbol\":\n      throw new Error(\"Cannot stringify a symbol to send as gql arg\");\n    case \"undefined\":\n      return null;\n    case \"function\":\n      throw new Error(\"Cannot stringify a function to send as gql arg\");\n  }\n\n  throw new Error(\"Cannot stringify an unknown type\");\n}\n","import type { Client } from \"@urql/core\";\nimport type { IntrospectionQuery } from \"graphql\";\nimport { makeGraphQLQueryRequest } from \"./request\";\nimport type { QueryableObjectFromGeneratedTypes } from \"./types\";\n\nexport function makeLiveQuery<\n  Query extends Record<string, any>,\n  ForceReactivity extends boolean = false,\n>({\n  urqlClient,\n  availableSubscriptions,\n  forceReactivity,\n  schema,\n  autoIncludeIdField,\n}: {\n  urqlClient: Client;\n  schema: IntrospectionQuery;\n  availableSubscriptions: Set<string>;\n  forceReactivity?: ForceReactivity;\n  autoIncludeIdField?: string;\n}) {\n  return new Proxy(\n    {},\n    {\n      get: (_target, prop) => {\n        return (input: Record<string, any>) => {\n          return makeGraphQLQueryRequest({\n            queryName: prop as string,\n            input,\n            client: urqlClient,\n            enableSubscription: availableSubscriptions.has(prop as string),\n            forceReactivity,\n            schema,\n            autoIncludeIdField,\n          });\n        };\n      },\n    },\n  ) as QueryableObjectFromGeneratedTypes<Query, ForceReactivity>;\n}\n","import type { Client } from \"@urql/core\";\nimport type { IntrospectionQuery } from \"graphql\";\nimport { makeGraphQLMutationRequest } from \"./request\";\nimport type { QueryableObjectFromGeneratedTypes } from \"./types\";\n\nexport function makeMutation<Mutation extends Record<string, any>>({\n  urqlClient,\n  schema,\n  autoIncludeIdField,\n}: {\n  urqlClient: Client;\n  schema: IntrospectionQuery;\n  autoIncludeIdField?: string;\n}) {\n  return new Proxy(\n    {},\n    {\n      get: (_target, prop) => {\n        return (input: Record<string, any>) => {\n          return makeGraphQLMutationRequest({\n            mutationName: prop as string,\n            input,\n            client: urqlClient,\n            schema,\n            autoIncludeIdField,\n          });\n        };\n      },\n    },\n  ) as QueryableObjectFromGeneratedTypes<Mutation, false>;\n}\n","/**\n * Recursively applies a mapping function to every value in a nested structure.\n *\n * This helper will traverse arrays and plain objects (objects with `constructor === Object`)\n * and apply the provided `fn` to any value that is not an array or a plain object.\n * - Arrays are mapped to new arrays (a fresh array is returned).\n * - Plain objects are traversed and their own enumerable properties are replaced in-place.\n * - Non-plain objects (e.g. Date, Map, Set, class instances, functions) are treated as leaves\n *   and passed directly to `fn`.\n * - `null` and `undefined` are passed to `fn`.\n * - Circular references are detected using a `WeakSet`. When a circular reference is encountered,\n *   the original reference is returned unchanged (it is not re-traversed or re-mapped).\n *\n * Note: Because plain objects are mutated in-place, callers who need immutability should first\n * clone the object graph or pass a deep-cloned input to avoid modifying the original.\n *\n * @param input - The value to traverse and map. May be any value (primitive, array, object, etc.).\n * @param fn - A function invoked for every non-array, non-plain-object value encountered.\n *             Receives the current value and should return the mapped value.\n * @returns The transformed structure: arrays are returned as new arrays, plain objects are the\n *          same object instances with their property values replaced, and other values are the\n *          result of `fn`.\n *\n * @example\n * // Map all primitive values to their string representation:\n * // const result = mapValuesDeep({ a: 1, b: [2, { c: 3 }] }, v => String(v));\n * // result => { a: \"1\", b: [\"2\", { c: \"3\" }] }\n *\n * @remarks\n * - Only plain objects (constructed by `Object`) are recursively traversed. This avoids\n *   unintentionally iterating internal structure of class instances or built-in collections.\n * - Circular structures are preserved by returning the original reference when detected.\n */\nexport function mapValuesDeep(input: any, fn: (value: any) => any) {\n  const seen = new WeakSet();\n\n  const recurse = (value: any): any => {\n    if (Array.isArray(value)) {\n      return value.map(recurse);\n    }\n\n    if (\n      value !== null &&\n      value !== undefined &&\n      typeof value === \"object\" &&\n      value.constructor === Object\n    ) {\n      if (seen.has(value)) return value;\n      seen.add(value);\n      for (const key of Object.keys(value)) {\n        value[key] = recurse(value[key]);\n      }\n      return value;\n    }\n\n    return fn(value);\n  };\n\n  return recurse(input);\n}\n","import type { Exchange } from \"@urql/core\";\nimport { map, pipe } from \"wonka\";\nimport { mapValuesDeep } from \"../helpers/deepMap\";\n\nconst dateIsoRegex =\n  /^\\d{4}-\\d{2}-\\d{2}(?:[Tt ]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:[Zz]|[+-]\\d{2}:\\d{2})?)?$/;\n\nexport const nativeDateExchange: Exchange = ({ client: _client, forward }) => {\n  return (operations$) => {\n    const operationResult$ = forward(operations$);\n\n    return pipe(\n      operationResult$ as any,\n      map((r: any) => {\n        r.data = mapValuesDeep(r.data, (value) => {\n          if (typeof value !== \"string\" || !dateIsoRegex.test(value)) {\n            return value;\n          }\n\n          const date = Date.parse(value);\n          if (!Number.isNaN(date)) {\n            return new Date(date);\n          }\n\n          return value;\n        });\n        return r;\n      }),\n    ) as any;\n  };\n};\n","import type { Client } from \"@urql/core\";\nimport type { IntrospectionQuery } from \"graphql\";\nimport { makeGraphQLQueryRequest } from \"./request\";\nimport type { QueryableObjectFromGeneratedTypes } from \"./types\";\n\nexport function makeQuery<\n  Query extends Record<string, any>,\n  ForceReactivity extends boolean = false,\n>({\n  urqlClient,\n  forceReactivity,\n  schema,\n  autoIncludeIdField,\n}: {\n  urqlClient: Client;\n  forceReactivity?: ForceReactivity;\n  schema: IntrospectionQuery;\n  autoIncludeIdField?: string;\n}) {\n  return new Proxy(\n    {},\n    {\n      get: (_target, prop) => {\n        return (input?: Record<string, any>) => {\n          return makeGraphQLQueryRequest({\n            queryName: prop as string,\n            input,\n            client: urqlClient,\n            enableSubscription: false,\n            forceReactivity,\n            schema,\n            autoIncludeIdField,\n          });\n        };\n      },\n    },\n  ) as QueryableObjectFromGeneratedTypes<Query, ForceReactivity>;\n}\n","import type { Client } from \"@urql/core\";\nimport type { IntrospectionQuery } from \"graphql\";\nimport { argsKey, makeGraphQLSubscriptionRequest } from \"./request\";\nimport type {\n  ApplySelection,\n  ObjectFieldSelection,\n  Subscribeable,\n} from \"./types\";\nimport type { UnArray } from \"./utilTypes\";\n\nexport function makeSubscription<Subscription extends Record<string, any>>({\n  urqlClient,\n  schema,\n  autoIncludeIdField,\n}: {\n  urqlClient: Client;\n  schema: IntrospectionQuery;\n  autoIncludeIdField?: string;\n}) {\n  return new Proxy(\n    {},\n    {\n      get: (_target, prop) => {\n        return (input: Record<string, any>) => {\n          return makeGraphQLSubscriptionRequest({\n            subscriptionName: prop as string,\n            input,\n            client: urqlClient,\n            schema,\n            autoIncludeIdField,\n          });\n        };\n      },\n    },\n  ) as SubscriptionObject<Subscription>;\n}\n\n// TODO use the query util types\n\nexport type SubscriptionObject<Q> = {\n  [Key in keyof Q]: QueryableObjectField<Q[Key]>;\n};\n\ntype QueryableObjectField<T> = T extends (\n  p: infer QueryArgs,\n) => infer QueryResponse\n  ? <\n      Selected extends QueryArgs extends Record<string, any>\n        ? ObjectFieldSelection<UnArray<NonNullable<QueryResponse>>> & {\n            [argsKey]: QueryArgs;\n          }\n        : ObjectFieldSelection<UnArray<NonNullable<QueryResponse>>>,\n    >(\n      s: Selected,\n    ) => QueryResponse extends null\n      ? Subscribeable<\n          NonNullable<QueryResponse> extends Array<any>\n            ? ApplySelection<UnArray<NonNullable<QueryResponse>>, Selected>[]\n            : ApplySelection<UnArray<NonNullable<QueryResponse>>, Selected>\n        > | null\n      : Subscribeable<\n          QueryResponse extends Array<any>\n            ? ApplySelection<UnArray<QueryResponse>, Selected>[]\n            : ApplySelection<UnArray<QueryResponse>, Selected>\n        >\n  : Subscribeable<T>;\n"],"mappings":"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"}