@typed-sql/postgres 2.0.0 → 2.1.0-rc.1

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.
Files changed (116) hide show
  1. package/CHANGELOG.md +147 -0
  2. package/README.md +17 -0
  3. package/dist/packages/postgres/src/bulk.d.ts.map +1 -1
  4. package/dist/packages/postgres/src/bulk.js +1 -1
  5. package/dist/packages/postgres/src/bulk.js.map +1 -1
  6. package/dist/packages/postgres/src/capabilities.d.ts +19 -0
  7. package/dist/packages/postgres/src/capabilities.d.ts.map +1 -0
  8. package/dist/packages/postgres/src/capabilities.js +120 -0
  9. package/dist/packages/postgres/src/capabilities.js.map +1 -0
  10. package/dist/packages/postgres/src/catalog/generated/14.d.ts +4 -0
  11. package/dist/packages/postgres/src/catalog/generated/14.d.ts.map +1 -0
  12. package/dist/packages/postgres/src/catalog/generated/14.js +2018 -0
  13. package/dist/packages/postgres/src/catalog/generated/14.js.map +1 -0
  14. package/dist/packages/postgres/src/catalog/generated/15.d.ts +4 -0
  15. package/dist/packages/postgres/src/catalog/generated/15.d.ts.map +1 -0
  16. package/dist/packages/postgres/src/catalog/generated/15.js +2012 -0
  17. package/dist/packages/postgres/src/catalog/generated/15.js.map +1 -0
  18. package/dist/packages/postgres/src/catalog/generated/16.d.ts +4 -0
  19. package/dist/packages/postgres/src/catalog/generated/16.d.ts.map +1 -0
  20. package/dist/packages/postgres/src/catalog/generated/16.js +2012 -0
  21. package/dist/packages/postgres/src/catalog/generated/16.js.map +1 -0
  22. package/dist/packages/postgres/src/catalog/generated/17.d.ts +4 -0
  23. package/dist/packages/postgres/src/catalog/generated/17.d.ts.map +1 -0
  24. package/dist/packages/postgres/src/catalog/generated/17.js +2012 -0
  25. package/dist/packages/postgres/src/catalog/generated/17.js.map +1 -0
  26. package/dist/packages/postgres/src/catalog/generated/18.d.ts +4 -0
  27. package/dist/packages/postgres/src/catalog/generated/18.d.ts.map +1 -0
  28. package/dist/packages/postgres/src/catalog/generated/18.js +2048 -0
  29. package/dist/packages/postgres/src/catalog/generated/18.js.map +1 -0
  30. package/dist/packages/postgres/src/catalog/generated/19.d.ts +4 -0
  31. package/dist/packages/postgres/src/catalog/generated/19.d.ts.map +1 -0
  32. package/dist/packages/postgres/src/catalog/generated/19.js +2048 -0
  33. package/dist/packages/postgres/src/catalog/generated/19.js.map +1 -0
  34. package/dist/packages/postgres/src/catalog/index.d.ts +14 -0
  35. package/dist/packages/postgres/src/catalog/index.d.ts.map +1 -0
  36. package/dist/packages/postgres/src/catalog/index.js +86 -0
  37. package/dist/packages/postgres/src/catalog/index.js.map +1 -0
  38. package/dist/packages/postgres/src/catalog/types.d.ts +46 -0
  39. package/dist/packages/postgres/src/catalog/types.d.ts.map +1 -0
  40. package/dist/packages/postgres/src/catalog/types.js +2 -0
  41. package/dist/packages/postgres/src/catalog/types.js.map +1 -0
  42. package/dist/packages/postgres/src/expression-evidence.d.ts +11 -0
  43. package/dist/packages/postgres/src/expression-evidence.d.ts.map +1 -0
  44. package/dist/packages/postgres/src/expression-evidence.js +33 -0
  45. package/dist/packages/postgres/src/expression-evidence.js.map +1 -0
  46. package/dist/packages/postgres/src/extensions.d.ts +61 -0
  47. package/dist/packages/postgres/src/extensions.d.ts.map +1 -0
  48. package/dist/packages/postgres/src/extensions.js +311 -0
  49. package/dist/packages/postgres/src/extensions.js.map +1 -0
  50. package/dist/packages/postgres/src/index.d.ts +13 -0
  51. package/dist/packages/postgres/src/index.d.ts.map +1 -1
  52. package/dist/packages/postgres/src/index.js +51 -17
  53. package/dist/packages/postgres/src/index.js.map +1 -1
  54. package/dist/packages/postgres/src/parser/index.d.ts +8 -0
  55. package/dist/packages/postgres/src/parser/index.d.ts.map +1 -0
  56. package/dist/packages/postgres/src/parser/index.js +4 -0
  57. package/dist/packages/postgres/src/parser/index.js.map +1 -0
  58. package/dist/packages/postgres/src/parser/parser.d.ts +14 -0
  59. package/dist/packages/postgres/src/parser/parser.d.ts.map +1 -0
  60. package/dist/packages/postgres/src/parser/parser.js +2683 -0
  61. package/dist/packages/postgres/src/parser/parser.js.map +1 -0
  62. package/dist/packages/postgres/src/parser/tokenizer.d.ts +15 -0
  63. package/dist/packages/postgres/src/parser/tokenizer.d.ts.map +1 -0
  64. package/dist/packages/postgres/src/parser/tokenizer.js +470 -0
  65. package/dist/packages/postgres/src/parser/tokenizer.js.map +1 -0
  66. package/dist/packages/postgres/src/parser/types.d.ts +652 -0
  67. package/dist/packages/postgres/src/parser/types.d.ts.map +1 -0
  68. package/dist/packages/postgres/src/parser/types.js +9 -0
  69. package/dist/packages/postgres/src/parser/types.js.map +1 -0
  70. package/dist/packages/postgres/src/parser/walk.d.ts +13 -0
  71. package/dist/packages/postgres/src/parser/walk.d.ts.map +1 -0
  72. package/dist/packages/postgres/src/parser/walk.js +374 -0
  73. package/dist/packages/postgres/src/parser/walk.js.map +1 -0
  74. package/dist/packages/postgres/src/pg.d.ts +35 -4
  75. package/dist/packages/postgres/src/pg.d.ts.map +1 -1
  76. package/dist/packages/postgres/src/pg.js +355 -40
  77. package/dist/packages/postgres/src/pg.js.map +1 -1
  78. package/dist/packages/postgres/src/prepared.d.ts +5 -3
  79. package/dist/packages/postgres/src/prepared.d.ts.map +1 -1
  80. package/dist/packages/postgres/src/prepared.js +23 -15
  81. package/dist/packages/postgres/src/prepared.js.map +1 -1
  82. package/dist/packages/postgres/src/provider.d.ts +149 -11
  83. package/dist/packages/postgres/src/provider.d.ts.map +1 -1
  84. package/dist/packages/postgres/src/provider.js +652 -42
  85. package/dist/packages/postgres/src/provider.js.map +1 -1
  86. package/dist/packages/postgres/src/resolver.d.ts +1 -1
  87. package/dist/packages/postgres/src/resolver.d.ts.map +1 -1
  88. package/dist/packages/postgres/src/resolver.js +2767 -203
  89. package/dist/packages/postgres/src/resolver.js.map +1 -1
  90. package/dist/packages/postgres/src/routing.d.ts.map +1 -1
  91. package/dist/packages/postgres/src/routing.js +1 -1
  92. package/dist/packages/postgres/src/routing.js.map +1 -1
  93. package/dist/packages/postgres/src/runtime-compatibility.d.ts +14 -0
  94. package/dist/packages/postgres/src/runtime-compatibility.d.ts.map +1 -0
  95. package/dist/packages/postgres/src/runtime-compatibility.js +63 -0
  96. package/dist/packages/postgres/src/runtime-compatibility.js.map +1 -0
  97. package/dist/packages/postgres/src/runtime.d.ts +10 -1
  98. package/dist/packages/postgres/src/runtime.d.ts.map +1 -1
  99. package/dist/packages/postgres/src/runtime.js +50 -2
  100. package/dist/packages/postgres/src/runtime.js.map +1 -1
  101. package/dist/packages/postgres/src/semantics.d.ts +1 -1
  102. package/dist/packages/postgres/src/semantics.d.ts.map +1 -1
  103. package/dist/packages/postgres/src/semantics.js +19 -6
  104. package/dist/packages/postgres/src/semantics.js.map +1 -1
  105. package/dist/packages/postgres/src/support.d.ts +29 -0
  106. package/dist/packages/postgres/src/support.d.ts.map +1 -0
  107. package/dist/packages/postgres/src/support.js +45 -0
  108. package/dist/packages/postgres/src/support.js.map +1 -0
  109. package/dist/packages/postgres/src/type-policy.d.ts.map +1 -1
  110. package/dist/packages/postgres/src/type-policy.js +34 -43
  111. package/dist/packages/postgres/src/type-policy.js.map +1 -1
  112. package/dist/packages/postgres/src/type-resolution.d.ts +33 -0
  113. package/dist/packages/postgres/src/type-resolution.d.ts.map +1 -0
  114. package/dist/packages/postgres/src/type-resolution.js +906 -0
  115. package/dist/packages/postgres/src/type-resolution.js.map +1 -0
  116. package/package.json +7 -4
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Grammar-owned release boundary. Minor targets are refreshed from PostgreSQL's upstream support
3
+ * table and become release evidence only after the differential matrix records them.
4
+ */
5
+ export const POSTGRES_SUPPORT_POLICY = Object.freeze({
6
+ stableMajors: Object.freeze([14, 15, 16, 17, 18]),
7
+ matrixMinors: Object.freeze({
8
+ 14: "14.24",
9
+ 15: "15.19",
10
+ 16: "16.15",
11
+ 17: "17.11",
12
+ 18: "18.6",
13
+ }),
14
+ canary: Object.freeze({ major: 19, version: "19beta3" }),
15
+ minorCompatibility: "within-major",
16
+ upstreamPolicy: "all-upstream-supported-majors",
17
+ deprecation: Object.freeze({
18
+ noticeBeforeUpstreamEolDays: 90,
19
+ removal: "first-typed-sql-minor-after-upstream-eol",
20
+ }),
21
+ });
22
+ export function parsePostgresMajor(value) {
23
+ const match = /^(\d+)(?:\.\d+)?(?:\D.*)?$/u.exec(value.trim());
24
+ if (match === null)
25
+ return undefined;
26
+ const major = Number(match[1]);
27
+ return Number.isSafeInteger(major) && major > 0 ? major : undefined;
28
+ }
29
+ export function postgresVersionSupport(value, versionPolicy = "stable") {
30
+ const major = parsePostgresMajor(value);
31
+ if (major === undefined)
32
+ return "unknown";
33
+ const prerelease = /(?:alpha|beta|rc|devel)/iu.test(value);
34
+ if (major === POSTGRES_SUPPORT_POLICY.canary.major) {
35
+ return versionPolicy === "canary" ? "canary" : prerelease ? "prerelease" : "newer-than-tested";
36
+ }
37
+ if (prerelease)
38
+ return "prerelease";
39
+ if (POSTGRES_SUPPORT_POLICY.stableMajors.includes(major))
40
+ return "supported";
41
+ if (major < POSTGRES_SUPPORT_POLICY.stableMajors[0])
42
+ return "below-supported";
43
+ return "newer-than-tested";
44
+ }
45
+ //# sourceMappingURL=support.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"support.js","sourceRoot":"","sources":["../../../../src/support.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC;IACnD,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAU,CAAC;IAC1D,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC;QAC1B,EAAE,EAAE,OAAO;QACX,EAAE,EAAE,OAAO;QACX,EAAE,EAAE,OAAO;QACX,EAAE,EAAE,OAAO;QACX,EAAE,EAAE,MAAM;KACF,CAAC;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IACxD,kBAAkB,EAAE,cAAc;IAClC,cAAc,EAAE,+BAA+B;IAC/C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;QACzB,2BAA2B,EAAE,EAAE;QAC/B,OAAO,EAAE,0CAA0C;KACpD,CAAC;CACM,CAAC,CAAC;AAEZ,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,MAAM,KAAK,GAAG,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/D,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACrC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAa,EACb,aAAa,GAA0B,QAAQ;IAE/C,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,UAAU,GAAG,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,IAAI,KAAK,KAAK,uBAAuB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACnD,OAAO,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC;IACjG,CAAC;IACD,IAAI,UAAU;QAAE,OAAO,YAAY,CAAC;IACpC,IAAI,uBAAuB,CAAC,YAAY,CAAC,QAAQ,CAAC,KAA+B,CAAC;QAAE,OAAO,WAAW,CAAC;IACvG,IAAI,KAAK,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;QAAE,OAAO,iBAAiB,CAAC;IAC9E,OAAO,mBAAmB,CAAC;AAC7B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"type-policy.d.ts","sourceRoot":"","sources":["../../../../src/type-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,QAAQ,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC;CACvC;AAED,eAAO,MAAM,yBAAyB,EAAE,kBAOtC,CAAC;AAKH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAoC1F;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,MAAM,CAyBjH"}
1
+ {"version":3,"file":"type-policy.d.ts","sourceRoot":"","sources":["../../../../src/type-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,QAAQ,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC;CACvC;AAED,eAAO,MAAM,yBAAyB,EAAE,kBAOtC,CAAC;AAsBH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAK1F;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,MAAM,CAsBjH"}
@@ -1,3 +1,4 @@
1
+ import { postgresCatalogTypeMapping } from "./catalog/index.js";
1
2
  export const defaultPostgresTypePolicy = Object.freeze({
2
3
  bigint: "bigint",
3
4
  numeric: "string",
@@ -8,63 +9,53 @@ export const defaultPostgresTypePolicy = Object.freeze({
8
9
  });
9
10
  const normalized = (databaseType) => databaseType.trim().toLowerCase().replace(/\s+/g, " ");
10
11
  const withoutModifiers = (databaseType) => databaseType.replace(/\(\d+(?:,\s*\d+)?\)/g, "");
12
+ function arrayType(databaseType) {
13
+ let end = databaseType.length;
14
+ while (end >= 2 && databaseType[end - 2] === "[" && databaseType[end - 1] === "]")
15
+ end -= 2;
16
+ return { base: databaseType.slice(0, end), dimensions: (databaseType.length - end) / 2 };
17
+ }
18
+ function snapshotType(databaseType, schema) {
19
+ if (schema?.formatVersion !== 2)
20
+ return undefined;
21
+ const target = withoutModifiers(normalized(databaseType));
22
+ return Object.values(schema.types).find((type) => {
23
+ const qualified = type.schema === undefined ? type.name : `${type.schema}.${type.name}`;
24
+ return [type.databaseType, type.identity, qualified].some((identity) => withoutModifiers(normalized(identity)) === target);
25
+ });
26
+ }
11
27
  export function isKnownPostgresType(databaseType, schema) {
12
- const type = withoutModifiers(normalized(databaseType).replace(/\[\]$/, ""));
13
- if ([
14
- "smallint",
15
- "int2",
16
- "integer",
17
- "int",
18
- "int4",
19
- "bigint",
20
- "int8",
21
- "numeric",
22
- "decimal",
23
- "real",
24
- "float4",
25
- "double precision",
26
- "float8",
27
- "boolean",
28
- "bool",
29
- "text",
30
- "varchar",
31
- "character varying",
32
- "char",
33
- "uuid",
34
- "date",
35
- "timestamp",
36
- "timestamp without time zone",
37
- "timestamptz",
38
- "timestamp with time zone",
39
- "json",
40
- "jsonb",
41
- "bytea",
42
- ].includes(type))
28
+ const type = withoutModifiers(arrayType(normalized(databaseType)).base);
29
+ if (postgresCatalogTypeMapping(type, schema) !== undefined)
30
+ return true;
31
+ if (snapshotType(type, schema) !== undefined)
43
32
  return true;
44
33
  return schema?.enums?.[type] !== undefined || schema?.domains?.[type] !== undefined;
45
34
  }
46
35
  export function mapPostgresType(databaseType, policy, schema) {
47
- const normalizedType = normalized(databaseType);
48
- const array = normalizedType.endsWith("[]");
49
- const unmodifiedType = normalizedType.replace(/\[\]$/, "");
36
+ const { base: unmodifiedType, dimensions } = arrayType(normalized(databaseType));
50
37
  const type = withoutModifiers(unmodifiedType);
38
+ const catalogMapping = postgresCatalogTypeMapping(type, schema);
39
+ const snapshotMapping = snapshotType(unmodifiedType, schema);
51
40
  let mapped;
52
- if (["smallint", "int2", "integer", "int", "int4", "real", "float4", "double precision", "float8"].includes(type))
41
+ if (catalogMapping === "number")
53
42
  mapped = "number";
54
- else if (["bigint", "int8"].includes(type))
43
+ else if (catalogMapping === "bigint")
55
44
  mapped = policy.bigint;
56
- else if (["numeric", "decimal"].includes(type))
45
+ else if (catalogMapping === "numeric")
57
46
  mapped = policy.numeric;
58
- else if (["boolean", "bool"].includes(type))
47
+ else if (catalogMapping === "boolean")
59
48
  mapped = "boolean";
60
- else if (["text", "varchar", "character varying", "char", "uuid"].includes(type))
49
+ else if (catalogMapping === "string")
61
50
  mapped = "string";
62
- else if (["date", "timestamp", "timestamp without time zone", "timestamptz", "timestamp with time zone"].includes(type))
51
+ else if (catalogMapping === "date")
63
52
  mapped = policy.date;
64
- else if (["json", "jsonb"].includes(type))
53
+ else if (catalogMapping === "json")
65
54
  mapped = policy.json;
66
- else if (type === "bytea")
55
+ else if (catalogMapping === "bytes")
67
56
  mapped = "Uint8Array";
57
+ else if (snapshotMapping !== undefined)
58
+ mapped = snapshotMapping.tsType;
68
59
  else if (schema?.domains?.[unmodifiedType] !== undefined || schema?.domains?.[type] !== undefined)
69
60
  mapped = (schema.domains[unmodifiedType] ?? schema.domains[type]).tsType;
70
61
  else if (schema?.enums?.[unmodifiedType] !== undefined || schema?.enums?.[type] !== undefined) {
@@ -73,6 +64,6 @@ export function mapPostgresType(databaseType, policy, schema) {
73
64
  }
74
65
  else
75
66
  mapped = policy.unknown;
76
- return array ? `readonly (${mapped})[]` : mapped;
67
+ return dimensions === 0 ? mapped : `${"readonly (".repeat(dimensions)}${mapped}${")[]".repeat(dimensions)}`;
77
68
  }
78
69
  //# sourceMappingURL=type-policy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"type-policy.js","sourceRoot":"","sources":["../../../../src/type-policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-policy.js","sourceRoot":"","sources":["../../../../src/type-policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { type SchemaSnapshot } from "@typed-sql/schema";
2
+ import { type PostgresCastContext, type PostgresTypeCategory } from "./catalog/index.js";
3
+ export interface PostgresCandidate<Value> {
4
+ readonly value: Value;
5
+ readonly argumentTypes: readonly string[];
6
+ readonly resultType: string;
7
+ }
8
+ export interface PostgresCandidateMatch<Value> {
9
+ readonly kind: "selected";
10
+ readonly candidate: Value;
11
+ readonly argumentTypes: readonly string[];
12
+ readonly resultType: string;
13
+ }
14
+ export type PostgresCandidateResolution<Value> = PostgresCandidateMatch<Value> | {
15
+ readonly kind: "ambiguous" | "none";
16
+ };
17
+ export type PostgresOperatorResolution = PostgresCandidateResolution<string>;
18
+ /** Canonical PostgreSQL type identity for overload and coercion decisions. */
19
+ export declare function postgresCanonicalType(databaseType: string, schema?: SchemaSnapshot): string;
20
+ /** PostgreSQL type category after aliases and domains are resolved. */
21
+ export declare function postgresTypeCategory(databaseType: string, schema?: SchemaSnapshot): PostgresTypeCategory | undefined;
22
+ /** Returns the element identity for a PostgreSQL array or snapshot collection type. */
23
+ export declare function postgresElementType(databaseType: string, schema?: SchemaSnapshot): string | undefined;
24
+ /** PostgreSQL common-type selection used by compatible polymorphic inputs. */
25
+ export declare function postgresCommonType(databaseTypes: readonly (string | undefined)[], schema?: SchemaSnapshot): string | undefined;
26
+ export declare function postgresCanCoerce(source: string, target: string, context: PostgresCastContext, schema?: SchemaSnapshot): boolean;
27
+ /** Selects a PostgreSQL overload using exact, implicit-cast, preferred-type, and unknown-category evidence. */
28
+ export declare function resolvePostgresCandidates<Value>(candidates: readonly PostgresCandidate<Value>[], actualTypes: readonly (string | undefined)[], schema?: SchemaSnapshot): PostgresCandidateResolution<Value>;
29
+ /** Resolves PostgreSQL prefix operators through grammar-owned operator candidates. */
30
+ export declare function resolvePostgresUnaryOperator(operator: string, operand: string | undefined, schema?: SchemaSnapshot): PostgresOperatorResolution;
31
+ /** Resolves built-in binary operators through the same candidate machinery as routine calls. */
32
+ export declare function resolvePostgresOperator(operator: string, left: string | undefined, right: string | undefined, schema?: SchemaSnapshot): PostgresOperatorResolution;
33
+ //# sourceMappingURL=type-resolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-resolution.d.ts","sourceRoot":"","sources":["../../../../src/type-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAIpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAK1B,MAAM,oBAAoB,CAAC;AAmD5B,MAAM,WAAW,iBAAiB,CAAC,KAAK;IACtC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB,CAAC,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,2BAA2B,CAAC,KAAK,IACzC,sBAAsB,CAAC,KAAK,CAAC,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAA;CAAE,CAAC;AAE5C,MAAM,MAAM,0BAA0B,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAsD7E,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,MAAM,CAM3F;AAsBD,uEAAuE;AACvE,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,oBAAoB,GAAG,SAAS,CAEpH;AAeD,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAErG;AASD,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,EAC9C,MAAM,CAAC,EAAE,cAAc,GACtB,MAAM,GAAG,SAAS,CAkBpB;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,mBAAmB,EAC5B,MAAM,CAAC,EAAE,cAAc,GACtB,OAAO,CA2BT;AA2HD,+GAA+G;AAC/G,wBAAgB,yBAAyB,CAAC,KAAK,EAC7C,UAAU,EAAE,SAAS,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAC/C,WAAW,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,EAC5C,MAAM,CAAC,EAAE,cAAc,GACtB,2BAA2B,CAAC,KAAK,CAAC,CAsCpC;AA6ZD,sFAAsF;AACtF,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,MAAM,CAAC,EAAE,cAAc,GACtB,0BAA0B,CAwE5B;AAED,gGAAgG;AAChG,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,CAAC,EAAE,cAAc,GACtB,0BAA0B,CAyB5B"}