@rglabs/butterfly 1.0.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 (136) hide show
  1. package/.claude/settings.local.json +25 -0
  2. package/dist/commands/add.d.ts +21 -0
  3. package/dist/commands/add.d.ts.map +1 -0
  4. package/dist/commands/add.js +301 -0
  5. package/dist/commands/add.js.map +1 -0
  6. package/dist/commands/download.d.ts +4 -0
  7. package/dist/commands/download.d.ts.map +1 -0
  8. package/dist/commands/download.js +309 -0
  9. package/dist/commands/download.js.map +1 -0
  10. package/dist/commands/setup.d.ts +3 -0
  11. package/dist/commands/setup.d.ts.map +1 -0
  12. package/dist/commands/setup.js +41 -0
  13. package/dist/commands/setup.js.map +1 -0
  14. package/dist/commands/start/handlers/aiTasks.d.ts +4 -0
  15. package/dist/commands/start/handlers/aiTasks.d.ts.map +1 -0
  16. package/dist/commands/start/handlers/aiTasks.js +95 -0
  17. package/dist/commands/start/handlers/aiTasks.js.map +1 -0
  18. package/dist/commands/start/handlers/cronjobs.d.ts +4 -0
  19. package/dist/commands/start/handlers/cronjobs.d.ts.map +1 -0
  20. package/dist/commands/start/handlers/cronjobs.js +80 -0
  21. package/dist/commands/start/handlers/cronjobs.js.map +1 -0
  22. package/dist/commands/start/handlers/emailLayouts.d.ts +4 -0
  23. package/dist/commands/start/handlers/emailLayouts.d.ts.map +1 -0
  24. package/dist/commands/start/handlers/emailLayouts.js +83 -0
  25. package/dist/commands/start/handlers/emailLayouts.js.map +1 -0
  26. package/dist/commands/start/handlers/emailTemplates.d.ts +4 -0
  27. package/dist/commands/start/handlers/emailTemplates.d.ts.map +1 -0
  28. package/dist/commands/start/handlers/emailTemplates.js +83 -0
  29. package/dist/commands/start/handlers/emailTemplates.js.map +1 -0
  30. package/dist/commands/start/handlers/index.d.ts +11 -0
  31. package/dist/commands/start/handlers/index.d.ts.map +1 -0
  32. package/dist/commands/start/handlers/index.js +11 -0
  33. package/dist/commands/start/handlers/index.js.map +1 -0
  34. package/dist/commands/start/handlers/objects.d.ts +8 -0
  35. package/dist/commands/start/handlers/objects.d.ts.map +1 -0
  36. package/dist/commands/start/handlers/objects.js +205 -0
  37. package/dist/commands/start/handlers/objects.js.map +1 -0
  38. package/dist/commands/start/handlers/pages.d.ts +4 -0
  39. package/dist/commands/start/handlers/pages.d.ts.map +1 -0
  40. package/dist/commands/start/handlers/pages.js +86 -0
  41. package/dist/commands/start/handlers/pages.js.map +1 -0
  42. package/dist/commands/start/handlers/pdfTemplates.d.ts +4 -0
  43. package/dist/commands/start/handlers/pdfTemplates.d.ts.map +1 -0
  44. package/dist/commands/start/handlers/pdfTemplates.js +81 -0
  45. package/dist/commands/start/handlers/pdfTemplates.js.map +1 -0
  46. package/dist/commands/start/handlers/reports.d.ts +4 -0
  47. package/dist/commands/start/handlers/reports.d.ts.map +1 -0
  48. package/dist/commands/start/handlers/reports.js +159 -0
  49. package/dist/commands/start/handlers/reports.js.map +1 -0
  50. package/dist/commands/start/handlers/stateMachines.d.ts +4 -0
  51. package/dist/commands/start/handlers/stateMachines.d.ts.map +1 -0
  52. package/dist/commands/start/handlers/stateMachines.js +549 -0
  53. package/dist/commands/start/handlers/stateMachines.js.map +1 -0
  54. package/dist/commands/start/handlers/workflows.d.ts +5 -0
  55. package/dist/commands/start/handlers/workflows.d.ts.map +1 -0
  56. package/dist/commands/start/handlers/workflows.js +277 -0
  57. package/dist/commands/start/handlers/workflows.js.map +1 -0
  58. package/dist/commands/start/index.d.ts +5 -0
  59. package/dist/commands/start/index.d.ts.map +1 -0
  60. package/dist/commands/start/index.js +304 -0
  61. package/dist/commands/start/index.js.map +1 -0
  62. package/dist/commands/start/types.d.ts +25 -0
  63. package/dist/commands/start/types.d.ts.map +1 -0
  64. package/dist/commands/start/types.js +2 -0
  65. package/dist/commands/start/types.js.map +1 -0
  66. package/dist/commands/start/utils.d.ts +10 -0
  67. package/dist/commands/start/utils.d.ts.map +1 -0
  68. package/dist/commands/start/utils.js +191 -0
  69. package/dist/commands/start/utils.js.map +1 -0
  70. package/dist/commands/start.d.ts +2 -0
  71. package/dist/commands/start.d.ts.map +1 -0
  72. package/dist/commands/start.js +2 -0
  73. package/dist/commands/start.js.map +1 -0
  74. package/dist/commands/upload.d.ts +3 -0
  75. package/dist/commands/upload.d.ts.map +1 -0
  76. package/dist/commands/upload.js +115 -0
  77. package/dist/commands/upload.js.map +1 -0
  78. package/dist/commands/workflow-info.d.ts +11 -0
  79. package/dist/commands/workflow-info.d.ts.map +1 -0
  80. package/dist/commands/workflow-info.js +159 -0
  81. package/dist/commands/workflow-info.js.map +1 -0
  82. package/dist/components/DownloadProgress.d.ts +11 -0
  83. package/dist/components/DownloadProgress.d.ts.map +1 -0
  84. package/dist/components/DownloadProgress.js +29 -0
  85. package/dist/components/DownloadProgress.js.map +1 -0
  86. package/dist/components/SetupForm.d.ts +8 -0
  87. package/dist/components/SetupForm.d.ts.map +1 -0
  88. package/dist/components/SetupForm.js +56 -0
  89. package/dist/components/SetupForm.js.map +1 -0
  90. package/dist/components/UploadProgress.d.ts +11 -0
  91. package/dist/components/UploadProgress.d.ts.map +1 -0
  92. package/dist/components/UploadProgress.js +29 -0
  93. package/dist/components/UploadProgress.js.map +1 -0
  94. package/dist/index.d.ts +3 -0
  95. package/dist/index.d.ts.map +1 -0
  96. package/dist/index.js +63 -0
  97. package/dist/index.js.map +1 -0
  98. package/dist/types/index.d.ts +18 -0
  99. package/dist/types/index.d.ts.map +1 -0
  100. package/dist/types/index.js +2 -0
  101. package/dist/types/index.js.map +1 -0
  102. package/dist/utils/api.d.ts +47 -0
  103. package/dist/utils/api.d.ts.map +1 -0
  104. package/dist/utils/api.js +676 -0
  105. package/dist/utils/api.js.map +1 -0
  106. package/dist/utils/auth.d.ts +4 -0
  107. package/dist/utils/auth.d.ts.map +1 -0
  108. package/dist/utils/auth.js +22 -0
  109. package/dist/utils/auth.js.map +1 -0
  110. package/dist/utils/docs.d.ts +2 -0
  111. package/dist/utils/docs.d.ts.map +1 -0
  112. package/dist/utils/docs.js +41 -0
  113. package/dist/utils/docs.js.map +1 -0
  114. package/dist/utils/errorLogger.d.ts +6 -0
  115. package/dist/utils/errorLogger.d.ts.map +1 -0
  116. package/dist/utils/errorLogger.js +29 -0
  117. package/dist/utils/errorLogger.js.map +1 -0
  118. package/dist/utils/files.d.ts +14 -0
  119. package/dist/utils/files.d.ts.map +1 -0
  120. package/dist/utils/files.js +732 -0
  121. package/dist/utils/files.js.map +1 -0
  122. package/dist/utils/lockManager.d.ts +15 -0
  123. package/dist/utils/lockManager.d.ts.map +1 -0
  124. package/dist/utils/lockManager.js +126 -0
  125. package/dist/utils/lockManager.js.map +1 -0
  126. package/dist/utils/summaryGenerator.d.ts +2 -0
  127. package/dist/utils/summaryGenerator.d.ts.map +1 -0
  128. package/dist/utils/summaryGenerator.js +183 -0
  129. package/dist/utils/summaryGenerator.js.map +1 -0
  130. package/dist/utils/uploadHandler.d.ts +35 -0
  131. package/dist/utils/uploadHandler.d.ts.map +1 -0
  132. package/dist/utils/uploadHandler.js +706 -0
  133. package/dist/utils/uploadHandler.js.map +1 -0
  134. package/object_response.png +0 -0
  135. package/object_specs_response.png +0 -0
  136. package/package.json +56 -0
@@ -0,0 +1,83 @@
1
+ import { promises as fs } from 'fs';
2
+ import { basename, dirname } from 'path';
3
+ import { restoreTableRecordFromFiles } from '../../../utils/files.js';
4
+ export async function handleEmailLayoutFileChange(filePath, apiInstance, isNewFile, addLog) {
5
+ const fileName = basename(filePath);
6
+ try {
7
+ if (fileName === 'layout.json') {
8
+ const layoutData = JSON.parse(await fs.readFile(filePath, 'utf-8'));
9
+ const fileDir = dirname(filePath);
10
+ const restoredData = await restoreTableRecordFromFiles(fileDir, 'cms_email_layouts', layoutData);
11
+ if (isNewFile) {
12
+ const { id, ...createData } = restoredData;
13
+ const formData = new URLSearchParams();
14
+ Object.entries(createData).forEach(([key, value]) => {
15
+ if (value !== null && value !== undefined) {
16
+ formData.append(key, String(value));
17
+ }
18
+ });
19
+ const response = await apiInstance.httpClient.post('/admin/ajax/cms_object/operation?do=cms_email_layouts__add', formData, {
20
+ headers: {
21
+ 'Content-Type': 'application/x-www-form-urlencoded',
22
+ }
23
+ });
24
+ if (response.data && response.data.success && response.data.id) {
25
+ addLog(`✓ Created email layout (ID: ${response.data.id})`, 'success');
26
+ }
27
+ else {
28
+ const errorMsg = response.data?.error || response.data?.message || 'Unknown response format';
29
+ addLog(`✗ Failed to create email layout: ${errorMsg}`, 'error');
30
+ }
31
+ }
32
+ else {
33
+ const formData = new URLSearchParams();
34
+ formData.append('id', restoredData.id.toString());
35
+ Object.entries(restoredData).forEach(([key, value]) => {
36
+ if (key !== 'id' && value !== null && value !== undefined) {
37
+ formData.append(key, String(value));
38
+ }
39
+ });
40
+ const response = await apiInstance.httpClient.post('/admin/ajax/cms_object/operation?do=cms_email_layouts__edit', formData, {
41
+ headers: {
42
+ 'Content-Type': 'application/x-www-form-urlencoded',
43
+ }
44
+ });
45
+ if (response.data && response.data.success) {
46
+ addLog(`✓ Updated email layout (ID: ${restoredData.id})`, 'success');
47
+ }
48
+ else {
49
+ const errorMsg = response.data?.error || response.data?.message || 'Unknown response format';
50
+ addLog(`✗ Failed to update email layout: ${errorMsg}`, 'error');
51
+ }
52
+ }
53
+ }
54
+ else if (fileName.endsWith('.bfy')) {
55
+ const layoutJsonPath = dirname(filePath) + '/layout.json';
56
+ const layoutData = JSON.parse(await fs.readFile(layoutJsonPath, 'utf-8'));
57
+ const fileDir = dirname(filePath);
58
+ const restoredData = await restoreTableRecordFromFiles(fileDir, 'cms_email_layouts', layoutData);
59
+ const formData = new URLSearchParams();
60
+ formData.append('id', restoredData.id.toString());
61
+ if (restoredData.layout_html !== undefined)
62
+ formData.append('layout_html', restoredData.layout_html);
63
+ if (restoredData.layout_text !== undefined)
64
+ formData.append('layout_text', restoredData.layout_text);
65
+ const response = await apiInstance.httpClient.post('/admin/ajax/cms_object/operation?do=cms_email_layouts__edit', formData, {
66
+ headers: {
67
+ 'Content-Type': 'application/x-www-form-urlencoded',
68
+ }
69
+ });
70
+ if (response.data && response.data.success) {
71
+ addLog(`✓ Updated email layout content (ID: ${restoredData.id})`, 'success');
72
+ }
73
+ else {
74
+ const errorMsg = response.data?.error || response.data?.message || 'Unknown response format';
75
+ addLog(`✗ Failed to update email layout content: ${errorMsg}`, 'error');
76
+ }
77
+ }
78
+ }
79
+ catch (err) {
80
+ addLog(`✗ Error handling email layout file: ${err instanceof Error ? err.message : 'Unknown error'}`, 'error');
81
+ }
82
+ }
83
+ //# sourceMappingURL=emailLayouts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emailLayouts.js","sourceRoot":"","sources":["../../../../src/commands/start/handlers/emailLayouts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { ButterflyAPI } from '../../../utils/api.js';
2
+ import { AddLogFn } from '../types.js';
3
+ export declare function handleEmailTemplateFileChange(filePath: string, apiInstance: ButterflyAPI, isNewFile: boolean, addLog: AddLogFn): Promise<void>;
4
+ //# sourceMappingURL=emailTemplates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emailTemplates.d.ts","sourceRoot":"","sources":["../../../../src/commands/start/handlers/emailTemplates.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,YAAY,EACzB,SAAS,EAAE,OAAO,EAClB,MAAM,EAAE,QAAQ,GACf,OAAO,CAAC,IAAI,CAAC,CAsFf"}
@@ -0,0 +1,83 @@
1
+ import { promises as fs } from 'fs';
2
+ import { basename, dirname } from 'path';
3
+ import { restoreTableRecordFromFiles } from '../../../utils/files.js';
4
+ export async function handleEmailTemplateFileChange(filePath, apiInstance, isNewFile, addLog) {
5
+ const fileName = basename(filePath);
6
+ try {
7
+ if (fileName === 'template.json') {
8
+ const templateData = JSON.parse(await fs.readFile(filePath, 'utf-8'));
9
+ const fileDir = dirname(filePath);
10
+ const restoredData = await restoreTableRecordFromFiles(fileDir, 'cms_email_templates', templateData);
11
+ if (isNewFile) {
12
+ const { id, ...createData } = restoredData;
13
+ const formData = new URLSearchParams();
14
+ Object.entries(createData).forEach(([key, value]) => {
15
+ if (value !== null && value !== undefined) {
16
+ formData.append(key, String(value));
17
+ }
18
+ });
19
+ const response = await apiInstance.httpClient.post('/admin/ajax/cms_object/operation?do=cms_email_templates__add', formData, {
20
+ headers: {
21
+ 'Content-Type': 'application/x-www-form-urlencoded',
22
+ }
23
+ });
24
+ if (response.data && response.data.success && response.data.id) {
25
+ addLog(`✓ Created email template (ID: ${response.data.id})`, 'success');
26
+ }
27
+ else {
28
+ const errorMsg = response.data?.error || response.data?.message || 'Unknown response format';
29
+ addLog(`✗ Failed to create email template: ${errorMsg}`, 'error');
30
+ }
31
+ }
32
+ else {
33
+ const formData = new URLSearchParams();
34
+ formData.append('id', restoredData.id.toString());
35
+ Object.entries(restoredData).forEach(([key, value]) => {
36
+ if (key !== 'id' && value !== null && value !== undefined) {
37
+ formData.append(key, String(value));
38
+ }
39
+ });
40
+ const response = await apiInstance.httpClient.post('/admin/ajax/cms_object/operation?do=cms_email_templates__edit', formData, {
41
+ headers: {
42
+ 'Content-Type': 'application/x-www-form-urlencoded',
43
+ }
44
+ });
45
+ if (response.data && response.data.success) {
46
+ addLog(`✓ Updated email template (ID: ${restoredData.id})`, 'success');
47
+ }
48
+ else {
49
+ const errorMsg = response.data?.error || response.data?.message || 'Unknown response format';
50
+ addLog(`✗ Failed to update email template: ${errorMsg}`, 'error');
51
+ }
52
+ }
53
+ }
54
+ else if (fileName.endsWith('.bfy')) {
55
+ const templateJsonPath = dirname(filePath) + '/template.json';
56
+ const templateData = JSON.parse(await fs.readFile(templateJsonPath, 'utf-8'));
57
+ const fileDir = dirname(filePath);
58
+ const restoredData = await restoreTableRecordFromFiles(fileDir, 'cms_email_templates', templateData);
59
+ const formData = new URLSearchParams();
60
+ formData.append('id', restoredData.id.toString());
61
+ if (restoredData.subject !== undefined)
62
+ formData.append('subject', restoredData.subject);
63
+ if (restoredData.content !== undefined)
64
+ formData.append('content', restoredData.content);
65
+ const response = await apiInstance.httpClient.post('/admin/ajax/cms_object/operation?do=cms_email_templates__edit', formData, {
66
+ headers: {
67
+ 'Content-Type': 'application/x-www-form-urlencoded',
68
+ }
69
+ });
70
+ if (response.data && response.data.success) {
71
+ addLog(`✓ Updated email template content (ID: ${restoredData.id})`, 'success');
72
+ }
73
+ else {
74
+ const errorMsg = response.data?.error || response.data?.message || 'Unknown response format';
75
+ addLog(`✗ Failed to update email template content: ${errorMsg}`, 'error');
76
+ }
77
+ }
78
+ }
79
+ catch (err) {
80
+ addLog(`✗ Error handling email template file: ${err instanceof Error ? err.message : 'Unknown error'}`, 'error');
81
+ }
82
+ }
83
+ //# sourceMappingURL=emailTemplates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emailTemplates.js","sourceRoot":"","sources":["../../../../src/commands/start/handlers/emailTemplates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export { handleReportFileChange } from './reports.js';
2
+ export { handleFileUpdate, handleListingQueryUpdate, handleResourceCreation, handleSpecCreation, downloadCreatedResource } from './objects.js';
3
+ export { handlePageFileChange } from './pages.js';
4
+ export { handleStateMachineFileChange } from './stateMachines.js';
5
+ export { handleAiTaskFileChange } from './aiTasks.js';
6
+ export { handleCronjobFileChange } from './cronjobs.js';
7
+ export { handleEmailTemplateFileChange } from './emailTemplates.js';
8
+ export { handlePdfTemplateFileChange } from './pdfTemplates.js';
9
+ export { handleEmailLayoutFileChange } from './emailLayouts.js';
10
+ export { handleWorkflowFileChange, initializeConnectionCache } from './workflows.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/start/handlers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC/I,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,11 @@
1
+ export { handleReportFileChange } from './reports.js';
2
+ export { handleFileUpdate, handleListingQueryUpdate, handleResourceCreation, handleSpecCreation, downloadCreatedResource } from './objects.js';
3
+ export { handlePageFileChange } from './pages.js';
4
+ export { handleStateMachineFileChange } from './stateMachines.js';
5
+ export { handleAiTaskFileChange } from './aiTasks.js';
6
+ export { handleCronjobFileChange } from './cronjobs.js';
7
+ export { handleEmailTemplateFileChange } from './emailTemplates.js';
8
+ export { handlePdfTemplateFileChange } from './pdfTemplates.js';
9
+ export { handleEmailLayoutFileChange } from './emailLayouts.js';
10
+ export { handleWorkflowFileChange, initializeConnectionCache } from './workflows.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/start/handlers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC/I,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { ButterflyAPI } from '../../../utils/api.js';
2
+ import { AddLogFn } from '../types.js';
3
+ export declare function handleFileUpdate(filePath: string, apiInstance: ButterflyAPI, addLog: AddLogFn): Promise<void>;
4
+ export declare function handleListingQueryUpdate(filePath: string, apiInstance: ButterflyAPI, addLog: AddLogFn): Promise<void>;
5
+ export declare function handleResourceCreation(filePath: string, apiInstance: ButterflyAPI, addLog: AddLogFn): Promise<void>;
6
+ export declare function handleSpecCreation(filePath: string, apiInstance: ButterflyAPI, addLog: AddLogFn): Promise<void>;
7
+ export declare function downloadCreatedResource(tableName: string, resourceId: number, apiInstance: ButterflyAPI, outputPath: string, addLog: AddLogFn): Promise<void>;
8
+ //# sourceMappingURL=objects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objects.d.ts","sourceRoot":"","sources":["../../../../src/commands/start/handlers/objects.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,QAAQ,GACf,OAAO,CAAC,IAAI,CAAC,CAwDf;AAED,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,QAAQ,GACf,OAAO,CAAC,IAAI,CAAC,CAgCf;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,QAAQ,GACf,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,QAAQ,GACf,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,YAAY,EACzB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,QAAQ,GACf,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
@@ -0,0 +1,205 @@
1
+ import { promises as fs } from 'fs';
2
+ import { join, basename, dirname } from 'path';
3
+ import { saveObjectWithSpecs, saveTableRecord, restoreFieldsFromFiles, restoreTableRecordFromFiles } from '../../../utils/files.js';
4
+ import { getResourceInfo, getSpecColumnName, getFieldValue, syncCodeFileToSpec } from '../utils.js';
5
+ export async function handleFileUpdate(filePath, apiInstance, addLog) {
6
+ let columnName, objectId, fieldValue;
7
+ if (filePath.endsWith('spec.json')) {
8
+ const { specData } = await getResourceInfo(filePath);
9
+ const fileDir = dirname(filePath);
10
+ const restoredSpecData = await restoreFieldsFromFiles(fileDir, specData);
11
+ columnName = getSpecColumnName(restoredSpecData, 'spec.json');
12
+ objectId = restoredSpecData.id;
13
+ fieldValue = getFieldValue(restoredSpecData, columnName);
14
+ }
15
+ else {
16
+ const fileName = basename(filePath);
17
+ const codeFileExtensions = ['.bfy', '.yaml', '.js', '.css'];
18
+ const codeFileNames = ['code.bfy', 'template_code.bfy', 'processing_code.bfy', 'filter_code.bfy', 'configuration.yaml', 'code.js', 'style.css', 'template.bfy'];
19
+ if (!codeFileExtensions.some(ext => fileName.endsWith(ext)) || !codeFileNames.includes(fileName)) {
20
+ return;
21
+ }
22
+ const syncResult = await syncCodeFileToSpec(filePath);
23
+ if (!syncResult) {
24
+ addLog(`✗ Unable to sync ${fileName} - unsupported file type combination`, 'error');
25
+ return;
26
+ }
27
+ const { specData } = await getResourceInfo(filePath);
28
+ columnName = getSpecColumnName(specData, fileName);
29
+ objectId = specData.id;
30
+ fieldValue = getFieldValue(syncResult.updatedSpecData, columnName);
31
+ }
32
+ const updateData = new URLSearchParams();
33
+ updateData.append('id', objectId.toString());
34
+ updateData.append(columnName, fieldValue);
35
+ const url = `/admin/ajax/cms_object/operation?do=object_specs__edit`;
36
+ const response = await apiInstance.httpClient.post(url, updateData, {
37
+ headers: {
38
+ 'Content-Type': 'application/x-www-form-urlencoded',
39
+ }
40
+ });
41
+ if (response.data && response.data.success) {
42
+ addLog(`✓ Updated object_specs.${columnName} (ID: ${objectId})`, 'success');
43
+ }
44
+ else {
45
+ const errorMsg = response.data?.error || response.data?.message || (typeof response.data === 'string' ? response.data : 'Unknown response format');
46
+ addLog(`✗ Failed to update object_specs.${columnName}: ${errorMsg}`, 'error');
47
+ }
48
+ }
49
+ export async function handleListingQueryUpdate(filePath, apiInstance, addLog) {
50
+ try {
51
+ const listingQueryContent = await fs.readFile(filePath, 'utf-8');
52
+ const objectJsonPath = join(dirname(filePath), 'object.json');
53
+ const objectData = JSON.parse(await fs.readFile(objectJsonPath, 'utf-8'));
54
+ const updateData = new URLSearchParams();
55
+ updateData.append('id', objectData.id.toString());
56
+ updateData.append('listing_query', listingQueryContent);
57
+ const url = `/admin/ajax/cms_object/operation?do=objects__edit`;
58
+ const response = await apiInstance.httpClient.post(url, updateData, {
59
+ headers: {
60
+ 'Content-Type': 'application/x-www-form-urlencoded',
61
+ }
62
+ });
63
+ if (response.data && response.data.success) {
64
+ addLog(`✓ Updated objects.listing_query (ID: ${objectData.id})`, 'success');
65
+ }
66
+ else {
67
+ const errorMsg = response.data?.error || response.data?.message || (typeof response.data === 'string' ? response.data : 'Unknown response format');
68
+ addLog(`✗ Failed to update objects.listing_query: ${errorMsg}`, 'error');
69
+ }
70
+ }
71
+ catch (err) {
72
+ addLog(`✗ Error updating listing_query.bfy: ${err instanceof Error ? err.message : 'Unknown error'}`, 'error');
73
+ }
74
+ }
75
+ export async function handleResourceCreation(filePath, apiInstance, addLog) {
76
+ try {
77
+ const parts = filePath.split('/');
78
+ const resourcesIndex = parts.findIndex(part => part === 'butterfly-resources');
79
+ const tableName = parts[resourcesIndex + 1];
80
+ const resourceData = JSON.parse(await fs.readFile(filePath, 'utf-8'));
81
+ const fileDir = dirname(filePath);
82
+ const restoredData = await restoreTableRecordFromFiles(fileDir, tableName, resourceData);
83
+ const { id, ...createData } = restoredData;
84
+ const formData = new URLSearchParams();
85
+ Object.entries(createData).forEach(([key, value]) => {
86
+ if (value !== null && value !== undefined) {
87
+ formData.append(key, String(value));
88
+ }
89
+ });
90
+ const url = `/admin/ajax/cms_object/operation?do=${tableName}__add`;
91
+ const response = await apiInstance.httpClient.post(url, formData, {
92
+ headers: {
93
+ 'Content-Type': 'application/x-www-form-urlencoded',
94
+ }
95
+ });
96
+ if (response.data && response.data.success && response.data.id) {
97
+ addLog(`✓ Created ${tableName.slice(0, -1)} (ID: ${response.data.id})`, 'success');
98
+ const outputPath = dirname(dirname(dirname(filePath)));
99
+ await downloadCreatedResource(tableName, response.data.id, apiInstance, outputPath, addLog);
100
+ }
101
+ else {
102
+ const errorMsg = response.data?.error || response.data?.message || 'Unknown response format';
103
+ addLog(`✗ Failed to create ${tableName.slice(0, -1)}: ${errorMsg}`, 'error');
104
+ }
105
+ }
106
+ catch (err) {
107
+ addLog(`✗ Error creating resource: ${err instanceof Error ? err.message : 'Unknown error'}`, 'error');
108
+ }
109
+ }
110
+ export async function handleSpecCreation(filePath, apiInstance, addLog) {
111
+ try {
112
+ const specData = JSON.parse(await fs.readFile(filePath, 'utf-8'));
113
+ const fileDir = dirname(filePath);
114
+ const restoredData = await restoreFieldsFromFiles(fileDir, specData);
115
+ const { id, ...createData } = restoredData;
116
+ const formData = new URLSearchParams();
117
+ Object.entries(createData).forEach(([key, value]) => {
118
+ if (value !== null && value !== undefined) {
119
+ formData.append(key, String(value));
120
+ }
121
+ });
122
+ const url = `/admin/ajax/cms_object/operation?do=object_specs__add`;
123
+ const response = await apiInstance.httpClient.post(url, formData, {
124
+ headers: {
125
+ 'Content-Type': 'application/x-www-form-urlencoded',
126
+ }
127
+ });
128
+ if (response.data && response.data.success && response.data.id) {
129
+ addLog(`✓ Created object_spec (ID: ${response.data.id})`, 'success');
130
+ const outputPath = dirname(dirname(dirname(dirname(filePath))));
131
+ await downloadCreatedSpec(response.data.id, specData.object_id, apiInstance, outputPath, addLog);
132
+ }
133
+ else {
134
+ const errorMsg = response.data?.error || response.data?.message || 'Unknown response format';
135
+ addLog(`✗ Failed to create object_spec: ${errorMsg}`, 'error');
136
+ }
137
+ }
138
+ catch (err) {
139
+ addLog(`✗ Error creating object_spec: ${err instanceof Error ? err.message : 'Unknown error'}`, 'error');
140
+ }
141
+ }
142
+ export async function downloadCreatedResource(tableName, resourceId, apiInstance, outputPath, addLog) {
143
+ try {
144
+ const resourceResponse = await apiInstance.httpClient.get('/admin/ajax/cms_object/get', {
145
+ params: {
146
+ table_name: tableName,
147
+ column: 'id',
148
+ value: resourceId.toString()
149
+ }
150
+ });
151
+ if (resourceResponse.data && resourceResponse.data.success && resourceResponse.data.data && resourceResponse.data.data.length > 0) {
152
+ const resourceData = resourceResponse.data.data[0];
153
+ if (tableName === 'objects') {
154
+ const specs = await apiInstance.fetchObjectSpecs(resourceId);
155
+ await saveObjectWithSpecs(outputPath, resourceData.table_name, resourceData, specs);
156
+ }
157
+ else {
158
+ await saveTableRecord(outputPath, tableName, resourceData);
159
+ }
160
+ addLog(`✓ Downloaded created ${tableName.slice(0, -1)} (ID: ${resourceId})`, 'success');
161
+ }
162
+ else {
163
+ addLog(`✗ Failed to download created ${tableName.slice(0, -1)} (ID: ${resourceId})`, 'error');
164
+ }
165
+ }
166
+ catch (err) {
167
+ addLog(`✗ Error downloading created resource: ${err instanceof Error ? err.message : 'Unknown error'}`, 'error');
168
+ }
169
+ }
170
+ async function downloadCreatedSpec(specId, objectId, apiInstance, outputPath, addLog) {
171
+ try {
172
+ const specResponse = await apiInstance.httpClient.get('/admin/ajax/cms_object/get', {
173
+ params: {
174
+ table_name: 'object_specs',
175
+ column: 'id',
176
+ value: specId.toString()
177
+ }
178
+ });
179
+ if (specResponse.data && specResponse.data.success && specResponse.data.data && specResponse.data.data.length > 0) {
180
+ const objectResponse = await apiInstance.httpClient.get('/admin/ajax/cms_object/get', {
181
+ params: {
182
+ table_name: 'objects',
183
+ column: 'id',
184
+ value: objectId.toString()
185
+ }
186
+ });
187
+ if (objectResponse.data && objectResponse.data.success && objectResponse.data.data && objectResponse.data.data.length > 0) {
188
+ const objectData = objectResponse.data.data[0];
189
+ const allSpecs = await apiInstance.fetchObjectSpecs(objectId);
190
+ await saveObjectWithSpecs(outputPath, objectData.table_name, objectData, allSpecs);
191
+ addLog(`✓ Downloaded created object_spec and refreshed parent object (ID: ${specId})`, 'success');
192
+ }
193
+ else {
194
+ addLog(`✗ Failed to download parent object for spec (ID: ${specId})`, 'error');
195
+ }
196
+ }
197
+ else {
198
+ addLog(`✗ Failed to download created object_spec (ID: ${specId})`, 'error');
199
+ }
200
+ }
201
+ catch (err) {
202
+ addLog(`✗ Error downloading created object_spec: ${err instanceof Error ? err.message : 'Unknown error'}`, 'error');
203
+ }
204
+ }
205
+ //# sourceMappingURL=objects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objects.js","sourceRoot":"","sources":["../../../../src/commands/start/handlers/objects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAEpI,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEpG,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB,EAChB,WAAyB,EACzB,MAAgB;IAEhB,IAAI,UAAkB,EAAE,QAAgB,EAAE,UAAkB,CAAC;IAE7D,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAEnC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;QAGrD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,gBAAgB,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEzE,UAAU,GAAG,iBAAiB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;QAC9D,QAAQ,GAAG,gBAAgB,CAAC,EAAE,CAAC;QAC/B,UAAU,GAAG,aAAa,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QAEN,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,CAAC,UAAU,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;QAEhK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjG,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,CAAC,oBAAoB,QAAQ,sCAAsC,EAAE,OAAO,CAAC,CAAC;YACpF,OAAO;QACT,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;QACrD,UAAU,GAAG,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnD,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC;QACvB,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC;IAGD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAE1C,MAAM,GAAG,GAAG,wDAAwD,CAAC;IAGrE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE;QAClE,OAAO,EAAE;YACP,cAAc,EAAE,mCAAmC;SACpD;KACF,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3C,MAAM,CAAC,0BAA0B,UAAU,SAAS,QAAQ,GAAG,EAAE,SAAS,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;QACnJ,MAAM,CAAC,mCAAmC,UAAU,KAAK,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,QAAgB,EAChB,WAAyB,EACzB,MAAgB;IAEhB,IAAI,CAAC;QAEH,MAAM,mBAAmB,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAGjE,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;QAG1E,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClD,UAAU,CAAC,MAAM,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;QAExD,MAAM,GAAG,GAAG,mDAAmD,CAAC;QAGhE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE;YAClE,OAAO,EAAE;gBACP,cAAc,EAAE,mCAAmC;aACpD;SACF,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3C,MAAM,CAAC,wCAAwC,UAAU,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;YACnJ,MAAM,CAAC,6CAA6C,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,uCAAuC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;IACjH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAgB,EAChB,WAAyB,EACzB,MAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC;QAC/E,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;QAE5C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QAGtE,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,YAAY,GAAG,MAAM,2BAA2B,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QAGzF,MAAM,EAAE,EAAE,EAAE,GAAG,UAAU,EAAE,GAAG,YAAY,CAAC;QAG3C,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;QACvC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAClD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC1C,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,uCAAuC,SAAS,OAAO,CAAC;QAEpE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE;YAChE,OAAO,EAAE;gBACP,cAAc,EAAE,mCAAmC;aACpD;SACF,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YAC/D,MAAM,CAAC,aAAa,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;YAGnF,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,uBAAuB,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAC9F,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,yBAAyB,CAAC;YAC7F,MAAM,CAAC,sBAAsB,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,8BAA8B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;IACxG,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,WAAyB,EACzB,MAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QAGlE,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,YAAY,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAGrE,MAAM,EAAE,EAAE,EAAE,GAAG,UAAU,EAAE,GAAG,YAAY,CAAC;QAG3C,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;QACvC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAClD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC1C,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,uDAAuD,CAAC;QAEpE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE;YAChE,OAAO,EAAE;gBACP,cAAc,EAAE,mCAAmC;aACpD;SACF,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YAC/D,MAAM,CAAC,8BAA8B,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;YAGrE,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAChE,MAAM,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QACnG,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,yBAAyB,CAAC;YAC7F,MAAM,CAAC,mCAAmC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,iCAAiC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;IAC3G,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,SAAiB,EACjB,UAAkB,EAClB,WAAyB,EACzB,UAAkB,EAClB,MAAgB;IAEhB,IAAI,CAAC;QAEH,MAAM,gBAAgB,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,4BAA4B,EAAE;YACtF,MAAM,EAAE;gBACN,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE;aAC7B;SACF,CAAC,CAAC;QAEH,IAAI,gBAAgB,CAAC,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClI,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAGnD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBAC7D,MAAM,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;YACtF,CAAC;iBAAM,CAAC;gBAEN,MAAM,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;YAC7D,CAAC;YAED,MAAM,CAAC,wBAAwB,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,UAAU,GAAG,EAAE,SAAS,CAAC,CAAC;QAC1F,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,gCAAgC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,UAAU,GAAG,EAAE,OAAO,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,yCAAyC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;IACnH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,MAAc,EACd,QAAgB,EAChB,WAAyB,EACzB,UAAkB,EAClB,MAAgB;IAEhB,IAAI,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,4BAA4B,EAAE;YAClF,MAAM,EAAE;gBACN,UAAU,EAAE,cAAc;gBAC1B,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;aACzB;SACF,CAAC,CAAC;QAEH,IAAI,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAElH,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,4BAA4B,EAAE;gBACpF,MAAM,EAAE;oBACN,UAAU,EAAE,SAAS;oBACrB,MAAM,EAAE,IAAI;oBACZ,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE;iBAC3B;aACF,CAAC,CAAC;YAEH,IAAI,cAAc,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1H,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAG/C,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBAE9D,MAAM,mBAAmB,CACvB,UAAU,EACV,UAAU,CAAC,UAAU,EACrB,UAAU,EACV,QAAQ,CACT,CAAC;gBAEF,MAAM,CAAC,qEAAqE,MAAM,GAAG,EAAE,SAAS,CAAC,CAAC;YACpG,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,oDAAoD,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,iDAAiD,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,4CAA4C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;IACtH,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { ButterflyAPI } from '../../../utils/api.js';
2
+ import { AddLogFn } from '../types.js';
3
+ export declare function handlePageFileChange(filePath: string, apiInstance: ButterflyAPI, isNewFile: boolean, addLog: AddLogFn): Promise<void>;
4
+ //# sourceMappingURL=pages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../../../src/commands/start/handlers/pages.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,YAAY,EACzB,SAAS,EAAE,OAAO,EAClB,MAAM,EAAE,QAAQ,GACf,OAAO,CAAC,IAAI,CAAC,CA8Ff"}
@@ -0,0 +1,86 @@
1
+ import { promises as fs } from 'fs';
2
+ import { join, basename, dirname } from 'path';
3
+ import { restoreTableRecordFromFiles } from '../../../utils/files.js';
4
+ import { downloadCreatedResource } from './objects.js';
5
+ export async function handlePageFileChange(filePath, apiInstance, isNewFile, addLog) {
6
+ const fileName = basename(filePath);
7
+ const parts = filePath.split('/');
8
+ const pagesIndex = parts.findIndex(part => part === 'pages');
9
+ if (pagesIndex === -1)
10
+ return;
11
+ try {
12
+ if (fileName === 'page.json') {
13
+ const pageData = JSON.parse(await fs.readFile(filePath, 'utf-8'));
14
+ const fileDir = dirname(filePath);
15
+ const restoredData = await restoreTableRecordFromFiles(fileDir, 'pages', pageData);
16
+ if (isNewFile) {
17
+ const { id, ...createData } = restoredData;
18
+ const formData = new URLSearchParams();
19
+ Object.entries(createData).forEach(([key, value]) => {
20
+ if (value !== null && value !== undefined) {
21
+ formData.append(key, String(value));
22
+ }
23
+ });
24
+ const response = await apiInstance.httpClient.post('/admin/ajax/cms_object/operation?do=pages__add', formData, {
25
+ headers: {
26
+ 'Content-Type': 'application/x-www-form-urlencoded',
27
+ }
28
+ });
29
+ if (response.data && response.data.success && response.data.id) {
30
+ addLog(`✓ Created page (ID: ${response.data.id})`, 'success');
31
+ const outputPath = dirname(dirname(dirname(filePath)));
32
+ await downloadCreatedResource('pages', response.data.id, apiInstance, outputPath, addLog);
33
+ }
34
+ else {
35
+ const errorMsg = response.data?.error || response.data?.message || 'Unknown response format';
36
+ addLog(`✗ Failed to create page: ${errorMsg}`, 'error');
37
+ }
38
+ }
39
+ else {
40
+ const formData = new URLSearchParams();
41
+ formData.append('id', restoredData.id.toString());
42
+ Object.entries(restoredData).forEach(([key, value]) => {
43
+ if (key !== 'id' && value !== null && value !== undefined) {
44
+ formData.append(key, String(value));
45
+ }
46
+ });
47
+ const response = await apiInstance.httpClient.post('/admin/ajax/cms_object/operation?do=pages__edit', formData, {
48
+ headers: {
49
+ 'Content-Type': 'application/x-www-form-urlencoded',
50
+ }
51
+ });
52
+ if (response.data && response.data.success) {
53
+ addLog(`✓ Updated page (ID: ${restoredData.id})`, 'success');
54
+ }
55
+ else {
56
+ const errorMsg = response.data?.error || response.data?.message || 'Unknown response format';
57
+ addLog(`✗ Failed to update page: ${errorMsg}`, 'error');
58
+ }
59
+ }
60
+ }
61
+ else if (fileName === 'page_code.bfy' && !isNewFile) {
62
+ const pageJsonPath = join(dirname(filePath), 'page.json');
63
+ const pageData = JSON.parse(await fs.readFile(pageJsonPath, 'utf-8'));
64
+ const pageCode = await fs.readFile(filePath, 'utf-8');
65
+ const formData = new URLSearchParams();
66
+ formData.append('id', pageData.id.toString());
67
+ formData.append('page_code', pageCode);
68
+ const response = await apiInstance.httpClient.post('/admin/ajax/cms_object/operation?do=pages__edit', formData, {
69
+ headers: {
70
+ 'Content-Type': 'application/x-www-form-urlencoded',
71
+ }
72
+ });
73
+ if (response.data && response.data.success) {
74
+ addLog(`✓ Updated page_code (ID: ${pageData.id})`, 'success');
75
+ }
76
+ else {
77
+ const errorMsg = response.data?.error || response.data?.message || 'Unknown response format';
78
+ addLog(`✗ Failed to update page_code: ${errorMsg}`, 'error');
79
+ }
80
+ }
81
+ }
82
+ catch (err) {
83
+ addLog(`✗ Error handling page file: ${err instanceof Error ? err.message : 'Unknown error'}`, 'error');
84
+ }
85
+ }
86
+ //# sourceMappingURL=pages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.js","sourceRoot":"","sources":["../../../../src/commands/start/handlers/pages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { ButterflyAPI } from '../../../utils/api.js';
2
+ import { AddLogFn } from '../types.js';
3
+ export declare function handlePdfTemplateFileChange(filePath: string, apiInstance: ButterflyAPI, isNewFile: boolean, addLog: AddLogFn): Promise<void>;
4
+ //# sourceMappingURL=pdfTemplates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdfTemplates.d.ts","sourceRoot":"","sources":["../../../../src/commands/start/handlers/pdfTemplates.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,YAAY,EACzB,SAAS,EAAE,OAAO,EAClB,MAAM,EAAE,QAAQ,GACf,OAAO,CAAC,IAAI,CAAC,CAqFf"}