@memberjunction/core-actions 2.54.0 → 2.56.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 (118) hide show
  1. package/dist/custom/ai/execute-ai-prompt.action.d.ts +94 -0
  2. package/dist/custom/ai/execute-ai-prompt.action.d.ts.map +1 -0
  3. package/dist/custom/ai/execute-ai-prompt.action.js +274 -0
  4. package/dist/custom/ai/execute-ai-prompt.action.js.map +1 -0
  5. package/dist/custom/communication/slack-webhook.action.d.ts +101 -0
  6. package/dist/custom/communication/slack-webhook.action.d.ts.map +1 -0
  7. package/dist/custom/communication/slack-webhook.action.js +269 -0
  8. package/dist/custom/communication/slack-webhook.action.js.map +1 -0
  9. package/dist/custom/communication/teams-webhook.action.d.ts +96 -0
  10. package/dist/custom/communication/teams-webhook.action.d.ts.map +1 -0
  11. package/dist/custom/communication/teams-webhook.action.js +275 -0
  12. package/dist/custom/communication/teams-webhook.action.js.map +1 -0
  13. package/dist/custom/data/aggregate-data.action.d.ts +91 -0
  14. package/dist/custom/data/aggregate-data.action.d.ts.map +1 -0
  15. package/dist/custom/data/aggregate-data.action.js +333 -0
  16. package/dist/custom/data/aggregate-data.action.js.map +1 -0
  17. package/dist/custom/data/csv-parser.action.d.ts +68 -0
  18. package/dist/custom/data/csv-parser.action.d.ts.map +1 -0
  19. package/dist/custom/data/csv-parser.action.js +184 -0
  20. package/dist/custom/data/csv-parser.action.js.map +1 -0
  21. package/dist/custom/data/data-mapper.action.d.ts +89 -0
  22. package/dist/custom/data/data-mapper.action.d.ts.map +1 -0
  23. package/dist/custom/data/data-mapper.action.js +325 -0
  24. package/dist/custom/data/data-mapper.action.js.map +1 -0
  25. package/dist/custom/data/json-transform.action.d.ts +57 -0
  26. package/dist/custom/data/json-transform.action.d.ts.map +1 -0
  27. package/dist/custom/data/json-transform.action.js +205 -0
  28. package/dist/custom/data/json-transform.action.js.map +1 -0
  29. package/dist/custom/data/xml-parser.action.d.ts +85 -0
  30. package/dist/custom/data/xml-parser.action.d.ts.map +1 -0
  31. package/dist/custom/data/xml-parser.action.js +326 -0
  32. package/dist/custom/data/xml-parser.action.js.map +1 -0
  33. package/dist/custom/files/excel-reader.action.d.ts +86 -0
  34. package/dist/custom/files/excel-reader.action.d.ts.map +1 -0
  35. package/dist/custom/files/excel-reader.action.js +348 -0
  36. package/dist/custom/files/excel-reader.action.js.map +1 -0
  37. package/dist/custom/files/excel-writer.action.d.ts +79 -0
  38. package/dist/custom/files/excel-writer.action.d.ts.map +1 -0
  39. package/dist/custom/files/excel-writer.action.js +325 -0
  40. package/dist/custom/files/excel-writer.action.js.map +1 -0
  41. package/dist/custom/files/file-compress.action.d.ts +90 -0
  42. package/dist/custom/files/file-compress.action.d.ts.map +1 -0
  43. package/dist/custom/files/file-compress.action.js +346 -0
  44. package/dist/custom/files/file-compress.action.js.map +1 -0
  45. package/dist/custom/files/pdf-extractor.action.d.ts +86 -0
  46. package/dist/custom/files/pdf-extractor.action.d.ts.map +1 -0
  47. package/dist/custom/files/pdf-extractor.action.js +247 -0
  48. package/dist/custom/files/pdf-extractor.action.js.map +1 -0
  49. package/dist/custom/files/pdf-generator.action.d.ts +70 -0
  50. package/dist/custom/files/pdf-generator.action.d.ts.map +1 -0
  51. package/dist/custom/files/pdf-generator.action.js +286 -0
  52. package/dist/custom/files/pdf-generator.action.js.map +1 -0
  53. package/dist/custom/integration/api-rate-limiter.action.d.ts +88 -0
  54. package/dist/custom/integration/api-rate-limiter.action.d.ts.map +1 -0
  55. package/dist/custom/integration/api-rate-limiter.action.js +363 -0
  56. package/dist/custom/integration/api-rate-limiter.action.js.map +1 -0
  57. package/dist/custom/integration/graphql-query.action.d.ts +92 -0
  58. package/dist/custom/integration/graphql-query.action.d.ts.map +1 -0
  59. package/dist/custom/integration/graphql-query.action.js +251 -0
  60. package/dist/custom/integration/graphql-query.action.js.map +1 -0
  61. package/dist/custom/integration/http-request.action.d.ts +96 -0
  62. package/dist/custom/integration/http-request.action.d.ts.map +1 -0
  63. package/dist/custom/integration/http-request.action.js +316 -0
  64. package/dist/custom/integration/http-request.action.js.map +1 -0
  65. package/dist/custom/integration/oauth-flow.action.d.ts +130 -0
  66. package/dist/custom/integration/oauth-flow.action.d.ts.map +1 -0
  67. package/dist/custom/integration/oauth-flow.action.js +624 -0
  68. package/dist/custom/integration/oauth-flow.action.js.map +1 -0
  69. package/dist/custom/security/password-strength.action.d.ts +129 -0
  70. package/dist/custom/security/password-strength.action.d.ts.map +1 -0
  71. package/dist/custom/security/password-strength.action.js +463 -0
  72. package/dist/custom/security/password-strength.action.js.map +1 -0
  73. package/dist/custom/utilities/base-file-handler.d.ts +54 -0
  74. package/dist/custom/utilities/base-file-handler.d.ts.map +1 -0
  75. package/dist/custom/utilities/base-file-handler.js +167 -0
  76. package/dist/custom/utilities/base-file-handler.js.map +1 -0
  77. package/dist/custom/utilities/index.d.ts +3 -0
  78. package/dist/custom/utilities/index.d.ts.map +1 -0
  79. package/dist/custom/utilities/index.js +19 -0
  80. package/dist/custom/utilities/index.js.map +1 -0
  81. package/dist/custom/utilities/json-param-helper.d.ts +33 -0
  82. package/dist/custom/utilities/json-param-helper.d.ts.map +1 -0
  83. package/dist/custom/utilities/json-param-helper.js +66 -0
  84. package/dist/custom/utilities/json-param-helper.js.map +1 -0
  85. package/dist/custom/web/duckduckgo-rate-limiter.d.ts +85 -0
  86. package/dist/custom/web/duckduckgo-rate-limiter.d.ts.map +1 -0
  87. package/dist/custom/web/duckduckgo-rate-limiter.js +257 -0
  88. package/dist/custom/web/duckduckgo-rate-limiter.js.map +1 -0
  89. package/dist/custom/web/web-search.action.d.ts +1 -0
  90. package/dist/custom/web/web-search.action.d.ts.map +1 -1
  91. package/dist/custom/web/web-search.action.js +48 -20
  92. package/dist/custom/web/web-search.action.js.map +1 -1
  93. package/dist/custom/workflow/conditional.action.d.ts +94 -0
  94. package/dist/custom/workflow/conditional.action.d.ts.map +1 -0
  95. package/dist/custom/workflow/conditional.action.js +274 -0
  96. package/dist/custom/workflow/conditional.action.js.map +1 -0
  97. package/dist/custom/workflow/delay.action.d.ts +76 -0
  98. package/dist/custom/workflow/delay.action.d.ts.map +1 -0
  99. package/dist/custom/workflow/delay.action.js +187 -0
  100. package/dist/custom/workflow/delay.action.js.map +1 -0
  101. package/dist/custom/workflow/loop.action.d.ts +112 -0
  102. package/dist/custom/workflow/loop.action.d.ts.map +1 -0
  103. package/dist/custom/workflow/loop.action.js +380 -0
  104. package/dist/custom/workflow/loop.action.js.map +1 -0
  105. package/dist/custom/workflow/parallel-execute.action.d.ts +105 -0
  106. package/dist/custom/workflow/parallel-execute.action.d.ts.map +1 -0
  107. package/dist/custom/workflow/parallel-execute.action.js +457 -0
  108. package/dist/custom/workflow/parallel-execute.action.js.map +1 -0
  109. package/dist/custom/workflow/retry.action.d.ts +90 -0
  110. package/dist/custom/workflow/retry.action.d.ts.map +1 -0
  111. package/dist/custom/workflow/retry.action.js +378 -0
  112. package/dist/custom/workflow/retry.action.js.map +1 -0
  113. package/dist/index.d.ts +23 -0
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +75 -0
  116. package/dist/index.js.map +1 -1
  117. package/package.json +25 -10
  118. package/readme.md +11270 -101
@@ -0,0 +1,624 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || function (mod) {
25
+ if (mod && mod.__esModule) return mod;
26
+ var result = {};
27
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
+ __setModuleDefault(result, mod);
29
+ return result;
30
+ };
31
+ var __importDefault = (this && this.__importDefault) || function (mod) {
32
+ return (mod && mod.__esModule) ? mod : { "default": mod };
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.LoadOAuthFlowAction = exports.OAuthFlowAction = void 0;
36
+ const global_1 = require("@memberjunction/global");
37
+ const actions_1 = require("@memberjunction/actions");
38
+ const axios_1 = __importDefault(require("axios"));
39
+ const crypto = __importStar(require("crypto"));
40
+ /**
41
+ * Action that handles OAuth 2.0 authentication flows
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * // Authorization Code flow - Step 1: Get auth URL
46
+ * const authResult = await runAction({
47
+ * ActionName: 'OAuth Flow',
48
+ * Params: [{
49
+ * Name: 'Operation',
50
+ * Value: 'GetAuthorizationURL'
51
+ * }, {
52
+ * Name: 'Provider',
53
+ * Value: 'github'
54
+ * }, {
55
+ * Name: 'ClientID',
56
+ * Value: 'your-client-id'
57
+ * }, {
58
+ * Name: 'RedirectURI',
59
+ * Value: 'http://localhost:3000/callback'
60
+ * }, {
61
+ * Name: 'Scopes',
62
+ * Value: ['user', 'repo']
63
+ * }]
64
+ * });
65
+ *
66
+ * // Step 2: Exchange code for token
67
+ * const tokenResult = await runAction({
68
+ * ActionName: 'OAuth Flow',
69
+ * Params: [{
70
+ * Name: 'Operation',
71
+ * Value: 'ExchangeCodeForToken'
72
+ * }, {
73
+ * Name: 'Provider',
74
+ * Value: 'github'
75
+ * }, {
76
+ * Name: 'ClientID',
77
+ * Value: 'your-client-id'
78
+ * }, {
79
+ * Name: 'ClientSecret',
80
+ * Value: 'your-client-secret'
81
+ * }, {
82
+ * Name: 'Code',
83
+ * Value: 'auth-code-from-callback'
84
+ * }, {
85
+ * Name: 'RedirectURI',
86
+ * Value: 'http://localhost:3000/callback'
87
+ * }]
88
+ * });
89
+ *
90
+ * // Client Credentials flow
91
+ * const tokenResult = await runAction({
92
+ * ActionName: 'OAuth Flow',
93
+ * Params: [{
94
+ * Name: 'Operation',
95
+ * Value: 'ClientCredentials'
96
+ * }, {
97
+ * Name: 'Provider',
98
+ * Value: 'custom'
99
+ * }, {
100
+ * Name: 'TokenEndpoint',
101
+ * Value: 'https://api.example.com/oauth/token'
102
+ * }, {
103
+ * Name: 'ClientID',
104
+ * Value: 'your-client-id'
105
+ * }, {
106
+ * Name: 'ClientSecret',
107
+ * Value: 'your-client-secret'
108
+ * }]
109
+ * });
110
+ * ```
111
+ */
112
+ let OAuthFlowAction = class OAuthFlowAction extends actions_1.BaseAction {
113
+ // Common OAuth provider configurations
114
+ providers = {
115
+ github: {
116
+ authorizationEndpoint: 'https://github.com/login/oauth/authorize',
117
+ tokenEndpoint: 'https://github.com/login/oauth/access_token',
118
+ scopeSeparator: ' '
119
+ },
120
+ google: {
121
+ authorizationEndpoint: 'https://accounts.google.com/o/oauth2/v2/auth',
122
+ tokenEndpoint: 'https://oauth2.googleapis.com/token',
123
+ scopeSeparator: ' '
124
+ },
125
+ microsoft: {
126
+ authorizationEndpoint: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',
127
+ tokenEndpoint: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',
128
+ scopeSeparator: ' '
129
+ },
130
+ linkedin: {
131
+ authorizationEndpoint: 'https://www.linkedin.com/oauth/v2/authorization',
132
+ tokenEndpoint: 'https://www.linkedin.com/oauth/v2/accessToken',
133
+ scopeSeparator: ' '
134
+ }
135
+ };
136
+ /**
137
+ * Handles OAuth 2.0 authentication flows
138
+ *
139
+ * @param params - The action parameters containing:
140
+ * - Operation: "GetAuthorizationURL" | "ExchangeCodeForToken" | "RefreshToken" | "ClientCredentials" (required)
141
+ * - Provider: Provider name or "custom" (required)
142
+ * - ClientID: OAuth client ID (required)
143
+ * - ClientSecret: OAuth client secret (required for token operations)
144
+ * - RedirectURI: Callback URL (required for auth code flow)
145
+ * - Scopes: Array of scopes (optional)
146
+ * - State: State parameter for CSRF protection (optional, auto-generated if not provided)
147
+ * - Code: Authorization code (for ExchangeCodeForToken)
148
+ * - RefreshToken: Refresh token (for RefreshToken operation)
149
+ * - AuthorizationEndpoint: Custom auth endpoint (for custom provider)
150
+ * - TokenEndpoint: Custom token endpoint (for custom provider)
151
+ * - ScopeSeparator: Custom scope separator (default: space)
152
+ *
153
+ * @returns OAuth flow result (authorization URL or tokens)
154
+ */
155
+ async InternalRunAction(params) {
156
+ try {
157
+ const operation = this.getParamValue(params, 'operation');
158
+ if (!operation) {
159
+ return {
160
+ Success: false,
161
+ Message: "Operation parameter is required",
162
+ ResultCode: "MISSING_OPERATION"
163
+ };
164
+ }
165
+ switch (operation.toLowerCase()) {
166
+ case 'getauthorizationurl':
167
+ return await this.getAuthorizationURL(params);
168
+ case 'exchangecodefortoken':
169
+ return await this.exchangeCodeForToken(params);
170
+ case 'refreshtoken':
171
+ return await this.refreshToken(params);
172
+ case 'clientcredentials':
173
+ return await this.clientCredentials(params);
174
+ default:
175
+ return {
176
+ Success: false,
177
+ Message: `Invalid operation: ${operation}. Must be GetAuthorizationURL, ExchangeCodeForToken, RefreshToken, or ClientCredentials`,
178
+ ResultCode: "INVALID_OPERATION"
179
+ };
180
+ }
181
+ }
182
+ catch (error) {
183
+ return {
184
+ Success: false,
185
+ Message: `OAuth flow failed: ${error instanceof Error ? error.message : String(error)}`,
186
+ ResultCode: "OAUTH_FAILED"
187
+ };
188
+ }
189
+ }
190
+ /**
191
+ * Generate authorization URL
192
+ */
193
+ async getAuthorizationURL(params) {
194
+ const provider = this.getParamValue(params, 'provider');
195
+ const clientId = this.getParamValue(params, 'clientid');
196
+ const redirectUri = this.getParamValue(params, 'redirecturi');
197
+ const scopes = this.getParamValue(params, 'scopes');
198
+ let state = this.getParamValue(params, 'state');
199
+ const responseType = this.getParamValue(params, 'responsetype') || 'code';
200
+ // Validate required parameters
201
+ if (!provider) {
202
+ return {
203
+ Success: false,
204
+ Message: "Provider parameter is required",
205
+ ResultCode: "MISSING_PROVIDER"
206
+ };
207
+ }
208
+ if (!clientId) {
209
+ return {
210
+ Success: false,
211
+ Message: "ClientID parameter is required",
212
+ ResultCode: "MISSING_CLIENT_ID"
213
+ };
214
+ }
215
+ if (!redirectUri) {
216
+ return {
217
+ Success: false,
218
+ Message: "RedirectURI parameter is required",
219
+ ResultCode: "MISSING_REDIRECT_URI"
220
+ };
221
+ }
222
+ // Get provider config
223
+ const providerConfig = this.getProviderConfig(provider, params);
224
+ if (!providerConfig.authorizationEndpoint) {
225
+ return {
226
+ Success: false,
227
+ Message: "Authorization endpoint not configured for provider",
228
+ ResultCode: "MISSING_AUTH_ENDPOINT"
229
+ };
230
+ }
231
+ // Generate state if not provided
232
+ if (!state) {
233
+ state = crypto.randomBytes(16).toString('hex');
234
+ }
235
+ // Build authorization URL
236
+ const authUrl = new URL(providerConfig.authorizationEndpoint);
237
+ authUrl.searchParams.set('client_id', clientId);
238
+ authUrl.searchParams.set('redirect_uri', redirectUri);
239
+ authUrl.searchParams.set('response_type', responseType);
240
+ authUrl.searchParams.set('state', state);
241
+ // Add scopes if provided
242
+ if (scopes) {
243
+ const scopeString = Array.isArray(scopes)
244
+ ? scopes.join(providerConfig.scopeSeparator || ' ')
245
+ : scopes;
246
+ authUrl.searchParams.set('scope', scopeString);
247
+ }
248
+ // Add provider-specific parameters
249
+ this.addProviderSpecificParams(authUrl, provider, params);
250
+ // Add output parameters
251
+ params.Params.push({
252
+ Name: 'AuthorizationURL',
253
+ Type: 'Output',
254
+ Value: authUrl.toString()
255
+ });
256
+ params.Params.push({
257
+ Name: 'State',
258
+ Type: 'Output',
259
+ Value: state
260
+ });
261
+ return {
262
+ Success: true,
263
+ ResultCode: "SUCCESS",
264
+ Message: JSON.stringify({
265
+ message: "Authorization URL generated successfully",
266
+ authorizationUrl: authUrl.toString(),
267
+ state: state,
268
+ provider: provider
269
+ }, null, 2)
270
+ };
271
+ }
272
+ /**
273
+ * Exchange authorization code for tokens
274
+ */
275
+ async exchangeCodeForToken(params) {
276
+ const provider = this.getParamValue(params, 'provider');
277
+ const clientId = this.getParamValue(params, 'clientid');
278
+ const clientSecret = this.getParamValue(params, 'clientsecret');
279
+ const code = this.getParamValue(params, 'code');
280
+ const redirectUri = this.getParamValue(params, 'redirecturi');
281
+ // Validate required parameters
282
+ if (!provider || !clientId || !clientSecret || !code) {
283
+ return {
284
+ Success: false,
285
+ Message: "Provider, ClientID, ClientSecret, and Code are required",
286
+ ResultCode: "MISSING_PARAMETERS"
287
+ };
288
+ }
289
+ // Get provider config
290
+ const providerConfig = this.getProviderConfig(provider, params);
291
+ if (!providerConfig.tokenEndpoint) {
292
+ return {
293
+ Success: false,
294
+ Message: "Token endpoint not configured for provider",
295
+ ResultCode: "MISSING_TOKEN_ENDPOINT"
296
+ };
297
+ }
298
+ // Prepare token request
299
+ const tokenData = {
300
+ grant_type: 'authorization_code',
301
+ client_id: clientId,
302
+ client_secret: clientSecret,
303
+ code: code
304
+ };
305
+ if (redirectUri) {
306
+ tokenData.redirect_uri = redirectUri;
307
+ }
308
+ // Make token request
309
+ try {
310
+ const response = await axios_1.default.post(providerConfig.tokenEndpoint, tokenData, {
311
+ headers: {
312
+ 'Content-Type': 'application/x-www-form-urlencoded',
313
+ 'Accept': 'application/json'
314
+ },
315
+ transformRequest: [(data) => {
316
+ return Object.entries(data)
317
+ .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
318
+ .join('&');
319
+ }]
320
+ });
321
+ const tokens = response.data;
322
+ // Add output parameters
323
+ params.Params.push({
324
+ Name: 'AccessToken',
325
+ Type: 'Output',
326
+ Value: tokens.access_token
327
+ });
328
+ if (tokens.refresh_token) {
329
+ params.Params.push({
330
+ Name: 'RefreshToken',
331
+ Type: 'Output',
332
+ Value: tokens.refresh_token
333
+ });
334
+ }
335
+ if (tokens.expires_in) {
336
+ params.Params.push({
337
+ Name: 'ExpiresIn',
338
+ Type: 'Output',
339
+ Value: tokens.expires_in
340
+ });
341
+ }
342
+ if (tokens.token_type) {
343
+ params.Params.push({
344
+ Name: 'TokenType',
345
+ Type: 'Output',
346
+ Value: tokens.token_type
347
+ });
348
+ }
349
+ if (tokens.scope) {
350
+ params.Params.push({
351
+ Name: 'Scope',
352
+ Type: 'Output',
353
+ Value: tokens.scope
354
+ });
355
+ }
356
+ return {
357
+ Success: true,
358
+ ResultCode: "SUCCESS",
359
+ Message: JSON.stringify({
360
+ message: "Token exchange successful",
361
+ tokenType: tokens.token_type || 'Bearer',
362
+ expiresIn: tokens.expires_in,
363
+ scope: tokens.scope,
364
+ hasRefreshToken: !!tokens.refresh_token
365
+ }, null, 2)
366
+ };
367
+ }
368
+ catch (error) {
369
+ const errorMessage = error.response?.data?.error_description ||
370
+ error.response?.data?.error ||
371
+ error.message;
372
+ return {
373
+ Success: false,
374
+ Message: `Token exchange failed: ${errorMessage}`,
375
+ ResultCode: "TOKEN_EXCHANGE_FAILED"
376
+ };
377
+ }
378
+ }
379
+ /**
380
+ * Refresh access token
381
+ */
382
+ async refreshToken(params) {
383
+ const provider = this.getParamValue(params, 'provider');
384
+ const clientId = this.getParamValue(params, 'clientid');
385
+ const clientSecret = this.getParamValue(params, 'clientsecret');
386
+ const refreshToken = this.getParamValue(params, 'refreshtoken');
387
+ // Validate required parameters
388
+ if (!provider || !clientId || !clientSecret || !refreshToken) {
389
+ return {
390
+ Success: false,
391
+ Message: "Provider, ClientID, ClientSecret, and RefreshToken are required",
392
+ ResultCode: "MISSING_PARAMETERS"
393
+ };
394
+ }
395
+ // Get provider config
396
+ const providerConfig = this.getProviderConfig(provider, params);
397
+ if (!providerConfig.tokenEndpoint) {
398
+ return {
399
+ Success: false,
400
+ Message: "Token endpoint not configured for provider",
401
+ ResultCode: "MISSING_TOKEN_ENDPOINT"
402
+ };
403
+ }
404
+ // Prepare refresh request
405
+ const tokenData = {
406
+ grant_type: 'refresh_token',
407
+ client_id: clientId,
408
+ client_secret: clientSecret,
409
+ refresh_token: refreshToken
410
+ };
411
+ // Make refresh request
412
+ try {
413
+ const response = await axios_1.default.post(providerConfig.tokenEndpoint, tokenData, {
414
+ headers: {
415
+ 'Content-Type': 'application/x-www-form-urlencoded',
416
+ 'Accept': 'application/json'
417
+ },
418
+ transformRequest: [(data) => {
419
+ return Object.entries(data)
420
+ .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
421
+ .join('&');
422
+ }]
423
+ });
424
+ const tokens = response.data;
425
+ // Add output parameters
426
+ params.Params.push({
427
+ Name: 'AccessToken',
428
+ Type: 'Output',
429
+ Value: tokens.access_token
430
+ });
431
+ if (tokens.refresh_token) {
432
+ params.Params.push({
433
+ Name: 'RefreshToken',
434
+ Type: 'Output',
435
+ Value: tokens.refresh_token
436
+ });
437
+ }
438
+ if (tokens.expires_in) {
439
+ params.Params.push({
440
+ Name: 'ExpiresIn',
441
+ Type: 'Output',
442
+ Value: tokens.expires_in
443
+ });
444
+ }
445
+ return {
446
+ Success: true,
447
+ ResultCode: "SUCCESS",
448
+ Message: JSON.stringify({
449
+ message: "Token refresh successful",
450
+ expiresIn: tokens.expires_in,
451
+ newRefreshToken: !!tokens.refresh_token
452
+ }, null, 2)
453
+ };
454
+ }
455
+ catch (error) {
456
+ const errorMessage = error.response?.data?.error_description ||
457
+ error.response?.data?.error ||
458
+ error.message;
459
+ return {
460
+ Success: false,
461
+ Message: `Token refresh failed: ${errorMessage}`,
462
+ ResultCode: "TOKEN_REFRESH_FAILED"
463
+ };
464
+ }
465
+ }
466
+ /**
467
+ * Client credentials flow
468
+ */
469
+ async clientCredentials(params) {
470
+ const provider = this.getParamValue(params, 'provider');
471
+ const clientId = this.getParamValue(params, 'clientid');
472
+ const clientSecret = this.getParamValue(params, 'clientsecret');
473
+ const scopes = this.getParamValue(params, 'scopes');
474
+ // Validate required parameters
475
+ if (!provider || !clientId || !clientSecret) {
476
+ return {
477
+ Success: false,
478
+ Message: "Provider, ClientID, and ClientSecret are required",
479
+ ResultCode: "MISSING_PARAMETERS"
480
+ };
481
+ }
482
+ // Get provider config
483
+ const providerConfig = this.getProviderConfig(provider, params);
484
+ if (!providerConfig.tokenEndpoint) {
485
+ return {
486
+ Success: false,
487
+ Message: "Token endpoint not configured for provider",
488
+ ResultCode: "MISSING_TOKEN_ENDPOINT"
489
+ };
490
+ }
491
+ // Prepare token request
492
+ const tokenData = {
493
+ grant_type: 'client_credentials',
494
+ client_id: clientId,
495
+ client_secret: clientSecret
496
+ };
497
+ if (scopes) {
498
+ const scopeString = Array.isArray(scopes)
499
+ ? scopes.join(providerConfig.scopeSeparator || ' ')
500
+ : scopes;
501
+ tokenData.scope = scopeString;
502
+ }
503
+ // Make token request
504
+ try {
505
+ const response = await axios_1.default.post(providerConfig.tokenEndpoint, tokenData, {
506
+ headers: {
507
+ 'Content-Type': 'application/x-www-form-urlencoded',
508
+ 'Accept': 'application/json'
509
+ },
510
+ transformRequest: [(data) => {
511
+ return Object.entries(data)
512
+ .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
513
+ .join('&');
514
+ }]
515
+ });
516
+ const tokens = response.data;
517
+ // Add output parameters
518
+ params.Params.push({
519
+ Name: 'AccessToken',
520
+ Type: 'Output',
521
+ Value: tokens.access_token
522
+ });
523
+ if (tokens.expires_in) {
524
+ params.Params.push({
525
+ Name: 'ExpiresIn',
526
+ Type: 'Output',
527
+ Value: tokens.expires_in
528
+ });
529
+ }
530
+ if (tokens.token_type) {
531
+ params.Params.push({
532
+ Name: 'TokenType',
533
+ Type: 'Output',
534
+ Value: tokens.token_type
535
+ });
536
+ }
537
+ return {
538
+ Success: true,
539
+ ResultCode: "SUCCESS",
540
+ Message: JSON.stringify({
541
+ message: "Client credentials flow successful",
542
+ tokenType: tokens.token_type || 'Bearer',
543
+ expiresIn: tokens.expires_in,
544
+ scope: tokens.scope
545
+ }, null, 2)
546
+ };
547
+ }
548
+ catch (error) {
549
+ const errorMessage = error.response?.data?.error_description ||
550
+ error.response?.data?.error ||
551
+ error.message;
552
+ return {
553
+ Success: false,
554
+ Message: `Client credentials flow failed: ${errorMessage}`,
555
+ ResultCode: "CLIENT_CREDENTIALS_FAILED"
556
+ };
557
+ }
558
+ }
559
+ /**
560
+ * Get provider configuration
561
+ */
562
+ getProviderConfig(provider, params) {
563
+ if (provider.toLowerCase() === 'custom') {
564
+ return {
565
+ authorizationEndpoint: this.getParamValue(params, 'authorizationendpoint'),
566
+ tokenEndpoint: this.getParamValue(params, 'tokenendpoint'),
567
+ scopeSeparator: this.getParamValue(params, 'scopeseparator') || ' '
568
+ };
569
+ }
570
+ return this.providers[provider.toLowerCase()] || {};
571
+ }
572
+ /**
573
+ * Add provider-specific parameters to authorization URL
574
+ */
575
+ addProviderSpecificParams(url, provider, params) {
576
+ switch (provider.toLowerCase()) {
577
+ case 'google':
578
+ // Add access_type for refresh token
579
+ const accessType = this.getParamValue(params, 'accesstype');
580
+ if (accessType) {
581
+ url.searchParams.set('access_type', accessType);
582
+ }
583
+ // Add prompt for re-consent
584
+ const prompt = this.getParamValue(params, 'prompt');
585
+ if (prompt) {
586
+ url.searchParams.set('prompt', prompt);
587
+ }
588
+ break;
589
+ case 'github':
590
+ // Add login for re-authentication
591
+ const login = this.getParamValue(params, 'login');
592
+ if (login) {
593
+ url.searchParams.set('login', login);
594
+ }
595
+ break;
596
+ case 'microsoft':
597
+ // Add prompt for behavior
598
+ const msPrompt = this.getParamValue(params, 'prompt');
599
+ if (msPrompt) {
600
+ url.searchParams.set('prompt', msPrompt);
601
+ }
602
+ break;
603
+ }
604
+ }
605
+ /**
606
+ * Get parameter value by name (case-insensitive)
607
+ */
608
+ getParamValue(params, name) {
609
+ const param = params.Params.find(p => p.Name.toLowerCase() === name.toLowerCase());
610
+ return param?.Value;
611
+ }
612
+ };
613
+ exports.OAuthFlowAction = OAuthFlowAction;
614
+ exports.OAuthFlowAction = OAuthFlowAction = __decorate([
615
+ (0, global_1.RegisterClass)(actions_1.BaseAction, "OAuth Flow")
616
+ ], OAuthFlowAction);
617
+ /**
618
+ * Loader function to ensure the OAuthFlowAction class is included in the bundle
619
+ */
620
+ function LoadOAuthFlowAction() {
621
+ // Stub function to prevent tree shaking
622
+ }
623
+ exports.LoadOAuthFlowAction = LoadOAuthFlowAction;
624
+ //# sourceMappingURL=oauth-flow.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-flow.action.js","sourceRoot":"","sources":["../../../src/custom/integration/oauth-flow.action.ts"],"names":[],"mappings":"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"}