@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,348 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.LoadExcelReaderAction = exports.ExcelReaderAction = void 0;
33
+ const global_1 = require("@memberjunction/global");
34
+ const base_file_handler_1 = require("../utilities/base-file-handler");
35
+ const ExcelJS = __importStar(require("exceljs"));
36
+ /**
37
+ * Action that reads Excel files and converts them to JSON format
38
+ * Supports multiple sheets, ranges, and various data types
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * // Read entire Excel file
43
+ * await runAction({
44
+ * ActionName: 'Excel Reader',
45
+ * Params: [{
46
+ * Name: 'FileURL',
47
+ * Value: 'https://example.com/data.xlsx'
48
+ * }]
49
+ * });
50
+ *
51
+ * // Read specific sheet with headers
52
+ * await runAction({
53
+ * ActionName: 'Excel Reader',
54
+ * Params: [{
55
+ * Name: 'FileID',
56
+ * Value: 'uuid-of-excel-file'
57
+ * }, {
58
+ * Name: 'SheetName',
59
+ * Value: 'Sales Data'
60
+ * }, {
61
+ * Name: 'HasHeaders',
62
+ * Value: true
63
+ * }]
64
+ * });
65
+ *
66
+ * // Read specific range
67
+ * await runAction({
68
+ * ActionName: 'Excel Reader',
69
+ * Params: [{
70
+ * Name: 'ExcelData',
71
+ * Value: base64ExcelData
72
+ * }, {
73
+ * Name: 'Range',
74
+ * Value: 'A1:D10'
75
+ * }]
76
+ * });
77
+ * ```
78
+ */
79
+ let ExcelReaderAction = class ExcelReaderAction extends base_file_handler_1.BaseFileHandlerAction {
80
+ /**
81
+ * Reads Excel files and converts to JSON
82
+ *
83
+ * @param params - The action parameters containing:
84
+ * - FileID: UUID of MJ Storage file (optional)
85
+ * - FileURL: URL of Excel file (optional)
86
+ * - ExcelData: Base64 encoded Excel data (optional)
87
+ * - SheetName: Specific sheet name to read (optional, default: first sheet)
88
+ * - SheetIndex: Sheet index (0-based, alternative to SheetName)
89
+ * - Range: A1 notation range like 'A1:D10' (optional)
90
+ * - HasHeaders: Boolean - first row contains headers (default: true)
91
+ * - DateFormat: How to format dates - 'ISO' | 'Excel' | 'Local' (default: 'ISO')
92
+ * - EmptyCellValue: Value to use for empty cells (default: null)
93
+ * - IncludeHidden: Include hidden rows/columns (default: false)
94
+ *
95
+ * @returns Array of objects (if headers) or array of arrays
96
+ */
97
+ async InternalRunAction(params) {
98
+ try {
99
+ // Get file content
100
+ const fileContent = await this.getFileContent(params, 'exceldata', 'fileid', 'fileurl');
101
+ // Get parameters
102
+ const sheetName = this.getParamValue(params, 'sheetname');
103
+ const sheetIndex = this.getNumericParam(params, 'sheetindex', -1);
104
+ const range = this.getParamValue(params, 'range');
105
+ const hasHeaders = this.getBooleanParam(params, 'hasheaders', true);
106
+ const dateFormat = this.getParamValue(params, 'dateformat') || 'ISO';
107
+ const emptyCellValue = this.getParamValue(params, 'emptycellvalue') ?? null;
108
+ const includeHidden = this.getBooleanParam(params, 'includehidden', false);
109
+ // Convert to Buffer if needed
110
+ let excelBuffer;
111
+ if (typeof fileContent.content === 'string') {
112
+ // Check if it's base64
113
+ if (this.isBase64(fileContent.content)) {
114
+ excelBuffer = Buffer.from(fileContent.content, 'base64');
115
+ }
116
+ else {
117
+ excelBuffer = Buffer.from(fileContent.content, 'binary');
118
+ }
119
+ }
120
+ else {
121
+ excelBuffer = fileContent.content;
122
+ }
123
+ // Read Excel file
124
+ const workbook = new ExcelJS.Workbook();
125
+ await workbook.xlsx.load(excelBuffer);
126
+ // Get the target worksheet
127
+ let worksheet;
128
+ if (sheetName) {
129
+ worksheet = workbook.getWorksheet(sheetName);
130
+ if (!worksheet) {
131
+ return {
132
+ Success: false,
133
+ Message: `Sheet '${sheetName}' not found in Excel file`,
134
+ ResultCode: "SHEET_NOT_FOUND"
135
+ };
136
+ }
137
+ }
138
+ else if (sheetIndex >= 0) {
139
+ worksheet = workbook.getWorksheet(sheetIndex + 1); // ExcelJS uses 1-based index
140
+ if (!worksheet) {
141
+ return {
142
+ Success: false,
143
+ Message: `Sheet index ${sheetIndex} not found in Excel file`,
144
+ ResultCode: "SHEET_NOT_FOUND"
145
+ };
146
+ }
147
+ }
148
+ else {
149
+ // Get first worksheet
150
+ worksheet = workbook.worksheets[0];
151
+ if (!worksheet) {
152
+ return {
153
+ Success: false,
154
+ Message: "No worksheets found in Excel file",
155
+ ResultCode: "NO_SHEETS"
156
+ };
157
+ }
158
+ }
159
+ // Extract data
160
+ const data = this.extractSheetData(worksheet, {
161
+ range,
162
+ hasHeaders,
163
+ dateFormat,
164
+ emptyCellValue,
165
+ includeHidden
166
+ });
167
+ // Get workbook metadata
168
+ const metadata = {
169
+ sheetName: worksheet.name,
170
+ totalSheets: workbook.worksheets.length,
171
+ sheetNames: workbook.worksheets.map(ws => ws.name),
172
+ rowCount: data.rowCount,
173
+ columnCount: data.columnCount,
174
+ source: fileContent.source,
175
+ fileName: fileContent.fileName
176
+ };
177
+ // Add output parameter
178
+ params.Params.push({
179
+ Name: 'ExtractedData',
180
+ Type: 'Output',
181
+ Value: data.data
182
+ });
183
+ return {
184
+ Success: true,
185
+ ResultCode: "SUCCESS",
186
+ Message: JSON.stringify({
187
+ data: data.data,
188
+ ...metadata,
189
+ headers: data.headers
190
+ }, null, 2)
191
+ };
192
+ }
193
+ catch (error) {
194
+ return {
195
+ Success: false,
196
+ Message: `Failed to read Excel file: ${error instanceof Error ? error.message : String(error)}`,
197
+ ResultCode: "READ_FAILED"
198
+ };
199
+ }
200
+ }
201
+ /**
202
+ * Check if string is base64 encoded
203
+ */
204
+ isBase64(str) {
205
+ try {
206
+ return Buffer.from(str, 'base64').toString('base64') === str;
207
+ }
208
+ catch {
209
+ return false;
210
+ }
211
+ }
212
+ /**
213
+ * Extract data from worksheet
214
+ */
215
+ extractSheetData(worksheet, options) {
216
+ const rows = [];
217
+ let headers = [];
218
+ let rowCount = 0;
219
+ let columnCount = 0;
220
+ // Determine range
221
+ let startRow = 1;
222
+ let endRow = worksheet.rowCount;
223
+ let startCol = 1;
224
+ let endCol = worksheet.columnCount;
225
+ if (options.range) {
226
+ const rangeMatch = options.range.match(/([A-Z]+)(\d+):([A-Z]+)(\d+)/);
227
+ if (rangeMatch) {
228
+ startCol = this.columnToNumber(rangeMatch[1]);
229
+ startRow = parseInt(rangeMatch[2]);
230
+ endCol = this.columnToNumber(rangeMatch[3]);
231
+ endRow = parseInt(rangeMatch[4]);
232
+ }
233
+ }
234
+ // Extract headers if present
235
+ if (options.hasHeaders && startRow <= endRow) {
236
+ const headerRow = worksheet.getRow(startRow);
237
+ if (!options.includeHidden && headerRow.hidden) {
238
+ startRow++;
239
+ }
240
+ else {
241
+ for (let col = startCol; col <= endCol; col++) {
242
+ const cell = headerRow.getCell(col);
243
+ headers.push(this.getCellValue(cell, options) || `Column${col}`);
244
+ }
245
+ startRow++;
246
+ }
247
+ }
248
+ // Extract data rows
249
+ for (let rowNum = startRow; rowNum <= endRow; rowNum++) {
250
+ const row = worksheet.getRow(rowNum);
251
+ // Skip hidden rows if requested
252
+ if (!options.includeHidden && row.hidden) {
253
+ continue;
254
+ }
255
+ const rowData = options.hasHeaders ? {} : [];
256
+ let hasData = false;
257
+ for (let col = startCol; col <= endCol; col++) {
258
+ const cell = row.getCell(col);
259
+ const value = this.getCellValue(cell, options);
260
+ if (value !== null && value !== undefined && value !== '') {
261
+ hasData = true;
262
+ }
263
+ if (options.hasHeaders) {
264
+ const header = headers[col - startCol];
265
+ rowData[header] = value;
266
+ }
267
+ else {
268
+ rowData.push(value);
269
+ }
270
+ }
271
+ // Only add row if it has data
272
+ if (hasData || options.emptyCellValue !== null) {
273
+ rows.push(rowData);
274
+ rowCount++;
275
+ }
276
+ }
277
+ columnCount = endCol - startCol + 1;
278
+ return {
279
+ data: rows,
280
+ headers: options.hasHeaders ? headers : null,
281
+ rowCount,
282
+ columnCount
283
+ };
284
+ }
285
+ /**
286
+ * Get cell value with proper type handling
287
+ */
288
+ getCellValue(cell, options) {
289
+ if (!cell || cell.value === null || cell.value === undefined) {
290
+ return options.emptyCellValue;
291
+ }
292
+ // Handle different cell types
293
+ switch (cell.type) {
294
+ case ExcelJS.ValueType.Number:
295
+ return cell.value;
296
+ case ExcelJS.ValueType.String:
297
+ return cell.value;
298
+ case ExcelJS.ValueType.Date:
299
+ const date = cell.value;
300
+ switch (options.dateFormat) {
301
+ case 'Excel':
302
+ return cell.value; // Return as Excel serial number
303
+ case 'Local':
304
+ return date.toLocaleString();
305
+ case 'ISO':
306
+ default:
307
+ return date.toISOString();
308
+ }
309
+ case ExcelJS.ValueType.Boolean:
310
+ return cell.value;
311
+ case ExcelJS.ValueType.Error:
312
+ return `#ERROR: ${cell.value}`;
313
+ case ExcelJS.ValueType.Formula:
314
+ // Return the result of the formula
315
+ return cell.value.result || options.emptyCellValue;
316
+ case ExcelJS.ValueType.Hyperlink:
317
+ const hyperlink = cell.value;
318
+ return hyperlink.text || hyperlink.hyperlink;
319
+ case ExcelJS.ValueType.RichText:
320
+ const richText = cell.value;
321
+ return richText.richText.map(rt => rt.text).join('');
322
+ default:
323
+ return cell.value;
324
+ }
325
+ }
326
+ /**
327
+ * Convert column letter to number (A=1, B=2, etc.)
328
+ */
329
+ columnToNumber(column) {
330
+ let result = 0;
331
+ for (let i = 0; i < column.length; i++) {
332
+ result = result * 26 + (column.charCodeAt(i) - 64);
333
+ }
334
+ return result;
335
+ }
336
+ };
337
+ exports.ExcelReaderAction = ExcelReaderAction;
338
+ exports.ExcelReaderAction = ExcelReaderAction = __decorate([
339
+ (0, global_1.RegisterClass)(base_file_handler_1.BaseFileHandlerAction, "Excel Reader")
340
+ ], ExcelReaderAction);
341
+ /**
342
+ * Loader function to ensure the ExcelReaderAction class is included in the bundle
343
+ */
344
+ function LoadExcelReaderAction() {
345
+ // Stub function to prevent tree shaking
346
+ }
347
+ exports.LoadExcelReaderAction = LoadExcelReaderAction;
348
+ //# sourceMappingURL=excel-reader.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"excel-reader.action.js","sourceRoot":"","sources":["../../../src/custom/files/excel-reader.action.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mDAAuD;AACvD,sEAAuE;AACvE,iDAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEI,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,yCAAqB;IAExD;;;;;;;;;;;;;;;;OAgBG;IACO,KAAK,CAAC,iBAAiB,CAAC,MAAuB;QACrD,IAAI,CAAC;YACD,mBAAmB;YACnB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAExF,iBAAiB;YACjB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;YAClE,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;YACpE,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,KAAK,CAAC;YACrE,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,IAAI,CAAC;YAC5E,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;YAE3E,8BAA8B;YAC9B,IAAI,WAAmB,CAAC;YACxB,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC1C,uBAAuB;gBACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;oBACrC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC7D,CAAC;qBAAM,CAAC;oBACJ,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC7D,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;YACtC,CAAC;YAED,kBAAkB;YAClB,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEtC,2BAA2B;YAC3B,IAAI,SAA4B,CAAC;YACjC,IAAI,SAAS,EAAE,CAAC;gBACZ,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;oBACb,OAAO;wBACH,OAAO,EAAE,KAAK;wBACd,OAAO,EAAE,UAAU,SAAS,2BAA2B;wBACvD,UAAU,EAAE,iBAAiB;qBAChC,CAAC;gBACN,CAAC;YACL,CAAC;iBAAM,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;gBACzB,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,6BAA6B;gBAChF,IAAI,CAAC,SAAS,EAAE,CAAC;oBACb,OAAO;wBACH,OAAO,EAAE,KAAK;wBACd,OAAO,EAAE,eAAe,UAAU,0BAA0B;wBAC5D,UAAU,EAAE,iBAAiB;qBAChC,CAAC;gBACN,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,sBAAsB;gBACtB,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACb,OAAO;wBACH,OAAO,EAAE,KAAK;wBACd,OAAO,EAAE,mCAAmC;wBAC5C,UAAU,EAAE,WAAW;qBAC1B,CAAC;gBACN,CAAC;YACL,CAAC;YAED,eAAe;YACf,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;gBAC1C,KAAK;gBACL,UAAU;gBACV,UAAU;gBACV,cAAc;gBACd,aAAa;aAChB,CAAC,CAAC;YAEH,wBAAwB;YACxB,MAAM,QAAQ,GAAG;gBACb,SAAS,EAAE,SAAS,CAAC,IAAI;gBACzB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM;gBACvC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;gBAClD,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,QAAQ,EAAE,WAAW,CAAC,QAAQ;aACjC,CAAC;YAEF,uBAAuB;YACvB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,IAAI,CAAC,IAAI;aACnB,CAAC,CAAC;YAEH,OAAO;gBACH,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;oBACpB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,GAAG,QAAQ;oBACX,OAAO,EAAE,IAAI,CAAC,OAAO;iBACxB,EAAE,IAAI,EAAE,CAAC,CAAC;aACd,CAAC;QAEN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBAC/F,UAAU,EAAE,aAAa;aAC5B,CAAC;QACN,CAAC;IACL,CAAC;IAED;;OAEG;IACK,QAAQ,CAAC,GAAW;QACxB,IAAI,CAAC;YACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,SAA4B,EAAE,OAAY;QAC/D,MAAM,IAAI,GAAU,EAAE,CAAC;QACvB,IAAI,OAAO,GAAa,EAAE,CAAC;QAC3B,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,kBAAkB;QAClB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC;QAChC,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC;QAEnC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACtE,IAAI,UAAU,EAAE,CAAC;gBACb,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9C,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,CAAC;QACL,CAAC;QAED,6BAA6B;QAC7B,IAAI,OAAO,CAAC,UAAU,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7C,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;gBAC7C,QAAQ,EAAE,CAAC;YACf,CAAC;iBAAM,CAAC;gBACJ,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;oBAC5C,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACpC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,SAAS,GAAG,EAAE,CAAC,CAAC;gBACrE,CAAC;gBACD,QAAQ,EAAE,CAAC;YACf,CAAC;QACL,CAAC;QAED,oBAAoB;QACpB,KAAK,IAAI,MAAM,GAAG,QAAQ,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;YACrD,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAErC,gCAAgC;YAChC,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACvC,SAAS;YACb,CAAC;YAED,MAAM,OAAO,GAAQ,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,IAAI,OAAO,GAAG,KAAK,CAAC;YAEpB,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;gBAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAE/C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;oBACxD,OAAO,GAAG,IAAI,CAAC;gBACnB,CAAC;gBAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;oBACrB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC;oBACvC,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACxB,CAAC;YACL,CAAC;YAED,8BAA8B;YAC9B,IAAI,OAAO,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;gBAC7C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACnB,QAAQ,EAAE,CAAC;YACf,CAAC;QACL,CAAC;QAED,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC;QAEpC,OAAO;YACH,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;YAC5C,QAAQ;YACR,WAAW;SACd,CAAC;IACN,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,IAAkB,EAAE,OAAY;QACjD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC3D,OAAO,OAAO,CAAC,cAAc,CAAC;QAClC,CAAC;QAED,8BAA8B;QAC9B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,OAAO,CAAC,SAAS,CAAC,MAAM;gBACzB,OAAO,IAAI,CAAC,KAAK,CAAC;YAEtB,KAAK,OAAO,CAAC,SAAS,CAAC,MAAM;gBACzB,OAAO,IAAI,CAAC,KAAK,CAAC;YAEtB,KAAK,OAAO,CAAC,SAAS,CAAC,IAAI;gBACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAa,CAAC;gBAChC,QAAQ,OAAO,CAAC,UAAU,EAAE,CAAC;oBACzB,KAAK,OAAO;wBACR,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,gCAAgC;oBACvD,KAAK,OAAO;wBACR,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;oBACjC,KAAK,KAAK,CAAC;oBACX;wBACI,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;gBAClC,CAAC;YAEL,KAAK,OAAO,CAAC,SAAS,CAAC,OAAO;gBAC1B,OAAO,IAAI,CAAC,KAAK,CAAC;YAEtB,KAAK,OAAO,CAAC,SAAS,CAAC,KAAK;gBACxB,OAAO,WAAW,IAAI,CAAC,KAAK,EAAE,CAAC;YAEnC,KAAK,OAAO,CAAC,SAAS,CAAC,OAAO;gBAC1B,mCAAmC;gBACnC,OAAQ,IAAI,CAAC,KAAa,CAAC,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;YAEhE,KAAK,OAAO,CAAC,SAAS,CAAC,SAAS;gBAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAmC,CAAC;gBAC3D,OAAO,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,SAAS,CAAC;YAEjD,KAAK,OAAO,CAAC,SAAS,CAAC,QAAQ;gBAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAkC,CAAC;gBACzD,OAAO,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEzD;gBACI,OAAO,IAAI,CAAC,KAAK,CAAC;QAC1B,CAAC;IACL,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,MAAc;QACjC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ,CAAA;AA5RY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,sBAAa,EAAC,yCAAqB,EAAE,cAAc,CAAC;GACxC,iBAAiB,CA4R7B;AAED;;GAEG;AACH,SAAgB,qBAAqB;IACjC,wCAAwC;AAC5C,CAAC;AAFD,sDAEC"}
@@ -0,0 +1,79 @@
1
+ import { ActionResultSimple, RunActionParams } from "@memberjunction/actions-base";
2
+ import { BaseFileHandlerAction } from "../utilities/base-file-handler";
3
+ /**
4
+ * Action that creates Excel files from JSON data
5
+ * Supports multiple sheets, formatting, and formulas
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * // Create simple Excel with one sheet
10
+ * await runAction({
11
+ * ActionName: 'Excel Writer',
12
+ * Params: [{
13
+ * Name: 'Sheets',
14
+ * Value: [{
15
+ * name: 'Sales Data',
16
+ * data: [
17
+ * { Product: 'Widget A', Sales: 100, Revenue: 1000 },
18
+ * { Product: 'Widget B', Sales: 150, Revenue: 1500 }
19
+ * ]
20
+ * }]
21
+ * }]
22
+ * });
23
+ *
24
+ * // Create Excel with multiple sheets and formatting
25
+ * await runAction({
26
+ * ActionName: 'Excel Writer',
27
+ * Params: [{
28
+ * Name: 'Sheets',
29
+ * Value: [{
30
+ * name: 'Q1 Sales',
31
+ * data: salesData,
32
+ * headers: ['Product', 'Units', 'Revenue'],
33
+ * columnWidths: [20, 10, 15],
34
+ * styles: {
35
+ * headerStyle: { font: { bold: true }, fill: { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FF4472C4' } } }
36
+ * }
37
+ * }, {
38
+ * name: 'Summary',
39
+ * data: summaryData
40
+ * }]
41
+ * }]
42
+ * });
43
+ * ```
44
+ */
45
+ export declare class ExcelWriterAction extends BaseFileHandlerAction {
46
+ /**
47
+ * Creates Excel files from JSON data
48
+ *
49
+ * @param params - The action parameters containing:
50
+ * - Sheets: Array of sheet definitions, each containing:
51
+ * - name: Sheet name (required)
52
+ * - data: Array of data rows (required)
53
+ * - headers: Array of column headers (optional, derived from data if not provided)
54
+ * - columnWidths: Array of column widths in characters (optional)
55
+ * - styles: Object with style definitions (optional)
56
+ * - formulas: Array of formula definitions (optional)
57
+ * - OutputFileID: Optional MJ Storage file ID to save to
58
+ * - FileName: Name for the generated Excel file (default: 'workbook.xlsx')
59
+ * - Author: Author metadata (optional)
60
+ * - Title: Title metadata (optional)
61
+ * - Description: Description metadata (optional)
62
+ *
63
+ * @returns Base64 encoded Excel data or FileID if saved
64
+ */
65
+ protected InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
66
+ /**
67
+ * Populate worksheet with data
68
+ */
69
+ private populateWorksheet;
70
+ /**
71
+ * Apply style to a row
72
+ */
73
+ private applyRowStyle;
74
+ }
75
+ /**
76
+ * Loader function to ensure the ExcelWriterAction class is included in the bundle
77
+ */
78
+ export declare function LoadExcelWriterAction(): void;
79
+ //# sourceMappingURL=excel-writer.action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"excel-writer.action.d.ts","sourceRoot":"","sources":["../../../src/custom/files/excel-writer.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAIvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,qBACa,iBAAkB,SAAQ,qBAAqB;IAExD;;;;;;;;;;;;;;;;;;OAkBG;cACa,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA+HvF;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyFzB;;OAEG;IACH,OAAO,CAAC,aAAa;CAiBxB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,SAEpC"}