@xylex-group/athena 2.7.0 → 2.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +218 -18
  2. package/dist/browser.cjs +2173 -675
  3. package/dist/browser.cjs.map +1 -1
  4. package/dist/browser.d.cts +8 -7
  5. package/dist/browser.d.ts +8 -7
  6. package/dist/browser.js +2167 -676
  7. package/dist/browser.js.map +1 -1
  8. package/dist/cli/index.cjs +2068 -559
  9. package/dist/cli/index.cjs.map +1 -1
  10. package/dist/cli/index.d.cts +3 -3
  11. package/dist/cli/index.d.ts +3 -3
  12. package/dist/cli/index.js +2068 -559
  13. package/dist/cli/index.js.map +1 -1
  14. package/dist/index.cjs +2815 -945
  15. package/dist/index.cjs.map +1 -1
  16. package/dist/index.d.cts +8 -7
  17. package/dist/index.d.ts +8 -7
  18. package/dist/index.js +2809 -946
  19. package/dist/index.js.map +1 -1
  20. package/dist/{model-form-AKYrgede.d.ts → model-form-Cx3wtvi8.d.ts} +963 -93
  21. package/dist/{model-form-ehfqLuG7.d.cts → model-form-_ugfOXao.d.cts} +963 -93
  22. package/dist/{pipeline-BfCWSRYl.d.cts → pipeline-BtD-Uo5X.d.cts} +1 -1
  23. package/dist/{pipeline-BUsR9XlO.d.ts → pipeline-yCIZNJHE.d.ts} +1 -1
  24. package/dist/{react-email-BQzmXBDE.d.cts → react-email-CiiSVa9F.d.cts} +121 -10
  25. package/dist/{react-email-BrVRp80B.d.ts → react-email-WN8UU3AL.d.ts} +121 -10
  26. package/dist/react.cjs +1 -1
  27. package/dist/react.cjs.map +1 -1
  28. package/dist/react.d.cts +4 -4
  29. package/dist/react.d.ts +4 -4
  30. package/dist/react.js +1 -1
  31. package/dist/react.js.map +1 -1
  32. package/dist/{types-t_TVqnmp.d.ts → types-89EfjLjV.d.cts} +48 -5
  33. package/dist/{types-BSIsyss1.d.cts → types-C2kiTt6-.d.ts} +48 -5
  34. package/dist/{types-BsyRW49r.d.cts → types-g8G6J0xE.d.cts} +26 -1
  35. package/dist/{types-BsyRW49r.d.ts → types-g8G6J0xE.d.ts} +26 -1
  36. package/package.json +28 -57
@@ -1,4 +1,4 @@
1
- import { R as RunGeneratorOptions, l as RunGeneratorResult } from './types-BSIsyss1.cjs';
1
+ import { R as RunGeneratorOptions, o as RunGeneratorResult } from './types-89EfjLjV.cjs';
2
2
 
3
3
  /**
4
4
  * End-to-end generator execution: load config, introspect, render, and optionally write files.
@@ -1,4 +1,4 @@
1
- import { R as RunGeneratorOptions, l as RunGeneratorResult } from './types-t_TVqnmp.js';
1
+ import { R as RunGeneratorOptions, o as RunGeneratorResult } from './types-C2kiTt6-.js';
2
2
 
3
3
  /**
4
4
  * End-to-end generator execution: load config, introspect, render, and optionally write files.
@@ -1,10 +1,9 @@
1
- import { b as AthenaGatewayConnectionOptions, c as AthenaGatewayConnectionResult, F as SchemaDef, J as AnyModelDef, D as DatabaseDef, y as ModelMetadata, x as ModelDef, R as RegistryDef, H as TenantKeyMap, T as TenantContext, E as RowOf, M as ModelAt, q as InsertOf, U as UpdateOf, a as AthenaGatewayCallOptions, S as SchemaIntrospectionProvider, r as IntrospectionColumn } from './types-BsyRW49r.cjs';
2
- import { av as AthenaSdkClient, bz as TableQueryBuilder, f as AthenaAuthClientConfig, N as AthenaAuthSdkClient, F as AthenaAuthReactEmailProps, C as AthenaAuthReactEmailComponent, H as AthenaAuthReactEmailRenderInput, k as AthenaAuthEmailTemplateDefinition, i as AthenaAuthEmailTemplateBuilder, I as AthenaAuthReactEmailRenderOptions, G as AthenaAuthReactEmailRenderEvent, D as AthenaAuthReactEmailConfig } from './model-form-ehfqLuG7.cjs';
3
- import { j as GeneratorSchemaSelection, b as GeneratorProviderConfig } from './types-BSIsyss1.cjs';
1
+ import { J as SchemaDef, N as AnyModelDef, D as DatabaseDef, E as ModelMetadata, C as ModelDef, R as RegistryDef, y as ModelColumnKind, L as TenantKeyMap, T as TenantContext, H as RowOf, M as ModelAt, r as InsertOf, U as UpdateOf, a as AthenaGatewayCallOptions, S as SchemaIntrospectionProvider, s as IntrospectionColumn } from './types-g8G6J0xE.cjs';
2
+ import { bW as ModelFormNullishMode, bX as ModelFormValues, aK as AthenaSdkClient, cZ as TableQueryBuilder, $ as AthenaClientExperimentalOptions, f as AthenaAuthClientConfig, N as AthenaAuthSdkClient, F as AthenaAuthReactEmailProps, C as AthenaAuthReactEmailComponent, H as AthenaAuthReactEmailRenderInput, k as AthenaAuthEmailTemplateDefinition, i as AthenaAuthEmailTemplateBuilder, I as AthenaAuthReactEmailRenderOptions, G as AthenaAuthReactEmailRenderEvent, D as AthenaAuthReactEmailConfig } from './model-form-_ugfOXao.cjs';
3
+ import { ZodType } from 'zod';
4
+ import { l as GeneratorSchemaSelection, b as GeneratorProviderConfig } from './types-89EfjLjV.cjs';
4
5
  import { A as AthenaCookiesOptions, a as AthenaSessionPair, b as AthenaCookieOptions, c as AthenaAuthCookies, g as getCookieCache, d as getSessionCookie, e as AthenaCookieContextRuntime } from './index-CVcQCGyG.cjs';
5
6
 
6
- declare function verifyAthenaGatewayUrl(baseUrl: string, options?: AthenaGatewayConnectionOptions): Promise<AthenaGatewayConnectionResult>;
7
-
8
7
  interface NormalizeAthenaGatewayBaseUrlOptions {
9
8
  defaultBaseUrl?: string;
10
9
  label?: string;
@@ -43,6 +42,111 @@ declare function defineDatabase<Schemas extends Record<string, SchemaDef<Record<
43
42
  */
44
43
  declare function defineRegistry<Databases extends Record<string, DatabaseDef<Record<string, SchemaDef<Record<string, AnyModelDef>>>>>>(databases: Databases): RegistryDef<Databases>;
45
44
 
45
+ declare const COLUMN_CONFIG: unique symbol;
46
+ interface ColumnRuntimeConfig<TValue, TNullable extends boolean = false, THasDefault extends boolean = false, TGenerated extends boolean = false, TColumnName extends string | undefined = undefined, TKind extends ModelColumnKind = ModelColumnKind> {
47
+ readonly kind: TKind;
48
+ readonly columnName?: TColumnName;
49
+ readonly nullable: TNullable;
50
+ readonly hasDefault: THasDefault;
51
+ readonly isGenerated: TGenerated;
52
+ readonly enumValues?: readonly string[];
53
+ readonly jsonSchema?: ZodType<TValue>;
54
+ readonly __value?: TValue;
55
+ }
56
+ interface AthenaColumnBuilder<TValue, TNullable extends boolean = false, THasDefault extends boolean = false, TGenerated extends boolean = false, TColumnName extends string | undefined = undefined, TKind extends ModelColumnKind = ModelColumnKind> {
57
+ readonly [COLUMN_CONFIG]: ColumnRuntimeConfig<TValue, TNullable, THasDefault, TGenerated, TColumnName, TKind>;
58
+ optional(): AthenaColumnBuilder<TValue, true, THasDefault, TGenerated, TColumnName, TKind>;
59
+ from<TNextColumnName extends string>(columnName: TNextColumnName): AthenaColumnBuilder<TValue, TNullable, THasDefault, TGenerated, TNextColumnName, TKind>;
60
+ defaulted(): AthenaColumnBuilder<TValue, TNullable, true, TGenerated, TColumnName, TKind>;
61
+ generated(): AthenaColumnBuilder<TValue, TNullable, THasDefault, true, TColumnName, TKind>;
62
+ }
63
+ type AnyColumnBuilder = AthenaColumnBuilder<unknown, boolean, boolean, boolean, string | undefined, ModelColumnKind>;
64
+ declare function string(): AthenaColumnBuilder<string, false, false, false, undefined, 'string'>;
65
+ declare function number(): AthenaColumnBuilder<number, false, false, false, undefined, 'number'>;
66
+ declare function boolean(): AthenaColumnBuilder<boolean, false, false, false, undefined, 'boolean'>;
67
+ declare function json<TValue = unknown>(schema?: ZodType<TValue>): AthenaColumnBuilder<TValue, false, false, false, undefined, 'json'>;
68
+ declare function enumeration<const TValues extends readonly [string, ...string[]]>(values: TValues): AthenaColumnBuilder<TValues[number], false, false, false, undefined, 'enumeration'>;
69
+
70
+ interface AthenaTableSchemaBundle<Row, Insert, Update> {
71
+ readonly row: ZodType<Row>;
72
+ readonly insert: ZodType<Insert>;
73
+ readonly update: ZodType<Update>;
74
+ readonly form: ZodType<Insert>;
75
+ }
76
+
77
+ type Simplify<T> = {
78
+ [K in keyof T]: T[K];
79
+ } & {};
80
+ type ExtractColumnConfig<TColumn extends AnyColumnBuilder> = TColumn[typeof COLUMN_CONFIG];
81
+ type ColumnValue<TColumn extends AnyColumnBuilder> = ExtractColumnConfig<TColumn> extends {
82
+ __value?: infer TValue;
83
+ } ? TValue : never;
84
+ type ColumnNullable<TColumn extends AnyColumnBuilder> = ExtractColumnConfig<TColumn> extends {
85
+ nullable: infer TNullable extends boolean;
86
+ } ? TNullable : never;
87
+ type ColumnHasDefault<TColumn extends AnyColumnBuilder> = ExtractColumnConfig<TColumn> extends {
88
+ hasDefault: infer THasDefault extends boolean;
89
+ } ? THasDefault : never;
90
+ type ColumnGenerated<TColumn extends AnyColumnBuilder> = ExtractColumnConfig<TColumn> extends {
91
+ isGenerated: infer TGenerated extends boolean;
92
+ } ? TGenerated : never;
93
+ type RowFieldType<TColumn extends AnyColumnBuilder> = ColumnNullable<TColumn> extends true ? ColumnValue<TColumn> | null : ColumnValue<TColumn>;
94
+ type WritableColumnKeys<TColumns extends Record<string, AnyColumnBuilder>> = Extract<{
95
+ [K in keyof TColumns]-?: ColumnGenerated<TColumns[K]> extends true ? never : K;
96
+ }[keyof TColumns], string>;
97
+ type InsertRequiredKeys<TColumns extends Record<string, AnyColumnBuilder>> = Extract<{
98
+ [K in keyof TColumns]-?: ColumnGenerated<TColumns[K]> extends true ? never : ColumnHasDefault<TColumns[K]> extends true ? never : ColumnNullable<TColumns[K]> extends true ? never : K;
99
+ }[keyof TColumns], string>;
100
+ type InsertOptionalKeys<TColumns extends Record<string, AnyColumnBuilder>> = Exclude<WritableColumnKeys<TColumns>, InsertRequiredKeys<TColumns>>;
101
+ type ExtractMappedSchemaName<TMappedName extends string | undefined> = TMappedName extends `${infer TSchema}.${string}` ? TSchema : undefined;
102
+ type ExtractMappedTableName<TMappedName extends string | undefined> = TMappedName extends `${string}.${infer TTable}` ? TTable : TMappedName extends string ? TMappedName : undefined;
103
+ type ResolvedSchemaName<TSchemaName extends string | undefined, TMappedName extends string | undefined> = TSchemaName extends string ? TSchemaName : ExtractMappedSchemaName<TMappedName>;
104
+ type ResolvedTableName<TName extends string, TMappedName extends string | undefined> = ExtractMappedTableName<TMappedName> extends string ? ExtractMappedTableName<TMappedName> : TName;
105
+ type QualifiedTableName<TName extends string, TMappedName extends string | undefined, TSchemaName extends string | undefined> = ResolvedSchemaName<TSchemaName, TMappedName> extends infer TResolvedSchema extends string | undefined ? TResolvedSchema extends string ? `${TResolvedSchema}.${ResolvedTableName<TName, TMappedName>}` : ResolvedTableName<TName, TMappedName> : never;
106
+ type RowFromColumns<TColumns extends Record<string, AnyColumnBuilder>> = Simplify<{
107
+ [K in keyof TColumns]: RowFieldType<TColumns[K]>;
108
+ }>;
109
+ type InsertFromColumns<TColumns extends Record<string, AnyColumnBuilder>> = Simplify<{
110
+ [K in InsertRequiredKeys<TColumns>]: ColumnValue<TColumns[K]>;
111
+ } & {
112
+ [K in InsertOptionalKeys<TColumns>]?: RowFieldType<TColumns[K]>;
113
+ }>;
114
+ type UpdateFromColumns<TColumns extends Record<string, AnyColumnBuilder>> = Simplify<{
115
+ [K in WritableColumnKeys<TColumns>]?: RowFieldType<TColumns[K]>;
116
+ }>;
117
+ type FormValuesFromColumns<TColumns extends Record<string, AnyColumnBuilder>, TMode extends ModelFormNullishMode = 'empty-string'> = ModelFormValues<AthenaTableDef<TColumns>, TMode>;
118
+ interface AthenaTableDef<TColumns extends Record<string, AnyColumnBuilder>, TName extends string = string, TMappedName extends string | undefined = undefined, TSchemaName extends string | undefined = undefined> extends ModelDef<RowFromColumns<TColumns>, InsertFromColumns<TColumns>, UpdateFromColumns<TColumns>, ModelMetadata<RowFromColumns<TColumns>>> {
119
+ readonly kind: 'table';
120
+ readonly name: TName;
121
+ readonly mappedName: TMappedName;
122
+ readonly schemaName: ResolvedSchemaName<TSchemaName, TMappedName>;
123
+ readonly tableName: ResolvedTableName<TName, TMappedName>;
124
+ readonly qualifiedName: QualifiedTableName<TName, TMappedName, TSchemaName>;
125
+ readonly columns: Readonly<TColumns>;
126
+ readonly schemas: AthenaTableSchemaBundle<RowFromColumns<TColumns>, InsertFromColumns<TColumns>, UpdateFromColumns<TColumns>>;
127
+ }
128
+ interface AthenaTableBuilder<TName extends string, TMappedName extends string | undefined = undefined, TSchemaName extends string | undefined = undefined> {
129
+ readonly name: TName;
130
+ readonly mappedName: TMappedName;
131
+ readonly schemaName: TSchemaName;
132
+ from<TNextMappedName extends string>(tableName: TNextMappedName): AthenaTableBuilder<TName, TNextMappedName, TSchemaName>;
133
+ schema<TNextSchemaName extends string>(schemaName: TNextSchemaName): AthenaTableBuilder<TName, TMappedName, TNextSchemaName>;
134
+ columns<TColumns extends Record<string, AnyColumnBuilder>>(columns: TColumns): AthenaTableColumnsBuilder<TName, TMappedName, TSchemaName, TColumns>;
135
+ }
136
+ interface AthenaTableColumnsBuilder<TName extends string, TMappedName extends string | undefined, TSchemaName extends string | undefined, TColumns extends Record<string, AnyColumnBuilder>> {
137
+ readonly name: TName;
138
+ readonly mappedName: TMappedName;
139
+ readonly schemaName: TSchemaName;
140
+ readonly columns: Readonly<TColumns>;
141
+ from<TNextMappedName extends string>(tableName: TNextMappedName): AthenaTableColumnsBuilder<TName, TNextMappedName, TSchemaName, TColumns>;
142
+ schema<TNextSchemaName extends string>(schemaName: TNextSchemaName): AthenaTableColumnsBuilder<TName, TMappedName, TNextSchemaName, TColumns>;
143
+ primaryKey<TPrimaryKey extends readonly [
144
+ Extract<keyof TColumns, string>,
145
+ ...Array<Extract<keyof TColumns, string>>
146
+ ]>(...keys: TPrimaryKey): AthenaTableDef<TColumns, TName, TMappedName, TSchemaName>;
147
+ }
148
+ declare function table<TName extends string>(name: TName): AthenaTableBuilder<TName, undefined>;
149
+
46
150
  type RegistryConstraint = RegistryDef<Record<string, DatabaseDef<Record<string, SchemaDef<Record<string, AnyModelDef>>>>>>;
47
151
  /**
48
152
  * Options for creating typed Athena clients.
@@ -50,26 +154,33 @@ type RegistryConstraint = RegistryDef<Record<string, DatabaseDef<Record<string,
50
154
  interface TypedClientOptions<TMap extends TenantKeyMap = TenantKeyMap> extends Pick<AthenaGatewayCallOptions, 'backend' | 'client' | 'headers'> {
51
155
  tenantKeyMap?: TMap;
52
156
  tenantContext?: TenantContext<TMap>;
157
+ experimental?: AthenaClientExperimentalOptions;
158
+ }
159
+ interface TypedClientOptionsWithTypecheckedColumns<TMap extends TenantKeyMap = TenantKeyMap> extends TypedClientOptions<TMap> {
160
+ experimental: AthenaClientExperimentalOptions & {
161
+ typecheckColumns: true;
162
+ };
53
163
  }
54
164
  /**
55
165
  * Typed Athena client with registry-driven model resolution and tenant-context propagation.
56
166
  */
57
- interface TypedAthenaClient<TRegistry extends RegistryConstraint, TTenantMap extends TenantKeyMap = Record<never, string>> extends AthenaSdkClient {
167
+ interface TypedAthenaClient<TRegistry extends RegistryConstraint, TTenantMap extends TenantKeyMap = Record<never, string>, TStrict extends boolean = false> extends AthenaSdkClient<TStrict> {
58
168
  readonly registry: TRegistry;
59
169
  readonly tenantKeyMap: Readonly<TTenantMap>;
60
170
  readonly tenantContext: TenantContext<TTenantMap>;
61
- withTenantContext(context: TenantContext<TTenantMap>): TypedAthenaClient<TRegistry, TTenantMap>;
171
+ withTenantContext(context: TenantContext<TTenantMap>): TypedAthenaClient<TRegistry, TTenantMap, TStrict>;
62
172
  fromModel<TDatabase extends keyof TRegistry & string, TSchema extends keyof TRegistry[TDatabase]['schemas'] & string, TModel extends keyof TRegistry[TDatabase]['schemas'][TSchema]['models'] & string>(database: TDatabase, schema: TSchema, model: TModel): TableQueryBuilder<RowOf<ModelAt<TRegistry, TDatabase, TSchema, TModel>>, InsertOf<ModelAt<TRegistry, TDatabase, TSchema, TModel>>, UpdateOf<ModelAt<TRegistry, TDatabase, TSchema, TModel>>, {
63
173
  registry: TRegistry;
64
174
  database: TDatabase;
65
175
  schema: TSchema;
66
176
  model: ModelAt<TRegistry, TDatabase, TSchema, TModel>;
67
- }>;
177
+ }, TStrict>;
68
178
  }
69
179
  /**
70
180
  * Creates a typed client bound to a registry contract and optional tenant header mapping.
71
181
  */
72
- declare function createTypedClient<TRegistry extends RegistryConstraint, TTenantMap extends TenantKeyMap = Record<never, string>>(registry: TRegistry, url: string, apiKey: string, options?: TypedClientOptions<TTenantMap>): TypedAthenaClient<TRegistry, TTenantMap>;
182
+ declare function createTypedClient<TRegistry extends RegistryConstraint, TTenantMap extends TenantKeyMap = Record<never, string>>(registry: TRegistry, url: string, apiKey: string, options: TypedClientOptionsWithTypecheckedColumns<TTenantMap>): TypedAthenaClient<TRegistry, TTenantMap, true>;
183
+ declare function createTypedClient<TRegistry extends RegistryConstraint, TTenantMap extends TenantKeyMap = Record<never, string>>(registry: TRegistry, url: string, apiKey: string, options?: TypedClientOptions<TTenantMap>): TypedAthenaClient<TRegistry, TTenantMap, false>;
73
184
 
74
185
  /**
75
186
  * Constructor options for the PostgreSQL introspection provider.
@@ -301,4 +412,4 @@ declare function createAuthReactEmailInput<TProps extends AthenaAuthReactEmailPr
301
412
  declare function defineAuthEmailTemplate<TProps extends AthenaAuthReactEmailProps = AthenaAuthReactEmailProps>(definition: AthenaAuthEmailTemplateDefinition<TProps>): AthenaAuthEmailTemplateBuilder<TProps>;
302
413
  declare function renderAthenaReactEmail(input: AthenaAuthReactEmailRenderInput, options?: AthenaAuthReactEmailRuntimeOptions | AthenaAuthReactEmailConfig): Promise<AthenaAuthRenderedReactEmail>;
303
414
 
304
- export { ATHENA_AUTH_BASE_ERROR_CODES as A, defineAthenaAuthConfig as B, defineAuthEmailTemplate as C, DEFAULT_POSTGRES_SCHEMAS as D, defineDatabase as E, defineModel as F, type GeneratorEnvBooleanOptions as G, defineRegistry as H, defineSchema as I, generatorEnv as J, identifier as K, normalizeAthenaGatewayBaseUrl as L, normalizeSchemaSelection as M, renderAthenaReactEmail as N, resolvePostgresColumnType as O, type PostgresIntrospectionProviderOptions as P, resolveProviderSchemas as Q, verifyAthenaGatewayUrl as R, type TypedAthenaClient as T, type AthenaAuthBaseURLConfig as a, type AthenaAuthContext as b, type AthenaAuthCookieRuntimeInput as c, type AthenaAuthDatabaseFactory as d, type AthenaAuthHandlerResult as e, type AthenaAuthPlugin as f, type AthenaAuthPluginContext as g, type AthenaAuthPluginHandlerContext as h, type AthenaAuthRequestContext as i, type AthenaAuthServer as j, type AthenaAuthServerApi as k, type AthenaAuthServerConfig as l, type AthenaAuthServerRuntimeOptions as m, type AthenaAuthSocialProviderConfig as n, type AthenaAuthTrustedOrigins as o, type AthenaAuthTrustedProviders as p, type GeneratorEnvJsonOptions as q, type GeneratorEnvListOptions as r, type GeneratorEnvOneOfOptions as s, type GeneratorEnvStringOptions as t, type TypedClientOptions as u, athenaAuth as v, createAuthClient as w, createAuthReactEmailInput as x, createPostgresIntrospectionProvider as y, createTypedClient as z };
415
+ export { normalizeSchemaSelection as $, ATHENA_AUTH_BASE_ERROR_CODES as A, athenaAuth as B, type ColumnRuntimeConfig as C, DEFAULT_POSTGRES_SCHEMAS as D, boolean as E, type FormValuesFromColumns as F, type GeneratorEnvBooleanOptions as G, createAuthClient as H, type InsertFromColumns as I, createAuthReactEmailInput as J, createPostgresIntrospectionProvider as K, createTypedClient as L, defineAthenaAuthConfig as M, defineAuthEmailTemplate as N, defineDatabase as O, type PostgresIntrospectionProviderOptions as P, defineModel as Q, type RowFromColumns as R, defineRegistry as S, type TypedAthenaClient as T, type UpdateFromColumns as U, defineSchema as V, enumeration as W, generatorEnv as X, identifier as Y, json as Z, normalizeAthenaGatewayBaseUrl as _, type AnyColumnBuilder as a, number as a0, renderAthenaReactEmail as a1, resolvePostgresColumnType as a2, resolveProviderSchemas as a3, string as a4, table as a5, type AthenaAuthBaseURLConfig as b, type AthenaAuthContext as c, type AthenaAuthCookieRuntimeInput as d, type AthenaAuthDatabaseFactory as e, type AthenaAuthHandlerResult as f, type AthenaAuthPlugin as g, type AthenaAuthPluginContext as h, type AthenaAuthPluginHandlerContext as i, type AthenaAuthRequestContext as j, type AthenaAuthServer as k, type AthenaAuthServerApi as l, type AthenaAuthServerConfig as m, type AthenaAuthServerRuntimeOptions as n, type AthenaAuthSocialProviderConfig as o, type AthenaAuthTrustedOrigins as p, type AthenaAuthTrustedProviders as q, type AthenaColumnBuilder as r, type AthenaTableDef as s, type AthenaTableSchemaBundle as t, type GeneratorEnvJsonOptions as u, type GeneratorEnvListOptions as v, type GeneratorEnvOneOfOptions as w, type GeneratorEnvStringOptions as x, type TypedClientOptions as y, type TypedClientOptionsWithTypecheckedColumns as z };
@@ -1,10 +1,9 @@
1
- import { b as AthenaGatewayConnectionOptions, c as AthenaGatewayConnectionResult, F as SchemaDef, J as AnyModelDef, D as DatabaseDef, y as ModelMetadata, x as ModelDef, R as RegistryDef, H as TenantKeyMap, T as TenantContext, E as RowOf, M as ModelAt, q as InsertOf, U as UpdateOf, a as AthenaGatewayCallOptions, S as SchemaIntrospectionProvider, r as IntrospectionColumn } from './types-BsyRW49r.js';
2
- import { av as AthenaSdkClient, bz as TableQueryBuilder, f as AthenaAuthClientConfig, N as AthenaAuthSdkClient, F as AthenaAuthReactEmailProps, C as AthenaAuthReactEmailComponent, H as AthenaAuthReactEmailRenderInput, k as AthenaAuthEmailTemplateDefinition, i as AthenaAuthEmailTemplateBuilder, I as AthenaAuthReactEmailRenderOptions, G as AthenaAuthReactEmailRenderEvent, D as AthenaAuthReactEmailConfig } from './model-form-AKYrgede.js';
3
- import { j as GeneratorSchemaSelection, b as GeneratorProviderConfig } from './types-t_TVqnmp.js';
1
+ import { J as SchemaDef, N as AnyModelDef, D as DatabaseDef, E as ModelMetadata, C as ModelDef, R as RegistryDef, y as ModelColumnKind, L as TenantKeyMap, T as TenantContext, H as RowOf, M as ModelAt, r as InsertOf, U as UpdateOf, a as AthenaGatewayCallOptions, S as SchemaIntrospectionProvider, s as IntrospectionColumn } from './types-g8G6J0xE.js';
2
+ import { bW as ModelFormNullishMode, bX as ModelFormValues, aK as AthenaSdkClient, cZ as TableQueryBuilder, $ as AthenaClientExperimentalOptions, f as AthenaAuthClientConfig, N as AthenaAuthSdkClient, F as AthenaAuthReactEmailProps, C as AthenaAuthReactEmailComponent, H as AthenaAuthReactEmailRenderInput, k as AthenaAuthEmailTemplateDefinition, i as AthenaAuthEmailTemplateBuilder, I as AthenaAuthReactEmailRenderOptions, G as AthenaAuthReactEmailRenderEvent, D as AthenaAuthReactEmailConfig } from './model-form-Cx3wtvi8.js';
3
+ import { ZodType } from 'zod';
4
+ import { l as GeneratorSchemaSelection, b as GeneratorProviderConfig } from './types-C2kiTt6-.js';
4
5
  import { A as AthenaCookiesOptions, a as AthenaSessionPair, b as AthenaCookieOptions, c as AthenaAuthCookies, g as getCookieCache, d as getSessionCookie, e as AthenaCookieContextRuntime } from './index-CVcQCGyG.js';
5
6
 
6
- declare function verifyAthenaGatewayUrl(baseUrl: string, options?: AthenaGatewayConnectionOptions): Promise<AthenaGatewayConnectionResult>;
7
-
8
7
  interface NormalizeAthenaGatewayBaseUrlOptions {
9
8
  defaultBaseUrl?: string;
10
9
  label?: string;
@@ -43,6 +42,111 @@ declare function defineDatabase<Schemas extends Record<string, SchemaDef<Record<
43
42
  */
44
43
  declare function defineRegistry<Databases extends Record<string, DatabaseDef<Record<string, SchemaDef<Record<string, AnyModelDef>>>>>>(databases: Databases): RegistryDef<Databases>;
45
44
 
45
+ declare const COLUMN_CONFIG: unique symbol;
46
+ interface ColumnRuntimeConfig<TValue, TNullable extends boolean = false, THasDefault extends boolean = false, TGenerated extends boolean = false, TColumnName extends string | undefined = undefined, TKind extends ModelColumnKind = ModelColumnKind> {
47
+ readonly kind: TKind;
48
+ readonly columnName?: TColumnName;
49
+ readonly nullable: TNullable;
50
+ readonly hasDefault: THasDefault;
51
+ readonly isGenerated: TGenerated;
52
+ readonly enumValues?: readonly string[];
53
+ readonly jsonSchema?: ZodType<TValue>;
54
+ readonly __value?: TValue;
55
+ }
56
+ interface AthenaColumnBuilder<TValue, TNullable extends boolean = false, THasDefault extends boolean = false, TGenerated extends boolean = false, TColumnName extends string | undefined = undefined, TKind extends ModelColumnKind = ModelColumnKind> {
57
+ readonly [COLUMN_CONFIG]: ColumnRuntimeConfig<TValue, TNullable, THasDefault, TGenerated, TColumnName, TKind>;
58
+ optional(): AthenaColumnBuilder<TValue, true, THasDefault, TGenerated, TColumnName, TKind>;
59
+ from<TNextColumnName extends string>(columnName: TNextColumnName): AthenaColumnBuilder<TValue, TNullable, THasDefault, TGenerated, TNextColumnName, TKind>;
60
+ defaulted(): AthenaColumnBuilder<TValue, TNullable, true, TGenerated, TColumnName, TKind>;
61
+ generated(): AthenaColumnBuilder<TValue, TNullable, THasDefault, true, TColumnName, TKind>;
62
+ }
63
+ type AnyColumnBuilder = AthenaColumnBuilder<unknown, boolean, boolean, boolean, string | undefined, ModelColumnKind>;
64
+ declare function string(): AthenaColumnBuilder<string, false, false, false, undefined, 'string'>;
65
+ declare function number(): AthenaColumnBuilder<number, false, false, false, undefined, 'number'>;
66
+ declare function boolean(): AthenaColumnBuilder<boolean, false, false, false, undefined, 'boolean'>;
67
+ declare function json<TValue = unknown>(schema?: ZodType<TValue>): AthenaColumnBuilder<TValue, false, false, false, undefined, 'json'>;
68
+ declare function enumeration<const TValues extends readonly [string, ...string[]]>(values: TValues): AthenaColumnBuilder<TValues[number], false, false, false, undefined, 'enumeration'>;
69
+
70
+ interface AthenaTableSchemaBundle<Row, Insert, Update> {
71
+ readonly row: ZodType<Row>;
72
+ readonly insert: ZodType<Insert>;
73
+ readonly update: ZodType<Update>;
74
+ readonly form: ZodType<Insert>;
75
+ }
76
+
77
+ type Simplify<T> = {
78
+ [K in keyof T]: T[K];
79
+ } & {};
80
+ type ExtractColumnConfig<TColumn extends AnyColumnBuilder> = TColumn[typeof COLUMN_CONFIG];
81
+ type ColumnValue<TColumn extends AnyColumnBuilder> = ExtractColumnConfig<TColumn> extends {
82
+ __value?: infer TValue;
83
+ } ? TValue : never;
84
+ type ColumnNullable<TColumn extends AnyColumnBuilder> = ExtractColumnConfig<TColumn> extends {
85
+ nullable: infer TNullable extends boolean;
86
+ } ? TNullable : never;
87
+ type ColumnHasDefault<TColumn extends AnyColumnBuilder> = ExtractColumnConfig<TColumn> extends {
88
+ hasDefault: infer THasDefault extends boolean;
89
+ } ? THasDefault : never;
90
+ type ColumnGenerated<TColumn extends AnyColumnBuilder> = ExtractColumnConfig<TColumn> extends {
91
+ isGenerated: infer TGenerated extends boolean;
92
+ } ? TGenerated : never;
93
+ type RowFieldType<TColumn extends AnyColumnBuilder> = ColumnNullable<TColumn> extends true ? ColumnValue<TColumn> | null : ColumnValue<TColumn>;
94
+ type WritableColumnKeys<TColumns extends Record<string, AnyColumnBuilder>> = Extract<{
95
+ [K in keyof TColumns]-?: ColumnGenerated<TColumns[K]> extends true ? never : K;
96
+ }[keyof TColumns], string>;
97
+ type InsertRequiredKeys<TColumns extends Record<string, AnyColumnBuilder>> = Extract<{
98
+ [K in keyof TColumns]-?: ColumnGenerated<TColumns[K]> extends true ? never : ColumnHasDefault<TColumns[K]> extends true ? never : ColumnNullable<TColumns[K]> extends true ? never : K;
99
+ }[keyof TColumns], string>;
100
+ type InsertOptionalKeys<TColumns extends Record<string, AnyColumnBuilder>> = Exclude<WritableColumnKeys<TColumns>, InsertRequiredKeys<TColumns>>;
101
+ type ExtractMappedSchemaName<TMappedName extends string | undefined> = TMappedName extends `${infer TSchema}.${string}` ? TSchema : undefined;
102
+ type ExtractMappedTableName<TMappedName extends string | undefined> = TMappedName extends `${string}.${infer TTable}` ? TTable : TMappedName extends string ? TMappedName : undefined;
103
+ type ResolvedSchemaName<TSchemaName extends string | undefined, TMappedName extends string | undefined> = TSchemaName extends string ? TSchemaName : ExtractMappedSchemaName<TMappedName>;
104
+ type ResolvedTableName<TName extends string, TMappedName extends string | undefined> = ExtractMappedTableName<TMappedName> extends string ? ExtractMappedTableName<TMappedName> : TName;
105
+ type QualifiedTableName<TName extends string, TMappedName extends string | undefined, TSchemaName extends string | undefined> = ResolvedSchemaName<TSchemaName, TMappedName> extends infer TResolvedSchema extends string | undefined ? TResolvedSchema extends string ? `${TResolvedSchema}.${ResolvedTableName<TName, TMappedName>}` : ResolvedTableName<TName, TMappedName> : never;
106
+ type RowFromColumns<TColumns extends Record<string, AnyColumnBuilder>> = Simplify<{
107
+ [K in keyof TColumns]: RowFieldType<TColumns[K]>;
108
+ }>;
109
+ type InsertFromColumns<TColumns extends Record<string, AnyColumnBuilder>> = Simplify<{
110
+ [K in InsertRequiredKeys<TColumns>]: ColumnValue<TColumns[K]>;
111
+ } & {
112
+ [K in InsertOptionalKeys<TColumns>]?: RowFieldType<TColumns[K]>;
113
+ }>;
114
+ type UpdateFromColumns<TColumns extends Record<string, AnyColumnBuilder>> = Simplify<{
115
+ [K in WritableColumnKeys<TColumns>]?: RowFieldType<TColumns[K]>;
116
+ }>;
117
+ type FormValuesFromColumns<TColumns extends Record<string, AnyColumnBuilder>, TMode extends ModelFormNullishMode = 'empty-string'> = ModelFormValues<AthenaTableDef<TColumns>, TMode>;
118
+ interface AthenaTableDef<TColumns extends Record<string, AnyColumnBuilder>, TName extends string = string, TMappedName extends string | undefined = undefined, TSchemaName extends string | undefined = undefined> extends ModelDef<RowFromColumns<TColumns>, InsertFromColumns<TColumns>, UpdateFromColumns<TColumns>, ModelMetadata<RowFromColumns<TColumns>>> {
119
+ readonly kind: 'table';
120
+ readonly name: TName;
121
+ readonly mappedName: TMappedName;
122
+ readonly schemaName: ResolvedSchemaName<TSchemaName, TMappedName>;
123
+ readonly tableName: ResolvedTableName<TName, TMappedName>;
124
+ readonly qualifiedName: QualifiedTableName<TName, TMappedName, TSchemaName>;
125
+ readonly columns: Readonly<TColumns>;
126
+ readonly schemas: AthenaTableSchemaBundle<RowFromColumns<TColumns>, InsertFromColumns<TColumns>, UpdateFromColumns<TColumns>>;
127
+ }
128
+ interface AthenaTableBuilder<TName extends string, TMappedName extends string | undefined = undefined, TSchemaName extends string | undefined = undefined> {
129
+ readonly name: TName;
130
+ readonly mappedName: TMappedName;
131
+ readonly schemaName: TSchemaName;
132
+ from<TNextMappedName extends string>(tableName: TNextMappedName): AthenaTableBuilder<TName, TNextMappedName, TSchemaName>;
133
+ schema<TNextSchemaName extends string>(schemaName: TNextSchemaName): AthenaTableBuilder<TName, TMappedName, TNextSchemaName>;
134
+ columns<TColumns extends Record<string, AnyColumnBuilder>>(columns: TColumns): AthenaTableColumnsBuilder<TName, TMappedName, TSchemaName, TColumns>;
135
+ }
136
+ interface AthenaTableColumnsBuilder<TName extends string, TMappedName extends string | undefined, TSchemaName extends string | undefined, TColumns extends Record<string, AnyColumnBuilder>> {
137
+ readonly name: TName;
138
+ readonly mappedName: TMappedName;
139
+ readonly schemaName: TSchemaName;
140
+ readonly columns: Readonly<TColumns>;
141
+ from<TNextMappedName extends string>(tableName: TNextMappedName): AthenaTableColumnsBuilder<TName, TNextMappedName, TSchemaName, TColumns>;
142
+ schema<TNextSchemaName extends string>(schemaName: TNextSchemaName): AthenaTableColumnsBuilder<TName, TMappedName, TNextSchemaName, TColumns>;
143
+ primaryKey<TPrimaryKey extends readonly [
144
+ Extract<keyof TColumns, string>,
145
+ ...Array<Extract<keyof TColumns, string>>
146
+ ]>(...keys: TPrimaryKey): AthenaTableDef<TColumns, TName, TMappedName, TSchemaName>;
147
+ }
148
+ declare function table<TName extends string>(name: TName): AthenaTableBuilder<TName, undefined>;
149
+
46
150
  type RegistryConstraint = RegistryDef<Record<string, DatabaseDef<Record<string, SchemaDef<Record<string, AnyModelDef>>>>>>;
47
151
  /**
48
152
  * Options for creating typed Athena clients.
@@ -50,26 +154,33 @@ type RegistryConstraint = RegistryDef<Record<string, DatabaseDef<Record<string,
50
154
  interface TypedClientOptions<TMap extends TenantKeyMap = TenantKeyMap> extends Pick<AthenaGatewayCallOptions, 'backend' | 'client' | 'headers'> {
51
155
  tenantKeyMap?: TMap;
52
156
  tenantContext?: TenantContext<TMap>;
157
+ experimental?: AthenaClientExperimentalOptions;
158
+ }
159
+ interface TypedClientOptionsWithTypecheckedColumns<TMap extends TenantKeyMap = TenantKeyMap> extends TypedClientOptions<TMap> {
160
+ experimental: AthenaClientExperimentalOptions & {
161
+ typecheckColumns: true;
162
+ };
53
163
  }
54
164
  /**
55
165
  * Typed Athena client with registry-driven model resolution and tenant-context propagation.
56
166
  */
57
- interface TypedAthenaClient<TRegistry extends RegistryConstraint, TTenantMap extends TenantKeyMap = Record<never, string>> extends AthenaSdkClient {
167
+ interface TypedAthenaClient<TRegistry extends RegistryConstraint, TTenantMap extends TenantKeyMap = Record<never, string>, TStrict extends boolean = false> extends AthenaSdkClient<TStrict> {
58
168
  readonly registry: TRegistry;
59
169
  readonly tenantKeyMap: Readonly<TTenantMap>;
60
170
  readonly tenantContext: TenantContext<TTenantMap>;
61
- withTenantContext(context: TenantContext<TTenantMap>): TypedAthenaClient<TRegistry, TTenantMap>;
171
+ withTenantContext(context: TenantContext<TTenantMap>): TypedAthenaClient<TRegistry, TTenantMap, TStrict>;
62
172
  fromModel<TDatabase extends keyof TRegistry & string, TSchema extends keyof TRegistry[TDatabase]['schemas'] & string, TModel extends keyof TRegistry[TDatabase]['schemas'][TSchema]['models'] & string>(database: TDatabase, schema: TSchema, model: TModel): TableQueryBuilder<RowOf<ModelAt<TRegistry, TDatabase, TSchema, TModel>>, InsertOf<ModelAt<TRegistry, TDatabase, TSchema, TModel>>, UpdateOf<ModelAt<TRegistry, TDatabase, TSchema, TModel>>, {
63
173
  registry: TRegistry;
64
174
  database: TDatabase;
65
175
  schema: TSchema;
66
176
  model: ModelAt<TRegistry, TDatabase, TSchema, TModel>;
67
- }>;
177
+ }, TStrict>;
68
178
  }
69
179
  /**
70
180
  * Creates a typed client bound to a registry contract and optional tenant header mapping.
71
181
  */
72
- declare function createTypedClient<TRegistry extends RegistryConstraint, TTenantMap extends TenantKeyMap = Record<never, string>>(registry: TRegistry, url: string, apiKey: string, options?: TypedClientOptions<TTenantMap>): TypedAthenaClient<TRegistry, TTenantMap>;
182
+ declare function createTypedClient<TRegistry extends RegistryConstraint, TTenantMap extends TenantKeyMap = Record<never, string>>(registry: TRegistry, url: string, apiKey: string, options: TypedClientOptionsWithTypecheckedColumns<TTenantMap>): TypedAthenaClient<TRegistry, TTenantMap, true>;
183
+ declare function createTypedClient<TRegistry extends RegistryConstraint, TTenantMap extends TenantKeyMap = Record<never, string>>(registry: TRegistry, url: string, apiKey: string, options?: TypedClientOptions<TTenantMap>): TypedAthenaClient<TRegistry, TTenantMap, false>;
73
184
 
74
185
  /**
75
186
  * Constructor options for the PostgreSQL introspection provider.
@@ -301,4 +412,4 @@ declare function createAuthReactEmailInput<TProps extends AthenaAuthReactEmailPr
301
412
  declare function defineAuthEmailTemplate<TProps extends AthenaAuthReactEmailProps = AthenaAuthReactEmailProps>(definition: AthenaAuthEmailTemplateDefinition<TProps>): AthenaAuthEmailTemplateBuilder<TProps>;
302
413
  declare function renderAthenaReactEmail(input: AthenaAuthReactEmailRenderInput, options?: AthenaAuthReactEmailRuntimeOptions | AthenaAuthReactEmailConfig): Promise<AthenaAuthRenderedReactEmail>;
303
414
 
304
- export { ATHENA_AUTH_BASE_ERROR_CODES as A, defineAthenaAuthConfig as B, defineAuthEmailTemplate as C, DEFAULT_POSTGRES_SCHEMAS as D, defineDatabase as E, defineModel as F, type GeneratorEnvBooleanOptions as G, defineRegistry as H, defineSchema as I, generatorEnv as J, identifier as K, normalizeAthenaGatewayBaseUrl as L, normalizeSchemaSelection as M, renderAthenaReactEmail as N, resolvePostgresColumnType as O, type PostgresIntrospectionProviderOptions as P, resolveProviderSchemas as Q, verifyAthenaGatewayUrl as R, type TypedAthenaClient as T, type AthenaAuthBaseURLConfig as a, type AthenaAuthContext as b, type AthenaAuthCookieRuntimeInput as c, type AthenaAuthDatabaseFactory as d, type AthenaAuthHandlerResult as e, type AthenaAuthPlugin as f, type AthenaAuthPluginContext as g, type AthenaAuthPluginHandlerContext as h, type AthenaAuthRequestContext as i, type AthenaAuthServer as j, type AthenaAuthServerApi as k, type AthenaAuthServerConfig as l, type AthenaAuthServerRuntimeOptions as m, type AthenaAuthSocialProviderConfig as n, type AthenaAuthTrustedOrigins as o, type AthenaAuthTrustedProviders as p, type GeneratorEnvJsonOptions as q, type GeneratorEnvListOptions as r, type GeneratorEnvOneOfOptions as s, type GeneratorEnvStringOptions as t, type TypedClientOptions as u, athenaAuth as v, createAuthClient as w, createAuthReactEmailInput as x, createPostgresIntrospectionProvider as y, createTypedClient as z };
415
+ export { normalizeSchemaSelection as $, ATHENA_AUTH_BASE_ERROR_CODES as A, athenaAuth as B, type ColumnRuntimeConfig as C, DEFAULT_POSTGRES_SCHEMAS as D, boolean as E, type FormValuesFromColumns as F, type GeneratorEnvBooleanOptions as G, createAuthClient as H, type InsertFromColumns as I, createAuthReactEmailInput as J, createPostgresIntrospectionProvider as K, createTypedClient as L, defineAthenaAuthConfig as M, defineAuthEmailTemplate as N, defineDatabase as O, type PostgresIntrospectionProviderOptions as P, defineModel as Q, type RowFromColumns as R, defineRegistry as S, type TypedAthenaClient as T, type UpdateFromColumns as U, defineSchema as V, enumeration as W, generatorEnv as X, identifier as Y, json as Z, normalizeAthenaGatewayBaseUrl as _, type AnyColumnBuilder as a, number as a0, renderAthenaReactEmail as a1, resolvePostgresColumnType as a2, resolveProviderSchemas as a3, string as a4, table as a5, type AthenaAuthBaseURLConfig as b, type AthenaAuthContext as c, type AthenaAuthCookieRuntimeInput as d, type AthenaAuthDatabaseFactory as e, type AthenaAuthHandlerResult as f, type AthenaAuthPlugin as g, type AthenaAuthPluginContext as h, type AthenaAuthPluginHandlerContext as i, type AthenaAuthRequestContext as j, type AthenaAuthServer as k, type AthenaAuthServerApi as l, type AthenaAuthServerConfig as m, type AthenaAuthServerRuntimeOptions as n, type AthenaAuthSocialProviderConfig as o, type AthenaAuthTrustedOrigins as p, type AthenaAuthTrustedProviders as q, type AthenaColumnBuilder as r, type AthenaTableDef as s, type AthenaTableSchemaBundle as t, type GeneratorEnvJsonOptions as u, type GeneratorEnvListOptions as v, type GeneratorEnvOneOfOptions as w, type GeneratorEnvStringOptions as x, type TypedClientOptions as y, type TypedClientOptionsWithTypecheckedColumns as z };
package/dist/react.cjs CHANGED
@@ -187,7 +187,7 @@ var getSessionCookie = (request, config) => {
187
187
 
188
188
  // package.json
189
189
  var package_default = {
190
- version: "2.7.0"
190
+ version: "2.8.2"
191
191
  };
192
192
 
193
193
  // src/sdk-version.ts