@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,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"}