@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.
- package/LICENSE +8 -0
- package/lib/build.d.ts +4 -0
- package/lib/build.js +252 -0
- package/lib/build.js.map +1 -0
- package/lib/common.d.ts +11 -0
- package/lib/common.js +180 -0
- package/lib/common.js.map +1 -0
- package/lib/converter.d.ts +45 -0
- package/lib/converter.js +402 -0
- package/lib/converter.js.map +1 -0
- package/lib/defaults.d.ts +4 -0
- package/lib/defaults.js +45 -0
- package/lib/defaults.js.map +1 -0
- package/lib/guards.d.ts +0 -0
- package/lib/guards.js +2 -0
- package/lib/guards.js.map +1 -0
- package/lib/index.d.ts +7 -0
- package/lib/index.js +11 -0
- package/lib/index.js.map +1 -0
- package/lib/json-schema-generator.d.ts +11 -0
- package/lib/json-schema-generator.js +197 -0
- package/lib/json-schema-generator.js.map +1 -0
- package/lib/logo.d.ts +1 -0
- package/lib/logo.js +17 -0
- package/lib/logo.js.map +1 -0
- package/lib/templates/node_18/Dockerfile +36 -0
- package/lib/templates/python_3.7_swimlane/Dockerfile +23 -0
- package/lib/templates/python_310_definition/Dockerfile +23 -0
- package/lib/types/common-types.d.ts +9 -0
- package/lib/types/common-types.js +3 -0
- package/lib/types/common-types.js.map +1 -0
- package/lib/types/connector-build-options.d.ts +10 -0
- package/lib/types/connector-build-options.js +3 -0
- package/lib/types/connector-build-options.js.map +1 -0
- package/lib/types/connector-build-results.d.ts +5 -0
- package/lib/types/connector-build-results.js +3 -0
- package/lib/types/connector-build-results.js.map +1 -0
- package/lib/types/connector-doc-types.d.ts +8 -0
- package/lib/types/connector-doc-types.js +3 -0
- package/lib/types/connector-doc-types.js.map +1 -0
- package/lib/types/conversion-results.d.ts +4 -0
- package/lib/types/conversion-results.js +3 -0
- package/lib/types/conversion-results.js.map +1 -0
- package/lib/types/index.d.ts +5 -0
- package/lib/types/index.js +9 -0
- package/lib/types/index.js.map +1 -0
- 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
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
|
package/lib/build.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
|
package/lib/common.d.ts
ADDED
|
@@ -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
|
+
}
|