@tailor-platform/sdk 1.68.0 → 1.70.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.
Files changed (117) hide show
  1. package/CHANGELOG.md +105 -0
  2. package/dist/application-BakHtldG.mjs +4 -0
  3. package/dist/application-Df5_I83n.mjs +6432 -0
  4. package/dist/application-Df5_I83n.mjs.map +1 -0
  5. package/dist/cli/erd-viewer-assets/app.js +279 -36
  6. package/dist/cli/erd-viewer-assets/index.html +4 -0
  7. package/dist/cli/erd-viewer-assets/styles.css +252 -5
  8. package/dist/cli/index.mjs +650 -98
  9. package/dist/cli/index.mjs.map +1 -1
  10. package/dist/cli/lib.d.mts +247 -160
  11. package/dist/cli/lib.mjs +3 -3
  12. package/dist/cli/lib.mjs.map +1 -1
  13. package/dist/cli/skills.mjs +1 -1
  14. package/dist/completion/zsh-worker.zsh +175 -24
  15. package/dist/configure/index.d.mts +5 -5
  16. package/dist/configure/index.mjs +12 -6
  17. package/dist/configure/index.mjs.map +1 -1
  18. package/dist/{crashreport-u9y2npiy.mjs → crashreport-BqyvFk-_.mjs} +2 -2
  19. package/dist/{crashreport-u9y2npiy.mjs.map → crashreport-BqyvFk-_.mjs.map} +1 -1
  20. package/dist/{crashreport-6jpCceOF.mjs → crashreport-BwF8cHF0.mjs} +1 -1
  21. package/dist/enum-constants-C7DaWeQo.mjs.map +1 -1
  22. package/dist/field-C4zdJLW5.mjs.map +1 -1
  23. package/dist/file-utils-BHPxPXmn.mjs.map +1 -1
  24. package/dist/{idp-BlBPtXJ-.d.mts → idp-BmYwCXnJ.d.mts} +30 -3
  25. package/dist/{idp-BZPqpcYY.mjs → idp-ynUfzwpz.mjs} +9 -1
  26. package/dist/idp-ynUfzwpz.mjs.map +1 -0
  27. package/dist/{index-DvEUb3pX.d.mts → index-BAEaAqmz.d.mts} +112 -53
  28. package/dist/{index-CklcVeMG.d.mts → index-C-vsbx27.d.mts} +2 -2
  29. package/dist/{index-hXoO-AOC.d.mts → index-CKI0eZP6.d.mts} +2 -2
  30. package/dist/{index-DYhnxXYR.d.mts → index-CrqOgUF2.d.mts} +2 -2
  31. package/dist/{index-DlDRSzFZ.d.mts → index-DESLU9kI.d.mts} +2 -2
  32. package/dist/{index-DRhMpdnA.d.mts → index-dKNk8hjo.d.mts} +2 -2
  33. package/dist/job-BpsFXPbi.mjs.map +1 -1
  34. package/dist/{kysely-type-D1e0Vwkd.mjs → kysely-type-CSoZxVKN.mjs} +2 -2
  35. package/dist/{kysely-type-D1e0Vwkd.mjs.map → kysely-type-CSoZxVKN.mjs.map} +1 -1
  36. package/dist/{logger-DpJyJvNz.mjs → logger-DKF-JsAK.mjs} +3 -3
  37. package/dist/{logger-DpJyJvNz.mjs.map → logger-DKF-JsAK.mjs.map} +1 -1
  38. package/dist/{mock-DMgIygjE.mjs → mock-wf5qeZLi.mjs} +19 -9
  39. package/dist/mock-wf5qeZLi.mjs.map +1 -0
  40. package/dist/plugin/builtin/enum-constants/index.d.mts +1 -1
  41. package/dist/plugin/builtin/file-utils/index.d.mts +1 -1
  42. package/dist/plugin/builtin/kysely-type/index.d.mts +1 -1
  43. package/dist/plugin/builtin/kysely-type/index.mjs +1 -1
  44. package/dist/plugin/builtin/seed/index.d.mts +1 -1
  45. package/dist/plugin/index.d.mts +1 -1
  46. package/dist/plugin/index.mjs.map +1 -1
  47. package/dist/registry-D0uB0OrK.mjs.map +1 -1
  48. package/dist/{repl-editor-CJG3sz7A.mjs → repl-editor-DD5YP5mt.mjs} +4 -4
  49. package/dist/{repl-editor-CJG3sz7A.mjs.map → repl-editor-DD5YP5mt.mjs.map} +1 -1
  50. package/dist/runtime/globals.d.mts +3 -2
  51. package/dist/runtime/idp.d.mts +2 -2
  52. package/dist/runtime/idp.mjs +1 -1
  53. package/dist/runtime/index.d.mts +2 -2
  54. package/dist/runtime/index.mjs +1 -1
  55. package/dist/{runtime-DxaBq6U8.mjs → runtime-CSY0eD4_.mjs} +411 -221
  56. package/dist/runtime-CSY0eD4_.mjs.map +1 -0
  57. package/dist/{schema-1msIhXwA.mjs → schema-C4fkpWV_.mjs} +9 -15
  58. package/dist/schema-C4fkpWV_.mjs.map +1 -0
  59. package/dist/seed-YAbtMy65.mjs.map +1 -1
  60. package/dist/{service-wI3Hvrgx.mjs → service-B2Jd9CxS.mjs} +2 -2
  61. package/dist/service-B2Jd9CxS.mjs.map +1 -0
  62. package/dist/service-CRaa4Joe.mjs +4 -0
  63. package/dist/{service-DMohAx8a.mjs → service-DDWgZL_L2.mjs} +2 -2
  64. package/dist/service-DDWgZL_L2.mjs.map +1 -0
  65. package/dist/service_pb-DGSmn-aF.mjs +4 -0
  66. package/dist/{application-WpWwTyk9.mjs → service_pb-DSNjrcbW.mjs} +22 -6176
  67. package/dist/service_pb-DSNjrcbW.mjs.map +1 -0
  68. package/dist/telemetry-BQbbVo2t.mjs.map +1 -1
  69. package/dist/{types-2Be3wSMc.mjs → types-32lUMToj.mjs} +1 -1
  70. package/dist/{types-CmzfQP_m.mjs → types-D4QMmNWh.mjs} +1 -12
  71. package/dist/types-D4QMmNWh.mjs.map +1 -0
  72. package/dist/{types-Bzr0RQME.d.mts → types-Dynq4AJv.d.mts} +2 -2
  73. package/dist/{types-DZrtN6-H.d.mts → types-rj8YJcEe.d.mts} +5 -2
  74. package/dist/utils/test/index.d.mts +2 -2
  75. package/dist/utils/test/index.mjs.map +1 -1
  76. package/dist/vitest/environment.mjs +1 -1
  77. package/dist/vitest/environment.mjs.map +1 -1
  78. package/dist/vitest/index.mjs +4 -4
  79. package/dist/vitest/index.mjs.map +1 -1
  80. package/dist/vitest/setup.mjs +1 -1
  81. package/dist/{workflow.generated-1S50BhEb.d.mts → workflow.generated-DJULCuRr.d.mts} +274 -174
  82. package/docs/cli/application.md +39 -201
  83. package/docs/cli/auth.md +12 -256
  84. package/docs/cli/completion.md +0 -24
  85. package/docs/cli/crashreport.md +0 -58
  86. package/docs/cli/executor.md +2 -166
  87. package/docs/cli/function.md +2 -118
  88. package/docs/cli/organization.md +1 -211
  89. package/docs/cli/query.md +0 -20
  90. package/docs/cli/secret.md +70 -250
  91. package/docs/cli/setup.md +2 -41
  92. package/docs/cli/skills.md +0 -39
  93. package/docs/cli/staticwebsite.md +24 -172
  94. package/docs/cli/tailordb.md +25 -251
  95. package/docs/cli/upgrade.md +0 -20
  96. package/docs/cli/user.md +41 -246
  97. package/docs/cli/workflow.md +30 -189
  98. package/docs/cli/workspace.md +164 -537
  99. package/docs/cli-reference.md +61 -37
  100. package/docs/configuration.md +7 -1
  101. package/docs/github-actions.md +27 -0
  102. package/docs/multi-environment.md +22 -0
  103. package/docs/services/aigateway.md +4 -2
  104. package/docs/services/http-adapter.md +16 -1
  105. package/docs/services/idp.md +55 -2
  106. package/docs/services/staticwebsite.md +7 -1
  107. package/package.json +23 -18
  108. package/dist/application-Djeezk3m.mjs +0 -4
  109. package/dist/application-WpWwTyk9.mjs.map +0 -1
  110. package/dist/idp-BZPqpcYY.mjs.map +0 -1
  111. package/dist/mock-DMgIygjE.mjs.map +0 -1
  112. package/dist/runtime-DxaBq6U8.mjs.map +0 -1
  113. package/dist/schema-1msIhXwA.mjs.map +0 -1
  114. package/dist/service-BHQIerYh.mjs +0 -4
  115. package/dist/service-DMohAx8a.mjs.map +0 -1
  116. package/dist/service-wI3Hvrgx.mjs.map +0 -1
  117. package/dist/types-CmzfQP_m.mjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { c as TailorUser, i as InferredAttributeMap } from "./types-DTcZ2Yax.mjs";
2
- import { A as Validators, D as TailorField, E as FieldValidateInput, F as output, P as Prettify, S as EnumValue, T as FieldOutput, a as Hooks, b as ArrayFieldOutput, g as TailorDBType$1, h as TailorDBServiceInput, i as Hook, j as InferFieldsOutput, k as TailorToTs, l as RelationType, n as DefinedDBFieldMetadata, o as IndexDef, p as TailorDBField$1, r as ExcludeNestedDBFields, t as DBFieldMetadata, u as SerialConfig, v as TypeFeatures, w as FieldOptions } from "./types-DZrtN6-H.mjs";
3
- import { it as BuiltinIdP, o as PluginConfigs, z as AuthConfig } from "./types-Bzr0RQME.mjs";
2
+ import { A as Validators, E as FieldValidateInput, F as output, O as TailorFieldType, P as TypeLevelError, S as EnumValue, T as FieldOutput, a as Hooks, g as TailorDBType$1, h as TailorDBServiceInput, i as Hook, j as InferFieldsOutput, k as TailorToTs, l as RelationType, n as DefinedDBFieldMetadata, o as IndexDef, p as TailorDBField$1, r as ExcludeNestedDBFields, t as DBFieldMetadata, u as SerialConfig, v as TypeFeatures, w as FieldOptions } from "./types-rj8YJcEe.mjs";
3
+ import { it as BuiltinIdP, o as PluginConfigs, z as AuthConfig } from "./types-Dynq4AJv.mjs";
4
4
  import { StandardSchemaV1 } from "@standard-schema/spec";
5
5
 
6
6
  //#region src/configure/types/field.d.ts
@@ -126,8 +126,138 @@ declare const unsafeAllowAllTypePermission: TailorTypePermission;
126
126
  declare const unsafeAllowAllGqlPermission: TailorTypeGqlPermission;
127
127
  //#endregion
128
128
  //#region src/configure/services/tailordb/schema.d.ts
129
- type TailorAnyDBField = TailorDBField<any, any>;
129
+ type AnyBuilderMethod = any;
130
+ type TailorAnyDBField = Omit<TailorDBField$1<AnyBuilderMethod, AnyBuilderMethod>, "fields"> & {
131
+ readonly fields: Record<string, AnyBuilderMethod>;
132
+ _metadata: DBFieldMetadata;
133
+ parse: AnyBuilderMethod;
134
+ _parseInternal: AnyBuilderMethod;
135
+ readonly typeName: TypeLevelError<string>;
136
+ description: AnyBuilderMethod;
137
+ relation: AnyBuilderMethod;
138
+ index: AnyBuilderMethod;
139
+ unique: AnyBuilderMethod;
140
+ vector: AnyBuilderMethod;
141
+ hooks: AnyBuilderMethod;
142
+ validate: AnyBuilderMethod;
143
+ serial: AnyBuilderMethod;
144
+ clone: AnyBuilderMethod;
145
+ };
130
146
  type TailorAnyDBType = TailorDBType<any, any>;
147
+ type IsAny<T> = 0 extends 1 & T ? true : false;
148
+ type DBFieldTypeNameMethod<Defined extends DefinedDBFieldMetadata> = IsAny<Defined> extends true ? TypeLevelError<string> : TypeLevelError<"typeName cannot be used on TailorDB fields">;
149
+ type WithDBFieldDescription<Defined> = Defined & {
150
+ description: true;
151
+ };
152
+ type WithDBFieldRelation<Defined, S extends RelationType | RelationSelfConfig> = S extends "oneToOne" | "1-1" ? Defined & {
153
+ unique: true;
154
+ index: true;
155
+ relation: true;
156
+ } : S extends {
157
+ type: "oneToOne" | "1-1";
158
+ } ? Defined & {
159
+ unique: true;
160
+ index: true;
161
+ relation: true;
162
+ } : Defined & {
163
+ index: true;
164
+ relation: true;
165
+ };
166
+ type WithDBFieldIndex<Defined> = Defined & {
167
+ index: true;
168
+ };
169
+ type WithDBFieldUnique<Defined> = Defined & {
170
+ unique: true;
171
+ index: true;
172
+ };
173
+ type WithDBFieldVector<Defined> = Defined & {
174
+ vector: true;
175
+ };
176
+ type WithDBFieldHooks<Defined, H> = Defined & {
177
+ hooks: {
178
+ create: H extends {
179
+ create: unknown;
180
+ } ? true : false;
181
+ update: H extends {
182
+ update: unknown;
183
+ } ? true : false;
184
+ };
185
+ serial: false;
186
+ };
187
+ type WithDBFieldValidate<Defined> = Defined & {
188
+ validate: true;
189
+ };
190
+ type WithDBFieldSerial<Defined> = Defined & {
191
+ serial: true;
192
+ hooks: {
193
+ create: false;
194
+ update: false;
195
+ };
196
+ };
197
+ type WithDBFieldCloneOptions<Defined extends DefinedDBFieldMetadata, NewOpt extends FieldOptions> = Omit<Defined, "array"> & {
198
+ array: NewOpt extends {
199
+ array: true;
200
+ } ? true : Defined["array"];
201
+ };
202
+ type FileKeyConflictError<Fields extends Record<string, TailorAnyDBField>, User extends object> = Partial<Record<keyof output<TailorDBType<Fields, User>> & string, TypeLevelError<"file keys cannot use existing field names">>>;
203
+ type DBFieldDescriptionFn<Defined extends DefinedDBFieldMetadata, Output> = (description: string) => TailorDBField<WithDBFieldDescription<Defined>, Output>;
204
+ type DBFieldRelationFn<Defined extends DefinedDBFieldMetadata, Output> = {
205
+ <S extends RelationType, T extends TailorAnyDBType>(config: RelationConfig<S, T>): TailorDBField<WithDBFieldRelation<Defined, S>, Output>;
206
+ <S extends RelationSelfConfig>(config: S): TailorDBField<WithDBFieldRelation<Defined, S>, Output>;
207
+ };
208
+ type DBFieldIndexFn<Defined extends DefinedDBFieldMetadata, Output> = () => TailorDBField<WithDBFieldIndex<Defined>, Output>;
209
+ type DBFieldUniqueFn<Defined extends DefinedDBFieldMetadata, Output> = () => TailorDBField<WithDBFieldUnique<Defined>, Output>;
210
+ type DBFieldVectorFn<Defined extends DefinedDBFieldMetadata, Output> = () => TailorDBField<WithDBFieldVector<Defined>, Output>;
211
+ type DBFieldHooksFn<Defined extends DefinedDBFieldMetadata, Output> = <const H extends Hook<unknown, Output>>(hooks: H) => TailorDBField<WithDBFieldHooks<Defined, H>, Output>;
212
+ type DBFieldValidateFn<Defined extends DefinedDBFieldMetadata, Output> = (...validate: FieldValidateInput<Output>[]) => TailorDBField<WithDBFieldValidate<Defined>, Output>;
213
+ type DBFieldSerialFn<Defined extends DefinedDBFieldMetadata, Output> = (config: SerialConfig<Defined["type"] & ("integer" | "string")>) => TailorDBField<WithDBFieldSerial<Defined>, Output>;
214
+ type DBFieldDescriptionMethod<Defined extends DefinedDBFieldMetadata, Output> = IsAny<Defined> extends true ? DBFieldDescriptionFn<Defined, Output> : Defined extends {
215
+ description: unknown;
216
+ } ? TypeLevelError<".description() has already been set"> : DBFieldDescriptionFn<Defined, Output>;
217
+ type DBFieldRelationMethod<Defined extends DefinedDBFieldMetadata, Output> = IsAny<Defined> extends true ? DBFieldRelationFn<Defined, Output> : Defined extends {
218
+ relation: unknown;
219
+ } ? TypeLevelError<".relation() has already been set"> : DBFieldRelationFn<Defined, Output>;
220
+ type DBFieldIndexMethod<Defined extends DefinedDBFieldMetadata, Output> = IsAny<Defined> extends true ? DBFieldIndexFn<Defined, Output> : Defined extends {
221
+ index: unknown;
222
+ } ? TypeLevelError<".index() has already been set"> : Defined extends {
223
+ array: true;
224
+ } ? TypeLevelError<"index cannot be set on array fields"> : DBFieldIndexFn<Defined, Output>;
225
+ type DBFieldUniqueMethod<Defined extends DefinedDBFieldMetadata, Output> = IsAny<Defined> extends true ? DBFieldUniqueFn<Defined, Output> : Defined extends {
226
+ unique: unknown;
227
+ } ? TypeLevelError<".unique() has already been set"> : Defined extends {
228
+ array: true;
229
+ } ? TypeLevelError<"unique cannot be set on array fields"> : DBFieldUniqueFn<Defined, Output>;
230
+ type DBFieldVectorMethod<Defined extends DefinedDBFieldMetadata, Output> = IsAny<Defined> extends true ? DBFieldVectorFn<Defined, Output> : Defined extends {
231
+ vector: unknown;
232
+ } ? TypeLevelError<".vector() has already been set"> : Defined extends {
233
+ type: "string";
234
+ array: false;
235
+ } ? DBFieldVectorFn<Defined, Output> : TypeLevelError<"vector can only be set on non-array string fields">;
236
+ type DBFieldHooksMethod<Defined extends DefinedDBFieldMetadata, Output> = IsAny<Defined> extends true ? DBFieldHooksFn<Defined, Output> : Defined extends {
237
+ serial: true;
238
+ hooks: {
239
+ create: false;
240
+ update: false;
241
+ };
242
+ } ? TypeLevelError<"hooks cannot be set after serial"> : Defined extends {
243
+ hooks: unknown;
244
+ } ? TypeLevelError<".hooks() has already been set"> : Defined extends {
245
+ type: "nested";
246
+ } ? TypeLevelError<"hooks cannot be set on nested type fields"> : DBFieldHooksFn<Defined, Output>;
247
+ type DBFieldValidateMethod<Defined extends DefinedDBFieldMetadata, Output> = IsAny<Defined> extends true ? DBFieldValidateFn<Defined, Output> : Defined extends {
248
+ validate: unknown;
249
+ } ? TypeLevelError<".validate() has already been set"> : DBFieldValidateFn<Defined, Output>;
250
+ type DBFieldSerialMethod<Defined extends DefinedDBFieldMetadata, Output> = IsAny<Defined> extends true ? DBFieldSerialFn<Defined, Output> : Defined extends {
251
+ serial: true;
252
+ } ? TypeLevelError<".serial() has already been set"> : Defined extends {
253
+ serial: false;
254
+ } ? TypeLevelError<"serial cannot be set after hooks"> : IsAny<Output> extends true ? Defined extends {
255
+ type: "integer" | "string";
256
+ array: false;
257
+ } ? DBFieldSerialFn<Defined, Output> : TypeLevelError<"serial can only be set on non-array integer or string fields"> : null extends Output ? TypeLevelError<"serial can only be set on non-array integer or string fields"> : Defined extends {
258
+ type: "integer" | "string";
259
+ array: false;
260
+ } ? DBFieldSerialFn<Defined, Output> : TypeLevelError<"serial can only be set on non-array integer or string fields">;
131
261
  /**
132
262
  * Full TailorDBField interface with builder methods.
133
263
  * Extends the minimal structural interface from types/ with fluent API methods.
@@ -148,122 +278,43 @@ interface TailorDBField<Defined extends DefinedDBFieldMetadata = DefinedDBFieldM
148
278
  * typeName is not available on TailorDB fields.
149
279
  * Use typeName on pipeline fields (t.enum / t.object) instead.
150
280
  */
151
- typeName(this: never, typeName: string): never;
281
+ typeName: DBFieldTypeNameMethod<Defined>;
152
282
  /**
153
283
  * Set a description for the field
154
284
  */
155
- description<CurrentDefined extends Defined>(this: CurrentDefined extends {
156
- description: unknown;
157
- } ? never : TailorField<CurrentDefined, Output>, description: string): TailorDBField<Prettify<CurrentDefined & {
158
- description: true;
159
- }>, Output>;
285
+ description: DBFieldDescriptionMethod<Defined, Output>;
160
286
  /**
161
287
  * Define a relation to another type.
162
288
  */
163
- relation<S extends RelationType, T extends TailorAnyDBType, CurrentDefined extends Defined>(this: CurrentDefined extends {
164
- relation: unknown;
165
- } ? never : TailorDBField<CurrentDefined, Output>, config: RelationConfig<S, T>): TailorDBField<S extends "oneToOne" | "1-1" ? Prettify<CurrentDefined & {
166
- unique: true;
167
- index: true;
168
- relation: true;
169
- }> : Prettify<CurrentDefined & {
170
- index: true;
171
- relation: true;
172
- }>, Output>;
173
- /**
174
- * Define a self-referencing relation
175
- */
176
- relation<S extends RelationSelfConfig, CurrentDefined extends Defined>(this: CurrentDefined extends {
177
- relation: unknown;
178
- } ? never : TailorDBField<CurrentDefined, Output>, config: S): TailorDBField<S["type"] extends "oneToOne" | "1-1" ? Prettify<CurrentDefined & {
179
- unique: true;
180
- index: true;
181
- relation: true;
182
- }> : Prettify<CurrentDefined & {
183
- index: true;
184
- relation: true;
185
- }>, Output>;
289
+ relation: DBFieldRelationMethod<Defined, Output>;
186
290
  /**
187
291
  * Add an index to the field
188
292
  */
189
- index<CurrentDefined extends Defined>(this: CurrentDefined extends {
190
- index: unknown;
191
- } ? never : CurrentDefined extends {
192
- array: true;
193
- } ? never : TailorDBField<CurrentDefined, Output>): TailorDBField<Prettify<CurrentDefined & {
194
- index: true;
195
- }>, Output>;
293
+ index: DBFieldIndexMethod<Defined, Output>;
196
294
  /**
197
295
  * Make the field unique (also adds an index)
198
296
  */
199
- unique<CurrentDefined extends Defined>(this: CurrentDefined extends {
200
- unique: unknown;
201
- } ? never : CurrentDefined extends {
202
- array: true;
203
- } ? never : TailorDBField<CurrentDefined, Output>): TailorDBField<Prettify<CurrentDefined & {
204
- unique: true;
205
- index: true;
206
- }>, Output>;
297
+ unique: DBFieldUniqueMethod<Defined, Output>;
207
298
  /**
208
299
  * Enable vector search on the field (string type only)
209
300
  */
210
- vector<CurrentDefined extends Defined>(this: CurrentDefined extends {
211
- vector: unknown;
212
- } ? never : CurrentDefined extends {
213
- type: "string";
214
- array: false;
215
- } ? TailorDBField<CurrentDefined, Output> : never): TailorDBField<Prettify<CurrentDefined & {
216
- vector: true;
217
- }>, Output>;
301
+ vector: DBFieldVectorMethod<Defined, Output>;
218
302
  /**
219
303
  * Add hooks for create/update operations on this field.
220
304
  */
221
- hooks<CurrentDefined extends Defined, const H extends Hook<unknown, Output>>(this: CurrentDefined extends {
222
- hooks: unknown;
223
- } ? never : CurrentDefined extends {
224
- type: "nested";
225
- } ? never : TailorDBField<CurrentDefined, Output>, hooks: H): TailorDBField<Prettify<CurrentDefined & {
226
- hooks?: {
227
- create: H extends {
228
- create: unknown;
229
- } ? true : false;
230
- update: H extends {
231
- update: unknown;
232
- } ? true : false;
233
- };
234
- serial: false;
235
- }>, Output>;
305
+ hooks: DBFieldHooksMethod<Defined, Output>;
236
306
  /**
237
307
  * Add validation functions to the field.
238
308
  */
239
- validate<CurrentDefined extends Defined>(this: CurrentDefined extends {
240
- validate: unknown;
241
- } ? never : TailorDBField<CurrentDefined, Output>, ...validate: FieldValidateInput<Output>[]): TailorDBField<Prettify<CurrentDefined & {
242
- validate: true;
243
- }>, Output>;
309
+ validate: DBFieldValidateMethod<Defined, Output>;
244
310
  /**
245
311
  * Configure serial/auto-increment behavior
246
312
  */
247
- serial<CurrentDefined extends Defined>(this: CurrentDefined extends {
248
- serial: unknown;
249
- } ? never : Output extends null ? never : CurrentDefined extends {
250
- type: "integer" | "string";
251
- array: false;
252
- } ? TailorDBField<CurrentDefined, Output> : never, config: SerialConfig<CurrentDefined["type"] & ("integer" | "string")>): TailorDBField<Prettify<CurrentDefined & {
253
- serial: true;
254
- hooks: {
255
- create: false;
256
- update: false;
257
- };
258
- }>, Output>;
313
+ serial: DBFieldSerialMethod<Defined, Output>;
259
314
  /**
260
315
  * Clone the field with optional overrides for field options
261
316
  */
262
- clone<const NewOpt extends FieldOptions>(options?: NewOpt): TailorDBField<Prettify<Omit<Defined, "array"> & {
263
- array: NewOpt extends {
264
- array: true;
265
- } ? true : Defined["array"];
266
- }>, FieldOutput<TailorToTs[Defined["type"]], NewOpt>>;
317
+ clone<const NewOpt extends FieldOptions>(options?: NewOpt): TailorDBField<WithDBFieldCloneOptions<Defined, NewOpt>, FieldOutput<TailorToTs[Defined["type"]], NewOpt>>;
267
318
  }
268
319
  /**
269
320
  * Full TailorDBType interface with builder methods.
@@ -275,7 +326,7 @@ interface TailorDBType<Fields extends Record<string, TailorAnyDBField> = any, Us
275
326
  validate(validators: Validators<Fields>): TailorDBType<Fields, User>;
276
327
  features(features: Omit<TypeFeatures, "pluralForm">): TailorDBType<Fields, User>;
277
328
  indexes(...indexes: IndexDef<TailorDBType<Fields, User>>[]): TailorDBType<Fields, User>;
278
- files<const F extends string>(files: Record<F, string> & Partial<Record<keyof output<TailorDBType<Fields, User>>, never>>): TailorDBType<Fields, User>;
329
+ files<const F extends string>(files: Record<F, string> & FileKeyConflictError<Fields, User>): TailorDBType<Fields, User>;
279
330
  permission<U extends object = User, P extends TailorTypePermission<U, output<TailorDBType<Fields, User>>> = TailorTypePermission<U, output<TailorDBType<Fields, User>>>>(permission: P): TailorDBType<Fields, U>;
280
331
  gqlPermission<U extends object = User, P extends TailorTypeGqlPermission<U> = TailorTypeGqlPermission<U>>(permission: P): TailorDBType<Fields, U>;
281
332
  description(description: string): TailorDBType<Fields, User>;
@@ -318,6 +369,14 @@ type FieldParseInternalArgs = {
318
369
  user: TailorUser;
319
370
  pathArray: string[];
320
371
  };
372
+ type DBFieldDefined<T extends TailorFieldType, Opt extends FieldOptions> = {
373
+ type: T;
374
+ array: Opt extends {
375
+ array: true;
376
+ } ? true : false;
377
+ };
378
+ type DBFieldOutput<T extends TailorFieldType, Opt extends FieldOptions, OutputBase = TailorToTs[T]> = FieldOutput<OutputBase, Opt>;
379
+ type TailorDBFieldInstance<T extends TailorFieldType, Opt extends FieldOptions, OutputBase = TailorToTs[T]> = TailorDBField<DBFieldDefined<T, Opt>, DBFieldOutput<T, Opt, OutputBase>>;
321
380
  /**
322
381
  * Create a UUID field.
323
382
  * @param options - Field configuration options
@@ -325,12 +384,7 @@ type FieldParseInternalArgs = {
325
384
  * @example db.uuid()
326
385
  * @example db.uuid({ optional: true })
327
386
  */
328
- declare function uuid<const Opt extends FieldOptions>(options?: Opt): TailorDBField<{
329
- type: "uuid";
330
- array: Opt extends {
331
- array: true;
332
- } ? true : false;
333
- }, Opt["optional"] extends true ? ArrayFieldOutput<string, Opt> | null : ArrayFieldOutput<string, Opt>>;
387
+ declare function uuid<const Opt extends FieldOptions>(options?: Opt): TailorDBFieldInstance<"uuid", Opt, string>;
334
388
  /**
335
389
  * Create a string field.
336
390
  * @param options - Field configuration options
@@ -338,12 +392,7 @@ declare function uuid<const Opt extends FieldOptions>(options?: Opt): TailorDBFi
338
392
  * @example db.string()
339
393
  * @example db.string({ optional: true })
340
394
  */
341
- declare function string<const Opt extends FieldOptions>(options?: Opt): TailorDBField<{
342
- type: "string";
343
- array: Opt extends {
344
- array: true;
345
- } ? true : false;
346
- }, Opt["optional"] extends true ? ArrayFieldOutput<string, Opt> | null : ArrayFieldOutput<string, Opt>>;
395
+ declare function string<const Opt extends FieldOptions>(options?: Opt): TailorDBFieldInstance<"string", Opt, string>;
347
396
  /**
348
397
  * Create a boolean field.
349
398
  * Note: The method name is `bool` but creates a `boolean` type field.
@@ -352,12 +401,7 @@ declare function string<const Opt extends FieldOptions>(options?: Opt): TailorDB
352
401
  * @example db.bool()
353
402
  * @example db.bool({ optional: true })
354
403
  */
355
- declare function bool<const Opt extends FieldOptions>(options?: Opt): TailorDBField<{
356
- type: "boolean";
357
- array: Opt extends {
358
- array: true;
359
- } ? true : false;
360
- }, Opt["optional"] extends true ? ArrayFieldOutput<boolean, Opt> | null : ArrayFieldOutput<boolean, Opt>>;
404
+ declare function bool<const Opt extends FieldOptions>(options?: Opt): TailorDBFieldInstance<"boolean", Opt, boolean>;
361
405
  /**
362
406
  * Create an integer field.
363
407
  * @param options - Field configuration options
@@ -365,12 +409,7 @@ declare function bool<const Opt extends FieldOptions>(options?: Opt): TailorDBFi
365
409
  * @example db.int()
366
410
  * @example db.int({ optional: true })
367
411
  */
368
- declare function int<const Opt extends FieldOptions>(options?: Opt): TailorDBField<{
369
- type: "integer";
370
- array: Opt extends {
371
- array: true;
372
- } ? true : false;
373
- }, Opt["optional"] extends true ? ArrayFieldOutput<number, Opt> | null : ArrayFieldOutput<number, Opt>>;
412
+ declare function int<const Opt extends FieldOptions>(options?: Opt): TailorDBFieldInstance<"integer", Opt, number>;
374
413
  /**
375
414
  * Create a float (decimal number) field.
376
415
  * @param options - Field configuration options
@@ -378,12 +417,7 @@ declare function int<const Opt extends FieldOptions>(options?: Opt): TailorDBFie
378
417
  * @example db.float()
379
418
  * @example db.float({ optional: true })
380
419
  */
381
- declare function float<const Opt extends FieldOptions>(options?: Opt): TailorDBField<{
382
- type: "float";
383
- array: Opt extends {
384
- array: true;
385
- } ? true : false;
386
- }, Opt["optional"] extends true ? ArrayFieldOutput<number, Opt> | null : ArrayFieldOutput<number, Opt>>;
420
+ declare function float<const Opt extends FieldOptions>(options?: Opt): TailorDBFieldInstance<"float", Opt, number>;
387
421
  interface DecimalFieldOptions extends FieldOptions {
388
422
  scale?: number;
389
423
  }
@@ -395,12 +429,7 @@ interface DecimalFieldOptions extends FieldOptions {
395
429
  * @example db.decimal({ scale: 2 })
396
430
  * @example db.decimal({ scale: 2, optional: true })
397
431
  */
398
- declare function decimal<const Opt extends DecimalFieldOptions>(options?: Opt): TailorDBField<{
399
- type: "decimal";
400
- array: Opt extends {
401
- array: true;
402
- } ? true : false;
403
- }, Opt["optional"] extends true ? ArrayFieldOutput<string, Opt> | null : ArrayFieldOutput<string, Opt>>;
432
+ declare function decimal<const Opt extends DecimalFieldOptions>(options?: Opt): TailorDBFieldInstance<"decimal", Opt, string>;
404
433
  /**
405
434
  * Create a date field (date only, no time component).
406
435
  * Format: "yyyy-MM-dd"
@@ -408,12 +437,7 @@ declare function decimal<const Opt extends DecimalFieldOptions>(options?: Opt):
408
437
  * @returns A date field
409
438
  * @example db.date()
410
439
  */
411
- declare function date<const Opt extends FieldOptions>(options?: Opt): TailorDBField<{
412
- type: "date";
413
- array: Opt extends {
414
- array: true;
415
- } ? true : false;
416
- }, Opt["optional"] extends true ? ArrayFieldOutput<string, Opt> | null : ArrayFieldOutput<string, Opt>>;
440
+ declare function date<const Opt extends FieldOptions>(options?: Opt): TailorDBFieldInstance<"date", Opt, string>;
417
441
  /**
418
442
  * Create a datetime field (date and time).
419
443
  * Format: ISO 8601 "yyyy-MM-ddTHH:mm:ssZ"
@@ -421,12 +445,7 @@ declare function date<const Opt extends FieldOptions>(options?: Opt): TailorDBFi
421
445
  * @returns A datetime field
422
446
  * @example db.datetime()
423
447
  */
424
- declare function datetime<const Opt extends FieldOptions>(options?: Opt): TailorDBField<{
425
- type: "datetime";
426
- array: Opt extends {
427
- array: true;
428
- } ? true : false;
429
- }, Opt["optional"] extends true ? ArrayFieldOutput<string | Date, Opt> | null : ArrayFieldOutput<string | Date, Opt>>;
448
+ declare function datetime<const Opt extends FieldOptions>(options?: Opt): TailorDBFieldInstance<"datetime", Opt, string | Date>;
430
449
  /**
431
450
  * Create a time field (time only, no date component).
432
451
  * Format: "HH:mm"
@@ -434,12 +453,7 @@ declare function datetime<const Opt extends FieldOptions>(options?: Opt): Tailor
434
453
  * @returns A time field
435
454
  * @example db.time()
436
455
  */
437
- declare function time<const Opt extends FieldOptions>(options?: Opt): TailorDBField<{
438
- type: "time";
439
- array: Opt extends {
440
- array: true;
441
- } ? true : false;
442
- }, Opt["optional"] extends true ? ArrayFieldOutput<string, Opt> | null : ArrayFieldOutput<string, Opt>>;
456
+ declare function time<const Opt extends FieldOptions>(options?: Opt): TailorDBFieldInstance<"time", Opt, string>;
443
457
  /**
444
458
  * Create an enum field with a fixed set of allowed string values.
445
459
  * @param values - Array of allowed string values, or array of `{ value, description }` objects
@@ -468,10 +482,7 @@ declare function object<const F extends Record<string, TailorAnyDBField> & Exclu
468
482
  array: true;
469
483
  } ? true : false;
470
484
  }, FieldOutput<InferFieldsOutput<F>, Opt>>;
471
- declare const idField: TailorDBField<{
472
- type: "uuid";
473
- array: false;
474
- }, string>;
485
+ declare const idField: TailorDBFieldInstance<"uuid", FieldOptions, string>;
475
486
  type idField = typeof idField;
476
487
  type DBType<F extends {
477
488
  id?: never;
@@ -537,26 +548,20 @@ declare const db: {
537
548
  * });
538
549
  */
539
550
  timestamps: () => {
540
- createdAt: TailorDBField<{
541
- type: "datetime";
542
- array: false;
543
- hooks?: {
544
- create: true;
545
- update: false;
546
- } | undefined;
547
- serial: false;
548
- description: true;
549
- }, string | Date>;
550
- updatedAt: TailorDBField<{
551
- type: "datetime";
552
- array: false;
553
- hooks?: {
554
- create: false;
555
- update: true;
556
- } | undefined;
557
- serial: false;
558
- description: true;
559
- }, string | Date | null>;
551
+ createdAt: TailorDBField<WithDBFieldDescription<WithDBFieldHooks<DBFieldDefined<"datetime", FieldOptions>, {
552
+ readonly create: ({
553
+ value
554
+ }: {
555
+ value: string | Date | null;
556
+ data: unknown;
557
+ user: TailorUser;
558
+ }) => string | Date;
559
+ }>>, string | Date>;
560
+ updatedAt: TailorDBField<WithDBFieldDescription<WithDBFieldHooks<DBFieldDefined<"datetime", {
561
+ readonly optional: true;
562
+ }>, {
563
+ readonly update: () => Date;
564
+ }>>, string | Date | null>;
560
565
  };
561
566
  };
562
567
  };
@@ -588,6 +593,8 @@ type IdPGqlOperationsInput = "query" | {
588
593
  delete?: boolean | undefined;
589
594
  read?: boolean | undefined;
590
595
  sendPasswordResetEmail?: boolean | undefined;
596
+ requestMfaSettingsUrl?: boolean | undefined;
597
+ unenrollMfa?: boolean | undefined;
591
598
  };
592
599
  type IdPGqlOperations = {
593
600
  create?: boolean | undefined;
@@ -595,6 +602,8 @@ type IdPGqlOperations = {
595
602
  delete?: boolean | undefined;
596
603
  read?: boolean | undefined;
597
604
  sendPasswordResetEmail?: boolean | undefined;
605
+ requestMfaSettingsUrl?: boolean | undefined;
606
+ unenrollMfa?: boolean | undefined;
598
607
  };
599
608
  /**
600
609
  * Namespace-level email configuration defaults
@@ -623,6 +632,10 @@ type IdPInput = {
623
632
  allowGoogleOauth?: boolean | undefined;
624
633
  allowMicrosoftOauth?: boolean | undefined;
625
634
  disablePasswordAuth?: boolean | undefined;
635
+ enableMfa?: boolean | undefined;
636
+ requireMfa?: boolean | undefined;
637
+ allowedReturnOrigins?: string[] | undefined;
638
+ mfaIssuer?: string | undefined;
626
639
  } | undefined; /** Enable publishing user lifecycle events */
627
640
  publishUserEvents?: boolean | undefined; /** Configure which GraphQL operations are enabled */
628
641
  gqlOperations?: "query" | {
@@ -631,6 +644,8 @@ type IdPInput = {
631
644
  delete?: boolean | undefined;
632
645
  read?: boolean | undefined;
633
646
  sendPasswordResetEmail?: boolean | undefined;
647
+ requestMfaSettingsUrl?: boolean | undefined;
648
+ unenrollMfa?: boolean | undefined;
634
649
  } | undefined; /** Namespace-level email configuration defaults */
635
650
  emailConfig?: {
636
651
  fromName?: string | undefined;
@@ -977,7 +992,7 @@ type IdPInput = {
977
992
  description?: string | undefined;
978
993
  permit?: boolean | undefined;
979
994
  })[];
980
- sendPasswordResetEmail: readonly (readonly [(string | boolean | readonly string[] | readonly boolean[] | {
995
+ sendPasswordResetEmail?: readonly (readonly [(string | boolean | readonly string[] | readonly boolean[] | {
981
996
  user: string;
982
997
  } | {
983
998
  idpUser: "name" | "id" | "disabled";
@@ -1061,7 +1076,92 @@ type IdPInput = {
1061
1076
  })])[];
1062
1077
  description?: string | undefined;
1063
1078
  permit?: boolean | undefined;
1064
- })[];
1079
+ })[] | undefined;
1080
+ unenrollMfa?: readonly (readonly [(string | boolean | readonly string[] | readonly boolean[] | {
1081
+ user: string;
1082
+ } | {
1083
+ idpUser: "name" | "id" | "disabled";
1084
+ } | {
1085
+ oldIdpUser: "name" | "id" | "disabled";
1086
+ } | {
1087
+ newIdpUser: "name" | "id" | "disabled";
1088
+ }), "in" | "=" | "!=" | "not in", (string | boolean | readonly string[] | readonly boolean[] | {
1089
+ user: string;
1090
+ } | {
1091
+ idpUser: "name" | "id" | "disabled";
1092
+ } | {
1093
+ oldIdpUser: "name" | "id" | "disabled";
1094
+ } | {
1095
+ newIdpUser: "name" | "id" | "disabled";
1096
+ })] | readonly [(string | boolean | readonly string[] | readonly boolean[] | {
1097
+ user: string;
1098
+ } | {
1099
+ idpUser: "name" | "id" | "disabled";
1100
+ } | {
1101
+ oldIdpUser: "name" | "id" | "disabled";
1102
+ } | {
1103
+ newIdpUser: "name" | "id" | "disabled";
1104
+ }), "in" | "=" | "!=" | "not in", (string | boolean | readonly string[] | readonly boolean[] | {
1105
+ user: string;
1106
+ } | {
1107
+ idpUser: "name" | "id" | "disabled";
1108
+ } | {
1109
+ oldIdpUser: "name" | "id" | "disabled";
1110
+ } | {
1111
+ newIdpUser: "name" | "id" | "disabled";
1112
+ }), boolean] | readonly (boolean | readonly [(string | boolean | readonly string[] | readonly boolean[] | {
1113
+ user: string;
1114
+ } | {
1115
+ idpUser: "name" | "id" | "disabled";
1116
+ } | {
1117
+ oldIdpUser: "name" | "id" | "disabled";
1118
+ } | {
1119
+ newIdpUser: "name" | "id" | "disabled";
1120
+ }), "in" | "=" | "!=" | "not in", (string | boolean | readonly string[] | readonly boolean[] | {
1121
+ user: string;
1122
+ } | {
1123
+ idpUser: "name" | "id" | "disabled";
1124
+ } | {
1125
+ oldIdpUser: "name" | "id" | "disabled";
1126
+ } | {
1127
+ newIdpUser: "name" | "id" | "disabled";
1128
+ })])[] | {
1129
+ conditions: readonly [(string | boolean | readonly string[] | readonly boolean[] | {
1130
+ user: string;
1131
+ } | {
1132
+ idpUser: "name" | "id" | "disabled";
1133
+ } | {
1134
+ oldIdpUser: "name" | "id" | "disabled";
1135
+ } | {
1136
+ newIdpUser: "name" | "id" | "disabled";
1137
+ }), "in" | "=" | "!=" | "not in", (string | boolean | readonly string[] | readonly boolean[] | {
1138
+ user: string;
1139
+ } | {
1140
+ idpUser: "name" | "id" | "disabled";
1141
+ } | {
1142
+ oldIdpUser: "name" | "id" | "disabled";
1143
+ } | {
1144
+ newIdpUser: "name" | "id" | "disabled";
1145
+ })] | readonly (readonly [(string | boolean | readonly string[] | readonly boolean[] | {
1146
+ user: string;
1147
+ } | {
1148
+ idpUser: "name" | "id" | "disabled";
1149
+ } | {
1150
+ oldIdpUser: "name" | "id" | "disabled";
1151
+ } | {
1152
+ newIdpUser: "name" | "id" | "disabled";
1153
+ }), "in" | "=" | "!=" | "not in", (string | boolean | readonly string[] | readonly boolean[] | {
1154
+ user: string;
1155
+ } | {
1156
+ idpUser: "name" | "id" | "disabled";
1157
+ } | {
1158
+ oldIdpUser: "name" | "id" | "disabled";
1159
+ } | {
1160
+ newIdpUser: "name" | "id" | "disabled";
1161
+ })])[];
1162
+ description?: string | undefined;
1163
+ permit?: boolean | undefined;
1164
+ })[] | undefined;
1065
1165
  } | undefined;
1066
1166
  };
1067
1167
  //#endregion
@@ -1244,4 +1344,4 @@ type ConcurrencyPolicy = {
1244
1344
  };
1245
1345
  //#endregion
1246
1346
  export { TailorDBInstance as A, IdPInput as C, TailorAnyDBField as D, AIGatewayInput as E, TailorTypePermission as F, unsafeAllowAllGqlPermission as I, unsafeAllowAllTypePermission as L, db as M, PermissionCondition as N, TailorAnyDBType as O, TailorTypeGqlPermission as P, AllowedValues as R, IdPGqlOperationsInput as S, AIGatewayDefinitionBrand as T, IdPConfig as _, ExecutorServiceConfig as a, IdPEmailConfig as b, ResolverServiceConfig as c, WorkflowServiceInput as d, StaticWebsiteConfig as f, SecretsDefinitionBrand as g, SecretsConfig as h, AppConfig as i, TailorDBType as j, TailorDBField as k, ResolverServiceInput as l, StaticWebsiteInput as m, RetryPolicy as n, ExecutorServiceInput as o, StaticWebsiteDefinitionBrand as p, HttpAdapterConfigInput as r, ResolverExternalConfig as s, ConcurrencyPolicy as t, WorkflowServiceConfig as u, IdPExternalConfig as v, AIGatewayConfig as w, IdPGqlOperations as x, IdpDefinitionBrand as y, AllowedValuesOutput as z };
1247
- //# sourceMappingURL=workflow.generated-1S50BhEb.d.mts.map
1347
+ //# sourceMappingURL=workflow.generated-DJULCuRr.d.mts.map