eslint-plugin-slonik 1.0.0
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/LICENSE +48 -0
- package/README.md +368 -0
- package/dist/config.cjs +61 -0
- package/dist/config.cjs.map +1 -0
- package/dist/config.d.cts +192 -0
- package/dist/config.d.mts +192 -0
- package/dist/config.d.ts +192 -0
- package/dist/config.mjs +59 -0
- package/dist/config.mjs.map +1 -0
- package/dist/index.cjs +27 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +319 -0
- package/dist/index.d.mts +319 -0
- package/dist/index.d.ts +319 -0
- package/dist/index.mjs +20 -0
- package/dist/index.mjs.map +1 -0
- package/dist/shared/eslint-plugin-slonik.1m1xlVmw.d.cts +611 -0
- package/dist/shared/eslint-plugin-slonik.1m1xlVmw.d.mts +611 -0
- package/dist/shared/eslint-plugin-slonik.1m1xlVmw.d.ts +611 -0
- package/dist/shared/eslint-plugin-slonik.BxexVlk1.cjs +1539 -0
- package/dist/shared/eslint-plugin-slonik.BxexVlk1.cjs.map +1 -0
- package/dist/shared/eslint-plugin-slonik.C0xTyWZ2.mjs +2866 -0
- package/dist/shared/eslint-plugin-slonik.C0xTyWZ2.mjs.map +1 -0
- package/dist/shared/eslint-plugin-slonik.DbzoLz5_.mjs +1514 -0
- package/dist/shared/eslint-plugin-slonik.DbzoLz5_.mjs.map +1 -0
- package/dist/shared/eslint-plugin-slonik.rlOTrCdf.cjs +2929 -0
- package/dist/shared/eslint-plugin-slonik.rlOTrCdf.cjs.map +1 -0
- package/dist/workers/check-sql.worker.cjs +2436 -0
- package/dist/workers/check-sql.worker.cjs.map +1 -0
- package/dist/workers/check-sql.worker.d.cts +171 -0
- package/dist/workers/check-sql.worker.d.mts +171 -0
- package/dist/workers/check-sql.worker.d.ts +171 -0
- package/dist/workers/check-sql.worker.mjs +2412 -0
- package/dist/workers/check-sql.worker.mjs.map +1 -0
- package/package.json +103 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-sql.worker.mjs","sources":["../../node_modules/.pnpm/@ts-safeql+sql-ast@4.1.0/node_modules/@ts-safeql/sql-ast/dist/index.mjs","../../node_modules/.pnpm/@ts-safeql+generate@4.1.0_eslint@9.39.2_jiti@2.6.1__typescript@5.9.3/node_modules/@ts-safeql/generate/dist/index.mjs","../../src/utils/connection-manager.ts","../../src/utils/watch-manager.ts","../../src/workers/check-sql.worker.ts"],"sourcesContent":["var AExprKind = /* @__PURE__ */ ((AExprKind2) => {\n AExprKind2[\"A_EXPR_KIND_UNDEFINED\"] = \"A_EXPR_KIND_UNDEFINED\";\n AExprKind2[\"AEXPR_OP\"] = \"AEXPR_OP\";\n AExprKind2[\"AEXPR_OP_ANY\"] = \"AEXPR_OP_ANY\";\n AExprKind2[\"AEXPR_OP_ALL\"] = \"AEXPR_OP_ALL\";\n AExprKind2[\"AEXPR_DISTINCT\"] = \"AEXPR_DISTINCT\";\n AExprKind2[\"AEXPR_NOT_DISTINCT\"] = \"AEXPR_NOT_DISTINCT\";\n AExprKind2[\"AEXPR_NULLIF\"] = \"AEXPR_NULLIF\";\n AExprKind2[\"AEXPR_IN\"] = \"AEXPR_IN\";\n AExprKind2[\"AEXPR_LIKE\"] = \"AEXPR_LIKE\";\n AExprKind2[\"AEXPR_ILIKE\"] = \"AEXPR_ILIKE\";\n AExprKind2[\"AEXPR_SIMILAR\"] = \"AEXPR_SIMILAR\";\n AExprKind2[\"AEXPR_BETWEEN\"] = \"AEXPR_BETWEEN\";\n AExprKind2[\"AEXPR_NOT_BETWEEN\"] = \"AEXPR_NOT_BETWEEN\";\n AExprKind2[\"AEXPR_BETWEEN_SYM\"] = \"AEXPR_BETWEEN_SYM\";\n AExprKind2[\"AEXPR_NOT_BETWEEN_SYM\"] = \"AEXPR_NOT_BETWEEN_SYM\";\n AExprKind2[\"UNRECOGNIZED\"] = \"UNRECOGNIZED\";\n return AExprKind2;\n})(AExprKind || {});\nvar SetOperation = /* @__PURE__ */ ((SetOperation2) => {\n SetOperation2[\"SET_OPERATION_UNDEFINED\"] = \"SET_OPERATION_UNDEFINED\";\n SetOperation2[\"SETOP_NONE\"] = \"SETOP_NONE\";\n SetOperation2[\"SETOP_UNION\"] = \"SETOP_UNION\";\n SetOperation2[\"SETOP_INTERSECT\"] = \"SETOP_INTERSECT\";\n SetOperation2[\"SETOP_EXCEPT\"] = \"SETOP_EXCEPT\";\n SetOperation2[\"UNRECOGNIZED\"] = \"UNRECOGNIZED\";\n return SetOperation2;\n})(SetOperation || {});\nvar BoolExprType = /* @__PURE__ */ ((BoolExprType2) => {\n BoolExprType2[\"BOOL_EXPR_TYPE_UNDEFINED\"] = \"BOOL_EXPR_TYPE_UNDEFINED\";\n BoolExprType2[\"AND_EXPR\"] = \"AND_EXPR\";\n BoolExprType2[\"OR_EXPR\"] = \"OR_EXPR\";\n BoolExprType2[\"NOT_EXPR\"] = \"NOT_EXPR\";\n BoolExprType2[\"UNRECOGNIZED\"] = \"UNRECOGNIZED\";\n return BoolExprType2;\n})(BoolExprType || {});\nvar SubLinkType = /* @__PURE__ */ ((SubLinkType2) => {\n SubLinkType2[\"SUB_LINK_TYPE_UNDEFINED\"] = \"SUB_LINK_TYPE_UNDEFINED\";\n SubLinkType2[\"EXISTS_SUBLINK\"] = \"EXISTS_SUBLINK\";\n SubLinkType2[\"ALL_SUBLINK\"] = \"ALL_SUBLINK\";\n SubLinkType2[\"ANY_SUBLINK\"] = \"ANY_SUBLINK\";\n SubLinkType2[\"ROWCOMPARE_SUBLINK\"] = \"ROWCOMPARE_SUBLINK\";\n SubLinkType2[\"EXPR_SUBLINK\"] = \"EXPR_SUBLINK\";\n SubLinkType2[\"MULTIEXPR_SUBLINK\"] = \"MULTIEXPR_SUBLINK\";\n SubLinkType2[\"ARRAY_SUBLINK\"] = \"ARRAY_SUBLINK\";\n SubLinkType2[\"CTE_SUBLINK\"] = \"CTE_SUBLINK\";\n SubLinkType2[\"UNRECOGNIZED\"] = \"UNRECOGNIZED\";\n return SubLinkType2;\n})(SubLinkType || {});\nvar NullTestType = /* @__PURE__ */ ((NullTestType2) => {\n NullTestType2[\"NULL_TEST_TYPE_UNDEFINED\"] = \"NULL_TEST_TYPE_UNDEFINED\";\n NullTestType2[\"IS_NULL\"] = \"IS_NULL\";\n NullTestType2[\"IS_NOT_NULL\"] = \"IS_NOT_NULL\";\n NullTestType2[\"UNRECOGNIZED\"] = \"UNRECOGNIZED\";\n return NullTestType2;\n})(NullTestType || {});\nvar JoinType = /* @__PURE__ */ ((JoinType2) => {\n JoinType2[\"JOIN_TYPE_UNDEFINED\"] = \"JOIN_TYPE_UNDEFINED\";\n JoinType2[\"JOIN_INNER\"] = \"JOIN_INNER\";\n JoinType2[\"JOIN_LEFT\"] = \"JOIN_LEFT\";\n JoinType2[\"JOIN_FULL\"] = \"JOIN_FULL\";\n JoinType2[\"JOIN_RIGHT\"] = \"JOIN_RIGHT\";\n JoinType2[\"JOIN_SEMI\"] = \"JOIN_SEMI\";\n JoinType2[\"JOIN_ANTI\"] = \"JOIN_ANTI\";\n JoinType2[\"JOIN_UNIQUE_OUTER\"] = \"JOIN_UNIQUE_OUTER\";\n JoinType2[\"JOIN_UNIQUE_INNER\"] = \"JOIN_UNIQUE_INNER\";\n JoinType2[\"UNRECOGNIZED\"] = \"UNRECOGNIZED\";\n return JoinType2;\n})(JoinType || {});\n\nexport { AExprKind, BoolExprType, JoinType, NullTestType, SetOperation, SubLinkType };\n//# sourceMappingURL=index.mjs.map\n","import { assertNever, fmap, normalizeIndent, toCase, PostgresError, getOrSetFromMapWithEnabled, defaultTypesMap, DuplicateColumnsError, isPostgresError, groupBy } from '@ts-safeql/shared';\nimport * as LibPgQueryAST from '@ts-safeql/sql-ast';\nimport { either } from 'fp-ts';\nimport * as parser from 'libpg-query';\n\nfunction isColumnStarRef(fields) {\n return isSingleCell(fields) && fields[0]?.A_Star !== void 0;\n}\nfunction isColumnTableStarRef(fields) {\n return isTuple(fields) && fields[0].String !== void 0 && fields[1].A_Star !== void 0;\n}\nfunction isColumnUnknownRef(fields) {\n return isSingleCell(fields) && fields[0].String !== void 0;\n}\nfunction isColumnTableColumnRef(fields) {\n return isTuple(fields) && fields[0].String !== void 0 && fields[1].String !== void 0;\n}\nfunction isSingleCell(arr) {\n return arr.length === 1;\n}\nfunction isTuple(arr) {\n return arr.length === 2;\n}\n\nfunction getSources({\n select,\n prevSources,\n nonNullableColumns,\n pgColsBySchemaAndTableName,\n relations\n}) {\n const relationsByAlias = /* @__PURE__ */ new Map();\n const relationsByRelName = /* @__PURE__ */ new Map();\n for (const rel of relations) {\n const key = rel.alias ?? rel.joinRelName;\n if (key) {\n relationsByAlias.set(key, rel);\n }\n if (!relationsByRelName.has(rel.relName)) {\n relationsByRelName.set(rel.relName, []);\n }\n relationsByRelName.get(rel.relName).push(rel);\n }\n const tableToSchema = /* @__PURE__ */ new Map();\n const publicCols = pgColsBySchemaAndTableName.get(\"public\");\n if (publicCols) {\n for (const tableName of publicCols.keys()) {\n tableToSchema.set(tableName, \"public\");\n }\n }\n for (const [schemaName, cols] of pgColsBySchemaAndTableName) {\n if (schemaName === \"public\") break;\n for (const tableName of cols.keys()) {\n if (!tableToSchema.has(tableName)) {\n tableToSchema.set(tableName, schemaName);\n }\n }\n }\n function getColumnCTEs(ctes2) {\n const map = /* @__PURE__ */ new Map();\n for (const cte of ctes2) {\n if (cte.CommonTableExpr?.ctequery?.SelectStmt === void 0) continue;\n if (cte.CommonTableExpr?.ctename === void 0) continue;\n const resolver = getSources({\n pgColsBySchemaAndTableName,\n prevSources,\n nonNullableColumns,\n relations,\n select: cte.CommonTableExpr.ctequery.SelectStmt\n });\n map.set(cte.CommonTableExpr.ctename, resolver);\n }\n return map;\n }\n const ctes = getColumnCTEs(select.withClause?.ctes ?? []);\n function resolveRangeVarSchema(node) {\n switch (true) {\n case node.schemaname !== void 0:\n return node.schemaname;\n case pgColsBySchemaAndTableName.get(\"public\")?.has(node.relname):\n return \"public\";\n default:\n for (const [schemaName, cols] of pgColsBySchemaAndTableName) {\n if (cols.has(node.relname)) {\n return schemaName;\n }\n }\n return \"public\";\n }\n }\n function getNodeColumnAndSources(node) {\n if (node.RangeVar !== void 0) {\n const cteResolver = ctes.get(node.RangeVar.relname);\n if (cteResolver !== void 0) {\n return [{ kind: \"cte\", name: node.RangeVar.relname, sources: cteResolver }];\n }\n const schemaName = resolveRangeVarSchema(node.RangeVar);\n const realTableName = node.RangeVar.relname;\n const tableName = node.RangeVar.alias?.aliasname ?? realTableName;\n const tableColsArray = pgColsBySchemaAndTableName.get(schemaName)?.get(realTableName) ?? [];\n const tableSource = {\n kind: \"table\",\n schemaName,\n original: realTableName,\n name: tableName,\n alias: node.RangeVar.alias?.aliasname,\n columns: /* @__PURE__ */ new Map()\n };\n for (const col of tableColsArray) {\n tableSource.columns.set(col.colName, resolveColumn(col, tableSource));\n }\n return [tableSource];\n }\n const sourcesArr = [];\n if (node.JoinExpr?.larg !== void 0) {\n sourcesArr.push(...getNodeColumnAndSources(node.JoinExpr.larg));\n }\n if (node.JoinExpr?.rarg !== void 0) {\n sourcesArr.push(...getNodeColumnAndSources(node.JoinExpr.rarg));\n }\n if (node.RangeSubselect?.subquery?.SelectStmt?.fromClause !== void 0) {\n const combinedPrevSources = new Map([\n ...prevSources?.entries() ?? [],\n ...sourcesArr.map((x) => [x.name, x])\n ]);\n sourcesArr.push({\n kind: \"subselect\",\n name: node.RangeSubselect.alias?.aliasname ?? \"subselect\",\n sources: getSources({\n nonNullableColumns,\n pgColsBySchemaAndTableName,\n relations,\n prevSources: combinedPrevSources,\n select: node.RangeSubselect.subquery.SelectStmt\n })\n });\n }\n return sourcesArr;\n }\n function getColumnSources(stmt) {\n const fromClauseSources = [];\n for (const node of stmt.fromClause ?? []) {\n const nodes = getNodeColumnAndSources(node);\n for (const nodeSource of nodes) {\n fromClauseSources.push([nodeSource.name, nodeSource]);\n }\n }\n return new Map(fromClauseSources);\n }\n const sources = new Map([\n ...prevSources?.entries() ?? [],\n ...getColumnSources(select).entries()\n ]);\n const cachedColumnsMap = /* @__PURE__ */ new WeakMap();\n function getSourceColumns(source) {\n if (cachedColumnsMap.has(source)) {\n return cachedColumnsMap.get(source);\n }\n let result = [];\n switch (source.kind) {\n case \"table\":\n result = Array.from(source.columns.values()).map((col) => ({\n column: col,\n source\n }));\n break;\n case \"cte\":\n case \"subselect\":\n result = [];\n break;\n }\n cachedColumnsMap.set(source, result);\n return result;\n }\n function getAllResolvedColumns() {\n const all = [];\n for (const source of sources.values()) {\n all.push(...getSourceColumns(source));\n }\n return all;\n }\n const allResolved = getAllResolvedColumns();\n const columnIndex = /* @__PURE__ */ new Map();\n const unknownColumnIndex = /* @__PURE__ */ new Map();\n for (const entry of allResolved) {\n const key = `${entry.source.name}.${entry.column.column.colName}`;\n columnIndex.set(key, entry);\n const unknownKey = entry.column.column.colName;\n if (!unknownColumnIndex.has(unknownKey)) {\n unknownColumnIndex.set(unknownKey, []);\n }\n unknownColumnIndex.get(unknownKey).push(entry);\n }\n function getColumnByTableAndColumnName(p) {\n const source = sources.get(p.table);\n if (!source) return null;\n switch (source.kind) {\n case \"table\":\n return source.columns.get(p.column) || null;\n default:\n return null;\n }\n }\n function getResolvedColumnsInTable(sourceName) {\n const source = sources.get(sourceName);\n if (!source) return [];\n return getSourceColumns(source).map((x) => x.column);\n }\n function getNestedResolvedTargetField(field) {\n switch (field.kind) {\n case \"column\": {\n const key = `${field.table}.${field.column}`;\n if (columnIndex.has(key)) {\n return columnIndex.get(key)?.column ?? null;\n }\n break;\n }\n case \"unknown\": {\n if (unknownColumnIndex.has(field.field)) {\n const candidates = unknownColumnIndex.get(field.field);\n if (candidates.length > 0) return candidates[0]?.column ?? null;\n }\n break;\n }\n }\n for (const source of sources.values()) {\n switch (source.kind) {\n case \"cte\":\n case \"subselect\": {\n const nested = source.sources.getNestedResolvedTargetField(field);\n if (nested) {\n return {\n ...nested,\n isNotNull: nested.isNotNull && !checkIsNullableDueToRelation(source.name)\n };\n }\n break;\n }\n case \"table\": {\n const key = field.kind === \"column\" ? field.column : field.field;\n const column = source.columns.get(key);\n if (column) return column;\n break;\n }\n }\n }\n return null;\n }\n function getColumnsByTargetField(field) {\n switch (field.kind) {\n case \"column\": {\n const result = getColumnByTableAndColumnName(field);\n if (result !== null) {\n return [result];\n }\n for (const source of sources.values()) {\n switch (source.kind) {\n case \"subselect\": {\n const column = source.sources.getNestedResolvedTargetField(field);\n if (column) {\n const isNullableDueToRelation = checkIsNullableDueToRelation(source.name);\n if (isNullableDueToRelation && column.isNotNull) {\n return [{ ...column, isNotNull: false }];\n }\n return [column];\n }\n break;\n }\n }\n }\n return null;\n }\n case \"unknown\": {\n const source = sources.get(field.field);\n if (source !== void 0) {\n return getSourceColumns(source).map((x) => x.column);\n }\n const foundColumn = getNestedResolvedTargetField(field);\n if (foundColumn) {\n return [foundColumn];\n }\n for (const source2 of sources.values()) {\n switch (source2.kind) {\n case \"subselect\": {\n const columns = source2.sources.getColumnsByTargetField(field);\n if (columns) {\n const isNullableDueToRelation = checkIsNullableDueToRelation(source2.name);\n if (isNullableDueToRelation) {\n return columns.map((col) => col.isNotNull ? { ...col, isNotNull: false } : col);\n }\n return columns;\n }\n break;\n }\n }\n }\n return null;\n }\n }\n }\n function checkIsNullableDueToRelation(key) {\n const rel = relationsByAlias.get(key);\n if (rel !== void 0) {\n switch (rel.joinType) {\n case LibPgQueryAST.JoinType.JOIN_LEFT:\n case LibPgQueryAST.JoinType.JOIN_FULL:\n return true;\n case LibPgQueryAST.JoinType.JOIN_TYPE_UNDEFINED:\n case LibPgQueryAST.JoinType.JOIN_INNER:\n case LibPgQueryAST.JoinType.JOIN_RIGHT:\n case LibPgQueryAST.JoinType.JOIN_SEMI:\n case LibPgQueryAST.JoinType.JOIN_ANTI:\n case LibPgQueryAST.JoinType.JOIN_UNIQUE_OUTER:\n case LibPgQueryAST.JoinType.JOIN_UNIQUE_INNER:\n case LibPgQueryAST.JoinType.UNRECOGNIZED:\n return false;\n default:\n return assertNever(rel.joinType);\n }\n }\n for (const relation of relationsByRelName.get(key) ?? []) {\n switch (relation.joinType) {\n case LibPgQueryAST.JoinType.JOIN_RIGHT:\n case LibPgQueryAST.JoinType.JOIN_FULL:\n return true;\n case LibPgQueryAST.JoinType.JOIN_TYPE_UNDEFINED:\n case LibPgQueryAST.JoinType.JOIN_INNER:\n case LibPgQueryAST.JoinType.JOIN_LEFT:\n case LibPgQueryAST.JoinType.JOIN_SEMI:\n case LibPgQueryAST.JoinType.JOIN_ANTI:\n case LibPgQueryAST.JoinType.JOIN_UNIQUE_OUTER:\n case LibPgQueryAST.JoinType.JOIN_UNIQUE_INNER:\n case LibPgQueryAST.JoinType.UNRECOGNIZED:\n return false;\n default:\n return assertNever(relation.joinType);\n }\n }\n return false;\n }\n function resolveColumn(col, source) {\n const keyForNullability = source.alias ? source.alias : source.original;\n const isNullableDueToRelation = checkIsNullableDueToRelation(keyForNullability);\n const isNotNullBasedOnAST = nonNullableColumns.has(col.colName) || nonNullableColumns.has(`${source.name}.${col.colName}`);\n const isNotNullInTable = col.colNotNull;\n const isNonNullable = isNotNullBasedOnAST || isNotNullInTable && !isNullableDueToRelation;\n return { column: col, isNotNull: isNonNullable };\n }\n return {\n getNodeColumnAndSources,\n getResolvedColumnsInTable,\n getAllResolvedColumns,\n getColumnsByTargetField,\n getNestedResolvedTargetField,\n sources\n };\n}\n\nconst nonNullFunctions = /* @__PURE__ */ new Set([\n \"count\",\n \"now\",\n \"abs\",\n \"ceil\",\n \"floor\",\n \"round\",\n \"sqrt\",\n \"cbrt\",\n \"exp\",\n \"log\",\n \"log10\",\n \"sin\",\n \"cos\",\n \"tan\",\n \"asin\",\n \"acos\",\n \"atan\",\n \"radians\",\n \"degrees\",\n \"length\",\n \"trim\",\n \"lower\",\n \"upper\",\n \"ascii\",\n \"concat\",\n \"concat_ws\",\n \"lpad\",\n \"rpad\",\n \"initcap\",\n \"left\",\n \"right\",\n \"cdat\",\n \"chr\",\n \"strpos\",\n \"substr\",\n \"translate\",\n \"current_date\",\n \"current_time\",\n \"current_timestamp\",\n \"localtime\",\n \"localtimestamp\",\n \"uuid_generate_v1\",\n \"uuid_generate_v4\",\n \"pi\",\n \"random\",\n \"exists\",\n \"row_number\",\n \"current_schema\",\n \"current_schemas\",\n \"inet_server_addr\",\n \"inet_server_port\",\n \"isfinite\",\n \"isnan\",\n \"pg_backend_pid\",\n \"pg_blocking_pids\",\n \"pg_cancel_backend\",\n \"pg_is_in_recovery\",\n \"pg_postmaster_start_time\",\n \"pg_relation_size\",\n \"pg_total_relation_size\",\n \"timeofday\",\n \"similar_to_escape\"\n]);\nfunction concatStringNodes$1(nodes) {\n return nodes?.map((x) => x.String?.sval).filter(Boolean).join(\".\") ?? \"\";\n}\nfunction isColumnNonNullable(val, root) {\n if (val === void 0) {\n return false;\n }\n if (val.NullTest) {\n return true;\n }\n if (val.BoolExpr?.boolop === LibPgQueryAST.BoolExprType.NOT_EXPR) {\n return true;\n }\n if (val.A_Const) {\n return val.A_Const.isnull !== true;\n }\n if (val.FuncCall) {\n const functionName = concatStringNodes$1(val.FuncCall.funcname);\n return nonNullFunctions.has(functionName.toLowerCase());\n }\n if (val.TypeCast?.arg) {\n return isColumnNonNullable(val.TypeCast.arg, root);\n }\n if (val.SubLink) {\n switch (val.SubLink.subLinkType) {\n case LibPgQueryAST.SubLinkType.EXISTS_SUBLINK:\n return true;\n case LibPgQueryAST.SubLinkType.ARRAY_SUBLINK:\n return true;\n // while the array itself can be non-nullable, the elements can be nullable\n case LibPgQueryAST.SubLinkType.ALL_SUBLINK:\n case LibPgQueryAST.SubLinkType.ANY_SUBLINK:\n case LibPgQueryAST.SubLinkType.ROWCOMPARE_SUBLINK:\n case LibPgQueryAST.SubLinkType.EXPR_SUBLINK:\n case LibPgQueryAST.SubLinkType.MULTIEXPR_SUBLINK:\n case LibPgQueryAST.SubLinkType.CTE_SUBLINK:\n return isColumnNonNullable(val.SubLink.subselect, root);\n case LibPgQueryAST.SubLinkType.SUB_LINK_TYPE_UNDEFINED:\n case LibPgQueryAST.SubLinkType.UNRECOGNIZED:\n return false;\n default:\n assertNever(val.SubLink.subLinkType);\n }\n }\n if (val.A_Expr?.kind === LibPgQueryAST.AExprKind.AEXPR_SIMILAR) {\n return true;\n }\n if (val.A_Expr?.kind === LibPgQueryAST.AExprKind.AEXPR_LIKE) {\n return true;\n }\n if (val.A_Expr?.kind === LibPgQueryAST.AExprKind.AEXPR_OP) {\n return isColumnNonNullable(val.A_Expr.lexpr, root) && isColumnNonNullable(val.A_Expr.rexpr, root);\n }\n if (val.CaseExpr) {\n for (const when of val.CaseExpr.args) {\n if (!isColumnNonNullable(when.CaseWhen?.result, root)) {\n return false;\n }\n }\n if (val.CaseExpr.defresult && !isColumnNonNullable(val.CaseExpr.defresult, root)) {\n return false;\n }\n return true;\n }\n if (val.ColumnRef) {\n const refColumnName = concatStringNodes$1(val.ColumnRef.fields);\n for (const stmt of root.stmts) {\n if (stmt?.stmt?.SelectStmt?.whereClause) {\n const whereClause = stmt.stmt.SelectStmt.whereClause;\n const whereClauseColumnName = concatStringNodes$1(\n whereClause.NullTest?.arg?.ColumnRef?.fields\n );\n if (whereClause.NullTest?.nulltesttype === LibPgQueryAST.NullTestType.IS_NOT_NULL && whereClauseColumnName === refColumnName) {\n return true;\n }\n }\n }\n }\n if (val.CoalesceExpr) {\n for (const arg of val.CoalesceExpr.args) {\n if (isColumnNonNullable(arg, root)) {\n return true;\n }\n }\n }\n if (val.A_ArrayExpr) {\n return true;\n }\n if (val.SelectStmt) {\n const nonNullableColumnsInSubStmt = getNonNullableColumnsInSelectStmt(val.SelectStmt, root);\n return Array.from(nonNullableColumnsInSubStmt.values()).some(Boolean);\n }\n return false;\n}\nfunction getNodeName(node) {\n if (node?.ColumnRef !== void 0) {\n return concatStringNodes$1(node.ColumnRef.fields);\n }\n if (node?.NullTest) {\n return getNodeName(node.NullTest.arg);\n }\n if (node?.A_Const?.boolval !== void 0) {\n return \"bool\";\n }\n if (node?.TypeCast !== void 0) {\n const typeName = concatStringNodes$1(node.TypeCast.typeName?.names);\n if (typeName === \"pg_catalog.interval\") {\n return \"interval\";\n }\n if (node.TypeCast.arg) {\n return getNodeName(node.TypeCast.arg);\n }\n return typeName.replace(/^pg_catalog\\./, \"\");\n }\n if (node?.FuncCall?.funcname !== void 0) {\n return concatStringNodes$1(node.FuncCall.funcname);\n }\n if (node?.SubLink?.subLinkType === LibPgQueryAST.SubLinkType.EXISTS_SUBLINK) {\n return \"exists\";\n }\n if (node?.SubLink?.subLinkType === LibPgQueryAST.SubLinkType.ARRAY_SUBLINK) {\n return \"array\";\n }\n if (node?.SubLink?.subselect?.SelectStmt?.targetList !== void 0) {\n const subSelectTargetList = node.SubLink.subselect.SelectStmt.targetList;\n if (subSelectTargetList?.[0].ResTarget !== void 0) {\n return getTargetName(subSelectTargetList[0].ResTarget);\n }\n }\n if (node?.A_ArrayExpr !== void 0) {\n return \"array\";\n }\n if (node?.CaseExpr !== void 0) {\n return \"case\";\n }\n if (node?.CoalesceExpr !== void 0) {\n return \"coalesce\";\n }\n return \"?column?\";\n}\nfunction getTargetName(target) {\n return target.name ?? getNodeName(target.val);\n}\nfunction getNonNullableColumnsInSelectStmt(stmt, root) {\n const nonNullableColumns = /* @__PURE__ */ new Set();\n const targetList = [\n ...stmt.targetList ?? [],\n ...stmt.larg?.targetList ?? [],\n ...stmt.rarg?.targetList ?? []\n ];\n const targetNames = /* @__PURE__ */ new Set();\n for (const target of targetList) {\n if (target.ResTarget) {\n targetNames.add(getTargetName(target.ResTarget));\n }\n if (target.ResTarget && isColumnNonNullable(target.ResTarget.val, root)) {\n nonNullableColumns.add(getTargetName(target.ResTarget));\n }\n }\n if (stmt.whereClause) {\n if (stmt.whereClause.NullTest?.nulltesttype === LibPgQueryAST.NullTestType.IS_NOT_NULL) {\n const colRef = stmt.whereClause.NullTest.arg?.ColumnRef;\n const whereClauseName = concatStringNodes$1(colRef?.fields);\n switch (true) {\n case targetNames.has(whereClauseName):\n nonNullableColumns.add(whereClauseName);\n break;\n case targetNames.has(colRef?.fields?.at(-1)?.String?.sval ?? \"\"):\n nonNullableColumns.add(colRef?.fields?.at(-1)?.String?.sval ?? \"\");\n break;\n default:\n nonNullableColumns.add(whereClauseName);\n break;\n }\n }\n if (stmt.whereClause.BoolExpr?.boolop === LibPgQueryAST.BoolExprType.AND_EXPR) {\n for (const arg of stmt.whereClause.BoolExpr.args) {\n if (arg.NullTest?.nulltesttype === LibPgQueryAST.NullTestType.IS_NOT_NULL && arg.NullTest.arg?.ColumnRef?.fields) {\n nonNullableColumns.add(concatStringNodes$1(arg.NullTest.arg.ColumnRef.fields));\n }\n }\n }\n }\n return nonNullableColumns;\n}\nfunction getNonNullableColumns(root) {\n for (const stmt of root.stmts) {\n if (stmt.stmt?.SelectStmt) {\n return getNonNullableColumnsInSelectStmt(stmt.stmt.SelectStmt, root);\n }\n }\n return /* @__PURE__ */ new Set();\n}\n\nfunction getRelationsWithJoins(parsed) {\n const results = /* @__PURE__ */ new Map();\n const stmt = parsed.stmts[0];\n if (stmt === void 0 || stmt?.stmt?.SelectStmt?.fromClause === void 0) {\n return results;\n }\n for (const fromClause of stmt.stmt.SelectStmt.fromClause) {\n if (fromClause.JoinExpr !== void 0) {\n const { relName, joins } = recursiveTraverseJoins([], fromClause.JoinExpr);\n results.set(relName, joins);\n }\n }\n return results;\n}\nfunction recursiveGetJoinName(joinExpr) {\n if (joinExpr.rarg?.JoinExpr !== void 0) {\n return recursiveGetJoinName(joinExpr.rarg.JoinExpr);\n }\n return joinExpr.rarg?.RangeVar?.relname ?? joinExpr.rarg?.RangeSubselect?.alias?.aliasname;\n}\nfunction recursiveTraverseJoins(joins, joinExpr) {\n const joinName = recursiveGetJoinName(joinExpr);\n const aliasName = joinExpr.rarg?.RangeVar?.alias?.aliasname;\n if (joinName === void 0) {\n throw new Error(\"joinName is undefined\");\n }\n const join = { type: joinExpr.jointype, name: joinName, alias: aliasName };\n if (joinExpr.larg?.JoinExpr !== void 0) {\n return recursiveTraverseJoins([join, ...joins], joinExpr.larg?.JoinExpr);\n }\n if (joinExpr.rarg?.JoinExpr !== void 0) {\n return recursiveTraverseJoins([join, ...joins], joinExpr.rarg?.JoinExpr);\n }\n const relName = joinExpr.larg?.RangeVar?.relname ?? joinExpr.larg?.RangeFunction?.alias?.aliasname ?? joinExpr.rarg?.RangeVar?.relname ?? joinExpr.rarg?.RangeFunction?.alias?.aliasname;\n if (relName === void 0) {\n throw new Error(\"relName is undefined\");\n }\n return { relName, joins: [join, ...joins] };\n}\nfunction flattenRelationsWithJoinsMap(relationsWithJoinsMap) {\n const result = [];\n relationsWithJoinsMap.forEach((joins, relName) => {\n joins.forEach((join) => {\n result.push({ relName, joinType: join.type, joinRelName: join.name, alias: join.alias });\n });\n });\n return result;\n}\n\nfunction getASTDescription(params) {\n const select = params.parsed.stmts[0]?.stmt?.SelectStmt;\n if (select === void 0) {\n return {\n map: /* @__PURE__ */ new Map(),\n meta: {\n relations: [],\n nonNullableColumns: /* @__PURE__ */ new Set()\n }\n };\n }\n const nonNullableColumns = getNonNullableColumns(params.parsed);\n const relations = flattenRelationsWithJoinsMap(getRelationsWithJoins(params.parsed));\n function getTypeByOid(oid) {\n const name = params.pgTypes.get(oid)?.name;\n if (name === void 0) {\n return { isArray: false, override: false, value: \"unknown\" };\n }\n const { isArray, typeName } = name.startsWith(\"_\") ? { isArray: true, typeName: name.slice(1) } : { isArray: false, typeName: name };\n const resolvedTypeName = params.typesMap.get(typeName) ?? { override: false, value: \"unknown\" };\n return {\n isArray,\n override: resolvedTypeName.override,\n value: resolvedTypeName.value\n };\n }\n const context = {\n ...params,\n nonNullableColumns,\n relations,\n resolver: getSources({\n relations,\n select,\n nonNullableColumns,\n pgColsBySchemaAndTableName: params.pgColsBySchemaAndTableName\n }),\n select,\n resolved: /* @__PURE__ */ new WeakMap(),\n toTypeScriptType: (p) => {\n if (\"name\" in p) {\n return {\n kind: \"type\",\n value: params.typesMap.get(p.name)?.value ?? \"unknown\",\n type: p.name\n };\n }\n const pgType = params.pgTypes.get(p.oid);\n const typeByOid = getTypeByOid(p.oid);\n if (typeByOid.override) {\n const baseType = {\n kind: \"type\",\n value: typeByOid.value,\n type: pgType?.name ?? \"unknown\"\n };\n return typeByOid.isArray ? { kind: \"array\", value: baseType } : baseType;\n }\n const typeByBaseOid = fmap(p.baseOid, getTypeByOid);\n if (typeByBaseOid?.override === true) {\n const baseType = {\n kind: \"type\",\n value: typeByBaseOid.value,\n type: params.pgTypes.get(p.baseOid)?.name ?? \"unknown\"\n };\n return typeByBaseOid.isArray ? { kind: \"array\", value: baseType } : baseType;\n }\n const getEnumByOid = (oid) => {\n const pgEnum = params.pgEnums.get(oid);\n if (pgEnum === void 0) {\n return void 0;\n }\n return {\n kind: \"union\",\n value: pgEnum.values.map((value2) => ({\n kind: \"type\",\n value: `'${value2}'`,\n type: pgEnum.name\n }))\n };\n };\n const valueAsEnum = (() => {\n const enumType = getEnumByOid(p.oid);\n if (enumType !== void 0) {\n return enumType;\n }\n if (pgType?.typelem !== void 0 && pgType.typelem !== 0) {\n const arrayEnumValue = getEnumByOid(pgType.typelem);\n if (arrayEnumValue !== void 0) {\n return {\n kind: \"array\",\n value: arrayEnumValue\n };\n }\n }\n return void 0;\n })();\n if (valueAsEnum !== void 0) {\n return valueAsEnum;\n }\n const { isArray, value } = typeByBaseOid ?? typeByOid;\n const type = {\n kind: \"type\",\n value,\n type: pgType?.name ?? \"unknown\"\n };\n if (p.baseOid !== null) {\n type.base = params.pgTypes.get(p.baseOid)?.name;\n }\n return isArray ? { kind: \"array\", value: type } : type;\n }\n };\n const targetLists = [select.targetList, select.larg?.targetList, select.rarg?.targetList].filter(\n (x) => x !== void 0\n );\n const resolvedColumnsList = [];\n for (const [targetListIdx, targetList] of targetLists.entries()) {\n resolvedColumnsList[targetListIdx] = targetList.map((target) => {\n const described = getDescribedNode({\n alias: void 0,\n node: target,\n context\n });\n if (described.length === 0) {\n return [void 0];\n }\n return described;\n }).flat();\n }\n const columnsLength = resolvedColumnsList.reduce((acc, x) => Math.max(acc, x.length), 0);\n const final = /* @__PURE__ */ new Map();\n for (let i = 0; i < columnsLength; i++) {\n const result = mergeColumns(resolvedColumnsList.map((x) => x[i]));\n final.set(i, result);\n }\n return {\n map: final,\n meta: {\n relations,\n nonNullableColumns\n }\n };\n}\nfunction mergeColumns(columns) {\n const definedColumns = columns.filter((x) => x !== void 0);\n if (definedColumns.length === 0) {\n return void 0;\n }\n const name = definedColumns[0].name;\n const type = mergeDescribedColumnTypes(definedColumns.map((x) => x.type));\n return { name, type };\n}\nfunction getDescribedNode(params) {\n const { alias, node, context } = params;\n if (node.ResTarget !== void 0) {\n return getDescribedResTarget({ node: node.ResTarget, context });\n }\n if (node.A_Const !== void 0) {\n return getDescribedAConst({ alias, node: node.A_Const, context });\n }\n if (node.ColumnRef !== void 0) {\n return getDescribedColumnRef({ alias, node: node.ColumnRef, context });\n }\n if (node.FuncCall !== void 0) {\n return getDescribedFuncCall({ alias, node: node.FuncCall, context });\n }\n if (node.TypeCast !== void 0) {\n return getDescribedTypeCast({ alias, node: node.TypeCast, context });\n }\n if (node.A_ArrayExpr !== void 0) {\n return getDescribedArrayExpr({ alias, node: node.A_ArrayExpr, context });\n }\n if (node.CoalesceExpr !== void 0) {\n return getDescribedCoalesceExpr({ alias, node: node.CoalesceExpr, context });\n }\n if (node.SubLink !== void 0) {\n return getDescribedSubLink({ alias, node: node.SubLink, context });\n }\n if (node.BoolExpr !== void 0) {\n return getDescribedBoolExpr({ alias, node: node.BoolExpr, context });\n }\n if (node.CaseExpr !== void 0) {\n return getDescribedCaseExpr({ alias, node: node.CaseExpr, context });\n }\n if (node.NullTest !== void 0) {\n return getDescribedNullTest({ alias, node: node.NullTest, context });\n }\n if (node.A_Expr !== void 0) {\n return getDescribedAExpr({ alias, node: node.A_Expr, context });\n }\n if (node.SelectStmt !== void 0) {\n return getDescribedSelectStmt({ alias, node: node.SelectStmt, context });\n }\n return [];\n}\nfunction getDescribedAExpr({\n alias,\n node,\n context\n}) {\n const name = alias ?? \"?column?\";\n if (node.lexpr === void 0 && node.rexpr !== void 0) {\n const described = getDescribedNode({ alias, node: node.rexpr, context }).at(0);\n const type2 = fmap(described, (x) => getBaseType(x.type));\n if (type2 === null) return [];\n return [{ name, type: type2 }];\n }\n if (node.lexpr === void 0 || node.rexpr === void 0) {\n return [];\n }\n const getResolvedNullableValueOrNull = (node2) => {\n const column = getDescribedNode({ alias: void 0, node: node2, context }).at(0);\n if (column === void 0) return null;\n const getFromType = (type2) => {\n switch (true) {\n case type2.kind === \"type\":\n return { value: type2.base ?? type2.type, array: false, nullable: false };\n case (type2.kind === \"literal\" && type2.base.kind === \"type\"):\n return { value: type2.base.type, array: false, nullable: false };\n case (type2.kind === \"union\" && type2.value.every((x) => x.kind === \"literal\")): {\n const resolved = getFromType(type2.value[0].base);\n if (resolved === null) return null;\n return { value: resolved.value, nullable: false, array: false };\n }\n case (type2.kind === \"union\" && isTuple(type2.value)): {\n let nullable = false;\n let value = void 0;\n for (const valueType of type2.value) {\n if (valueType.kind !== \"type\") return null;\n if (valueType.value === \"null\") nullable = true;\n if (valueType.value !== \"null\") value = valueType.type;\n }\n if (value === void 0) return null;\n return { value, nullable, array: false };\n }\n case type2.kind === \"object\":\n return { value: \"jsonb\", array: false, nullable: false };\n default:\n return null;\n }\n };\n if (column.type.kind === \"array\") {\n const resolved = getFromType(column.type.value);\n if (!resolved) return null;\n return { value: resolved.value, nullable: resolved.nullable, array: true };\n }\n return getFromType(column.type);\n };\n const lnode = getResolvedNullableValueOrNull(node.lexpr);\n const rnode = getResolvedNullableValueOrNull(node.rexpr);\n const operator = concatStringNodes(node.name);\n if (lnode === null || rnode === null) {\n return [];\n }\n const downcast = () => {\n const left = lnode.array ? `_${lnode.value}` : lnode.value;\n const right = rnode.array ? `_${rnode.value}` : rnode.value;\n const overrides = {\n \"int4 ^ int4\": [\"float8\", \"^\", \"float8\"]\n };\n if (overrides[`${left} ${operator} ${right}`]) {\n return overrides[`${left} ${operator} ${right}`];\n }\n const adjust = (value) => value === \"varchar\" ? \"text\" : value;\n return [adjust(left), operator, adjust(right)];\n };\n const getNullable = () => {\n if (context.nonNullableColumns.has(name)) {\n return false;\n }\n if (lnode.nullable || rnode.nullable) {\n return true;\n }\n const operatorForcesNullable = [\"->>\", \"#>>\"].includes(operator) && hasColumnReference(node.lexpr);\n return operatorForcesNullable;\n };\n const getType = () => {\n const nullable = getNullable();\n const [dleft, doperator, dright] = downcast();\n const type2 = context.typeExprMap.get(dleft)?.get(doperator)?.get(dright) ?? context.typeExprMap.get(\"anycompatiblearray\")?.get(operator)?.get(\"anycompatiblearray\") ?? context.typeExprMap.get(\"anyarray\")?.get(operator)?.get(\"anyarray\") ?? context.typeExprMap.get(lnode.value)?.get(operator)?.values().next().value;\n if (type2 === void 0) {\n return;\n }\n if (type2 === \"anycompatiblearray\") {\n return {\n kind: \"array\",\n value: resolveType({\n context,\n nullable,\n type: context.toTypeScriptType({ name: lnode.value })\n })\n };\n }\n return resolveType({\n context,\n nullable,\n type: context.toTypeScriptType({ name: type2 })\n });\n };\n const type = getType();\n if (type === void 0) {\n return [];\n }\n return [{ name, type }];\n}\nfunction getDescribedNullTest({\n alias,\n context\n}) {\n return [\n {\n name: alias ?? \"?column?\",\n type: resolveType({\n context,\n nullable: false,\n type: context.toTypeScriptType({ name: \"bool\" })\n })\n }\n ];\n}\nfunction getDescribedCaseExpr({\n alias,\n node,\n context\n}) {\n const results = [];\n for (const arg of node.args) {\n if (arg.CaseWhen?.result !== void 0) {\n results.push(getDescribedNode({ alias: void 0, node: arg.CaseWhen.result, context }));\n }\n }\n results.push(\n node.defresult !== void 0 ? getDescribedNode({ alias: void 0, node: node.defresult, context }) : [{ name: \"?column?\", type: context.toTypeScriptType({ name: \"null\" }) }]\n );\n const types = results.flat().map((x) => x.type);\n const literalsOnly = types.some((x) => x.kind !== \"literal\" && x.value !== \"null\");\n const value = mergeDescribedColumnTypes(literalsOnly ? types.map(getBaseType) : types);\n return [\n {\n name: alias ?? \"case\",\n type: value\n }\n ];\n}\nfunction getBaseType(type) {\n switch (type.kind) {\n case \"object\":\n case \"union\":\n case \"array\":\n case \"type\":\n return type;\n case \"literal\":\n return type.base;\n }\n}\nfunction getDescribedBoolExpr({\n alias,\n context\n}) {\n return [\n {\n name: alias ?? \"?column?\",\n type: resolveType({\n context,\n nullable: false,\n type: context.toTypeScriptType({ name: \"bool\" })\n })\n }\n ];\n}\nfunction getDescribedSubLink({\n alias,\n context,\n node\n}) {\n const getSubLinkType = () => {\n if (node.subLinkType === LibPgQueryAST.SubLinkType.EXISTS_SUBLINK) {\n return context.toTypeScriptType({ name: \"bool\" });\n }\n if (node.subLinkType === LibPgQueryAST.SubLinkType.EXPR_SUBLINK) {\n const described = node.subselect?.SelectStmt ? getDescribedNode({\n alias: void 0,\n node: { SelectStmt: node.subselect.SelectStmt },\n context\n }) : [];\n return described.length > 0 ? described[0].type : context.toTypeScriptType({ name: \"unknown\" });\n }\n return context.toTypeScriptType({ name: \"unknown\" });\n };\n return [\n {\n name: alias ?? \"exists\",\n type: resolveType({\n context,\n nullable: false,\n type: getSubLinkType()\n })\n }\n ];\n}\nfunction getDescribedSelectStmt({\n alias,\n context,\n node\n}) {\n const subParsed = {\n version: 0,\n stmts: [{ stmt: { SelectStmt: node }, stmtLocation: 0, stmtLen: 0 }]\n };\n const subDescription = getASTDescription({\n parsed: subParsed,\n typesMap: context.typesMap,\n typeExprMap: context.typeExprMap,\n overridenColumnTypesMap: context.overridenColumnTypesMap,\n pgColsBySchemaAndTableName: context.pgColsBySchemaAndTableName,\n pgTypes: context.pgTypes,\n pgEnums: context.pgEnums,\n pgFns: context.pgFns,\n fieldTransform: context.fieldTransform\n });\n const firstColumn = subDescription.map.get(0);\n if (firstColumn) {\n return [\n {\n name: alias ?? firstColumn.name,\n type: firstColumn.type\n }\n ];\n }\n return [];\n}\nfunction getDescribedCoalesceExpr({\n alias,\n context,\n node\n}) {\n const firstArg = node.args.at(0);\n const unknownCoalesce = {\n name: alias ?? \"coalesce\",\n type: context.toTypeScriptType({ name: \"unknown\" })\n };\n if (firstArg === void 0) {\n return [unknownCoalesce];\n }\n const type = getDescribedNode({ alias: void 0, node: firstArg, context }).map((x) => asNonNullableType(x.type)).at(0);\n if (type === void 0) {\n return [];\n }\n return [\n {\n name: alias ?? \"coalesce\",\n type\n }\n ];\n}\nfunction getDescribedArrayExpr({\n alias,\n context,\n node\n}) {\n const types = mergeDescribedColumnTypes(\n node.elements.flatMap((node2) => getDescribedNode({ alias: void 0, node: node2, context })).map((x) => x.type)\n );\n return [\n {\n name: alias ?? \"?column?\",\n type: {\n kind: \"array\",\n value: types\n }\n }\n ];\n}\nfunction mergeDescribedColumnTypes(types) {\n const result = [];\n const seenSymbols = /* @__PURE__ */ new Set();\n function processType(type) {\n switch (type.kind) {\n case \"union\":\n type.value.forEach((subtype) => processType(subtype));\n break;\n case \"type\":\n case \"literal\":\n if (!seenSymbols.has(type.value)) {\n seenSymbols.add(type.value);\n result.push(type);\n }\n break;\n case \"object\":\n case \"array\":\n result.push(type);\n break;\n }\n }\n for (const t of types) {\n processType(t);\n }\n if (!seenSymbols.has(\"boolean\") && seenSymbols.has(\"true\") && seenSymbols.has(\"false\")) {\n seenSymbols.add(\"boolean\");\n result.push({ kind: \"type\", value: \"boolean\", type: \"bool\" });\n }\n if (seenSymbols.has(\"boolean\") && (seenSymbols.has(\"true\") || seenSymbols.has(\"false\"))) {\n const filtered = result.filter(\n (t) => !(t.kind === \"literal\" && (t.value === \"true\" || t.value === \"false\"))\n );\n return isSingleCell(filtered) ? filtered[0] : { kind: \"union\", value: filtered };\n }\n return isSingleCell(result) ? result[0] : { kind: \"union\", value: result };\n}\nfunction getDescribedTypeCast({\n alias,\n context,\n node\n}) {\n let typeName = node.typeName?.names.at(-1)?.String?.sval;\n if (typeName === \"int\") {\n typeName = \"int4\";\n }\n if (typeName === void 0 || node.arg === void 0) {\n return [];\n }\n const type = context.toTypeScriptType({ name: typeName });\n const innerDescribed = getDescribedNode({ alias, node: node.arg, context }).at(0);\n const nullable = fmap(innerDescribed, (x) => isDescribedColumnNullable(x.type)) ?? true;\n switch (true) {\n case node.arg.FuncCall !== void 0: {\n return [\n {\n name: alias ?? node.arg.FuncCall?.funcname.at(-1)?.String?.sval ?? \"?column?\",\n type: resolveType({ context, nullable, type })\n }\n ];\n }\n case node.arg.ColumnRef !== void 0: {\n return [\n {\n name: alias ?? concatStringNodes(node.arg.ColumnRef.fields),\n type: resolveType({ context, nullable, type })\n }\n ];\n }\n default: {\n return [\n {\n name: alias ?? typeName ?? \"?column?\",\n type: resolveType({ context, nullable, type })\n }\n ];\n }\n }\n}\nfunction getDescribedResTarget(params) {\n const { node, context } = params;\n if (node.val === void 0) {\n return [];\n }\n return getDescribedNode({\n alias: node.name,\n context,\n node: node.val\n });\n}\nfunction getDescribedFuncCall(params) {\n const functionName = params.node.funcname.at(-1)?.String?.sval;\n if (functionName === void 0) {\n return [];\n }\n switch (true) {\n case functionName === \"json_build_object\":\n case functionName === \"jsonb_build_object\":\n return getDescribedJsonBuildObjectFunCall(params);\n case functionName === \"json_agg\":\n case functionName === \"jsonb_agg\":\n return getDescribedJsonAggFunCall(params);\n case functionName === \"array_agg\":\n return getDescribedArrayAggFunCall(params);\n case functionName === \"unnest\":\n return getDescribedUnnestFunCall(params);\n default:\n return getDescribedFuncCallByPgFn(params);\n }\n}\nfunction getDescribedUnnestFunCall({\n alias,\n context,\n node\n}) {\n const functionName = node.funcname.at(-1)?.String?.sval ?? \"\";\n const name = alias ?? functionName;\n const firstArg = node.args?.at(0);\n if (firstArg === void 0) {\n return [{ name, type: context.toTypeScriptType({ name: \"unknown\" }) }];\n }\n const described = getDescribedNode({ alias: void 0, node: firstArg, context }).at(0);\n if (described === void 0) {\n return [{ name, type: context.toTypeScriptType({ name: \"unknown\" }) }];\n }\n function unwrap(type) {\n if (type.kind === \"array\") {\n return unwrap(type.value);\n }\n if (type.kind === \"union\") {\n const hasArray = type.value.some((t) => t.kind === \"array\");\n const unwrapped = type.value.filter((t) => !hasArray || !(t.kind === \"type\" && t.value === \"null\")).map(unwrap);\n return mergeDescribedColumnTypes(unwrapped);\n }\n if (type.kind === \"type\" && type.type.startsWith(\"_\")) {\n return { ...type, type: type.type.slice(1) };\n }\n return type;\n }\n return [{ name, type: unwrap(described.type) }];\n}\nfunction getDescribedFuncCallByPgFn({\n alias,\n context,\n node\n}) {\n const functionName = node.funcname.at(-1)?.String?.sval;\n const name = alias ?? functionName ?? \"?column?\";\n const args = (node.args ?? []).flatMap((node2) => {\n const described = getDescribedNode({ alias: void 0, node: node2, context }).at(0);\n if (described?.type.kind === \"type\") {\n return [described.type.value];\n }\n return [];\n });\n if (functionName === void 0) {\n return [{ name, type: context.toTypeScriptType({ name: \"unknown\" }) }];\n }\n const pgFnValue = args.length === 0 ? context.pgFns.get(functionName) ?? context.pgFns.get(`${functionName}(string)`) : context.pgFns.get(`${functionName}(${args.join(\", \")})`) ?? context.pgFns.get(`${functionName}(any)`) ?? context.pgFns.get(`${functionName}(unknown)`);\n const type = resolveType({\n context,\n nullable: !context.nonNullableColumns.has(name),\n type: { kind: \"type\", value: pgFnValue?.ts ?? \"unknown\", type: pgFnValue?.pg ?? \"unknown\" }\n });\n return [{ name, type }];\n}\nfunction getDescribedArrayAggFunCall({\n alias,\n context,\n node\n}) {\n const name = alias ?? concatStringNodes(node.funcname);\n const firstArg = fmap(node.args?.at(0), (node2) => {\n return {\n node: node2,\n described: getDescribedNode({ alias: void 0, node: node2, context })\n };\n });\n if (firstArg === null) {\n return [\n {\n name,\n type: context.toTypeScriptType({ name: \"unknown\" })\n }\n ];\n }\n const isSourceRef = context.resolver.sources.get(concatStringNodes(firstArg.node.ColumnRef?.fields)) !== void 0;\n const type = resolveType({\n context,\n nullable: !context.nonNullableColumns.has(name),\n type: {\n kind: \"array\",\n value: isSourceRef || firstArg.described.length > 1 ? {\n kind: \"object\",\n value: firstArg.described.map((x) => [x.name, x.type])\n } : firstArg.described[0].type\n }\n });\n return [{ name, type }];\n}\nfunction getDescribedJsonAggFunCall({\n alias,\n context,\n node\n}) {\n const name = alias ?? concatStringNodes(node.funcname);\n if (node.args === void 0 || !isSingleCell(node.args)) {\n return [];\n }\n const argNode = node.args[0];\n const cellType = getDescribedNode({ alias: void 0, node: argNode, context });\n if (cellType.length === 0) {\n return [];\n }\n const isSourceRef = context.resolver.sources.get(concatStringNodes(argNode.ColumnRef?.fields)) !== void 0;\n const type = resolveType({\n context,\n nullable: !context.nonNullableColumns.has(name),\n type: {\n kind: \"array\",\n value: isSourceRef || cellType.length > 1 ? {\n kind: \"object\",\n value: cellType.map((x) => [x.name, x.type])\n } : cellType[0].type\n }\n });\n return [{ name, type }];\n}\nfunction getDescribedJsonBuildObjectFunCall({\n alias,\n context,\n node\n}) {\n const functionName = node.funcname.at(-1)?.String?.sval ?? \"\";\n const name = alias ?? functionName;\n const unknownDescribedColumn = {\n name,\n type: context.toTypeScriptType({ name: \"unknown\" })\n };\n if (node.args === void 0) {\n return [unknownDescribedColumn];\n }\n const describedColumn = { kind: \"object\", value: [] };\n for (const [idx, arg] of node.args.entries()) {\n if (idx % 2 === 1) {\n continue;\n }\n const valueNode = node.args.at(idx + 1);\n if (valueNode === void 0) {\n throw new Error(normalizeIndent`\n argument list must have even number of elements\n Hint: The arguments of ${functionName}() must consist of alternating keys and values.\n `);\n }\n const alias2 = arg.A_Const?.sval?.sval;\n const type = fmap(node.args[idx + 1], (node2) => {\n return getDescribedNode({ alias: alias2, node: node2, context }).at(0)?.type ?? null;\n });\n if (alias2 === void 0 || type === null) {\n return [unknownDescribedColumn];\n }\n const transformedKey = toCase(alias2, context.fieldTransform);\n describedColumn.value.push([transformedKey, resolveType({ context, nullable: false, type })]);\n }\n return [\n {\n name,\n type: describedColumn\n }\n ];\n}\nfunction getColumnRefOrigins({\n context,\n node\n}) {\n if (isColumnTableStarRef(node.fields)) {\n const source = node.fields[0].String.sval;\n return (\n // lookup in cte\n context.select.withClause?.ctes.find((cte) => cte.CommonTableExpr?.ctename === source)?.CommonTableExpr?.ctequery?.SelectStmt?.targetList ?? // lookup in subselect\n context.select.fromClause?.map((from) => from.RangeSubselect).find((subselect) => subselect?.alias?.aliasname === source)?.subquery?.SelectStmt?.targetList\n );\n }\n if (isColumnTableColumnRef(node.fields)) {\n const source = node.fields[0].String.sval;\n const column = node.fields[1].String.sval;\n const origin = (\n // lookup in cte\n context.select.withClause?.ctes.find((cte) => cte.CommonTableExpr?.ctename === source)?.CommonTableExpr?.ctequery?.SelectStmt?.targetList?.find(\n (x) => x.ResTarget?.name === column\n ) ?? // lookup in subselect\n context.select.fromClause?.map((from) => from.RangeSubselect).find((subselect) => subselect?.alias?.aliasname === source)?.subquery?.SelectStmt?.targetList?.find((x) => x.ResTarget?.name === column)\n );\n if (!origin) return void 0;\n return [origin];\n }\n}\nfunction getContextForColumnRef(context, node) {\n if (isColumnTableColumnRef(node.fields) || isColumnTableStarRef(node.fields)) {\n const sourceName = node.fields[0].String.sval;\n const source = context.resolver.sources.get(sourceName);\n if (source?.kind === \"cte\") {\n return { ...context, resolver: source.sources };\n }\n }\n return context;\n}\nfunction getDescribedColumnRef({\n alias,\n context,\n node\n}) {\n const definitionNodes = getColumnRefOrigins({ context, node });\n if (definitionNodes) {\n const defContext = getContextForColumnRef(context, node);\n return definitionNodes.flatMap(\n (node2) => getDescribedNode({ alias, node: node2, context: defContext })\n );\n }\n return getDescribedColumnRefFromSchema({ alias, context, node });\n}\nfunction getDescribedColumnRefFromSchema({\n alias,\n context,\n node\n}) {\n if (isColumnStarRef(node.fields)) {\n return getDescribedColumnByResolvedColumns({\n alias,\n context,\n resolved: context.resolver.getAllResolvedColumns().map((x) => x.column)\n });\n }\n if (isColumnTableStarRef(node.fields)) {\n return getDescribedColumnByResolvedColumns({\n alias,\n context,\n resolved: context.resolver.getResolvedColumnsInTable(node.fields[0].String.sval)\n });\n }\n if (isColumnUnknownRef(node.fields)) {\n const resolved = context.resolver.getColumnsByTargetField({\n kind: \"unknown\",\n field: node.fields[0].String.sval\n });\n return getDescribedColumnByResolvedColumns({\n alias,\n context,\n resolved: resolved ?? []\n });\n }\n if (isColumnTableColumnRef(node.fields)) {\n const resolved = context.resolver.getNestedResolvedTargetField({\n kind: \"column\",\n table: node.fields[0].String.sval,\n column: node.fields[1].String.sval\n });\n return getDescribedColumnByResolvedColumns({\n alias,\n context,\n resolved: fmap(resolved, (x) => [x]) ?? []\n });\n }\n return [];\n}\nfunction getDescribedColumnByResolvedColumns(params) {\n return params.resolved.map(({ column, isNotNull }) => {\n const getType = () => {\n const overridenType = params.context.overridenColumnTypesMap.get(column.tableName)?.get(column.colName);\n if (overridenType !== void 0) {\n return {\n kind: \"type\",\n value: overridenType,\n type: params.context.pgTypes.get(column.colTypeOid)?.name ?? \"unknown\"\n };\n }\n return params.context.toTypeScriptType({\n oid: column.colTypeOid,\n baseOid: column.colBaseTypeOid\n });\n };\n return {\n name: params.alias ?? column.colName,\n type: resolveType({\n context: params.context,\n nullable: !isNotNull,\n type: getType()\n })\n };\n });\n}\nfunction getDescribedAConst({\n alias,\n context,\n node\n}) {\n const type = (() => {\n switch (true) {\n case node.boolval !== void 0:\n return {\n kind: \"literal\",\n value: node.boolval.boolval ? \"true\" : \"false\",\n base: context.toTypeScriptType({ name: \"bool\" })\n };\n case node.bsval !== void 0:\n return context.toTypeScriptType({ name: \"bytea\" });\n case node.fval !== void 0:\n return {\n kind: \"literal\",\n value: node.fval.toString(),\n base: context.toTypeScriptType({ name: \"float8\" })\n };\n case node.isnull !== void 0:\n return context.toTypeScriptType({ name: \"null\" });\n case node.ival !== void 0:\n return {\n kind: \"literal\",\n value: (node.ival.ival ?? 0).toString(),\n base: context.toTypeScriptType({ name: \"int4\" })\n };\n case node.sval !== void 0:\n return {\n kind: \"literal\",\n value: `'${node.sval.sval}'`,\n base: context.toTypeScriptType({ name: \"text\" })\n };\n default:\n return context.toTypeScriptType({ name: \"unknown\" });\n }\n })();\n return [\n {\n name: alias ?? \"?column?\",\n type: resolveType({ context, nullable: node.isnull === true, type })\n }\n ];\n}\nfunction asNonNullableType(type) {\n switch (type.kind) {\n case \"object\":\n case \"array\":\n case \"literal\":\n return type;\n case \"union\": {\n const filtered = type.value.filter(\n (described) => described.kind !== \"type\" || described.value !== \"null\"\n );\n if (filtered.length === 0) {\n return { kind: \"type\", value: \"unknown\", type: \"unknown\" };\n }\n if (filtered.length === 1) {\n return filtered[0];\n }\n return { kind: \"union\", value: filtered };\n }\n case \"type\":\n return type.value === \"null\" ? { kind: \"type\", value: \"unknown\", type: \"unknown\" } : type;\n }\n}\nfunction isDescribedColumnNullable(type) {\n return type.kind === \"union\" && type.value.some((x) => x.kind === \"type\" && x.value === \"null\");\n}\nfunction resolveType(params) {\n if (params.nullable && params.type.value !== \"null\") {\n return {\n kind: \"union\",\n value: [params.type, params.context.toTypeScriptType({ name: \"null\" })]\n };\n }\n return params.type;\n}\nfunction concatStringNodes(nodes) {\n return nodes?.map((x) => x.String?.sval).filter(Boolean).join(\".\") ?? \"\";\n}\nfunction hasColumnReference(node) {\n if (node === void 0) {\n return false;\n }\n if (node.ColumnRef !== void 0) {\n return true;\n }\n if (node.A_Const !== void 0) {\n return false;\n }\n if (node.TypeCast !== void 0) {\n return hasColumnReference(node.TypeCast.arg);\n }\n if (node.A_Expr !== void 0) {\n return hasColumnReference(node.A_Expr.lexpr) || hasColumnReference(node.A_Expr.rexpr);\n }\n if (node.BoolExpr !== void 0) {\n return (node.BoolExpr.args ?? []).some(hasColumnReference);\n }\n if (node.FuncCall !== void 0) {\n return (node.FuncCall.args ?? []).some(hasColumnReference);\n }\n if (node.CoalesceExpr !== void 0) {\n return node.CoalesceExpr.args.some(hasColumnReference);\n }\n if (node.CaseExpr !== void 0) {\n if (node.CaseExpr.arg && hasColumnReference(node.CaseExpr.arg)) {\n return true;\n }\n if (node.CaseExpr.defresult && hasColumnReference(node.CaseExpr.defresult)) {\n return true;\n }\n return node.CaseExpr.args.some((caseWhen) => {\n if (caseWhen.CaseWhen === void 0) {\n return false;\n }\n return hasColumnReference(caseWhen.CaseWhen.expr) || hasColumnReference(caseWhen.CaseWhen.result);\n });\n }\n if (node.A_ArrayExpr !== void 0) {\n return (node.A_ArrayExpr.elements ?? []).some(hasColumnReference);\n }\n if (node.SubLink !== void 0) {\n return true;\n }\n return false;\n}\n\nfunction isParsedInsertResult(parsed) {\n return parsed.stmts[0]?.stmt?.InsertStmt !== void 0;\n}\nfunction validateInsertResult(parsed, pgColsBySchemaAndTableName, query) {\n const insertStmt = parsed.stmts[0].stmt.InsertStmt;\n if (insertStmt.relation === void 0) {\n return;\n }\n const schemaName = insertStmt.relation.schemaname ?? \"public\";\n const tableName = insertStmt.relation.relname;\n const tableCols = pgColsBySchemaAndTableName.get(schemaName)?.get(tableName);\n if (tableCols === void 0) {\n return;\n }\n const insertCols = getInsertColumns(insertStmt, tableCols);\n const missing = tableCols.filter(\n (c) => c.colNotNull && !c.colHasDef && c.colIdentity === \"\" && !insertCols.includes(c.colName)\n );\n if (missing.length === 0) {\n return;\n }\n const position = (parsed.stmts[0]?.stmtLocation ?? 0) + 1;\n const columnsStr = missing.map((c) => `\"${c.colName}\"`).join(\", \");\n const message = missing.length === 1 ? [\n `null value in column ${columnsStr} violates not-null constraint`,\n `Hint: Column ${columnsStr} is not nullable and has no default value.`\n ].join(\"\\n\") : [\n `null value in columns ${columnsStr} violates not-null constraint`,\n `Hint: Columns ${columnsStr} are not nullable and have no default value.`\n ].join(\"\\n\");\n throw PostgresError.of({\n queryText: query.text,\n message,\n line: \"1\",\n position,\n sourcemaps: query.sourcemaps\n });\n}\nfunction getInsertColumns(stmt, tableCols) {\n if (stmt.cols) {\n return stmt.cols.map((col) => col.ResTarget?.name).filter((name) => Boolean(name));\n }\n if (stmt.selectStmt === void 0) {\n return [];\n }\n const valuesFromSelect = stmt.selectStmt.SelectStmt?.valuesLists?.at(0)?.List?.items;\n if (valuesFromSelect !== void 0) {\n return tableCols.slice(0, valuesFromSelect.length).map((c) => c.colName);\n }\n return tableCols.map((c) => c.colName);\n}\n\nfunction createEmptyCache() {\n return {\n base: /* @__PURE__ */ new Map(),\n overrides: {\n types: /* @__PURE__ */ new Map(),\n columns: /* @__PURE__ */ new Map()\n },\n functions: /* @__PURE__ */ new Map()\n };\n}\nfunction createGenerator() {\n const cache = createEmptyCache();\n return {\n generate: (params) => generate(params, cache),\n dropCacheKey: (cacheKey) => cache.base.delete(cacheKey),\n clearCache: () => {\n cache.base.clear();\n cache.overrides.types.clear();\n cache.overrides.columns.clear();\n cache.functions.clear();\n }\n };\n}\nasync function generate(params, cache) {\n const { sql, query, cacheKey, cacheMetadata = true } = params;\n const {\n pgColsByTableOidCache,\n pgColsBySchemaAndTableName,\n pgTypes,\n pgEnums,\n pgFnsByName,\n pgTypeExprMap\n } = await getOrSetFromMapWithEnabled({\n shouldCache: cacheMetadata,\n map: cache.base,\n key: cacheKey,\n value: () => getDatabaseMetadata(sql)\n });\n const typesMap = await getOrSetFromMapWithEnabled({\n shouldCache: cacheMetadata,\n map: cache.overrides.types,\n key: JSON.stringify(params.overrides?.types),\n value: () => {\n const map = /* @__PURE__ */ new Map([[\"array\", { override: false, value: \"array\" }]]);\n for (const [key, value] of defaultTypesMap.entries()) {\n map.set(key, { override: false, value });\n }\n for (const [k, v] of Object.entries(params.overrides?.types ?? {})) {\n map.set(k, { override: true, value: typeof v === \"string\" ? v : v.return });\n }\n return map;\n }\n });\n const overridenColumnTypesMap = await getOrSetFromMapWithEnabled({\n shouldCache: cacheMetadata,\n map: cache.overrides.columns,\n key: JSON.stringify(params.overrides?.columns),\n value: () => {\n const map = /* @__PURE__ */ new Map();\n for (const [colPath, type] of Object.entries(params.overrides?.columns ?? {})) {\n const [table, column] = colPath.split(\".\");\n if (table === void 0 || column === void 0) {\n throw new Error(`Invalid override column key: ${colPath}. Expected format: table.column`);\n }\n map.has(table) ? map.get(table)?.set(column, type) : map.set(table, /* @__PURE__ */ new Map([[column, type]]));\n }\n return map;\n }\n });\n function byReturnType(a, b) {\n const priority = [\"numeric\", \"int8\"];\n return priority.indexOf(a.returnType) - priority.indexOf(b.returnType);\n }\n const functionsMap = await getOrSetFromMapWithEnabled({\n shouldCache: cacheMetadata,\n map: cache.functions,\n key: JSON.stringify(params.overrides?.types),\n value: () => {\n const map = /* @__PURE__ */ new Map();\n for (const [functionName, signatures] of pgFnsByName.entries()) {\n for (const signature of signatures.sort(byReturnType)) {\n const tsArgs = signature.arguments.map((arg) => {\n return typesMap.get(arg)?.value ?? \"unknown\";\n });\n const tsReturnType = typesMap.get(signature.returnType)?.value ?? signature.returnType;\n const key = tsArgs.length === 0 ? functionName : `${functionName}(${tsArgs.join(\", \")})`;\n map.set(key, { ts: tsReturnType, pg: signature.returnType });\n }\n }\n return map;\n }\n });\n try {\n const result = await sql.unsafe(query.text, [], { prepare: true }).describe();\n const parsed = await parser.parse(query.text);\n if (isParsedInsertResult(parsed)) {\n validateInsertResult(parsed, pgColsBySchemaAndTableName, query);\n }\n if (result.columns === void 0 || result.columns === null || result.columns.length === 0) {\n return either.right({ output: null, unknownColumns: [], stmt: result, query });\n }\n const duplicateCols = result.columns.filter(\n (col, index) => result.columns.find((c, i) => c.name === col.name && i != index)\n );\n if (duplicateCols.length > 0) {\n const dupes = duplicateCols.map((col) => {\n const tableCols = pgColsByTableOidCache.get(col.table);\n const tableCol = col.number !== 0 ? tableCols?.at(col.number - 1) : tableCols?.find((c) => c.colName === col.name);\n return {\n table: tableCol?.tableName,\n column: col.name,\n originalColumn: tableCol?.colName\n };\n });\n const dupePosition = (() => {\n const match = query.text.search(new RegExp(`\\\\b${duplicateCols[0].name}\\\\b`));\n return (match > -1 ? match : query.text.search(/SELECT/i)) + 1;\n })();\n return either.left(\n DuplicateColumnsError.of({\n queryText: query.text,\n sourcemaps: query.sourcemaps,\n position: dupePosition,\n columns: dupes.map((x) => {\n return x.column !== x.originalColumn ? `${x.table}.${x.originalColumn} (alias: ${x.column})` : `${x.table}.${x.column}`;\n })\n })\n );\n }\n const astQueryDescription = getASTDescription({\n parsed,\n typesMap,\n overridenColumnTypesMap,\n pgColsBySchemaAndTableName,\n pgTypes,\n pgEnums,\n pgFns: functionsMap,\n typeExprMap: pgTypeExprMap,\n fieldTransform: params.fieldTransform\n });\n const columns = result.columns.map((col, position) => {\n const introspected = pgColsByTableOidCache.get(col.table)?.find((x) => x.colNum === col.number);\n const astDescribed = astQueryDescription.map.get(position);\n return {\n described: col,\n astDescribed,\n introspected,\n isNonNullableBasedOnAST: astQueryDescription.meta.nonNullableColumns.has(col.name)\n };\n });\n const context = {\n columns,\n pgTypes,\n pgEnums,\n relationsWithJoins: astQueryDescription.meta.relations,\n overrides: {\n types: typesMap,\n columns: overridenColumnTypesMap\n },\n pgColsBySchemaAndTableName,\n fieldTransform: params.fieldTransform\n };\n return either.right({\n output: getTypedColumnEntries({ context }),\n unknownColumns: columns.filter((x) => x.astDescribed === void 0).map((x) => x.described.name),\n stmt: result,\n query\n });\n } catch (e) {\n if (isPostgresError(e)) {\n return either.left(\n PostgresError.of({\n queryText: query.text,\n sourcemaps: query.sourcemaps,\n message: e.message,\n line: e.line,\n position: e.position\n })\n );\n }\n throw e;\n }\n}\nasync function getDatabaseMetadata(sql) {\n const pgTypes = await getPgTypes(sql);\n const pgCols = await getPgCols(sql);\n const pgEnums = await getPgEnums(sql);\n const pgFns = await getPgFunctions(sql);\n const pgColsByTableOidCache = groupBy(pgCols, \"tableOid\");\n const pgColsBySchemaAndTableName = groupBy(pgCols, \"schemaName\", \"tableName\");\n const pgFnsByName = groupBy(pgFns, \"name\");\n const pgTypeExprMap = await getPgTypeExprMap(sql);\n return {\n pgTypes,\n pgCols,\n pgEnums,\n pgColsByTableOidCache,\n pgColsBySchemaAndTableName,\n pgFnsByName,\n pgTypeExprMap\n };\n}\nfunction getTypedColumnEntries(params) {\n const value = params.context.columns.map(\n (col) => getResolvedTargetEntry({ col, context: params.context })\n );\n return { kind: \"object\", value };\n}\nfunction isNullableResolvedTarget(target) {\n switch (target.kind) {\n case \"type\":\n return [\"any\", \"null\"].includes(target.value) === false;\n case \"union\":\n return target.value.some(isNullableResolvedTarget);\n case \"array\":\n return isNullableResolvedTarget(target.value);\n case \"object\":\n return target.value.some(([, value]) => isNullableResolvedTarget(value));\n case \"literal\":\n return false;\n }\n}\nfunction buildInterfacePropertyValue(params) {\n const isNullable = params.isNullable && isNullableResolvedTarget(params.value);\n return [\n params.key,\n isNullable ? { kind: \"union\", value: [params.value, { kind: \"type\", value: \"null\", type: \"null\" }] } : params.value\n ];\n}\nfunction checkIsNullableDueToRelation(params) {\n const { col, relationsWithJoins } = params;\n const findByJoin = relationsWithJoins.find((x) => x.joinRelName === col.tableName);\n if (findByJoin !== void 0) {\n switch (findByJoin.joinType) {\n case LibPgQueryAST.JoinType.JOIN_LEFT:\n case LibPgQueryAST.JoinType.JOIN_FULL:\n return true;\n case LibPgQueryAST.JoinType.JOIN_TYPE_UNDEFINED:\n case LibPgQueryAST.JoinType.JOIN_INNER:\n case LibPgQueryAST.JoinType.JOIN_RIGHT:\n case LibPgQueryAST.JoinType.JOIN_SEMI:\n case LibPgQueryAST.JoinType.JOIN_ANTI:\n case LibPgQueryAST.JoinType.JOIN_UNIQUE_OUTER:\n case LibPgQueryAST.JoinType.JOIN_UNIQUE_INNER:\n case LibPgQueryAST.JoinType.UNRECOGNIZED:\n return false;\n default:\n assertNever(findByJoin.joinType);\n }\n }\n const findByRel = relationsWithJoins.filter((x) => x.relName === col.tableName);\n for (const rel of findByRel) {\n switch (rel.joinType) {\n case LibPgQueryAST.JoinType.JOIN_RIGHT:\n case LibPgQueryAST.JoinType.JOIN_FULL:\n return true;\n case LibPgQueryAST.JoinType.JOIN_TYPE_UNDEFINED:\n case LibPgQueryAST.JoinType.JOIN_INNER:\n case LibPgQueryAST.JoinType.JOIN_LEFT:\n case LibPgQueryAST.JoinType.JOIN_SEMI:\n case LibPgQueryAST.JoinType.JOIN_ANTI:\n case LibPgQueryAST.JoinType.JOIN_UNIQUE_OUTER:\n case LibPgQueryAST.JoinType.JOIN_UNIQUE_INNER:\n case LibPgQueryAST.JoinType.UNRECOGNIZED:\n return false;\n default:\n assertNever(rel.joinType);\n }\n }\n return false;\n}\nfunction getResolvedTargetEntry(params) {\n if (params.col.astDescribed !== void 0) {\n return [\n toCase(params.col.described.name, params.context.fieldTransform),\n params.col.astDescribed.type\n ];\n }\n const pgTypeOid = params.col.introspected?.colBaseTypeOid ?? params.col.described.type;\n const pgType = params.context.pgTypes.get(pgTypeOid);\n const getEnumByOid = (oid) => {\n const pgEnum = params.context.pgEnums.get(oid);\n if (pgEnum === void 0) {\n return void 0;\n }\n return {\n kind: \"union\",\n value: pgEnum.values.map(\n (value2) => ({\n kind: \"type\",\n value: `'${value2}'`,\n type: pgEnum.name\n })\n )\n };\n };\n const valueAsEnum = (() => {\n const enumTarget = getEnumByOid(pgTypeOid);\n if (enumTarget !== void 0) {\n return enumTarget;\n }\n if (pgType?.typelem !== void 0 && pgType.typelem !== 0) {\n const elemEnumTarget = getEnumByOid(pgType.typelem);\n if (elemEnumTarget !== void 0) {\n return { kind: \"array\", value: elemEnumTarget };\n }\n }\n return void 0;\n })();\n const valueAsType = getTsTypeFromPgTypeOid({\n pgTypeOid,\n pgTypes: params.context.pgTypes\n });\n const valueAsOverride = (() => {\n const pgType2 = params.context.pgTypes.get(\n params.col.introspected?.colTypeOid ?? params.col.described.type\n );\n if (!pgType2) return void 0;\n const columnOverride = params?.context?.overrides?.columns.get(params.col.introspected?.tableName ?? \"\")?.get(params.col.introspected?.colName ?? params.col.described.name);\n if (columnOverride !== void 0) {\n return { kind: \"type\", value: columnOverride, type: pgType2.name };\n }\n const typeOverride = params?.context?.overrides?.types.get(pgType2.name);\n if (typeOverride !== void 0) {\n return {\n kind: \"type\",\n value: typeOverride.value,\n type: pgType2.name\n };\n }\n return void 0;\n })();\n const value = valueAsOverride ?? valueAsEnum ?? valueAsType;\n const key = params.col.described.name ?? params.col.introspected?.colName;\n let isNonNullable = params.col.isNonNullableBasedOnAST;\n if (!isNonNullable && params.col.introspected !== void 0) {\n isNonNullable = params.col.introspected.colNotNull;\n if (checkIsNullableDueToRelation({\n col: params.col.introspected,\n relationsWithJoins: params.context.relationsWithJoins\n })) {\n isNonNullable = false;\n }\n }\n return buildInterfacePropertyValue({\n key: toCase(key, params.context.fieldTransform),\n value,\n isNullable: !isNonNullable\n });\n}\nfunction getTsTypeFromPgTypeOid(params) {\n const pgType = params.pgTypes.get(params.pgTypeOid);\n if (pgType === void 0) {\n return { kind: \"type\", value: \"unknown\", type: \"unknown\" };\n }\n return getTsTypeFromPgType({ pgTypeName: pgType.name });\n}\nfunction getTsTypeFromPgType(params) {\n const { isArray, pgType } = parsePgType(params.pgTypeName);\n const tsType = defaultTypesMap.get(pgType) ?? \"any\";\n const property = { kind: \"type\", value: tsType, type: pgType };\n return isArray ? { kind: \"array\", value: property } : property;\n}\nfunction isPgTypeArray(pgType) {\n return pgType.startsWith(\"_\");\n}\nfunction parsePgType(pgType) {\n const isArray = isPgTypeArray(pgType);\n return {\n isArray,\n pgType: isArray ? pgType.slice(1) : pgType\n };\n}\nasync function getPgEnums(sql) {\n const rows = await sql`\n SELECT pg_type.oid, pg_type.typname, pg_enum.enumlabel\n FROM pg_type\n JOIN pg_enum ON pg_enum.enumtypid = pg_type.oid\n WHERE pg_type.typtype = 'e'\n ORDER BY pg_type.typname, pg_enum.enumsortorder\n `;\n const map = /* @__PURE__ */ new Map();\n for (const row of rows) {\n const existing = map.get(row.oid);\n if (existing === void 0) {\n map.set(row.oid, {\n name: row.typname,\n values: [row.enumlabel]\n });\n continue;\n }\n existing.values.push(row.enumlabel);\n }\n return map;\n}\nasync function getPgTypes(sql) {\n const rows = await sql`\n SELECT oid, typname as name, typelem FROM pg_type\n `;\n const map = /* @__PURE__ */ new Map();\n for (const row of rows) {\n map.set(row.oid, row);\n }\n return map;\n}\nasync function getPgCols(sql) {\n const rows = await sql`\n SELECT\n pg_class.oid AS \"tableOid\",\n pg_namespace.nspname AS \"schemaName\",\n pg_class.relname AS \"tableName\",\n pg_attribute.attname AS \"colName\",\n pg_type.oid AS \"colTypeOid\",\n CASE\n WHEN pg_type.typtype = 'd' THEN\n (SELECT pt.oid FROM pg_type pt WHERE pt.oid = pg_type.typbasetype)\n ELSE\n NULL\n END AS \"colBaseTypeOid\",\n pg_attribute.attnum AS \"colNum\",\n pg_attribute.atthasdef \"colHasDef\",\n pg_attribute.attnotnull \"colNotNull\",\n pg_attribute.attidentity \"colIdentity\"\n FROM\n pg_attribute,\n pg_class,\n pg_type,\n pg_namespace\n WHERE TRUE\n AND pg_attribute.attrelid = pg_class.oid\n AND pg_attribute.atttypid = pg_type.oid\n AND pg_class.relnamespace = pg_namespace.oid\n AND pg_attribute.attnum >= 1\n ORDER BY\n pg_class.relname,\n pg_attribute.attnum\n `;\n return rows;\n}\nasync function getPgFunctions(sql) {\n const rows = await sql`\n SELECT\n pg_proc.proname AS \"name\",\n pg_catalog.pg_get_function_arguments(pg_proc.oid) AS \"argumentsString\",\n pg_type.typname AS \"returnType\"\n FROM\n pg_catalog.pg_proc\n JOIN\n pg_catalog.pg_type ON pg_proc.prorettype = pg_type.oid\n WHERE\n pg_proc.pronamespace::regnamespace = 'pg_catalog'::regnamespace\n `;\n return rows.map((row) => ({\n name: row.name,\n arguments: row.argumentsString.replace(/\"/, \"\").split(\", \").filter((x) => x !== \"\"),\n returnType: row.returnType\n }));\n}\nasync function getPgTypeExprMap(sql) {\n const rows = await sql`\n SELECT\n l.typname as left,\n o.oprname as operator,\n r.typname as right,\n ret.typname AS result\n FROM pg_operator o\n JOIN pg_type l ON l.oid = o.oprleft\n JOIN pg_type r ON r.oid = o.oprright\n JOIN pg_type ret ON ret.oid = o.oprresult\n WHERE o.oprleft <> 0 AND o.oprright <> 0\n `;\n const map = /* @__PURE__ */ new Map();\n for (const row of rows) {\n const leftMap = map.get(row.left) ?? /* @__PURE__ */ new Map();\n const rightMap = leftMap.get(row.operator) ?? /* @__PURE__ */ new Map();\n rightMap.set(row.right, row.result);\n leftMap.set(row.operator, rightMap);\n map.set(row.left, leftMap);\n }\n return map;\n}\n\nexport { createGenerator };\n//# sourceMappingURL=index.mjs.map\n","import postgres, { Sql } from \"postgres\";\nimport { match } from \"ts-pattern\";\nimport { RuleOptionConnection } from \"../rules/RuleOptions\";\nimport {\n ConnectionPayload,\n getConnectionStrategyByRuleOptionConnection,\n} from \"../rules/check-sql.utils\";\nimport { O, pipe } from \"./fp-ts\";\nimport { mapConnectionOptionsToString, parseConnection } from \"./pg.utils\";\n\nexport function createConnectionManager() {\n \n const connectionMap: Map<string, Sql<any>> = new Map();\n\n return {\n \n getOrCreate: (databaseUrl: string, options?: postgres.Options<any>) =>\n getOrCreateConnection(databaseUrl, connectionMap, options),\n close: (params: CloseConnectionParams) => closeConnection(params, connectionMap),\n };\n}\n\nfunction getOrCreateConnection(\n databaseUrl: string,\n \n connectionMap: Map<string, Sql<any>>,\n \n options?: postgres.Options<any>,\n): ConnectionPayload {\n return pipe(\n O.fromNullable(connectionMap.get(databaseUrl)),\n O.foldW(\n () => {\n const sql = postgres(databaseUrl, options);\n connectionMap.set(databaseUrl, sql);\n return { sql, databaseUrl, isFirst: true };\n },\n (sql) => ({ sql, databaseUrl, isFirst: false }),\n ),\n );\n}\n\nexport interface CloseConnectionParams {\n connection: RuleOptionConnection;\n projectDir: string;\n}\n\n \nfunction closeConnection(params: CloseConnectionParams, connectionMap: Map<string, Sql<any>>) {\n const { connection, projectDir } = params;\n const strategy = getConnectionStrategyByRuleOptionConnection({ connection, projectDir });\n\n match(strategy)\n .with({ type: \"databaseUrl\" }, ({ databaseUrl }) => {\n const sql = connectionMap.get(databaseUrl);\n if (sql) {\n sql.end();\n connectionMap.delete(databaseUrl);\n }\n })\n .with({ type: \"migrations\" }, ({ connectionUrl, databaseName }) => {\n const connectionOptions = { ...parseConnection(connectionUrl), database: databaseName };\n const databaseUrl = mapConnectionOptionsToString(connectionOptions);\n const sql = connectionMap.get(databaseUrl);\n const migrationSql = connectionMap.get(connectionUrl);\n if (sql) {\n sql.end();\n connectionMap.delete(databaseUrl);\n }\n if (migrationSql) {\n migrationSql.end();\n connectionMap.delete(connectionUrl);\n }\n })\n .exhaustive();\n}\n","import chokidar from \"chokidar\";\nimport path from \"path\";\nimport { z } from \"zod\";\nimport { RuleOptionConnection, zConnectionMigration } from \"../rules/RuleOptions\";\nimport {\n DEFAULT_CONNECTION_URL,\n getDatabaseName,\n getMigrationDatabaseMetadata,\n} from \"../rules/check-sql.utils\";\nimport { CloseConnectionParams } from \"./connection-manager\";\n\ninterface WatchMigrationsDirParams {\n projectDir: string;\n connection: RuleOptionConnection & z.infer<typeof zConnectionMigration> & { watchMode: true };\n dropCacheKeyFn: (cacheKey: string) => void;\n closeConnectionFn: (params: CloseConnectionParams) => void;\n}\n\nexport function createWatchManager() {\n const migrationPaths = new Map<string, { onChange: () => void }>();\n const watcher = chokidar.watch([], { ignoreInitial: true }).on(\"all\", (_, filePath) => {\n for (const [path, { onChange }] of migrationPaths.entries()) {\n if (filePath.startsWith(path)) {\n return onChange();\n }\n }\n });\n\n const watchMigrationsDir = (params: WatchMigrationsDirParams) => {\n const migrationPath = path.join(params.projectDir, params.connection.migrationsDir);\n\n if (migrationPaths.has(migrationPath)) {\n return;\n }\n\n migrationPaths.set(migrationPath, {\n onChange: () => {\n const { databaseUrl } = getMigrationDatabaseMetadata({\n connectionUrl: params.connection.connectionUrl ?? DEFAULT_CONNECTION_URL,\n databaseName: getDatabaseName({\n databaseName: params.connection.databaseName,\n migrationsDir: params.connection.migrationsDir,\n projectDir: params.projectDir,\n }),\n });\n\n params.dropCacheKeyFn(databaseUrl);\n params.closeConnectionFn({ connection: params.connection, projectDir: params.projectDir });\n },\n });\n\n watcher.add(migrationPath);\n };\n\n return {\n watchMigrationsDir,\n };\n}\n","import {\n createGenerator,\n GenerateError,\n GenerateParams,\n GenerateResult,\n} from \"@ts-safeql/generate\";\nimport {\n DatabaseInitializationError,\n InternalError,\n InvalidMigrationError,\n InvalidMigrationsPathError,\n QuerySourceMapEntry,\n} from \"@ts-safeql/shared\";\nimport path from \"path\";\nimport { runAsWorker } from \"synckit\";\nimport { match } from \"ts-pattern\";\nimport {\n ConnectionPayload,\n getConnectionStrategyByRuleOptionConnection,\n getMigrationDatabaseMetadata,\n isWatchMigrationsDirEnabled,\n runMigrations,\n} from \"../rules/check-sql.utils\";\nimport { ConnectionTarget, RuleOptionConnection } from \"../rules/RuleOptions\";\nimport { createConnectionManager } from \"../utils/connection-manager\";\nimport { J, pipe, TE } from \"../utils/fp-ts\";\nimport { initDatabase } from \"../utils/pg.utils\";\nimport { createWatchManager } from \"../utils/watch-manager\";\n\nexport interface CheckSQLWorkerParams {\n connection: RuleOptionConnection;\n target: ConnectionTarget;\n query: { text: string; sourcemaps: QuerySourceMapEntry[] };\n projectDir: string;\n}\n\nexport type CheckSQLWorkerHandler = typeof handler;\n\nconst generator = createGenerator();\nconst connections = createConnectionManager();\nconst watchers = createWatchManager();\n\nasync function handler(params: CheckSQLWorkerParams) {\n if (isWatchMigrationsDirEnabled(params.connection)) {\n watchers.watchMigrationsDir({\n connection: params.connection,\n projectDir: params.projectDir,\n dropCacheKeyFn: generator.dropCacheKey,\n closeConnectionFn: connections.close,\n });\n }\n\n const result = await pipe(\n TE.Do,\n TE.chain(() => workerHandler(params)),\n )();\n\n if (params.connection.keepAlive === false) {\n connections.close({ connection: params.connection, projectDir: params.projectDir });\n }\n\n return J.stringify(result);\n}\n\nrunAsWorker(handler);\n\nexport type WorkerError =\n | InvalidMigrationsPathError\n | InvalidMigrationError\n | InternalError\n | DatabaseInitializationError\n | GenerateError;\nexport type WorkerResult = GenerateResult;\n\nfunction workerHandler(params: CheckSQLWorkerParams): TE.TaskEither<WorkerError, WorkerResult> {\n const strategy = getConnectionStrategyByRuleOptionConnection(params);\n\n const connectionPayload = match(strategy)\n .with({ type: \"databaseUrl\" }, ({ databaseUrl }) =>\n TE.right(connections.getOrCreate(databaseUrl)),\n )\n .with({ type: \"migrations\" }, ({ migrationsDir, databaseName, connectionUrl }) => {\n const { connectionOptions, databaseUrl } = getMigrationDatabaseMetadata({\n connectionUrl,\n databaseName,\n });\n const { sql, isFirst } = connections.getOrCreate(databaseUrl);\n const { sql: migrationSql } = connections.getOrCreate(connectionUrl, {\n onnotice: () => {\n /* silence notices */\n },\n });\n const connectionPayload: ConnectionPayload = { sql, isFirst, databaseUrl };\n\n if (isFirst) {\n const migrationsPath = path.join(params.projectDir, migrationsDir);\n\n return pipe(\n TE.Do,\n TE.chainW(() => initDatabase(migrationSql, connectionOptions.database)),\n TE.chainW(() => runMigrations({ migrationsPath, sql })),\n TE.map(() => connectionPayload),\n );\n }\n\n return TE.right(connectionPayload);\n })\n .exhaustive();\n\n const generateTask = (params: GenerateParams) => {\n return TE.tryCatch(() => generator.generate(params), InternalError.to);\n };\n\n return pipe(\n connectionPayload,\n TE.chainW(({ sql, databaseUrl }) => {\n return generateTask({\n sql,\n query: params.query,\n cacheKey: databaseUrl,\n overrides: params.connection.overrides,\n fieldTransform: params.target.fieldTransform,\n });\n }),\n TE.chainW(TE.fromEither),\n );\n}\n"],"names":["LibPgQueryAST.JoinType","LibPgQueryAST.BoolExprType","LibPgQueryAST.SubLinkType","LibPgQueryAST.AExprKind","LibPgQueryAST.NullTestType","path","connectionPayload","params"],"mappings":"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","x_google_ignoreList":[0,1]}
|
package/package.json
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "eslint-plugin-slonik",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Provides compile-time SQL query validation by checking your raw SQL strings against your actual database schema, catching errors before runtime.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/gajus/eslint-plugin-slonik.git"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/gajus/eslint-plugin-slonik",
|
|
11
|
+
"keywords": [
|
|
12
|
+
"eslint",
|
|
13
|
+
"eslint-plugin",
|
|
14
|
+
"slonik",
|
|
15
|
+
"postgresql",
|
|
16
|
+
"postgres",
|
|
17
|
+
"sql",
|
|
18
|
+
"typescript",
|
|
19
|
+
"type-safety",
|
|
20
|
+
"validation"
|
|
21
|
+
],
|
|
22
|
+
"files": [
|
|
23
|
+
"dist",
|
|
24
|
+
"README.md"
|
|
25
|
+
],
|
|
26
|
+
"type": "module",
|
|
27
|
+
"types": "dist/index.d.ts",
|
|
28
|
+
"module": "dist/index.mjs",
|
|
29
|
+
"main": "dist/index.cjs",
|
|
30
|
+
"typesVersions": {
|
|
31
|
+
"*": {
|
|
32
|
+
"config": [
|
|
33
|
+
"./dist/config.d.ts"
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"exports": {
|
|
38
|
+
".": {
|
|
39
|
+
"types": {
|
|
40
|
+
"import": "./dist/index.d.mts",
|
|
41
|
+
"require": "./dist/index.d.cts",
|
|
42
|
+
"default": "./dist/index.d.ts"
|
|
43
|
+
},
|
|
44
|
+
"import": "./dist/index.mjs",
|
|
45
|
+
"require": "./dist/index.cjs"
|
|
46
|
+
},
|
|
47
|
+
"./config": {
|
|
48
|
+
"types": {
|
|
49
|
+
"import": "./dist/config.d.mts",
|
|
50
|
+
"require": "./dist/config.d.cts",
|
|
51
|
+
"default": "./dist/config.d.ts"
|
|
52
|
+
},
|
|
53
|
+
"import": "./dist/config.mjs",
|
|
54
|
+
"require": "./dist/config.cjs"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"scripts": {
|
|
58
|
+
"build": "unbuild",
|
|
59
|
+
"clean": "rm -rf dist",
|
|
60
|
+
"dev": "unbuild --stub",
|
|
61
|
+
"lint:cspell": "cspell --no-progress .",
|
|
62
|
+
"lint:eslint": "eslint src",
|
|
63
|
+
"lint:eslint!": "eslint src --fix",
|
|
64
|
+
"lint:knip": "knip --exclude exports,types",
|
|
65
|
+
"lint:tsc": "tsc -b",
|
|
66
|
+
"test:vitest": "vitest --pool=forks --hideSkippedTests=true"
|
|
67
|
+
},
|
|
68
|
+
"devDependencies": {
|
|
69
|
+
"@eslint/js": "^9.39.2",
|
|
70
|
+
"@ts-safeql/generate": "^4.1.0",
|
|
71
|
+
"@ts-safeql/shared": "^4.1.0",
|
|
72
|
+
"@ts-safeql/sql-ast": "^4.1.0",
|
|
73
|
+
"@types/node": "^22.13.13",
|
|
74
|
+
"@typescript-eslint/eslint-plugin": "^8.28.0",
|
|
75
|
+
"@typescript-eslint/parser": "^8.28.0",
|
|
76
|
+
"@typescript-eslint/rule-tester": "^8.28.0",
|
|
77
|
+
"cspell": "^9.6.0",
|
|
78
|
+
"eslint": "^9.23.0",
|
|
79
|
+
"knip": "^5.80.2",
|
|
80
|
+
"libpg-query": "^17.5.2",
|
|
81
|
+
"semantic-release": "^25.0.2",
|
|
82
|
+
"typescript": "^5.8.2",
|
|
83
|
+
"typescript-eslint": "^8.53.0",
|
|
84
|
+
"unbuild": "^3.5.0",
|
|
85
|
+
"vitest": "^3.0.9"
|
|
86
|
+
},
|
|
87
|
+
"dependencies": {
|
|
88
|
+
"@typescript-eslint/utils": "^8.53.0",
|
|
89
|
+
"chokidar": "^4.0.3",
|
|
90
|
+
"fp-ts": "^2.16.9",
|
|
91
|
+
"pg-connection-string": "2.7.0",
|
|
92
|
+
"postgres": "^3.4.5",
|
|
93
|
+
"quansync": "^0.2.10",
|
|
94
|
+
"synckit": "^0.10.3",
|
|
95
|
+
"ts-pattern": "^5.6.2",
|
|
96
|
+
"tsx": "^4.19.3",
|
|
97
|
+
"zod": "^4.1.12"
|
|
98
|
+
},
|
|
99
|
+
"peerDependencies": {
|
|
100
|
+
"libpg-query": ">=13.2.5"
|
|
101
|
+
},
|
|
102
|
+
"packageManager": "pnpm@10.11.0"
|
|
103
|
+
}
|