@memberjunction/core-actions 2.54.0 → 2.55.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 +72 -0
  86. package/dist/custom/web/duckduckgo-rate-limiter.d.ts.map +1 -0
  87. package/dist/custom/web/duckduckgo-rate-limiter.js +175 -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,91 @@
1
+ import { ActionResultSimple, RunActionParams } from "@memberjunction/actions-base";
2
+ import { BaseAction } from "@memberjunction/actions";
3
+ /**
4
+ * Action that performs aggregation operations on arrays of data
5
+ * Supports grouping, counting, summing, averaging, and other statistical operations
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * // Simple aggregation
10
+ * await runAction({
11
+ * ActionName: 'Aggregate Data',
12
+ * Params: [{
13
+ * Name: 'InputData',
14
+ * Value: [
15
+ * { category: 'A', value: 10 },
16
+ * { category: 'A', value: 20 },
17
+ * { category: 'B', value: 15 }
18
+ * ]
19
+ * }, {
20
+ * Name: 'Aggregations',
21
+ * Value: [
22
+ * { field: 'value', operation: 'sum', outputName: 'totalValue' },
23
+ * { field: 'value', operation: 'avg', outputName: 'avgValue' }
24
+ * ]
25
+ * }]
26
+ * });
27
+ *
28
+ * // Group by aggregation
29
+ * await runAction({
30
+ * ActionName: 'Aggregate Data',
31
+ * Params: [{
32
+ * Name: 'InputData',
33
+ * Value: salesData
34
+ * }, {
35
+ * Name: 'GroupBy',
36
+ * Value: ['region', 'product']
37
+ * }, {
38
+ * Name: 'Aggregations',
39
+ * Value: [
40
+ * { field: 'sales', operation: 'sum', outputName: 'totalSales' },
41
+ * { field: 'sales', operation: 'count', outputName: 'transactionCount' }
42
+ * ]
43
+ * }]
44
+ * });
45
+ * ```
46
+ */
47
+ export declare class AggregateDataAction extends BaseAction {
48
+ /**
49
+ * Performs aggregation operations on data arrays
50
+ *
51
+ * @param params - The action parameters containing:
52
+ * - InputData: Array of objects to aggregate
53
+ * - GroupBy: Field name(s) to group by (string or array, optional)
54
+ * - Aggregations: Array of aggregation specifications
55
+ * - IncludeEmptyGroups: Include groups with no data (default: false)
56
+ * - SortBy: Field to sort results by (optional)
57
+ * - SortOrder: "asc" | "desc" (default: "asc")
58
+ *
59
+ * @returns Aggregated results
60
+ */
61
+ protected InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
62
+ /**
63
+ * Aggregate without grouping (single result)
64
+ */
65
+ private aggregateWithoutGrouping;
66
+ /**
67
+ * Aggregate with grouping (multiple results)
68
+ */
69
+ private aggregateWithGrouping;
70
+ /**
71
+ * Calculate a single aggregation
72
+ */
73
+ private calculateAggregation;
74
+ /**
75
+ * Get numeric value, handling null/undefined
76
+ */
77
+ private getNumericValue;
78
+ /**
79
+ * Calculate standard deviation
80
+ */
81
+ private calculateStandardDeviation;
82
+ /**
83
+ * Calculate variance
84
+ */
85
+ private calculateVariance;
86
+ }
87
+ /**
88
+ * Loader function to ensure the AggregateDataAction class is included in the bundle
89
+ */
90
+ export declare function LoadAggregateDataAction(): void;
91
+ //# sourceMappingURL=aggregate-data.action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate-data.action.d.ts","sourceRoot":"","sources":["../../../src/custom/data/aggregate-data.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,qBACa,mBAAoB,SAAQ,UAAU;IAE/C;;;;;;;;;;;;OAYG;cACa,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA2IvF;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAUhC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAmC7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA0D5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAKlC;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAQ5B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,SAEtC"}
@@ -0,0 +1,333 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.LoadAggregateDataAction = exports.AggregateDataAction = void 0;
10
+ const actions_1 = require("@memberjunction/actions");
11
+ const global_1 = require("@memberjunction/global");
12
+ const json_param_helper_1 = require("../utilities/json-param-helper");
13
+ /**
14
+ * Action that performs aggregation operations on arrays of data
15
+ * Supports grouping, counting, summing, averaging, and other statistical operations
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * // Simple aggregation
20
+ * await runAction({
21
+ * ActionName: 'Aggregate Data',
22
+ * Params: [{
23
+ * Name: 'InputData',
24
+ * Value: [
25
+ * { category: 'A', value: 10 },
26
+ * { category: 'A', value: 20 },
27
+ * { category: 'B', value: 15 }
28
+ * ]
29
+ * }, {
30
+ * Name: 'Aggregations',
31
+ * Value: [
32
+ * { field: 'value', operation: 'sum', outputName: 'totalValue' },
33
+ * { field: 'value', operation: 'avg', outputName: 'avgValue' }
34
+ * ]
35
+ * }]
36
+ * });
37
+ *
38
+ * // Group by aggregation
39
+ * await runAction({
40
+ * ActionName: 'Aggregate Data',
41
+ * Params: [{
42
+ * Name: 'InputData',
43
+ * Value: salesData
44
+ * }, {
45
+ * Name: 'GroupBy',
46
+ * Value: ['region', 'product']
47
+ * }, {
48
+ * Name: 'Aggregations',
49
+ * Value: [
50
+ * { field: 'sales', operation: 'sum', outputName: 'totalSales' },
51
+ * { field: 'sales', operation: 'count', outputName: 'transactionCount' }
52
+ * ]
53
+ * }]
54
+ * });
55
+ * ```
56
+ */
57
+ let AggregateDataAction = class AggregateDataAction extends actions_1.BaseAction {
58
+ /**
59
+ * Performs aggregation operations on data arrays
60
+ *
61
+ * @param params - The action parameters containing:
62
+ * - InputData: Array of objects to aggregate
63
+ * - GroupBy: Field name(s) to group by (string or array, optional)
64
+ * - Aggregations: Array of aggregation specifications
65
+ * - IncludeEmptyGroups: Include groups with no data (default: false)
66
+ * - SortBy: Field to sort results by (optional)
67
+ * - SortOrder: "asc" | "desc" (default: "asc")
68
+ *
69
+ * @returns Aggregated results
70
+ */
71
+ async InternalRunAction(params) {
72
+ try {
73
+ // Extract parameters
74
+ let inputData;
75
+ let aggregations;
76
+ try {
77
+ inputData = json_param_helper_1.JSONParamHelper.getRequiredJSONParam(params, 'InputData');
78
+ }
79
+ catch (error) {
80
+ return {
81
+ Success: false,
82
+ Message: error instanceof Error ? error.message : String(error),
83
+ ResultCode: "MISSING_PARAMETERS"
84
+ };
85
+ }
86
+ try {
87
+ aggregations = json_param_helper_1.JSONParamHelper.getRequiredJSONParam(params, 'Aggregations');
88
+ }
89
+ catch (error) {
90
+ return {
91
+ Success: false,
92
+ Message: error instanceof Error ? error.message : String(error),
93
+ ResultCode: "MISSING_PARAMETERS"
94
+ };
95
+ }
96
+ const groupByParam = params.Params.find(p => p.Name.trim().toLowerCase() === 'groupby');
97
+ const includeEmptyGroupsParam = params.Params.find(p => p.Name.trim().toLowerCase() === 'includeemptygroups');
98
+ const sortByParam = params.Params.find(p => p.Name.trim().toLowerCase() === 'sortby');
99
+ const sortOrderParam = params.Params.find(p => p.Name.trim().toLowerCase() === 'sortorder');
100
+ if (!Array.isArray(inputData)) {
101
+ return {
102
+ Success: false,
103
+ Message: "InputData must be an array",
104
+ ResultCode: "INVALID_INPUT_DATA"
105
+ };
106
+ }
107
+ // Parse group by fields
108
+ let groupByFields = [];
109
+ if (groupByParam?.Value) {
110
+ if (typeof groupByParam.Value === 'string') {
111
+ groupByFields = [groupByParam.Value];
112
+ }
113
+ else if (Array.isArray(groupByParam.Value)) {
114
+ groupByFields = groupByParam.Value;
115
+ }
116
+ else {
117
+ return {
118
+ Success: false,
119
+ Message: "GroupBy must be a string or array of strings",
120
+ ResultCode: "INVALID_GROUP_BY"
121
+ };
122
+ }
123
+ }
124
+ if (!Array.isArray(aggregations)) {
125
+ return {
126
+ Success: false,
127
+ Message: "Aggregations must be an array",
128
+ ResultCode: "INVALID_AGGREGATIONS"
129
+ };
130
+ }
131
+ // Validate aggregations
132
+ const validOperations = ['sum', 'avg', 'min', 'max', 'count', 'countDistinct', 'first', 'last', 'stdDev', 'variance'];
133
+ for (const agg of aggregations) {
134
+ if (!agg.operation || !validOperations.includes(agg.operation)) {
135
+ return {
136
+ Success: false,
137
+ Message: `Invalid operation: ${agg.operation}. Valid operations are: ${validOperations.join(', ')}`,
138
+ ResultCode: "INVALID_OPERATION"
139
+ };
140
+ }
141
+ if (!agg.outputName) {
142
+ return {
143
+ Success: false,
144
+ Message: "Each aggregation must have an outputName",
145
+ ResultCode: "MISSING_OUTPUT_NAME"
146
+ };
147
+ }
148
+ }
149
+ // Get other parameters
150
+ const includeEmptyGroups = includeEmptyGroupsParam?.Value?.toString()?.toLowerCase() === 'true' ?? false;
151
+ const sortBy = sortByParam?.Value?.toString();
152
+ const sortOrder = (sortOrderParam?.Value?.toString() || 'asc').toLowerCase();
153
+ // Perform aggregation
154
+ let result;
155
+ if (groupByFields.length > 0) {
156
+ result = this.aggregateWithGrouping(inputData, groupByFields, aggregations, includeEmptyGroups);
157
+ }
158
+ else {
159
+ result = this.aggregateWithoutGrouping(inputData, aggregations);
160
+ }
161
+ // Sort results if requested
162
+ if (sortBy && Array.isArray(result)) {
163
+ result.sort((a, b) => {
164
+ const aVal = a[sortBy];
165
+ const bVal = b[sortBy];
166
+ if (aVal === bVal)
167
+ return 0;
168
+ if (aVal === null || aVal === undefined)
169
+ return 1;
170
+ if (bVal === null || bVal === undefined)
171
+ return -1;
172
+ const comparison = aVal < bVal ? -1 : 1;
173
+ return sortOrder === 'asc' ? comparison : -comparison;
174
+ });
175
+ }
176
+ // Prepare output
177
+ const output = {
178
+ result: result,
179
+ rowCount: Array.isArray(result) ? result.length : 1,
180
+ inputRowCount: inputData.length,
181
+ groupBy: groupByFields.length > 0 ? groupByFields : undefined,
182
+ aggregations: aggregations.map(a => ({
183
+ field: a.field,
184
+ operation: a.operation,
185
+ outputName: a.outputName
186
+ }))
187
+ };
188
+ return {
189
+ Success: true,
190
+ ResultCode: "SUCCESS",
191
+ Message: JSON.stringify(output, null, 2)
192
+ };
193
+ }
194
+ catch (error) {
195
+ return {
196
+ Success: false,
197
+ Message: `Failed to aggregate data: ${error instanceof Error ? error.message : String(error)}`,
198
+ ResultCode: "FAILED"
199
+ };
200
+ }
201
+ }
202
+ /**
203
+ * Aggregate without grouping (single result)
204
+ */
205
+ aggregateWithoutGrouping(data, aggregations) {
206
+ const result = {};
207
+ for (const agg of aggregations) {
208
+ result[agg.outputName] = this.calculateAggregation(data, agg);
209
+ }
210
+ return result;
211
+ }
212
+ /**
213
+ * Aggregate with grouping (multiple results)
214
+ */
215
+ aggregateWithGrouping(data, groupByFields, aggregations, includeEmptyGroups) {
216
+ // Group the data
217
+ const groups = new Map();
218
+ for (const item of data) {
219
+ const key = groupByFields.map(field => item[field] ?? 'null').join('|');
220
+ if (!groups.has(key)) {
221
+ groups.set(key, []);
222
+ }
223
+ groups.get(key).push(item);
224
+ }
225
+ // Calculate aggregations for each group
226
+ const results = [];
227
+ for (const [key, groupData] of groups) {
228
+ const result = {};
229
+ // Add group by values
230
+ const keyParts = key.split('|');
231
+ groupByFields.forEach((field, index) => {
232
+ result[field] = keyParts[index] === 'null' ? null : groupData[0][field];
233
+ });
234
+ // Calculate aggregations
235
+ for (const agg of aggregations) {
236
+ result[agg.outputName] = this.calculateAggregation(groupData, agg);
237
+ }
238
+ results.push(result);
239
+ }
240
+ return results;
241
+ }
242
+ /**
243
+ * Calculate a single aggregation
244
+ */
245
+ calculateAggregation(data, aggregation) {
246
+ if (data.length === 0) {
247
+ return aggregation.operation === 'count' ? 0 : null;
248
+ }
249
+ switch (aggregation.operation) {
250
+ case 'count':
251
+ return data.length;
252
+ case 'countDistinct':
253
+ if (!aggregation.field)
254
+ return data.length;
255
+ const uniqueValues = new Set(data.map(item => item[aggregation.field]));
256
+ return uniqueValues.size;
257
+ case 'sum':
258
+ return data.reduce((sum, item) => {
259
+ const value = this.getNumericValue(item[aggregation.field]);
260
+ return sum + (value ?? 0);
261
+ }, 0);
262
+ case 'avg':
263
+ const total = data.reduce((sum, item) => {
264
+ const value = this.getNumericValue(item[aggregation.field]);
265
+ return sum + (value ?? 0);
266
+ }, 0);
267
+ return total / data.length;
268
+ case 'min':
269
+ return data.reduce((min, item) => {
270
+ const value = item[aggregation.field];
271
+ if (value === null || value === undefined)
272
+ return min;
273
+ return min === null || value < min ? value : min;
274
+ }, null);
275
+ case 'max':
276
+ return data.reduce((max, item) => {
277
+ const value = item[aggregation.field];
278
+ if (value === null || value === undefined)
279
+ return max;
280
+ return max === null || value > max ? value : max;
281
+ }, null);
282
+ case 'first':
283
+ return data[0][aggregation.field];
284
+ case 'last':
285
+ return data[data.length - 1][aggregation.field];
286
+ case 'stdDev':
287
+ return this.calculateStandardDeviation(data, aggregation.field);
288
+ case 'variance':
289
+ return this.calculateVariance(data, aggregation.field);
290
+ default:
291
+ return null;
292
+ }
293
+ }
294
+ /**
295
+ * Get numeric value, handling null/undefined
296
+ */
297
+ getNumericValue(value) {
298
+ if (value === null || value === undefined)
299
+ return null;
300
+ const num = Number(value);
301
+ return isNaN(num) ? null : num;
302
+ }
303
+ /**
304
+ * Calculate standard deviation
305
+ */
306
+ calculateStandardDeviation(data, field) {
307
+ const variance = this.calculateVariance(data, field);
308
+ return variance === null ? null : Math.sqrt(variance);
309
+ }
310
+ /**
311
+ * Calculate variance
312
+ */
313
+ calculateVariance(data, field) {
314
+ const values = data.map(item => this.getNumericValue(item[field])).filter(v => v !== null);
315
+ if (values.length === 0)
316
+ return null;
317
+ const mean = values.reduce((sum, val) => sum + val, 0) / values.length;
318
+ const squaredDifferences = values.map(val => Math.pow(val - mean, 2));
319
+ return squaredDifferences.reduce((sum, val) => sum + val, 0) / values.length;
320
+ }
321
+ };
322
+ exports.AggregateDataAction = AggregateDataAction;
323
+ exports.AggregateDataAction = AggregateDataAction = __decorate([
324
+ (0, global_1.RegisterClass)(actions_1.BaseAction, "Aggregate Data")
325
+ ], AggregateDataAction);
326
+ /**
327
+ * Loader function to ensure the AggregateDataAction class is included in the bundle
328
+ */
329
+ function LoadAggregateDataAction() {
330
+ // Stub function to prevent tree shaking
331
+ }
332
+ exports.LoadAggregateDataAction = LoadAggregateDataAction;
333
+ //# sourceMappingURL=aggregate-data.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate-data.action.js","sourceRoot":"","sources":["../../../src/custom/data/aggregate-data.action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import { ActionResultSimple, RunActionParams } from "@memberjunction/actions-base";
2
+ import { BaseFileHandlerAction } from "../utilities/base-file-handler";
3
+ /**
4
+ * Action that parses CSV data into structured JSON format
5
+ * Supports multiple input sources, custom delimiters, and various parsing options
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * // Parse CSV with headers
10
+ * await runAction({
11
+ * ActionName: 'CSV Parser',
12
+ * Params: [{
13
+ * Name: 'CSVData',
14
+ * Value: 'Name,Age,City\nJohn,30,NYC\nJane,25,LA'
15
+ * }]
16
+ * });
17
+ *
18
+ * // Parse CSV from URL with custom delimiter
19
+ * await runAction({
20
+ * ActionName: 'CSV Parser',
21
+ * Params: [{
22
+ * Name: 'FileURL',
23
+ * Value: 'https://example.com/data.csv'
24
+ * }, {
25
+ * Name: 'Delimiter',
26
+ * Value: ';'
27
+ * }]
28
+ * });
29
+ *
30
+ * // Parse CSV without headers
31
+ * await runAction({
32
+ * ActionName: 'CSV Parser',
33
+ * Params: [{
34
+ * Name: 'CSVData',
35
+ * Value: 'John,30,NYC\nJane,25,LA'
36
+ * }, {
37
+ * Name: 'HasHeaders',
38
+ * Value: false
39
+ * }]
40
+ * });
41
+ * ```
42
+ */
43
+ export declare class CSVParserAction extends BaseFileHandlerAction {
44
+ /**
45
+ * Parses CSV data into JSON format
46
+ *
47
+ * @param params - The action parameters containing:
48
+ * - CSVData: String containing CSV data (direct input)
49
+ * - FileID: UUID of MJ Storage file (alternative)
50
+ * - FileURL: URL of CSV file (alternative)
51
+ * - HasHeaders: Boolean indicating if first row contains headers (default: true)
52
+ * - Delimiter: Field delimiter character (default: ",")
53
+ * - QuoteChar: Character used to quote fields (default: '"')
54
+ * - EscapeChar: Character used to escape quotes (default: '"')
55
+ * - SkipEmptyRows: Skip empty rows (default: true)
56
+ * - TrimValues: Trim whitespace from values (default: true)
57
+ * - DynamicTyping: Convert numeric strings to numbers (default: true)
58
+ * - MaxRows: Maximum number of rows to parse (optional)
59
+ *
60
+ * @returns Parsed CSV data as array of objects (if headers) or array of arrays
61
+ */
62
+ protected InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
63
+ }
64
+ /**
65
+ * Loader function to ensure the CSVParserAction class is included in the bundle
66
+ */
67
+ export declare function LoadCSVParserAction(): void;
68
+ //# sourceMappingURL=csv-parser.action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv-parser.action.d.ts","sourceRoot":"","sources":["../../../src/custom/data/csv-parser.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAGvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,qBACa,eAAgB,SAAQ,qBAAqB;IAEtD;;;;;;;;;;;;;;;;;OAiBG;cACa,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAwF1F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,SAElC"}