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.
Files changed (60) hide show
  1. package/bin/jiu +3 -0
  2. package/lib/cli/cli.d.ts +1 -0
  3. package/lib/cli/cli.js +308 -0
  4. package/lib/cli/cli.js.map +1 -0
  5. package/lib/cli/config/index.d.ts +12 -0
  6. package/lib/cli/config/index.js +3 -0
  7. package/lib/cli/config/index.js.map +1 -0
  8. package/lib/cli/extension/build.d.ts +2 -1
  9. package/lib/cli/extension/build.js +19 -14
  10. package/lib/cli/extension/build.js.map +1 -0
  11. package/lib/cli/extension/create.d.ts +2 -1
  12. package/lib/cli/extension/create.js +13 -16
  13. package/lib/cli/extension/create.js.map +1 -0
  14. package/lib/cli/extension/exec.d.ts +6 -2
  15. package/lib/cli/extension/exec.js +98 -44
  16. package/lib/cli/extension/exec.js.map +1 -0
  17. package/lib/cli/extension/index.d.ts +0 -3
  18. package/lib/cli/extension/index.js +2 -83
  19. package/lib/cli/extension/index.js.map +1 -0
  20. package/lib/cli/extension/template.d.ts +1 -1
  21. package/lib/cli/extension/template.js +43 -40
  22. package/lib/cli/extension/template.js.map +1 -0
  23. package/lib/cli/extension/test.d.ts +2 -1
  24. package/lib/cli/extension/test.js +2 -1
  25. package/lib/cli/extension/test.js.map +1 -0
  26. package/lib/cli/extension/validate-config.d.ts +2 -1
  27. package/lib/cli/extension/validate-config.js +12 -12
  28. package/lib/cli/extension/validate-config.js.map +1 -0
  29. package/lib/cli/router.d.ts +24 -0
  30. package/lib/cli/router.js +135 -0
  31. package/lib/cli/router.js.map +1 -0
  32. package/lib/config-store.d.ts +16 -0
  33. package/lib/config-store.js +73 -0
  34. package/lib/config-store.js.map +1 -0
  35. package/lib/index.js +3 -3
  36. package/lib/index.js.map +1 -0
  37. package/lib/lib/chalk-code-highlight.js +1 -0
  38. package/lib/lib/chalk-code-highlight.js.map +1 -0
  39. package/lib/lib/command/index.js +4 -2
  40. package/lib/lib/command/index.js.map +1 -0
  41. package/lib/lib/errors.js +1 -0
  42. package/lib/lib/errors.js.map +1 -0
  43. package/lib/lib/indent.js +1 -0
  44. package/lib/lib/indent.js.map +1 -0
  45. package/lib/lib/log.js +1 -0
  46. package/lib/lib/log.js.map +1 -0
  47. package/lib/lib/template.js +1 -0
  48. package/lib/lib/template.js.map +1 -0
  49. package/lib/lib/validation.js +1 -0
  50. package/lib/lib/validation.js.map +1 -0
  51. package/lib/lib/version.js +1 -0
  52. package/lib/lib/version.js.map +1 -0
  53. package/lib/model/destination.json +123 -0
  54. package/lib/model/stream.json +44 -0
  55. package/lib/package.json +8 -4
  56. package/lib/tests.js +1 -0
  57. package/lib/tests.js.map +1 -0
  58. package/package.json +11 -7
  59. package/lib/run.d.ts +0 -1
  60. 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
- let projectBase = path_1.default.isAbsolute(directory) ? directory : path_1.default.resolve(process.cwd() + "/" + directory);
43
- let packageFile = path_1.default.resolve(projectBase, "package.json");
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
- let distFile = path_1.default.resolve(projectBase, (0, index_1.getDistFile)(JSON5.parse(fs_1.default.readFileSync(packageFile, "utf-8"))));
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
- let extension = await (0, index_1.loadBuild)(distFile);
51
+ const extension = await (0, index_1.loadBuild)(distFile);
53
52
  return { extension, distFile, projectBase };
54
53
  }
55
- async function execSourceExtension(args) {
56
- const program = new commander_1.default.Command();
57
- program.option("-c, --config <config_file_or_json>", "Configuration file path or inline extension configuration JSON");
58
- program.option("-d, --dir <project_dir>", "project dir");
59
- program.option("-s, --stream-config <json>", "Stream configuration as an object.");
60
- program.option("-t, --state <file>", "Saved state object to file");
61
- program.parse(["dummy", "dummy", ...args]);
62
- let cliOpts = program.opts();
63
- let directory = cliOpts.dir || ".";
64
- await (0, build_1.build)([directory]);
65
- const { extension } = await loadExtension(directory);
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)(cliOpts.config);
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: '${cliOpts.config}' ${e.message})`,
86
+ message: `Can't parse config JSON: '${config}' ${e.message})`,
80
87
  };
81
88
  }
82
- const stateFile = path_1.default.resolve(cliOpts.state || `./src-${extension?.descriptor?.id || ""}-state.json`);
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("🙌️ Configuration is valid!");
110
+ (0, log_1.default)().info("🙌 Configuration is valid!");
104
111
  }
105
112
  (0, log_1.default)().info("🏃 Getting available streams...");
106
- let streams = await extension.sourceCatalog(configObject);
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
- let streamConfigObject = cliOpts.streamConfig && JSON5.parse(cliOpts.streamConfig);
113
- let mode = streamConfigObject?.mode;
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 {stream: 'name', ...}`,
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 execDestinationExtension(args) {
217
- const program = new commander_1.default.Command();
218
- program.option("-f, --file <file path>", "Path to file with jitsu events. Could be either on object, or array of objects");
219
- program.option("-c, --config <config_file_or_json>", "Configuration file path or inline extension configuration JSON");
220
- program.option("-j, --json <event json>", "Events JSON for processing (alternative to -f). Could be one object, or array of objects");
221
- program.option("-d, --dir <project_dir>", "project dir");
222
- program.option("-v, --skip-validation", "To skip config validation");
223
- program.parse(["dummy", "dummy", ...args]);
224
- let cliOpts = program.opts();
225
- let directory = cliOpts.dir || ".";
226
- if (!cliOpts.json && !cliOpts.file) {
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 (cliOpts.json && cliOpts.file) {
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 (!cliOpts.config) {
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)(cliOpts.config);
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: '${cliOpts.config}' ${e.message})`,
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(cliOpts.json, cliOpts.file));
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 (!cliOpts.skipValidation && extension.validator) {
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
- (cliOpts.skipValidation ? " as per requested by -v flag" : ": extension does not have an exported validator"));
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 = exports.extensionCommands = exports.help = void 0;
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 packageJsonTemplate = ({ packageName, type, jitsuVersion = undefined }) => ({
6
- name: `${packageName}`,
7
- version: "0.0.1",
8
- description: `Jitsu ${type} - ${packageName}`,
9
- main: `dist/${packageName}.js`,
10
- scripts: {
11
- clean: "rm -rf ./dist",
12
- build: "jitsu-cli extension build",
13
- test: "jitsu-cli extension test",
14
- "validate-config": "jitsu-cli extension validate-config",
15
- execute: `jitsu-cli extension ${type == "destination" ? "exec" : "exec-src"}`,
16
- },
17
- devDependencies: {
18
- "@jitsu/types": `${jitsuVersion || "^" + version_1.jitsuCliVersion}`,
19
- "@jitsu/jlib": `${jitsuVersion || "^" + version_1.jitsuCliVersion}`,
20
- "ts-jest": "^27.0.7",
21
- "jitsu-cli": `${jitsuVersion || "^" + version_1.jitsuCliVersion}`,
22
- tslib: "^2.3.1",
23
- typescript: "^4.5.2",
24
- },
25
- dependencies: {},
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 "jitsu-cli/lib/tests"
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 {Destination, DestinationMessage, JitsuDestinationContext} from "@jitsu/types/destination";
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 jitsuAdapter;
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 'jitsu-cli extension create')",
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 {DestinationAdapter, DestinationDescriptor} from "@jitsu/types/destination";
204
- import jitsuAdapter from "./adapter";
205
-
206
- const adapter: DestinationAdapter = jitsuAdapter
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 'jitsu-cli extension create)'",
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, adapter}
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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"}
@@ -1,2 +1,3 @@
1
1
  import { CommandResult } from "../../lib/command/types";
2
- export declare function test(args: string[]): Promise<CommandResult>;
2
+ import minimist from "minimist";
3
+ export declare function test(args: minimist.ParsedArgs): Promise<CommandResult>;
@@ -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?.[0] || "";
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"}
@@ -1,2 +1,3 @@
1
1
  import { CommandResult } from "../../lib/command/types";
2
- export declare function validateConfig(args: string[]): Promise<CommandResult>;
2
+ import minimist from "minimist";
3
+ export declare function validateConfig(args: minimist.ParsedArgs): Promise<CommandResult>;
@@ -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 program = new commander_1.default.Command();
15
- program.option("-d, --dir <project_dir>", "Project directory");
16
- program.option("-c, --config <config_file_or_json>", "Configuration file path or inline extension configuration JSON");
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)(opts.config);
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: '${opts.config}' ${e.message})`,
29
+ message: `Can't parse config JSON: '${config}' ${e.message})`,
34
30
  };
35
31
  }
36
- let projectDir = opts.dir || ".";
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 { success: false, message: `Can't find dist file (${distFile}). Forgot to run jitsu-cli extension build ?` };
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