@avantguardllc/n8n-nodes-halopsa 0.1.26 → 0.1.27

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.
@@ -1,3 +1,5 @@
1
- import type { IExecuteFunctions, ILoadOptionsFunctions, IHttpRequestMethods } from 'n8n-workflow';
2
- export declare function apiRequest(this: IExecuteFunctions | ILoadOptionsFunctions, method: IHttpRequestMethods, resource: string, body?: object, query?: Record<string, string>, headers?: Record<string, string>, debugLog?: any[], timeout?: number): Promise<any>;
3
- export declare function apiRequestAllItems(this: IExecuteFunctions | ILoadOptionsFunctions, method: IHttpRequestMethods, resource: string, body?: object, query?: Record<string, string>, headers?: Record<string, string>, pagination?: Record<string, any>, debug?: boolean, timeout?: number): Promise<any[]>;
1
+ import { IHookFunctions, IWebhookFunctions, IExecuteFunctions, ILoadOptionsFunctions, IDataObject, IHttpRequestMethods } from 'n8n-workflow';
2
+ type AnyContext = IHookFunctions | IWebhookFunctions | IExecuteFunctions | ILoadOptionsFunctions;
3
+ export declare function apiRequest(this: AnyContext, method: IHttpRequestMethods, endpoint: string, body?: IDataObject | IDataObject[], qs?: IDataObject): Promise<any>;
4
+ export {};
5
+ //# sourceMappingURL=GenericFunctions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenericFunctions.d.ts","sourceRoot":"","sources":["../src/nodes/HaloPSA/GenericFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,mBAAmB,EAEnB,MAAM,cAAc,CAAC;AAEtB,KAAK,UAAU,GAAG,cAAc,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,qBAAqB,CAAC;AA2CjG,wBAAsB,UAAU,CAC/B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,WAAW,GAAG,WAAW,EAAO,EACtC,EAAE,GAAE,WAAgB,GAClB,OAAO,CAAC,GAAG,CAAC,CAmBd"}
@@ -1,25 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.apiRequest = apiRequest;
4
- exports.apiRequestAllItems = apiRequestAllItems;
5
4
  const n8n_workflow_1 = require("n8n-workflow");
6
- function getNestedValue(obj, path) {
7
- if (!path)
8
- return obj;
9
- return path.split('.').reduce((current, key) => current === null || current === void 0 ? void 0 : current[key], obj);
10
- }
11
5
  const _tokenCache = new Map();
12
- function _cacheKey(credentials) {
13
- return `${credentials.clientId}::${credentials.accessTokenUrl}`;
14
- }
15
- async function getAccessToken(execContext, forceRefresh = false) {
16
- const credentials = await execContext.getCredentials('HaloPSAApi');
17
- const key = _cacheKey(credentials);
6
+ async function getAccessToken(ctx, forceRefresh = false) {
7
+ const credentials = await ctx.getCredentials('HaloPSAApi');
8
+ const key = `${credentials.clientId}::${credentials.accessTokenUrl}`;
18
9
  const cached = _tokenCache.get(key);
19
10
  if (!forceRefresh && cached && Date.now() < cached.expiresAt) {
20
11
  return cached.token;
21
12
  }
22
- const tokenUrl = credentials.accessTokenUrl;
23
13
  const bodyParams = {
24
14
  client_id: credentials.clientId,
25
15
  client_secret: credentials.clientSecret,
@@ -29,344 +19,48 @@ async function getAccessToken(execContext, forceRefresh = false) {
29
19
  bodyParams.scope = credentials.scope;
30
20
  }
31
21
  const body = new URLSearchParams(bodyParams);
32
- let rawResponse;
22
+ let raw;
33
23
  try {
34
- rawResponse = await execContext.helpers.httpRequest({
24
+ raw = await ctx.helpers.httpRequest({
35
25
  method: 'POST',
36
- url: tokenUrl,
26
+ url: credentials.accessTokenUrl,
37
27
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
38
28
  body: body.toString(),
39
29
  });
40
30
  }
41
- catch (tokenError) {
42
- const msg = tokenError.message || String(tokenError);
31
+ catch (err) {
43
32
  _tokenCache.delete(key);
44
- throw new Error(`OAuth2 token exchange failed (POST ${tokenUrl}): ${msg}. ` +
45
- `Verify your Access Token URL, Client ID, Client Secret, and Scope in the credential settings.`);
33
+ throw new Error(`OAuth2 token exchange failed: ${err.message}`);
46
34
  }
47
- const response = typeof rawResponse === 'string' ? JSON.parse(rawResponse) : rawResponse;
35
+ const response = (typeof raw === 'string' ? JSON.parse(raw) : raw);
48
36
  if (!response.access_token) {
49
37
  _tokenCache.delete(key);
50
- throw new Error(`OAuth2 token exchange succeeded but no access_token in response (POST ${tokenUrl}): ${JSON.stringify(response)}`);
38
+ throw new Error(`No access_token in response: ${JSON.stringify(response)}`);
51
39
  }
52
40
  const token = response.access_token;
53
41
  const expiresAt = Date.now() + ((response.expires_in || 3600) - 60) * 1000;
54
42
  _tokenCache.set(key, { token, expiresAt });
55
43
  return token;
56
44
  }
57
- async function apiRequest(method, resource, body = {}, query = {}, headers = {}, debugLog, timeout) {
45
+ async function apiRequest(method, endpoint, body = {}, qs = {}) {
58
46
  const credentials = await this.getCredentials('HaloPSAApi');
59
- const baseUrl = credentials.baseUrl || '/api';
60
- const url = (resource.startsWith('http://') || resource.startsWith('https://'))
61
- ? resource
62
- : `${baseUrl}${resource}`;
63
- const makeRequest = async (forceRefresh) => {
64
- const token = await getAccessToken(this, forceRefresh);
65
- const options = {
47
+ const baseUrl = credentials.baseUrl || '';
48
+ const accessToken = await getAccessToken(this);
49
+ try {
50
+ return await this.helpers.httpRequest({
66
51
  method,
67
- url,
68
- qs: query,
52
+ url: `${baseUrl}${endpoint}`,
69
53
  headers: {
70
- 'Accept': 'application/json',
71
- 'Authorization': `Bearer ${token}`,
72
- ...headers,
54
+ 'Content-Type': 'application/json',
55
+ Authorization: `Bearer ${accessToken}`,
73
56
  },
57
+ body,
58
+ qs,
74
59
  json: true,
75
- ...(timeout ? { timeout } : {}),
76
- };
77
- if (['POST', 'PUT', 'PATCH'].includes(method) && body && Object.keys(body).length > 0) {
78
- options.body = body;
79
- }
80
- if (debugLog) {
81
- const qsString = Object.entries(query).map(([k, v]) => `${k}=${v}`).join('&');
82
- debugLog.push({
83
- url: qsString ? `${url}?${qsString}` : url,
84
- method,
85
- qs: { ...query },
86
- headers: { 'Accept': 'application/json', ...headers },
87
- body: body && Object.keys(body).length > 0 ? body : undefined,
88
- });
89
- }
90
- return await this.helpers.httpRequest(options);
91
- };
92
- try {
93
- return await makeRequest(false);
94
- }
95
- catch (error) {
96
- const message = error.message || '';
97
- if (message.includes('OAuth2 token exchange')) {
98
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), message, { description: `The token exchange failed before the API request could be made.` });
99
- }
100
- if (message.includes('text/html') || message.includes('Unsupported content type')) {
101
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The server returned HTML instead of JSON. This usually means the Base URL is incorrect, authentication failed, or the endpoint does not exist. Verify your credentials and Base URL (${baseUrl}).`, { description: `Request: ${method} ${url}` });
102
- }
103
- if (message.includes('401') || message.includes('Unauthorized') || message.includes('invalid credentials')) {
104
- try {
105
- return await makeRequest(true);
106
- }
107
- catch (retryError) {
108
- const retryMessage = retryError.message || '';
109
- const key = _cacheKey(credentials);
110
- _tokenCache.delete(key);
111
- if (retryMessage.includes('OAuth2 token exchange')) {
112
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), retryMessage, { description: `The token exchange failed on retry.` });
113
- }
114
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Authorization failed - the API returned 401. Verify your Base URL (${baseUrl}) and that the app registration has the correct API permissions.`, { description: `Request: ${method} ${url} — ${retryMessage}` });
115
- }
116
- }
117
- throw error;
118
- }
119
- }
120
- async function apiRequestAllItems(method, resource, body = {}, query = {}, headers = {}, pagination = {}, debug = false, timeout) {
121
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
122
- const returnData = [];
123
- const debugLog = [];
124
- const mode = pagination.paginationMode || 'offset';
125
- const dataPath = (_a = pagination.dataPath) !== null && _a !== void 0 ? _a : '';
126
- const maxPages = pagination.maxPages || 0;
127
- const interval = pagination.requestInterval || 0;
128
- let currentPage = 0;
129
- let lastFirstItem = null;
130
- if (debug) {
131
- debugLog.push({
132
- _paginationConfig: {
133
- mode,
134
- dataPath: dataPath || '(root)',
135
- maxPages: maxPages || 'unlimited',
136
- paginationInput: { ...pagination },
137
- },
138
60
  });
139
61
  }
140
- if (mode === 'offset') {
141
- const pageParam = (_b = pagination.pageParam) !== null && _b !== void 0 ? _b : 'page_no';
142
- const pageSize = (_c = pagination.pageSize) !== null && _c !== void 0 ? _c : 100;
143
- const sizeParam = (_d = pagination.sizeParam) !== null && _d !== void 0 ? _d : 'page_size';
144
- let paramValue = (_e = pagination.startValue) !== null && _e !== void 0 ? _e : 1;
145
- const increment = (_f = pagination.increment) !== null && _f !== void 0 ? _f : 1;
146
- if (debug) {
147
- debugLog.push({
148
- _offsetConfig: { pageParam, pageSize, sizeParam: sizeParam || '(none)', startValue: paramValue, increment },
149
- });
150
- }
151
- if (sizeParam) {
152
- query[sizeParam] = String(pageSize);
153
- }
154
- do {
155
- query[pageParam] = String(paramValue);
156
- const responseData = await apiRequest.call(this, method, resource, body, query, headers, debug ? debugLog : undefined, timeout);
157
- const items = dataPath ? getNestedValue(responseData, dataPath) : responseData;
158
- if (Array.isArray(items)) {
159
- if (items.length === 0) {
160
- if (debug)
161
- debugLog.push({ _paginationStop: 'empty array', page: currentPage });
162
- break;
163
- }
164
- const firstItemKey = JSON.stringify(items[0]);
165
- if (lastFirstItem !== null && firstItemKey === lastFirstItem) {
166
- if (debug)
167
- debugLog.push({ _paginationStop: 'duplicate first item', page: currentPage });
168
- break;
169
- }
170
- lastFirstItem = firstItemKey;
171
- returnData.push(...items);
172
- if (sizeParam && items.length < pageSize) {
173
- if (debug)
174
- debugLog.push({ _paginationStop: 'partial page (last page)', page: currentPage, itemsOnPage: items.length, pageSize });
175
- break;
176
- }
177
- }
178
- else if (items !== null && items !== undefined) {
179
- returnData.push(items);
180
- if (debug)
181
- debugLog.push({ _paginationStop: 'non-array response', page: currentPage });
182
- break;
183
- }
184
- else {
185
- if (debug)
186
- debugLog.push({ _paginationStop: 'null/undefined items', page: currentPage, dataPath });
187
- break;
188
- }
189
- paramValue += increment;
190
- currentPage++;
191
- if (debug)
192
- debugLog.push({ _paginationPage: currentPage, itemsSoFar: returnData.length, nextParamValue: paramValue });
193
- if (maxPages > 0 && currentPage >= maxPages) {
194
- if (debug)
195
- debugLog.push({ _paginationStop: 'maxPages reached', page: currentPage });
196
- break;
197
- }
198
- if (interval > 0)
199
- await new Promise(r => setTimeout(r, interval));
200
- } while (true);
201
- }
202
- else if (mode === 'cursor') {
203
- const cursorParam = (_g = pagination.cursorParam) !== null && _g !== void 0 ? _g : 'cursor';
204
- const cursorPath = (_h = pagination.cursorPath) !== null && _h !== void 0 ? _h : '';
205
- const pageSize = (_j = pagination.pageSize) !== null && _j !== void 0 ? _j : 100;
206
- const sizeParam = (_k = pagination.sizeParam) !== null && _k !== void 0 ? _k : 'page_size';
207
- let cursor = null;
208
- if (debug) {
209
- debugLog.push({
210
- _cursorConfig: { cursorParam, cursorPath: cursorPath || '(not set)', pageSize, sizeParam: sizeParam || '(none)' },
211
- });
212
- }
213
- if (sizeParam) {
214
- query[sizeParam] = String(pageSize);
215
- }
216
- do {
217
- if (cursor) {
218
- query[cursorParam] = cursor;
219
- if (debug)
220
- debugLog.push({ _cursorSending: { param: cursorParam, value: cursor } });
221
- }
222
- else if (debug && currentPage === 0) {
223
- debugLog.push({ _cursorInfo: 'First page — no cursor sent yet' });
224
- }
225
- const responseData = await apiRequest.call(this, method, resource, body, query, headers, debug ? debugLog : undefined, timeout);
226
- const items = dataPath ? getNestedValue(responseData, dataPath) : responseData;
227
- if (Array.isArray(items)) {
228
- if (items.length === 0) {
229
- if (debug)
230
- debugLog.push({ _paginationStop: 'empty array', page: currentPage });
231
- break;
232
- }
233
- const firstItemKey = JSON.stringify(items[0]);
234
- if (lastFirstItem !== null && firstItemKey === lastFirstItem) {
235
- if (debug)
236
- debugLog.push({ _paginationStop: 'duplicate first item', page: currentPage });
237
- break;
238
- }
239
- lastFirstItem = firstItemKey;
240
- returnData.push(...items);
241
- if (sizeParam && items.length < pageSize) {
242
- if (debug)
243
- debugLog.push({ _paginationStop: 'partial page (last page)', page: currentPage, itemsOnPage: items.length, pageSize });
244
- break;
245
- }
246
- }
247
- else if (items !== null && items !== undefined) {
248
- returnData.push(items);
249
- if (debug)
250
- debugLog.push({ _paginationStop: 'non-array response', page: currentPage });
251
- break;
252
- }
253
- else {
254
- if (debug)
255
- debugLog.push({ _paginationStop: 'null/undefined items — check dataPath', page: currentPage, dataPath });
256
- break;
257
- }
258
- cursor = cursorPath ? getNestedValue(responseData, cursorPath) : null;
259
- if (debug) {
260
- debugLog.push({ _cursorExtracted: { cursorPath, cursorValue: cursor !== null && cursor !== void 0 ? cursor : '(not found — pagination will stop)' } });
261
- }
262
- currentPage++;
263
- if (maxPages > 0 && currentPage >= maxPages) {
264
- if (debug)
265
- debugLog.push({ _paginationStop: 'maxPages reached', page: currentPage });
266
- break;
267
- }
268
- if (!cursor) {
269
- if (debug)
270
- debugLog.push({ _paginationStop: 'no cursor in response — end of data or cursorPath is wrong', page: currentPage, cursorPath });
271
- break;
272
- }
273
- if (debug)
274
- debugLog.push({ _paginationPage: currentPage, itemsSoFar: returnData.length });
275
- if (interval > 0)
276
- await new Promise(r => setTimeout(r, interval));
277
- } while (true);
278
- }
279
- else if (mode === 'url') {
280
- const nextUrlPath = (_l = pagination.nextUrlPath) !== null && _l !== void 0 ? _l : '';
281
- const pageSize = (_m = pagination.pageSize) !== null && _m !== void 0 ? _m : 100;
282
- const sizeParam = (_o = pagination.sizeParam) !== null && _o !== void 0 ? _o : 'page_size';
283
- let nextUrl = null;
284
- let isFirstRequest = true;
285
- if (debug) {
286
- debugLog.push({
287
- _urlConfig: { nextUrlPath: nextUrlPath || '(not set)', pageSize, sizeParam: sizeParam || '(none)' },
288
- });
289
- }
290
- if (sizeParam) {
291
- query[sizeParam] = String(pageSize);
292
- }
293
- do {
294
- let responseData;
295
- if (isFirstRequest || !nextUrl) {
296
- responseData = await apiRequest.call(this, method, resource, body, query, headers, debug ? debugLog : undefined, timeout);
297
- isFirstRequest = false;
298
- }
299
- else {
300
- let nextResource = nextUrl;
301
- const mergedQuery = { ...query };
302
- if (nextUrl.startsWith('http://') || nextUrl.startsWith('https://')) {
303
- const parsed = new URL(nextUrl);
304
- parsed.searchParams.forEach((v, k) => { mergedQuery[k] = v; });
305
- nextResource = parsed.origin + parsed.pathname;
306
- }
307
- if (debug)
308
- debugLog.push({ _urlFollowing: nextUrl });
309
- responseData = await apiRequest.call(this, method, nextResource, body, mergedQuery, headers, debug ? debugLog : undefined, timeout);
310
- }
311
- const items = dataPath ? getNestedValue(responseData, dataPath) : responseData;
312
- if (Array.isArray(items)) {
313
- if (items.length === 0) {
314
- if (debug)
315
- debugLog.push({ _paginationStop: 'empty array', page: currentPage });
316
- break;
317
- }
318
- const firstItemKey = JSON.stringify(items[0]);
319
- if (lastFirstItem !== null && firstItemKey === lastFirstItem) {
320
- if (debug)
321
- debugLog.push({ _paginationStop: 'duplicate first item', page: currentPage });
322
- break;
323
- }
324
- lastFirstItem = firstItemKey;
325
- returnData.push(...items);
326
- if (sizeParam && items.length < pageSize) {
327
- if (debug)
328
- debugLog.push({ _paginationStop: 'partial page (last page)', page: currentPage, itemsOnPage: items.length, pageSize });
329
- break;
330
- }
331
- }
332
- else if (items !== null && items !== undefined) {
333
- returnData.push(items);
334
- if (debug)
335
- debugLog.push({ _paginationStop: 'non-array response', page: currentPage });
336
- break;
337
- }
338
- else {
339
- if (debug)
340
- debugLog.push({ _paginationStop: 'null/undefined items — check dataPath', page: currentPage, dataPath });
341
- break;
342
- }
343
- nextUrl = nextUrlPath ? getNestedValue(responseData, nextUrlPath) : null;
344
- if (debug) {
345
- debugLog.push({ _urlExtracted: { nextUrlPath, nextUrlValue: nextUrl !== null && nextUrl !== void 0 ? nextUrl : '(not found — pagination will stop)' } });
346
- }
347
- currentPage++;
348
- if (maxPages > 0 && currentPage >= maxPages) {
349
- if (debug)
350
- debugLog.push({ _paginationStop: 'maxPages reached', page: currentPage });
351
- break;
352
- }
353
- if (!nextUrl) {
354
- if (debug)
355
- debugLog.push({ _paginationStop: 'no next URL in response', page: currentPage, nextUrlPath });
356
- break;
357
- }
358
- if (debug)
359
- debugLog.push({ _paginationPage: currentPage, itemsSoFar: returnData.length });
360
- if (interval > 0)
361
- await new Promise(r => setTimeout(r, interval));
362
- } while (true);
363
- }
364
- if (debug) {
365
- debugLog.push({ _paginationSummary: { mode, totalItems: returnData.length, totalPages: currentPage + 1 } });
366
- }
367
- if (debug && debugLog.length > 0) {
368
- returnData.unshift({ __debug: debugLog });
62
+ catch (error) {
63
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
369
64
  }
370
- return returnData;
371
65
  }
372
66
  //# sourceMappingURL=GenericFunctions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../nodes/HaloPSA/GenericFunctions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../src/nodes/HaloPSA/GenericFunctions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { IHookFunctions, IWebhookFunctions, INodeType, INodeTypeDescription, IWebhookResponseData } from 'n8n-workflow';
2
+ export declare class HaloPSATrigger implements INodeType {
3
+ description: INodeTypeDescription;
4
+ webhookMethods: {
5
+ default: {
6
+ checkExists(this: IHookFunctions): Promise<boolean>;
7
+ create(this: IHookFunctions): Promise<boolean>;
8
+ delete(this: IHookFunctions): Promise<boolean>;
9
+ };
10
+ };
11
+ webhook(this: IWebhookFunctions): Promise<IWebhookResponseData>;
12
+ }
13
+ //# sourceMappingURL=HaloPSATrigger.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HaloPSATrigger.node.d.ts","sourceRoot":"","sources":["../src/nodes/HaloPSA/HaloPSATrigger.node.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,cAAc,EACd,iBAAiB,EAEjB,SAAS,EACT,oBAAoB,EACpB,oBAAoB,EACpB,MAAM,cAAc,CAAC;AAuBtB,qBAAa,cAAe,YAAW,SAAS;IAC/C,WAAW,EAAE,oBAAoB,CAgG/B;IAEF,cAAc;;8BAEY,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;yBA+BtC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;yBA2CjC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;;MAUpD;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAkBrE"}