@sw-tsdk/connector 0.1.1-next.23

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 (47) hide show
  1. package/LICENSE +8 -0
  2. package/lib/build.d.ts +4 -0
  3. package/lib/build.js +252 -0
  4. package/lib/build.js.map +1 -0
  5. package/lib/common.d.ts +11 -0
  6. package/lib/common.js +180 -0
  7. package/lib/common.js.map +1 -0
  8. package/lib/converter.d.ts +45 -0
  9. package/lib/converter.js +402 -0
  10. package/lib/converter.js.map +1 -0
  11. package/lib/defaults.d.ts +4 -0
  12. package/lib/defaults.js +45 -0
  13. package/lib/defaults.js.map +1 -0
  14. package/lib/guards.d.ts +0 -0
  15. package/lib/guards.js +2 -0
  16. package/lib/guards.js.map +1 -0
  17. package/lib/index.d.ts +7 -0
  18. package/lib/index.js +11 -0
  19. package/lib/index.js.map +1 -0
  20. package/lib/json-schema-generator.d.ts +11 -0
  21. package/lib/json-schema-generator.js +197 -0
  22. package/lib/json-schema-generator.js.map +1 -0
  23. package/lib/logo.d.ts +1 -0
  24. package/lib/logo.js +17 -0
  25. package/lib/logo.js.map +1 -0
  26. package/lib/templates/node_18/Dockerfile +36 -0
  27. package/lib/templates/python_3.7_swimlane/Dockerfile +23 -0
  28. package/lib/templates/python_310_definition/Dockerfile +23 -0
  29. package/lib/types/common-types.d.ts +9 -0
  30. package/lib/types/common-types.js +3 -0
  31. package/lib/types/common-types.js.map +1 -0
  32. package/lib/types/connector-build-options.d.ts +10 -0
  33. package/lib/types/connector-build-options.js +3 -0
  34. package/lib/types/connector-build-options.js.map +1 -0
  35. package/lib/types/connector-build-results.d.ts +5 -0
  36. package/lib/types/connector-build-results.js +3 -0
  37. package/lib/types/connector-build-results.js.map +1 -0
  38. package/lib/types/connector-doc-types.d.ts +8 -0
  39. package/lib/types/connector-doc-types.js +3 -0
  40. package/lib/types/connector-doc-types.js.map +1 -0
  41. package/lib/types/conversion-results.d.ts +4 -0
  42. package/lib/types/conversion-results.js +3 -0
  43. package/lib/types/conversion-results.js.map +1 -0
  44. package/lib/types/index.d.ts +5 -0
  45. package/lib/types/index.js +9 -0
  46. package/lib/types/index.js.map +1 -0
  47. package/package.json +68 -0
package/LICENSE ADDED
@@ -0,0 +1,8 @@
1
+ The ISC License (ISC)
2
+
3
+ Copyright © SWIMLANE 2021
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
6
+
7
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
8
+ {"mode":"full","isActive":false}
package/lib/build.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import { ConnectorBuildOptions, ConnectorBuildResults } from './types';
2
+ export declare class BuildConnector {
3
+ build(options: ConnectorBuildOptions): Promise<ConnectorBuildResults>;
4
+ }
package/lib/build.js ADDED
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BuildConnector = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const connector_interfaces_1 = require("@swimlane/connector-interfaces");
6
+ const cf = tslib_1.__importStar(require("./common"));
7
+ const node_fs_1 = require("node:fs");
8
+ const node_path_1 = tslib_1.__importStar(require("node:path"));
9
+ const fs_extra_1 = require("fs-extra");
10
+ const core_1 = require("@oclif/core");
11
+ const handlebars_1 = require("handlebars");
12
+ const core_2 = require("@sw-tsdk/core");
13
+ const docker_1 = require("@sw-tsdk/docker");
14
+ const folder_hash_1 = require("folder-hash");
15
+ const fast_glob_1 = tslib_1.__importDefault(require("fast-glob"));
16
+ // Need to add embedding readme images.
17
+ // noinspection JSUnusedGlobalSymbols
18
+ class BuildConnector {
19
+ async build(options) {
20
+ const { directory, template: connectorTemplate, runnerOverride, compileOverride, runtimeOverride, nocache, platform, squash, } = options;
21
+ // path vars
22
+ const connectorDirectory = (0, node_path_1.join)(directory, 'connector');
23
+ // connector data
24
+ const readme = await (0, core_2.fileExists)((0, node_path_1.join)(directory, 'docs', 'README.md')) ? await node_fs_1.promises.readFile((0, node_path_1.join)(directory, 'docs', 'README.md'), 'utf8') : '';
25
+ const iconImage = await node_fs_1.promises.readFile((0, node_path_1.join)(connectorDirectory, '../image/logo.png'));
26
+ core_1.CliUx.ux.action.start('Loading manifests');
27
+ const manifests = await cf.allManifests(directory);
28
+ // separate asset and actions schemas
29
+ const connector = manifests.find(m => cf.isConnectorManifest(m));
30
+ const actions = manifests.filter(m => cf.isConnectorActionManifest(m));
31
+ const assets = manifests.filter(m => cf.isConnectorAssetManifest(m));
32
+ const sensors = manifests.filter(m => cf.isSensorManifest(m));
33
+ // load docs
34
+ const docFiles = await (0, fast_glob_1.default)((0, node_path_1.join)(directory, 'docs', '**/*.md'));
35
+ const docs = (docFiles)
36
+ .map(async (filePath) => {
37
+ const embedImageDoc = await embedImages(directory, filePath);
38
+ return embedImageDoc;
39
+ });
40
+ const docsEmbeded = await Promise.all(docs);
41
+ // hashes
42
+ const docHash = await (0, folder_hash_1.hashElement)(directory, {
43
+ folders: {
44
+ include: ['docImages', 'docs', 'image'],
45
+ },
46
+ files: {
47
+ include: ['*.md', '*.png', '*.jpg'],
48
+ },
49
+ encoding: 'hex',
50
+ algo: 'sha256',
51
+ });
52
+ const manifestHash = await (0, folder_hash_1.hashElement)((0, node_path_1.join)(directory, 'connector'), {
53
+ files: {
54
+ include: ['*.yaml'],
55
+ },
56
+ encoding: 'hex',
57
+ algo: 'sha256',
58
+ });
59
+ const codeHash = await (0, folder_hash_1.hashElement)((0, node_path_1.join)(directory, 'connector'), {
60
+ folders: {
61
+ exclude: ['config'],
62
+ },
63
+ files: {
64
+ include: ['*.py', 'requirements.txt'],
65
+ },
66
+ encoding: 'hex',
67
+ algo: 'sha256',
68
+ });
69
+ core_1.CliUx.ux.action.stop();
70
+ core_1.CliUx.ux.action.start('Adding labels');
71
+ // Turbine sends single dict of asset and inputs.
72
+ // So we need to know what to pop and add to asset dict.
73
+ let keys = '';
74
+ let asset;
75
+ for (asset of assets) {
76
+ if ('inputs' in asset && asset.inputs.properties) {
77
+ keys = Object.keys(asset.inputs.properties).join(',') + keys;
78
+ // We also have to add the asset inputs to the action inputs for now.
79
+ let action;
80
+ for (action of actions) {
81
+ if (action.inputs.properties) {
82
+ Object.assign(action.inputs.properties, asset.inputs.properties);
83
+ }
84
+ else {
85
+ action.inputs.properties = asset.inputs.properties;
86
+ }
87
+ }
88
+ }
89
+ }
90
+ const connectorLabels = Object.assign(Object.assign(Object.assign(Object.assign({
91
+ // standard annotations (https://github.com/opencontainers/image-spec/blob/main/annotations.md)
92
+ 'org.opencontainers.image.title': connector.title, 'org.opencontainers.image.description': connector.description, 'org.opencontainers.image.version': connector.version, 'org.opencontainers.image.authors': connector.author, 'org.opencontainers.image.licenses': connector.license, 'org.opencontainers.image.url': connector.homepage, 'org.opencontainers.image.source': connector.repository, 'io.swimlane.connector.digest.documentation': `sha256:${docHash.hash}`, 'io.swimlane.connector.digest.manifests': `sha256:${manifestHash.hash}`, 'io.swimlane.connector.digest.code': `sha256:${codeHash.hash}`,
93
+ // swimlane annotations
94
+ [connector_interfaces_1.ConnectorContainerImageAnnotation.manifest]: cf.toBase64Yaml(connector), [connector_interfaces_1.ConnectorContainerImageAnnotation.iconImage]: iconImage.toString('base64'), [connector_interfaces_1.ConnectorContainerImageAnnotation.readme]: Buffer.from(readme).toString('base64') }, actions.reduce((lbls, manifest) => {
95
+ lbls[`${connector_interfaces_1.ConnectorContainerImageAnnotationPrefix.actionsManifest}${manifest.name.toLowerCase()}`] = cf.toBase64Yaml(manifest);
96
+ return lbls;
97
+ }, {})), assets.reduce((lbls, manifest) => {
98
+ lbls[`${connector_interfaces_1.ConnectorContainerImageAnnotationPrefix.assetsManifest}${manifest.name.toLowerCase()}`] = cf.toBase64Yaml(manifest);
99
+ return lbls;
100
+ }, {})), sensors.reduce((lbls, manifest) => {
101
+ lbls[`${connector_interfaces_1.ConnectorContainerImageAnnotationPrefix.sensorsManifest}${manifest.name.toLowerCase()}`] = cf.toBase64Yaml(manifest);
102
+ return lbls;
103
+ }, {})), docsEmbeded.reduce((lbls, doc) => {
104
+ lbls[`io.swimlane.connector.docs.${doc.filename.toLowerCase()}`] = doc.contents;
105
+ return lbls;
106
+ }, {}));
107
+ // Update marketplace attributes
108
+ Object.assign(connectorLabels, {
109
+ 'io.swimlane.connector.marketplace.search': connector.meta.search || true,
110
+ });
111
+ // TurbineHub doc data in /docs
112
+ const markdowns = (await node_fs_1.promises.readdir((0, node_path_1.join)(directory, 'docs'))).filter(m => m.endsWith('.md'));
113
+ const prefix = 'io.swimlane.connector.docs.';
114
+ for (const _file of markdowns) {
115
+ // eslint-disable-next-line no-await-in-loop
116
+ const fileData = await node_fs_1.promises.readFile((0, node_path_1.join)(directory, 'docs', _file));
117
+ const labelKey = `${prefix}${node_path_1.default.parse(_file).name.toLowerCase()}`;
118
+ Object.assign(connectorLabels, {
119
+ [labelKey]: Buffer.from(fileData).toString('base64'),
120
+ });
121
+ }
122
+ //
123
+ const dockerData = await (0, fs_extra_1.readFile)((0, node_path_1.join)((0, node_path_1.join)(__dirname, 'templates', connectorTemplate), 'Dockerfile'), 'utf-8');
124
+ const template = (0, handlebars_1.compile)(dockerData);
125
+ // eslint-disable-next-line guard-for-in
126
+ for (const key in connectorLabels) {
127
+ const item = connectorLabels[key];
128
+ if (typeof item === 'string') {
129
+ connectorLabels[key] = (item.match(/.{1,30000}/g) || []).join('\\ \n');
130
+ }
131
+ else {
132
+ connectorLabels[key] = item;
133
+ }
134
+ }
135
+ const result = template({ labels: connectorLabels });
136
+ await (0, fs_extra_1.writeFile)((0, node_path_1.join)(directory, 'Dockerfile'), result, 'utf-8');
137
+ const tag = connector.version;
138
+ const imageTag = `${connector.name}:${tag}`;
139
+ core_1.CliUx.ux.action.stop();
140
+ const docker = new docker_1.Docker();
141
+ const imageBuildOptions = {
142
+ context: directory,
143
+ dockerfile: 'Dockerfile',
144
+ nocache: nocache,
145
+ buildArgs: {
146
+ ASSET_KEYS: keys,
147
+ },
148
+ tag: imageTag,
149
+ archivePattern: docker_1.DEFAULT_ARCHIVE_PATTERN,
150
+ skipPatterns: docker_1.DEFAULT_SKIP_PATTERNS,
151
+ ignorePatterns: docker_1.DEFAULT_IGNORE_PATTERNS,
152
+ platform,
153
+ };
154
+ if (!runtimeOverride && await (0, core_2.fileExists)((0, node_path_1.join)(directory, compileOverride))) {
155
+ core_1.CliUx.ux.action.start('Building compile override image...');
156
+ const overrideTag = `compile_override:${connector.name}-${tag}`;
157
+ await docker.buildImage({
158
+ context: directory,
159
+ tag: overrideTag,
160
+ dockerfile: compileOverride,
161
+ nocache: nocache,
162
+ archivePattern: docker_1.DEFAULT_ARCHIVE_PATTERN,
163
+ skipPatterns: docker_1.DEFAULT_SKIP_PATTERNS,
164
+ ignorePatterns: docker_1.DEFAULT_IGNORE_PATTERNS,
165
+ platform,
166
+ squash,
167
+ });
168
+ if (imageBuildOptions.buildArgs) {
169
+ imageBuildOptions.buildArgs.BASE_COMPILE_IMAGE_NAME = overrideTag;
170
+ }
171
+ core_1.CliUx.ux.action.stop();
172
+ }
173
+ if (!runtimeOverride && await (0, core_2.fileExists)((0, node_path_1.join)(directory, runnerOverride))) {
174
+ core_1.CliUx.ux.action.start('Building runner override image...');
175
+ const overrideTag = `runner_override:${connector.name}-${tag}`;
176
+ await docker.buildImage({
177
+ context: directory,
178
+ tag: overrideTag,
179
+ dockerfile: runnerOverride,
180
+ nocache: nocache,
181
+ archivePattern: docker_1.DEFAULT_ARCHIVE_PATTERN,
182
+ skipPatterns: docker_1.DEFAULT_SKIP_PATTERNS,
183
+ ignorePatterns: docker_1.DEFAULT_IGNORE_PATTERNS,
184
+ platform,
185
+ squash,
186
+ });
187
+ if (imageBuildOptions.buildArgs) {
188
+ imageBuildOptions.buildArgs.RUNNER_IMAGE_NAME = overrideTag;
189
+ }
190
+ core_1.CliUx.ux.action.stop();
191
+ }
192
+ core_1.CliUx.ux.info(`Using language template ${connectorTemplate}`);
193
+ core_1.CliUx.ux.action.start(`Building ${imageTag} image...`);
194
+ if (runtimeOverride && imageBuildOptions.buildArgs) {
195
+ imageBuildOptions.buildArgs.RUNTIME_IMAGE = runtimeOverride;
196
+ imageBuildOptions.target = 'connector-image';
197
+ }
198
+ // build the final image
199
+ await docker.buildImage(imageBuildOptions);
200
+ core_1.CliUx.ux.action.stop();
201
+ return {
202
+ imageTag,
203
+ name: connector.name,
204
+ version: tag,
205
+ };
206
+ }
207
+ }
208
+ exports.BuildConnector = BuildConnector;
209
+ /**
210
+ * Converts image links in a markdown to html tags
211
+ * @param directory: connector directory
212
+ * @param filePath: path to file
213
+ */
214
+ async function embedImages(directory, filePath) {
215
+ let fileContents = await (0, fs_extra_1.readFile)(filePath, 'utf-8');
216
+ if (!node_path_1.default.isAbsolute(filePath)) {
217
+ filePath = (0, node_path_1.join)(directory, filePath);
218
+ }
219
+ const regEx = /!\[[^\]]*]\((?<relativeImageePath>.*?)(?="|\))(?<optionalpart>".*")?\)/g;
220
+ const imageLinkMatches = [...fileContents.matchAll(regEx)];
221
+ let imageLinkObjs = [];
222
+ for (const match of imageLinkMatches) {
223
+ if (match[0] && match[1]) {
224
+ let relativeImagePath = match[1];
225
+ // replace with directory path.
226
+ if (relativeImagePath.startsWith('./')) {
227
+ relativeImagePath = relativeImagePath.slice(2);
228
+ }
229
+ const imagePath = (0, node_path_1.join)(directory, relativeImagePath);
230
+ imageLinkObjs.push(embedImageLink(imagePath, match));
231
+ }
232
+ }
233
+ imageLinkObjs = await Promise.all(imageLinkObjs);
234
+ for (const object of imageLinkObjs) {
235
+ fileContents = fileContents.replace(object.relativeLink, object.htmlImgTag);
236
+ }
237
+ // base64 for labels
238
+ return { contents: Buffer.from(fileContents).toString('base64'), filename: node_path_1.default.parse(filePath).name };
239
+ }
240
+ // returns object with current relative path link and html link for markdown image.
241
+ async function embedImageLink(imagePath, match) {
242
+ if (!node_path_1.default.parse(imagePath).base.endsWith('.png')) {
243
+ throw new Error('Only PNG images are supported in connector documentation.');
244
+ }
245
+ const imageContents = await (0, fs_extra_1.readFile)(imagePath, 'base64');
246
+ const htmlImgTag = `<img class="doc-image" alt="" src="data:image/png;base64,${imageContents}"/>`;
247
+ return {
248
+ relativeLink: match[0],
249
+ htmlImgTag: htmlImgTag,
250
+ };
251
+ }
252
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { ConnectorAssetManifest, ConnectorManifest, SensorManifest } from '@swimlane/connector-interfaces';
2
+ import { Manifest } from './types';
3
+ export declare function toBase64Yaml(value: unknown): string;
4
+ export declare function isConnectorActionManifest(manifest: unknown): manifest is ConnectorManifest;
5
+ export declare function isConnectorManifest(manifest: unknown): manifest is ConnectorManifest;
6
+ export declare function isSensorManifest(manifest: unknown): manifest is SensorManifest;
7
+ export declare function isConnectorAssetManifest(manifest: unknown): manifest is ConnectorAssetManifest;
8
+ export declare function isManifest(manifest: unknown): manifest is Manifest;
9
+ export declare function allManifests(directory: string): Promise<any[]>;
10
+ export declare function titleCaseString(key: string): Promise<string>;
11
+ export declare function getOutputType(v: any): Promise<number | string>;
package/lib/common.js ADDED
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getOutputType = exports.titleCaseString = exports.allManifests = exports.isManifest = exports.isConnectorAssetManifest = exports.isSensorManifest = exports.isConnectorManifest = exports.isConnectorActionManifest = exports.toBase64Yaml = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const js_yaml_1 = tslib_1.__importDefault(require("js-yaml"));
6
+ const node_path_1 = require("node:path");
7
+ const fast_glob_1 = tslib_1.__importDefault(require("fast-glob"));
8
+ const fs_extra_1 = require("fs-extra");
9
+ const common_1 = require("@sw-tsdk/common");
10
+ const luxon_1 = require("luxon");
11
+ function toBase64Yaml(value) {
12
+ return Buffer.from(js_yaml_1.default.dump(value)).toString('base64');
13
+ }
14
+ exports.toBase64Yaml = toBase64Yaml;
15
+ function isConnectorActionManifest(manifest) {
16
+ return manifest.schema === 'action/1';
17
+ }
18
+ exports.isConnectorActionManifest = isConnectorActionManifest;
19
+ function isConnectorManifest(manifest) {
20
+ return manifest.schema === 'connector/1';
21
+ }
22
+ exports.isConnectorManifest = isConnectorManifest;
23
+ function isSensorManifest(manifest) {
24
+ return manifest.schema === 'sensor/1';
25
+ }
26
+ exports.isSensorManifest = isSensorManifest;
27
+ function isConnectorAssetManifest(manifest) {
28
+ return manifest.schema === 'asset/1';
29
+ }
30
+ exports.isConnectorAssetManifest = isConnectorAssetManifest;
31
+ function isManifest(manifest) {
32
+ return ['sensor/1', 'asset/1', 'connector/1', 'action/1'].includes(manifest.schema);
33
+ }
34
+ exports.isManifest = isManifest;
35
+ async function allManifests(directory) {
36
+ const globPath = [
37
+ (0, node_path_1.join)(directory, '**/*.yaml'),
38
+ (0, node_path_1.join)(directory, '**/*.yml'),
39
+ ];
40
+ const manifestFiles = await (0, fast_glob_1.default)(globPath);
41
+ const manifestLoads = manifestFiles
42
+ .map(async (file) => {
43
+ const content = await (0, fs_extra_1.readFile)(file, 'utf8');
44
+ return js_yaml_1.default.load(content);
45
+ });
46
+ return Promise.all(manifestLoads);
47
+ }
48
+ exports.allManifests = allManifests;
49
+ async function titleCaseString(key) {
50
+ const name = key
51
+ .replace(/([a-z])([A-Z])/g, function (allMatches, firstMatch, secondMatch) {
52
+ return firstMatch + ' ' + secondMatch;
53
+ })
54
+ .toLowerCase()
55
+ .replace(/([ -_]|^)(.)/g, function (allMatches, firstMatch, secondMatch) {
56
+ return (firstMatch ? ' ' : '') + secondMatch
57
+ .toUpperCase();
58
+ });
59
+ // Capitalizes common acronyms
60
+ const words = name.split(' ');
61
+ for (let i = 0; i < words.length; i += 1) {
62
+ if (common_1.capsWords.includes(words[i].toLowerCase())) {
63
+ words[i] = words[i].toUpperCase();
64
+ }
65
+ }
66
+ return words.join(' ');
67
+ }
68
+ exports.titleCaseString = titleCaseString;
69
+ // Needed for conversion to 10.9 output type.
70
+ async function getOutputType(v) {
71
+ // Check Array mappings
72
+ if (Array.isArray(v)) {
73
+ if (v.every((i) => (typeof i === 'string'))) {
74
+ return 5;
75
+ }
76
+ // Check if array of numbers
77
+ if (v.every((i) => (typeof i === 'number'))) {
78
+ return 19;
79
+ }
80
+ // Check if list of attachments
81
+ const neededKeys = ['filename', 'base64'];
82
+ if (v.every((i) => (typeof i === 'object') && (neededKeys.every(key => Object.keys(i).includes(key))))) {
83
+ return 18;
84
+ }
85
+ // JSON Array
86
+ if (v.every((i) => (typeof i === 'object'))) {
87
+ return 9;
88
+ }
89
+ }
90
+ // Check string mappings
91
+ if (typeof v === 'string') {
92
+ // Is ISO8601
93
+ const iso8601Regex = new RegExp(/^(-?(?:[1-9]\d*)?\d{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12]\d)T(2[0-3]|[01]\d):([0-5]\d):([0-5]\d)(.\d+)?((Z)|(UTC)|([+-](1[0-2]|0?[1-9]):00))$/);
94
+ if (iso8601Regex.test(v)) {
95
+ return 8;
96
+ }
97
+ const formats = [
98
+ 'dd/MM/y',
99
+ 'd/MM/y',
100
+ 'dd/M/y',
101
+ 'd/M/y',
102
+ 'dd/MM/yy',
103
+ 'd/MM/yy',
104
+ 'dd/M/yy',
105
+ 'd/M/yy',
106
+ 'MM/dd/y',
107
+ 'MM/d/y',
108
+ 'M/dd/y',
109
+ 'M/d/y',
110
+ 'MM/dd/yy',
111
+ 'MM/d/yy',
112
+ 'M/dd/yy',
113
+ 'M/d/yy',
114
+ 'dd-MM-y',
115
+ 'd-MM-y',
116
+ 'dd-M-y',
117
+ 'd-M-y',
118
+ 'dd-MM-yy',
119
+ 'd-MM-yy',
120
+ 'dd-M-yy',
121
+ 'd-M-yy',
122
+ 'MM-dd-y',
123
+ 'MM-d-y',
124
+ 'M-dd-y',
125
+ 'M-d-y',
126
+ 'MM-dd-yy',
127
+ 'MM-d-yy',
128
+ 'M-dd-yy',
129
+ 'M-d-yy',
130
+ ];
131
+ if (formats.some(f => luxon_1.DateTime.fromFormat(v, f).isValid)) {
132
+ return 12;
133
+ }
134
+ // Is email
135
+ const regex = new RegExp(/^(([^\s"(),.:;<>@[\\\]]+(\.[^\s"(),.:;<>@[\\\]]+)*)|(".+"))@((\[(?:\d{1,3}\.){3}\d{1,3}])|(([\da-z-]+\.)+[a-z]{2,}))$/i);
136
+ if (regex.test(v)) {
137
+ return 13;
138
+ }
139
+ // Is IP
140
+ if (/^(25[0-5]|2[0-4]\d|[01]?\d{1,2})\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})$/.test(v)) {
141
+ return 16;
142
+ }
143
+ // is URL
144
+ const urlRegex = new RegExp(/^(https?:\/\/)(((([\w\u007E-\uFFFF-]+\.)+[\w\u007E-\uFFFF-]{2,}))|((?:(?:\b|\.)(?:2(?:5[0-5]|[0-4]\d)|1?\d?\d)){4})|(\[?((([\dA-Fa-f]{1,4}:){7}[\dA-Fa-f]{1,4}|([\dA-Fa-f]{1,4}:){1,7}:|([\dA-Fa-f]{1,4}:){1,6}:[\dA-Fa-f]{1,4}|([\dA-Fa-f]{1,4}:){1,5}(:[\dA-Fa-f]{1,4}){1,2}|([\dA-Fa-f]{1,4}:){1,4}(:[\dA-Fa-f]{1,4}){1,3}|([\dA-Fa-f]{1,4}:){1,3}(:[\dA-Fa-f]{1,4}){1,4}|([\dA-Fa-f]{1,4}:){1,2}(:[\dA-Fa-f]{1,4}){1,5}|[\dA-Fa-f]{1,4}:((:[\dA-Fa-f]{1,4}){1,6})|:((:[\dA-Fa-f]{1,4}){1,7}|:)|fe80:(:[\dA-Fa-f]{0,4}){0,4}%[\dA-Za-z]+|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}\d){0,1}\d)\.){3}(25[0-5]|(2[0-4]|1{0,1}\d){0,1}\d)|([\dA-Fa-f]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}\d){0,1}\d)\.){3}(25[0-5]|(2[0-4]|1{0,1}\d){0,1}\d)))]?))(:\d{1,5})?\/?((?<=\/)([\w!%./?{|}~-]+)(?=\/))?\/?(([^"<>?]+))?(\?[^\s"<>]*)?$/);
145
+ if (urlRegex.test(v)) {
146
+ return 14;
147
+ }
148
+ // is JSON string
149
+ if (v.startsWith('{')) {
150
+ try {
151
+ JSON.parse(v);
152
+ return 9;
153
+ }
154
+ catch (_a) { }
155
+ }
156
+ // is text area
157
+ if (v.includes('\n')) {
158
+ return 2;
159
+ }
160
+ }
161
+ // Is number
162
+ if (typeof v === 'number') {
163
+ return 6;
164
+ }
165
+ // is boolean
166
+ if (typeof v === 'boolean') {
167
+ return 7;
168
+ }
169
+ // is string
170
+ if (typeof v === 'string') {
171
+ return 1;
172
+ }
173
+ // is JSON
174
+ if (typeof v === 'object') {
175
+ return 9;
176
+ }
177
+ return '';
178
+ }
179
+ exports.getOutputType = getOutputType;
180
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { ActionConversionResults } from './types';
2
+ export declare class ConnectorFrom10x {
3
+ writeFilePromises: Array<Promise<any>>;
4
+ /**
5
+ * Main function controller for converting connector source.
6
+ */
7
+ createConnectorSource(directory: string): Promise<void>;
8
+ /**
9
+ This is the connector level config file
10
+ */
11
+ private writeConnectorConfig;
12
+ /**
13
+ * Generates the test connection config
14
+ */
15
+ private generateAssetConfigScript;
16
+ /**
17
+ * Copies all of the base code such as Dockerfile and run.py files
18
+ */
19
+ private copyBaseCode;
20
+ /**
21
+ * Copies all current .md to the new docs folder.
22
+ */
23
+ private copyDocumentation;
24
+ /**
25
+ Generates all of the action files and config files from 10.x imports folder.
26
+ */
27
+ generateConfigsActions(directory: string, taskNames: string[]): Promise<ActionConversionResults[]>;
28
+ /**
29
+ Helper function for writing the files of a single action
30
+ */
31
+ private writeConfigAction;
32
+ /**
33
+ Helper function. Iterates over each 10.x input attribute and builds a JSON schema property
34
+ */
35
+ private buildSingleProperty;
36
+ /**
37
+ Builds the entire properties schema for inputs and outputs, inputs extends outputs interface.
38
+ */
39
+ private buildProperties;
40
+ /**
41
+ * Determines required fields for properties object
42
+ */
43
+ private getRequiredFields;
44
+ private writeFileEnsure;
45
+ }