@sw-tsdk/plugin-connector 2.11.2-alpha.42 → 2.11.2-next.103

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 (40) hide show
  1. package/README.md +223 -33
  2. package/lib/commands/component/create.d.ts +34 -0
  3. package/lib/commands/component/create.js +168 -0
  4. package/lib/commands/component/create.js.map +1 -0
  5. package/lib/commands/component/logo.d.ts +12 -0
  6. package/lib/commands/component/logo.js +63 -0
  7. package/lib/commands/component/logo.js.map +1 -0
  8. package/lib/commands/component/ssp.d.ts +12 -0
  9. package/lib/commands/component/ssp.js +64 -0
  10. package/lib/commands/component/ssp.js.map +1 -0
  11. package/lib/commands/component/update.d.ts +13 -0
  12. package/lib/commands/component/update.js +68 -0
  13. package/lib/commands/component/update.js.map +1 -0
  14. package/lib/commands/connector/build.js +1 -1
  15. package/lib/commands/connector/build.js.map +1 -1
  16. package/lib/commands/connector/create/openapi.js +12 -4
  17. package/lib/commands/connector/create/openapi.js.map +1 -1
  18. package/lib/commands/connector/create.d.ts +1 -0
  19. package/lib/commands/connector/create.js +39 -9
  20. package/lib/commands/connector/create.js.map +1 -1
  21. package/lib/commands/connector/logo.js +10 -1
  22. package/lib/commands/connector/logo.js.map +1 -1
  23. package/lib/commands/description/action.d.ts +12 -0
  24. package/lib/commands/description/action.js +87 -0
  25. package/lib/commands/description/action.js.map +1 -0
  26. package/lib/commands/description/actions.d.ts +11 -0
  27. package/lib/commands/description/actions.js +81 -0
  28. package/lib/commands/description/actions.js.map +1 -0
  29. package/lib/commands/description/component.d.ts +15 -0
  30. package/lib/commands/description/component.js +130 -0
  31. package/lib/commands/description/component.js.map +1 -0
  32. package/lib/commands/description/connector.d.ts +11 -0
  33. package/lib/commands/description/connector.js +81 -0
  34. package/lib/commands/description/connector.js.map +1 -0
  35. package/lib/common.d.ts +5 -0
  36. package/lib/common.js +85 -10
  37. package/lib/common.js.map +1 -1
  38. package/lib/types/connector-types.d.ts +25 -0
  39. package/oclif.manifest.json +446 -1
  40. package/package.json +14 -8
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Action = void 0;
4
+ const core_1 = require("@oclif/core");
5
+ const node_path_1 = require("node:path");
6
+ const docker_1 = require("@sw-tsdk/docker");
7
+ const core_2 = require("@oclif/core");
8
+ const node_fs_1 = require("node:fs");
9
+ const core_3 = require("@sw-tsdk/core");
10
+ const common_1 = require("../../common");
11
+ // noinspection JSUnusedGlobalSymbols
12
+ class Action extends core_3.Base {
13
+ async run() {
14
+ const { flags } = await this.parse(Action);
15
+ const { 'skip-pull': skipPull, action, } = flags;
16
+ let { image } = flags;
17
+ let { directory } = flags;
18
+ directory = (0, node_path_1.resolve)(directory);
19
+ const typeOfContent = 'action';
20
+ if (!image) {
21
+ image = `${docker_1.DockerDefaults.SdkTurbineContentDescriptionImage}`;
22
+ }
23
+ try {
24
+ await node_fs_1.promises.access(directory);
25
+ }
26
+ catch {
27
+ this.error(`Could not access ${directory}`);
28
+ }
29
+ const docker = new docker_1.Docker();
30
+ core_2.ux.action.start('Checking for docker...');
31
+ await docker.ping();
32
+ core_2.ux.action.stop();
33
+ if (!skipPull) {
34
+ core_2.ux.action.start(`Pulling image (${image})...`);
35
+ await docker.pullImage(image);
36
+ core_2.ux.action.stop();
37
+ }
38
+ const actionToExecute = action || await (0, common_1.chooseAction)(directory);
39
+ const bindings = [`${directory}:/app/content`];
40
+ const commands = ['main.py'];
41
+ commands.push('-t', typeOfContent, '-a', actionToExecute);
42
+ const envVars = [
43
+ `OPENAI_API_KEY=${process.env.OPENAI_API_KEY}`,
44
+ `OPENAI_ORGANIZATION=${process.env.OPENAI_ORGANIZATION}`,
45
+ ];
46
+ const createOptions = {
47
+ Cmd: commands,
48
+ HostConfig: {
49
+ AutoRemove: false,
50
+ Binds: bindings,
51
+ },
52
+ Env: envVars,
53
+ };
54
+ core_2.ux.action.start('Generating Action Description...');
55
+ const outputStream = (0, core_3.writableNoopStream)();
56
+ const errorStream = (0, core_3.writableNoopStream)();
57
+ const success = await docker.runImage(image, createOptions, outputStream, errorStream);
58
+ core_2.ux.action.stop();
59
+ if (!success) {
60
+ core_2.Errors.exit(1);
61
+ }
62
+ }
63
+ }
64
+ exports.Action = Action;
65
+ Action.description = 'Use to generate action description';
66
+ Action.flags = {
67
+ ...core_3.Base.flags,
68
+ help: core_1.Flags.help({ char: 'h' }),
69
+ image: core_1.Flags.string({
70
+ char: 'i',
71
+ description: 'image to use',
72
+ }),
73
+ 'skip-pull': core_1.Flags.boolean({
74
+ char: 's',
75
+ description: 'skips pulling the image',
76
+ }),
77
+ directory: core_1.Flags.string({
78
+ char: 'd',
79
+ description: 'current directory to mount',
80
+ default: './',
81
+ }),
82
+ action: core_1.Flags.string({
83
+ char: 'a',
84
+ description: 'Generate description for specific action',
85
+ }),
86
+ };
87
+ //# sourceMappingURL=action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/commands/description/action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Base } from '@sw-tsdk/core';
2
+ export declare class Actions extends Base {
3
+ static description: string;
4
+ static flags: {
5
+ help: import("@oclif/core/lib/interfaces").BooleanFlag<void>;
6
+ image: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
7
+ 'skip-pull': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
8
+ directory: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
9
+ };
10
+ run(): Promise<void>;
11
+ }
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Actions = void 0;
4
+ const core_1 = require("@oclif/core");
5
+ const node_path_1 = require("node:path");
6
+ const docker_1 = require("@sw-tsdk/docker");
7
+ const core_2 = require("@oclif/core");
8
+ const node_fs_1 = require("node:fs");
9
+ const core_3 = require("@sw-tsdk/core");
10
+ // noinspection JSUnusedGlobalSymbols
11
+ class Actions extends core_3.Base {
12
+ async run() {
13
+ const { flags } = await this.parse(Actions);
14
+ const { 'skip-pull': skipPull, } = flags;
15
+ let { image } = flags;
16
+ let { directory } = flags;
17
+ directory = (0, node_path_1.resolve)(directory);
18
+ const typeOfContent = 'actions';
19
+ if (!image) {
20
+ image = `${docker_1.DockerDefaults.SdkTurbineContentDescriptionImage}`;
21
+ }
22
+ try {
23
+ await node_fs_1.promises.access(directory);
24
+ }
25
+ catch {
26
+ this.error(`Could not access ${directory}`);
27
+ }
28
+ const docker = new docker_1.Docker();
29
+ core_2.ux.action.start('Checking for docker...');
30
+ await docker.ping();
31
+ core_2.ux.action.stop();
32
+ if (!skipPull) {
33
+ core_2.ux.action.start(`Pulling image (${image})...`);
34
+ await docker.pullImage(image);
35
+ core_2.ux.action.stop();
36
+ }
37
+ const bindings = [`${directory}:/app/content`];
38
+ const commands = ['main.py'];
39
+ commands.push('-t', typeOfContent);
40
+ const envVars = [
41
+ `OPENAI_API_KEY=${process.env.OPENAI_API_KEY}`,
42
+ `OPENAI_ORGANIZATION=${process.env.OPENAI_ORGANIZATION}`,
43
+ ];
44
+ const createOptions = {
45
+ Cmd: commands,
46
+ HostConfig: {
47
+ AutoRemove: false,
48
+ Binds: bindings,
49
+ },
50
+ Env: envVars,
51
+ };
52
+ core_2.ux.action.start('Generating Actions Description...');
53
+ const outputStream = (0, core_3.writableNoopStream)();
54
+ const errorStream = (0, core_3.writableNoopStream)();
55
+ const success = await docker.runImage(image, createOptions, outputStream, errorStream);
56
+ core_2.ux.action.stop();
57
+ if (!success) {
58
+ core_2.Errors.exit(1);
59
+ }
60
+ }
61
+ }
62
+ exports.Actions = Actions;
63
+ Actions.description = 'Use to generate description for all actions';
64
+ Actions.flags = {
65
+ ...core_3.Base.flags,
66
+ help: core_1.Flags.help({ char: 'h' }),
67
+ image: core_1.Flags.string({
68
+ char: 'i',
69
+ description: 'image to use',
70
+ }),
71
+ 'skip-pull': core_1.Flags.boolean({
72
+ char: 's',
73
+ description: 'skips pulling the image',
74
+ }),
75
+ directory: core_1.Flags.string({
76
+ char: 'd',
77
+ description: 'current directory to mount',
78
+ default: './',
79
+ }),
80
+ };
81
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/commands/description/actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { Base } from '@sw-tsdk/core';
2
+ export declare class Component extends Base {
3
+ static description: string;
4
+ static flags: {
5
+ help: import("@oclif/core/lib/interfaces").BooleanFlag<void>;
6
+ image: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
7
+ 'skip-pull': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
8
+ directory: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
9
+ componentName: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
10
+ componentType: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
11
+ componentVariety: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
12
+ connectorLocalPath: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
13
+ };
14
+ run(): Promise<void>;
15
+ }
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Component = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@oclif/core");
6
+ const docker_1 = require("@sw-tsdk/docker");
7
+ const core_2 = require("@oclif/core");
8
+ const node_fs_1 = require("node:fs");
9
+ const core_3 = require("@sw-tsdk/core");
10
+ const common_1 = require("../../common");
11
+ const common_2 = require("../../common");
12
+ const inquirer_1 = tslib_1.__importDefault(require("inquirer"));
13
+ const node_path_1 = require("node:path");
14
+ const node_path_2 = tslib_1.__importDefault(require("node:path"));
15
+ // noinspection JSUnusedGlobalSymbols
16
+ class Component extends core_3.Base {
17
+ async run() {
18
+ const { flags } = await this.parse(Component);
19
+ const { 'skip-pull': skipPull, } = flags;
20
+ let { image } = flags;
21
+ let { directory } = flags;
22
+ directory = (0, node_path_1.resolve)(directory);
23
+ const typeOfContent = 'component';
24
+ if (!image) {
25
+ image = `${docker_1.DockerDefaults.SdkTurbineContentDescriptionImage}`;
26
+ }
27
+ try {
28
+ await node_fs_1.promises.access(directory);
29
+ }
30
+ catch {
31
+ this.error(`Could not access ${directory}`);
32
+ }
33
+ const masterQuestions = [{
34
+ type: 'input',
35
+ name: 'connectorLocalPath',
36
+ message: 'Relevant Connector Local Path',
37
+ },
38
+ {
39
+ type: 'list',
40
+ name: 'componentType',
41
+ message: 'Use case type (e.g. ingestion)',
42
+ choices: common_1.contentUseCaseCategories,
43
+ }];
44
+ const componentVarietySelected = await (0, common_2.chooseComponentType)();
45
+ const componentNameSelected = await (0, common_2.chooseComponentName)(directory, componentVarietySelected);
46
+ const componentDirectory = (0, node_path_1.join)(directory, componentVarietySelected, componentNameSelected);
47
+ const manifestData = await (0, common_2.getManifestYamlFile)(componentDirectory);
48
+ const filteredQuestions = masterQuestions.filter(q => !flags[q.name]);
49
+ const answers = Object.assign(await inquirer_1.default.prompt(filteredQuestions), flags);
50
+ const descData = `${manifestData.title} ${answers.componentType}`;
51
+ const data = {
52
+ parent: componentNameSelected,
53
+ name: componentNameSelected,
54
+ type: answers.componentType,
55
+ componentVariety: componentVarietySelected,
56
+ data: descData,
57
+ title: manifestData.title,
58
+ };
59
+ const jsonString = JSON.stringify(data);
60
+ const docker = new docker_1.Docker();
61
+ core_2.ux.action.start('Checking for docker...');
62
+ await docker.ping();
63
+ core_2.ux.action.stop();
64
+ if (!skipPull) {
65
+ core_2.ux.action.start(`Pulling image (${image})...`);
66
+ await docker.pullImage(image);
67
+ core_2.ux.action.stop();
68
+ }
69
+ const connectorName = node_path_2.default.basename(answers.connectorLocalPath);
70
+ const bindings = [`${directory}:/app/content`, `${answers.connectorLocalPath}:/app/connector`];
71
+ const commands = ['main.py'];
72
+ commands.push('-t', typeOfContent, '-c', jsonString, '-cn', connectorName);
73
+ const envVars = [
74
+ `OPENAI_API_KEY=${process.env.OPENAI_API_KEY}`,
75
+ `OPENAI_ORGANIZATION=${process.env.OPENAI_ORGANIZATION}`,
76
+ ];
77
+ const createOptions = {
78
+ Cmd: commands,
79
+ HostConfig: {
80
+ AutoRemove: false,
81
+ Binds: bindings,
82
+ },
83
+ Env: envVars,
84
+ };
85
+ core_2.ux.action.start('Generating Component Description...');
86
+ const outputStream = (0, core_3.writableNoopStream)();
87
+ const errorStream = (0, core_3.writableNoopStream)();
88
+ const success = await docker.runImage(image, createOptions, outputStream, errorStream);
89
+ core_2.ux.action.stop();
90
+ if (!success) {
91
+ core_2.Errors.exit(1);
92
+ }
93
+ }
94
+ }
95
+ exports.Component = Component;
96
+ Component.description = 'Use to generate component descriptions';
97
+ Component.flags = {
98
+ ...core_3.Base.flags,
99
+ help: core_1.Flags.help({ char: 'h' }),
100
+ image: core_1.Flags.string({
101
+ char: 'i',
102
+ description: 'image to use',
103
+ }),
104
+ 'skip-pull': core_1.Flags.boolean({
105
+ char: 's',
106
+ description: 'skips pulling the image',
107
+ }),
108
+ directory: core_1.Flags.string({
109
+ char: 'd',
110
+ description: 'current directory to mount',
111
+ default: './',
112
+ }),
113
+ componentName: core_1.Flags.string({
114
+ char: 'c',
115
+ description: 'component name',
116
+ }),
117
+ componentType: core_1.Flags.string({
118
+ description: 'ingestion | enrichment | remediation',
119
+ }),
120
+ componentVariety: core_1.Flags.string({
121
+ char: 'v',
122
+ description: 'classic | canvas',
123
+ default: 'classic',
124
+ }),
125
+ connectorLocalPath: core_1.Flags.string({
126
+ char: 'p',
127
+ description: 'local path to connector',
128
+ }),
129
+ };
130
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/commands/description/component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Base } from '@sw-tsdk/core';
2
+ export declare class Connector extends Base {
3
+ static description: string;
4
+ static flags: {
5
+ help: import("@oclif/core/lib/interfaces").BooleanFlag<void>;
6
+ image: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
7
+ 'skip-pull': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
8
+ directory: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
9
+ };
10
+ run(): Promise<void>;
11
+ }
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Connector = void 0;
4
+ const core_1 = require("@oclif/core");
5
+ const node_path_1 = require("node:path");
6
+ const docker_1 = require("@sw-tsdk/docker");
7
+ const core_2 = require("@oclif/core");
8
+ const node_fs_1 = require("node:fs");
9
+ const core_3 = require("@sw-tsdk/core");
10
+ // noinspection JSUnusedGlobalSymbols
11
+ class Connector extends core_3.Base {
12
+ async run() {
13
+ const { flags } = await this.parse(Connector);
14
+ const { 'skip-pull': skipPull, } = flags;
15
+ let { image } = flags;
16
+ let { directory } = flags;
17
+ directory = (0, node_path_1.resolve)(directory);
18
+ const typeOfContent = 'connector';
19
+ if (!image) {
20
+ image = `${docker_1.DockerDefaults.SdkTurbineContentDescriptionImage}`;
21
+ }
22
+ try {
23
+ await node_fs_1.promises.access(directory);
24
+ }
25
+ catch {
26
+ this.error(`Could not access ${directory}`);
27
+ }
28
+ const docker = new docker_1.Docker();
29
+ core_2.ux.action.start('Checking for docker...');
30
+ await docker.ping();
31
+ core_2.ux.action.stop();
32
+ if (!skipPull) {
33
+ core_2.ux.action.start(`Pulling image (${image})...`);
34
+ await docker.pullImage(image);
35
+ core_2.ux.action.stop();
36
+ }
37
+ const bindings = [`${directory}:/app/content`];
38
+ const commands = ['main.py'];
39
+ commands.push('-t', typeOfContent);
40
+ const envVars = [
41
+ `OPENAI_API_KEY=${process.env.OPENAI_API_KEY}`,
42
+ `OPENAI_ORGANIZATION=${process.env.OPENAI_ORGANIZATION}`,
43
+ ];
44
+ const createOptions = {
45
+ Cmd: commands,
46
+ HostConfig: {
47
+ AutoRemove: false,
48
+ Binds: bindings,
49
+ },
50
+ Env: envVars,
51
+ };
52
+ core_2.ux.action.start('Generating Connector Description...');
53
+ const outputStream = (0, core_3.writableNoopStream)();
54
+ const errorStream = (0, core_3.writableNoopStream)();
55
+ const success = await docker.runImage(image, createOptions, outputStream, errorStream);
56
+ core_2.ux.action.stop();
57
+ if (!success) {
58
+ core_2.Errors.exit(1);
59
+ }
60
+ }
61
+ }
62
+ exports.Connector = Connector;
63
+ Connector.description = 'Use to generate connector descriptions';
64
+ Connector.flags = {
65
+ ...core_3.Base.flags,
66
+ help: core_1.Flags.help({ char: 'h' }),
67
+ image: core_1.Flags.string({
68
+ char: 'i',
69
+ description: 'image to use',
70
+ }),
71
+ 'skip-pull': core_1.Flags.boolean({
72
+ char: 's',
73
+ description: 'skips pulling the image',
74
+ }),
75
+ directory: core_1.Flags.string({
76
+ char: 'd',
77
+ description: 'current directory to mount',
78
+ default: './',
79
+ }),
80
+ };
81
+ //# sourceMappingURL=connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector.js","sourceRoot":"","sources":["../../../src/commands/description/connector.ts"],"names":[],"mappings":"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"}
package/lib/common.d.ts CHANGED
@@ -1,4 +1,9 @@
1
1
  export declare function chooseAction(directory: string): Promise<string>;
2
+ export declare function getManifestYamlFile(directoryPath: string): Promise<any>;
3
+ export declare function chooseComponentName(directory: string, componentType: string): Promise<string>;
4
+ export declare function chooseComponentType(): Promise<string>;
2
5
  export declare function chooseAsset(directory: string): Promise<string>;
3
6
  export declare const connectorCategories: string[];
7
+ export declare const contentCategories: string[];
8
+ export declare const contentUseCaseCategories: string[];
4
9
  export declare const connectorTemplates: string[];
package/lib/common.js CHANGED
@@ -1,10 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.connectorTemplates = exports.connectorCategories = exports.chooseAsset = exports.chooseAction = void 0;
3
+ exports.connectorTemplates = exports.contentUseCaseCategories = exports.contentCategories = exports.connectorCategories = exports.chooseAsset = exports.chooseComponentType = exports.chooseComponentName = exports.getManifestYamlFile = exports.chooseAction = void 0;
4
4
  const tslib_1 = require("tslib");
5
+ const connector_1 = require("@sw-tsdk/connector");
5
6
  const inquirer_1 = tslib_1.__importDefault(require("inquirer"));
6
7
  const inquirer_autocomplete_prompt_1 = tslib_1.__importDefault(require("inquirer-autocomplete-prompt"));
7
- const connector_1 = require("@sw-tsdk/connector");
8
+ const fs = tslib_1.__importStar(require("node:fs"));
9
+ const node_path_1 = tslib_1.__importDefault(require("node:path"));
10
+ const yaml = tslib_1.__importStar(require("js-yaml"));
8
11
  async function chooseAction(directory) {
9
12
  inquirer_1.default.registerPrompt('autocomplete', inquirer_autocomplete_prompt_1.default);
10
13
  const manifests = await (0, connector_1.allManifests)(directory);
@@ -24,6 +27,64 @@ async function chooseAction(directory) {
24
27
  return answers.name;
25
28
  }
26
29
  exports.chooseAction = chooseAction;
30
+ async function getManifestYamlFile(directoryPath) {
31
+ const filePath = `${directoryPath}/manifest.yml`;
32
+ const fileContents = await fs.promises.readFile(filePath, 'utf8');
33
+ const data = yaml.load(fileContents);
34
+ return data;
35
+ }
36
+ exports.getManifestYamlFile = getManifestYamlFile;
37
+ async function getFoldersInDirectory(directoryPath) {
38
+ try {
39
+ const filesAndFolders = await fs.promises.readdir(directoryPath);
40
+ // Filter out only directories
41
+ const folderPromises = filesAndFolders.map(async (item) => {
42
+ const fullPath = `${directoryPath}/${item}`;
43
+ const stats = await fs.promises.stat(fullPath);
44
+ if (stats.isDirectory()) {
45
+ return item;
46
+ }
47
+ return null;
48
+ });
49
+ const folders = await Promise.all(folderPromises);
50
+ return folders.filter(folder => folder !== null).sort();
51
+ }
52
+ catch (error) {
53
+ console.error('Error reading directory:', error);
54
+ return [];
55
+ }
56
+ }
57
+ async function chooseComponentName(directory, componentType) {
58
+ inquirer_1.default.registerPrompt('autocomplete', inquirer_autocomplete_prompt_1.default);
59
+ const componentFolders = await getFoldersInDirectory(node_path_1.default.join(directory, componentType));
60
+ if (componentFolders.length === 0) {
61
+ throw new Error('Could not find any Component.');
62
+ }
63
+ const answers = await inquirer_1.default.prompt([
64
+ {
65
+ type: 'autocomplete',
66
+ name: 'name',
67
+ message: 'Choose a Component',
68
+ source: (_, input) => componentFolders.filter((r) => !input || r.includes(input)),
69
+ },
70
+ ]);
71
+ return answers.name;
72
+ }
73
+ exports.chooseComponentName = chooseComponentName;
74
+ async function chooseComponentType() {
75
+ inquirer_1.default.registerPrompt('autocomplete', inquirer_autocomplete_prompt_1.default);
76
+ const ComponentTypes = exports.contentCategories;
77
+ const answers = await inquirer_1.default.prompt([
78
+ {
79
+ type: 'autocomplete',
80
+ name: 'name',
81
+ message: 'Choose a Component Type',
82
+ source: (_, input) => ComponentTypes.filter((r) => !input || r.includes(input)),
83
+ },
84
+ ]);
85
+ return answers.name;
86
+ }
87
+ exports.chooseComponentType = chooseComponentType;
27
88
  async function chooseAsset(directory) {
28
89
  inquirer_1.default.registerPrompt('autocomplete', inquirer_autocomplete_prompt_1.default);
29
90
  const manifests = await (0, connector_1.allManifests)(directory);
@@ -41,18 +102,32 @@ async function chooseAsset(directory) {
41
102
  }
42
103
  exports.chooseAsset = chooseAsset;
43
104
  exports.connectorCategories = [
44
- 'Investigation',
105
+ 'Authentication',
106
+ 'Case & Ticket Management',
107
+ 'Cloud Services & Security',
108
+ 'Communication & Collaboration',
109
+ 'Data Enrichment & Threat Intelligence',
110
+ 'DevOps & Application Security',
111
+ 'Email & Email Security',
45
112
  'Endpoint Security & Management',
46
- 'Network Security & Management',
47
- 'Communication',
48
- 'SIEM & Log Management',
113
+ 'Forensics & Malware Analysis',
49
114
  'Governance & Risk Management',
50
- 'Vulnerability & Patch Management',
51
- 'Ticket Management',
52
- 'DevOps & Application Security',
53
115
  'Identity & Access Management',
54
- 'Infrastructure',
116
+ 'Infrastructure & IT Services',
55
117
  'Miscellaneous',
118
+ 'Network Security & Management',
119
+ 'SIEM & Log Management',
120
+ 'Swimlane Utilities',
121
+ 'Vulnerability & Patch Management',
122
+ ];
123
+ exports.contentCategories = [
124
+ 'classic',
125
+ 'canvas',
126
+ ];
127
+ exports.contentUseCaseCategories = [
128
+ 'ingestion',
129
+ 'remidiation',
130
+ 'enrichment',
56
131
  ];
57
132
  exports.connectorTemplates = [
58
133
  'python_311_definition',
package/lib/common.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":";;;;AAAA,gEAA+B;AAC/B,wGAA6D;AAC7D,kDAA+C;AAGxC,KAAK,UAAU,YAAY,CAAC,SAAiB;IAClD,kBAAQ,CAAC,cAAc,CAAC,cAAc,EAAE,sCAAkB,CAAC,CAAA;IAC3D,MAAM,SAAS,GAAG,MAAM,IAAA,wBAAY,EAAC,SAAS,CAAC,CAAA;IAC/C,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe;SACxC,IAAI,CAAC,CAAC,CAA0B,EAAE,CAA0B,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAE3F,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;KAC/C;IAED,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;QACpC;YACE,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,eAAe;YACxB,MAAM,EAAE,CAAC,CAAU,EAAE,KAAa,EAAE,EAAE,CACpC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAyB,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC,CAAC;SACzH;KACF,CAAC,CAAA;IAEF,OAAO,OAAO,CAAC,IAAI,CAAA;AACrB,CAAC;AArBD,oCAqBC;AAEM,KAAK,UAAU,WAAW,CAAC,SAAiB;IACjD,kBAAQ,CAAC,cAAc,CAAC,cAAc,EAAE,sCAAkB,CAAC,CAAA;IAC3D,MAAM,SAAS,GAAG,MAAM,IAAA,wBAAY,EAAC,SAAS,CAAC,CAAA;IAC/C,MAAM,OAAO,GAAG,SAAS,CAAC,cAAc;SACvC,IAAI,CAAC,CAAC,CAAyB,EAAE,CAAyB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAEzF,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;QACpC;YACE,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,iBAAiB;YAC1B,MAAM,EAAE,CAAC,CAAU,EAAE,KAAa,EAAE,EAAE,CACpC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAwB,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAyB,EAAE,EAAE,CAAC,CAAC,CAAC;SACvH;KACF,CAAC,CAAA;IAEF,OAAO,OAAO,CAAC,IAAI,CAAA;AACrB,CAAC;AAjBD,kCAiBC;AAEY,QAAA,mBAAmB,GAAG;IACjC,eAAe;IACf,gCAAgC;IAChC,+BAA+B;IAC/B,eAAe;IACf,uBAAuB;IACvB,8BAA8B;IAC9B,kCAAkC;IAClC,mBAAmB;IACnB,+BAA+B;IAC/B,8BAA8B;IAC9B,gBAAgB;IAChB,eAAe;CAChB,CAAA;AAEY,QAAA,kBAAkB,GAAG;IAChC,uBAAuB;IACvB,uBAAuB;IACvB,SAAS;IACT,SAAS;IACT,oBAAoB;CACrB,CAAA"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,31 @@ export type ConnectorQuestions = {
14
14
  author: string;
15
15
  authorEmail: string;
16
16
  homepage: string;
17
+ aspirationalConnector: string;
18
+ };
19
+ export type ComponentQuestions = {
20
+ componentType: string;
21
+ vendor: string;
22
+ componentName: string;
23
+ description: string;
24
+ logoPath?: string;
25
+ sspPath?: string;
26
+ author: string;
27
+ authorEmail: string;
28
+ homepage: string;
29
+ keywords: string;
30
+ };
31
+ export type ComponentLogoInfo = {
32
+ componentType: string;
33
+ logoPath: string;
34
+ };
35
+ export type ComponentDescriptionInfo = {
36
+ connectorLocalPath: string;
37
+ componentType: string;
38
+ };
39
+ export type ComponentSSPInfo = {
40
+ componentType: string;
41
+ sspPath: string;
17
42
  };
18
43
  export type ActionQuestions = {
19
44
  title: string;