@blickwerk/n8n-nodes-microsoft-planner 1.5.5 → 1.6.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.
Files changed (40) hide show
  1. package/LICENSE.md +21 -21
  2. package/README.md +527 -459
  3. package/dist/credentials/MicrosoftPlannerOAuth2Api.credentials.d.ts +2 -2
  4. package/dist/credentials/MicrosoftPlannerOAuth2Api.credentials.js +9 -28
  5. package/dist/credentials/MicrosoftPlannerOAuth2Api.credentials.js.map +1 -0
  6. package/dist/nodes/MicrosoftPlanner/BucketDescription.js +30 -23
  7. package/dist/nodes/MicrosoftPlanner/BucketDescription.js.map +1 -0
  8. package/dist/nodes/MicrosoftPlanner/CommentDescription.js +10 -14
  9. package/dist/nodes/MicrosoftPlanner/CommentDescription.js.map +1 -0
  10. package/dist/nodes/MicrosoftPlanner/GenericFunctions.d.ts +15 -18
  11. package/dist/nodes/MicrosoftPlanner/GenericFunctions.js +222 -70
  12. package/dist/nodes/MicrosoftPlanner/GenericFunctions.js.map +1 -0
  13. package/dist/nodes/MicrosoftPlanner/MicrosoftPlanner.node.d.ts +6 -10
  14. package/dist/nodes/MicrosoftPlanner/MicrosoftPlanner.node.js +100 -826
  15. package/dist/nodes/MicrosoftPlanner/MicrosoftPlanner.node.js.map +1 -0
  16. package/dist/nodes/MicrosoftPlanner/MicrosoftPlanner.node.json +18 -0
  17. package/dist/nodes/MicrosoftPlanner/PlanDescription.js +207 -57
  18. package/dist/nodes/MicrosoftPlanner/PlanDescription.js.map +1 -0
  19. package/dist/nodes/MicrosoftPlanner/SharedFields.d.ts +10 -0
  20. package/dist/nodes/MicrosoftPlanner/SharedFields.js +316 -0
  21. package/dist/nodes/MicrosoftPlanner/SharedFields.js.map +1 -0
  22. package/dist/nodes/MicrosoftPlanner/TaskDescription.d.ts +1 -1
  23. package/dist/nodes/MicrosoftPlanner/TaskDescription.js +226 -583
  24. package/dist/nodes/MicrosoftPlanner/TaskDescription.js.map +1 -0
  25. package/dist/nodes/MicrosoftPlanner/actions/bucket.d.ts +2 -0
  26. package/dist/nodes/MicrosoftPlanner/actions/bucket.js +72 -0
  27. package/dist/nodes/MicrosoftPlanner/actions/bucket.js.map +1 -0
  28. package/dist/nodes/MicrosoftPlanner/actions/comment.d.ts +2 -0
  29. package/dist/nodes/MicrosoftPlanner/actions/comment.js +100 -0
  30. package/dist/nodes/MicrosoftPlanner/actions/comment.js.map +1 -0
  31. package/dist/nodes/MicrosoftPlanner/actions/plan.d.ts +4 -0
  32. package/dist/nodes/MicrosoftPlanner/actions/plan.js +116 -0
  33. package/dist/nodes/MicrosoftPlanner/actions/plan.js.map +1 -0
  34. package/dist/nodes/MicrosoftPlanner/actions/task.d.ts +4 -0
  35. package/dist/nodes/MicrosoftPlanner/actions/task.js +392 -0
  36. package/dist/nodes/MicrosoftPlanner/actions/task.js.map +1 -0
  37. package/dist/nodes/MicrosoftPlanner/planner.svg +51 -51
  38. package/dist/package.json +60 -0
  39. package/dist/tsconfig.tsbuildinfo +1 -0
  40. package/package.json +60 -63
@@ -1,35 +1,45 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CATEGORY_COLORS = exports.GRAPH_BASE_URL = void 0;
3
4
  exports.microsoftApiRequest = microsoftApiRequest;
4
5
  exports.microsoftApiRequestAllItems = microsoftApiRequestAllItems;
5
6
  exports.cleanETag = cleanETag;
7
+ exports.patchWithETag = patchWithETag;
8
+ exports.deleteWithETag = deleteWithETag;
6
9
  exports.formatDateTime = formatDateTime;
7
10
  exports.getUserIdByEmail = getUserIdByEmail;
11
+ exports.resolveUserIds = resolveUserIds;
12
+ exports.parseList = parseList;
8
13
  exports.parseAssignments = parseAssignments;
9
14
  exports.createAssignmentsObject = createAssignmentsObject;
10
15
  exports.encodeReferenceKey = encodeReferenceKey;
16
+ exports.decodeReferenceKey = decodeReferenceKey;
11
17
  exports.generateGuid = generateGuid;
12
18
  exports.formatCommentContent = formatCommentContent;
19
+ exports.parseJson = parseJson;
20
+ exports.getPlanGroupId = getPlanGroupId;
13
21
  const n8n_workflow_1 = require("n8n-workflow");
22
+ exports.GRAPH_BASE_URL = 'https://graph.microsoft.com/v1.0';
23
+ const CREDENTIAL_NAME = 'microsoftPlannerOAuth2Api';
24
+ const MAX_ETAG_ATTEMPTS = 3;
14
25
  async function microsoftApiRequest(method, resource, body = {}, qs = {}, uri, headers = {}) {
15
26
  const options = {
27
+ method,
28
+ url: uri !== null && uri !== void 0 ? uri : `${exports.GRAPH_BASE_URL}${resource}`,
29
+ json: true,
16
30
  headers: {
17
31
  'Content-Type': 'application/json',
32
+ ...headers,
18
33
  },
19
- method,
20
- body,
21
- qs,
22
- url: uri || `https://graph.microsoft.com/v1.0${resource}`,
23
- json: true,
24
34
  };
35
+ if (Object.keys(body).length !== 0) {
36
+ options.body = body;
37
+ }
38
+ if (Object.keys(qs).length !== 0) {
39
+ options.qs = qs;
40
+ }
25
41
  try {
26
- if (Object.keys(headers).length !== 0) {
27
- options.headers = Object.assign({}, options.headers, headers);
28
- }
29
- if (Object.keys(body).length === 0) {
30
- delete options.body;
31
- }
32
- return await this.helpers.httpRequestWithAuthentication.call(this, 'microsoftPlannerOAuth2Api', options);
42
+ return await this.helpers.httpRequestWithAuthentication.call(this, CREDENTIAL_NAME, options);
33
43
  }
34
44
  catch (error) {
35
45
  throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
@@ -43,8 +53,11 @@ async function microsoftApiRequestAllItems(propertyName, method, endpoint, body
43
53
  const activeQuery = uri ? {} : query;
44
54
  responseData = await microsoftApiRequest.call(this, method, endpoint, body, activeQuery, uri);
45
55
  uri = responseData['@odata.nextLink'];
46
- returnData.push.apply(returnData, responseData[propertyName]);
47
- } while (responseData['@odata.nextLink'] !== undefined);
56
+ const page = responseData[propertyName];
57
+ if (Array.isArray(page)) {
58
+ returnData.push(...page);
59
+ }
60
+ } while (uri !== undefined);
48
61
  return returnData;
49
62
  }
50
63
  function cleanETag(eTag) {
@@ -53,56 +66,149 @@ function cleanETag(eTag) {
53
66
  }
54
67
  return eTag;
55
68
  }
69
+ function isPreconditionFailed(error) {
70
+ const httpCode = error === null || error === void 0 ? void 0 : error.httpCode;
71
+ return httpCode === '412';
72
+ }
73
+ async function patchWithETag(endpoint, buildBody) {
74
+ for (let attempt = 1;; attempt++) {
75
+ const current = (await microsoftApiRequest.call(this, 'GET', endpoint));
76
+ const body = await buildBody(current);
77
+ if (Object.keys(body).length === 0) {
78
+ return current;
79
+ }
80
+ try {
81
+ const response = (await microsoftApiRequest.call(this, 'PATCH', endpoint, body, {}, undefined, {
82
+ 'If-Match': cleanETag(current['@odata.etag']),
83
+ Prefer: 'return=representation',
84
+ }));
85
+ if (response && typeof response === 'object' && Object.keys(response).length > 0) {
86
+ return response;
87
+ }
88
+ return (await microsoftApiRequest.call(this, 'GET', endpoint));
89
+ }
90
+ catch (error) {
91
+ if (attempt < MAX_ETAG_ATTEMPTS && isPreconditionFailed(error)) {
92
+ continue;
93
+ }
94
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
95
+ }
96
+ }
97
+ }
98
+ async function deleteWithETag(endpoint) {
99
+ for (let attempt = 1;; attempt++) {
100
+ const current = (await microsoftApiRequest.call(this, 'GET', endpoint));
101
+ try {
102
+ await microsoftApiRequest.call(this, 'DELETE', endpoint, {}, {}, undefined, {
103
+ 'If-Match': cleanETag(current['@odata.etag']),
104
+ });
105
+ return;
106
+ }
107
+ catch (error) {
108
+ if (attempt < MAX_ETAG_ATTEMPTS && isPreconditionFailed(error)) {
109
+ continue;
110
+ }
111
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
112
+ }
113
+ }
114
+ }
56
115
  function formatDateTime(dateTime) {
57
- if (!dateTime) {
116
+ var _a;
117
+ if (dateTime === undefined || dateTime === null || dateTime === '') {
58
118
  return undefined;
59
119
  }
60
- // If already in ISO format with timezone, return as is
61
- if (dateTime.includes('T') && (dateTime.endsWith('Z') || dateTime.includes('+'))) {
62
- return dateTime;
120
+ if (dateTime instanceof Date) {
121
+ return isNaN(dateTime.getTime()) ? undefined : dateTime.toISOString();
63
122
  }
64
- // Convert to ISO 8601 format with UTC timezone
65
- const date = new Date(dateTime);
123
+ if (typeof dateTime === 'object') {
124
+ const luxonLike = dateTime;
125
+ if (typeof luxonLike.toISO === 'function') {
126
+ const utc = (typeof luxonLike.toUTC === 'function' ? luxonLike.toUTC() : luxonLike);
127
+ return (_a = utc.toISO()) !== null && _a !== void 0 ? _a : undefined;
128
+ }
129
+ return undefined;
130
+ }
131
+ if (typeof dateTime === 'number') {
132
+ const date = new Date(dateTime);
133
+ return isNaN(date.getTime()) ? undefined : date.toISOString();
134
+ }
135
+ if (typeof dateTime !== 'string') {
136
+ return undefined;
137
+ }
138
+ const value = dateTime.trim();
139
+ if (/T.*(Z|[+-]\d{2}:?\d{2})$/i.test(value)) {
140
+ return value;
141
+ }
142
+ const date = new Date(value);
66
143
  if (isNaN(date.getTime())) {
67
144
  return undefined;
68
145
  }
69
146
  return date.toISOString();
70
147
  }
71
- async function getUserIdByEmail(email) {
72
- // 1. Check if it's already a UUID
73
- if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(email)) {
74
- return email;
148
+ const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
149
+ async function getUserIdByEmail(email, cache) {
150
+ var _a, _b;
151
+ const value = email.trim();
152
+ if (UUID_REGEX.test(value)) {
153
+ return value;
154
+ }
155
+ const cacheKey = value.toLowerCase();
156
+ const cached = cache === null || cache === void 0 ? void 0 : cache.get(cacheKey);
157
+ if (cached) {
158
+ return cached;
75
159
  }
160
+ let userId;
76
161
  try {
77
- // 2. Try direct lookup (fastest)
78
- const response = await microsoftApiRequest.call(this, 'GET', `/users/${encodeURIComponent(email)}`, {}, { $select: 'id' });
79
- return response.id;
162
+ const response = await microsoftApiRequest.call(this, 'GET', `/users/${encodeURIComponent(value)}`, {}, { $select: 'id' });
163
+ userId = response.id;
80
164
  }
81
- catch (error) {
82
- // 3. Try filter lookup (handling UPN mismatch or restricted visibility)
165
+ catch {
83
166
  try {
84
- const users = await microsoftApiRequestAllItems.call(this, 'value', 'GET', '/users', {}, { $filter: `mail eq '${email}' or userPrincipalName eq '${email}'`, $select: 'id' });
85
- if (users && users.length > 0) {
86
- return users[0].id;
87
- }
167
+ const escaped = value.replace(/'/g, "''");
168
+ const users = await microsoftApiRequest.call(this, 'GET', '/users', {}, {
169
+ $filter: `mail eq '${escaped}' or userPrincipalName eq '${escaped}'`,
170
+ $select: 'id',
171
+ $top: 1,
172
+ });
173
+ userId = (_b = (_a = users === null || users === void 0 ? void 0 : users.value) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.id;
88
174
  }
89
- catch (filterError) {
90
- // Ignore filter error, throw original or new error
175
+ catch {
91
176
  }
92
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Could not find user with email/ID: ${email}`);
93
177
  }
178
+ if (!userId) {
179
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Could not find user with email/ID: ${value}`, {
180
+ description: 'Make sure the user exists in your tenant and the credential has the User.ReadBasic.All permission (reconnect the credential after updating the node).',
181
+ });
182
+ }
183
+ cache === null || cache === void 0 ? void 0 : cache.set(cacheKey, userId);
184
+ return userId;
94
185
  }
95
- function parseAssignments(assignments) {
96
- if (Array.isArray(assignments)) {
97
- return assignments;
186
+ async function resolveUserIds(input, cache) {
187
+ const userIds = [];
188
+ for (const entry of parseList(input)) {
189
+ userIds.push(await getUserIdByEmail.call(this, entry, cache));
98
190
  }
99
- if (!assignments || assignments.trim() === '') {
191
+ return [...new Set(userIds)];
192
+ }
193
+ function parseList(value) {
194
+ if (value === undefined || value === null) {
100
195
  return [];
101
196
  }
102
- return assignments
103
- .split(',')
104
- .map((email) => email.trim())
105
- .filter((email) => email.length > 0);
197
+ const entries = Array.isArray(value) ? value : String(value).split(',');
198
+ return entries
199
+ .map((entry) => {
200
+ var _a, _b, _c, _d;
201
+ if (entry && typeof entry === 'object') {
202
+ const obj = entry;
203
+ return String((_d = (_c = (_b = (_a = obj.id) !== null && _a !== void 0 ? _a : obj.email) !== null && _b !== void 0 ? _b : obj.mail) !== null && _c !== void 0 ? _c : obj.userPrincipalName) !== null && _d !== void 0 ? _d : '');
204
+ }
205
+ return String(entry);
206
+ })
207
+ .map((entry) => entry.trim())
208
+ .filter((entry) => entry.length > 0);
209
+ }
210
+ function parseAssignments(assignments) {
211
+ return parseList(assignments);
106
212
  }
107
213
  function createAssignmentsObject(userIds) {
108
214
  const assignments = {};
@@ -114,48 +220,94 @@ function createAssignmentsObject(userIds) {
114
220
  }
115
221
  return assignments;
116
222
  }
117
- /**
118
- * Encodes a URL for use as a key in plannerExternalReferences.
119
- * OData requires keys in open types to be free of certain special characters like '.',
120
- * which must be encoded.
121
- */
122
223
  function encodeReferenceKey(url) {
123
- // Use encodeURI to handle spaces and % but preserve URI structure (/, ?, &, =)
124
- let encoded = encodeURI(url);
125
- // Manually replace OData forbidden characters that encodeURI preserves
126
- // Forbidden: . : % @ #
127
- // encodeURI handles % (encodes to %25 unless it's a valid escape sequence)
128
- encoded = encoded
224
+ return encodeURI(url)
129
225
  .replace(/\./g, '%2E')
130
226
  .replace(/:/g, '%3A')
131
227
  .replace(/@/g, '%40')
132
228
  .replace(/#/g, '%23');
133
- return encoded;
134
229
  }
135
- /**
136
- * Generates a GUID/UUID v4.
137
- * Useful for creating new ID keys for checklist items.
138
- */
230
+ function decodeReferenceKey(key) {
231
+ try {
232
+ return decodeURIComponent(key);
233
+ }
234
+ catch {
235
+ return key;
236
+ }
237
+ }
139
238
  function generateGuid() {
140
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
239
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
141
240
  const r = (Math.random() * 16) | 0;
142
241
  const v = c === 'x' ? r : (r & 0x3) | 0x8;
143
242
  return v.toString(16);
144
243
  });
145
244
  }
146
- /**
147
- * Formats comment content for Microsoft Graph API conversation posts.
148
- * Wraps plain text in HTML paragraph tags if needed.
149
- */
245
+ function escapeHtml(text) {
246
+ return text
247
+ .replace(/&/g, '&amp;')
248
+ .replace(/</g, '&lt;')
249
+ .replace(/>/g, '&gt;')
250
+ .replace(/"/g, '&quot;')
251
+ .replace(/'/g, '&#39;');
252
+ }
150
253
  function formatCommentContent(content, contentType = 'text') {
151
- // When we wrap text in HTML tags, we need to set contentType to 'html'
152
- // Otherwise the tags will be displayed as literal text in Planner
153
- const isHtml = contentType === 'html';
154
- const formattedContent = isHtml ? content : `<p>${content}</p>`;
254
+ const formattedContent = contentType === 'html' ? content : `<p>${escapeHtml(content).replace(/\r?\n/g, '<br>')}</p>`;
155
255
  return {
156
256
  body: {
157
- contentType: 'html', // Always use 'html' since we're wrapping in tags
257
+ contentType: 'html',
158
258
  content: formattedContent,
159
259
  },
160
260
  };
161
261
  }
262
+ function parseJson(value, fieldName, itemIndex) {
263
+ if (typeof value !== 'string') {
264
+ return value;
265
+ }
266
+ try {
267
+ return JSON.parse(value);
268
+ }
269
+ catch {
270
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Invalid JSON in "${fieldName}"`, {
271
+ itemIndex,
272
+ });
273
+ }
274
+ }
275
+ exports.CATEGORY_COLORS = {
276
+ category1: 'Pink',
277
+ category2: 'Red',
278
+ category3: 'Yellow',
279
+ category4: 'Green',
280
+ category5: 'Blue',
281
+ category6: 'Purple',
282
+ category7: 'Bronze',
283
+ category8: 'Lime',
284
+ category9: 'Aqua',
285
+ category10: 'Gray',
286
+ category11: 'Silver',
287
+ category12: 'Brown',
288
+ category13: 'Cranberry',
289
+ category14: 'Orange',
290
+ category15: 'Peach',
291
+ category16: 'Marigold',
292
+ category17: 'Light Green',
293
+ category18: 'Dark Green',
294
+ category19: 'Teal',
295
+ category20: 'Light Blue',
296
+ category21: 'Dark Blue',
297
+ category22: 'Lavender',
298
+ category23: 'Plum',
299
+ category24: 'Light Gray',
300
+ category25: 'Dark Gray',
301
+ };
302
+ async function getPlanGroupId(planId) {
303
+ const plan = (await microsoftApiRequest.call(this, 'GET', `/planner/plans/${planId}`));
304
+ const container = plan.container;
305
+ if ((container === null || container === void 0 ? void 0 : container.containerId) && (!container.type || container.type === 'group')) {
306
+ return container.containerId;
307
+ }
308
+ if (!container && plan.owner) {
309
+ return plan.owner;
310
+ }
311
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Comments are only supported for plans that belong to a Microsoft 365 group');
312
+ }
313
+ //# sourceMappingURL=GenericFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../nodes/MicrosoftPlanner/GenericFunctions.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,13 @@
1
- import { IExecuteFunctions, ILoadOptionsFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
1
+ import type { IExecuteFunctions, ILoadOptionsFunctions, INodeExecutionData, INodeListSearchResult, INodePropertyOptions, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
2
  export declare class MicrosoftPlanner implements INodeType {
3
3
  description: INodeTypeDescription;
4
4
  methods: {
5
5
  listSearch: {
6
- getBuckets(this: ILoadOptionsFunctions): Promise<{
7
- results: any;
8
- }>;
9
- getTasks(this: ILoadOptionsFunctions): Promise<{
10
- results: any;
11
- }>;
12
- getGroups(this: ILoadOptionsFunctions): Promise<{
13
- results: any;
14
- }>;
6
+ getBuckets(this: ILoadOptionsFunctions, filter?: string): Promise<INodeListSearchResult>;
7
+ getGroups(this: ILoadOptionsFunctions, filter?: string): Promise<INodeListSearchResult>;
8
+ };
9
+ loadOptions: {
10
+ getCategories(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
15
11
  };
16
12
  };
17
13
  execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;