kern-orm 0.3.0 → 0.5.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/dist/database-BJ0hNYrF.mjs +3968 -0
- package/dist/{index-CNqYlONX.d.mts → index-Cag6_erK.d.mts} +709 -474
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +66 -3889
- package/dist/testing.d.mts +28 -2
- package/dist/testing.mjs +521 -1
- package/dist/{text-BUNl8wpl.mjs → text-BTFErHIi.mjs} +57 -10
- package/dist/types-D9LtZ9W-.mjs +248 -0
- package/dist/types.d.mts +47 -72
- package/dist/types.mjs +2 -253
- package/package.json +6 -2
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { A as hasEquality, E as defineType, T as getBooleanType, a as stringifyJson, d as orderingOperators, i as formatTypeName, k as equalityOperators, l as defineNumberType, o as decodeBytea, s as encodeBytea, u as getIntegerType } from "./text-BTFErHIi.mjs";
|
|
2
|
+
// src/type/builtins/array.ts
|
|
3
|
+
/**
|
|
4
|
+
* Creates a one-dimensional array type of `element` values.
|
|
5
|
+
*
|
|
6
|
+
* A `NULL` element decodes to `null`; a nullable `element` type, such as `array(text.nullable())`, types such elements.
|
|
7
|
+
* Elements are separated by commas, as in arrays of all built-in types; a custom type with another delimiter, such as `box`, is not supported.
|
|
8
|
+
* An array has `eq`, `ne`, and `in` when its element type has SQL `=`.
|
|
9
|
+
*/
|
|
10
|
+
function array(element) {
|
|
11
|
+
const type = defineType({
|
|
12
|
+
sqlType: `${element.sqlType}[]`,
|
|
13
|
+
castType: `${element.castType}[]`
|
|
14
|
+
}).transform({
|
|
15
|
+
decode(text) {
|
|
16
|
+
const values = parseArray(text);
|
|
17
|
+
for (let index = 0; index < values.length; index++) {
|
|
18
|
+
const value = values[index];
|
|
19
|
+
values[index] = value === null ? null : element.decode(value);
|
|
20
|
+
}
|
|
21
|
+
return values;
|
|
22
|
+
},
|
|
23
|
+
encode(values) {
|
|
24
|
+
let text = "{";
|
|
25
|
+
for (let index = 0; index < values.length; index++) {
|
|
26
|
+
const value = values[index];
|
|
27
|
+
text += `${index === 0 ? "" : ","}${formatArrayElement(value === null ? null : element.encode(value))}`;
|
|
28
|
+
}
|
|
29
|
+
return `${text}}`;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
return hasEquality(element) ? type.withOperators(equalityOperators) : type;
|
|
33
|
+
}
|
|
34
|
+
/** Parses a one-dimensional array literal, such as `{a,"b c",NULL}`, into the text representations of its elements. */
|
|
35
|
+
function parseArray(text) {
|
|
36
|
+
const start = text.startsWith("[") ? text.indexOf("=") + 1 : 0;
|
|
37
|
+
if (text[start] !== "{" || !text.endsWith("}")) throw new Error(`Unsupported array value "${text}"`);
|
|
38
|
+
const elements = [];
|
|
39
|
+
const end = text.length - 1;
|
|
40
|
+
if (start + 1 === end) return elements;
|
|
41
|
+
let index = start + 1;
|
|
42
|
+
while (true) {
|
|
43
|
+
if (text[index] === "{") throw new Error("Multidimensional arrays are not supported");
|
|
44
|
+
if (text[index] === "\"") {
|
|
45
|
+
let element = "";
|
|
46
|
+
index++;
|
|
47
|
+
while (index < end && text[index] !== "\"") {
|
|
48
|
+
if (text[index] === "\\") {
|
|
49
|
+
index++;
|
|
50
|
+
if (index === end) break;
|
|
51
|
+
}
|
|
52
|
+
element += text[index];
|
|
53
|
+
index++;
|
|
54
|
+
}
|
|
55
|
+
if (index === end) throw new Error(`Unterminated quoted element in array value "${text}"`);
|
|
56
|
+
elements.push(element);
|
|
57
|
+
index++;
|
|
58
|
+
} else {
|
|
59
|
+
let next = text.indexOf(",", index);
|
|
60
|
+
if (next === -1) next = end;
|
|
61
|
+
if (next === index) throw new Error(`Malformed array value "${text}"`);
|
|
62
|
+
const element = text.slice(index, next);
|
|
63
|
+
elements.push(element === "NULL" ? null : element);
|
|
64
|
+
index = next;
|
|
65
|
+
}
|
|
66
|
+
if (index === end) return elements;
|
|
67
|
+
if (text[index] !== ",") throw new Error(`Malformed array value "${text}"`);
|
|
68
|
+
index++;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/** Formats the text representation of an array element, quoting it unless it is `NULL`. */
|
|
72
|
+
function formatArrayElement(element) {
|
|
73
|
+
return element === null ? "NULL" : `"${element.replaceAll("\\", "\\\\").replaceAll("\"", "\\\"")}"`;
|
|
74
|
+
}
|
|
75
|
+
// src/type/builtins/binary.ts
|
|
76
|
+
/** Binary data; PostgreSQL represents it in hex, which requires the default `bytea_output` setting. */
|
|
77
|
+
const bytea = /* @__PURE__ */ defineType({ sqlType: "bytea" }).transform({
|
|
78
|
+
decode: decodeBytea,
|
|
79
|
+
encode: encodeBytea
|
|
80
|
+
}).withOperators(equalityOperators);
|
|
81
|
+
// src/type/builtins/boolean.ts
|
|
82
|
+
/** `boolean` values. */
|
|
83
|
+
const boolean = /* @__PURE__ */ getBooleanType();
|
|
84
|
+
// src/type/builtins/datetime.ts
|
|
85
|
+
/** Point in time as a UTC ISO 8601 string with microseconds, such as `2026-01-15T07:00:00.123456Z`; accepts a `Date` too. */
|
|
86
|
+
const timestamptz = /* @__PURE__ */ defineType({ sqlType: "timestamptz" }).transform({
|
|
87
|
+
decode: normalizeTimestamptz,
|
|
88
|
+
encode: (value) => toPostgresYear(value instanceof Date ? value.toISOString() : value)
|
|
89
|
+
}).withOperators(orderingOperators).withParameters(/* @__PURE__ */ createPrecisionFormatter("timestamptz"));
|
|
90
|
+
/** Date and time without a time zone as an ISO 8601 string with microseconds, such as `2026-01-15T10:00:00.000000`. */
|
|
91
|
+
const timestamp = /* @__PURE__ */ defineType({ sqlType: "timestamp" }).transform({
|
|
92
|
+
decode: normalizeTimestamp,
|
|
93
|
+
encode: toPostgresYear
|
|
94
|
+
}).withOperators(orderingOperators).withParameters(/* @__PURE__ */ createPrecisionFormatter("timestamp"));
|
|
95
|
+
/** Calendar date as an ISO 8601 string, such as `2026-01-15`. */
|
|
96
|
+
const date = /* @__PURE__ */ defineType({ sqlType: "date" }).transform({
|
|
97
|
+
decode: normalizeDate,
|
|
98
|
+
encode: toPostgresYear
|
|
99
|
+
}).withOperators(orderingOperators);
|
|
100
|
+
/** Time of day as a string with microseconds, such as `10:00:00.000000`. */
|
|
101
|
+
const time = /* @__PURE__ */ defineType({ sqlType: "time" }).transform({ decode: normalizeTime }).withOperators(orderingOperators).withParameters(/* @__PURE__ */ createPrecisionFormatter("time"));
|
|
102
|
+
/** Interval in the PostgreSQL output format, such as `1 day 02:00:00`. */
|
|
103
|
+
const interval = /* @__PURE__ */ defineType({ sqlType: "interval" }).withOperators(orderingOperators);
|
|
104
|
+
function createPrecisionFormatter(name) {
|
|
105
|
+
return (precision) => formatTypeName(name, precision);
|
|
106
|
+
}
|
|
107
|
+
const timestamptzPattern = /^(\d{4,})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})(?:\.(\d{1,6}))?([+-])(\d{2})(?::(\d{2}))?(?::(\d{2}))?( BC)?$/;
|
|
108
|
+
const timestampPattern = /^(\d{4,})(-\d{2}-\d{2}) (\d{2}:\d{2}:\d{2})(?:\.(\d{1,6}))?( BC)?$/;
|
|
109
|
+
const datePattern = /^(\d{4,})(-\d{2}-\d{2})( BC)?$/;
|
|
110
|
+
const timePattern = /^(\d{2}:\d{2}:\d{2})(?:\.(\d{1,6}))?$/;
|
|
111
|
+
/** Leading ISO 8601 year that PostgreSQL does not accept: an expanded year, such as `+010000`, or year `0000`. */
|
|
112
|
+
const isoYearPattern = /^([+-]\d{6,}|0000)(-.*)$/s;
|
|
113
|
+
/** Special date and time values that PostgreSQL returns as they are. */
|
|
114
|
+
const infinities = /* @__PURE__ */ new Set(["infinity", "-infinity"]);
|
|
115
|
+
/**
|
|
116
|
+
* Normalizes a `timestamptz` value to UTC ISO 8601 with microseconds, such as `2026-01-15T07:00:00.123456Z`.
|
|
117
|
+
*
|
|
118
|
+
* The fixed format keeps microseconds that `Date` would lose; the arithmetic avoids `Date`, whose range is narrower than that of PostgreSQL.
|
|
119
|
+
*/
|
|
120
|
+
function normalizeTimestamptz(text) {
|
|
121
|
+
if (infinities.has(text)) return text;
|
|
122
|
+
const match = timestamptzPattern.exec(text);
|
|
123
|
+
if (!match) throw new Error(`Unsupported timestamptz value "${text}"; kern-orm expects DateStyle ISO`);
|
|
124
|
+
const offset = (match[8] === "-" ? -1 : 1) * (Number(match[9]) * 3600 + Number(match[10] ?? 0) * 60 + Number(match[11] ?? 0));
|
|
125
|
+
const seconds = countDays(toAstronomicalYear(match[1], match[12]), Number(match[2]), Number(match[3])) * 86400 + Number(match[4]) * 3600 + Number(match[5]) * 60 + Number(match[6]) - offset;
|
|
126
|
+
const days = Math.floor(seconds / 86400);
|
|
127
|
+
const time = seconds - days * 86400;
|
|
128
|
+
return `${formatDate(days)}T${padTwo(Math.floor(time / 3600))}:${padTwo(Math.floor(time / 60) % 60)}:${padTwo(time % 60)}.${padFraction(match[7])}Z`;
|
|
129
|
+
}
|
|
130
|
+
/** Normalizes a `timestamp` value to ISO 8601 without a time zone, such as `2026-01-15T10:00:00.000000`. */
|
|
131
|
+
function normalizeTimestamp(text) {
|
|
132
|
+
if (infinities.has(text)) return text;
|
|
133
|
+
const match = timestampPattern.exec(text);
|
|
134
|
+
if (!match) throw new Error(`Unsupported timestamp value "${text}"; kern-orm expects DateStyle ISO`);
|
|
135
|
+
return `${formatYear(toAstronomicalYear(match[1], match[5]))}${match[2]}T${match[3]}.${padFraction(match[4])}`;
|
|
136
|
+
}
|
|
137
|
+
/** Normalizes a `date` value to ISO 8601, such as `2026-01-15`. */
|
|
138
|
+
function normalizeDate(text) {
|
|
139
|
+
if (infinities.has(text)) return text;
|
|
140
|
+
const match = datePattern.exec(text);
|
|
141
|
+
if (!match) throw new Error(`Unsupported date value "${text}"; kern-orm expects DateStyle ISO`);
|
|
142
|
+
return `${formatYear(toAstronomicalYear(match[1], match[3]))}${match[2]}`;
|
|
143
|
+
}
|
|
144
|
+
/** Normalizes a `time` value to `HH:MM:SS.ffffff`. */
|
|
145
|
+
function normalizeTime(text) {
|
|
146
|
+
const match = timePattern.exec(text);
|
|
147
|
+
if (!match) throw new Error(`Unsupported time value "${text}"`);
|
|
148
|
+
return `${match[1]}.${padFraction(match[2])}`;
|
|
149
|
+
}
|
|
150
|
+
/** Converts a leading ISO 8601 year outside 1 to 9999 into the PostgreSQL format: unsigned after 9999 and with a `BC` suffix before 1. */
|
|
151
|
+
function toPostgresYear(text) {
|
|
152
|
+
const match = isoYearPattern.exec(text);
|
|
153
|
+
if (!match) return text;
|
|
154
|
+
const year = Number(match[1]);
|
|
155
|
+
return year > 0 ? `${year}${match[2]}` : `${String(1 - year).padStart(4, "0")}${match[2]} BC`;
|
|
156
|
+
}
|
|
157
|
+
/** Returns the astronomical year of a PostgreSQL year, where 1 BC is year 0. */
|
|
158
|
+
function toAstronomicalYear(year, era) {
|
|
159
|
+
return era === void 0 ? Number(year) : 1 - Number(year);
|
|
160
|
+
}
|
|
161
|
+
/** Formats an astronomical year as an ISO 8601 year, expanded with a sign outside 0 to 9999. */
|
|
162
|
+
function formatYear(year) {
|
|
163
|
+
if (year >= 0 && year <= 9999) return String(year).padStart(4, "0");
|
|
164
|
+
return `${year < 0 ? "-" : "+"}${String(Math.abs(year)).padStart(6, "0")}`;
|
|
165
|
+
}
|
|
166
|
+
/** Counts the days from 1970-01-01 to a date of an astronomical year. */
|
|
167
|
+
function countDays(year, month, day) {
|
|
168
|
+
const shifted = month <= 2 ? year - 1 : year;
|
|
169
|
+
const era = Math.floor(shifted / 400);
|
|
170
|
+
const yearOfEra = shifted - era * 400;
|
|
171
|
+
const dayOfYear = Math.floor((153 * (month > 2 ? month - 3 : month + 9) + 2) / 5) + day - 1;
|
|
172
|
+
const dayOfEra = yearOfEra * 365 + Math.floor(yearOfEra / 4) - Math.floor(yearOfEra / 100) + dayOfYear;
|
|
173
|
+
return era * 146097 + dayOfEra - 719468;
|
|
174
|
+
}
|
|
175
|
+
/** Formats the date a number of days after 1970-01-01 as an ISO 8601 date. */
|
|
176
|
+
function formatDate(days) {
|
|
177
|
+
const shifted = days + 719468;
|
|
178
|
+
const era = Math.floor(shifted / 146097);
|
|
179
|
+
const dayOfEra = shifted - era * 146097;
|
|
180
|
+
const yearOfEra = Math.floor((dayOfEra - Math.floor(dayOfEra / 1460) + Math.floor(dayOfEra / 36524) - Math.floor(dayOfEra / 146096)) / 365);
|
|
181
|
+
const dayOfYear = dayOfEra - (365 * yearOfEra + Math.floor(yearOfEra / 4) - Math.floor(yearOfEra / 100));
|
|
182
|
+
const shiftedMonth = Math.floor((5 * dayOfYear + 2) / 153);
|
|
183
|
+
const day = dayOfYear - Math.floor((153 * shiftedMonth + 2) / 5) + 1;
|
|
184
|
+
const month = shiftedMonth < 10 ? shiftedMonth + 3 : shiftedMonth - 9;
|
|
185
|
+
return `${formatYear(yearOfEra + era * 400 + (month <= 2 ? 1 : 0))}-${padTwo(month)}-${padTwo(day)}`;
|
|
186
|
+
}
|
|
187
|
+
function padTwo(value) {
|
|
188
|
+
return value < 10 ? `0${value}` : String(value);
|
|
189
|
+
}
|
|
190
|
+
function padFraction(fraction) {
|
|
191
|
+
return (fraction ?? "").padEnd(6, "0");
|
|
192
|
+
}
|
|
193
|
+
// src/type/builtins/enum.ts
|
|
194
|
+
/** Creates a type of an existing PostgreSQL enum; values are ordered as declared in the enum. */
|
|
195
|
+
function enumOf(name, _values) {
|
|
196
|
+
return defineType({
|
|
197
|
+
sqlType: name,
|
|
198
|
+
castType: name
|
|
199
|
+
}).transform({
|
|
200
|
+
decode: (value) => value,
|
|
201
|
+
encode: (value) => value
|
|
202
|
+
}).withOperators(orderingOperators);
|
|
203
|
+
}
|
|
204
|
+
// src/type/builtins/json.ts
|
|
205
|
+
function createJsonType(sqlType) {
|
|
206
|
+
return defineType({ sqlType }).transform({
|
|
207
|
+
decode: (text) => JSON.parse(text),
|
|
208
|
+
encode: stringifyJson
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
function addShape(type) {
|
|
212
|
+
return Object.freeze({
|
|
213
|
+
...type,
|
|
214
|
+
of: () => type
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
/** `json` values; `json.of<T>()` declares their shape. PostgreSQL has no `=` for `json`, so its expressions have no `eq`, `ne`, or `in`. */
|
|
218
|
+
const json = /* @__PURE__ */ addShape(/* @__PURE__ */ createJsonType("json"));
|
|
219
|
+
/** `jsonb` values; `jsonb.of<T>()` declares their shape. */
|
|
220
|
+
const jsonb = /* @__PURE__ */ addShape(/* @__PURE__ */ createJsonType("jsonb").withOperators(equalityOperators));
|
|
221
|
+
// src/type/builtins/network.ts
|
|
222
|
+
/** IP address with an optional netmask as a string, such as `192.168.0.1`. */
|
|
223
|
+
const inet = /* @__PURE__ */ defineType({ sqlType: "inet" }).withOperators(orderingOperators);
|
|
224
|
+
/** IP network as a string, such as `10.0.0.0/8`. */
|
|
225
|
+
const cidr = /* @__PURE__ */ defineType({ sqlType: "cidr" }).withOperators(orderingOperators);
|
|
226
|
+
// src/type/builtins/numeric.ts
|
|
227
|
+
/** 2-byte integer as a `number`. */
|
|
228
|
+
const smallint = /* @__PURE__ */ defineNumberType("smallint");
|
|
229
|
+
/** 4-byte integer as a `number`. */
|
|
230
|
+
const integer = /* @__PURE__ */ getIntegerType();
|
|
231
|
+
/** 8-byte integer as a `bigint`, which keeps values beyond `Number.MAX_SAFE_INTEGER`; accepts a `number` too. */
|
|
232
|
+
const bigint = /* @__PURE__ */ defineType({ sqlType: "bigint" }).transform({
|
|
233
|
+
decode: BigInt,
|
|
234
|
+
encode: (value) => String(value)
|
|
235
|
+
}).withOperators(orderingOperators);
|
|
236
|
+
/** 4-byte floating-point number as a `number`. */
|
|
237
|
+
const real = /* @__PURE__ */ defineNumberType("real");
|
|
238
|
+
/** 8-byte floating-point number as a `number`. */
|
|
239
|
+
const doublePrecision = /* @__PURE__ */ defineNumberType("double precision");
|
|
240
|
+
/** Exact number as a decimal string, so that no precision is lost; `numeric.with(precision, scale)` constrains it. */
|
|
241
|
+
const numeric = /* @__PURE__ */ defineType({ sqlType: "numeric" }).transform({
|
|
242
|
+
decode: (value) => value,
|
|
243
|
+
encode: (value) => String(value)
|
|
244
|
+
}).withOperators(orderingOperators).withParameters((precision, scale) => formatTypeName("numeric", precision, scale));
|
|
245
|
+
// src/type/builtins/uuid.ts
|
|
246
|
+
/** UUID as a string. */
|
|
247
|
+
const uuid = /* @__PURE__ */ defineType({ sqlType: "uuid" }).withOperators(orderingOperators);
|
|
248
|
+
export { timestamptz as _, numeric as a, array as b, cidr as c, jsonb as d, enumOf as f, timestamp as g, time as h, integer as i, inet as l, interval as m, bigint as n, real as o, date as p, doublePrecision as r, smallint as s, uuid as t, json as u, boolean as v, bytea as y };
|
package/dist/types.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { S as NumberTypeOperators, Ur as Type, Vr as BaseType, ai as GenericOperator, ar as EqualityOperator, b as TextTypeOperators, cr as InSignature, dr as ComparisonSignature, ii as OperatorDefinitions, ni as MergeOperators, or as EqualityOperators, ri as NoOperators, sr as HasEquality, w as AnyExpression, y as TextOperators } from "./index-Cag6_erK.mjs";
|
|
2
2
|
/**
|
|
3
3
|
* Creates a one-dimensional array type of `element` values.
|
|
4
4
|
*
|
|
@@ -13,63 +13,63 @@ export declare const bytea: BaseType<Uint8Array<ArrayBufferLike>, Uint8Array<Arr
|
|
|
13
13
|
export declare const boolean: BaseType<boolean, boolean, EqualityOperators, undefined>;
|
|
14
14
|
/** Point in time as a UTC ISO 8601 string with microseconds, such as `2026-01-15T07:00:00.123456Z`; accepts a `Date` too. */
|
|
15
15
|
export declare const timestamptz: Type<string, string | Date, MergeOperators<NoOperators, {
|
|
16
|
+
eq: EqualityOperator<ComparisonSignature>;
|
|
17
|
+
ne: EqualityOperator<ComparisonSignature>;
|
|
18
|
+
in: EqualityOperator<InSignature>;
|
|
16
19
|
lt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
17
20
|
lte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
18
21
|
gt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
19
22
|
gte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
20
|
-
eq: EqualityOperator<ComparisonSignature>;
|
|
21
|
-
ne: EqualityOperator<ComparisonSignature>;
|
|
22
|
-
in: EqualityOperator<InSignature>;
|
|
23
23
|
}>, [precision: number]>;
|
|
24
24
|
/** Date and time without a time zone as an ISO 8601 string with microseconds, such as `2026-01-15T10:00:00.000000`. */
|
|
25
25
|
export declare const timestamp: Type<string, string, MergeOperators<NoOperators, {
|
|
26
|
+
eq: EqualityOperator<ComparisonSignature>;
|
|
27
|
+
ne: EqualityOperator<ComparisonSignature>;
|
|
28
|
+
in: EqualityOperator<InSignature>;
|
|
26
29
|
lt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
27
30
|
lte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
28
31
|
gt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
29
32
|
gte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
30
|
-
eq: EqualityOperator<ComparisonSignature>;
|
|
31
|
-
ne: EqualityOperator<ComparisonSignature>;
|
|
32
|
-
in: EqualityOperator<InSignature>;
|
|
33
33
|
}>, [precision: number]>;
|
|
34
34
|
/** Calendar date as an ISO 8601 string, such as `2026-01-15`. */
|
|
35
35
|
export declare const date: BaseType<string, string, MergeOperators<NoOperators, {
|
|
36
|
+
eq: EqualityOperator<ComparisonSignature>;
|
|
37
|
+
ne: EqualityOperator<ComparisonSignature>;
|
|
38
|
+
in: EqualityOperator<InSignature>;
|
|
36
39
|
lt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
37
40
|
lte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
38
41
|
gt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
39
42
|
gte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
40
|
-
eq: EqualityOperator<ComparisonSignature>;
|
|
41
|
-
ne: EqualityOperator<ComparisonSignature>;
|
|
42
|
-
in: EqualityOperator<InSignature>;
|
|
43
43
|
}>, undefined>;
|
|
44
44
|
/** Time of day as a string with microseconds, such as `10:00:00.000000`. */
|
|
45
45
|
export declare const time: Type<string, string, MergeOperators<NoOperators, {
|
|
46
|
+
eq: EqualityOperator<ComparisonSignature>;
|
|
47
|
+
ne: EqualityOperator<ComparisonSignature>;
|
|
48
|
+
in: EqualityOperator<InSignature>;
|
|
46
49
|
lt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
47
50
|
lte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
48
51
|
gt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
49
52
|
gte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
50
|
-
eq: EqualityOperator<ComparisonSignature>;
|
|
51
|
-
ne: EqualityOperator<ComparisonSignature>;
|
|
52
|
-
in: EqualityOperator<InSignature>;
|
|
53
53
|
}>, [precision: number]>;
|
|
54
54
|
/** Interval in the PostgreSQL output format, such as `1 day 02:00:00`. */
|
|
55
55
|
export declare const interval: BaseType<string, string, MergeOperators<NoOperators, {
|
|
56
|
+
eq: EqualityOperator<ComparisonSignature>;
|
|
57
|
+
ne: EqualityOperator<ComparisonSignature>;
|
|
58
|
+
in: EqualityOperator<InSignature>;
|
|
56
59
|
lt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
57
60
|
lte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
58
61
|
gt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
59
62
|
gte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
60
|
-
eq: EqualityOperator<ComparisonSignature>;
|
|
61
|
-
ne: EqualityOperator<ComparisonSignature>;
|
|
62
|
-
in: EqualityOperator<InSignature>;
|
|
63
63
|
}>, undefined>;
|
|
64
64
|
/** Creates a type of an existing PostgreSQL enum; values are ordered as declared in the enum. */
|
|
65
65
|
declare function enumOf<const Values extends readonly string[]>(name: string, _values: Values): BaseType<Values[number], Values[number], MergeOperators<NoOperators, {
|
|
66
|
+
eq: EqualityOperator<ComparisonSignature>;
|
|
67
|
+
ne: EqualityOperator<ComparisonSignature>;
|
|
68
|
+
in: EqualityOperator<InSignature>;
|
|
66
69
|
lt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
67
70
|
lte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
68
71
|
gt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
69
72
|
gte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
70
|
-
eq: EqualityOperator<ComparisonSignature>;
|
|
71
|
-
ne: EqualityOperator<ComparisonSignature>;
|
|
72
|
-
in: EqualityOperator<InSignature>;
|
|
73
73
|
}>, undefined>;
|
|
74
74
|
/** JSON type of `unknown` values with operators `O` and `of`, which declares their shape. */
|
|
75
75
|
type JsonType<O extends OperatorDefinitions = NoOperators> = Type<unknown, unknown, O> & {
|
|
@@ -82,131 +82,106 @@ export declare const json: JsonType<NoOperators>;
|
|
|
82
82
|
export declare const jsonb: JsonType<MergeOperators<NoOperators, EqualityOperators>>;
|
|
83
83
|
/** IP address with an optional netmask as a string, such as `192.168.0.1`. */
|
|
84
84
|
export declare const inet: BaseType<string, string, MergeOperators<NoOperators, {
|
|
85
|
-
lt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
86
|
-
lte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
87
|
-
gt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
88
|
-
gte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
89
85
|
eq: EqualityOperator<ComparisonSignature>;
|
|
90
86
|
ne: EqualityOperator<ComparisonSignature>;
|
|
91
87
|
in: EqualityOperator<InSignature>;
|
|
92
|
-
}>, undefined>;
|
|
93
|
-
/** IP network as a string, such as `10.0.0.0/8`. */
|
|
94
|
-
export declare const cidr: BaseType<string, string, MergeOperators<NoOperators, {
|
|
95
88
|
lt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
96
89
|
lte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
97
90
|
gt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
98
91
|
gte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
92
|
+
}>, undefined>;
|
|
93
|
+
/** IP network as a string, such as `10.0.0.0/8`. */
|
|
94
|
+
export declare const cidr: BaseType<string, string, MergeOperators<NoOperators, {
|
|
99
95
|
eq: EqualityOperator<ComparisonSignature>;
|
|
100
96
|
ne: EqualityOperator<ComparisonSignature>;
|
|
101
97
|
in: EqualityOperator<InSignature>;
|
|
102
|
-
}>, undefined>;
|
|
103
|
-
/** 2-byte integer as a `number`. */
|
|
104
|
-
export declare const smallint: BaseType<number, number, MergeOperators<NoOperators, {
|
|
105
98
|
lt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
106
99
|
lte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
107
100
|
gt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
108
101
|
gte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
102
|
+
}>, undefined>;
|
|
103
|
+
/** 2-byte integer as a `number`. */
|
|
104
|
+
export declare const smallint: BaseType<number, number, MergeOperators<NoOperators, {
|
|
109
105
|
eq: EqualityOperator<ComparisonSignature>;
|
|
110
106
|
ne: EqualityOperator<ComparisonSignature>;
|
|
111
107
|
in: EqualityOperator<InSignature>;
|
|
112
|
-
}>, undefined>;
|
|
113
|
-
/** 4-byte integer as a `number`. */
|
|
114
|
-
export declare const integer: BaseType<number, number, MergeOperators<NoOperators, {
|
|
115
108
|
lt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
116
109
|
lte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
117
110
|
gt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
118
111
|
gte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
119
|
-
eq: EqualityOperator<ComparisonSignature>;
|
|
120
|
-
ne: EqualityOperator<ComparisonSignature>;
|
|
121
|
-
in: EqualityOperator<InSignature>;
|
|
122
112
|
}>, undefined>;
|
|
113
|
+
/** 4-byte integer as a `number`. */
|
|
114
|
+
export declare const integer: BaseType<number, number, NumberTypeOperators, undefined>;
|
|
123
115
|
/** 8-byte integer as a `bigint`, which keeps values beyond `Number.MAX_SAFE_INTEGER`; accepts a `number` too. */
|
|
124
116
|
export declare const bigint: BaseType<bigint, number | bigint, MergeOperators<NoOperators, {
|
|
125
|
-
lt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
126
|
-
lte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
127
|
-
gt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
128
|
-
gte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
129
117
|
eq: EqualityOperator<ComparisonSignature>;
|
|
130
118
|
ne: EqualityOperator<ComparisonSignature>;
|
|
131
119
|
in: EqualityOperator<InSignature>;
|
|
132
|
-
}>, undefined>;
|
|
133
|
-
/** 4-byte floating-point number as a `number`. */
|
|
134
|
-
export declare const real: BaseType<number, number, MergeOperators<NoOperators, {
|
|
135
120
|
lt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
136
121
|
lte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
137
122
|
gt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
138
123
|
gte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
124
|
+
}>, undefined>;
|
|
125
|
+
/** 4-byte floating-point number as a `number`. */
|
|
126
|
+
export declare const real: BaseType<number, number, MergeOperators<NoOperators, {
|
|
139
127
|
eq: EqualityOperator<ComparisonSignature>;
|
|
140
128
|
ne: EqualityOperator<ComparisonSignature>;
|
|
141
129
|
in: EqualityOperator<InSignature>;
|
|
142
|
-
}>, undefined>;
|
|
143
|
-
/** 8-byte floating-point number as a `number`. */
|
|
144
|
-
export declare const doublePrecision: BaseType<number, number, MergeOperators<NoOperators, {
|
|
145
130
|
lt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
146
131
|
lte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
147
132
|
gt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
148
133
|
gte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
134
|
+
}>, undefined>;
|
|
135
|
+
/** 8-byte floating-point number as a `number`. */
|
|
136
|
+
export declare const doublePrecision: BaseType<number, number, MergeOperators<NoOperators, {
|
|
149
137
|
eq: EqualityOperator<ComparisonSignature>;
|
|
150
138
|
ne: EqualityOperator<ComparisonSignature>;
|
|
151
139
|
in: EqualityOperator<InSignature>;
|
|
152
|
-
}>, undefined>;
|
|
153
|
-
/** Exact number as a decimal string, so that no precision is lost; `numeric.with(precision, scale)` constrains it. */
|
|
154
|
-
export declare const numeric: Type<string, string | number | bigint, MergeOperators<NoOperators, {
|
|
155
140
|
lt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
156
141
|
lte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
157
142
|
gt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
158
143
|
gte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
144
|
+
}>, undefined>;
|
|
145
|
+
/** Exact number as a decimal string, so that no precision is lost; `numeric.with(precision, scale)` constrains it. */
|
|
146
|
+
export declare const numeric: Type<string, string | number | bigint, MergeOperators<NoOperators, {
|
|
159
147
|
eq: EqualityOperator<ComparisonSignature>;
|
|
160
148
|
ne: EqualityOperator<ComparisonSignature>;
|
|
161
149
|
in: EqualityOperator<InSignature>;
|
|
162
|
-
}>, [precision: number, scale?: number | undefined]>;
|
|
163
|
-
/** Variable-length string without a limit. */
|
|
164
|
-
export declare const text: BaseType<string, string, MergeOperators<MergeOperators<NoOperators, {
|
|
165
150
|
lt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
166
151
|
lte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
167
152
|
gt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
168
153
|
gte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
154
|
+
}>, [precision: number, scale?: number | undefined]>;
|
|
155
|
+
/** Variable-length string without a limit. */
|
|
156
|
+
export declare const text: BaseType<string, string, TextTypeOperators, undefined>;
|
|
157
|
+
/** Variable-length string; `varchar.with(length)` limits its length. */
|
|
158
|
+
export declare const varchar: Type<string, string, MergeOperators<MergeOperators<NoOperators, {
|
|
169
159
|
eq: EqualityOperator<ComparisonSignature>;
|
|
170
160
|
ne: EqualityOperator<ComparisonSignature>;
|
|
171
161
|
in: EqualityOperator<InSignature>;
|
|
172
|
-
}>, {
|
|
173
|
-
like: GenericOperator<PatternSignature, AnyExpression<string | null, unknown>>;
|
|
174
|
-
ilike: GenericOperator<PatternSignature, AnyExpression<string | null, unknown>>;
|
|
175
|
-
}>, undefined>;
|
|
176
|
-
/** Variable-length string; `varchar.with(length)` limits its length. */
|
|
177
|
-
export declare const varchar: Type<string, string, MergeOperators<MergeOperators<NoOperators, {
|
|
178
162
|
lt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
179
163
|
lte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
180
164
|
gt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
181
165
|
gte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
166
|
+
}>, TextOperators>, [length: number]>;
|
|
167
|
+
/** Fixed-length string that PostgreSQL pads with spaces; `char` alone has length 1, and `char.with(length)` sets the length. */
|
|
168
|
+
export declare const char: Type<string, string, MergeOperators<MergeOperators<NoOperators, {
|
|
182
169
|
eq: EqualityOperator<ComparisonSignature>;
|
|
183
170
|
ne: EqualityOperator<ComparisonSignature>;
|
|
184
171
|
in: EqualityOperator<InSignature>;
|
|
185
|
-
}>, {
|
|
186
|
-
like: GenericOperator<PatternSignature, AnyExpression<string | null, unknown>>;
|
|
187
|
-
ilike: GenericOperator<PatternSignature, AnyExpression<string | null, unknown>>;
|
|
188
|
-
}>, [length: number]>;
|
|
189
|
-
/** Fixed-length string that PostgreSQL pads with spaces; `char` alone has length 1, and `char.with(length)` sets the length. */
|
|
190
|
-
export declare const char: Type<string, string, MergeOperators<MergeOperators<NoOperators, {
|
|
191
172
|
lt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
192
173
|
lte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
193
174
|
gt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
194
175
|
gte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
176
|
+
}>, TextOperators>, [length: number]>;
|
|
177
|
+
/** UUID as a string. */
|
|
178
|
+
export declare const uuid: BaseType<string, string, MergeOperators<NoOperators, {
|
|
195
179
|
eq: EqualityOperator<ComparisonSignature>;
|
|
196
180
|
ne: EqualityOperator<ComparisonSignature>;
|
|
197
181
|
in: EqualityOperator<InSignature>;
|
|
198
|
-
}>, {
|
|
199
|
-
like: GenericOperator<PatternSignature, AnyExpression<string | null, unknown>>;
|
|
200
|
-
ilike: GenericOperator<PatternSignature, AnyExpression<string | null, unknown>>;
|
|
201
|
-
}>, [length: number]>;
|
|
202
|
-
/** UUID as a string. */
|
|
203
|
-
export declare const uuid: BaseType<string, string, MergeOperators<NoOperators, {
|
|
204
182
|
lt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
205
183
|
lte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
206
184
|
gt: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
207
185
|
gte: GenericOperator<ComparisonSignature, AnyExpression<unknown, unknown>>;
|
|
208
|
-
eq: EqualityOperator<ComparisonSignature>;
|
|
209
|
-
ne: EqualityOperator<ComparisonSignature>;
|
|
210
|
-
in: EqualityOperator<InSignature>;
|
|
211
186
|
}>, undefined>;
|
|
212
187
|
export { enumOf as enum };
|