@lokalise/maestro-expert-tenant-lib 1.5.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +74 -10
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +73 -22
- package/dist/index.d.ts +73 -22
- package/dist/index.mjs +70 -10
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -3
package/dist/index.cjs
CHANGED
|
@@ -42,6 +42,7 @@ __export(maestro_expert_tenant_lib_exports, {
|
|
|
42
42
|
GET_WORKFLOW_LIST_RESPONSE: () => GET_WORKFLOW_LIST_RESPONSE,
|
|
43
43
|
GET_WORKFLOW_PARAMS: () => GET_WORKFLOW_PARAMS,
|
|
44
44
|
GET_WORKFLOW_RESPONSE: () => GET_WORKFLOW_RESPONSE,
|
|
45
|
+
LayoutTranslator: () => LayoutTranslator,
|
|
45
46
|
METADATA_FIELDS: () => METADATA_FIELDS,
|
|
46
47
|
PATCH_PAUSE_WORKFLOW_PARAMS: () => PATCH_PAUSE_WORKFLOW_PARAMS,
|
|
47
48
|
PATCH_PAUSE_WORKFLOW_RESPONSE: () => PATCH_PAUSE_WORKFLOW_RESPONSE,
|
|
@@ -52,6 +53,9 @@ __export(maestro_expert_tenant_lib_exports, {
|
|
|
52
53
|
POST_WORKFLOW_BODY: () => POST_WORKFLOW_BODY,
|
|
53
54
|
POST_WORKFLOW_PARAMS: () => POST_WORKFLOW_PARAMS,
|
|
54
55
|
POST_WORKFLOW_RESPONSE: () => POST_WORKFLOW_RESPONSE,
|
|
56
|
+
PUT_WORKFLOW_DRAFT_BODY: () => PUT_WORKFLOW_DRAFT_BODY,
|
|
57
|
+
PUT_WORKFLOW_DRAFT_PARAMS: () => PUT_WORKFLOW_DRAFT_PARAMS,
|
|
58
|
+
PUT_WORKFLOW_DRAFT_RESPONSE: () => PUT_WORKFLOW_DRAFT_RESPONSE,
|
|
55
59
|
REVIEW_TASK_STEP_SETTINGS: () => REVIEW_TASK_STEP_SETTINGS,
|
|
56
60
|
REVIEW_TASK_STEP_SETTINGS_SCHEMA: () => REVIEW_TASK_STEP_SETTINGS_SCHEMA,
|
|
57
61
|
SCHEDULED_TRIGGER_STEP_SETTINGS: () => SCHEDULED_TRIGGER_STEP_SETTINGS,
|
|
@@ -73,6 +77,59 @@ module.exports = __toCommonJS(maestro_expert_tenant_lib_exports);
|
|
|
73
77
|
var import_api_common = require("@lokalise/api-common");
|
|
74
78
|
var import_zod2 = __toESM(require("zod"), 1);
|
|
75
79
|
|
|
80
|
+
// src/workflow/LayoutTranslator.ts
|
|
81
|
+
var import_areStringArraysEqual = require("@lokalise/universal-ts-utils/dist/areStringArraysEqual.js");
|
|
82
|
+
var LayoutTranslator = class {
|
|
83
|
+
static {
|
|
84
|
+
__name(this, "LayoutTranslator");
|
|
85
|
+
}
|
|
86
|
+
translateTemplateToFrontendLayout(template) {
|
|
87
|
+
return this.buildFrontendLayout(template.settings);
|
|
88
|
+
}
|
|
89
|
+
translateFrontendLayoutToTemplate(frontendLayout) {
|
|
90
|
+
const template = this.findTemplate(frontendLayout);
|
|
91
|
+
if (!template) {
|
|
92
|
+
return void 0;
|
|
93
|
+
}
|
|
94
|
+
const layoutSettings = this.buildLayoutSettings(frontendLayout);
|
|
95
|
+
return {
|
|
96
|
+
layout: template.layout,
|
|
97
|
+
settings: layoutSettings
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
buildFrontendLayout(settings) {
|
|
101
|
+
return Object.entries(settings).map(([id, step]) => {
|
|
102
|
+
const { stepType, ...values } = step;
|
|
103
|
+
return {
|
|
104
|
+
id,
|
|
105
|
+
type: stepType,
|
|
106
|
+
values
|
|
107
|
+
};
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
buildLayoutSettings(frontendLayout) {
|
|
111
|
+
return frontendLayout.reduce(
|
|
112
|
+
(acc, frontendStep) => {
|
|
113
|
+
acc[frontendStep.id] = { ...frontendStep.values, stepType: frontendStep.type };
|
|
114
|
+
return acc;
|
|
115
|
+
},
|
|
116
|
+
{}
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
findTemplate(frontendLayout) {
|
|
120
|
+
const frontendLayoutStepIds = frontendLayout.map((step) => step.id);
|
|
121
|
+
const result = Object.entries(TEMPLATES).find(([_2, template2]) => {
|
|
122
|
+
const templateStepIds = template2.frontendLayout.map((step) => step.id);
|
|
123
|
+
return (0, import_areStringArraysEqual.areStringArraysEqual)(frontendLayoutStepIds, templateStepIds);
|
|
124
|
+
});
|
|
125
|
+
if (!result) {
|
|
126
|
+
return void 0;
|
|
127
|
+
}
|
|
128
|
+
const [_, template] = result;
|
|
129
|
+
return template;
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
|
|
76
133
|
// src/workflow/steps.ts
|
|
77
134
|
var import_maestro_common = require("@lokalise/maestro-common");
|
|
78
135
|
var import_zod = require("zod");
|
|
@@ -277,20 +334,13 @@ var TRANSLATE_TASK_TEMPLATE = {
|
|
|
277
334
|
// src/templates/schemas.ts
|
|
278
335
|
var TEMPLATE_IDS = ["reviewTask", "translateTask", "translateAndReviewTask"];
|
|
279
336
|
var buildTemplate = /* @__PURE__ */ __name((internalTemplate) => {
|
|
280
|
-
const
|
|
337
|
+
const layoutTranslator = new LayoutTranslator();
|
|
338
|
+
const frontendLayout = layoutTranslator.translateTemplateToFrontendLayout(internalTemplate);
|
|
281
339
|
return {
|
|
282
340
|
...internalTemplate,
|
|
283
341
|
frontendLayout
|
|
284
342
|
};
|
|
285
343
|
}, "buildTemplate");
|
|
286
|
-
var buildFrontendLayout = /* @__PURE__ */ __name((template) => Object.entries(template.settings).map(([id, step]) => {
|
|
287
|
-
const { stepType, ...values } = step;
|
|
288
|
-
return {
|
|
289
|
-
id,
|
|
290
|
-
type: stepType,
|
|
291
|
-
values
|
|
292
|
-
};
|
|
293
|
-
}), "buildFrontendLayout");
|
|
294
344
|
var TEMPLATES = {
|
|
295
345
|
reviewTask: buildTemplate(REVIEW_TASK_TEMPLATE),
|
|
296
346
|
translateTask: buildTemplate(TRANSLATE_TASK_TEMPLATE),
|
|
@@ -386,10 +436,20 @@ var POST_WORKFLOW_BODY = import_zod2.default.nullable(
|
|
|
386
436
|
import_zod2.default.object({
|
|
387
437
|
templateId: TEMPLATE_ID.optional()
|
|
388
438
|
})
|
|
389
|
-
).describe("
|
|
439
|
+
).describe("Parameters for creating a workflow");
|
|
390
440
|
var POST_WORKFLOW_RESPONSE = import_zod2.default.object({
|
|
391
441
|
data: WORKFLOW_EXTENDED
|
|
392
442
|
});
|
|
443
|
+
var PUT_WORKFLOW_DRAFT_PARAMS = import_zod2.default.object({
|
|
444
|
+
groupId: GROUP_ID,
|
|
445
|
+
workflowId: WORKFLOW_ID
|
|
446
|
+
});
|
|
447
|
+
var PUT_WORKFLOW_DRAFT_BODY = import_zod2.default.object({
|
|
448
|
+
schema: WORKFLOW_EXTENDED_SCHEMA
|
|
449
|
+
}).describe("Schema with user changes");
|
|
450
|
+
var PUT_WORKFLOW_DRAFT_RESPONSE = import_zod2.default.null({
|
|
451
|
+
description: "Successfully updated workflow draft"
|
|
452
|
+
});
|
|
393
453
|
// Annotate the CommonJS export names for ESM import in node:
|
|
394
454
|
0 && (module.exports = {
|
|
395
455
|
API_ERROR,
|
|
@@ -403,6 +463,7 @@ var POST_WORKFLOW_RESPONSE = import_zod2.default.object({
|
|
|
403
463
|
GET_WORKFLOW_LIST_RESPONSE,
|
|
404
464
|
GET_WORKFLOW_PARAMS,
|
|
405
465
|
GET_WORKFLOW_RESPONSE,
|
|
466
|
+
LayoutTranslator,
|
|
406
467
|
METADATA_FIELDS,
|
|
407
468
|
PATCH_PAUSE_WORKFLOW_PARAMS,
|
|
408
469
|
PATCH_PAUSE_WORKFLOW_RESPONSE,
|
|
@@ -413,6 +474,9 @@ var POST_WORKFLOW_RESPONSE = import_zod2.default.object({
|
|
|
413
474
|
POST_WORKFLOW_BODY,
|
|
414
475
|
POST_WORKFLOW_PARAMS,
|
|
415
476
|
POST_WORKFLOW_RESPONSE,
|
|
477
|
+
PUT_WORKFLOW_DRAFT_BODY,
|
|
478
|
+
PUT_WORKFLOW_DRAFT_PARAMS,
|
|
479
|
+
PUT_WORKFLOW_DRAFT_RESPONSE,
|
|
416
480
|
REVIEW_TASK_STEP_SETTINGS,
|
|
417
481
|
REVIEW_TASK_STEP_SETTINGS_SCHEMA,
|
|
418
482
|
SCHEDULED_TRIGGER_STEP_SETTINGS,
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../index.ts","../src/apiContract/schemas.ts","../src/workflow/steps.ts","../src/templates/resources/review-task.template.ts","../src/templates/resources/translate-and-review-task.template.ts","../src/templates/resources/translate-task.template.ts","../src/templates/schemas.ts"],"sourcesContent":["export * from './src/apiContract/schemas.js'\nexport * from './src/workflow/steps.js'\nexport { TEMPLATES, TemplateId } from './src/templates/schemas.js'\nexport { Template, FrontendLayout, FrontendLayoutStep } from './src/templates/types.js'\n","import { COMMON_ERROR_RESPONSE_SCHEMA } from '@lokalise/api-common'\nimport z from 'zod'\nimport { TEMPLATE_IDS } from '../templates/schemas.js'\nimport { STEP_TYPES } from '../workflow/steps.js'\n\n// COMMON SCHEMAS\nconst DATETIME = z.string().datetime()\nconst WORKFLOW_ID = z.string().max(36)\nconst TEMPLATE_ID = z.enum(TEMPLATE_IDS).describe('Template identifier')\nconst GROUP_ID = z\n .string()\n .max(255)\n .describe(\n 'Generated group identifier, which should be unique across Expert and Flow (example: expert-123-98616399660d3c2456abc5.66984240)',\n )\n\nexport const METADATA_FIELDS = z\n .enum(['targetLanguageIds', 'error'])\n .describe('Metadata fields that can be included in the response')\n\nexport const TRIGGER_TYPE = z.enum(['Manual', 'Scheduled', 'Automated']).describe('Trigger type')\n\nexport const WORKFLOW_STATUS = z\n .enum(['Draft', 'Live', 'Archived', 'Paused', 'Canceled'])\n .describe('Workflow status')\n\nexport const API_ERROR = COMMON_ERROR_RESPONSE_SCHEMA\n\n// GET WORKFLOW\nexport const GET_WORKFLOW_PARAMS = z\n .object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n })\n .describe('URL parameters for getting a workflow')\n\nexport const WORKFLOW = z\n .object({\n id: WORKFLOW_ID,\n version: z.number(),\n status: WORKFLOW_STATUS,\n title: z.string(),\n triggerType: TRIGGER_TYPE,\n targetLanguageIds: z.array(z.string()).optional().nullable(),\n error: COMMON_ERROR_RESPONSE_SCHEMA.optional().nullable(),\n createdAt: DATETIME,\n updatedAt: z.optional(DATETIME).nullable(),\n publishedAt: z.optional(DATETIME).nullable(),\n triggeredAt: z.optional(DATETIME).nullable(),\n metadata: z.optional(z.record(z.unknown())).nullable(),\n })\n .describe('Workflow. Used in the list of workflows')\n\nexport const WORKFLOW_EXTENDED_SCHEMA = z\n .array(\n z.object({\n id: z.string().max(100),\n type: z.enum(STEP_TYPES),\n values: z.record(z.string(), z.unknown()),\n }),\n )\n .describe('Workflow FrontendLayout')\n\nexport const WORKFLOW_EXTENDED = z\n .object({\n id: WORKFLOW_ID,\n groupId: GROUP_ID,\n version: z.number(),\n status: WORKFLOW_STATUS,\n title: z.string(),\n schema: WORKFLOW_EXTENDED_SCHEMA,\n createdAt: DATETIME,\n updatedAt: z.optional(DATETIME),\n publishedAt: z.optional(DATETIME),\n })\n .describe('Workflow. Response for getting a workflow or creating a new one')\n\nexport type Workflow = z.infer<typeof WORKFLOW>\nexport type WorkflowExtended = z.infer<typeof WORKFLOW_EXTENDED>\nexport type WorkflowExtendedSchema = z.infer<typeof WORKFLOW_EXTENDED_SCHEMA>\n\nexport const GET_WORKFLOW_RESPONSE = z.object({\n data: WORKFLOW_EXTENDED,\n})\n\n// LIST WORKFLOWS\nexport const GET_WORKFLOW_LIST_PARAMS = z.object({\n groupId: GROUP_ID,\n})\n\nexport const GET_WORKFLOW_LIST_RESPONSE = z.object({\n data: z.array(WORKFLOW),\n})\n\nexport type GetWorkflowListParams = z.infer<typeof GET_WORKFLOW_LIST_PARAMS>\nexport type GetWorkflowListResponse = z.infer<typeof GET_WORKFLOW_LIST_RESPONSE>\n\n// PAUSE WORKFLOW\nexport const PATCH_PAUSE_WORKFLOW_PARAMS = z.object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n})\n\nexport const PATCH_PAUSE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully paused workflow',\n})\n\n// RESUME WORKFLOW\nexport const PATCH_RESUME_WORKFLOW_PARAMS = z.object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n})\n\nexport const PATCH_RESUME_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully resumed workflow',\n})\n\n// DUPLICATE WORKFLOW\nexport const POST_DUPLICATE_WORKFLOW_PARAMS = z.object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n})\n\nexport const POST_DUPLICATE_WORKFLOW_RESPONSE = GET_WORKFLOW_RESPONSE\n\n// DELETE WORKFLOW\nexport const DELETE_WORKFLOW_PARAMS = z.object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n})\n\nexport const DELETE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully deleted workflow',\n})\n\n// CREATE WORKFLOW\nexport const POST_WORKFLOW_PARAMS = z\n .object({\n groupId: GROUP_ID,\n })\n .describe('URL parameters for creating a workflow')\n\nexport const POST_WORKFLOW_BODY = z\n .nullable(\n z.object({\n templateId: TEMPLATE_ID.optional(),\n }),\n )\n .describe('URL parameters for creating a workflow')\n\nexport const POST_WORKFLOW_RESPONSE = z.object({\n data: WORKFLOW_EXTENDED,\n})\n\nexport type PostWorkflowParams = z.infer<typeof POST_WORKFLOW_PARAMS>\nexport type PostWorkflowBody = z.infer<typeof POST_WORKFLOW_BODY>\nexport type PostWorkflowResponse = z.infer<typeof POST_WORKFLOW_RESPONSE>\n","import { WORKFLOW_LAYOUT_STEP_SETTINGS } from '@lokalise/maestro-common'\nimport { z } from 'zod'\n\nexport const START_KEYS_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.extend({\n name: z.string(),\n description: z.string(),\n autoMarkAsUnverified: z.boolean(),\n runOnSchedule: z.boolean(),\n monitoredLanguageId: z.number(),\n targetLanguageId: z.number(),\n monitoredKeyType: z.enum(['new', 'updated', 'both']),\n})\n\nexport const CREATE_TASK_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.extend({\n taskType: z.enum(['translate', 'review']),\n dueDate: z.union([z.number(), z.string()]),\n})\n\nexport const CreateTaskExampleStepSettings = CREATE_TASK_STEP_SETTINGS_SCHEMA.parse({\n stepType: 'create_task',\n taskType: 'translate',\n dueDate: 5,\n})\n\nexport const STEP_TYPES = [\n 'trigger_step',\n 'review_task_step',\n 'translate_task_step',\n 'end_step',\n] as const\nexport type StepType = (typeof STEP_TYPES)[number]\n\n// SCHEDULED_TRIGGER_STEP\nexport const SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.extend({\n runOnSchedule: z.boolean(),\n monitoredKeyType: z.enum(['new', 'updated', 'both']),\n monitoredLanguageId: z.optional(z.number()),\n targetLanguageIds: z.array(z.number()),\n})\nexport type ScheduledTriggerStepSettings = z.infer<\n typeof SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA\n> & {\n stepType: StepType\n}\nexport const SCHEDULED_TRIGGER_STEP_SETTINGS: ScheduledTriggerStepSettings = {\n stepType: 'trigger_step',\n runOnSchedule: true,\n monitoredLanguageId: undefined,\n targetLanguageIds: [],\n monitoredKeyType: 'new',\n}\n\n// REVIEW_TASK_STEP\nexport const REVIEW_TASK_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS\nexport type ReviewTaskStepSettings = z.infer<typeof REVIEW_TASK_STEP_SETTINGS_SCHEMA> & {\n stepType: StepType\n}\nexport const REVIEW_TASK_STEP_SETTINGS: ReviewTaskStepSettings = {\n stepType: 'review_task_step',\n}\n\n// TRANSLATE_TASK_STEP\nexport const TRANSLATE_TASK_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS\nexport type TranslateTaskStepSettings = z.infer<typeof TRANSLATE_TASK_STEP_SETTINGS_SCHEMA> & {\n stepType: StepType\n}\nexport const TRANSLATE_TASK_STEP_SETTINGS: TranslateTaskStepSettings = {\n stepType: 'translate_task_step',\n}\n\n// END_STEP\nexport const END_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS\nexport type EndStepSettings = z.infer<typeof END_STEP_SETTINGS_SCHEMA> & {\n stepType: StepType\n}\nexport const END_STEP_SETTINGS: EndStepSettings = {\n stepType: 'end_step',\n}\n","import {\n END_STEP_SETTINGS,\n REVIEW_TASK_STEP_SETTINGS,\n SCHEDULED_TRIGGER_STEP_SETTINGS,\n} from '../../workflow/steps.js'\nimport type { InternalTemplate } from '../types.js'\n\nexport const REVIEW_TASK_TEMPLATE: InternalTemplate<'TriggerStep' | 'ReviewTaskStep' | 'EndStep'> =\n {\n id: 'reviewTask',\n title: 'Review task',\n summary: 'Generate a review task when content is added to the project.',\n description:\n 'Select this workflow to automatically create a review task when the content in the editor meets the conditions set in \"Start\".',\n layout: {\n initial: 'TriggerStep',\n states: {\n TriggerStep: {\n on: {\n WorkflowTriggerEvent: {\n target: 'ReviewTaskStep',\n actions: [{ type: 'storeWorkflowTriggerEventScope' }],\n },\n },\n },\n ReviewTaskStep: {\n entry: [\n {\n type: 'createTaskAction',\n params: {\n type: 'review',\n },\n },\n ],\n on: {\n TaskClosedEvent: {\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: SCHEDULED_TRIGGER_STEP_SETTINGS,\n ReviewTaskStep: REVIEW_TASK_STEP_SETTINGS,\n EndStep: END_STEP_SETTINGS,\n },\n }\n","import {\n END_STEP_SETTINGS,\n REVIEW_TASK_STEP_SETTINGS,\n SCHEDULED_TRIGGER_STEP_SETTINGS,\n TRANSLATE_TASK_STEP_SETTINGS,\n} from '../../workflow/steps.js'\nimport type { InternalTemplate } from '../types.js'\n\nexport const TRANSLATE_AND_REVIEW_TASK_TEMPLATE: InternalTemplate<\n 'TriggerStep' | 'TranslateTaskStep' | 'ReviewTaskStep' | 'EndStep'\n> = {\n id: 'translateAndReviewTask',\n title: 'Translation task → review task',\n summary: 'Automatic creation of translation task before a review task.',\n description:\n 'Use this template to set up a chained workflow where a review task will be created as soon as the translation task is completed.',\n layout: {\n initial: 'TriggerStep',\n states: {\n TriggerStep: {\n on: {\n WorkflowTriggerEvent: {\n target: 'TranslateTaskStep',\n actions: [{ type: 'storeWorkflowTriggerEventScope' }],\n },\n },\n },\n TranslateTaskStep: {\n entry: [\n {\n type: 'createTaskAction',\n params: {\n type: 'translate',\n },\n },\n ],\n on: {\n TaskClosedEvent: {\n target: 'ReviewTaskStep',\n },\n },\n },\n ReviewTaskStep: {\n entry: [\n {\n type: 'createTaskAction',\n params: {\n type: 'review',\n },\n },\n ],\n on: {\n TaskClosedEvent: {\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: SCHEDULED_TRIGGER_STEP_SETTINGS,\n TranslateTaskStep: TRANSLATE_TASK_STEP_SETTINGS,\n ReviewTaskStep: REVIEW_TASK_STEP_SETTINGS,\n EndStep: END_STEP_SETTINGS,\n },\n}\n","import {\n END_STEP_SETTINGS,\n SCHEDULED_TRIGGER_STEP_SETTINGS,\n TRANSLATE_TASK_STEP_SETTINGS,\n} from '../../workflow/steps.js'\nimport type { InternalTemplate } from '../types.js'\n\nexport const TRANSLATE_TASK_TEMPLATE: InternalTemplate<\n 'TriggerStep' | 'TranslateTaskStep' | 'EndStep'\n> = {\n id: 'translateTask',\n title: 'Translation task',\n summary: 'Generate a translation task when content is added to the project.',\n description:\n 'Select this workflow to automatically create a translation task when the content in the editor meets the conditions set in “Start”.',\n layout: {\n initial: 'TriggerStep',\n states: {\n TriggerStep: {\n on: {\n WorkflowTriggerEvent: {\n target: 'TranslateTaskStep',\n actions: [{ type: 'storeWorkflowTriggerEventScope' }],\n },\n },\n },\n TranslateTaskStep: {\n entry: [\n {\n type: 'createTaskAction',\n params: {\n type: 'translate',\n },\n },\n ],\n on: {\n TaskClosedEvent: {\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: SCHEDULED_TRIGGER_STEP_SETTINGS,\n TranslateTaskStep: TRANSLATE_TASK_STEP_SETTINGS,\n EndStep: END_STEP_SETTINGS,\n },\n}\n","import type { StepType } from '../workflow/steps.js'\nimport { REVIEW_TASK_TEMPLATE } from './resources/review-task.template.js'\nimport { TRANSLATE_AND_REVIEW_TASK_TEMPLATE } from './resources/translate-and-review-task.template.js'\nimport { TRANSLATE_TASK_TEMPLATE } from './resources/translate-task.template.js'\nimport type { FrontendLayout, InternalTemplate, Template } from './types.js'\n\nexport const TEMPLATE_IDS = ['reviewTask', 'translateTask', 'translateAndReviewTask'] as const\n\nexport type TemplateId = (typeof TEMPLATE_IDS)[number]\n\nconst buildTemplate = <StateName extends string>(\n internalTemplate: InternalTemplate<StateName>,\n): Template<StateName> => {\n const frontendLayout = buildFrontendLayout(internalTemplate)\n\n return {\n ...internalTemplate,\n frontendLayout,\n }\n}\n\nconst buildFrontendLayout = <StateName extends string>(\n template: InternalTemplate<StateName>,\n): FrontendLayout<StateName> =>\n Object.entries(template.settings).map(([id, step]) => {\n const { stepType, ...values } = step\n return {\n id: id as StateName,\n type: stepType as StepType,\n values,\n }\n })\n\nexport const TEMPLATES: Record<TemplateId, Template<string>> = {\n reviewTask: buildTemplate(REVIEW_TASK_TEMPLATE),\n translateTask: buildTemplate(TRANSLATE_TASK_TEMPLATE),\n translateAndReviewTask: buildTemplate(TRANSLATE_AND_REVIEW_TASK_TEMPLATE),\n}\n"],"mappings":"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","names":["import_zod","z"]}
|
|
1
|
+
{"version":3,"sources":["../index.ts","../src/apiContract/schemas.ts","../src/workflow/LayoutTranslator.ts","../src/workflow/steps.ts","../src/templates/resources/review-task.template.ts","../src/templates/resources/translate-and-review-task.template.ts","../src/templates/resources/translate-task.template.ts","../src/templates/schemas.ts"],"sourcesContent":["export * from './src/apiContract/schemas.js'\nexport * from './src/workflow/steps.js'\nexport { TEMPLATES, TemplateId } from './src/templates/schemas.js'\nexport { Template, FrontendLayout, FrontendLayoutStep } from './src/templates/types.js'\nexport { LayoutTranslator } from './src/workflow/LayoutTranslator.js'\n","import { COMMON_ERROR_RESPONSE_SCHEMA } from '@lokalise/api-common'\nimport z from 'zod'\nimport { TEMPLATE_IDS } from '../templates/schemas.js'\nimport { STEP_TYPES } from '../workflow/steps.js'\n\n// COMMON SCHEMAS\nconst DATETIME = z.string().datetime()\nconst WORKFLOW_ID = z.string().max(36)\nconst TEMPLATE_ID = z.enum(TEMPLATE_IDS).describe('Template identifier')\nconst GROUP_ID = z\n .string()\n .max(255)\n .describe(\n 'Generated group identifier, which should be unique across Expert and Flow (example: expert-123-98616399660d3c2456abc5.66984240)',\n )\n\nexport const METADATA_FIELDS = z\n .enum(['targetLanguageIds', 'error'])\n .describe('Metadata fields that can be included in the response')\n\nexport const TRIGGER_TYPE = z.enum(['Manual', 'Scheduled', 'Automated']).describe('Trigger type')\n\nexport const WORKFLOW_STATUS = z\n .enum(['Draft', 'Live', 'Archived', 'Paused', 'Canceled'])\n .describe('Workflow status')\n\nexport const API_ERROR = COMMON_ERROR_RESPONSE_SCHEMA\n\n// GET WORKFLOW\nexport const GET_WORKFLOW_PARAMS = z\n .object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n })\n .describe('URL parameters for getting a workflow')\n\nexport const WORKFLOW = z\n .object({\n id: WORKFLOW_ID,\n version: z.number(),\n status: WORKFLOW_STATUS,\n title: z.string(),\n triggerType: TRIGGER_TYPE,\n targetLanguageIds: z.array(z.string()).optional().nullable(),\n error: COMMON_ERROR_RESPONSE_SCHEMA.optional().nullable(),\n createdAt: DATETIME,\n updatedAt: z.optional(DATETIME).nullable(),\n publishedAt: z.optional(DATETIME).nullable(),\n triggeredAt: z.optional(DATETIME).nullable(),\n metadata: z.optional(z.record(z.unknown())).nullable(),\n })\n .describe('Workflow. Used in the list of workflows')\n\nexport const WORKFLOW_EXTENDED_SCHEMA = z\n .array(\n z.object({\n id: z.string().max(100),\n type: z.enum(STEP_TYPES),\n values: z.record(z.string(), z.unknown()),\n }),\n )\n .describe('Workflow FrontendLayout')\n\nexport const WORKFLOW_EXTENDED = z\n .object({\n id: WORKFLOW_ID,\n groupId: GROUP_ID,\n version: z.number(),\n status: WORKFLOW_STATUS,\n title: z.string(),\n schema: WORKFLOW_EXTENDED_SCHEMA,\n createdAt: DATETIME,\n updatedAt: z.optional(DATETIME),\n publishedAt: z.optional(DATETIME),\n })\n .describe('Workflow. Response for getting a workflow or creating a new one')\n\nexport type Workflow = z.infer<typeof WORKFLOW>\nexport type WorkflowExtended = z.infer<typeof WORKFLOW_EXTENDED>\nexport type WorkflowExtendedSchema = z.infer<typeof WORKFLOW_EXTENDED_SCHEMA>\n\nexport const GET_WORKFLOW_RESPONSE = z.object({\n data: WORKFLOW_EXTENDED,\n})\n\nexport type GetWorkflowParams = z.infer<typeof GET_WORKFLOW_PARAMS>\nexport type GetWorkflowResponse = z.infer<typeof GET_WORKFLOW_RESPONSE>\n\n// LIST WORKFLOWS\nexport const GET_WORKFLOW_LIST_PARAMS = z.object({\n groupId: GROUP_ID,\n})\n\nexport const GET_WORKFLOW_LIST_RESPONSE = z.object({\n data: z.array(WORKFLOW),\n})\n\nexport type GetWorkflowListParams = z.infer<typeof GET_WORKFLOW_LIST_PARAMS>\nexport type GetWorkflowListResponse = z.infer<typeof GET_WORKFLOW_LIST_RESPONSE>\n\n// PAUSE WORKFLOW\nexport const PATCH_PAUSE_WORKFLOW_PARAMS = z.object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n})\n\nexport const PATCH_PAUSE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully paused workflow',\n})\n\n// RESUME WORKFLOW\nexport const PATCH_RESUME_WORKFLOW_PARAMS = z.object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n})\n\nexport const PATCH_RESUME_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully resumed workflow',\n})\n\n// DUPLICATE WORKFLOW\nexport const POST_DUPLICATE_WORKFLOW_PARAMS = z.object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n})\n\nexport const POST_DUPLICATE_WORKFLOW_RESPONSE = GET_WORKFLOW_RESPONSE\n\n// DELETE WORKFLOW\nexport const DELETE_WORKFLOW_PARAMS = z.object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n})\n\nexport const DELETE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully deleted workflow',\n})\n\n// CREATE WORKFLOW\nexport const POST_WORKFLOW_PARAMS = z\n .object({\n groupId: GROUP_ID,\n })\n .describe('URL parameters for creating a workflow')\n\nexport const POST_WORKFLOW_BODY = z\n .nullable(\n z.object({\n templateId: TEMPLATE_ID.optional(),\n }),\n )\n .describe('Parameters for creating a workflow')\n\nexport const POST_WORKFLOW_RESPONSE = z.object({\n data: WORKFLOW_EXTENDED,\n})\n\nexport type PostWorkflowParams = z.infer<typeof POST_WORKFLOW_PARAMS>\nexport type PostWorkflowBody = z.infer<typeof POST_WORKFLOW_BODY>\nexport type PostWorkflowResponse = z.infer<typeof POST_WORKFLOW_RESPONSE>\n\n// UPDATE DRAFT\nexport const PUT_WORKFLOW_DRAFT_PARAMS = z.object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n})\n\nexport const PUT_WORKFLOW_DRAFT_BODY = z\n .object({\n schema: WORKFLOW_EXTENDED_SCHEMA,\n })\n .describe('Schema with user changes')\n\nexport const PUT_WORKFLOW_DRAFT_RESPONSE = z.null({\n description: 'Successfully updated workflow draft',\n})\n\nexport type PutWorkflowDraftParams = z.infer<typeof PUT_WORKFLOW_DRAFT_PARAMS>\nexport type PutWorkflowDraftBody = z.infer<typeof PUT_WORKFLOW_DRAFT_BODY>\nexport type PutWorkflowDraftResponse = z.infer<typeof PUT_WORKFLOW_DRAFT_RESPONSE>\n","import { areStringArraysEqual } from '@lokalise/universal-ts-utils/dist/areStringArraysEqual.js'\nimport { TEMPLATES } from '../templates/schemas.js'\nimport type {\n FrontendLayout,\n InternalTemplate,\n StrictWorkflowLayout,\n StrictWorkflowLayoutSettings,\n StrictWorkflowLayoutStepSettings,\n Template,\n} from '../templates/types.js'\nimport type { StepType } from './steps.js'\n\nexport class LayoutTranslator {\n public translateTemplateToFrontendLayout<StateName extends string>(\n template: InternalTemplate<StateName>,\n ): FrontendLayout<StateName> {\n return this.buildFrontendLayout<StateName>(template.settings)\n }\n\n public translateFrontendLayoutToTemplate<StateName extends string>(\n frontendLayout: FrontendLayout<StateName>,\n ): Pick<InternalTemplate<StateName>, 'layout' | 'settings'> | undefined {\n const template = this.findTemplate(frontendLayout)\n if (!template) {\n return undefined\n }\n\n const layoutSettings = this.buildLayoutSettings<StateName>(frontendLayout)\n\n return {\n layout: template.layout as StrictWorkflowLayout<StateName>,\n settings: layoutSettings,\n }\n }\n\n public buildFrontendLayout<StateName extends string>(\n settings: StrictWorkflowLayoutSettings<StateName>,\n ): FrontendLayout<StateName> {\n return Object.entries(settings).map(([id, step]) => {\n const { stepType, ...values } = step\n return {\n id: id as StateName,\n type: stepType as StepType,\n values,\n }\n })\n }\n\n buildLayoutSettings<StateName extends string>(\n frontendLayout: FrontendLayout<StateName>,\n ): StrictWorkflowLayoutSettings<StateName> {\n return frontendLayout.reduce(\n (acc, frontendStep) => {\n acc[frontendStep.id] = { ...frontendStep.values, stepType: frontendStep.type }\n return acc\n },\n {} as Record<StateName, StrictWorkflowLayoutStepSettings>,\n )\n }\n\n findTemplate<StateName extends string>(\n frontendLayout: FrontendLayout<StateName>,\n ): Template<StateName> | undefined {\n const frontendLayoutStepIds = frontendLayout.map((step) => step.id)\n\n const result = Object.entries(TEMPLATES).find(([_, template]) => {\n const templateStepIds = template.frontendLayout.map((step) => step.id)\n return areStringArraysEqual(frontendLayoutStepIds, templateStepIds)\n })\n\n if (!result) {\n return undefined\n }\n\n const [_, template] = result\n\n return template as Template<StateName>\n }\n}\n","import { WORKFLOW_LAYOUT_STEP_SETTINGS } from '@lokalise/maestro-common'\nimport { z } from 'zod'\n\nexport const START_KEYS_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.extend({\n name: z.string(),\n description: z.string(),\n autoMarkAsUnverified: z.boolean(),\n runOnSchedule: z.boolean(),\n monitoredLanguageId: z.number(),\n targetLanguageId: z.number(),\n monitoredKeyType: z.enum(['new', 'updated', 'both']),\n})\n\nexport const CREATE_TASK_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.extend({\n taskType: z.enum(['translate', 'review']),\n dueDate: z.union([z.number(), z.string()]),\n})\n\nexport const CreateTaskExampleStepSettings = CREATE_TASK_STEP_SETTINGS_SCHEMA.parse({\n stepType: 'create_task',\n taskType: 'translate',\n dueDate: 5,\n})\n\nexport const STEP_TYPES = [\n 'trigger_step',\n 'review_task_step',\n 'translate_task_step',\n 'end_step',\n] as const\nexport type StepType = (typeof STEP_TYPES)[number]\n\n// SCHEDULED_TRIGGER_STEP\nexport const SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.extend({\n runOnSchedule: z.boolean(),\n monitoredKeyType: z.enum(['new', 'updated', 'both']),\n monitoredLanguageId: z.optional(z.number()),\n targetLanguageIds: z.array(z.number()),\n})\nexport type ScheduledTriggerStepSettings = z.infer<\n typeof SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA\n> & {\n stepType: StepType\n}\nexport const SCHEDULED_TRIGGER_STEP_SETTINGS: ScheduledTriggerStepSettings = {\n stepType: 'trigger_step',\n runOnSchedule: true,\n monitoredLanguageId: undefined,\n targetLanguageIds: [],\n monitoredKeyType: 'new',\n}\n\n// REVIEW_TASK_STEP\nexport const REVIEW_TASK_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS\nexport type ReviewTaskStepSettings = z.infer<typeof REVIEW_TASK_STEP_SETTINGS_SCHEMA> & {\n stepType: StepType\n}\nexport const REVIEW_TASK_STEP_SETTINGS: ReviewTaskStepSettings = {\n stepType: 'review_task_step',\n}\n\n// TRANSLATE_TASK_STEP\nexport const TRANSLATE_TASK_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS\nexport type TranslateTaskStepSettings = z.infer<typeof TRANSLATE_TASK_STEP_SETTINGS_SCHEMA> & {\n stepType: StepType\n}\nexport const TRANSLATE_TASK_STEP_SETTINGS: TranslateTaskStepSettings = {\n stepType: 'translate_task_step',\n}\n\n// END_STEP\nexport const END_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS\nexport type EndStepSettings = z.infer<typeof END_STEP_SETTINGS_SCHEMA> & {\n stepType: StepType\n}\nexport const END_STEP_SETTINGS: EndStepSettings = {\n stepType: 'end_step',\n}\n","import {\n END_STEP_SETTINGS,\n REVIEW_TASK_STEP_SETTINGS,\n SCHEDULED_TRIGGER_STEP_SETTINGS,\n} from '../../workflow/steps.js'\nimport type { InternalTemplate } from '../types.js'\n\nexport const REVIEW_TASK_TEMPLATE: InternalTemplate<'TriggerStep' | 'ReviewTaskStep' | 'EndStep'> =\n {\n id: 'reviewTask',\n title: 'Review task',\n summary: 'Generate a review task when content is added to the project.',\n description:\n 'Select this workflow to automatically create a review task when the content in the editor meets the conditions set in \"Start\".',\n layout: {\n initial: 'TriggerStep',\n states: {\n TriggerStep: {\n on: {\n WorkflowTriggerEvent: {\n target: 'ReviewTaskStep',\n actions: [{ type: 'storeWorkflowTriggerEventScope' }],\n },\n },\n },\n ReviewTaskStep: {\n entry: [\n {\n type: 'createTaskAction',\n params: {\n type: 'review',\n },\n },\n ],\n on: {\n TaskClosedEvent: {\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: SCHEDULED_TRIGGER_STEP_SETTINGS,\n ReviewTaskStep: REVIEW_TASK_STEP_SETTINGS,\n EndStep: END_STEP_SETTINGS,\n },\n }\n","import {\n END_STEP_SETTINGS,\n REVIEW_TASK_STEP_SETTINGS,\n SCHEDULED_TRIGGER_STEP_SETTINGS,\n TRANSLATE_TASK_STEP_SETTINGS,\n} from '../../workflow/steps.js'\nimport type { InternalTemplate } from '../types.js'\n\nexport const TRANSLATE_AND_REVIEW_TASK_TEMPLATE: InternalTemplate<\n 'TriggerStep' | 'TranslateTaskStep' | 'ReviewTaskStep' | 'EndStep'\n> = {\n id: 'translateAndReviewTask',\n title: 'Translation task → review task',\n summary: 'Automatic creation of translation task before a review task.',\n description:\n 'Use this template to set up a chained workflow where a review task will be created as soon as the translation task is completed.',\n layout: {\n initial: 'TriggerStep',\n states: {\n TriggerStep: {\n on: {\n WorkflowTriggerEvent: {\n target: 'TranslateTaskStep',\n actions: [{ type: 'storeWorkflowTriggerEventScope' }],\n },\n },\n },\n TranslateTaskStep: {\n entry: [\n {\n type: 'createTaskAction',\n params: {\n type: 'translate',\n },\n },\n ],\n on: {\n TaskClosedEvent: {\n target: 'ReviewTaskStep',\n },\n },\n },\n ReviewTaskStep: {\n entry: [\n {\n type: 'createTaskAction',\n params: {\n type: 'review',\n },\n },\n ],\n on: {\n TaskClosedEvent: {\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: SCHEDULED_TRIGGER_STEP_SETTINGS,\n TranslateTaskStep: TRANSLATE_TASK_STEP_SETTINGS,\n ReviewTaskStep: REVIEW_TASK_STEP_SETTINGS,\n EndStep: END_STEP_SETTINGS,\n },\n}\n","import {\n END_STEP_SETTINGS,\n SCHEDULED_TRIGGER_STEP_SETTINGS,\n TRANSLATE_TASK_STEP_SETTINGS,\n} from '../../workflow/steps.js'\nimport type { InternalTemplate } from '../types.js'\n\nexport const TRANSLATE_TASK_TEMPLATE: InternalTemplate<\n 'TriggerStep' | 'TranslateTaskStep' | 'EndStep'\n> = {\n id: 'translateTask',\n title: 'Translation task',\n summary: 'Generate a translation task when content is added to the project.',\n description:\n 'Select this workflow to automatically create a translation task when the content in the editor meets the conditions set in “Start”.',\n layout: {\n initial: 'TriggerStep',\n states: {\n TriggerStep: {\n on: {\n WorkflowTriggerEvent: {\n target: 'TranslateTaskStep',\n actions: [{ type: 'storeWorkflowTriggerEventScope' }],\n },\n },\n },\n TranslateTaskStep: {\n entry: [\n {\n type: 'createTaskAction',\n params: {\n type: 'translate',\n },\n },\n ],\n on: {\n TaskClosedEvent: {\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: SCHEDULED_TRIGGER_STEP_SETTINGS,\n TranslateTaskStep: TRANSLATE_TASK_STEP_SETTINGS,\n EndStep: END_STEP_SETTINGS,\n },\n}\n","import { LayoutTranslator } from '../workflow/LayoutTranslator.js'\nimport { REVIEW_TASK_TEMPLATE } from './resources/review-task.template.js'\nimport { TRANSLATE_AND_REVIEW_TASK_TEMPLATE } from './resources/translate-and-review-task.template.js'\nimport { TRANSLATE_TASK_TEMPLATE } from './resources/translate-task.template.js'\nimport type { InternalTemplate, Template } from './types.js'\n\nexport const TEMPLATE_IDS = ['reviewTask', 'translateTask', 'translateAndReviewTask'] as const\n\nexport type TemplateId = (typeof TEMPLATE_IDS)[number]\n\nconst buildTemplate = <StateName extends string>(\n internalTemplate: InternalTemplate<StateName>,\n): Template<StateName> => {\n const layoutTranslator = new LayoutTranslator()\n const frontendLayout = layoutTranslator.translateTemplateToFrontendLayout(internalTemplate)\n\n return {\n ...internalTemplate,\n frontendLayout,\n }\n}\n\nexport const TEMPLATES: Record<TemplateId, Template<string>> = {\n reviewTask: buildTemplate(REVIEW_TASK_TEMPLATE),\n translateTask: buildTemplate(TRANSLATE_TASK_TEMPLATE),\n translateAndReviewTask: buildTemplate(TRANSLATE_AND_REVIEW_TASK_TEMPLATE),\n}\n"],"mappings":"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","names":["import_zod","_","template","z"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import z, { z as z$1 } from 'zod';
|
|
2
|
-
import { WorkflowLayout,
|
|
2
|
+
import { WorkflowLayout, WorkflowLayoutStepSettings, WorkflowLayoutStepSettingsList, WorkflowLayoutStep, WorkflowLayoutStepTriggerList, WorkflowLayoutStepTriggerEvent } from '@lokalise/maestro-common';
|
|
3
3
|
|
|
4
4
|
declare const METADATA_FIELDS: z.ZodEnum<["targetLanguageIds", "error"]>;
|
|
5
5
|
declare const TRIGGER_TYPE: z.ZodEnum<["Manual", "Scheduled", "Automated"]>;
|
|
@@ -55,8 +55,8 @@ declare const WORKFLOW: z.ZodObject<{
|
|
|
55
55
|
}, "strip", z.ZodTypeAny, {
|
|
56
56
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
57
57
|
id: string;
|
|
58
|
-
version: number;
|
|
59
58
|
title: string;
|
|
59
|
+
version: number;
|
|
60
60
|
triggerType: "Manual" | "Scheduled" | "Automated";
|
|
61
61
|
createdAt: string;
|
|
62
62
|
targetLanguageIds?: string[] | null | undefined;
|
|
@@ -72,8 +72,8 @@ declare const WORKFLOW: z.ZodObject<{
|
|
|
72
72
|
}, {
|
|
73
73
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
74
74
|
id: string;
|
|
75
|
-
version: number;
|
|
76
75
|
title: string;
|
|
76
|
+
version: number;
|
|
77
77
|
triggerType: "Manual" | "Scheduled" | "Automated";
|
|
78
78
|
createdAt: string;
|
|
79
79
|
targetLanguageIds?: string[] | null | undefined;
|
|
@@ -125,9 +125,9 @@ declare const WORKFLOW_EXTENDED: z.ZodObject<{
|
|
|
125
125
|
}, "strip", z.ZodTypeAny, {
|
|
126
126
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
127
127
|
id: string;
|
|
128
|
+
title: string;
|
|
128
129
|
groupId: string;
|
|
129
130
|
version: number;
|
|
130
|
-
title: string;
|
|
131
131
|
createdAt: string;
|
|
132
132
|
schema: {
|
|
133
133
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -139,9 +139,9 @@ declare const WORKFLOW_EXTENDED: z.ZodObject<{
|
|
|
139
139
|
}, {
|
|
140
140
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
141
141
|
id: string;
|
|
142
|
+
title: string;
|
|
142
143
|
groupId: string;
|
|
143
144
|
version: number;
|
|
144
|
-
title: string;
|
|
145
145
|
createdAt: string;
|
|
146
146
|
schema: {
|
|
147
147
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -180,9 +180,9 @@ declare const GET_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
180
180
|
}, "strip", z.ZodTypeAny, {
|
|
181
181
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
182
182
|
id: string;
|
|
183
|
+
title: string;
|
|
183
184
|
groupId: string;
|
|
184
185
|
version: number;
|
|
185
|
-
title: string;
|
|
186
186
|
createdAt: string;
|
|
187
187
|
schema: {
|
|
188
188
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -194,9 +194,9 @@ declare const GET_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
194
194
|
}, {
|
|
195
195
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
196
196
|
id: string;
|
|
197
|
+
title: string;
|
|
197
198
|
groupId: string;
|
|
198
199
|
version: number;
|
|
199
|
-
title: string;
|
|
200
200
|
createdAt: string;
|
|
201
201
|
schema: {
|
|
202
202
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -210,9 +210,9 @@ declare const GET_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
210
210
|
data: {
|
|
211
211
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
212
212
|
id: string;
|
|
213
|
+
title: string;
|
|
213
214
|
groupId: string;
|
|
214
215
|
version: number;
|
|
215
|
-
title: string;
|
|
216
216
|
createdAt: string;
|
|
217
217
|
schema: {
|
|
218
218
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -226,9 +226,9 @@ declare const GET_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
226
226
|
data: {
|
|
227
227
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
228
228
|
id: string;
|
|
229
|
+
title: string;
|
|
229
230
|
groupId: string;
|
|
230
231
|
version: number;
|
|
231
|
-
title: string;
|
|
232
232
|
createdAt: string;
|
|
233
233
|
schema: {
|
|
234
234
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -239,6 +239,8 @@ declare const GET_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
239
239
|
publishedAt?: string | undefined;
|
|
240
240
|
};
|
|
241
241
|
}>;
|
|
242
|
+
type GetWorkflowParams = z.infer<typeof GET_WORKFLOW_PARAMS>;
|
|
243
|
+
type GetWorkflowResponse = z.infer<typeof GET_WORKFLOW_RESPONSE>;
|
|
242
244
|
declare const GET_WORKFLOW_LIST_PARAMS: z.ZodObject<{
|
|
243
245
|
groupId: z.ZodString;
|
|
244
246
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -275,8 +277,8 @@ declare const GET_WORKFLOW_LIST_RESPONSE: z.ZodObject<{
|
|
|
275
277
|
}, "strip", z.ZodTypeAny, {
|
|
276
278
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
277
279
|
id: string;
|
|
278
|
-
version: number;
|
|
279
280
|
title: string;
|
|
281
|
+
version: number;
|
|
280
282
|
triggerType: "Manual" | "Scheduled" | "Automated";
|
|
281
283
|
createdAt: string;
|
|
282
284
|
targetLanguageIds?: string[] | null | undefined;
|
|
@@ -292,8 +294,8 @@ declare const GET_WORKFLOW_LIST_RESPONSE: z.ZodObject<{
|
|
|
292
294
|
}, {
|
|
293
295
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
294
296
|
id: string;
|
|
295
|
-
version: number;
|
|
296
297
|
title: string;
|
|
298
|
+
version: number;
|
|
297
299
|
triggerType: "Manual" | "Scheduled" | "Automated";
|
|
298
300
|
createdAt: string;
|
|
299
301
|
targetLanguageIds?: string[] | null | undefined;
|
|
@@ -311,8 +313,8 @@ declare const GET_WORKFLOW_LIST_RESPONSE: z.ZodObject<{
|
|
|
311
313
|
data: {
|
|
312
314
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
313
315
|
id: string;
|
|
314
|
-
version: number;
|
|
315
316
|
title: string;
|
|
317
|
+
version: number;
|
|
316
318
|
triggerType: "Manual" | "Scheduled" | "Automated";
|
|
317
319
|
createdAt: string;
|
|
318
320
|
targetLanguageIds?: string[] | null | undefined;
|
|
@@ -330,8 +332,8 @@ declare const GET_WORKFLOW_LIST_RESPONSE: z.ZodObject<{
|
|
|
330
332
|
data: {
|
|
331
333
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
332
334
|
id: string;
|
|
333
|
-
version: number;
|
|
334
335
|
title: string;
|
|
336
|
+
version: number;
|
|
335
337
|
triggerType: "Manual" | "Scheduled" | "Automated";
|
|
336
338
|
createdAt: string;
|
|
337
339
|
targetLanguageIds?: string[] | null | undefined;
|
|
@@ -406,9 +408,9 @@ declare const POST_DUPLICATE_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
406
408
|
}, "strip", z.ZodTypeAny, {
|
|
407
409
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
408
410
|
id: string;
|
|
411
|
+
title: string;
|
|
409
412
|
groupId: string;
|
|
410
413
|
version: number;
|
|
411
|
-
title: string;
|
|
412
414
|
createdAt: string;
|
|
413
415
|
schema: {
|
|
414
416
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -420,9 +422,9 @@ declare const POST_DUPLICATE_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
420
422
|
}, {
|
|
421
423
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
422
424
|
id: string;
|
|
425
|
+
title: string;
|
|
423
426
|
groupId: string;
|
|
424
427
|
version: number;
|
|
425
|
-
title: string;
|
|
426
428
|
createdAt: string;
|
|
427
429
|
schema: {
|
|
428
430
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -436,9 +438,9 @@ declare const POST_DUPLICATE_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
436
438
|
data: {
|
|
437
439
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
438
440
|
id: string;
|
|
441
|
+
title: string;
|
|
439
442
|
groupId: string;
|
|
440
443
|
version: number;
|
|
441
|
-
title: string;
|
|
442
444
|
createdAt: string;
|
|
443
445
|
schema: {
|
|
444
446
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -452,9 +454,9 @@ declare const POST_DUPLICATE_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
452
454
|
data: {
|
|
453
455
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
454
456
|
id: string;
|
|
457
|
+
title: string;
|
|
455
458
|
groupId: string;
|
|
456
459
|
version: number;
|
|
457
|
-
title: string;
|
|
458
460
|
createdAt: string;
|
|
459
461
|
schema: {
|
|
460
462
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -516,9 +518,9 @@ declare const POST_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
516
518
|
}, "strip", z.ZodTypeAny, {
|
|
517
519
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
518
520
|
id: string;
|
|
521
|
+
title: string;
|
|
519
522
|
groupId: string;
|
|
520
523
|
version: number;
|
|
521
|
-
title: string;
|
|
522
524
|
createdAt: string;
|
|
523
525
|
schema: {
|
|
524
526
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -530,9 +532,9 @@ declare const POST_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
530
532
|
}, {
|
|
531
533
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
532
534
|
id: string;
|
|
535
|
+
title: string;
|
|
533
536
|
groupId: string;
|
|
534
537
|
version: number;
|
|
535
|
-
title: string;
|
|
536
538
|
createdAt: string;
|
|
537
539
|
schema: {
|
|
538
540
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -546,9 +548,9 @@ declare const POST_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
546
548
|
data: {
|
|
547
549
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
548
550
|
id: string;
|
|
551
|
+
title: string;
|
|
549
552
|
groupId: string;
|
|
550
553
|
version: number;
|
|
551
|
-
title: string;
|
|
552
554
|
createdAt: string;
|
|
553
555
|
schema: {
|
|
554
556
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -562,9 +564,9 @@ declare const POST_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
562
564
|
data: {
|
|
563
565
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
564
566
|
id: string;
|
|
567
|
+
title: string;
|
|
565
568
|
groupId: string;
|
|
566
569
|
version: number;
|
|
567
|
-
title: string;
|
|
568
570
|
createdAt: string;
|
|
569
571
|
schema: {
|
|
570
572
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -578,6 +580,47 @@ declare const POST_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
578
580
|
type PostWorkflowParams = z.infer<typeof POST_WORKFLOW_PARAMS>;
|
|
579
581
|
type PostWorkflowBody = z.infer<typeof POST_WORKFLOW_BODY>;
|
|
580
582
|
type PostWorkflowResponse = z.infer<typeof POST_WORKFLOW_RESPONSE>;
|
|
583
|
+
declare const PUT_WORKFLOW_DRAFT_PARAMS: z.ZodObject<{
|
|
584
|
+
groupId: z.ZodString;
|
|
585
|
+
workflowId: z.ZodString;
|
|
586
|
+
}, "strip", z.ZodTypeAny, {
|
|
587
|
+
groupId: string;
|
|
588
|
+
workflowId: string;
|
|
589
|
+
}, {
|
|
590
|
+
groupId: string;
|
|
591
|
+
workflowId: string;
|
|
592
|
+
}>;
|
|
593
|
+
declare const PUT_WORKFLOW_DRAFT_BODY: z.ZodObject<{
|
|
594
|
+
schema: z.ZodArray<z.ZodObject<{
|
|
595
|
+
id: z.ZodString;
|
|
596
|
+
type: z.ZodEnum<["trigger_step", "review_task_step", "translate_task_step", "end_step"]>;
|
|
597
|
+
values: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
598
|
+
}, "strip", z.ZodTypeAny, {
|
|
599
|
+
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
600
|
+
values: Record<string, unknown>;
|
|
601
|
+
id: string;
|
|
602
|
+
}, {
|
|
603
|
+
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
604
|
+
values: Record<string, unknown>;
|
|
605
|
+
id: string;
|
|
606
|
+
}>, "many">;
|
|
607
|
+
}, "strip", z.ZodTypeAny, {
|
|
608
|
+
schema: {
|
|
609
|
+
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
610
|
+
values: Record<string, unknown>;
|
|
611
|
+
id: string;
|
|
612
|
+
}[];
|
|
613
|
+
}, {
|
|
614
|
+
schema: {
|
|
615
|
+
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
616
|
+
values: Record<string, unknown>;
|
|
617
|
+
id: string;
|
|
618
|
+
}[];
|
|
619
|
+
}>;
|
|
620
|
+
declare const PUT_WORKFLOW_DRAFT_RESPONSE: z.ZodNull;
|
|
621
|
+
type PutWorkflowDraftParams = z.infer<typeof PUT_WORKFLOW_DRAFT_PARAMS>;
|
|
622
|
+
type PutWorkflowDraftBody = z.infer<typeof PUT_WORKFLOW_DRAFT_BODY>;
|
|
623
|
+
type PutWorkflowDraftResponse = z.infer<typeof PUT_WORKFLOW_DRAFT_RESPONSE>;
|
|
581
624
|
|
|
582
625
|
declare const START_KEYS_STEP_SETTINGS_SCHEMA: z$1.ZodObject<z$1.objectUtil.extendShape<{
|
|
583
626
|
stepType: z$1.ZodString;
|
|
@@ -738,4 +781,12 @@ declare const TEMPLATE_IDS: readonly ["reviewTask", "translateTask", "translateA
|
|
|
738
781
|
type TemplateId = (typeof TEMPLATE_IDS)[number];
|
|
739
782
|
declare const TEMPLATES: Record<TemplateId, Template<string>>;
|
|
740
783
|
|
|
741
|
-
|
|
784
|
+
declare class LayoutTranslator {
|
|
785
|
+
translateTemplateToFrontendLayout<StateName extends string>(template: InternalTemplate<StateName>): FrontendLayout<StateName>;
|
|
786
|
+
translateFrontendLayoutToTemplate<StateName extends string>(frontendLayout: FrontendLayout<StateName>): Pick<InternalTemplate<StateName>, 'layout' | 'settings'> | undefined;
|
|
787
|
+
buildFrontendLayout<StateName extends string>(settings: StrictWorkflowLayoutSettings<StateName>): FrontendLayout<StateName>;
|
|
788
|
+
buildLayoutSettings<StateName extends string>(frontendLayout: FrontendLayout<StateName>): StrictWorkflowLayoutSettings<StateName>;
|
|
789
|
+
findTemplate<StateName extends string>(frontendLayout: FrontendLayout<StateName>): Template<StateName> | undefined;
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
export { API_ERROR, CREATE_TASK_STEP_SETTINGS_SCHEMA, CreateTaskExampleStepSettings, DELETE_WORKFLOW_PARAMS, DELETE_WORKFLOW_RESPONSE, END_STEP_SETTINGS, END_STEP_SETTINGS_SCHEMA, type EndStepSettings, type FrontendLayout, type FrontendLayoutStep, GET_WORKFLOW_LIST_PARAMS, GET_WORKFLOW_LIST_RESPONSE, GET_WORKFLOW_PARAMS, GET_WORKFLOW_RESPONSE, type GetWorkflowListParams, type GetWorkflowListResponse, type GetWorkflowParams, type GetWorkflowResponse, LayoutTranslator, METADATA_FIELDS, PATCH_PAUSE_WORKFLOW_PARAMS, PATCH_PAUSE_WORKFLOW_RESPONSE, PATCH_RESUME_WORKFLOW_PARAMS, PATCH_RESUME_WORKFLOW_RESPONSE, POST_DUPLICATE_WORKFLOW_PARAMS, POST_DUPLICATE_WORKFLOW_RESPONSE, POST_WORKFLOW_BODY, POST_WORKFLOW_PARAMS, POST_WORKFLOW_RESPONSE, PUT_WORKFLOW_DRAFT_BODY, PUT_WORKFLOW_DRAFT_PARAMS, PUT_WORKFLOW_DRAFT_RESPONSE, type PostWorkflowBody, type PostWorkflowParams, type PostWorkflowResponse, type PutWorkflowDraftBody, type PutWorkflowDraftParams, type PutWorkflowDraftResponse, REVIEW_TASK_STEP_SETTINGS, REVIEW_TASK_STEP_SETTINGS_SCHEMA, type ReviewTaskStepSettings, SCHEDULED_TRIGGER_STEP_SETTINGS, SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA, START_KEYS_STEP_SETTINGS_SCHEMA, STEP_TYPES, type ScheduledTriggerStepSettings, type StepType, TEMPLATES, TRANSLATE_TASK_STEP_SETTINGS, TRANSLATE_TASK_STEP_SETTINGS_SCHEMA, TRIGGER_TYPE, type Template, type TemplateId, type TranslateTaskStepSettings, WORKFLOW, WORKFLOW_EXTENDED, WORKFLOW_EXTENDED_SCHEMA, WORKFLOW_STATUS, type Workflow, type WorkflowExtended, type WorkflowExtendedSchema };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import z, { z as z$1 } from 'zod';
|
|
2
|
-
import { WorkflowLayout,
|
|
2
|
+
import { WorkflowLayout, WorkflowLayoutStepSettings, WorkflowLayoutStepSettingsList, WorkflowLayoutStep, WorkflowLayoutStepTriggerList, WorkflowLayoutStepTriggerEvent } from '@lokalise/maestro-common';
|
|
3
3
|
|
|
4
4
|
declare const METADATA_FIELDS: z.ZodEnum<["targetLanguageIds", "error"]>;
|
|
5
5
|
declare const TRIGGER_TYPE: z.ZodEnum<["Manual", "Scheduled", "Automated"]>;
|
|
@@ -55,8 +55,8 @@ declare const WORKFLOW: z.ZodObject<{
|
|
|
55
55
|
}, "strip", z.ZodTypeAny, {
|
|
56
56
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
57
57
|
id: string;
|
|
58
|
-
version: number;
|
|
59
58
|
title: string;
|
|
59
|
+
version: number;
|
|
60
60
|
triggerType: "Manual" | "Scheduled" | "Automated";
|
|
61
61
|
createdAt: string;
|
|
62
62
|
targetLanguageIds?: string[] | null | undefined;
|
|
@@ -72,8 +72,8 @@ declare const WORKFLOW: z.ZodObject<{
|
|
|
72
72
|
}, {
|
|
73
73
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
74
74
|
id: string;
|
|
75
|
-
version: number;
|
|
76
75
|
title: string;
|
|
76
|
+
version: number;
|
|
77
77
|
triggerType: "Manual" | "Scheduled" | "Automated";
|
|
78
78
|
createdAt: string;
|
|
79
79
|
targetLanguageIds?: string[] | null | undefined;
|
|
@@ -125,9 +125,9 @@ declare const WORKFLOW_EXTENDED: z.ZodObject<{
|
|
|
125
125
|
}, "strip", z.ZodTypeAny, {
|
|
126
126
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
127
127
|
id: string;
|
|
128
|
+
title: string;
|
|
128
129
|
groupId: string;
|
|
129
130
|
version: number;
|
|
130
|
-
title: string;
|
|
131
131
|
createdAt: string;
|
|
132
132
|
schema: {
|
|
133
133
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -139,9 +139,9 @@ declare const WORKFLOW_EXTENDED: z.ZodObject<{
|
|
|
139
139
|
}, {
|
|
140
140
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
141
141
|
id: string;
|
|
142
|
+
title: string;
|
|
142
143
|
groupId: string;
|
|
143
144
|
version: number;
|
|
144
|
-
title: string;
|
|
145
145
|
createdAt: string;
|
|
146
146
|
schema: {
|
|
147
147
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -180,9 +180,9 @@ declare const GET_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
180
180
|
}, "strip", z.ZodTypeAny, {
|
|
181
181
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
182
182
|
id: string;
|
|
183
|
+
title: string;
|
|
183
184
|
groupId: string;
|
|
184
185
|
version: number;
|
|
185
|
-
title: string;
|
|
186
186
|
createdAt: string;
|
|
187
187
|
schema: {
|
|
188
188
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -194,9 +194,9 @@ declare const GET_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
194
194
|
}, {
|
|
195
195
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
196
196
|
id: string;
|
|
197
|
+
title: string;
|
|
197
198
|
groupId: string;
|
|
198
199
|
version: number;
|
|
199
|
-
title: string;
|
|
200
200
|
createdAt: string;
|
|
201
201
|
schema: {
|
|
202
202
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -210,9 +210,9 @@ declare const GET_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
210
210
|
data: {
|
|
211
211
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
212
212
|
id: string;
|
|
213
|
+
title: string;
|
|
213
214
|
groupId: string;
|
|
214
215
|
version: number;
|
|
215
|
-
title: string;
|
|
216
216
|
createdAt: string;
|
|
217
217
|
schema: {
|
|
218
218
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -226,9 +226,9 @@ declare const GET_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
226
226
|
data: {
|
|
227
227
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
228
228
|
id: string;
|
|
229
|
+
title: string;
|
|
229
230
|
groupId: string;
|
|
230
231
|
version: number;
|
|
231
|
-
title: string;
|
|
232
232
|
createdAt: string;
|
|
233
233
|
schema: {
|
|
234
234
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -239,6 +239,8 @@ declare const GET_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
239
239
|
publishedAt?: string | undefined;
|
|
240
240
|
};
|
|
241
241
|
}>;
|
|
242
|
+
type GetWorkflowParams = z.infer<typeof GET_WORKFLOW_PARAMS>;
|
|
243
|
+
type GetWorkflowResponse = z.infer<typeof GET_WORKFLOW_RESPONSE>;
|
|
242
244
|
declare const GET_WORKFLOW_LIST_PARAMS: z.ZodObject<{
|
|
243
245
|
groupId: z.ZodString;
|
|
244
246
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -275,8 +277,8 @@ declare const GET_WORKFLOW_LIST_RESPONSE: z.ZodObject<{
|
|
|
275
277
|
}, "strip", z.ZodTypeAny, {
|
|
276
278
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
277
279
|
id: string;
|
|
278
|
-
version: number;
|
|
279
280
|
title: string;
|
|
281
|
+
version: number;
|
|
280
282
|
triggerType: "Manual" | "Scheduled" | "Automated";
|
|
281
283
|
createdAt: string;
|
|
282
284
|
targetLanguageIds?: string[] | null | undefined;
|
|
@@ -292,8 +294,8 @@ declare const GET_WORKFLOW_LIST_RESPONSE: z.ZodObject<{
|
|
|
292
294
|
}, {
|
|
293
295
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
294
296
|
id: string;
|
|
295
|
-
version: number;
|
|
296
297
|
title: string;
|
|
298
|
+
version: number;
|
|
297
299
|
triggerType: "Manual" | "Scheduled" | "Automated";
|
|
298
300
|
createdAt: string;
|
|
299
301
|
targetLanguageIds?: string[] | null | undefined;
|
|
@@ -311,8 +313,8 @@ declare const GET_WORKFLOW_LIST_RESPONSE: z.ZodObject<{
|
|
|
311
313
|
data: {
|
|
312
314
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
313
315
|
id: string;
|
|
314
|
-
version: number;
|
|
315
316
|
title: string;
|
|
317
|
+
version: number;
|
|
316
318
|
triggerType: "Manual" | "Scheduled" | "Automated";
|
|
317
319
|
createdAt: string;
|
|
318
320
|
targetLanguageIds?: string[] | null | undefined;
|
|
@@ -330,8 +332,8 @@ declare const GET_WORKFLOW_LIST_RESPONSE: z.ZodObject<{
|
|
|
330
332
|
data: {
|
|
331
333
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
332
334
|
id: string;
|
|
333
|
-
version: number;
|
|
334
335
|
title: string;
|
|
336
|
+
version: number;
|
|
335
337
|
triggerType: "Manual" | "Scheduled" | "Automated";
|
|
336
338
|
createdAt: string;
|
|
337
339
|
targetLanguageIds?: string[] | null | undefined;
|
|
@@ -406,9 +408,9 @@ declare const POST_DUPLICATE_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
406
408
|
}, "strip", z.ZodTypeAny, {
|
|
407
409
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
408
410
|
id: string;
|
|
411
|
+
title: string;
|
|
409
412
|
groupId: string;
|
|
410
413
|
version: number;
|
|
411
|
-
title: string;
|
|
412
414
|
createdAt: string;
|
|
413
415
|
schema: {
|
|
414
416
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -420,9 +422,9 @@ declare const POST_DUPLICATE_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
420
422
|
}, {
|
|
421
423
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
422
424
|
id: string;
|
|
425
|
+
title: string;
|
|
423
426
|
groupId: string;
|
|
424
427
|
version: number;
|
|
425
|
-
title: string;
|
|
426
428
|
createdAt: string;
|
|
427
429
|
schema: {
|
|
428
430
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -436,9 +438,9 @@ declare const POST_DUPLICATE_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
436
438
|
data: {
|
|
437
439
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
438
440
|
id: string;
|
|
441
|
+
title: string;
|
|
439
442
|
groupId: string;
|
|
440
443
|
version: number;
|
|
441
|
-
title: string;
|
|
442
444
|
createdAt: string;
|
|
443
445
|
schema: {
|
|
444
446
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -452,9 +454,9 @@ declare const POST_DUPLICATE_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
452
454
|
data: {
|
|
453
455
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
454
456
|
id: string;
|
|
457
|
+
title: string;
|
|
455
458
|
groupId: string;
|
|
456
459
|
version: number;
|
|
457
|
-
title: string;
|
|
458
460
|
createdAt: string;
|
|
459
461
|
schema: {
|
|
460
462
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -516,9 +518,9 @@ declare const POST_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
516
518
|
}, "strip", z.ZodTypeAny, {
|
|
517
519
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
518
520
|
id: string;
|
|
521
|
+
title: string;
|
|
519
522
|
groupId: string;
|
|
520
523
|
version: number;
|
|
521
|
-
title: string;
|
|
522
524
|
createdAt: string;
|
|
523
525
|
schema: {
|
|
524
526
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -530,9 +532,9 @@ declare const POST_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
530
532
|
}, {
|
|
531
533
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
532
534
|
id: string;
|
|
535
|
+
title: string;
|
|
533
536
|
groupId: string;
|
|
534
537
|
version: number;
|
|
535
|
-
title: string;
|
|
536
538
|
createdAt: string;
|
|
537
539
|
schema: {
|
|
538
540
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -546,9 +548,9 @@ declare const POST_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
546
548
|
data: {
|
|
547
549
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
548
550
|
id: string;
|
|
551
|
+
title: string;
|
|
549
552
|
groupId: string;
|
|
550
553
|
version: number;
|
|
551
|
-
title: string;
|
|
552
554
|
createdAt: string;
|
|
553
555
|
schema: {
|
|
554
556
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -562,9 +564,9 @@ declare const POST_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
562
564
|
data: {
|
|
563
565
|
status: "Draft" | "Live" | "Archived" | "Paused" | "Canceled";
|
|
564
566
|
id: string;
|
|
567
|
+
title: string;
|
|
565
568
|
groupId: string;
|
|
566
569
|
version: number;
|
|
567
|
-
title: string;
|
|
568
570
|
createdAt: string;
|
|
569
571
|
schema: {
|
|
570
572
|
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
@@ -578,6 +580,47 @@ declare const POST_WORKFLOW_RESPONSE: z.ZodObject<{
|
|
|
578
580
|
type PostWorkflowParams = z.infer<typeof POST_WORKFLOW_PARAMS>;
|
|
579
581
|
type PostWorkflowBody = z.infer<typeof POST_WORKFLOW_BODY>;
|
|
580
582
|
type PostWorkflowResponse = z.infer<typeof POST_WORKFLOW_RESPONSE>;
|
|
583
|
+
declare const PUT_WORKFLOW_DRAFT_PARAMS: z.ZodObject<{
|
|
584
|
+
groupId: z.ZodString;
|
|
585
|
+
workflowId: z.ZodString;
|
|
586
|
+
}, "strip", z.ZodTypeAny, {
|
|
587
|
+
groupId: string;
|
|
588
|
+
workflowId: string;
|
|
589
|
+
}, {
|
|
590
|
+
groupId: string;
|
|
591
|
+
workflowId: string;
|
|
592
|
+
}>;
|
|
593
|
+
declare const PUT_WORKFLOW_DRAFT_BODY: z.ZodObject<{
|
|
594
|
+
schema: z.ZodArray<z.ZodObject<{
|
|
595
|
+
id: z.ZodString;
|
|
596
|
+
type: z.ZodEnum<["trigger_step", "review_task_step", "translate_task_step", "end_step"]>;
|
|
597
|
+
values: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
598
|
+
}, "strip", z.ZodTypeAny, {
|
|
599
|
+
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
600
|
+
values: Record<string, unknown>;
|
|
601
|
+
id: string;
|
|
602
|
+
}, {
|
|
603
|
+
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
604
|
+
values: Record<string, unknown>;
|
|
605
|
+
id: string;
|
|
606
|
+
}>, "many">;
|
|
607
|
+
}, "strip", z.ZodTypeAny, {
|
|
608
|
+
schema: {
|
|
609
|
+
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
610
|
+
values: Record<string, unknown>;
|
|
611
|
+
id: string;
|
|
612
|
+
}[];
|
|
613
|
+
}, {
|
|
614
|
+
schema: {
|
|
615
|
+
type: "trigger_step" | "review_task_step" | "translate_task_step" | "end_step";
|
|
616
|
+
values: Record<string, unknown>;
|
|
617
|
+
id: string;
|
|
618
|
+
}[];
|
|
619
|
+
}>;
|
|
620
|
+
declare const PUT_WORKFLOW_DRAFT_RESPONSE: z.ZodNull;
|
|
621
|
+
type PutWorkflowDraftParams = z.infer<typeof PUT_WORKFLOW_DRAFT_PARAMS>;
|
|
622
|
+
type PutWorkflowDraftBody = z.infer<typeof PUT_WORKFLOW_DRAFT_BODY>;
|
|
623
|
+
type PutWorkflowDraftResponse = z.infer<typeof PUT_WORKFLOW_DRAFT_RESPONSE>;
|
|
581
624
|
|
|
582
625
|
declare const START_KEYS_STEP_SETTINGS_SCHEMA: z$1.ZodObject<z$1.objectUtil.extendShape<{
|
|
583
626
|
stepType: z$1.ZodString;
|
|
@@ -738,4 +781,12 @@ declare const TEMPLATE_IDS: readonly ["reviewTask", "translateTask", "translateA
|
|
|
738
781
|
type TemplateId = (typeof TEMPLATE_IDS)[number];
|
|
739
782
|
declare const TEMPLATES: Record<TemplateId, Template<string>>;
|
|
740
783
|
|
|
741
|
-
|
|
784
|
+
declare class LayoutTranslator {
|
|
785
|
+
translateTemplateToFrontendLayout<StateName extends string>(template: InternalTemplate<StateName>): FrontendLayout<StateName>;
|
|
786
|
+
translateFrontendLayoutToTemplate<StateName extends string>(frontendLayout: FrontendLayout<StateName>): Pick<InternalTemplate<StateName>, 'layout' | 'settings'> | undefined;
|
|
787
|
+
buildFrontendLayout<StateName extends string>(settings: StrictWorkflowLayoutSettings<StateName>): FrontendLayout<StateName>;
|
|
788
|
+
buildLayoutSettings<StateName extends string>(frontendLayout: FrontendLayout<StateName>): StrictWorkflowLayoutSettings<StateName>;
|
|
789
|
+
findTemplate<StateName extends string>(frontendLayout: FrontendLayout<StateName>): Template<StateName> | undefined;
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
export { API_ERROR, CREATE_TASK_STEP_SETTINGS_SCHEMA, CreateTaskExampleStepSettings, DELETE_WORKFLOW_PARAMS, DELETE_WORKFLOW_RESPONSE, END_STEP_SETTINGS, END_STEP_SETTINGS_SCHEMA, type EndStepSettings, type FrontendLayout, type FrontendLayoutStep, GET_WORKFLOW_LIST_PARAMS, GET_WORKFLOW_LIST_RESPONSE, GET_WORKFLOW_PARAMS, GET_WORKFLOW_RESPONSE, type GetWorkflowListParams, type GetWorkflowListResponse, type GetWorkflowParams, type GetWorkflowResponse, LayoutTranslator, METADATA_FIELDS, PATCH_PAUSE_WORKFLOW_PARAMS, PATCH_PAUSE_WORKFLOW_RESPONSE, PATCH_RESUME_WORKFLOW_PARAMS, PATCH_RESUME_WORKFLOW_RESPONSE, POST_DUPLICATE_WORKFLOW_PARAMS, POST_DUPLICATE_WORKFLOW_RESPONSE, POST_WORKFLOW_BODY, POST_WORKFLOW_PARAMS, POST_WORKFLOW_RESPONSE, PUT_WORKFLOW_DRAFT_BODY, PUT_WORKFLOW_DRAFT_PARAMS, PUT_WORKFLOW_DRAFT_RESPONSE, type PostWorkflowBody, type PostWorkflowParams, type PostWorkflowResponse, type PutWorkflowDraftBody, type PutWorkflowDraftParams, type PutWorkflowDraftResponse, REVIEW_TASK_STEP_SETTINGS, REVIEW_TASK_STEP_SETTINGS_SCHEMA, type ReviewTaskStepSettings, SCHEDULED_TRIGGER_STEP_SETTINGS, SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA, START_KEYS_STEP_SETTINGS_SCHEMA, STEP_TYPES, type ScheduledTriggerStepSettings, type StepType, TEMPLATES, TRANSLATE_TASK_STEP_SETTINGS, TRANSLATE_TASK_STEP_SETTINGS_SCHEMA, TRIGGER_TYPE, type Template, type TemplateId, type TranslateTaskStepSettings, WORKFLOW, WORKFLOW_EXTENDED, WORKFLOW_EXTENDED_SCHEMA, WORKFLOW_STATUS, type Workflow, type WorkflowExtended, type WorkflowExtendedSchema };
|
package/dist/index.mjs
CHANGED
|
@@ -5,6 +5,59 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
5
5
|
import { COMMON_ERROR_RESPONSE_SCHEMA } from "@lokalise/api-common";
|
|
6
6
|
import z2 from "zod";
|
|
7
7
|
|
|
8
|
+
// src/workflow/LayoutTranslator.ts
|
|
9
|
+
import { areStringArraysEqual } from "@lokalise/universal-ts-utils/dist/areStringArraysEqual.js";
|
|
10
|
+
var LayoutTranslator = class {
|
|
11
|
+
static {
|
|
12
|
+
__name(this, "LayoutTranslator");
|
|
13
|
+
}
|
|
14
|
+
translateTemplateToFrontendLayout(template) {
|
|
15
|
+
return this.buildFrontendLayout(template.settings);
|
|
16
|
+
}
|
|
17
|
+
translateFrontendLayoutToTemplate(frontendLayout) {
|
|
18
|
+
const template = this.findTemplate(frontendLayout);
|
|
19
|
+
if (!template) {
|
|
20
|
+
return void 0;
|
|
21
|
+
}
|
|
22
|
+
const layoutSettings = this.buildLayoutSettings(frontendLayout);
|
|
23
|
+
return {
|
|
24
|
+
layout: template.layout,
|
|
25
|
+
settings: layoutSettings
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
buildFrontendLayout(settings) {
|
|
29
|
+
return Object.entries(settings).map(([id, step]) => {
|
|
30
|
+
const { stepType, ...values } = step;
|
|
31
|
+
return {
|
|
32
|
+
id,
|
|
33
|
+
type: stepType,
|
|
34
|
+
values
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
buildLayoutSettings(frontendLayout) {
|
|
39
|
+
return frontendLayout.reduce(
|
|
40
|
+
(acc, frontendStep) => {
|
|
41
|
+
acc[frontendStep.id] = { ...frontendStep.values, stepType: frontendStep.type };
|
|
42
|
+
return acc;
|
|
43
|
+
},
|
|
44
|
+
{}
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
findTemplate(frontendLayout) {
|
|
48
|
+
const frontendLayoutStepIds = frontendLayout.map((step) => step.id);
|
|
49
|
+
const result = Object.entries(TEMPLATES).find(([_2, template2]) => {
|
|
50
|
+
const templateStepIds = template2.frontendLayout.map((step) => step.id);
|
|
51
|
+
return areStringArraysEqual(frontendLayoutStepIds, templateStepIds);
|
|
52
|
+
});
|
|
53
|
+
if (!result) {
|
|
54
|
+
return void 0;
|
|
55
|
+
}
|
|
56
|
+
const [_, template] = result;
|
|
57
|
+
return template;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
|
|
8
61
|
// src/workflow/steps.ts
|
|
9
62
|
import { WORKFLOW_LAYOUT_STEP_SETTINGS } from "@lokalise/maestro-common";
|
|
10
63
|
import { z } from "zod";
|
|
@@ -209,20 +262,13 @@ var TRANSLATE_TASK_TEMPLATE = {
|
|
|
209
262
|
// src/templates/schemas.ts
|
|
210
263
|
var TEMPLATE_IDS = ["reviewTask", "translateTask", "translateAndReviewTask"];
|
|
211
264
|
var buildTemplate = /* @__PURE__ */ __name((internalTemplate) => {
|
|
212
|
-
const
|
|
265
|
+
const layoutTranslator = new LayoutTranslator();
|
|
266
|
+
const frontendLayout = layoutTranslator.translateTemplateToFrontendLayout(internalTemplate);
|
|
213
267
|
return {
|
|
214
268
|
...internalTemplate,
|
|
215
269
|
frontendLayout
|
|
216
270
|
};
|
|
217
271
|
}, "buildTemplate");
|
|
218
|
-
var buildFrontendLayout = /* @__PURE__ */ __name((template) => Object.entries(template.settings).map(([id, step]) => {
|
|
219
|
-
const { stepType, ...values } = step;
|
|
220
|
-
return {
|
|
221
|
-
id,
|
|
222
|
-
type: stepType,
|
|
223
|
-
values
|
|
224
|
-
};
|
|
225
|
-
}), "buildFrontendLayout");
|
|
226
272
|
var TEMPLATES = {
|
|
227
273
|
reviewTask: buildTemplate(REVIEW_TASK_TEMPLATE),
|
|
228
274
|
translateTask: buildTemplate(TRANSLATE_TASK_TEMPLATE),
|
|
@@ -318,10 +364,20 @@ var POST_WORKFLOW_BODY = z2.nullable(
|
|
|
318
364
|
z2.object({
|
|
319
365
|
templateId: TEMPLATE_ID.optional()
|
|
320
366
|
})
|
|
321
|
-
).describe("
|
|
367
|
+
).describe("Parameters for creating a workflow");
|
|
322
368
|
var POST_WORKFLOW_RESPONSE = z2.object({
|
|
323
369
|
data: WORKFLOW_EXTENDED
|
|
324
370
|
});
|
|
371
|
+
var PUT_WORKFLOW_DRAFT_PARAMS = z2.object({
|
|
372
|
+
groupId: GROUP_ID,
|
|
373
|
+
workflowId: WORKFLOW_ID
|
|
374
|
+
});
|
|
375
|
+
var PUT_WORKFLOW_DRAFT_BODY = z2.object({
|
|
376
|
+
schema: WORKFLOW_EXTENDED_SCHEMA
|
|
377
|
+
}).describe("Schema with user changes");
|
|
378
|
+
var PUT_WORKFLOW_DRAFT_RESPONSE = z2.null({
|
|
379
|
+
description: "Successfully updated workflow draft"
|
|
380
|
+
});
|
|
325
381
|
export {
|
|
326
382
|
API_ERROR,
|
|
327
383
|
CREATE_TASK_STEP_SETTINGS_SCHEMA,
|
|
@@ -334,6 +390,7 @@ export {
|
|
|
334
390
|
GET_WORKFLOW_LIST_RESPONSE,
|
|
335
391
|
GET_WORKFLOW_PARAMS,
|
|
336
392
|
GET_WORKFLOW_RESPONSE,
|
|
393
|
+
LayoutTranslator,
|
|
337
394
|
METADATA_FIELDS,
|
|
338
395
|
PATCH_PAUSE_WORKFLOW_PARAMS,
|
|
339
396
|
PATCH_PAUSE_WORKFLOW_RESPONSE,
|
|
@@ -344,6 +401,9 @@ export {
|
|
|
344
401
|
POST_WORKFLOW_BODY,
|
|
345
402
|
POST_WORKFLOW_PARAMS,
|
|
346
403
|
POST_WORKFLOW_RESPONSE,
|
|
404
|
+
PUT_WORKFLOW_DRAFT_BODY,
|
|
405
|
+
PUT_WORKFLOW_DRAFT_PARAMS,
|
|
406
|
+
PUT_WORKFLOW_DRAFT_RESPONSE,
|
|
347
407
|
REVIEW_TASK_STEP_SETTINGS,
|
|
348
408
|
REVIEW_TASK_STEP_SETTINGS_SCHEMA,
|
|
349
409
|
SCHEDULED_TRIGGER_STEP_SETTINGS,
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/apiContract/schemas.ts","../src/workflow/steps.ts","../src/templates/resources/review-task.template.ts","../src/templates/resources/translate-and-review-task.template.ts","../src/templates/resources/translate-task.template.ts","../src/templates/schemas.ts"],"sourcesContent":["import { COMMON_ERROR_RESPONSE_SCHEMA } from '@lokalise/api-common'\nimport z from 'zod'\nimport { TEMPLATE_IDS } from '../templates/schemas.js'\nimport { STEP_TYPES } from '../workflow/steps.js'\n\n// COMMON SCHEMAS\nconst DATETIME = z.string().datetime()\nconst WORKFLOW_ID = z.string().max(36)\nconst TEMPLATE_ID = z.enum(TEMPLATE_IDS).describe('Template identifier')\nconst GROUP_ID = z\n .string()\n .max(255)\n .describe(\n 'Generated group identifier, which should be unique across Expert and Flow (example: expert-123-98616399660d3c2456abc5.66984240)',\n )\n\nexport const METADATA_FIELDS = z\n .enum(['targetLanguageIds', 'error'])\n .describe('Metadata fields that can be included in the response')\n\nexport const TRIGGER_TYPE = z.enum(['Manual', 'Scheduled', 'Automated']).describe('Trigger type')\n\nexport const WORKFLOW_STATUS = z\n .enum(['Draft', 'Live', 'Archived', 'Paused', 'Canceled'])\n .describe('Workflow status')\n\nexport const API_ERROR = COMMON_ERROR_RESPONSE_SCHEMA\n\n// GET WORKFLOW\nexport const GET_WORKFLOW_PARAMS = z\n .object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n })\n .describe('URL parameters for getting a workflow')\n\nexport const WORKFLOW = z\n .object({\n id: WORKFLOW_ID,\n version: z.number(),\n status: WORKFLOW_STATUS,\n title: z.string(),\n triggerType: TRIGGER_TYPE,\n targetLanguageIds: z.array(z.string()).optional().nullable(),\n error: COMMON_ERROR_RESPONSE_SCHEMA.optional().nullable(),\n createdAt: DATETIME,\n updatedAt: z.optional(DATETIME).nullable(),\n publishedAt: z.optional(DATETIME).nullable(),\n triggeredAt: z.optional(DATETIME).nullable(),\n metadata: z.optional(z.record(z.unknown())).nullable(),\n })\n .describe('Workflow. Used in the list of workflows')\n\nexport const WORKFLOW_EXTENDED_SCHEMA = z\n .array(\n z.object({\n id: z.string().max(100),\n type: z.enum(STEP_TYPES),\n values: z.record(z.string(), z.unknown()),\n }),\n )\n .describe('Workflow FrontendLayout')\n\nexport const WORKFLOW_EXTENDED = z\n .object({\n id: WORKFLOW_ID,\n groupId: GROUP_ID,\n version: z.number(),\n status: WORKFLOW_STATUS,\n title: z.string(),\n schema: WORKFLOW_EXTENDED_SCHEMA,\n createdAt: DATETIME,\n updatedAt: z.optional(DATETIME),\n publishedAt: z.optional(DATETIME),\n })\n .describe('Workflow. Response for getting a workflow or creating a new one')\n\nexport type Workflow = z.infer<typeof WORKFLOW>\nexport type WorkflowExtended = z.infer<typeof WORKFLOW_EXTENDED>\nexport type WorkflowExtendedSchema = z.infer<typeof WORKFLOW_EXTENDED_SCHEMA>\n\nexport const GET_WORKFLOW_RESPONSE = z.object({\n data: WORKFLOW_EXTENDED,\n})\n\n// LIST WORKFLOWS\nexport const GET_WORKFLOW_LIST_PARAMS = z.object({\n groupId: GROUP_ID,\n})\n\nexport const GET_WORKFLOW_LIST_RESPONSE = z.object({\n data: z.array(WORKFLOW),\n})\n\nexport type GetWorkflowListParams = z.infer<typeof GET_WORKFLOW_LIST_PARAMS>\nexport type GetWorkflowListResponse = z.infer<typeof GET_WORKFLOW_LIST_RESPONSE>\n\n// PAUSE WORKFLOW\nexport const PATCH_PAUSE_WORKFLOW_PARAMS = z.object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n})\n\nexport const PATCH_PAUSE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully paused workflow',\n})\n\n// RESUME WORKFLOW\nexport const PATCH_RESUME_WORKFLOW_PARAMS = z.object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n})\n\nexport const PATCH_RESUME_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully resumed workflow',\n})\n\n// DUPLICATE WORKFLOW\nexport const POST_DUPLICATE_WORKFLOW_PARAMS = z.object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n})\n\nexport const POST_DUPLICATE_WORKFLOW_RESPONSE = GET_WORKFLOW_RESPONSE\n\n// DELETE WORKFLOW\nexport const DELETE_WORKFLOW_PARAMS = z.object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n})\n\nexport const DELETE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully deleted workflow',\n})\n\n// CREATE WORKFLOW\nexport const POST_WORKFLOW_PARAMS = z\n .object({\n groupId: GROUP_ID,\n })\n .describe('URL parameters for creating a workflow')\n\nexport const POST_WORKFLOW_BODY = z\n .nullable(\n z.object({\n templateId: TEMPLATE_ID.optional(),\n }),\n )\n .describe('URL parameters for creating a workflow')\n\nexport const POST_WORKFLOW_RESPONSE = z.object({\n data: WORKFLOW_EXTENDED,\n})\n\nexport type PostWorkflowParams = z.infer<typeof POST_WORKFLOW_PARAMS>\nexport type PostWorkflowBody = z.infer<typeof POST_WORKFLOW_BODY>\nexport type PostWorkflowResponse = z.infer<typeof POST_WORKFLOW_RESPONSE>\n","import { WORKFLOW_LAYOUT_STEP_SETTINGS } from '@lokalise/maestro-common'\nimport { z } from 'zod'\n\nexport const START_KEYS_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.extend({\n name: z.string(),\n description: z.string(),\n autoMarkAsUnverified: z.boolean(),\n runOnSchedule: z.boolean(),\n monitoredLanguageId: z.number(),\n targetLanguageId: z.number(),\n monitoredKeyType: z.enum(['new', 'updated', 'both']),\n})\n\nexport const CREATE_TASK_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.extend({\n taskType: z.enum(['translate', 'review']),\n dueDate: z.union([z.number(), z.string()]),\n})\n\nexport const CreateTaskExampleStepSettings = CREATE_TASK_STEP_SETTINGS_SCHEMA.parse({\n stepType: 'create_task',\n taskType: 'translate',\n dueDate: 5,\n})\n\nexport const STEP_TYPES = [\n 'trigger_step',\n 'review_task_step',\n 'translate_task_step',\n 'end_step',\n] as const\nexport type StepType = (typeof STEP_TYPES)[number]\n\n// SCHEDULED_TRIGGER_STEP\nexport const SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.extend({\n runOnSchedule: z.boolean(),\n monitoredKeyType: z.enum(['new', 'updated', 'both']),\n monitoredLanguageId: z.optional(z.number()),\n targetLanguageIds: z.array(z.number()),\n})\nexport type ScheduledTriggerStepSettings = z.infer<\n typeof SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA\n> & {\n stepType: StepType\n}\nexport const SCHEDULED_TRIGGER_STEP_SETTINGS: ScheduledTriggerStepSettings = {\n stepType: 'trigger_step',\n runOnSchedule: true,\n monitoredLanguageId: undefined,\n targetLanguageIds: [],\n monitoredKeyType: 'new',\n}\n\n// REVIEW_TASK_STEP\nexport const REVIEW_TASK_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS\nexport type ReviewTaskStepSettings = z.infer<typeof REVIEW_TASK_STEP_SETTINGS_SCHEMA> & {\n stepType: StepType\n}\nexport const REVIEW_TASK_STEP_SETTINGS: ReviewTaskStepSettings = {\n stepType: 'review_task_step',\n}\n\n// TRANSLATE_TASK_STEP\nexport const TRANSLATE_TASK_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS\nexport type TranslateTaskStepSettings = z.infer<typeof TRANSLATE_TASK_STEP_SETTINGS_SCHEMA> & {\n stepType: StepType\n}\nexport const TRANSLATE_TASK_STEP_SETTINGS: TranslateTaskStepSettings = {\n stepType: 'translate_task_step',\n}\n\n// END_STEP\nexport const END_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS\nexport type EndStepSettings = z.infer<typeof END_STEP_SETTINGS_SCHEMA> & {\n stepType: StepType\n}\nexport const END_STEP_SETTINGS: EndStepSettings = {\n stepType: 'end_step',\n}\n","import {\n END_STEP_SETTINGS,\n REVIEW_TASK_STEP_SETTINGS,\n SCHEDULED_TRIGGER_STEP_SETTINGS,\n} from '../../workflow/steps.js'\nimport type { InternalTemplate } from '../types.js'\n\nexport const REVIEW_TASK_TEMPLATE: InternalTemplate<'TriggerStep' | 'ReviewTaskStep' | 'EndStep'> =\n {\n id: 'reviewTask',\n title: 'Review task',\n summary: 'Generate a review task when content is added to the project.',\n description:\n 'Select this workflow to automatically create a review task when the content in the editor meets the conditions set in \"Start\".',\n layout: {\n initial: 'TriggerStep',\n states: {\n TriggerStep: {\n on: {\n WorkflowTriggerEvent: {\n target: 'ReviewTaskStep',\n actions: [{ type: 'storeWorkflowTriggerEventScope' }],\n },\n },\n },\n ReviewTaskStep: {\n entry: [\n {\n type: 'createTaskAction',\n params: {\n type: 'review',\n },\n },\n ],\n on: {\n TaskClosedEvent: {\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: SCHEDULED_TRIGGER_STEP_SETTINGS,\n ReviewTaskStep: REVIEW_TASK_STEP_SETTINGS,\n EndStep: END_STEP_SETTINGS,\n },\n }\n","import {\n END_STEP_SETTINGS,\n REVIEW_TASK_STEP_SETTINGS,\n SCHEDULED_TRIGGER_STEP_SETTINGS,\n TRANSLATE_TASK_STEP_SETTINGS,\n} from '../../workflow/steps.js'\nimport type { InternalTemplate } from '../types.js'\n\nexport const TRANSLATE_AND_REVIEW_TASK_TEMPLATE: InternalTemplate<\n 'TriggerStep' | 'TranslateTaskStep' | 'ReviewTaskStep' | 'EndStep'\n> = {\n id: 'translateAndReviewTask',\n title: 'Translation task → review task',\n summary: 'Automatic creation of translation task before a review task.',\n description:\n 'Use this template to set up a chained workflow where a review task will be created as soon as the translation task is completed.',\n layout: {\n initial: 'TriggerStep',\n states: {\n TriggerStep: {\n on: {\n WorkflowTriggerEvent: {\n target: 'TranslateTaskStep',\n actions: [{ type: 'storeWorkflowTriggerEventScope' }],\n },\n },\n },\n TranslateTaskStep: {\n entry: [\n {\n type: 'createTaskAction',\n params: {\n type: 'translate',\n },\n },\n ],\n on: {\n TaskClosedEvent: {\n target: 'ReviewTaskStep',\n },\n },\n },\n ReviewTaskStep: {\n entry: [\n {\n type: 'createTaskAction',\n params: {\n type: 'review',\n },\n },\n ],\n on: {\n TaskClosedEvent: {\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: SCHEDULED_TRIGGER_STEP_SETTINGS,\n TranslateTaskStep: TRANSLATE_TASK_STEP_SETTINGS,\n ReviewTaskStep: REVIEW_TASK_STEP_SETTINGS,\n EndStep: END_STEP_SETTINGS,\n },\n}\n","import {\n END_STEP_SETTINGS,\n SCHEDULED_TRIGGER_STEP_SETTINGS,\n TRANSLATE_TASK_STEP_SETTINGS,\n} from '../../workflow/steps.js'\nimport type { InternalTemplate } from '../types.js'\n\nexport const TRANSLATE_TASK_TEMPLATE: InternalTemplate<\n 'TriggerStep' | 'TranslateTaskStep' | 'EndStep'\n> = {\n id: 'translateTask',\n title: 'Translation task',\n summary: 'Generate a translation task when content is added to the project.',\n description:\n 'Select this workflow to automatically create a translation task when the content in the editor meets the conditions set in “Start”.',\n layout: {\n initial: 'TriggerStep',\n states: {\n TriggerStep: {\n on: {\n WorkflowTriggerEvent: {\n target: 'TranslateTaskStep',\n actions: [{ type: 'storeWorkflowTriggerEventScope' }],\n },\n },\n },\n TranslateTaskStep: {\n entry: [\n {\n type: 'createTaskAction',\n params: {\n type: 'translate',\n },\n },\n ],\n on: {\n TaskClosedEvent: {\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: SCHEDULED_TRIGGER_STEP_SETTINGS,\n TranslateTaskStep: TRANSLATE_TASK_STEP_SETTINGS,\n EndStep: END_STEP_SETTINGS,\n },\n}\n","import type { StepType } from '../workflow/steps.js'\nimport { REVIEW_TASK_TEMPLATE } from './resources/review-task.template.js'\nimport { TRANSLATE_AND_REVIEW_TASK_TEMPLATE } from './resources/translate-and-review-task.template.js'\nimport { TRANSLATE_TASK_TEMPLATE } from './resources/translate-task.template.js'\nimport type { FrontendLayout, InternalTemplate, Template } from './types.js'\n\nexport const TEMPLATE_IDS = ['reviewTask', 'translateTask', 'translateAndReviewTask'] as const\n\nexport type TemplateId = (typeof TEMPLATE_IDS)[number]\n\nconst buildTemplate = <StateName extends string>(\n internalTemplate: InternalTemplate<StateName>,\n): Template<StateName> => {\n const frontendLayout = buildFrontendLayout(internalTemplate)\n\n return {\n ...internalTemplate,\n frontendLayout,\n }\n}\n\nconst buildFrontendLayout = <StateName extends string>(\n template: InternalTemplate<StateName>,\n): FrontendLayout<StateName> =>\n Object.entries(template.settings).map(([id, step]) => {\n const { stepType, ...values } = step\n return {\n id: id as StateName,\n type: stepType as StepType,\n values,\n }\n })\n\nexport const TEMPLATES: Record<TemplateId, Template<string>> = {\n reviewTask: buildTemplate(REVIEW_TASK_TEMPLATE),\n translateTask: buildTemplate(TRANSLATE_TASK_TEMPLATE),\n translateAndReviewTask: buildTemplate(TRANSLATE_AND_REVIEW_TASK_TEMPLATE),\n}\n"],"mappings":"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","names":["z","z"]}
|
|
1
|
+
{"version":3,"sources":["../src/apiContract/schemas.ts","../src/workflow/LayoutTranslator.ts","../src/workflow/steps.ts","../src/templates/resources/review-task.template.ts","../src/templates/resources/translate-and-review-task.template.ts","../src/templates/resources/translate-task.template.ts","../src/templates/schemas.ts"],"sourcesContent":["import { COMMON_ERROR_RESPONSE_SCHEMA } from '@lokalise/api-common'\nimport z from 'zod'\nimport { TEMPLATE_IDS } from '../templates/schemas.js'\nimport { STEP_TYPES } from '../workflow/steps.js'\n\n// COMMON SCHEMAS\nconst DATETIME = z.string().datetime()\nconst WORKFLOW_ID = z.string().max(36)\nconst TEMPLATE_ID = z.enum(TEMPLATE_IDS).describe('Template identifier')\nconst GROUP_ID = z\n .string()\n .max(255)\n .describe(\n 'Generated group identifier, which should be unique across Expert and Flow (example: expert-123-98616399660d3c2456abc5.66984240)',\n )\n\nexport const METADATA_FIELDS = z\n .enum(['targetLanguageIds', 'error'])\n .describe('Metadata fields that can be included in the response')\n\nexport const TRIGGER_TYPE = z.enum(['Manual', 'Scheduled', 'Automated']).describe('Trigger type')\n\nexport const WORKFLOW_STATUS = z\n .enum(['Draft', 'Live', 'Archived', 'Paused', 'Canceled'])\n .describe('Workflow status')\n\nexport const API_ERROR = COMMON_ERROR_RESPONSE_SCHEMA\n\n// GET WORKFLOW\nexport const GET_WORKFLOW_PARAMS = z\n .object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n })\n .describe('URL parameters for getting a workflow')\n\nexport const WORKFLOW = z\n .object({\n id: WORKFLOW_ID,\n version: z.number(),\n status: WORKFLOW_STATUS,\n title: z.string(),\n triggerType: TRIGGER_TYPE,\n targetLanguageIds: z.array(z.string()).optional().nullable(),\n error: COMMON_ERROR_RESPONSE_SCHEMA.optional().nullable(),\n createdAt: DATETIME,\n updatedAt: z.optional(DATETIME).nullable(),\n publishedAt: z.optional(DATETIME).nullable(),\n triggeredAt: z.optional(DATETIME).nullable(),\n metadata: z.optional(z.record(z.unknown())).nullable(),\n })\n .describe('Workflow. Used in the list of workflows')\n\nexport const WORKFLOW_EXTENDED_SCHEMA = z\n .array(\n z.object({\n id: z.string().max(100),\n type: z.enum(STEP_TYPES),\n values: z.record(z.string(), z.unknown()),\n }),\n )\n .describe('Workflow FrontendLayout')\n\nexport const WORKFLOW_EXTENDED = z\n .object({\n id: WORKFLOW_ID,\n groupId: GROUP_ID,\n version: z.number(),\n status: WORKFLOW_STATUS,\n title: z.string(),\n schema: WORKFLOW_EXTENDED_SCHEMA,\n createdAt: DATETIME,\n updatedAt: z.optional(DATETIME),\n publishedAt: z.optional(DATETIME),\n })\n .describe('Workflow. Response for getting a workflow or creating a new one')\n\nexport type Workflow = z.infer<typeof WORKFLOW>\nexport type WorkflowExtended = z.infer<typeof WORKFLOW_EXTENDED>\nexport type WorkflowExtendedSchema = z.infer<typeof WORKFLOW_EXTENDED_SCHEMA>\n\nexport const GET_WORKFLOW_RESPONSE = z.object({\n data: WORKFLOW_EXTENDED,\n})\n\nexport type GetWorkflowParams = z.infer<typeof GET_WORKFLOW_PARAMS>\nexport type GetWorkflowResponse = z.infer<typeof GET_WORKFLOW_RESPONSE>\n\n// LIST WORKFLOWS\nexport const GET_WORKFLOW_LIST_PARAMS = z.object({\n groupId: GROUP_ID,\n})\n\nexport const GET_WORKFLOW_LIST_RESPONSE = z.object({\n data: z.array(WORKFLOW),\n})\n\nexport type GetWorkflowListParams = z.infer<typeof GET_WORKFLOW_LIST_PARAMS>\nexport type GetWorkflowListResponse = z.infer<typeof GET_WORKFLOW_LIST_RESPONSE>\n\n// PAUSE WORKFLOW\nexport const PATCH_PAUSE_WORKFLOW_PARAMS = z.object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n})\n\nexport const PATCH_PAUSE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully paused workflow',\n})\n\n// RESUME WORKFLOW\nexport const PATCH_RESUME_WORKFLOW_PARAMS = z.object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n})\n\nexport const PATCH_RESUME_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully resumed workflow',\n})\n\n// DUPLICATE WORKFLOW\nexport const POST_DUPLICATE_WORKFLOW_PARAMS = z.object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n})\n\nexport const POST_DUPLICATE_WORKFLOW_RESPONSE = GET_WORKFLOW_RESPONSE\n\n// DELETE WORKFLOW\nexport const DELETE_WORKFLOW_PARAMS = z.object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n})\n\nexport const DELETE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully deleted workflow',\n})\n\n// CREATE WORKFLOW\nexport const POST_WORKFLOW_PARAMS = z\n .object({\n groupId: GROUP_ID,\n })\n .describe('URL parameters for creating a workflow')\n\nexport const POST_WORKFLOW_BODY = z\n .nullable(\n z.object({\n templateId: TEMPLATE_ID.optional(),\n }),\n )\n .describe('Parameters for creating a workflow')\n\nexport const POST_WORKFLOW_RESPONSE = z.object({\n data: WORKFLOW_EXTENDED,\n})\n\nexport type PostWorkflowParams = z.infer<typeof POST_WORKFLOW_PARAMS>\nexport type PostWorkflowBody = z.infer<typeof POST_WORKFLOW_BODY>\nexport type PostWorkflowResponse = z.infer<typeof POST_WORKFLOW_RESPONSE>\n\n// UPDATE DRAFT\nexport const PUT_WORKFLOW_DRAFT_PARAMS = z.object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n})\n\nexport const PUT_WORKFLOW_DRAFT_BODY = z\n .object({\n schema: WORKFLOW_EXTENDED_SCHEMA,\n })\n .describe('Schema with user changes')\n\nexport const PUT_WORKFLOW_DRAFT_RESPONSE = z.null({\n description: 'Successfully updated workflow draft',\n})\n\nexport type PutWorkflowDraftParams = z.infer<typeof PUT_WORKFLOW_DRAFT_PARAMS>\nexport type PutWorkflowDraftBody = z.infer<typeof PUT_WORKFLOW_DRAFT_BODY>\nexport type PutWorkflowDraftResponse = z.infer<typeof PUT_WORKFLOW_DRAFT_RESPONSE>\n","import { areStringArraysEqual } from '@lokalise/universal-ts-utils/dist/areStringArraysEqual.js'\nimport { TEMPLATES } from '../templates/schemas.js'\nimport type {\n FrontendLayout,\n InternalTemplate,\n StrictWorkflowLayout,\n StrictWorkflowLayoutSettings,\n StrictWorkflowLayoutStepSettings,\n Template,\n} from '../templates/types.js'\nimport type { StepType } from './steps.js'\n\nexport class LayoutTranslator {\n public translateTemplateToFrontendLayout<StateName extends string>(\n template: InternalTemplate<StateName>,\n ): FrontendLayout<StateName> {\n return this.buildFrontendLayout<StateName>(template.settings)\n }\n\n public translateFrontendLayoutToTemplate<StateName extends string>(\n frontendLayout: FrontendLayout<StateName>,\n ): Pick<InternalTemplate<StateName>, 'layout' | 'settings'> | undefined {\n const template = this.findTemplate(frontendLayout)\n if (!template) {\n return undefined\n }\n\n const layoutSettings = this.buildLayoutSettings<StateName>(frontendLayout)\n\n return {\n layout: template.layout as StrictWorkflowLayout<StateName>,\n settings: layoutSettings,\n }\n }\n\n public buildFrontendLayout<StateName extends string>(\n settings: StrictWorkflowLayoutSettings<StateName>,\n ): FrontendLayout<StateName> {\n return Object.entries(settings).map(([id, step]) => {\n const { stepType, ...values } = step\n return {\n id: id as StateName,\n type: stepType as StepType,\n values,\n }\n })\n }\n\n buildLayoutSettings<StateName extends string>(\n frontendLayout: FrontendLayout<StateName>,\n ): StrictWorkflowLayoutSettings<StateName> {\n return frontendLayout.reduce(\n (acc, frontendStep) => {\n acc[frontendStep.id] = { ...frontendStep.values, stepType: frontendStep.type }\n return acc\n },\n {} as Record<StateName, StrictWorkflowLayoutStepSettings>,\n )\n }\n\n findTemplate<StateName extends string>(\n frontendLayout: FrontendLayout<StateName>,\n ): Template<StateName> | undefined {\n const frontendLayoutStepIds = frontendLayout.map((step) => step.id)\n\n const result = Object.entries(TEMPLATES).find(([_, template]) => {\n const templateStepIds = template.frontendLayout.map((step) => step.id)\n return areStringArraysEqual(frontendLayoutStepIds, templateStepIds)\n })\n\n if (!result) {\n return undefined\n }\n\n const [_, template] = result\n\n return template as Template<StateName>\n }\n}\n","import { WORKFLOW_LAYOUT_STEP_SETTINGS } from '@lokalise/maestro-common'\nimport { z } from 'zod'\n\nexport const START_KEYS_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.extend({\n name: z.string(),\n description: z.string(),\n autoMarkAsUnverified: z.boolean(),\n runOnSchedule: z.boolean(),\n monitoredLanguageId: z.number(),\n targetLanguageId: z.number(),\n monitoredKeyType: z.enum(['new', 'updated', 'both']),\n})\n\nexport const CREATE_TASK_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.extend({\n taskType: z.enum(['translate', 'review']),\n dueDate: z.union([z.number(), z.string()]),\n})\n\nexport const CreateTaskExampleStepSettings = CREATE_TASK_STEP_SETTINGS_SCHEMA.parse({\n stepType: 'create_task',\n taskType: 'translate',\n dueDate: 5,\n})\n\nexport const STEP_TYPES = [\n 'trigger_step',\n 'review_task_step',\n 'translate_task_step',\n 'end_step',\n] as const\nexport type StepType = (typeof STEP_TYPES)[number]\n\n// SCHEDULED_TRIGGER_STEP\nexport const SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.extend({\n runOnSchedule: z.boolean(),\n monitoredKeyType: z.enum(['new', 'updated', 'both']),\n monitoredLanguageId: z.optional(z.number()),\n targetLanguageIds: z.array(z.number()),\n})\nexport type ScheduledTriggerStepSettings = z.infer<\n typeof SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA\n> & {\n stepType: StepType\n}\nexport const SCHEDULED_TRIGGER_STEP_SETTINGS: ScheduledTriggerStepSettings = {\n stepType: 'trigger_step',\n runOnSchedule: true,\n monitoredLanguageId: undefined,\n targetLanguageIds: [],\n monitoredKeyType: 'new',\n}\n\n// REVIEW_TASK_STEP\nexport const REVIEW_TASK_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS\nexport type ReviewTaskStepSettings = z.infer<typeof REVIEW_TASK_STEP_SETTINGS_SCHEMA> & {\n stepType: StepType\n}\nexport const REVIEW_TASK_STEP_SETTINGS: ReviewTaskStepSettings = {\n stepType: 'review_task_step',\n}\n\n// TRANSLATE_TASK_STEP\nexport const TRANSLATE_TASK_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS\nexport type TranslateTaskStepSettings = z.infer<typeof TRANSLATE_TASK_STEP_SETTINGS_SCHEMA> & {\n stepType: StepType\n}\nexport const TRANSLATE_TASK_STEP_SETTINGS: TranslateTaskStepSettings = {\n stepType: 'translate_task_step',\n}\n\n// END_STEP\nexport const END_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS\nexport type EndStepSettings = z.infer<typeof END_STEP_SETTINGS_SCHEMA> & {\n stepType: StepType\n}\nexport const END_STEP_SETTINGS: EndStepSettings = {\n stepType: 'end_step',\n}\n","import {\n END_STEP_SETTINGS,\n REVIEW_TASK_STEP_SETTINGS,\n SCHEDULED_TRIGGER_STEP_SETTINGS,\n} from '../../workflow/steps.js'\nimport type { InternalTemplate } from '../types.js'\n\nexport const REVIEW_TASK_TEMPLATE: InternalTemplate<'TriggerStep' | 'ReviewTaskStep' | 'EndStep'> =\n {\n id: 'reviewTask',\n title: 'Review task',\n summary: 'Generate a review task when content is added to the project.',\n description:\n 'Select this workflow to automatically create a review task when the content in the editor meets the conditions set in \"Start\".',\n layout: {\n initial: 'TriggerStep',\n states: {\n TriggerStep: {\n on: {\n WorkflowTriggerEvent: {\n target: 'ReviewTaskStep',\n actions: [{ type: 'storeWorkflowTriggerEventScope' }],\n },\n },\n },\n ReviewTaskStep: {\n entry: [\n {\n type: 'createTaskAction',\n params: {\n type: 'review',\n },\n },\n ],\n on: {\n TaskClosedEvent: {\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: SCHEDULED_TRIGGER_STEP_SETTINGS,\n ReviewTaskStep: REVIEW_TASK_STEP_SETTINGS,\n EndStep: END_STEP_SETTINGS,\n },\n }\n","import {\n END_STEP_SETTINGS,\n REVIEW_TASK_STEP_SETTINGS,\n SCHEDULED_TRIGGER_STEP_SETTINGS,\n TRANSLATE_TASK_STEP_SETTINGS,\n} from '../../workflow/steps.js'\nimport type { InternalTemplate } from '../types.js'\n\nexport const TRANSLATE_AND_REVIEW_TASK_TEMPLATE: InternalTemplate<\n 'TriggerStep' | 'TranslateTaskStep' | 'ReviewTaskStep' | 'EndStep'\n> = {\n id: 'translateAndReviewTask',\n title: 'Translation task → review task',\n summary: 'Automatic creation of translation task before a review task.',\n description:\n 'Use this template to set up a chained workflow where a review task will be created as soon as the translation task is completed.',\n layout: {\n initial: 'TriggerStep',\n states: {\n TriggerStep: {\n on: {\n WorkflowTriggerEvent: {\n target: 'TranslateTaskStep',\n actions: [{ type: 'storeWorkflowTriggerEventScope' }],\n },\n },\n },\n TranslateTaskStep: {\n entry: [\n {\n type: 'createTaskAction',\n params: {\n type: 'translate',\n },\n },\n ],\n on: {\n TaskClosedEvent: {\n target: 'ReviewTaskStep',\n },\n },\n },\n ReviewTaskStep: {\n entry: [\n {\n type: 'createTaskAction',\n params: {\n type: 'review',\n },\n },\n ],\n on: {\n TaskClosedEvent: {\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: SCHEDULED_TRIGGER_STEP_SETTINGS,\n TranslateTaskStep: TRANSLATE_TASK_STEP_SETTINGS,\n ReviewTaskStep: REVIEW_TASK_STEP_SETTINGS,\n EndStep: END_STEP_SETTINGS,\n },\n}\n","import {\n END_STEP_SETTINGS,\n SCHEDULED_TRIGGER_STEP_SETTINGS,\n TRANSLATE_TASK_STEP_SETTINGS,\n} from '../../workflow/steps.js'\nimport type { InternalTemplate } from '../types.js'\n\nexport const TRANSLATE_TASK_TEMPLATE: InternalTemplate<\n 'TriggerStep' | 'TranslateTaskStep' | 'EndStep'\n> = {\n id: 'translateTask',\n title: 'Translation task',\n summary: 'Generate a translation task when content is added to the project.',\n description:\n 'Select this workflow to automatically create a translation task when the content in the editor meets the conditions set in “Start”.',\n layout: {\n initial: 'TriggerStep',\n states: {\n TriggerStep: {\n on: {\n WorkflowTriggerEvent: {\n target: 'TranslateTaskStep',\n actions: [{ type: 'storeWorkflowTriggerEventScope' }],\n },\n },\n },\n TranslateTaskStep: {\n entry: [\n {\n type: 'createTaskAction',\n params: {\n type: 'translate',\n },\n },\n ],\n on: {\n TaskClosedEvent: {\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: SCHEDULED_TRIGGER_STEP_SETTINGS,\n TranslateTaskStep: TRANSLATE_TASK_STEP_SETTINGS,\n EndStep: END_STEP_SETTINGS,\n },\n}\n","import { LayoutTranslator } from '../workflow/LayoutTranslator.js'\nimport { REVIEW_TASK_TEMPLATE } from './resources/review-task.template.js'\nimport { TRANSLATE_AND_REVIEW_TASK_TEMPLATE } from './resources/translate-and-review-task.template.js'\nimport { TRANSLATE_TASK_TEMPLATE } from './resources/translate-task.template.js'\nimport type { InternalTemplate, Template } from './types.js'\n\nexport const TEMPLATE_IDS = ['reviewTask', 'translateTask', 'translateAndReviewTask'] as const\n\nexport type TemplateId = (typeof TEMPLATE_IDS)[number]\n\nconst buildTemplate = <StateName extends string>(\n internalTemplate: InternalTemplate<StateName>,\n): Template<StateName> => {\n const layoutTranslator = new LayoutTranslator()\n const frontendLayout = layoutTranslator.translateTemplateToFrontendLayout(internalTemplate)\n\n return {\n ...internalTemplate,\n frontendLayout,\n }\n}\n\nexport const TEMPLATES: Record<TemplateId, Template<string>> = {\n reviewTask: buildTemplate(REVIEW_TASK_TEMPLATE),\n translateTask: buildTemplate(TRANSLATE_TASK_TEMPLATE),\n translateAndReviewTask: buildTemplate(TRANSLATE_AND_REVIEW_TASK_TEMPLATE),\n}\n"],"mappings":"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","names":["z","_","template","z"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lokalise/maestro-expert-tenant-lib",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"homepage": "https://github.com/lokalise/maestro",
|
|
6
6
|
"description": "This library provides shared objects, types and zod schemas for Maestro",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"@biomejs/biome": "^1.8.3",
|
|
46
46
|
"@lokalise/biome-config": "^1.3.0",
|
|
47
47
|
"@lokalise/maestro-common": "^1.0.3",
|
|
48
|
-
"@types/node": "^22.1
|
|
48
|
+
"@types/node": "^22.4.1",
|
|
49
49
|
"@vitest/coverage-v8": "^2.0.5",
|
|
50
50
|
"auto-changelog": "^2.4.0",
|
|
51
51
|
"tslib": "^2.6.3",
|
|
@@ -54,7 +54,8 @@
|
|
|
54
54
|
"vitest": "^2.0.5"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@lokalise/api-common": "^3.2.5"
|
|
57
|
+
"@lokalise/api-common": "^3.2.5",
|
|
58
|
+
"@lokalise/universal-ts-utils": "^1.1.0"
|
|
58
59
|
},
|
|
59
60
|
"peerDependencies": {
|
|
60
61
|
"@lokalise/maestro-common": "^1.0.3",
|