@memberjunction/core-actions 5.23.0 → 5.25.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 (78) hide show
  1. package/dist/custom/files/add-document-content.action.d.ts +20 -0
  2. package/dist/custom/files/add-document-content.action.d.ts.map +1 -0
  3. package/dist/custom/files/add-document-content.action.js +74 -0
  4. package/dist/custom/files/add-document-content.action.js.map +1 -0
  5. package/dist/custom/files/base-file-storage.action.d.ts +6 -9
  6. package/dist/custom/files/base-file-storage.action.d.ts.map +1 -1
  7. package/dist/custom/files/base-file-storage.action.js +14 -39
  8. package/dist/custom/files/base-file-storage.action.js.map +1 -1
  9. package/dist/custom/files/create-document.action.d.ts +19 -0
  10. package/dist/custom/files/create-document.action.d.ts.map +1 -0
  11. package/dist/custom/files/create-document.action.js +65 -0
  12. package/dist/custom/files/create-document.action.js.map +1 -0
  13. package/dist/custom/files/excel-reader.action.js +1 -1
  14. package/dist/custom/files/excel-reader.action.js.map +1 -1
  15. package/dist/custom/files/finalize-document.action.d.ts +21 -0
  16. package/dist/custom/files/finalize-document.action.d.ts.map +1 -0
  17. package/dist/custom/files/finalize-document.action.js +94 -0
  18. package/dist/custom/files/finalize-document.action.js.map +1 -0
  19. package/dist/custom/files/index.d.ts +5 -0
  20. package/dist/custom/files/index.d.ts.map +1 -1
  21. package/dist/custom/files/index.js +6 -0
  22. package/dist/custom/files/index.js.map +1 -1
  23. package/dist/custom/files/list-storage-providers.action.d.ts.map +1 -1
  24. package/dist/custom/files/list-storage-providers.action.js +6 -33
  25. package/dist/custom/files/list-storage-providers.action.js.map +1 -1
  26. package/dist/custom/files/modify-document-section.action.d.ts +19 -0
  27. package/dist/custom/files/modify-document-section.action.d.ts.map +1 -0
  28. package/dist/custom/files/modify-document-section.action.js +85 -0
  29. package/dist/custom/files/modify-document-section.action.js.map +1 -0
  30. package/dist/custom/files/pdf-extractor.action.d.ts +8 -14
  31. package/dist/custom/files/pdf-extractor.action.d.ts.map +1 -1
  32. package/dist/custom/files/pdf-extractor.action.js +89 -91
  33. package/dist/custom/files/pdf-extractor.action.js.map +1 -1
  34. package/dist/custom/files/preview-document.action.d.ts +17 -0
  35. package/dist/custom/files/preview-document.action.d.ts.map +1 -0
  36. package/dist/custom/files/preview-document.action.js +50 -0
  37. package/dist/custom/files/preview-document.action.js.map +1 -0
  38. package/dist/custom/geo/scheduled-geocoding.action.d.ts +135 -0
  39. package/dist/custom/geo/scheduled-geocoding.action.d.ts.map +1 -0
  40. package/dist/custom/geo/scheduled-geocoding.action.js +428 -0
  41. package/dist/custom/geo/scheduled-geocoding.action.js.map +1 -0
  42. package/dist/custom/search/search.action.d.ts +67 -0
  43. package/dist/custom/search/search.action.d.ts.map +1 -0
  44. package/dist/custom/search/search.action.js +211 -0
  45. package/dist/custom/search/search.action.js.map +1 -0
  46. package/dist/custom/utilities/artifact-builder-service.d.ts +139 -0
  47. package/dist/custom/utilities/artifact-builder-service.d.ts.map +1 -0
  48. package/dist/custom/utilities/artifact-builder-service.js +338 -0
  49. package/dist/custom/utilities/artifact-builder-service.js.map +1 -0
  50. package/dist/custom/utilities/base-file-handler.d.ts +25 -3
  51. package/dist/custom/utilities/base-file-handler.d.ts.map +1 -1
  52. package/dist/custom/utilities/base-file-handler.js +81 -28
  53. package/dist/custom/utilities/base-file-handler.js.map +1 -1
  54. package/dist/custom/utilities/docx-renderer.d.ts +61 -0
  55. package/dist/custom/utilities/docx-renderer.d.ts.map +1 -0
  56. package/dist/custom/utilities/docx-renderer.js +409 -0
  57. package/dist/custom/utilities/docx-renderer.js.map +1 -0
  58. package/dist/custom/utilities/pdf-renderer.d.ts +53 -0
  59. package/dist/custom/utilities/pdf-renderer.d.ts.map +1 -0
  60. package/dist/custom/utilities/pdf-renderer.js +315 -0
  61. package/dist/custom/utilities/pdf-renderer.js.map +1 -0
  62. package/dist/custom/utilities/xlsx-renderer.d.ts +120 -0
  63. package/dist/custom/utilities/xlsx-renderer.d.ts.map +1 -0
  64. package/dist/custom/utilities/xlsx-renderer.js +165 -0
  65. package/dist/custom/utilities/xlsx-renderer.js.map +1 -0
  66. package/dist/index.d.ts +2 -2
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +3 -2
  69. package/dist/index.js.map +1 -1
  70. package/package.json +31 -27
  71. package/dist/custom/files/excel-writer.action.d.ts +0 -88
  72. package/dist/custom/files/excel-writer.action.d.ts.map +0 -1
  73. package/dist/custom/files/excel-writer.action.js +0 -326
  74. package/dist/custom/files/excel-writer.action.js.map +0 -1
  75. package/dist/custom/files/pdf-generator.action.d.ts +0 -66
  76. package/dist/custom/files/pdf-generator.action.d.ts.map +0 -1
  77. package/dist/custom/files/pdf-generator.action.js +0 -254
  78. package/dist/custom/files/pdf-generator.action.js.map +0 -1
@@ -1,254 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- 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;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { RegisterClass } from "@memberjunction/global";
8
- import { BaseFileHandlerAction } from "../utilities/base-file-handler.js";
9
- import PDFDocument from "pdfkit";
10
- import { marked } from "marked";
11
- import { JSONParamHelper } from "../utilities/json-param-helper.js";
12
- import { BaseAction } from '@memberjunction/actions';
13
- /**
14
- * Action that generates PDF files from HTML or Markdown content
15
- * Supports various formatting options and can save to MJ Storage
16
- *
17
- * @example
18
- * ```typescript
19
- * // Generate PDF from Markdown
20
- * await runAction({
21
- * ActionName: 'PDF Generator',
22
- * Params: [{
23
- * Name: 'Content',
24
- * Value: '# Report Title\n\nThis is the report content...'
25
- * }, {
26
- * Name: 'ContentType',
27
- * Value: 'markdown'
28
- * }]
29
- * });
30
- *
31
- * // Generate PDF from HTML with custom options
32
- * await runAction({
33
- * ActionName: 'PDF Generator',
34
- * Params: [{
35
- * Name: 'Content',
36
- * Value: '<h1>Report</h1><p>Content here...</p>'
37
- * }, {
38
- * Name: 'Options',
39
- * Value: {
40
- * margin: { top: 50, bottom: 50, left: 72, right: 72 },
41
- * fontSize: 12,
42
- * font: 'Helvetica'
43
- * }
44
- * }]
45
- * });
46
- * ```
47
- */
48
- let PDFGeneratorAction = class PDFGeneratorAction extends BaseFileHandlerAction {
49
- /**
50
- * Generates a PDF from HTML or Markdown content
51
- *
52
- * @param params - The action parameters containing:
53
- * - Content: HTML or Markdown string to convert to PDF
54
- * - ContentType: "html" | "markdown" (default: "html")
55
- * - Options: PDF generation options object containing:
56
- * - margin: { top, bottom, left, right } in points (default: 72)
57
- * - fontSize: Base font size (default: 12)
58
- * - font: Font family (default: 'Helvetica')
59
- * - orientation: 'portrait' | 'landscape' (default: 'portrait')
60
- * - size: Paper size like 'A4', 'Letter', etc. (default: 'Letter')
61
- * - OutputFileID: Optional MJ Storage file ID to save to
62
- * - FileName: Name for the generated PDF (default: 'document.pdf')
63
- *
64
- * @returns Base64 encoded PDF data or FileID if saved to storage
65
- */
66
- async InternalRunAction(params) {
67
- try {
68
- // Extract parameters
69
- const content = this.getParamValue(params, 'content');
70
- const contentType = (this.getParamValue(params, 'contenttype') || 'html').toLowerCase();
71
- const outputFileId = this.getParamValue(params, 'outputfileid');
72
- const fileName = this.getParamValue(params, 'filename') || 'document.pdf';
73
- // Validate content
74
- if (!content) {
75
- return {
76
- Success: false,
77
- Message: "Content parameter is required",
78
- ResultCode: "MISSING_CONTENT"
79
- };
80
- }
81
- // Parse options
82
- let options = {
83
- margin: { top: 72, bottom: 72, left: 72, right: 72 },
84
- fontSize: 12,
85
- font: 'Helvetica',
86
- orientation: 'portrait',
87
- size: 'Letter'
88
- };
89
- const customOptions = JSONParamHelper.getJSONParam(params, 'options');
90
- if (customOptions) {
91
- options = { ...options, ...customOptions };
92
- }
93
- // Convert content if needed
94
- let htmlContent = content.toString();
95
- if (contentType === 'markdown') {
96
- // Convert markdown to HTML
97
- htmlContent = await marked(htmlContent);
98
- }
99
- // Generate PDF
100
- const pdfBuffer = await this.generatePDF(htmlContent, options);
101
- // Save to storage if requested
102
- if (outputFileId) {
103
- try {
104
- const fileId = await this.saveToMJStorage(pdfBuffer, fileName, 'application/pdf', params);
105
- // Add output parameter
106
- params.Params.push({
107
- Name: 'GeneratedFileID',
108
- Type: 'Output',
109
- Value: fileId
110
- });
111
- return {
112
- Success: true,
113
- ResultCode: "SUCCESS_SAVED",
114
- Message: JSON.stringify({
115
- message: "PDF generated and saved successfully",
116
- fileId: fileId,
117
- fileName: fileName,
118
- sizeBytes: pdfBuffer.length
119
- }, null, 2)
120
- };
121
- }
122
- catch (error) {
123
- // If save fails, still return the PDF data
124
- console.error('Failed to save to storage:', error);
125
- }
126
- }
127
- // Return as base64
128
- const base64Data = pdfBuffer.toString('base64');
129
- // Add output parameter
130
- params.Params.push({
131
- Name: 'PDFData',
132
- Type: 'Output',
133
- Value: base64Data
134
- });
135
- return {
136
- Success: true,
137
- ResultCode: "SUCCESS",
138
- Message: JSON.stringify({
139
- message: "PDF generated successfully",
140
- fileName: fileName,
141
- sizeBytes: pdfBuffer.length,
142
- base64Length: base64Data.length
143
- }, null, 2)
144
- };
145
- }
146
- catch (error) {
147
- return {
148
- Success: false,
149
- Message: `Failed to generate PDF: ${error instanceof Error ? error.message : String(error)}`,
150
- ResultCode: "GENERATION_FAILED"
151
- };
152
- }
153
- }
154
- /**
155
- * Generate PDF from HTML content
156
- */
157
- async generatePDF(htmlContent, options) {
158
- return new Promise((resolve, reject) => {
159
- try {
160
- // Create PDF document
161
- const doc = new PDFDocument({
162
- size: options.size,
163
- layout: options.orientation,
164
- margins: options.margin,
165
- info: {
166
- Title: 'Generated Document',
167
- Author: 'MemberJunction',
168
- Creator: 'PDF Generator Action'
169
- }
170
- });
171
- // Collect PDF data
172
- const chunks = [];
173
- doc.on('data', (chunk) => chunks.push(chunk));
174
- doc.on('end', () => resolve(Buffer.concat(chunks)));
175
- doc.on('error', reject);
176
- // Set default font
177
- doc.font(options.font || 'Helvetica');
178
- doc.fontSize(options.fontSize || 12);
179
- // Parse and render HTML (simplified - real implementation would need proper HTML parsing)
180
- const lines = this.parseHTMLToLines(htmlContent);
181
- for (const line of lines) {
182
- if (line.type === 'heading') {
183
- doc.fontSize(line.size || 16).text(line.text, {
184
- align: line.align || 'left',
185
- continued: false
186
- });
187
- doc.fontSize(options.fontSize || 12);
188
- }
189
- else if (line.type === 'paragraph') {
190
- doc.text(line.text, {
191
- align: line.align || 'left',
192
- continued: false
193
- });
194
- }
195
- else if (line.type === 'list') {
196
- doc.list([line.text], {
197
- bulletRadius: 2,
198
- textIndent: 20,
199
- bulletIndent: 10
200
- });
201
- }
202
- // Add spacing between elements
203
- doc.moveDown(0.5);
204
- }
205
- // Finalize PDF
206
- doc.end();
207
- }
208
- catch (error) {
209
- reject(error);
210
- }
211
- });
212
- }
213
- /**
214
- * Simple HTML parser (for demonstration - real implementation would use proper HTML parser)
215
- */
216
- parseHTMLToLines(html) {
217
- const lines = [];
218
- // Remove HTML tags but preserve structure
219
- const text = html
220
- .replace(/<h1[^>]*>(.*?)<\/h1>/gi, (match, content) => {
221
- lines.push({ type: 'heading', text: content.trim(), size: 24 });
222
- return '';
223
- })
224
- .replace(/<h2[^>]*>(.*?)<\/h2>/gi, (match, content) => {
225
- lines.push({ type: 'heading', text: content.trim(), size: 20 });
226
- return '';
227
- })
228
- .replace(/<h3[^>]*>(.*?)<\/h3>/gi, (match, content) => {
229
- lines.push({ type: 'heading', text: content.trim(), size: 16 });
230
- return '';
231
- })
232
- .replace(/<p[^>]*>(.*?)<\/p>/gi, (match, content) => {
233
- lines.push({ type: 'paragraph', text: content.trim() });
234
- return '';
235
- })
236
- .replace(/<li[^>]*>(.*?)<\/li>/gi, (match, content) => {
237
- lines.push({ type: 'list', text: content.trim() });
238
- return '';
239
- })
240
- .replace(/<br\s*\/?>/gi, '\n')
241
- .replace(/<[^>]+>/g, '');
242
- // Add any remaining text
243
- const remainingText = text.trim();
244
- if (remainingText) {
245
- lines.push({ type: 'paragraph', text: remainingText });
246
- }
247
- return lines;
248
- }
249
- };
250
- PDFGeneratorAction = __decorate([
251
- RegisterClass(BaseAction, "PDF Generator")
252
- ], PDFGeneratorAction);
253
- export { PDFGeneratorAction };
254
- //# sourceMappingURL=pdf-generator.action.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pdf-generator.action.js","sourceRoot":"","sources":["../../../src/custom/files/pdf-generator.action.ts"],"names":[],"mappings":"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"}