@lokalise/maestro-nextgen-tenant-lib 2.0.2 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -98,8 +98,69 @@ export declare const GET_TASK_LIST_RESPONSE: z.ZodObject<{
98
98
  hasMore: z.ZodOptional<z.ZodBoolean>;
99
99
  }, z.core.$strip>;
100
100
  }, z.core.$strip>;
101
+ export declare const UPDATE_TASK_PARAMS: z.ZodObject<{
102
+ groupId: z.ZodString;
103
+ taskId: z.ZodString;
104
+ }, z.core.$strip>;
105
+ export declare const UPDATE_TASK_BODY: z.ZodObject<{
106
+ title: z.ZodOptional<z.ZodString>;
107
+ dueDate: z.ZodNullable<z.ZodOptional<z.ZodISODateTime>>;
108
+ taskAssignments: z.ZodOptional<z.ZodArray<z.ZodObject<{
109
+ languageId: z.ZodString;
110
+ assignees: z.ZodArray<z.ZodObject<{
111
+ contributorId: z.ZodUUID;
112
+ type: z.ZodEnum<{
113
+ user: "user";
114
+ user_group: "user_group";
115
+ }>;
116
+ }, z.core.$strip>>;
117
+ }, z.core.$strict>>>;
118
+ }, z.core.$strip>;
119
+ export declare const UPDATE_TASK_RESPONSE: z.ZodObject<{
120
+ data: z.ZodObject<{
121
+ id: z.ZodString;
122
+ title: z.ZodString;
123
+ type: z.ZodEnum<{
124
+ review: "review";
125
+ }>;
126
+ status: z.ZodEnum<{
127
+ created: "created";
128
+ in_progress: "in_progress";
129
+ closed: "closed";
130
+ }>;
131
+ taskAssignments: z.ZodArray<z.ZodObject<{
132
+ languageId: z.ZodString;
133
+ assignees: z.ZodArray<z.ZodObject<{
134
+ contributorId: z.ZodUUID;
135
+ type: z.ZodEnum<{
136
+ user: "user";
137
+ user_group: "user_group";
138
+ }>;
139
+ }, z.core.$strip>>;
140
+ progress: z.ZodObject<{
141
+ completedUnits: z.ZodNumber;
142
+ totalUnits: z.ZodNumber;
143
+ }, z.core.$strip>;
144
+ segments: z.ZodArray<z.ZodObject<{
145
+ id: z.ZodString;
146
+ unitId: z.ZodString;
147
+ status: z.ZodEnum<{
148
+ pending: "pending";
149
+ completed: "completed";
150
+ }>;
151
+ createdAt: z.ZodISODateTime;
152
+ completedAt: z.ZodNullable<z.ZodOptional<z.ZodISODateTime>>;
153
+ }, z.core.$strip>>;
154
+ }, z.core.$strip>>;
155
+ dueDate: z.ZodNullable<z.ZodOptional<z.ZodISODateTime>>;
156
+ createdAt: z.ZodISODateTime;
157
+ }, z.core.$strip>;
158
+ }, z.core.$strip>;
101
159
  export type TaskListItem = z.infer<typeof TASK_LIST_ITEM>;
102
160
  export type TaskAssignee = z.infer<typeof TASK_ASSIGNEE>;
103
161
  export type GetTaskListParams = z.infer<typeof GET_TASK_LIST_PARAMS>;
104
162
  export type GetTaskListRequestQuery = z.infer<typeof GET_TASK_LIST_REQUEST_QUERY>;
105
163
  export type GetTaskListResponse = z.infer<typeof GET_TASK_LIST_RESPONSE>;
164
+ export type UpdateTaskParams = z.infer<typeof UPDATE_TASK_PARAMS>;
165
+ export type UpdateTaskBody = z.infer<typeof UPDATE_TASK_BODY>;
166
+ export type UpdateTaskResponse = z.infer<typeof UPDATE_TASK_RESPONSE>;
@@ -2,6 +2,7 @@ import { zMeta } from '@lokalise/api-common';
2
2
  import { toArrayPreprocessor } from '@lokalise/zod-extras';
3
3
  import { z } from 'zod/v4';
4
4
  import { GROUP_ID, TASK_STATUS, TASK_TYPE } from '../common.js';
5
+ import { allKeysEmptyRefinement } from '../refinements.js';
5
6
  // COMMON SCHEMAS
6
7
  const DATETIME = z.iso.datetime();
7
8
  // TASK SCHEMAS
@@ -41,6 +42,12 @@ const TASK_ASSIGNMENT = z
41
42
  .describe('Individual segments/units within this assignment'),
42
43
  })
43
44
  .describe('Task assignment and progress for a specific language');
45
+ const TASK_ASSIGNMENT_UPDATE = TASK_ASSIGNMENT.pick({
46
+ assignees: true,
47
+ languageId: true,
48
+ })
49
+ .strict()
50
+ .describe('Task assignment for updating');
44
51
  export const TASK_LIST_ITEM = z
45
52
  .object({
46
53
  id: TASK_ID,
@@ -71,4 +78,24 @@ export const GET_TASK_LIST_RESPONSE = z.object({
71
78
  data: z.array(TASK_LIST_ITEM),
72
79
  meta: zMeta,
73
80
  });
81
+ export const UPDATE_TASK_PARAMS = z.object({
82
+ groupId: GROUP_ID,
83
+ taskId: TASK_ID,
84
+ });
85
+ export const UPDATE_TASK_BODY = z
86
+ .object({
87
+ title: z.string().optional(),
88
+ dueDate: z.optional(DATETIME).nullable(),
89
+ taskAssignments: z
90
+ .array(TASK_ASSIGNMENT_UPDATE)
91
+ .describe('Task assignment update with languageId and assignees')
92
+ .optional(),
93
+ })
94
+ .refine(({ title, dueDate, taskAssignments }) => !allKeysEmptyRefinement({ title, dueDate, taskAssignments }), {
95
+ message: 'At least one of title, dueDate, or taskAssignments must be provided.',
96
+ path: ['title', 'dueDate', 'taskAssignments'],
97
+ });
98
+ export const UPDATE_TASK_RESPONSE = z.object({
99
+ data: TASK_LIST_ITEM.describe('Updated task'),
100
+ });
74
101
  //# sourceMappingURL=schemas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/apiContract/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/apiContract/schemas.ts"],"names":[],"mappings":"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"}
@@ -113,3 +113,117 @@ export declare const getTaskListContract: import("@lokalise/api-contracts").GetR
113
113
  details: import("zod/v4").ZodOptional<import("zod/v4").ZodAny>;
114
114
  }, import("zod/v4/core").$strip>;
115
115
  }>;
116
+ export declare const updateTaskContract: import("@lokalise/api-contracts").PayloadRouteDefinition<import("zod/v4").ZodObject<{
117
+ title: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
118
+ dueDate: import("zod/v4").ZodNullable<import("zod/v4").ZodOptional<import("zod/v4").ZodISODateTime>>;
119
+ taskAssignments: import("zod/v4").ZodOptional<import("zod/v4").ZodArray<import("zod/v4").ZodObject<{
120
+ languageId: import("zod/v4").ZodString;
121
+ assignees: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{
122
+ contributorId: import("zod/v4").ZodUUID;
123
+ type: import("zod/v4").ZodEnum<{
124
+ user: "user";
125
+ user_group: "user_group";
126
+ }>;
127
+ }, import("zod/v4/core").$strip>>;
128
+ }, import("zod/v4/core").$strict>>>;
129
+ }, import("zod/v4/core").$strip>, import("zod/v4").ZodObject<{
130
+ data: import("zod/v4").ZodObject<{
131
+ id: import("zod/v4").ZodString;
132
+ title: import("zod/v4").ZodString;
133
+ type: import("zod/v4").ZodEnum<{
134
+ review: "review";
135
+ }>;
136
+ status: import("zod/v4").ZodEnum<{
137
+ created: "created";
138
+ in_progress: "in_progress";
139
+ closed: "closed";
140
+ }>;
141
+ taskAssignments: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{
142
+ languageId: import("zod/v4").ZodString;
143
+ assignees: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{
144
+ contributorId: import("zod/v4").ZodUUID;
145
+ type: import("zod/v4").ZodEnum<{
146
+ user: "user";
147
+ user_group: "user_group";
148
+ }>;
149
+ }, import("zod/v4/core").$strip>>;
150
+ progress: import("zod/v4").ZodObject<{
151
+ completedUnits: import("zod/v4").ZodNumber;
152
+ totalUnits: import("zod/v4").ZodNumber;
153
+ }, import("zod/v4/core").$strip>;
154
+ segments: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{
155
+ id: import("zod/v4").ZodString;
156
+ unitId: import("zod/v4").ZodString;
157
+ status: import("zod/v4").ZodEnum<{
158
+ pending: "pending";
159
+ completed: "completed";
160
+ }>;
161
+ createdAt: import("zod/v4").ZodISODateTime;
162
+ completedAt: import("zod/v4").ZodNullable<import("zod/v4").ZodOptional<import("zod/v4").ZodISODateTime>>;
163
+ }, import("zod/v4/core").$strip>>;
164
+ }, import("zod/v4/core").$strip>>;
165
+ dueDate: import("zod/v4").ZodNullable<import("zod/v4").ZodOptional<import("zod/v4").ZodISODateTime>>;
166
+ createdAt: import("zod/v4").ZodISODateTime;
167
+ }, import("zod/v4/core").$strip>;
168
+ }, import("zod/v4/core").$strip>, import("zod/v4").ZodObject<{
169
+ groupId: import("zod/v4").ZodString;
170
+ taskId: import("zod/v4").ZodString;
171
+ }, import("zod/v4/core").$strip>, undefined, import("zod/v4").ZodObject<{
172
+ authorization: import("zod/v4").ZodString;
173
+ }, import("zod/v4/core").$strip>, false, false, {
174
+ 200: import("zod/v4").ZodObject<{
175
+ data: import("zod/v4").ZodObject<{
176
+ id: import("zod/v4").ZodString;
177
+ title: import("zod/v4").ZodString;
178
+ type: import("zod/v4").ZodEnum<{
179
+ review: "review";
180
+ }>;
181
+ status: import("zod/v4").ZodEnum<{
182
+ created: "created";
183
+ in_progress: "in_progress";
184
+ closed: "closed";
185
+ }>;
186
+ taskAssignments: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{
187
+ languageId: import("zod/v4").ZodString;
188
+ assignees: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{
189
+ contributorId: import("zod/v4").ZodUUID;
190
+ type: import("zod/v4").ZodEnum<{
191
+ user: "user";
192
+ user_group: "user_group";
193
+ }>;
194
+ }, import("zod/v4/core").$strip>>;
195
+ progress: import("zod/v4").ZodObject<{
196
+ completedUnits: import("zod/v4").ZodNumber;
197
+ totalUnits: import("zod/v4").ZodNumber;
198
+ }, import("zod/v4/core").$strip>;
199
+ segments: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{
200
+ id: import("zod/v4").ZodString;
201
+ unitId: import("zod/v4").ZodString;
202
+ status: import("zod/v4").ZodEnum<{
203
+ pending: "pending";
204
+ completed: "completed";
205
+ }>;
206
+ createdAt: import("zod/v4").ZodISODateTime;
207
+ completedAt: import("zod/v4").ZodNullable<import("zod/v4").ZodOptional<import("zod/v4").ZodISODateTime>>;
208
+ }, import("zod/v4/core").$strip>>;
209
+ }, import("zod/v4/core").$strip>>;
210
+ dueDate: import("zod/v4").ZodNullable<import("zod/v4").ZodOptional<import("zod/v4").ZodISODateTime>>;
211
+ createdAt: import("zod/v4").ZodISODateTime;
212
+ }, import("zod/v4/core").$strip>;
213
+ }, import("zod/v4/core").$strip>;
214
+ 400: import("zod/v4").ZodObject<{
215
+ message: import("zod/v4").ZodString;
216
+ errorCode: import("zod/v4").ZodString;
217
+ details: import("zod/v4").ZodOptional<import("zod/v4").ZodAny>;
218
+ }, import("zod/v4/core").$strip>;
219
+ 403: import("zod/v4").ZodObject<{
220
+ message: import("zod/v4").ZodString;
221
+ errorCode: import("zod/v4").ZodString;
222
+ details: import("zod/v4").ZodOptional<import("zod/v4").ZodAny>;
223
+ }, import("zod/v4/core").$strip>;
224
+ 404: import("zod/v4").ZodObject<{
225
+ message: import("zod/v4").ZodString;
226
+ errorCode: import("zod/v4").ZodString;
227
+ details: import("zod/v4").ZodOptional<import("zod/v4").ZodAny>;
228
+ }, import("zod/v4/core").$strip>;
229
+ }>;
@@ -1,7 +1,7 @@
1
1
  import { COMMON_ERROR_RESPONSE_SCHEMA } from '@lokalise/api-common';
2
- import { buildGetRoute } from '@lokalise/api-contracts';
2
+ import { buildGetRoute, buildPayloadRoute } from '@lokalise/api-contracts';
3
3
  import { AUTHORIZATION_REQUEST_HEADER } from '@lokalise/maestro-common';
4
- import { GET_TASK_LIST_PARAMS, GET_TASK_LIST_REQUEST_QUERY, GET_TASK_LIST_RESPONSE, } from './schemas.js';
4
+ import { GET_TASK_LIST_PARAMS, GET_TASK_LIST_REQUEST_QUERY, GET_TASK_LIST_RESPONSE, UPDATE_TASK_BODY, UPDATE_TASK_PARAMS, UPDATE_TASK_RESPONSE, } from './schemas.js';
5
5
  export const getTaskListContract = buildGetRoute({
6
6
  pathResolver: (params) => `/v1/groups/${params.groupId}/tasks`,
7
7
  summary: 'List tasks',
@@ -17,4 +17,20 @@ export const getTaskListContract = buildGetRoute({
17
17
  404: COMMON_ERROR_RESPONSE_SCHEMA,
18
18
  },
19
19
  });
20
+ export const updateTaskContract = buildPayloadRoute({
21
+ pathResolver: (params) => `/v1/groups/${params.groupId}/tasks/${params.taskId}`,
22
+ method: 'put',
23
+ summary: 'Update task',
24
+ description: 'Updates a task',
25
+ requestHeaderSchema: AUTHORIZATION_REQUEST_HEADER,
26
+ requestPathParamsSchema: UPDATE_TASK_PARAMS,
27
+ requestBodySchema: UPDATE_TASK_BODY,
28
+ successResponseBodySchema: UPDATE_TASK_RESPONSE,
29
+ responseSchemasByStatusCode: {
30
+ 200: UPDATE_TASK_RESPONSE,
31
+ 400: COMMON_ERROR_RESPONSE_SCHEMA,
32
+ 403: COMMON_ERROR_RESPONSE_SCHEMA,
33
+ 404: COMMON_ERROR_RESPONSE_SCHEMA,
34
+ },
35
+ });
20
36
  //# sourceMappingURL=taskContracts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taskContracts.js","sourceRoot":"","sources":["../../src/apiContract/taskContracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAA;AACvE,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,GAEvB,MAAM,cAAc,CAAA;AAErB,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC;IAC/C,YAAY,EAAE,CAAC,MAAyB,EAAE,EAAE,CAAC,cAAc,MAAM,CAAC,OAAO,QAAQ;IACjF,OAAO,EAAE,YAAY;IACrB,WAAW,EAAE,8CAA8C;IAC3D,mBAAmB,EAAE,4BAA4B;IACjD,uBAAuB,EAAE,oBAAoB;IAC7C,kBAAkB,EAAE,2BAA2B;IAC/C,yBAAyB,EAAE,sBAAsB;IACjD,2BAA2B,EAAE;QAC3B,GAAG,EAAE,sBAAsB;QAC3B,GAAG,EAAE,4BAA4B;QACjC,GAAG,EAAE,4BAA4B;QACjC,GAAG,EAAE,4BAA4B;KAClC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"taskContracts.js","sourceRoot":"","sources":["../../src/apiContract/taskContracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAA;AACvE,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EAEtB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,GAErB,MAAM,cAAc,CAAA;AAErB,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC;IAC/C,YAAY,EAAE,CAAC,MAAyB,EAAE,EAAE,CAAC,cAAc,MAAM,CAAC,OAAO,QAAQ;IACjF,OAAO,EAAE,YAAY;IACrB,WAAW,EAAE,8CAA8C;IAC3D,mBAAmB,EAAE,4BAA4B;IACjD,uBAAuB,EAAE,oBAAoB;IAC7C,kBAAkB,EAAE,2BAA2B;IAC/C,yBAAyB,EAAE,sBAAsB;IACjD,2BAA2B,EAAE;QAC3B,GAAG,EAAE,sBAAsB;QAC3B,GAAG,EAAE,4BAA4B;QACjC,GAAG,EAAE,4BAA4B;QACjC,GAAG,EAAE,4BAA4B;KAClC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;IAClD,YAAY,EAAE,CAAC,MAAwB,EAAE,EAAE,CAAC,cAAc,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,MAAM,EAAE;IACjG,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,aAAa;IACtB,WAAW,EAAE,gBAAgB;IAC7B,mBAAmB,EAAE,4BAA4B;IACjD,uBAAuB,EAAE,kBAAkB;IAC3C,iBAAiB,EAAE,gBAAgB;IACnC,yBAAyB,EAAE,oBAAoB;IAC/C,2BAA2B,EAAE;QAC3B,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,4BAA4B;QACjC,GAAG,EAAE,4BAA4B;QACjC,GAAG,EAAE,4BAA4B;KAClC;CACF,CAAC,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { type ConsumerMessageSchema, type PublisherMessageSchema } from '@message-queue-toolkit/schemas';
2
2
  import { z } from 'zod/v4';
3
3
  export declare const MAESTRO_TASK_TOPIC = "maestro-task";
4
+ export type TaskAssignment = z.infer<typeof TASK_ASSIGNMENT_SCHEMA>;
4
5
  /**
5
6
  * Payload schemas
6
7
  */
@@ -24,7 +25,6 @@ export declare const TASK: z.ZodObject<{
24
25
  itemId: z.ZodOptional<z.ZodNullable<z.ZodGUID>>;
25
26
  dueDate: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
26
27
  }, z.core.$strip>;
27
- export type Task = z.infer<typeof TASK>;
28
28
  export declare const TASK_CREATED_EVENT_PAYLOAD_SCHEMA: z.ZodObject<{
29
29
  task: z.ZodObject<{
30
30
  id: z.ZodGUID;
@@ -47,13 +47,55 @@ export declare const TASK_CREATED_EVENT_PAYLOAD_SCHEMA: z.ZodObject<{
47
47
  dueDate: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
48
48
  }, z.core.$strip>;
49
49
  }, z.core.$strip>;
50
- declare const TASK_ASSIGNMENT_SCHEMA: z.ZodObject<{
50
+ export declare const BASE_TASK_ASSIGNMENT_SCHEMA: z.ZodObject<{
51
51
  languageId: z.ZodGUID;
52
52
  userIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
53
53
  userGroupIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
54
54
  unitIds: z.ZodArray<z.ZodGUID>;
55
55
  }, z.core.$strip>;
56
- export type TaskAssignment = z.infer<typeof TASK_ASSIGNMENT_SCHEMA>;
56
+ export declare const TASK_ASSIGNMENT_SCHEMA: z.ZodObject<{
57
+ languageId: z.ZodGUID;
58
+ userIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
59
+ userGroupIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
60
+ unitIds: z.ZodArray<z.ZodGUID>;
61
+ }, z.core.$strip>;
62
+ export declare const UPDATED_TASK_ASSIGNMENT_SCHEMA: z.ZodObject<{
63
+ languageId: z.ZodGUID;
64
+ userIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
65
+ userGroupIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
66
+ }, z.core.$strip>;
67
+ export declare const UPDATED_TASK: z.ZodObject<{
68
+ id: z.ZodGUID;
69
+ updatedTitle: z.ZodNullable<z.ZodString>;
70
+ updatedDueDate: z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>>;
71
+ addedTaskAssignments: z.ZodArray<z.ZodObject<{
72
+ languageId: z.ZodGUID;
73
+ userIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
74
+ userGroupIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
75
+ }, z.core.$strip>>;
76
+ removedTaskAssignments: z.ZodArray<z.ZodObject<{
77
+ languageId: z.ZodGUID;
78
+ userIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
79
+ userGroupIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
80
+ }, z.core.$strip>>;
81
+ }, z.core.$strip>;
82
+ export declare const TASK_UPDATED_EVENT_PAYLOAD_SCHEMA: z.ZodObject<{
83
+ task: z.ZodObject<{
84
+ id: z.ZodGUID;
85
+ updatedTitle: z.ZodNullable<z.ZodString>;
86
+ updatedDueDate: z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>>;
87
+ addedTaskAssignments: z.ZodArray<z.ZodObject<{
88
+ languageId: z.ZodGUID;
89
+ userIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
90
+ userGroupIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
91
+ }, z.core.$strip>>;
92
+ removedTaskAssignments: z.ZodArray<z.ZodObject<{
93
+ languageId: z.ZodGUID;
94
+ userIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
95
+ userGroupIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
96
+ }, z.core.$strip>>;
97
+ }, z.core.$strip>;
98
+ }, z.core.$strip>;
57
99
  export declare const TASK_ACTION_CREATE_TASK_EVENT_PAYLOAD_SCHEMA: z.ZodObject<{
58
100
  tenant: z.ZodEnum<{
59
101
  expert: "expert";
@@ -151,6 +193,65 @@ export declare const TaskEvents: {
151
193
  }>>;
152
194
  }, z.core.$strip>;
153
195
  };
196
+ 'task.updated': {
197
+ snsTopic: string;
198
+ producedBy: string[];
199
+ consumerSchema: z.ZodObject<{
200
+ id: z.ZodString;
201
+ timestamp: z.ZodISODateTime;
202
+ type: z.ZodLiteral<"task.updated">;
203
+ deduplicationId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
204
+ deduplicationOptions: z.ZodOptional<z.ZodNullable<typeof import("@message-queue-toolkit/schemas").MESSAGE_DEDUPLICATION_OPTIONS_SCHEMA>>;
205
+ payload: z.ZodObject<{
206
+ task: z.ZodObject<{
207
+ id: z.ZodGUID;
208
+ updatedTitle: z.ZodNullable<z.ZodString>;
209
+ updatedDueDate: z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>>;
210
+ addedTaskAssignments: z.ZodArray<z.ZodObject<{
211
+ languageId: z.ZodGUID;
212
+ userIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
213
+ userGroupIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
214
+ }, z.core.$strip>>;
215
+ removedTaskAssignments: z.ZodArray<z.ZodObject<{
216
+ languageId: z.ZodGUID;
217
+ userIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
218
+ userGroupIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
219
+ }, z.core.$strip>>;
220
+ }, z.core.$strip>;
221
+ }, z.core.$strip>;
222
+ metadata: import("@message-queue-toolkit/schemas").MetadataObject;
223
+ }, z.core.$strip>;
224
+ publisherSchema: z.ZodObject<{
225
+ id: z.ZodOptional<z.ZodString>;
226
+ timestamp: z.ZodOptional<z.ZodISODateTime>;
227
+ type: z.ZodLiteral<"task.updated">;
228
+ deduplicationId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
229
+ deduplicationOptions: z.ZodOptional<z.ZodNullable<typeof import("@message-queue-toolkit/schemas").MESSAGE_DEDUPLICATION_OPTIONS_SCHEMA>>;
230
+ payload: z.ZodObject<{
231
+ task: z.ZodObject<{
232
+ id: z.ZodGUID;
233
+ updatedTitle: z.ZodNullable<z.ZodString>;
234
+ updatedDueDate: z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>>;
235
+ addedTaskAssignments: z.ZodArray<z.ZodObject<{
236
+ languageId: z.ZodGUID;
237
+ userIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
238
+ userGroupIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
239
+ }, z.core.$strip>>;
240
+ removedTaskAssignments: z.ZodArray<z.ZodObject<{
241
+ languageId: z.ZodGUID;
242
+ userIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
243
+ userGroupIds: z.ZodOptional<z.ZodArray<z.ZodGUID>>;
244
+ }, z.core.$strip>>;
245
+ }, z.core.$strip>;
246
+ }, z.core.$strip>;
247
+ metadata: z.ZodOptional<z.ZodObject<{
248
+ schemaVersion: z.ZodOptional<z.ZodString>;
249
+ producedBy: z.ZodOptional<z.ZodString>;
250
+ originatedFrom: z.ZodOptional<z.ZodString>;
251
+ correlationId: z.ZodOptional<z.ZodString>;
252
+ }>>;
253
+ }, z.core.$strip>;
254
+ };
154
255
  'task.action.create_task': {
155
256
  producedBy: string[];
156
257
  consumerSchema: z.ZodObject<{
@@ -224,11 +325,14 @@ export declare const TaskEvents: {
224
325
  }, z.core.$strip>;
225
326
  };
226
327
  };
328
+ export type Task = z.infer<typeof TASK>;
329
+ export type UpdatedTask = z.infer<typeof UPDATED_TASK>;
227
330
  /**
228
331
  * Event types
229
332
  */
230
333
  export type TaskCreatedConsumerEvent = ConsumerMessageSchema<(typeof TaskEvents)['task.created']>;
231
334
  export type TaskCreatedPublisherEvent = PublisherMessageSchema<(typeof TaskEvents)['task.created']>;
335
+ export type TaskUpdatedConsumerEvent = ConsumerMessageSchema<(typeof TaskEvents)['task.updated']>;
336
+ export type TaskUpdatedPublisherEvent = PublisherMessageSchema<(typeof TaskEvents)['task.updated']>;
232
337
  export type TaskActionCreateTaskConsumerEvent = ConsumerMessageSchema<(typeof TaskEvents)['task.action.create_task']>;
233
338
  export type TaskActionCreateTaskPublisherEvent = PublisherMessageSchema<(typeof TaskEvents)['task.action.create_task']>;
234
- export {};
@@ -2,6 +2,7 @@ import { TENANT } from '@lokalise/maestro-common';
2
2
  import { enrichMessageSchemaWithBase, } from '@message-queue-toolkit/schemas';
3
3
  import { z } from 'zod/v4';
4
4
  import { GROUP_ID, TASK_ACTOR, TASK_STATUS, TASK_TYPE } from '../common.js';
5
+ import { uniqueLanguageIdsRefinement, userOrGroupIdsRefinement } from '../refinements.js';
5
6
  export const MAESTRO_TASK_TOPIC = 'maestro-task';
6
7
  /**
7
8
  * Payload schemas
@@ -21,8 +22,7 @@ export const TASK = z.object({
21
22
  export const TASK_CREATED_EVENT_PAYLOAD_SCHEMA = z.object({
22
23
  task: TASK.describe('Task that was created'),
23
24
  });
24
- const TASK_ASSIGNMENT_SCHEMA = z
25
- .object({
25
+ export const BASE_TASK_ASSIGNMENT_SCHEMA = z.object({
26
26
  languageId: z.guid().describe('Language of the assignment'),
27
27
  userIds: z
28
28
  .optional(z.array(z.guid()).nonempty())
@@ -34,10 +34,40 @@ const TASK_ASSIGNMENT_SCHEMA = z
34
34
  .array(z.guid())
35
35
  .nonempty({ message: 'unitIds must contain at least 1 item' })
36
36
  .describe('List of translation/segment IDs to include in the assignment'),
37
+ });
38
+ export const TASK_ASSIGNMENT_SCHEMA = BASE_TASK_ASSIGNMENT_SCHEMA.refine((assignment) => userOrGroupIdsRefinement(assignment), { message: 'At least one of userIds or userGroupIds must be provided', path: ['userIds'] }).describe('Sub-task that targets one and only one language');
39
+ export const UPDATED_TASK_ASSIGNMENT_SCHEMA = BASE_TASK_ASSIGNMENT_SCHEMA.extend({
40
+ languageId: BASE_TASK_ASSIGNMENT_SCHEMA.shape.languageId.describe('Language of the updated assignment'),
41
+ userIds: BASE_TASK_ASSIGNMENT_SCHEMA.shape.userIds.describe('User IDs to assign to the updated assignment'),
42
+ userGroupIds: BASE_TASK_ASSIGNMENT_SCHEMA.shape.userGroupIds.describe('User group IDs to assign to the updated assignment'),
43
+ })
44
+ .omit({
45
+ unitIds: true,
37
46
  })
38
- .refine((assignment) => (assignment.userIds && assignment.userIds.length > 0) ||
39
- (assignment.userGroupIds && assignment.userGroupIds.length > 0), { message: 'At least one of userIds or userGroupIds must be provided', path: ['userIds'] })
40
- .describe('Sub-task that targets one and only one language');
47
+ .refine((assignment) => userOrGroupIdsRefinement(assignment), {
48
+ message: 'At least one of userIds or userGroupIds must be provided',
49
+ path: ['userIds'],
50
+ })
51
+ .describe('Sub-task update that targets one and only one language');
52
+ export const UPDATED_TASK = TASK.pick({
53
+ id: true,
54
+ }).extend({
55
+ updatedTitle: TASK.shape.title
56
+ .nullable()
57
+ .describe('Updated title of the task if it has changed, or null if it has not changed'),
58
+ updatedDueDate: TASK.shape.dueDate
59
+ .nullable()
60
+ .describe('Updated due date of the task if it has changed, or null if it has not changed'),
61
+ addedTaskAssignments: z
62
+ .array(UPDATED_TASK_ASSIGNMENT_SCHEMA)
63
+ .describe('Task assignments added to the task or null if none added'),
64
+ removedTaskAssignments: z
65
+ .array(UPDATED_TASK_ASSIGNMENT_SCHEMA)
66
+ .describe('Task assignments removed from the task or null if none removed'),
67
+ });
68
+ export const TASK_UPDATED_EVENT_PAYLOAD_SCHEMA = z.object({
69
+ task: UPDATED_TASK.describe('Task that was updated'),
70
+ });
41
71
  export const TASK_ACTION_CREATE_TASK_EVENT_PAYLOAD_SCHEMA = z
42
72
  .object({
43
73
  tenant: TENANT.describe('Tenant that is commanding task creation'),
@@ -63,8 +93,10 @@ export const TASK_ACTION_CREATE_TASK_EVENT_PAYLOAD_SCHEMA = z
63
93
  .describe('List of task assignments, each targeting one different language'),
64
94
  dueDate: z.iso.datetime().nullish().describe('Due date of the task'),
65
95
  })
66
- .refine((payload) => new Set(payload.taskAssignments.map((assignment) => assignment.languageId)).size ===
67
- payload.taskAssignments.length, { message: 'languageId must be unique across taskAssignments', path: ['taskAssignments'] });
96
+ .refine(({ taskAssignments }) => uniqueLanguageIdsRefinement(taskAssignments), {
97
+ message: 'languageId must be unique across taskAssignments',
98
+ path: ['taskAssignments'],
99
+ });
68
100
  /**
69
101
  * Event definitions
70
102
  */
@@ -76,6 +108,13 @@ export const TaskEvents = {
76
108
  snsTopic: MAESTRO_TASK_TOPIC,
77
109
  producedBy: ['maestro'],
78
110
  },
111
+ 'task.updated': {
112
+ ...enrichMessageSchemaWithBase('task.updated', TASK_UPDATED_EVENT_PAYLOAD_SCHEMA, {
113
+ description: 'Indicates that a task was updated',
114
+ }),
115
+ snsTopic: MAESTRO_TASK_TOPIC,
116
+ producedBy: ['maestro'],
117
+ },
79
118
  'task.action.create_task': {
80
119
  ...enrichMessageSchemaWithBase('task.action.create_task', TASK_ACTION_CREATE_TASK_EVENT_PAYLOAD_SCHEMA, {
81
120
  description: 'Commands to create a task',
@@ -1 +1 @@
1
- {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/event-schemas/task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/event-schemas/task.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { TaskAssignment } from './event-schemas/task.js';
2
+ export declare const uniqueLanguageIdsRefinement: (taskAssignments?: TaskAssignment[]) => boolean;
3
+ export declare const allKeysEmptyRefinement: <T>(obj: T & Record<string, unknown>) => boolean;
4
+ export declare const userOrGroupIdsRefinement: <T extends {
5
+ userIds?: string[];
6
+ userGroupIds?: string[];
7
+ }>(assignment: T) => boolean;
@@ -0,0 +1,12 @@
1
+ export const uniqueLanguageIdsRefinement = (taskAssignments) => {
2
+ if (!taskAssignments || taskAssignments.length === 0) {
3
+ return true;
4
+ }
5
+ const ids = taskAssignments.map((assignment) => assignment.languageId);
6
+ return new Set(ids).size === ids.length;
7
+ };
8
+ export const allKeysEmptyRefinement = (obj) => {
9
+ return Object.values(obj).every((value) => value === undefined);
10
+ };
11
+ export const userOrGroupIdsRefinement = (assignment) => (assignment?.userIds?.length ?? 0) > 0 || (assignment?.userGroupIds?.length ?? 0) > 0;
12
+ //# sourceMappingURL=refinements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refinements.js","sourceRoot":"","sources":["../src/refinements.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,eAAkC,EAAE,EAAE;IAChF,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;IAEtE,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,CAAA;AACzC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAI,GAAgC,EAAE,EAAE;IAC5E,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAA;AACjE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,UAAa,EACJ,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lokalise/maestro-nextgen-tenant-lib",
3
- "version": "2.0.2",
3
+ "version": "3.1.0",
4
4
  "license": "Apache-2.0",
5
5
  "homepage": "https://github.com/lokalise/maestro",
6
6
  "description": "This library provides objects, types and zod schemas for NextGen tenant to work with Maestro",