@blickwerk/n8n-nodes-microsoft-planner 1.4.0 → 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.
- package/LICENSE.md +1 -1
- package/README.md +233 -30
- package/dist/credentials/MicrosoftPlannerOAuth2Api.credentials.d.ts +2 -2
- package/dist/credentials/MicrosoftPlannerOAuth2Api.credentials.js +11 -29
- package/dist/credentials/MicrosoftPlannerOAuth2Api.credentials.js.map +1 -0
- package/dist/nodes/MicrosoftPlanner/BucketDescription.d.ts +3 -0
- package/dist/nodes/MicrosoftPlanner/BucketDescription.js +180 -0
- package/dist/nodes/MicrosoftPlanner/BucketDescription.js.map +1 -0
- package/dist/nodes/MicrosoftPlanner/CommentDescription.d.ts +3 -0
- package/dist/nodes/MicrosoftPlanner/CommentDescription.js +156 -0
- package/dist/nodes/MicrosoftPlanner/CommentDescription.js.map +1 -0
- package/dist/nodes/MicrosoftPlanner/GenericFunctions.d.ts +19 -6
- package/dist/nodes/MicrosoftPlanner/GenericFunctions.js +251 -34
- package/dist/nodes/MicrosoftPlanner/GenericFunctions.js.map +1 -0
- package/dist/nodes/MicrosoftPlanner/MicrosoftPlanner.node.d.ts +6 -7
- package/dist/nodes/MicrosoftPlanner/MicrosoftPlanner.node.js +118 -279
- package/dist/nodes/MicrosoftPlanner/MicrosoftPlanner.node.js.map +1 -0
- package/dist/nodes/MicrosoftPlanner/MicrosoftPlanner.node.json +18 -0
- package/dist/nodes/MicrosoftPlanner/PlanDescription.d.ts +3 -0
- package/dist/nodes/MicrosoftPlanner/PlanDescription.js +435 -0
- package/dist/nodes/MicrosoftPlanner/PlanDescription.js.map +1 -0
- package/dist/nodes/MicrosoftPlanner/SharedFields.d.ts +10 -0
- package/dist/nodes/MicrosoftPlanner/SharedFields.js +316 -0
- package/dist/nodes/MicrosoftPlanner/SharedFields.js.map +1 -0
- package/dist/nodes/MicrosoftPlanner/TaskDescription.d.ts +1 -1
- package/dist/nodes/MicrosoftPlanner/TaskDescription.js +271 -177
- package/dist/nodes/MicrosoftPlanner/TaskDescription.js.map +1 -0
- package/dist/nodes/MicrosoftPlanner/actions/bucket.d.ts +2 -0
- package/dist/nodes/MicrosoftPlanner/actions/bucket.js +72 -0
- package/dist/nodes/MicrosoftPlanner/actions/bucket.js.map +1 -0
- package/dist/nodes/MicrosoftPlanner/actions/comment.d.ts +2 -0
- package/dist/nodes/MicrosoftPlanner/actions/comment.js +100 -0
- package/dist/nodes/MicrosoftPlanner/actions/comment.js.map +1 -0
- package/dist/nodes/MicrosoftPlanner/actions/plan.d.ts +4 -0
- package/dist/nodes/MicrosoftPlanner/actions/plan.js +116 -0
- package/dist/nodes/MicrosoftPlanner/actions/plan.js.map +1 -0
- package/dist/nodes/MicrosoftPlanner/actions/task.d.ts +4 -0
- package/dist/nodes/MicrosoftPlanner/actions/task.js +392 -0
- package/dist/nodes/MicrosoftPlanner/actions/task.js.map +1 -0
- package/dist/package.json +60 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +22 -20
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.executeBucket = executeBucket;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const GenericFunctions_1 = require("../GenericFunctions");
|
|
6
|
+
async function create(i) {
|
|
7
|
+
const planId = this.getNodeParameter('planId', i);
|
|
8
|
+
const name = this.getNodeParameter('name', i);
|
|
9
|
+
const upsert = this.getNodeParameter('upsert', i, false);
|
|
10
|
+
const additionalFields = this.getNodeParameter('additionalFields', i, {});
|
|
11
|
+
if (upsert) {
|
|
12
|
+
const buckets = await GenericFunctions_1.microsoftApiRequestAllItems.call(this, 'value', 'GET', `/planner/plans/${planId}/buckets`);
|
|
13
|
+
const existingBucket = buckets.find((bucket) => bucket.name === name);
|
|
14
|
+
if (existingBucket) {
|
|
15
|
+
return existingBucket;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
const body = { name, planId };
|
|
19
|
+
if (additionalFields.orderHint) {
|
|
20
|
+
body.orderHint = additionalFields.orderHint;
|
|
21
|
+
}
|
|
22
|
+
return (await GenericFunctions_1.microsoftApiRequest.call(this, 'POST', '/planner/buckets', body));
|
|
23
|
+
}
|
|
24
|
+
async function get(i) {
|
|
25
|
+
const bucketId = this.getNodeParameter('bucketId', i);
|
|
26
|
+
return (await GenericFunctions_1.microsoftApiRequest.call(this, 'GET', `/planner/buckets/${bucketId}`));
|
|
27
|
+
}
|
|
28
|
+
async function getAll(i) {
|
|
29
|
+
const planId = this.getNodeParameter('planId', i);
|
|
30
|
+
const additionalFields = this.getNodeParameter('additionalFields', i, {});
|
|
31
|
+
const qs = {};
|
|
32
|
+
if (additionalFields.select) {
|
|
33
|
+
qs.$select = additionalFields.select;
|
|
34
|
+
}
|
|
35
|
+
return await GenericFunctions_1.microsoftApiRequestAllItems.call(this, 'value', 'GET', `/planner/plans/${planId}/buckets`, {}, qs);
|
|
36
|
+
}
|
|
37
|
+
async function update(i) {
|
|
38
|
+
const bucketId = this.getNodeParameter('bucketId', i);
|
|
39
|
+
const updateFields = this.getNodeParameter('updateFields', i, {});
|
|
40
|
+
const body = {};
|
|
41
|
+
if (updateFields.name) {
|
|
42
|
+
body.name = updateFields.name;
|
|
43
|
+
}
|
|
44
|
+
if (updateFields.orderHint) {
|
|
45
|
+
body.orderHint = updateFields.orderHint;
|
|
46
|
+
}
|
|
47
|
+
return await GenericFunctions_1.patchWithETag.call(this, `/planner/buckets/${bucketId}`, () => body);
|
|
48
|
+
}
|
|
49
|
+
async function remove(i) {
|
|
50
|
+
const bucketId = this.getNodeParameter('bucketId', i);
|
|
51
|
+
await GenericFunctions_1.deleteWithETag.call(this, `/planner/buckets/${bucketId}`);
|
|
52
|
+
return { success: true, bucketId };
|
|
53
|
+
}
|
|
54
|
+
async function executeBucket(operation, i) {
|
|
55
|
+
switch (operation) {
|
|
56
|
+
case 'create':
|
|
57
|
+
return await create.call(this, i);
|
|
58
|
+
case 'get':
|
|
59
|
+
return await get.call(this, i);
|
|
60
|
+
case 'getAll':
|
|
61
|
+
return await getAll.call(this, i);
|
|
62
|
+
case 'update':
|
|
63
|
+
return await update.call(this, i);
|
|
64
|
+
case 'delete':
|
|
65
|
+
return await remove.call(this, i);
|
|
66
|
+
default:
|
|
67
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unsupported bucket operation "${operation}"`, {
|
|
68
|
+
itemIndex: i,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=bucket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bucket.js","sourceRoot":"","sources":["../../../../nodes/MicrosoftPlanner/actions/bucket.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.executeComment = executeComment;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const GenericFunctions_1 = require("../GenericFunctions");
|
|
6
|
+
function getTaskId(i) {
|
|
7
|
+
return this.getNodeParameter('taskId', i, '', { extractValue: true });
|
|
8
|
+
}
|
|
9
|
+
async function startThread(groupId, task, post) {
|
|
10
|
+
const thread = (await GenericFunctions_1.microsoftApiRequest.call(this, 'POST', `/groups/${groupId}/threads`, {
|
|
11
|
+
topic: `Comments on task "${task.title}"`,
|
|
12
|
+
posts: [post],
|
|
13
|
+
}));
|
|
14
|
+
await GenericFunctions_1.patchWithETag.call(this, `/planner/tasks/${task.id}`, () => ({
|
|
15
|
+
conversationThreadId: thread.id,
|
|
16
|
+
}));
|
|
17
|
+
return thread;
|
|
18
|
+
}
|
|
19
|
+
async function create(i) {
|
|
20
|
+
const taskId = getTaskId.call(this, i);
|
|
21
|
+
const content = this.getNodeParameter('content', i);
|
|
22
|
+
const additionalFields = this.getNodeParameter('additionalFields', i, {});
|
|
23
|
+
const contentType = additionalFields.contentType || 'text';
|
|
24
|
+
const task = (await GenericFunctions_1.microsoftApiRequest.call(this, 'GET', `/planner/tasks/${taskId}`));
|
|
25
|
+
const groupId = await GenericFunctions_1.getPlanGroupId.call(this, task.planId);
|
|
26
|
+
const post = (0, GenericFunctions_1.formatCommentContent)(content, contentType);
|
|
27
|
+
let threadId = task.conversationThreadId;
|
|
28
|
+
let conversationId;
|
|
29
|
+
let newThread = false;
|
|
30
|
+
if (threadId) {
|
|
31
|
+
try {
|
|
32
|
+
await GenericFunctions_1.microsoftApiRequest.call(this, 'POST', `/groups/${groupId}/threads/${threadId}/reply`, {
|
|
33
|
+
post,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
if (error.httpCode !== '404') {
|
|
38
|
+
throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
|
|
39
|
+
}
|
|
40
|
+
threadId = undefined;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (!threadId) {
|
|
44
|
+
const thread = await startThread.call(this, groupId, task, post);
|
|
45
|
+
threadId = thread.id;
|
|
46
|
+
conversationId = thread.conversationId;
|
|
47
|
+
newThread = true;
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
success: true,
|
|
51
|
+
taskId,
|
|
52
|
+
groupId,
|
|
53
|
+
...(conversationId ? { conversationId } : {}),
|
|
54
|
+
threadId,
|
|
55
|
+
newThread,
|
|
56
|
+
content,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
async function getAll(i) {
|
|
60
|
+
const taskId = getTaskId.call(this, i);
|
|
61
|
+
const additionalFields = this.getNodeParameter('additionalFields', i, {});
|
|
62
|
+
const task = (await GenericFunctions_1.microsoftApiRequest.call(this, 'GET', `/planner/tasks/${taskId}`));
|
|
63
|
+
let comments = [];
|
|
64
|
+
if (task.conversationThreadId) {
|
|
65
|
+
const groupId = await GenericFunctions_1.getPlanGroupId.call(this, task.planId);
|
|
66
|
+
const qs = {};
|
|
67
|
+
if (additionalFields.select) {
|
|
68
|
+
qs.$select = additionalFields.select;
|
|
69
|
+
}
|
|
70
|
+
const posts = await GenericFunctions_1.microsoftApiRequestAllItems.call(this, 'value', 'GET', `/groups/${groupId}/threads/${task.conversationThreadId}/posts`, {}, qs);
|
|
71
|
+
comments = posts.map((post) => ({
|
|
72
|
+
id: post.id,
|
|
73
|
+
content: post.body,
|
|
74
|
+
from: post.from,
|
|
75
|
+
createdDateTime: post.createdDateTime,
|
|
76
|
+
lastModifiedDateTime: post.lastModifiedDateTime,
|
|
77
|
+
}));
|
|
78
|
+
}
|
|
79
|
+
if (additionalFields.splitIntoItems) {
|
|
80
|
+
return comments.map((comment) => ({ taskId, ...comment }));
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
taskId,
|
|
84
|
+
comments,
|
|
85
|
+
commentCount: comments.length,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
async function executeComment(operation, i) {
|
|
89
|
+
switch (operation) {
|
|
90
|
+
case 'create':
|
|
91
|
+
return await create.call(this, i);
|
|
92
|
+
case 'getAll':
|
|
93
|
+
return await getAll.call(this, i);
|
|
94
|
+
default:
|
|
95
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unsupported comment operation "${operation}"`, {
|
|
96
|
+
itemIndex: i,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=comment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comment.js","sourceRoot":"","sources":["../../../../nodes/MicrosoftPlanner/actions/comment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IDataObject, IExecuteFunctions } from 'n8n-workflow';
|
|
2
|
+
type UserCache = Map<string, string>;
|
|
3
|
+
export declare function executePlan(this: IExecuteFunctions, operation: string, i: number, userCache: UserCache): Promise<IDataObject | IDataObject[]>;
|
|
4
|
+
export {};
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.executePlan = executePlan;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const GenericFunctions_1 = require("../GenericFunctions");
|
|
6
|
+
async function create(i) {
|
|
7
|
+
const groupId = this.getNodeParameter('owner', i, '', { extractValue: true });
|
|
8
|
+
const title = this.getNodeParameter('title', i);
|
|
9
|
+
const body = {
|
|
10
|
+
container: {
|
|
11
|
+
url: `${GenericFunctions_1.GRAPH_BASE_URL}/groups/${groupId}`,
|
|
12
|
+
},
|
|
13
|
+
title,
|
|
14
|
+
};
|
|
15
|
+
return (await GenericFunctions_1.microsoftApiRequest.call(this, 'POST', '/planner/plans', body));
|
|
16
|
+
}
|
|
17
|
+
async function get(i) {
|
|
18
|
+
const planId = this.getNodeParameter('planId', i);
|
|
19
|
+
const additionalFields = this.getNodeParameter('additionalFields', i, {});
|
|
20
|
+
const plan = (await GenericFunctions_1.microsoftApiRequest.call(this, 'GET', `/planner/plans/${planId}`));
|
|
21
|
+
if (additionalFields.includeDetails) {
|
|
22
|
+
plan.details = await GenericFunctions_1.microsoftApiRequest.call(this, 'GET', `/planner/plans/${planId}/details`);
|
|
23
|
+
}
|
|
24
|
+
return plan;
|
|
25
|
+
}
|
|
26
|
+
async function getAll(i, userCache) {
|
|
27
|
+
const scope = this.getNodeParameter('scope', i);
|
|
28
|
+
let endpoint;
|
|
29
|
+
if (scope === 'my') {
|
|
30
|
+
endpoint = '/me/planner/plans';
|
|
31
|
+
}
|
|
32
|
+
else if (scope === 'group') {
|
|
33
|
+
endpoint = `/groups/${this.getNodeParameter('groupId', i)}/planner/plans`;
|
|
34
|
+
}
|
|
35
|
+
else if (scope === 'user') {
|
|
36
|
+
const [userId] = await GenericFunctions_1.resolveUserIds.call(this, this.getNodeParameter('userId', i), userCache);
|
|
37
|
+
endpoint = `/users/${userId}/planner/plans`;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Invalid scope for plan getAll operation', {
|
|
41
|
+
itemIndex: i,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
const additionalFields = this.getNodeParameter('additionalFields', i, {});
|
|
45
|
+
const qs = {};
|
|
46
|
+
if (additionalFields.select) {
|
|
47
|
+
qs.$select = additionalFields.select;
|
|
48
|
+
}
|
|
49
|
+
return await GenericFunctions_1.microsoftApiRequestAllItems.call(this, 'value', 'GET', endpoint, {}, qs);
|
|
50
|
+
}
|
|
51
|
+
async function update(i) {
|
|
52
|
+
const planId = this.getNodeParameter('planId', i);
|
|
53
|
+
const updateFields = this.getNodeParameter('updateFields', i, {});
|
|
54
|
+
const body = {};
|
|
55
|
+
if (updateFields.title) {
|
|
56
|
+
body.title = updateFields.title;
|
|
57
|
+
}
|
|
58
|
+
const plan = await GenericFunctions_1.patchWithETag.call(this, `/planner/plans/${planId}`, () => body);
|
|
59
|
+
const detailsBody = {};
|
|
60
|
+
if (updateFields.categoryDescriptions) {
|
|
61
|
+
const categories = updateFields.categoryDescriptions;
|
|
62
|
+
const cleanedCategories = {};
|
|
63
|
+
for (const key of Object.keys(categories)) {
|
|
64
|
+
const value = categories[key];
|
|
65
|
+
if (value === '') {
|
|
66
|
+
cleanedCategories[key] = null;
|
|
67
|
+
}
|
|
68
|
+
else if (value !== undefined) {
|
|
69
|
+
cleanedCategories[key] = value;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (Object.keys(cleanedCategories).length > 0) {
|
|
73
|
+
detailsBody.categoryDescriptions = cleanedCategories;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (updateFields.sharedWithJson) {
|
|
77
|
+
const sharedWith = GenericFunctions_1.parseJson.call(this, updateFields.sharedWithJson, 'Shared With (plannerUserIds JSON)', i);
|
|
78
|
+
if (!sharedWith || typeof sharedWith !== 'object' || Array.isArray(sharedWith)) {
|
|
79
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Shared With must be a JSON object mapping user IDs to true/false', { itemIndex: i });
|
|
80
|
+
}
|
|
81
|
+
if (Object.keys(sharedWith).length > 0) {
|
|
82
|
+
detailsBody.sharedWith = sharedWith;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (Object.keys(detailsBody).length === 0) {
|
|
86
|
+
return plan;
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
...plan,
|
|
90
|
+
details: await GenericFunctions_1.patchWithETag.call(this, `/planner/plans/${planId}/details`, () => detailsBody),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
async function remove(i) {
|
|
94
|
+
const planId = this.getNodeParameter('planId', i);
|
|
95
|
+
await GenericFunctions_1.deleteWithETag.call(this, `/planner/plans/${planId}`);
|
|
96
|
+
return { success: true, planId };
|
|
97
|
+
}
|
|
98
|
+
async function executePlan(operation, i, userCache) {
|
|
99
|
+
switch (operation) {
|
|
100
|
+
case 'create':
|
|
101
|
+
return await create.call(this, i);
|
|
102
|
+
case 'get':
|
|
103
|
+
return await get.call(this, i);
|
|
104
|
+
case 'getAll':
|
|
105
|
+
return await getAll.call(this, i, userCache);
|
|
106
|
+
case 'update':
|
|
107
|
+
return await update.call(this, i);
|
|
108
|
+
case 'delete':
|
|
109
|
+
return await remove.call(this, i);
|
|
110
|
+
default:
|
|
111
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unsupported plan operation "${operation}"`, {
|
|
112
|
+
itemIndex: i,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../../nodes/MicrosoftPlanner/actions/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IDataObject, IExecuteFunctions } from 'n8n-workflow';
|
|
2
|
+
type UserCache = Map<string, string>;
|
|
3
|
+
export declare function executeTask(this: IExecuteFunctions, operation: string, i: number, userCache: UserCache): Promise<IDataObject | IDataObject[]>;
|
|
4
|
+
export {};
|