@sw-tsdk/plugin-connector 3.13.2-next.83d408c → 3.13.2-next.f72064b

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 (74) hide show
  1. package/README.md +18 -18
  2. package/lib/commands/connector/build.js +168 -44
  3. package/lib/commands/connector/build.js.map +1 -1
  4. package/lib/commands/connector/sign.js +108 -12
  5. package/lib/commands/connector/sign.js.map +1 -1
  6. package/lib/commands/connector/validate.js +110 -10
  7. package/lib/commands/connector/validate.js.map +1 -1
  8. package/lib/commands/migrator/convert.d.ts +1 -0
  9. package/lib/commands/migrator/convert.js +167 -15
  10. package/lib/commands/migrator/convert.js.map +1 -1
  11. package/lib/templates/migrator-runners/plugin_override.txt +69 -4
  12. package/lib/templates/migrator-runners/runner_override.txt +29 -0
  13. package/lib/templates/migrator-runners/script_override.txt +71 -5
  14. package/lib/templates/swimlane/__init__.py +18 -0
  15. package/lib/templates/swimlane/core/__init__.py +0 -0
  16. package/lib/templates/swimlane/core/adapters/__init__.py +10 -0
  17. package/lib/templates/swimlane/core/adapters/app.py +59 -0
  18. package/lib/templates/swimlane/core/adapters/app_revision.py +49 -0
  19. package/lib/templates/swimlane/core/adapters/helper.py +84 -0
  20. package/lib/templates/swimlane/core/adapters/record.py +468 -0
  21. package/lib/templates/swimlane/core/adapters/record_revision.py +43 -0
  22. package/lib/templates/swimlane/core/adapters/report.py +65 -0
  23. package/lib/templates/swimlane/core/adapters/task.py +54 -0
  24. package/lib/templates/swimlane/core/adapters/usergroup.py +183 -0
  25. package/lib/templates/swimlane/core/bulk.py +48 -0
  26. package/lib/templates/swimlane/core/cache.py +165 -0
  27. package/lib/templates/swimlane/core/client.py +466 -0
  28. package/lib/templates/swimlane/core/cursor.py +100 -0
  29. package/lib/templates/swimlane/core/fields/__init__.py +46 -0
  30. package/lib/templates/swimlane/core/fields/attachment.py +82 -0
  31. package/lib/templates/swimlane/core/fields/base/__init__.py +15 -0
  32. package/lib/templates/swimlane/core/fields/base/cursor.py +90 -0
  33. package/lib/templates/swimlane/core/fields/base/field.py +149 -0
  34. package/lib/templates/swimlane/core/fields/base/multiselect.py +116 -0
  35. package/lib/templates/swimlane/core/fields/comment.py +48 -0
  36. package/lib/templates/swimlane/core/fields/datetime.py +112 -0
  37. package/lib/templates/swimlane/core/fields/history.py +28 -0
  38. package/lib/templates/swimlane/core/fields/list.py +266 -0
  39. package/lib/templates/swimlane/core/fields/number.py +38 -0
  40. package/lib/templates/swimlane/core/fields/reference.py +169 -0
  41. package/lib/templates/swimlane/core/fields/text.py +30 -0
  42. package/lib/templates/swimlane/core/fields/tracking.py +10 -0
  43. package/lib/templates/swimlane/core/fields/usergroup.py +137 -0
  44. package/lib/templates/swimlane/core/fields/valueslist.py +70 -0
  45. package/lib/templates/swimlane/core/resolver.py +46 -0
  46. package/lib/templates/swimlane/core/resources/__init__.py +0 -0
  47. package/lib/templates/swimlane/core/resources/app.py +136 -0
  48. package/lib/templates/swimlane/core/resources/app_revision.py +43 -0
  49. package/lib/templates/swimlane/core/resources/attachment.py +64 -0
  50. package/lib/templates/swimlane/core/resources/base.py +55 -0
  51. package/lib/templates/swimlane/core/resources/comment.py +33 -0
  52. package/lib/templates/swimlane/core/resources/record.py +499 -0
  53. package/lib/templates/swimlane/core/resources/record_revision.py +44 -0
  54. package/lib/templates/swimlane/core/resources/report.py +259 -0
  55. package/lib/templates/swimlane/core/resources/revision_base.py +69 -0
  56. package/lib/templates/swimlane/core/resources/task.py +16 -0
  57. package/lib/templates/swimlane/core/resources/usergroup.py +166 -0
  58. package/lib/templates/swimlane/core/search.py +31 -0
  59. package/lib/templates/swimlane/core/wrappedsession.py +12 -0
  60. package/lib/templates/swimlane/exceptions.py +191 -0
  61. package/lib/templates/swimlane/utils/__init__.py +132 -0
  62. package/lib/templates/swimlane/utils/date_validator.py +4 -0
  63. package/lib/templates/swimlane/utils/list_validator.py +7 -0
  64. package/lib/templates/swimlane/utils/str_validator.py +10 -0
  65. package/lib/templates/swimlane/utils/version.py +101 -0
  66. package/lib/transformers/base-transformer.js +61 -14
  67. package/lib/transformers/base-transformer.js.map +1 -1
  68. package/lib/transformers/connector-generator.d.ts +102 -2
  69. package/lib/transformers/connector-generator.js +1188 -49
  70. package/lib/transformers/connector-generator.js.map +1 -1
  71. package/lib/types/migrator-types.d.ts +22 -0
  72. package/lib/types/migrator-types.js.map +1 -1
  73. package/oclif.manifest.json +1 -1
  74. package/package.json +6 -6
@@ -7,6 +7,7 @@ const docker_1 = require("@sw-tsdk/docker");
7
7
  const core_2 = require("@oclif/core");
8
8
  const node_fs_1 = require("node:fs");
9
9
  const core_3 = require("@sw-tsdk/core");
10
+ const node_stream_1 = require("node:stream");
10
11
  // noinspection JSUnusedGlobalSymbols
11
12
  class Validate extends core_3.Base {
12
13
  async run() {
@@ -21,17 +22,37 @@ class Validate extends core_3.Base {
21
22
  try {
22
23
  await node_fs_1.promises.access(directory);
23
24
  }
24
- catch {
25
- this.error(`Could not access ${directory}`);
25
+ catch (error) {
26
+ const errorMessage = error instanceof Error ? error.message : String(error);
27
+ core_2.ux.error(`Could not access directory: ${directory}`, { exit: false });
28
+ core_2.ux.log('');
29
+ core_2.ux.log('Error details:');
30
+ core_2.ux.log(` ${errorMessage}`);
31
+ core_2.ux.log('');
32
+ core_2.ux.log('Please verify:');
33
+ core_2.ux.log(` 1. The directory path is correct: ${directory}`);
34
+ core_2.ux.log(' 2. The directory exists');
35
+ core_2.ux.log(' 3. You have proper permissions to access the directory');
36
+ this.error('Directory access failed');
26
37
  }
27
38
  const docker = new docker_1.Docker();
28
39
  core_2.ux.action.start('Checking for docker...');
29
- await docker.ping();
40
+ const dockerAvailable = await docker.ping();
30
41
  core_2.ux.action.stop();
42
+ if (!dockerAvailable) {
43
+ core_2.ux.log('');
44
+ core_2.ux.error('Docker is not available. Cannot proceed with validation.', { exit: false });
45
+ core_2.Errors.exit(1);
46
+ }
31
47
  if (!skipPull) {
32
48
  core_2.ux.action.start(`Pulling image (${image})...`);
33
- await docker.pullImage(image);
49
+ const pullSuccess = await docker.pullImage(image);
34
50
  core_2.ux.action.stop();
51
+ if (!pullSuccess) {
52
+ core_2.ux.log('');
53
+ core_2.ux.error('Failed to pull image. Cannot proceed with validation.', { exit: false });
54
+ core_2.Errors.exit(1);
55
+ }
35
56
  }
36
57
  const bindings = [`${directory}:/connector`];
37
58
  const commands = ['connector:validate'];
@@ -41,7 +62,25 @@ class Validate extends core_3.Base {
41
62
  commands.push('--skip-verification');
42
63
  }
43
64
  else {
44
- commands.push('--key', key || '');
65
+ // Validate key file exists if a path is provided
66
+ const keyPath = (0, node_path_1.resolve)(key);
67
+ try {
68
+ await node_fs_1.promises.access(keyPath);
69
+ commands.push('--key', keyPath);
70
+ }
71
+ catch (error) {
72
+ const errorMessage = error instanceof Error ? error.message : String(error);
73
+ core_2.ux.error(`Could not access key file: ${keyPath}`, { exit: false });
74
+ core_2.ux.log('');
75
+ core_2.ux.log('Error details:');
76
+ core_2.ux.log(` ${errorMessage}`);
77
+ core_2.ux.log('');
78
+ core_2.ux.log('Please verify:');
79
+ core_2.ux.log(` 1. The key file path is correct: ${keyPath}`);
80
+ core_2.ux.log(' 2. The file exists and is readable');
81
+ core_2.ux.log(' 3. You have proper permissions to access the file');
82
+ core_2.Errors.exit(1);
83
+ }
45
84
  }
46
85
  }
47
86
  commands.push(`/connector/${connector}`);
@@ -53,11 +92,72 @@ class Validate extends core_3.Base {
53
92
  },
54
93
  };
55
94
  core_2.ux.action.start('Validating...');
56
- const outputStream = (0, core_3.writableNoopStream)();
57
- const errorStream = (0, core_3.writableNoopStream)();
58
- const success = await docker.runImage(image, createOptions, outputStream, errorStream);
59
- core_2.ux.action.stop();
60
- if (!success) {
95
+ // Capture output and errors for better logging
96
+ let outputBuffer = '';
97
+ let errorBuffer = '';
98
+ const outputStream = new node_stream_1.Writable({
99
+ write(chunk, encoding, callback) {
100
+ outputBuffer += chunk.toString();
101
+ process.stdout.write(chunk);
102
+ callback();
103
+ },
104
+ });
105
+ const errorStream = new node_stream_1.Writable({
106
+ write(chunk, encoding, callback) {
107
+ errorBuffer += chunk.toString();
108
+ process.stderr.write(chunk);
109
+ callback();
110
+ },
111
+ });
112
+ try {
113
+ const success = await docker.runImage(image, createOptions, outputStream, errorStream);
114
+ core_2.ux.action.stop();
115
+ if (!success) {
116
+ core_2.ux.log('');
117
+ core_2.ux.error('Validation failed.', { exit: false });
118
+ if (errorBuffer) {
119
+ core_2.ux.log('');
120
+ core_2.ux.log('Error output:');
121
+ core_2.ux.log(errorBuffer);
122
+ }
123
+ if (outputBuffer) {
124
+ core_2.ux.log('');
125
+ core_2.ux.log('Output:');
126
+ core_2.ux.log(outputBuffer);
127
+ }
128
+ core_2.Errors.exit(1);
129
+ }
130
+ }
131
+ catch (error) {
132
+ // Re-throw ExitError from Errors.exit() without logging misleading messages
133
+ // ExitError is thrown by Errors.exit() and indicates intentional exit
134
+ if (error && typeof error === 'object' && 'exitCode' in error) {
135
+ throw error;
136
+ }
137
+ core_2.ux.action.stop();
138
+ const errorMessage = error instanceof Error ? error.message : String(error);
139
+ const errorStack = error instanceof Error ? error.stack : undefined;
140
+ core_2.ux.error('Failed to run validation container.', { exit: false });
141
+ if (errorMessage) {
142
+ core_2.ux.log('');
143
+ core_2.ux.log('Error details:');
144
+ core_2.ux.log(` ${errorMessage}`);
145
+ }
146
+ if (errorStack && core_2.ux.config.outputLevel === 'debug') {
147
+ core_2.ux.log('');
148
+ core_2.ux.log('Stack trace:');
149
+ core_2.ux.log(errorStack);
150
+ }
151
+ if (errorBuffer) {
152
+ core_2.ux.log('');
153
+ core_2.ux.log('Container error output:');
154
+ core_2.ux.log(errorBuffer);
155
+ }
156
+ if (outputBuffer) {
157
+ core_2.ux.log('');
158
+ core_2.ux.log('Container output:');
159
+ core_2.ux.log(outputBuffer);
160
+ }
61
161
  core_2.Errors.exit(1);
62
162
  }
63
163
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/connector/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/connector/validate.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ export declare class Migrate extends Base {
19
19
  * Basically, each array item is a different connector
20
20
  */
21
21
  private collectJobs;
22
+ private extractImportsFromScriptContent;
22
23
  private extractImportsFromScript;
23
24
  private decompressIfNeeded;
24
25
  run(): Promise<void>;
@@ -15,10 +15,17 @@ class Migrate extends core_1.Base {
15
15
  async processTaskFiles(taskFiles) {
16
16
  const taskImports = new Set();
17
17
  const importPromises = taskFiles.map(async (taskFile) => {
18
- const pyFilePath = taskFile.replace('.json', '.py');
19
- const scriptImports = await this.extractImportsFromScript(pyFilePath);
20
- for (const importName of scriptImports)
21
- taskImports.add(importName);
18
+ try {
19
+ const taskContent = await node_fs_1.promises.readFile(taskFile, 'utf8');
20
+ const taskJson = JSON.parse(taskContent);
21
+ const script = taskJson?.Action?.Script || '';
22
+ const scriptImports = await this.extractImportsFromScriptContent(script);
23
+ for (const importName of scriptImports)
24
+ taskImports.add(importName);
25
+ }
26
+ catch {
27
+ this.warn(`Could not extract imports from task file: ${taskFile}`);
28
+ }
22
29
  });
23
30
  await Promise.all(importPromises);
24
31
  return taskImports;
@@ -71,9 +78,17 @@ class Migrate extends core_1.Base {
71
78
  .filter(file => file.endsWith('.json'))
72
79
  .map(file => (0, node_path_1.join)(tasksFolder, file));
73
80
  const scriptImportLists = await Promise.all(taskFiles.map(async (taskFile) => {
74
- const pyFilePath = taskFile.replace('.json', '.py');
75
- const scriptImports = await this.extractImportsFromScript(pyFilePath);
76
- return Array.isArray(scriptImports) ? scriptImports : [];
81
+ try {
82
+ const taskContent = await node_fs_1.promises.readFile(taskFile, 'utf8');
83
+ const taskJson = JSON.parse(taskContent);
84
+ const script = taskJson?.Action?.Script || '';
85
+ const scriptImports = await this.extractImportsFromScriptContent(script);
86
+ return Array.isArray(scriptImports) ? scriptImports : [];
87
+ }
88
+ catch {
89
+ this.warn(`Could not extract imports from task file: ${taskFile}`);
90
+ return [];
91
+ }
77
92
  }));
78
93
  for (const scriptImports of scriptImportLists) {
79
94
  for (const importName of scriptImports) {
@@ -90,6 +105,7 @@ class Migrate extends core_1.Base {
90
105
  appFolderPath,
91
106
  connectorName,
92
107
  taskFilePaths: taskFiles,
108
+ taskImports,
93
109
  };
94
110
  });
95
111
  const appResults = await Promise.all(appFolderPromises);
@@ -98,9 +114,31 @@ class Migrate extends core_1.Base {
98
114
  const nestedAppTasks = await Promise.all(pythonDirPromises);
99
115
  return nestedAppTasks.flat();
100
116
  }
117
+ async extractImportsFromScriptContent(scriptContent) {
118
+ const usedPackages = new Set();
119
+ if (!scriptContent || typeof scriptContent !== 'string') {
120
+ return usedPackages;
121
+ }
122
+ try {
123
+ // `import X` and `from X import Y`
124
+ const importMatches = scriptContent.matchAll(/(?:from|import) (\w+)/g);
125
+ for (const match of importMatches) {
126
+ usedPackages.add(match[1]);
127
+ }
128
+ }
129
+ catch (error) {
130
+ this.warn(`Could not extract imports from script content: ${error?.message || 'Unknown error'}`);
131
+ }
132
+ return usedPackages;
133
+ }
101
134
  async extractImportsFromScript(pyFilePath) {
102
135
  const usedPackages = new Set();
103
136
  try {
137
+ // Check if file exists first
138
+ if (!(await (0, core_1.fileExists)(pyFilePath))) {
139
+ this.warn(`Python file does not exist: ${pyFilePath}`);
140
+ return usedPackages;
141
+ }
104
142
  const content = await node_fs_1.promises.readFile(pyFilePath, 'utf8');
105
143
  // `import X` and `from X import Y`
106
144
  const importMatches = content.matchAll(/(?:from|import) (\w+)/g);
@@ -108,8 +146,14 @@ class Migrate extends core_1.Base {
108
146
  usedPackages.add(match[1]);
109
147
  }
110
148
  }
111
- catch {
112
- this.warn(`Could not extract imports from: ${pyFilePath}`);
149
+ catch (error) {
150
+ // Provide more specific error information
151
+ const errorMessage = error?.code === 'EACCES' ?
152
+ `Permission denied reading file: ${pyFilePath}` :
153
+ (error?.code === 'ENOENT' ?
154
+ `File not found: ${pyFilePath}` :
155
+ `Could not extract imports from: ${pyFilePath} (${error?.message || 'Unknown error'})`);
156
+ this.warn(errorMessage);
113
157
  }
114
158
  return usedPackages;
115
159
  }
@@ -167,13 +211,106 @@ class Migrate extends core_1.Base {
167
211
  const groupPromises = groupedAppTasks.map(async (group) => {
168
212
  this.log(`\nProcessing [${group.pythonDirName}] / [${group.connectorName}]`);
169
213
  this.log(`Found ${group.taskFilePaths.length} task file(s) in: ${group.appFolderPath}`);
170
- const connectorToDir = (0, node_path_1.join)(toDirectory, group.connectorName.replaceAll(' ', '_').toLowerCase());
214
+ // Remove parentheses, slashes, colons, and other special characters from folder name
215
+ const sanitizedFolderName = group.connectorName
216
+ .replaceAll(/[()/:]/g, '') // Remove parentheses, slashes, and colons
217
+ .replaceAll(' ', '_')
218
+ .toLowerCase();
219
+ const connectorToDir = (0, node_path_1.join)(toDirectory, sanitizedFolderName);
171
220
  await connector_generator_1.ConnectorGenerator.generateBaseStructure(connectorToDir);
172
221
  await connector_generator_1.ConnectorGenerator.generateLogo(connectorToDir);
173
222
  await connector_generator_1.ConnectorGenerator.generateConnectorManifest(answers, group, connectorToDir);
174
223
  await connector_generator_1.ConnectorGenerator.generateRunnerOverride(connectorToDir);
224
+ await connector_generator_1.ConnectorGenerator.addExtractedImportsToRequirements(connectorToDir, group.taskImports);
225
+ // First, collect all forked plugin names to initialize them before processing tasks
226
+ const forkedPluginNames = new Set();
227
+ const taskContents = await Promise.all(group.taskFilePaths.map(async (taskFilePath) => {
228
+ try {
229
+ const content = await node_fs_1.promises.readFile(taskFilePath, 'utf8');
230
+ return { taskFilePath, content };
231
+ }
232
+ catch {
233
+ return null;
234
+ }
235
+ }));
236
+ for (const taskContent of taskContents) {
237
+ if (!taskContent)
238
+ continue;
239
+ try {
240
+ const fileJson = JSON.parse(taskContent.content);
241
+ const transformer = (0, transformers_1.getTransformer)(fileJson);
242
+ const transformationResult = transformer.transform(fileJson);
243
+ if (transformationResult.type === 'forked-plugin' && transformationResult.forkedName) {
244
+ forkedPluginNames.add(transformationResult.forkedName);
245
+ }
246
+ }
247
+ catch {
248
+ // Skip if we can't parse
249
+ }
250
+ }
251
+ // Initialize all forked plugins sequentially to avoid race conditions; collect packages excluded via EXCLUDED_PACKAGES that need runner.sh (e.g. ssdeep)
252
+ const excludedRunnerPackages = new Set();
253
+ for (const forkedName of forkedPluginNames) {
254
+ try {
255
+ // Create a dummy transformation result just for initialization
256
+ const dummyResult = {
257
+ type: 'forked-plugin',
258
+ forkedName,
259
+ connectorName: group.connectorName,
260
+ pythonDefinition: group.pythonDefinition,
261
+ };
262
+ // eslint-disable-next-line no-await-in-loop
263
+ const fromInit = await connector_generator_1.ConnectorGenerator.initializeForkedPlugin(dummyResult, fromDirectory, connectorToDir);
264
+ for (const p of fromInit)
265
+ excludedRunnerPackages.add(p);
266
+ }
267
+ catch (error) {
268
+ console.error(`Error initializing forked plugin ${forkedName}:`, error);
269
+ }
270
+ }
271
+ // Collect all asset parameters from all tasks to avoid race conditions
272
+ const allAssetParameters = [];
273
+ let applicationInfo = null;
274
+ try {
275
+ const appInfoPath = (0, node_path_1.join)(group.appFolderPath, 'applicationInfo.json');
276
+ const rawInfo = await node_fs_1.promises.readFile(appInfoPath, 'utf8');
277
+ applicationInfo = JSON.parse(rawInfo);
278
+ }
279
+ catch {
280
+ // applicationInfo.json optional; record inputs will keep inferred types
281
+ }
282
+ const currentApplicationId = (0, node_path_1.basename)(group.appFolderPath);
283
+ const pythonDirPath = (0, node_path_1.dirname)(group.appFolderPath);
284
+ const applicationInfoMap = applicationInfo ? { [currentApplicationId]: applicationInfo } : {};
285
+ // Collect ApplicationIds from all tasks' Outputs (e.g. InsertUpdateRecordOutput.ApplicationId) and load their applicationInfo
286
+ const outputAppIdGroups = await Promise.all(group.taskFilePaths.map(async (taskFilePath) => {
287
+ try {
288
+ const content = await node_fs_1.promises.readFile(taskFilePath, 'utf8');
289
+ const taskJson = JSON.parse(content);
290
+ return (taskJson?.Outputs ?? []).map((output) => output?.ApplicationId ?? output?.applicationId)
291
+ .filter((appId) => typeof appId === 'string');
292
+ }
293
+ catch {
294
+ return [];
295
+ }
296
+ }));
297
+ const outputAppIds = new Set(outputAppIdGroups.flat());
298
+ const missingAppIds = [...outputAppIds].filter(appId => !applicationInfoMap[appId]);
299
+ const appInfoEntries = await Promise.all(missingAppIds.map(async (appId) => {
300
+ try {
301
+ const rawInfo = await node_fs_1.promises.readFile((0, node_path_1.join)(pythonDirPath, appId, 'applicationInfo.json'), 'utf8');
302
+ return { appId, appInfo: JSON.parse(rawInfo) };
303
+ }
304
+ catch {
305
+ return null;
306
+ }
307
+ }));
308
+ for (const appInfoEntry of appInfoEntries) {
309
+ if (appInfoEntry) {
310
+ applicationInfoMap[appInfoEntry.appId] = appInfoEntry.appInfo;
311
+ }
312
+ }
175
313
  const taskPromises = group.taskFilePaths.map(async (taskFilePath) => {
176
- const initializedConnectors = new Set();
177
314
  const content = await node_fs_1.promises.readFile(taskFilePath, 'utf8');
178
315
  let fileJson;
179
316
  try {
@@ -184,19 +321,34 @@ class Migrate extends core_1.Base {
184
321
  }
185
322
  const transformer = (0, transformers_1.getTransformer)(fileJson);
186
323
  const transformationResult = transformer.transform(fileJson);
324
+ connector_generator_1.ConnectorGenerator.patchRecordInputTypes(transformationResult, applicationInfo);
325
+ connector_generator_1.ConnectorGenerator.patchOutputDateConversions(transformationResult, applicationInfoMap, currentApplicationId);
187
326
  if (!transformer.scriptIsValid(transformationResult.script)) {
188
327
  this.warn(`Found code that is not supported in turbine: ${taskFilePath}`);
189
328
  }
190
329
  transformationResult.connectorName = group.connectorName;
191
330
  transformationResult.pythonDefinition = group.pythonDefinition;
192
- if (transformationResult.type === 'forked-plugin' && !initializedConnectors.has(transformationResult.forkedName)) {
193
- initializedConnectors.add(transformationResult.forkedName);
194
- await connector_generator_1.ConnectorGenerator.initializeForkedPlugin(transformationResult, fromDirectory, connectorToDir);
195
- }
331
+ // Forked plugins are already initialized above, so skip initialization here
196
332
  await connector_generator_1.ConnectorGenerator.generateAction(transformationResult, connectorToDir);
197
333
  await connector_generator_1.ConnectorGenerator.generateActionConfig(transformationResult, connectorToDir);
334
+ // Collect asset parameters instead of writing immediately
335
+ if (transformationResult.assetParameters && transformationResult.assetParameters.length > 0) {
336
+ allAssetParameters.push(...transformationResult.assetParameters);
337
+ }
198
338
  });
199
339
  await Promise.all(taskPromises);
340
+ // Write all asset parameters once after all tasks are processed
341
+ if (allAssetParameters.length > 0) {
342
+ await connector_generator_1.ConnectorGenerator.addAssetParameters(connectorToDir, allAssetParameters, group.connectorName);
343
+ }
344
+ // Deduplicate requirements after all tasks are processed
345
+ await connector_generator_1.ConnectorGenerator.deduplicateRequirements(connectorToDir);
346
+ // Generate compile.sh if needed (for swimbundle_utils)
347
+ await connector_generator_1.ConnectorGenerator.generateCompileScript(connectorToDir);
348
+ // Generate runner.sh for system deps (wkhtmltopdf for sw_swimlane_email, ssdeep via apt+pip when excluded from requirements)
349
+ const needsSsdeep = [...group.taskImports].some(name => name.toLowerCase() === 'ssdeep') ||
350
+ excludedRunnerPackages.has('ssdeep');
351
+ await connector_generator_1.ConnectorGenerator.generateRunnerScript(connectorToDir, forkedPluginNames.has('sw_swimlane_email'), needsSsdeep);
200
352
  });
201
353
  await Promise.all(groupPromises);
202
354
  this.log(`\nDone processing. Converted files at: ${toDirectory}`);
@@ -1 +1 @@
1
- {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/commands/migrator/convert.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/commands/migrator/convert.ts"],"names":[],"mappings":"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"}
@@ -9,22 +9,87 @@ class RunnerOverride(RO):
9
9
  super().__init__(asset, asset_schema, http_proxy)
10
10
 
11
11
  def run(self, inputs, action_schema):
12
+ # Rebuild inputs from YAML-defined keys (empty per type), then merge asset, then overlay incoming inputs
13
+ # INPUTS_MERGE_HERE
12
14
  sw_context = SwimlaneContext(asset=self.asset, asset_schema=self.asset_schema,
13
15
  http_proxy=self.http_proxy, inputs=inputs)
14
16
 
17
+ from swimlane import Swimlane
18
+ Swimlane.turbineAccountId = sw_context.inputs.pop('TurbineAccountId', '')
19
+ Swimlane.turbineTenantId = sw_context.inputs.pop('TurbineTenantId', '')
20
+ Swimlane._api_root = f'/api/account/{Swimlane.turbineAccountId}/tenant/{Swimlane.turbineTenantId}/'
21
+ Swimlane._execute_task_webhook_url = sw_context.inputs.pop('ExecuteTaskWebhookUrl', '')
15
22
  plugin_instance = SwMain(sw_context)
16
23
  plugin_response = plugin_instance.execute()
17
24
 
25
+ import os
26
+ import base64
27
+ import requests
28
+ IPC_API_URI = os.getenv('IPC_API_URI', '')
29
+ IPC_API_TOKEN = os.getenv('IPC_API_TOKEN', '')
30
+
31
+ OUTPUT_DATE_CONVERSIONS = __OUTPUT_DATE_CONVERSIONS__
32
+
33
+ def convert_timestamp(value, timetype):
34
+ import pendulum
35
+ if timetype == "milliseconds":
36
+ value = value / 1000
37
+ if timetype in ('milliseconds', 'seconds'):
38
+ return pendulum.from_timestamp(value).to_iso8601_string()
39
+ return pendulum.from_format(value, timetype).to_iso8601_string()
40
+
41
+ def handle_output_files(output):
42
+ post_url = f"{IPC_API_URI}/files"
43
+ params = {"token": IPC_API_TOKEN}
44
+ # There are potentially many dicts in output, but usually only one
45
+ for o in output:
46
+ for key in o:
47
+ file_output = o.get(key, None)
48
+ temp_files = []
49
+ if file_output and isinstance(file_output, list):
50
+ # value is a list, but we only want to proceed if it's a list of files
51
+ if all(isinstance(i, dict) and 'base64' in i and 'filename' in i for i in file_output):
52
+ # we need to convert the objects to turbine format, then upload
53
+ temp_files = [{'file_data': base64.b64decode(i['base64']), 'file_name': i['filename']} for i in file_output]
54
+ attachments = []
55
+ for file in temp_files:
56
+ attachments.append(
57
+ (
58
+ "files",
59
+ (
60
+ file["file_name"],
61
+ file["file_data"],
62
+ "multipart/form-data",
63
+ )
64
+ )
65
+ )
66
+ res = requests.post(post_url, files=attachments, params=params)
67
+ res.raise_for_status()
68
+ o[key] = res.json()
69
+ for key, timetype in OUTPUT_DATE_CONVERSIONS.items():
70
+ if key in o and o[key] is not None:
71
+ try:
72
+ o[key] = convert_timestamp(o[key], timetype)
73
+ except Exception:
74
+ pass
75
+
76
+ return output
18
77
  if isinstance(plugin_response, dict):
19
- return plugin_response # Already a dictionary
78
+ plugin_response["sw_task_status"] = "success"
79
+ return {"output": handle_output_files([plugin_response])} # Already a dictionary
20
80
 
21
81
  elif isinstance(plugin_response, list):
22
- return {"plugin_output": plugin_response} # Wrap in a dictionary
82
+ # Add sw_task_status to each dictionary in the list
83
+ for item in plugin_response:
84
+ if isinstance(item, dict):
85
+ item["sw_task_status"] = "success"
86
+ return {"output": handle_output_files(plugin_response)} # Wrap in a dictionary
23
87
 
24
88
  elif plugin_response is None:
25
- return {"plugin_output": None} # Handle None case explicitly
89
+ return {"output": [{"sw_task_status": "success"}]} # Handle None case explicitly
26
90
  else:
27
- return {"plugin_output": plugin_response} # Wrap other types in a dictionary
91
+ # For other types, wrap in a dictionary with sw_task_status
92
+ return {"output": [{"result": plugin_response, "sw_task_status": "success"}]} # Wrap other types in a dictionary
28
93
  return plugin_response
29
94
 
30
95
  # IMPORTED CODE BELOW
@@ -5,6 +5,35 @@ class SwimlaneContext:
5
5
  self.asset = asset
6
6
  self.asset_schema = asset_schema
7
7
  self.http_proxy = http_proxy
8
+ url = inputs.pop("SwimlaneUrl", "")
9
+ self.config = {
10
+ "ApplicationId": inputs.pop("ApplicationId", ""),
11
+ "RecordId": inputs.pop("RecordId", ""),
12
+ "InternalSwimlaneUrl": url,
13
+ "SwimlaneUrl": url
14
+ }
15
+ self.user = {
16
+ "first_name": "Swimlane",
17
+ "last_name": "Admin",
18
+ "middle_initial": "",
19
+ "display_name": "Swimlane Admin",
20
+ "last_login": "2026-02-09T18:40:10.386Z",
21
+ "domain": "",
22
+ "active": True,
23
+ "name": "swimlanesystem",
24
+ "last_password_change_date": "2026-01-22T00:31:49.783Z",
25
+ "password_reset_required": False,
26
+ "default_workspace_id": "",
27
+ "default_dashboard_id": "",
28
+ "groups": [],
29
+ "roles": [],
30
+ "primary_group": "",
31
+ "email": "",
32
+ "user_name": "swimlaneadmin",
33
+ "phone_number": "",
34
+ "disabled":False,
35
+ "id": ""
36
+ }
8
37
  self.inputs = inputs
9
38
  # We purposefully do not include the sw_context.config object here as it is not supported
10
39