{"mappings":"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","names":["PostgrestError","context","exports","node_fetch_1","__importDefault","PostgrestError_1","PostgrestBuilder","builder","name","value","onfulfilled","onrejected","_fetch","res","error","data","count","status","statusText","body","countHeader","_a","contentRange","_b","_c","fetchError","exports","PostgrestBuilder_1","__importDefault","PostgrestTransformBuilder","columns","quoted","cleanedColumns","c","column","ascending","nullsFirst","foreignTable","referencedTable","key","existingOrder","count","from","to","keyOffset","keyLimit","signal","analyze","verbose","settings","buffers","wal","format","options","forMediatype","_a","exports","PostgrestTransformBuilder_1","__importDefault","PostgrestFilterBuilder","column","value","pattern","patterns","values","cleanedValues","s","range","query","config","type","typePart","configPart","operator","filters","foreignTable","referencedTable","key","exports","PostgrestFilterBuilder_1","__importDefault","PostgrestQueryBuilder","url","headers","schema","fetch","columns","head","count","method","quoted","cleanedColumns","c","values","defaultToNull","prefersHeaders","acc","x","uniqueColumns","column","onConflict","ignoreDuplicates","exports","exports","version_1","exports","PostgrestQueryBuilder_1","__importDefault","PostgrestFilterBuilder_1","constants_1","PostgrestClient","_PostgrestClient","url","headers","schema","fetch","relation","fn","args","head","get","count","method","body","_","value","name","exports","PostgrestClient_1","__importDefault","exports","PostgrestQueryBuilder_1","PostgrestFilterBuilder_1","PostgrestTransformBuilder_1","PostgrestBuilder_1","import_cjs","PostgrestClient","PostgrestQueryBuilder","PostgrestFilterBuilder","PostgrestTransformBuilder","PostgrestBuilder","index","wrapper_default","PostgrestClient","PostgrestQueryBuilder","PostgrestFilterBuilder","PostgrestTransformBuilder","PostgrestBuilder"],"sources":["../esm/npm/@supabase/postgrest-js@1.16.1/node_modules/@supabase/postgrest-js/src/PostgrestError.ts","../esm/npm/@supabase/postgrest-js@1.16.1/node_modules/@supabase/postgrest-js/src/PostgrestBuilder.ts","../esm/npm/@supabase/postgrest-js@1.16.1/node_modules/@supabase/postgrest-js/src/PostgrestTransformBuilder.ts","../esm/npm/@supabase/postgrest-js@1.16.1/node_modules/@supabase/postgrest-js/src/PostgrestFilterBuilder.ts","../esm/npm/@supabase/postgrest-js@1.16.1/node_modules/@supabase/postgrest-js/src/PostgrestQueryBuilder.ts","../esm/npm/@supabase/postgrest-js@1.16.1/node_modules/@supabase/postgrest-js/src/version.ts","../esm/npm/@supabase/postgrest-js@1.16.1/node_modules/@supabase/postgrest-js/src/constants.ts","../esm/npm/@supabase/postgrest-js@1.16.1/node_modules/@supabase/postgrest-js/src/PostgrestClient.ts","../esm/npm/@supabase/postgrest-js@1.16.1/node_modules/@supabase/postgrest-js/src/index.ts","../esm/npm/@supabase/postgrest-js@1.16.1/node_modules/@supabase/postgrest-js/dist/esm/wrapper.mjs"],"sourcesContent":["import type { PostgrestError as IPostgrestError } from './types'\n\nexport default class PostgrestError extends Error implements IPostgrestError {\n  details: string\n  hint: string\n  code: string\n\n  constructor(context: IPostgrestError) {\n    super(context.message)\n    this.name = 'PostgrestError'\n    this.details = context.details\n    this.hint = context.hint\n    this.code = context.code\n  }\n}\n","// @ts-ignore\nimport nodeFetch from '@supabase/node-fetch'\n\nimport type { Fetch, PostgrestSingleResponse } from './types'\nimport PostgrestError from './PostgrestError'\n\nexport default abstract class PostgrestBuilder\u003cResult\u003e\n  implements PromiseLike\u003cPostgrestSingleResponse\u003cResult\u003e\u003e\n{\n  protected method: 'GET' | 'HEAD' | 'POST' | 'PATCH' | 'DELETE'\n  protected url: URL\n  protected headers: Record\u003cstring, string\u003e\n  protected schema?: string\n  protected body?: unknown\n  protected shouldThrowOnError = false\n  protected signal?: AbortSignal\n  protected fetch: Fetch\n  protected isMaybeSingle: boolean\n\n  constructor(builder: PostgrestBuilder\u003cResult\u003e) {\n    this.method = builder.method\n    this.url = builder.url\n    this.headers = builder.headers\n    this.schema = builder.schema\n    this.body = builder.body\n    this.shouldThrowOnError = builder.shouldThrowOnError\n    this.signal = builder.signal\n    this.isMaybeSingle = builder.isMaybeSingle\n\n    if (builder.fetch) {\n      this.fetch = builder.fetch\n    } else if (typeof fetch === 'undefined') {\n      this.fetch = nodeFetch\n    } else {\n      this.fetch = fetch\n    }\n  }\n\n  /**\n   * If there's an error with the query, throwOnError will reject the promise by\n   * throwing the error instead of returning it as part of a successful response.\n   *\n   * {@link https://github.com/supabase/supabase-js/issues/92}\n   */\n  throwOnError(): this {\n    this.shouldThrowOnError = true\n    return this\n  }\n\n  /**\n   * Set an HTTP header for the request.\n   */\n  setHeader(name: string, value: string): this {\n    this.headers = { ...this.headers }\n    this.headers[name] = value\n    return this\n  }\n\n  then\u003cTResult1 = PostgrestSingleResponse\u003cResult\u003e, TResult2 = never\u003e(\n    onfulfilled?:\n      | ((value: PostgrestSingleResponse\u003cResult\u003e) =\u003e TResult1 | PromiseLike\u003cTResult1\u003e)\n      | undefined\n      | null,\n    onrejected?: ((reason: any) =\u003e TResult2 | PromiseLike\u003cTResult2\u003e) | undefined | null\n  ): PromiseLike\u003cTResult1 | TResult2\u003e {\n    // https://postgrest.org/en/stable/api.html#switching-schemas\n    if (this.schema === undefined) {\n      // skip\n    } else if (['GET', 'HEAD'].includes(this.method)) {\n      this.headers['Accept-Profile'] = this.schema\n    } else {\n      this.headers['Content-Profile'] = this.schema\n    }\n    if (this.method !== 'GET' \u0026\u0026 this.method !== 'HEAD') {\n      this.headers['Content-Type'] = 'application/json'\n    }\n\n    // NOTE: Invoke w/o `this` to avoid illegal invocation error.\n    // https://github.com/supabase/postgrest-js/pull/247\n    const _fetch = this.fetch\n    let res = _fetch(this.url.toString(), {\n      method: this.method,\n      headers: this.headers,\n      body: JSON.stringify(this.body),\n      signal: this.signal,\n    }).then(async (res) =\u003e {\n      let error = null\n      let data = null\n      let count: number | null = null\n      let status = res.status\n      let statusText = res.statusText\n\n      if (res.ok) {\n        if (this.method !== 'HEAD') {\n          const body = await res.text()\n          if (body === '') {\n            // Prefer: return=minimal\n          } else if (this.headers['Accept'] === 'text/csv') {\n            data = body\n          } else if (\n            this.headers['Accept'] \u0026\u0026\n            this.headers['Accept'].includes('application/vnd.pgrst.plan+text')\n          ) {\n            data = body\n          } else {\n            data = JSON.parse(body)\n          }\n        }\n\n        const countHeader = this.headers['Prefer']?.match(/count=(exact|planned|estimated)/)\n        const contentRange = res.headers.get('content-range')?.split('/')\n        if (countHeader \u0026\u0026 contentRange \u0026\u0026 contentRange.length \u003e 1) {\n          count = parseInt(contentRange[1])\n        }\n\n        // Temporary partial fix for https://github.com/supabase/postgrest-js/issues/361\n        // Issue persists e.g. for `.insert([...]).select().maybeSingle()`\n        if (this.isMaybeSingle \u0026\u0026 this.method === 'GET' \u0026\u0026 Array.isArray(data)) {\n          if (data.length \u003e 1) {\n            error = {\n              // https://github.com/PostgREST/postgrest/blob/a867d79c42419af16c18c3fb019eba8df992626f/src/PostgREST/Error.hs#L553\n              code: 'PGRST116',\n              details: `Results contain ${data.length} rows, application/vnd.pgrst.object+json requires 1 row`,\n              hint: null,\n              message: 'JSON object requested, multiple (or no) rows returned',\n            }\n            data = null\n            count = null\n            status = 406\n            statusText = 'Not Acceptable'\n          } else if (data.length === 1) {\n            data = data[0]\n          } else {\n            data = null\n          }\n        }\n      } else {\n        const body = await res.text()\n\n        try {\n          error = JSON.parse(body)\n\n          // Workaround for https://github.com/supabase/postgrest-js/issues/295\n          if (Array.isArray(error) \u0026\u0026 res.status === 404) {\n            data = []\n            error = null\n            status = 200\n            statusText = 'OK'\n          }\n        } catch {\n          // Workaround for https://github.com/supabase/postgrest-js/issues/295\n          if (res.status === 404 \u0026\u0026 body === '') {\n            status = 204\n            statusText = 'No Content'\n          } else {\n            error = {\n              message: body,\n            }\n          }\n        }\n\n        if (error \u0026\u0026 this.isMaybeSingle \u0026\u0026 error?.details?.includes('0 rows')) {\n          error = null\n          status = 200\n          statusText = 'OK'\n        }\n\n        if (error \u0026\u0026 this.shouldThrowOnError) {\n          throw new PostgrestError(error)\n        }\n      }\n\n      const postgrestResponse = {\n        error,\n        data,\n        count,\n        status,\n        statusText,\n      }\n\n      return postgrestResponse\n    })\n    if (!this.shouldThrowOnError) {\n      res = res.catch((fetchError) =\u003e ({\n        error: {\n          message: `${fetchError?.name ?? 'FetchError'}: ${fetchError?.message}`,\n          details: `${fetchError?.stack ?? ''}`,\n          hint: '',\n          code: `${fetchError?.code ?? ''}`,\n        },\n        data: null,\n        count: null,\n        status: 0,\n        statusText: '',\n      }))\n    }\n\n    return res.then(onfulfilled, onrejected)\n  }\n}\n","import PostgrestBuilder from './PostgrestBuilder'\nimport { GetResult } from './select-query-parser'\nimport { GenericSchema } from './types'\n\nexport default class PostgrestTransformBuilder\u003c\n  Schema extends GenericSchema,\n  Row extends Record\u003cstring, unknown\u003e,\n  Result,\n  RelationName = unknown,\n  Relationships = unknown\n\u003e extends PostgrestBuilder\u003cResult\u003e {\n  /**\n   * Perform a SELECT on the query result.\n   *\n   * By default, `.insert()`, `.update()`, `.upsert()`, and `.delete()` do not\n   * return modified rows. By calling this method, modified rows are returned in\n   * `data`.\n   *\n   * @param columns - The columns to retrieve, separated by commas\n   */\n  select\u003c\n    Query extends string = '*',\n    NewResultOne = GetResult\u003cSchema, Row, RelationName, Relationships, Query\u003e\n  \u003e(\n    columns?: Query\n  ): PostgrestTransformBuilder\u003cSchema, Row, NewResultOne[], RelationName, Relationships\u003e {\n    // Remove whitespaces except when quoted\n    let quoted = false\n    const cleanedColumns = (columns ?? '*')\n      .split('')\n      .map((c) =\u003e {\n        if (/\\s/.test(c) \u0026\u0026 !quoted) {\n          return ''\n        }\n        if (c === '\"') {\n          quoted = !quoted\n        }\n        return c\n      })\n      .join('')\n    this.url.searchParams.set('select', cleanedColumns)\n    if (this.headers['Prefer']) {\n      this.headers['Prefer'] += ','\n    }\n    this.headers['Prefer'] += 'return=representation'\n    return this as unknown as PostgrestTransformBuilder\u003c\n      Schema,\n      Row,\n      NewResultOne[],\n      RelationName,\n      Relationships\n    \u003e\n  }\n\n  order\u003cColumnName extends string \u0026 keyof Row\u003e(\n    column: ColumnName,\n    options?: { ascending?: boolean; nullsFirst?: boolean; referencedTable?: undefined }\n  ): this\n  order(\n    column: string,\n    options?: { ascending?: boolean; nullsFirst?: boolean; referencedTable?: string }\n  ): this\n  /**\n   * @deprecated Use `options.referencedTable` instead of `options.foreignTable`\n   */\n  order\u003cColumnName extends string \u0026 keyof Row\u003e(\n    column: ColumnName,\n    options?: { ascending?: boolean; nullsFirst?: boolean; foreignTable?: undefined }\n  ): this\n  /**\n   * @deprecated Use `options.referencedTable` instead of `options.foreignTable`\n   */\n  order(\n    column: string,\n    options?: { ascending?: boolean; nullsFirst?: boolean; foreignTable?: string }\n  ): this\n  /**\n   * Order the query result by `column`.\n   *\n   * You can call this method multiple times to order by multiple columns.\n   *\n   * You can order referenced tables, but it only affects the ordering of the\n   * parent table if you use `!inner` in the query.\n   *\n   * @param column - The column to order by\n   * @param options - Named parameters\n   * @param options.ascending - If `true`, the result will be in ascending order\n   * @param options.nullsFirst - If `true`, `null`s appear first. If `false`,\n   * `null`s appear last.\n   * @param options.referencedTable - Set this to order a referenced table by\n   * its columns\n   * @param options.foreignTable - Deprecated, use `options.referencedTable`\n   * instead\n   */\n  order(\n    column: string,\n    {\n      ascending = true,\n      nullsFirst,\n      foreignTable,\n      referencedTable = foreignTable,\n    }: {\n      ascending?: boolean\n      nullsFirst?: boolean\n      foreignTable?: string\n      referencedTable?: string\n    } = {}\n  ): this {\n    const key = referencedTable ? `${referencedTable}.order` : 'order'\n    const existingOrder = this.url.searchParams.get(key)\n\n    this.url.searchParams.set(\n      key,\n      `${existingOrder ? `${existingOrder},` : ''}${column}.${ascending ? 'asc' : 'desc'}${\n        nullsFirst === undefined ? '' : nullsFirst ? '.nullsfirst' : '.nullslast'\n      }`\n    )\n    return this\n  }\n\n  /**\n   * Limit the query result by `count`.\n   *\n   * @param count - The maximum number of rows to return\n   * @param options - Named parameters\n   * @param options.referencedTable - Set this to limit rows of referenced\n   * tables instead of the parent table\n   * @param options.foreignTable - Deprecated, use `options.referencedTable`\n   * instead\n   */\n  limit(\n    count: number,\n    {\n      foreignTable,\n      referencedTable = foreignTable,\n    }: { foreignTable?: string; referencedTable?: string } = {}\n  ): this {\n    const key = typeof referencedTable === 'undefined' ? 'limit' : `${referencedTable}.limit`\n    this.url.searchParams.set(key, `${count}`)\n    return this\n  }\n\n  /**\n   * Limit the query result by starting at an offset `from` and ending at the offset `to`.\n   * Only records within this range are returned.\n   * This respects the query order and if there is no order clause the range could behave unexpectedly.\n   * The `from` and `to` values are 0-based and inclusive: `range(1, 3)` will include the second, third\n   * and fourth rows of the query.\n   *\n   * @param from - The starting index from which to limit the result\n   * @param to - The last index to which to limit the result\n   * @param options - Named parameters\n   * @param options.referencedTable - Set this to limit rows of referenced\n   * tables instead of the parent table\n   * @param options.foreignTable - Deprecated, use `options.referencedTable`\n   * instead\n   */\n  range(\n    from: number,\n    to: number,\n    {\n      foreignTable,\n      referencedTable = foreignTable,\n    }: { foreignTable?: string; referencedTable?: string } = {}\n  ): this {\n    const keyOffset =\n      typeof referencedTable === 'undefined' ? 'offset' : `${referencedTable}.offset`\n    const keyLimit = typeof referencedTable === 'undefined' ? 'limit' : `${referencedTable}.limit`\n    this.url.searchParams.set(keyOffset, `${from}`)\n    // Range is inclusive, so add 1\n    this.url.searchParams.set(keyLimit, `${to - from + 1}`)\n    return this\n  }\n\n  /**\n   * Set the AbortSignal for the fetch request.\n   *\n   * @param signal - The AbortSignal to use for the fetch request\n   */\n  abortSignal(signal: AbortSignal): this {\n    this.signal = signal\n    return this\n  }\n\n  /**\n   * Return `data` as a single object instead of an array of objects.\n   *\n   * Query result must be one row (e.g. using `.limit(1)`), otherwise this\n   * returns an error.\n   */\n  single\u003c\n    ResultOne = Result extends (infer ResultOne)[] ? ResultOne : never\n  \u003e(): PostgrestBuilder\u003cResultOne\u003e {\n    this.headers['Accept'] = 'application/vnd.pgrst.object+json'\n    return this as PostgrestBuilder\u003cResultOne\u003e\n  }\n\n  /**\n   * Return `data` as a single object instead of an array of objects.\n   *\n   * Query result must be zero or one row (e.g. using `.limit(1)`), otherwise\n   * this returns an error.\n   */\n  maybeSingle\u003c\n    ResultOne = Result extends (infer ResultOne)[] ? ResultOne : never\n  \u003e(): PostgrestBuilder\u003cResultOne | null\u003e {\n    // Temporary partial fix for https://github.com/supabase/postgrest-js/issues/361\n    // Issue persists e.g. for `.insert([...]).select().maybeSingle()`\n    if (this.method === 'GET') {\n      this.headers['Accept'] = 'application/json'\n    } else {\n      this.headers['Accept'] = 'application/vnd.pgrst.object+json'\n    }\n    this.isMaybeSingle = true\n    return this as PostgrestBuilder\u003cResultOne | null\u003e\n  }\n\n  /**\n   * Return `data` as a string in CSV format.\n   */\n  csv(): PostgrestBuilder\u003cstring\u003e {\n    this.headers['Accept'] = 'text/csv'\n    return this as PostgrestBuilder\u003cstring\u003e\n  }\n\n  /**\n   * Return `data` as an object in [GeoJSON](https://geojson.org) format.\n   */\n  geojson(): PostgrestBuilder\u003cRecord\u003cstring, unknown\u003e\u003e {\n    this.headers['Accept'] = 'application/geo+json'\n    return this as PostgrestBuilder\u003cRecord\u003cstring, unknown\u003e\u003e\n  }\n\n  /**\n   * Return `data` as the EXPLAIN plan for the query.\n   *\n   * You need to enable the\n   * [db_plan_enabled](https://supabase.com/docs/guides/database/debugging-performance#enabling-explain)\n   * setting before using this method.\n   *\n   * @param options - Named parameters\n   *\n   * @param options.analyze - If `true`, the query will be executed and the\n   * actual run time will be returned\n   *\n   * @param options.verbose - If `true`, the query identifier will be returned\n   * and `data` will include the output columns of the query\n   *\n   * @param options.settings - If `true`, include information on configuration\n   * parameters that affect query planning\n   *\n   * @param options.buffers - If `true`, include information on buffer usage\n   *\n   * @param options.wal - If `true`, include information on WAL record generation\n   *\n   * @param options.format - The format of the output, can be `\"text\"` (default)\n   * or `\"json\"`\n   */\n  explain({\n    analyze = false,\n    verbose = false,\n    settings = false,\n    buffers = false,\n    wal = false,\n    format = 'text',\n  }: {\n    analyze?: boolean\n    verbose?: boolean\n    settings?: boolean\n    buffers?: boolean\n    wal?: boolean\n    format?: 'json' | 'text'\n  } = {}): PostgrestBuilder\u003cRecord\u003cstring, unknown\u003e[]\u003e | PostgrestBuilder\u003cstring\u003e {\n    const options = [\n      analyze ? 'analyze' : null,\n      verbose ? 'verbose' : null,\n      settings ? 'settings' : null,\n      buffers ? 'buffers' : null,\n      wal ? 'wal' : null,\n    ]\n      .filter(Boolean)\n      .join('|')\n    // An Accept header can carry multiple media types but postgrest-js always sends one\n    const forMediatype = this.headers['Accept'] ?? 'application/json'\n    this.headers[\n      'Accept'\n    ] = `application/vnd.pgrst.plan+${format}; for=\"${forMediatype}\"; options=${options};`\n    if (format === 'json') return this as PostgrestBuilder\u003cRecord\u003cstring, unknown\u003e[]\u003e\n    else return this as PostgrestBuilder\u003cstring\u003e\n  }\n\n  /**\n   * Rollback the query.\n   *\n   * `data` will still be returned, but the query is not committed.\n   */\n  rollback(): this {\n    if ((this.headers['Prefer'] ?? '').trim().length \u003e 0) {\n      this.headers['Prefer'] += ',tx=rollback'\n    } else {\n      this.headers['Prefer'] = 'tx=rollback'\n    }\n    return this\n  }\n\n  /**\n   * Override the type of the returned `data`.\n   *\n   * @typeParam NewResult - The new result type to override with\n   */\n  returns\u003cNewResult\u003e(): PostgrestTransformBuilder\u003c\n    Schema,\n    Row,\n    NewResult,\n    RelationName,\n    Relationships\n  \u003e {\n    return this as unknown as PostgrestTransformBuilder\u003c\n      Schema,\n      Row,\n      NewResult,\n      RelationName,\n      Relationships\n    \u003e\n  }\n}\n","import PostgrestTransformBuilder from './PostgrestTransformBuilder'\nimport { GenericSchema } from './types'\n\ntype FilterOperator =\n  | 'eq'\n  | 'neq'\n  | 'gt'\n  | 'gte'\n  | 'lt'\n  | 'lte'\n  | 'like'\n  | 'ilike'\n  | 'is'\n  | 'in'\n  | 'cs'\n  | 'cd'\n  | 'sl'\n  | 'sr'\n  | 'nxl'\n  | 'nxr'\n  | 'adj'\n  | 'ov'\n  | 'fts'\n  | 'plfts'\n  | 'phfts'\n  | 'wfts'\n\nexport default class PostgrestFilterBuilder\u003c\n  Schema extends GenericSchema,\n  Row extends Record\u003cstring, unknown\u003e,\n  Result,\n  RelationName = unknown,\n  Relationships = unknown\n\u003e extends PostgrestTransformBuilder\u003cSchema, Row, Result, RelationName, Relationships\u003e {\n  eq\u003cColumnName extends string \u0026 keyof Row\u003e(\n    column: ColumnName,\n    value: NonNullable\u003cRow[ColumnName]\u003e\n  ): this\n  eq\u003cValue extends unknown\u003e(column: string, value: NonNullable\u003cValue\u003e): this\n  /**\n   * Match only rows where `column` is equal to `value`.\n   *\n   * To check if the value of `column` is NULL, you should use `.is()` instead.\n   *\n   * @param column - The column to filter on\n   * @param value - The value to filter with\n   */\n  eq(column: string, value: unknown): this {\n    this.url.searchParams.append(column, `eq.${value}`)\n    return this\n  }\n\n  neq\u003cColumnName extends string \u0026 keyof Row\u003e(column: ColumnName, value: Row[ColumnName]): this\n  neq(column: string, value: unknown): this\n  /**\n   * Match only rows where `column` is not equal to `value`.\n   *\n   * @param column - The column to filter on\n   * @param value - The value to filter with\n   */\n  neq(column: string, value: unknown): this {\n    this.url.searchParams.append(column, `neq.${value}`)\n    return this\n  }\n\n  gt\u003cColumnName extends string \u0026 keyof Row\u003e(column: ColumnName, value: Row[ColumnName]): this\n  gt(column: string, value: unknown): this\n  /**\n   * Match only rows where `column` is greater than `value`.\n   *\n   * @param column - The column to filter on\n   * @param value - The value to filter with\n   */\n  gt(column: string, value: unknown): this {\n    this.url.searchParams.append(column, `gt.${value}`)\n    return this\n  }\n\n  gte\u003cColumnName extends string \u0026 keyof Row\u003e(column: ColumnName, value: Row[ColumnName]): this\n  gte(column: string, value: unknown): this\n  /**\n   * Match only rows where `column` is greater than or equal to `value`.\n   *\n   * @param column - The column to filter on\n   * @param value - The value to filter with\n   */\n  gte(column: string, value: unknown): this {\n    this.url.searchParams.append(column, `gte.${value}`)\n    return this\n  }\n\n  lt\u003cColumnName extends string \u0026 keyof Row\u003e(column: ColumnName, value: Row[ColumnName]): this\n  lt(column: string, value: unknown): this\n  /**\n   * Match only rows where `column` is less than `value`.\n   *\n   * @param column - The column to filter on\n   * @param value - The value to filter with\n   */\n  lt(column: string, value: unknown): this {\n    this.url.searchParams.append(column, `lt.${value}`)\n    return this\n  }\n\n  lte\u003cColumnName extends string \u0026 keyof Row\u003e(column: ColumnName, value: Row[ColumnName]): this\n  lte(column: string, value: unknown): this\n  /**\n   * Match only rows where `column` is less than or equal to `value`.\n   *\n   * @param column - The column to filter on\n   * @param value - The value to filter with\n   */\n  lte(column: string, value: unknown): this {\n    this.url.searchParams.append(column, `lte.${value}`)\n    return this\n  }\n\n  like\u003cColumnName extends string \u0026 keyof Row\u003e(column: ColumnName, pattern: string): this\n  like(column: string, pattern: string): this\n  /**\n   * Match only rows where `column` matches `pattern` case-sensitively.\n   *\n   * @param column - The column to filter on\n   * @param pattern - The pattern to match with\n   */\n  like(column: string, pattern: string): this {\n    this.url.searchParams.append(column, `like.${pattern}`)\n    return this\n  }\n\n  likeAllOf\u003cColumnName extends string \u0026 keyof Row\u003e(\n    column: ColumnName,\n    patterns: readonly string[]\n  ): this\n  likeAllOf(column: string, patterns: readonly string[]): this\n  /**\n   * Match only rows where `column` matches all of `patterns` case-sensitively.\n   *\n   * @param column - The column to filter on\n   * @param patterns - The patterns to match with\n   */\n  likeAllOf(column: string, patterns: readonly string[]): this {\n    this.url.searchParams.append(column, `like(all).{${patterns.join(',')}}`)\n    return this\n  }\n\n  likeAnyOf\u003cColumnName extends string \u0026 keyof Row\u003e(\n    column: ColumnName,\n    patterns: readonly string[]\n  ): this\n  likeAnyOf(column: string, patterns: readonly string[]): this\n  /**\n   * Match only rows where `column` matches any of `patterns` case-sensitively.\n   *\n   * @param column - The column to filter on\n   * @param patterns - The patterns to match with\n   */\n  likeAnyOf(column: string, patterns: readonly string[]): this {\n    this.url.searchParams.append(column, `like(any).{${patterns.join(',')}}`)\n    return this\n  }\n\n  ilike\u003cColumnName extends string \u0026 keyof Row\u003e(column: ColumnName, pattern: string): this\n  ilike(column: string, pattern: string): this\n  /**\n   * Match only rows where `column` matches `pattern` case-insensitively.\n   *\n   * @param column - The column to filter on\n   * @param pattern - The pattern to match with\n   */\n  ilike(column: string, pattern: string): this {\n    this.url.searchParams.append(column, `ilike.${pattern}`)\n    return this\n  }\n\n  ilikeAllOf\u003cColumnName extends string \u0026 keyof Row\u003e(\n    column: ColumnName,\n    patterns: readonly string[]\n  ): this\n  ilikeAllOf(column: string, patterns: readonly string[]): this\n  /**\n   * Match only rows where `column` matches all of `patterns` case-insensitively.\n   *\n   * @param column - The column to filter on\n   * @param patterns - The patterns to match with\n   */\n  ilikeAllOf(column: string, patterns: readonly string[]): this {\n    this.url.searchParams.append(column, `ilike(all).{${patterns.join(',')}}`)\n    return this\n  }\n\n  ilikeAnyOf\u003cColumnName extends string \u0026 keyof Row\u003e(\n    column: ColumnName,\n    patterns: readonly string[]\n  ): this\n  ilikeAnyOf(column: string, patterns: readonly string[]): this\n  /**\n   * Match only rows where `column` matches any of `patterns` case-insensitively.\n   *\n   * @param column - The column to filter on\n   * @param patterns - The patterns to match with\n   */\n  ilikeAnyOf(column: string, patterns: readonly string[]): this {\n    this.url.searchParams.append(column, `ilike(any).{${patterns.join(',')}}`)\n    return this\n  }\n\n  is\u003cColumnName extends string \u0026 keyof Row\u003e(\n    column: ColumnName,\n    value: Row[ColumnName] \u0026 (boolean | null)\n  ): this\n  is(column: string, value: boolean | null): this\n  /**\n   * Match only rows where `column` IS `value`.\n   *\n   * For non-boolean columns, this is only relevant for checking if the value of\n   * `column` is NULL by setting `value` to `null`.\n   *\n   * For boolean columns, you can also set `value` to `true` or `false` and it\n   * will behave the same way as `.eq()`.\n   *\n   * @param column - The column to filter on\n   * @param value - The value to filter with\n   */\n  is(column: string, value: boolean | null): this {\n    this.url.searchParams.append(column, `is.${value}`)\n    return this\n  }\n\n  in\u003cColumnName extends string \u0026 keyof Row\u003e(\n    column: ColumnName,\n    values: ReadonlyArray\u003cRow[ColumnName]\u003e\n  ): this\n  in(column: string, values: readonly unknown[]): this\n  /**\n   * Match only rows where `column` is included in the `values` array.\n   *\n   * @param column - The column to filter on\n   * @param values - The values array to filter with\n   */\n  in(column: string, values: readonly unknown[]): this {\n    const cleanedValues = Array.from(new Set(values))\n      .map((s) =\u003e {\n        // handle postgrest reserved characters\n        // https://postgrest.org/en/v7.0.0/api.html#reserved-characters\n        if (typeof s === 'string' \u0026\u0026 new RegExp('[,()]').test(s)) return `\"${s}\"`\n        else return `${s}`\n      })\n      .join(',')\n    this.url.searchParams.append(column, `in.(${cleanedValues})`)\n    return this\n  }\n\n  contains\u003cColumnName extends string \u0026 keyof Row\u003e(\n    column: ColumnName,\n    value: string | ReadonlyArray\u003cRow[ColumnName]\u003e | Record\u003cstring, unknown\u003e\n  ): this\n  contains(column: string, value: string | readonly unknown[] | Record\u003cstring, unknown\u003e): this\n  /**\n   * Only relevant for jsonb, array, and range columns. Match only rows where\n   * `column` contains every element appearing in `value`.\n   *\n   * @param column - The jsonb, array, or range column to filter on\n   * @param value - The jsonb, array, or range value to filter with\n   */\n  contains(column: string, value: string | readonly unknown[] | Record\u003cstring, unknown\u003e): this {\n    if (typeof value === 'string') {\n      // range types can be inclusive '[', ']' or exclusive '(', ')' so just\n      // keep it simple and accept a string\n      this.url.searchParams.append(column, `cs.${value}`)\n    } else if (Array.isArray(value)) {\n      // array\n      this.url.searchParams.append(column, `cs.{${value.join(',')}}`)\n    } else {\n      // json\n      this.url.searchParams.append(column, `cs.${JSON.stringify(value)}`)\n    }\n    return this\n  }\n\n  containedBy\u003cColumnName extends string \u0026 keyof Row\u003e(\n    column: ColumnName,\n    value: string | ReadonlyArray\u003cRow[ColumnName]\u003e | Record\u003cstring, unknown\u003e\n  ): this\n  containedBy(column: string, value: string | readonly unknown[] | Record\u003cstring, unknown\u003e): this\n  /**\n   * Only relevant for jsonb, array, and range columns. Match only rows where\n   * every element appearing in `column` is contained by `value`.\n   *\n   * @param column - The jsonb, array, or range column to filter on\n   * @param value - The jsonb, array, or range value to filter with\n   */\n  containedBy(column: string, value: string | readonly unknown[] | Record\u003cstring, unknown\u003e): this {\n    if (typeof value === 'string') {\n      // range\n      this.url.searchParams.append(column, `cd.${value}`)\n    } else if (Array.isArray(value)) {\n      // array\n      this.url.searchParams.append(column, `cd.{${value.join(',')}}`)\n    } else {\n      // json\n      this.url.searchParams.append(column, `cd.${JSON.stringify(value)}`)\n    }\n    return this\n  }\n\n  rangeGt\u003cColumnName extends string \u0026 keyof Row\u003e(column: ColumnName, range: string): this\n  rangeGt(column: string, range: string): this\n  /**\n   * Only relevant for range columns. Match only rows where every element in\n   * `column` is greater than any element in `range`.\n   *\n   * @param column - The range column to filter on\n   * @param range - The range to filter with\n   */\n  rangeGt(column: string, range: string): this {\n    this.url.searchParams.append(column, `sr.${range}`)\n    return this\n  }\n\n  rangeGte\u003cColumnName extends string \u0026 keyof Row\u003e(column: ColumnName, range: string): this\n  rangeGte(column: string, range: string): this\n  /**\n   * Only relevant for range columns. Match only rows where every element in\n   * `column` is either contained in `range` or greater than any element in\n   * `range`.\n   *\n   * @param column - The range column to filter on\n   * @param range - The range to filter with\n   */\n  rangeGte(column: string, range: string): this {\n    this.url.searchParams.append(column, `nxl.${range}`)\n    return this\n  }\n\n  rangeLt\u003cColumnName extends string \u0026 keyof Row\u003e(column: ColumnName, range: string): this\n  rangeLt(column: string, range: string): this\n  /**\n   * Only relevant for range columns. Match only rows where every element in\n   * `column` is less than any element in `range`.\n   *\n   * @param column - The range column to filter on\n   * @param range - The range to filter with\n   */\n  rangeLt(column: string, range: string): this {\n    this.url.searchParams.append(column, `sl.${range}`)\n    return this\n  }\n\n  rangeLte\u003cColumnName extends string \u0026 keyof Row\u003e(column: ColumnName, range: string): this\n  rangeLte(column: string, range: string): this\n  /**\n   * Only relevant for range columns. Match only rows where every element in\n   * `column` is either contained in `range` or less than any element in\n   * `range`.\n   *\n   * @param column - The range column to filter on\n   * @param range - The range to filter with\n   */\n  rangeLte(column: string, range: string): this {\n    this.url.searchParams.append(column, `nxr.${range}`)\n    return this\n  }\n\n  rangeAdjacent\u003cColumnName extends string \u0026 keyof Row\u003e(column: ColumnName, range: string): this\n  rangeAdjacent(column: string, range: string): this\n  /**\n   * Only relevant for range columns. Match only rows where `column` is\n   * mutually exclusive to `range` and there can be no element between the two\n   * ranges.\n   *\n   * @param column - The range column to filter on\n   * @param range - The range to filter with\n   */\n  rangeAdjacent(column: string, range: string): this {\n    this.url.searchParams.append(column, `adj.${range}`)\n    return this\n  }\n\n  overlaps\u003cColumnName extends string \u0026 keyof Row\u003e(\n    column: ColumnName,\n    value: string | ReadonlyArray\u003cRow[ColumnName]\u003e\n  ): this\n  overlaps(column: string, value: string | readonly unknown[]): this\n  /**\n   * Only relevant for array and range columns. Match only rows where\n   * `column` and `value` have an element in common.\n   *\n   * @param column - The array or range column to filter on\n   * @param value - The array or range value to filter with\n   */\n  overlaps(column: string, value: string | readonly unknown[]): this {\n    if (typeof value === 'string') {\n      // range\n      this.url.searchParams.append(column, `ov.${value}`)\n    } else {\n      // array\n      this.url.searchParams.append(column, `ov.{${value.join(',')}}`)\n    }\n    return this\n  }\n\n  textSearch\u003cColumnName extends string \u0026 keyof Row\u003e(\n    column: ColumnName,\n    query: string,\n    options?: { config?: string; type?: 'plain' | 'phrase' | 'websearch' }\n  ): this\n  textSearch(\n    column: string,\n    query: string,\n    options?: { config?: string; type?: 'plain' | 'phrase' | 'websearch' }\n  ): this\n  /**\n   * Only relevant for text and tsvector columns. Match only rows where\n   * `column` matches the query string in `query`.\n   *\n   * @param column - The text or tsvector column to filter on\n   * @param query - The query text to match with\n   * @param options - Named parameters\n   * @param options.config - The text search configuration to use\n   * @param options.type - Change how the `query` text is interpreted\n   */\n  textSearch(\n    column: string,\n    query: string,\n    { config, type }: { config?: string; type?: 'plain' | 'phrase' | 'websearch' } = {}\n  ): this {\n    let typePart = ''\n    if (type === 'plain') {\n      typePart = 'pl'\n    } else if (type === 'phrase') {\n      typePart = 'ph'\n    } else if (type === 'websearch') {\n      typePart = 'w'\n    }\n    const configPart = config === undefined ? '' : `(${config})`\n    this.url.searchParams.append(column, `${typePart}fts${configPart}.${query}`)\n    return this\n  }\n\n  match\u003cColumnName extends string \u0026 keyof Row\u003e(query: Record\u003cColumnName, Row[ColumnName]\u003e): this\n  match(query: Record\u003cstring, unknown\u003e): this\n  /**\n   * Match only rows where each column in `query` keys is equal to its\n   * associated value. Shorthand for multiple `.eq()`s.\n   *\n   * @param query - The object to filter with, with column names as keys mapped\n   * to their filter values\n   */\n  match(query: Record\u003cstring, unknown\u003e): this {\n    Object.entries(query).forEach(([column, value]) =\u003e {\n      this.url.searchParams.append(column, `eq.${value}`)\n    })\n    return this\n  }\n\n  not\u003cColumnName extends string \u0026 keyof Row\u003e(\n    column: ColumnName,\n    operator: FilterOperator,\n    value: Row[ColumnName]\n  ): this\n  not(column: string, operator: string, value: unknown): this\n  /**\n   * Match only rows which doesn't satisfy the filter.\n   *\n   * Unlike most filters, `opearator` and `value` are used as-is and need to\n   * follow [PostgREST\n   * syntax](https://postgrest.org/en/stable/api.html#operators). You also need\n   * to make sure they are properly sanitized.\n   *\n   * @param column - The column to filter on\n   * @param operator - The operator to be negated to filter with, following\n   * PostgREST syntax\n   * @param value - The value to filter with, following PostgREST syntax\n   */\n  not(column: string, operator: string, value: unknown): this {\n    this.url.searchParams.append(column, `not.${operator}.${value}`)\n    return this\n  }\n\n  /**\n   * Match only rows which satisfy at least one of the filters.\n   *\n   * Unlike most filters, `filters` is used as-is and needs to follow [PostgREST\n   * syntax](https://postgrest.org/en/stable/api.html#operators). You also need\n   * to make sure it's properly sanitized.\n   *\n   * It's currently not possible to do an `.or()` filter across multiple tables.\n   *\n   * @param filters - The filters to use, following PostgREST syntax\n   * @param options - Named parameters\n   * @param options.referencedTable - Set this to filter on referenced tables\n   * instead of the parent table\n   * @param options.foreignTable - Deprecated, use `referencedTable` instead\n   */\n  or(\n    filters: string,\n    {\n      foreignTable,\n      referencedTable = foreignTable,\n    }: { foreignTable?: string; referencedTable?: string } = {}\n  ): this {\n    const key = referencedTable ? `${referencedTable}.or` : 'or'\n    this.url.searchParams.append(key, `(${filters})`)\n    return this\n  }\n\n  filter\u003cColumnName extends string \u0026 keyof Row\u003e(\n    column: ColumnName,\n    operator: `${'' | 'not.'}${FilterOperator}`,\n    value: unknown\n  ): this\n  filter(column: string, operator: string, value: unknown): this\n  /**\n   * Match only rows which satisfy the filter. This is an escape hatch - you\n   * should use the specific filter methods wherever possible.\n   *\n   * Unlike most filters, `opearator` and `value` are used as-is and need to\n   * follow [PostgREST\n   * syntax](https://postgrest.org/en/stable/api.html#operators). You also need\n   * to make sure they are properly sanitized.\n   *\n   * @param column - The column to filter on\n   * @param operator - The operator to filter with, following PostgREST syntax\n   * @param value - The value to filter with, following PostgREST syntax\n   */\n  filter(column: string, operator: string, value: unknown): this {\n    this.url.searchParams.append(column, `${operator}.${value}`)\n    return this\n  }\n}\n","import PostgrestBuilder from './PostgrestBuilder'\nimport PostgrestFilterBuilder from './PostgrestFilterBuilder'\nimport { GetResult } from './select-query-parser'\nimport { Fetch, GenericSchema, GenericTable, GenericView } from './types'\n\nexport default class PostgrestQueryBuilder\u003c\n  Schema extends GenericSchema,\n  Relation extends GenericTable | GenericView,\n  RelationName = unknown,\n  Relationships = Relation extends { Relationships: infer R } ? R : unknown\n\u003e {\n  url: URL\n  headers: Record\u003cstring, string\u003e\n  schema?: string\n  signal?: AbortSignal\n  fetch?: Fetch\n\n  constructor(\n    url: URL,\n    {\n      headers = {},\n      schema,\n      fetch,\n    }: {\n      headers?: Record\u003cstring, string\u003e\n      schema?: string\n      fetch?: Fetch\n    }\n  ) {\n    this.url = url\n    this.headers = headers\n    this.schema = schema\n    this.fetch = fetch\n  }\n\n  /**\n   * Perform a SELECT query on the table or view.\n   *\n   * @param columns - The columns to retrieve, separated by commas. Columns can be renamed when returned with `customName:columnName`\n   *\n   * @param options - Named parameters\n   *\n   * @param options.head - When set to `true`, `data` will not be returned.\n   * Useful if you only need the count.\n   *\n   * @param options.count - Count algorithm to use to count rows in the table or view.\n   *\n   * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n   * hood.\n   *\n   * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n   * statistics under the hood.\n   *\n   * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n   * numbers.\n   */\n  select\u003c\n    Query extends string = '*',\n    ResultOne = GetResult\u003cSchema, Relation['Row'], RelationName, Relationships, Query\u003e\n  \u003e(\n    columns?: Query,\n    {\n      head = false,\n      count,\n    }: {\n      head?: boolean\n      count?: 'exact' | 'planned' | 'estimated'\n    } = {}\n  ): PostgrestFilterBuilder\u003cSchema, Relation['Row'], ResultOne[], RelationName, Relationships\u003e {\n    const method = head ? 'HEAD' : 'GET'\n    // Remove whitespaces except when quoted\n    let quoted = false\n    const cleanedColumns = (columns ?? '*')\n      .split('')\n      .map((c) =\u003e {\n        if (/\\s/.test(c) \u0026\u0026 !quoted) {\n          return ''\n        }\n        if (c === '\"') {\n          quoted = !quoted\n        }\n        return c\n      })\n      .join('')\n    this.url.searchParams.set('select', cleanedColumns)\n    if (count) {\n      this.headers['Prefer'] = `count=${count}`\n    }\n\n    return new PostgrestFilterBuilder({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      fetch: this.fetch,\n      allowEmpty: false,\n    } as unknown as PostgrestBuilder\u003cResultOne[]\u003e)\n  }\n\n  // TODO(v3): Make `defaultToNull` consistent for both single \u0026 bulk inserts.\n  insert\u003cRow extends Relation extends { Insert: unknown } ? Relation['Insert'] : never\u003e(\n    values: Row,\n    options?: {\n      count?: 'exact' | 'planned' | 'estimated'\n    }\n  ): PostgrestFilterBuilder\u003cSchema, Relation['Row'], null, RelationName, Relationships\u003e\n  insert\u003cRow extends Relation extends { Insert: unknown } ? Relation['Insert'] : never\u003e(\n    values: Row[],\n    options?: {\n      count?: 'exact' | 'planned' | 'estimated'\n      defaultToNull?: boolean\n    }\n  ): PostgrestFilterBuilder\u003cSchema, Relation['Row'], null, RelationName, Relationships\u003e\n  /**\n   * Perform an INSERT into the table or view.\n   *\n   * By default, inserted rows are not returned. To return it, chain the call\n   * with `.select()`.\n   *\n   * @param values - The values to insert. Pass an object to insert a single row\n   * or an array to insert multiple rows.\n   *\n   * @param options - Named parameters\n   *\n   * @param options.count - Count algorithm to use to count inserted rows.\n   *\n   * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n   * hood.\n   *\n   * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n   * statistics under the hood.\n   *\n   * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n   * numbers.\n   *\n   * @param options.defaultToNull - Make missing fields default to `null`.\n   * Otherwise, use the default value for the column. Only applies for bulk\n   * inserts.\n   */\n  insert\u003cRow extends Relation extends { Insert: unknown } ? Relation['Insert'] : never\u003e(\n    values: Row | Row[],\n    {\n      count,\n      defaultToNull = true,\n    }: {\n      count?: 'exact' | 'planned' | 'estimated'\n      defaultToNull?: boolean\n    } = {}\n  ): PostgrestFilterBuilder\u003cSchema, Relation['Row'], null, RelationName, Relationships\u003e {\n    const method = 'POST'\n\n    const prefersHeaders = []\n    if (this.headers['Prefer']) {\n      prefersHeaders.push(this.headers['Prefer'])\n    }\n    if (count) {\n      prefersHeaders.push(`count=${count}`)\n    }\n    if (!defaultToNull) {\n      prefersHeaders.push('missing=default')\n    }\n    this.headers['Prefer'] = prefersHeaders.join(',')\n\n    if (Array.isArray(values)) {\n      const columns = values.reduce((acc, x) =\u003e acc.concat(Object.keys(x)), [] as string[])\n      if (columns.length \u003e 0) {\n        const uniqueColumns = [...new Set(columns)].map((column) =\u003e `\"${column}\"`)\n        this.url.searchParams.set('columns', uniqueColumns.join(','))\n      }\n    }\n\n    return new PostgrestFilterBuilder({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      body: values,\n      fetch: this.fetch,\n      allowEmpty: false,\n    } as unknown as PostgrestBuilder\u003cnull\u003e)\n  }\n\n  // TODO(v3): Make `defaultToNull` consistent for both single \u0026 bulk upserts.\n  upsert\u003cRow extends Relation extends { Insert: unknown } ? Relation['Insert'] : never\u003e(\n    values: Row,\n    options?: {\n      onConflict?: string\n      ignoreDuplicates?: boolean\n      count?: 'exact' | 'planned' | 'estimated'\n    }\n  ): PostgrestFilterBuilder\u003cSchema, Relation['Row'], null, RelationName, Relationships\u003e\n  upsert\u003cRow extends Relation extends { Insert: unknown } ? Relation['Insert'] : never\u003e(\n    values: Row[],\n    options?: {\n      onConflict?: string\n      ignoreDuplicates?: boolean\n      count?: 'exact' | 'planned' | 'estimated'\n      defaultToNull?: boolean\n    }\n  ): PostgrestFilterBuilder\u003cSchema, Relation['Row'], null, RelationName, Relationships\u003e\n  /**\n   * Perform an UPSERT on the table or view. Depending on the column(s) passed\n   * to `onConflict`, `.upsert()` allows you to perform the equivalent of\n   * `.insert()` if a row with the corresponding `onConflict` columns doesn't\n   * exist, or if it does exist, perform an alternative action depending on\n   * `ignoreDuplicates`.\n   *\n   * By default, upserted rows are not returned. To return it, chain the call\n   * with `.select()`.\n   *\n   * @param values - The values to upsert with. Pass an object to upsert a\n   * single row or an array to upsert multiple rows.\n   *\n   * @param options - Named parameters\n   *\n   * @param options.onConflict - Comma-separated UNIQUE column(s) to specify how\n   * duplicate rows are determined. Two rows are duplicates if all the\n   * `onConflict` columns are equal.\n   *\n   * @param options.ignoreDuplicates - If `true`, duplicate rows are ignored. If\n   * `false`, duplicate rows are merged with existing rows.\n   *\n   * @param options.count - Count algorithm to use to count upserted rows.\n   *\n   * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n   * hood.\n   *\n   * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n   * statistics under the hood.\n   *\n   * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n   * numbers.\n   *\n   * @param options.defaultToNull - Make missing fields default to `null`.\n   * Otherwise, use the default value for the column. This only applies when\n   * inserting new rows, not when merging with existing rows under\n   * `ignoreDuplicates: false`. This also only applies when doing bulk upserts.\n   */\n  upsert\u003cRow extends Relation extends { Insert: unknown } ? Relation['Insert'] : never\u003e(\n    values: Row | Row[],\n    {\n      onConflict,\n      ignoreDuplicates = false,\n      count,\n      defaultToNull = true,\n    }: {\n      onConflict?: string\n      ignoreDuplicates?: boolean\n      count?: 'exact' | 'planned' | 'estimated'\n      defaultToNull?: boolean\n    } = {}\n  ): PostgrestFilterBuilder\u003cSchema, Relation['Row'], null, RelationName, Relationships\u003e {\n    const method = 'POST'\n\n    const prefersHeaders = [`resolution=${ignoreDuplicates ? 'ignore' : 'merge'}-duplicates`]\n\n    if (onConflict !== undefined) this.url.searchParams.set('on_conflict', onConflict)\n    if (this.headers['Prefer']) {\n      prefersHeaders.push(this.headers['Prefer'])\n    }\n    if (count) {\n      prefersHeaders.push(`count=${count}`)\n    }\n    if (!defaultToNull) {\n      prefersHeaders.push('missing=default')\n    }\n    this.headers['Prefer'] = prefersHeaders.join(',')\n\n    if (Array.isArray(values)) {\n      const columns = values.reduce((acc, x) =\u003e acc.concat(Object.keys(x)), [] as string[])\n      if (columns.length \u003e 0) {\n        const uniqueColumns = [...new Set(columns)].map((column) =\u003e `\"${column}\"`)\n        this.url.searchParams.set('columns', uniqueColumns.join(','))\n      }\n    }\n\n    return new PostgrestFilterBuilder({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      body: values,\n      fetch: this.fetch,\n      allowEmpty: false,\n    } as unknown as PostgrestBuilder\u003cnull\u003e)\n  }\n\n  /**\n   * Perform an UPDATE on the table or view.\n   *\n   * By default, updated rows are not returned. To return it, chain the call\n   * with `.select()` after filters.\n   *\n   * @param values - The values to update with\n   *\n   * @param options - Named parameters\n   *\n   * @param options.count - Count algorithm to use to count updated rows.\n   *\n   * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n   * hood.\n   *\n   * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n   * statistics under the hood.\n   *\n   * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n   * numbers.\n   */\n  update\u003cRow extends Relation extends { Update: unknown } ? Relation['Update'] : never\u003e(\n    values: Row,\n    {\n      count,\n    }: {\n      count?: 'exact' | 'planned' | 'estimated'\n    } = {}\n  ): PostgrestFilterBuilder\u003cSchema, Relation['Row'], null, RelationName, Relationships\u003e {\n    const method = 'PATCH'\n    const prefersHeaders = []\n    if (this.headers['Prefer']) {\n      prefersHeaders.push(this.headers['Prefer'])\n    }\n    if (count) {\n      prefersHeaders.push(`count=${count}`)\n    }\n    this.headers['Prefer'] = prefersHeaders.join(',')\n\n    return new PostgrestFilterBuilder({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      body: values,\n      fetch: this.fetch,\n      allowEmpty: false,\n    } as unknown as PostgrestBuilder\u003cnull\u003e)\n  }\n\n  /**\n   * Perform a DELETE on the table or view.\n   *\n   * By default, deleted rows are not returned. To return it, chain the call\n   * with `.select()` after filters.\n   *\n   * @param options - Named parameters\n   *\n   * @param options.count - Count algorithm to use to count deleted rows.\n   *\n   * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n   * hood.\n   *\n   * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n   * statistics under the hood.\n   *\n   * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n   * numbers.\n   */\n  delete({\n    count,\n  }: {\n    count?: 'exact' | 'planned' | 'estimated'\n  } = {}): PostgrestFilterBuilder\u003cSchema, Relation['Row'], null, RelationName, Relationships\u003e {\n    const method = 'DELETE'\n    const prefersHeaders = []\n    if (count) {\n      prefersHeaders.push(`count=${count}`)\n    }\n    if (this.headers['Prefer']) {\n      prefersHeaders.unshift(this.headers['Prefer'])\n    }\n    this.headers['Prefer'] = prefersHeaders.join(',')\n\n    return new PostgrestFilterBuilder({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      fetch: this.fetch,\n      allowEmpty: false,\n    } as unknown as PostgrestBuilder\u003cnull\u003e)\n  }\n}\n","export const version = '1.16.1'\n","import { version } from './version'\nexport const DEFAULT_HEADERS = { 'X-Client-Info': `postgrest-js/${version}` }\n","import PostgrestQueryBuilder from './PostgrestQueryBuilder'\nimport PostgrestFilterBuilder from './PostgrestFilterBuilder'\nimport PostgrestBuilder from './PostgrestBuilder'\nimport { DEFAULT_HEADERS } from './constants'\nimport { Fetch, GenericSchema } from './types'\n\n/**\n * PostgREST client.\n *\n * @typeParam Database - Types for the schema from the [type\n * generator](https://supabase.com/docs/reference/javascript/next/typescript-support)\n *\n * @typeParam SchemaName - Postgres schema to switch to. Must be a string\n * literal, the same one passed to the constructor. If the schema is not\n * `\"public\"`, this must be supplied manually.\n */\nexport default class PostgrestClient\u003c\n  Database = any,\n  SchemaName extends string \u0026 keyof Database = 'public' extends keyof Database\n    ? 'public'\n    : string \u0026 keyof Database,\n  Schema extends GenericSchema = Database[SchemaName] extends GenericSchema\n    ? Database[SchemaName]\n    : any\n\u003e {\n  url: string\n  headers: Record\u003cstring, string\u003e\n  schemaName?: SchemaName\n  fetch?: Fetch\n\n  // TODO: Add back shouldThrowOnError once we figure out the typings\n  /**\n   * Creates a PostgREST client.\n   *\n   * @param url - URL of the PostgREST endpoint\n   * @param options - Named parameters\n   * @param options.headers - Custom headers\n   * @param options.schema - Postgres schema to switch to\n   * @param options.fetch - Custom fetch\n   */\n  constructor(\n    url: string,\n    {\n      headers = {},\n      schema,\n      fetch,\n    }: {\n      headers?: Record\u003cstring, string\u003e\n      schema?: SchemaName\n      fetch?: Fetch\n    } = {}\n  ) {\n    this.url = url\n    this.headers = { ...DEFAULT_HEADERS, ...headers }\n    this.schemaName = schema\n    this.fetch = fetch\n  }\n\n  from\u003c\n    TableName extends string \u0026 keyof Schema['Tables'],\n    Table extends Schema['Tables'][TableName]\n  \u003e(relation: TableName): PostgrestQueryBuilder\u003cSchema, Table, TableName\u003e\n  from\u003cViewName extends string \u0026 keyof Schema['Views'], View extends Schema['Views'][ViewName]\u003e(\n    relation: ViewName\n  ): PostgrestQueryBuilder\u003cSchema, View, ViewName\u003e\n  /**\n   * Perform a query on a table or a view.\n   *\n   * @param relation - The table or view name to query\n   */\n  from(relation: string): PostgrestQueryBuilder\u003cSchema, any, any\u003e {\n    const url = new URL(`${this.url}/${relation}`)\n    return new PostgrestQueryBuilder(url, {\n      headers: { ...this.headers },\n      schema: this.schemaName,\n      fetch: this.fetch,\n    })\n  }\n\n  /**\n   * Select a schema to query or perform an function (rpc) call.\n   *\n   * The schema needs to be on the list of exposed schemas inside Supabase.\n   *\n   * @param schema - The schema to query\n   */\n  schema\u003cDynamicSchema extends string \u0026 keyof Database\u003e(\n    schema: DynamicSchema\n  ): PostgrestClient\u003c\n    Database,\n    DynamicSchema,\n    Database[DynamicSchema] extends GenericSchema ? Database[DynamicSchema] : any\n  \u003e {\n    return new PostgrestClient(this.url, {\n      headers: this.headers,\n      schema,\n      fetch: this.fetch,\n    })\n  }\n\n  /**\n   * Perform a function call.\n   *\n   * @param fn - The function name to call\n   * @param args - The arguments to pass to the function call\n   * @param options - Named parameters\n   * @param options.head - When set to `true`, `data` will not be returned.\n   * Useful if you only need the count.\n   * @param options.get - When set to `true`, the function will be called with\n   * read-only access mode.\n   * @param options.count - Count algorithm to use to count rows returned by the\n   * function. Only applicable for [set-returning\n   * functions](https://www.postgresql.org/docs/current/functions-srf.html).\n   *\n   * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n   * hood.\n   *\n   * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n   * statistics under the hood.\n   *\n   * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n   * numbers.\n   */\n  rpc\u003cFnName extends string \u0026 keyof Schema['Functions'], Fn extends Schema['Functions'][FnName]\u003e(\n    fn: FnName,\n    args: Fn['Args'] = {},\n    {\n      head = false,\n      get = false,\n      count,\n    }: {\n      head?: boolean\n      get?: boolean\n      count?: 'exact' | 'planned' | 'estimated'\n    } = {}\n  ): PostgrestFilterBuilder\u003c\n    Schema,\n    Fn['Returns'] extends any[]\n      ? Fn['Returns'][number] extends Record\u003cstring, unknown\u003e\n        ? Fn['Returns'][number]\n        : never\n      : never,\n    Fn['Returns']\n  \u003e {\n    let method: 'HEAD' | 'GET' | 'POST'\n    const url = new URL(`${this.url}/rpc/${fn}`)\n    let body: unknown | undefined\n    if (head || get) {\n      method = head ? 'HEAD' : 'GET'\n      Object.entries(args)\n        // params with undefined value needs to be filtered out, otherwise it'll\n        // show up as `?param=undefined`\n        .filter(([_, value]) =\u003e value !== undefined)\n        // array values need special syntax\n        .map(([name, value]) =\u003e [name, Array.isArray(value) ? `{${value.join(',')}}` : `${value}`])\n        .forEach(([name, value]) =\u003e {\n          url.searchParams.append(name, value)\n        })\n    } else {\n      method = 'POST'\n      body = args\n    }\n\n    const headers = { ...this.headers }\n    if (count) {\n      headers['Prefer'] = `count=${count}`\n    }\n\n    return new PostgrestFilterBuilder({\n      method,\n      url,\n      headers,\n      schema: this.schemaName,\n      body,\n      fetch: this.fetch,\n      allowEmpty: false,\n    } as unknown as PostgrestBuilder\u003cFn['Returns']\u003e)\n  }\n}\n","// Always update wrapper.mjs when updating this file.\nimport PostgrestClient from './PostgrestClient'\nimport PostgrestQueryBuilder from './PostgrestQueryBuilder'\nimport PostgrestFilterBuilder from './PostgrestFilterBuilder'\nimport PostgrestTransformBuilder from './PostgrestTransformBuilder'\nimport PostgrestBuilder from './PostgrestBuilder'\n\nexport {\n  PostgrestClient,\n  PostgrestQueryBuilder,\n  PostgrestFilterBuilder,\n  PostgrestTransformBuilder,\n  PostgrestBuilder,\n}\nexport default {\n  PostgrestClient,\n  PostgrestQueryBuilder,\n  PostgrestFilterBuilder,\n  PostgrestTransformBuilder,\n  PostgrestBuilder,\n}\nexport type {\n  PostgrestResponse,\n  PostgrestResponseFailure,\n  PostgrestResponseSuccess,\n  PostgrestSingleResponse,\n  PostgrestMaybeSingleResponse,\n  PostgrestError,\n} from './types'\n","import index from '../cjs/index.js'\nconst {\n  PostgrestClient,\n  PostgrestQueryBuilder,\n  PostgrestFilterBuilder,\n  PostgrestTransformBuilder,\n  PostgrestBuilder,\n} = index\n\nexport {\n  PostgrestBuilder,\n  PostgrestClient,\n  PostgrestFilterBuilder,\n  PostgrestQueryBuilder,\n  PostgrestTransformBuilder,\n}\n\n// compatibility with CJS output\nexport default {\n  PostgrestClient,\n  PostgrestQueryBuilder,\n  PostgrestFilterBuilder,\n  PostgrestTransformBuilder,\n  PostgrestBuilder,\n}\n"],"version":3}
