@tailor-platform/sdk 1.2.1 → 1.2.3
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/CHANGELOG.md +24 -0
- package/dist/cli/index.mjs +54 -2
- package/dist/cli/index.mjs.map +1 -1
- package/dist/cli/lib.d.mts +109 -2
- package/dist/cli/lib.mjs +2 -2
- package/dist/{config-Bc_PBkyF.mjs → config-CJPKA-ui.mjs} +55 -53
- package/dist/config-CJPKA-ui.mjs.map +1 -0
- package/dist/configure/index.d.mts +2 -2
- package/dist/configure/index.mjs +69 -1
- package/dist/configure/index.mjs.map +1 -1
- package/dist/{index-C4nvv_Ew.d.mts → index-DXZMT4aO.d.mts} +65 -10
- package/dist/{list-9sLkfPfn.mjs → list-nW4EfF7C.mjs} +1348 -166
- package/dist/list-nW4EfF7C.mjs.map +1 -0
- package/dist/{types-Du-lo0MV.d.mts → types-Dg_zk_OZ.d.mts} +110 -47
- package/dist/user-defined.d.ts +1 -0
- package/dist/utils/test/index.d.mts +7 -9
- package/dist/utils/test/index.mjs +5 -7
- package/dist/utils/test/index.mjs.map +1 -1
- package/package.json +9 -6
- package/postinstall.mjs +1 -0
- package/dist/config-Bc_PBkyF.mjs.map +0 -1
- package/dist/list-9sLkfPfn.mjs.map +0 -1
package/dist/cli/lib.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference path="./../user-defined.d.ts" />
|
|
2
|
-
import { N as ParsedTailorDBType, Y as OAuth2ClientInput,
|
|
2
|
+
import { N as ParsedTailorDBType, Y as OAuth2ClientInput, _t as Resolver, d as AppConfig, m as Generator, q as IdProviderConfig, t as Executor } from "../types-Dg_zk_OZ.mjs";
|
|
3
3
|
import "citty";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
import { OAuth2Client } from "@badgateway/oauth2-client";
|
|
@@ -18,6 +18,11 @@ interface ApplyOptions {
|
|
|
18
18
|
yes?: boolean;
|
|
19
19
|
buildOnly?: boolean;
|
|
20
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Apply the configured application to the Tailor platform.
|
|
23
|
+
* @param {ApplyOptions} [options] - Options for apply execution
|
|
24
|
+
* @returns {Promise<void>} Promise that resolves when apply completes
|
|
25
|
+
*/
|
|
21
26
|
declare function apply(options?: ApplyOptions): Promise<void>;
|
|
22
27
|
//#endregion
|
|
23
28
|
//#region src/cli/generator/types.d.ts
|
|
@@ -118,7 +123,6 @@ interface CodeGeneratorCore {
|
|
|
118
123
|
}
|
|
119
124
|
/**
|
|
120
125
|
* Generator interface with dependencies-based conditional methods.
|
|
121
|
-
*
|
|
122
126
|
* @template Deps - Dependencies array (e.g., ['tailordb'], ['tailordb', 'resolver'])
|
|
123
127
|
* @template T - Return type of processType
|
|
124
128
|
* @template R - Return type of processResolver
|
|
@@ -152,9 +156,19 @@ type GenerateOptions = {
|
|
|
152
156
|
};
|
|
153
157
|
//#endregion
|
|
154
158
|
//#region src/cli/generator/index.d.ts
|
|
159
|
+
/**
|
|
160
|
+
* Run code generation using the Tailor configuration and generators.
|
|
161
|
+
* @param {GenerateOptions} [options] - Generation options
|
|
162
|
+
* @returns {Promise<void>} Promise that resolves when generation (and watch, if enabled) completes
|
|
163
|
+
*/
|
|
155
164
|
declare function generate(options?: GenerateOptions): Promise<void>;
|
|
156
165
|
//#endregion
|
|
157
166
|
//#region src/cli/config-loader.d.ts
|
|
167
|
+
/**
|
|
168
|
+
* Load Tailor configuration file and associated generators.
|
|
169
|
+
* @param {string} [configPath] - Optional explicit config path
|
|
170
|
+
* @returns {Promise<{ config: AppConfig; generators: Generator[]; configPath: string }>} Loaded config and generators
|
|
171
|
+
*/
|
|
158
172
|
declare function loadConfig(configPath?: string): Promise<{
|
|
159
173
|
config: AppConfig;
|
|
160
174
|
generators: Generator[];
|
|
@@ -162,6 +176,12 @@ declare function loadConfig(configPath?: string): Promise<{
|
|
|
162
176
|
}>;
|
|
163
177
|
//#endregion
|
|
164
178
|
//#region src/cli/type-generator.d.ts
|
|
179
|
+
/**
|
|
180
|
+
* Generate user type definitions from the app config and write them to disk.
|
|
181
|
+
* @param {AppConfig} config - Application config
|
|
182
|
+
* @param {string} configPath - Path to Tailor config file
|
|
183
|
+
* @returns {Promise<void>} Promise that resolves when types are generated
|
|
184
|
+
*/
|
|
165
185
|
declare function generateUserTypes(config: AppConfig, configPath: string): Promise<void>;
|
|
166
186
|
//#endregion
|
|
167
187
|
//#region src/cli/show.d.ts
|
|
@@ -181,6 +201,11 @@ interface ApplicationInfo {
|
|
|
181
201
|
createdAt: string;
|
|
182
202
|
updatedAt: string;
|
|
183
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Show applied application information for the current workspace.
|
|
206
|
+
* @param {ShowOptions} [options] - Show options
|
|
207
|
+
* @returns {Promise<ApplicationInfo>} Application information
|
|
208
|
+
*/
|
|
184
209
|
declare function show(options?: ShowOptions): Promise<ApplicationInfo>;
|
|
185
210
|
//#endregion
|
|
186
211
|
//#region src/cli/remove.d.ts
|
|
@@ -189,6 +214,11 @@ interface RemoveOptions {
|
|
|
189
214
|
profile?: string;
|
|
190
215
|
configPath?: string;
|
|
191
216
|
}
|
|
217
|
+
/**
|
|
218
|
+
* Remove all resources managed by the current application.
|
|
219
|
+
* @param {RemoveOptions} [options] - Remove options
|
|
220
|
+
* @returns {Promise<void>} Promise that resolves when removal completes
|
|
221
|
+
*/
|
|
192
222
|
declare function remove(options?: RemoveOptions): Promise<void>;
|
|
193
223
|
//#endregion
|
|
194
224
|
//#region src/cli/workspace/transform.d.ts
|
|
@@ -214,12 +244,22 @@ declare const createWorkspaceOptionsSchema: z.ZodObject<{
|
|
|
214
244
|
folderId: z.ZodOptional<z.ZodUUID>;
|
|
215
245
|
}, z.core.$strip>;
|
|
216
246
|
type CreateWorkspaceOptions = z.input<typeof createWorkspaceOptionsSchema>;
|
|
247
|
+
/**
|
|
248
|
+
* Create a new workspace with the given options.
|
|
249
|
+
* @param {CreateWorkspaceOptions} options - Workspace creation options
|
|
250
|
+
* @returns {Promise<WorkspaceInfo>} Created workspace info
|
|
251
|
+
*/
|
|
217
252
|
declare function createWorkspace(options: CreateWorkspaceOptions): Promise<WorkspaceInfo>;
|
|
218
253
|
//#endregion
|
|
219
254
|
//#region src/cli/workspace/list.d.ts
|
|
220
255
|
interface ListWorkspacesOptions {
|
|
221
256
|
limit?: number;
|
|
222
257
|
}
|
|
258
|
+
/**
|
|
259
|
+
* List workspaces with an optional limit.
|
|
260
|
+
* @param {ListWorkspacesOptions} [options] - Workspace listing options
|
|
261
|
+
* @returns {Promise<WorkspaceInfo[]>} List of workspaces
|
|
262
|
+
*/
|
|
223
263
|
declare function listWorkspaces(options?: ListWorkspacesOptions): Promise<WorkspaceInfo[]>;
|
|
224
264
|
//#endregion
|
|
225
265
|
//#region src/cli/workspace/delete.d.ts
|
|
@@ -227,6 +267,11 @@ declare const deleteWorkspaceOptionsSchema: z.ZodObject<{
|
|
|
227
267
|
workspaceId: z.ZodUUID;
|
|
228
268
|
}, z.core.$strip>;
|
|
229
269
|
type DeleteWorkspaceOptions = z.input<typeof deleteWorkspaceOptionsSchema>;
|
|
270
|
+
/**
|
|
271
|
+
* Delete a workspace by ID.
|
|
272
|
+
* @param {DeleteWorkspaceOptions} options - Workspace deletion options
|
|
273
|
+
* @returns {Promise<void>} Promise that resolves when deletion completes
|
|
274
|
+
*/
|
|
230
275
|
declare function deleteWorkspace(options: DeleteWorkspaceOptions): Promise<void>;
|
|
231
276
|
//#endregion
|
|
232
277
|
//#region src/cli/machineuser/list.d.ts
|
|
@@ -242,6 +287,11 @@ interface MachineUserInfo {
|
|
|
242
287
|
createdAt: string;
|
|
243
288
|
updatedAt: string;
|
|
244
289
|
}
|
|
290
|
+
/**
|
|
291
|
+
* List machine users for the current application.
|
|
292
|
+
* @param {ListMachineUsersOptions} [options] - Machine user listing options
|
|
293
|
+
* @returns {Promise<MachineUserInfo[]>} List of machine users
|
|
294
|
+
*/
|
|
245
295
|
declare function listMachineUsers(options?: ListMachineUsersOptions): Promise<MachineUserInfo[]>;
|
|
246
296
|
//#endregion
|
|
247
297
|
//#region src/cli/machineuser/token.d.ts
|
|
@@ -256,6 +306,11 @@ interface MachineUserTokenInfo {
|
|
|
256
306
|
tokenType: string;
|
|
257
307
|
expiresAt: string;
|
|
258
308
|
}
|
|
309
|
+
/**
|
|
310
|
+
* Get a machine user access token for the current application.
|
|
311
|
+
* @param {GetMachineUserTokenOptions} options - Token retrieval options
|
|
312
|
+
* @returns {Promise<MachineUserTokenInfo>} Machine user token info
|
|
313
|
+
*/
|
|
259
314
|
declare function getMachineUserToken(options: GetMachineUserTokenOptions): Promise<MachineUserTokenInfo>;
|
|
260
315
|
//#endregion
|
|
261
316
|
//#region src/cli/oauth2client/transform.d.ts
|
|
@@ -284,6 +339,11 @@ interface GetOAuth2ClientOptions {
|
|
|
284
339
|
profile?: string;
|
|
285
340
|
configPath?: string;
|
|
286
341
|
}
|
|
342
|
+
/**
|
|
343
|
+
* Get OAuth2 client credentials for the current application.
|
|
344
|
+
* @param {GetOAuth2ClientOptions} options - OAuth2 client lookup options
|
|
345
|
+
* @returns {Promise<OAuth2ClientCredentials>} OAuth2 client credentials
|
|
346
|
+
*/
|
|
287
347
|
declare function getOAuth2Client(options: GetOAuth2ClientOptions): Promise<OAuth2ClientCredentials>;
|
|
288
348
|
//#endregion
|
|
289
349
|
//#region src/cli/oauth2client/list.d.ts
|
|
@@ -292,6 +352,11 @@ interface ListOAuth2ClientsOptions {
|
|
|
292
352
|
profile?: string;
|
|
293
353
|
configPath?: string;
|
|
294
354
|
}
|
|
355
|
+
/**
|
|
356
|
+
* List OAuth2 clients for the current application.
|
|
357
|
+
* @param {ListOAuth2ClientsOptions} [options] - OAuth2 client listing options
|
|
358
|
+
* @returns {Promise<OAuth2ClientInfo[]>} List of OAuth2 clients
|
|
359
|
+
*/
|
|
295
360
|
declare function listOAuth2Clients(options?: ListOAuth2ClientsOptions): Promise<OAuth2ClientInfo[]>;
|
|
296
361
|
//#endregion
|
|
297
362
|
//#region src/cli/workflow/transform.d.ts
|
|
@@ -331,6 +396,11 @@ interface ListWorkflowsOptions {
|
|
|
331
396
|
workspaceId?: string;
|
|
332
397
|
profile?: string;
|
|
333
398
|
}
|
|
399
|
+
/**
|
|
400
|
+
* List workflows in the workspace and return CLI-friendly info.
|
|
401
|
+
* @param {ListWorkflowsOptions} [options] - Workflow listing options
|
|
402
|
+
* @returns {Promise<WorkflowListInfo[]>} List of workflows
|
|
403
|
+
*/
|
|
334
404
|
declare function listWorkflows(options?: ListWorkflowsOptions): Promise<WorkflowListInfo[]>;
|
|
335
405
|
//#endregion
|
|
336
406
|
//#region src/cli/workflow/get.d.ts
|
|
@@ -339,6 +409,11 @@ interface GetWorkflowOptions {
|
|
|
339
409
|
workspaceId?: string;
|
|
340
410
|
profile?: string;
|
|
341
411
|
}
|
|
412
|
+
/**
|
|
413
|
+
* Get a workflow by name and return CLI-friendly info.
|
|
414
|
+
* @param {GetWorkflowOptions} options - Workflow lookup options
|
|
415
|
+
* @returns {Promise<WorkflowInfo>} Workflow information
|
|
416
|
+
*/
|
|
342
417
|
declare function getWorkflow(options: GetWorkflowOptions): Promise<WorkflowInfo>;
|
|
343
418
|
//#endregion
|
|
344
419
|
//#region src/cli/workflow/start.d.ts
|
|
@@ -358,6 +433,11 @@ interface StartWorkflowResultWithWait {
|
|
|
358
433
|
executionId: string;
|
|
359
434
|
wait: (options?: WaitOptions) => Promise<WorkflowExecutionInfo>;
|
|
360
435
|
}
|
|
436
|
+
/**
|
|
437
|
+
* Start a workflow and return a handle to wait for completion.
|
|
438
|
+
* @param {StartWorkflowOptions} options - Start options
|
|
439
|
+
* @returns {Promise<StartWorkflowResultWithWait>} Start result with wait helper
|
|
440
|
+
*/
|
|
361
441
|
declare function startWorkflow(options: StartWorkflowOptions): Promise<StartWorkflowResultWithWait>;
|
|
362
442
|
//#endregion
|
|
363
443
|
//#region src/cli/workflow/executions.d.ts
|
|
@@ -384,7 +464,17 @@ interface GetWorkflowExecutionResult {
|
|
|
384
464
|
execution: WorkflowExecutionDetailInfo;
|
|
385
465
|
wait: () => Promise<WorkflowExecutionDetailInfo>;
|
|
386
466
|
}
|
|
467
|
+
/**
|
|
468
|
+
* List workflow executions with optional filters.
|
|
469
|
+
* @param {ListWorkflowExecutionsOptions} [options] - Workflow execution listing options
|
|
470
|
+
* @returns {Promise<WorkflowExecutionInfo[]>} List of workflow executions
|
|
471
|
+
*/
|
|
387
472
|
declare function listWorkflowExecutions(options?: ListWorkflowExecutionsOptions): Promise<WorkflowExecutionInfo[]>;
|
|
473
|
+
/**
|
|
474
|
+
* Get a single workflow execution with optional logs.
|
|
475
|
+
* @param {GetWorkflowExecutionOptions} options - Workflow execution lookup options
|
|
476
|
+
* @returns {Promise<GetWorkflowExecutionResult>} Workflow execution with optional logs
|
|
477
|
+
*/
|
|
388
478
|
declare function getWorkflowExecution(options: GetWorkflowExecutionOptions): Promise<GetWorkflowExecutionResult>;
|
|
389
479
|
//#endregion
|
|
390
480
|
//#region src/cli/workflow/resume.d.ts
|
|
@@ -398,13 +488,30 @@ interface ResumeWorkflowResultWithWait {
|
|
|
398
488
|
executionId: string;
|
|
399
489
|
wait: (options?: WaitOptions) => Promise<WorkflowExecutionInfo>;
|
|
400
490
|
}
|
|
491
|
+
/**
|
|
492
|
+
* Resume a suspended workflow execution and return a handle to wait for completion.
|
|
493
|
+
* @param {ResumeWorkflowOptions} options - Resume options
|
|
494
|
+
* @returns {Promise<ResumeWorkflowResultWithWait>} Resume result with wait helper
|
|
495
|
+
*/
|
|
401
496
|
declare function resumeWorkflow(options: ResumeWorkflowOptions): Promise<ResumeWorkflowResultWithWait>;
|
|
402
497
|
//#endregion
|
|
403
498
|
//#region src/cli/context.d.ts
|
|
499
|
+
/**
|
|
500
|
+
* Load workspace ID from command options, environment variables, or platform config.
|
|
501
|
+
* Priority: opts/workspaceId > env/workspaceId > opts/profile > env/profile > error
|
|
502
|
+
* @param {{ workspaceId?: string; profile?: string }} [opts] - Workspace and profile options
|
|
503
|
+
* @returns {string} Resolved workspace ID
|
|
504
|
+
*/
|
|
404
505
|
declare function loadWorkspaceId(opts?: {
|
|
405
506
|
workspaceId?: string;
|
|
406
507
|
profile?: string;
|
|
407
508
|
}): string;
|
|
509
|
+
/**
|
|
510
|
+
* Load access token from command options, environment variables, or platform config.
|
|
511
|
+
* Priority: env/TAILOR_PLATFORM_TOKEN > env/TAILOR_TOKEN (deprecated) > opts/profile > env/profile > config/currentUser > error
|
|
512
|
+
* @param {{ useProfile?: boolean; profile?: string }} [opts] - Profile options
|
|
513
|
+
* @returns {Promise<string>} Resolved access token
|
|
514
|
+
*/
|
|
408
515
|
declare function loadAccessToken(opts?: {
|
|
409
516
|
useProfile?: boolean;
|
|
410
517
|
profile?: string;
|
package/dist/cli/lib.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "../chunk-CIV_ash9.mjs";
|
|
2
|
-
import "../config-
|
|
3
|
-
import { A as generate, B as loadWorkspaceId, C as listOAuth2Clients, E as getMachineUserToken, F as loadConfig, I as apiCall, M as apply, P as generateUserTypes, T as getOAuth2Client, _ as listWorkflowExecutions, b as remove, c as resumeWorkflow, f as listWorkflows, g as getWorkflowExecution, i as deleteWorkspace, k as listMachineUsers, m as getWorkflow, n as listWorkspaces, o as createWorkspace, u as startWorkflow, v as show, z as loadAccessToken } from "../list-
|
|
2
|
+
import "../config-CJPKA-ui.mjs";
|
|
3
|
+
import { A as generate, B as loadWorkspaceId, C as listOAuth2Clients, E as getMachineUserToken, F as loadConfig, I as apiCall, M as apply, P as generateUserTypes, T as getOAuth2Client, _ as listWorkflowExecutions, b as remove, c as resumeWorkflow, f as listWorkflows, g as getWorkflowExecution, i as deleteWorkspace, k as listMachineUsers, m as getWorkflow, n as listWorkspaces, o as createWorkspace, u as startWorkflow, v as show, z as loadAccessToken } from "../list-nW4EfF7C.mjs";
|
|
4
4
|
import { register } from "node:module";
|
|
5
5
|
|
|
6
6
|
//#region src/cli/lib.ts
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { clone } from "es-toolkit";
|
|
2
|
-
|
|
3
1
|
//#region src/configure/types/field.ts
|
|
2
|
+
/**
|
|
3
|
+
* Normalize allowed values into EnumValue objects with descriptions.
|
|
4
|
+
* @param {AllowedValues} values - Allowed values as strings or EnumValue objects
|
|
5
|
+
* @returns {AllowedValue[]} Normalized allowed values
|
|
6
|
+
*/
|
|
4
7
|
function mapAllowedValues(values) {
|
|
5
8
|
return values.map((value) => {
|
|
6
9
|
if (typeof value === "string") return {
|
|
@@ -319,10 +322,12 @@ function isRelationSelfConfig(config) {
|
|
|
319
322
|
return config.toward.type === "self";
|
|
320
323
|
}
|
|
321
324
|
var TailorDBField = class TailorDBField extends TailorField {
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
325
|
+
_rawRelation = void 0;
|
|
326
|
+
get rawRelation() {
|
|
327
|
+
return this._rawRelation ? {
|
|
328
|
+
...this._rawRelation,
|
|
329
|
+
toward: { ...this._rawRelation.toward }
|
|
330
|
+
} : void 0;
|
|
326
331
|
}
|
|
327
332
|
get metadata() {
|
|
328
333
|
return { ...this._metadata };
|
|
@@ -337,30 +342,16 @@ var TailorDBField = class TailorDBField extends TailorField {
|
|
|
337
342
|
return super.description(description);
|
|
338
343
|
}
|
|
339
344
|
relation(config) {
|
|
340
|
-
|
|
341
|
-
this.
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
if (isRelationSelfConfig(config)) {
|
|
346
|
-
this._pendingSelfRelation = {
|
|
347
|
-
type: config.type,
|
|
345
|
+
const targetType = isRelationSelfConfig(config) ? "self" : config.toward.type.name;
|
|
346
|
+
this._rawRelation = {
|
|
347
|
+
type: config.type,
|
|
348
|
+
toward: {
|
|
349
|
+
type: targetType,
|
|
348
350
|
as: config.toward.as,
|
|
349
|
-
key
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
return this;
|
|
353
|
-
}
|
|
354
|
-
this._metadata.foreignKeyType = config.toward.type.name;
|
|
355
|
-
this._metadata.foreignKeyField = key;
|
|
356
|
-
if (config.type === "keyOnly") return this;
|
|
357
|
-
const forward = config.toward.as;
|
|
358
|
-
this._ref = {
|
|
359
|
-
type: config.toward.type,
|
|
360
|
-
nameMap: [forward, backward],
|
|
361
|
-
key
|
|
351
|
+
key: config.toward.key
|
|
352
|
+
},
|
|
353
|
+
backward: config.backward
|
|
362
354
|
};
|
|
363
|
-
this._metadata.relation = true;
|
|
364
355
|
return this;
|
|
365
356
|
}
|
|
366
357
|
index() {
|
|
@@ -390,8 +381,8 @@ var TailorDBField = class TailorDBField extends TailorField {
|
|
|
390
381
|
}
|
|
391
382
|
/**
|
|
392
383
|
* Clone the field with optional overrides for field options
|
|
393
|
-
* @param options - Optional field options to override
|
|
394
|
-
* @returns A new TailorDBField instance with the same configuration
|
|
384
|
+
* @param {FieldOptions} [options] - Optional field options to override
|
|
385
|
+
* @returns {TailorDBField<unknown, unknown>} A new TailorDBField instance with the same configuration
|
|
395
386
|
*/
|
|
396
387
|
clone(options) {
|
|
397
388
|
const clonedField = Object.create(Object.getPrototypeOf(this));
|
|
@@ -406,8 +397,10 @@ var TailorDBField = class TailorDBField extends TailorField {
|
|
|
406
397
|
if (options.optional !== void 0) clonedField._metadata.required = !options.optional;
|
|
407
398
|
if (options.array !== void 0) clonedField._metadata.array = options.array;
|
|
408
399
|
}
|
|
409
|
-
if (this.
|
|
410
|
-
|
|
400
|
+
if (this._rawRelation) clonedField._rawRelation = {
|
|
401
|
+
...this._rawRelation,
|
|
402
|
+
toward: { ...this._rawRelation.toward }
|
|
403
|
+
};
|
|
411
404
|
return clonedField;
|
|
412
405
|
}
|
|
413
406
|
};
|
|
@@ -457,21 +450,6 @@ var TailorDBType = class {
|
|
|
457
450
|
if (name === options.pluralForm) throw new Error(`The name and the plural form must be different. name=${name}`);
|
|
458
451
|
this._settings.pluralForm = options.pluralForm;
|
|
459
452
|
}
|
|
460
|
-
Object.entries(this.fields).forEach(([fieldName, field]) => {
|
|
461
|
-
const f = field;
|
|
462
|
-
const pending = f._pendingSelfRelation;
|
|
463
|
-
if (pending) {
|
|
464
|
-
f._metadata.foreignKeyType = this.name;
|
|
465
|
-
f._metadata.foreignKeyField = pending.key;
|
|
466
|
-
if (pending.type === "keyOnly") return this;
|
|
467
|
-
const forward = pending.as ?? fieldName.replace(/(ID|Id|id)$/u, "");
|
|
468
|
-
f._ref = {
|
|
469
|
-
type: this,
|
|
470
|
-
nameMap: [forward, pending.backward],
|
|
471
|
-
key: pending.key
|
|
472
|
-
};
|
|
473
|
-
}
|
|
474
|
-
});
|
|
475
453
|
}
|
|
476
454
|
get metadata() {
|
|
477
455
|
const indexes = {};
|
|
@@ -542,9 +520,9 @@ var TailorDBType = class {
|
|
|
542
520
|
}
|
|
543
521
|
/**
|
|
544
522
|
* Pick specific fields from the type
|
|
545
|
-
* @param keys - Array of field keys to pick
|
|
546
|
-
* @param options - Optional field options to apply to picked fields
|
|
547
|
-
* @returns An object containing only the specified fields
|
|
523
|
+
* @param {(keyof Fields)[]} keys - Array of field keys to pick
|
|
524
|
+
* @param {FieldOptions} options - Optional field options to apply to picked fields
|
|
525
|
+
* @returns {Record<string, TailorDBField<unknown, unknown>>} An object containing only the specified fields
|
|
548
526
|
*/
|
|
549
527
|
pickFields(keys, options) {
|
|
550
528
|
const result = {};
|
|
@@ -554,8 +532,9 @@ var TailorDBType = class {
|
|
|
554
532
|
}
|
|
555
533
|
/**
|
|
556
534
|
* Omit specific fields from the type
|
|
557
|
-
* @
|
|
558
|
-
* @
|
|
535
|
+
* @template K
|
|
536
|
+
* @param {(keyof Fields)[]} keys - Array of field keys to omit
|
|
537
|
+
* @returns {Omit<Fields, K>} An object containing all fields except the specified ones
|
|
559
538
|
*/
|
|
560
539
|
omitFields(keys) {
|
|
561
540
|
const keysSet = new Set(keys);
|
|
@@ -602,6 +581,18 @@ const db = {
|
|
|
602
581
|
|
|
603
582
|
//#endregion
|
|
604
583
|
//#region src/configure/services/auth/index.ts
|
|
584
|
+
/**
|
|
585
|
+
* Define an auth service for the Tailor SDK.
|
|
586
|
+
* @template Name
|
|
587
|
+
* @template User
|
|
588
|
+
* @template AttributeMap
|
|
589
|
+
* @template AttributeList
|
|
590
|
+
* @template MachineUserNames
|
|
591
|
+
* @template M
|
|
592
|
+
* @param {Name} name - Auth service name
|
|
593
|
+
* @param {AuthServiceInput<User, AttributeMap, AttributeList, MachineUserNames>} config - Auth service configuration
|
|
594
|
+
* @returns {AuthDefinitionBrand & AuthServiceInput<User, AttributeMap, AttributeList, MachineUserNames> & { name: string; invoker<M extends MachineUserNames>(machineUser: M): AuthInvoker<M> }} Defined auth service
|
|
595
|
+
*/
|
|
605
596
|
function defineAuth(name, config) {
|
|
606
597
|
return {
|
|
607
598
|
...config,
|
|
@@ -644,13 +635,24 @@ const getDistDir = () => {
|
|
|
644
635
|
else if (distPath === null) distPath = configured || ".tailor-sdk";
|
|
645
636
|
return distPath;
|
|
646
637
|
};
|
|
638
|
+
/**
|
|
639
|
+
* Define a Tailor SDK application configuration with shallow exactness.
|
|
640
|
+
* @template Config
|
|
641
|
+
* @param {Config} config - Application configuration
|
|
642
|
+
* @returns {Config} The same configuration object
|
|
643
|
+
*/
|
|
647
644
|
function defineConfig(config) {
|
|
648
645
|
return config;
|
|
649
646
|
}
|
|
647
|
+
/**
|
|
648
|
+
* Define generators to be used with the Tailor SDK.
|
|
649
|
+
* @param {...GeneratorConfig} configs - Generator configurations
|
|
650
|
+
* @returns {GeneratorConfig[]} Generator configurations as given
|
|
651
|
+
*/
|
|
650
652
|
function defineGenerators(...configs) {
|
|
651
653
|
return configs;
|
|
652
654
|
}
|
|
653
655
|
|
|
654
656
|
//#endregion
|
|
655
657
|
export { createWorkflowJob as a, unsafeAllowAllGqlPermission as c, TailorField as d, t as f, WORKFLOW_JOB_BRAND as i, unsafeAllowAllTypePermission as l, defineGenerators as n, defineAuth as o, getDistDir as r, db as s, defineConfig as t, unauthenticatedTailorUser as u };
|
|
656
|
-
//# sourceMappingURL=config-
|
|
658
|
+
//# sourceMappingURL=config-CJPKA-ui.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-CJPKA-ui.mjs","names":["type: T","fields: Record<string, TailorAnyField>","issues: StandardSchemaV1.Issue[]","createField","uuid","string","bool","int","float","date","datetime","time","_enum","object","unauthenticatedTailorUser: TailorUser","unsafeAllowAllTypePermission: TailorTypePermission","unsafeAllowAllGqlPermission: TailorTypeGqlPermission","name: string","fields: Fields","indexes: Record<string, { fields: string[]; unique?: boolean }>","validators","description: string | undefined","fieldDef: F","distPath: string | null"],"sources":["../src/configure/types/field.ts","../src/configure/types/type.ts","../src/configure/types/user.ts","../src/configure/services/tailordb/permission.ts","../src/configure/services/tailordb/schema.ts","../src/configure/services/auth/index.ts","../src/configure/services/workflow/job.ts","../src/configure/config.ts"],"sourcesContent":["import { type EnumValue } from \"@/parser/service/tailordb/types\";\n\nexport type AllowedValue = EnumValue;\n\nexport type AllowedValues = [string | EnumValue, ...(string | EnumValue)[]];\n\n/**\n * Normalize allowed values into EnumValue objects with descriptions.\n * @param {AllowedValues} values - Allowed values as strings or EnumValue objects\n * @returns {AllowedValue[]} Normalized allowed values\n */\nexport function mapAllowedValues(values: AllowedValues): AllowedValue[] {\n return values.map((value) => {\n if (typeof value === \"string\") {\n return { value, description: \"\" };\n }\n return { ...value, description: value.description ?? \"\" };\n });\n}\n\nexport type AllowedValuesOutput<V extends AllowedValues> = V[number] extends infer T\n ? T extends string\n ? T\n : T extends { value: infer K }\n ? K\n : never\n : never;\n","import { type AllowedValues, type AllowedValuesOutput, mapAllowedValues } from \"./field\";\nimport {\n type TailorFieldType,\n type TailorToTs,\n type FieldMetadata,\n type DefinedFieldMetadata,\n type FieldOptions,\n type FieldOutput,\n} from \"./types\";\nimport type { Prettify, InferFieldsOutput } from \"./helpers\";\nimport type { FieldValidateInput } from \"./validation\";\nimport type { TailorUser } from \"@/configure/types\";\nimport type { TailorFieldInput } from \"@/parser/service/resolver/types\";\nimport type { StandardSchemaV1 } from \"@standard-schema/spec\";\n\nconst regex = {\n uuid: /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,\n date: /^(?<year>\\d{4})-(?<month>\\d{2})-(?<day>\\d{2})$/,\n time: /^(?<hour>\\d{2}):(?<minute>\\d{2})$/,\n datetime:\n /^(?<year>\\d{4})-(?<month>\\d{2})-(?<day>\\d{2})T(?<hour>\\d{2}):(?<minute>\\d{2}):(?<second>\\d{2})(.(?<millisec>\\d{3}))?Z$/,\n} as const;\n\n// This helper type intentionally uses `any` as a placeholder for unknown field output.\n// oxlint-disable-next-line no-explicit-any\nexport type TailorAnyField = TailorField<any>;\n\nexport class TailorField<\n const Defined extends DefinedFieldMetadata = DefinedFieldMetadata,\n // Generic default output type (kept loose on purpose for library ergonomics).\n // oxlint-disable-next-line no-explicit-any\n const Output = any,\n M extends FieldMetadata = FieldMetadata,\n T extends TailorFieldType = TailorFieldType,\n> implements TailorFieldInput {\n protected _metadata: M;\n public readonly _defined: Defined = undefined as unknown as Defined;\n public readonly _output = undefined as Output;\n\n get metadata() {\n return { ...this._metadata };\n }\n\n protected constructor(\n public readonly type: T,\n options?: FieldOptions,\n public readonly fields: Record<string, TailorAnyField> = {},\n values?: AllowedValues,\n ) {\n this._metadata = { required: true } as M;\n if (options) {\n if (options.optional === true) {\n this._metadata.required = false;\n }\n if (options.array === true) {\n this._metadata.array = true;\n }\n }\n if (values) {\n this._metadata.allowedValues = mapAllowedValues(values);\n }\n }\n\n static create<\n const TType extends TailorFieldType,\n const TOptions extends FieldOptions,\n const OutputBase = TailorToTs[TType],\n >(\n type: TType,\n options?: TOptions,\n fields?: Record<string, TailorAnyField>,\n values?: AllowedValues,\n ) {\n return new TailorField<\n { type: TType; array: TOptions extends { array: true } ? true : false },\n FieldOutput<OutputBase, TOptions>\n >(type, options, fields, values);\n }\n\n description<CurrentDefined extends Defined>(\n this: CurrentDefined extends { description: unknown }\n ? never\n : TailorField<CurrentDefined, Output>,\n description: string,\n ) {\n this._metadata.description = description;\n return this as TailorField<Prettify<CurrentDefined & { description: true }>, Output>;\n }\n\n typeName<CurrentDefined extends Defined>(\n this: CurrentDefined extends { typeName: unknown }\n ? never\n : CurrentDefined extends { type: \"enum\" | \"nested\" }\n ? TailorField<CurrentDefined, Output>\n : never,\n typeName: string,\n ) {\n this._metadata.typeName = typeName;\n return this as TailorField<Prettify<CurrentDefined & { typeName: true }>, Output>;\n }\n\n validate<CurrentDefined extends Defined>(\n this: CurrentDefined extends { validate: unknown }\n ? never\n : TailorField<CurrentDefined, Output>,\n ...validate: FieldValidateInput<Output>[]\n ) {\n this._metadata.validate = validate;\n return this as TailorField<Prettify<CurrentDefined & { validate: true }>, Output>;\n }\n\n /**\n * Parse and validate a value against this field's validation rules\n * Returns StandardSchema Result type with success or failure\n */\n parse(args: {\n value: unknown;\n data: unknown;\n user: TailorUser;\n }): StandardSchemaV1.Result<Output> {\n return this._parseInternal({\n value: args.value,\n data: args.data,\n user: args.user,\n pathArray: [],\n });\n }\n\n /**\n * Validate a single value (not an array element)\n * Used internally for array element validation\n * @private\n */\n private _validateValue(args: {\n value: TailorToTs[T];\n data: unknown;\n user: TailorUser;\n pathArray: string[];\n }): StandardSchemaV1.Issue[] {\n const { value, data, user, pathArray } = args;\n const issues: StandardSchemaV1.Issue[] = [];\n\n // Type-specific validation\n switch (this.type) {\n case \"string\":\n if (typeof value !== \"string\") {\n issues.push({\n message: `Expected a string: received ${String(value)}`,\n path: pathArray.length > 0 ? pathArray : undefined,\n });\n }\n break;\n\n case \"integer\":\n if (typeof value !== \"number\" || !Number.isInteger(value)) {\n issues.push({\n message: `Expected an integer: received ${String(value)}`,\n path: pathArray.length > 0 ? pathArray : undefined,\n });\n }\n break;\n\n case \"float\":\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n issues.push({\n message: `Expected a number: received ${String(value)}`,\n path: pathArray.length > 0 ? pathArray : undefined,\n });\n }\n break;\n\n case \"boolean\":\n if (typeof value !== \"boolean\") {\n issues.push({\n message: `Expected a boolean: received ${String(value)}`,\n path: pathArray.length > 0 ? pathArray : undefined,\n });\n }\n break;\n\n case \"uuid\":\n if (typeof value !== \"string\" || !regex.uuid.test(value)) {\n issues.push({\n message: `Expected a valid UUID: received ${String(value)}`,\n path: pathArray.length > 0 ? pathArray : undefined,\n });\n }\n break;\n case \"date\":\n if (typeof value !== \"string\" || !regex.date.test(value)) {\n issues.push({\n message: `Expected to match \"yyyy-MM-dd\" format: received ${String(value)}`,\n path: pathArray.length > 0 ? pathArray : undefined,\n });\n }\n break;\n case \"datetime\":\n if (typeof value !== \"string\" || !regex.datetime.test(value)) {\n issues.push({\n message: `Expected to match ISO format: received ${String(value)}`,\n path: pathArray.length > 0 ? pathArray : undefined,\n });\n }\n break;\n case \"time\":\n if (typeof value !== \"string\" || !regex.time.test(value)) {\n issues.push({\n message: `Expected to match \"HH:mm\" format: received ${String(value)}`,\n path: pathArray.length > 0 ? pathArray : undefined,\n });\n }\n break;\n case \"enum\":\n if (this.metadata.allowedValues) {\n const allowedValues = this.metadata.allowedValues.map((v) => v.value);\n if (typeof value !== \"string\" || !allowedValues.includes(value)) {\n issues.push({\n message: `Must be one of [${allowedValues.join(\", \")}]: received ${String(value)}`,\n path: pathArray.length > 0 ? pathArray : undefined,\n });\n }\n }\n break;\n\n case \"nested\":\n // Validate nested object fields\n if (\n typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value) ||\n value instanceof Date\n ) {\n issues.push({\n message: `Expected an object: received ${String(value)}`,\n path: pathArray.length > 0 ? pathArray : undefined,\n });\n } else if (this.fields && Object.keys(this.fields).length > 0) {\n for (const [fieldName, field] of Object.entries(this.fields)) {\n const fieldValue = value?.[fieldName];\n const result = field._parseInternal({\n value: fieldValue,\n data,\n user,\n pathArray: pathArray.concat(fieldName),\n });\n if (result.issues) {\n issues.push(...result.issues);\n }\n }\n }\n break;\n }\n\n // Custom validation functions\n const validateFns = this.metadata.validate;\n if (validateFns && validateFns.length > 0) {\n for (const validateInput of validateFns) {\n const { fn, message } =\n typeof validateInput === \"function\"\n ? { fn: validateInput, message: \"Validation failed\" }\n : { fn: validateInput[0], message: validateInput[1] };\n\n if (!fn({ value, data, user })) {\n issues.push({\n message,\n path: pathArray.length > 0 ? pathArray : undefined,\n });\n }\n }\n }\n\n return issues;\n }\n\n /**\n * Internal parse method that tracks field path for nested validation\n * @private\n */\n private _parseInternal(args: {\n // Runtime input is unknown/untyped; we validate and narrow it inside the parser.\n // oxlint-disable-next-line no-explicit-any\n value: any;\n data: unknown;\n user: TailorUser;\n pathArray: string[];\n }): StandardSchemaV1.Result<Output> {\n const { value, data, user, pathArray } = args;\n const issues: StandardSchemaV1.Issue[] = [];\n\n // 1. Check required/optional\n const isNullOrUndefined = value === null || value === undefined;\n if (this.metadata.required && isNullOrUndefined) {\n issues.push({\n message: \"Required field is missing\",\n path: pathArray.length > 0 ? pathArray : undefined,\n });\n return { issues };\n }\n\n // If optional and null/undefined, skip further validation\n if (!this.metadata.required && isNullOrUndefined) {\n return { value };\n }\n\n // 2. Check array type\n if (this.metadata.array) {\n if (!Array.isArray(value)) {\n issues.push({\n message: \"Expected an array\",\n path: pathArray.length > 0 ? pathArray : undefined,\n });\n return { issues };\n }\n\n // Validate each array element (without array flag)\n for (let i = 0; i < value.length; i++) {\n const elementValue = value[i];\n const elementPath = pathArray.concat(`[${i}]`);\n\n // Validate element with same type but without array flag\n const elementIssues = this._validateValue({\n value: elementValue,\n data,\n user,\n pathArray: elementPath,\n });\n if (elementIssues.length > 0) {\n issues.push(...elementIssues);\n }\n }\n\n if (issues.length > 0) {\n return { issues };\n }\n return { value: value as Output };\n }\n\n // 3. Type-specific validation and custom validation\n const valueIssues = this._validateValue({ value, data, user, pathArray });\n issues.push(...valueIssues);\n\n if (issues.length > 0) {\n return { issues };\n }\n\n return { value };\n }\n}\n\nconst createField = TailorField.create;\nfunction uuid<const Opt extends FieldOptions>(options?: Opt) {\n return createField(\"uuid\", options);\n}\n\nfunction string<const Opt extends FieldOptions>(options?: Opt) {\n return createField(\"string\", options);\n}\n\nfunction bool<const Opt extends FieldOptions>(options?: Opt) {\n return createField(\"boolean\", options);\n}\n\nfunction int<const Opt extends FieldOptions>(options?: Opt) {\n return createField(\"integer\", options);\n}\n\nfunction float<const Opt extends FieldOptions>(options?: Opt) {\n return createField(\"float\", options);\n}\n\nfunction date<const Opt extends FieldOptions>(options?: Opt) {\n return createField(\"date\", options);\n}\n\nfunction datetime<const Opt extends FieldOptions>(options?: Opt) {\n return createField(\"datetime\", options);\n}\n\nfunction time<const Opt extends FieldOptions>(options?: Opt) {\n return createField(\"time\", options);\n}\n\nfunction _enum<const V extends AllowedValues, const Opt extends FieldOptions>(\n values: V,\n options?: Opt,\n): TailorField<\n { type: \"enum\"; array: Opt extends { array: true } ? true : false },\n FieldOutput<AllowedValuesOutput<V>, Opt>\n> {\n return createField<\"enum\", Opt, AllowedValuesOutput<V>>(\"enum\", options, undefined, values);\n}\n\nfunction object<const F extends Record<string, TailorAnyField>, const Opt extends FieldOptions>(\n fields: F,\n options?: Opt,\n) {\n const objectField = createField(\"nested\", options, fields) as TailorField<\n { type: \"nested\"; array: Opt extends { array: true } ? true : false },\n FieldOutput<InferFieldsOutput<F>, Opt>\n >;\n return objectField;\n}\n\nexport const t = {\n uuid,\n string,\n bool,\n int,\n float,\n date,\n datetime,\n time,\n enum: _enum,\n object,\n};\n","// Interfaces for module augmentation\n// Users can extend these via: declare module \"@tailor-platform/sdk\" { interface AttributeMap { ... } }\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface AttributeMap {}\nexport interface AttributeList {\n __tuple?: []; // Marker for tuple type\n}\n\nexport type InferredAttributeMap = keyof AttributeMap extends never\n ? Record<string, string | string[] | boolean | boolean[] | undefined>\n : AttributeMap;\n\nexport type InferredAttributeList = AttributeList[\"__tuple\"] extends []\n ? string[]\n : AttributeList[\"__tuple\"];\n\n/** Represents a user in the Tailor platform. */\nexport type TailorUser = {\n /**\n * The ID of the user.\n * For unauthenticated users, this will be a nil UUID.\n */\n id: string;\n /**\n * The type of the user.\n * For unauthenticated users, this will be an empty string.\n */\n type: \"user\" | \"machine_user\" | \"\";\n /** The ID of the workspace the user belongs to. */\n workspaceId: string;\n /**\n * A map of the user's attributes.\n * For unauthenticated users, this will be null.\n */\n attributes: InferredAttributeMap | null;\n /**\n * A list of the user's attributes.\n * For unauthenticated users, this will be an empty array.\n */\n attributeList: InferredAttributeList;\n};\n\n/** Represents an unauthenticated user in the Tailor platform. */\nexport const unauthenticatedTailorUser: TailorUser = {\n id: \"00000000-0000-0000-0000-000000000000\",\n type: \"\",\n workspaceId: \"00000000-0000-0000-0000-000000000000\",\n attributes: null,\n attributeList: [],\n};\n","import type { InferredAttributeMap } from \"../../types\";\nimport type { ValueOperand } from \"../auth\";\n\nexport type TailorTypePermission<\n User extends object = InferredAttributeMap,\n Type extends object = object,\n> = {\n create: readonly ActionPermission<\"record\", User, Type, false>[];\n read: readonly ActionPermission<\"record\", User, Type, false>[];\n update: readonly ActionPermission<\"record\", User, Type, true>[];\n delete: readonly ActionPermission<\"record\", User, Type, false>[];\n};\n\ntype ActionPermission<\n Level extends \"record\" | \"gql\" = \"record\" | \"gql\",\n User extends object = InferredAttributeMap,\n Type extends object = object,\n Update extends boolean = boolean,\n> =\n | {\n conditions:\n | PermissionCondition<Level, User, Update, Type>\n | readonly PermissionCondition<Level, User, Update, Type>[];\n description?: string | undefined;\n permit?: boolean;\n }\n | readonly [...PermissionCondition<Level, User, Update, Type>, ...([] | [boolean])] // single array condition\n | readonly [...PermissionCondition<Level, User, Update, Type>[], ...([] | [boolean])]; // multiple array condition\n\nexport type TailorTypeGqlPermission<\n User extends object = InferredAttributeMap,\n Type extends object = object,\n> = readonly GqlPermissionPolicy<User, Type>[];\n\ntype GqlPermissionPolicy<\n User extends object = InferredAttributeMap,\n Type extends object = object,\n> = {\n conditions: readonly PermissionCondition<\"gql\", User, boolean, Type>[];\n actions: \"all\" | readonly GqlPermissionAction[];\n permit?: boolean;\n description?: string;\n};\n\ntype GqlPermissionAction = \"read\" | \"create\" | \"update\" | \"delete\" | \"aggregate\" | \"bulkUpsert\";\n\nexport type PermissionCondition<\n Level extends \"record\" | \"gql\" = \"record\" | \"gql\",\n User extends object = InferredAttributeMap,\n Update extends boolean = boolean,\n Type extends object = object,\n> = readonly [\n PermissionOperand<Level, User, Type, Update>,\n PermissionOperator,\n PermissionOperand<Level, User, Type, Update>,\n];\n\ntype UserOperand<User extends object = InferredAttributeMap> = {\n user:\n | {\n [K in keyof User]: User[K] extends string | string[] | boolean | boolean[] ? K : never;\n }[keyof User]\n | \"id\"\n | \"_loggedIn\";\n};\n\ntype RecordOperand<Type extends object, Update extends boolean = false> = Update extends true\n ? { oldRecord: (keyof Type & string) | \"id\" } | { newRecord: (keyof Type & string) | \"id\" }\n : { record: (keyof Type & string) | \"id\" };\n\nexport type PermissionOperand<\n Level extends \"record\" | \"gql\" = \"record\" | \"gql\",\n User extends object = InferredAttributeMap,\n Type extends object = object,\n Update extends boolean = boolean,\n> =\n | UserOperand<User>\n | ValueOperand\n | (Level extends \"record\" ? RecordOperand<Type, Update> : never);\n\ntype PermissionOperator = \"=\" | \"!=\" | \"in\" | \"not in\";\n\n/**\n * Grants full record-level access without any conditions.\n *\n * Unsafe and intended only for local development, prototyping, or tests.\n * Do not use this in production environments, as it effectively disables\n * authorization checks.\n */\nexport const unsafeAllowAllTypePermission: TailorTypePermission = {\n create: [{ conditions: [], permit: true }],\n read: [{ conditions: [], permit: true }],\n update: [{ conditions: [], permit: true }],\n delete: [{ conditions: [], permit: true }],\n};\n\n/**\n * Grants full GraphQL access (all actions) without any conditions.\n *\n * Unsafe and intended only for local development, prototyping, or tests.\n * Do not use this in production environments, as it effectively disables\n * authorization checks.\n */\nexport const unsafeAllowAllGqlPermission: TailorTypeGqlPermission = [\n { conditions: [], actions: \"all\", permit: true },\n];\n","import { type AllowedValues, type AllowedValuesOutput } from \"@/configure/types/field\";\nimport { TailorField } from \"@/configure/types/type\";\nimport {\n type FieldOptions,\n type FieldOutput,\n type TailorFieldType,\n type TailorToTs,\n} from \"@/configure/types/types\";\nimport {\n type TailorDBTypeMetadata,\n type RawPermissions,\n type RawRelationConfig,\n type RelationType,\n} from \"@/parser/service/tailordb/types\";\nimport { type TailorTypeGqlPermission, type TailorTypePermission } from \"./permission\";\nimport {\n type DBFieldMetadata,\n type DefinedDBFieldMetadata,\n type Hooks,\n type Hook,\n type SerialConfig,\n type IndexDef,\n type TypeFeatures,\n type ExcludeNestedDBFields,\n} from \"./types\";\nimport type { InferredAttributeMap } from \"@/configure/types\";\nimport type { Prettify, output, InferFieldsOutput } from \"@/configure/types/helpers\";\nimport type { FieldValidateInput, ValidateConfig, Validators } from \"@/configure/types/validation\";\n\ninterface RelationConfig<S extends RelationType, T extends TailorDBType> {\n type: S;\n toward: {\n type: T;\n as?: string;\n key?: keyof T[\"fields\"] & string;\n };\n backward?: string;\n}\n\n// Special config variant for self-referencing relations\ntype RelationSelfConfig = {\n type: RelationType;\n toward: {\n type: \"self\";\n as?: string;\n key?: string;\n };\n backward?: string;\n};\n\nfunction isRelationSelfConfig(\n config: RelationConfig<RelationType, TailorDBType> | RelationSelfConfig,\n): config is RelationSelfConfig {\n return config.toward.type === \"self\";\n}\n\n// Helper alias: DB fields can be arbitrarily nested, so we intentionally keep this loose.\n// oxlint-disable-next-line no-explicit-any\nexport type TailorAnyDBField = TailorDBField<any, any>;\n\nexport class TailorDBField<\n const Defined extends DefinedDBFieldMetadata,\n const Output,\n> extends TailorField<Defined, Output, DBFieldMetadata> {\n private _rawRelation: RawRelationConfig | undefined = undefined;\n\n get rawRelation(): Readonly<RawRelationConfig> | undefined {\n return this._rawRelation\n ? { ...this._rawRelation, toward: { ...this._rawRelation.toward } }\n : undefined;\n }\n\n get metadata() {\n return { ...this._metadata };\n }\n\n private constructor(\n type: TailorFieldType,\n options?: FieldOptions,\n fields?: Record<string, TailorAnyDBField>,\n values?: AllowedValues,\n ) {\n super(type, options, fields, values);\n }\n\n static create<\n const T extends TailorFieldType,\n const TOptions extends FieldOptions,\n const OutputBase = TailorToTs[T],\n >(\n type: T,\n options?: TOptions,\n fields?: Record<string, TailorAnyDBField>,\n values?: AllowedValues,\n ) {\n return new TailorDBField<\n { type: T; array: TOptions extends { array: true } ? true : false },\n FieldOutput<OutputBase, TOptions>\n >(type, options, fields, values);\n }\n\n description<CurrentDefined extends Defined>(\n this: CurrentDefined extends { description: unknown }\n ? never\n : TailorField<CurrentDefined, Output>,\n description: string,\n ): TailorDBField<Prettify<CurrentDefined & { description: true }>, Output> {\n // Fluent API: TS can't express the refined return type through the base method.\n // oxlint-disable-next-line no-explicit-any\n return super.description(description) as any;\n }\n\n relation<S extends RelationType, T extends TailorAnyDBType, CurrentDefined extends Defined>(\n this: CurrentDefined extends { relation: unknown }\n ? never\n : TailorDBField<CurrentDefined, Output>,\n config: RelationConfig<S, T>,\n ): TailorDBField<\n S extends \"oneToOne\" | \"1-1\"\n ? Prettify<CurrentDefined & { unique: true; index: true; relation: true }>\n : Prettify<CurrentDefined & { index: true; relation: true }>,\n Output\n >;\n\n // Overload: self-referencing variant\n relation<S extends RelationSelfConfig, CurrentDefined extends Defined>(\n this: CurrentDefined extends { relation: unknown }\n ? never\n : TailorDBField<CurrentDefined, Output>,\n config: S,\n ): TailorDBField<\n S[\"type\"] extends \"oneToOne\" | \"1-1\"\n ? Prettify<CurrentDefined & { unique: true; index: true; relation: true }>\n : Prettify<CurrentDefined & { index: true; relation: true }>,\n Output\n >;\n\n // Implementation\n relation<CurrentDefined extends Defined>(\n this: CurrentDefined extends { relation: unknown }\n ? never\n : TailorDBField<CurrentDefined, Output>,\n config: RelationConfig<RelationType, TailorDBType> | RelationSelfConfig,\n ): TailorDBField<DefinedDBFieldMetadata, Output> {\n // Store raw relation config - all processing happens in parser layer\n const targetType = isRelationSelfConfig(config) ? \"self\" : config.toward.type.name;\n this._rawRelation = {\n type: config.type,\n toward: {\n type: targetType,\n as: config.toward.as,\n key: config.toward.key,\n },\n backward: config.backward,\n };\n return this;\n }\n\n index<CurrentDefined extends Defined>(\n this: CurrentDefined extends { index: unknown }\n ? never\n : CurrentDefined extends { array: true }\n ? never\n : TailorDBField<CurrentDefined, Output>,\n ) {\n this._metadata.index = true;\n return this as TailorDBField<Prettify<CurrentDefined & { index: true }>, Output>;\n }\n\n unique<CurrentDefined extends Defined>(\n this: CurrentDefined extends { unique: unknown }\n ? never\n : CurrentDefined extends { array: true }\n ? never\n : TailorDBField<CurrentDefined, Output>,\n ) {\n this._metadata.unique = true;\n this._metadata.index = true;\n return this as TailorDBField<Prettify<CurrentDefined & { unique: true; index: true }>, Output>;\n }\n\n vector<CurrentDefined extends Defined>(\n this: CurrentDefined extends { vector: unknown }\n ? never\n : CurrentDefined extends { type: \"string\"; array: false }\n ? TailorDBField<CurrentDefined, Output>\n : never,\n ) {\n this._metadata.vector = true;\n return this as TailorDBField<Prettify<CurrentDefined & { vector: true }>, Output>;\n }\n\n hooks<CurrentDefined extends Defined, const H extends Hook<unknown, Output>>(\n this: CurrentDefined extends { hooks: unknown }\n ? never\n : CurrentDefined extends { type: \"nested\" }\n ? never\n : TailorDBField<CurrentDefined, Output>,\n hooks: H,\n ) {\n this._metadata.hooks = hooks;\n return this as TailorDBField<\n Prettify<\n CurrentDefined & {\n hooks?: {\n create: H extends { create: unknown } ? true : false;\n update: H extends { update: unknown } ? true : false;\n };\n serial: false;\n }\n >,\n Output\n >;\n }\n\n validate<CurrentDefined extends Defined>(\n this: CurrentDefined extends { validate: unknown }\n ? never\n : TailorDBField<CurrentDefined, Output>,\n ...validate: FieldValidateInput<Output>[]\n ) {\n this._metadata.validate = validate;\n return this as TailorDBField<Prettify<CurrentDefined & { validate: true }>, Output>;\n }\n\n serial<CurrentDefined extends Defined>(\n this: CurrentDefined extends { serial: unknown }\n ? never\n : Output extends null\n ? never\n : CurrentDefined extends { type: \"integer\" | \"string\"; array: false }\n ? TailorDBField<CurrentDefined, Output>\n : never,\n config: SerialConfig<CurrentDefined[\"type\"] & (\"integer\" | \"string\")>,\n ) {\n (this as TailorDBField<CurrentDefined, Output>)._metadata.serial = config;\n return this as TailorDBField<\n Prettify<\n CurrentDefined & {\n serial: true;\n hooks: { create: false; update: false };\n }\n >,\n Output\n >;\n }\n\n /**\n * Clone the field with optional overrides for field options\n * @param {FieldOptions} [options] - Optional field options to override\n * @returns {TailorDBField<unknown, unknown>} A new TailorDBField instance with the same configuration\n */\n clone<const NewOpt extends FieldOptions>(\n options?: NewOpt,\n ): TailorDBField<\n Prettify<\n Omit<Defined, \"array\"> & {\n array: NewOpt extends { array: true } ? true : Defined[\"array\"];\n }\n >,\n FieldOutput<TailorToTs[Defined[\"type\"]], NewOpt>\n > {\n // Create a clone using Object.create to preserve prototype chain\n const clonedField = Object.create(Object.getPrototypeOf(this)) as TailorDBField<\n Defined,\n Output\n >;\n\n // Copy all properties\n Object.assign(clonedField, {\n type: this.type,\n fields: this.fields,\n _defined: this._defined,\n _output: this._output,\n });\n\n // Clone and merge metadata with new options\n clonedField._metadata = { ...this._metadata };\n if (options) {\n if (options.optional !== undefined) {\n clonedField._metadata.required = !options.optional;\n }\n if (options.array !== undefined) {\n clonedField._metadata.array = options.array;\n }\n }\n\n // Copy internal state\n if (this._rawRelation) {\n clonedField._rawRelation = {\n ...this._rawRelation,\n toward: { ...this._rawRelation.toward },\n };\n }\n\n return clonedField as TailorAnyDBField;\n }\n}\n\nconst createField = TailorDBField.create;\nfunction uuid<const Opt extends FieldOptions>(options?: Opt) {\n return createField(\"uuid\", options);\n}\n\nfunction string<const Opt extends FieldOptions>(options?: Opt) {\n return createField(\"string\", options);\n}\n\nfunction bool<const Opt extends FieldOptions>(options?: Opt) {\n return createField(\"boolean\", options);\n}\n\nfunction int<const Opt extends FieldOptions>(options?: Opt) {\n return createField(\"integer\", options);\n}\n\nfunction float<const Opt extends FieldOptions>(options?: Opt) {\n return createField(\"float\", options);\n}\n\nfunction date<const Opt extends FieldOptions>(options?: Opt) {\n return createField(\"date\", options);\n}\n\nfunction datetime<const Opt extends FieldOptions>(options?: Opt) {\n return createField(\"datetime\", options);\n}\n\nfunction time<const Opt extends FieldOptions>(options?: Opt) {\n return createField(\"time\", options);\n}\n\nfunction _enum<const V extends AllowedValues, const Opt extends FieldOptions>(\n values: V,\n options?: Opt,\n): TailorDBField<\n { type: \"enum\"; array: Opt extends { array: true } ? true : false },\n FieldOutput<AllowedValuesOutput<V>, Opt>\n> {\n return createField<\"enum\", Opt, AllowedValuesOutput<V>>(\"enum\", options, undefined, values);\n}\n\nfunction object<\n const F extends Record<string, TailorAnyDBField> & ExcludeNestedDBFields<F>,\n const Opt extends FieldOptions,\n>(fields: F, options?: Opt) {\n return createField(\"nested\", options, fields) as unknown as TailorDBField<\n { type: \"nested\"; array: Opt extends { array: true } ? true : false },\n FieldOutput<InferFieldsOutput<F>, Opt>\n >;\n}\n\n// Helper alias\n// oxlint-disable-next-line no-explicit-any\nexport type TailorAnyDBType = TailorDBType<any, any>;\n\nexport class TailorDBType<\n // Default kept loose to avoid forcing callers to supply generics.\n // oxlint-disable-next-line no-explicit-any\n const Fields extends Record<string, TailorAnyDBField> = any,\n User extends object = InferredAttributeMap,\n> {\n public readonly _output = null as unknown as InferFieldsOutput<Fields>;\n public _description?: string;\n private _settings: TypeFeatures = {};\n private _indexes: IndexDef<this>[] = [];\n private _permissions: RawPermissions = {};\n private _files: Record<string, string> = {};\n\n constructor(\n public readonly name: string,\n public readonly fields: Fields,\n options: { pluralForm?: string; description?: string },\n ) {\n this._description = options.description;\n\n if (options.pluralForm) {\n if (name === options.pluralForm) {\n throw new Error(`The name and the plural form must be different. name=${name}`);\n }\n this._settings.pluralForm = options.pluralForm;\n }\n }\n\n get metadata(): TailorDBTypeMetadata {\n // Convert indexes to the format expected by the manifest\n const indexes: Record<string, { fields: string[]; unique?: boolean }> = {};\n if (this._indexes && this._indexes.length > 0) {\n this._indexes.forEach((index) => {\n const fieldNames = index.fields.map((field) => String(field));\n const key = index.name || `idx_${fieldNames.join(\"_\")}`;\n indexes[key] = {\n fields: fieldNames,\n unique: index.unique,\n };\n });\n }\n\n return {\n name: this.name,\n description: this._description,\n settings: this._settings,\n permissions: this._permissions,\n files: this._files,\n ...(Object.keys(indexes).length > 0 && { indexes }),\n };\n }\n\n hooks(hooks: Hooks<Fields>) {\n // `Hooks<Fields>` is strongly typed, but `Object.entries()` loses that information.\n // oxlint-disable-next-line no-explicit-any\n Object.entries(hooks).forEach(([fieldName, fieldHooks]: [string, any]) => {\n this.fields[fieldName].hooks(fieldHooks);\n });\n return this;\n }\n\n validate(validators: Validators<Fields>) {\n Object.entries(validators).forEach(([fieldName, fieldValidators]) => {\n const field = this.fields[fieldName] as TailorAnyDBField;\n\n const validators = fieldValidators as\n | FieldValidateInput<unknown>\n | FieldValidateInput<unknown>[];\n\n const isValidateConfig = (v: unknown): v is ValidateConfig<unknown> => {\n return Array.isArray(v) && v.length === 2 && typeof v[1] === \"string\";\n };\n\n if (Array.isArray(validators)) {\n if (isValidateConfig(validators)) {\n field.validate(validators);\n } else {\n field.validate(...validators);\n }\n } else {\n field.validate(validators);\n }\n });\n return this;\n }\n\n features(features: Omit<TypeFeatures, \"pluralForm\">) {\n this._settings = { ...this._settings, ...features };\n return this;\n }\n\n indexes(...indexes: IndexDef<this>[]) {\n this._indexes = indexes;\n return this;\n }\n\n files<const F extends string>(\n files: Record<F, string> & Partial<Record<keyof output<this>, never>>,\n ) {\n this._files = files;\n return this;\n }\n\n permission<\n U extends object = User,\n P extends TailorTypePermission<U, output<this>> = TailorTypePermission<U, output<this>>,\n >(permission: P) {\n const ret = this as TailorDBType<Fields, U>;\n ret._permissions.record = permission;\n return ret;\n }\n\n gqlPermission<\n U extends object = User,\n P extends TailorTypeGqlPermission<U> = TailorTypeGqlPermission<U>,\n >(permission: P) {\n const ret = this as TailorDBType<Fields, U>;\n ret._permissions.gql = permission;\n return ret;\n }\n\n description(description: string) {\n this._description = description;\n return this;\n }\n\n /**\n * Pick specific fields from the type\n * @param {(keyof Fields)[]} keys - Array of field keys to pick\n * @param {FieldOptions} options - Optional field options to apply to picked fields\n * @returns {Record<string, TailorDBField<unknown, unknown>>} An object containing only the specified fields\n */\n pickFields<K extends keyof Fields, const Opt extends FieldOptions>(keys: K[], options: Opt) {\n const result = {} as Record<K, TailorAnyDBField>;\n for (const key of keys) {\n if (options) {\n result[key] = this.fields[key].clone(options);\n } else {\n result[key] = this.fields[key];\n }\n }\n return result as {\n [P in K]: Fields[P] extends TailorDBField<infer D, infer _O>\n ? TailorDBField<\n Omit<D, \"array\"> & {\n array: Opt extends { array: true } ? true : D[\"array\"];\n },\n FieldOutput<TailorToTs[D[\"type\"]], Opt>\n >\n : never;\n };\n }\n\n /**\n * Omit specific fields from the type\n * @template K\n * @param {(keyof Fields)[]} keys - Array of field keys to omit\n * @returns {Omit<Fields, K>} An object containing all fields except the specified ones\n */\n omitFields<K extends keyof Fields>(keys: K[]): Omit<Fields, K> {\n const keysSet = new Set(keys);\n const result = {} as Record<string, TailorAnyDBField>;\n for (const key in this.fields) {\n if (Object.hasOwn(this.fields, key) && !keysSet.has(key as unknown as K)) {\n result[key] = this.fields[key];\n }\n }\n return result as Omit<Fields, K>;\n }\n}\n\nexport type TailorDBInstance<\n // Default kept loose for convenience; callers still get fully inferred types from `db.type()`.\n // oxlint-disable-next-line no-explicit-any\n Fields extends Record<string, TailorAnyDBField> = any,\n User extends object = InferredAttributeMap,\n> = InstanceType<typeof TailorDBType<Fields, User>>;\n\nconst idField = uuid();\ntype idField = typeof idField;\ntype DBType<F extends { id?: never } & Record<string, TailorAnyDBField>> = TailorDBInstance<\n { id: idField } & F\n>;\n\n/**\n * Creates a new database type with the specified fields\n * @param {string | [string, string]} name - The name of the type, or a tuple of [name, pluralForm]\n * @param {Record<string, TailorDBField<unknown, unknown>>} fields - The field definitions for the type\n * @returns {DBType<F>} A new TailorDBType instance\n */\nfunction dbType<const F extends { id?: never } & Record<string, TailorAnyDBField>>(\n name: string | [string, string],\n fields: F,\n): DBType<F>;\n/**\n * Creates a new database type with the specified fields and description\n * @param {string | [string, string]} name - The name of the type, or a tuple of [name, pluralForm]\n * @param {string} description - A description of the type\n * @param {Record<string, TailorDBField<unknown, unknown>>} fields - The field definitions for the type\n * @returns {DBType<F>} A new TailorDBType instance\n */\nfunction dbType<const F extends { id?: never } & Record<string, TailorAnyDBField>>(\n name: string | [string, string],\n description: string,\n fields: F,\n): DBType<F>;\nfunction dbType<const F extends { id?: never } & Record<string, TailorAnyDBField>>(\n name: string | [string, string],\n fieldsOrDescription: string | F,\n fields?: F,\n): DBType<F> {\n const typeName = Array.isArray(name) ? name[0] : name;\n const pluralForm = Array.isArray(name) ? name[1] : undefined;\n\n let description: string | undefined;\n let fieldDef: F;\n if (typeof fieldsOrDescription === \"string\") {\n description = fieldsOrDescription;\n fieldDef = fields as F;\n } else {\n fieldDef = fieldsOrDescription;\n }\n return new TailorDBType<{ id: idField } & F>(\n typeName,\n {\n id: idField,\n ...fieldDef,\n },\n { pluralForm, description },\n ) as DBType<F>;\n}\n\nexport const db = {\n type: dbType,\n uuid,\n string,\n bool,\n int,\n float,\n date,\n datetime,\n time,\n enum: _enum,\n object,\n fields: {\n timestamps: () => ({\n createdAt: datetime()\n .hooks({ create: () => new Date() })\n .description(\"Record creation timestamp\"),\n updatedAt: datetime({ optional: true })\n .hooks({ update: () => new Date() })\n .description(\"Record last update timestamp\"),\n }),\n },\n};\n","import { type TailorDBInstance } from \"../tailordb/schema\";\nimport type {\n AuthInvoker as ParserAuthInvoker,\n AuthServiceInput,\n UserAttributeListKey,\n UserAttributeMap,\n} from \"@/parser/service/auth/types\";\n\ndeclare const authDefinitionBrand: unique symbol;\ntype AuthDefinitionBrand = { readonly [authDefinitionBrand]: true };\n\nexport type {\n OIDC,\n SAML,\n IDToken,\n BuiltinIdP,\n IdProviderConfig,\n OAuth2ClientGrantType,\n OAuth2ClientInput as OAuth2Client,\n SCIMAuthorization,\n SCIMAttributeType,\n SCIMAttribute,\n SCIMAttributeMapping,\n SCIMResource,\n SCIMConfig,\n TenantProviderConfig,\n ValueOperand,\n UsernameFieldKey,\n UserAttributeKey,\n UserAttributeListKey,\n UserAttributeMap,\n AuthServiceInput,\n} from \"@/parser/service/auth/types\";\n\n/**\n * Invoker type compatible with tailor.v1.AuthInvoker\n * - namespace: auth service name\n * - machineUserName: machine user name\n */\nexport type AuthInvoker<M extends string> = Omit<ParserAuthInvoker, \"machineUserName\"> & {\n machineUserName: M;\n};\n\n/**\n * Define an auth service for the Tailor SDK.\n * @template Name\n * @template User\n * @template AttributeMap\n * @template AttributeList\n * @template MachineUserNames\n * @template M\n * @param {Name} name - Auth service name\n * @param {AuthServiceInput<User, AttributeMap, AttributeList, MachineUserNames>} config - Auth service configuration\n * @returns {AuthDefinitionBrand & AuthServiceInput<User, AttributeMap, AttributeList, MachineUserNames> & { name: string; invoker<M extends MachineUserNames>(machineUser: M): AuthInvoker<M> }} Defined auth service\n */\nexport function defineAuth<\n const Name extends string,\n const User extends TailorDBInstance,\n const AttributeMap extends UserAttributeMap<User>,\n const AttributeList extends UserAttributeListKey<User>[],\n const MachineUserNames extends string,\n>(name: Name, config: AuthServiceInput<User, AttributeMap, AttributeList, MachineUserNames>) {\n const result = {\n ...config,\n name,\n invoker<M extends MachineUserNames>(machineUser: M) {\n return { namespace: name, machineUserName: machineUser } as const;\n },\n } as const satisfies AuthServiceInput<User, AttributeMap, AttributeList, MachineUserNames> & {\n name: string;\n invoker<M extends MachineUserNames>(machineUser: M): AuthInvoker<M>;\n };\n\n return result as typeof result & AuthDefinitionBrand;\n}\n\nexport type AuthExternalConfig = { name: string; external: true };\n\n// We intentionally use `any` placeholders here to avoid re-exporting a large generic surface.\n// oxlint-disable-next-line no-explicit-any\nexport type AuthOwnConfig = ReturnType<typeof defineAuth<string, any, any, any, string>>;\n\nexport type AuthConfig = AuthOwnConfig | AuthExternalConfig;\n","import type { TailorEnv } from \"@/configure/types/env\";\nimport type { JsonCompatible } from \"@/configure/types/helpers\";\nimport type { Jsonifiable, Jsonify, JsonPrimitive } from \"type-fest\";\n\n/**\n * Symbol used to brand WorkflowJob objects created by createWorkflowJob.\n * This enables reliable runtime detection of workflow jobs regardless of\n * how they were imported or assigned (variable reassignment, destructuring, etc.)\n */\nexport const WORKFLOW_JOB_BRAND = Symbol.for(\"tailor:workflow-job\");\n\n/**\n * Context object passed as the second argument to workflow job body functions.\n */\nexport type WorkflowJobContext = {\n env: TailorEnv;\n};\n\n/**\n * Allowed output types for workflow job body functions.\n * Includes Jsonifiable (JSON-serializable values including objects with toJSON like Date),\n * undefined, and void.\n */\nexport type WorkflowJobOutput = Jsonifiable | undefined | void;\n\n/**\n * Convert output type to what trigger returns after JSON serialization.\n * - Jsonifiable values are converted via Jsonify (Date -> string, etc.)\n * - undefined remains undefined\n * - void becomes void\n */\ntype JsonifyOutput<T> = T extends Jsonifiable ? Jsonify<T> : T;\n\n/**\n * Input type constraint for workflow jobs.\n * Accepts any type that is JSON-compatible (primitives, arrays, objects with JSON-compatible values).\n * Excludes objects with toJSON method (like Date) since they won't be serialized in input.\n */\nexport type WorkflowJobInput = undefined | JsonCompatible<unknown>;\n\n/**\n * WorkflowJob represents a job that can be triggered in a workflow.\n *\n * Type constraints:\n * - Input: Must be JSON-compatible (no Date/toJSON objects) or undefined. Interfaces are allowed.\n * - Output: Must be Jsonifiable, undefined, or void\n * - Trigger returns Jsonify<Output> (Date becomes string after JSON.stringify)\n */\nexport interface WorkflowJob<Name extends string = string, Input = undefined, Output = undefined> {\n readonly [WORKFLOW_JOB_BRAND]?: true;\n name: Name;\n /**\n * Trigger this job with the given input.\n * At runtime, this is a placeholder that calls the body function.\n * During bundling, calls to .trigger() are transformed to\n * tailor.workflow.triggerJobFunction(\"<job-name>\", args).\n *\n * Returns Jsonify<Output> because the value passes through JSON.stringify.\n */\n trigger: [Input] extends [undefined]\n ? () => Promise<JsonifyOutput<Awaited<Output>>>\n : (input: Input) => Promise<JsonifyOutput<Awaited<Output>>>;\n body: (input: Input, context: WorkflowJobContext) => Output | Promise<Output>;\n}\n\n/**\n * Check if a type contains any non-JSON-compatible values.\n * Returns `true` if the type is valid for input, `false` otherwise.\n */\ntype IsValidInput<T> = T extends undefined\n ? true\n : T extends JsonPrimitive\n ? true\n : T extends readonly (infer U)[]\n ? IsValidInput<U>\n : T extends object\n ? T extends { toJSON: () => unknown }\n ? false\n : { [K in keyof T]: IsValidInput<T[K]> }[keyof T] extends true\n ? true\n : false\n : false;\n\n/**\n * Check if a type is valid for output.\n * Returns `true` if the type is valid, `false` otherwise.\n */\ntype IsValidOutput<T> = T extends undefined | void\n ? true\n : T extends JsonPrimitive\n ? true\n : T extends readonly (infer U)[]\n ? IsValidOutput<U>\n : T extends object\n ? { [K in keyof T]: IsValidOutput<T[K]> }[keyof T] extends true\n ? true\n : false\n : false;\n\n/**\n * Body function type with conditional constraint.\n * If input contains invalid types (like Date), the body type becomes `never` to cause an error.\n */\ntype WorkflowJobBody<I, O> =\n IsValidInput<I> extends true\n ? IsValidOutput<O> extends true\n ? (input: I, context: WorkflowJobContext) => O | Promise<O>\n : never\n : never;\n\nexport const createWorkflowJob = <const Name extends string, I = undefined, O = undefined>(config: {\n readonly name: Name;\n readonly body: WorkflowJobBody<I, O>;\n}): WorkflowJob<Name, I, Awaited<O>> => {\n return {\n [WORKFLOW_JOB_BRAND]: true,\n name: config.name,\n // JSON.parse(JSON.stringify(...)) ensures the return value matches Jsonify<Output> type.\n // This converts Date objects to strings, matching actual runtime behavior.\n trigger: async (args?: unknown) => {\n const ret = await tailor.workflow.triggerJobFunction(config.name, args);\n return ret ? JSON.parse(JSON.stringify(ret)) : ret;\n },\n body: config.body,\n } as WorkflowJob<Name, I, Awaited<O>>;\n};\n","import type { AuthConfig } from \"@/configure/services/auth\";\nimport type { ExecutorServiceInput } from \"@/configure/services/executor/types\";\nimport type { IdPConfig } from \"@/configure/services/idp\";\nimport type { ResolverServiceInput } from \"@/configure/services/resolver/types\";\nimport type { StaticWebsiteConfig } from \"@/configure/services/staticwebsite\";\nimport type { TailorDBServiceInput } from \"@/configure/services/tailordb/types\";\nimport type { WorkflowServiceInput } from \"@/configure/services/workflow/types\";\nimport type { GeneratorConfig } from \"@/parser/generator-config/types\";\n\nexport interface AppConfig<\n Auth extends AuthConfig = AuthConfig,\n Idp extends IdPConfig[] = IdPConfig[],\n StaticWebsites extends StaticWebsiteConfig[] = StaticWebsiteConfig[],\n Env extends Record<string, string | number | boolean> = Record<string, string | number | boolean>,\n> {\n name: string;\n env?: Env;\n cors?: string[];\n allowedIpAddresses?: string[];\n disableIntrospection?: boolean;\n db?: TailorDBServiceInput;\n resolver?: ResolverServiceInput;\n idp?: Idp;\n auth?: Auth;\n executor?: ExecutorServiceInput;\n workflow?: WorkflowServiceInput;\n staticWebsites?: StaticWebsites;\n}\n\nlet distPath: string | null = null;\nexport const getDistDir = (): string => {\n const configured = process.env.TAILOR_SDK_OUTPUT_DIR;\n if (configured && configured !== distPath) {\n distPath = configured;\n } else if (distPath === null) {\n distPath = configured || \".tailor-sdk\";\n }\n return distPath;\n};\n\n/**\n * Define a Tailor SDK application configuration with shallow exactness.\n * @template Config\n * @param {Config} config - Application configuration\n * @returns {Config} The same configuration object\n */\nexport function defineConfig<\n const Config extends AppConfig &\n // type-fest's Exact works recursively and causes type errors, so we use a shallow version here.\n Record<Exclude<keyof Config, keyof AppConfig>, never>,\n>(config: Config) {\n return config;\n}\n\n/**\n * Define generators to be used with the Tailor SDK.\n * @param {...GeneratorConfig} configs - Generator configurations\n * @returns {GeneratorConfig[]} Generator configurations as given\n */\nexport function defineGenerators(...configs: GeneratorConfig[]) {\n return configs;\n}\n"],"mappings":";;;;;;AAWA,SAAgB,iBAAiB,QAAuC;AACtE,QAAO,OAAO,KAAK,UAAU;AAC3B,MAAI,OAAO,UAAU,SACnB,QAAO;GAAE;GAAO,aAAa;GAAI;AAEnC,SAAO;GAAE,GAAG;GAAO,aAAa,MAAM,eAAe;GAAI;GACzD;;;;;ACFJ,MAAM,QAAQ;CACZ,MAAM;CACN,MAAM;CACN,MAAM;CACN,UACE;CACH;AAMD,IAAa,cAAb,MAAa,YAOiB;CAC5B,AAAU;CACV,AAAgB,WAAoB;CACpC,AAAgB,UAAU;CAE1B,IAAI,WAAW;AACb,SAAO,EAAE,GAAG,KAAK,WAAW;;CAG9B,AAAU,YACR,AAAgBA,MAChB,SACA,AAAgBC,SAAyC,EAAE,EAC3D,QACA;EAJgB;EAEA;AAGhB,OAAK,YAAY,EAAE,UAAU,MAAM;AACnC,MAAI,SAAS;AACX,OAAI,QAAQ,aAAa,KACvB,MAAK,UAAU,WAAW;AAE5B,OAAI,QAAQ,UAAU,KACpB,MAAK,UAAU,QAAQ;;AAG3B,MAAI,OACF,MAAK,UAAU,gBAAgB,iBAAiB,OAAO;;CAI3D,OAAO,OAKL,MACA,SACA,QACA,QACA;AACA,SAAO,IAAI,YAGT,MAAM,SAAS,QAAQ,OAAO;;CAGlC,YAIE,aACA;AACA,OAAK,UAAU,cAAc;AAC7B,SAAO;;CAGT,SAME,UACA;AACA,OAAK,UAAU,WAAW;AAC1B,SAAO;;CAGT,SAIE,GAAG,UACH;AACA,OAAK,UAAU,WAAW;AAC1B,SAAO;;;;;;CAOT,MAAM,MAI8B;AAClC,SAAO,KAAK,eAAe;GACzB,OAAO,KAAK;GACZ,MAAM,KAAK;GACX,MAAM,KAAK;GACX,WAAW,EAAE;GACd,CAAC;;;;;;;CAQJ,AAAQ,eAAe,MAKM;EAC3B,MAAM,EAAE,OAAO,MAAM,MAAM,cAAc;EACzC,MAAMC,SAAmC,EAAE;AAG3C,UAAQ,KAAK,MAAb;GACE,KAAK;AACH,QAAI,OAAO,UAAU,SACnB,QAAO,KAAK;KACV,SAAS,+BAA+B,OAAO,MAAM;KACrD,MAAM,UAAU,SAAS,IAAI,YAAY;KAC1C,CAAC;AAEJ;GAEF,KAAK;AACH,QAAI,OAAO,UAAU,YAAY,CAAC,OAAO,UAAU,MAAM,CACvD,QAAO,KAAK;KACV,SAAS,iCAAiC,OAAO,MAAM;KACvD,MAAM,UAAU,SAAS,IAAI,YAAY;KAC1C,CAAC;AAEJ;GAEF,KAAK;AACH,QAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,MAAM,CACtD,QAAO,KAAK;KACV,SAAS,+BAA+B,OAAO,MAAM;KACrD,MAAM,UAAU,SAAS,IAAI,YAAY;KAC1C,CAAC;AAEJ;GAEF,KAAK;AACH,QAAI,OAAO,UAAU,UACnB,QAAO,KAAK;KACV,SAAS,gCAAgC,OAAO,MAAM;KACtD,MAAM,UAAU,SAAS,IAAI,YAAY;KAC1C,CAAC;AAEJ;GAEF,KAAK;AACH,QAAI,OAAO,UAAU,YAAY,CAAC,MAAM,KAAK,KAAK,MAAM,CACtD,QAAO,KAAK;KACV,SAAS,mCAAmC,OAAO,MAAM;KACzD,MAAM,UAAU,SAAS,IAAI,YAAY;KAC1C,CAAC;AAEJ;GACF,KAAK;AACH,QAAI,OAAO,UAAU,YAAY,CAAC,MAAM,KAAK,KAAK,MAAM,CACtD,QAAO,KAAK;KACV,SAAS,mDAAmD,OAAO,MAAM;KACzE,MAAM,UAAU,SAAS,IAAI,YAAY;KAC1C,CAAC;AAEJ;GACF,KAAK;AACH,QAAI,OAAO,UAAU,YAAY,CAAC,MAAM,SAAS,KAAK,MAAM,CAC1D,QAAO,KAAK;KACV,SAAS,0CAA0C,OAAO,MAAM;KAChE,MAAM,UAAU,SAAS,IAAI,YAAY;KAC1C,CAAC;AAEJ;GACF,KAAK;AACH,QAAI,OAAO,UAAU,YAAY,CAAC,MAAM,KAAK,KAAK,MAAM,CACtD,QAAO,KAAK;KACV,SAAS,8CAA8C,OAAO,MAAM;KACpE,MAAM,UAAU,SAAS,IAAI,YAAY;KAC1C,CAAC;AAEJ;GACF,KAAK;AACH,QAAI,KAAK,SAAS,eAAe;KAC/B,MAAM,gBAAgB,KAAK,SAAS,cAAc,KAAK,MAAM,EAAE,MAAM;AACrE,SAAI,OAAO,UAAU,YAAY,CAAC,cAAc,SAAS,MAAM,CAC7D,QAAO,KAAK;MACV,SAAS,mBAAmB,cAAc,KAAK,KAAK,CAAC,cAAc,OAAO,MAAM;MAChF,MAAM,UAAU,SAAS,IAAI,YAAY;MAC1C,CAAC;;AAGN;GAEF,KAAK;AAEH,QACE,OAAO,UAAU,YACjB,UAAU,QACV,MAAM,QAAQ,MAAM,IACpB,iBAAiB,KAEjB,QAAO,KAAK;KACV,SAAS,gCAAgC,OAAO,MAAM;KACtD,MAAM,UAAU,SAAS,IAAI,YAAY;KAC1C,CAAC;aACO,KAAK,UAAU,OAAO,KAAK,KAAK,OAAO,CAAC,SAAS,EAC1D,MAAK,MAAM,CAAC,WAAW,UAAU,OAAO,QAAQ,KAAK,OAAO,EAAE;KAC5D,MAAM,aAAa,QAAQ;KAC3B,MAAM,SAAS,MAAM,eAAe;MAClC,OAAO;MACP;MACA;MACA,WAAW,UAAU,OAAO,UAAU;MACvC,CAAC;AACF,SAAI,OAAO,OACT,QAAO,KAAK,GAAG,OAAO,OAAO;;AAInC;;EAIJ,MAAM,cAAc,KAAK,SAAS;AAClC,MAAI,eAAe,YAAY,SAAS,EACtC,MAAK,MAAM,iBAAiB,aAAa;GACvC,MAAM,EAAE,IAAI,YACV,OAAO,kBAAkB,aACrB;IAAE,IAAI;IAAe,SAAS;IAAqB,GACnD;IAAE,IAAI,cAAc;IAAI,SAAS,cAAc;IAAI;AAEzD,OAAI,CAAC,GAAG;IAAE;IAAO;IAAM;IAAM,CAAC,CAC5B,QAAO,KAAK;IACV;IACA,MAAM,UAAU,SAAS,IAAI,YAAY;IAC1C,CAAC;;AAKR,SAAO;;;;;;CAOT,AAAQ,eAAe,MAOa;EAClC,MAAM,EAAE,OAAO,MAAM,MAAM,cAAc;EACzC,MAAMA,SAAmC,EAAE;EAG3C,MAAM,oBAAoB,UAAU,QAAQ,UAAU;AACtD,MAAI,KAAK,SAAS,YAAY,mBAAmB;AAC/C,UAAO,KAAK;IACV,SAAS;IACT,MAAM,UAAU,SAAS,IAAI,YAAY;IAC1C,CAAC;AACF,UAAO,EAAE,QAAQ;;AAInB,MAAI,CAAC,KAAK,SAAS,YAAY,kBAC7B,QAAO,EAAE,OAAO;AAIlB,MAAI,KAAK,SAAS,OAAO;AACvB,OAAI,CAAC,MAAM,QAAQ,MAAM,EAAE;AACzB,WAAO,KAAK;KACV,SAAS;KACT,MAAM,UAAU,SAAS,IAAI,YAAY;KAC1C,CAAC;AACF,WAAO,EAAE,QAAQ;;AAInB,QAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;IACrC,MAAM,eAAe,MAAM;IAC3B,MAAM,cAAc,UAAU,OAAO,IAAI,EAAE,GAAG;IAG9C,MAAM,gBAAgB,KAAK,eAAe;KACxC,OAAO;KACP;KACA;KACA,WAAW;KACZ,CAAC;AACF,QAAI,cAAc,SAAS,EACzB,QAAO,KAAK,GAAG,cAAc;;AAIjC,OAAI,OAAO,SAAS,EAClB,QAAO,EAAE,QAAQ;AAEnB,UAAO,EAAS,OAAiB;;EAInC,MAAM,cAAc,KAAK,eAAe;GAAE;GAAO;GAAM;GAAM;GAAW,CAAC;AACzE,SAAO,KAAK,GAAG,YAAY;AAE3B,MAAI,OAAO,SAAS,EAClB,QAAO,EAAE,QAAQ;AAGnB,SAAO,EAAE,OAAO;;;AAIpB,MAAMC,gBAAc,YAAY;AAChC,SAASC,OAAqC,SAAe;AAC3D,QAAOD,cAAY,QAAQ,QAAQ;;AAGrC,SAASE,SAAuC,SAAe;AAC7D,QAAOF,cAAY,UAAU,QAAQ;;AAGvC,SAASG,OAAqC,SAAe;AAC3D,QAAOH,cAAY,WAAW,QAAQ;;AAGxC,SAASI,MAAoC,SAAe;AAC1D,QAAOJ,cAAY,WAAW,QAAQ;;AAGxC,SAASK,QAAsC,SAAe;AAC5D,QAAOL,cAAY,SAAS,QAAQ;;AAGtC,SAASM,OAAqC,SAAe;AAC3D,QAAON,cAAY,QAAQ,QAAQ;;AAGrC,SAASO,WAAyC,SAAe;AAC/D,QAAOP,cAAY,YAAY,QAAQ;;AAGzC,SAASQ,OAAqC,SAAe;AAC3D,QAAOR,cAAY,QAAQ,QAAQ;;AAGrC,SAASS,QACP,QACA,SAIA;AACA,QAAOT,cAAiD,QAAQ,SAAS,QAAW,OAAO;;AAG7F,SAASU,SACP,QACA,SACA;AAKA,QAJoBV,cAAY,UAAU,SAAS,OAAO;;AAO5D,MAAa,IAAI;CACf;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,MAAMS;CACN;CACD;;;;;ACnXD,MAAaE,4BAAwC;CACnD,IAAI;CACJ,MAAM;CACN,aAAa;CACb,YAAY;CACZ,eAAe,EAAE;CAClB;;;;;;;;;;;ACwCD,MAAaC,+BAAqD;CAChE,QAAQ,CAAC;EAAE,YAAY,EAAE;EAAE,QAAQ;EAAM,CAAC;CAC1C,MAAM,CAAC;EAAE,YAAY,EAAE;EAAE,QAAQ;EAAM,CAAC;CACxC,QAAQ,CAAC;EAAE,YAAY,EAAE;EAAE,QAAQ;EAAM,CAAC;CAC1C,QAAQ,CAAC;EAAE,YAAY,EAAE;EAAE,QAAQ;EAAM,CAAC;CAC3C;;;;;;;;AASD,MAAaC,8BAAuD,CAClE;CAAE,YAAY,EAAE;CAAE,SAAS;CAAO,QAAQ;CAAM,CACjD;;;;ACvDD,SAAS,qBACP,QAC8B;AAC9B,QAAO,OAAO,OAAO,SAAS;;AAOhC,IAAa,gBAAb,MAAa,sBAGH,YAA8C;CACtD,AAAQ,eAA8C;CAEtD,IAAI,cAAuD;AACzD,SAAO,KAAK,eACR;GAAE,GAAG,KAAK;GAAc,QAAQ,EAAE,GAAG,KAAK,aAAa,QAAQ;GAAE,GACjE;;CAGN,IAAI,WAAW;AACb,SAAO,EAAE,GAAG,KAAK,WAAW;;CAG9B,AAAQ,YACN,MACA,SACA,QACA,QACA;AACA,QAAM,MAAM,SAAS,QAAQ,OAAO;;CAGtC,OAAO,OAKL,MACA,SACA,QACA,QACA;AACA,SAAO,IAAI,cAGT,MAAM,SAAS,QAAQ,OAAO;;CAGlC,YAIE,aACyE;AAGzE,SAAO,MAAM,YAAY,YAAY;;CA6BvC,SAIE,QAC+C;EAE/C,MAAM,aAAa,qBAAqB,OAAO,GAAG,SAAS,OAAO,OAAO,KAAK;AAC9E,OAAK,eAAe;GAClB,MAAM,OAAO;GACb,QAAQ;IACN,MAAM;IACN,IAAI,OAAO,OAAO;IAClB,KAAK,OAAO,OAAO;IACpB;GACD,UAAU,OAAO;GAClB;AACD,SAAO;;CAGT,QAME;AACA,OAAK,UAAU,QAAQ;AACvB,SAAO;;CAGT,SAME;AACA,OAAK,UAAU,SAAS;AACxB,OAAK,UAAU,QAAQ;AACvB,SAAO;;CAGT,SAME;AACA,OAAK,UAAU,SAAS;AACxB,SAAO;;CAGT,MAME,OACA;AACA,OAAK,UAAU,QAAQ;AACvB,SAAO;;CAcT,SAIE,GAAG,UACH;AACA,OAAK,UAAU,WAAW;AAC1B,SAAO;;CAGT,OAQE,QACA;AACA,EAAC,KAA+C,UAAU,SAAS;AACnE,SAAO;;;;;;;CAgBT,MACE,SAQA;EAEA,MAAM,cAAc,OAAO,OAAO,OAAO,eAAe,KAAK,CAAC;AAM9D,SAAO,OAAO,aAAa;GACzB,MAAM,KAAK;GACX,QAAQ,KAAK;GACb,UAAU,KAAK;GACf,SAAS,KAAK;GACf,CAAC;AAGF,cAAY,YAAY,EAAE,GAAG,KAAK,WAAW;AAC7C,MAAI,SAAS;AACX,OAAI,QAAQ,aAAa,OACvB,aAAY,UAAU,WAAW,CAAC,QAAQ;AAE5C,OAAI,QAAQ,UAAU,OACpB,aAAY,UAAU,QAAQ,QAAQ;;AAK1C,MAAI,KAAK,aACP,aAAY,eAAe;GACzB,GAAG,KAAK;GACR,QAAQ,EAAE,GAAG,KAAK,aAAa,QAAQ;GACxC;AAGH,SAAO;;;AAIX,MAAM,cAAc,cAAc;AAClC,SAAS,KAAqC,SAAe;AAC3D,QAAO,YAAY,QAAQ,QAAQ;;AAGrC,SAAS,OAAuC,SAAe;AAC7D,QAAO,YAAY,UAAU,QAAQ;;AAGvC,SAAS,KAAqC,SAAe;AAC3D,QAAO,YAAY,WAAW,QAAQ;;AAGxC,SAAS,IAAoC,SAAe;AAC1D,QAAO,YAAY,WAAW,QAAQ;;AAGxC,SAAS,MAAsC,SAAe;AAC5D,QAAO,YAAY,SAAS,QAAQ;;AAGtC,SAAS,KAAqC,SAAe;AAC3D,QAAO,YAAY,QAAQ,QAAQ;;AAGrC,SAAS,SAAyC,SAAe;AAC/D,QAAO,YAAY,YAAY,QAAQ;;AAGzC,SAAS,KAAqC,SAAe;AAC3D,QAAO,YAAY,QAAQ,QAAQ;;AAGrC,SAAS,MACP,QACA,SAIA;AACA,QAAO,YAAiD,QAAQ,SAAS,QAAW,OAAO;;AAG7F,SAAS,OAGP,QAAW,SAAe;AAC1B,QAAO,YAAY,UAAU,SAAS,OAAO;;AAU/C,IAAa,eAAb,MAKE;CACA,AAAgB,UAAU;CAC1B,AAAO;CACP,AAAQ,YAA0B,EAAE;CACpC,AAAQ,WAA6B,EAAE;CACvC,AAAQ,eAA+B,EAAE;CACzC,AAAQ,SAAiC,EAAE;CAE3C,YACE,AAAgBC,MAChB,AAAgBC,QAChB,SACA;EAHgB;EACA;AAGhB,OAAK,eAAe,QAAQ;AAE5B,MAAI,QAAQ,YAAY;AACtB,OAAI,SAAS,QAAQ,WACnB,OAAM,IAAI,MAAM,wDAAwD,OAAO;AAEjF,QAAK,UAAU,aAAa,QAAQ;;;CAIxC,IAAI,WAAiC;EAEnC,MAAMC,UAAkE,EAAE;AAC1E,MAAI,KAAK,YAAY,KAAK,SAAS,SAAS,EAC1C,MAAK,SAAS,SAAS,UAAU;GAC/B,MAAM,aAAa,MAAM,OAAO,KAAK,UAAU,OAAO,MAAM,CAAC;GAC7D,MAAM,MAAM,MAAM,QAAQ,OAAO,WAAW,KAAK,IAAI;AACrD,WAAQ,OAAO;IACb,QAAQ;IACR,QAAQ,MAAM;IACf;IACD;AAGJ,SAAO;GACL,MAAM,KAAK;GACX,aAAa,KAAK;GAClB,UAAU,KAAK;GACf,aAAa,KAAK;GAClB,OAAO,KAAK;GACZ,GAAI,OAAO,KAAK,QAAQ,CAAC,SAAS,KAAK,EAAE,SAAS;GACnD;;CAGH,MAAM,OAAsB;AAG1B,SAAO,QAAQ,MAAM,CAAC,SAAS,CAAC,WAAW,gBAA+B;AACxE,QAAK,OAAO,WAAW,MAAM,WAAW;IACxC;AACF,SAAO;;CAGT,SAAS,YAAgC;AACvC,SAAO,QAAQ,WAAW,CAAC,SAAS,CAAC,WAAW,qBAAqB;GACnE,MAAM,QAAQ,KAAK,OAAO;GAE1B,MAAMC,eAAa;GAInB,MAAM,oBAAoB,MAA6C;AACrE,WAAO,MAAM,QAAQ,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,EAAE,OAAO;;AAG/D,OAAI,MAAM,QAAQA,aAAW,CAC3B,KAAI,iBAAiBA,aAAW,CAC9B,OAAM,SAASA,aAAW;OAE1B,OAAM,SAAS,GAAGA,aAAW;OAG/B,OAAM,SAASA,aAAW;IAE5B;AACF,SAAO;;CAGT,SAAS,UAA4C;AACnD,OAAK,YAAY;GAAE,GAAG,KAAK;GAAW,GAAG;GAAU;AACnD,SAAO;;CAGT,QAAQ,GAAG,SAA2B;AACpC,OAAK,WAAW;AAChB,SAAO;;CAGT,MACE,OACA;AACA,OAAK,SAAS;AACd,SAAO;;CAGT,WAGE,YAAe;EACf,MAAM,MAAM;AACZ,MAAI,aAAa,SAAS;AAC1B,SAAO;;CAGT,cAGE,YAAe;EACf,MAAM,MAAM;AACZ,MAAI,aAAa,MAAM;AACvB,SAAO;;CAGT,YAAY,aAAqB;AAC/B,OAAK,eAAe;AACpB,SAAO;;;;;;;;CAST,WAAmE,MAAW,SAAc;EAC1F,MAAM,SAAS,EAAE;AACjB,OAAK,MAAM,OAAO,KAChB,KAAI,QACF,QAAO,OAAO,KAAK,OAAO,KAAK,MAAM,QAAQ;MAE7C,QAAO,OAAO,KAAK,OAAO;AAG9B,SAAO;;;;;;;;CAkBT,WAAmC,MAA4B;EAC7D,MAAM,UAAU,IAAI,IAAI,KAAK;EAC7B,MAAM,SAAS,EAAE;AACjB,OAAK,MAAM,OAAO,KAAK,OACrB,KAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAoB,CACtE,QAAO,OAAO,KAAK,OAAO;AAG9B,SAAO;;;AAWX,MAAM,UAAU,MAAM;AA4BtB,SAAS,OACP,MACA,qBACA,QACW;CACX,MAAM,WAAW,MAAM,QAAQ,KAAK,GAAG,KAAK,KAAK;CACjD,MAAM,aAAa,MAAM,QAAQ,KAAK,GAAG,KAAK,KAAK;CAEnD,IAAIC;CACJ,IAAIC;AACJ,KAAI,OAAO,wBAAwB,UAAU;AAC3C,gBAAc;AACd,aAAW;OAEX,YAAW;AAEb,QAAO,IAAI,aACT,UACA;EACE,IAAI;EACJ,GAAG;EACJ,EACD;EAAE;EAAY;EAAa,CAC5B;;AAGH,MAAa,KAAK;CAChB,MAAM;CACN;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,MAAM;CACN;CACA,QAAQ,EACN,mBAAmB;EACjB,WAAW,UAAU,CAClB,MAAM,EAAE,8BAAc,IAAI,MAAM,EAAE,CAAC,CACnC,YAAY,4BAA4B;EAC3C,WAAW,SAAS,EAAE,UAAU,MAAM,CAAC,CACpC,MAAM,EAAE,8BAAc,IAAI,MAAM,EAAE,CAAC,CACnC,YAAY,+BAA+B;EAC/C,GACF;CACF;;;;;;;;;;;;;;;;AC3iBD,SAAgB,WAMd,MAAY,QAA+E;AAY3F,QAXe;EACb,GAAG;EACH;EACA,QAAoC,aAAgB;AAClD,UAAO;IAAE,WAAW;IAAM,iBAAiB;IAAa;;EAE3D;;;;;;;;;;AC3DH,MAAa,qBAAqB,OAAO,IAAI,sBAAsB;AAqGnE,MAAa,qBAA8E,WAGnD;AACtC,QAAO;GACJ,qBAAqB;EACtB,MAAM,OAAO;EAGb,SAAS,OAAO,SAAmB;GACjC,MAAM,MAAM,MAAM,OAAO,SAAS,mBAAmB,OAAO,MAAM,KAAK;AACvE,UAAO,MAAM,KAAK,MAAM,KAAK,UAAU,IAAI,CAAC,GAAG;;EAEjD,MAAM,OAAO;EACd;;;;;AC/FH,IAAIC,WAA0B;AAC9B,MAAa,mBAA2B;CACtC,MAAM,aAAa,QAAQ,IAAI;AAC/B,KAAI,cAAc,eAAe,SAC/B,YAAW;UACF,aAAa,KACtB,YAAW,cAAc;AAE3B,QAAO;;;;;;;;AAST,SAAgB,aAId,QAAgB;AAChB,QAAO;;;;;;;AAQT,SAAgB,iBAAiB,GAAG,SAA4B;AAC9D,QAAO"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/// <reference path="./../user-defined.d.ts" />
|
|
2
|
-
import { $ as SCIMAttributeMapping, A as db, B as AuthExternalConfig, C as ResolverServiceConfig, D as TailorDBField, E as ExecutorServiceInput, F as TailorTypeGqlPermission, G as BuiltinIdP, H as AuthOwnConfig, I as TailorTypePermission, J as OAuth2ClientGrantType, K as IDToken, L as unsafeAllowAllGqlPermission, O as TailorDBInstance, P as PermissionCondition, Q as SCIMAttribute, R as unsafeAllowAllTypePermission, S as ResolverExternalConfig, T as ExecutorServiceConfig, U as defineAuth, V as AuthInvoker, W as AuthServiceInput, X as OIDC, Y as OAuth2ClientInput, Z as SAML, _ as StaticWebsiteConfig, at as UserAttributeKey, b as IdPExternalConfig, ct as UsernameFieldKey, dt as AttributeMap, et as SCIMAttributeType, f as defineConfig, ft as TailorUser, g as WorkflowServiceInput, gt as
|
|
3
|
-
import { A as createWorkflow, C as FunctionOperation, D as WorkflowOperation, E as WebhookOperation, F as WorkflowJobOutput, I as createWorkflowJob, L as createResolver, M as WorkflowJob, N as WorkflowJobContext, O as Workflow, P as WorkflowJobInput, R as Env, S as resolverExecutedTrigger, T as Operation, _ as ResolverExecutedArgs, a as Trigger, b as recordDeletedTrigger, c as IncomingWebhookTrigger, d as ScheduleTrigger, f as scheduleTrigger, g as RecordUpdatedArgs, h as RecordTrigger, i as createExecutor, j as WORKFLOW_JOB_BRAND, k as WorkflowConfig, l as incomingWebhookTrigger, m as RecordDeletedArgs, n as output, o as IncomingWebhookArgs, p as RecordCreatedArgs, r as t, s as IncomingWebhookRequest, t as infer, u as ScheduleArgs, v as ResolverExecutedTrigger, w as GqlOperation, x as recordUpdatedTrigger, y as recordCreatedTrigger } from "../index-
|
|
2
|
+
import { $ as SCIMAttributeMapping, A as db, B as AuthExternalConfig, C as ResolverServiceConfig, D as TailorDBField, E as ExecutorServiceInput, F as TailorTypeGqlPermission, G as BuiltinIdP, H as AuthOwnConfig, I as TailorTypePermission, J as OAuth2ClientGrantType, K as IDToken, L as unsafeAllowAllGqlPermission, O as TailorDBInstance, P as PermissionCondition, Q as SCIMAttribute, R as unsafeAllowAllTypePermission, S as ResolverExternalConfig, T as ExecutorServiceConfig, U as defineAuth, V as AuthInvoker, W as AuthServiceInput, X as OIDC, Y as OAuth2ClientInput, Z as SAML, _ as StaticWebsiteConfig, _t as Resolver, at as UserAttributeKey, b as IdPExternalConfig, ct as UsernameFieldKey, dt as AttributeMap, et as SCIMAttributeType, f as defineConfig, ft as TailorUser, g as WorkflowServiceInput, gt as QueryType, h as WorkflowServiceConfig, ht as TailorField, it as TenantProviderConfig, k as TailorDBType, lt as ValueOperand, nt as SCIMConfig, ot as UserAttributeListKey, p as defineGenerators, pt as unauthenticatedTailorUser, q as IdProviderConfig, rt as SCIMResource, st as UserAttributeMap, tt as SCIMAuthorization, ut as AttributeList, v as defineStaticWebSite, w as ResolverServiceInput, x as defineIdp, y as IdPConfig, z as AuthConfig } from "../types-Dg_zk_OZ.mjs";
|
|
3
|
+
import { A as createWorkflow, C as FunctionOperation, D as WorkflowOperation, E as WebhookOperation, F as WorkflowJobOutput, I as createWorkflowJob, L as createResolver, M as WorkflowJob, N as WorkflowJobContext, O as Workflow, P as WorkflowJobInput, R as Env, S as resolverExecutedTrigger, T as Operation, _ as ResolverExecutedArgs, a as Trigger, b as recordDeletedTrigger, c as IncomingWebhookTrigger, d as ScheduleTrigger, f as scheduleTrigger, g as RecordUpdatedArgs, h as RecordTrigger, i as createExecutor, j as WORKFLOW_JOB_BRAND, k as WorkflowConfig, l as incomingWebhookTrigger, m as RecordDeletedArgs, n as output, o as IncomingWebhookArgs, p as RecordCreatedArgs, r as t, s as IncomingWebhookRequest, t as infer, u as ScheduleArgs, v as ResolverExecutedTrigger, w as GqlOperation, x as recordUpdatedTrigger, y as recordCreatedTrigger } from "../index-DXZMT4aO.mjs";
|
|
4
4
|
export { AttributeList, AttributeMap, AuthConfig, AuthExternalConfig, AuthInvoker, AuthOwnConfig, AuthServiceInput, BuiltinIdP, Env, ExecutorServiceConfig, ExecutorServiceInput, FunctionOperation, GqlOperation, IDToken, IdPConfig, IdPExternalConfig, IdProviderConfig, IncomingWebhookArgs, IncomingWebhookRequest, IncomingWebhookTrigger, OAuth2ClientInput as OAuth2Client, OAuth2ClientGrantType, OIDC, Operation, PermissionCondition, QueryType, RecordCreatedArgs, RecordDeletedArgs, RecordTrigger, RecordUpdatedArgs, Resolver, ResolverExecutedArgs, ResolverExecutedTrigger, ResolverExternalConfig, ResolverServiceConfig, ResolverServiceInput, SAML, SCIMAttribute, SCIMAttributeMapping, SCIMAttributeType, SCIMAuthorization, SCIMConfig, SCIMResource, ScheduleArgs, ScheduleTrigger, StaticWebsiteConfig, TailorDBField, TailorDBInstance, TailorDBType, TailorField, TailorTypeGqlPermission, TailorTypePermission, TailorUser, TenantProviderConfig, Trigger, UserAttributeKey, UserAttributeListKey, UserAttributeMap, UsernameFieldKey, ValueOperand, WORKFLOW_JOB_BRAND, WebhookOperation, Workflow, WorkflowConfig, WorkflowJob, WorkflowJobContext, WorkflowJobInput, WorkflowJobOutput, WorkflowOperation, WorkflowServiceConfig, WorkflowServiceInput, createExecutor, createResolver, createWorkflow, createWorkflowJob, db, defineAuth, defineConfig, defineGenerators, defineIdp, defineStaticWebSite, incomingWebhookTrigger, infer, output, recordCreatedTrigger, recordDeletedTrigger, recordUpdatedTrigger, resolverExecutedTrigger, scheduleTrigger, t, unauthenticatedTailorUser, unsafeAllowAllGqlPermission, unsafeAllowAllTypePermission };
|