@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,29 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import Spinner from 'ink-spinner';
4
+ const DownloadProgress = ({ resourceType, current, total, status, error, }) => {
5
+ return (React.createElement(Box, { flexDirection: "column" },
6
+ React.createElement(Box, null,
7
+ status === 'downloading' && (React.createElement(React.Fragment, null,
8
+ React.createElement(Text, { color: "cyan" },
9
+ React.createElement(Spinner, { type: "dots" })),
10
+ React.createElement(Text, null,
11
+ " Downloading ",
12
+ resourceType,
13
+ "... (",
14
+ current,
15
+ "/",
16
+ total,
17
+ ")"))),
18
+ status === 'complete' && (React.createElement(Text, { color: "green" },
19
+ "\u2713 Downloaded ",
20
+ total,
21
+ " ",
22
+ resourceType,
23
+ " successfully!")),
24
+ status === 'error' && (React.createElement(Text, { color: "red" },
25
+ "\u2717 Error: ",
26
+ error)))));
27
+ };
28
+ export { DownloadProgress };
29
+ //# sourceMappingURL=DownloadProgress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DownloadProgress.js","sourceRoot":"","sources":["../../src/components/DownloadProgress.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,OAAO,MAAM,aAAa,CAAC;AAUlC,MAAM,gBAAgB,GAAoC,CAAC,EACzD,YAAY,EACZ,OAAO,EACP,KAAK,EACL,MAAM,EACN,KAAK,GACN,EAAE,EAAE;IACH,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;QACzB,oBAAC,GAAG;YACD,MAAM,KAAK,aAAa,IAAI,CAC3B;gBACE,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;oBAChB,oBAAC,OAAO,IAAC,IAAI,EAAC,MAAM,GAAG,CAClB;gBACP,oBAAC,IAAI;;oBAAe,YAAY;;oBAAO,OAAO;;oBAAG,KAAK;wBAAS,CAC9D,CACJ;YACA,MAAM,KAAK,UAAU,IAAI,CACxB,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO;;gBAAe,KAAK;;gBAAG,YAAY;iCAAsB,CAC7E;YACA,MAAM,KAAK,OAAO,IAAI,CACrB,oBAAC,IAAI,IAAC,KAAK,EAAC,KAAK;;gBAAW,KAAK,CAAQ,CAC1C,CACG,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { AuthConfig } from '../types/index.js';
3
+ interface SetupFormProps {
4
+ onSubmit: (config: AuthConfig) => void;
5
+ }
6
+ declare const SetupForm: React.FC<SetupFormProps>;
7
+ export { SetupForm };
8
+ //# sourceMappingURL=SetupForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SetupForm.d.ts","sourceRoot":"","sources":["../../src/components/SetupForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,UAAU,cAAc;IACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACxC;AAED,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAkFvC,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,56 @@
1
+ import React, { useState } from 'react';
2
+ import { Box, Text, useInput } from 'ink';
3
+ import TextInput from 'ink-text-input';
4
+ const SetupForm = ({ onSubmit }) => {
5
+ const [step, setStep] = useState(0);
6
+ const [endpoint, setEndpoint] = useState('');
7
+ const [email, setEmail] = useState('');
8
+ const [password, setPassword] = useState('');
9
+ const [core, setCore] = useState(false);
10
+ const handleSubmit = () => {
11
+ if (step === 0 && endpoint) {
12
+ setStep(1);
13
+ }
14
+ else if (step === 1 && email) {
15
+ setStep(2);
16
+ }
17
+ else if (step === 2 && password) {
18
+ setStep(3);
19
+ }
20
+ else if (step === 3) {
21
+ onSubmit({ endpoint, email, password, core });
22
+ }
23
+ };
24
+ const handleCoreToggle = () => {
25
+ setCore(!core);
26
+ };
27
+ useInput((input, key) => {
28
+ if (step === 3) {
29
+ if (input === ' ') {
30
+ handleCoreToggle();
31
+ }
32
+ else if (key.return) {
33
+ handleSubmit();
34
+ }
35
+ }
36
+ });
37
+ return (React.createElement(Box, { flexDirection: "column" },
38
+ React.createElement(Text, { color: "green" }, "Butterfly CLI Setup"),
39
+ React.createElement(Text, null, " "),
40
+ step >= 0 && (React.createElement(Box, null,
41
+ React.createElement(Text, null, "Endpoint: "),
42
+ step === 0 ? (React.createElement(TextInput, { value: endpoint, onChange: setEndpoint, onSubmit: handleSubmit })) : (React.createElement(Text, { color: "cyan" }, endpoint)))),
43
+ step >= 1 && (React.createElement(Box, null,
44
+ React.createElement(Text, null, "Email: "),
45
+ step === 1 ? (React.createElement(TextInput, { value: email, onChange: setEmail, onSubmit: handleSubmit })) : (React.createElement(Text, { color: "cyan" }, email)))),
46
+ step >= 2 && (React.createElement(Box, null,
47
+ React.createElement(Text, null, "Password: "),
48
+ step === 2 ? (React.createElement(TextInput, { value: password, onChange: setPassword, onSubmit: handleSubmit, mask: "*" })) : (React.createElement(Text, { color: "cyan" }, '*'.repeat(password.length))))),
49
+ step >= 3 && (React.createElement(Box, null,
50
+ React.createElement(Text, null, "Enable Core Features: "),
51
+ React.createElement(Text, { color: core ? "green" : "gray" },
52
+ core ? "[✓] Yes" : "[ ] No",
53
+ React.createElement(Text, { color: "gray" }, " (Press space to toggle, enter to continue)"))))));
54
+ };
55
+ export { SetupForm };
56
+ //# sourceMappingURL=SetupForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SetupForm.js","sourceRoot":"","sources":["../../src/components/SetupForm.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ interface UploadProgressProps {
3
+ current: number;
4
+ total: number;
5
+ currentFile: string;
6
+ status: 'uploading' | 'complete' | 'error';
7
+ error?: string;
8
+ }
9
+ declare const UploadProgress: React.FC<UploadProgressProps>;
10
+ export { UploadProgress };
11
+ //# sourceMappingURL=UploadProgress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UploadProgress.d.ts","sourceRoot":"","sources":["../../src/components/UploadProgress.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAgCjD,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import Spinner from 'ink-spinner';
4
+ const UploadProgress = ({ current, total, currentFile, status, error, }) => {
5
+ return (React.createElement(Box, { flexDirection: "column" },
6
+ React.createElement(Box, null,
7
+ status === 'uploading' && (React.createElement(React.Fragment, null,
8
+ React.createElement(Text, { color: "cyan" },
9
+ React.createElement(Spinner, { type: "dots" })),
10
+ React.createElement(Text, null,
11
+ " Uploading files... (",
12
+ current,
13
+ "/",
14
+ total,
15
+ ")"))),
16
+ status === 'complete' && (React.createElement(Text, { color: "green" },
17
+ "\u2713 Uploaded ",
18
+ total,
19
+ " files successfully!")),
20
+ status === 'error' && (React.createElement(Text, { color: "red" },
21
+ "\u2717 Error: ",
22
+ error))),
23
+ status === 'uploading' && currentFile && (React.createElement(Box, { marginLeft: 2 },
24
+ React.createElement(Text, { color: "gray" },
25
+ "Current: ",
26
+ currentFile)))));
27
+ };
28
+ export { UploadProgress };
29
+ //# sourceMappingURL=UploadProgress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UploadProgress.js","sourceRoot":"","sources":["../../src/components/UploadProgress.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,OAAO,MAAM,aAAa,CAAC;AAUlC,MAAM,cAAc,GAAkC,CAAC,EACrD,OAAO,EACP,KAAK,EACL,WAAW,EACX,MAAM,EACN,KAAK,GACN,EAAE,EAAE;IACH,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;QACzB,oBAAC,GAAG;YACD,MAAM,KAAK,WAAW,IAAI,CACzB;gBACE,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;oBAChB,oBAAC,OAAO,IAAC,IAAI,EAAC,MAAM,GAAG,CAClB;gBACP,oBAAC,IAAI;;oBAAuB,OAAO;;oBAAG,KAAK;wBAAS,CACnD,CACJ;YACA,MAAM,KAAK,UAAU,IAAI,CACxB,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO;;gBAAa,KAAK;uCAA4B,CAClE;YACA,MAAM,KAAK,OAAO,IAAI,CACrB,oBAAC,IAAI,IAAC,KAAK,EAAC,KAAK;;gBAAW,KAAK,CAAQ,CAC1C,CACG;QACL,MAAM,KAAK,WAAW,IAAI,WAAW,IAAI,CACxC,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC;YAChB,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;;gBAAW,WAAW,CAAQ,CAC5C,CACP,CACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env node
2
+ import { program } from 'commander';
3
+ import { config } from 'dotenv';
4
+ import setupCommand from './commands/setup.js';
5
+ import downloadCommand from './commands/download.js';
6
+ import startCommand from './commands/start.js';
7
+ import uploadCommand from './commands/upload.js';
8
+ import addCommand from './commands/add.js';
9
+ import workflowInfoCommand from './commands/workflow-info.js';
10
+ config();
11
+ program
12
+ .name('butterfly-cli')
13
+ .description('CLI tool to download resources from the Butterfly platform')
14
+ .version('1.0.0');
15
+ program
16
+ .command('setup')
17
+ .description('Configure authentication for the Butterfly platform')
18
+ .action(setupCommand);
19
+ program
20
+ .command('download')
21
+ .description('Download resources from the Butterfly platform')
22
+ .option('-t, --type <type>', 'Resource type to download (objects, reports, bfy_ai_tasks, bfy_state_machines, pages, bfy_cronjobs, cms_email_templates, cms_email_layouts, bfy_workflows)')
23
+ .option('-n, --name <name>', 'Specific resource name to download')
24
+ .option('-o, --output <path>', 'Output directory path', './butterfly-resources')
25
+ .option('--cleanup', 'Clean existing contents before downloading')
26
+ .action(downloadCommand);
27
+ program
28
+ .command('start')
29
+ .description('Watch for changes in objects folder and sync with Butterfly platform')
30
+ .option('-o, --output <path>', 'Output directory path', './butterfly-resources')
31
+ .action(startCommand);
32
+ program
33
+ .command('upload <targets...>')
34
+ .description('Upload files or folders to the Butterfly platform')
35
+ .action(uploadCommand);
36
+ program
37
+ .command('add')
38
+ .description('Create new resources via API and download them')
39
+ .option('-t, --type <type>', 'Resource type to create (workflow, workflow-node, workflow-connection)')
40
+ .option('-w, --workflow <name>', 'Workflow name or ID (for workflow-node, workflow-connection)')
41
+ .option('-v, --version <number>', 'Version number (defaults to latest)')
42
+ .option('--title <title>', 'Title/name of the resource')
43
+ .option('--node-type <type>', 'Node identifier key (e.g., CustomScript, WebHook, RESTAPI)')
44
+ .option('--node-group <group>', 'Node group class (e.g., Code, Trigger, Connector, Output)')
45
+ .option('--system-name <name>', 'System name for the resource')
46
+ .option('--connect-from <spec>', 'Connect FROM existing node TO new node (format: node_id[:output_key])')
47
+ .option('--connect-to <spec>', 'Connect FROM new node TO existing node (format: node_id[:input_key])')
48
+ .option('--from <id>', 'Source node ID (for workflow-connection)')
49
+ .option('--from-output <key>', 'Source node output key (default: output)')
50
+ .option('--to <id>', 'Target node ID (for workflow-connection)')
51
+ .option('--to-input <key>', 'Target node input key (default: input)')
52
+ .option('-o, --output <path>', 'Output directory path', './butterfly-resources')
53
+ .action(addCommand);
54
+ program
55
+ .command('workflow-info')
56
+ .description('Get information about workflow node groups and node types')
57
+ .option('--groups', 'List all available node groups')
58
+ .option('--nodes <group>', 'List nodes in a specific group (e.g., --nodes Database)')
59
+ .option('--details <node>', 'Get details for a specific node (requires --group)')
60
+ .option('--group <group>', 'Node group for --details option')
61
+ .action(workflowInfoCommand);
62
+ program.parse();
63
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,eAAe,MAAM,wBAAwB,CAAC;AACrD,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,aAAa,MAAM,sBAAsB,CAAC;AACjD,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAC3C,OAAO,mBAAmB,MAAM,6BAA6B,CAAC;AAE9D,MAAM,EAAE,CAAC;AAET,OAAO;KACJ,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,4DAA4D,CAAC;KACzE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,mBAAmB,EAAE,4JAA4J,CAAC;KACzL,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;KACjE,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,EAAE,uBAAuB,CAAC;KAC/E,MAAM,CAAC,WAAW,EAAE,4CAA4C,CAAC;KACjE,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,sEAAsE,CAAC;KACnF,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,EAAE,uBAAuB,CAAC;KAC/E,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,mBAAmB,EAAE,wEAAwE,CAAC;KACrG,MAAM,CAAC,uBAAuB,EAAE,8DAA8D,CAAC;KAC/F,MAAM,CAAC,wBAAwB,EAAE,qCAAqC,CAAC;KACvE,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;KACvD,MAAM,CAAC,oBAAoB,EAAE,4DAA4D,CAAC;KAC1F,MAAM,CAAC,sBAAsB,EAAE,2DAA2D,CAAC;KAC3F,MAAM,CAAC,sBAAsB,EAAE,8BAA8B,CAAC;KAC9D,MAAM,CAAC,uBAAuB,EAAE,uEAAuE,CAAC;KACxG,MAAM,CAAC,qBAAqB,EAAE,sEAAsE,CAAC;KACrG,MAAM,CAAC,aAAa,EAAE,0CAA0C,CAAC;KACjE,MAAM,CAAC,qBAAqB,EAAE,0CAA0C,CAAC;KACzE,MAAM,CAAC,WAAW,EAAE,0CAA0C,CAAC;KAC/D,MAAM,CAAC,kBAAkB,EAAE,wCAAwC,CAAC;KACpE,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,EAAE,uBAAuB,CAAC;KAC/E,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,2DAA2D,CAAC;KACxE,MAAM,CAAC,UAAU,EAAE,gCAAgC,CAAC;KACpD,MAAM,CAAC,iBAAiB,EAAE,yDAAyD,CAAC;KACpF,MAAM,CAAC,kBAAkB,EAAE,oDAAoD,CAAC;KAChF,MAAM,CAAC,iBAAiB,EAAE,iCAAiC,CAAC;KAC5D,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAE/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,18 @@
1
+ export interface AuthConfig {
2
+ endpoint: string;
3
+ email: string;
4
+ password: string;
5
+ core?: boolean;
6
+ }
7
+ export interface DownloadOptions {
8
+ type?: string;
9
+ name?: string;
10
+ output?: string;
11
+ cleanup?: boolean;
12
+ }
13
+ export interface ApiResponse<T> {
14
+ success: boolean;
15
+ data?: T;
16
+ error?: string;
17
+ }
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,47 @@
1
+ import { AxiosInstance } from 'axios';
2
+ import { AuthConfig } from '../types/index.js';
3
+ export declare class ButterflyAPI {
4
+ private config;
5
+ private client;
6
+ private cookieJar;
7
+ private csrfToken?;
8
+ private debug;
9
+ constructor(config: AuthConfig);
10
+ fetchCSRFToken(): Promise<string>;
11
+ authenticate(): Promise<void>;
12
+ get httpClient(): AxiosInstance;
13
+ downloadResource(type: string, name?: string): Promise<any[]>;
14
+ fetchTable(tableName: string, column?: string, value?: string): Promise<any[]>;
15
+ fetchObjects(): Promise<any[]>;
16
+ fetchCMSObjects(): Promise<any[]>;
17
+ fetchObjectSpecs(objectId: number): Promise<any[]>;
18
+ fetchAllObjectSpecs(): Promise<any[]>;
19
+ fetchReports(): Promise<any[]>;
20
+ fetchReportCategories(): Promise<any[]>;
21
+ fetchReportSpecs(reportId: number): Promise<any[]>;
22
+ fetchReportQueries(reportId: number): Promise<any[]>;
23
+ fetchAllReportSpecs(): Promise<any[]>;
24
+ fetchAllReportQueries(): Promise<any[]>;
25
+ updateReport(reportId: number, updateData: Record<string, any>): Promise<any>;
26
+ createReport(reportData: Record<string, any>): Promise<any>;
27
+ updateReportSpec(specId: number, updateData: Record<string, any>): Promise<any>;
28
+ createReportSpec(specData: Record<string, any>): Promise<any>;
29
+ updateReportQuery(queryId: number, updateData: Record<string, any>): Promise<any>;
30
+ createReportQuery(queryData: Record<string, any>): Promise<any>;
31
+ uploadResource(filePath: string, data: any): Promise<any>;
32
+ private updateObject;
33
+ private updateObjectSpec;
34
+ private updateReportFromData;
35
+ private updateReportSpecFromData;
36
+ createWorkflowConnection(connectionData: Record<string, any>): Promise<any>;
37
+ updateWorkflowConnection(connectionId: number, updateData: Record<string, any>): Promise<any>;
38
+ deleteWorkflowConnection(connectionId: number): Promise<any>;
39
+ createWorkflowNode(nodeData: Record<string, any>): Promise<any>;
40
+ updateWorkflowNode(nodeId: number, updateData: Record<string, any>): Promise<any>;
41
+ deleteWorkflowNode(nodeId: number): Promise<any>;
42
+ createWorkflowVersion(versionData: Record<string, any>): Promise<any>;
43
+ updateWorkflowVersion(versionId: number, updateData: Record<string, any>): Promise<any>;
44
+ publishWorkflowVersion(versionId: number): Promise<any>;
45
+ archiveWorkflowVersion(versionId: number): Promise<any>;
46
+ }
47
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"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"}