@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.
- package/dist/custom/ai/execute-ai-prompt.action.d.ts +94 -0
- package/dist/custom/ai/execute-ai-prompt.action.d.ts.map +1 -0
- package/dist/custom/ai/execute-ai-prompt.action.js +274 -0
- package/dist/custom/ai/execute-ai-prompt.action.js.map +1 -0
- package/dist/custom/communication/slack-webhook.action.d.ts +101 -0
- package/dist/custom/communication/slack-webhook.action.d.ts.map +1 -0
- package/dist/custom/communication/slack-webhook.action.js +269 -0
- package/dist/custom/communication/slack-webhook.action.js.map +1 -0
- package/dist/custom/communication/teams-webhook.action.d.ts +96 -0
- package/dist/custom/communication/teams-webhook.action.d.ts.map +1 -0
- package/dist/custom/communication/teams-webhook.action.js +275 -0
- package/dist/custom/communication/teams-webhook.action.js.map +1 -0
- package/dist/custom/data/aggregate-data.action.d.ts +91 -0
- package/dist/custom/data/aggregate-data.action.d.ts.map +1 -0
- package/dist/custom/data/aggregate-data.action.js +333 -0
- package/dist/custom/data/aggregate-data.action.js.map +1 -0
- package/dist/custom/data/csv-parser.action.d.ts +68 -0
- package/dist/custom/data/csv-parser.action.d.ts.map +1 -0
- package/dist/custom/data/csv-parser.action.js +184 -0
- package/dist/custom/data/csv-parser.action.js.map +1 -0
- package/dist/custom/data/data-mapper.action.d.ts +89 -0
- package/dist/custom/data/data-mapper.action.d.ts.map +1 -0
- package/dist/custom/data/data-mapper.action.js +325 -0
- package/dist/custom/data/data-mapper.action.js.map +1 -0
- package/dist/custom/data/json-transform.action.d.ts +57 -0
- package/dist/custom/data/json-transform.action.d.ts.map +1 -0
- package/dist/custom/data/json-transform.action.js +205 -0
- package/dist/custom/data/json-transform.action.js.map +1 -0
- package/dist/custom/data/xml-parser.action.d.ts +85 -0
- package/dist/custom/data/xml-parser.action.d.ts.map +1 -0
- package/dist/custom/data/xml-parser.action.js +326 -0
- package/dist/custom/data/xml-parser.action.js.map +1 -0
- package/dist/custom/files/excel-reader.action.d.ts +86 -0
- package/dist/custom/files/excel-reader.action.d.ts.map +1 -0
- package/dist/custom/files/excel-reader.action.js +348 -0
- package/dist/custom/files/excel-reader.action.js.map +1 -0
- package/dist/custom/files/excel-writer.action.d.ts +79 -0
- package/dist/custom/files/excel-writer.action.d.ts.map +1 -0
- package/dist/custom/files/excel-writer.action.js +325 -0
- package/dist/custom/files/excel-writer.action.js.map +1 -0
- package/dist/custom/files/file-compress.action.d.ts +90 -0
- package/dist/custom/files/file-compress.action.d.ts.map +1 -0
- package/dist/custom/files/file-compress.action.js +346 -0
- package/dist/custom/files/file-compress.action.js.map +1 -0
- package/dist/custom/files/pdf-extractor.action.d.ts +86 -0
- package/dist/custom/files/pdf-extractor.action.d.ts.map +1 -0
- package/dist/custom/files/pdf-extractor.action.js +247 -0
- package/dist/custom/files/pdf-extractor.action.js.map +1 -0
- package/dist/custom/files/pdf-generator.action.d.ts +70 -0
- package/dist/custom/files/pdf-generator.action.d.ts.map +1 -0
- package/dist/custom/files/pdf-generator.action.js +286 -0
- package/dist/custom/files/pdf-generator.action.js.map +1 -0
- package/dist/custom/integration/api-rate-limiter.action.d.ts +88 -0
- package/dist/custom/integration/api-rate-limiter.action.d.ts.map +1 -0
- package/dist/custom/integration/api-rate-limiter.action.js +363 -0
- package/dist/custom/integration/api-rate-limiter.action.js.map +1 -0
- package/dist/custom/integration/graphql-query.action.d.ts +92 -0
- package/dist/custom/integration/graphql-query.action.d.ts.map +1 -0
- package/dist/custom/integration/graphql-query.action.js +251 -0
- package/dist/custom/integration/graphql-query.action.js.map +1 -0
- package/dist/custom/integration/http-request.action.d.ts +96 -0
- package/dist/custom/integration/http-request.action.d.ts.map +1 -0
- package/dist/custom/integration/http-request.action.js +316 -0
- package/dist/custom/integration/http-request.action.js.map +1 -0
- package/dist/custom/integration/oauth-flow.action.d.ts +130 -0
- package/dist/custom/integration/oauth-flow.action.d.ts.map +1 -0
- package/dist/custom/integration/oauth-flow.action.js +624 -0
- package/dist/custom/integration/oauth-flow.action.js.map +1 -0
- package/dist/custom/security/password-strength.action.d.ts +129 -0
- package/dist/custom/security/password-strength.action.d.ts.map +1 -0
- package/dist/custom/security/password-strength.action.js +463 -0
- package/dist/custom/security/password-strength.action.js.map +1 -0
- package/dist/custom/utilities/base-file-handler.d.ts +54 -0
- package/dist/custom/utilities/base-file-handler.d.ts.map +1 -0
- package/dist/custom/utilities/base-file-handler.js +167 -0
- package/dist/custom/utilities/base-file-handler.js.map +1 -0
- package/dist/custom/utilities/index.d.ts +3 -0
- package/dist/custom/utilities/index.d.ts.map +1 -0
- package/dist/custom/utilities/index.js +19 -0
- package/dist/custom/utilities/index.js.map +1 -0
- package/dist/custom/utilities/json-param-helper.d.ts +33 -0
- package/dist/custom/utilities/json-param-helper.d.ts.map +1 -0
- package/dist/custom/utilities/json-param-helper.js +66 -0
- package/dist/custom/utilities/json-param-helper.js.map +1 -0
- package/dist/custom/web/duckduckgo-rate-limiter.d.ts +72 -0
- package/dist/custom/web/duckduckgo-rate-limiter.d.ts.map +1 -0
- package/dist/custom/web/duckduckgo-rate-limiter.js +175 -0
- package/dist/custom/web/duckduckgo-rate-limiter.js.map +1 -0
- package/dist/custom/web/web-search.action.d.ts +1 -0
- package/dist/custom/web/web-search.action.d.ts.map +1 -1
- package/dist/custom/web/web-search.action.js +48 -20
- package/dist/custom/web/web-search.action.js.map +1 -1
- package/dist/custom/workflow/conditional.action.d.ts +94 -0
- package/dist/custom/workflow/conditional.action.d.ts.map +1 -0
- package/dist/custom/workflow/conditional.action.js +274 -0
- package/dist/custom/workflow/conditional.action.js.map +1 -0
- package/dist/custom/workflow/delay.action.d.ts +76 -0
- package/dist/custom/workflow/delay.action.d.ts.map +1 -0
- package/dist/custom/workflow/delay.action.js +187 -0
- package/dist/custom/workflow/delay.action.js.map +1 -0
- package/dist/custom/workflow/loop.action.d.ts +112 -0
- package/dist/custom/workflow/loop.action.d.ts.map +1 -0
- package/dist/custom/workflow/loop.action.js +380 -0
- package/dist/custom/workflow/loop.action.js.map +1 -0
- package/dist/custom/workflow/parallel-execute.action.d.ts +105 -0
- package/dist/custom/workflow/parallel-execute.action.d.ts.map +1 -0
- package/dist/custom/workflow/parallel-execute.action.js +457 -0
- package/dist/custom/workflow/parallel-execute.action.js.map +1 -0
- package/dist/custom/workflow/retry.action.d.ts +90 -0
- package/dist/custom/workflow/retry.action.d.ts.map +1 -0
- package/dist/custom/workflow/retry.action.js +378 -0
- package/dist/custom/workflow/retry.action.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +75 -0
- package/dist/index.js.map +1 -1
- package/package.json +25 -10
- package/readme.md +11270 -101
|
@@ -0,0 +1,346 @@
|
|
|
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.LoadFileCompressAction = exports.FileCompressAction = void 0;
|
|
33
|
+
const global_1 = require("@memberjunction/global");
|
|
34
|
+
const base_file_handler_1 = require("../utilities/base-file-handler");
|
|
35
|
+
const archiver = __importStar(require("archiver"));
|
|
36
|
+
const unzipper = __importStar(require("unzipper"));
|
|
37
|
+
const json_param_helper_1 = require("../utilities/json-param-helper");
|
|
38
|
+
/**
|
|
39
|
+
* Action that compresses or decompresses files
|
|
40
|
+
* Supports ZIP format with various compression levels
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* // Compress multiple files into ZIP
|
|
45
|
+
* await runAction({
|
|
46
|
+
* ActionName: 'File Compress',
|
|
47
|
+
* Params: [{
|
|
48
|
+
* Name: 'Operation',
|
|
49
|
+
* Value: 'compress'
|
|
50
|
+
* }, {
|
|
51
|
+
* Name: 'Files',
|
|
52
|
+
* Value: [
|
|
53
|
+
* { name: 'report.pdf', data: pdfBase64Data },
|
|
54
|
+
* { name: 'data.csv', data: csvData }
|
|
55
|
+
* ]
|
|
56
|
+
* }]
|
|
57
|
+
* });
|
|
58
|
+
*
|
|
59
|
+
* // Decompress ZIP file
|
|
60
|
+
* await runAction({
|
|
61
|
+
* ActionName: 'File Compress',
|
|
62
|
+
* Params: [{
|
|
63
|
+
* Name: 'Operation',
|
|
64
|
+
* Value: 'decompress'
|
|
65
|
+
* }, {
|
|
66
|
+
* Name: 'FileURL',
|
|
67
|
+
* Value: 'https://example.com/archive.zip'
|
|
68
|
+
* }]
|
|
69
|
+
* });
|
|
70
|
+
*
|
|
71
|
+
* // Compress with options
|
|
72
|
+
* await runAction({
|
|
73
|
+
* ActionName: 'File Compress',
|
|
74
|
+
* Params: [{
|
|
75
|
+
* Name: 'Operation',
|
|
76
|
+
* Value: 'compress'
|
|
77
|
+
* }, {
|
|
78
|
+
* Name: 'Files',
|
|
79
|
+
* Value: filesArray
|
|
80
|
+
* }, {
|
|
81
|
+
* Name: 'CompressionLevel',
|
|
82
|
+
* Value: 9
|
|
83
|
+
* }, {
|
|
84
|
+
* Name: 'OutputFileID',
|
|
85
|
+
* Value: true
|
|
86
|
+
* }]
|
|
87
|
+
* });
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
let FileCompressAction = class FileCompressAction extends base_file_handler_1.BaseFileHandlerAction {
|
|
91
|
+
/**
|
|
92
|
+
* Compresses or decompresses files
|
|
93
|
+
*
|
|
94
|
+
* @param params - The action parameters containing:
|
|
95
|
+
* - Operation: "compress" | "decompress" (required)
|
|
96
|
+
* - For compress:
|
|
97
|
+
* - Files: Array of file objects with { name: string, data: string/Buffer }
|
|
98
|
+
* - CompressionLevel: 0-9 (default: 6, 0=store only, 9=maximum compression)
|
|
99
|
+
* - Format: "zip" (currently only ZIP supported)
|
|
100
|
+
* - For decompress:
|
|
101
|
+
* - FileID/FileURL/Data: Input compressed file
|
|
102
|
+
* - OutputFileID: Save result to MJ Storage (optional)
|
|
103
|
+
* - FileName: Name for output file (default: 'archive.zip' or 'extracted_files.json')
|
|
104
|
+
*
|
|
105
|
+
* @returns Compressed/decompressed data
|
|
106
|
+
*/
|
|
107
|
+
async InternalRunAction(params) {
|
|
108
|
+
try {
|
|
109
|
+
const operation = (this.getParamValue(params, 'operation') || '').toLowerCase();
|
|
110
|
+
if (!['compress', 'decompress'].includes(operation)) {
|
|
111
|
+
return {
|
|
112
|
+
Success: false,
|
|
113
|
+
Message: "Operation must be 'compress' or 'decompress'",
|
|
114
|
+
ResultCode: "INVALID_OPERATION"
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
if (operation === 'compress') {
|
|
118
|
+
return await this.compress(params);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
return await this.decompress(params);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
return {
|
|
126
|
+
Success: false,
|
|
127
|
+
Message: `Failed to ${this.getParamValue(params, 'operation')} files: ${error instanceof Error ? error.message : String(error)}`,
|
|
128
|
+
ResultCode: "OPERATION_FAILED"
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Compress files
|
|
134
|
+
*/
|
|
135
|
+
async compress(params) {
|
|
136
|
+
let files;
|
|
137
|
+
try {
|
|
138
|
+
files = json_param_helper_1.JSONParamHelper.getRequiredJSONParam(params, 'files');
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
return {
|
|
142
|
+
Success: false,
|
|
143
|
+
Message: error instanceof Error ? error.message : String(error),
|
|
144
|
+
ResultCode: "MISSING_FILES"
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
const compressionLevel = this.getNumericParam(params, 'compressionlevel', 6);
|
|
148
|
+
const format = (this.getParamValue(params, 'format') || 'zip').toLowerCase();
|
|
149
|
+
const outputFileId = this.getParamValue(params, 'outputfileid');
|
|
150
|
+
const fileName = this.getParamValue(params, 'filename') || 'archive.zip';
|
|
151
|
+
if (!Array.isArray(files) || files.length === 0) {
|
|
152
|
+
return {
|
|
153
|
+
Success: false,
|
|
154
|
+
Message: "Files must be a non-empty array",
|
|
155
|
+
ResultCode: "INVALID_FILES"
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
// Validate compression level
|
|
159
|
+
if (compressionLevel < 0 || compressionLevel > 9) {
|
|
160
|
+
return {
|
|
161
|
+
Success: false,
|
|
162
|
+
Message: "CompressionLevel must be between 0 and 9",
|
|
163
|
+
ResultCode: "INVALID_COMPRESSION_LEVEL"
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
// Currently only support ZIP
|
|
167
|
+
if (format !== 'zip') {
|
|
168
|
+
return {
|
|
169
|
+
Success: false,
|
|
170
|
+
Message: "Currently only 'zip' format is supported",
|
|
171
|
+
ResultCode: "UNSUPPORTED_FORMAT"
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
// Create archive
|
|
175
|
+
const archive = archiver('zip', {
|
|
176
|
+
zlib: { level: compressionLevel }
|
|
177
|
+
});
|
|
178
|
+
const chunks = [];
|
|
179
|
+
archive.on('data', (chunk) => chunks.push(chunk));
|
|
180
|
+
// Add files to archive
|
|
181
|
+
for (const file of files) {
|
|
182
|
+
if (!file.name) {
|
|
183
|
+
return {
|
|
184
|
+
Success: false,
|
|
185
|
+
Message: "Each file must have a 'name' property",
|
|
186
|
+
ResultCode: "INVALID_FILE_DEFINITION"
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
let fileData;
|
|
190
|
+
if (typeof file.data === 'string') {
|
|
191
|
+
// Check if base64
|
|
192
|
+
if (this.isBase64(file.data)) {
|
|
193
|
+
fileData = Buffer.from(file.data, 'base64');
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
fileData = Buffer.from(file.data);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
else if (Buffer.isBuffer(file.data)) {
|
|
200
|
+
fileData = file.data;
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
return {
|
|
204
|
+
Success: false,
|
|
205
|
+
Message: `Invalid data type for file '${file.name}'`,
|
|
206
|
+
ResultCode: "INVALID_FILE_DATA"
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
archive.append(fileData, { name: file.name });
|
|
210
|
+
}
|
|
211
|
+
// Finalize archive
|
|
212
|
+
await archive.finalize();
|
|
213
|
+
const buffer = Buffer.concat(chunks);
|
|
214
|
+
// Save to storage if requested
|
|
215
|
+
if (outputFileId) {
|
|
216
|
+
try {
|
|
217
|
+
const fileId = await this.saveToMJStorage(buffer, fileName, 'application/zip', params);
|
|
218
|
+
params.Params.push({
|
|
219
|
+
Name: 'CompressedFileID',
|
|
220
|
+
Type: 'Output',
|
|
221
|
+
Value: fileId
|
|
222
|
+
});
|
|
223
|
+
return {
|
|
224
|
+
Success: true,
|
|
225
|
+
ResultCode: "SUCCESS_SAVED",
|
|
226
|
+
Message: JSON.stringify({
|
|
227
|
+
message: "Files compressed and saved successfully",
|
|
228
|
+
fileId: fileId,
|
|
229
|
+
fileName: fileName,
|
|
230
|
+
filesCompressed: files.length,
|
|
231
|
+
compressionLevel: compressionLevel,
|
|
232
|
+
compressedSize: buffer.length
|
|
233
|
+
}, null, 2)
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
console.error('Failed to save to storage:', error);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
// Return as base64
|
|
241
|
+
const base64Data = buffer.toString('base64');
|
|
242
|
+
params.Params.push({
|
|
243
|
+
Name: 'CompressedData',
|
|
244
|
+
Type: 'Output',
|
|
245
|
+
Value: base64Data
|
|
246
|
+
});
|
|
247
|
+
return {
|
|
248
|
+
Success: true,
|
|
249
|
+
ResultCode: "SUCCESS",
|
|
250
|
+
Message: JSON.stringify({
|
|
251
|
+
message: "Files compressed successfully",
|
|
252
|
+
fileName: fileName,
|
|
253
|
+
filesCompressed: files.length,
|
|
254
|
+
compressionLevel: compressionLevel,
|
|
255
|
+
compressedSize: buffer.length,
|
|
256
|
+
base64Length: base64Data.length
|
|
257
|
+
}, null, 2)
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Decompress files
|
|
262
|
+
*/
|
|
263
|
+
async decompress(params) {
|
|
264
|
+
// Get compressed file content
|
|
265
|
+
const fileContent = await this.getFileContent(params, 'data', 'fileid', 'fileurl');
|
|
266
|
+
const outputFileId = this.getParamValue(params, 'outputfileid');
|
|
267
|
+
const fileName = this.getParamValue(params, 'filename') || 'extracted_files.json';
|
|
268
|
+
// Convert to Buffer
|
|
269
|
+
let zipBuffer;
|
|
270
|
+
if (typeof fileContent.content === 'string') {
|
|
271
|
+
if (this.isBase64(fileContent.content)) {
|
|
272
|
+
zipBuffer = Buffer.from(fileContent.content, 'base64');
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
zipBuffer = Buffer.from(fileContent.content, 'binary');
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
zipBuffer = fileContent.content;
|
|
280
|
+
}
|
|
281
|
+
// Extract files
|
|
282
|
+
const extractedFiles = [];
|
|
283
|
+
try {
|
|
284
|
+
const directory = await unzipper.Open.buffer(zipBuffer);
|
|
285
|
+
for (const file of directory.files) {
|
|
286
|
+
if (!file.type || file.type === 'File') {
|
|
287
|
+
const content = await file.buffer();
|
|
288
|
+
extractedFiles.push({
|
|
289
|
+
name: file.path,
|
|
290
|
+
size: file.uncompressedSize,
|
|
291
|
+
data: content.toString('base64'),
|
|
292
|
+
compressed: file.compressedSize,
|
|
293
|
+
compressionMethod: file.compressionMethod
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
catch (error) {
|
|
299
|
+
return {
|
|
300
|
+
Success: false,
|
|
301
|
+
Message: `Failed to decompress file: ${error instanceof Error ? error.message : String(error)}`,
|
|
302
|
+
ResultCode: "DECOMPRESSION_FAILED"
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
const result = {
|
|
306
|
+
files: extractedFiles,
|
|
307
|
+
totalFiles: extractedFiles.length,
|
|
308
|
+
source: fileContent.source,
|
|
309
|
+
sourceFileName: fileContent.fileName
|
|
310
|
+
};
|
|
311
|
+
// Add output parameter
|
|
312
|
+
params.Params.push({
|
|
313
|
+
Name: 'ExtractedFiles',
|
|
314
|
+
Type: 'Output',
|
|
315
|
+
Value: extractedFiles
|
|
316
|
+
});
|
|
317
|
+
return {
|
|
318
|
+
Success: true,
|
|
319
|
+
ResultCode: "SUCCESS",
|
|
320
|
+
Message: JSON.stringify(result, null, 2)
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Check if string is base64
|
|
325
|
+
*/
|
|
326
|
+
isBase64(str) {
|
|
327
|
+
try {
|
|
328
|
+
return Buffer.from(str, 'base64').toString('base64') === str;
|
|
329
|
+
}
|
|
330
|
+
catch {
|
|
331
|
+
return false;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
exports.FileCompressAction = FileCompressAction;
|
|
336
|
+
exports.FileCompressAction = FileCompressAction = __decorate([
|
|
337
|
+
(0, global_1.RegisterClass)(base_file_handler_1.BaseFileHandlerAction, "File Compress")
|
|
338
|
+
], FileCompressAction);
|
|
339
|
+
/**
|
|
340
|
+
* Loader function to ensure the FileCompressAction class is included in the bundle
|
|
341
|
+
*/
|
|
342
|
+
function LoadFileCompressAction() {
|
|
343
|
+
// Stub function to prevent tree shaking
|
|
344
|
+
}
|
|
345
|
+
exports.LoadFileCompressAction = LoadFileCompressAction;
|
|
346
|
+
//# sourceMappingURL=file-compress.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-compress.action.js","sourceRoot":"","sources":["../../../src/custom/files/file-compress.action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { ActionResultSimple, RunActionParams } from "@memberjunction/actions-base";
|
|
2
|
+
import { BaseFileHandlerAction } from "../utilities/base-file-handler";
|
|
3
|
+
/**
|
|
4
|
+
* Action that extracts content from PDF files
|
|
5
|
+
* Can extract text, metadata, or specific pages
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // Extract all text from PDF
|
|
10
|
+
* await runAction({
|
|
11
|
+
* ActionName: 'PDF Extractor',
|
|
12
|
+
* Params: [{
|
|
13
|
+
* Name: 'FileURL',
|
|
14
|
+
* Value: 'https://example.com/document.pdf'
|
|
15
|
+
* }, {
|
|
16
|
+
* Name: 'ExtractType',
|
|
17
|
+
* Value: 'text'
|
|
18
|
+
* }]
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* // Extract metadata from PDF
|
|
22
|
+
* await runAction({
|
|
23
|
+
* ActionName: 'PDF Extractor',
|
|
24
|
+
* Params: [{
|
|
25
|
+
* Name: 'PDFData',
|
|
26
|
+
* Value: base64PdfData
|
|
27
|
+
* }, {
|
|
28
|
+
* Name: 'ExtractType',
|
|
29
|
+
* Value: 'metadata'
|
|
30
|
+
* }]
|
|
31
|
+
* });
|
|
32
|
+
*
|
|
33
|
+
* // Extract specific pages
|
|
34
|
+
* await runAction({
|
|
35
|
+
* ActionName: 'PDF Extractor',
|
|
36
|
+
* Params: [{
|
|
37
|
+
* Name: 'FileID',
|
|
38
|
+
* Value: 'uuid-of-pdf-file'
|
|
39
|
+
* }, {
|
|
40
|
+
* Name: 'ExtractType',
|
|
41
|
+
* Value: 'pages'
|
|
42
|
+
* }, {
|
|
43
|
+
* Name: 'PageNumbers',
|
|
44
|
+
* Value: [1, 3, 5]
|
|
45
|
+
* }]
|
|
46
|
+
* });
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare class PDFExtractorAction extends BaseFileHandlerAction {
|
|
50
|
+
/**
|
|
51
|
+
* Extracts content from PDF files
|
|
52
|
+
*
|
|
53
|
+
* @param params - The action parameters containing:
|
|
54
|
+
* - FileID: UUID of MJ Storage file (optional)
|
|
55
|
+
* - FileURL: URL of PDF file (optional)
|
|
56
|
+
* - PDFData: Base64 encoded PDF data (optional)
|
|
57
|
+
* - ExtractType: "text" | "metadata" | "pages" (default: "text")
|
|
58
|
+
* - PageNumbers: Array of page numbers to extract (for pages extraction)
|
|
59
|
+
* - MergePages: Boolean - merge text from all pages (default: true)
|
|
60
|
+
* - IncludePageBreaks: Boolean - add page break markers (default: false)
|
|
61
|
+
*
|
|
62
|
+
* @returns Extracted content based on extraction type
|
|
63
|
+
*/
|
|
64
|
+
protected InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
|
|
65
|
+
/**
|
|
66
|
+
* Check if string is base64 encoded
|
|
67
|
+
*/
|
|
68
|
+
private isBase64;
|
|
69
|
+
/**
|
|
70
|
+
* Extract text from PDF
|
|
71
|
+
*/
|
|
72
|
+
private extractText;
|
|
73
|
+
/**
|
|
74
|
+
* Extract metadata from PDF
|
|
75
|
+
*/
|
|
76
|
+
private extractMetadata;
|
|
77
|
+
/**
|
|
78
|
+
* Extract specific pages from PDF
|
|
79
|
+
*/
|
|
80
|
+
private extractPages;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Loader function to ensure the PDFExtractorAction class is included in the bundle
|
|
84
|
+
*/
|
|
85
|
+
export declare function LoadPDFExtractorAction(): void;
|
|
86
|
+
//# sourceMappingURL=pdf-extractor.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-extractor.action.d.ts","sourceRoot":"","sources":["../../../src/custom/files/pdf-extractor.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAGvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,qBACa,kBAAmB,SAAQ,qBAAqB;IAEzD;;;;;;;;;;;;;OAaG;cACa,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA0EvF;;OAEG;IACH,OAAO,CAAC,QAAQ;IAQhB;;OAEG;YACW,WAAW;IAsBzB;;OAEG;YACW,eAAe;IA0B7B;;OAEG;YACW,YAAY;CAiC7B;AAED;;GAEG;AACH,wBAAgB,sBAAsB,SAErC"}
|