@sw-tsdk/plugin-connector 2.0.1-next.78 → 2.0.1-next.89
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.
- package/README.md +48 -18
- package/lib/commands/connector/create/openapi.d.ts +46 -0
- package/lib/commands/connector/create/openapi.js +448 -0
- package/lib/commands/connector/create/openapi.js.map +1 -0
- package/lib/commands/connector/{create-source.d.ts → create/source.d.ts} +0 -0
- package/lib/commands/connector/{create-source.js → create/source.js} +1 -1
- package/lib/commands/connector/create/source.js.map +1 -0
- package/lib/commands/connector/create.js +1 -1
- package/lib/commands/connector/create.js.map +1 -1
- package/lib/types/connector-types.d.ts +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +7 -6
- package/lib/commands/connector/create-source.js.map +0 -1
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ $ npm install -g @sw-tsdk/plugin-connector
|
|
|
16
16
|
$ sw-tsdk-connector COMMAND
|
|
17
17
|
running command...
|
|
18
18
|
$ sw-tsdk-connector (--version)
|
|
19
|
-
@sw-tsdk/plugin-connector/2.0.1-next.
|
|
19
|
+
@sw-tsdk/plugin-connector/2.0.1-next.89+b9344e1 linux-x64 node-v16.18.0
|
|
20
20
|
$ sw-tsdk-connector --help [COMMAND]
|
|
21
21
|
USAGE
|
|
22
22
|
$ sw-tsdk-connector COMMAND
|
|
@@ -33,7 +33,8 @@ USAGE
|
|
|
33
33
|
* [`sw-tsdk-connector asset:add`](#sw-tsdk-connector-assetadd)
|
|
34
34
|
* [`sw-tsdk-connector connector:build`](#sw-tsdk-connector-connectorbuild)
|
|
35
35
|
* [`sw-tsdk-connector connector:create`](#sw-tsdk-connector-connectorcreate)
|
|
36
|
-
* [`sw-tsdk-connector connector:create
|
|
36
|
+
* [`sw-tsdk-connector connector:create:openapi`](#sw-tsdk-connector-connectorcreateopenapi)
|
|
37
|
+
* [`sw-tsdk-connector connector:create:source`](#sw-tsdk-connector-connectorcreatesource)
|
|
37
38
|
* [`sw-tsdk-connector connector:logo`](#sw-tsdk-connector-connectorlogo)
|
|
38
39
|
* [`sw-tsdk-connector connector:save`](#sw-tsdk-connector-connectorsave)
|
|
39
40
|
* [`sw-tsdk-connector connector:sign`](#sw-tsdk-connector-connectorsign)
|
|
@@ -58,7 +59,7 @@ DESCRIPTION
|
|
|
58
59
|
Update a connector action.
|
|
59
60
|
```
|
|
60
61
|
|
|
61
|
-
_See code: [lib/commands/action/add.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.
|
|
62
|
+
_See code: [lib/commands/action/add.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.89+b9344e1/lib/commands/action/add.js)_
|
|
62
63
|
|
|
63
64
|
## `sw-tsdk-connector action:generate:data`
|
|
64
65
|
|
|
@@ -83,7 +84,7 @@ DESCRIPTION
|
|
|
83
84
|
Use to test a task in an integration
|
|
84
85
|
```
|
|
85
86
|
|
|
86
|
-
_See code: [lib/commands/action/generate/data.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.
|
|
87
|
+
_See code: [lib/commands/action/generate/data.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.89+b9344e1/lib/commands/action/generate/data.js)_
|
|
87
88
|
|
|
88
89
|
## `sw-tsdk-connector action:generate:input`
|
|
89
90
|
|
|
@@ -108,7 +109,7 @@ DESCRIPTION
|
|
|
108
109
|
Update action input schema.
|
|
109
110
|
```
|
|
110
111
|
|
|
111
|
-
_See code: [lib/commands/action/generate/input.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.
|
|
112
|
+
_See code: [lib/commands/action/generate/input.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.89+b9344e1/lib/commands/action/generate/input.js)_
|
|
112
113
|
|
|
113
114
|
## `sw-tsdk-connector action:generate:output`
|
|
114
115
|
|
|
@@ -132,7 +133,7 @@ DESCRIPTION
|
|
|
132
133
|
Update a connector action.
|
|
133
134
|
```
|
|
134
135
|
|
|
135
|
-
_See code: [lib/commands/action/generate/output.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.
|
|
136
|
+
_See code: [lib/commands/action/generate/output.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.89+b9344e1/lib/commands/action/generate/output.js)_
|
|
136
137
|
|
|
137
138
|
## `sw-tsdk-connector action:run:local`
|
|
138
139
|
|
|
@@ -160,7 +161,7 @@ DESCRIPTION
|
|
|
160
161
|
Runs a connector action. (Defaults to current image version in local repository).
|
|
161
162
|
```
|
|
162
163
|
|
|
163
|
-
_See code: [lib/commands/action/run/local.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.
|
|
164
|
+
_See code: [lib/commands/action/run/local.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.89+b9344e1/lib/commands/action/run/local.js)_
|
|
164
165
|
|
|
165
166
|
## `sw-tsdk-connector asset:add`
|
|
166
167
|
|
|
@@ -181,7 +182,7 @@ DESCRIPTION
|
|
|
181
182
|
Update a connector action.
|
|
182
183
|
```
|
|
183
184
|
|
|
184
|
-
_See code: [lib/commands/asset/add.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.
|
|
185
|
+
_See code: [lib/commands/asset/add.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.89+b9344e1/lib/commands/asset/add.js)_
|
|
185
186
|
|
|
186
187
|
## `sw-tsdk-connector connector:build`
|
|
187
188
|
|
|
@@ -207,7 +208,7 @@ DESCRIPTION
|
|
|
207
208
|
Builds a local docker image of the connector.
|
|
208
209
|
```
|
|
209
210
|
|
|
210
|
-
_See code: [lib/commands/connector/build.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.
|
|
211
|
+
_See code: [lib/commands/connector/build.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.89+b9344e1/lib/commands/connector/build.js)_
|
|
211
212
|
|
|
212
213
|
## `sw-tsdk-connector connector:create`
|
|
213
214
|
|
|
@@ -239,15 +240,44 @@ DESCRIPTION
|
|
|
239
240
|
Scaffold a new connector
|
|
240
241
|
```
|
|
241
242
|
|
|
242
|
-
_See code: [lib/commands/connector/create.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.
|
|
243
|
+
_See code: [lib/commands/connector/create.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.89+b9344e1/lib/commands/connector/create.js)_
|
|
243
244
|
|
|
244
|
-
## `sw-tsdk-connector connector:create
|
|
245
|
+
## `sw-tsdk-connector connector:create:openapi`
|
|
246
|
+
|
|
247
|
+
Scaffold a new connector
|
|
248
|
+
|
|
249
|
+
```
|
|
250
|
+
USAGE
|
|
251
|
+
$ sw-tsdk-connector connector:create:openapi [-d <value>] [--vendor <value>] [--product <value>] [-k <value>] [--description
|
|
252
|
+
<value>] [--logoPath <value>] [--author <value>] [--authorEmail <value>] [--homepage <value>] [-o <value>] [-h]
|
|
253
|
+
|
|
254
|
+
FLAGS
|
|
255
|
+
-d, --directory=<value> [default: ./] root directory for where to store connectors, the connector directory will be
|
|
256
|
+
generated.
|
|
257
|
+
-h, --help Show CLI help.
|
|
258
|
+
-k, --keywords=<value> Please enter keyword (Comma-Separated)
|
|
259
|
+
-o, --specs=<value> root directory for where to store connectors, the connector directory will be generated.
|
|
260
|
+
--author=<value> Connector Author
|
|
261
|
+
--authorEmail=<value> Connector Author Email
|
|
262
|
+
--description=<value> Description (e.g. CrowdStrike Host Query API)
|
|
263
|
+
--homepage=<value> Connector Author Support URL
|
|
264
|
+
--logoPath=<value> URL or absolute path to logo file
|
|
265
|
+
--product=<value> Product (e.g. Falcon)
|
|
266
|
+
--vendor=<value> Vendor (e.g. CrowdStrike)
|
|
267
|
+
|
|
268
|
+
DESCRIPTION
|
|
269
|
+
Scaffold a new connector
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
_See code: [lib/commands/connector/create/openapi.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.89+b9344e1/lib/commands/connector/create/openapi.js)_
|
|
273
|
+
|
|
274
|
+
## `sw-tsdk-connector connector:create:source`
|
|
245
275
|
|
|
246
276
|
Generates 11x source from 10x
|
|
247
277
|
|
|
248
278
|
```
|
|
249
279
|
USAGE
|
|
250
|
-
$ sw-tsdk-connector connector:create
|
|
280
|
+
$ sw-tsdk-connector connector:create:source [-d <value>] [-h]
|
|
251
281
|
|
|
252
282
|
FLAGS
|
|
253
283
|
-d, --directory=<value> [default: ./] root directory of the repository.
|
|
@@ -257,7 +287,7 @@ DESCRIPTION
|
|
|
257
287
|
Generates 11x source from 10x
|
|
258
288
|
```
|
|
259
289
|
|
|
260
|
-
_See code: [lib/commands/connector/create
|
|
290
|
+
_See code: [lib/commands/connector/create/source.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.89+b9344e1/lib/commands/connector/create/source.js)_
|
|
261
291
|
|
|
262
292
|
## `sw-tsdk-connector connector:logo`
|
|
263
293
|
|
|
@@ -276,7 +306,7 @@ DESCRIPTION
|
|
|
276
306
|
Update a connector.
|
|
277
307
|
```
|
|
278
308
|
|
|
279
|
-
_See code: [lib/commands/connector/logo.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.
|
|
309
|
+
_See code: [lib/commands/connector/logo.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.89+b9344e1/lib/commands/connector/logo.js)_
|
|
280
310
|
|
|
281
311
|
## `sw-tsdk-connector connector:save`
|
|
282
312
|
|
|
@@ -297,7 +327,7 @@ DESCRIPTION
|
|
|
297
327
|
Save a docker image locally as .tar.gz
|
|
298
328
|
```
|
|
299
329
|
|
|
300
|
-
_See code: [lib/commands/connector/save.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.
|
|
330
|
+
_See code: [lib/commands/connector/save.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.89+b9344e1/lib/commands/connector/save.js)_
|
|
301
331
|
|
|
302
332
|
## `sw-tsdk-connector connector:sign`
|
|
303
333
|
|
|
@@ -321,7 +351,7 @@ DESCRIPTION
|
|
|
321
351
|
Builds a local docker image of the connector.
|
|
322
352
|
```
|
|
323
353
|
|
|
324
|
-
_See code: [lib/commands/connector/sign.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.
|
|
354
|
+
_See code: [lib/commands/connector/sign.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.89+b9344e1/lib/commands/connector/sign.js)_
|
|
325
355
|
|
|
326
356
|
## `sw-tsdk-connector connector:update`
|
|
327
357
|
|
|
@@ -341,7 +371,7 @@ DESCRIPTION
|
|
|
341
371
|
Update a connector.
|
|
342
372
|
```
|
|
343
373
|
|
|
344
|
-
_See code: [lib/commands/connector/update.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.
|
|
374
|
+
_See code: [lib/commands/connector/update.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.89+b9344e1/lib/commands/connector/update.js)_
|
|
345
375
|
|
|
346
376
|
## `sw-tsdk-connector connector:validate`
|
|
347
377
|
|
|
@@ -364,5 +394,5 @@ DESCRIPTION
|
|
|
364
394
|
Use to validate an integration
|
|
365
395
|
```
|
|
366
396
|
|
|
367
|
-
_See code: [lib/commands/connector/validate.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.
|
|
397
|
+
_See code: [lib/commands/connector/validate.js](https://github.com/swimlane/turbine-sdk/blob/v2.0.1-next.89+b9344e1/lib/commands/connector/validate.js)_
|
|
368
398
|
<!-- commandsstop -->
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Base } from '@sw-tsdk/core';
|
|
2
|
+
import { Action, Input, InnerProperty, Output, Property } from '@sw-tsdk/connector';
|
|
3
|
+
export declare class OpenAPI extends Base {
|
|
4
|
+
static description: string;
|
|
5
|
+
defaultTemplate: string;
|
|
6
|
+
codeRegex: RegExp;
|
|
7
|
+
specData: any;
|
|
8
|
+
currentContext: any;
|
|
9
|
+
referenceMapped: string[];
|
|
10
|
+
static flags: {
|
|
11
|
+
directory: import("@oclif/core/lib/interfaces").OptionFlag<string>;
|
|
12
|
+
vendor: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
|
|
13
|
+
product: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
|
|
14
|
+
keywords: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
|
|
15
|
+
description: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
|
|
16
|
+
logoPath: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
|
|
17
|
+
author: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
|
|
18
|
+
authorEmail: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
|
|
19
|
+
homepage: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
|
|
20
|
+
specs: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
|
|
21
|
+
help: import("@oclif/core/lib/interfaces").BooleanFlag<void>;
|
|
22
|
+
};
|
|
23
|
+
run(): Promise<void>;
|
|
24
|
+
createActionsFromPaths(paths: any, actionFolder: string, index?: number): Promise<void>;
|
|
25
|
+
buildActions(actions: any, actionFolder: string, endpoint: string, index?: number): Promise<void>;
|
|
26
|
+
createActionData(action: any, endpoint: string, method: string): Promise<Action>;
|
|
27
|
+
createInputs(action: any): Promise<Input>;
|
|
28
|
+
createOutput(action: any): Promise<Output>;
|
|
29
|
+
formatData(data: any): any[];
|
|
30
|
+
getInnerData(object: any, path: string | string[], type: string, exclude?: boolean): Promise<any>;
|
|
31
|
+
exclude(filter: string[], list: string[], index?: number): string[];
|
|
32
|
+
filterByList(list: string[], object: any): any[] | null;
|
|
33
|
+
buildObject(object: any, key: string): Promise<Property>;
|
|
34
|
+
buildItems(items: any): Promise<Property | InnerProperty>;
|
|
35
|
+
getStatusCodeObject(response: any): {
|
|
36
|
+
data: any;
|
|
37
|
+
code: string;
|
|
38
|
+
};
|
|
39
|
+
getReference(path: string[], currentContext: any, index?: number): any;
|
|
40
|
+
buildInnerObject(object: any, currentObject: InnerProperty, index?: number): Promise<InnerProperty>;
|
|
41
|
+
existReferences(object: any, found?: string[], index?: number): string[];
|
|
42
|
+
createAssets(securitySchemes: any, assetFolder: string, index?: number): Promise<void>;
|
|
43
|
+
generateJsonSchema(data: any, io: Output | Input): Promise<Output | Input>;
|
|
44
|
+
generateAttachmentSchema(data: any, io: Input | Output): Promise<Input | Output>;
|
|
45
|
+
getDataBody(data: any): Promise<any>;
|
|
46
|
+
}
|
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OpenAPI = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
/* eslint-disable camelcase */
|
|
6
|
+
const core_1 = require("@oclif/core");
|
|
7
|
+
const node_path_1 = tslib_1.__importStar(require("node:path"));
|
|
8
|
+
const core_2 = require("@sw-tsdk/core");
|
|
9
|
+
const fs_extra_1 = require("fs-extra");
|
|
10
|
+
const inquirer_1 = tslib_1.__importDefault(require("inquirer"));
|
|
11
|
+
const js_yaml_1 = tslib_1.__importDefault(require("js-yaml"));
|
|
12
|
+
const connector_interfaces_1 = require("@swimlane/connector-interfaces");
|
|
13
|
+
const fs = tslib_1.__importStar(require("node:fs"));
|
|
14
|
+
const common_1 = require("../../../common");
|
|
15
|
+
const connector_1 = require("@sw-tsdk/connector");
|
|
16
|
+
const json_schema_ref_parser_1 = tslib_1.__importDefault(require("@apidevtools/json-schema-ref-parser"));
|
|
17
|
+
class OpenAPI extends core_2.Base {
|
|
18
|
+
constructor() {
|
|
19
|
+
super(...arguments);
|
|
20
|
+
this.defaultTemplate = 'python_310_definition';
|
|
21
|
+
this.codeRegex = /^2\d{2}$/;
|
|
22
|
+
}
|
|
23
|
+
async run() {
|
|
24
|
+
var _a;
|
|
25
|
+
const { flags } = await this.parse(OpenAPI);
|
|
26
|
+
const { directory, specs } = flags;
|
|
27
|
+
if (!specs) {
|
|
28
|
+
core_1.CliUx.ux.error('OpenAPI Specs are required');
|
|
29
|
+
}
|
|
30
|
+
if (!(await (0, core_2.fileExists)(specs))) {
|
|
31
|
+
core_1.CliUx.ux.error('OpenAPI Specs does not exist');
|
|
32
|
+
}
|
|
33
|
+
const name = node_path_1.default.basename(specs).replace(/\.[^./]+$/, '');
|
|
34
|
+
const masterQuestions = [
|
|
35
|
+
{
|
|
36
|
+
type: 'input',
|
|
37
|
+
name: 'vendor',
|
|
38
|
+
message: 'Vendor (e.g. CrowdStrike)',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
type: 'input',
|
|
42
|
+
name: 'product',
|
|
43
|
+
message: 'Product (e.g. Falcon)',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
type: 'list',
|
|
47
|
+
name: 'keywords',
|
|
48
|
+
message: 'Choose a category',
|
|
49
|
+
choices: common_1.connectorCategories,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
type: 'input',
|
|
53
|
+
name: 'description',
|
|
54
|
+
message: 'Description (e.g. CrowdStrike Host Query API)',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
type: 'input',
|
|
58
|
+
name: 'logoPath',
|
|
59
|
+
message: 'URL or absolute path to logo file',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: 'input',
|
|
63
|
+
name: 'author',
|
|
64
|
+
message: 'Integration Author',
|
|
65
|
+
default: 'Swimlane',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
type: 'input',
|
|
69
|
+
name: 'authorEmail',
|
|
70
|
+
message: 'Integration Author Email',
|
|
71
|
+
default: 'info@swimlane.com',
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
type: 'input',
|
|
75
|
+
name: 'homepage',
|
|
76
|
+
message: 'Author URL',
|
|
77
|
+
default: 'https://swimlane.com',
|
|
78
|
+
},
|
|
79
|
+
];
|
|
80
|
+
const filteredQuestions = masterQuestions.filter(q => !flags[q.name]);
|
|
81
|
+
const answers = Object.assign(await inquirer_1.default.prompt(filteredQuestions), flags);
|
|
82
|
+
const connectorDirectory = (0, node_path_1.join)(directory, `t_${name}`);
|
|
83
|
+
await (0, fs_extra_1.ensureDir)(connectorDirectory);
|
|
84
|
+
const connector = {
|
|
85
|
+
vendor: answers.vendor,
|
|
86
|
+
product: answers.product,
|
|
87
|
+
name: name,
|
|
88
|
+
schema: 'connector/1',
|
|
89
|
+
author: answers.author,
|
|
90
|
+
bugs: '',
|
|
91
|
+
iconImage: '../image/logo.png',
|
|
92
|
+
description: answers.description,
|
|
93
|
+
homepage: answers.homepage,
|
|
94
|
+
keywords: [answers.keywords],
|
|
95
|
+
license: 'AGPL-3.0',
|
|
96
|
+
meta: {
|
|
97
|
+
imageRepository: `quay.io/swimlane-connectors/${name}`,
|
|
98
|
+
private: false,
|
|
99
|
+
publishConfig: {
|
|
100
|
+
access: 'public',
|
|
101
|
+
},
|
|
102
|
+
buildConfig: {
|
|
103
|
+
template: this.defaultTemplate,
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
repository: `https://github.com/swimlane/t_${name}`,
|
|
107
|
+
title: '',
|
|
108
|
+
version: '1.0.0',
|
|
109
|
+
runConfig: {
|
|
110
|
+
inputs: {
|
|
111
|
+
type: connector_interfaces_1.ConnectorInputsType.stdin,
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
core_1.CliUx.ux.action.start('Generating data.');
|
|
116
|
+
const connectorFolder = (0, node_path_1.join)(connectorDirectory, 'connector');
|
|
117
|
+
await (0, fs_extra_1.ensureDir)(connectorFolder);
|
|
118
|
+
const configFolder = (0, node_path_1.join)(connectorFolder, 'config');
|
|
119
|
+
await (0, fs_extra_1.ensureDir)(configFolder);
|
|
120
|
+
const assetsFolder = (0, node_path_1.join)(configFolder, 'assets');
|
|
121
|
+
await (0, fs_extra_1.ensureDir)(assetsFolder);
|
|
122
|
+
const actionsFolder = (0, node_path_1.join)(configFolder, 'actions');
|
|
123
|
+
await (0, fs_extra_1.ensureDir)(actionsFolder);
|
|
124
|
+
const codeFolder = (0, node_path_1.join)(connectorFolder, 'code');
|
|
125
|
+
await (0, fs_extra_1.ensureDir)(codeFolder);
|
|
126
|
+
let spec = js_yaml_1.default.load(await fs.promises.readFile(specs, 'utf-8'));
|
|
127
|
+
if (JSON.stringify(spec).includes('$ref')) {
|
|
128
|
+
spec = await json_schema_ref_parser_1.default.dereference(spec);
|
|
129
|
+
}
|
|
130
|
+
this.specData = spec;
|
|
131
|
+
if (((_a = spec === null || spec === void 0 ? void 0 : spec.components) === null || _a === void 0 ? void 0 : _a.securitySchemes) && Object.keys(spec.components.securitySchemes).length > 0) {
|
|
132
|
+
await this.createAssets(spec.components.securitySchemes, assetsFolder);
|
|
133
|
+
}
|
|
134
|
+
await this.createActionsFromPaths(spec.paths, actionsFolder);
|
|
135
|
+
// write connector.yaml from answers
|
|
136
|
+
const connectorFilePath = (0, node_path_1.join)(connectorDirectory, 'connector', 'connector.yaml');
|
|
137
|
+
await (0, fs_extra_1.writeFile)(connectorFilePath, js_yaml_1.default.dump(connector));
|
|
138
|
+
}
|
|
139
|
+
async createActionsFromPaths(paths, actionFolder, index = 0) {
|
|
140
|
+
const pathsKeys = Object.keys(paths);
|
|
141
|
+
const action = (0, connector_1.fixCircularReferences)(paths[pathsKeys[index]]);
|
|
142
|
+
await this.buildActions(action, actionFolder, pathsKeys[index]);
|
|
143
|
+
if (index < pathsKeys.length - 1) {
|
|
144
|
+
return this.createActionsFromPaths(paths, actionFolder, index + 1);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
async buildActions(actions, actionFolder, endpoint, index = 0) {
|
|
148
|
+
const objectKeys = Object.keys(actions);
|
|
149
|
+
this.currentContext = {};
|
|
150
|
+
this.referenceMapped = [];
|
|
151
|
+
const currentAction = actions[objectKeys[index]];
|
|
152
|
+
const actionData = await this.createActionData(currentAction, endpoint, objectKeys[index]);
|
|
153
|
+
await (0, fs_extra_1.writeFile)((0, node_path_1.join)(actionFolder, `${actionData.name}.yaml`), js_yaml_1.default.dump(actionData));
|
|
154
|
+
if (index < objectKeys.length - 1) {
|
|
155
|
+
return this.buildActions(actions, actionFolder, endpoint, index + 1);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
async createActionData(action, endpoint, method) {
|
|
159
|
+
const actionWords = action.operationId.split(/(?=[A-Z])/);
|
|
160
|
+
const name = actionWords
|
|
161
|
+
.map((item) => item.toLowerCase())
|
|
162
|
+
.join('_');
|
|
163
|
+
const title = actionWords.join(' ');
|
|
164
|
+
const builtAction = {
|
|
165
|
+
schema: 'action/1',
|
|
166
|
+
title,
|
|
167
|
+
name,
|
|
168
|
+
description: action.summary,
|
|
169
|
+
inputs: await this.createInputs(action),
|
|
170
|
+
output: await this.createOutput(action),
|
|
171
|
+
meta: {
|
|
172
|
+
endpoint,
|
|
173
|
+
method,
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
return builtAction;
|
|
177
|
+
}
|
|
178
|
+
async createInputs(action) {
|
|
179
|
+
var _a;
|
|
180
|
+
let input = {
|
|
181
|
+
type: 'object',
|
|
182
|
+
properties: {},
|
|
183
|
+
};
|
|
184
|
+
if (action.parameters) {
|
|
185
|
+
const headers = await this.getInnerData(action.parameters, 'header', 'in');
|
|
186
|
+
headers ? input.properties.headers = {
|
|
187
|
+
title: 'Headers',
|
|
188
|
+
type: 'object',
|
|
189
|
+
properties: await this.buildInnerObject(headers, {}),
|
|
190
|
+
required: headers === null || headers === void 0 ? void 0 : headers.required,
|
|
191
|
+
} : null;
|
|
192
|
+
const parameters = await this.getInnerData(action.parameters, 'query', 'in');
|
|
193
|
+
parameters ? (input.properties.parameters = {
|
|
194
|
+
title: 'Parameters',
|
|
195
|
+
type: 'object',
|
|
196
|
+
properties: await this.buildInnerObject(parameters, {}),
|
|
197
|
+
required: parameters === null || parameters === void 0 ? void 0 : parameters.required,
|
|
198
|
+
}) : null;
|
|
199
|
+
const pathParameters = await this.getInnerData(action.parameters, 'path', 'in');
|
|
200
|
+
pathParameters ? (input.properties.path_parameters = {
|
|
201
|
+
title: 'Path Parameters',
|
|
202
|
+
type: 'object',
|
|
203
|
+
properties: await this.buildInnerObject(pathParameters, {}),
|
|
204
|
+
required: pathParameters === null || pathParameters === void 0 ? void 0 : pathParameters.required,
|
|
205
|
+
}) : null;
|
|
206
|
+
}
|
|
207
|
+
if ((_a = action === null || action === void 0 ? void 0 : action.requestBody) === null || _a === void 0 ? void 0 : _a.content) {
|
|
208
|
+
const dataBody = await this.getDataBody(action.requestBody.content);
|
|
209
|
+
dataBody ?
|
|
210
|
+
(input.properties.data_body = {
|
|
211
|
+
title: 'Data Body',
|
|
212
|
+
type: 'object',
|
|
213
|
+
properties: await this.buildInnerObject(dataBody, {}),
|
|
214
|
+
required: dataBody === null || dataBody === void 0 ? void 0 : dataBody.required,
|
|
215
|
+
}) : null;
|
|
216
|
+
input = await this.generateAttachmentSchema(action.requestBody.content, input);
|
|
217
|
+
input = await this.generateJsonSchema(action.requestBody.content, input);
|
|
218
|
+
}
|
|
219
|
+
return input;
|
|
220
|
+
}
|
|
221
|
+
async createOutput(action) {
|
|
222
|
+
var _a;
|
|
223
|
+
const { data, code } = this.getStatusCodeObject(action.responses);
|
|
224
|
+
let output = {
|
|
225
|
+
type: 'object',
|
|
226
|
+
properties: {
|
|
227
|
+
status_code: {
|
|
228
|
+
title: 'Status Code',
|
|
229
|
+
type: 'number',
|
|
230
|
+
examples: [code],
|
|
231
|
+
},
|
|
232
|
+
reason: {
|
|
233
|
+
title: 'Reason',
|
|
234
|
+
examples: [data.description],
|
|
235
|
+
type: 'string',
|
|
236
|
+
},
|
|
237
|
+
},
|
|
238
|
+
};
|
|
239
|
+
data.headers ? output.properties.reponse_header = {
|
|
240
|
+
title: 'Response headers',
|
|
241
|
+
type: 'object',
|
|
242
|
+
properties: await this.buildInnerObject(this.formatData(data.headers), {}),
|
|
243
|
+
required: (_a = data.headers) === null || _a === void 0 ? void 0 : _a.required,
|
|
244
|
+
examples: data.headers.examples,
|
|
245
|
+
} : null;
|
|
246
|
+
if (data === null || data === void 0 ? void 0 : data.content) {
|
|
247
|
+
const dataBody = await this.getDataBody(data.content);
|
|
248
|
+
dataBody ? (output.properties.data = {
|
|
249
|
+
title: 'Data Body',
|
|
250
|
+
type: 'object',
|
|
251
|
+
properties: await this.buildInnerObject(dataBody, {}),
|
|
252
|
+
required: dataBody === null || dataBody === void 0 ? void 0 : dataBody.required,
|
|
253
|
+
}) : null;
|
|
254
|
+
const text = await this.getInnerData(data.content, 'text/plain', 'content');
|
|
255
|
+
text ? (output.properties.response_text = {
|
|
256
|
+
title: 'Response Text',
|
|
257
|
+
type: 'string',
|
|
258
|
+
examples: text.examples,
|
|
259
|
+
}) : null;
|
|
260
|
+
output = await this.generateAttachmentSchema(data, output);
|
|
261
|
+
output = await this.generateJsonSchema(data, output);
|
|
262
|
+
}
|
|
263
|
+
return output;
|
|
264
|
+
}
|
|
265
|
+
formatData(data) {
|
|
266
|
+
const keys = Object.keys(data);
|
|
267
|
+
return keys.map(key => {
|
|
268
|
+
data[key].name = key;
|
|
269
|
+
return data[key];
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
async getInnerData(object, path, type, exclude = false) {
|
|
273
|
+
const keys = Object.keys(object);
|
|
274
|
+
if (typeof path === 'string' && keys.includes(path) &&
|
|
275
|
+
type === 'content' && !exclude) {
|
|
276
|
+
return object[path].schema;
|
|
277
|
+
}
|
|
278
|
+
if (Array.isArray(path) && type === 'content' && exclude) {
|
|
279
|
+
const allowed = this.exclude(path, keys);
|
|
280
|
+
return this.filterByList(allowed, object);
|
|
281
|
+
}
|
|
282
|
+
if (type === 'in') {
|
|
283
|
+
const allowed = Object.keys(object).filter(key => { var _a; return ((_a = object[key]) === null || _a === void 0 ? void 0 : _a.in) === path; });
|
|
284
|
+
return this.filterByList(allowed, object);
|
|
285
|
+
}
|
|
286
|
+
return null;
|
|
287
|
+
}
|
|
288
|
+
exclude(filter, list, index = 0) {
|
|
289
|
+
list = list.filter(key => key !== filter[index]);
|
|
290
|
+
if (index > filter.length - 1) {
|
|
291
|
+
return this.exclude(filter, list, index + 1);
|
|
292
|
+
}
|
|
293
|
+
return list;
|
|
294
|
+
}
|
|
295
|
+
filterByList(list, object) {
|
|
296
|
+
if ((list === null || list === void 0 ? void 0 : list.length) > 0) {
|
|
297
|
+
return list.map((key) => {
|
|
298
|
+
return object[key];
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
return null;
|
|
302
|
+
}
|
|
303
|
+
async buildObject(object, key) {
|
|
304
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
305
|
+
const currentObject = {
|
|
306
|
+
title: (object === null || object === void 0 ? void 0 : object.name) || key,
|
|
307
|
+
type: ((_a = object === null || object === void 0 ? void 0 : object.schema) === null || _a === void 0 ? void 0 : _a.type) || (object === null || object === void 0 ? void 0 : object.type),
|
|
308
|
+
};
|
|
309
|
+
(object === null || object === void 0 ? void 0 : object.required) ? currentObject.required = object === null || object === void 0 ? void 0 : object.required : null;
|
|
310
|
+
if (((_b = object === null || object === void 0 ? void 0 : object.schema) === null || _b === void 0 ? void 0 : _b.type) === 'object' && ((_c = object === null || object === void 0 ? void 0 : object.schema) === null || _c === void 0 ? void 0 : _c.properities)) {
|
|
311
|
+
currentObject.properties = await this.buildInnerObject(object, {});
|
|
312
|
+
}
|
|
313
|
+
if (((_d = object === null || object === void 0 ? void 0 : object.schema) === null || _d === void 0 ? void 0 : _d.type) === 'array' || (object === null || object === void 0 ? void 0 : object.type) === 'array') {
|
|
314
|
+
currentObject.items = await this.buildItems(((_e = object === null || object === void 0 ? void 0 : object.schema) === null || _e === void 0 ? void 0 : _e.items) || (object === null || object === void 0 ? void 0 : object.items));
|
|
315
|
+
const required = ((_g = (_f = object === null || object === void 0 ? void 0 : object.schema) === null || _f === void 0 ? void 0 : _f.items) === null || _g === void 0 ? void 0 : _g.required) || ((_h = object === null || object === void 0 ? void 0 : object.items) === null || _h === void 0 ? void 0 : _h.required);
|
|
316
|
+
required ? currentObject.items.required = required : null;
|
|
317
|
+
}
|
|
318
|
+
return currentObject;
|
|
319
|
+
}
|
|
320
|
+
async buildItems(items) {
|
|
321
|
+
if ((items === null || items === void 0 ? void 0 : items.type) === 'object' && (items === null || items === void 0 ? void 0 : items.properties)) {
|
|
322
|
+
return this.buildInnerObject(items, {});
|
|
323
|
+
}
|
|
324
|
+
return {
|
|
325
|
+
type: items === null || items === void 0 ? void 0 : items.type,
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
getStatusCodeObject(response) {
|
|
329
|
+
const keys = Object.keys(response);
|
|
330
|
+
let statusCode = keys.find(key => this.codeRegex.test(key));
|
|
331
|
+
statusCode = statusCode || keys[0];
|
|
332
|
+
return { data: response[statusCode], code: statusCode };
|
|
333
|
+
}
|
|
334
|
+
getReference(path, currentContext, index = 0) {
|
|
335
|
+
const currentKey = path[index];
|
|
336
|
+
currentContext = currentContext[currentKey];
|
|
337
|
+
if (path.length - 1 > index) {
|
|
338
|
+
return this.getReference(path, currentContext, index + 1);
|
|
339
|
+
}
|
|
340
|
+
return currentContext;
|
|
341
|
+
}
|
|
342
|
+
async buildInnerObject(object, currentObject, index = 0) {
|
|
343
|
+
var _a;
|
|
344
|
+
const properties = Object.keys((object === null || object === void 0 ? void 0 : object.properties) || object);
|
|
345
|
+
const currentProperty = properties[index];
|
|
346
|
+
currentObject[(object === null || object === void 0 ? void 0 : object.properties) ? currentProperty : object[currentProperty].name] = await this.buildObject(((_a = object === null || object === void 0 ? void 0 : object.properties) === null || _a === void 0 ? void 0 : _a[currentProperty]) || object[currentProperty], currentProperty);
|
|
347
|
+
if (index < properties.length - 1) {
|
|
348
|
+
return this.buildInnerObject(object, currentObject, index + 1);
|
|
349
|
+
}
|
|
350
|
+
return currentObject;
|
|
351
|
+
}
|
|
352
|
+
existReferences(object, found = [], index = 0) {
|
|
353
|
+
const keys = (object === null || object === void 0 ? void 0 : object.items) ? Object.keys(object.items) : Object.keys(object);
|
|
354
|
+
if (keys.length === 0) {
|
|
355
|
+
return found;
|
|
356
|
+
}
|
|
357
|
+
const currentKey = keys[index];
|
|
358
|
+
const currentObject = object[currentKey] || object.items[currentKey];
|
|
359
|
+
if (currentKey === '$ref' &&
|
|
360
|
+
!this.referenceMapped.includes(currentObject) &&
|
|
361
|
+
!found.includes(currentObject)) {
|
|
362
|
+
found.push(currentObject);
|
|
363
|
+
}
|
|
364
|
+
if ((currentObject === null || currentObject === void 0 ? void 0 : currentObject.type) === 'object' || (currentObject === null || currentObject === void 0 ? void 0 : currentObject.type) === 'array') {
|
|
365
|
+
found = this.existReferences(currentObject.properties || currentObject.items || currentObject.additionalProperties, found);
|
|
366
|
+
}
|
|
367
|
+
if (!currentObject.type && currentObject.$ref) {
|
|
368
|
+
found = this.existReferences(currentObject, found);
|
|
369
|
+
}
|
|
370
|
+
if (keys.length - 1 > index) {
|
|
371
|
+
return this.existReferences(object, found, index + 1);
|
|
372
|
+
}
|
|
373
|
+
return found;
|
|
374
|
+
}
|
|
375
|
+
async createAssets(securitySchemes, assetFolder, index = 0) {
|
|
376
|
+
const keys = Object.keys(securitySchemes);
|
|
377
|
+
let currentKey = keys[index];
|
|
378
|
+
const currentScheme = securitySchemes[currentKey];
|
|
379
|
+
const schemaType = securitySchemes[currentKey].type;
|
|
380
|
+
switch (schemaType) {
|
|
381
|
+
case 'http':
|
|
382
|
+
currentKey = securitySchemes[currentKey].scheme === 'basic' ?
|
|
383
|
+
connector_1.SecuritySchemeEnum.basicAuth : connector_1.SecuritySchemeEnum.bearerAuth;
|
|
384
|
+
break;
|
|
385
|
+
case 'oauth2':
|
|
386
|
+
currentKey = currentScheme.flows.clientCredentials ?
|
|
387
|
+
connector_1.SecuritySchemeEnum.oAuth2ClientCredentials :
|
|
388
|
+
connector_1.SecuritySchemeEnum.oAuth2Password;
|
|
389
|
+
break;
|
|
390
|
+
case 'apiKey':
|
|
391
|
+
currentKey = connector_1.SecuritySchemeEnum.ApiKeyAuth;
|
|
392
|
+
break;
|
|
393
|
+
}
|
|
394
|
+
await (0, fs_extra_1.copy)((0, node_path_1.join)(__dirname, '..', '..', '..', 'templates', 'assets', `${currentKey}.yaml`), (0, node_path_1.join)(assetFolder, `${currentKey}.yaml`), { recursive: true });
|
|
395
|
+
if (keys.length - 1 > index) {
|
|
396
|
+
return this.createAssets(securitySchemes, assetFolder, index + 1);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
async generateJsonSchema(data, io) {
|
|
400
|
+
var _a;
|
|
401
|
+
let jsonData = await this.getInnerData((data === null || data === void 0 ? void 0 : data.content) || data, 'application/json', 'content');
|
|
402
|
+
if (!jsonData) {
|
|
403
|
+
jsonData = await this.getInnerData((data === null || data === void 0 ? void 0 : data.content) || data, '*/*', 'content');
|
|
404
|
+
}
|
|
405
|
+
jsonData ? io.properties.json_body = {
|
|
406
|
+
title: 'Json Body',
|
|
407
|
+
type: jsonData === null || jsonData === void 0 ? void 0 : jsonData.type,
|
|
408
|
+
required: jsonData === null || jsonData === void 0 ? void 0 : jsonData.required,
|
|
409
|
+
} : null;
|
|
410
|
+
if (jsonData && !jsonData.$ref) {
|
|
411
|
+
((_a = io === null || io === void 0 ? void 0 : io.properties) === null || _a === void 0 ? void 0 : _a.json_body) ?
|
|
412
|
+
((jsonData === null || jsonData === void 0 ? void 0 : jsonData.type) === 'object' ?
|
|
413
|
+
io.properties.json_body.properties = await this.buildInnerObject(jsonData, {}) :
|
|
414
|
+
io.properties.json_body.items = await this.buildItems(jsonData.items)) : null;
|
|
415
|
+
}
|
|
416
|
+
return io;
|
|
417
|
+
}
|
|
418
|
+
async generateAttachmentSchema(data, io) {
|
|
419
|
+
const attachments = await this.getInnerData(data, 'multipart/form-data', 'content');
|
|
420
|
+
attachments ? io.properties.attachments = {
|
|
421
|
+
title: 'Attachments',
|
|
422
|
+
type: 'array',
|
|
423
|
+
items: {
|
|
424
|
+
contentDisposition: 'attachment',
|
|
425
|
+
type: 'object',
|
|
426
|
+
additionalProperties: false,
|
|
427
|
+
properties: await this.buildInnerObject(attachments, {}),
|
|
428
|
+
},
|
|
429
|
+
required: attachments === null || attachments === void 0 ? void 0 : attachments.required,
|
|
430
|
+
} : null;
|
|
431
|
+
return io;
|
|
432
|
+
}
|
|
433
|
+
getDataBody(data) {
|
|
434
|
+
const exclude = ['application/json', 'multipart/form-data'];
|
|
435
|
+
return this.getInnerData(data, exclude, 'content');
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
exports.OpenAPI = OpenAPI;
|
|
439
|
+
OpenAPI.description = 'Scaffold a new connector';
|
|
440
|
+
OpenAPI.flags = Object.assign(Object.assign({}, core_2.Base.flags), { directory: core_1.Flags.string({
|
|
441
|
+
char: 'd',
|
|
442
|
+
description: 'root directory for where to store connectors, the connector directory will be generated.',
|
|
443
|
+
default: './',
|
|
444
|
+
}), vendor: core_1.Flags.string({ description: 'Vendor (e.g. CrowdStrike)' }), product: core_1.Flags.string({ description: 'Product (e.g. Falcon)' }), keywords: core_1.Flags.string({ char: 'k', description: 'Please enter keyword (Comma-Separated)' }), description: core_1.Flags.string({ description: 'Description (e.g. CrowdStrike Host Query API)' }), logoPath: core_1.Flags.string({ description: 'URL or absolute path to logo file' }), author: core_1.Flags.string({ description: 'Connector Author' }), authorEmail: core_1.Flags.string({ description: 'Connector Author Email' }), homepage: core_1.Flags.string({ description: 'Connector Author Support URL' }), specs: core_1.Flags.string({
|
|
445
|
+
char: 'o',
|
|
446
|
+
description: 'root directory for where to store connectors, the connector directory will be generated.',
|
|
447
|
+
}), help: core_1.Flags.help({ char: 'h' }) });
|
|
448
|
+
//# sourceMappingURL=openapi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../../../src/commands/connector/create/openapi.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
@@ -28,4 +28,4 @@ class CreateSource extends core_2.Base {
|
|
|
28
28
|
exports.CreateSource = CreateSource;
|
|
29
29
|
CreateSource.description = 'Generates 11x source from 10x';
|
|
30
30
|
CreateSource.flags = Object.assign(Object.assign({}, core_2.Base.flags), { directory: core_1.Flags.string({ char: 'd', description: 'root directory of the repository.', default: './' }), help: core_1.Flags.help({ char: 'h' }) });
|
|
31
|
-
//# sourceMappingURL=
|
|
31
|
+
//# sourceMappingURL=source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../../../src/commands/connector/create/source.ts"],"names":[],"mappings":";;;AAAA,sCAAwC;AACxC,wCAAkC;AAClC,yCAAiC;AACjC,qCAAgC;AAChC,kDAAmD;AAEnD,qCAAqC;AACrC,MAAa,YAAa,SAAQ,WAAI;IASpC,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAE9C,IAAI,EAAC,SAAS,EAAC,GAAG,KAAK,CAAA;QACvB,SAAS,GAAG,IAAA,mBAAO,EAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAE/C,IAAI;YACF,MAAM,kBAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;SACjC;QAAC,WAAM;YACN,IAAI,CAAC,KAAK,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAA;SAC5C;QAED,SAAS,GAAG,IAAA,mBAAO,EAAC,SAAS,CAAC,CAAA;QAC9B,YAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAA;QAC3E,MAAM,SAAS,GAAG,IAAI,4BAAgB,EAAE,CAAA;QACxC,MAAM,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAA;QAChD,YAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IACxB,CAAC;;AA1BH,oCA2BC;AA1BQ,wBAAW,GAAG,+BAA+B,CAAA;AAE7C,kBAAK,mCACP,WAAI,CAAC,KAAK,KACb,SAAS,EAAE,YAAK,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,mCAAmC,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,EACrG,IAAI,EAAE,YAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,GAAG,EAAC,CAAC,IAC9B"}
|
|
@@ -104,7 +104,7 @@ class Create extends core_2.Base {
|
|
|
104
104
|
iconImage: '../image/logo.png',
|
|
105
105
|
description: answers.description,
|
|
106
106
|
homepage: answers.homepage,
|
|
107
|
-
keywords: [answers.
|
|
107
|
+
keywords: [answers.keywords],
|
|
108
108
|
license: 'AGPL-3.0',
|
|
109
109
|
meta: {
|
|
110
110
|
imageRepository: `quay.io/swimlane-connectors/${name}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/connector/create.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/connector/create.ts"],"names":[],"mappings":"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"}
|
package/oclif.manifest.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"2.0.1-next.78+6d712c1","commands":{"action:add":{"id":"action:add","description":"Update a connector action.","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"directory":{"name":"directory","type":"option","char":"d","description":"Root directory of the repository.","multiple":false,"default":"./"},"template":{"name":"template","type":"option","char":"t","description":"action template to scaffold","multiple":false,"options":["node_18","python_310_definition","python_3.7_swimlane"],"default":"python_310_definition"},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"asset:add":{"id":"asset:add","description":"Update a connector action.","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"directory":{"name":"directory","type":"option","char":"d","description":"Root directory of the repository.","multiple":false,"default":"./"},"scheme":{"name":"scheme","type":"option","char":"s","description":"asset template to scaffold","multiple":false,"options":["custom","apikey","oauth2_client_credentials","http_basic","http_bearer"]},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"connector:build":{"id":"connector:build","description":"Builds a local docker image of the connector.","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"template":{"name":"template","type":"option","description":"connector language","required":true,"multiple":false,"options":["python_3.7_swimlane","node_18","python_310_definition"],"default":"python_310_definition"},"compile-override":{"name":"compile-override","type":"option","hidden":true,"multiple":false,"default":"Compile.Dockerfile"},"runner-override":{"name":"runner-override","type":"option","hidden":true,"multiple":false,"default":"Runner.Dockerfile"},"runtime-override":{"name":"runtime-override","type":"option","hidden":true,"multiple":false},"directory":{"name":"directory","type":"option","char":"d","description":"root directory of the repository.","multiple":false,"default":"./"},"save":{"name":"save","type":"boolean","description":"saves a signed docker image as tar in local directory.","allowNo":false,"relationships":[{"type":"all","flags":["signing-password","key-name"]},{"type":"some","flags":["registry"]}]},"squash":{"name":"squash","type":"boolean","description":"squashes the docker layers.","hidden":true,"allowNo":false},"force-rebuild":{"name":"force-rebuild","type":"boolean","char":"f","description":"forces nocache on the image build","allowNo":false},"platform":{"name":"platform","type":"option","hidden":true,"multiple":false,"default":"linux/amd64"},"signing-password":{"name":"signing-password","type":"option","description":"password used for the private key (ENV: TURBINE_SIGNING_PASSWORD)","multiple":false,"default":""},"key-name":{"name":"key-name","type":"option","description":"name used for the key (default: username)","multiple":false},"skip-upload":{"name":"skip-upload","type":"boolean","hidden":true,"allowNo":false},"registry":{"name":"registry","type":"option","description":"registry to use for signing","multiple":false,"default":"localhost:5000"},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"connector:create-source":{"id":"connector:create-source","description":"Generates 11x source from 10x","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"directory":{"name":"directory","type":"option","char":"d","description":"root directory of the repository.","multiple":false,"default":"./"},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"connector:create":{"id":"connector:create","description":"Scaffold a new connector","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"directory":{"name":"directory","type":"option","char":"d","description":"root directory for where to store connectors, the connector directory will be generated.","multiple":false,"default":"./"},"template":{"name":"template","type":"option","char":"t","description":"connector template to scaffold","multiple":false,"options":["node_18","python_310_definition","python_3.7_swimlane"],"default":"python_310_definition"},"skip-repo":{"name":"skip-repo","type":"boolean","description":"skips the repository creation process","allowNo":false},"clientId":{"name":"clientId","type":"option","char":"c","description":"client id of the authentication app","hidden":true,"multiple":false,"default":"0d418a5615c458b0b593"},"vendor":{"name":"vendor","type":"option","description":"Vendor (e.g. CrowdStrike)","multiple":false},"product":{"name":"product","type":"option","description":"Product (e.g. Falcon)","multiple":false},"keywords":{"name":"keywords","type":"option","description":"Enter keyword (Comma-Separated)","multiple":false},"description":{"name":"description","type":"option","description":"Description (e.g. CrowdStrike Host Query API)","multiple":false},"logoPath":{"name":"logoPath","type":"option","description":"URL or absolute path to logo file","multiple":false},"author":{"name":"author","type":"option","description":"Connector Author","multiple":false},"authorEmail":{"name":"authorEmail","type":"option","description":"Connector Author Email","multiple":false},"homepage":{"name":"homepage","type":"option","description":"Connector Author Support URL","multiple":false},"repo-base-template":{"name":"repo-base-template","type":"option","char":"t","description":"github base template override to create repo from.","hidden":true,"multiple":false,"default":"connector-python-definition-template"},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"connector:logo":{"id":"connector:logo","description":"Update a connector.","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"directory":{"name":"directory","type":"option","char":"d","description":"root directory of the connector folder.","multiple":false,"default":"."},"path":{"name":"path","type":"option","char":"p","description":"path or URL to product logo in PNG format.","required":true,"multiple":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"connector:save":{"id":"connector:save","description":"Save a docker image locally as .tar.gz","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"directory":{"name":"directory","type":"option","char":"d","description":"Root directory of the repo.","multiple":false,"default":"."},"output":{"name":"output","type":"option","char":"o","description":"output file to where to store the image.","required":true,"multiple":false},"image":{"name":"image","type":"option","char":"i","description":"image to save.","required":true,"multiple":false},"skip-pull":{"name":"skip-pull","type":"boolean","char":"s","description":"skips pulling the image","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"connector:sign":{"id":"connector:sign","description":"Builds a local docker image of the connector.","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"directory":{"name":"directory","type":"option","char":"d","description":"root directory of the repository.","multiple":false,"default":"./"},"image":{"name":"image","type":"option","description":"image name to sign","required":true,"multiple":false},"signing-password":{"name":"signing-password","type":"option","description":"password used for the private key","multiple":false,"default":""},"save":{"name":"save","type":"boolean","description":"saves docker image as tar in local directory.","allowNo":false},"key-name":{"name":"key-name","type":"option","description":"name used for the key (default: username)","required":true,"multiple":false},"skip-upload":{"name":"skip-upload","type":"boolean","hidden":true,"allowNo":false},"registry":{"name":"registry","type":"option","description":"registry to use for signing","multiple":false,"default":"localhost:5000"},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"connector:update":{"id":"connector:update","description":"Update a connector.","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"directory":{"name":"directory","type":"option","char":"d","description":"root directory of the connector folder.","multiple":false,"default":"."},"version":{"name":"version","type":"option","char":"v","description":"new version of the connector.","multiple":false},"manifest-path":{"name":"manifest-path","type":"option","char":"f","description":"connector manifest path relative to directory.","multiple":false,"default":"/connector/connector.yaml"},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"connector:validate":{"id":"connector:validate","description":"Use to validate an integration","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"image":{"name":"image","type":"option","char":"i","description":"image to use","multiple":false},"connector":{"name":"connector","type":"option","char":"c","description":"connector to validate (relative to directory)","required":true,"multiple":false,"default":"connector"},"signed":{"name":"signed","type":"boolean","description":"validates a signed connector","allowNo":false},"key":{"name":"key","type":"option","description":"public key for verification","multiple":false,"dependsOn":["signed"],"exclusive":["skip-verification"]},"skip-pull":{"name":"skip-pull","type":"boolean","char":"s","description":"skips pulling the image","allowNo":false},"directory":{"name":"directory","type":"option","char":"d","description":"current directory to mount","multiple":false,"default":"./"}},"args":[]},"action:generate:data":{"id":"action:generate:data","description":"Use to test a task in an integration","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"action":{"name":"action","type":"option","char":"a","description":"action to generate data","multiple":false},"asset":{"name":"asset","type":"option","description":"Filename for asset, defaults to the task name under the data folder. ie: data/asset_name.json","multiple":false},"inputs":{"name":"inputs","type":"option","description":"Filename for JSON inputs, defaults to the task name under the data folder. ie: data/my_task.json","multiple":false},"directory":{"name":"directory","type":"option","char":"d","description":"current directory to mount","multiple":false,"default":"./"},"include-optional":{"name":"include-optional","type":"boolean","description":"used to only generate required properties","allowNo":false},"force":{"name":"force","type":"boolean","description":"overwrites current files","allowNo":false}},"args":[]},"action:generate:input":{"id":"action:generate:input","description":"Update action input schema.","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"action":{"name":"action","type":"option","char":"a","description":"Action name to run","multiple":false},"directory":{"name":"directory","type":"option","char":"d","description":"Root directory of the repository.","multiple":false,"default":"./"},"amend":{"name":"amend","type":"boolean","description":"Merge with existing schema.","allowNo":false},"action-config-path":{"name":"action-config-path","type":"option","description":"Override path to action configuration file. Defaults to /connector/config/actions/<action>.yaml","multiple":false},"input-path":{"name":"input-path","type":"option","description":"Relative path to the output data JSON file, defaults to the task name under the data folder. ie: /data/<taskName>_output.json","multiple":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"action:generate:output":{"id":"action:generate:output","description":"Update a connector action.","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"action":{"name":"action","type":"option","char":"a","description":"Action name to run","multiple":false},"directory":{"name":"directory","type":"option","char":"d","description":"Root directory of the repository.","multiple":false,"default":"./"},"action-config-path":{"name":"action-config-path","type":"option","description":"Override path to action configuration file. Defaults to /connector/config/<action>.yaml","multiple":false},"amend":{"name":"amend","type":"boolean","description":"Merge with existing schema.","allowNo":false},"output-path":{"name":"output-path","type":"option","description":"Relative path to the output data JSON file, defaults to the task name under the data folder. ie: /data/<taskName>_output.json","multiple":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"action:run:image":{"id":"action:run:image","description":"Runs a connector action. (Defaults to current image version in local repository).","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","hidden":true,"aliases":[],"flags":{"action":{"name":"action","type":"option","char":"a","description":"Action name to run","required":true,"multiple":false},"directory":{"name":"directory","type":"option","char":"d","description":"Root directory of the repository.","multiple":false,"default":"./"},"input-path":{"name":"input-path","type":"option","description":"File to input data JSON file","required":true,"multiple":false},"output-path":{"name":"output-path","type":"option","description":"File to write the outputs to, defaults to /data/<action>_output.json","multiple":false},"error-path":{"name":"error-path","type":"option","description":"File to write the errors to, defaults to /data/<action>_error.json","multiple":false},"asset-path":{"name":"asset-path","type":"option","description":"File to asset data JSON file, defaults to /data/asset.json","multiple":false},"repository":{"name":"repository","type":"option","char":"r","description":"The connector image repository to run.","multiple":false},"version":{"name":"version","type":"option","description":"Use the latest release image from quay.","multiple":false,"default":"latest"},"stdin":{"name":"stdin","type":"boolean","description":"Send the inputs through stdin instead of an environment variable.","allowNo":false},"platform":{"name":"platform","type":"option","hidden":true,"multiple":false,"default":"linux/amd64"},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"action:run:local":{"id":"action:run:local","description":"Runs a connector action. (Defaults to current image version in local repository).","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"action":{"name":"action","type":"option","char":"a","description":"Action name to run","multiple":false},"directory":{"name":"directory","type":"option","char":"d","description":"Root directory of the repository.","multiple":false,"default":"./"},"input-path":{"name":"input-path","type":"option","description":"File to input data JSON file, defaults to /data/<action>.json","multiple":false},"output-path":{"name":"output-path","type":"option","description":"File to write the outputs to, defaults to /data/<action>_output.json","multiple":false},"error-path":{"name":"error-path","type":"option","description":"File to write the errors to, defaults to /data/<action>_error.json","multiple":false},"asset-path":{"name":"asset-path","type":"option","description":"File to asset data JSON file, defaults to /data/asset.json","multiple":false},"template":{"name":"template","type":"option","description":"connector template","multiple":false,"options":["python_3.7_swimlane","node_18","python_310_definition"],"default":"python_310_definition"},"compile-override":{"name":"compile-override","type":"option","hidden":true,"multiple":false,"default":"Compile.Dockerfile"},"runner-override":{"name":"runner-override","type":"option","hidden":true,"multiple":false,"default":"Runner.Dockerfile"},"runtime-override":{"name":"runtime-override","type":"option","hidden":true,"multiple":false},"force-rebuild":{"name":"force-rebuild","type":"boolean","char":"f","description":"forces nocache on the image build","allowNo":false},"platform":{"name":"platform","type":"option","hidden":true,"multiple":false,"default":"linux/amd64"},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]}}}
|
|
1
|
+
{"version":"2.0.1-next.89+b9344e1","commands":{"action:add":{"id":"action:add","description":"Update a connector action.","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"directory":{"name":"directory","type":"option","char":"d","description":"Root directory of the repository.","multiple":false,"default":"./"},"template":{"name":"template","type":"option","char":"t","description":"action template to scaffold","multiple":false,"options":["node_18","python_310_definition","python_3.7_swimlane"],"default":"python_310_definition"},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"asset:add":{"id":"asset:add","description":"Update a connector action.","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"directory":{"name":"directory","type":"option","char":"d","description":"Root directory of the repository.","multiple":false,"default":"./"},"scheme":{"name":"scheme","type":"option","char":"s","description":"asset template to scaffold","multiple":false,"options":["custom","apikey","oauth2_client_credentials","http_basic","http_bearer"]},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"connector:build":{"id":"connector:build","description":"Builds a local docker image of the connector.","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"template":{"name":"template","type":"option","description":"connector language","required":true,"multiple":false,"options":["python_3.7_swimlane","node_18","python_310_definition"],"default":"python_310_definition"},"compile-override":{"name":"compile-override","type":"option","hidden":true,"multiple":false,"default":"Compile.Dockerfile"},"runner-override":{"name":"runner-override","type":"option","hidden":true,"multiple":false,"default":"Runner.Dockerfile"},"runtime-override":{"name":"runtime-override","type":"option","hidden":true,"multiple":false},"directory":{"name":"directory","type":"option","char":"d","description":"root directory of the repository.","multiple":false,"default":"./"},"save":{"name":"save","type":"boolean","description":"saves a signed docker image as tar in local directory.","allowNo":false,"relationships":[{"type":"all","flags":["signing-password","key-name"]},{"type":"some","flags":["registry"]}]},"squash":{"name":"squash","type":"boolean","description":"squashes the docker layers.","hidden":true,"allowNo":false},"force-rebuild":{"name":"force-rebuild","type":"boolean","char":"f","description":"forces nocache on the image build","allowNo":false},"platform":{"name":"platform","type":"option","hidden":true,"multiple":false,"default":"linux/amd64"},"signing-password":{"name":"signing-password","type":"option","description":"password used for the private key (ENV: TURBINE_SIGNING_PASSWORD)","multiple":false,"default":""},"key-name":{"name":"key-name","type":"option","description":"name used for the key (default: username)","multiple":false},"skip-upload":{"name":"skip-upload","type":"boolean","hidden":true,"allowNo":false},"registry":{"name":"registry","type":"option","description":"registry to use for signing","multiple":false,"default":"localhost:5000"},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"connector:create":{"id":"connector:create","description":"Scaffold a new connector","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"directory":{"name":"directory","type":"option","char":"d","description":"root directory for where to store connectors, the connector directory will be generated.","multiple":false,"default":"./"},"template":{"name":"template","type":"option","char":"t","description":"connector template to scaffold","multiple":false,"options":["node_18","python_310_definition","python_3.7_swimlane"],"default":"python_310_definition"},"skip-repo":{"name":"skip-repo","type":"boolean","description":"skips the repository creation process","allowNo":false},"clientId":{"name":"clientId","type":"option","char":"c","description":"client id of the authentication app","hidden":true,"multiple":false,"default":"0d418a5615c458b0b593"},"vendor":{"name":"vendor","type":"option","description":"Vendor (e.g. CrowdStrike)","multiple":false},"product":{"name":"product","type":"option","description":"Product (e.g. Falcon)","multiple":false},"keywords":{"name":"keywords","type":"option","description":"Enter keyword (Comma-Separated)","multiple":false},"description":{"name":"description","type":"option","description":"Description (e.g. CrowdStrike Host Query API)","multiple":false},"logoPath":{"name":"logoPath","type":"option","description":"URL or absolute path to logo file","multiple":false},"author":{"name":"author","type":"option","description":"Connector Author","multiple":false},"authorEmail":{"name":"authorEmail","type":"option","description":"Connector Author Email","multiple":false},"homepage":{"name":"homepage","type":"option","description":"Connector Author Support URL","multiple":false},"repo-base-template":{"name":"repo-base-template","type":"option","char":"t","description":"github base template override to create repo from.","hidden":true,"multiple":false,"default":"connector-python-definition-template"},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"connector:logo":{"id":"connector:logo","description":"Update a connector.","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"directory":{"name":"directory","type":"option","char":"d","description":"root directory of the connector folder.","multiple":false,"default":"."},"path":{"name":"path","type":"option","char":"p","description":"path or URL to product logo in PNG format.","required":true,"multiple":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"connector:save":{"id":"connector:save","description":"Save a docker image locally as .tar.gz","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"directory":{"name":"directory","type":"option","char":"d","description":"Root directory of the repo.","multiple":false,"default":"."},"output":{"name":"output","type":"option","char":"o","description":"output file to where to store the image.","required":true,"multiple":false},"image":{"name":"image","type":"option","char":"i","description":"image to save.","required":true,"multiple":false},"skip-pull":{"name":"skip-pull","type":"boolean","char":"s","description":"skips pulling the image","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"connector:sign":{"id":"connector:sign","description":"Builds a local docker image of the connector.","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"directory":{"name":"directory","type":"option","char":"d","description":"root directory of the repository.","multiple":false,"default":"./"},"image":{"name":"image","type":"option","description":"image name to sign","required":true,"multiple":false},"signing-password":{"name":"signing-password","type":"option","description":"password used for the private key","multiple":false,"default":""},"save":{"name":"save","type":"boolean","description":"saves docker image as tar in local directory.","allowNo":false},"key-name":{"name":"key-name","type":"option","description":"name used for the key (default: username)","required":true,"multiple":false},"skip-upload":{"name":"skip-upload","type":"boolean","hidden":true,"allowNo":false},"registry":{"name":"registry","type":"option","description":"registry to use for signing","multiple":false,"default":"localhost:5000"},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"connector:update":{"id":"connector:update","description":"Update a connector.","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"directory":{"name":"directory","type":"option","char":"d","description":"root directory of the connector folder.","multiple":false,"default":"."},"version":{"name":"version","type":"option","char":"v","description":"new version of the connector.","multiple":false},"manifest-path":{"name":"manifest-path","type":"option","char":"f","description":"connector manifest path relative to directory.","multiple":false,"default":"/connector/connector.yaml"},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"connector:validate":{"id":"connector:validate","description":"Use to validate an integration","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"image":{"name":"image","type":"option","char":"i","description":"image to use","multiple":false},"connector":{"name":"connector","type":"option","char":"c","description":"connector to validate (relative to directory)","required":true,"multiple":false,"default":"connector"},"signed":{"name":"signed","type":"boolean","description":"validates a signed connector","allowNo":false},"key":{"name":"key","type":"option","description":"public key for verification","multiple":false,"dependsOn":["signed"],"exclusive":["skip-verification"]},"skip-pull":{"name":"skip-pull","type":"boolean","char":"s","description":"skips pulling the image","allowNo":false},"directory":{"name":"directory","type":"option","char":"d","description":"current directory to mount","multiple":false,"default":"./"}},"args":[]},"action:generate:data":{"id":"action:generate:data","description":"Use to test a task in an integration","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"action":{"name":"action","type":"option","char":"a","description":"action to generate data","multiple":false},"asset":{"name":"asset","type":"option","description":"Filename for asset, defaults to the task name under the data folder. ie: data/asset_name.json","multiple":false},"inputs":{"name":"inputs","type":"option","description":"Filename for JSON inputs, defaults to the task name under the data folder. ie: data/my_task.json","multiple":false},"directory":{"name":"directory","type":"option","char":"d","description":"current directory to mount","multiple":false,"default":"./"},"include-optional":{"name":"include-optional","type":"boolean","description":"used to only generate required properties","allowNo":false},"force":{"name":"force","type":"boolean","description":"overwrites current files","allowNo":false}},"args":[]},"action:generate:input":{"id":"action:generate:input","description":"Update action input schema.","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"action":{"name":"action","type":"option","char":"a","description":"Action name to run","multiple":false},"directory":{"name":"directory","type":"option","char":"d","description":"Root directory of the repository.","multiple":false,"default":"./"},"amend":{"name":"amend","type":"boolean","description":"Merge with existing schema.","allowNo":false},"action-config-path":{"name":"action-config-path","type":"option","description":"Override path to action configuration file. Defaults to /connector/config/actions/<action>.yaml","multiple":false},"input-path":{"name":"input-path","type":"option","description":"Relative path to the output data JSON file, defaults to the task name under the data folder. ie: /data/<taskName>_output.json","multiple":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"action:generate:output":{"id":"action:generate:output","description":"Update a connector action.","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"action":{"name":"action","type":"option","char":"a","description":"Action name to run","multiple":false},"directory":{"name":"directory","type":"option","char":"d","description":"Root directory of the repository.","multiple":false,"default":"./"},"action-config-path":{"name":"action-config-path","type":"option","description":"Override path to action configuration file. Defaults to /connector/config/<action>.yaml","multiple":false},"amend":{"name":"amend","type":"boolean","description":"Merge with existing schema.","allowNo":false},"output-path":{"name":"output-path","type":"option","description":"Relative path to the output data JSON file, defaults to the task name under the data folder. ie: /data/<taskName>_output.json","multiple":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"action:run:image":{"id":"action:run:image","description":"Runs a connector action. (Defaults to current image version in local repository).","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","hidden":true,"aliases":[],"flags":{"action":{"name":"action","type":"option","char":"a","description":"Action name to run","required":true,"multiple":false},"directory":{"name":"directory","type":"option","char":"d","description":"Root directory of the repository.","multiple":false,"default":"./"},"input-path":{"name":"input-path","type":"option","description":"File to input data JSON file","required":true,"multiple":false},"output-path":{"name":"output-path","type":"option","description":"File to write the outputs to, defaults to /data/<action>_output.json","multiple":false},"error-path":{"name":"error-path","type":"option","description":"File to write the errors to, defaults to /data/<action>_error.json","multiple":false},"asset-path":{"name":"asset-path","type":"option","description":"File to asset data JSON file, defaults to /data/asset.json","multiple":false},"repository":{"name":"repository","type":"option","char":"r","description":"The connector image repository to run.","multiple":false},"version":{"name":"version","type":"option","description":"Use the latest release image from quay.","multiple":false,"default":"latest"},"stdin":{"name":"stdin","type":"boolean","description":"Send the inputs through stdin instead of an environment variable.","allowNo":false},"platform":{"name":"platform","type":"option","hidden":true,"multiple":false,"default":"linux/amd64"},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"action:run:local":{"id":"action:run:local","description":"Runs a connector action. (Defaults to current image version in local repository).","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"action":{"name":"action","type":"option","char":"a","description":"Action name to run","multiple":false},"directory":{"name":"directory","type":"option","char":"d","description":"Root directory of the repository.","multiple":false,"default":"./"},"input-path":{"name":"input-path","type":"option","description":"File to input data JSON file, defaults to /data/<action>.json","multiple":false},"output-path":{"name":"output-path","type":"option","description":"File to write the outputs to, defaults to /data/<action>_output.json","multiple":false},"error-path":{"name":"error-path","type":"option","description":"File to write the errors to, defaults to /data/<action>_error.json","multiple":false},"asset-path":{"name":"asset-path","type":"option","description":"File to asset data JSON file, defaults to /data/asset.json","multiple":false},"template":{"name":"template","type":"option","description":"connector template","multiple":false,"options":["python_3.7_swimlane","node_18","python_310_definition"],"default":"python_310_definition"},"compile-override":{"name":"compile-override","type":"option","hidden":true,"multiple":false,"default":"Compile.Dockerfile"},"runner-override":{"name":"runner-override","type":"option","hidden":true,"multiple":false,"default":"Runner.Dockerfile"},"runtime-override":{"name":"runtime-override","type":"option","hidden":true,"multiple":false},"force-rebuild":{"name":"force-rebuild","type":"boolean","char":"f","description":"forces nocache on the image build","allowNo":false},"platform":{"name":"platform","type":"option","hidden":true,"multiple":false,"default":"linux/amd64"},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"connector:create:openapi":{"id":"connector:create:openapi","description":"Scaffold a new connector","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"directory":{"name":"directory","type":"option","char":"d","description":"root directory for where to store connectors, the connector directory will be generated.","multiple":false,"default":"./"},"vendor":{"name":"vendor","type":"option","description":"Vendor (e.g. CrowdStrike)","multiple":false},"product":{"name":"product","type":"option","description":"Product (e.g. Falcon)","multiple":false},"keywords":{"name":"keywords","type":"option","char":"k","description":"Please enter keyword (Comma-Separated)","multiple":false},"description":{"name":"description","type":"option","description":"Description (e.g. CrowdStrike Host Query API)","multiple":false},"logoPath":{"name":"logoPath","type":"option","description":"URL or absolute path to logo file","multiple":false},"author":{"name":"author","type":"option","description":"Connector Author","multiple":false},"authorEmail":{"name":"authorEmail","type":"option","description":"Connector Author Email","multiple":false},"homepage":{"name":"homepage","type":"option","description":"Connector Author Support URL","multiple":false},"specs":{"name":"specs","type":"option","char":"o","description":"root directory for where to store connectors, the connector directory will be generated.","multiple":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"connector:create:source":{"id":"connector:create:source","description":"Generates 11x source from 10x","strict":true,"pluginName":"@sw-tsdk/plugin-connector","pluginAlias":"@sw-tsdk/plugin-connector","pluginType":"core","aliases":[],"flags":{"directory":{"name":"directory","type":"option","char":"d","description":"root directory of the repository.","multiple":false,"default":"./"},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]}}}
|
package/package.json
CHANGED
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
"url": "https://github.com/swimlane/turbine-sdk/issues"
|
|
5
5
|
},
|
|
6
6
|
"dependencies": {
|
|
7
|
+
"@apidevtools/json-schema-ref-parser": "9.0.9",
|
|
7
8
|
"@oclif/core": "1.16.4",
|
|
8
|
-
"@sw-tsdk/common": "^2.0.1-next.
|
|
9
|
-
"@sw-tsdk/connector": "^2.0.1-next.
|
|
10
|
-
"@sw-tsdk/core": "^2.0.1-next.
|
|
11
|
-
"@sw-tsdk/docker": "^2.0.1-next.
|
|
9
|
+
"@sw-tsdk/common": "^2.0.1-next.89+b9344e1",
|
|
10
|
+
"@sw-tsdk/connector": "^2.0.1-next.89+b9344e1",
|
|
11
|
+
"@sw-tsdk/core": "^2.0.1-next.89+b9344e1",
|
|
12
|
+
"@sw-tsdk/docker": "^2.0.1-next.89+b9344e1",
|
|
12
13
|
"@swimlane/connector-interfaces": "1.8.5-rc5",
|
|
13
14
|
"@swimlane/cosign": "1.3.1",
|
|
14
15
|
"@swimlane/docker-reference": "2.0.0",
|
|
@@ -88,6 +89,6 @@
|
|
|
88
89
|
"posttest": "yarn lint",
|
|
89
90
|
"dev:setup": "npm link"
|
|
90
91
|
},
|
|
91
|
-
"version": "2.0.1-next.
|
|
92
|
-
"gitHead": "
|
|
92
|
+
"version": "2.0.1-next.89+b9344e1",
|
|
93
|
+
"gitHead": "b9344e1175637c33364e83d037e0bab76e4373c8"
|
|
93
94
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-source.js","sourceRoot":"","sources":["../../../src/commands/connector/create-source.ts"],"names":[],"mappings":";;;AAAA,sCAAwC;AACxC,wCAAkC;AAClC,yCAAiC;AACjC,qCAAgC;AAChC,kDAAmD;AAEnD,qCAAqC;AACrC,MAAa,YAAa,SAAQ,WAAI;IASpC,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAE9C,IAAI,EAAC,SAAS,EAAC,GAAG,KAAK,CAAA;QACvB,SAAS,GAAG,IAAA,mBAAO,EAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAE/C,IAAI;YACF,MAAM,kBAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;SACjC;QAAC,WAAM;YACN,IAAI,CAAC,KAAK,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAA;SAC5C;QAED,SAAS,GAAG,IAAA,mBAAO,EAAC,SAAS,CAAC,CAAA;QAC9B,YAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAA;QAC3E,MAAM,SAAS,GAAG,IAAI,4BAAgB,EAAE,CAAA;QACxC,MAAM,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAA;QAChD,YAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IACxB,CAAC;;AA1BH,oCA2BC;AA1BQ,wBAAW,GAAG,+BAA+B,CAAA;AAE7C,kBAAK,mCACP,WAAI,CAAC,KAAK,KACb,SAAS,EAAE,YAAK,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,mCAAmC,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,EACrG,IAAI,EAAE,YAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,GAAG,EAAC,CAAC,IAC9B"}
|