jitsu-cli 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/jiu +3 -0
- package/lib/cli/cli.d.ts +1 -0
- package/lib/cli/cli.js +308 -0
- package/lib/cli/cli.js.map +1 -0
- package/lib/cli/config/index.d.ts +12 -0
- package/lib/cli/config/index.js +3 -0
- package/lib/cli/config/index.js.map +1 -0
- package/lib/cli/extension/build.d.ts +2 -1
- package/lib/cli/extension/build.js +19 -14
- package/lib/cli/extension/build.js.map +1 -0
- package/lib/cli/extension/create.d.ts +2 -1
- package/lib/cli/extension/create.js +13 -16
- package/lib/cli/extension/create.js.map +1 -0
- package/lib/cli/extension/exec.d.ts +6 -2
- package/lib/cli/extension/exec.js +98 -44
- package/lib/cli/extension/exec.js.map +1 -0
- package/lib/cli/extension/index.d.ts +0 -3
- package/lib/cli/extension/index.js +2 -83
- package/lib/cli/extension/index.js.map +1 -0
- package/lib/cli/extension/template.d.ts +1 -1
- package/lib/cli/extension/template.js +43 -40
- package/lib/cli/extension/template.js.map +1 -0
- package/lib/cli/extension/test.d.ts +2 -1
- package/lib/cli/extension/test.js +2 -1
- package/lib/cli/extension/test.js.map +1 -0
- package/lib/cli/extension/validate-config.d.ts +2 -1
- package/lib/cli/extension/validate-config.js +12 -12
- package/lib/cli/extension/validate-config.js.map +1 -0
- package/lib/cli/router.d.ts +24 -0
- package/lib/cli/router.js +135 -0
- package/lib/cli/router.js.map +1 -0
- package/lib/config-store.d.ts +16 -0
- package/lib/config-store.js +73 -0
- package/lib/config-store.js.map +1 -0
- package/lib/index.js +3 -3
- package/lib/index.js.map +1 -0
- package/lib/lib/chalk-code-highlight.js +1 -0
- package/lib/lib/chalk-code-highlight.js.map +1 -0
- package/lib/lib/command/index.js +4 -2
- package/lib/lib/command/index.js.map +1 -0
- package/lib/lib/errors.js +1 -0
- package/lib/lib/errors.js.map +1 -0
- package/lib/lib/indent.js +1 -0
- package/lib/lib/indent.js.map +1 -0
- package/lib/lib/log.js +1 -0
- package/lib/lib/log.js.map +1 -0
- package/lib/lib/template.js +1 -0
- package/lib/lib/template.js.map +1 -0
- package/lib/lib/validation.js +1 -0
- package/lib/lib/validation.js.map +1 -0
- package/lib/lib/version.js +1 -0
- package/lib/lib/version.js.map +1 -0
- package/lib/model/destination.json +123 -0
- package/lib/model/stream.json +44 -0
- package/lib/package.json +8 -4
- package/lib/tests.js +1 -0
- package/lib/tests.js.map +1 -0
- package/package.json +11 -7
- package/lib/run.d.ts +0 -1
- package/lib/run.js +0 -37
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.execDestinationExtension = exports.execSourceExtension = void 0;
|
|
3
|
+
exports.execTransformExtension = exports.execDestinationExtension = exports.exec = exports.execSourceExtension = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const commander_1 = tslib_1.__importDefault(require("commander"));
|
|
6
5
|
const log_1 = tslib_1.__importDefault(require("../../lib/log"));
|
|
7
6
|
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
8
7
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
@@ -39,47 +38,55 @@ function toArray(obj) {
|
|
|
39
38
|
}
|
|
40
39
|
}
|
|
41
40
|
async function loadExtension(directory) {
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
const projectBase = path_1.default.isAbsolute(directory) ? directory : path_1.default.resolve(process.cwd() + "/" + directory);
|
|
42
|
+
const packageFile = path_1.default.resolve(projectBase, "package.json");
|
|
44
43
|
if (!fs_1.default.existsSync(packageFile)) {
|
|
45
44
|
throw new Error("Can't find package.json in " + projectBase);
|
|
46
45
|
}
|
|
47
|
-
|
|
46
|
+
const distFile = path_1.default.resolve(projectBase, (0, index_1.getDistFile)(JSON5.parse(fs_1.default.readFileSync(packageFile, "utf-8"))));
|
|
48
47
|
(0, log_1.default)().info("⌛️ Loading extension (don't forget to build it before running exec!). Source: " + chalk_1.default.bold(distFile));
|
|
49
48
|
if (!fs_1.default.existsSync(path_1.default.resolve(projectBase, distFile))) {
|
|
50
49
|
throw new Error(`Can't find dist file ${chalk_1.default.bold(distFile)}. Does this dir contains jitsu extension? Have you run yarn build? `);
|
|
51
50
|
}
|
|
52
|
-
|
|
51
|
+
const extension = await (0, index_1.loadBuild)(distFile);
|
|
53
52
|
return { extension, distFile, projectBase };
|
|
54
53
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
const
|
|
54
|
+
function parseJson5(json) {
|
|
55
|
+
try {
|
|
56
|
+
return JSON5.parse(json);
|
|
57
|
+
}
|
|
58
|
+
catch (e) {
|
|
59
|
+
throw new Error(`Invalid JSON5: ${e?.message}. JSON: ${json}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async function execSourceExtension(args, extension) {
|
|
63
|
+
const config = args.config || args.c;
|
|
64
|
+
const dir = args.dir || args.d;
|
|
65
|
+
const state = args.state || args.s;
|
|
66
|
+
const streamConfig = args["stream-config"] || args.s;
|
|
66
67
|
if (!extension.streamReader) {
|
|
67
68
|
return { success: false, message: `Extension doesn't export ${chalk_1.default.bold("streamReader")} symbol` };
|
|
68
69
|
}
|
|
69
70
|
if (!extension.sourceCatalog) {
|
|
70
71
|
return { success: false, message: `Extension doesn't export ${chalk_1.default.bold("sourceCatalog")} symbol` };
|
|
71
72
|
}
|
|
73
|
+
if (!config) {
|
|
74
|
+
return {
|
|
75
|
+
success: false,
|
|
76
|
+
message: `Missing required option ${chalk_1.default.bold("-c <file | json object>")}`,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
72
79
|
let configObject;
|
|
73
80
|
try {
|
|
74
|
-
configObject = (0, index_1.getConfigJson)(
|
|
81
|
+
configObject = (0, index_1.getConfigJson)(config);
|
|
75
82
|
}
|
|
76
83
|
catch (e) {
|
|
77
84
|
return {
|
|
78
85
|
success: false,
|
|
79
|
-
message: `Can't parse config JSON: '${
|
|
86
|
+
message: `Can't parse config JSON: '${config}' ${e.message})`,
|
|
80
87
|
};
|
|
81
88
|
}
|
|
82
|
-
const stateFile = path_1.default.resolve(
|
|
89
|
+
const stateFile = path_1.default.resolve(state || `./src-${extension?.descriptor?.id || ""}-state.json`);
|
|
83
90
|
const stateFilePresent = fs_1.default.existsSync(stateFile);
|
|
84
91
|
if (stateFilePresent) {
|
|
85
92
|
(0, log_1.default)().info(`Loading state from ${chalk_1.default.bold(path_1.default.isAbsolute(stateFile))}`);
|
|
@@ -100,22 +107,22 @@ async function execSourceExtension(args) {
|
|
|
100
107
|
message: `Configuration validation failed: ${validationError}`,
|
|
101
108
|
};
|
|
102
109
|
}
|
|
103
|
-
(0, log_1.default)().info("
|
|
110
|
+
(0, log_1.default)().info("🙌 Configuration is valid!");
|
|
104
111
|
}
|
|
105
112
|
(0, log_1.default)().info("🏃 Getting available streams...");
|
|
106
|
-
|
|
113
|
+
const streams = await extension.sourceCatalog(configObject);
|
|
107
114
|
streams.forEach(stream => {
|
|
108
115
|
let paramsDocs = (stream.params ?? []).map(param => `${param.id} - ${param.displayName}`).join(", ");
|
|
109
116
|
(0, log_1.default)().info(`🌊 Stream: ${chalk_1.default.bold(stream.type)}. Parameters: ${paramsDocs.length > 0 ? paramsDocs : "none"}`);
|
|
110
117
|
});
|
|
111
118
|
let stream;
|
|
112
|
-
|
|
113
|
-
|
|
119
|
+
const streamConfigObject = streamConfig && parseJson5(streamConfig);
|
|
120
|
+
const mode = streamConfigObject?.mode;
|
|
114
121
|
if (streams.length > 1) {
|
|
115
122
|
if (!streamConfigObject) {
|
|
116
123
|
return {
|
|
117
124
|
success: false,
|
|
118
|
-
message: `The connector exports more than one (${streams.length}) streams. Please specify stream name and config as -s {
|
|
125
|
+
message: `The connector exports more than one (${streams.length}) streams. Please specify stream name and config as -s {name: 'name', ...}`,
|
|
119
126
|
};
|
|
120
127
|
}
|
|
121
128
|
if (!streamConfigObject?.name) {
|
|
@@ -213,42 +220,52 @@ function add(t, rec) {
|
|
|
213
220
|
});
|
|
214
221
|
t.rows.push(newRow);
|
|
215
222
|
}
|
|
216
|
-
async function
|
|
217
|
-
const
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
223
|
+
async function exec(args) {
|
|
224
|
+
const dir = args.dir || args.d;
|
|
225
|
+
const directory = dir || ".";
|
|
226
|
+
await (0, build_1.build)(args);
|
|
227
|
+
const { extension, projectBase } = await loadExtension(directory);
|
|
228
|
+
if (extension.destination) {
|
|
229
|
+
return execDestinationExtension(args, extension, projectBase);
|
|
230
|
+
}
|
|
231
|
+
if (extension.transform) {
|
|
232
|
+
return execTransformExtension(args, extension, projectBase);
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
return execSourceExtension(args, extension);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
exports.exec = exec;
|
|
239
|
+
async function execDestinationExtension(args, extension, projectBase) {
|
|
240
|
+
const cfg = args.config || args.c;
|
|
241
|
+
const file = args.file || args.f;
|
|
242
|
+
const json = args.json || args.j;
|
|
243
|
+
const skipValidation = args["skip-validation"] || args.v;
|
|
244
|
+
if (!json && !file) {
|
|
227
245
|
return { success: false, message: "Please specify -j or -f" };
|
|
228
246
|
}
|
|
229
|
-
if (
|
|
247
|
+
if (json && file) {
|
|
230
248
|
return { success: false, message: "Both options -f and -j are provided. You should use either, not both" };
|
|
231
249
|
}
|
|
232
|
-
if (!
|
|
250
|
+
if (!cfg) {
|
|
233
251
|
return { success: false, message: "Please define config object -c json_file_path or -c '{json_object:}'" };
|
|
234
252
|
}
|
|
235
253
|
let config;
|
|
236
254
|
try {
|
|
237
|
-
config = (0, index_1.getConfigJson)(
|
|
255
|
+
config = (0, index_1.getConfigJson)(cfg);
|
|
238
256
|
}
|
|
239
257
|
catch (e) {
|
|
240
258
|
return {
|
|
241
259
|
success: false,
|
|
242
|
-
message: `Can't parse config JSON: '${
|
|
260
|
+
message: `Can't parse config JSON: '${cfg}' ${e.message})`,
|
|
243
261
|
};
|
|
244
262
|
}
|
|
245
|
-
const { extension, projectBase } = await loadExtension(directory);
|
|
246
263
|
(0, log_1.default)().info("🛂 Executing tests destination on " + chalk_1.default.bold(projectBase));
|
|
247
|
-
let events = toArray(getJson(
|
|
264
|
+
let events = toArray(getJson(json, file));
|
|
248
265
|
if (!extension.destination) {
|
|
249
266
|
return { success: false, message: "Extension doesn't export destination function" };
|
|
250
267
|
}
|
|
251
|
-
if (!
|
|
268
|
+
if (!skipValidation && extension.validator) {
|
|
252
269
|
(0, log_1.default)().info(`Validating configuration:${chalk_code_highlight_1.chalkCode.json((0, indent_1.align)(JSON.stringify(config, null, 2), { indent: 4, lnBefore: 1, lnAfter: 1 }))}`);
|
|
253
270
|
let configError = await (0, validation_1.validateConfiguration)(config, extension.validator);
|
|
254
271
|
if (configError) {
|
|
@@ -258,7 +275,7 @@ async function execDestinationExtension(args) {
|
|
|
258
275
|
}
|
|
259
276
|
else {
|
|
260
277
|
(0, log_1.default)().info("💡 Config validation will be skipped " +
|
|
261
|
-
(
|
|
278
|
+
(skipValidation ? " as per requested by -v flag" : ": extension does not have an exported validator"));
|
|
262
279
|
}
|
|
263
280
|
(0, log_1.default)().info("🏃 Running destination plugin on " + events.length + " events");
|
|
264
281
|
for (const ev of events) {
|
|
@@ -294,3 +311,40 @@ async function execDestinationExtension(args) {
|
|
|
294
311
|
return { success: true };
|
|
295
312
|
}
|
|
296
313
|
exports.execDestinationExtension = execDestinationExtension;
|
|
314
|
+
async function execTransformExtension(args, extension, projectBase) {
|
|
315
|
+
const file = args.file || args.f;
|
|
316
|
+
const json = args.json || args.j;
|
|
317
|
+
if (!json && !file) {
|
|
318
|
+
return { success: false, message: "Please specify -j or -f" };
|
|
319
|
+
}
|
|
320
|
+
if (json && file) {
|
|
321
|
+
return { success: false, message: "Both options -f and -j are provided. You should use either, not both" };
|
|
322
|
+
}
|
|
323
|
+
(0, log_1.default)().info("🛂 Executing tests transformation on " + chalk_1.default.bold(projectBase));
|
|
324
|
+
let events = toArray(getJson(json, file));
|
|
325
|
+
if (!extension.transform) {
|
|
326
|
+
return { success: false, message: "Extension doesn't export transform function" };
|
|
327
|
+
}
|
|
328
|
+
(0, log_1.default)().info("🏃 Running transform plugin on " + events.length + " events");
|
|
329
|
+
for (const ev of events) {
|
|
330
|
+
try {
|
|
331
|
+
let messages = await extension.transform(ev);
|
|
332
|
+
if (!messages) {
|
|
333
|
+
(0, log_1.default)().info("⚽ Event is skipped: " + ellipsis(JSON.stringify(ev)));
|
|
334
|
+
continue;
|
|
335
|
+
}
|
|
336
|
+
const messagesArray = Array.isArray(messages) ? messages : [messages];
|
|
337
|
+
(0, log_1.default)().info(`✅ Event emitted ${messagesArray.length} messages. Event JSON: ` + chalk_1.default.italic(ellipsis(JSON.stringify(ev))));
|
|
338
|
+
messagesArray.forEach(msg => {
|
|
339
|
+
(0, log_1.default)().info(chalk_1.default.italic(JSON.stringify(msg)));
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
catch (e) {
|
|
343
|
+
(0, log_1.default)().info(chalk_1.default.red((0, errors_1.appendError)("❌ Failed to process event", e) +
|
|
344
|
+
(0, indent_1.align)(JSON.stringify(ev, null, 2), { lnBefore: 1, lnAfter: 1, indent: 0 })));
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
return { success: true };
|
|
348
|
+
}
|
|
349
|
+
exports.execTransformExtension = execTransformExtension;
|
|
350
|
+
//# sourceMappingURL=exec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../../src/cli/extension/exec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
import { CommandRegistry } from "../../lib/command/types";
|
|
2
1
|
import { JitsuExtensionExport } from "@jitsu/types/extension";
|
|
3
2
|
import { Partial } from "rollup-plugin-typescript2/dist/partial";
|
|
4
|
-
export declare const help: string;
|
|
5
|
-
export declare const extensionCommands: CommandRegistry<"test" | "build" | "create" | "validate-config" | "exec" | "exec-src">;
|
|
6
3
|
export declare function validateTsConfig(tsConfigPath: string): void;
|
|
7
4
|
export declare function getDistFile(packageJson: any): any;
|
|
8
5
|
export declare function getConfigJson(jsonOrFile: string): any;
|
|
@@ -1,95 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.loadBuild = exports.getConfigJson = exports.getDistFile = exports.validateTsConfig =
|
|
3
|
+
exports.loadBuild = exports.getConfigJson = exports.getDistFile = exports.validateTsConfig = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
6
|
-
const chalk_code_highlight_1 = require("../../lib/chalk-code-highlight");
|
|
7
6
|
const fs = tslib_1.__importStar(require("fs"));
|
|
8
|
-
const indent_1 = require("../../lib/indent");
|
|
9
|
-
const create_1 = require("./create");
|
|
10
|
-
const build_1 = require("./build");
|
|
11
|
-
const test_1 = require("./test");
|
|
12
|
-
const validate_config_1 = require("./validate-config");
|
|
13
|
-
const template_1 = require("./template");
|
|
14
7
|
const json5_1 = tslib_1.__importDefault(require("json5"));
|
|
15
|
-
const exec_1 = require("./exec");
|
|
16
8
|
const readline = tslib_1.__importStar(require("readline"));
|
|
17
9
|
const sandbox_1 = require("@jitsu/node-bridge/sandbox");
|
|
18
10
|
global.fetch = require("cross-fetch");
|
|
19
|
-
const usage = `
|
|
20
|
-
· ${chalk_1.default.bold("jitsu-cli extension create")}
|
|
21
|
-
|
|
22
|
-
Create a project for jitsu plugin with placeholder implementation for all components.
|
|
23
|
-
|
|
24
|
-
· ${chalk_1.default.bold("jitsu-cli extension build <directory>")}
|
|
25
|
-
|
|
26
|
-
Build project located in <directory>. If <directory> is not provided current directory is used.
|
|
27
|
-
|
|
28
|
-
· ${chalk_1.default.bold("jitsu-cli extension test <directory>")}
|
|
29
|
-
|
|
30
|
-
Run tests for project in <directory>/__test__. If <directory> is not provided current directory is used.
|
|
31
|
-
|
|
32
|
-
· ${chalk_1.default.bold("jitsu-cli extension validate-config -f file or -j {json}")}
|
|
33
|
-
|
|
34
|
-
Validates configuration json object. ${chalk_1.default.bold("Note:")} run \`jitsu-cli extension build\` beforehand
|
|
35
|
-
|
|
36
|
-
· ${chalk_1.default.bold("jitsu-cli extension help")}
|
|
37
|
-
|
|
38
|
-
Show this help
|
|
39
|
-
`;
|
|
40
|
-
exports.help = `
|
|
41
|
-
|
|
42
|
-
${chalk_1.default.bold("DESCRIPTION")}
|
|
43
|
-
|
|
44
|
-
The command will build jitsu extension and bundle a single JS file that will
|
|
45
|
-
placed to a location defined in main parameter of package.json (if not set, the bundle
|
|
46
|
-
will be placed in dist/index.js
|
|
47
|
-
|
|
48
|
-
You can (and should!) call \`jitsu-cli extension build\` in package.json. Example: ${chalk_code_highlight_1.chalkCode.json((0, indent_1.align)(JSON.stringify((0, template_1.packageJsonTemplate)({
|
|
49
|
-
packageName: "test-package",
|
|
50
|
-
type: "destination",
|
|
51
|
-
}), null, 2), { indent: 4, lnBefore: 2 }))}
|
|
52
|
-
|
|
53
|
-
The code should be located in ./src folder. src/index.js (or ts) should be present
|
|
54
|
-
|
|
55
|
-
${chalk_1.default.bold("TYPESCRIPT")}
|
|
56
|
-
|
|
57
|
-
Typescript is supported out of the box. Just add tsconfig.json to the root of the project
|
|
58
|
-
|
|
59
|
-
${chalk_1.default.bold("COMMANDS")} ${(0, indent_1.align)(usage, { indent: 2, lnBefore: 2 })}
|
|
60
|
-
`;
|
|
61
|
-
exports.extensionCommands = {
|
|
62
|
-
exec: {
|
|
63
|
-
exec: exec_1.execDestinationExtension,
|
|
64
|
-
description: "Execute destination extension on a test dataset",
|
|
65
|
-
help: "",
|
|
66
|
-
},
|
|
67
|
-
"exec-src": {
|
|
68
|
-
exec: exec_1.execSourceExtension,
|
|
69
|
-
description: "Builds and execute source connector extension with a test credentials and output data",
|
|
70
|
-
help: "",
|
|
71
|
-
},
|
|
72
|
-
test: {
|
|
73
|
-
exec: test_1.test,
|
|
74
|
-
description: "Execute test on extension",
|
|
75
|
-
help: "Tests should be located in ./__test__ folder and follow *.test.ts pattern",
|
|
76
|
-
},
|
|
77
|
-
build: {
|
|
78
|
-
exec: build_1.build,
|
|
79
|
-
description: "Builds Jitsu extension",
|
|
80
|
-
help: "",
|
|
81
|
-
},
|
|
82
|
-
create: {
|
|
83
|
-
exec: create_1.create,
|
|
84
|
-
description: "Creates an empty project",
|
|
85
|
-
help: "",
|
|
86
|
-
},
|
|
87
|
-
"validate-config": {
|
|
88
|
-
exec: validate_config_1.validateConfig,
|
|
89
|
-
description: `Verifies a configuration. ${chalk_1.default.bold("Note:")} run \`jitsu-cli extension build\` first!`,
|
|
90
|
-
help: "",
|
|
91
|
-
},
|
|
92
|
-
};
|
|
93
11
|
function validateTsConfig(tsConfigPath) {
|
|
94
12
|
let tsConfig;
|
|
95
13
|
try {
|
|
@@ -145,3 +63,4 @@ async function loadBuild(file) {
|
|
|
145
63
|
}
|
|
146
64
|
}
|
|
147
65
|
exports.loadBuild = loadBuild;
|
|
66
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/extension/index.ts"],"names":[],"mappings":";;;;AACA,0DAA0B;AAE1B,+CAAyB;AASzB,0DAA0B;AAE1B,2DAAqC;AACrC,wDAAqD;AAErD,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAEtC,SAAgB,gBAAgB,CAAC,YAAoB;IACnD,IAAI,QAAa,CAAC;IAClB,IAAI;QACF,QAAQ,GAAG,eAAK,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;KAC/D;IAAC,OAAO,CAAM,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;KAC7E;IAID,IAAI,QAAQ,EAAE,eAAe,EAAE,MAAM,KAAK,QAAQ,EAAE;QAClD,MAAM,IAAI,KAAK,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,YAAY,CAAC,yDAAyD,CAAC,CAAC;KACvG;AACH,CAAC;AAbD,4CAaC;AAED,SAAgB,WAAW,CAAC,WAAW;IACrC,OAAO,WAAW,CAAC,IAAI,IAAI,eAAe,CAAC;AAC7C,CAAC;AAFD,kCAEC;AAED,KAAK,UAAU,YAAY,CAAC,UAAU;IACpC,MAAM,QAAQ,GAAG,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAS,OAAO,CAAC,EAAE;QAC/C,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACvB,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,aAAa,CAAC,UAAkB;IAC9C,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACxE,OAAO,eAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;KACvC;SAAM;QACL,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,QAAQ,UAAU,kBAAkB,CAAC,CAAC;SACvD;QACD,OAAO,eAAK,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;KACzD;AACH,CAAC;AATD,sCASC;AAEM,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,IAAI,gBAAgB,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,aAAa,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,cAAc,EAAE;QAC3F,iEAAc,IAAI,IAAE;KACrB;SAAM,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,cAAc,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,mBAAmB,EAAE;QACxG,MAAM,EAAE,GAAG,IAAA,iBAAO,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7B,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACzB;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,8BAA8B,gBAAgB,EAAE,CAAC,CAAC;KACnE;AACH,CAAC;AAVD,8BAUC"}
|
|
@@ -9,12 +9,12 @@ export declare const packageJsonTemplate: ({ packageName, type, jitsuVersion }:
|
|
|
9
9
|
name: string;
|
|
10
10
|
version: string;
|
|
11
11
|
description: string;
|
|
12
|
+
keywords: string[];
|
|
12
13
|
main: string;
|
|
13
14
|
scripts: {
|
|
14
15
|
clean: string;
|
|
15
16
|
build: string;
|
|
16
17
|
test: string;
|
|
17
|
-
"validate-config": string;
|
|
18
18
|
execute: string;
|
|
19
19
|
};
|
|
20
20
|
devDependencies: {
|
|
@@ -2,28 +2,35 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.extensionProjectTemplate = exports.packageJsonTemplate = void 0;
|
|
4
4
|
const version_1 = require("../../lib/version");
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
5
|
+
const router_1 = require("../router");
|
|
6
|
+
const packageJsonTemplate = ({ packageName, type, jitsuVersion = undefined }) => {
|
|
7
|
+
const res = {
|
|
8
|
+
name: `${packageName}`,
|
|
9
|
+
version: "0.0.1",
|
|
10
|
+
description: `Jitsu ${type} - ${packageName}`,
|
|
11
|
+
keywords: ["jitsu", "extension", `jitsu-${type}-extension`],
|
|
12
|
+
main: `dist/${packageName}.js`,
|
|
13
|
+
scripts: {
|
|
14
|
+
clean: "rm -rf ./dist",
|
|
15
|
+
build: `${router_1.binName} extension build`,
|
|
16
|
+
test: `${router_1.binName} extension test`,
|
|
17
|
+
execute: `${router_1.binName} extension exec`,
|
|
18
|
+
},
|
|
19
|
+
devDependencies: {
|
|
20
|
+
"@jitsu/types": `${jitsuVersion || "^" + version_1.jitsuCliVersion}`,
|
|
21
|
+
"@jitsu/jlib": `${jitsuVersion || "^" + version_1.jitsuCliVersion}`,
|
|
22
|
+
"ts-jest": "^27.0.7",
|
|
23
|
+
[router_1.binName]: `${jitsuVersion || "^" + version_1.jitsuCliVersion}`,
|
|
24
|
+
tslib: "^2.3.1",
|
|
25
|
+
typescript: "^4.5.2",
|
|
26
|
+
},
|
|
27
|
+
dependencies: {},
|
|
28
|
+
};
|
|
29
|
+
if (type === "destination" || type === "source") {
|
|
30
|
+
res.scripts["validate-config"] = `${router_1.binName} extension validate-config`;
|
|
31
|
+
}
|
|
32
|
+
return res;
|
|
33
|
+
};
|
|
27
34
|
exports.packageJsonTemplate = packageJsonTemplate;
|
|
28
35
|
let destinationTest = ({ type = "destination" }) => {
|
|
29
36
|
if (type !== "destination") {
|
|
@@ -31,7 +38,7 @@ let destinationTest = ({ type = "destination" }) => {
|
|
|
31
38
|
}
|
|
32
39
|
return `
|
|
33
40
|
import { JitsuDestinationContext } from "@jitsu/types/extension"
|
|
34
|
-
import { testDestination } from "
|
|
41
|
+
import { testDestination } from "${router_1.binName}/lib/tests"
|
|
35
42
|
import { destination } from "../src"
|
|
36
43
|
|
|
37
44
|
testDestination({
|
|
@@ -171,15 +178,15 @@ let sourceCode = () => {
|
|
|
171
178
|
};
|
|
172
179
|
let transformCode = () => {
|
|
173
180
|
return `
|
|
174
|
-
import {
|
|
181
|
+
import {TransformationFunction} from "@jitsu/types/extension";
|
|
175
182
|
import {DefaultJitsuEvent} from "@jitsu/types/event";
|
|
176
|
-
|
|
183
|
+
|
|
177
184
|
//duplicate events
|
|
178
185
|
const transform: TransformationFunction = (event: DefaultJitsuEvent) => {
|
|
179
186
|
return [event, {...event, eventn_ctx_event_id: event.eventn_ctx_event_id + "_2"}]
|
|
180
187
|
}
|
|
181
|
-
|
|
182
|
-
export default
|
|
188
|
+
|
|
189
|
+
export default transform;
|
|
183
190
|
`;
|
|
184
191
|
};
|
|
185
192
|
let descriptor = {};
|
|
@@ -191,7 +198,7 @@ descriptor["destination"] = (vars) => `
|
|
|
191
198
|
id: "${vars.packageName}",
|
|
192
199
|
displayName: "${vars.packageName}",
|
|
193
200
|
icon: "",
|
|
194
|
-
description: "Jitsu destination - ${vars.packageName} (generated by
|
|
201
|
+
description: "Jitsu destination - ${vars.packageName} (generated by \`${router_1.binName} extension create\`)",
|
|
195
202
|
configurationParameters: [
|
|
196
203
|
{id: "exampleParam", type: "string", required: true, displayName: "Example param", documentation: "Documentation"}
|
|
197
204
|
],
|
|
@@ -200,22 +207,17 @@ descriptor["destination"] = (vars) => `
|
|
|
200
207
|
export { descriptor, destination, validator };
|
|
201
208
|
`;
|
|
202
209
|
descriptor["transform"] = (vars) => `
|
|
203
|
-
import {
|
|
204
|
-
import
|
|
205
|
-
|
|
206
|
-
const
|
|
207
|
-
|
|
208
|
-
const descriptor: DestinationDescriptor = {
|
|
209
|
-
type: "${vars.packageName}",
|
|
210
|
+
import {ExtensionDescriptor} from "@jitsu/types/extension";
|
|
211
|
+
import transform from "./transform";
|
|
212
|
+
|
|
213
|
+
const descriptor: ExtensionDescriptor = {
|
|
214
|
+
id: "${vars.packageName}",
|
|
210
215
|
displayName: "${vars.packageName}",
|
|
211
216
|
icon: "",
|
|
212
|
-
description: "Jitsu ${vars.type} - ${vars.packageName} (generated by
|
|
213
|
-
configurationParameters: [
|
|
214
|
-
//put configuration here
|
|
215
|
-
]
|
|
217
|
+
description: "Jitsu ${vars.type} - ${vars.packageName} (generated by \`${router_1.binName} extension create)\`"
|
|
216
218
|
}
|
|
217
219
|
|
|
218
|
-
export {descriptor,
|
|
220
|
+
export {descriptor, transform}
|
|
219
221
|
`;
|
|
220
222
|
exports.extensionProjectTemplate = {
|
|
221
223
|
"__test__/destination.test.ts": destinationTest,
|
|
@@ -235,3 +237,4 @@ exports.extensionProjectTemplate = {
|
|
|
235
237
|
include: ["./src", "__test__"],
|
|
236
238
|
},
|
|
237
239
|
};
|
|
240
|
+
//# sourceMappingURL=template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/cli/extension/template.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ const fs_1 = tslib_1.__importDefault(require("fs"));
|
|
|
9
9
|
const jest_cli_1 = require("jest-cli");
|
|
10
10
|
const _1 = require("./");
|
|
11
11
|
async function test(args) {
|
|
12
|
-
const directory = args
|
|
12
|
+
const directory = args.dir || args.d || "";
|
|
13
13
|
let projectBase = path_1.default.isAbsolute(directory) ? directory : path_1.default.resolve(process.cwd() + "/" + directory);
|
|
14
14
|
(0, log_1.default)().info("🛂 Running tests for " + chalk_1.default.bold(projectBase));
|
|
15
15
|
let tsConfigPath = path_1.default.resolve(projectBase, "tsconfig.json");
|
|
@@ -32,3 +32,4 @@ async function test(args) {
|
|
|
32
32
|
return { success: true };
|
|
33
33
|
}
|
|
34
34
|
exports.test = test;
|
|
35
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../../src/cli/extension/test.ts"],"names":[],"mappings":";;;;AACA,wDAAwB;AACxB,gEAAmC;AACnC,0DAA0B;AAC1B,oDAAoB;AACpB,uCAAuC;AACvC,yBAAsC;AAG/B,KAAK,UAAU,IAAI,CAAC,IAAyB;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,IAAI,WAAW,GAAG,cAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,SAAS,CAAC,CAAC;IACzG,IAAA,aAAM,GAAE,CAAC,IAAI,CAAC,uBAAuB,GAAG,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACjE,IAAI,YAAY,GAAG,cAAI,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAC9D,MAAM,iBAAiB,GAAG,YAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACtD,IAAI,iBAAiB,EAAE;QACrB,IAAA,aAAM,GAAE,CAAC,IAAI,CAAC,YAAY,eAAK,CAAC,IAAI,CAAC,eAAe,CAAC,8BAA8B,CAAC,CAAC;KACtF;SAAM;QACL,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,GAAG,eAAK,CAAC,IAAI,CACpB,eAAe,CAChB,oFAAoF;SACtF,CAAC;KACH;IACD,IAAA,mBAAgB,EAAC,YAAY,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,CAAC,mBAAmB,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IAClE,IAAI,iBAAiB,EAAE;QACrB,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;KACtC;IACD,MAAM,IAAA,cAAI,EAAC,QAAQ,CAAC,CAAC;IAErB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAxBD,oBAwBC"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.validateConfig = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const commander_1 = tslib_1.__importDefault(require("commander"));
|
|
6
5
|
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
7
6
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
8
7
|
const fs_1 = tslib_1.__importDefault(require("fs"));
|
|
@@ -10,14 +9,11 @@ const json5_1 = tslib_1.__importDefault(require("json5"));
|
|
|
10
9
|
const log_1 = tslib_1.__importDefault(require("../../lib/log"));
|
|
11
10
|
const index_1 = require("./index");
|
|
12
11
|
const validation_1 = require("../../lib/validation");
|
|
12
|
+
const router_1 = require("../router");
|
|
13
13
|
async function validateConfig(args) {
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
program.argument("[project_dir]");
|
|
18
|
-
program.parse(["dummy", "dummy", ...args]);
|
|
19
|
-
const opts = program.opts();
|
|
20
|
-
if (!opts.config) {
|
|
14
|
+
const config = args.config || args.c;
|
|
15
|
+
const dir = args.dir || args.d || "";
|
|
16
|
+
if (!config) {
|
|
21
17
|
return {
|
|
22
18
|
success: false,
|
|
23
19
|
message: "Please define config object -c json_file_path or -c '{json_object:}'",
|
|
@@ -25,15 +21,15 @@ async function validateConfig(args) {
|
|
|
25
21
|
}
|
|
26
22
|
let configObj;
|
|
27
23
|
try {
|
|
28
|
-
configObj = (0, index_1.getConfigJson)(
|
|
24
|
+
configObj = (0, index_1.getConfigJson)(config);
|
|
29
25
|
}
|
|
30
26
|
catch (e) {
|
|
31
27
|
return {
|
|
32
28
|
success: false,
|
|
33
|
-
message: `Can't parse config JSON: '${
|
|
29
|
+
message: `Can't parse config JSON: '${config}' ${e.message})`,
|
|
34
30
|
};
|
|
35
31
|
}
|
|
36
|
-
let projectDir =
|
|
32
|
+
let projectDir = dir || ".";
|
|
37
33
|
(0, log_1.default)().info("Project dir: " + projectDir);
|
|
38
34
|
let packageFile = path_1.default.resolve(projectDir, "package.json");
|
|
39
35
|
if (!fs_1.default.existsSync(packageFile)) {
|
|
@@ -43,7 +39,10 @@ async function validateConfig(args) {
|
|
|
43
39
|
let distFile = path_1.default.resolve(projectDir, (0, index_1.getDistFile)(packageObj));
|
|
44
40
|
(0, log_1.default)().info("Dist file: " + distFile);
|
|
45
41
|
if (!fs_1.default.existsSync(distFile)) {
|
|
46
|
-
return {
|
|
42
|
+
return {
|
|
43
|
+
success: false,
|
|
44
|
+
message: `Can't find dist file (${distFile}). Forgot to run \`${router_1.binName} extension build\`?`,
|
|
45
|
+
};
|
|
47
46
|
}
|
|
48
47
|
(0, log_1.default)().info("🤔 Loading build from " + chalk_1.default.bold(distFile));
|
|
49
48
|
let build = await (0, index_1.loadBuild)(distFile);
|
|
@@ -60,3 +59,4 @@ async function validateConfig(args) {
|
|
|
60
59
|
return { success: true };
|
|
61
60
|
}
|
|
62
61
|
exports.validateConfig = validateConfig;
|
|
62
|
+
//# sourceMappingURL=validate-config.js.map
|