@lokalise/maestro-expert-tenant-lib 1.16.2 → 1.16.4

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
@@ -99,7 +99,7 @@ var import_api_common = require("@lokalise/api-common");
99
99
  var import_zod6 = __toESM(require("zod"), 1);
100
100
 
101
101
  // src/workflow/LayoutTranslator.ts
102
- var import_areStringArraysEqual = require("@lokalise/universal-ts-utils/dist/areStringArraysEqual.js");
102
+ var import_node = require("@lokalise/universal-ts-utils/node");
103
103
  var LayoutTranslator = class {
104
104
  static {
105
105
  __name(this, "LayoutTranslator");
@@ -206,7 +206,7 @@ var LayoutTranslator = class {
206
206
  const frontendLayoutStepIds = frontendLayout.map((step) => step.id);
207
207
  const result = Object.entries(TEMPLATES).find(([_2, template2]) => {
208
208
  const templateStepIds = template2.frontendLayout.map((step) => step.id);
209
- return (0, import_areStringArraysEqual.areStringArraysEqual)(frontendLayoutStepIds, templateStepIds);
209
+ return (0, import_node.areStringArraysEqual)(frontendLayoutStepIds, templateStepIds);
210
210
  });
211
211
  if (!result) {
212
212
  return void 0;
@@ -265,7 +265,7 @@ var CREATE_TASK_STEP_SETTINGS_SCHEMA = import_maestro_common2.WORKFLOW_LAYOUT_ST
265
265
  taskType: import_zod2.z.enum(["translation", "review"]),
266
266
  taskTitle: import_zod2.z.optional(import_zod2.z.string()).describe("If empty, the workflow title will be used"),
267
267
  taskDescription: import_zod2.z.optional(import_zod2.z.string()).describe("Add a description such as including links to useful resources to assignees."),
268
- dueDate: import_zod2.z.optional(import_zod2.z.number().min(1).max(365)),
268
+ dueDate: import_zod2.z.optional(import_zod2.z.number().int().min(1).max(365)),
269
269
  languageAssignees: import_zod2.z.array(TASK_LANGUAGE_ASSIGNEES).min(1),
270
270
  autoCloseItems: import_zod2.z.optional(import_zod2.z.boolean()),
271
271
  autoCloseLanguages: import_zod2.z.boolean(),
@@ -1 +1 @@
1
- {"version":3,"sources":["../index.ts","../src/apiContract/schemas.ts","../src/workflow/LayoutTranslator.ts","../src/workflow/steps/scheduledTriggerStep.ts","../src/workflow/steps/translateTaskStep.ts","../src/workflow/messages.ts","../src/workflow/steps/reviewTaskStep.ts","../src/workflow/steps/endStep.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 * from './src/workflow/messages.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 {\n END_STEP_FORM_SCHEMA,\n END_STEP_SETTINGS_SCHEMA,\n REVIEW_TASK_STEP_FORM_SCHEMA,\n REVIEW_TASK_STEP_SETTINGS_SCHEMA,\n SCHEDULED_TRIGGER_STEP_FORM_SCHEMA,\n SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA,\n STEP_TYPES,\n TRANSLATE_TASK_STEP_FORM_SCHEMA,\n TRANSLATE_TASK_STEP_SETTINGS_SCHEMA,\n} 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')\nexport const GROUP_ID = z\n .string()\n .regex(/^expert_[^_\\s]+_[^_\\s]+$/, 'Invalid group ID format')\n .max(255)\n .describe(\n 'Group identifier composed by the tenant ID, followed by the owner ID, followed by the project ID. Underscores are used as separators (e.g. `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\nexport const WORKFLOW_PARAMS = z\n .object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n })\n .describe('URL parameters for getting a workflow')\nexport type WorkflowParams = z.infer<typeof WORKFLOW_PARAMS>\n\nexport const UNSPECIFIED_WORKFLOW_PARAMS = z\n .object({\n groupId: GROUP_ID,\n })\n .describe('URL parameters without workflowId')\nexport type UnspecifiedWorkflowParams = z.infer<typeof UNSPECIFIED_WORKFLOW_PARAMS>\n\n// GET WORKFLOW\nexport const GET_WORKFLOW_PARAMS = WORKFLOW_PARAMS\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_STEP_SCHEMA = z.discriminatedUnion('type', [\n z.object({\n id: z.string().max(100),\n type: SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA.shape.stepType,\n values: SCHEDULED_TRIGGER_STEP_FORM_SCHEMA,\n triggerType: SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA.shape.triggerType,\n }),\n z.object({\n id: z.string().max(100),\n type: TRANSLATE_TASK_STEP_SETTINGS_SCHEMA.shape.stepType,\n values: TRANSLATE_TASK_STEP_FORM_SCHEMA,\n taskType: TRANSLATE_TASK_STEP_SETTINGS_SCHEMA.shape.taskType,\n }),\n z.object({\n id: z.string().max(100),\n type: REVIEW_TASK_STEP_SETTINGS_SCHEMA.shape.stepType,\n values: REVIEW_TASK_STEP_FORM_SCHEMA,\n taskType: REVIEW_TASK_STEP_SETTINGS_SCHEMA.shape.taskType,\n }),\n z.object({\n id: z.string().max(100),\n type: END_STEP_SETTINGS_SCHEMA.shape.stepType,\n values: END_STEP_FORM_SCHEMA,\n }),\n])\n\nexport const WORKFLOW_EXTENDED_SCHEMA = z\n .array(WORKFLOW_EXTENDED_STEP_SCHEMA)\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 const WORKFLOW_EXTENDED_SCHEMA_SIMPLIFIED = 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 triggerType: z.optional(TRIGGER_TYPE),\n taskType: z.optional(z.enum(['translation', 'review'])),\n }),\n )\n .describe(\n 'Simplified schema for the response to be able to return default values to the frontend',\n )\n\nexport const WORKFLOW_EXTENDED_SIMPLIFIED = 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_SIMPLIFIED,\n createdAt: DATETIME,\n updatedAt: z.optional(DATETIME),\n publishedAt: z.optional(DATETIME),\n })\n .describe(\n 'Simplified schema for the response to be able to return default values to the frontend',\n )\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 const GET_WORKFLOW_SIMPLIFIED_RESPONSE = z.object({\n data: WORKFLOW_EXTENDED_SIMPLIFIED,\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 = UNSPECIFIED_WORKFLOW_PARAMS\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 = WORKFLOW_PARAMS\n\nexport const PATCH_PAUSE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully paused workflow',\n})\n\nexport type PatchPauseWorkflowParams = z.infer<typeof PATCH_PAUSE_WORKFLOW_PARAMS>\nexport type PatchPauseWorkflowResponse = z.infer<typeof PATCH_PAUSE_WORKFLOW_RESPONSE>\n\n// RESUME WORKFLOW\nexport const PATCH_RESUME_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const PATCH_RESUME_WORKFLOW_BODY = z.object({\n runNow: z.optional(z.boolean()).default(false),\n})\n\nexport const PATCH_RESUME_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully resumed workflow',\n})\n\nexport type PatchResumeWorkflowParams = z.infer<typeof PATCH_RESUME_WORKFLOW_PARAMS>\nexport type PatchResumeWorkflowBody = z.infer<typeof PATCH_RESUME_WORKFLOW_BODY>\nexport type PatchResumeWorkflowResponse = z.infer<typeof PATCH_RESUME_WORKFLOW_RESPONSE>\n\n// DUPLICATE WORKFLOW\nexport const POST_DUPLICATE_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const POST_DUPLICATE_WORKFLOW_RESPONSE = GET_WORKFLOW_RESPONSE\n\n// DELETE WORKFLOW\nexport const DELETE_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const DELETE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully deleted workflow',\n})\n\nexport type DeleteWorkflowParams = z.infer<typeof DELETE_WORKFLOW_PARAMS>\nexport type DeleteWorkflowResponse = z.infer<typeof DELETE_WORKFLOW_RESPONSE>\n\n// CREATE WORKFLOW\nexport const POST_WORKFLOW_PARAMS = UNSPECIFIED_WORKFLOW_PARAMS\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 const POST_WORKFLOW_SIMPLIFIED_RESPONSE = z.object({\n data: WORKFLOW_EXTENDED_SIMPLIFIED,\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 = WORKFLOW_PARAMS\n\nexport const PUT_WORKFLOW_DRAFT_BODY = z\n .object({\n schema: WORKFLOW_EXTENDED_SCHEMA_SIMPLIFIED,\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\n// PATCH WORKFLOW\nexport const PATCH_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const PATCH_WORKFLOW_BODY = z\n .object({\n title: z.string().min(1).max(256),\n })\n .describe('Workflow title')\n\nexport const PATCH_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully updated workflow',\n})\n\nexport type PatchWorkflowParams = z.infer<typeof PATCH_WORKFLOW_PARAMS>\nexport type PatchWorkflowBody = z.infer<typeof PATCH_WORKFLOW_BODY>\nexport type PatchWorkflowResponse = z.infer<typeof PATCH_WORKFLOW_RESPONSE>\n\n// ACTIVATE WORKFLOW\nexport const POST_ACTIVATE_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const POST_ACTIVATE_WORKFLOW_BODY = z\n .object({\n runNow: z.optional(z.boolean()),\n schema: WORKFLOW_EXTENDED_SCHEMA,\n })\n .describe(\n 'Schema with user changes. If runNow is true, the workflow will be triggered immediately.',\n )\n\nexport const POST_ACTIVATE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully activated workflow',\n})\n\nexport type PostActivateWorkflowParams = z.infer<typeof POST_ACTIVATE_WORKFLOW_PARAMS>\nexport type PostActivateWorkflowBody = z.infer<typeof POST_ACTIVATE_WORKFLOW_BODY>\nexport type PostActivateWorkflowResponse = z.infer<typeof POST_ACTIVATE_WORKFLOW_RESPONSE>\n\n// PUT LIVE WORKFLOW\nexport const PUT_LIVE_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const PUT_LIVE_WORKFLOW_BODY = z\n .object({\n runNow: z.optional(z.boolean()),\n schema: WORKFLOW_EXTENDED_SCHEMA,\n })\n .describe(\n 'Schema with user changes. If runNow is true, the workflow will be triggered immediately.',\n )\n\nexport const PUT_LIVE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully updated workflow',\n})\n\nexport type PutLiveWorkflowParams = z.infer<typeof PUT_LIVE_WORKFLOW_PARAMS>\nexport type PutLiveWorkflowBody = z.infer<typeof PUT_LIVE_WORKFLOW_BODY>\nexport type PutLiveWorkflowResponse = z.infer<typeof PUT_LIVE_WORKFLOW_RESPONSE>\n","import type {\n WorkflowLayout,\n WorkflowLayoutStepSettingsList,\n WorkflowLayoutStepTriggerEvent,\n} from '@lokalise/maestro-common'\nimport type { WorkflowMetadata } from '@lokalise/maestro-common'\nimport { areStringArraysEqual } from '@lokalise/universal-ts-utils/dist/areStringArraysEqual.js'\nimport type { LayoutTranslatorInterface } from '../../../../src/modules/workflows/interfaces/LayoutTranslatorInterface.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 { ScheduledTriggerStepSettings, StepType } from './steps.js'\n\nexport class LayoutTranslator implements LayoutTranslatorInterface {\n public translateTemplateToFrontendLayout<StateName extends string>(\n template: InternalTemplate<StateName>,\n ): FrontendLayout<StateName> {\n return this.buildFrontendLayout<StateName>(template.settings, template.sort)\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 sort: StateName[] = [],\n ): FrontendLayout<StateName> {\n return Object.keys(settings)\n .sort((a, b) => sort.indexOf(a as StateName) - sort.indexOf(b as StateName))\n .map((id) => {\n const { stepType, triggerType, taskType, ...values } = settings[id]\n\n const step = {\n id: id as StateName,\n type: stepType as StepType,\n values,\n triggerType,\n taskType,\n }\n\n return Object.entries(step)\n .filter(([_, value]) => value !== undefined)\n .reduce(\n (acc, [key, value]) => {\n // @ts-ignore\n acc[key] = value\n return acc\n },\n {} as FrontendLayout<StateName>[0],\n )\n })\n }\n\n // Based on the linear layout, return the order of steps\n public getStepSortFromLayout(layout: WorkflowLayout): string[] {\n const sort = [layout.initial]\n let currentState = layout.states[layout.initial]\n\n while (currentState.on) {\n const allEvents: WorkflowLayoutStepTriggerEvent[] = Object.values(currentState.on)\n const event = allEvents.find((evt) => evt.target !== undefined)\n\n if (event === undefined || event.target === undefined) {\n currentState = {\n ...currentState,\n on: undefined,\n }\n continue\n }\n\n sort.push(event.target)\n currentState = layout.states[event.target]\n }\n\n return sort\n }\n\n public buildWorkflowMetadata({\n settings,\n }: Pick<InternalTemplate<string>, 'settings'>): WorkflowMetadata {\n const step = settings.TriggerStep as ScheduledTriggerStepSettings\n\n return {\n triggerType: step.triggerType,\n targetLanguageIds: step.targetLanguageIds.map((id) => id.toString()),\n }\n }\n\n public getTriggerSchedulerExpression(\n settings: WorkflowLayoutStepSettingsList,\n ): string | undefined {\n const step = settings.TriggerStep as ScheduledTriggerStepSettings\n\n if (!step) {\n return undefined\n }\n\n if (step.triggerType === 'Scheduled') {\n return step.scheduleFrequencyExpression ?? undefined\n }\n\n return undefined\n }\n\n public getTriggerSchedulerStartDate(\n settings: WorkflowLayoutStepSettingsList,\n ): string | undefined {\n const step = settings.TriggerStep as ScheduledTriggerStepSettings\n\n if (!step) {\n return undefined\n }\n\n if (step.triggerType === 'Scheduled') {\n return step.scheduleStartingDate\n }\n\n return undefined\n }\n\n buildLayoutSettings<StateName extends string>(\n frontendLayout: FrontendLayout<StateName>,\n ): StrictWorkflowLayoutSettings<StateName> {\n return frontendLayout.reduce(\n (acc, frontendStep) => {\n const step: StrictWorkflowLayoutStepSettings = {\n ...frontendStep.values,\n stepType: frontendStep.type,\n triggerType: frontendStep.type === 'trigger_step' ? frontendStep.triggerType : undefined,\n taskType:\n frontendStep.type === 'translate_task_step' || frontendStep.type === 'review_task_step'\n ? frontendStep.taskType\n : undefined,\n }\n acc[frontendStep.id] = Object.fromEntries(\n Object.entries(step).filter(([_, value]) => value !== undefined),\n ) as StrictWorkflowLayoutStepSettings\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 {\n CRON_EXPRESSION_REGEX,\n WORKFLOW_LAYOUT_STEP_SETTINGS,\n type WorkflowLayoutStepSettings,\n} from '@lokalise/maestro-common'\nimport { z } from 'zod'\n\nexport const SCHEDULED_TRIGGER_STEP_FORM_SCHEMA = z.object({\n stepTitle: z.string().trim().min(1),\n scheduleFrequencyExpression: z.string().regex(CRON_EXPRESSION_REGEX),\n scheduleStartingDate: z.optional(z.string().datetime()),\n monitoredLanguageId: z.number().min(1).max(10211),\n targetLanguageIds: z.array(z.number().min(1).max(10211)).min(1),\n monitoredKeyType: z.enum(['new', 'updated', 'both']),\n projectFilterIds: z.array(z.string()),\n})\n\nexport type ScheduledTriggerStepForm = z.infer<typeof SCHEDULED_TRIGGER_STEP_FORM_SCHEMA>\n\nexport const SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.merge(\n SCHEDULED_TRIGGER_STEP_FORM_SCHEMA,\n).extend({\n stepType: z.literal('trigger_step'),\n triggerType: z.literal('Scheduled'),\n})\n\nexport type ScheduledTriggerStepSettings = z.infer<typeof SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA>\n\nexport const DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS: WorkflowLayoutStepSettings &\n Partial<ScheduledTriggerStepSettings> = {\n stepType: 'trigger_step',\n triggerType: 'Scheduled',\n stepTitle: 'Trigger and scope',\n scheduleFrequencyExpression: '0 9 * * *',\n scheduleStartingDate: undefined,\n monitoredLanguageId: undefined,\n targetLanguageIds: [],\n monitoredKeyType: 'new',\n projectFilterIds: [],\n}\n","import type { WorkflowLayoutStepSettings } from '@lokalise/maestro-common'\nimport { z } from 'zod'\nimport { CREATE_TASK_STEP_SETTINGS_SCHEMA } from '../messages.js'\n\nexport const TRANSLATE_TASK_STEP_FORM_SCHEMA = CREATE_TASK_STEP_SETTINGS_SCHEMA.omit({\n stepType: true,\n taskType: true,\n})\n\nexport type TranslateTaskStepForm = z.infer<typeof TRANSLATE_TASK_STEP_FORM_SCHEMA>\n\nexport const TRANSLATE_TASK_STEP_SETTINGS_SCHEMA = CREATE_TASK_STEP_SETTINGS_SCHEMA.extend({\n stepType: z.literal('translate_task_step'),\n taskType: z.literal('translation'),\n autoCloseItems: z.boolean(),\n})\n\nexport type TranslateTaskStepSettings = z.infer<typeof TRANSLATE_TASK_STEP_SETTINGS_SCHEMA>\n\nexport const DEFAULT_TRANSLATE_TASK_STEP_SETTINGS: WorkflowLayoutStepSettings &\n Partial<TranslateTaskStepSettings> = {\n stepType: 'translate_task_step',\n stepTitle: 'Translation task for contributors',\n taskType: 'translation',\n taskTitle: undefined,\n taskDescription: undefined,\n dueDate: undefined,\n languageAssignees: [],\n autoCloseItems: true,\n autoCloseLanguages: false,\n autoCloseTask: false,\n lockTranslations: false,\n}\n","import { WORKFLOW_LAYOUT_STEP_SETTINGS } from '@lokalise/maestro-common'\nimport { z } from 'zod'\n\nconst TASK_LANGUAGE_ASSIGNEES = z\n .object({\n languageId: z.number(),\n userIds: z.optional(z.array(z.number())),\n userGroupIds: z.optional(z.array(z.number())),\n })\n .refine(({ userIds, userGroupIds }) => userIds !== undefined || userGroupIds !== undefined, {\n message: 'Either users or groups should be specified',\n })\n\nexport const CREATE_TASK_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.extend({\n stepType: z.enum(['translate_task_step', 'review_task_step']),\n stepTitle: z.string().trim().min(1),\n taskType: z.enum(['translation', 'review']),\n taskTitle: z.optional(z.string()).describe('If empty, the workflow title will be used'),\n taskDescription: z\n .optional(z.string())\n .describe('Add a description such as including links to useful resources to assignees.'),\n dueDate: z.optional(z.number().min(1).max(365)),\n languageAssignees: z.array(TASK_LANGUAGE_ASSIGNEES).min(1),\n autoCloseItems: z.optional(z.boolean()),\n autoCloseLanguages: z.boolean(),\n autoCloseTask: z.boolean(),\n lockTranslations: z.boolean(),\n})\nexport type CreateTaskStepSettings = z.infer<typeof CREATE_TASK_STEP_SETTINGS_SCHEMA>\n\nexport const CREATE_TASK_MESSAGE_CONTEXT = CREATE_TASK_STEP_SETTINGS_SCHEMA.omit({\n stepType: true,\n stepTitle: true,\n dueDate: true,\n}).extend({\n teamId: z.number(),\n projectId: z.string(),\n dueDate: z.optional(z.date()),\n sourceLanguageId: z.number(),\n keyIds: z.array(z.string()),\n})\nexport type CreateTaskMessageContext = z.infer<typeof CREATE_TASK_MESSAGE_CONTEXT>\n","import type { WorkflowLayoutStepSettings } from '@lokalise/maestro-common'\nimport { z } from 'zod'\nimport { CREATE_TASK_STEP_SETTINGS_SCHEMA } from '../messages.js'\n\nexport const REVIEW_TASK_STEP_FORM_SCHEMA = CREATE_TASK_STEP_SETTINGS_SCHEMA.omit({\n stepType: true,\n taskType: true,\n})\n\nexport type ReviewTaskStepForm = z.infer<typeof REVIEW_TASK_STEP_FORM_SCHEMA>\n\nexport const REVIEW_TASK_STEP_SETTINGS_SCHEMA = CREATE_TASK_STEP_SETTINGS_SCHEMA.omit({\n autoCloseItems: true,\n}).extend({\n stepType: z.literal('review_task_step'),\n taskType: z.literal('review'),\n})\n\nexport type ReviewTaskStepSettings = z.infer<typeof REVIEW_TASK_STEP_SETTINGS_SCHEMA>\n\nexport const DEFAULT_REVIEW_TASK_STEP_SETTINGS: WorkflowLayoutStepSettings &\n Partial<ReviewTaskStepSettings> = {\n stepType: 'review_task_step',\n stepTitle: 'Review task for contributors',\n taskType: 'review',\n taskTitle: undefined,\n taskDescription: undefined,\n dueDate: undefined,\n languageAssignees: [],\n autoCloseLanguages: false,\n autoCloseTask: false,\n lockTranslations: false,\n}\n","import {\n WORKFLOW_LAYOUT_STEP_SETTINGS,\n type WorkflowLayoutStepSettings,\n} from '@lokalise/maestro-common'\nimport { z } from 'zod'\n\nexport const END_STEP_FORM_SCHEMA = z.object({})\nexport type EndStepForm = z.infer<typeof END_STEP_FORM_SCHEMA>\n\nexport const END_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.merge(\n END_STEP_FORM_SCHEMA,\n).extend({\n stepType: z.literal('end_step'),\n})\nexport type EndStepSettings = z.infer<typeof END_STEP_SETTINGS_SCHEMA>\n\nexport const DEFAULT_END_STEP_SETTINGS: WorkflowLayoutStepSettings & EndStepSettings = {\n stepType: 'end_step',\n}\n","export {\n SCHEDULED_TRIGGER_STEP_FORM_SCHEMA,\n SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA,\n DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n} from './steps/scheduledTriggerStep.js'\nexport type {\n ScheduledTriggerStepForm,\n ScheduledTriggerStepSettings,\n} from './steps/scheduledTriggerStep.js'\n\nexport {\n TRANSLATE_TASK_STEP_FORM_SCHEMA,\n TRANSLATE_TASK_STEP_SETTINGS_SCHEMA,\n DEFAULT_TRANSLATE_TASK_STEP_SETTINGS,\n} from './steps/translateTaskStep.js'\nexport type { TranslateTaskStepForm, TranslateTaskStepSettings } from './steps/translateTaskStep.js'\nexport {\n REVIEW_TASK_STEP_FORM_SCHEMA,\n REVIEW_TASK_STEP_SETTINGS_SCHEMA,\n DEFAULT_REVIEW_TASK_STEP_SETTINGS,\n} from './steps/reviewTaskStep.js'\nexport type { ReviewTaskStepForm, ReviewTaskStepSettings } from './steps/reviewTaskStep.js'\nexport {\n END_STEP_FORM_SCHEMA,\n END_STEP_SETTINGS_SCHEMA,\n DEFAULT_END_STEP_SETTINGS,\n} from './steps/endStep.js'\nexport type { EndStepForm, EndStepSettings } from './steps/endStep.js'\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","import {\n DEFAULT_END_STEP_SETTINGS,\n DEFAULT_REVIEW_TASK_STEP_SETTINGS,\n DEFAULT_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 TaskCreatedEvent: {\n actions: [{ type: 'storeCreatedTaskId' }],\n },\n TaskClosedEvent: {\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n ReviewTaskStep: DEFAULT_REVIEW_TASK_STEP_SETTINGS,\n EndStep: DEFAULT_END_STEP_SETTINGS,\n },\n sort: ['TriggerStep', 'ReviewTaskStep', 'EndStep'],\n }\n","import {\n DEFAULT_END_STEP_SETTINGS,\n DEFAULT_REVIEW_TASK_STEP_SETTINGS,\n DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n DEFAULT_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: 'translation',\n },\n },\n ],\n on: {\n TaskCreatedEvent: {\n actions: [{ type: 'storeCreatedTaskId' }],\n },\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 TaskCreatedEvent: {\n actions: [{ type: 'storeCreatedTaskId' }],\n },\n TaskClosedEvent: {\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n TranslateTaskStep: DEFAULT_TRANSLATE_TASK_STEP_SETTINGS,\n ReviewTaskStep: DEFAULT_REVIEW_TASK_STEP_SETTINGS,\n EndStep: DEFAULT_END_STEP_SETTINGS,\n },\n sort: ['TriggerStep', 'TranslateTaskStep', 'ReviewTaskStep', 'EndStep'],\n}\n","import {\n DEFAULT_END_STEP_SETTINGS,\n DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n DEFAULT_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: 'translation',\n },\n },\n ],\n on: {\n TaskCreatedEvent: {\n actions: [{ type: 'storeCreatedTaskId' }],\n },\n TaskClosedEvent: {\n guard: { type: 'checkClosedTaskId' },\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n TranslateTaskStep: DEFAULT_TRANSLATE_TASK_STEP_SETTINGS,\n EndStep: DEFAULT_END_STEP_SETTINGS,\n },\n sort: ['TriggerStep', 'TranslateTaskStep', 'EndStep'],\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","import_zod","import_maestro_common","import_zod","import_zod","import_maestro_common","import_zod","z"]}
1
+ {"version":3,"sources":["../index.ts","../src/apiContract/schemas.ts","../src/workflow/LayoutTranslator.ts","../src/workflow/steps/scheduledTriggerStep.ts","../src/workflow/steps/translateTaskStep.ts","../src/workflow/messages.ts","../src/workflow/steps/reviewTaskStep.ts","../src/workflow/steps/endStep.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 * from './src/workflow/messages.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 {\n END_STEP_FORM_SCHEMA,\n END_STEP_SETTINGS_SCHEMA,\n REVIEW_TASK_STEP_FORM_SCHEMA,\n REVIEW_TASK_STEP_SETTINGS_SCHEMA,\n SCHEDULED_TRIGGER_STEP_FORM_SCHEMA,\n SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA,\n STEP_TYPES,\n TRANSLATE_TASK_STEP_FORM_SCHEMA,\n TRANSLATE_TASK_STEP_SETTINGS_SCHEMA,\n} 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')\nexport const GROUP_ID = z\n .string()\n .regex(/^expert_[^_\\s]+_[^_\\s]+$/, 'Invalid group ID format')\n .max(255)\n .describe(\n 'Group identifier composed by the tenant ID, followed by the owner ID, followed by the project ID. Underscores are used as separators (e.g. `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\nexport const WORKFLOW_PARAMS = z\n .object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n })\n .describe('URL parameters for getting a workflow')\nexport type WorkflowParams = z.infer<typeof WORKFLOW_PARAMS>\n\nexport const UNSPECIFIED_WORKFLOW_PARAMS = z\n .object({\n groupId: GROUP_ID,\n })\n .describe('URL parameters without workflowId')\nexport type UnspecifiedWorkflowParams = z.infer<typeof UNSPECIFIED_WORKFLOW_PARAMS>\n\n// GET WORKFLOW\nexport const GET_WORKFLOW_PARAMS = WORKFLOW_PARAMS\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_STEP_SCHEMA = z.discriminatedUnion('type', [\n z.object({\n id: z.string().max(100),\n type: SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA.shape.stepType,\n values: SCHEDULED_TRIGGER_STEP_FORM_SCHEMA,\n triggerType: SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA.shape.triggerType,\n }),\n z.object({\n id: z.string().max(100),\n type: TRANSLATE_TASK_STEP_SETTINGS_SCHEMA.shape.stepType,\n values: TRANSLATE_TASK_STEP_FORM_SCHEMA,\n taskType: TRANSLATE_TASK_STEP_SETTINGS_SCHEMA.shape.taskType,\n }),\n z.object({\n id: z.string().max(100),\n type: REVIEW_TASK_STEP_SETTINGS_SCHEMA.shape.stepType,\n values: REVIEW_TASK_STEP_FORM_SCHEMA,\n taskType: REVIEW_TASK_STEP_SETTINGS_SCHEMA.shape.taskType,\n }),\n z.object({\n id: z.string().max(100),\n type: END_STEP_SETTINGS_SCHEMA.shape.stepType,\n values: END_STEP_FORM_SCHEMA,\n }),\n])\n\nexport const WORKFLOW_EXTENDED_SCHEMA = z\n .array(WORKFLOW_EXTENDED_STEP_SCHEMA)\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 const WORKFLOW_EXTENDED_SCHEMA_SIMPLIFIED = 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 triggerType: z.optional(TRIGGER_TYPE),\n taskType: z.optional(z.enum(['translation', 'review'])),\n }),\n )\n .describe(\n 'Simplified schema for the response to be able to return default values to the frontend',\n )\n\nexport const WORKFLOW_EXTENDED_SIMPLIFIED = 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_SIMPLIFIED,\n createdAt: DATETIME,\n updatedAt: z.optional(DATETIME),\n publishedAt: z.optional(DATETIME),\n })\n .describe(\n 'Simplified schema for the response to be able to return default values to the frontend',\n )\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 const GET_WORKFLOW_SIMPLIFIED_RESPONSE = z.object({\n data: WORKFLOW_EXTENDED_SIMPLIFIED,\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 = UNSPECIFIED_WORKFLOW_PARAMS\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 = WORKFLOW_PARAMS\n\nexport const PATCH_PAUSE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully paused workflow',\n})\n\nexport type PatchPauseWorkflowParams = z.infer<typeof PATCH_PAUSE_WORKFLOW_PARAMS>\nexport type PatchPauseWorkflowResponse = z.infer<typeof PATCH_PAUSE_WORKFLOW_RESPONSE>\n\n// RESUME WORKFLOW\nexport const PATCH_RESUME_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const PATCH_RESUME_WORKFLOW_BODY = z.object({\n runNow: z.optional(z.boolean()).default(false),\n})\n\nexport const PATCH_RESUME_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully resumed workflow',\n})\n\nexport type PatchResumeWorkflowParams = z.infer<typeof PATCH_RESUME_WORKFLOW_PARAMS>\nexport type PatchResumeWorkflowBody = z.infer<typeof PATCH_RESUME_WORKFLOW_BODY>\nexport type PatchResumeWorkflowResponse = z.infer<typeof PATCH_RESUME_WORKFLOW_RESPONSE>\n\n// DUPLICATE WORKFLOW\nexport const POST_DUPLICATE_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const POST_DUPLICATE_WORKFLOW_RESPONSE = GET_WORKFLOW_RESPONSE\n\n// DELETE WORKFLOW\nexport const DELETE_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const DELETE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully deleted workflow',\n})\n\nexport type DeleteWorkflowParams = z.infer<typeof DELETE_WORKFLOW_PARAMS>\nexport type DeleteWorkflowResponse = z.infer<typeof DELETE_WORKFLOW_RESPONSE>\n\n// CREATE WORKFLOW\nexport const POST_WORKFLOW_PARAMS = UNSPECIFIED_WORKFLOW_PARAMS\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 const POST_WORKFLOW_SIMPLIFIED_RESPONSE = z.object({\n data: WORKFLOW_EXTENDED_SIMPLIFIED,\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 = WORKFLOW_PARAMS\n\nexport const PUT_WORKFLOW_DRAFT_BODY = z\n .object({\n schema: WORKFLOW_EXTENDED_SCHEMA_SIMPLIFIED,\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\n// PATCH WORKFLOW\nexport const PATCH_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const PATCH_WORKFLOW_BODY = z\n .object({\n title: z.string().min(1).max(256),\n })\n .describe('Workflow title')\n\nexport const PATCH_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully updated workflow',\n})\n\nexport type PatchWorkflowParams = z.infer<typeof PATCH_WORKFLOW_PARAMS>\nexport type PatchWorkflowBody = z.infer<typeof PATCH_WORKFLOW_BODY>\nexport type PatchWorkflowResponse = z.infer<typeof PATCH_WORKFLOW_RESPONSE>\n\n// ACTIVATE WORKFLOW\nexport const POST_ACTIVATE_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const POST_ACTIVATE_WORKFLOW_BODY = z\n .object({\n runNow: z.optional(z.boolean()),\n schema: WORKFLOW_EXTENDED_SCHEMA,\n })\n .describe(\n 'Schema with user changes. If runNow is true, the workflow will be triggered immediately.',\n )\n\nexport const POST_ACTIVATE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully activated workflow',\n})\n\nexport type PostActivateWorkflowParams = z.infer<typeof POST_ACTIVATE_WORKFLOW_PARAMS>\nexport type PostActivateWorkflowBody = z.infer<typeof POST_ACTIVATE_WORKFLOW_BODY>\nexport type PostActivateWorkflowResponse = z.infer<typeof POST_ACTIVATE_WORKFLOW_RESPONSE>\n\n// PUT LIVE WORKFLOW\nexport const PUT_LIVE_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const PUT_LIVE_WORKFLOW_BODY = z\n .object({\n runNow: z.optional(z.boolean()),\n schema: WORKFLOW_EXTENDED_SCHEMA,\n })\n .describe(\n 'Schema with user changes. If runNow is true, the workflow will be triggered immediately.',\n )\n\nexport const PUT_LIVE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully updated workflow',\n})\n\nexport type PutLiveWorkflowParams = z.infer<typeof PUT_LIVE_WORKFLOW_PARAMS>\nexport type PutLiveWorkflowBody = z.infer<typeof PUT_LIVE_WORKFLOW_BODY>\nexport type PutLiveWorkflowResponse = z.infer<typeof PUT_LIVE_WORKFLOW_RESPONSE>\n","import type {\n WorkflowLayout,\n WorkflowLayoutStepSettingsList,\n WorkflowLayoutStepTriggerEvent,\n} from '@lokalise/maestro-common'\nimport type { WorkflowMetadata } from '@lokalise/maestro-common'\nimport { areStringArraysEqual } from '@lokalise/universal-ts-utils/node'\nimport type { LayoutTranslatorInterface } from '../../../../src/modules/workflows/interfaces/LayoutTranslatorInterface.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 { ScheduledTriggerStepSettings, StepType } from './steps.js'\n\nexport class LayoutTranslator implements LayoutTranslatorInterface {\n public translateTemplateToFrontendLayout<StateName extends string>(\n template: InternalTemplate<StateName>,\n ): FrontendLayout<StateName> {\n return this.buildFrontendLayout<StateName>(template.settings, template.sort)\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 sort: StateName[] = [],\n ): FrontendLayout<StateName> {\n return Object.keys(settings)\n .sort((a, b) => sort.indexOf(a as StateName) - sort.indexOf(b as StateName))\n .map((id) => {\n const { stepType, triggerType, taskType, ...values } = settings[id]\n\n const step = {\n id: id as StateName,\n type: stepType as StepType,\n values,\n triggerType,\n taskType,\n }\n\n return Object.entries(step)\n .filter(([_, value]) => value !== undefined)\n .reduce(\n (acc, [key, value]) => {\n // @ts-ignore\n acc[key] = value\n return acc\n },\n {} as FrontendLayout<StateName>[0],\n )\n })\n }\n\n // Based on the linear layout, return the order of steps\n public getStepSortFromLayout(layout: WorkflowLayout): string[] {\n const sort = [layout.initial]\n let currentState = layout.states[layout.initial]\n\n while (currentState.on) {\n const allEvents: WorkflowLayoutStepTriggerEvent[] = Object.values(currentState.on)\n const event = allEvents.find((evt) => evt.target !== undefined)\n\n if (event === undefined || event.target === undefined) {\n currentState = {\n ...currentState,\n on: undefined,\n }\n continue\n }\n\n sort.push(event.target)\n currentState = layout.states[event.target]\n }\n\n return sort\n }\n\n public buildWorkflowMetadata({\n settings,\n }: Pick<InternalTemplate<string>, 'settings'>): WorkflowMetadata {\n const step = settings.TriggerStep as ScheduledTriggerStepSettings\n\n return {\n triggerType: step.triggerType,\n targetLanguageIds: step.targetLanguageIds.map((id) => id.toString()),\n }\n }\n\n public getTriggerSchedulerExpression(\n settings: WorkflowLayoutStepSettingsList,\n ): string | undefined {\n const step = settings.TriggerStep as ScheduledTriggerStepSettings\n\n if (!step) {\n return undefined\n }\n\n if (step.triggerType === 'Scheduled') {\n return step.scheduleFrequencyExpression ?? undefined\n }\n\n return undefined\n }\n\n public getTriggerSchedulerStartDate(\n settings: WorkflowLayoutStepSettingsList,\n ): string | undefined {\n const step = settings.TriggerStep as ScheduledTriggerStepSettings\n\n if (!step) {\n return undefined\n }\n\n if (step.triggerType === 'Scheduled') {\n return step.scheduleStartingDate\n }\n\n return undefined\n }\n\n buildLayoutSettings<StateName extends string>(\n frontendLayout: FrontendLayout<StateName>,\n ): StrictWorkflowLayoutSettings<StateName> {\n return frontendLayout.reduce(\n (acc, frontendStep) => {\n const step: StrictWorkflowLayoutStepSettings = {\n ...frontendStep.values,\n stepType: frontendStep.type,\n triggerType: frontendStep.type === 'trigger_step' ? frontendStep.triggerType : undefined,\n taskType:\n frontendStep.type === 'translate_task_step' || frontendStep.type === 'review_task_step'\n ? frontendStep.taskType\n : undefined,\n }\n acc[frontendStep.id] = Object.fromEntries(\n Object.entries(step).filter(([_, value]) => value !== undefined),\n ) as StrictWorkflowLayoutStepSettings\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 {\n CRON_EXPRESSION_REGEX,\n WORKFLOW_LAYOUT_STEP_SETTINGS,\n type WorkflowLayoutStepSettings,\n} from '@lokalise/maestro-common'\nimport { z } from 'zod'\n\nexport const SCHEDULED_TRIGGER_STEP_FORM_SCHEMA = z.object({\n stepTitle: z.string().trim().min(1),\n scheduleFrequencyExpression: z.string().regex(CRON_EXPRESSION_REGEX),\n scheduleStartingDate: z.optional(z.string().datetime()),\n monitoredLanguageId: z.number().min(1).max(10211),\n targetLanguageIds: z.array(z.number().min(1).max(10211)).min(1),\n monitoredKeyType: z.enum(['new', 'updated', 'both']),\n projectFilterIds: z.array(z.string()),\n})\n\nexport type ScheduledTriggerStepForm = z.infer<typeof SCHEDULED_TRIGGER_STEP_FORM_SCHEMA>\n\nexport const SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.merge(\n SCHEDULED_TRIGGER_STEP_FORM_SCHEMA,\n).extend({\n stepType: z.literal('trigger_step'),\n triggerType: z.literal('Scheduled'),\n})\n\nexport type ScheduledTriggerStepSettings = z.infer<typeof SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA>\n\nexport const DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS: WorkflowLayoutStepSettings &\n Partial<ScheduledTriggerStepSettings> = {\n stepType: 'trigger_step',\n triggerType: 'Scheduled',\n stepTitle: 'Trigger and scope',\n scheduleFrequencyExpression: '0 9 * * *',\n scheduleStartingDate: undefined,\n monitoredLanguageId: undefined,\n targetLanguageIds: [],\n monitoredKeyType: 'new',\n projectFilterIds: [],\n}\n","import type { WorkflowLayoutStepSettings } from '@lokalise/maestro-common'\nimport { z } from 'zod'\nimport { CREATE_TASK_STEP_SETTINGS_SCHEMA } from '../messages.js'\n\nexport const TRANSLATE_TASK_STEP_FORM_SCHEMA = CREATE_TASK_STEP_SETTINGS_SCHEMA.omit({\n stepType: true,\n taskType: true,\n})\n\nexport type TranslateTaskStepForm = z.infer<typeof TRANSLATE_TASK_STEP_FORM_SCHEMA>\n\nexport const TRANSLATE_TASK_STEP_SETTINGS_SCHEMA = CREATE_TASK_STEP_SETTINGS_SCHEMA.extend({\n stepType: z.literal('translate_task_step'),\n taskType: z.literal('translation'),\n autoCloseItems: z.boolean(),\n})\n\nexport type TranslateTaskStepSettings = z.infer<typeof TRANSLATE_TASK_STEP_SETTINGS_SCHEMA>\n\nexport const DEFAULT_TRANSLATE_TASK_STEP_SETTINGS: WorkflowLayoutStepSettings &\n Partial<TranslateTaskStepSettings> = {\n stepType: 'translate_task_step',\n stepTitle: 'Translation task for contributors',\n taskType: 'translation',\n taskTitle: undefined,\n taskDescription: undefined,\n dueDate: undefined,\n languageAssignees: [],\n autoCloseItems: true,\n autoCloseLanguages: false,\n autoCloseTask: false,\n lockTranslations: false,\n}\n","import { WORKFLOW_LAYOUT_STEP_SETTINGS } from '@lokalise/maestro-common'\nimport { z } from 'zod'\n\nconst TASK_LANGUAGE_ASSIGNEES = z\n .object({\n languageId: z.number(),\n userIds: z.optional(z.array(z.number())),\n userGroupIds: z.optional(z.array(z.number())),\n })\n .refine(({ userIds, userGroupIds }) => userIds !== undefined || userGroupIds !== undefined, {\n message: 'Either users or groups should be specified',\n })\n\nexport const CREATE_TASK_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.extend({\n stepType: z.enum(['translate_task_step', 'review_task_step']),\n stepTitle: z.string().trim().min(1),\n taskType: z.enum(['translation', 'review']),\n taskTitle: z.optional(z.string()).describe('If empty, the workflow title will be used'),\n taskDescription: z\n .optional(z.string())\n .describe('Add a description such as including links to useful resources to assignees.'),\n dueDate: z.optional(z.number().int().min(1).max(365)),\n languageAssignees: z.array(TASK_LANGUAGE_ASSIGNEES).min(1),\n autoCloseItems: z.optional(z.boolean()),\n autoCloseLanguages: z.boolean(),\n autoCloseTask: z.boolean(),\n lockTranslations: z.boolean(),\n})\nexport type CreateTaskStepSettings = z.infer<typeof CREATE_TASK_STEP_SETTINGS_SCHEMA>\n\nexport const CREATE_TASK_MESSAGE_CONTEXT = CREATE_TASK_STEP_SETTINGS_SCHEMA.omit({\n stepType: true,\n stepTitle: true,\n dueDate: true,\n}).extend({\n teamId: z.number(),\n projectId: z.string(),\n dueDate: z.optional(z.date()),\n sourceLanguageId: z.number(),\n keyIds: z.array(z.string()),\n})\nexport type CreateTaskMessageContext = z.infer<typeof CREATE_TASK_MESSAGE_CONTEXT>\n","import type { WorkflowLayoutStepSettings } from '@lokalise/maestro-common'\nimport { z } from 'zod'\nimport { CREATE_TASK_STEP_SETTINGS_SCHEMA } from '../messages.js'\n\nexport const REVIEW_TASK_STEP_FORM_SCHEMA = CREATE_TASK_STEP_SETTINGS_SCHEMA.omit({\n stepType: true,\n taskType: true,\n})\n\nexport type ReviewTaskStepForm = z.infer<typeof REVIEW_TASK_STEP_FORM_SCHEMA>\n\nexport const REVIEW_TASK_STEP_SETTINGS_SCHEMA = CREATE_TASK_STEP_SETTINGS_SCHEMA.omit({\n autoCloseItems: true,\n}).extend({\n stepType: z.literal('review_task_step'),\n taskType: z.literal('review'),\n})\n\nexport type ReviewTaskStepSettings = z.infer<typeof REVIEW_TASK_STEP_SETTINGS_SCHEMA>\n\nexport const DEFAULT_REVIEW_TASK_STEP_SETTINGS: WorkflowLayoutStepSettings &\n Partial<ReviewTaskStepSettings> = {\n stepType: 'review_task_step',\n stepTitle: 'Review task for contributors',\n taskType: 'review',\n taskTitle: undefined,\n taskDescription: undefined,\n dueDate: undefined,\n languageAssignees: [],\n autoCloseLanguages: false,\n autoCloseTask: false,\n lockTranslations: false,\n}\n","import {\n WORKFLOW_LAYOUT_STEP_SETTINGS,\n type WorkflowLayoutStepSettings,\n} from '@lokalise/maestro-common'\nimport { z } from 'zod'\n\nexport const END_STEP_FORM_SCHEMA = z.object({})\nexport type EndStepForm = z.infer<typeof END_STEP_FORM_SCHEMA>\n\nexport const END_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.merge(\n END_STEP_FORM_SCHEMA,\n).extend({\n stepType: z.literal('end_step'),\n})\nexport type EndStepSettings = z.infer<typeof END_STEP_SETTINGS_SCHEMA>\n\nexport const DEFAULT_END_STEP_SETTINGS: WorkflowLayoutStepSettings & EndStepSettings = {\n stepType: 'end_step',\n}\n","export {\n SCHEDULED_TRIGGER_STEP_FORM_SCHEMA,\n SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA,\n DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n} from './steps/scheduledTriggerStep.js'\nexport type {\n ScheduledTriggerStepForm,\n ScheduledTriggerStepSettings,\n} from './steps/scheduledTriggerStep.js'\n\nexport {\n TRANSLATE_TASK_STEP_FORM_SCHEMA,\n TRANSLATE_TASK_STEP_SETTINGS_SCHEMA,\n DEFAULT_TRANSLATE_TASK_STEP_SETTINGS,\n} from './steps/translateTaskStep.js'\nexport type { TranslateTaskStepForm, TranslateTaskStepSettings } from './steps/translateTaskStep.js'\nexport {\n REVIEW_TASK_STEP_FORM_SCHEMA,\n REVIEW_TASK_STEP_SETTINGS_SCHEMA,\n DEFAULT_REVIEW_TASK_STEP_SETTINGS,\n} from './steps/reviewTaskStep.js'\nexport type { ReviewTaskStepForm, ReviewTaskStepSettings } from './steps/reviewTaskStep.js'\nexport {\n END_STEP_FORM_SCHEMA,\n END_STEP_SETTINGS_SCHEMA,\n DEFAULT_END_STEP_SETTINGS,\n} from './steps/endStep.js'\nexport type { EndStepForm, EndStepSettings } from './steps/endStep.js'\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","import {\n DEFAULT_END_STEP_SETTINGS,\n DEFAULT_REVIEW_TASK_STEP_SETTINGS,\n DEFAULT_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 TaskCreatedEvent: {\n actions: [{ type: 'storeCreatedTaskId' }],\n },\n TaskClosedEvent: {\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n ReviewTaskStep: DEFAULT_REVIEW_TASK_STEP_SETTINGS,\n EndStep: DEFAULT_END_STEP_SETTINGS,\n },\n sort: ['TriggerStep', 'ReviewTaskStep', 'EndStep'],\n }\n","import {\n DEFAULT_END_STEP_SETTINGS,\n DEFAULT_REVIEW_TASK_STEP_SETTINGS,\n DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n DEFAULT_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: 'translation',\n },\n },\n ],\n on: {\n TaskCreatedEvent: {\n actions: [{ type: 'storeCreatedTaskId' }],\n },\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 TaskCreatedEvent: {\n actions: [{ type: 'storeCreatedTaskId' }],\n },\n TaskClosedEvent: {\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n TranslateTaskStep: DEFAULT_TRANSLATE_TASK_STEP_SETTINGS,\n ReviewTaskStep: DEFAULT_REVIEW_TASK_STEP_SETTINGS,\n EndStep: DEFAULT_END_STEP_SETTINGS,\n },\n sort: ['TriggerStep', 'TranslateTaskStep', 'ReviewTaskStep', 'EndStep'],\n}\n","import {\n DEFAULT_END_STEP_SETTINGS,\n DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n DEFAULT_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: 'translation',\n },\n },\n ],\n on: {\n TaskCreatedEvent: {\n actions: [{ type: 'storeCreatedTaskId' }],\n },\n TaskClosedEvent: {\n guard: { type: 'checkClosedTaskId' },\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n TranslateTaskStep: DEFAULT_TRANSLATE_TASK_STEP_SETTINGS,\n EndStep: DEFAULT_END_STEP_SETTINGS,\n },\n sort: ['TriggerStep', 'TranslateTaskStep', 'EndStep'],\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","import_zod","import_maestro_common","import_zod","import_zod","import_maestro_common","import_zod","z"]}
package/dist/index.mjs CHANGED
@@ -6,7 +6,7 @@ import { COMMON_ERROR_RESPONSE_SCHEMA } from "@lokalise/api-common";
6
6
  import z6 from "zod";
7
7
 
8
8
  // src/workflow/LayoutTranslator.ts
9
- import { areStringArraysEqual } from "@lokalise/universal-ts-utils/dist/areStringArraysEqual.js";
9
+ import { areStringArraysEqual } from "@lokalise/universal-ts-utils/node";
10
10
  var LayoutTranslator = class {
11
11
  static {
12
12
  __name(this, "LayoutTranslator");
@@ -175,7 +175,7 @@ var CREATE_TASK_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS2.extend({
175
175
  taskType: z2.enum(["translation", "review"]),
176
176
  taskTitle: z2.optional(z2.string()).describe("If empty, the workflow title will be used"),
177
177
  taskDescription: z2.optional(z2.string()).describe("Add a description such as including links to useful resources to assignees."),
178
- dueDate: z2.optional(z2.number().min(1).max(365)),
178
+ dueDate: z2.optional(z2.number().int().min(1).max(365)),
179
179
  languageAssignees: z2.array(TASK_LANGUAGE_ASSIGNEES).min(1),
180
180
  autoCloseItems: z2.optional(z2.boolean()),
181
181
  autoCloseLanguages: z2.boolean(),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/apiContract/schemas.ts","../src/workflow/LayoutTranslator.ts","../src/workflow/steps/scheduledTriggerStep.ts","../src/workflow/steps/translateTaskStep.ts","../src/workflow/messages.ts","../src/workflow/steps/reviewTaskStep.ts","../src/workflow/steps/endStep.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 {\n END_STEP_FORM_SCHEMA,\n END_STEP_SETTINGS_SCHEMA,\n REVIEW_TASK_STEP_FORM_SCHEMA,\n REVIEW_TASK_STEP_SETTINGS_SCHEMA,\n SCHEDULED_TRIGGER_STEP_FORM_SCHEMA,\n SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA,\n STEP_TYPES,\n TRANSLATE_TASK_STEP_FORM_SCHEMA,\n TRANSLATE_TASK_STEP_SETTINGS_SCHEMA,\n} 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')\nexport const GROUP_ID = z\n .string()\n .regex(/^expert_[^_\\s]+_[^_\\s]+$/, 'Invalid group ID format')\n .max(255)\n .describe(\n 'Group identifier composed by the tenant ID, followed by the owner ID, followed by the project ID. Underscores are used as separators (e.g. `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\nexport const WORKFLOW_PARAMS = z\n .object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n })\n .describe('URL parameters for getting a workflow')\nexport type WorkflowParams = z.infer<typeof WORKFLOW_PARAMS>\n\nexport const UNSPECIFIED_WORKFLOW_PARAMS = z\n .object({\n groupId: GROUP_ID,\n })\n .describe('URL parameters without workflowId')\nexport type UnspecifiedWorkflowParams = z.infer<typeof UNSPECIFIED_WORKFLOW_PARAMS>\n\n// GET WORKFLOW\nexport const GET_WORKFLOW_PARAMS = WORKFLOW_PARAMS\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_STEP_SCHEMA = z.discriminatedUnion('type', [\n z.object({\n id: z.string().max(100),\n type: SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA.shape.stepType,\n values: SCHEDULED_TRIGGER_STEP_FORM_SCHEMA,\n triggerType: SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA.shape.triggerType,\n }),\n z.object({\n id: z.string().max(100),\n type: TRANSLATE_TASK_STEP_SETTINGS_SCHEMA.shape.stepType,\n values: TRANSLATE_TASK_STEP_FORM_SCHEMA,\n taskType: TRANSLATE_TASK_STEP_SETTINGS_SCHEMA.shape.taskType,\n }),\n z.object({\n id: z.string().max(100),\n type: REVIEW_TASK_STEP_SETTINGS_SCHEMA.shape.stepType,\n values: REVIEW_TASK_STEP_FORM_SCHEMA,\n taskType: REVIEW_TASK_STEP_SETTINGS_SCHEMA.shape.taskType,\n }),\n z.object({\n id: z.string().max(100),\n type: END_STEP_SETTINGS_SCHEMA.shape.stepType,\n values: END_STEP_FORM_SCHEMA,\n }),\n])\n\nexport const WORKFLOW_EXTENDED_SCHEMA = z\n .array(WORKFLOW_EXTENDED_STEP_SCHEMA)\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 const WORKFLOW_EXTENDED_SCHEMA_SIMPLIFIED = 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 triggerType: z.optional(TRIGGER_TYPE),\n taskType: z.optional(z.enum(['translation', 'review'])),\n }),\n )\n .describe(\n 'Simplified schema for the response to be able to return default values to the frontend',\n )\n\nexport const WORKFLOW_EXTENDED_SIMPLIFIED = 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_SIMPLIFIED,\n createdAt: DATETIME,\n updatedAt: z.optional(DATETIME),\n publishedAt: z.optional(DATETIME),\n })\n .describe(\n 'Simplified schema for the response to be able to return default values to the frontend',\n )\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 const GET_WORKFLOW_SIMPLIFIED_RESPONSE = z.object({\n data: WORKFLOW_EXTENDED_SIMPLIFIED,\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 = UNSPECIFIED_WORKFLOW_PARAMS\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 = WORKFLOW_PARAMS\n\nexport const PATCH_PAUSE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully paused workflow',\n})\n\nexport type PatchPauseWorkflowParams = z.infer<typeof PATCH_PAUSE_WORKFLOW_PARAMS>\nexport type PatchPauseWorkflowResponse = z.infer<typeof PATCH_PAUSE_WORKFLOW_RESPONSE>\n\n// RESUME WORKFLOW\nexport const PATCH_RESUME_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const PATCH_RESUME_WORKFLOW_BODY = z.object({\n runNow: z.optional(z.boolean()).default(false),\n})\n\nexport const PATCH_RESUME_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully resumed workflow',\n})\n\nexport type PatchResumeWorkflowParams = z.infer<typeof PATCH_RESUME_WORKFLOW_PARAMS>\nexport type PatchResumeWorkflowBody = z.infer<typeof PATCH_RESUME_WORKFLOW_BODY>\nexport type PatchResumeWorkflowResponse = z.infer<typeof PATCH_RESUME_WORKFLOW_RESPONSE>\n\n// DUPLICATE WORKFLOW\nexport const POST_DUPLICATE_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const POST_DUPLICATE_WORKFLOW_RESPONSE = GET_WORKFLOW_RESPONSE\n\n// DELETE WORKFLOW\nexport const DELETE_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const DELETE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully deleted workflow',\n})\n\nexport type DeleteWorkflowParams = z.infer<typeof DELETE_WORKFLOW_PARAMS>\nexport type DeleteWorkflowResponse = z.infer<typeof DELETE_WORKFLOW_RESPONSE>\n\n// CREATE WORKFLOW\nexport const POST_WORKFLOW_PARAMS = UNSPECIFIED_WORKFLOW_PARAMS\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 const POST_WORKFLOW_SIMPLIFIED_RESPONSE = z.object({\n data: WORKFLOW_EXTENDED_SIMPLIFIED,\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 = WORKFLOW_PARAMS\n\nexport const PUT_WORKFLOW_DRAFT_BODY = z\n .object({\n schema: WORKFLOW_EXTENDED_SCHEMA_SIMPLIFIED,\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\n// PATCH WORKFLOW\nexport const PATCH_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const PATCH_WORKFLOW_BODY = z\n .object({\n title: z.string().min(1).max(256),\n })\n .describe('Workflow title')\n\nexport const PATCH_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully updated workflow',\n})\n\nexport type PatchWorkflowParams = z.infer<typeof PATCH_WORKFLOW_PARAMS>\nexport type PatchWorkflowBody = z.infer<typeof PATCH_WORKFLOW_BODY>\nexport type PatchWorkflowResponse = z.infer<typeof PATCH_WORKFLOW_RESPONSE>\n\n// ACTIVATE WORKFLOW\nexport const POST_ACTIVATE_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const POST_ACTIVATE_WORKFLOW_BODY = z\n .object({\n runNow: z.optional(z.boolean()),\n schema: WORKFLOW_EXTENDED_SCHEMA,\n })\n .describe(\n 'Schema with user changes. If runNow is true, the workflow will be triggered immediately.',\n )\n\nexport const POST_ACTIVATE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully activated workflow',\n})\n\nexport type PostActivateWorkflowParams = z.infer<typeof POST_ACTIVATE_WORKFLOW_PARAMS>\nexport type PostActivateWorkflowBody = z.infer<typeof POST_ACTIVATE_WORKFLOW_BODY>\nexport type PostActivateWorkflowResponse = z.infer<typeof POST_ACTIVATE_WORKFLOW_RESPONSE>\n\n// PUT LIVE WORKFLOW\nexport const PUT_LIVE_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const PUT_LIVE_WORKFLOW_BODY = z\n .object({\n runNow: z.optional(z.boolean()),\n schema: WORKFLOW_EXTENDED_SCHEMA,\n })\n .describe(\n 'Schema with user changes. If runNow is true, the workflow will be triggered immediately.',\n )\n\nexport const PUT_LIVE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully updated workflow',\n})\n\nexport type PutLiveWorkflowParams = z.infer<typeof PUT_LIVE_WORKFLOW_PARAMS>\nexport type PutLiveWorkflowBody = z.infer<typeof PUT_LIVE_WORKFLOW_BODY>\nexport type PutLiveWorkflowResponse = z.infer<typeof PUT_LIVE_WORKFLOW_RESPONSE>\n","import type {\n WorkflowLayout,\n WorkflowLayoutStepSettingsList,\n WorkflowLayoutStepTriggerEvent,\n} from '@lokalise/maestro-common'\nimport type { WorkflowMetadata } from '@lokalise/maestro-common'\nimport { areStringArraysEqual } from '@lokalise/universal-ts-utils/dist/areStringArraysEqual.js'\nimport type { LayoutTranslatorInterface } from '../../../../src/modules/workflows/interfaces/LayoutTranslatorInterface.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 { ScheduledTriggerStepSettings, StepType } from './steps.js'\n\nexport class LayoutTranslator implements LayoutTranslatorInterface {\n public translateTemplateToFrontendLayout<StateName extends string>(\n template: InternalTemplate<StateName>,\n ): FrontendLayout<StateName> {\n return this.buildFrontendLayout<StateName>(template.settings, template.sort)\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 sort: StateName[] = [],\n ): FrontendLayout<StateName> {\n return Object.keys(settings)\n .sort((a, b) => sort.indexOf(a as StateName) - sort.indexOf(b as StateName))\n .map((id) => {\n const { stepType, triggerType, taskType, ...values } = settings[id]\n\n const step = {\n id: id as StateName,\n type: stepType as StepType,\n values,\n triggerType,\n taskType,\n }\n\n return Object.entries(step)\n .filter(([_, value]) => value !== undefined)\n .reduce(\n (acc, [key, value]) => {\n // @ts-ignore\n acc[key] = value\n return acc\n },\n {} as FrontendLayout<StateName>[0],\n )\n })\n }\n\n // Based on the linear layout, return the order of steps\n public getStepSortFromLayout(layout: WorkflowLayout): string[] {\n const sort = [layout.initial]\n let currentState = layout.states[layout.initial]\n\n while (currentState.on) {\n const allEvents: WorkflowLayoutStepTriggerEvent[] = Object.values(currentState.on)\n const event = allEvents.find((evt) => evt.target !== undefined)\n\n if (event === undefined || event.target === undefined) {\n currentState = {\n ...currentState,\n on: undefined,\n }\n continue\n }\n\n sort.push(event.target)\n currentState = layout.states[event.target]\n }\n\n return sort\n }\n\n public buildWorkflowMetadata({\n settings,\n }: Pick<InternalTemplate<string>, 'settings'>): WorkflowMetadata {\n const step = settings.TriggerStep as ScheduledTriggerStepSettings\n\n return {\n triggerType: step.triggerType,\n targetLanguageIds: step.targetLanguageIds.map((id) => id.toString()),\n }\n }\n\n public getTriggerSchedulerExpression(\n settings: WorkflowLayoutStepSettingsList,\n ): string | undefined {\n const step = settings.TriggerStep as ScheduledTriggerStepSettings\n\n if (!step) {\n return undefined\n }\n\n if (step.triggerType === 'Scheduled') {\n return step.scheduleFrequencyExpression ?? undefined\n }\n\n return undefined\n }\n\n public getTriggerSchedulerStartDate(\n settings: WorkflowLayoutStepSettingsList,\n ): string | undefined {\n const step = settings.TriggerStep as ScheduledTriggerStepSettings\n\n if (!step) {\n return undefined\n }\n\n if (step.triggerType === 'Scheduled') {\n return step.scheduleStartingDate\n }\n\n return undefined\n }\n\n buildLayoutSettings<StateName extends string>(\n frontendLayout: FrontendLayout<StateName>,\n ): StrictWorkflowLayoutSettings<StateName> {\n return frontendLayout.reduce(\n (acc, frontendStep) => {\n const step: StrictWorkflowLayoutStepSettings = {\n ...frontendStep.values,\n stepType: frontendStep.type,\n triggerType: frontendStep.type === 'trigger_step' ? frontendStep.triggerType : undefined,\n taskType:\n frontendStep.type === 'translate_task_step' || frontendStep.type === 'review_task_step'\n ? frontendStep.taskType\n : undefined,\n }\n acc[frontendStep.id] = Object.fromEntries(\n Object.entries(step).filter(([_, value]) => value !== undefined),\n ) as StrictWorkflowLayoutStepSettings\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 {\n CRON_EXPRESSION_REGEX,\n WORKFLOW_LAYOUT_STEP_SETTINGS,\n type WorkflowLayoutStepSettings,\n} from '@lokalise/maestro-common'\nimport { z } from 'zod'\n\nexport const SCHEDULED_TRIGGER_STEP_FORM_SCHEMA = z.object({\n stepTitle: z.string().trim().min(1),\n scheduleFrequencyExpression: z.string().regex(CRON_EXPRESSION_REGEX),\n scheduleStartingDate: z.optional(z.string().datetime()),\n monitoredLanguageId: z.number().min(1).max(10211),\n targetLanguageIds: z.array(z.number().min(1).max(10211)).min(1),\n monitoredKeyType: z.enum(['new', 'updated', 'both']),\n projectFilterIds: z.array(z.string()),\n})\n\nexport type ScheduledTriggerStepForm = z.infer<typeof SCHEDULED_TRIGGER_STEP_FORM_SCHEMA>\n\nexport const SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.merge(\n SCHEDULED_TRIGGER_STEP_FORM_SCHEMA,\n).extend({\n stepType: z.literal('trigger_step'),\n triggerType: z.literal('Scheduled'),\n})\n\nexport type ScheduledTriggerStepSettings = z.infer<typeof SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA>\n\nexport const DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS: WorkflowLayoutStepSettings &\n Partial<ScheduledTriggerStepSettings> = {\n stepType: 'trigger_step',\n triggerType: 'Scheduled',\n stepTitle: 'Trigger and scope',\n scheduleFrequencyExpression: '0 9 * * *',\n scheduleStartingDate: undefined,\n monitoredLanguageId: undefined,\n targetLanguageIds: [],\n monitoredKeyType: 'new',\n projectFilterIds: [],\n}\n","import type { WorkflowLayoutStepSettings } from '@lokalise/maestro-common'\nimport { z } from 'zod'\nimport { CREATE_TASK_STEP_SETTINGS_SCHEMA } from '../messages.js'\n\nexport const TRANSLATE_TASK_STEP_FORM_SCHEMA = CREATE_TASK_STEP_SETTINGS_SCHEMA.omit({\n stepType: true,\n taskType: true,\n})\n\nexport type TranslateTaskStepForm = z.infer<typeof TRANSLATE_TASK_STEP_FORM_SCHEMA>\n\nexport const TRANSLATE_TASK_STEP_SETTINGS_SCHEMA = CREATE_TASK_STEP_SETTINGS_SCHEMA.extend({\n stepType: z.literal('translate_task_step'),\n taskType: z.literal('translation'),\n autoCloseItems: z.boolean(),\n})\n\nexport type TranslateTaskStepSettings = z.infer<typeof TRANSLATE_TASK_STEP_SETTINGS_SCHEMA>\n\nexport const DEFAULT_TRANSLATE_TASK_STEP_SETTINGS: WorkflowLayoutStepSettings &\n Partial<TranslateTaskStepSettings> = {\n stepType: 'translate_task_step',\n stepTitle: 'Translation task for contributors',\n taskType: 'translation',\n taskTitle: undefined,\n taskDescription: undefined,\n dueDate: undefined,\n languageAssignees: [],\n autoCloseItems: true,\n autoCloseLanguages: false,\n autoCloseTask: false,\n lockTranslations: false,\n}\n","import { WORKFLOW_LAYOUT_STEP_SETTINGS } from '@lokalise/maestro-common'\nimport { z } from 'zod'\n\nconst TASK_LANGUAGE_ASSIGNEES = z\n .object({\n languageId: z.number(),\n userIds: z.optional(z.array(z.number())),\n userGroupIds: z.optional(z.array(z.number())),\n })\n .refine(({ userIds, userGroupIds }) => userIds !== undefined || userGroupIds !== undefined, {\n message: 'Either users or groups should be specified',\n })\n\nexport const CREATE_TASK_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.extend({\n stepType: z.enum(['translate_task_step', 'review_task_step']),\n stepTitle: z.string().trim().min(1),\n taskType: z.enum(['translation', 'review']),\n taskTitle: z.optional(z.string()).describe('If empty, the workflow title will be used'),\n taskDescription: z\n .optional(z.string())\n .describe('Add a description such as including links to useful resources to assignees.'),\n dueDate: z.optional(z.number().min(1).max(365)),\n languageAssignees: z.array(TASK_LANGUAGE_ASSIGNEES).min(1),\n autoCloseItems: z.optional(z.boolean()),\n autoCloseLanguages: z.boolean(),\n autoCloseTask: z.boolean(),\n lockTranslations: z.boolean(),\n})\nexport type CreateTaskStepSettings = z.infer<typeof CREATE_TASK_STEP_SETTINGS_SCHEMA>\n\nexport const CREATE_TASK_MESSAGE_CONTEXT = CREATE_TASK_STEP_SETTINGS_SCHEMA.omit({\n stepType: true,\n stepTitle: true,\n dueDate: true,\n}).extend({\n teamId: z.number(),\n projectId: z.string(),\n dueDate: z.optional(z.date()),\n sourceLanguageId: z.number(),\n keyIds: z.array(z.string()),\n})\nexport type CreateTaskMessageContext = z.infer<typeof CREATE_TASK_MESSAGE_CONTEXT>\n","import type { WorkflowLayoutStepSettings } from '@lokalise/maestro-common'\nimport { z } from 'zod'\nimport { CREATE_TASK_STEP_SETTINGS_SCHEMA } from '../messages.js'\n\nexport const REVIEW_TASK_STEP_FORM_SCHEMA = CREATE_TASK_STEP_SETTINGS_SCHEMA.omit({\n stepType: true,\n taskType: true,\n})\n\nexport type ReviewTaskStepForm = z.infer<typeof REVIEW_TASK_STEP_FORM_SCHEMA>\n\nexport const REVIEW_TASK_STEP_SETTINGS_SCHEMA = CREATE_TASK_STEP_SETTINGS_SCHEMA.omit({\n autoCloseItems: true,\n}).extend({\n stepType: z.literal('review_task_step'),\n taskType: z.literal('review'),\n})\n\nexport type ReviewTaskStepSettings = z.infer<typeof REVIEW_TASK_STEP_SETTINGS_SCHEMA>\n\nexport const DEFAULT_REVIEW_TASK_STEP_SETTINGS: WorkflowLayoutStepSettings &\n Partial<ReviewTaskStepSettings> = {\n stepType: 'review_task_step',\n stepTitle: 'Review task for contributors',\n taskType: 'review',\n taskTitle: undefined,\n taskDescription: undefined,\n dueDate: undefined,\n languageAssignees: [],\n autoCloseLanguages: false,\n autoCloseTask: false,\n lockTranslations: false,\n}\n","import {\n WORKFLOW_LAYOUT_STEP_SETTINGS,\n type WorkflowLayoutStepSettings,\n} from '@lokalise/maestro-common'\nimport { z } from 'zod'\n\nexport const END_STEP_FORM_SCHEMA = z.object({})\nexport type EndStepForm = z.infer<typeof END_STEP_FORM_SCHEMA>\n\nexport const END_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.merge(\n END_STEP_FORM_SCHEMA,\n).extend({\n stepType: z.literal('end_step'),\n})\nexport type EndStepSettings = z.infer<typeof END_STEP_SETTINGS_SCHEMA>\n\nexport const DEFAULT_END_STEP_SETTINGS: WorkflowLayoutStepSettings & EndStepSettings = {\n stepType: 'end_step',\n}\n","export {\n SCHEDULED_TRIGGER_STEP_FORM_SCHEMA,\n SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA,\n DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n} from './steps/scheduledTriggerStep.js'\nexport type {\n ScheduledTriggerStepForm,\n ScheduledTriggerStepSettings,\n} from './steps/scheduledTriggerStep.js'\n\nexport {\n TRANSLATE_TASK_STEP_FORM_SCHEMA,\n TRANSLATE_TASK_STEP_SETTINGS_SCHEMA,\n DEFAULT_TRANSLATE_TASK_STEP_SETTINGS,\n} from './steps/translateTaskStep.js'\nexport type { TranslateTaskStepForm, TranslateTaskStepSettings } from './steps/translateTaskStep.js'\nexport {\n REVIEW_TASK_STEP_FORM_SCHEMA,\n REVIEW_TASK_STEP_SETTINGS_SCHEMA,\n DEFAULT_REVIEW_TASK_STEP_SETTINGS,\n} from './steps/reviewTaskStep.js'\nexport type { ReviewTaskStepForm, ReviewTaskStepSettings } from './steps/reviewTaskStep.js'\nexport {\n END_STEP_FORM_SCHEMA,\n END_STEP_SETTINGS_SCHEMA,\n DEFAULT_END_STEP_SETTINGS,\n} from './steps/endStep.js'\nexport type { EndStepForm, EndStepSettings } from './steps/endStep.js'\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","import {\n DEFAULT_END_STEP_SETTINGS,\n DEFAULT_REVIEW_TASK_STEP_SETTINGS,\n DEFAULT_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 TaskCreatedEvent: {\n actions: [{ type: 'storeCreatedTaskId' }],\n },\n TaskClosedEvent: {\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n ReviewTaskStep: DEFAULT_REVIEW_TASK_STEP_SETTINGS,\n EndStep: DEFAULT_END_STEP_SETTINGS,\n },\n sort: ['TriggerStep', 'ReviewTaskStep', 'EndStep'],\n }\n","import {\n DEFAULT_END_STEP_SETTINGS,\n DEFAULT_REVIEW_TASK_STEP_SETTINGS,\n DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n DEFAULT_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: 'translation',\n },\n },\n ],\n on: {\n TaskCreatedEvent: {\n actions: [{ type: 'storeCreatedTaskId' }],\n },\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 TaskCreatedEvent: {\n actions: [{ type: 'storeCreatedTaskId' }],\n },\n TaskClosedEvent: {\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n TranslateTaskStep: DEFAULT_TRANSLATE_TASK_STEP_SETTINGS,\n ReviewTaskStep: DEFAULT_REVIEW_TASK_STEP_SETTINGS,\n EndStep: DEFAULT_END_STEP_SETTINGS,\n },\n sort: ['TriggerStep', 'TranslateTaskStep', 'ReviewTaskStep', 'EndStep'],\n}\n","import {\n DEFAULT_END_STEP_SETTINGS,\n DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n DEFAULT_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: 'translation',\n },\n },\n ],\n on: {\n TaskCreatedEvent: {\n actions: [{ type: 'storeCreatedTaskId' }],\n },\n TaskClosedEvent: {\n guard: { type: 'checkClosedTaskId' },\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n TranslateTaskStep: DEFAULT_TRANSLATE_TASK_STEP_SETTINGS,\n EndStep: DEFAULT_END_STEP_SETTINGS,\n },\n sort: ['TriggerStep', 'TranslateTaskStep', 'EndStep'],\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","WORKFLOW_LAYOUT_STEP_SETTINGS","z","z","z","z","WORKFLOW_LAYOUT_STEP_SETTINGS","z","z"]}
1
+ {"version":3,"sources":["../src/apiContract/schemas.ts","../src/workflow/LayoutTranslator.ts","../src/workflow/steps/scheduledTriggerStep.ts","../src/workflow/steps/translateTaskStep.ts","../src/workflow/messages.ts","../src/workflow/steps/reviewTaskStep.ts","../src/workflow/steps/endStep.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 {\n END_STEP_FORM_SCHEMA,\n END_STEP_SETTINGS_SCHEMA,\n REVIEW_TASK_STEP_FORM_SCHEMA,\n REVIEW_TASK_STEP_SETTINGS_SCHEMA,\n SCHEDULED_TRIGGER_STEP_FORM_SCHEMA,\n SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA,\n STEP_TYPES,\n TRANSLATE_TASK_STEP_FORM_SCHEMA,\n TRANSLATE_TASK_STEP_SETTINGS_SCHEMA,\n} 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')\nexport const GROUP_ID = z\n .string()\n .regex(/^expert_[^_\\s]+_[^_\\s]+$/, 'Invalid group ID format')\n .max(255)\n .describe(\n 'Group identifier composed by the tenant ID, followed by the owner ID, followed by the project ID. Underscores are used as separators (e.g. `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\nexport const WORKFLOW_PARAMS = z\n .object({\n groupId: GROUP_ID,\n workflowId: WORKFLOW_ID,\n })\n .describe('URL parameters for getting a workflow')\nexport type WorkflowParams = z.infer<typeof WORKFLOW_PARAMS>\n\nexport const UNSPECIFIED_WORKFLOW_PARAMS = z\n .object({\n groupId: GROUP_ID,\n })\n .describe('URL parameters without workflowId')\nexport type UnspecifiedWorkflowParams = z.infer<typeof UNSPECIFIED_WORKFLOW_PARAMS>\n\n// GET WORKFLOW\nexport const GET_WORKFLOW_PARAMS = WORKFLOW_PARAMS\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_STEP_SCHEMA = z.discriminatedUnion('type', [\n z.object({\n id: z.string().max(100),\n type: SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA.shape.stepType,\n values: SCHEDULED_TRIGGER_STEP_FORM_SCHEMA,\n triggerType: SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA.shape.triggerType,\n }),\n z.object({\n id: z.string().max(100),\n type: TRANSLATE_TASK_STEP_SETTINGS_SCHEMA.shape.stepType,\n values: TRANSLATE_TASK_STEP_FORM_SCHEMA,\n taskType: TRANSLATE_TASK_STEP_SETTINGS_SCHEMA.shape.taskType,\n }),\n z.object({\n id: z.string().max(100),\n type: REVIEW_TASK_STEP_SETTINGS_SCHEMA.shape.stepType,\n values: REVIEW_TASK_STEP_FORM_SCHEMA,\n taskType: REVIEW_TASK_STEP_SETTINGS_SCHEMA.shape.taskType,\n }),\n z.object({\n id: z.string().max(100),\n type: END_STEP_SETTINGS_SCHEMA.shape.stepType,\n values: END_STEP_FORM_SCHEMA,\n }),\n])\n\nexport const WORKFLOW_EXTENDED_SCHEMA = z\n .array(WORKFLOW_EXTENDED_STEP_SCHEMA)\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 const WORKFLOW_EXTENDED_SCHEMA_SIMPLIFIED = 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 triggerType: z.optional(TRIGGER_TYPE),\n taskType: z.optional(z.enum(['translation', 'review'])),\n }),\n )\n .describe(\n 'Simplified schema for the response to be able to return default values to the frontend',\n )\n\nexport const WORKFLOW_EXTENDED_SIMPLIFIED = 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_SIMPLIFIED,\n createdAt: DATETIME,\n updatedAt: z.optional(DATETIME),\n publishedAt: z.optional(DATETIME),\n })\n .describe(\n 'Simplified schema for the response to be able to return default values to the frontend',\n )\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 const GET_WORKFLOW_SIMPLIFIED_RESPONSE = z.object({\n data: WORKFLOW_EXTENDED_SIMPLIFIED,\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 = UNSPECIFIED_WORKFLOW_PARAMS\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 = WORKFLOW_PARAMS\n\nexport const PATCH_PAUSE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully paused workflow',\n})\n\nexport type PatchPauseWorkflowParams = z.infer<typeof PATCH_PAUSE_WORKFLOW_PARAMS>\nexport type PatchPauseWorkflowResponse = z.infer<typeof PATCH_PAUSE_WORKFLOW_RESPONSE>\n\n// RESUME WORKFLOW\nexport const PATCH_RESUME_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const PATCH_RESUME_WORKFLOW_BODY = z.object({\n runNow: z.optional(z.boolean()).default(false),\n})\n\nexport const PATCH_RESUME_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully resumed workflow',\n})\n\nexport type PatchResumeWorkflowParams = z.infer<typeof PATCH_RESUME_WORKFLOW_PARAMS>\nexport type PatchResumeWorkflowBody = z.infer<typeof PATCH_RESUME_WORKFLOW_BODY>\nexport type PatchResumeWorkflowResponse = z.infer<typeof PATCH_RESUME_WORKFLOW_RESPONSE>\n\n// DUPLICATE WORKFLOW\nexport const POST_DUPLICATE_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const POST_DUPLICATE_WORKFLOW_RESPONSE = GET_WORKFLOW_RESPONSE\n\n// DELETE WORKFLOW\nexport const DELETE_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const DELETE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully deleted workflow',\n})\n\nexport type DeleteWorkflowParams = z.infer<typeof DELETE_WORKFLOW_PARAMS>\nexport type DeleteWorkflowResponse = z.infer<typeof DELETE_WORKFLOW_RESPONSE>\n\n// CREATE WORKFLOW\nexport const POST_WORKFLOW_PARAMS = UNSPECIFIED_WORKFLOW_PARAMS\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 const POST_WORKFLOW_SIMPLIFIED_RESPONSE = z.object({\n data: WORKFLOW_EXTENDED_SIMPLIFIED,\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 = WORKFLOW_PARAMS\n\nexport const PUT_WORKFLOW_DRAFT_BODY = z\n .object({\n schema: WORKFLOW_EXTENDED_SCHEMA_SIMPLIFIED,\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\n// PATCH WORKFLOW\nexport const PATCH_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const PATCH_WORKFLOW_BODY = z\n .object({\n title: z.string().min(1).max(256),\n })\n .describe('Workflow title')\n\nexport const PATCH_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully updated workflow',\n})\n\nexport type PatchWorkflowParams = z.infer<typeof PATCH_WORKFLOW_PARAMS>\nexport type PatchWorkflowBody = z.infer<typeof PATCH_WORKFLOW_BODY>\nexport type PatchWorkflowResponse = z.infer<typeof PATCH_WORKFLOW_RESPONSE>\n\n// ACTIVATE WORKFLOW\nexport const POST_ACTIVATE_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const POST_ACTIVATE_WORKFLOW_BODY = z\n .object({\n runNow: z.optional(z.boolean()),\n schema: WORKFLOW_EXTENDED_SCHEMA,\n })\n .describe(\n 'Schema with user changes. If runNow is true, the workflow will be triggered immediately.',\n )\n\nexport const POST_ACTIVATE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully activated workflow',\n})\n\nexport type PostActivateWorkflowParams = z.infer<typeof POST_ACTIVATE_WORKFLOW_PARAMS>\nexport type PostActivateWorkflowBody = z.infer<typeof POST_ACTIVATE_WORKFLOW_BODY>\nexport type PostActivateWorkflowResponse = z.infer<typeof POST_ACTIVATE_WORKFLOW_RESPONSE>\n\n// PUT LIVE WORKFLOW\nexport const PUT_LIVE_WORKFLOW_PARAMS = WORKFLOW_PARAMS\n\nexport const PUT_LIVE_WORKFLOW_BODY = z\n .object({\n runNow: z.optional(z.boolean()),\n schema: WORKFLOW_EXTENDED_SCHEMA,\n })\n .describe(\n 'Schema with user changes. If runNow is true, the workflow will be triggered immediately.',\n )\n\nexport const PUT_LIVE_WORKFLOW_RESPONSE = z.null({\n description: 'Successfully updated workflow',\n})\n\nexport type PutLiveWorkflowParams = z.infer<typeof PUT_LIVE_WORKFLOW_PARAMS>\nexport type PutLiveWorkflowBody = z.infer<typeof PUT_LIVE_WORKFLOW_BODY>\nexport type PutLiveWorkflowResponse = z.infer<typeof PUT_LIVE_WORKFLOW_RESPONSE>\n","import type {\n WorkflowLayout,\n WorkflowLayoutStepSettingsList,\n WorkflowLayoutStepTriggerEvent,\n} from '@lokalise/maestro-common'\nimport type { WorkflowMetadata } from '@lokalise/maestro-common'\nimport { areStringArraysEqual } from '@lokalise/universal-ts-utils/node'\nimport type { LayoutTranslatorInterface } from '../../../../src/modules/workflows/interfaces/LayoutTranslatorInterface.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 { ScheduledTriggerStepSettings, StepType } from './steps.js'\n\nexport class LayoutTranslator implements LayoutTranslatorInterface {\n public translateTemplateToFrontendLayout<StateName extends string>(\n template: InternalTemplate<StateName>,\n ): FrontendLayout<StateName> {\n return this.buildFrontendLayout<StateName>(template.settings, template.sort)\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 sort: StateName[] = [],\n ): FrontendLayout<StateName> {\n return Object.keys(settings)\n .sort((a, b) => sort.indexOf(a as StateName) - sort.indexOf(b as StateName))\n .map((id) => {\n const { stepType, triggerType, taskType, ...values } = settings[id]\n\n const step = {\n id: id as StateName,\n type: stepType as StepType,\n values,\n triggerType,\n taskType,\n }\n\n return Object.entries(step)\n .filter(([_, value]) => value !== undefined)\n .reduce(\n (acc, [key, value]) => {\n // @ts-ignore\n acc[key] = value\n return acc\n },\n {} as FrontendLayout<StateName>[0],\n )\n })\n }\n\n // Based on the linear layout, return the order of steps\n public getStepSortFromLayout(layout: WorkflowLayout): string[] {\n const sort = [layout.initial]\n let currentState = layout.states[layout.initial]\n\n while (currentState.on) {\n const allEvents: WorkflowLayoutStepTriggerEvent[] = Object.values(currentState.on)\n const event = allEvents.find((evt) => evt.target !== undefined)\n\n if (event === undefined || event.target === undefined) {\n currentState = {\n ...currentState,\n on: undefined,\n }\n continue\n }\n\n sort.push(event.target)\n currentState = layout.states[event.target]\n }\n\n return sort\n }\n\n public buildWorkflowMetadata({\n settings,\n }: Pick<InternalTemplate<string>, 'settings'>): WorkflowMetadata {\n const step = settings.TriggerStep as ScheduledTriggerStepSettings\n\n return {\n triggerType: step.triggerType,\n targetLanguageIds: step.targetLanguageIds.map((id) => id.toString()),\n }\n }\n\n public getTriggerSchedulerExpression(\n settings: WorkflowLayoutStepSettingsList,\n ): string | undefined {\n const step = settings.TriggerStep as ScheduledTriggerStepSettings\n\n if (!step) {\n return undefined\n }\n\n if (step.triggerType === 'Scheduled') {\n return step.scheduleFrequencyExpression ?? undefined\n }\n\n return undefined\n }\n\n public getTriggerSchedulerStartDate(\n settings: WorkflowLayoutStepSettingsList,\n ): string | undefined {\n const step = settings.TriggerStep as ScheduledTriggerStepSettings\n\n if (!step) {\n return undefined\n }\n\n if (step.triggerType === 'Scheduled') {\n return step.scheduleStartingDate\n }\n\n return undefined\n }\n\n buildLayoutSettings<StateName extends string>(\n frontendLayout: FrontendLayout<StateName>,\n ): StrictWorkflowLayoutSettings<StateName> {\n return frontendLayout.reduce(\n (acc, frontendStep) => {\n const step: StrictWorkflowLayoutStepSettings = {\n ...frontendStep.values,\n stepType: frontendStep.type,\n triggerType: frontendStep.type === 'trigger_step' ? frontendStep.triggerType : undefined,\n taskType:\n frontendStep.type === 'translate_task_step' || frontendStep.type === 'review_task_step'\n ? frontendStep.taskType\n : undefined,\n }\n acc[frontendStep.id] = Object.fromEntries(\n Object.entries(step).filter(([_, value]) => value !== undefined),\n ) as StrictWorkflowLayoutStepSettings\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 {\n CRON_EXPRESSION_REGEX,\n WORKFLOW_LAYOUT_STEP_SETTINGS,\n type WorkflowLayoutStepSettings,\n} from '@lokalise/maestro-common'\nimport { z } from 'zod'\n\nexport const SCHEDULED_TRIGGER_STEP_FORM_SCHEMA = z.object({\n stepTitle: z.string().trim().min(1),\n scheduleFrequencyExpression: z.string().regex(CRON_EXPRESSION_REGEX),\n scheduleStartingDate: z.optional(z.string().datetime()),\n monitoredLanguageId: z.number().min(1).max(10211),\n targetLanguageIds: z.array(z.number().min(1).max(10211)).min(1),\n monitoredKeyType: z.enum(['new', 'updated', 'both']),\n projectFilterIds: z.array(z.string()),\n})\n\nexport type ScheduledTriggerStepForm = z.infer<typeof SCHEDULED_TRIGGER_STEP_FORM_SCHEMA>\n\nexport const SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.merge(\n SCHEDULED_TRIGGER_STEP_FORM_SCHEMA,\n).extend({\n stepType: z.literal('trigger_step'),\n triggerType: z.literal('Scheduled'),\n})\n\nexport type ScheduledTriggerStepSettings = z.infer<typeof SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA>\n\nexport const DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS: WorkflowLayoutStepSettings &\n Partial<ScheduledTriggerStepSettings> = {\n stepType: 'trigger_step',\n triggerType: 'Scheduled',\n stepTitle: 'Trigger and scope',\n scheduleFrequencyExpression: '0 9 * * *',\n scheduleStartingDate: undefined,\n monitoredLanguageId: undefined,\n targetLanguageIds: [],\n monitoredKeyType: 'new',\n projectFilterIds: [],\n}\n","import type { WorkflowLayoutStepSettings } from '@lokalise/maestro-common'\nimport { z } from 'zod'\nimport { CREATE_TASK_STEP_SETTINGS_SCHEMA } from '../messages.js'\n\nexport const TRANSLATE_TASK_STEP_FORM_SCHEMA = CREATE_TASK_STEP_SETTINGS_SCHEMA.omit({\n stepType: true,\n taskType: true,\n})\n\nexport type TranslateTaskStepForm = z.infer<typeof TRANSLATE_TASK_STEP_FORM_SCHEMA>\n\nexport const TRANSLATE_TASK_STEP_SETTINGS_SCHEMA = CREATE_TASK_STEP_SETTINGS_SCHEMA.extend({\n stepType: z.literal('translate_task_step'),\n taskType: z.literal('translation'),\n autoCloseItems: z.boolean(),\n})\n\nexport type TranslateTaskStepSettings = z.infer<typeof TRANSLATE_TASK_STEP_SETTINGS_SCHEMA>\n\nexport const DEFAULT_TRANSLATE_TASK_STEP_SETTINGS: WorkflowLayoutStepSettings &\n Partial<TranslateTaskStepSettings> = {\n stepType: 'translate_task_step',\n stepTitle: 'Translation task for contributors',\n taskType: 'translation',\n taskTitle: undefined,\n taskDescription: undefined,\n dueDate: undefined,\n languageAssignees: [],\n autoCloseItems: true,\n autoCloseLanguages: false,\n autoCloseTask: false,\n lockTranslations: false,\n}\n","import { WORKFLOW_LAYOUT_STEP_SETTINGS } from '@lokalise/maestro-common'\nimport { z } from 'zod'\n\nconst TASK_LANGUAGE_ASSIGNEES = z\n .object({\n languageId: z.number(),\n userIds: z.optional(z.array(z.number())),\n userGroupIds: z.optional(z.array(z.number())),\n })\n .refine(({ userIds, userGroupIds }) => userIds !== undefined || userGroupIds !== undefined, {\n message: 'Either users or groups should be specified',\n })\n\nexport const CREATE_TASK_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.extend({\n stepType: z.enum(['translate_task_step', 'review_task_step']),\n stepTitle: z.string().trim().min(1),\n taskType: z.enum(['translation', 'review']),\n taskTitle: z.optional(z.string()).describe('If empty, the workflow title will be used'),\n taskDescription: z\n .optional(z.string())\n .describe('Add a description such as including links to useful resources to assignees.'),\n dueDate: z.optional(z.number().int().min(1).max(365)),\n languageAssignees: z.array(TASK_LANGUAGE_ASSIGNEES).min(1),\n autoCloseItems: z.optional(z.boolean()),\n autoCloseLanguages: z.boolean(),\n autoCloseTask: z.boolean(),\n lockTranslations: z.boolean(),\n})\nexport type CreateTaskStepSettings = z.infer<typeof CREATE_TASK_STEP_SETTINGS_SCHEMA>\n\nexport const CREATE_TASK_MESSAGE_CONTEXT = CREATE_TASK_STEP_SETTINGS_SCHEMA.omit({\n stepType: true,\n stepTitle: true,\n dueDate: true,\n}).extend({\n teamId: z.number(),\n projectId: z.string(),\n dueDate: z.optional(z.date()),\n sourceLanguageId: z.number(),\n keyIds: z.array(z.string()),\n})\nexport type CreateTaskMessageContext = z.infer<typeof CREATE_TASK_MESSAGE_CONTEXT>\n","import type { WorkflowLayoutStepSettings } from '@lokalise/maestro-common'\nimport { z } from 'zod'\nimport { CREATE_TASK_STEP_SETTINGS_SCHEMA } from '../messages.js'\n\nexport const REVIEW_TASK_STEP_FORM_SCHEMA = CREATE_TASK_STEP_SETTINGS_SCHEMA.omit({\n stepType: true,\n taskType: true,\n})\n\nexport type ReviewTaskStepForm = z.infer<typeof REVIEW_TASK_STEP_FORM_SCHEMA>\n\nexport const REVIEW_TASK_STEP_SETTINGS_SCHEMA = CREATE_TASK_STEP_SETTINGS_SCHEMA.omit({\n autoCloseItems: true,\n}).extend({\n stepType: z.literal('review_task_step'),\n taskType: z.literal('review'),\n})\n\nexport type ReviewTaskStepSettings = z.infer<typeof REVIEW_TASK_STEP_SETTINGS_SCHEMA>\n\nexport const DEFAULT_REVIEW_TASK_STEP_SETTINGS: WorkflowLayoutStepSettings &\n Partial<ReviewTaskStepSettings> = {\n stepType: 'review_task_step',\n stepTitle: 'Review task for contributors',\n taskType: 'review',\n taskTitle: undefined,\n taskDescription: undefined,\n dueDate: undefined,\n languageAssignees: [],\n autoCloseLanguages: false,\n autoCloseTask: false,\n lockTranslations: false,\n}\n","import {\n WORKFLOW_LAYOUT_STEP_SETTINGS,\n type WorkflowLayoutStepSettings,\n} from '@lokalise/maestro-common'\nimport { z } from 'zod'\n\nexport const END_STEP_FORM_SCHEMA = z.object({})\nexport type EndStepForm = z.infer<typeof END_STEP_FORM_SCHEMA>\n\nexport const END_STEP_SETTINGS_SCHEMA = WORKFLOW_LAYOUT_STEP_SETTINGS.merge(\n END_STEP_FORM_SCHEMA,\n).extend({\n stepType: z.literal('end_step'),\n})\nexport type EndStepSettings = z.infer<typeof END_STEP_SETTINGS_SCHEMA>\n\nexport const DEFAULT_END_STEP_SETTINGS: WorkflowLayoutStepSettings & EndStepSettings = {\n stepType: 'end_step',\n}\n","export {\n SCHEDULED_TRIGGER_STEP_FORM_SCHEMA,\n SCHEDULED_TRIGGER_STEP_SETTINGS_SCHEMA,\n DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n} from './steps/scheduledTriggerStep.js'\nexport type {\n ScheduledTriggerStepForm,\n ScheduledTriggerStepSettings,\n} from './steps/scheduledTriggerStep.js'\n\nexport {\n TRANSLATE_TASK_STEP_FORM_SCHEMA,\n TRANSLATE_TASK_STEP_SETTINGS_SCHEMA,\n DEFAULT_TRANSLATE_TASK_STEP_SETTINGS,\n} from './steps/translateTaskStep.js'\nexport type { TranslateTaskStepForm, TranslateTaskStepSettings } from './steps/translateTaskStep.js'\nexport {\n REVIEW_TASK_STEP_FORM_SCHEMA,\n REVIEW_TASK_STEP_SETTINGS_SCHEMA,\n DEFAULT_REVIEW_TASK_STEP_SETTINGS,\n} from './steps/reviewTaskStep.js'\nexport type { ReviewTaskStepForm, ReviewTaskStepSettings } from './steps/reviewTaskStep.js'\nexport {\n END_STEP_FORM_SCHEMA,\n END_STEP_SETTINGS_SCHEMA,\n DEFAULT_END_STEP_SETTINGS,\n} from './steps/endStep.js'\nexport type { EndStepForm, EndStepSettings } from './steps/endStep.js'\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","import {\n DEFAULT_END_STEP_SETTINGS,\n DEFAULT_REVIEW_TASK_STEP_SETTINGS,\n DEFAULT_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 TaskCreatedEvent: {\n actions: [{ type: 'storeCreatedTaskId' }],\n },\n TaskClosedEvent: {\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n ReviewTaskStep: DEFAULT_REVIEW_TASK_STEP_SETTINGS,\n EndStep: DEFAULT_END_STEP_SETTINGS,\n },\n sort: ['TriggerStep', 'ReviewTaskStep', 'EndStep'],\n }\n","import {\n DEFAULT_END_STEP_SETTINGS,\n DEFAULT_REVIEW_TASK_STEP_SETTINGS,\n DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n DEFAULT_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: 'translation',\n },\n },\n ],\n on: {\n TaskCreatedEvent: {\n actions: [{ type: 'storeCreatedTaskId' }],\n },\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 TaskCreatedEvent: {\n actions: [{ type: 'storeCreatedTaskId' }],\n },\n TaskClosedEvent: {\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n TranslateTaskStep: DEFAULT_TRANSLATE_TASK_STEP_SETTINGS,\n ReviewTaskStep: DEFAULT_REVIEW_TASK_STEP_SETTINGS,\n EndStep: DEFAULT_END_STEP_SETTINGS,\n },\n sort: ['TriggerStep', 'TranslateTaskStep', 'ReviewTaskStep', 'EndStep'],\n}\n","import {\n DEFAULT_END_STEP_SETTINGS,\n DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n DEFAULT_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: 'translation',\n },\n },\n ],\n on: {\n TaskCreatedEvent: {\n actions: [{ type: 'storeCreatedTaskId' }],\n },\n TaskClosedEvent: {\n guard: { type: 'checkClosedTaskId' },\n target: 'EndStep',\n },\n },\n },\n EndStep: {\n type: 'final',\n },\n },\n },\n settings: {\n TriggerStep: DEFAULT_SCHEDULED_TRIGGER_STEP_SETTINGS,\n TranslateTaskStep: DEFAULT_TRANSLATE_TASK_STEP_SETTINGS,\n EndStep: DEFAULT_END_STEP_SETTINGS,\n },\n sort: ['TriggerStep', 'TranslateTaskStep', 'EndStep'],\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","WORKFLOW_LAYOUT_STEP_SETTINGS","z","z","z","z","WORKFLOW_LAYOUT_STEP_SETTINGS","z","z"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lokalise/maestro-expert-tenant-lib",
3
- "version": "1.16.2",
3
+ "version": "1.16.4",
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",
@@ -55,7 +55,7 @@
55
55
  },
56
56
  "dependencies": {
57
57
  "@lokalise/api-common": "^3.2.5",
58
- "@lokalise/universal-ts-utils": "^1.2.0"
58
+ "@lokalise/universal-ts-utils": "^1.3.2"
59
59
  },
60
60
  "peerDependencies": {
61
61
  "@lokalise/maestro-common": "^1.0.3",