alepha 0.6.10 → 0.7.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/core.d.ts CHANGED
@@ -710,6 +710,10 @@ declare class Alepha {
710
710
  */
711
711
  declare const PROVIDER: unique symbol;
712
712
 
713
+ declare const $module: (opts: {
714
+ services: Array<Class>;
715
+ }) => {};
716
+
713
717
  /**
714
718
  * Get the instance of the specified type from the context.
715
719
  *
@@ -755,14 +759,23 @@ interface RetryDescriptorOptions<T extends (...args: any[]) => any> {
755
759
  *
756
760
  */
757
761
  handler: T;
762
+ /**
763
+ * Optional error handler.
764
+ *
765
+ * This will be called when an error occurs.
766
+ *
767
+ * @default undefined
768
+ */
769
+ onError?: (error: Error, attempt: number, ...parameters: Parameters<T>) => void;
758
770
  }
771
+ type MaybePromise<T> = T extends Promise<any> ? T : Promise<T>;
759
772
  /**
760
773
  * Retry descriptor.
761
774
  *
762
775
  * @param opts - Retry descriptor options.
763
776
  * @returns A function that will retry the handler.
764
777
  */
765
- declare const $retry: <T extends (...args: any[]) => any>(opts: RetryDescriptorOptions<T>) => ((...parameters: Parameters<T>) => Promise<ReturnType<T>>);
778
+ declare const $retry: <T extends (...args: any[]) => any>(opts: RetryDescriptorOptions<T>) => ((...parameters: Parameters<T>) => MaybePromise<ReturnType<T>>);
766
779
 
767
780
  declare class AppNotStartedError extends Error {
768
781
  constructor();
@@ -981,4 +994,4 @@ declare const run: (arg: Alepha | Class | ((env?: Env) => Alepha), opts?: {
981
994
  ready?: (alepha: Alepha) => Async<void>;
982
995
  }) => Alepha;
983
996
 
984
- export { $cursor, $hook, $inject, $logger, $retry, Alepha, type AlephaStringOptions, AppNotStartedError, type Async, type AsyncFn, type AsyncLocalStorageData, AsyncLocalStorageProvider, COLORS, CircularDependencyError, type Class, type ClassEntry, type ClassProvider, type ClassSwap, ContainerLockedError, type CursorDescriptor, type Descriptor, type DescriptorIdentifier, type DescriptorItem, type Env, EventEmitterLike, type FileLike, type Hook, type HookDescriptor, type HookOptions, type Hooks, KIND, LEVEL_COLORS, type LogLevel, Logger, type LoggerEnv, type LoggerOptions, MockLogger, type MockLoggerStore, NotImplementedError, OPTIONS, PROVIDER, type PromiseFn, type RetryDescriptorOptions, type State, type StreamLike, type TFile, type TStream, type TextLength, TypeBoxError, TypeProvider, __alephaRef, __bind, __descriptor, descriptorEvents, isDescriptorValue, isFileLike, isTypeFile, isTypeStream, isUUID, run, t };
997
+ export { $cursor, $hook, $inject, $logger, $module, $retry, Alepha, type AlephaStringOptions, AppNotStartedError, type Async, type AsyncFn, type AsyncLocalStorageData, AsyncLocalStorageProvider, COLORS, CircularDependencyError, type Class, type ClassEntry, type ClassProvider, type ClassSwap, ContainerLockedError, type CursorDescriptor, type Descriptor, type DescriptorIdentifier, type DescriptorItem, type Env, EventEmitterLike, type FileLike, type Hook, type HookDescriptor, type HookOptions, type Hooks, KIND, LEVEL_COLORS, type LogLevel, Logger, type LoggerEnv, type LoggerOptions, type MaybePromise, MockLogger, type MockLoggerStore, NotImplementedError, OPTIONS, PROVIDER, type PromiseFn, type RetryDescriptorOptions, type State, type StreamLike, type TFile, type TStream, type TextLength, TypeBoxError, TypeProvider, __alephaRef, __bind, __descriptor, descriptorEvents, isDescriptorValue, isFileLike, isTypeFile, isTypeStream, isUUID, run, t };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "alepha",
3
- "version": "0.6.10",
3
+ "version": "0.7.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "TypeScript framework for building full-stack apps with strict conventions, custom schemas, and React-based SPA or SSR without filesystem-based routing.",
@@ -12,26 +12,26 @@
12
12
  "main": "./core.js",
13
13
  "types": "./core.d.ts",
14
14
  "dependencies": {
15
- "@alepha/cache": "0.6.10",
16
- "@alepha/core": "0.6.10",
17
- "@alepha/datetime": "0.6.10",
18
- "@alepha/lock": "0.6.10",
19
- "@alepha/postgres": "0.6.10",
20
- "@alepha/queue": "0.6.10",
21
- "@alepha/react": "0.6.10",
22
- "@alepha/react-auth": "0.6.10",
23
- "@alepha/redis": "0.6.10",
24
- "@alepha/scheduler": "0.6.10",
25
- "@alepha/security": "0.6.10",
26
- "@alepha/server": "0.6.10",
27
- "@alepha/server-cookies": "0.6.10",
28
- "@alepha/server-metrics": "0.6.10",
15
+ "@alepha/cache": "0.7.0",
16
+ "@alepha/core": "0.7.0",
17
+ "@alepha/datetime": "0.7.0",
18
+ "@alepha/lock": "0.7.0",
19
+ "@alepha/postgres": "0.7.0",
20
+ "@alepha/queue": "0.7.0",
21
+ "@alepha/react": "0.7.0",
22
+ "@alepha/react-auth": "0.7.0",
23
+ "@alepha/redis": "0.7.0",
24
+ "@alepha/scheduler": "0.7.0",
25
+ "@alepha/security": "0.7.0",
26
+ "@alepha/server": "0.7.0",
27
+ "@alepha/server-cookies": "0.7.0",
28
+ "@alepha/server-metrics": "0.7.0",
29
29
  "@alepha/server-proxy": "0.6.10",
30
- "@alepha/server-static": "0.6.10",
31
- "@alepha/server-swagger": "0.6.10",
32
- "@alepha/testing": "0.6.10",
33
- "@alepha/topic": "0.6.10",
34
- "@alepha/vite": "0.6.10"
30
+ "@alepha/server-static": "0.7.0",
31
+ "@alepha/server-swagger": "0.7.0",
32
+ "@alepha/testing": "0.7.0",
33
+ "@alepha/topic": "0.7.0",
34
+ "@alepha/vite": "0.7.0"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "@types/react": "^19",
package/postgres.d.ts CHANGED
@@ -1,16 +1,16 @@
1
1
  import * as _alepha_core from '@alepha/core';
2
2
  import { TObject as TObject$1, Static as Static$1, Alepha, KIND, OPTIONS } from '@alepha/core';
3
3
  import * as _sinclair_typebox from '@sinclair/typebox';
4
- import { TObject, Static, TSchema, ObjectOptions, Kind, TProperties, Evaluate, TReadonly, TOptional, TAdditionalProperties, OptionalKind, TArray, TIntersect, TRecord, TBoolean, TInteger, IntegerOptions, StringOptions, TOptionalWithFlag } from '@sinclair/typebox';
5
- import * as drizzle_orm from 'drizzle-orm';
6
- import { TableConfig, SQLWrapper, SQL, BuildColumns } from 'drizzle-orm';
4
+ import { TObject, Static, TSchema, ObjectOptions, Kind, TProperties, Evaluate, TReadonly, TOptional, TAdditionalProperties, OptionalKind, TArray, TIntersect, TRecord, TBoolean, TInteger, TOptionalWithFlag, IntegerOptions, StringOptions } from '@sinclair/typebox';
5
+ import * as drizzle_orm_query_builders_query_builder from 'drizzle-orm/query-builders/query-builder';
6
+ import * as drizzleOrm from 'drizzle-orm';
7
+ import { TableConfig, BuildExtraConfigColumns, SQLWrapper, SQL, BuildColumns } from 'drizzle-orm';
7
8
  export { sql } from 'drizzle-orm';
8
9
  import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
9
- import { PgSequenceOptions, AnyPgTable, AnyPgColumn, UpdateDeleteAction, PgTableExtraConfigValue, PgTableWithColumns, PgColumnBuilderBase, PgDatabase, TableConfig as TableConfig$1, PgColumn, PgTransaction, PgTransactionConfig, LockStrength, LockConfig, PgInsertValue, PgSelectJoinFn } from 'drizzle-orm/pg-core';
10
+ import { PgSequenceOptions, AnyPgTable, AnyPgColumn, UpdateDeleteAction, PgTableWithColumns, PgColumnBuilderBase, PgTableExtraConfigValue, PgDatabase, TableConfig as TableConfig$1, PgColumn, PgTransaction, PgTransactionConfig, LockStrength, LockConfig, PgInsertValue, PgSelectJoinFn } from 'drizzle-orm/pg-core';
10
11
  export * from 'drizzle-orm/pg-core';
11
12
  import { PgTransactionConfig as PgTransactionConfig$1 } from 'drizzle-orm/pg-core/session';
12
- import { BuildExtraConfigColumns } from 'drizzle-orm/column-builder';
13
- import { PgTableExtraConfigValue as PgTableExtraConfigValue$1 } from 'drizzle-orm/pg-core/table';
13
+ import { BuildExtraConfigColumns as BuildExtraConfigColumns$1 } from 'drizzle-orm/column-builder';
14
14
  import * as _alepha_lock from '@alepha/lock';
15
15
  import { MigrationConfig } from 'drizzle-orm/migrator';
16
16
  import { NodePgDatabase } from 'drizzle-orm/node-postgres';
@@ -67,28 +67,6 @@ interface PgRefOptions {
67
67
  };
68
68
  }
69
69
 
70
- interface EntityDescriptorOptions<T extends TObject, Keys = keyof Static<T>> {
71
- name: string;
72
- schema: T;
73
- indexes?: (Keys | {
74
- column: Keys;
75
- unique?: boolean;
76
- name?: string;
77
- })[];
78
- foreignKeys?: {
79
- columns: Keys[];
80
- foreignTable: string;
81
- foreignColumns: Keys[];
82
- onUpdate?: "cascade" | "restrict" | "no action" | "set null" | "set default";
83
- onDelete?: "cascade" | "restrict" | "no action" | "set null" | "set default";
84
- }[];
85
- config?: PgTableExtraConfigValue[];
86
- }
87
- /**
88
- * Creates a table descriptor for drizzle-orm.
89
- */
90
- declare const $entity: <T extends TObject>(options: EntityDescriptorOptions<T>) => PgTableWithColumnsAndSchema<PgTableConfig<string, T, FromSchema<T>>, T>;
91
-
92
70
  /**
93
71
  * Convert a schema to columns.
94
72
  *
@@ -112,6 +90,47 @@ type PgTableWithColumnsAndSchema<T extends TableConfig, R extends TObject$1> = P
112
90
  [PG_SCHEMA]: R;
113
91
  };
114
92
 
93
+ interface EntityDescriptorOptions<T extends TObject, Keys = keyof Static<T>> {
94
+ /**
95
+ * The name of the table. This is the name that will be used in the database.
96
+ * @example
97
+ * name: "user"
98
+ */
99
+ name: string;
100
+ /**
101
+ * The schema of the table. This is a TypeBox schema that describes the columns and their types.
102
+ * @example
103
+ * schema: t.object({
104
+ * id: t.uuid(),
105
+ * name: t.string(),
106
+ * email: t.string(),
107
+ * phoneNumber: t.string(),
108
+ * })
109
+ */
110
+ schema: T;
111
+ /**
112
+ * The indexes to create for the table. This can be a string or an object with the column name and options.
113
+ * @example
114
+ * indexes: ["name", { column: "email", unique: true }]
115
+ */
116
+ indexes?: (Keys | {
117
+ column: Keys;
118
+ unique?: boolean;
119
+ name?: string;
120
+ })[];
121
+ /**
122
+ * Extra configuration for the table. See drizzle-orm documentation for more details.
123
+ *
124
+ * @param self The table descriptor.
125
+ * @returns The extra configuration for the table.
126
+ */
127
+ config?: (self: BuildExtraConfigColumns<string, FromSchema<T>, "pg">) => PgTableExtraConfigValue[];
128
+ }
129
+ /**
130
+ * Creates a table descriptor for drizzle-orm.
131
+ */
132
+ declare const $entity: <T extends TObject>(options: EntityDescriptorOptions<T>) => PgTableWithColumnsAndSchema<PgTableConfig<string, T, FromSchema<T>>, T>;
133
+
115
134
  type SQLLike = SQLWrapper | string;
116
135
  declare class PostgresProvider {
117
136
  constructor();
@@ -651,7 +670,7 @@ type PgQueryWith<T extends TObject | TArray> = true | {
651
670
  };
652
671
 
653
672
  declare const pageQuerySchema: _sinclair_typebox.TObject<{
654
- page: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
673
+ page: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
655
674
  size: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
656
675
  sort: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
657
676
  }>;
@@ -676,6 +695,9 @@ type TPage<T extends TObject | TIntersect | TRecord> = TObject<{
676
695
  page: TObject<{
677
696
  number: TInteger;
678
697
  size: TInteger;
698
+ totalElements: TOptionalWithFlag<TInteger, true>;
699
+ queryDuration: TOptionalWithFlag<TInteger, true>;
700
+ countDuration: TOptionalWithFlag<TInteger, true>;
679
701
  }>;
680
702
  }>;
681
703
  /**
@@ -690,6 +712,9 @@ type Page<T> = {
690
712
  page: {
691
713
  number: number;
692
714
  size: number;
715
+ totalElements?: number;
716
+ queryDuration?: number;
717
+ countDuration?: number;
693
718
  };
694
719
  };
695
720
 
@@ -699,6 +724,9 @@ type Page<T> = {
699
724
  declare class Repository<TTable extends PgTableWithColumns<TableConfig$1>, TTableSchema extends TObject> {
700
725
  readonly provider: PostgresProvider;
701
726
  protected readonly alepha: Alepha;
727
+ protected readonly env: {
728
+ POSTGRES_PAGINATION_COUNT_ENABLED: boolean;
729
+ };
702
730
  static of: <TEntity extends TableConfig$1, TSchema extends TObject>(table: PgTableWithColumnsAndSchema<TEntity, TSchema>) => (new () => Repository<PgTableWithColumnsAndSchema<TEntity, TSchema>, TSchema>);
703
731
  /**
704
732
  * Register Repository as a valid descriptor.
@@ -748,7 +776,7 @@ declare class Repository<TTable extends PgTableWithColumns<TableConfig$1>, TTabl
748
776
  /**
749
777
  * Getter for the database connection from the database provider.
750
778
  */
751
- get db(): PgDatabase<any, Record<string, never>, drizzle_orm.ExtractTablesWithRelations<Record<string, never>>>;
779
+ get db(): PgDatabase<any, Record<string, never>, drizzleOrm.ExtractTablesWithRelations<Record<string, never>>>;
752
780
  /**
753
781
  *
754
782
  */
@@ -779,10 +807,10 @@ declare class Repository<TTable extends PgTableWithColumns<TableConfig$1>, TTabl
779
807
  *
780
808
  * @returns The SELECT query builder.
781
809
  */
782
- protected select(opts?: StatementOptions): drizzle_orm_pg_core.PgSelectBase<string, Record<string, PgColumn<drizzle_orm.ColumnBaseConfig<drizzle_orm.ColumnDataType, string>, {}, {}>>, "single", Record<string, "not-null">, false, never, {
810
+ protected select(opts?: StatementOptions): drizzle_orm_pg_core.PgSelectBase<string, Record<string, PgColumn<drizzleOrm.ColumnBaseConfig<drizzleOrm.ColumnDataType, string>, {}, {}>>, "single", Record<string, "not-null">, false, never, {
783
811
  [x: string]: unknown;
784
812
  }[], {
785
- [x: string]: PgColumn<drizzle_orm.ColumnBaseConfig<drizzle_orm.ColumnDataType, string>, {}, {}>;
813
+ [x: string]: PgColumn<drizzleOrm.ColumnBaseConfig<drizzleOrm.ColumnDataType, string>, {}, {}>;
786
814
  }>;
787
815
  /**
788
816
  * Start an INSERT query on the table.
@@ -973,7 +1001,7 @@ declare class Repository<TTable extends PgTableWithColumns<TableConfig$1>, TTabl
973
1001
  */
974
1002
  protected getPrimaryKey(schema: TObject): {
975
1003
  key: string;
976
- col: PgColumn<drizzle_orm.ColumnBaseConfig<drizzle_orm.ColumnDataType, string>, {}, {}>;
1004
+ col: PgColumn<drizzleOrm.ColumnBaseConfig<drizzleOrm.ColumnDataType, string>, {}, {}>;
977
1005
  type: TSchema;
978
1006
  };
979
1007
  /**
@@ -1116,7 +1144,7 @@ type TransactionContext = PgTransaction<any, any, any>;
1116
1144
  /**
1117
1145
  * Creates a transaction descriptor.
1118
1146
  */
1119
- declare const $transaction: <T extends any[], R>(opts: TransactionDescriptorOptions<T, R>) => (...parameters: T) => Promise<Promise<R>>;
1147
+ declare const $transaction: <T extends any[], R>(opts: TransactionDescriptorOptions<T, R>) => (...parameters: T) => Promise<R>;
1120
1148
 
1121
1149
  declare class EntityNotFoundError extends Error {
1122
1150
  readonly code = "ERR_RESOURCE_NOTFOUND";
@@ -1131,16 +1159,7 @@ declare class EntityNotFoundError extends Error {
1131
1159
  * @param schema The json schema of the table.
1132
1160
  * @param extraConfig Extra configuration for the table.
1133
1161
  */
1134
- declare const pgTableSchema: <TTableName extends string, TSchema extends TObject, TColumnsMap extends FromSchema<TSchema>>(name: TTableName, schema: TSchema, extraConfig?: (self: BuildExtraConfigColumns<TTableName, TColumnsMap, "pg">) => PgTableExtraConfigValue$1[]) => PgTableWithColumnsAndSchema<PgTableConfig<TTableName, TSchema, TColumnsMap>, TSchema>;
1135
- /**
1136
- * @alias pgTableSchema
1137
- */
1138
- declare const table: <TTableName extends string, TSchema extends TObject, TColumnsMap extends FromSchema<TSchema>>(name: TTableName, schema: TSchema, extraConfig?: (self: BuildExtraConfigColumns<TTableName, TColumnsMap, "pg">) => PgTableExtraConfigValue$1[]) => PgTableWithColumnsAndSchema<PgTableConfig<TTableName, TSchema, TColumnsMap>, TSchema>;
1139
- declare const $table: <TTableName extends string, TSchema extends TObject, TColumnsMap extends FromSchema<TSchema>>(name: TTableName, schema: TSchema, extraConfig?: (self: BuildExtraConfigColumns<TTableName, TColumnsMap, "pg">) => PgTableExtraConfigValue$1[]) => PgTableWithColumnsAndSchema<PgTableConfig<TTableName, TSchema, TColumnsMap>, TSchema>;
1140
- declare const table2: <TTableName extends string, TSchema extends TObject, TColumnsMap extends FromSchema<TSchema>>(name: TTableName, schema: TSchema, extraConfig?: (self: BuildExtraConfigColumns<TTableName, TColumnsMap, "pg">) => PgTableExtraConfigValue$1[]) => PgTableWithColumnsAndSchema<PgTableConfig<TTableName, TSchema, TColumnsMap>, TSchema>;
1141
- /**
1142
- *
1143
- */
1162
+ declare const pgTableSchema: <TTableName extends string, TSchema extends TObject, TColumnsMap extends FromSchema<TSchema>>(name: TTableName, schema: TSchema, extraConfig?: (self: BuildExtraConfigColumns$1<TTableName, TColumnsMap, "pg">) => PgTableExtraConfigValue[]) => PgTableWithColumnsAndSchema<PgTableConfig<TTableName, TSchema, TColumnsMap>, TSchema>;
1144
1163
  type PgTableConfig<TTableName extends string, TSchema extends TObject, TColumnsMap extends FromSchema<TSchema>> = {
1145
1164
  name: TTableName;
1146
1165
  schema: any;
@@ -1421,7 +1440,7 @@ declare const pg: PostgresTypeProvider;
1421
1440
  /**
1422
1441
  * Postgres schema type.
1423
1442
  */
1424
- declare const schema: <TDocument extends TSchema>(name: string, document: TDocument) => drizzle_orm.$Type<drizzle_orm_pg_core.PgCustomColumnBuilder<{
1443
+ declare const schema: <TDocument extends TSchema>(name: string, document: TDocument) => drizzleOrm.$Type<drizzle_orm_pg_core.PgCustomColumnBuilder<{
1425
1444
  name: string;
1426
1445
  dataType: "custom";
1427
1446
  columnType: "PgCustomColumn";
@@ -1434,6 +1453,176 @@ declare const schema: <TDocument extends TSchema>(name: string, document: TDocum
1434
1453
  params: [];
1435
1454
  })["static"]>;
1436
1455
 
1456
+ declare const dzl: {
1457
+ pg: typeof drizzle_orm_pg_core;
1458
+ aliasedTable<T extends drizzleOrm.Table | drizzleOrm.View>(table: T, tableAlias: string): T;
1459
+ aliasedRelation<T extends drizzleOrm.Relation>(relation: T, tableAlias: string): T;
1460
+ aliasedTableColumn<T extends drizzleOrm.AnyColumn>(column: T, tableAlias: string): T;
1461
+ mapColumnsInAliasedSQLToAlias(query: drizzleOrm.SQL.Aliased, alias: string): drizzleOrm.SQL.Aliased;
1462
+ mapColumnsInSQLToAlias(query: drizzleOrm.SQL, alias: string): drizzleOrm.SQL;
1463
+ ColumnAliasProxyHandler: typeof drizzleOrm.ColumnAliasProxyHandler;
1464
+ TableAliasProxyHandler: typeof drizzleOrm.TableAliasProxyHandler;
1465
+ RelationTableAliasProxyHandler: typeof drizzleOrm.RelationTableAliasProxyHandler;
1466
+ ColumnBuilder: typeof drizzleOrm.ColumnBuilder;
1467
+ Column: typeof drizzleOrm.Column;
1468
+ is<T extends drizzleOrm.DrizzleEntityClass<any>>(value: any, type: T): value is InstanceType<T>;
1469
+ entityKind: typeof drizzleOrm.entityKind;
1470
+ hasOwnEntityKind: typeof drizzleOrm.hasOwnEntityKind;
1471
+ DrizzleError: typeof drizzleOrm.DrizzleError;
1472
+ TransactionRollbackError: typeof drizzleOrm.TransactionRollbackError;
1473
+ ConsoleLogWriter: typeof drizzleOrm.ConsoleLogWriter;
1474
+ DefaultLogger: typeof drizzleOrm.DefaultLogger;
1475
+ NoopLogger: typeof drizzleOrm.NoopLogger;
1476
+ QueryPromise: typeof drizzleOrm.QueryPromise;
1477
+ getOperators(): {
1478
+ and: typeof drizzleOrm.and;
1479
+ between: typeof drizzleOrm.between;
1480
+ eq: drizzleOrm.BinaryOperator;
1481
+ exists: typeof drizzleOrm.exists;
1482
+ gt: drizzleOrm.BinaryOperator;
1483
+ gte: drizzleOrm.BinaryOperator;
1484
+ ilike: typeof drizzleOrm.ilike;
1485
+ inArray: typeof drizzleOrm.inArray;
1486
+ isNull: typeof drizzleOrm.isNull;
1487
+ isNotNull: typeof drizzleOrm.isNotNull;
1488
+ like: typeof drizzleOrm.like;
1489
+ lt: drizzleOrm.BinaryOperator;
1490
+ lte: drizzleOrm.BinaryOperator;
1491
+ ne: drizzleOrm.BinaryOperator;
1492
+ not: typeof drizzleOrm.not;
1493
+ notBetween: typeof drizzleOrm.notBetween;
1494
+ notExists: typeof drizzleOrm.notExists;
1495
+ notLike: typeof drizzleOrm.notLike;
1496
+ notIlike: typeof drizzleOrm.notIlike;
1497
+ notInArray: typeof drizzleOrm.notInArray;
1498
+ or: typeof drizzleOrm.or;
1499
+ sql: typeof drizzleOrm.sql;
1500
+ };
1501
+ getOrderByOperators(): {
1502
+ sql: typeof drizzleOrm.sql;
1503
+ asc: typeof drizzleOrm.asc;
1504
+ desc: typeof drizzleOrm.desc;
1505
+ };
1506
+ extractTablesRelationalConfig<TTables extends drizzleOrm.TablesRelationalConfig>(schema: Record<string, unknown>, configHelpers: (table: drizzleOrm.Table) => any): {
1507
+ tables: TTables;
1508
+ tableNamesMap: Record<string, string>;
1509
+ };
1510
+ relations<TTableName extends string, TRelations extends Record<string, drizzleOrm.Relation<any>>>(table: drizzleOrm.AnyTable<{
1511
+ name: TTableName;
1512
+ }>, relations: (helpers: drizzleOrm.TableRelationsHelpers<TTableName>) => TRelations): drizzleOrm.Relations<TTableName, TRelations>;
1513
+ createOne<TTableName extends string>(sourceTable: drizzleOrm.Table): <TForeignTable extends drizzleOrm.Table, TColumns extends [drizzleOrm.AnyColumn<{
1514
+ tableName: TTableName;
1515
+ }>, ...drizzleOrm.AnyColumn<{
1516
+ tableName: TTableName;
1517
+ }>[]]>(table: TForeignTable, config?: drizzleOrm.RelationConfig<TTableName, TForeignTable["_"]["name"], TColumns>) => drizzleOrm.One<TForeignTable["_"]["name"], drizzleOrm.Equal<TColumns[number]["_"]["notNull"], true>>;
1518
+ createMany(sourceTable: drizzleOrm.Table): <TForeignTable extends drizzleOrm.Table>(referencedTable: TForeignTable, config?: {
1519
+ relationName: string;
1520
+ }) => drizzleOrm.Many<TForeignTable["_"]["name"]>;
1521
+ normalizeRelation(schema: drizzleOrm.TablesRelationalConfig, tableNamesMap: Record<string, string>, relation: drizzleOrm.Relation): drizzleOrm.NormalizedRelation;
1522
+ createTableRelationsHelpers<TTableName extends string>(sourceTable: drizzleOrm.AnyTable<{
1523
+ name: TTableName;
1524
+ }>): {
1525
+ one: <TForeignTable extends drizzleOrm.Table, TColumns extends [drizzleOrm.AnyColumn<{
1526
+ tableName: TTableName;
1527
+ }>, ...drizzleOrm.AnyColumn<{
1528
+ tableName: TTableName;
1529
+ }>[]]>(table: TForeignTable, config?: drizzleOrm.RelationConfig<TTableName, TForeignTable["_"]["name"], TColumns> | undefined) => drizzleOrm.One<TForeignTable["_"]["name"], drizzleOrm.Equal<TColumns[number]["_"]["notNull"], true>>;
1530
+ many: <TForeignTable extends drizzleOrm.Table>(referencedTable: TForeignTable, config?: {
1531
+ relationName: string;
1532
+ }) => drizzleOrm.Many<TForeignTable["_"]["name"]>;
1533
+ };
1534
+ mapRelationalRow(tablesConfig: drizzleOrm.TablesRelationalConfig, tableConfig: drizzleOrm.TableRelationalConfig, row: unknown[], buildQueryResultSelection: drizzleOrm.BuildRelationalQueryResult["selection"], mapColumnValue?: (value: unknown) => unknown): Record<string, unknown>;
1535
+ Relation: typeof drizzleOrm.Relation;
1536
+ Relations: typeof drizzleOrm.Relations;
1537
+ One: typeof drizzleOrm.One;
1538
+ Many: typeof drizzleOrm.Many;
1539
+ bindIfParam(value: unknown, column: drizzleOrm.SQLWrapper): drizzleOrm.SQLChunk;
1540
+ and(...conditions: (drizzleOrm.SQLWrapper | undefined)[]): drizzleOrm.SQL | undefined;
1541
+ or(...conditions: (drizzleOrm.SQLWrapper | undefined)[]): drizzleOrm.SQL | undefined;
1542
+ not(condition: drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1543
+ inArray<T>(column: drizzleOrm.SQL.Aliased<T>, values: (T | drizzleOrm.Placeholder)[] | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1544
+ inArray<TColumn extends drizzleOrm.Column>(column: TColumn, values: ReadonlyArray<drizzleOrm.GetColumnData<TColumn, "raw"> | drizzleOrm.Placeholder> | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1545
+ inArray<T extends drizzleOrm.SQLWrapper>(column: Exclude<T, drizzleOrm.SQL.Aliased | drizzleOrm.Column>, values: ReadonlyArray<unknown | drizzleOrm.Placeholder> | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1546
+ notInArray<T>(column: drizzleOrm.SQL.Aliased<T>, values: (T | drizzleOrm.Placeholder)[] | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1547
+ notInArray<TColumn extends drizzleOrm.Column>(column: TColumn, values: (drizzleOrm.GetColumnData<TColumn, "raw"> | drizzleOrm.Placeholder)[] | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1548
+ notInArray<T extends drizzleOrm.SQLWrapper>(column: Exclude<T, drizzleOrm.SQL.Aliased | drizzleOrm.Column>, values: (unknown | drizzleOrm.Placeholder)[] | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1549
+ isNull(value: drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1550
+ isNotNull(value: drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1551
+ exists(subquery: drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1552
+ notExists(subquery: drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1553
+ between<T>(column: drizzleOrm.SQL.Aliased, min: T | drizzleOrm.SQLWrapper, max: T | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1554
+ between<TColumn extends drizzleOrm.AnyColumn>(column: TColumn, min: drizzleOrm.GetColumnData<TColumn, "raw"> | drizzleOrm.SQLWrapper, max: drizzleOrm.GetColumnData<TColumn, "raw"> | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1555
+ between<T extends drizzleOrm.SQLWrapper>(column: Exclude<T, drizzleOrm.SQL.Aliased | drizzleOrm.Column>, min: unknown, max: unknown): drizzleOrm.SQL;
1556
+ notBetween<T>(column: drizzleOrm.SQL.Aliased, min: T | drizzleOrm.SQLWrapper, max: T | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1557
+ notBetween<TColumn extends drizzleOrm.AnyColumn>(column: TColumn, min: drizzleOrm.GetColumnData<TColumn, "raw"> | drizzleOrm.SQLWrapper, max: drizzleOrm.GetColumnData<TColumn, "raw"> | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1558
+ notBetween<T extends drizzleOrm.SQLWrapper>(column: Exclude<T, drizzleOrm.SQL.Aliased | drizzleOrm.Column>, min: unknown, max: unknown): drizzleOrm.SQL;
1559
+ like(column: drizzleOrm.Column | drizzleOrm.SQL.Aliased | drizzleOrm.SQL, value: string | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1560
+ notLike(column: drizzleOrm.Column | drizzleOrm.SQL.Aliased | drizzleOrm.SQL, value: string | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1561
+ ilike(column: drizzleOrm.Column | drizzleOrm.SQL.Aliased | drizzleOrm.SQL, value: string | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1562
+ notIlike(column: drizzleOrm.Column | drizzleOrm.SQL.Aliased | drizzleOrm.SQL, value: string | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1563
+ arrayContains<T>(column: drizzleOrm.SQL.Aliased<T>, values: (T | drizzleOrm.Placeholder) | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1564
+ arrayContains<TColumn extends drizzleOrm.Column>(column: TColumn, values: (drizzleOrm.GetColumnData<TColumn, "raw"> | drizzleOrm.Placeholder) | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1565
+ arrayContains<T extends drizzleOrm.SQLWrapper>(column: Exclude<T, drizzleOrm.SQL.Aliased | drizzleOrm.Column>, values: (unknown | drizzleOrm.Placeholder)[] | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1566
+ arrayContained<T>(column: drizzleOrm.SQL.Aliased<T>, values: (T | drizzleOrm.Placeholder) | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1567
+ arrayContained<TColumn extends drizzleOrm.Column>(column: TColumn, values: (drizzleOrm.GetColumnData<TColumn, "raw"> | drizzleOrm.Placeholder) | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1568
+ arrayContained<T extends drizzleOrm.SQLWrapper>(column: Exclude<T, drizzleOrm.SQL.Aliased | drizzleOrm.Column>, values: (unknown | drizzleOrm.Placeholder)[] | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1569
+ arrayOverlaps<T>(column: drizzleOrm.SQL.Aliased<T>, values: (T | drizzleOrm.Placeholder) | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1570
+ arrayOverlaps<TColumn extends drizzleOrm.Column>(column: TColumn, values: (drizzleOrm.GetColumnData<TColumn, "raw"> | drizzleOrm.Placeholder) | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1571
+ arrayOverlaps<T extends drizzleOrm.SQLWrapper>(column: Exclude<T, drizzleOrm.SQL.Aliased | drizzleOrm.Column>, values: (unknown | drizzleOrm.Placeholder)[] | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1572
+ eq: drizzleOrm.BinaryOperator;
1573
+ ne: drizzleOrm.BinaryOperator;
1574
+ gt: drizzleOrm.BinaryOperator;
1575
+ gte: drizzleOrm.BinaryOperator;
1576
+ lt: drizzleOrm.BinaryOperator;
1577
+ lte: drizzleOrm.BinaryOperator;
1578
+ asc(column: drizzleOrm.AnyColumn | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1579
+ desc(column: drizzleOrm.AnyColumn | drizzleOrm.SQLWrapper): drizzleOrm.SQL;
1580
+ count(expression?: drizzleOrm.SQLWrapper): drizzleOrm.SQL<number>;
1581
+ countDistinct(expression: drizzleOrm.SQLWrapper): drizzleOrm.SQL<number>;
1582
+ avg(expression: drizzleOrm.SQLWrapper): drizzleOrm.SQL<string | null>;
1583
+ avgDistinct(expression: drizzleOrm.SQLWrapper): drizzleOrm.SQL<string | null>;
1584
+ sum(expression: drizzleOrm.SQLWrapper): drizzleOrm.SQL<string | null>;
1585
+ sumDistinct(expression: drizzleOrm.SQLWrapper): drizzleOrm.SQL<string | null>;
1586
+ max<T extends drizzleOrm.SQLWrapper>(expression: T): drizzleOrm.SQL<(T extends drizzleOrm.AnyColumn ? T["_"]["data"] : string) | null>;
1587
+ min<T extends drizzleOrm.SQLWrapper>(expression: T): drizzleOrm.SQL<(T extends drizzleOrm.AnyColumn ? T["_"]["data"] : string) | null>;
1588
+ l2Distance(column: drizzleOrm.SQLWrapper | drizzleOrm.AnyColumn, value: number[] | string[] | drizzle_orm_query_builders_query_builder.TypedQueryBuilder<any> | string): drizzleOrm.SQL;
1589
+ l1Distance(column: drizzleOrm.SQLWrapper | drizzleOrm.AnyColumn, value: number[] | string[] | drizzle_orm_query_builders_query_builder.TypedQueryBuilder<any> | string): drizzleOrm.SQL;
1590
+ innerProduct(column: drizzleOrm.SQLWrapper | drizzleOrm.AnyColumn, value: number[] | string[] | drizzle_orm_query_builders_query_builder.TypedQueryBuilder<any> | string): drizzleOrm.SQL;
1591
+ cosineDistance(column: drizzleOrm.SQLWrapper | drizzleOrm.AnyColumn, value: number[] | string[] | drizzle_orm_query_builders_query_builder.TypedQueryBuilder<any> | string): drizzleOrm.SQL;
1592
+ hammingDistance(column: drizzleOrm.SQLWrapper | drizzleOrm.AnyColumn, value: number[] | string[] | drizzle_orm_query_builders_query_builder.TypedQueryBuilder<any> | string): drizzleOrm.SQL;
1593
+ jaccardDistance(column: drizzleOrm.SQLWrapper | drizzleOrm.AnyColumn, value: number[] | string[] | drizzle_orm_query_builders_query_builder.TypedQueryBuilder<any> | string): drizzleOrm.SQL;
1594
+ isSQLWrapper(value: unknown): value is drizzleOrm.SQLWrapper;
1595
+ name(value: string): drizzleOrm.Name;
1596
+ isDriverValueEncoder(value: unknown): value is drizzleOrm.DriverValueEncoder<any, any>;
1597
+ param<TData, TDriver>(value: TData, encoder?: drizzleOrm.DriverValueEncoder<TData, TDriver>): drizzleOrm.Param<TData, TDriver>;
1598
+ sql: typeof drizzleOrm.sql;
1599
+ placeholder<TName extends string>(name: TName): drizzleOrm.Placeholder<TName>;
1600
+ fillPlaceholders(params: unknown[], values: Record<string, unknown>): unknown[];
1601
+ isView(view: unknown): view is drizzleOrm.View;
1602
+ getViewName<T extends drizzleOrm.View>(view: T): T["_"]["name"];
1603
+ FakePrimitiveParam: typeof drizzleOrm.FakePrimitiveParam;
1604
+ StringChunk: typeof drizzleOrm.StringChunk;
1605
+ SQL: typeof drizzleOrm.SQL;
1606
+ Name: typeof drizzleOrm.Name;
1607
+ noopDecoder: drizzleOrm.DriverValueDecoder<any, any>;
1608
+ noopEncoder: drizzleOrm.DriverValueEncoder<any, any>;
1609
+ noopMapper: drizzleOrm.DriverValueMapper<any, any>;
1610
+ Param: typeof drizzleOrm.Param;
1611
+ Placeholder: typeof drizzleOrm.Placeholder;
1612
+ View: typeof drizzleOrm.View;
1613
+ Subquery: typeof drizzleOrm.Subquery;
1614
+ WithSubquery: typeof drizzleOrm.WithSubquery;
1615
+ isTable(table: unknown): table is drizzleOrm.Table;
1616
+ getTableName<T extends drizzleOrm.Table>(table: T): T["_"]["name"];
1617
+ getTableUniqueName<T extends drizzleOrm.Table>(table: T): `${T["_"]["schema"]}.${T["_"]["name"]}`;
1618
+ Table: typeof drizzleOrm.Table;
1619
+ haveSameKeys(left: Record<string, unknown>, right: Record<string, unknown>): boolean;
1620
+ getTableColumns<T extends drizzleOrm.Table>(table: T): T["_"]["columns"];
1621
+ getViewSelectedFields<T extends drizzleOrm.View>(view: T): T["_"]["selectedFields"];
1622
+ isConfig(data: any): boolean;
1623
+ ViewBaseConfig: typeof drizzleOrm.ViewBaseConfig;
1624
+ };
1625
+
1437
1626
  declare const envSchema: _alepha_core.TObject<{
1438
1627
  POSTGRES_PROVIDER: _sinclair_typebox.TOptional<_sinclair_typebox.TUnsafe<"pg">>;
1439
1628
  }>;
@@ -1450,4 +1639,4 @@ declare class PostgresModule {
1450
1639
  protected getDefaultProviderName(): "pg";
1451
1640
  }
1452
1641
 
1453
- export { $entity, $repository, $sequence, $table, $transaction, type BaseEntity, type BaseEntityKeys, type EntityDescriptorOptions, EntityNotFoundError, type ExtractManyRelations, type FilterOperators, type FromSchema, NodePostgresProvider, type NodePostgresProviderState, type NullToUndefined, type NullifyIfOptional, PG_CREATED_AT, PG_DEFAULT, PG_IDENTITY, PG_MANY, PG_ONE, PG_PRIMARY_KEY, PG_REF, PG_SCHEMA, PG_SERIAL, PG_UPDATED_AT, PG_VERSION, type Page, type PageQuery, type PgAttrField, type PgDefault, type PgIdentityOptions, type PgMany, type PgManyOptions, type PgPrimaryKey, type PgQuery, type PgQueryWhere, type PgQueryWhereWithMany, type PgQueryWith, type PgQueryWithMap, type PgRef, type PgRefOptions, type PgSymbolKeys, type PgSymbols, type PgTableConfig, type PgTableWithColumnsAndSchema, PostgresModule, PostgresProvider, PostgresTypeProvider, type RemoveManyRelations, Repository, type RepositoryDescriptorOptions, RepositoryDescriptorProvider, type SQLLike, type SequenceDescriptor, type SequenceDescriptorOptions, type StatementOptions, type TEntity, type TPage, type TransactionContext, type TransactionDescriptorOptions, entityKeys, entitySchema, fromSchema, nullToUndefined, pageQuerySchema, pageSchema, pg, pgTableSchema, schema, schemaToColumns, table, table2 };
1642
+ export { $entity, $repository, $sequence, $transaction, type BaseEntity, type BaseEntityKeys, type EntityDescriptorOptions, EntityNotFoundError, type ExtractManyRelations, type FilterOperators, type FromSchema, NodePostgresProvider, type NodePostgresProviderState, type NullToUndefined, type NullifyIfOptional, PG_CREATED_AT, PG_DEFAULT, PG_IDENTITY, PG_MANY, PG_ONE, PG_PRIMARY_KEY, PG_REF, PG_SCHEMA, PG_SERIAL, PG_UPDATED_AT, PG_VERSION, type Page, type PageQuery, type PgAttrField, type PgDefault, type PgIdentityOptions, type PgMany, type PgManyOptions, type PgPrimaryKey, type PgQuery, type PgQueryWhere, type PgQueryWhereWithMany, type PgQueryWith, type PgQueryWithMap, type PgRef, type PgRefOptions, type PgSymbolKeys, type PgSymbols, type PgTableConfig, type PgTableWithColumnsAndSchema, PostgresModule, PostgresProvider, PostgresTypeProvider, type RemoveManyRelations, Repository, type RepositoryDescriptorOptions, RepositoryDescriptorProvider, type SQLLike, type SequenceDescriptor, type SequenceDescriptorOptions, type StatementOptions, type TEntity, type TPage, type TransactionContext, type TransactionDescriptorOptions, dzl, entityKeys, entitySchema, fromSchema, nullToUndefined, pageQuerySchema, pageSchema, pg, pgTableSchema, schema, schemaToColumns };
package/react/auth.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _alepha_core from '@alepha/core';
2
- import { Alepha, KIND, OPTIONS } from '@alepha/core';
2
+ import { Async, KIND, OPTIONS, Alepha } from '@alepha/core';
3
3
  import { UserAccountToken } from '@alepha/security';
4
4
  import * as _alepha_server from '@alepha/server';
5
5
  import { HttpClient } from '@alepha/server';
@@ -131,6 +131,28 @@ interface TSchema extends TKind, SchemaOptions {
131
131
  static: unknown;
132
132
  }
133
133
 
134
+ declare const KEY = "AUTH";
135
+ type AccessToken = string;
136
+ interface AuthDescriptorOptions {
137
+ name?: string;
138
+ oidc?: {
139
+ issuer: string;
140
+ clientId: string;
141
+ clientSecret?: string;
142
+ redirectUri?: string;
143
+ };
144
+ fallback?: () => Async<AccessToken>;
145
+ }
146
+ interface AuthDescriptor {
147
+ [KIND]: typeof KEY;
148
+ [OPTIONS]: AuthDescriptorOptions;
149
+ jwks: () => string;
150
+ }
151
+ declare const $auth: {
152
+ (options: AuthDescriptorOptions): AuthDescriptor;
153
+ [KIND]: string;
154
+ };
155
+
134
156
  declare class ReactAuthProvider {
135
157
  protected readonly log: _alepha_core.Logger;
136
158
  protected readonly alepha: Alepha;
@@ -192,9 +214,6 @@ declare class ReactAuthProvider {
192
214
  name: any;
193
215
  email: any;
194
216
  } | undefined;
195
- /**
196
- *
197
- */
198
217
  readonly logout: _alepha_server.RouteDescriptor<{
199
218
  query: TObject<{
200
219
  redirect: TOptional<TString>;
@@ -210,6 +229,7 @@ declare class ReactAuthProvider {
210
229
  client: Configuration;
211
230
  name: string;
212
231
  redirectUri: string;
232
+ fallback?: () => Async<AccessToken>;
213
233
  }>;
214
234
  /**
215
235
  *
@@ -232,6 +252,7 @@ interface AuthProvider {
232
252
  client: {
233
253
  get: () => Promise<Configuration>;
234
254
  };
255
+ fallback?: () => Async<AccessToken>;
235
256
  }
236
257
  interface ReactUser {
237
258
  id: string;
@@ -239,26 +260,6 @@ interface ReactUser {
239
260
  email?: string;
240
261
  }
241
262
 
242
- declare const KEY = "AUTH";
243
- interface AuthDescriptorOptions {
244
- name?: string;
245
- oidc?: {
246
- issuer: string;
247
- clientId: string;
248
- clientSecret?: string;
249
- redirectUri?: string;
250
- };
251
- }
252
- interface AuthDescriptor {
253
- [KIND]: typeof KEY;
254
- [OPTIONS]: AuthDescriptorOptions;
255
- jwks: () => string;
256
- }
257
- declare const $auth: {
258
- (options: AuthDescriptorOptions): AuthDescriptor;
259
- [KIND]: string;
260
- };
261
-
262
263
  declare const useAuth: () => AuthHook;
263
264
  interface AuthHook {
264
265
  user?: UserAccountToken;
@@ -273,12 +274,12 @@ declare class ReactAuth {
273
274
  protected readonly log: _alepha_core.Logger;
274
275
  protected readonly alepha: Alepha;
275
276
  protected readonly client: HttpClient;
276
- readonly slugs: {
277
+ static path: {
277
278
  login: string;
279
+ callback: string;
278
280
  logout: string;
279
281
  };
280
- readonly start: _alepha_core.HookDescriptor<"client:onError">;
281
- readonly onRender: _alepha_core.HookDescriptor<"react:browser:render">;
282
+ readonly onRender: _alepha_core.HookDescriptor<"react:transition:begin">;
282
283
  protected getUserFromCookies(): UserAccountToken | undefined;
283
284
  login(): void;
284
285
  logout(): void;
@@ -297,4 +298,4 @@ declare class ReactAuthModule {
297
298
  constructor();
298
299
  }
299
300
 
300
- export { $auth, type AuthDescriptor, type AuthDescriptorOptions, type AuthHook, type AuthProvider, ReactAuth, ReactAuthModule, ReactAuthProvider, type ReactUser, type SessionTokens, useAuth };
301
+ export { $auth, type AccessToken, type AuthDescriptor, type AuthDescriptorOptions, type AuthHook, type AuthProvider, ReactAuth, ReactAuthModule, ReactAuthProvider, type ReactUser, type SessionTokens, useAuth };