@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 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 frontendLayout = buildFrontendLayout(internalTemplate);
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("URL parameters for creating a workflow");
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,
@@ -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, WorkflowLayoutStep, WorkflowLayoutStepSettings, WorkflowLayoutStepSettingsList, WorkflowLayoutStepTriggerList, WorkflowLayoutStepTriggerEvent } from '@lokalise/maestro-common';
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
- 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, 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, type PostWorkflowBody, type PostWorkflowParams, type PostWorkflowResponse, 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 };
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, WorkflowLayoutStep, WorkflowLayoutStepSettings, WorkflowLayoutStepSettingsList, WorkflowLayoutStepTriggerList, WorkflowLayoutStepTriggerEvent } from '@lokalise/maestro-common';
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
- 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, 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, type PostWorkflowBody, type PostWorkflowParams, type PostWorkflowResponse, 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 };
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 frontendLayout = buildFrontendLayout(internalTemplate);
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("URL parameters for creating a workflow");
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,
@@ -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":";;;;AAAA,SAAS,oCAAoC;AAC7C,OAAOA,QAAO;;;ACDd,SAAS,qCAAqC;AAC9C,SAAS,SAAS;AAEX,IAAM,kCAAkC,8BAA8B,OAAO;AAAA,EAClF,MAAM,EAAE,OAAO;AAAA,EACf,aAAa,EAAE,OAAO;AAAA,EACtB,sBAAsB,EAAE,QAAQ;AAAA,EAChC,eAAe,EAAE,QAAQ;AAAA,EACzB,qBAAqB,EAAE,OAAO;AAAA,EAC9B,kBAAkB,EAAE,OAAO;AAAA,EAC3B,kBAAkB,EAAE,KAAK,CAAC,OAAO,WAAW,MAAM,CAAC;AACrD,CAAC;AAEM,IAAM,mCAAmC,8BAA8B,OAAO;AAAA,EACnF,UAAU,EAAE,KAAK,CAAC,aAAa,QAAQ,CAAC;AAAA,EACxC,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC;AAEM,IAAM,gCAAgC,iCAAiC,MAAM;AAAA,EAClF,UAAU;AAAA,EACV,UAAU;AAAA,EACV,SAAS;AACX,CAAC;AAEM,IAAM,aAAa;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAIO,IAAM,yCAAyC,8BAA8B,OAAO;AAAA,EACzF,eAAe,EAAE,QAAQ;AAAA,EACzB,kBAAkB,EAAE,KAAK,CAAC,OAAO,WAAW,MAAM,CAAC;AAAA,EACnD,qBAAqB,EAAE,SAAS,EAAE,OAAO,CAAC;AAAA,EAC1C,mBAAmB,EAAE,MAAM,EAAE,OAAO,CAAC;AACvC,CAAC;AAMM,IAAM,kCAAgE;AAAA,EAC3E,UAAU;AAAA,EACV,eAAe;AAAA,EACf,qBAAqB;AAAA,EACrB,mBAAmB,CAAC;AAAA,EACpB,kBAAkB;AACpB;AAGO,IAAM,mCAAmC;AAIzC,IAAM,4BAAoD;AAAA,EAC/D,UAAU;AACZ;AAGO,IAAM,sCAAsC;AAI5C,IAAM,+BAA0D;AAAA,EACrE,UAAU;AACZ;AAGO,IAAM,2BAA2B;AAIjC,IAAM,oBAAqC;AAAA,EAChD,UAAU;AACZ;;;ACtEO,IAAM,uBACX;AAAA,EACE,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,SAAS;AAAA,EACT,aACE;AAAA,EACF,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,MACN,aAAa;AAAA,QACX,IAAI;AAAA,UACF,sBAAsB;AAAA,YACpB,QAAQ;AAAA,YACR,SAAS,CAAC,EAAE,MAAM,iCAAiC,CAAC;AAAA,UACtD;AAAA,QACF;AAAA,MACF;AAAA,MACA,gBAAgB;AAAA,QACd,OAAO;AAAA,UACL;AAAA,YACE,MAAM;AAAA,YACN,QAAQ;AAAA,cACN,MAAM;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,QACA,IAAI;AAAA,UACF,iBAAiB;AAAA,YACf,QAAQ;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,SAAS;AAAA,EACX;AACF;;;AC1CK,IAAM,qCAET;AAAA,EACF,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,SAAS;AAAA,EACT,aACE;AAAA,EACF,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,MACN,aAAa;AAAA,QACX,IAAI;AAAA,UACF,sBAAsB;AAAA,YACpB,QAAQ;AAAA,YACR,SAAS,CAAC,EAAE,MAAM,iCAAiC,CAAC;AAAA,UACtD;AAAA,QACF;AAAA,MACF;AAAA,MACA,mBAAmB;AAAA,QACjB,OAAO;AAAA,UACL;AAAA,YACE,MAAM;AAAA,YACN,QAAQ;AAAA,cACN,MAAM;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,QACA,IAAI;AAAA,UACF,iBAAiB;AAAA,YACf,QAAQ;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,MACA,gBAAgB;AAAA,QACd,OAAO;AAAA,UACL;AAAA,YACE,MAAM;AAAA,YACN,QAAQ;AAAA,cACN,MAAM;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,QACA,IAAI;AAAA,UACF,iBAAiB;AAAA,YACf,QAAQ;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,aAAa;AAAA,IACb,mBAAmB;AAAA,IACnB,gBAAgB;AAAA,IAChB,SAAS;AAAA,EACX;AACF;;;AC7DO,IAAM,0BAET;AAAA,EACF,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,SAAS;AAAA,EACT,aACE;AAAA,EACF,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,MACN,aAAa;AAAA,QACX,IAAI;AAAA,UACF,sBAAsB;AAAA,YACpB,QAAQ;AAAA,YACR,SAAS,CAAC,EAAE,MAAM,iCAAiC,CAAC;AAAA,UACtD;AAAA,QACF;AAAA,MACF;AAAA,MACA,mBAAmB;AAAA,QACjB,OAAO;AAAA,UACL;AAAA,YACE,MAAM;AAAA,YACN,QAAQ;AAAA,cACN,MAAM;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,QACA,IAAI;AAAA,UACF,iBAAiB;AAAA,YACf,QAAQ;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,aAAa;AAAA,IACb,mBAAmB;AAAA,IACnB,SAAS;AAAA,EACX;AACF;;;AC7CO,IAAM,eAAe,CAAC,cAAc,iBAAiB,wBAAwB;AAIpF,IAAM,gBAAgB,wBACpB,qBACwB;AACxB,QAAM,iBAAiB,oBAAoB,gBAAgB;AAE3D,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,EACF;AACF,GATsB;AAWtB,IAAM,sBAAsB,wBAC1B,aAEA,OAAO,QAAQ,SAAS,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM;AACpD,QAAM,EAAE,UAAU,GAAG,OAAO,IAAI;AAChC,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN;AAAA,EACF;AACF,CAAC,GAVyB;AAYrB,IAAM,YAAkD;AAAA,EAC7D,YAAY,cAAc,oBAAoB;AAAA,EAC9C,eAAe,cAAc,uBAAuB;AAAA,EACpD,wBAAwB,cAAc,kCAAkC;AAC1E;;;AL/BA,IAAM,WAAWC,GAAE,OAAO,EAAE,SAAS;AACrC,IAAM,cAAcA,GAAE,OAAO,EAAE,IAAI,EAAE;AACrC,IAAM,cAAcA,GAAE,KAAK,YAAY,EAAE,SAAS,qBAAqB;AACvE,IAAM,WAAWA,GACd,OAAO,EACP,IAAI,GAAG,EACP;AAAA,EACC;AACF;AAEK,IAAM,kBAAkBA,GAC5B,KAAK,CAAC,qBAAqB,OAAO,CAAC,EACnC,SAAS,sDAAsD;AAE3D,IAAM,eAAeA,GAAE,KAAK,CAAC,UAAU,aAAa,WAAW,CAAC,EAAE,SAAS,cAAc;AAEzF,IAAM,kBAAkBA,GAC5B,KAAK,CAAC,SAAS,QAAQ,YAAY,UAAU,UAAU,CAAC,EACxD,SAAS,iBAAiB;AAEtB,IAAM,YAAY;AAGlB,IAAM,sBAAsBA,GAChC,OAAO;AAAA,EACN,SAAS;AAAA,EACT,YAAY;AACd,CAAC,EACA,SAAS,uCAAuC;AAE5C,IAAM,WAAWA,GACrB,OAAO;AAAA,EACN,IAAI;AAAA,EACJ,SAASA,GAAE,OAAO;AAAA,EAClB,QAAQ;AAAA,EACR,OAAOA,GAAE,OAAO;AAAA,EAChB,aAAa;AAAA,EACb,mBAAmBA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EAC3D,OAAO,6BAA6B,SAAS,EAAE,SAAS;AAAA,EACxD,WAAW;AAAA,EACX,WAAWA,GAAE,SAAS,QAAQ,EAAE,SAAS;AAAA,EACzC,aAAaA,GAAE,SAAS,QAAQ,EAAE,SAAS;AAAA,EAC3C,aAAaA,GAAE,SAAS,QAAQ,EAAE,SAAS;AAAA,EAC3C,UAAUA,GAAE,SAASA,GAAE,OAAOA,GAAE,QAAQ,CAAC,CAAC,EAAE,SAAS;AACvD,CAAC,EACA,SAAS,yCAAyC;AAE9C,IAAM,2BAA2BA,GACrC;AAAA,EACCA,GAAE,OAAO;AAAA,IACP,IAAIA,GAAE,OAAO,EAAE,IAAI,GAAG;AAAA,IACtB,MAAMA,GAAE,KAAK,UAAU;AAAA,IACvB,QAAQA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,QAAQ,CAAC;AAAA,EAC1C,CAAC;AACH,EACC,SAAS,yBAAyB;AAE9B,IAAM,oBAAoBA,GAC9B,OAAO;AAAA,EACN,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,SAASA,GAAE,OAAO;AAAA,EAClB,QAAQ;AAAA,EACR,OAAOA,GAAE,OAAO;AAAA,EAChB,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,WAAWA,GAAE,SAAS,QAAQ;AAAA,EAC9B,aAAaA,GAAE,SAAS,QAAQ;AAClC,CAAC,EACA,SAAS,iEAAiE;AAMtE,IAAM,wBAAwBA,GAAE,OAAO;AAAA,EAC5C,MAAM;AACR,CAAC;AAGM,IAAM,2BAA2BA,GAAE,OAAO;AAAA,EAC/C,SAAS;AACX,CAAC;AAEM,IAAM,6BAA6BA,GAAE,OAAO;AAAA,EACjD,MAAMA,GAAE,MAAM,QAAQ;AACxB,CAAC;AAMM,IAAM,8BAA8BA,GAAE,OAAO;AAAA,EAClD,SAAS;AAAA,EACT,YAAY;AACd,CAAC;AAEM,IAAM,gCAAgCA,GAAE,KAAK;AAAA,EAClD,aAAa;AACf,CAAC;AAGM,IAAM,+BAA+BA,GAAE,OAAO;AAAA,EACnD,SAAS;AAAA,EACT,YAAY;AACd,CAAC;AAEM,IAAM,iCAAiCA,GAAE,KAAK;AAAA,EACnD,aAAa;AACf,CAAC;AAGM,IAAM,iCAAiCA,GAAE,OAAO;AAAA,EACrD,SAAS;AAAA,EACT,YAAY;AACd,CAAC;AAEM,IAAM,mCAAmC;AAGzC,IAAM,yBAAyBA,GAAE,OAAO;AAAA,EAC7C,SAAS;AAAA,EACT,YAAY;AACd,CAAC;AAEM,IAAM,2BAA2BA,GAAE,KAAK;AAAA,EAC7C,aAAa;AACf,CAAC;AAGM,IAAM,uBAAuBA,GACjC,OAAO;AAAA,EACN,SAAS;AACX,CAAC,EACA,SAAS,wCAAwC;AAE7C,IAAM,qBAAqBA,GAC/B;AAAA,EACCA,GAAE,OAAO;AAAA,IACP,YAAY,YAAY,SAAS;AAAA,EACnC,CAAC;AACH,EACC,SAAS,wCAAwC;AAE7C,IAAM,yBAAyBA,GAAE,OAAO;AAAA,EAC7C,MAAM;AACR,CAAC;","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.5.0",
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.0",
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",