@sw-tsdk/plugin-connector 3.9.2 → 3.11.1

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 (50) hide show
  1. package/README.md +84 -35
  2. package/lib/commands/action/run/local.js +1 -1
  3. package/lib/commands/action/run/local.js.map +1 -1
  4. package/lib/commands/connector/create/openapi.js +48 -30
  5. package/lib/commands/connector/create/openapi.js.map +1 -1
  6. package/lib/commands/migrator/convert.d.ts +25 -0
  7. package/lib/commands/migrator/convert.js +224 -0
  8. package/lib/commands/migrator/convert.js.map +1 -0
  9. package/lib/commands/migrator/export.d.ts +13 -0
  10. package/lib/commands/migrator/export.js +121 -0
  11. package/lib/commands/migrator/export.js.map +1 -0
  12. package/lib/common.js +1 -0
  13. package/lib/common.js.map +1 -1
  14. package/lib/templates/migrator-runners/image.png +0 -0
  15. package/lib/templates/migrator-runners/plugin_override.txt +34 -0
  16. package/lib/templates/migrator-runners/runner_override.txt +22 -0
  17. package/lib/templates/migrator-runners/script_override.txt +31 -0
  18. package/lib/templates/python_312_definition/template/connector/config/actions/example.yaml +40 -0
  19. package/lib/templates/python_312_definition/template/connector/config/assets/example.yaml +27 -0
  20. package/lib/templates/python_312_definition/template/data/asset.json +1 -0
  21. package/lib/templates/python_312_definition/template/docs/CHANGELOG.md.t +7 -0
  22. package/lib/templates/python_312_definition/template/docs/README.md +38 -0
  23. package/lib/templates/python_312_definition/template/requirements.txt +0 -0
  24. package/lib/templates/python_312_definition/template_src/connector/config/actions/example.yaml +40 -0
  25. package/lib/templates/python_312_definition/template_src/connector/config/assets/example.yaml +27 -0
  26. package/lib/templates/python_312_definition/template_src/connector/src/runner_override.py +11 -0
  27. package/lib/templates/python_312_definition/template_src/data/asset.json +1 -0
  28. package/lib/templates/python_312_definition/template_src/docs/CHANGELOG.md.t +7 -0
  29. package/lib/templates/python_312_definition/template_src/docs/README.md +38 -0
  30. package/lib/templates/python_312_definition/template_src/requirements.txt +0 -0
  31. package/lib/transformers/base-transformer.d.ts +6 -0
  32. package/lib/transformers/base-transformer.js +54 -0
  33. package/lib/transformers/base-transformer.js.map +1 -0
  34. package/lib/transformers/connector-generator.d.ts +18 -0
  35. package/lib/transformers/connector-generator.js +327 -0
  36. package/lib/transformers/connector-generator.js.map +1 -0
  37. package/lib/transformers/forked-plugin-transformer.d.ts +4 -0
  38. package/lib/transformers/forked-plugin-transformer.js +16 -0
  39. package/lib/transformers/forked-plugin-transformer.js.map +1 -0
  40. package/lib/transformers/index.d.ts +3 -0
  41. package/lib/transformers/index.js +17 -0
  42. package/lib/transformers/index.js.map +1 -0
  43. package/lib/transformers/script-transformer.d.ts +5 -0
  44. package/lib/transformers/script-transformer.js +16 -0
  45. package/lib/transformers/script-transformer.js.map +1 -0
  46. package/lib/types/migrator-types.d.ts +59 -0
  47. package/lib/types/migrator-types.js +18 -0
  48. package/lib/types/migrator-types.js.map +1 -0
  49. package/oclif.manifest.json +133 -2
  50. package/package.json +13 -6
@@ -0,0 +1,25 @@
1
+ import { Base } from '@sw-tsdk/core';
2
+ export declare class Migrate extends Base {
3
+ static description: string;
4
+ static flags: {
5
+ fromDirectory: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
6
+ toDirectory: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
7
+ vendor: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
8
+ product: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
9
+ description: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
10
+ author: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
11
+ authorEmail: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
12
+ homepage: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
13
+ help: import("@oclif/core/lib/interfaces").BooleanFlag<void>;
14
+ };
15
+ private processTaskFiles;
16
+ /**
17
+ * Returns an array of AppTasks where each item is (pythonFolder + application),
18
+ * containing an array of .json files in that application's tasks folder.
19
+ * Basically, each array item is a different connector
20
+ */
21
+ private collectJobs;
22
+ private extractImportsFromScript;
23
+ private decompressIfNeeded;
24
+ run(): Promise<void>;
25
+ }
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migrate = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@sw-tsdk/core");
6
+ const node_fs_1 = require("node:fs");
7
+ const node_path_1 = require("node:path");
8
+ const core_2 = require("@oclif/core");
9
+ const inquirer_1 = tslib_1.__importDefault(require("inquirer"));
10
+ const connector_generator_1 = require("../../transformers/connector-generator");
11
+ const migrator_types_1 = require("../../types/migrator-types");
12
+ const transformers_1 = require("../../transformers");
13
+ const adm_zip_1 = tslib_1.__importDefault(require("adm-zip"));
14
+ class Migrate extends core_1.Base {
15
+ async processTaskFiles(taskFiles) {
16
+ const taskImports = new Set();
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);
22
+ });
23
+ await Promise.all(importPromises);
24
+ return taskImports;
25
+ }
26
+ /**
27
+ * Returns an array of AppTasks where each item is (pythonFolder + application),
28
+ * containing an array of .json files in that application's tasks folder.
29
+ * Basically, each array item is a different connector
30
+ */
31
+ async collectJobs(fromDirectory) {
32
+ const dirEntries = await node_fs_1.promises.readdir(fromDirectory, { withFileTypes: true });
33
+ if (dirEntries.some(d => d.isDirectory() && d.name === 'python3')) {
34
+ this.warn('Found python3 directory. This is not supported in turbine. Python 3.9 will be used instead.');
35
+ }
36
+ // Find python directories that match our pythonVersionMap
37
+ const validPythonDirs = dirEntries
38
+ .filter(d => d.isDirectory() && d.name in migrator_types_1.pythonVersionMap)
39
+ .map(d => d.name);
40
+ // each promise handles one python directory
41
+ const pythonDirPromises = validPythonDirs.map(async (pythonDirName) => {
42
+ const pythonDirPath = (0, node_path_1.join)(fromDirectory, pythonDirName);
43
+ const pythonDefinition = migrator_types_1.pythonVersionMap[pythonDirName];
44
+ // For each python dir, find subfolders applications
45
+ const appDirEntries = await node_fs_1.promises.readdir(pythonDirPath, { withFileTypes: true });
46
+ const appFolders = appDirEntries
47
+ .filter(f => f.isDirectory())
48
+ .map(f => f.name);
49
+ // Build a promise for each app folder
50
+ const appFolderPromises = appFolders.map(async (appFolderName) => {
51
+ const appFolderPath = (0, node_path_1.join)(pythonDirPath, appFolderName);
52
+ // read the plugin name
53
+ const appInfoPath = (0, node_path_1.join)(appFolderPath, 'applicationInfo.json');
54
+ let connectorName = 'Unnamed Connector';
55
+ try {
56
+ const rawInfo = await node_fs_1.promises.readFile(appInfoPath, 'utf8');
57
+ const info = JSON.parse(rawInfo);
58
+ if (info?.name) {
59
+ connectorName = info.name;
60
+ }
61
+ }
62
+ catch {
63
+ this.warn(`Could not read application info: ${appInfoPath}`);
64
+ }
65
+ const tasksFolder = (0, node_path_1.join)(appFolderPath, 'tasks');
66
+ let taskFiles = [];
67
+ const taskImports = new Set();
68
+ try {
69
+ const allTaskFiles = await node_fs_1.promises.readdir(tasksFolder);
70
+ taskFiles = allTaskFiles
71
+ .filter(file => file.endsWith('.json'))
72
+ .map(file => (0, node_path_1.join)(tasksFolder, file));
73
+ 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 : [];
77
+ }));
78
+ for (const scriptImports of scriptImportLists) {
79
+ for (const importName of scriptImports) {
80
+ taskImports.add(importName);
81
+ }
82
+ }
83
+ }
84
+ catch {
85
+ this.warn(`Could not read tasks folder: ${tasksFolder}`);
86
+ }
87
+ return {
88
+ pythonDirName,
89
+ pythonDefinition,
90
+ appFolderPath,
91
+ connectorName,
92
+ taskFilePaths: taskFiles,
93
+ };
94
+ });
95
+ const appResults = await Promise.all(appFolderPromises);
96
+ return appResults;
97
+ });
98
+ const nestedAppTasks = await Promise.all(pythonDirPromises);
99
+ return nestedAppTasks.flat();
100
+ }
101
+ async extractImportsFromScript(pyFilePath) {
102
+ const usedPackages = new Set();
103
+ try {
104
+ const content = await node_fs_1.promises.readFile(pyFilePath, 'utf8');
105
+ // `import X` and `from X import Y`
106
+ const importMatches = content.matchAll(/(?:from|import) (\w+)/g);
107
+ for (const match of importMatches) {
108
+ usedPackages.add(match[1]);
109
+ }
110
+ }
111
+ catch {
112
+ this.warn(`Could not extract imports from: ${pyFilePath}`);
113
+ }
114
+ return usedPackages;
115
+ }
116
+ async decompressIfNeeded(fromDirectory) {
117
+ if (fromDirectory.endsWith('.zip')) {
118
+ const extractPath = fromDirectory.replace(/\.zip$/, '');
119
+ this.log(`Extracting zip file to: ${extractPath}`);
120
+ const zip = new adm_zip_1.default(fromDirectory);
121
+ zip.extractAllTo(extractPath, true);
122
+ return extractPath;
123
+ }
124
+ return fromDirectory;
125
+ }
126
+ async run() {
127
+ const { flags } = await this.parse(Migrate);
128
+ const masterQuestions = [
129
+ {
130
+ type: 'input',
131
+ name: 'vendor',
132
+ message: 'Vendor (e.g. Swimlane)',
133
+ },
134
+ {
135
+ type: 'input',
136
+ name: 'product',
137
+ message: 'Product (e.g. Turbine)',
138
+ },
139
+ {
140
+ type: 'input',
141
+ name: 'description',
142
+ message: 'Description (e.g. Turbine exporter)',
143
+ },
144
+ ];
145
+ const filteredQuestions = masterQuestions.filter(q => !flags[q.name]);
146
+ const answers = Object.assign(await inquirer_1.default.prompt(filteredQuestions), flags);
147
+ let { fromDirectory, toDirectory } = flags;
148
+ fromDirectory = (0, node_path_1.resolve)(fromDirectory || process.cwd());
149
+ toDirectory = (0, node_path_1.resolve)(toDirectory || process.cwd());
150
+ fromDirectory = await this.decompressIfNeeded(fromDirectory);
151
+ try {
152
+ await node_fs_1.promises.access(fromDirectory);
153
+ }
154
+ catch {
155
+ this.error(`Could not access: ${fromDirectory}`);
156
+ }
157
+ try {
158
+ await node_fs_1.promises.mkdir(toDirectory, { recursive: true });
159
+ }
160
+ catch {
161
+ this.error(`Could not access or create: ${toDirectory}`);
162
+ }
163
+ const groupedAppTasks = await this.collectJobs(fromDirectory);
164
+ const groupPromises = groupedAppTasks.map(async (group) => {
165
+ this.log(`\nProcessing [${group.pythonDirName}] / [${group.connectorName}]`);
166
+ this.log(`Found ${group.taskFilePaths.length} task file(s) in: ${group.appFolderPath}`);
167
+ const connectorToDir = (0, node_path_1.join)(toDirectory, group.connectorName.replaceAll(' ', '_').toLowerCase());
168
+ await connector_generator_1.ConnectorGenerator.generateBaseStructure(connectorToDir);
169
+ await connector_generator_1.ConnectorGenerator.generateLogo(connectorToDir);
170
+ await connector_generator_1.ConnectorGenerator.generateConnectorManifest(answers, group, connectorToDir);
171
+ await connector_generator_1.ConnectorGenerator.generateRunnerOverride(connectorToDir);
172
+ const taskPromises = group.taskFilePaths.map(async (taskFilePath) => {
173
+ const initializedConnectors = new Set();
174
+ const content = await node_fs_1.promises.readFile(taskFilePath, 'utf8');
175
+ let fileJson;
176
+ try {
177
+ fileJson = JSON.parse(content);
178
+ }
179
+ catch {
180
+ this.log(`Could not parse JSON: ${taskFilePath}`);
181
+ }
182
+ const transformer = (0, transformers_1.getTransformer)(fileJson);
183
+ const transformationResult = transformer.transform(fileJson);
184
+ if (!transformer.scriptIsValid(transformationResult.script)) {
185
+ this.warn(`Found code that is not supported in turbine: ${taskFilePath}`);
186
+ }
187
+ transformationResult.connectorName = group.connectorName;
188
+ transformationResult.pythonDefinition = group.pythonDefinition;
189
+ if (transformationResult.type === 'forked-plugin' && !initializedConnectors.has(transformationResult.forkedName)) {
190
+ initializedConnectors.add(transformationResult.forkedName);
191
+ await connector_generator_1.ConnectorGenerator.initializeForkedPlugin(transformationResult, fromDirectory, connectorToDir);
192
+ }
193
+ await connector_generator_1.ConnectorGenerator.generateAction(transformationResult, connectorToDir);
194
+ await connector_generator_1.ConnectorGenerator.generateActionConfig(transformationResult, connectorToDir);
195
+ });
196
+ await Promise.all(taskPromises);
197
+ });
198
+ await Promise.all(groupPromises);
199
+ this.log(`\nDone processing. Converted files at: ${toDirectory}`);
200
+ }
201
+ }
202
+ exports.Migrate = Migrate;
203
+ Migrate.description = 'Convert scripts and forked plugins from Swimlane V10x to connectors.';
204
+ Migrate.flags = {
205
+ ...core_1.Base.flags,
206
+ fromDirectory: core_2.Flags.string({
207
+ char: 'f',
208
+ description: 'Root directory of the 10X export.',
209
+ default: './',
210
+ }),
211
+ toDirectory: core_2.Flags.string({
212
+ char: 't',
213
+ description: 'Root directory of the destination repository.',
214
+ default: './connectors',
215
+ }),
216
+ vendor: core_2.Flags.string({ description: 'Vendor (e.g. CrowdStrike)' }),
217
+ product: core_2.Flags.string({ description: 'Product (e.g. Falcon)' }),
218
+ description: core_2.Flags.string({ description: 'Description (e.g. CrowdStrike Host Query API)' }),
219
+ author: core_2.Flags.string({ description: 'Connector Author' }),
220
+ authorEmail: core_2.Flags.string({ description: 'Connector Author Email' }),
221
+ homepage: core_2.Flags.string({ description: 'Connector Author Support URL' }),
222
+ help: core_2.Flags.help({ char: 'h' }),
223
+ };
224
+ //# sourceMappingURL=convert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/commands/migrator/convert.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Base } from '@sw-tsdk/core';
2
+ export declare class Export extends Base {
3
+ static description: string;
4
+ static flags: {
5
+ mongoConnectionString: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
6
+ databaseName: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
7
+ outputFile: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
8
+ tlsAllowInvalidCertificates: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
9
+ help: import("@oclif/core/lib/interfaces").BooleanFlag<void>;
10
+ 'log-level': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Export = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@oclif/core");
6
+ const core_2 = require("@sw-tsdk/core");
7
+ const inquirer_1 = require("inquirer");
8
+ const archiver_1 = tslib_1.__importDefault(require("archiver"));
9
+ const fs = tslib_1.__importStar(require("node:fs"));
10
+ const mongodb_1 = require("mongodb");
11
+ // noinspection JSUnusedGlobalSymbols
12
+ class Export extends core_2.Base {
13
+ async run() {
14
+ const { flags } = await this.parse(Export);
15
+ const { mongoConnectionString,
16
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
17
+ databaseName, outputFile, } = flags;
18
+ const answers = await (0, inquirer_1.prompt)([{
19
+ type: 'password',
20
+ name: 'mongoConnectionString',
21
+ message: 'Enter the connection string for the swimlane mongo instance',
22
+ when: () => !mongoConnectionString || mongoConnectionString.length === 0,
23
+ }, {
24
+ type: 'input',
25
+ name: 'outputFile',
26
+ message: 'enter output file name',
27
+ when: () => !outputFile || outputFile.length === 0,
28
+ }]);
29
+ const newConfig = Object.assign(flags, answers);
30
+ try {
31
+ const apps = {};
32
+ const archive = (0, archiver_1.default)('zip', {
33
+ zlib: { level: 9 }, // Sets the compression level.
34
+ });
35
+ const output = fs.createWriteStream(newConfig.outputFile);
36
+ archive.pipe(output);
37
+ const mongo = new mongodb_1.MongoClient(newConfig.mongoConnectionString, {
38
+ tlsAllowInvalidCertificates: newConfig.tlsAllowInvalidCertificates,
39
+ directConnection: true,
40
+ });
41
+ try {
42
+ core_1.ux.action.start('pulling tasks');
43
+ const db = mongo.db(newConfig.databaseName);
44
+ const appCollection = db.collection('Applications');
45
+ const appCursor = await appCollection.find();
46
+ for await (const doc of appCursor) {
47
+ const app = doc;
48
+ apps[app._id] = { name: app.Name };
49
+ }
50
+ const tasksColleciton = db.collection('Tasks');
51
+ const cursor = await tasksColleciton.find();
52
+ for await (const doc of cursor) {
53
+ // console.info(doc)
54
+ const task = doc;
55
+ if (task.Action.Descriptor.ActionType === 'python3' || task.Action.Descriptor.ActionType === 'python312') {
56
+ await archive.append(task?.ApplicationId ? JSON.stringify(apps[task.ApplicationId]) : '{"name": "common"}', { name: `${task.Action.Descriptor.ActionType}/${task?.ApplicationId || 'common'}/applicationInfo.json` });
57
+ await archive.append(JSON.stringify(task), { name: `${task.Action.Descriptor.ActionType}/${task?.ApplicationId || 'common'}/tasks/${task.Action.Descriptor._id}.json` });
58
+ }
59
+ }
60
+ core_1.ux.action.stop();
61
+ core_1.ux.action.start('pulling plugins');
62
+ const bucket = new mongodb_1.GridFSBucket(db);
63
+ const packages = await bucket.find({ 'metadata.FileType': 'SwimBundle' });
64
+ const packageFiles = await packages.toArray();
65
+ for (const doc of packageFiles) {
66
+ const filestream = bucket.openDownloadStream(doc._id);
67
+ archive.append(filestream, { name: `packages/${doc.filename}.zip` });
68
+ }
69
+ core_1.ux.action.stop();
70
+ core_1.ux.action.start('pulling pip packages');
71
+ const pipPackages = db.collection('PipPackages');
72
+ const pipCursor = await pipPackages.find();
73
+ let requirements37 = '';
74
+ let requirements312 = '';
75
+ for await (const doc of pipCursor) {
76
+ const pipPackage = doc;
77
+ if (pipPackage.Name === 'swimlane') {
78
+ continue;
79
+ }
80
+ if (pipPackage.PythonVersionLabel === '3.7') {
81
+ requirements37 += `${pipPackage.Name}==${pipPackage.Version}\n`;
82
+ }
83
+ else {
84
+ requirements312 += `${pipPackage.Name}==${pipPackage.Version}\n`;
85
+ }
86
+ }
87
+ if (requirements37) {
88
+ await archive.append(requirements37, { name: 'python3/requirements.txt' });
89
+ }
90
+ if (requirements312) {
91
+ await archive.append(requirements312, { name: 'python312/requirements.txt' });
92
+ }
93
+ core_1.ux.action.stop();
94
+ }
95
+ finally {
96
+ core_1.ux.action.start('creating archive');
97
+ await archive.finalize();
98
+ core_1.ux.action.stop();
99
+ await mongo.close();
100
+ }
101
+ }
102
+ catch (error) {
103
+ console.error(error);
104
+ }
105
+ }
106
+ }
107
+ exports.Export = Export;
108
+ Export.description = 'Use to export python scripts from a Swimlane instance';
109
+ Export.flags = {
110
+ ...core_2.Base.BaseFlags,
111
+ mongoConnectionString: core_1.Flags.string({ char: 'c', description: 'Mongo Connection String', default: '' }),
112
+ databaseName: core_1.Flags.string({ char: 'd', description: 'Database Name', default: 'Swimlane' }),
113
+ outputFile: core_1.Flags.string({ char: 'o', description: 'Output file', default: 'scripts.zip' }),
114
+ tlsAllowInvalidCertificates: core_1.Flags.boolean({
115
+ char: 'i',
116
+ description: 'Allow invalid certificates',
117
+ default: false,
118
+ }),
119
+ help: core_1.Flags.help({ char: 'h' }),
120
+ };
121
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/commands/migrator/export.ts"],"names":[],"mappings":"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"}
package/lib/common.js CHANGED
@@ -135,6 +135,7 @@ exports.contentUseCaseCategories = [
135
135
  'enrichment',
136
136
  ];
137
137
  exports.connectorTemplates = [
138
+ 'python_312_definition',
138
139
  'python_311_definition',
139
140
  'python_310_definition',
140
141
  'node_18',
package/lib/common.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ from src.runner_override import RunnerOverride as RO
2
+ from src.runner_override import SwimlaneContext
3
+
4
+
5
+ class RunnerOverride(RO):
6
+
7
+ def __init__(self, asset, asset_schema, http_proxy):
8
+ # Initialise asset and proxies
9
+ super().__init__(asset, asset_schema, http_proxy)
10
+
11
+ def run(self, inputs, action_schema):
12
+ sw_context = SwimlaneContext(asset=self.asset, asset_schema=self.asset_schema,
13
+ http_proxy=self.http_proxy, inputs=inputs)
14
+
15
+ plugin_instance = SwMain(sw_context)
16
+ plugin_response = plugin_instance.execute()
17
+
18
+ if isinstance(plugin_response, dict):
19
+ return plugin_response # Already a dictionary
20
+
21
+ elif isinstance(plugin_response, list):
22
+ return {"plugin_output": plugin_response} # Wrap in a dictionary
23
+
24
+ elif plugin_response is None:
25
+ return {"plugin_output": None} # Handle None case explicitly
26
+ else:
27
+ return {"plugin_output": plugin_response} # Wrap other types in a dictionary
28
+ return plugin_response
29
+
30
+ # IMPORTED CODE BELOW
31
+ # HERE
32
+
33
+
34
+ # END OF IMPORTED CODE
@@ -0,0 +1,22 @@
1
+ class SwimlaneContext:
2
+ """Mimics the 10x context object used in plugins and scripts"""
3
+
4
+ def __init__(self, asset, asset_schema, http_proxy, inputs):
5
+ self.asset = asset
6
+ self.asset_schema = asset_schema
7
+ self.http_proxy = http_proxy
8
+ self.inputs = inputs
9
+ # We purposefully do not include the sw_context.config object here as it is not supported
10
+
11
+ class Authenticate:
12
+ def __init__(self, asset, asset_schema, http_proxy):
13
+ # 10x forks or scripts are standalone and do not use any of this logic
14
+ pass
15
+
16
+
17
+ class RunnerOverride(Authenticate):
18
+ def __init__(self, asset, asset_schema, http_proxy):
19
+ super().__init__(asset, asset_schema, http_proxy)
20
+ self.asset = asset
21
+ self.asset_schema = asset_schema
22
+ self.http_proxy = http_proxy
@@ -0,0 +1,31 @@
1
+ from src.runner_override import RunnerOverride as RO
2
+ from src.runner_override import SwimlaneContext
3
+
4
+
5
+ class RunnerOverride(RO):
6
+
7
+ def __init__(self, asset, asset_schema, http_proxy):
8
+ # Initialise asset and proxies
9
+ super().__init__(asset, asset_schema, http_proxy)
10
+
11
+ def run(self, inputs, action_schema):
12
+ sw_context = SwimlaneContext(asset=self.asset, asset_schema=self.asset_schema,
13
+ http_proxy=self.http_proxy, inputs=inputs)
14
+ sw_outputs = None
15
+
16
+ # IMPORTED CODE BELOW
17
+ # HERE
18
+
19
+
20
+ # END OF IMPORTED CODE
21
+ if isinstance(sw_outputs, dict):
22
+ return sw_outputs # Already a dictionary
23
+
24
+ elif isinstance(sw_outputs, list):
25
+ return {"list_output": sw_outputs} # Wrap in a dictionary
26
+
27
+ elif sw_outputs is None:
28
+ return {"output": None} # Handle None case explicitly
29
+
30
+ else:
31
+ return {"output": sw_outputs} # Wrap other types in a dictionary
@@ -0,0 +1,40 @@
1
+ # THIS IS AN EXAMPLE, PLEASE USE THE SDK TO CREATE A NEW ACTION and DELETE
2
+ name: action_name
3
+ schema: action/1
4
+ title: ''
5
+ description: ''
6
+ inputs: # Use the SDK to autogenerate the inputs, can be 'object' or 'array' type.
7
+ type: object
8
+ properties: # the following are used for definition runner.
9
+ path_parameters: # remove if path parameters are not needed.
10
+ type: object
11
+ description: Path Parameters
12
+ properties:
13
+ required:
14
+ parameters:
15
+ type: object
16
+ description: URL Query Parameters
17
+ properties:
18
+ required:
19
+ json_body: # remove if no json_body is needed.
20
+ type: object
21
+ description: Body
22
+ properties:
23
+ required:
24
+ data_body: # remove if no data_body is needed.
25
+ type: object
26
+ description: Body
27
+ properties:
28
+ required:
29
+ headers: # remove if no custom headers are needed.
30
+ type: object
31
+ description: Body
32
+ properties:
33
+ required:
34
+ output: # use the SDK to autogenerate the output schema. This can be 'object' or 'array' type.
35
+ type: object
36
+ properties:
37
+ additionalProperties: true
38
+ meta:
39
+ endpoint: turbine-api/v3/turbine # full path to endpoint after host.
40
+ method: GET
@@ -0,0 +1,27 @@
1
+ # THIS IS AN EXAMPLE, PLEASE USE THE SDK TO CREATE A NEW ASSET and DELETE
2
+ schema: asset/1
3
+ name: asset
4
+ title: Virus Total API Key Authentication
5
+ description: ''
6
+ inputs:
7
+ type: object
8
+ properties:
9
+ url:
10
+ type: string
11
+ default: https://www.swimlane.com # add the default if cloud.
12
+ x-apikey:
13
+ type: string
14
+ verify_ssl:
15
+ type: boolean
16
+ http_proxy:
17
+ type: string
18
+ default: https://www.proxy.com
19
+ required:
20
+ - url
21
+ - x-apikey # example
22
+ meta:
23
+ asset_url_key: url
24
+ security: # example of header auth. All security objects must follow OpenAPI spec auth.
25
+ type: apiKey
26
+ name: x-apikey # example
27
+ in: header
@@ -0,0 +1,7 @@
1
+ # Change Log
2
+
3
+ All notable changes to this project are documented in this file.
4
+ See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
+
6
+ ## 1.0.0 - {{{timestamp}}}
7
+ * Initial Release