@openfn/cli 0.0.22 → 0.0.24

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/dist/index.js CHANGED
@@ -8,8 +8,7 @@ import process2 from "node:process";
8
8
  function spawn_default(basePath, opts2) {
9
9
  const execArgv = [
10
10
  "--no-warnings",
11
- "--experimental-vm-modules",
12
- "--experimental-specifier-resolution=node"
11
+ "--experimental-vm-modules"
13
12
  ];
14
13
  const dirname = path.dirname(url.fileURLToPath(import.meta.url));
15
14
  const child = fork(`${dirname}/process/runner.js`, [], { execArgv });
@@ -106,6 +105,9 @@ var executeCommand = {
106
105
  }).option("state-stdin", {
107
106
  alias: "S",
108
107
  description: "Read state from stdin (instead of a file)"
108
+ }).option("timeout", {
109
+ alias: "-t",
110
+ description: "Set the timeout duration in MS"
109
111
  }).option("no-compile", {
110
112
  boolean: true,
111
113
  description: "Skip compilation"
@@ -179,7 +181,7 @@ var command_default3 = {
179
181
  // src/docgen/command.ts
180
182
  var docgenCommand = {
181
183
  command: "docgen <specifier>",
182
- desc: "Generate documentation into the repo. Specifier must include a version number.",
184
+ desc: false,
183
185
  handler: (argv) => {
184
186
  argv.command = "docgen";
185
187
  },
@@ -191,7 +193,7 @@ var command_default4 = docgenCommand;
191
193
 
192
194
  // src/docs/command.ts
193
195
  var command_default5 = {
194
- command: "docs [adaptor] [operation]",
196
+ command: "docs <adaptor> [operation]",
195
197
  desc: "Print help for an adaptor function. You can use short-hand for adaptor names (ie, common instead of @openfn/language-common)",
196
198
  handler: (argv) => {
197
199
  argv.command = "docs";
@@ -207,7 +209,12 @@ var cmd = yargs(hideBin(process.argv)).command(command_default).command(command_
207
209
  }).example("openfn execute help", "Show documentation for the execute command").example(
208
210
  "openfn docs @openfn/language-common each",
209
211
  "Get more help on the common.each command"
210
- ).alias("v", "version").help();
212
+ ).command({
213
+ command: "version",
214
+ handler: (argv) => {
215
+ argv.command = "version";
216
+ }
217
+ }).help();
211
218
 
212
219
  // src/index.ts
213
220
  var opts = cmd.parse();
@@ -39,6 +39,9 @@ var componentShorthands = {
39
39
  var isValidComponent = (v) => /^(cli|runtime|compiler|job|default)$/i.test(v);
40
40
  var ensureLogOpts = (opts) => {
41
41
  const components = {};
42
+ if (opts.command === "version" || opts.command === "test" && !opts.log) {
43
+ return { default: "info" };
44
+ }
42
45
  if (opts.log) {
43
46
  opts.log.forEach((l) => {
44
47
  let component = "";
@@ -83,6 +86,7 @@ function ensureOpts(basePath = ".", opts) {
83
86
  operation: opts.operation,
84
87
  packages: opts.packages,
85
88
  stateStdin: opts.stateStdin,
89
+ timeout: opts.timeout,
86
90
  specifier: opts.specifier,
87
91
  strictOutput: opts.strictOutput ?? true,
88
92
  immutable: opts.immutable || false
@@ -146,6 +150,7 @@ var load_state_default = async (opts, log) => {
146
150
  import run, { getNameAndVersion } from "@openfn/runtime";
147
151
  var execute_default = (code, state, opts) => {
148
152
  return run(code, state, {
153
+ timeout: opts.timeout,
149
154
  immutableState: opts.immutable,
150
155
  logger: logger_default(RUNTIME, opts),
151
156
  jobLogger: logger_default(JOB, opts),
@@ -216,11 +221,10 @@ var resolveSpecifierPath = async (pattern, repoDir, log) => {
216
221
  return null;
217
222
  };
218
223
  var loadTransformOptions = async (opts, log) => {
219
- var _a;
220
224
  const options = {
221
225
  logger: log
222
226
  };
223
- if ((_a = opts.adaptors) == null ? void 0 : _a.length) {
227
+ if (opts.adaptors?.length) {
224
228
  let exports;
225
229
  const [pattern] = opts.adaptors;
226
230
  const [specifier] = pattern.split("=");
@@ -290,7 +294,7 @@ import { install as rtInstall, loadRepoPkg } from "@openfn/runtime";
290
294
 
291
295
  // src/util/expand-adaptors.ts
292
296
  var nullLogger = createNullLogger();
293
- var expand_adaptors_default = (names, log = nullLogger) => names == null ? void 0 : names.map((name) => {
297
+ var expand_adaptors_default = (names, log = nullLogger) => names?.map((name) => {
294
298
  if (name.startsWith("@openfn/language-")) {
295
299
  return name;
296
300
  }
@@ -368,9 +372,8 @@ var list = async (options, logger) => {
368
372
 
369
373
  // src/execute/handler.ts
370
374
  var getAutoinstallTargets = (options) => {
371
- var _a;
372
375
  if (options.autoinstall && options.adaptors) {
373
- return (_a = options.adaptors) == null ? void 0 : _a.filter((a) => !/=/.test(a));
376
+ return options.adaptors?.filter((a) => !/=/.test(a));
374
377
  }
375
378
  return [];
376
379
  };
@@ -531,13 +534,19 @@ var handler_default4 = docgenHandler;
531
534
  // src/docs/handler.ts
532
535
  import { readFile } from "node:fs/promises";
533
536
  import { getNameAndVersion as getNameAndVersion3, getLatestVersion } from "@openfn/runtime";
534
- var describe = (adaptorName, fn) => `## ${fn.name}(${fn.parameters.map(({ name }) => name).join(",")})
537
+ var describeFn = (adaptorName, fn) => `## ${fn.name}(${fn.parameters.map(({ name }) => name).join(",")})
535
538
 
536
539
  ${fn.description}
537
540
 
538
541
  ### Usage Examples
539
542
 
540
- ${fn.examples.length ? fn.examples.map((eg) => eg).join("\n\n") : "None"}
543
+ ${fn.examples.length ? fn.examples.map(({ code, caption }) => {
544
+ if (caption) {
545
+ return `${caption}:
546
+ ${code}`;
547
+ }
548
+ return code;
549
+ }).join("\n\n") : "None"}
541
550
 
542
551
  ### API Reference
543
552
 
@@ -546,13 +555,17 @@ https://docs.openfn.org/adaptors/packages/${adaptorName.replace(
546
555
  ""
547
556
  )}-docs#${fn.name}
548
557
  `;
558
+ var describeLib = (adaptorName, data) => `## ${adaptorName} ${data.version}
559
+
560
+ ${data.functions.map((fn) => ` ${fn.name}(${fn.parameters.map((p) => p.name).join(", ")})`).sort().join("\n")}
561
+ `;
549
562
  var docsHandler = async (options, logger) => {
550
563
  const { adaptor, operation, repoDir } = options;
551
564
  const [adaptorName] = expand_adaptors_default([adaptor], logger);
552
565
  let { name, version } = getNameAndVersion3(adaptorName);
553
566
  if (!version) {
554
567
  logger.info("No version number provided, looking for latest...");
555
- version = await getLatestVersion(version);
568
+ version = await getLatestVersion(name);
556
569
  logger.info("Found ", version);
557
570
  logger.success(`Showing docs for ${adaptorName} v${version}`);
558
571
  }
@@ -567,11 +580,17 @@ var docsHandler = async (options, logger) => {
567
580
  if (path3) {
568
581
  const source = await readFile(path3, "utf8");
569
582
  const data = JSON.parse(source);
570
- const fn = data.functions.find(({ name: name2 }) => name2 === operation);
571
- logger.debug("Operation schema:", fn);
572
- logger.success(`Documentation for ${name}.${operation} v${version}:
583
+ let desc;
584
+ if (operation) {
585
+ const fn = data.functions.find(({ name: name2 }) => name2 === operation);
586
+ logger.debug("Operation schema:", fn);
587
+ logger.success(`Documentation for ${name}.${operation} v${version}:
573
588
  `);
574
- const desc = describe(name, fn);
589
+ desc = describeFn(name, fn);
590
+ } else {
591
+ logger.debug("No operation provided, listing available operations");
592
+ desc = describeLib(name, data);
593
+ }
575
594
  logger.print(desc);
576
595
  logger.success("Done!");
577
596
  } else {
@@ -580,6 +599,22 @@ var docsHandler = async (options, logger) => {
580
599
  };
581
600
  var handler_default5 = docsHandler;
582
601
 
602
+ // src/util/print-versions.ts
603
+ import { mainSymbols } from "figures";
604
+ var { triangleRightSmall: t } = mainSymbols;
605
+ var printVersions = async (logger) => {
606
+ const pkg = await import("../../package.json", { assert: { type: "json" } });
607
+ const { version, dependencies } = pkg.default;
608
+ const compilerVersion = dependencies["@openfn/compiler"];
609
+ const runtimeVersion = dependencies["@openfn/runtime"];
610
+ logger.info(`Versions:
611
+ ${t} Node.js ${process.version.substring(1)}
612
+ ${t} cli ${version}
613
+ ${t} runtime ${runtimeVersion}
614
+ ${t} compiler ${compilerVersion}`);
615
+ };
616
+ var print_versions_default = printVersions;
617
+
583
618
  // src/commands.ts
584
619
  var handlers = {
585
620
  execute: handler_default,
@@ -590,15 +625,19 @@ var handlers = {
590
625
  ["repo-clean"]: clean,
591
626
  ["repo-install"]: install,
592
627
  ["repo-pwd"]: pwd,
593
- ["repo-list"]: list
628
+ ["repo-list"]: list,
629
+ version: async (_opts, logger) => print_versions_default(logger)
594
630
  };
595
631
  var parse = async (basePath, options, log) => {
596
632
  const opts = ensureOpts(basePath, options);
597
633
  const logger = log || logger_default(CLI, opts);
634
+ if (opts.command === "execute" || opts.command === "test") {
635
+ await print_versions_default(logger);
636
+ }
598
637
  if (opts.adaptors && opts.expand) {
599
638
  opts.adaptors = expand_adaptors_default(opts.adaptors, logger);
600
639
  }
601
- if (opts.command == "test" && !opts.repoDir) {
640
+ if (/^(test|version)$/.test(opts.command) && !opts.repoDir) {
602
641
  logger.warn(
603
642
  "WARNING: no repo module dir found! Using the default (/tmp/repo)"
604
643
  );
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@openfn/cli",
3
- "version": "0.0.22",
3
+ "version": "0.0.24",
4
4
  "description": "CLI devtools for the openfn toolchain.",
5
5
  "engines": {
6
- "node": ">=16",
6
+ "node": ">=18",
7
7
  "pnpm": ">=7"
8
8
  },
9
9
  "exports": {
@@ -36,11 +36,12 @@
36
36
  "typescript": "^4.7.4"
37
37
  },
38
38
  "dependencies": {
39
- "@openfn/compiler": "0.0.20",
40
- "@openfn/describe-package": "0.0.13",
39
+ "@openfn/compiler": "0.0.22",
40
+ "@openfn/describe-package": "0.0.14",
41
41
  "@openfn/logger": "0.0.8",
42
- "@openfn/runtime": "0.0.13",
42
+ "@openfn/runtime": "0.0.14",
43
43
  "fast-safe-stringify": "^2.1.1",
44
+ "figures": "^5.0.0",
44
45
  "rimraf": "^3.0.2",
45
46
  "treeify": "^1.1.0",
46
47
  "yargs": "^17.5.1"