@axium/server 0.44.2 → 0.44.4

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/db/delta.js CHANGED
@@ -1,3 +1,55 @@
1
+ var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
2
+ if (value !== null && value !== void 0) {
3
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
4
+ var dispose, inner;
5
+ if (async) {
6
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
7
+ dispose = value[Symbol.asyncDispose];
8
+ }
9
+ if (dispose === void 0) {
10
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
11
+ dispose = value[Symbol.dispose];
12
+ if (async) inner = dispose;
13
+ }
14
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
15
+ if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
16
+ env.stack.push({ value: value, dispose: dispose, async: async });
17
+ }
18
+ else if (async) {
19
+ env.stack.push({ async: true });
20
+ }
21
+ return value;
22
+ };
23
+ var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
24
+ return function (env) {
25
+ function fail(e) {
26
+ env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
27
+ env.hasError = true;
28
+ }
29
+ var r, s = 0;
30
+ function next() {
31
+ while (r = env.stack.pop()) {
32
+ try {
33
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
34
+ if (r.dispose) {
35
+ var result = r.dispose.call(r.value);
36
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
37
+ }
38
+ else s |= 1;
39
+ }
40
+ catch (e) {
41
+ fail(e);
42
+ }
43
+ }
44
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
45
+ if (env.hasError) throw env.error;
46
+ }
47
+ return next();
48
+ };
49
+ })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
50
+ var e = new Error(message);
51
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
+ });
1
53
  import * as io from 'ioium/node';
2
54
  import { sql } from 'kysely';
3
55
  import { styleText } from 'node:util';
@@ -339,91 +391,103 @@ export async function apply(delta, forceAbort = false) {
339
391
  const tx = await database.startTransaction().execute();
340
392
  try {
341
393
  for (const [tableName, table] of Object.entries(delta.add_tables)) {
342
- io.start('Adding table ' + tableName);
343
- let query = tx.schema.createTable(tableName);
344
- const columns = Object.entries(table.columns);
345
- const pkColumns = columns.filter(([, column]) => column.primary).map(([name, column]) => ({ name, ...column }));
346
- const needsSpecialConstraint = pkColumns.length > 1 || pkColumns.some(col => !col.required);
347
- for (const [colName, column] of columns) {
348
- query = query.addColumn(colName, sql.raw(column.type), data.buildColumn(column, !needsSpecialConstraint));
394
+ const env_1 = { stack: [], error: void 0, hasError: false };
395
+ try {
396
+ const _ = __addDisposableResource(env_1, io.start('Adding table ' + tableName), false);
397
+ let query = tx.schema.createTable(tableName);
398
+ const columns = Object.entries(table.columns);
399
+ const pkColumns = columns.filter(([, column]) => column.primary).map(([name, column]) => ({ name, ...column }));
400
+ const needsSpecialConstraint = pkColumns.length > 1 || pkColumns.some(col => !col.required);
401
+ for (const [colName, column] of columns) {
402
+ query = query.addColumn(colName, sql.raw(column.type), data.buildColumn(column, !needsSpecialConstraint));
403
+ }
404
+ if (needsSpecialConstraint) {
405
+ query = query.addPrimaryKeyConstraint('PK_' + tableName.replaceAll('.', '_'), pkColumns.map(col => col.name));
406
+ }
407
+ await query.execute();
408
+ io.done();
409
+ }
410
+ catch (e_1) {
411
+ env_1.error = e_1;
412
+ env_1.hasError = true;
349
413
  }
350
- if (needsSpecialConstraint) {
351
- query = query.addPrimaryKeyConstraint('PK_' + tableName.replaceAll('.', '_'), pkColumns.map(col => col.name));
414
+ finally {
415
+ __disposeResources(env_1);
352
416
  }
353
- await query.execute();
354
- io.done();
355
417
  }
356
418
  for (const tableName of delta.drop_tables) {
357
- io.start('Dropping table ' + tableName);
358
- await tx.schema.dropTable(tableName).execute();
359
- io.done();
419
+ await io.track('Dropping table ' + tableName, tx.schema.dropTable(tableName).execute());
360
420
  }
361
421
  for (const [tableName, tableDelta] of Object.entries(delta.alter_tables)) {
362
- io.start(`Modifying table ${tableName}`);
363
- const query = tx.schema.alterTable(tableName);
364
- for (const constraint of tableDelta.drop_constraints) {
365
- await query.dropConstraint(constraint).execute();
366
- }
367
- for (const colName of tableDelta.drop_columns) {
368
- await query.dropColumn(colName).execute();
369
- }
370
- for (const [colName, column] of Object.entries(tableDelta.add_columns)) {
371
- await query.addColumn(colName, sql.raw(column.type), data.buildColumn(column, false)).execute();
372
- }
373
- for (const [colName, column] of Object.entries(tableDelta.alter_columns)) {
374
- if (column.default)
375
- await query.alterColumn(colName, col => col.setDefault(sql.raw(String(column.default)))).execute();
376
- if (column.type)
377
- await query.alterColumn(colName, col => col.setDataType(sql.raw(column.type))).execute();
378
- for (const op of column.ops ?? []) {
379
- switch (op) {
380
- case 'drop_default':
381
- if (column.default)
382
- throw 'Cannot set and drop default at the same time';
383
- await query.alterColumn(colName, col => col.dropDefault()).execute();
422
+ const env_2 = { stack: [], error: void 0, hasError: false };
423
+ try {
424
+ const _ = __addDisposableResource(env_2, io.start(`Modifying table ${tableName}`), false);
425
+ const query = tx.schema.alterTable(tableName);
426
+ for (const constraint of tableDelta.drop_constraints) {
427
+ await query.dropConstraint(constraint).execute();
428
+ }
429
+ for (const colName of tableDelta.drop_columns) {
430
+ await query.dropColumn(colName).execute();
431
+ }
432
+ for (const [colName, column] of Object.entries(tableDelta.add_columns)) {
433
+ await query.addColumn(colName, sql.raw(column.type), data.buildColumn(column, false)).execute();
434
+ }
435
+ for (const [colName, column] of Object.entries(tableDelta.alter_columns)) {
436
+ if (column.default)
437
+ await query.alterColumn(colName, col => col.setDefault(sql.raw(String(column.default)))).execute();
438
+ if (column.type)
439
+ await query.alterColumn(colName, col => col.setDataType(sql.raw(column.type))).execute();
440
+ for (const op of column.ops ?? []) {
441
+ switch (op) {
442
+ case 'drop_default':
443
+ if (column.default)
444
+ throw 'Cannot set and drop default at the same time';
445
+ await query.alterColumn(colName, col => col.dropDefault()).execute();
446
+ break;
447
+ case 'set_required':
448
+ await query.alterColumn(colName, col => col.setNotNull()).execute();
449
+ break;
450
+ case 'drop_required':
451
+ await query.alterColumn(colName, col => col.dropNotNull()).execute();
452
+ break;
453
+ }
454
+ }
455
+ }
456
+ for (const [name, con] of Object.entries(tableDelta.add_constraints)) {
457
+ switch (con.type) {
458
+ case 'unique':
459
+ await query.addUniqueConstraint(name, con.on, b => (con.nulls_not_distinct ? b.nullsNotDistinct() : b)).execute();
384
460
  break;
385
- case 'set_required':
386
- await query.alterColumn(colName, col => col.setNotNull()).execute();
461
+ case 'check':
462
+ await query.addCheckConstraint(name, sql.raw(con.check)).execute();
387
463
  break;
388
- case 'drop_required':
389
- await query.alterColumn(colName, col => col.dropNotNull()).execute();
464
+ case 'foreign_key':
465
+ await query.addForeignKeyConstraint(name, con.on, con.target, con.references, b => b).execute();
466
+ break;
467
+ case 'primary_key':
468
+ await query.addPrimaryKeyConstraint(name, con.on).execute();
390
469
  break;
391
470
  }
392
471
  }
472
+ io.done();
393
473
  }
394
- for (const [name, con] of Object.entries(tableDelta.add_constraints)) {
395
- switch (con.type) {
396
- case 'unique':
397
- await query.addUniqueConstraint(name, con.on, b => (con.nulls_not_distinct ? b.nullsNotDistinct() : b)).execute();
398
- break;
399
- case 'check':
400
- await query.addCheckConstraint(name, sql.raw(con.check)).execute();
401
- break;
402
- case 'foreign_key':
403
- await query.addForeignKeyConstraint(name, con.on, con.target, con.references, b => b).execute();
404
- break;
405
- case 'primary_key':
406
- await query.addPrimaryKeyConstraint(name, con.on).execute();
407
- break;
408
- }
474
+ catch (e_2) {
475
+ env_2.error = e_2;
476
+ env_2.hasError = true;
477
+ }
478
+ finally {
479
+ __disposeResources(env_2);
409
480
  }
410
- io.done();
411
481
  }
412
482
  for (const [indexName, index] of Object.entries(delta.add_indexes)) {
413
- io.start('Adding index ' + indexName);
414
- await tx.schema.createIndex(indexName).on(index.on).columns(index.columns).execute();
415
- io.done();
483
+ await io.track('Creating index ' + indexName, tx.schema.createIndex(indexName).on(index.on).columns(index.columns).execute());
416
484
  }
417
485
  for (const index of delta.drop_indexes) {
418
- io.start('Dropping index ' + index);
419
- await tx.schema.dropIndex(index).execute();
420
- io.done();
486
+ await io.track('Dropping index ' + index, tx.schema.dropIndex(index).execute());
421
487
  }
422
488
  if (forceAbort)
423
489
  throw 'Rolling back due to --abort';
424
- io.start('Committing');
425
- await tx.commit().execute();
426
- io.done();
490
+ await io.track('Committing', tx.commit().execute());
427
491
  }
428
492
  catch (e) {
429
493
  await tx.rollback().execute();
@@ -47,7 +47,7 @@ export interface InitOptions extends OpOptions {
47
47
  check: boolean;
48
48
  }
49
49
  export declare function shouldRecreate(opt: InitOptions): boolean;
50
- export declare function getHBA(opt: OpOptions): Promise<[content: string, writeBack: (newContent: string) => void]>;
50
+ export declare function getHBA(): Promise<[content: string, writeBack: (newContent: string) => void]>;
51
51
  /** @internal @hidden */
52
52
  export declare const _pgHba = "\nlocal axium axium md5\nhost axium axium 127.0.0.1/32 md5\nhost axium axium ::1/128 md5\n";
53
53
  /** @internal @hidden */
package/dist/db/index.js CHANGED
@@ -136,23 +136,17 @@ export function shouldRecreate(opt) {
136
136
  io.warn('already exists. Use --skip to skip or --force to re-create.');
137
137
  throw 2;
138
138
  }
139
- export async function getHBA(opt) {
140
- const hbaShowResult = await io.run('Finding pg_hba.conf', `sudo -u postgres psql -c "SHOW hba_file"`);
141
- io.start('Resolving pg_hba.conf path');
142
- const hbaPath = hbaShowResult.match(/^\s*(.+\.conf)\s*$/m)?.[1]?.trim();
143
- if (!hbaPath) {
144
- throw 'failed. You will need to add password-based auth for the axium user manually.';
145
- }
146
- io.done();
139
+ export async function getHBA() {
140
+ const hbaShowResult = await io.runShell('Finding pg_hba.conf', `sudo -u postgres psql -c "SHOW hba_file"`);
141
+ const hbaPath = io.track('Resolving pg_hba.conf path', () => {
142
+ const result = hbaShowResult.match(/^\s*(.+\.conf)\s*$/m)?.[1]?.trim();
143
+ if (!result)
144
+ throw 'failed. You will need to add password-based auth for the axium user manually.';
145
+ return result;
146
+ });
147
147
  io.debug(`Found pg_hba.conf at ${hbaPath}`);
148
- io.start('Reading HBA configuration');
149
- const content = readFileSync(hbaPath, 'utf-8');
150
- io.done();
151
- const writeBack = (newContent) => {
152
- io.start('Writing HBA configuration');
153
- writeFileSync(hbaPath, newContent);
154
- io.done();
155
- };
148
+ const content = io.track('Reading HBA configuration', () => readFileSync(hbaPath, 'utf-8'));
149
+ const writeBack = (newContent) => io.track('Writing HBA configuration', () => writeFileSync(hbaPath, newContent));
156
150
  return [content, writeBack];
157
151
  }
158
152
  /** @internal @hidden */
@@ -162,7 +156,7 @@ host axium axium 127.0.0.1/32 md5
162
156
  host axium axium ::1/128 md5
163
157
  `;
164
158
  /** @internal @hidden */
165
- export const _sql = (command, message) => io.run(message, `sudo -u postgres psql -c "${command}"`);
159
+ export const _sql = (command, message) => io.runShell(message, `sudo -u postgres psql -c "${command}"`);
166
160
  /** Shortcut to output a warning if an error is thrown because relation already exists */
167
161
  export const warnExists = io.someWarnings([/\w+ "[\w.]+" already exists/, 'already exists.']);
168
162
  export async function init(opt) {
@@ -172,8 +166,8 @@ export async function init(opt) {
172
166
  config.save({ db: { password: randomBytes(32).toString('base64') } }, true);
173
167
  io.debug('Generated password and wrote to global config');
174
168
  }
175
- await io.run('Checking for sudo', 'which sudo');
176
- await io.run('Checking for psql', 'which psql');
169
+ await io.runShell('Checking for sudo', 'which sudo');
170
+ await io.runShell('Checking for psql', 'which psql');
177
171
  await _sql('CREATE DATABASE axium', 'Creating database').catch(async (error) => {
178
172
  if (error != 'database "axium" already exists')
179
173
  throw error;
@@ -195,24 +189,19 @@ export async function init(opt) {
195
189
  await _sql('GRANT ALL PRIVILEGES ON DATABASE axium TO axium', 'Granting database privileges');
196
190
  await _sql('GRANT ALL PRIVILEGES ON SCHEMA public TO axium', 'Granting schema privileges');
197
191
  await _sql('ALTER DATABASE axium OWNER TO axium', 'Setting database owner');
198
- await getHBA(opt)
192
+ await getHBA()
199
193
  .then(([content, writeBack]) => {
200
- io.start('Checking for Axium HBA configuration');
201
- if (content.includes(_pgHba))
202
- throw 'already exists.';
203
- io.done();
204
- io.start('Adding Axium HBA configuration');
205
- const newContent = content.replace(/^local\s+all\s+all.*$/m, `$&\n${_pgHba}`);
206
- io.done();
194
+ io.track('Checking for Axium HBA configuration', () => {
195
+ if (content.includes(_pgHba))
196
+ throw 'already exists.';
197
+ });
198
+ const newContent = io.track('Adding Axium HBA configuration', () => content.replace(/^local\s+all\s+all.*$/m, `$&\n${_pgHba}`));
207
199
  writeBack(newContent);
208
200
  })
209
201
  .catch(io.warn);
210
202
  await _sql('SELECT pg_reload_conf()', 'Reloading configuration');
211
- io.start('Connecting to database');
212
- const _ = __addDisposableResource(env_1, connect(), true);
213
- io.done();
214
- io.start('Creating schema acl');
215
- await database.schema.createSchema('acl').execute().then(io.done).catch(warnExists);
203
+ const _ = __addDisposableResource(env_1, io.track('Connecting to database', connect), true);
204
+ await io.track('Creating schema acl', database.schema.createSchema('acl').execute()).catch(warnExists);
216
205
  }
217
206
  catch (e_1) {
218
207
  env_1.error = e_1;
@@ -286,10 +275,8 @@ export async function checkTableTypes(tableName, types, opt, tableMetadata) {
286
275
  }
287
276
  export async function clean(opt) {
288
277
  const now = new Date();
289
- io.start('Removing expired sessions');
290
- await database.deleteFrom('sessions').where('sessions.expires', '<', now).execute().then(io.done);
291
- io.start('Removing expired verifications');
292
- await database.deleteFrom('verifications').where('verifications.expires', '<', now).execute().then(io.done);
278
+ await io.track('Removing expired sessions', database.deleteFrom('sessions').where('sessions.expires', '<', now).execute());
279
+ await io.track('Removing expired verifications', database.deleteFrom('verifications').where('verifications.expires', '<', now).execute());
293
280
  for (const plugin of plugins.values()) {
294
281
  if (!plugin._hooks?.clean)
295
282
  continue;
@@ -298,11 +285,7 @@ export async function clean(opt) {
298
285
  }
299
286
  }
300
287
  export async function rotatePassword() {
301
- io.start('Generating new password');
302
- const password = randomBytes(32).toString('base64');
303
- io.done();
304
- io.start('Updating global config');
305
- config.save({ db: { password } }, true);
306
- io.done();
288
+ const password = io.track('Generating new password', () => randomBytes(32).toString('base64'));
289
+ io.track('Updating global config', () => config.save({ db: { password } }, true));
307
290
  await _sql(`ALTER USER axium WITH ENCRYPTED PASSWORD '${password}'`, 'Updating database user password');
308
291
  }
@@ -7,7 +7,7 @@ export * from './data.js';
7
7
  export declare const SchemaDecl: z.ZodObject<{
8
8
  tables: z.ZodRecord<z.ZodString, z.ZodObject<{
9
9
  columns: z.ZodRecord<z.ZodString, z.ZodObject<{
10
- 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}]`>]>;
10
+ type: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "int8" | "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[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "int8[]" | "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}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `int8[${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}]`>]>;
11
11
  required: z.ZodDefault<z.ZodBoolean>;
12
12
  unique: z.ZodDefault<z.ZodBoolean>;
13
13
  primary: z.ZodDefault<z.ZodBoolean>;
@@ -51,7 +51,7 @@ export declare const SchemaFile: z.ZodObject<{
51
51
  versions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
52
52
  tables: z.ZodRecord<z.ZodString, z.ZodObject<{
53
53
  columns: z.ZodRecord<z.ZodString, z.ZodObject<{
54
- 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}]`>]>;
54
+ type: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "int8" | "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[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "int8[]" | "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}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `int8[${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}]`>]>;
55
55
  required: z.ZodDefault<z.ZodBoolean>;
56
56
  unique: z.ZodDefault<z.ZodBoolean>;
57
57
  primary: z.ZodDefault<z.ZodBoolean>;
@@ -92,7 +92,7 @@ export declare const SchemaFile: z.ZodObject<{
92
92
  delta: z.ZodLiteral<true>;
93
93
  add_tables: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
94
94
  columns: z.ZodRecord<z.ZodString, z.ZodObject<{
95
- 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}]`>]>;
95
+ type: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "int8" | "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[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "int8[]" | "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}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `int8[${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}]`>]>;
96
96
  required: z.ZodDefault<z.ZodBoolean>;
97
97
  unique: z.ZodDefault<z.ZodBoolean>;
98
98
  primary: z.ZodDefault<z.ZodBoolean>;
@@ -127,7 +127,7 @@ export declare const SchemaFile: z.ZodObject<{
127
127
  drop_tables: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
128
128
  alter_tables: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
129
129
  add_columns: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
130
- 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}]`>]>;
130
+ type: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "int8" | "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[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "int8[]" | "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}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `int8[${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}]`>]>;
131
131
  required: z.ZodDefault<z.ZodBoolean>;
132
132
  unique: z.ZodDefault<z.ZodBoolean>;
133
133
  primary: z.ZodDefault<z.ZodBoolean>;
@@ -144,7 +144,7 @@ export declare const SchemaFile: z.ZodObject<{
144
144
  }, z.core.$strict>>>>;
145
145
  drop_columns: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
146
146
  alter_columns: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
147
- 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}]`>]>>;
147
+ type: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "int8" | "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[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "int8[]" | "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}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `int8[${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}]`>]>>;
148
148
  default: z.ZodOptional<z.ZodString>;
149
149
  ops: z.ZodOptional<z.ZodArray<z.ZodLiteral<"drop_default" | "set_required" | "drop_required">>>;
150
150
  }, z.core.$strict>>>>;
@@ -264,5 +264,6 @@ export declare function toGraph(schema: SchemaDecl): Generator<string>;
264
264
  export declare const toIntrospected: {
265
265
  boolean: string;
266
266
  integer: string;
267
+ bigint: string;
267
268
  'text[]': string;
268
269
  };
package/dist/db/schema.js CHANGED
@@ -165,5 +165,6 @@ export function* toGraph(schema) {
165
165
  export const toIntrospected = {
166
166
  boolean: 'bool',
167
167
  integer: 'int4',
168
+ bigint: 'int8',
168
169
  'text[]': '_text',
169
170
  };
package/dist/io.js CHANGED
@@ -6,7 +6,7 @@ import { Logger } from 'logzen';
6
6
  import * as fs from 'node:fs';
7
7
  import { dirname, join, resolve } from 'node:path/posix';
8
8
  import { _unique } from './state.js';
9
- import { pick } from 'utilium';
9
+ import { _throw, pick } from 'utilium';
10
10
  export const systemDir = '/etc/axium';
11
11
  export const dirs = _unique('dirs', [systemDir]);
12
12
  for (let dir = resolve(process.cwd()); dir !== '/'; dir = dirname(dir)) {
@@ -36,47 +36,32 @@ export const _portActions = ['enable', 'disable'];
36
36
  * If the origin has a port, passkeys do not work correctly with some password managers.
37
37
  */
38
38
  export async function restrictedPorts(opt) {
39
- io.start('Checking for root privileges');
40
- if (process.getuid?.() != 0)
41
- throw 'root privileges are needed to change restricted ports.';
42
- io.done();
43
- io.start('Checking ports method');
44
- if (!_portMethods.includes(opt.method))
45
- throw 'invalid';
46
- io.done();
47
- io.start('Checking ports action');
48
- if (!_portActions.includes(opt.action))
49
- throw 'invalid';
50
- io.done();
39
+ io.track('Checking for root privileges', () => process.getuid?.() != 0 && _throw('root privileges are needed to change restricted ports.'));
40
+ io.track('Checking ports method', () => !_portMethods.includes(opt.method) && _throw('invalid'));
41
+ io.track('Checking ports action', () => !_portActions.includes(opt.action) && _throw('invalid'));
51
42
  switch (opt.method) {
52
43
  case 'node-cap': {
53
44
  const setcap = await io
54
- .run('Finding setcap', 'command -v setcap')
45
+ .runShell('Finding setcap', 'command -v setcap')
55
46
  .then(e => e.trim())
56
47
  .catch(() => {
57
48
  io.warn('not in path.');
58
- io.start('Checking for /usr/sbin/setcap');
59
- fs.accessSync('/usr/sbin/setcap', fs.constants.X_OK);
60
- io.done();
49
+ io.track('Checking for /usr/sbin/setcap', () => fs.accessSync('/usr/sbin/setcap', fs.constants.X_OK));
61
50
  return '/usr/sbin/setcap';
62
51
  });
63
52
  io.debug('Using setcap at ' + setcap);
64
53
  let { node } = opt;
65
54
  node ||= await io
66
- .run('Finding node', 'command -v node')
55
+ .runShell('Finding node', 'command -v node')
67
56
  .then(e => e.trim())
68
57
  .catch(() => {
69
58
  io.warn('not in path.');
70
- io.start('Checking for /usr/bin/node');
71
- fs.accessSync('/usr/bin/node', fs.constants.X_OK);
72
- io.done();
59
+ io.track('Checking for /usr/bin/node', () => fs.accessSync('/usr/bin/node', fs.constants.X_OK));
73
60
  return '/usr/bin/node';
74
61
  });
75
- io.start('Resolving real path for node');
76
- node = fs.realpathSync(node);
77
- io.done();
62
+ node = io.track('Resolving real path for node', () => fs.realpathSync(node));
78
63
  io.debug('Using node at ' + node);
79
- await io.run('Setting ports capability', `${setcap} cap_net_bind_service=${opt.action == 'enable' ? '+' : '-'}ep ${node}`);
64
+ await io.runShell('Setting ports capability', `${setcap} cap_net_bind_service=${opt.action == 'enable' ? '+' : '-'}ep ${node}`);
80
65
  break;
81
66
  }
82
67
  }
package/dist/main.js CHANGED
@@ -35,5 +35,6 @@ try {
35
35
  catch (e) {
36
36
  if (typeof e == 'number')
37
37
  process.exit(e);
38
+ io.done(true);
38
39
  io.exit(e);
39
40
  }
package/dist/serve.d.ts CHANGED
@@ -12,7 +12,3 @@ export interface ServeOptions {
12
12
  multiBuild: boolean;
13
13
  }
14
14
  export declare function serve(opt: Partial<ServeOptions>): Promise<Server>;
15
- /**
16
- * Perform initial setup for when the server is serving web pages.
17
- */
18
- export declare function init(): Promise<void>;
package/dist/serve.js CHANGED
@@ -168,7 +168,3 @@ export async function serve(opt) {
168
168
  return createServer(handle);
169
169
  return createSecureServer({ key: readFileSync(opt.ssl_key || config.web.ssl_key), cert: readFileSync(opt.ssl_cert || config.web.ssl_cert) }, handle);
170
170
  }
171
- /**
172
- * Perform initial setup for when the server is serving web pages.
173
- */
174
- export async function init() { }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axium/server",
3
- "version": "0.44.2",
3
+ "version": "0.44.4",
4
4
  "author": "James Prevett <axium@jamespre.dev>",
5
5
  "funding": {
6
6
  "type": "individual",
@@ -63,7 +63,7 @@
63
63
  "@types/pg": "^8.11.11",
64
64
  "commander": "^14.0.0",
65
65
  "cookie_v1": "npm:cookie@^1.0.2",
66
- "ioium": "^1.0.0",
66
+ "ioium": "^1.1.0",
67
67
  "logzen": "^0.7.0",
68
68
  "patch-package": "^8.0.1",
69
69
  "pg": "^8.14.1",