@advenimuss/n8n-nodes-msgraph 0.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.
package/README.md ADDED
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,7 @@
1
+ import { ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ export declare class MsGraphOAuth2Api implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ documentationUrl: string;
6
+ properties: INodeProperties[];
7
+ }
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MsGraphOAuth2Api = void 0;
4
+ class MsGraphOAuth2Api {
5
+ constructor() {
6
+ this.name = 'msGraphOAuth2Api';
7
+ this.displayName = 'Microsoft Graph OAuth2 API';
8
+ this.documentationUrl = 'https://docs.microsoft.com/en-us/graph/auth-v2-user';
9
+ this.properties = [
10
+ {
11
+ displayName: 'Authorization URL',
12
+ name: 'authUrl',
13
+ type: 'string',
14
+ default: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',
15
+ required: true,
16
+ },
17
+ {
18
+ displayName: 'Token URL',
19
+ name: 'tokenUrl',
20
+ type: 'string',
21
+ default: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',
22
+ required: true,
23
+ },
24
+ {
25
+ displayName: 'Client ID',
26
+ name: 'clientId',
27
+ type: 'string',
28
+ default: '',
29
+ required: true,
30
+ },
31
+ {
32
+ displayName: 'Client Secret',
33
+ name: 'clientSecret',
34
+ type: 'string',
35
+ typeOptions: {
36
+ password: true,
37
+ },
38
+ default: '',
39
+ required: true,
40
+ },
41
+ {
42
+ displayName: 'Scope',
43
+ name: 'scope',
44
+ type: 'string',
45
+ default: 'offline_access user.read',
46
+ description: 'Space-separated list of scopes to request',
47
+ required: true,
48
+ },
49
+ {
50
+ displayName: 'Authentication',
51
+ name: 'authentication',
52
+ type: 'options',
53
+ options: [
54
+ {
55
+ name: 'Body',
56
+ value: 'body',
57
+ },
58
+ {
59
+ name: 'Header',
60
+ value: 'header',
61
+ },
62
+ ],
63
+ default: 'header',
64
+ },
65
+ ];
66
+ }
67
+ }
68
+ exports.MsGraphOAuth2Api = MsGraphOAuth2Api;
69
+ //# sourceMappingURL=MsGraphOAuth2Api.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MsGraphOAuth2Api.credentials.js","sourceRoot":"","sources":["../../credentials/MsGraphOAuth2Api.credentials.ts"],"names":[],"mappings":";;;AAKA,MAAa,gBAAgB;IAA7B;QACC,SAAI,GAAG,kBAAkB,CAAC;QAC1B,gBAAW,GAAG,4BAA4B,CAAC;QAC3C,qBAAgB,GAAG,qDAAqD,CAAC;QACzE,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,gEAAgE;gBACzE,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,4DAA4D;gBACrE,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,eAAe;gBAC5B,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,0BAA0B;gBACnC,WAAW,EAAE,2CAA2C;gBACxD,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,gBAAgB;gBAC7B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE;oBACR;wBACC,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE,MAAM;qBACb;oBACD;wBACC,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,QAAQ;qBACf;iBACD;gBACD,OAAO,EAAE,QAAQ;aACjB;SACD,CAAC;IACH,CAAC;CAAA;AA7DD,4CA6DC"}
@@ -0,0 +1,5 @@
1
+ import { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class MsGraph implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,500 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MsGraph = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ class MsGraph {
6
+ constructor() {
7
+ this.description = {
8
+ displayName: 'Microsoft Graph',
9
+ name: 'msGraph',
10
+ icon: 'file:msgraph.svg',
11
+ group: ['transform'],
12
+ version: 1,
13
+ subtitle: '={{$parameter["method"] + ": " + $parameter["url"]}}',
14
+ description: 'Make requests to Microsoft Graph API with retry handling',
15
+ defaults: {
16
+ name: 'Microsoft Graph',
17
+ },
18
+ // @ts-expect-error - n8n types issue
19
+ inputs: ['main'],
20
+ // @ts-expect-error - n8n types issue
21
+ outputs: ['main'],
22
+ credentials: [
23
+ {
24
+ name: 'msGraphOAuth2Api',
25
+ required: false,
26
+ },
27
+ ],
28
+ properties: [
29
+ {
30
+ displayName: 'Authentication',
31
+ name: 'authentication',
32
+ type: 'options',
33
+ options: [
34
+ {
35
+ name: 'OAuth2 (via Credentials)',
36
+ value: 'oauth2',
37
+ },
38
+ {
39
+ name: 'Access Token',
40
+ value: 'accessToken',
41
+ },
42
+ ],
43
+ default: 'oauth2',
44
+ description: 'The authentication method to use',
45
+ },
46
+ {
47
+ displayName: 'Access Token',
48
+ name: 'accessToken',
49
+ type: 'string',
50
+ displayOptions: {
51
+ show: {
52
+ authentication: ['accessToken'],
53
+ },
54
+ },
55
+ default: '',
56
+ description: 'Access token obtained from Microsoft Identity Platform (Azure AD). Can be set via an expression from the result of a previous node.',
57
+ required: true,
58
+ },
59
+ {
60
+ displayName: 'HTTP Method',
61
+ name: 'method',
62
+ type: 'options',
63
+ options: [
64
+ {
65
+ name: 'DELETE',
66
+ value: 'DELETE',
67
+ },
68
+ {
69
+ name: 'GET',
70
+ value: 'GET',
71
+ },
72
+ {
73
+ name: 'PATCH',
74
+ value: 'PATCH',
75
+ },
76
+ {
77
+ name: 'POST',
78
+ value: 'POST',
79
+ },
80
+ {
81
+ name: 'PUT',
82
+ value: 'PUT',
83
+ },
84
+ ],
85
+ default: 'GET',
86
+ description: 'The HTTP method to use for the request',
87
+ },
88
+ {
89
+ displayName: 'URL',
90
+ name: 'url',
91
+ type: 'string',
92
+ default: '',
93
+ placeholder: 'https://graph.microsoft.com/v1.0/me',
94
+ description: 'The URL to make the request to',
95
+ required: true,
96
+ },
97
+ {
98
+ displayName: 'Headers',
99
+ name: 'headers',
100
+ placeholder: 'Add Header',
101
+ type: 'fixedCollection',
102
+ typeOptions: {
103
+ multipleValues: true,
104
+ },
105
+ default: {},
106
+ options: [
107
+ {
108
+ name: 'parameter',
109
+ displayName: 'Header',
110
+ values: [
111
+ {
112
+ displayName: 'Name',
113
+ name: 'name',
114
+ type: 'string',
115
+ default: '',
116
+ description: 'Name of the header',
117
+ },
118
+ {
119
+ displayName: 'Value',
120
+ name: 'value',
121
+ type: 'string',
122
+ default: '',
123
+ description: 'Value of the header',
124
+ },
125
+ ],
126
+ },
127
+ ],
128
+ },
129
+ {
130
+ displayName: 'Query Parameters',
131
+ name: 'queryParameters',
132
+ placeholder: 'Add Parameter',
133
+ type: 'fixedCollection',
134
+ typeOptions: {
135
+ multipleValues: true,
136
+ },
137
+ default: {},
138
+ options: [
139
+ {
140
+ name: 'parameter',
141
+ displayName: 'Parameter',
142
+ values: [
143
+ {
144
+ displayName: 'Name',
145
+ name: 'name',
146
+ type: 'string',
147
+ default: '',
148
+ description: 'Name of the parameter',
149
+ },
150
+ {
151
+ displayName: 'Value',
152
+ name: 'value',
153
+ type: 'string',
154
+ default: '',
155
+ description: 'Value of the parameter',
156
+ },
157
+ ],
158
+ },
159
+ ],
160
+ },
161
+ {
162
+ displayName: 'Body',
163
+ name: 'body',
164
+ type: 'json',
165
+ displayOptions: {
166
+ show: {
167
+ method: ['PATCH', 'POST', 'PUT'],
168
+ },
169
+ },
170
+ default: '',
171
+ description: 'Body of the request',
172
+ },
173
+ {
174
+ displayName: 'Response Format',
175
+ name: 'responseFormat',
176
+ type: 'options',
177
+ options: [
178
+ {
179
+ name: 'JSON',
180
+ value: 'json',
181
+ },
182
+ {
183
+ name: 'String',
184
+ value: 'string',
185
+ },
186
+ ],
187
+ default: 'json',
188
+ description: 'The format in which the data gets returned from the URL',
189
+ },
190
+ {
191
+ displayName: 'Handle Throttling',
192
+ name: 'handleThrottling',
193
+ type: 'fixedCollection',
194
+ typeOptions: {
195
+ multipleValues: false,
196
+ },
197
+ default: {},
198
+ options: [
199
+ {
200
+ name: 'values',
201
+ displayName: 'Values',
202
+ values: [
203
+ {
204
+ displayName: 'Enable Throttle Handling',
205
+ name: 'enabled',
206
+ type: 'boolean',
207
+ default: true,
208
+ description: 'Whether to handle rate limiting (HTTP 429 responses)',
209
+ },
210
+ {
211
+ displayName: 'Retry After (Seconds)',
212
+ name: 'retryAfterExpression',
213
+ displayOptions: {
214
+ show: {
215
+ enabled: [true],
216
+ },
217
+ },
218
+ type: 'string',
219
+ default: '={{$response.headers["retry-after"] || 2}}',
220
+ description: 'Expression to determine how long to wait before retry. Access the retry-after header with $response.headers["retry-after"]',
221
+ },
222
+ {
223
+ displayName: 'Limit Number of Retries',
224
+ name: 'limitRetries',
225
+ displayOptions: {
226
+ show: {
227
+ enabled: [true],
228
+ },
229
+ },
230
+ type: 'boolean',
231
+ default: true,
232
+ description: 'Whether to limit the number of retry attempts',
233
+ },
234
+ {
235
+ displayName: 'Maximum Retries',
236
+ name: 'maxRetries',
237
+ displayOptions: {
238
+ show: {
239
+ enabled: [true],
240
+ limitRetries: [true],
241
+ },
242
+ },
243
+ type: 'number',
244
+ default: 5,
245
+ description: 'Maximum number of retries to attempt if rate limited',
246
+ },
247
+ ],
248
+ },
249
+ ],
250
+ },
251
+ {
252
+ displayName: 'Error Handling',
253
+ name: 'errorHandling',
254
+ type: 'fixedCollection',
255
+ typeOptions: {
256
+ multipleValues: false,
257
+ },
258
+ default: {},
259
+ options: [
260
+ {
261
+ name: 'values',
262
+ displayName: 'Values',
263
+ values: [
264
+ {
265
+ displayName: 'Continue On Error',
266
+ name: 'continueOnError',
267
+ type: 'boolean',
268
+ default: false,
269
+ description: 'Whether to continue execution even when an error occurs',
270
+ },
271
+ ],
272
+ },
273
+ ],
274
+ },
275
+ {
276
+ displayName: 'Options',
277
+ name: 'options',
278
+ type: 'collection',
279
+ placeholder: 'Add Option',
280
+ default: {},
281
+ options: [
282
+ {
283
+ displayName: 'Full Response',
284
+ name: 'fullResponse',
285
+ type: 'boolean',
286
+ default: false,
287
+ description: 'Whether to return the full response data instead of only the body',
288
+ },
289
+ {
290
+ displayName: 'Timeout',
291
+ name: 'timeout',
292
+ type: 'number',
293
+ default: 10000,
294
+ description: 'Time in ms to wait for the server to send response headers before aborting the request',
295
+ },
296
+ ],
297
+ },
298
+ ],
299
+ };
300
+ }
301
+ async execute() {
302
+ var _a, _b, _c;
303
+ const items = this.getInputData();
304
+ const returnItems = [];
305
+ for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
306
+ try {
307
+ // Get authentication parameters
308
+ const authMethod = this.getNodeParameter('authentication', itemIndex, 'oauth2');
309
+ let accessToken;
310
+ if (authMethod === 'oauth2') {
311
+ // Get credentials for MS Graph API
312
+ const credentials = await this.getCredentials('msGraphOAuth2Api');
313
+ accessToken = credentials.access_token;
314
+ }
315
+ else {
316
+ // Get the access token directly from the parameter
317
+ accessToken = this.getNodeParameter('accessToken', itemIndex, '');
318
+ if (!accessToken) {
319
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Access Token is required for this authentication method', {
320
+ itemIndex,
321
+ });
322
+ }
323
+ }
324
+ // Get parameters
325
+ const method = this.getNodeParameter('method', itemIndex);
326
+ const url = this.getNodeParameter('url', itemIndex);
327
+ const responseFormat = this.getNodeParameter('responseFormat', itemIndex);
328
+ const options = this.getNodeParameter('options', itemIndex, {});
329
+ // Get throttling options
330
+ const throttleSettings = this.getNodeParameter('handleThrottling.values', itemIndex, {
331
+ enabled: true,
332
+ retryAfterExpression: '={{$response.headers["retry-after"] || 2}}',
333
+ limitRetries: true,
334
+ maxRetries: 5,
335
+ });
336
+ // Get body, headers and query parameters
337
+ let body;
338
+ if (['PATCH', 'POST', 'PUT'].includes(method)) {
339
+ body = this.getNodeParameter('body', itemIndex, {});
340
+ if (body !== '' && typeof body === 'string') {
341
+ // Try to parse the body as JSON
342
+ try {
343
+ body = JSON.parse(body);
344
+ }
345
+ catch {
346
+ // If parsing fails, throw an error
347
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Body must be a valid JSON', {
348
+ itemIndex,
349
+ });
350
+ }
351
+ }
352
+ }
353
+ // Get headers
354
+ const headerParameters = this.getNodeParameter('headers', itemIndex, {});
355
+ const headers = {};
356
+ if (headerParameters.parameter) {
357
+ for (const param of headerParameters.parameter) {
358
+ headers[param.name] = param.value;
359
+ }
360
+ }
361
+ // Get query parameters
362
+ const queryParameters = this.getNodeParameter('queryParameters', itemIndex, {});
363
+ const qs = {};
364
+ if (queryParameters.parameter) {
365
+ for (const param of queryParameters.parameter) {
366
+ qs[param.name] = param.value;
367
+ }
368
+ }
369
+ // Add authorization header
370
+ headers.Authorization = `Bearer ${accessToken}`;
371
+ // Add Content-Type header if not present
372
+ if (!headers['Content-Type'] && ['PATCH', 'POST', 'PUT'].includes(method)) {
373
+ headers['Content-Type'] = 'application/json';
374
+ }
375
+ // Add Accept header if not present
376
+ if (!headers.Accept) {
377
+ headers.Accept = 'application/json';
378
+ }
379
+ // Execute the request with retry logic for rate limiting
380
+ let response;
381
+ let retryCount = 0;
382
+ let retryAfter = 0;
383
+ let responseHeaders = {};
384
+ const maxRetries = throttleSettings.limitRetries ? throttleSettings.maxRetries : Infinity;
385
+ while (throttleSettings.enabled && retryCount <= maxRetries) {
386
+ try {
387
+ // If we need to retry, wait for the specified time
388
+ if (retryCount > 0 && retryAfter > 0) {
389
+ this.logger.info(`Rate limited by MS Graph API. Retrying after ${retryAfter} seconds (Attempt ${retryCount}/${maxRetries})`);
390
+ await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
391
+ }
392
+ // Make the request
393
+ const requestOptions = {
394
+ method,
395
+ url,
396
+ headers,
397
+ qs,
398
+ body,
399
+ json: responseFormat === 'json',
400
+ timeout: options.timeout || 10000,
401
+ resolveWithFullResponse: true,
402
+ };
403
+ // Use any instead of the actual type because response.headers is not recognized in n8n types
404
+ const fullResponse = await this.helpers.request(requestOptions);
405
+ response = fullResponse.body;
406
+ responseHeaders = fullResponse.headers || {};
407
+ // No need to retry on success
408
+ break;
409
+ }
410
+ catch (error) {
411
+ responseHeaders = ((_a = error.response) === null || _a === void 0 ? void 0 : _a.headers) || {};
412
+ // Check if this is a rate limiting error (HTTP 429)
413
+ if (error.statusCode === 429 && retryCount < maxRetries) {
414
+ retryCount++;
415
+ // Get the Retry-After header value and compile the expression if provided
416
+ if (throttleSettings.retryAfterExpression) {
417
+ try {
418
+ // Evaluate the expression
419
+ const expressionResult = this.getNodeParameter('handleThrottling.values.retryAfterExpression', itemIndex, 2);
420
+ if (typeof expressionResult === 'number' || (typeof expressionResult === 'string' && !isNaN(Number(expressionResult)))) {
421
+ retryAfter = Number(expressionResult);
422
+ }
423
+ else {
424
+ // Default to exponential backoff if expression doesn't evaluate to a number
425
+ retryAfter = Math.pow(2, retryCount);
426
+ }
427
+ }
428
+ catch {
429
+ // If expression evaluation fails, use fallback
430
+ const headerRetryAfter = parseInt((responseHeaders === null || responseHeaders === void 0 ? void 0 : responseHeaders['retry-after']) || (responseHeaders === null || responseHeaders === void 0 ? void 0 : responseHeaders['Retry-After']) || '0', 10);
431
+ retryAfter = headerRetryAfter || Math.pow(2, retryCount);
432
+ }
433
+ }
434
+ else {
435
+ // Use header value if no expression is provided
436
+ const headerRetryAfter = parseInt((responseHeaders === null || responseHeaders === void 0 ? void 0 : responseHeaders['retry-after']) || (responseHeaders === null || responseHeaders === void 0 ? void 0 : responseHeaders['Retry-After']) || '0', 10);
437
+ retryAfter = headerRetryAfter || Math.pow(2, retryCount);
438
+ }
439
+ // Continue to the next iteration which will wait and retry
440
+ continue;
441
+ }
442
+ // For other errors or if we've exhausted retries, throw the error
443
+ throw error;
444
+ }
445
+ }
446
+ // Process the response
447
+ let responseData;
448
+ if (responseFormat === 'json') {
449
+ responseData = response;
450
+ if (options.fullResponse === true) {
451
+ responseData = {
452
+ body: response,
453
+ headers: responseHeaders,
454
+ statusCode: 200,
455
+ };
456
+ }
457
+ }
458
+ else {
459
+ // String
460
+ responseData = typeof response === 'object' ? JSON.stringify(response) : (response || '').toString();
461
+ if (options.fullResponse === true) {
462
+ responseData = {
463
+ body: responseData,
464
+ headers: responseHeaders,
465
+ statusCode: 200,
466
+ };
467
+ }
468
+ }
469
+ // Return the response data
470
+ const newItem = {
471
+ json: responseData,
472
+ binary: {},
473
+ pairedItem: { item: itemIndex },
474
+ };
475
+ returnItems.push(newItem);
476
+ }
477
+ catch (error) {
478
+ if (this.continueOnFail()) {
479
+ returnItems.push({
480
+ json: {
481
+ error: error.message,
482
+ statusCode: error.statusCode,
483
+ url: this.getNodeParameter('url', itemIndex),
484
+ method: this.getNodeParameter('method', itemIndex),
485
+ headers: ((_b = error.response) === null || _b === void 0 ? void 0 : _b.headers) || {},
486
+ body: ((_c = error.response) === null || _c === void 0 ? void 0 : _c.body) || null,
487
+ },
488
+ binary: {},
489
+ pairedItem: { item: itemIndex },
490
+ });
491
+ continue;
492
+ }
493
+ throw error;
494
+ }
495
+ }
496
+ return this.prepareOutputData(returnItems);
497
+ }
498
+ }
499
+ exports.MsGraph = MsGraph;
500
+ //# sourceMappingURL=MsGraph.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MsGraph.node.js","sourceRoot":"","sources":["../../nodes/MsGraph.node.ts"],"names":[],"mappings":"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"}
package/index.js ADDED
@@ -0,0 +1,12 @@
1
+ module.exports = {
2
+ nodeTypes: {
3
+ MsGraph: {
4
+ sourcePath: './dist/nodes/MsGraph.node.js',
5
+ },
6
+ },
7
+ credentialTypes: {
8
+ MsGraphOAuth2Api: {
9
+ sourcePath: './dist/credentials/MsGraphOAuth2Api.credentials.js',
10
+ },
11
+ },
12
+ };
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@advenimuss/n8n-nodes-msgraph",
3
+ "version": "0.1.0",
4
+ "description": "n8n node for Microsoft Graph API with retry handling",
5
+ "keywords": [
6
+ "n8n-community-node-package",
7
+ "n8n",
8
+ "microsoft",
9
+ "graph",
10
+ "msgraph"
11
+ ],
12
+ "license": "MIT",
13
+ "homepage": "https://n8n.io",
14
+ "author": {
15
+ "name": "advenimuss",
16
+ "email": "cjvautour@gmail.com"
17
+ },
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/advenimuss/n8n-nodes-msgraph.git"
21
+ },
22
+ "main": "index.js",
23
+ "type": "commonjs",
24
+ "scripts": {
25
+ "build": "tsc",
26
+ "dev": "tsc --watch",
27
+ "format": "prettier --write .",
28
+ "lint": "eslint nodes credentials --ext .ts",
29
+ "lintfix": "eslint nodes credentials --ext .ts --fix",
30
+ "prepublishOnly": "npm run build && npm run lint",
31
+ "test": "jest"
32
+ },
33
+ "files": [
34
+ "dist"
35
+ ],
36
+ "n8n": {
37
+ "n8nNodesApiVersion": 1,
38
+ "credentials": [
39
+ "dist/credentials/MsGraphOAuth2Api.credentials.js"
40
+ ],
41
+ "nodes": [
42
+ "dist/nodes/MsGraph.node.js"
43
+ ]
44
+ },
45
+ "devDependencies": {
46
+ "@types/node": "^18.0.0",
47
+ "@typescript-eslint/eslint-plugin": "^8.26.1",
48
+ "@typescript-eslint/parser": "^8.26.1",
49
+ "eslint": "^8.57.1",
50
+ "eslint-plugin-n8n-nodes-base": "^1.16.1"
51
+ },
52
+ "dependencies": {
53
+ "n8n-core": "^1.0.0",
54
+ "n8n-workflow": "^1.0.0",
55
+ "typescript": "^4.9.0"
56
+ }
57
+ }