drizzle-orm 1.0.0-beta.23-0bbcaa2 → 1.0.0-beta.24
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/aws-data-api/common/index.d.cts +1 -1
- package/aws-data-api/common/index.d.ts +1 -1
- package/aws-data-api/pg/driver.cjs +1 -1
- package/aws-data-api/pg/driver.cjs.map +1 -1
- package/aws-data-api/pg/driver.js +1 -1
- package/aws-data-api/pg/driver.js.map +1 -1
- package/better-sqlite3/driver.cjs +1 -1
- package/better-sqlite3/driver.cjs.map +1 -1
- package/better-sqlite3/driver.js +1 -1
- package/better-sqlite3/driver.js.map +1 -1
- package/bun-sql/mysql/driver.cjs +1 -1
- package/bun-sql/mysql/driver.cjs.map +1 -1
- package/bun-sql/mysql/driver.js +1 -1
- package/bun-sql/mysql/driver.js.map +1 -1
- package/bun-sql/postgres/driver.cjs +1 -1
- package/bun-sql/postgres/driver.cjs.map +1 -1
- package/bun-sql/postgres/driver.js +1 -1
- package/bun-sql/postgres/driver.js.map +1 -1
- package/bun-sql/sqlite/driver.cjs +1 -1
- package/bun-sql/sqlite/driver.cjs.map +1 -1
- package/bun-sql/sqlite/driver.js +1 -1
- package/bun-sql/sqlite/driver.js.map +1 -1
- package/bun-sqlite/driver.cjs +1 -1
- package/bun-sqlite/driver.cjs.map +1 -1
- package/bun-sqlite/driver.js +1 -1
- package/bun-sqlite/driver.js.map +1 -1
- package/cockroach/driver.cjs +1 -1
- package/cockroach/driver.cjs.map +1 -1
- package/cockroach/driver.js +1 -1
- package/cockroach/driver.js.map +1 -1
- package/d1/driver.cjs.map +1 -1
- package/d1/driver.d.cts +1 -1
- package/d1/driver.d.ts +1 -1
- package/d1/driver.js.map +1 -1
- package/durable-sqlite/driver.cjs +1 -1
- package/durable-sqlite/driver.cjs.map +1 -1
- package/durable-sqlite/driver.js +1 -1
- package/durable-sqlite/driver.js.map +1 -1
- package/effect-postgres/driver.cjs +2 -2
- package/effect-postgres/driver.cjs.map +1 -1
- package/effect-postgres/driver.d.cts +2 -2
- package/effect-postgres/driver.d.ts +2 -2
- package/effect-postgres/driver.js +2 -2
- package/effect-postgres/driver.js.map +1 -1
- package/effect-postgres/migrator.d.cts +1 -1
- package/effect-postgres/migrator.d.ts +1 -1
- package/expo-sqlite/driver.cjs +1 -1
- package/expo-sqlite/driver.cjs.map +1 -1
- package/expo-sqlite/driver.js +1 -1
- package/expo-sqlite/driver.js.map +1 -1
- package/libsql/driver-core.cjs +1 -1
- package/libsql/driver-core.cjs.map +1 -1
- package/libsql/driver-core.js +1 -1
- package/libsql/driver-core.js.map +1 -1
- package/mysql-proxy/driver.cjs +1 -1
- package/mysql-proxy/driver.cjs.map +1 -1
- package/mysql-proxy/driver.js +1 -1
- package/mysql-proxy/driver.js.map +1 -1
- package/mysql2/driver.cjs +1 -1
- package/mysql2/driver.cjs.map +1 -1
- package/mysql2/driver.js +1 -1
- package/mysql2/driver.js.map +1 -1
- package/neon-http/driver.cjs +1 -1
- package/neon-http/driver.cjs.map +1 -1
- package/neon-http/driver.js +1 -1
- package/neon-http/driver.js.map +1 -1
- package/neon-serverless/driver.cjs +1 -1
- package/neon-serverless/driver.cjs.map +1 -1
- package/neon-serverless/driver.js +1 -1
- package/neon-serverless/driver.js.map +1 -1
- package/netlify-db/driver.cjs +1 -1
- package/netlify-db/driver.cjs.map +1 -1
- package/netlify-db/driver.js +1 -1
- package/netlify-db/driver.js.map +1 -1
- package/node-mssql/driver.cjs +1 -1
- package/node-mssql/driver.cjs.map +1 -1
- package/node-mssql/driver.js +1 -1
- package/node-mssql/driver.js.map +1 -1
- package/node-postgres/driver.cjs +1 -1
- package/node-postgres/driver.cjs.map +1 -1
- package/node-postgres/driver.js +1 -1
- package/node-postgres/driver.js.map +1 -1
- package/node-sqlite/driver.cjs +1 -1
- package/node-sqlite/driver.cjs.map +1 -1
- package/node-sqlite/driver.js +1 -1
- package/node-sqlite/driver.js.map +1 -1
- package/op-sqlite/driver.cjs +1 -1
- package/op-sqlite/driver.cjs.map +1 -1
- package/op-sqlite/driver.js +1 -1
- package/op-sqlite/driver.js.map +1 -1
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +1 -1
- package/pg-core/effect/session.d.cts +1 -1
- package/pg-core/effect/session.d.ts +1 -1
- package/pg-proxy/driver.cjs +1 -1
- package/pg-proxy/driver.cjs.map +1 -1
- package/pg-proxy/driver.js +1 -1
- package/pg-proxy/driver.js.map +1 -1
- package/pglite/driver.cjs +1 -1
- package/pglite/driver.cjs.map +1 -1
- package/pglite/driver.js +1 -1
- package/pglite/driver.js.map +1 -1
- package/planetscale-serverless/driver.cjs +1 -1
- package/planetscale-serverless/driver.cjs.map +1 -1
- package/planetscale-serverless/driver.js +1 -1
- package/planetscale-serverless/driver.js.map +1 -1
- package/postgres-js/driver.cjs +1 -1
- package/postgres-js/driver.cjs.map +1 -1
- package/postgres-js/driver.js +1 -1
- package/postgres-js/driver.js.map +1 -1
- package/singlestore/driver.cjs +1 -1
- package/singlestore/driver.cjs.map +1 -1
- package/singlestore/driver.js +1 -1
- package/singlestore/driver.js.map +1 -1
- package/singlestore-proxy/driver.cjs +1 -1
- package/singlestore-proxy/driver.cjs.map +1 -1
- package/singlestore-proxy/driver.js +1 -1
- package/singlestore-proxy/driver.js.map +1 -1
- package/sql-js/driver.cjs +1 -1
- package/sql-js/driver.cjs.map +1 -1
- package/sql-js/driver.js +1 -1
- package/sql-js/driver.js.map +1 -1
- package/sqlite-cloud/driver.cjs +1 -1
- package/sqlite-cloud/driver.cjs.map +1 -1
- package/sqlite-cloud/driver.js +1 -1
- package/sqlite-cloud/driver.js.map +1 -1
- package/sqlite-proxy/driver.cjs +1 -1
- package/sqlite-proxy/driver.cjs.map +1 -1
- package/sqlite-proxy/driver.js +1 -1
- package/sqlite-proxy/driver.js.map +1 -1
- package/tidb-serverless/driver.cjs +1 -1
- package/tidb-serverless/driver.cjs.map +1 -1
- package/tidb-serverless/driver.js +1 -1
- package/tidb-serverless/driver.js.map +1 -1
- package/tursodatabase/driver-core.cjs +1 -1
- package/tursodatabase/driver-core.cjs.map +1 -1
- package/tursodatabase/driver-core.js +1 -1
- package/tursodatabase/driver-core.js.map +1 -1
- package/utils.cjs +2 -2
- package/utils.cjs.map +1 -1
- package/utils.d.cts +1 -1
- package/utils.d.ts +1 -1
- package/utils.js +2 -2
- package/utils.js.map +1 -1
- package/vercel-postgres/driver.cjs +1 -1
- package/vercel-postgres/driver.cjs.map +1 -1
- package/vercel-postgres/driver.js +1 -1
- package/vercel-postgres/driver.js.map +1 -1
- package/xata-http/driver.cjs +1 -1
- package/xata-http/driver.cjs.map +1 -1
- package/xata-http/driver.js +1 -1
- package/xata-http/driver.js.map +1 -1
package/utils.d.ts
CHANGED
|
@@ -54,7 +54,7 @@ interface DrizzleConfig<TSchema extends Record<string, unknown> = Record<string,
|
|
|
54
54
|
schema?: TSchema | undefined;
|
|
55
55
|
relations?: TRelationConfigs | undefined;
|
|
56
56
|
cache?: Cache | undefined;
|
|
57
|
-
|
|
57
|
+
jit?: boolean | undefined;
|
|
58
58
|
}
|
|
59
59
|
type ValidateShape<T, ValidShape, TResult = T> = T extends ValidShape ? Exclude<keyof T, keyof ValidShape> extends never ? TResult : DrizzleTypeError<`Invalid key(s): ${Exclude<(keyof T) & (string | number | bigint | boolean | null | undefined), keyof ValidShape>}`> : never;
|
|
60
60
|
type KnownKeysOnly<T, U> = { [K in keyof T]: K extends keyof U ? T[K] : never };
|
package/utils.js
CHANGED
|
@@ -268,8 +268,8 @@ function isConfig(data) {
|
|
|
268
268
|
if (type !== "object" && type !== "function" && type !== "undefined") return false;
|
|
269
269
|
return true;
|
|
270
270
|
}
|
|
271
|
-
if ("
|
|
272
|
-
const type = typeof data["
|
|
271
|
+
if ("jit" in data) {
|
|
272
|
+
const type = typeof data["jit"];
|
|
273
273
|
if (type !== "boolean" && type !== "undefined") return false;
|
|
274
274
|
return true;
|
|
275
275
|
}
|
package/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":[],"sources":["../src/utils.ts"],"sourcesContent":["import type { Cache } from './cache/core/cache.ts';\nimport type { CodecsCollection } from './codecs.ts';\nimport type { AnyColumn } from './column.ts';\nimport { Column } from './column.ts';\nimport { is } from './entity.ts';\nimport type { Logger } from './logger.ts';\nimport type { SelectedFieldsFlat, SelectedFieldsOrdered } from './operations.ts';\nimport type { TableLike } from './query-builders/select.types.ts';\nimport type { AnyRelations, EmptyRelations } from './relations.ts';\nimport { Param, SQL, View } from './sql/sql.ts';\nimport type { DriverValueDecoder } from './sql/sql.ts';\nimport { Subquery } from './subquery.ts';\nimport { getTableName, Table } from './table.ts';\nimport { ViewBaseConfig } from './view-common.ts';\n\n/** @internal */\nexport function mapResultRow<TResult>(\n\tcolumns: SelectedFieldsOrdered<AnyColumn>,\n\trow: unknown[] | (readonly unknown[]),\n\tjoinsNotNullableMap: Record<string, boolean> | undefined,\n): TResult {\n\t// Key -> nested object key, value -> table name if all fields in the nested object are from the same table, false otherwise\n\tconst nullifyMap: Record<string, string | false> = {};\n\n\tconst result = columns.reduce<Record<string, any>>(\n\t\t(result, { path, field, codec, arrayDimensions }, columnIndex) => {\n\t\t\tlet decoder: DriverValueDecoder<unknown, unknown>;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else if (is(field, Subquery)) {\n\t\t\t\tdecoder = field._.sql.decoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t}\n\t\t\tlet node = result;\n\t\t\tfor (const [pathChunkIndex, pathChunk] of path.entries()) {\n\t\t\t\tif (pathChunkIndex < path.length - 1) {\n\t\t\t\t\tif (!(pathChunk in node)) {\n\t\t\t\t\t\tnode[pathChunk] = {};\n\t\t\t\t\t}\n\t\t\t\t\tnode = node[pathChunk];\n\t\t\t\t} else {\n\t\t\t\t\tconst rawValue = row[columnIndex]!;\n\t\t\t\t\tconst value = node[pathChunk] = rawValue === null\n\t\t\t\t\t\t? null\n\t\t\t\t\t\t: decoder.mapFromDriverValue(codec ? codec(rawValue, arrayDimensions!) : rawValue);\n\n\t\t\t\t\tif (joinsNotNullableMap && is(field, Column) && path.length === 2) {\n\t\t\t\t\t\tconst objectName = path[0]!;\n\t\t\t\t\t\tif (!(objectName in nullifyMap)) {\n\t\t\t\t\t\t\tnullifyMap[objectName] = value === null ? getTableName(field.table) : false;\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\ttypeof nullifyMap[objectName] === 'string' && nullifyMap[objectName] !== getTableName(field.table)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tnullifyMap[objectName] = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\t\t{},\n\t);\n\n\t// Nullify all nested objects from nullifyMap that are nullable\n\tif (joinsNotNullableMap && Object.keys(nullifyMap).length > 0) {\n\t\tfor (const [objectName, tableName] of Object.entries(nullifyMap)) {\n\t\t\tif (typeof tableName === 'string' && !joinsNotNullableMap[tableName]) {\n\t\t\t\tresult[objectName] = null;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result as TResult;\n}\n\n/** @internal bypass bundle-time filtering */\nexport const FnConstructor = Object.getPrototypeOf(() => null).constructor as typeof Function;\n\n/** @internal */\nfunction makeJitQueryMapperInner(\n\tcolumns: SelectedFieldsOrdered<AnyColumn>,\n\tjoinsNotNullableMap: Record<string, boolean> = {},\n): string {\n\tconst preFn = [] as string[];\n\tconst fn = [] as string[];\n\tfn.push(`const [ ${columns.map((_, i) => `c${i}`).join(', ')} ] = rows[i];`);\n\n\tconst nullifyMap: Record<string, string | false> = {};\n\tconst objectIds: Record<string, string[]> = {};\n\tconst decodes = Array.from<string>({ length: columns.length });\n\n\tfor (let idx = 0; idx < columns.length; ++idx) {\n\t\tconst { field, path, codec, arrayDimensions } = columns[idx]!;\n\t\tlet decoder: DriverValueDecoder<unknown, unknown>;\n\t\tlet decoderStr: string;\n\t\tlet decoderFieldDestructure: string;\n\t\tlet isColumn = false;\n\t\tif (is(field, Column)) {\n\t\t\tisColumn = true;\n\t\t\tdecoder = field;\n\t\t\tdecoderFieldDestructure = `field: decoder${idx}`;\n\t\t} else if (is(field, SQL)) {\n\t\t\tdecoder = field.decoder;\n\t\t\tdecoderFieldDestructure = `field: { decoder: decoder${idx} }`;\n\t\t} else if (is(field, Subquery)) {\n\t\t\tdecoder = field._.sql.decoder;\n\t\t\tdecoderFieldDestructure = `field: { _: { sql: { decoder: decoder${idx} } } }`;\n\t\t} else {\n\t\t\tdecoder = field.sql.decoder;\n\t\t\tdecoderFieldDestructure = `field: { sql: { decoder: decoder${idx} } }`;\n\t\t}\n\t\tdecoderStr = `decoder${idx}.mapFromDriverValue`;\n\t\tif (decoder.mapFromDriverValue.isNoop) decoderStr = '';\n\t\tif (decoderStr) {\n\t\t\tpreFn.push(`const { ${decoderFieldDestructure}${codec ? `, codec: codec${idx}` : ''} } = columns[${idx}];`);\n\t\t} else if (codec) {\n\t\t\tpreFn.push(`const { codec: codec${idx} } = columns[${idx}];`);\n\t\t}\n\n\t\tconst colStr = `c${idx}`;\n\t\tlet decodedValue = colStr;\n\t\tif (codec) decodedValue = `codec${idx}(${decodedValue}, ${arrayDimensions})`;\n\t\tif (decoderStr) decodedValue = `${decoderStr}(${decodedValue})`;\n\t\tdecodes[idx] = colStr === decodedValue\n\t\t\t? `${colStr}`\n\t\t\t: `${colStr} === null ? ${colStr} : ${decodedValue}`;\n\n\t\tif (path.length !== 2 || !isColumn) continue;\n\t\tif (objectIds[path[0]!] === undefined) objectIds[path[0]!] = [`c${idx}`];\n\t\telse objectIds[path[0]!]?.push(`c${idx}`);\n\t\tconst [objectName] = path as [string];\n\t\tconst tableName = getTableName((<Column> field).table);\n\t\tnullifyMap[objectName] = joinsNotNullableMap[tableName] ? false : typeof nullifyMap[objectName] === 'string'\n\t\t\t? nullifyMap[objectName] === tableName ? tableName : false\n\t\t\t: tableName;\n\t}\n\n\tfn.push(`mapped[i] = {`);\n\tlet currentObjectPath: string[] = [];\n\tfor (let idx = 0; idx < columns.length; ++idx) {\n\t\tconst { path } = columns[idx]!;\n\t\tconst jsonPath = path.map((e) => JSON.stringify(e));\n\t\tconst decodedValue = decodes[idx]!;\n\n\t\tconst objectPath = path.slice(0, -1);\n\t\tlet commonLen = 0;\n\t\twhile (\n\t\t\tcommonLen < currentObjectPath.length\n\t\t\t&& commonLen < objectPath.length\n\t\t\t&& currentObjectPath[commonLen] === objectPath[commonLen]\n\t\t) commonLen++;\n\n\t\tfor (let d = currentObjectPath.length - 1; d >= commonLen; --d) {\n\t\t\tfn.push(`${'\\t'.repeat(d + 1)}},`);\n\t\t}\n\n\t\tfor (let d = commonLen; d < objectPath.length; ++d) {\n\t\t\tfn.push(\n\t\t\t\t`${'\\t'.repeat(d + 1)}${jsonPath[d]}: ${\n\t\t\t\t\td === 0 && objectPath.length === 1 && typeof nullifyMap[path[0]!] === 'string'\n\t\t\t\t\t\t? `${objectIds[path[0]!]?.map((c) => `${c} === null`).join(' && ')} ? null : {`\n\t\t\t\t\t\t: '{'\n\t\t\t\t}`,\n\t\t\t);\n\t\t}\n\n\t\tcurrentObjectPath = objectPath;\n\t\tfn.push(`${'\\t'.repeat(path.length)}${jsonPath[path.length - 1]}: ${decodedValue},`);\n\t}\n\n\tfor (let d = currentObjectPath.length - 1; d >= 0; --d) {\n\t\tfn.push(`${'\\t'.repeat(d + 1)}},`);\n\t}\n\tfn.push(`};`);\n\n\treturn `${preFn.length ? `${preFn.join('\\n\\t')}\\n\\t` : ''}for (let i = 0; i < length; ++i) {\n\t\t${fn.join('\\n\\t\\t')}\n\t}`;\n}\n\nexport type RowsMapperGenerator = <TResult = any>(\n\tcolumns: SelectedFieldsOrdered<AnyColumn>,\n\tjoinsNotNullableMap: Record<string, boolean> | undefined,\n) => RowsMapper<TResult>;\nexport interface RowsMapper<TResult = Record<string, unknown>[]> {\n\t(rows: unknown[][]): TResult;\n\t/** @internal jit mapper's function body for debugging */\n\tbody?: string;\n}\n\nexport function makeJitQueryMapper<TResult>(\n\tcolumns: SelectedFieldsOrdered<AnyColumn>,\n\tjoinsNotNullableMap: Record<string, boolean> | undefined,\n): RowsMapper<TResult> {\n\tconst internals = `\\t\"use strict\";\n\tconst { columns } = this;\n\tconst { length } = rows;\n\tconst mapped = Array.from({ length });\n\t${makeJitQueryMapperInner(columns, joinsNotNullableMap)}\n\treturn mapped;\n\t//# sourceURL=drizzle:jit-query-mapper`;\n\n\tconst fn = Object.assign(\n\t\tnew FnConstructor(\n\t\t\t'rows',\n\t\t\tinternals,\n\t\t).bind({\n\t\t\tcolumns,\n\t\t}),\n\t\t{ body: `function jitQueryMapper (rows) {\\n${internals}\\n}` },\n\t) as RowsMapper<TResult>;\n\n\treturn fn;\n}\n\n/** @internal */\nexport function jitCompatCheck(isEnabled?: boolean): boolean {\n\tif (!isEnabled) return false;\n\n\ttry {\n\t\tconst res = new FnConstructor('input', '\"use strict\"; return input;')(true);\n\t\tif (res !== true) {\n\t\t\t// In case it's broken in runtime but not forbidden\n\t\t\tconsole.warn(\n\t\t\t\t'Unable to use jit mappers due to incompatibility: corrupted jit function output.\\nFalling back to premade mappers.\\nError details:',\n\t\t\t);\n\t\t\tconsole.error(`Expected to receive \\`true\\`, got: ${res}`);\n\t\t}\n\t\treturn true;\n\t} catch (e) {\n\t\tconsole.warn(\n\t\t\t'Unable to use jit mappers due to incompatibility.\\nFalling back to premade mappers.\\nError details:',\n\t\t);\n\t\tconsole.error(e);\n\t\treturn false;\n\t}\n}\n\nexport function makeDefaultQueryMapper<TResult>(\n\tcolumns: SelectedFieldsOrdered<AnyColumn>,\n\tjoinsNotNullableMap: Record<string, boolean> | undefined,\n): RowsMapper<TResult> {\n\tconst interpretedData = columns.map(({ field, codec, arrayDimensions, path }) => {\n\t\tlet processNullifyMap: ((nullifyMap: Record<string, string | false>, value: any) => void) | undefined;\n\t\tlet decoderSrc: DriverValueDecoder<unknown, unknown>;\n\t\tif (is(field, Column)) {\n\t\t\tdecoderSrc = field;\n\n\t\t\tif (joinsNotNullableMap && path.length === 2) {\n\t\t\t\tconst objectName = path[0]!;\n\t\t\t\tprocessNullifyMap = (nullifyMap, value) => {\n\t\t\t\t\tif (!(objectName in nullifyMap)) {\n\t\t\t\t\t\tnullifyMap[objectName] = value === null ? getTableName(field.table) : false;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\ttypeof nullifyMap[objectName] === 'string' && nullifyMap[objectName] !== getTableName(field.table)\n\t\t\t\t\t) {\n\t\t\t\t\t\tnullifyMap[objectName] = false;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t} else if (is(field, SQL)) {\n\t\t\tdecoderSrc = field.decoder;\n\t\t} else if (is(field, Subquery)) {\n\t\t\tdecoderSrc = field._.sql.decoder;\n\t\t} else {\n\t\t\tdecoderSrc = field.sql.decoder;\n\t\t}\n\n\t\tlet decoder: ((v: any) => any) | undefined;\n\t\tif (decoderSrc.mapFromDriverValue.isNoop) {\n\t\t\tdecoder = codec ? (v: any) => codec(v, arrayDimensions!) : undefined;\n\t\t} else {\n\t\t\tdecoder = codec\n\t\t\t\t? (v: any) => decoderSrc.mapFromDriverValue(codec(v, arrayDimensions!))\n\t\t\t\t: (v: any) => decoderSrc.mapFromDriverValue(v);\n\t\t}\n\n\t\treturn [decoder, processNullifyMap] as const;\n\t});\n\n\treturn ((rows) =>\n\t\trows.map((row) => {\n\t\t\t// Key -> nested object key, value -> table name if all fields in the nested object are from the same table, false otherwise\n\t\t\tconst nullifyMap: Record<string, string | false> = {};\n\n\t\t\tconst result = columns.reduce<Record<string, any>>(\n\t\t\t\t(result, { path }, columnIndex) => {\n\t\t\t\t\tlet node = result;\n\t\t\t\t\tfor (const [pathChunkIndex, pathChunk] of path.entries()) {\n\t\t\t\t\t\tif (pathChunkIndex < path.length - 1) {\n\t\t\t\t\t\t\tif (!(pathChunk in node)) {\n\t\t\t\t\t\t\t\tnode[pathChunk] = {};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnode = node[pathChunk];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst [decoder, processNullifyMap] = interpretedData[columnIndex]!;\n\n\t\t\t\t\t\t\tconst rawValue = row[columnIndex]!;\n\t\t\t\t\t\t\tconst value = node[pathChunk] = rawValue === null\n\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t: decoder\n\t\t\t\t\t\t\t\t? decoder(rawValue)\n\t\t\t\t\t\t\t\t: rawValue;\n\n\t\t\t\t\t\t\tprocessNullifyMap?.(nullifyMap, value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t);\n\n\t\t\t// Nullify all nested objects from nullifyMap that are nullable\n\t\t\tif (joinsNotNullableMap && Object.keys(nullifyMap).length > 0) {\n\t\t\t\tfor (const [objectName, tableName] of Object.entries(nullifyMap)) {\n\t\t\t\t\tif (typeof tableName === 'string' && !joinsNotNullableMap[tableName]) {\n\t\t\t\t\t\tresult[objectName] = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result as TResult;\n\t\t})) as RowsMapper<TResult>;\n}\n/** @internal */\nexport function orderSelectedFields<TColumn extends AnyColumn>(\n\tfields: Record<string, unknown>,\n\tpathPrefix?: string[],\n\tcodecs?: CodecsCollection,\n): SelectedFieldsOrdered<TColumn> {\n\treturn Object.entries(fields).reduce<SelectedFieldsOrdered<AnyColumn>>((result, [name, field]) => {\n\t\tif (typeof name !== 'string') {\n\t\t\treturn result;\n\t\t}\n\n\t\tconst newPath = pathPrefix ? [...pathPrefix, name] : [name];\n\t\tif (is(field, Column)) {\n\t\t\tresult.push({\n\t\t\t\tpath: newPath,\n\t\t\t\tfield,\n\t\t\t\tcodec: codecs?.get(field, 'normalize'),\n\t\t\t\tarrayDimensions: (<any> field).dimensions,\n\t\t\t});\n\t\t} else if (is(field, Column) || is(field, SQL) || is(field, SQL.Aliased) || is(field, Subquery)) {\n\t\t\tresult.push({ path: newPath, field });\n\t\t} else if (is(field, Table)) {\n\t\t\tresult.push(...orderSelectedFields(field[Table.Symbol.Columns], newPath, codecs));\n\t\t} else {\n\t\t\tresult.push(...orderSelectedFields(field as Record<string, unknown>, newPath, codecs));\n\t\t}\n\t\treturn result;\n\t}, []) as SelectedFieldsOrdered<TColumn>;\n}\n\nexport function haveSameKeys(left: Record<string, unknown>, right: Record<string, unknown>) {\n\tconst leftKeys = Object.keys(left);\n\tconst rightKeys = Object.keys(right);\n\n\tif (leftKeys.length !== rightKeys.length) {\n\t\treturn false;\n\t}\n\n\tfor (const [index, key] of leftKeys.entries()) {\n\t\tif (key !== rightKeys[index]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/** @internal */\nexport function mapUpdateSet(table: Table, values: Record<string, unknown>): UpdateSet {\n\tconst entries: [string, UpdateSet[string]][] = Object.entries(values)\n\t\t.filter(([, value]) => value !== undefined)\n\t\t.map(([key, value]) => {\n\t\t\t// eslint-disable-next-line unicorn/prefer-ternary\n\t\t\tif (is(value, SQL) || is(value, Column)) {\n\t\t\t\treturn [key, value];\n\t\t\t} else {\n\t\t\t\treturn [key, new Param(value, table[Table.Symbol.Columns][key])];\n\t\t\t}\n\t\t});\n\n\tif (entries.length === 0) {\n\t\tthrow new Error('No values to set');\n\t}\n\n\treturn Object.fromEntries(entries);\n}\n\nexport type UpdateSet = Record<string, SQL | Param | AnyColumn | null | undefined>;\n\nexport type OneOrMany<T> = T | T[];\n\nexport type Update<T, TUpdate> =\n\t& {\n\t\t[K in Exclude<keyof T, keyof TUpdate>]: T[K];\n\t}\n\t& TUpdate;\n\nexport type Simplify<T> =\n\t& {\n\t\t// @ts-ignore - \"Type parameter 'K' has a circular constraint\", not sure why\n\t\t[K in keyof T]: T[K];\n\t}\n\t& {};\n\nexport type Not<T extends boolean> = T extends true ? false : true;\n\nexport type IsNever<T> = [T] extends [never] ? true : false;\n\nexport type IsUnion<T, U extends T = T> = (T extends any ? (U extends T ? false : true) : never) extends false ? false\n\t: true;\n\nexport type SingleKeyObject<T, TError extends string, K = keyof T> = IsNever<K> extends true ? never\n\t: IsUnion<K> extends true ? DrizzleTypeError<TError>\n\t: T;\n\nexport type FromSingleKeyObject<T, Result, TError extends string, K = keyof T> = IsNever<K> extends true ? never\n\t: IsUnion<K> extends true ? DrizzleTypeError<TError>\n\t: Result;\n\nexport type SimplifyMappedType<T> = [T] extends [unknown] ? T : never;\n\nexport type ShallowRecord<K extends keyof any, T> = SimplifyMappedType<{ [P in K]: T }>;\n\nexport type Assume<T, U> = T extends U ? T : U;\n\nexport type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2) ? true : false;\n\nexport interface DrizzleTypeError<T extends string> {\n\t$drizzleTypeError: T;\n}\n\nexport type ValueOrArray<T> = T | T[];\n\n/** @internal */\nexport function applyMixins(baseClass: any, extendedClasses: any[]) {\n\tfor (const extendedClass of extendedClasses) {\n\t\tfor (const name of Object.getOwnPropertyNames(extendedClass.prototype)) {\n\t\t\tif (name === 'constructor') continue;\n\n\t\t\tObject.defineProperty(\n\t\t\t\tbaseClass.prototype,\n\t\t\t\tname,\n\t\t\t\tObject.getOwnPropertyDescriptor(extendedClass.prototype, name) || Object.create(null),\n\t\t\t);\n\t\t}\n\t}\n}\n\nexport type Or<T1, T2> = T1 extends true ? true : T2 extends true ? true : false;\n\nexport type IfThenElse<If, Then, Else> = If extends true ? Then : Else;\n\nexport type PromiseOf<T> = T extends Promise<infer U> ? U : T;\n\nexport type Writable<T> = {\n\t-readonly [P in keyof T]: T[P];\n};\n\nexport type NonArray<T> = T extends any[] ? never : T;\n\n/**\n * @deprecated\n * Use `getColumns` instead\n */\nexport function getTableColumns<T extends Table>(table: T): T['_']['columns'] {\n\treturn table[Table.Symbol.Columns];\n}\n\nexport function getViewSelectedFields<T extends View>(view: T): T['_']['selectedFields'] {\n\treturn view[ViewBaseConfig].selectedFields;\n}\n\nexport function getColumns<T extends Table | View | Subquery>(\n\ttable: T,\n): T extends Table ? T['_']['columns']\n\t: T extends View ? T['_']['selectedFields']\n\t: T extends Subquery ? T['_']['selectedFields']\n\t: never\n{\n\treturn (is(table, Table)\n\t\t? table[Table.Symbol.Columns]\n\t\t: is(table, View)\n\t\t? table[ViewBaseConfig].selectedFields\n\t\t: table._.selectedFields) as any;\n}\n\n/** @internal */\nexport function getTableLikeName(table: TableLike): string | undefined {\n\treturn is(table, Subquery)\n\t\t? table._.alias\n\t\t: is(table, View)\n\t\t? table[ViewBaseConfig].name\n\t\t: is(table, SQL)\n\t\t? undefined\n\t\t: table[Table.Symbol.IsAlias]\n\t\t? table[Table.Symbol.Name]\n\t\t: table[Table.Symbol.BaseName];\n}\n\nexport type ColumnsWithTable<\n\tTTableName extends string,\n\tTForeignTableName extends string,\n\tTColumns extends AnyColumn<{ tableName: TTableName }>[],\n> = { [Key in keyof TColumns]: AnyColumn<{ tableName: TForeignTableName }> };\n\nexport interface DrizzleConfig<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelationConfigs extends AnyRelations = EmptyRelations,\n> {\n\tlogger?: boolean | Logger | undefined;\n\tschema?: TSchema | undefined;\n\trelations?: TRelationConfigs | undefined;\n\tcache?: Cache | undefined;\n\tuseJitMappers?: boolean | undefined;\n}\nexport type ValidateShape<T, ValidShape, TResult = T> = T extends ValidShape\n\t? Exclude<keyof T, keyof ValidShape> extends never ? TResult\n\t: DrizzleTypeError<\n\t\t`Invalid key(s): ${Exclude<(keyof T) & (string | number | bigint | boolean | null | undefined), keyof ValidShape>}`\n\t>\n\t: never;\n\nexport type KnownKeysOnly<T, U> = {\n\t[K in keyof T]: K extends keyof U ? T[K] : never;\n};\n\nexport type IsAny<T> = 0 extends (1 & T) ? true : false;\n\n/** @internal */\nexport function getColumnNameAndConfig<\n\tTConfig extends Record<string, any> | undefined,\n>(a: string | TConfig | undefined, b: TConfig | undefined) {\n\treturn {\n\t\tname: typeof a === 'string' && a.length > 0 ? a : '' as string,\n\t\tconfig: typeof a === 'object' ? a : b as TConfig,\n\t};\n}\n\nexport type IfNotImported<T, Y, N> = unknown extends T ? Y : N;\n\nexport type ImportTypeError<TPackageName extends string> =\n\t`Please install \\`${TPackageName}\\` to allow Drizzle ORM to connect to the database`;\n\nexport type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Keys extends any\n\t? Required<Pick<T, Keys>> & Partial<Omit<T, Keys>>\n\t: never;\n\ntype ExpectedConfigShape = {\n\tlogger?: boolean | {\n\t\tlogQuery(query: string, params: unknown[]): void;\n\t} | undefined;\n\tschema?: Record<string, never> | undefined;\n\trelations?: AnyRelations | undefined;\n};\n\n// If this errors, you must update config shape checker function with new config specs\nconst _: DrizzleConfig<any, any> = {} as ExpectedConfigShape;\nconst __: ExpectedConfigShape = {} as DrizzleConfig;\n\nexport function isConfig(data: any): boolean {\n\tif (typeof data !== 'object' || data === null) return false;\n\n\tif (data.constructor.name !== 'Object') return false;\n\n\tif ('logger' in data) {\n\t\tconst type = typeof data['logger'];\n\t\tif (\n\t\t\ttype !== 'boolean' && (type !== 'object' || typeof data['logger']['logQuery'] !== 'function')\n\t\t\t&& type !== 'undefined'\n\t\t) return false;\n\n\t\treturn true;\n\t}\n\n\tif ('schema' in data) {\n\t\tconst type = typeof data['schema'];\n\t\tif (type !== 'object' && type !== 'undefined') return false;\n\n\t\treturn true;\n\t}\n\n\tif ('relations' in data) {\n\t\tconst type = typeof data['relations'];\n\t\tif (type !== 'object' && type !== 'undefined') return false;\n\n\t\treturn true;\n\t}\n\n\tif ('mode' in data) {\n\t\tif (data['mode'] !== 'default' && data['mode'] !== 'planetscale' && data['mode'] !== undefined) return false;\n\n\t\treturn true;\n\t}\n\n\tif ('connection' in data) {\n\t\tconst type = typeof data['connection'];\n\t\tif (type !== 'string' && type !== 'object' && type !== 'undefined') return false;\n\n\t\treturn true;\n\t}\n\n\tif ('client' in data) {\n\t\tconst type = typeof data['client'];\n\t\tif (type !== 'object' && type !== 'function' && type !== 'undefined') return false;\n\n\t\treturn true;\n\t}\n\n\tif ('useJitMappers' in data) {\n\t\tconst type = typeof data['useJitMappers'];\n\t\tif (type !== 'boolean' && type !== 'undefined') return false;\n\n\t\treturn true;\n\t}\n\n\tif ('codecs' in data) {\n\t\tconst type = typeof data['connection'];\n\t\tif (type !== 'object' && type !== 'undefined') return false;\n\n\t\treturn true;\n\t}\n\n\tif (Object.keys(data).length === 0) return true;\n\n\treturn false;\n}\n\nexport type NeonAuthToken = string | (() => string | Promise<string>);\n\nexport const textDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder();\n\nexport function assertUnreachable(_x: never | undefined): never {\n\tthrow new Error(\"Didn't expect to get here\");\n}\n\nexport function isWithEnum(column: Column<any>): column is typeof column & { enumValues: [string, ...string[]] };\nexport function isWithEnum(value: unknown): value is { enumValues: [string, ...string[]] };\nexport function isWithEnum(value: unknown): boolean {\n\treturn ((typeof value === 'object' && value !== null) || typeof value === 'function') && 'enumValues' in value\n\t\t&& Array.isArray(value.enumValues)\n\t\t&& value.enumValues.length > 0;\n}\n\nexport type Literal = string | number | boolean | null;\nexport type Json = Literal | { [key: string]: any } | any[];\n\nexport type ColumnIsGeneratedAlwaysAs<TColumn> = TColumn extends Column<any>\n\t? TColumn['_']['identity'] extends 'always' ? true\n\t: TColumn['_'] extends { generated: undefined } ? false\n\t: TColumn['_']['generated'] extends { type: 'byDefault' } ? false\n\t: true\n\t: false;\n\nexport type GetSelection<T extends SelectedFieldsFlat<Column<any>> | Table<any> | View> = T extends Table<any>\n\t? T['_']['columns']\n\t: T extends View ? T['_']['selectedFields']\n\t: T;\n\nexport type RemoveNeverElements<T extends any[]> = T extends [infer First, ...infer Rest]\n\t? IsNever<First> extends true ? RemoveNeverElements<Rest>\n\t: [First, ...RemoveNeverElements<Rest>]\n\t: [];\n\nexport type HasBaseColumn<TColumn> = TColumn extends { _: { baseColumn: Column | undefined } }\n\t? IsNever<TColumn['_']['baseColumn']> extends false ? true\n\t: false\n\t: false;\n\nexport type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = { [K in TEnumValues[number]]: K };\n\nexport type EnumValuesToReadonlyEnum<TEnumValues extends [string, ...string[]]> = {\n\treadonly [K in TEnumValues[number]]: K;\n};\n\nexport const CONSTANTS = {\n\tINT8_MIN: -128,\n\tINT8_MAX: 127,\n\tINT8_UNSIGNED_MAX: 255,\n\tINT16_MIN: -32768,\n\tINT16_MAX: 32767,\n\tINT16_UNSIGNED_MAX: 65535,\n\tINT24_MIN: -8388608,\n\tINT24_MAX: 8388607,\n\tINT24_UNSIGNED_MAX: 16777215,\n\tINT32_MIN: -2147483648,\n\tINT32_MAX: 2147483647,\n\tINT32_UNSIGNED_MAX: 4294967295,\n\tINT48_MIN: -140737488355328,\n\tINT48_MAX: 140737488355327,\n\tINT48_UNSIGNED_MAX: 281474976710655,\n\tINT64_MIN: -9223372036854775808n,\n\tINT64_MAX: 9223372036854775807n,\n\tINT64_UNSIGNED_MAX: 18446744073709551615n,\n};\n\nexport function base64ToUint8Array(base64: string): Uint8Array {\n\tif (!base64) return new Uint8Array(0);\n\tconst binary = atob(base64);\n\tconst len = binary.length;\n\tconst bytes = new Uint8Array(len);\n\n\tfor (let i = 0; i < len; ++i) {\n\t\tbytes[i] = binary.charCodeAt(i);\n\t}\n\n\treturn bytes;\n}\n\nexport type PartialWithUndefined<T> = {\n\t[K in keyof T]?: T[K] | undefined;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","names":[],"sources":["../src/utils.ts"],"sourcesContent":["import type { Cache } from './cache/core/cache.ts';\nimport type { CodecsCollection } from './codecs.ts';\nimport type { AnyColumn } from './column.ts';\nimport { Column } from './column.ts';\nimport { is } from './entity.ts';\nimport type { Logger } from './logger.ts';\nimport type { SelectedFieldsFlat, SelectedFieldsOrdered } from './operations.ts';\nimport type { TableLike } from './query-builders/select.types.ts';\nimport type { AnyRelations, EmptyRelations } from './relations.ts';\nimport { Param, SQL, View } from './sql/sql.ts';\nimport type { DriverValueDecoder } from './sql/sql.ts';\nimport { Subquery } from './subquery.ts';\nimport { getTableName, Table } from './table.ts';\nimport { ViewBaseConfig } from './view-common.ts';\n\n/** @internal */\nexport function mapResultRow<TResult>(\n\tcolumns: SelectedFieldsOrdered<AnyColumn>,\n\trow: unknown[] | (readonly unknown[]),\n\tjoinsNotNullableMap: Record<string, boolean> | undefined,\n): TResult {\n\t// Key -> nested object key, value -> table name if all fields in the nested object are from the same table, false otherwise\n\tconst nullifyMap: Record<string, string | false> = {};\n\n\tconst result = columns.reduce<Record<string, any>>(\n\t\t(result, { path, field, codec, arrayDimensions }, columnIndex) => {\n\t\t\tlet decoder: DriverValueDecoder<unknown, unknown>;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else if (is(field, Subquery)) {\n\t\t\t\tdecoder = field._.sql.decoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t}\n\t\t\tlet node = result;\n\t\t\tfor (const [pathChunkIndex, pathChunk] of path.entries()) {\n\t\t\t\tif (pathChunkIndex < path.length - 1) {\n\t\t\t\t\tif (!(pathChunk in node)) {\n\t\t\t\t\t\tnode[pathChunk] = {};\n\t\t\t\t\t}\n\t\t\t\t\tnode = node[pathChunk];\n\t\t\t\t} else {\n\t\t\t\t\tconst rawValue = row[columnIndex]!;\n\t\t\t\t\tconst value = node[pathChunk] = rawValue === null\n\t\t\t\t\t\t? null\n\t\t\t\t\t\t: decoder.mapFromDriverValue(codec ? codec(rawValue, arrayDimensions!) : rawValue);\n\n\t\t\t\t\tif (joinsNotNullableMap && is(field, Column) && path.length === 2) {\n\t\t\t\t\t\tconst objectName = path[0]!;\n\t\t\t\t\t\tif (!(objectName in nullifyMap)) {\n\t\t\t\t\t\t\tnullifyMap[objectName] = value === null ? getTableName(field.table) : false;\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\ttypeof nullifyMap[objectName] === 'string' && nullifyMap[objectName] !== getTableName(field.table)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tnullifyMap[objectName] = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\t\t{},\n\t);\n\n\t// Nullify all nested objects from nullifyMap that are nullable\n\tif (joinsNotNullableMap && Object.keys(nullifyMap).length > 0) {\n\t\tfor (const [objectName, tableName] of Object.entries(nullifyMap)) {\n\t\t\tif (typeof tableName === 'string' && !joinsNotNullableMap[tableName]) {\n\t\t\t\tresult[objectName] = null;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result as TResult;\n}\n\n/** @internal bypass bundle-time filtering */\nexport const FnConstructor = Object.getPrototypeOf(() => null).constructor as typeof Function;\n\n/** @internal */\nfunction makeJitQueryMapperInner(\n\tcolumns: SelectedFieldsOrdered<AnyColumn>,\n\tjoinsNotNullableMap: Record<string, boolean> = {},\n): string {\n\tconst preFn = [] as string[];\n\tconst fn = [] as string[];\n\tfn.push(`const [ ${columns.map((_, i) => `c${i}`).join(', ')} ] = rows[i];`);\n\n\tconst nullifyMap: Record<string, string | false> = {};\n\tconst objectIds: Record<string, string[]> = {};\n\tconst decodes = Array.from<string>({ length: columns.length });\n\n\tfor (let idx = 0; idx < columns.length; ++idx) {\n\t\tconst { field, path, codec, arrayDimensions } = columns[idx]!;\n\t\tlet decoder: DriverValueDecoder<unknown, unknown>;\n\t\tlet decoderStr: string;\n\t\tlet decoderFieldDestructure: string;\n\t\tlet isColumn = false;\n\t\tif (is(field, Column)) {\n\t\t\tisColumn = true;\n\t\t\tdecoder = field;\n\t\t\tdecoderFieldDestructure = `field: decoder${idx}`;\n\t\t} else if (is(field, SQL)) {\n\t\t\tdecoder = field.decoder;\n\t\t\tdecoderFieldDestructure = `field: { decoder: decoder${idx} }`;\n\t\t} else if (is(field, Subquery)) {\n\t\t\tdecoder = field._.sql.decoder;\n\t\t\tdecoderFieldDestructure = `field: { _: { sql: { decoder: decoder${idx} } } }`;\n\t\t} else {\n\t\t\tdecoder = field.sql.decoder;\n\t\t\tdecoderFieldDestructure = `field: { sql: { decoder: decoder${idx} } }`;\n\t\t}\n\t\tdecoderStr = `decoder${idx}.mapFromDriverValue`;\n\t\tif (decoder.mapFromDriverValue.isNoop) decoderStr = '';\n\t\tif (decoderStr) {\n\t\t\tpreFn.push(`const { ${decoderFieldDestructure}${codec ? `, codec: codec${idx}` : ''} } = columns[${idx}];`);\n\t\t} else if (codec) {\n\t\t\tpreFn.push(`const { codec: codec${idx} } = columns[${idx}];`);\n\t\t}\n\n\t\tconst colStr = `c${idx}`;\n\t\tlet decodedValue = colStr;\n\t\tif (codec) decodedValue = `codec${idx}(${decodedValue}, ${arrayDimensions})`;\n\t\tif (decoderStr) decodedValue = `${decoderStr}(${decodedValue})`;\n\t\tdecodes[idx] = colStr === decodedValue\n\t\t\t? `${colStr}`\n\t\t\t: `${colStr} === null ? ${colStr} : ${decodedValue}`;\n\n\t\tif (path.length !== 2 || !isColumn) continue;\n\t\tif (objectIds[path[0]!] === undefined) objectIds[path[0]!] = [`c${idx}`];\n\t\telse objectIds[path[0]!]?.push(`c${idx}`);\n\t\tconst [objectName] = path as [string];\n\t\tconst tableName = getTableName((<Column> field).table);\n\t\tnullifyMap[objectName] = joinsNotNullableMap[tableName] ? false : typeof nullifyMap[objectName] === 'string'\n\t\t\t? nullifyMap[objectName] === tableName ? tableName : false\n\t\t\t: tableName;\n\t}\n\n\tfn.push(`mapped[i] = {`);\n\tlet currentObjectPath: string[] = [];\n\tfor (let idx = 0; idx < columns.length; ++idx) {\n\t\tconst { path } = columns[idx]!;\n\t\tconst jsonPath = path.map((e) => JSON.stringify(e));\n\t\tconst decodedValue = decodes[idx]!;\n\n\t\tconst objectPath = path.slice(0, -1);\n\t\tlet commonLen = 0;\n\t\twhile (\n\t\t\tcommonLen < currentObjectPath.length\n\t\t\t&& commonLen < objectPath.length\n\t\t\t&& currentObjectPath[commonLen] === objectPath[commonLen]\n\t\t) commonLen++;\n\n\t\tfor (let d = currentObjectPath.length - 1; d >= commonLen; --d) {\n\t\t\tfn.push(`${'\\t'.repeat(d + 1)}},`);\n\t\t}\n\n\t\tfor (let d = commonLen; d < objectPath.length; ++d) {\n\t\t\tfn.push(\n\t\t\t\t`${'\\t'.repeat(d + 1)}${jsonPath[d]}: ${\n\t\t\t\t\td === 0 && objectPath.length === 1 && typeof nullifyMap[path[0]!] === 'string'\n\t\t\t\t\t\t? `${objectIds[path[0]!]?.map((c) => `${c} === null`).join(' && ')} ? null : {`\n\t\t\t\t\t\t: '{'\n\t\t\t\t}`,\n\t\t\t);\n\t\t}\n\n\t\tcurrentObjectPath = objectPath;\n\t\tfn.push(`${'\\t'.repeat(path.length)}${jsonPath[path.length - 1]}: ${decodedValue},`);\n\t}\n\n\tfor (let d = currentObjectPath.length - 1; d >= 0; --d) {\n\t\tfn.push(`${'\\t'.repeat(d + 1)}},`);\n\t}\n\tfn.push(`};`);\n\n\treturn `${preFn.length ? `${preFn.join('\\n\\t')}\\n\\t` : ''}for (let i = 0; i < length; ++i) {\n\t\t${fn.join('\\n\\t\\t')}\n\t}`;\n}\n\nexport type RowsMapperGenerator = <TResult = any>(\n\tcolumns: SelectedFieldsOrdered<AnyColumn>,\n\tjoinsNotNullableMap: Record<string, boolean> | undefined,\n) => RowsMapper<TResult>;\nexport interface RowsMapper<TResult = Record<string, unknown>[]> {\n\t(rows: unknown[][]): TResult;\n\t/** @internal jit mapper's function body for debugging */\n\tbody?: string;\n}\n\nexport function makeJitQueryMapper<TResult>(\n\tcolumns: SelectedFieldsOrdered<AnyColumn>,\n\tjoinsNotNullableMap: Record<string, boolean> | undefined,\n): RowsMapper<TResult> {\n\tconst internals = `\\t\"use strict\";\n\tconst { columns } = this;\n\tconst { length } = rows;\n\tconst mapped = Array.from({ length });\n\t${makeJitQueryMapperInner(columns, joinsNotNullableMap)}\n\treturn mapped;\n\t//# sourceURL=drizzle:jit-query-mapper`;\n\n\tconst fn = Object.assign(\n\t\tnew FnConstructor(\n\t\t\t'rows',\n\t\t\tinternals,\n\t\t).bind({\n\t\t\tcolumns,\n\t\t}),\n\t\t{ body: `function jitQueryMapper (rows) {\\n${internals}\\n}` },\n\t) as RowsMapper<TResult>;\n\n\treturn fn;\n}\n\n/** @internal */\nexport function jitCompatCheck(isEnabled?: boolean): boolean {\n\tif (!isEnabled) return false;\n\n\ttry {\n\t\tconst res = new FnConstructor('input', '\"use strict\"; return input;')(true);\n\t\tif (res !== true) {\n\t\t\t// In case it's broken in runtime but not forbidden\n\t\t\tconsole.warn(\n\t\t\t\t'Unable to use jit mappers due to incompatibility: corrupted jit function output.\\nFalling back to premade mappers.\\nError details:',\n\t\t\t);\n\t\t\tconsole.error(`Expected to receive \\`true\\`, got: ${res}`);\n\t\t}\n\t\treturn true;\n\t} catch (e) {\n\t\tconsole.warn(\n\t\t\t'Unable to use jit mappers due to incompatibility.\\nFalling back to premade mappers.\\nError details:',\n\t\t);\n\t\tconsole.error(e);\n\t\treturn false;\n\t}\n}\n\nexport function makeDefaultQueryMapper<TResult>(\n\tcolumns: SelectedFieldsOrdered<AnyColumn>,\n\tjoinsNotNullableMap: Record<string, boolean> | undefined,\n): RowsMapper<TResult> {\n\tconst interpretedData = columns.map(({ field, codec, arrayDimensions, path }) => {\n\t\tlet processNullifyMap: ((nullifyMap: Record<string, string | false>, value: any) => void) | undefined;\n\t\tlet decoderSrc: DriverValueDecoder<unknown, unknown>;\n\t\tif (is(field, Column)) {\n\t\t\tdecoderSrc = field;\n\n\t\t\tif (joinsNotNullableMap && path.length === 2) {\n\t\t\t\tconst objectName = path[0]!;\n\t\t\t\tprocessNullifyMap = (nullifyMap, value) => {\n\t\t\t\t\tif (!(objectName in nullifyMap)) {\n\t\t\t\t\t\tnullifyMap[objectName] = value === null ? getTableName(field.table) : false;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\ttypeof nullifyMap[objectName] === 'string' && nullifyMap[objectName] !== getTableName(field.table)\n\t\t\t\t\t) {\n\t\t\t\t\t\tnullifyMap[objectName] = false;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t} else if (is(field, SQL)) {\n\t\t\tdecoderSrc = field.decoder;\n\t\t} else if (is(field, Subquery)) {\n\t\t\tdecoderSrc = field._.sql.decoder;\n\t\t} else {\n\t\t\tdecoderSrc = field.sql.decoder;\n\t\t}\n\n\t\tlet decoder: ((v: any) => any) | undefined;\n\t\tif (decoderSrc.mapFromDriverValue.isNoop) {\n\t\t\tdecoder = codec ? (v: any) => codec(v, arrayDimensions!) : undefined;\n\t\t} else {\n\t\t\tdecoder = codec\n\t\t\t\t? (v: any) => decoderSrc.mapFromDriverValue(codec(v, arrayDimensions!))\n\t\t\t\t: (v: any) => decoderSrc.mapFromDriverValue(v);\n\t\t}\n\n\t\treturn [decoder, processNullifyMap] as const;\n\t});\n\n\treturn ((rows) =>\n\t\trows.map((row) => {\n\t\t\t// Key -> nested object key, value -> table name if all fields in the nested object are from the same table, false otherwise\n\t\t\tconst nullifyMap: Record<string, string | false> = {};\n\n\t\t\tconst result = columns.reduce<Record<string, any>>(\n\t\t\t\t(result, { path }, columnIndex) => {\n\t\t\t\t\tlet node = result;\n\t\t\t\t\tfor (const [pathChunkIndex, pathChunk] of path.entries()) {\n\t\t\t\t\t\tif (pathChunkIndex < path.length - 1) {\n\t\t\t\t\t\t\tif (!(pathChunk in node)) {\n\t\t\t\t\t\t\t\tnode[pathChunk] = {};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnode = node[pathChunk];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst [decoder, processNullifyMap] = interpretedData[columnIndex]!;\n\n\t\t\t\t\t\t\tconst rawValue = row[columnIndex]!;\n\t\t\t\t\t\t\tconst value = node[pathChunk] = rawValue === null\n\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t: decoder\n\t\t\t\t\t\t\t\t? decoder(rawValue)\n\t\t\t\t\t\t\t\t: rawValue;\n\n\t\t\t\t\t\t\tprocessNullifyMap?.(nullifyMap, value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t);\n\n\t\t\t// Nullify all nested objects from nullifyMap that are nullable\n\t\t\tif (joinsNotNullableMap && Object.keys(nullifyMap).length > 0) {\n\t\t\t\tfor (const [objectName, tableName] of Object.entries(nullifyMap)) {\n\t\t\t\t\tif (typeof tableName === 'string' && !joinsNotNullableMap[tableName]) {\n\t\t\t\t\t\tresult[objectName] = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result as TResult;\n\t\t})) as RowsMapper<TResult>;\n}\n/** @internal */\nexport function orderSelectedFields<TColumn extends AnyColumn>(\n\tfields: Record<string, unknown>,\n\tpathPrefix?: string[],\n\tcodecs?: CodecsCollection,\n): SelectedFieldsOrdered<TColumn> {\n\treturn Object.entries(fields).reduce<SelectedFieldsOrdered<AnyColumn>>((result, [name, field]) => {\n\t\tif (typeof name !== 'string') {\n\t\t\treturn result;\n\t\t}\n\n\t\tconst newPath = pathPrefix ? [...pathPrefix, name] : [name];\n\t\tif (is(field, Column)) {\n\t\t\tresult.push({\n\t\t\t\tpath: newPath,\n\t\t\t\tfield,\n\t\t\t\tcodec: codecs?.get(field, 'normalize'),\n\t\t\t\tarrayDimensions: (<any> field).dimensions,\n\t\t\t});\n\t\t} else if (is(field, Column) || is(field, SQL) || is(field, SQL.Aliased) || is(field, Subquery)) {\n\t\t\tresult.push({ path: newPath, field });\n\t\t} else if (is(field, Table)) {\n\t\t\tresult.push(...orderSelectedFields(field[Table.Symbol.Columns], newPath, codecs));\n\t\t} else {\n\t\t\tresult.push(...orderSelectedFields(field as Record<string, unknown>, newPath, codecs));\n\t\t}\n\t\treturn result;\n\t}, []) as SelectedFieldsOrdered<TColumn>;\n}\n\nexport function haveSameKeys(left: Record<string, unknown>, right: Record<string, unknown>) {\n\tconst leftKeys = Object.keys(left);\n\tconst rightKeys = Object.keys(right);\n\n\tif (leftKeys.length !== rightKeys.length) {\n\t\treturn false;\n\t}\n\n\tfor (const [index, key] of leftKeys.entries()) {\n\t\tif (key !== rightKeys[index]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/** @internal */\nexport function mapUpdateSet(table: Table, values: Record<string, unknown>): UpdateSet {\n\tconst entries: [string, UpdateSet[string]][] = Object.entries(values)\n\t\t.filter(([, value]) => value !== undefined)\n\t\t.map(([key, value]) => {\n\t\t\t// eslint-disable-next-line unicorn/prefer-ternary\n\t\t\tif (is(value, SQL) || is(value, Column)) {\n\t\t\t\treturn [key, value];\n\t\t\t} else {\n\t\t\t\treturn [key, new Param(value, table[Table.Symbol.Columns][key])];\n\t\t\t}\n\t\t});\n\n\tif (entries.length === 0) {\n\t\tthrow new Error('No values to set');\n\t}\n\n\treturn Object.fromEntries(entries);\n}\n\nexport type UpdateSet = Record<string, SQL | Param | AnyColumn | null | undefined>;\n\nexport type OneOrMany<T> = T | T[];\n\nexport type Update<T, TUpdate> =\n\t& {\n\t\t[K in Exclude<keyof T, keyof TUpdate>]: T[K];\n\t}\n\t& TUpdate;\n\nexport type Simplify<T> =\n\t& {\n\t\t// @ts-ignore - \"Type parameter 'K' has a circular constraint\", not sure why\n\t\t[K in keyof T]: T[K];\n\t}\n\t& {};\n\nexport type Not<T extends boolean> = T extends true ? false : true;\n\nexport type IsNever<T> = [T] extends [never] ? true : false;\n\nexport type IsUnion<T, U extends T = T> = (T extends any ? (U extends T ? false : true) : never) extends false ? false\n\t: true;\n\nexport type SingleKeyObject<T, TError extends string, K = keyof T> = IsNever<K> extends true ? never\n\t: IsUnion<K> extends true ? DrizzleTypeError<TError>\n\t: T;\n\nexport type FromSingleKeyObject<T, Result, TError extends string, K = keyof T> = IsNever<K> extends true ? never\n\t: IsUnion<K> extends true ? DrizzleTypeError<TError>\n\t: Result;\n\nexport type SimplifyMappedType<T> = [T] extends [unknown] ? T : never;\n\nexport type ShallowRecord<K extends keyof any, T> = SimplifyMappedType<{ [P in K]: T }>;\n\nexport type Assume<T, U> = T extends U ? T : U;\n\nexport type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2) ? true : false;\n\nexport interface DrizzleTypeError<T extends string> {\n\t$drizzleTypeError: T;\n}\n\nexport type ValueOrArray<T> = T | T[];\n\n/** @internal */\nexport function applyMixins(baseClass: any, extendedClasses: any[]) {\n\tfor (const extendedClass of extendedClasses) {\n\t\tfor (const name of Object.getOwnPropertyNames(extendedClass.prototype)) {\n\t\t\tif (name === 'constructor') continue;\n\n\t\t\tObject.defineProperty(\n\t\t\t\tbaseClass.prototype,\n\t\t\t\tname,\n\t\t\t\tObject.getOwnPropertyDescriptor(extendedClass.prototype, name) || Object.create(null),\n\t\t\t);\n\t\t}\n\t}\n}\n\nexport type Or<T1, T2> = T1 extends true ? true : T2 extends true ? true : false;\n\nexport type IfThenElse<If, Then, Else> = If extends true ? Then : Else;\n\nexport type PromiseOf<T> = T extends Promise<infer U> ? U : T;\n\nexport type Writable<T> = {\n\t-readonly [P in keyof T]: T[P];\n};\n\nexport type NonArray<T> = T extends any[] ? never : T;\n\n/**\n * @deprecated\n * Use `getColumns` instead\n */\nexport function getTableColumns<T extends Table>(table: T): T['_']['columns'] {\n\treturn table[Table.Symbol.Columns];\n}\n\nexport function getViewSelectedFields<T extends View>(view: T): T['_']['selectedFields'] {\n\treturn view[ViewBaseConfig].selectedFields;\n}\n\nexport function getColumns<T extends Table | View | Subquery>(\n\ttable: T,\n): T extends Table ? T['_']['columns']\n\t: T extends View ? T['_']['selectedFields']\n\t: T extends Subquery ? T['_']['selectedFields']\n\t: never\n{\n\treturn (is(table, Table)\n\t\t? table[Table.Symbol.Columns]\n\t\t: is(table, View)\n\t\t? table[ViewBaseConfig].selectedFields\n\t\t: table._.selectedFields) as any;\n}\n\n/** @internal */\nexport function getTableLikeName(table: TableLike): string | undefined {\n\treturn is(table, Subquery)\n\t\t? table._.alias\n\t\t: is(table, View)\n\t\t? table[ViewBaseConfig].name\n\t\t: is(table, SQL)\n\t\t? undefined\n\t\t: table[Table.Symbol.IsAlias]\n\t\t? table[Table.Symbol.Name]\n\t\t: table[Table.Symbol.BaseName];\n}\n\nexport type ColumnsWithTable<\n\tTTableName extends string,\n\tTForeignTableName extends string,\n\tTColumns extends AnyColumn<{ tableName: TTableName }>[],\n> = { [Key in keyof TColumns]: AnyColumn<{ tableName: TForeignTableName }> };\n\nexport interface DrizzleConfig<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelationConfigs extends AnyRelations = EmptyRelations,\n> {\n\tlogger?: boolean | Logger | undefined;\n\tschema?: TSchema | undefined;\n\trelations?: TRelationConfigs | undefined;\n\tcache?: Cache | undefined;\n\tjit?: boolean | undefined;\n}\nexport type ValidateShape<T, ValidShape, TResult = T> = T extends ValidShape\n\t? Exclude<keyof T, keyof ValidShape> extends never ? TResult\n\t: DrizzleTypeError<\n\t\t`Invalid key(s): ${Exclude<(keyof T) & (string | number | bigint | boolean | null | undefined), keyof ValidShape>}`\n\t>\n\t: never;\n\nexport type KnownKeysOnly<T, U> = {\n\t[K in keyof T]: K extends keyof U ? T[K] : never;\n};\n\nexport type IsAny<T> = 0 extends (1 & T) ? true : false;\n\n/** @internal */\nexport function getColumnNameAndConfig<\n\tTConfig extends Record<string, any> | undefined,\n>(a: string | TConfig | undefined, b: TConfig | undefined) {\n\treturn {\n\t\tname: typeof a === 'string' && a.length > 0 ? a : '' as string,\n\t\tconfig: typeof a === 'object' ? a : b as TConfig,\n\t};\n}\n\nexport type IfNotImported<T, Y, N> = unknown extends T ? Y : N;\n\nexport type ImportTypeError<TPackageName extends string> =\n\t`Please install \\`${TPackageName}\\` to allow Drizzle ORM to connect to the database`;\n\nexport type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Keys extends any\n\t? Required<Pick<T, Keys>> & Partial<Omit<T, Keys>>\n\t: never;\n\ntype ExpectedConfigShape = {\n\tlogger?: boolean | {\n\t\tlogQuery(query: string, params: unknown[]): void;\n\t} | undefined;\n\tschema?: Record<string, never> | undefined;\n\trelations?: AnyRelations | undefined;\n};\n\n// If this errors, you must update config shape checker function with new config specs\nconst _: DrizzleConfig<any, any> = {} as ExpectedConfigShape;\nconst __: ExpectedConfigShape = {} as DrizzleConfig;\n\nexport function isConfig(data: any): boolean {\n\tif (typeof data !== 'object' || data === null) return false;\n\n\tif (data.constructor.name !== 'Object') return false;\n\n\tif ('logger' in data) {\n\t\tconst type = typeof data['logger'];\n\t\tif (\n\t\t\ttype !== 'boolean' && (type !== 'object' || typeof data['logger']['logQuery'] !== 'function')\n\t\t\t&& type !== 'undefined'\n\t\t) return false;\n\n\t\treturn true;\n\t}\n\n\tif ('schema' in data) {\n\t\tconst type = typeof data['schema'];\n\t\tif (type !== 'object' && type !== 'undefined') return false;\n\n\t\treturn true;\n\t}\n\n\tif ('relations' in data) {\n\t\tconst type = typeof data['relations'];\n\t\tif (type !== 'object' && type !== 'undefined') return false;\n\n\t\treturn true;\n\t}\n\n\tif ('mode' in data) {\n\t\tif (data['mode'] !== 'default' && data['mode'] !== 'planetscale' && data['mode'] !== undefined) return false;\n\n\t\treturn true;\n\t}\n\n\tif ('connection' in data) {\n\t\tconst type = typeof data['connection'];\n\t\tif (type !== 'string' && type !== 'object' && type !== 'undefined') return false;\n\n\t\treturn true;\n\t}\n\n\tif ('client' in data) {\n\t\tconst type = typeof data['client'];\n\t\tif (type !== 'object' && type !== 'function' && type !== 'undefined') return false;\n\n\t\treturn true;\n\t}\n\n\tif ('jit' in data) {\n\t\tconst type = typeof data['jit'];\n\t\tif (type !== 'boolean' && type !== 'undefined') return false;\n\n\t\treturn true;\n\t}\n\n\tif ('codecs' in data) {\n\t\tconst type = typeof data['connection'];\n\t\tif (type !== 'object' && type !== 'undefined') return false;\n\n\t\treturn true;\n\t}\n\n\tif (Object.keys(data).length === 0) return true;\n\n\treturn false;\n}\n\nexport type NeonAuthToken = string | (() => string | Promise<string>);\n\nexport const textDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder();\n\nexport function assertUnreachable(_x: never | undefined): never {\n\tthrow new Error(\"Didn't expect to get here\");\n}\n\nexport function isWithEnum(column: Column<any>): column is typeof column & { enumValues: [string, ...string[]] };\nexport function isWithEnum(value: unknown): value is { enumValues: [string, ...string[]] };\nexport function isWithEnum(value: unknown): boolean {\n\treturn ((typeof value === 'object' && value !== null) || typeof value === 'function') && 'enumValues' in value\n\t\t&& Array.isArray(value.enumValues)\n\t\t&& value.enumValues.length > 0;\n}\n\nexport type Literal = string | number | boolean | null;\nexport type Json = Literal | { [key: string]: any } | any[];\n\nexport type ColumnIsGeneratedAlwaysAs<TColumn> = TColumn extends Column<any>\n\t? TColumn['_']['identity'] extends 'always' ? true\n\t: TColumn['_'] extends { generated: undefined } ? false\n\t: TColumn['_']['generated'] extends { type: 'byDefault' } ? false\n\t: true\n\t: false;\n\nexport type GetSelection<T extends SelectedFieldsFlat<Column<any>> | Table<any> | View> = T extends Table<any>\n\t? T['_']['columns']\n\t: T extends View ? T['_']['selectedFields']\n\t: T;\n\nexport type RemoveNeverElements<T extends any[]> = T extends [infer First, ...infer Rest]\n\t? IsNever<First> extends true ? RemoveNeverElements<Rest>\n\t: [First, ...RemoveNeverElements<Rest>]\n\t: [];\n\nexport type HasBaseColumn<TColumn> = TColumn extends { _: { baseColumn: Column | undefined } }\n\t? IsNever<TColumn['_']['baseColumn']> extends false ? true\n\t: false\n\t: false;\n\nexport type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = { [K in TEnumValues[number]]: K };\n\nexport type EnumValuesToReadonlyEnum<TEnumValues extends [string, ...string[]]> = {\n\treadonly [K in TEnumValues[number]]: K;\n};\n\nexport const CONSTANTS = {\n\tINT8_MIN: -128,\n\tINT8_MAX: 127,\n\tINT8_UNSIGNED_MAX: 255,\n\tINT16_MIN: -32768,\n\tINT16_MAX: 32767,\n\tINT16_UNSIGNED_MAX: 65535,\n\tINT24_MIN: -8388608,\n\tINT24_MAX: 8388607,\n\tINT24_UNSIGNED_MAX: 16777215,\n\tINT32_MIN: -2147483648,\n\tINT32_MAX: 2147483647,\n\tINT32_UNSIGNED_MAX: 4294967295,\n\tINT48_MIN: -140737488355328,\n\tINT48_MAX: 140737488355327,\n\tINT48_UNSIGNED_MAX: 281474976710655,\n\tINT64_MIN: -9223372036854775808n,\n\tINT64_MAX: 9223372036854775807n,\n\tINT64_UNSIGNED_MAX: 18446744073709551615n,\n};\n\nexport function base64ToUint8Array(base64: string): Uint8Array {\n\tif (!base64) return new Uint8Array(0);\n\tconst binary = atob(base64);\n\tconst len = binary.length;\n\tconst bytes = new Uint8Array(len);\n\n\tfor (let i = 0; i < len; ++i) {\n\t\tbytes[i] = binary.charCodeAt(i);\n\t}\n\n\treturn bytes;\n}\n\nexport type PartialWithUndefined<T> = {\n\t[K in keyof T]?: T[K] | undefined;\n};\n"],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ var VercelPgDatabase = class extends __pg_core_async_db_ts.PgAsyncDatabase {
|
|
|
15
15
|
};
|
|
16
16
|
function construct(client, config = {}) {
|
|
17
17
|
const dialect = new __pg_core_dialect_ts.PgDialect({
|
|
18
|
-
useJitMappers: (0, __utils_ts.jitCompatCheck)(config.
|
|
18
|
+
useJitMappers: (0, __utils_ts.jitCompatCheck)(config.jit),
|
|
19
19
|
codecs: config.codecs ?? require_vercel_postgres_codecs.vercelPgCodecs
|
|
20
20
|
});
|
|
21
21
|
let logger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.cjs","names":["PgAsyncDatabase","entityKind","PgDialect","vercelPgCodecs","DefaultLogger","VercelPgSession","sql"],"sources":["../../src/vercel-postgres/driver.ts"],"sourcesContent":["import { sql } from '@vercel/postgres';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgAsyncDatabase } from '~/pg-core/async/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { DrizzlePgConfig } from '~/pg-core/utils.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { isConfig, jitCompatCheck } from '~/utils.ts';\nimport { vercelPgCodecs } from './codecs.ts';\nimport { type VercelPgClient, type VercelPgQueryResultHKT, VercelPgSession } from './session.ts';\n\nexport class VercelPgDatabase<TRelations extends AnyRelations = EmptyRelations>\n\textends PgAsyncDatabase<VercelPgQueryResultHKT, TRelations>\n{\n\tstatic override readonly [entityKind]: string = 'VercelPgDatabase';\n}\n\nfunction construct<TRelations extends AnyRelations = EmptyRelations>(\n\tclient: VercelPgClient,\n\tconfig: DrizzlePgConfig<TRelations> = {},\n): VercelPgDatabase<TRelations> & {\n\t$client: VercelPgClient;\n} {\n\tconst dialect = new PgDialect({\n\t\tuseJitMappers: jitCompatCheck(config.
|
|
1
|
+
{"version":3,"file":"driver.cjs","names":["PgAsyncDatabase","entityKind","PgDialect","vercelPgCodecs","DefaultLogger","VercelPgSession","sql"],"sources":["../../src/vercel-postgres/driver.ts"],"sourcesContent":["import { sql } from '@vercel/postgres';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgAsyncDatabase } from '~/pg-core/async/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { DrizzlePgConfig } from '~/pg-core/utils.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { isConfig, jitCompatCheck } from '~/utils.ts';\nimport { vercelPgCodecs } from './codecs.ts';\nimport { type VercelPgClient, type VercelPgQueryResultHKT, VercelPgSession } from './session.ts';\n\nexport class VercelPgDatabase<TRelations extends AnyRelations = EmptyRelations>\n\textends PgAsyncDatabase<VercelPgQueryResultHKT, TRelations>\n{\n\tstatic override readonly [entityKind]: string = 'VercelPgDatabase';\n}\n\nfunction construct<TRelations extends AnyRelations = EmptyRelations>(\n\tclient: VercelPgClient,\n\tconfig: DrizzlePgConfig<TRelations> = {},\n): VercelPgDatabase<TRelations> & {\n\t$client: VercelPgClient;\n} {\n\tconst dialect = new PgDialect({\n\t\tuseJitMappers: jitCompatCheck(config.jit),\n\t\tcodecs: config.codecs ?? vercelPgCodecs,\n\t});\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new VercelPgSession(client, dialect, relations ?? {} as EmptyRelations, {\n\t\tlogger,\n\t\tcache: config.cache,\n\t});\n\tconst db = new VercelPgDatabase(\n\t\tdialect,\n\t\tsession,\n\t\trelations,\n\t) as VercelPgDatabase<TRelations>;\n\t(<any> db).$client = client;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends VercelPgClient = typeof sql,\n>(\n\t...params: [] | [\n\t\tTClient,\n\t] | [\n\t\tTClient,\n\t\tDrizzlePgConfig<TRelations>,\n\t] | [\n\t\t(\n\t\t\t& DrizzlePgConfig<TRelations>\n\t\t\t& ({\n\t\t\t\tclient?: TClient;\n\t\t\t})\n\t\t),\n\t]\n): VercelPgDatabase<TRelations> & {\n\t$client: VercelPgClient extends TClient ? typeof sql : TClient;\n} {\n\tif (isConfig(params[0])) {\n\t\tconst { client, ...DrizzlePgConfig } = params[0] as ({ client?: TClient } & DrizzlePgConfig<TRelations>);\n\t\treturn construct(client ?? sql, DrizzlePgConfig) as any;\n\t}\n\n\treturn construct(\n\t\t(params[0] ?? sql) as TClient,\n\t\tparams[1] as DrizzlePgConfig<TRelations> | undefined,\n\t) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig?: DrizzlePgConfig<TRelations>,\n\t): VercelPgDatabase<TRelations> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;AAWA,IAAa,mBAAb,cACSA,sCACT;CACC,QAA0BC,0BAAsB;;AAGjD,SAAS,UACR,QACA,SAAsC,EAAE,EAGvC;CACD,MAAM,UAAU,IAAIC,+BAAU;EAC7B,8CAA8B,OAAO,IAAI;EACzC,QAAQ,OAAO,UAAUC;EACzB,CAAC;CACF,IAAI;AACJ,KAAI,OAAO,WAAW,KACrB,UAAS,IAAIC,2BAAe;UAClB,OAAO,WAAW,MAC5B,UAAS,OAAO;CAGjB,MAAM,YAAY,OAAO,aAAa,EAAE;CAKxC,MAAM,KAAK,IAAI,iBACd,SALe,IAAIC,gDAAgB,QAAQ,SAAS,aAAa,EAAE,EAAoB;EACvF;EACA,OAAO,OAAO;EACd,CAAC,EAID,UACA;AACD,CAAO,GAAI,UAAU;AACrB,CAAO,GAAI,SAAS,OAAO;AAC3B,KAAW,GAAI,OACd,CAAO,GAAI,OAAO,gBAAgB,OAAO,OAAO;AAGjD,QAAO;;AAGR,SAAgB,QAIf,GAAG,QAeF;AACD,8BAAa,OAAO,GAAG,EAAE;EACxB,MAAM,EAAE,QAAQ,GAAG,oBAAoB,OAAO;AAC9C,SAAO,UAAU,UAAUC,sBAAK,gBAAgB;;AAGjD,QAAO,UACL,OAAO,MAAMA,sBACd,OAAO,GACP;;;CAIM,SAAS,KAGf,QAGC;AACD,SAAO,UAAU,EAAE,EAAS,OAAO"}
|
|
@@ -13,7 +13,7 @@ var VercelPgDatabase = class extends PgAsyncDatabase {
|
|
|
13
13
|
};
|
|
14
14
|
function construct(client, config = {}) {
|
|
15
15
|
const dialect = new PgDialect({
|
|
16
|
-
useJitMappers: jitCompatCheck(config.
|
|
16
|
+
useJitMappers: jitCompatCheck(config.jit),
|
|
17
17
|
codecs: config.codecs ?? vercelPgCodecs
|
|
18
18
|
});
|
|
19
19
|
let logger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.js","names":[],"sources":["../../src/vercel-postgres/driver.ts"],"sourcesContent":["import { sql } from '@vercel/postgres';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgAsyncDatabase } from '~/pg-core/async/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { DrizzlePgConfig } from '~/pg-core/utils.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { isConfig, jitCompatCheck } from '~/utils.ts';\nimport { vercelPgCodecs } from './codecs.ts';\nimport { type VercelPgClient, type VercelPgQueryResultHKT, VercelPgSession } from './session.ts';\n\nexport class VercelPgDatabase<TRelations extends AnyRelations = EmptyRelations>\n\textends PgAsyncDatabase<VercelPgQueryResultHKT, TRelations>\n{\n\tstatic override readonly [entityKind]: string = 'VercelPgDatabase';\n}\n\nfunction construct<TRelations extends AnyRelations = EmptyRelations>(\n\tclient: VercelPgClient,\n\tconfig: DrizzlePgConfig<TRelations> = {},\n): VercelPgDatabase<TRelations> & {\n\t$client: VercelPgClient;\n} {\n\tconst dialect = new PgDialect({\n\t\tuseJitMappers: jitCompatCheck(config.
|
|
1
|
+
{"version":3,"file":"driver.js","names":[],"sources":["../../src/vercel-postgres/driver.ts"],"sourcesContent":["import { sql } from '@vercel/postgres';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgAsyncDatabase } from '~/pg-core/async/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { DrizzlePgConfig } from '~/pg-core/utils.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { isConfig, jitCompatCheck } from '~/utils.ts';\nimport { vercelPgCodecs } from './codecs.ts';\nimport { type VercelPgClient, type VercelPgQueryResultHKT, VercelPgSession } from './session.ts';\n\nexport class VercelPgDatabase<TRelations extends AnyRelations = EmptyRelations>\n\textends PgAsyncDatabase<VercelPgQueryResultHKT, TRelations>\n{\n\tstatic override readonly [entityKind]: string = 'VercelPgDatabase';\n}\n\nfunction construct<TRelations extends AnyRelations = EmptyRelations>(\n\tclient: VercelPgClient,\n\tconfig: DrizzlePgConfig<TRelations> = {},\n): VercelPgDatabase<TRelations> & {\n\t$client: VercelPgClient;\n} {\n\tconst dialect = new PgDialect({\n\t\tuseJitMappers: jitCompatCheck(config.jit),\n\t\tcodecs: config.codecs ?? vercelPgCodecs,\n\t});\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new VercelPgSession(client, dialect, relations ?? {} as EmptyRelations, {\n\t\tlogger,\n\t\tcache: config.cache,\n\t});\n\tconst db = new VercelPgDatabase(\n\t\tdialect,\n\t\tsession,\n\t\trelations,\n\t) as VercelPgDatabase<TRelations>;\n\t(<any> db).$client = client;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends VercelPgClient = typeof sql,\n>(\n\t...params: [] | [\n\t\tTClient,\n\t] | [\n\t\tTClient,\n\t\tDrizzlePgConfig<TRelations>,\n\t] | [\n\t\t(\n\t\t\t& DrizzlePgConfig<TRelations>\n\t\t\t& ({\n\t\t\t\tclient?: TClient;\n\t\t\t})\n\t\t),\n\t]\n): VercelPgDatabase<TRelations> & {\n\t$client: VercelPgClient extends TClient ? typeof sql : TClient;\n} {\n\tif (isConfig(params[0])) {\n\t\tconst { client, ...DrizzlePgConfig } = params[0] as ({ client?: TClient } & DrizzlePgConfig<TRelations>);\n\t\treturn construct(client ?? sql, DrizzlePgConfig) as any;\n\t}\n\n\treturn construct(\n\t\t(params[0] ?? sql) as TClient,\n\t\tparams[1] as DrizzlePgConfig<TRelations> | undefined,\n\t) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig?: DrizzlePgConfig<TRelations>,\n\t): VercelPgDatabase<TRelations> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":";;;;;;;;;;AAWA,IAAa,mBAAb,cACS,gBACT;CACC,QAA0B,cAAsB;;AAGjD,SAAS,UACR,QACA,SAAsC,EAAE,EAGvC;CACD,MAAM,UAAU,IAAI,UAAU;EAC7B,eAAe,eAAe,OAAO,IAAI;EACzC,QAAQ,OAAO,UAAU;EACzB,CAAC;CACF,IAAI;AACJ,KAAI,OAAO,WAAW,KACrB,UAAS,IAAI,eAAe;UAClB,OAAO,WAAW,MAC5B,UAAS,OAAO;CAGjB,MAAM,YAAY,OAAO,aAAa,EAAE;CAKxC,MAAM,KAAK,IAAI,iBACd,SALe,IAAI,gBAAgB,QAAQ,SAAS,aAAa,EAAE,EAAoB;EACvF;EACA,OAAO,OAAO;EACd,CAAC,EAID,UACA;AACD,CAAO,GAAI,UAAU;AACrB,CAAO,GAAI,SAAS,OAAO;AAC3B,KAAW,GAAI,OACd,CAAO,GAAI,OAAO,gBAAgB,OAAO,OAAO;AAGjD,QAAO;;AAGR,SAAgB,QAIf,GAAG,QAeF;AACD,KAAI,SAAS,OAAO,GAAG,EAAE;EACxB,MAAM,EAAE,QAAQ,GAAG,oBAAoB,OAAO;AAC9C,SAAO,UAAU,UAAU,KAAK,gBAAgB;;AAGjD,QAAO,UACL,OAAO,MAAM,KACd,OAAO,GACP;;;CAIM,SAAS,KAGf,QAGC;AACD,SAAO,UAAU,EAAE,EAAS,OAAO"}
|
package/xata-http/driver.cjs
CHANGED
|
@@ -14,7 +14,7 @@ var XataHttpDatabase = class extends __pg_core_async_db_ts.PgAsyncDatabase {
|
|
|
14
14
|
};
|
|
15
15
|
function drizzle(client, config = {}) {
|
|
16
16
|
const dialect = new __pg_core_dialect_ts.PgDialect({
|
|
17
|
-
useJitMappers: (0, __utils_ts.jitCompatCheck)(config.
|
|
17
|
+
useJitMappers: (0, __utils_ts.jitCompatCheck)(config.jit),
|
|
18
18
|
codecs: config.codecs ?? require_xata_http_codecs.xataHttpCodecs
|
|
19
19
|
});
|
|
20
20
|
let logger;
|
package/xata-http/driver.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.cjs","names":["PgAsyncDatabase","entityKind","PgDialect","xataHttpCodecs","DefaultLogger","XataHttpSession"],"sources":["../../src/xata-http/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgAsyncDatabase } from '~/pg-core/async/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { DrizzlePgConfig } from '~/pg-core/utils.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { jitCompatCheck } from '~/utils.ts';\nimport { xataHttpCodecs } from './codecs.ts';\nimport type { XataHttpClient, XataHttpQueryResultHKT } from './session.ts';\nimport { XataHttpSession } from './session.ts';\n\nexport class XataHttpDatabase<TRelations extends AnyRelations = EmptyRelations>\n\textends PgAsyncDatabase<XataHttpQueryResultHKT, TRelations>\n{\n\tstatic override readonly [entityKind]: string = 'XataHttpDatabase';\n\n\t/** @internal */\n\tdeclare readonly session: XataHttpSession<TRelations>;\n}\n\nexport function drizzle<TRelations extends AnyRelations = EmptyRelations>(\n\tclient: XataHttpClient,\n\tconfig: DrizzlePgConfig<TRelations> = {},\n): XataHttpDatabase<TRelations> & {\n\t$client: XataHttpClient;\n} {\n\tconst dialect = new PgDialect({\n\t\tuseJitMappers: jitCompatCheck(config.
|
|
1
|
+
{"version":3,"file":"driver.cjs","names":["PgAsyncDatabase","entityKind","PgDialect","xataHttpCodecs","DefaultLogger","XataHttpSession"],"sources":["../../src/xata-http/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgAsyncDatabase } from '~/pg-core/async/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { DrizzlePgConfig } from '~/pg-core/utils.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { jitCompatCheck } from '~/utils.ts';\nimport { xataHttpCodecs } from './codecs.ts';\nimport type { XataHttpClient, XataHttpQueryResultHKT } from './session.ts';\nimport { XataHttpSession } from './session.ts';\n\nexport class XataHttpDatabase<TRelations extends AnyRelations = EmptyRelations>\n\textends PgAsyncDatabase<XataHttpQueryResultHKT, TRelations>\n{\n\tstatic override readonly [entityKind]: string = 'XataHttpDatabase';\n\n\t/** @internal */\n\tdeclare readonly session: XataHttpSession<TRelations>;\n}\n\nexport function drizzle<TRelations extends AnyRelations = EmptyRelations>(\n\tclient: XataHttpClient,\n\tconfig: DrizzlePgConfig<TRelations> = {},\n): XataHttpDatabase<TRelations> & {\n\t$client: XataHttpClient;\n} {\n\tconst dialect = new PgDialect({\n\t\tuseJitMappers: jitCompatCheck(config.jit),\n\t\tcodecs: config.codecs ?? xataHttpCodecs,\n\t});\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new XataHttpSession(client, dialect, relations ?? {} as EmptyRelations, {\n\t\tlogger,\n\t\tcache: config.cache,\n\t});\n\n\tconst db = new XataHttpDatabase(\n\t\tdialect,\n\t\tsession,\n\t\trelations,\n\t);\n\t(<any> db).$client = client;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\n\treturn db as any;\n}\n"],"mappings":";;;;;;;;;;;AAWA,IAAa,mBAAb,cACSA,sCACT;CACC,QAA0BC,0BAAsB;;AAMjD,SAAgB,QACf,QACA,SAAsC,EAAE,EAGvC;CACD,MAAM,UAAU,IAAIC,+BAAU;EAC7B,8CAA8B,OAAO,IAAI;EACzC,QAAQ,OAAO,UAAUC;EACzB,CAAC;CACF,IAAI;AACJ,KAAI,OAAO,WAAW,KACrB,UAAS,IAAIC,2BAAe;UAClB,OAAO,WAAW,MAC5B,UAAS,OAAO;CAGjB,MAAM,YAAY,OAAO,aAAa,EAAE;CAMxC,MAAM,KAAK,IAAI,iBACd,SANe,IAAIC,0CAAgB,QAAQ,SAAS,aAAa,EAAE,EAAoB;EACvF;EACA,OAAO,OAAO;EACd,CAAC,EAKD,UACA;AACD,CAAO,GAAI,UAAU;AACrB,CAAO,GAAI,SAAS,OAAO;AAC3B,KAAW,GAAI,OACd,CAAO,GAAI,OAAO,gBAAgB,OAAO,OAAO;AAGjD,QAAO"}
|
package/xata-http/driver.js
CHANGED
|
@@ -12,7 +12,7 @@ var XataHttpDatabase = class extends PgAsyncDatabase {
|
|
|
12
12
|
};
|
|
13
13
|
function drizzle(client, config = {}) {
|
|
14
14
|
const dialect = new PgDialect({
|
|
15
|
-
useJitMappers: jitCompatCheck(config.
|
|
15
|
+
useJitMappers: jitCompatCheck(config.jit),
|
|
16
16
|
codecs: config.codecs ?? xataHttpCodecs
|
|
17
17
|
});
|
|
18
18
|
let logger;
|
package/xata-http/driver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.js","names":[],"sources":["../../src/xata-http/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgAsyncDatabase } from '~/pg-core/async/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { DrizzlePgConfig } from '~/pg-core/utils.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { jitCompatCheck } from '~/utils.ts';\nimport { xataHttpCodecs } from './codecs.ts';\nimport type { XataHttpClient, XataHttpQueryResultHKT } from './session.ts';\nimport { XataHttpSession } from './session.ts';\n\nexport class XataHttpDatabase<TRelations extends AnyRelations = EmptyRelations>\n\textends PgAsyncDatabase<XataHttpQueryResultHKT, TRelations>\n{\n\tstatic override readonly [entityKind]: string = 'XataHttpDatabase';\n\n\t/** @internal */\n\tdeclare readonly session: XataHttpSession<TRelations>;\n}\n\nexport function drizzle<TRelations extends AnyRelations = EmptyRelations>(\n\tclient: XataHttpClient,\n\tconfig: DrizzlePgConfig<TRelations> = {},\n): XataHttpDatabase<TRelations> & {\n\t$client: XataHttpClient;\n} {\n\tconst dialect = new PgDialect({\n\t\tuseJitMappers: jitCompatCheck(config.
|
|
1
|
+
{"version":3,"file":"driver.js","names":[],"sources":["../../src/xata-http/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgAsyncDatabase } from '~/pg-core/async/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { DrizzlePgConfig } from '~/pg-core/utils.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { jitCompatCheck } from '~/utils.ts';\nimport { xataHttpCodecs } from './codecs.ts';\nimport type { XataHttpClient, XataHttpQueryResultHKT } from './session.ts';\nimport { XataHttpSession } from './session.ts';\n\nexport class XataHttpDatabase<TRelations extends AnyRelations = EmptyRelations>\n\textends PgAsyncDatabase<XataHttpQueryResultHKT, TRelations>\n{\n\tstatic override readonly [entityKind]: string = 'XataHttpDatabase';\n\n\t/** @internal */\n\tdeclare readonly session: XataHttpSession<TRelations>;\n}\n\nexport function drizzle<TRelations extends AnyRelations = EmptyRelations>(\n\tclient: XataHttpClient,\n\tconfig: DrizzlePgConfig<TRelations> = {},\n): XataHttpDatabase<TRelations> & {\n\t$client: XataHttpClient;\n} {\n\tconst dialect = new PgDialect({\n\t\tuseJitMappers: jitCompatCheck(config.jit),\n\t\tcodecs: config.codecs ?? xataHttpCodecs,\n\t});\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new XataHttpSession(client, dialect, relations ?? {} as EmptyRelations, {\n\t\tlogger,\n\t\tcache: config.cache,\n\t});\n\n\tconst db = new XataHttpDatabase(\n\t\tdialect,\n\t\tsession,\n\t\trelations,\n\t);\n\t(<any> db).$client = client;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\n\treturn db as any;\n}\n"],"mappings":";;;;;;;;;AAWA,IAAa,mBAAb,cACS,gBACT;CACC,QAA0B,cAAsB;;AAMjD,SAAgB,QACf,QACA,SAAsC,EAAE,EAGvC;CACD,MAAM,UAAU,IAAI,UAAU;EAC7B,eAAe,eAAe,OAAO,IAAI;EACzC,QAAQ,OAAO,UAAU;EACzB,CAAC;CACF,IAAI;AACJ,KAAI,OAAO,WAAW,KACrB,UAAS,IAAI,eAAe;UAClB,OAAO,WAAW,MAC5B,UAAS,OAAO;CAGjB,MAAM,YAAY,OAAO,aAAa,EAAE;CAMxC,MAAM,KAAK,IAAI,iBACd,SANe,IAAI,gBAAgB,QAAQ,SAAS,aAAa,EAAE,EAAoB;EACvF;EACA,OAAO,OAAO;EACd,CAAC,EAKD,UACA;AACD,CAAO,GAAI,UAAU;AACrB,CAAO,GAAI,SAAS,OAAO;AAC3B,KAAW,GAAI,OACd,CAAO,GAAI,OAAO,gBAAgB,OAAO,OAAO;AAGjD,QAAO"}
|