@axium/server 0.28.6 → 0.30.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/api/admin.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { AuditFilter, Severity } from '@axium/core';
2
- import { getVersionInfo, plugins } from '@axium/core/plugins';
2
+ import { getVersionInfo } from '@axium/core/packages';
3
+ import { plugins } from '@axium/core/plugins';
3
4
  import { jsonArrayFrom, jsonObjectFrom } from 'kysely/helpers/postgres';
4
5
  import { omit } from 'utilium';
5
6
  import * as z from 'zod';
6
- import pkg from '../../package.json' with { type: 'json' };
7
7
  import { audit, events, getEvents } from '../audit.js';
8
8
  import { requireSession } from '../auth.js';
9
9
  import { config } from '../config.js';
@@ -30,7 +30,11 @@ addRoute({
30
30
  auditEvents,
31
31
  configFiles: config.files.size,
32
32
  plugins: plugins.size,
33
- version: pkg.version,
33
+ versions: {
34
+ server: await getVersionInfo('@axium/server'),
35
+ core: await getVersionInfo('@axium/core'),
36
+ client: await getVersionInfo('@axium/client'),
37
+ },
34
38
  };
35
39
  },
36
40
  });
@@ -38,7 +42,9 @@ addRoute({
38
42
  path: '/api/admin/plugins',
39
43
  async GET(req) {
40
44
  await assertAdmin(this, req);
41
- return await Array.fromAsync(plugins.values().map(async (p) => Object.assign(omit(p, '_hooks', '_client'), await getVersionInfo(p))));
45
+ return await Array.fromAsync(plugins
46
+ .values()
47
+ .map(async (p) => Object.assign(omit(p, '_hooks', '_client'), p.update_checks ? await getVersionInfo(p.specifier, p.loadedBy) : { latest: null })));
42
48
  },
43
49
  });
44
50
  addRoute({
@@ -1,9 +1,8 @@
1
1
  import { apps } from '@axium/core';
2
- import { plugins } from '@axium/core/plugins';
3
2
  import { requestMethods } from '@axium/core/requests';
4
- import pkg from '../../package.json' with { type: 'json' };
5
3
  import { requireSession } from '../auth.js';
6
4
  import { config } from '../config.js';
5
+ import { getAllVersions } from '../io.js';
7
6
  import { error } from '../requests.js';
8
7
  import { addRoute, routes } from '../routes.js';
9
8
  addRoute({
@@ -15,7 +14,7 @@ addRoute({
15
14
  error(403, 'User is not an administrator');
16
15
  }
17
16
  return {
18
- version: pkg.version,
17
+ versions: await getAllVersions(),
19
18
  routes: Object.fromEntries(routes
20
19
  .entries()
21
20
  .filter(([path]) => path.startsWith('/api/'))
@@ -26,7 +25,6 @@ addRoute({
26
25
  methods: requestMethods.filter(m => m in route),
27
26
  },
28
27
  ])),
29
- plugins: Object.fromEntries(plugins.values().map(plugin => [plugin.name, plugin.version])),
30
28
  };
31
29
  },
32
30
  });
@@ -1,6 +1,7 @@
1
1
  import { UserRegistration } from '@axium/core/user';
2
2
  import { generateRegistrationOptions, verifyRegistrationResponse } from '@simplewebauthn/server';
3
3
  import { randomUUID } from 'node:crypto';
4
+ import { encodeUUID } from 'utilium';
4
5
  import * as z from 'zod';
5
6
  import { audit } from '../audit.js';
6
7
  import { createPasskey, getUser } from '../auth.js';
@@ -21,6 +22,7 @@ async function OPTIONS(request) {
21
22
  const options = await generateRegistrationOptions({
22
23
  rpName: config.auth.rp_name,
23
24
  rpID: config.auth.rp_id,
25
+ userID: encodeUUID(userId),
24
26
  userName: email ?? userId,
25
27
  userDisplayName: name,
26
28
  attestationType: 'none',
package/dist/api/users.js CHANGED
@@ -3,7 +3,7 @@ import { preferenceDefaults, preferenceSchemas } from '@axium/core';
3
3
  import { PasskeyAuthenticationResponse, PasskeyRegistration } from '@axium/core/passkeys';
4
4
  import { LogoutSessions, UserAuthOptions, UserChangeable } from '@axium/core/user';
5
5
  import * as webauthn from '@simplewebauthn/server';
6
- import { omit, pick } from 'utilium';
6
+ import { encodeUUID, omit, pick } from 'utilium';
7
7
  import * as z from 'zod';
8
8
  import { audit } from '../audit.js';
9
9
  import { checkAuthForUser, createPasskey, createVerification, getPasskey, getPasskeysByUserId, getSessions, getUser, useVerification, } from '../auth.js';
@@ -143,6 +143,7 @@ addRoute({
143
143
  const options = await webauthn.generateRegistrationOptions({
144
144
  rpName: config.auth.rp_name,
145
145
  rpID: config.auth.rp_id,
146
+ userID: encodeUUID(userId),
146
147
  userName: userId,
147
148
  userDisplayName: user.email,
148
149
  attestationType: 'none',
package/dist/auth.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import type { Passkey, Session, UserInternal, Verification } from '@axium/core';
2
2
  import type { Insertable, Selectable } from 'kysely';
3
+ import { type WithRequired } from 'utilium';
3
4
  import * as acl from './acl.js';
4
5
  import { type Schema } from './database.js';
5
6
  export declare function getUser(id: string): Promise<UserInternal>;
6
- export declare function updateUser({ id, ...user }: Insertable<Schema['users']>): Promise<UserInternal>;
7
+ export declare function updateUser({ id, ...user }: WithRequired<Insertable<Schema['users']>, 'id'>): Promise<UserInternal>;
7
8
  export interface SessionInternal extends Session {
8
9
  token: string;
9
10
  }
package/dist/config.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { type DeepRequired } from 'utilium';
2
2
  import * as z from 'zod';
3
- export declare const ConfigSchema: z.ZodObject<{
3
+ export declare let ConfigSchema: z.ZodObject<{
4
4
  admin_api: z.ZodOptional<z.ZodBoolean>;
5
5
  allow_new_users: z.ZodOptional<z.ZodBoolean>;
6
6
  apps: z.ZodOptional<z.ZodObject<{
@@ -54,6 +54,7 @@ export declare const ConfigSchema: z.ZodObject<{
54
54
  build: z.ZodOptional<z.ZodString>;
55
55
  }, z.core.$loose>>;
56
56
  }, z.core.$loose>;
57
+ export declare function addConfig<T extends z.core.$ZodLooseShape>(shape: T): void;
57
58
  export interface Config extends z.infer<typeof ConfigSchema> {
58
59
  }
59
60
  export declare const configFiles: Map<string, File>;
package/dist/config.js CHANGED
@@ -9,7 +9,7 @@ import { dirs, logger, systemDir } from './io.js';
9
9
  import { _duplicateStateWarnings, _unique } from './state.js';
10
10
  const audit_severity_levels = ['emergency', 'alert', 'critical', 'error', 'warning', 'notice', 'info', 'debug'];
11
11
  const z_audit_severity = z.literal([...audit_severity_levels, ...audit_severity_levels.map(capitalize)]);
12
- export const ConfigSchema = z
12
+ export let ConfigSchema = z
13
13
  .looseObject({
14
14
  /** Whether /api/admin is enabled */
15
15
  admin_api: z.boolean(),
@@ -78,6 +78,9 @@ export const ConfigSchema = z
78
78
  .partial(),
79
79
  })
80
80
  .partial();
81
+ export function addConfig(shape) {
82
+ ConfigSchema = z.looseObject({ ...ConfigSchema.shape, ...shape });
83
+ }
81
84
  export const configFiles = _unique('configFiles', new Map());
82
85
  export function plainConfig() {
83
86
  return omit(config, Object.keys(configShortcuts));
@@ -1,70 +1,21 @@
1
- import type { Preferences, Severity, UserInternal } from '@axium/core';
1
+ import type { Preferences, UserInternal } from '@axium/core';
2
2
  import type { AuthenticatorTransportFuture, CredentialDeviceType } from '@simplewebauthn/server';
3
3
  import type * as kysely from 'kysely';
4
4
  import { Kysely } from 'kysely';
5
+ import type { Expand, Filter, MutableRecursive, ReadonlyRecursive, Tuple } from 'utilium';
5
6
  import * as z from 'zod';
6
7
  import type { VerificationRole } from './auth.js';
8
+ import rawSchema from './db.json';
7
9
  export interface DBAccessControl {
8
10
  itemId: string;
9
11
  userId?: string | null;
10
12
  role?: string | null;
11
13
  tag?: string | null;
12
- createdAt: kysely.GeneratedAlways<Date>;
14
+ createdAt: kysely.Generated<Date>;
13
15
  }
14
16
  export type DBBool<K extends string> = {
15
17
  [key in K]?: boolean | null;
16
18
  };
17
- export interface Schema {
18
- users: {
19
- id: string;
20
- email: string;
21
- name: string;
22
- image?: string | null;
23
- emailVerified?: Date | null;
24
- preferences: Preferences;
25
- isAdmin: boolean;
26
- roles: string[];
27
- tags: string[];
28
- registeredAt: kysely.GeneratedAlways<Date>;
29
- isSuspended: boolean;
30
- };
31
- sessions: {
32
- id: kysely.GeneratedAlways<string>;
33
- created: kysely.GeneratedAlways<Date>;
34
- userId: string;
35
- token: string;
36
- expires: Date;
37
- elevated: boolean;
38
- };
39
- verifications: {
40
- userId: string;
41
- token: string;
42
- expires: Date;
43
- role: VerificationRole;
44
- };
45
- passkeys: {
46
- id: string;
47
- name: string | null;
48
- createdAt: kysely.GeneratedAlways<Date>;
49
- userId: string;
50
- publicKey: Uint8Array<ArrayBuffer>;
51
- counter: number;
52
- deviceType: CredentialDeviceType;
53
- backedUp: boolean;
54
- transports: AuthenticatorTransportFuture[];
55
- };
56
- audit_log: {
57
- id: kysely.GeneratedAlways<string>;
58
- userId: string | null;
59
- timestamp: kysely.GeneratedAlways<Date>;
60
- severity: Severity;
61
- name: string;
62
- tags: kysely.Generated<string[]>;
63
- source: string;
64
- extra: kysely.Generated<Record<string, unknown>>;
65
- };
66
- [key: `acl.${string}`]: DBAccessControl & Record<string, unknown>;
67
- }
68
19
  export type Database = Kysely<Schema> & AsyncDisposable;
69
20
  export declare let database: Database;
70
21
  export declare function connect(): Database;
@@ -106,8 +57,21 @@ export declare const _sql: (command: string, message: string) => Promise<string>
106
57
  /** Shortcut to output a warning if an error is thrown because relation already exists */
107
58
  export declare const warnExists: (error: string | Error) => void;
108
59
  export declare function init(opt: InitOptions): Promise<void>;
60
+ declare const numberTypes: readonly ["integer", "int2", "int4", "int8", "smallint", "real", "double precision", "float4", "float8", "decimal", "numeric", "serial"];
61
+ declare const bigintTypes: readonly ["bigint", "bigserial"];
62
+ declare const booleanTypes: readonly ["boolean", "bool"];
63
+ declare const stringTypes: readonly ["varchar", "char", "text"];
64
+ declare const dateTypes: readonly ["date", "datetime", "time", "timetz", "timestamp", "timestamptz"];
65
+ declare const binaryTypes: readonly ["binary", "bytea", "varbinary", "blob"];
66
+ declare const numericRangeTypes: readonly ["int4range", "numrange"];
67
+ declare const stringRangeTypes: readonly ["tsrange", "tstzrange", "daterange"];
68
+ declare const multirangeTypes: readonly ["int4multirange", "int8multirange", "nummultirange", "tsmultirange", "tstzmultirange", "datemultirange"];
69
+ declare const _primitive: z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">;
70
+ declare const _ColumnType: z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>;
71
+ declare const ColumnType: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>;
72
+ export type ColumnType = z.infer<typeof ColumnType>;
109
73
  export declare const Column: z.ZodObject<{
110
- type: z.ZodString;
74
+ type: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>;
111
75
  required: z.ZodDefault<z.ZodBoolean>;
112
76
  unique: z.ZodDefault<z.ZodBoolean>;
113
77
  primary: z.ZodDefault<z.ZodBoolean>;
@@ -143,7 +107,7 @@ export declare const Constraint: z.ZodDiscriminatedUnion<[z.ZodObject<{
143
107
  export type Constraint = z.infer<typeof Constraint>;
144
108
  export declare const Table: z.ZodObject<{
145
109
  columns: z.ZodRecord<z.ZodString, z.ZodObject<{
146
- type: z.ZodString;
110
+ type: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>;
147
111
  required: z.ZodDefault<z.ZodBoolean>;
148
112
  unique: z.ZodDefault<z.ZodBoolean>;
149
113
  primary: z.ZodDefault<z.ZodBoolean>;
@@ -186,7 +150,7 @@ export declare function parseIndex(value: IndexString): {
186
150
  export declare const SchemaDecl: z.ZodObject<{
187
151
  tables: z.ZodRecord<z.ZodString, z.ZodObject<{
188
152
  columns: z.ZodRecord<z.ZodString, z.ZodObject<{
189
- type: z.ZodString;
153
+ type: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>;
190
154
  required: z.ZodDefault<z.ZodBoolean>;
191
155
  unique: z.ZodDefault<z.ZodBoolean>;
192
156
  primary: z.ZodDefault<z.ZodBoolean>;
@@ -223,7 +187,7 @@ export declare const SchemaDecl: z.ZodObject<{
223
187
  export interface SchemaDecl extends z.infer<typeof SchemaDecl> {
224
188
  }
225
189
  export declare const ColumnDelta: z.ZodObject<{
226
- type: z.ZodOptional<z.ZodString>;
190
+ type: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>>;
227
191
  default: z.ZodOptional<z.ZodString>;
228
192
  ops: z.ZodOptional<z.ZodArray<z.ZodLiteral<"drop_default" | "set_required" | "drop_required">>>;
229
193
  }, z.core.$strict>;
@@ -231,7 +195,7 @@ export interface ColumnDelta extends z.infer<typeof ColumnDelta> {
231
195
  }
232
196
  export declare const TableDelta: z.ZodObject<{
233
197
  add_columns: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
234
- type: z.ZodString;
198
+ type: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>;
235
199
  required: z.ZodDefault<z.ZodBoolean>;
236
200
  unique: z.ZodDefault<z.ZodBoolean>;
237
201
  primary: z.ZodDefault<z.ZodBoolean>;
@@ -248,7 +212,7 @@ export declare const TableDelta: z.ZodObject<{
248
212
  }, z.core.$strict>>>>;
249
213
  drop_columns: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
250
214
  alter_columns: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
251
- type: z.ZodOptional<z.ZodString>;
215
+ type: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>>;
252
216
  default: z.ZodOptional<z.ZodString>;
253
217
  ops: z.ZodOptional<z.ZodArray<z.ZodLiteral<"drop_default" | "set_required" | "drop_required">>>;
254
218
  }, z.core.$strict>>>>;
@@ -276,7 +240,7 @@ export declare const VersionDelta: z.ZodObject<{
276
240
  delta: z.ZodLiteral<true>;
277
241
  add_tables: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
278
242
  columns: z.ZodRecord<z.ZodString, z.ZodObject<{
279
- type: z.ZodString;
243
+ type: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>;
280
244
  required: z.ZodDefault<z.ZodBoolean>;
281
245
  unique: z.ZodDefault<z.ZodBoolean>;
282
246
  primary: z.ZodDefault<z.ZodBoolean>;
@@ -311,7 +275,7 @@ export declare const VersionDelta: z.ZodObject<{
311
275
  drop_tables: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
312
276
  alter_tables: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
313
277
  add_columns: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
314
- type: z.ZodString;
278
+ type: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>;
315
279
  required: z.ZodDefault<z.ZodBoolean>;
316
280
  unique: z.ZodDefault<z.ZodBoolean>;
317
281
  primary: z.ZodDefault<z.ZodBoolean>;
@@ -328,7 +292,7 @@ export declare const VersionDelta: z.ZodObject<{
328
292
  }, z.core.$strict>>>>;
329
293
  drop_columns: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
330
294
  alter_columns: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
331
- type: z.ZodOptional<z.ZodString>;
295
+ type: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>>;
332
296
  default: z.ZodOptional<z.ZodString>;
333
297
  ops: z.ZodOptional<z.ZodArray<z.ZodLiteral<"drop_default" | "set_required" | "drop_required">>>;
334
298
  }, z.core.$strict>>>>;
@@ -360,7 +324,7 @@ export declare const SchemaFile: z.ZodObject<{
360
324
  versions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
361
325
  tables: z.ZodRecord<z.ZodString, z.ZodObject<{
362
326
  columns: z.ZodRecord<z.ZodString, z.ZodObject<{
363
- type: z.ZodString;
327
+ type: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>;
364
328
  required: z.ZodDefault<z.ZodBoolean>;
365
329
  unique: z.ZodDefault<z.ZodBoolean>;
366
330
  primary: z.ZodDefault<z.ZodBoolean>;
@@ -398,7 +362,7 @@ export declare const SchemaFile: z.ZodObject<{
398
362
  delta: z.ZodLiteral<true>;
399
363
  add_tables: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
400
364
  columns: z.ZodRecord<z.ZodString, z.ZodObject<{
401
- type: z.ZodString;
365
+ type: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>;
402
366
  required: z.ZodDefault<z.ZodBoolean>;
403
367
  unique: z.ZodDefault<z.ZodBoolean>;
404
368
  primary: z.ZodDefault<z.ZodBoolean>;
@@ -433,7 +397,7 @@ export declare const SchemaFile: z.ZodObject<{
433
397
  drop_tables: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
434
398
  alter_tables: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
435
399
  add_columns: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
436
- type: z.ZodString;
400
+ type: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>;
437
401
  required: z.ZodDefault<z.ZodBoolean>;
438
402
  unique: z.ZodDefault<z.ZodBoolean>;
439
403
  primary: z.ZodDefault<z.ZodBoolean>;
@@ -450,7 +414,7 @@ export declare const SchemaFile: z.ZodObject<{
450
414
  }, z.core.$strict>>>>;
451
415
  drop_columns: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
452
416
  alter_columns: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
453
- type: z.ZodOptional<z.ZodString>;
417
+ type: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>>;
454
418
  default: z.ZodOptional<z.ZodString>;
455
419
  ops: z.ZodOptional<z.ZodArray<z.ZodLiteral<"drop_default" | "set_required" | "drop_required">>>;
456
420
  }, z.core.$strict>>>>;
@@ -482,6 +446,107 @@ export declare const SchemaFile: z.ZodObject<{
482
446
  export interface SchemaFile extends z.infer<typeof SchemaFile> {
483
447
  }
484
448
  export declare function getSchemaFiles(): Generator<[string, SchemaFile]>;
449
+ export type ApplyColumnDelta<C extends z.input<typeof Column>, D extends z.input<typeof ColumnDelta>> = Omit<C, 'type' | 'default' | 'required'> & {
450
+ type: D extends {
451
+ type: infer T;
452
+ } ? T : C['type'];
453
+ default: D extends {
454
+ ops: readonly any[];
455
+ } ? 'drop_default' extends D['ops'][number] ? undefined : D extends {
456
+ default: infer Def;
457
+ } ? Def : C['default'] : D extends {
458
+ default: infer Def;
459
+ } ? Def : C['default'];
460
+ required: D extends {
461
+ ops: readonly any[];
462
+ } ? 'set_required' extends D['ops'][number] ? true : 'drop_required' extends D['ops'][number] ? false : C['required'] : C['required'];
463
+ };
464
+ export type ApplyTableDelta<T extends z.input<typeof Table>, D extends z.input<typeof TableDelta>> = {
465
+ columns: {
466
+ [K in keyof T['columns'] as K extends (D extends {
467
+ drop_columns: any[];
468
+ } ? D['drop_columns'][number] : never) ? never : K]: K extends keyof (D extends {
469
+ alter_columns: any;
470
+ } ? D['alter_columns'] : {}) ? ApplyColumnDelta<T['columns'][K], (D['alter_columns'] & {})[K & keyof D['alter_columns']]> : T['columns'][K];
471
+ } & (D extends {
472
+ add_columns: infer A;
473
+ } ? A : {});
474
+ constraints: {
475
+ [K in keyof T['constraints'] as K extends (D extends {
476
+ drop_constraints: any[];
477
+ } ? D['drop_constraints'][number] : never) ? never : K]: T['constraints'][K];
478
+ } & (D extends {
479
+ add_constraints: infer A;
480
+ } ? A : {});
481
+ };
482
+ export type ApplyDeltaToSchema<S extends z.input<typeof SchemaDecl>, D extends z.input<typeof VersionDelta>> = {
483
+ tables: {
484
+ [K in keyof S['tables'] as K extends (D extends {
485
+ drop_tables: any[];
486
+ } ? D['drop_tables'][number] : never) ? never : K]: K extends keyof (D extends {
487
+ alter_tables: any;
488
+ } ? D['alter_tables'] : {}) ? ApplyTableDelta<S['tables'][K], (D['alter_tables'] & {})[K & keyof D['alter_tables']]> : S['tables'][K];
489
+ } & (D extends {
490
+ add_tables: infer A;
491
+ } ? A : {});
492
+ indexes: D extends {
493
+ add_indexes: infer Add;
494
+ drop_indexes: infer Drop;
495
+ } ? [...Filter<Drop extends readonly any[] ? Drop[number] : never, S['indexes'] & {}>, ...(Add extends readonly any[] ? Add : [])] : S['indexes'];
496
+ };
497
+ type ResolveVersions<V extends readonly any[], Current extends z.input<typeof SchemaDecl> = {
498
+ tables: {};
499
+ indexes: [];
500
+ }> = V extends readonly [
501
+ infer Head extends z.input<typeof VersionDelta> | (z.input<typeof SchemaDecl> & {
502
+ delta: false;
503
+ }),
504
+ ...infer Tail extends (z.input<typeof VersionDelta> | (z.input<typeof SchemaDecl> & {
505
+ delta: false;
506
+ }))[]
507
+ ] ? Head extends z.input<typeof VersionDelta> ? ResolveVersions<Tail, ApplyDeltaToSchema<Current, Head>> : Head extends z.input<typeof SchemaDecl> ? ResolveVersions<Tail, Head> : never : Current;
508
+ export type FullSchema<S extends z.input<typeof SchemaFile>> = ResolveVersions<S['versions']>;
509
+ type __RangeContent = string | number | bigint | boolean | null | undefined;
510
+ type _Range<T extends __RangeContent> = `${'(' | '['}${T},${T}${')' | ']'}`;
511
+ type _MultiRange = `{${string}}`;
512
+ interface ColumnValueMap extends Record<(typeof numberTypes)[number], number>, Record<(typeof bigintTypes)[number], bigint>, Record<(typeof booleanTypes)[number], boolean>, Record<(typeof stringTypes)[number], string>, Record<(typeof dateTypes)[number], Date>, Record<(typeof binaryTypes)[number], Uint8Array<ArrayBuffer>>, Record<(typeof numericRangeTypes)[number], _Range<number>>, Record<(typeof stringRangeTypes)[number], _Range<string>>, Record<(typeof multirangeTypes)[number], _MultiRange> {
513
+ int8range: _Range<bigint>;
514
+ uuid: string;
515
+ json: any;
516
+ jsonb: any;
517
+ }
518
+ type ColumnTypeToValue<T extends ColumnType> = T extends `${infer CT extends z.infer<typeof _ColumnType>}[${infer N extends '' | number}]` ? N extends number ? Tuple<ColumnTypeToValue<CT>, N> : ColumnTypeToValue<CT>[] : T extends `${infer Base extends z.infer<typeof _primitive>}(${string})` ? ColumnTypeToValue<Base> : T extends keyof ColumnValueMap ? ColumnValueMap[T] : never;
519
+ /**
520
+ * Convert a column definition into the Kysely database schema type
521
+ */
522
+ export type ColumnSchema<T extends z.input<typeof Column>> = T['default'] extends {} ? kysely.Generated<ColumnTypeToValue<T['type']>> : T['required'] extends true ? ColumnTypeToValue<T['type']> : ColumnTypeToValue<T['type']> | null;
523
+ /**
524
+ * Convert a table definition into the Kysely database schema type
525
+ */
526
+ export type TableSchema<T extends z.input<typeof Table>> = {
527
+ [K in keyof T['columns']]: ColumnSchema<T['columns'][K]>;
528
+ };
529
+ type _DBFromSchema<TBs extends Record<string, z.input<typeof Table>>> = {
530
+ [K in keyof TBs]: Expand<TableSchema<TBs[K]>>;
531
+ };
532
+ /**
533
+ * Convert an entire schema definition file info the Kysely database schema type
534
+ */
535
+ export type DatabaseFromSchemaFile<S extends ReadonlyRecursive<z.input<typeof SchemaFile>>> = _DBFromSchema<FullSchema<MutableRecursive<S>>['tables']>;
536
+ type RawDB = DatabaseFromSchemaFile<typeof rawSchema>;
537
+ export interface Schema extends Omit<RawDB, 'users' | 'verifications' | 'passkeys'> {
538
+ users: Expand<RawDB['users'] & {
539
+ preferences: kysely.Generated<Preferences>;
540
+ }>;
541
+ verifications: Expand<RawDB['verifications'] & {
542
+ role: VerificationRole;
543
+ }>;
544
+ passkeys: Expand<Omit<RawDB['passkeys'], 'transports'> & {
545
+ deviceType: CredentialDeviceType;
546
+ transports: AuthenticatorTransportFuture[];
547
+ }>;
548
+ [key: `acl.${string}`]: DBAccessControl & Record<string, unknown>;
549
+ }
485
550
  /**
486
551
  * Get the active schema
487
552
  */
@@ -529,3 +594,4 @@ export interface CheckOptions extends OpOptions {
529
594
  export declare function checkTableTypes<TB extends keyof Schema & string>(tableName: TB, types: Table, opt: CheckOptions): Promise<void>;
530
595
  export declare function clean(opt: Partial<OpOptions>): Promise<void>;
531
596
  export declare function rotatePassword(): Promise<void>;
597
+ export {};
package/dist/database.js CHANGED
@@ -63,6 +63,7 @@ import * as z from 'zod';
63
63
  import config from './config.js';
64
64
  import rawSchema from './db.json' with { type: 'json' };
65
65
  import { dirs, systemDir } from './io.js';
66
+ pg.types.setTypeParser(pg.types.builtins.INT8, BigInt);
66
67
  const sym = Symbol.for('Axium:database');
67
68
  export let database;
68
69
  export function connect() {
@@ -230,8 +231,55 @@ export async function init(opt) {
230
231
  await result_1;
231
232
  }
232
233
  }
234
+ const numberTypes = [
235
+ 'integer',
236
+ 'int2',
237
+ 'int4',
238
+ 'int8',
239
+ 'smallint',
240
+ 'real',
241
+ 'double precision',
242
+ 'float4',
243
+ 'float8',
244
+ 'decimal',
245
+ 'numeric',
246
+ 'serial',
247
+ ];
248
+ const bigintTypes = ['bigint', 'bigserial'];
249
+ const booleanTypes = ['boolean', 'bool'];
250
+ const stringTypes = ['varchar', 'char', 'text'];
251
+ const dateTypes = ['date', 'datetime', 'time', 'timetz', 'timestamp', 'timestamptz'];
252
+ const binaryTypes = ['binary', 'bytea', 'varbinary', 'blob'];
253
+ const numericRangeTypes = ['int4range', 'numrange'];
254
+ const stringRangeTypes = ['tsrange', 'tstzrange', 'daterange'];
255
+ const multirangeTypes = ['int4multirange', 'int8multirange', 'nummultirange', 'tsmultirange', 'tstzmultirange', 'datemultirange'];
256
+ const _primitive = z.literal([
257
+ ...numberTypes,
258
+ ...bigintTypes,
259
+ ...booleanTypes,
260
+ ...stringTypes,
261
+ ...dateTypes,
262
+ ...binaryTypes,
263
+ ...numericRangeTypes,
264
+ ...stringRangeTypes,
265
+ ...multirangeTypes,
266
+ 'uuid',
267
+ 'json',
268
+ 'jsonb',
269
+ ]);
270
+ const _ColumnType = z.union([
271
+ _primitive,
272
+ z.templateLiteral([
273
+ z.literal(['char', 'varchar', 'binary', 'varbinary', 'datetime', 'time', 'timetz', 'timestamp', 'timestamptz']),
274
+ '(',
275
+ z.int().nonnegative(),
276
+ ')',
277
+ ]),
278
+ z.templateLiteral([z.literal(['decimal', 'numeric']), '(', z.int().nonnegative(), z.literal([',', ', ']), z.int().nonnegative(), ')']),
279
+ ]);
280
+ const ColumnType = z.union([_ColumnType, z.templateLiteral([_ColumnType, '[', z.int().nonnegative().optional(), ']'])]);
233
281
  export const Column = z.strictObject({
234
- type: z.string(),
282
+ type: ColumnType,
235
283
  required: z.boolean().default(false),
236
284
  unique: z.boolean().default(false),
237
285
  primary: z.boolean().default(false),
@@ -275,7 +323,7 @@ export const SchemaDecl = z.strictObject({
275
323
  indexes: IndexString.array().optional().default([]),
276
324
  });
277
325
  export const ColumnDelta = z.strictObject({
278
- type: z.string().optional(),
326
+ type: ColumnType.optional(),
279
327
  default: z.string().optional(),
280
328
  ops: z.literal(['drop_default', 'set_required', 'drop_required']).array().optional(),
281
329
  });
package/dist/db.json CHANGED
@@ -65,6 +65,16 @@
65
65
  }
66
66
  },
67
67
  "indexes": ["sessions:id", "passkeys:userId"]
68
+ },
69
+ {
70
+ "delta": true,
71
+ "alter_tables": {
72
+ "users": {
73
+ "alter_columns": {
74
+ "name": { "ops": ["set_required"] }
75
+ }
76
+ }
77
+ }
68
78
  }
69
79
  ],
70
80
  "wipe": ["users", "verifications", "passkeys", "sessions", "audit_log"]
package/dist/io.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { type PackageVersionInfo } from '@axium/core/packages';
1
2
  import { Logger } from 'logzen';
2
3
  export declare const systemDir = "/etc/axium";
3
4
  export declare const dirs: string[];
@@ -23,3 +24,4 @@ export interface PortOptions {
23
24
  * If the origin has a port, passkeys do not work correctly with some password managers.
24
25
  */
25
26
  export declare function restrictedPorts(opt: PortOptions): Promise<void>;
27
+ export declare function getAllVersions(): Promise<PackageVersionInfo[]>;
package/dist/io.js CHANGED
@@ -1,4 +1,6 @@
1
1
  import * as io from '@axium/core/node/io';
2
+ import { getVersionInfo } from '@axium/core/packages';
3
+ import { plugins } from '@axium/core/plugins';
2
4
  import { Logger } from 'logzen';
3
5
  import * as fs from 'node:fs';
4
6
  import { dirname, join, resolve } from 'node:path/posix';
@@ -77,3 +79,11 @@ export async function restrictedPorts(opt) {
77
79
  }
78
80
  }
79
81
  }
82
+ export async function getAllVersions() {
83
+ return await Array.fromAsync([
84
+ ...plugins.values().map(p => getVersionInfo(p.specifier, p.loadedBy)),
85
+ getVersionInfo('@axium/server'),
86
+ getVersionInfo('@axium/core'),
87
+ getVersionInfo('@axium/client'),
88
+ ]);
89
+ }
package/dist/main.js CHANGED
@@ -442,7 +442,7 @@ try {
442
442
  lengths.available = Math.max(lengths.available || 0, available.length);
443
443
  }
444
444
  for (const [i, entry] of entries.entries()) {
445
- console.log(...['name', 'current', 'latest', 'available'].map(key => styleText(i === 0 ? ['whiteBright', 'underline'] : entry[key] === undefined ? 'none' : [], entry[key].padStart(lengths[key]))));
445
+ console.log(...['name', 'current', 'latest', 'available'].map(key => styleText(i === 0 ? ['whiteBright', 'underline'] : entry[key] === undefined ? 'reset' : [], entry[key].padStart(lengths[key]))));
446
446
  }
447
447
  });
448
448
  axiumConfig = program
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axium/server",
3
- "version": "0.28.6",
3
+ "version": "0.30.0",
4
4
  "author": "James Prevett <axium@jamespre.dev>",
5
5
  "funding": {
6
6
  "type": "individual",
@@ -48,9 +48,9 @@
48
48
  },
49
49
  "peerDependencies": {
50
50
  "@axium/client": ">=0.9.5",
51
- "@axium/core": ">=0.12.0",
51
+ "@axium/core": ">=0.14.0",
52
52
  "kysely": "^0.28.0",
53
- "utilium": "^2.3.8",
53
+ "utilium": "^2.6.0",
54
54
  "zod": "^4.0.5"
55
55
  },
56
56
  "dependencies": {
@@ -1,6 +1,7 @@
1
1
  <script>
2
2
  import { Version } from '@axium/client/components';
3
3
  import { Severity } from '@axium/core';
4
+ import { capitalize } from 'utilium';
4
5
 
5
6
  const { data } = $props();
6
7
  </script>
@@ -11,7 +12,10 @@
11
12
 
12
13
  <h2>Administration</h2>
13
14
 
14
- <p>Axium Server <Version v={data.version} latest={data.latest} /></p>
15
+ {#each ['server', 'core', 'client'] as name}
16
+ {@const info = data.versions[name]}
17
+ <p>Axium {capitalize(name)} <Version v={info.version} latest={info.latest} /></p>
18
+ {/each}
15
19
 
16
20
  <h3><a href="/admin/users">Users</a></h3>
17
21
 
package/schemas/db.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "versions": {
10
10
  "type": "array",
11
11
  "items": {
12
- "anyOf": [
12
+ "oneOf": [
13
13
  {
14
14
  "type": "object",
15
15
  "properties": {
@@ -30,7 +30,72 @@
30
30
  "type": "object",
31
31
  "properties": {
32
32
  "type": {
33
- "type": "string"
33
+ "anyOf": [
34
+ {
35
+ "anyOf": [
36
+ {
37
+ "type": "string",
38
+ "enum": [
39
+ "integer",
40
+ "int2",
41
+ "int4",
42
+ "int8",
43
+ "smallint",
44
+ "real",
45
+ "double precision",
46
+ "float4",
47
+ "float8",
48
+ "decimal",
49
+ "numeric",
50
+ "serial",
51
+ "bigint",
52
+ "bigserial",
53
+ "boolean",
54
+ "bool",
55
+ "varchar",
56
+ "char",
57
+ "text",
58
+ "date",
59
+ "datetime",
60
+ "time",
61
+ "timetz",
62
+ "timestamp",
63
+ "timestamptz",
64
+ "binary",
65
+ "bytea",
66
+ "varbinary",
67
+ "blob",
68
+ "int4range",
69
+ "numrange",
70
+ "tsrange",
71
+ "tstzrange",
72
+ "daterange",
73
+ "int4multirange",
74
+ "int8multirange",
75
+ "nummultirange",
76
+ "tsmultirange",
77
+ "tstzmultirange",
78
+ "datemultirange",
79
+ "uuid",
80
+ "json",
81
+ "jsonb"
82
+ ]
83
+ },
84
+ {
85
+ "type": "string",
86
+ "pattern": "^(char|varchar|binary|varbinary|datetime|time|timetz|timestamp|timestamptz)\\(-?\\d+\\)$"
87
+ },
88
+ {
89
+ "type": "string",
90
+ "pattern": "^(decimal|numeric)\\(-?\\d+(,|, )-?\\d+\\)$"
91
+ }
92
+ ]
93
+ },
94
+ {
95
+ "type": "string",
96
+ "pattern": "^((integer|int2|int4|int8|smallint|real|double precision|float4|float8|decimal|numeric|serial|bigint|bigserial|boolean|bool|varchar|char|text|date|datetime|time|timetz|timestamp|timestamptz|binary|bytea|varbinary|blob|int4range|numrange|tsrange|tstzrange|daterange|int4multirange|int8multirange|nummultirange|tsmultirange|tstzmultirange|datemultirange|uuid|json|jsonb)|(char|varchar|binary|varbinary|datetime|time|timetz|timestamp|timestamptz)\\(-?\\d+\\)|(decimal|numeric)\\(-?\\d+(,|, )-?\\d+\\))\\[(-?\\d+)?\\]$"
97
+ }
98
+ ]
34
99
  },
35
100
  "required": {
36
101
  "default": false,
@@ -75,7 +140,7 @@
75
140
  "type": "string"
76
141
  },
77
142
  "additionalProperties": {
78
- "anyOf": [
143
+ "oneOf": [
79
144
  {
80
145
  "type": "object",
81
146
  "properties": {
@@ -221,7 +286,72 @@
221
286
  "type": "object",
222
287
  "properties": {
223
288
  "type": {
224
- "type": "string"
289
+ "anyOf": [
290
+ {
291
+ "anyOf": [
292
+ {
293
+ "type": "string",
294
+ "enum": [
295
+ "integer",
296
+ "int2",
297
+ "int4",
298
+ "int8",
299
+ "smallint",
300
+ "real",
301
+ "double precision",
302
+ "float4",
303
+ "float8",
304
+ "decimal",
305
+ "numeric",
306
+ "serial",
307
+ "bigint",
308
+ "bigserial",
309
+ "boolean",
310
+ "bool",
311
+ "varchar",
312
+ "char",
313
+ "text",
314
+ "date",
315
+ "datetime",
316
+ "time",
317
+ "timetz",
318
+ "timestamp",
319
+ "timestamptz",
320
+ "binary",
321
+ "bytea",
322
+ "varbinary",
323
+ "blob",
324
+ "int4range",
325
+ "numrange",
326
+ "tsrange",
327
+ "tstzrange",
328
+ "daterange",
329
+ "int4multirange",
330
+ "int8multirange",
331
+ "nummultirange",
332
+ "tsmultirange",
333
+ "tstzmultirange",
334
+ "datemultirange",
335
+ "uuid",
336
+ "json",
337
+ "jsonb"
338
+ ]
339
+ },
340
+ {
341
+ "type": "string",
342
+ "pattern": "^(char|varchar|binary|varbinary|datetime|time|timetz|timestamp|timestamptz)\\(-?\\d+\\)$"
343
+ },
344
+ {
345
+ "type": "string",
346
+ "pattern": "^(decimal|numeric)\\(-?\\d+(,|, )-?\\d+\\)$"
347
+ }
348
+ ]
349
+ },
350
+ {
351
+ "type": "string",
352
+ "pattern": "^((integer|int2|int4|int8|smallint|real|double precision|float4|float8|decimal|numeric|serial|bigint|bigserial|boolean|bool|varchar|char|text|date|datetime|time|timetz|timestamp|timestamptz|binary|bytea|varbinary|blob|int4range|numrange|tsrange|tstzrange|daterange|int4multirange|int8multirange|nummultirange|tsmultirange|tstzmultirange|datemultirange|uuid|json|jsonb)|(char|varchar|binary|varbinary|datetime|time|timetz|timestamp|timestamptz)\\(-?\\d+\\)|(decimal|numeric)\\(-?\\d+(,|, )-?\\d+\\))\\[(-?\\d+)?\\]$"
353
+ }
354
+ ]
225
355
  },
226
356
  "required": {
227
357
  "default": false,
@@ -266,7 +396,7 @@
266
396
  "type": "string"
267
397
  },
268
398
  "additionalProperties": {
269
- "anyOf": [
399
+ "oneOf": [
270
400
  {
271
401
  "type": "object",
272
402
  "properties": {
@@ -394,7 +524,72 @@
394
524
  "type": "object",
395
525
  "properties": {
396
526
  "type": {
397
- "type": "string"
527
+ "anyOf": [
528
+ {
529
+ "anyOf": [
530
+ {
531
+ "type": "string",
532
+ "enum": [
533
+ "integer",
534
+ "int2",
535
+ "int4",
536
+ "int8",
537
+ "smallint",
538
+ "real",
539
+ "double precision",
540
+ "float4",
541
+ "float8",
542
+ "decimal",
543
+ "numeric",
544
+ "serial",
545
+ "bigint",
546
+ "bigserial",
547
+ "boolean",
548
+ "bool",
549
+ "varchar",
550
+ "char",
551
+ "text",
552
+ "date",
553
+ "datetime",
554
+ "time",
555
+ "timetz",
556
+ "timestamp",
557
+ "timestamptz",
558
+ "binary",
559
+ "bytea",
560
+ "varbinary",
561
+ "blob",
562
+ "int4range",
563
+ "numrange",
564
+ "tsrange",
565
+ "tstzrange",
566
+ "daterange",
567
+ "int4multirange",
568
+ "int8multirange",
569
+ "nummultirange",
570
+ "tsmultirange",
571
+ "tstzmultirange",
572
+ "datemultirange",
573
+ "uuid",
574
+ "json",
575
+ "jsonb"
576
+ ]
577
+ },
578
+ {
579
+ "type": "string",
580
+ "pattern": "^(char|varchar|binary|varbinary|datetime|time|timetz|timestamp|timestamptz)\\(-?\\d+\\)$"
581
+ },
582
+ {
583
+ "type": "string",
584
+ "pattern": "^(decimal|numeric)\\(-?\\d+(,|, )-?\\d+\\)$"
585
+ }
586
+ ]
587
+ },
588
+ {
589
+ "type": "string",
590
+ "pattern": "^((integer|int2|int4|int8|smallint|real|double precision|float4|float8|decimal|numeric|serial|bigint|bigserial|boolean|bool|varchar|char|text|date|datetime|time|timetz|timestamp|timestamptz|binary|bytea|varbinary|blob|int4range|numrange|tsrange|tstzrange|daterange|int4multirange|int8multirange|nummultirange|tsmultirange|tstzmultirange|datemultirange|uuid|json|jsonb)|(char|varchar|binary|varbinary|datetime|time|timetz|timestamp|timestamptz)\\(-?\\d+\\)|(decimal|numeric)\\(-?\\d+(,|, )-?\\d+\\))\\[(-?\\d+)?\\]$"
591
+ }
592
+ ]
398
593
  },
399
594
  "required": {
400
595
  "default": false,
@@ -449,7 +644,72 @@
449
644
  "type": "object",
450
645
  "properties": {
451
646
  "type": {
452
- "type": "string"
647
+ "anyOf": [
648
+ {
649
+ "anyOf": [
650
+ {
651
+ "type": "string",
652
+ "enum": [
653
+ "integer",
654
+ "int2",
655
+ "int4",
656
+ "int8",
657
+ "smallint",
658
+ "real",
659
+ "double precision",
660
+ "float4",
661
+ "float8",
662
+ "decimal",
663
+ "numeric",
664
+ "serial",
665
+ "bigint",
666
+ "bigserial",
667
+ "boolean",
668
+ "bool",
669
+ "varchar",
670
+ "char",
671
+ "text",
672
+ "date",
673
+ "datetime",
674
+ "time",
675
+ "timetz",
676
+ "timestamp",
677
+ "timestamptz",
678
+ "binary",
679
+ "bytea",
680
+ "varbinary",
681
+ "blob",
682
+ "int4range",
683
+ "numrange",
684
+ "tsrange",
685
+ "tstzrange",
686
+ "daterange",
687
+ "int4multirange",
688
+ "int8multirange",
689
+ "nummultirange",
690
+ "tsmultirange",
691
+ "tstzmultirange",
692
+ "datemultirange",
693
+ "uuid",
694
+ "json",
695
+ "jsonb"
696
+ ]
697
+ },
698
+ {
699
+ "type": "string",
700
+ "pattern": "^(char|varchar|binary|varbinary|datetime|time|timetz|timestamp|timestamptz)\\(-?\\d+\\)$"
701
+ },
702
+ {
703
+ "type": "string",
704
+ "pattern": "^(decimal|numeric)\\(-?\\d+(,|, )-?\\d+\\)$"
705
+ }
706
+ ]
707
+ },
708
+ {
709
+ "type": "string",
710
+ "pattern": "^((integer|int2|int4|int8|smallint|real|double precision|float4|float8|decimal|numeric|serial|bigint|bigserial|boolean|bool|varchar|char|text|date|datetime|time|timetz|timestamp|timestamptz|binary|bytea|varbinary|blob|int4range|numrange|tsrange|tstzrange|daterange|int4multirange|int8multirange|nummultirange|tsmultirange|tstzmultirange|datemultirange|uuid|json|jsonb)|(char|varchar|binary|varbinary|datetime|time|timetz|timestamp|timestamptz)\\(-?\\d+\\)|(decimal|numeric)\\(-?\\d+(,|, )-?\\d+\\))\\[(-?\\d+)?\\]$"
711
+ }
712
+ ]
453
713
  },
454
714
  "default": {
455
715
  "type": "string"
@@ -476,7 +736,7 @@
476
736
  "type": "string"
477
737
  },
478
738
  "additionalProperties": {
479
- "anyOf": [
739
+ "oneOf": [
480
740
  {
481
741
  "type": "object",
482
742
  "properties": {