@openfn/cli 1.8.5 → 1.8.6

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
@@ -56,8 +56,8 @@ var expand_adaptors_default = (input) => {
56
56
  const plan = input;
57
57
  Object.values(plan.workflow.steps).forEach((step) => {
58
58
  const job = step;
59
- if (job.adaptor) {
60
- job.adaptor = expand(job.adaptor);
59
+ if (job.adaptors) {
60
+ job.adaptors = job.adaptors.map(expand);
61
61
  }
62
62
  });
63
63
  return plan;
@@ -269,10 +269,10 @@ function parseAdaptors(plan) {
269
269
  const adaptors = {};
270
270
  Object.values(plan.workflow.steps).forEach((step) => {
271
271
  const job = step;
272
- if (job.adaptor) {
273
- const { name, ...maybeVersionAndPath } = extractInfo(job.adaptor);
272
+ job.adaptors?.forEach((adaptor) => {
273
+ const { name, ...maybeVersionAndPath } = extractInfo(adaptor);
274
274
  adaptors[name] = maybeVersionAndPath;
275
- }
275
+ });
276
276
  });
277
277
  return adaptors;
278
278
  }
@@ -307,9 +307,9 @@ var getAutoinstallTargets = (plan) => {
307
307
  const adaptors = {};
308
308
  Object.values(plan.workflow.steps).forEach((step) => {
309
309
  const job = step;
310
- if (job.adaptor && !/=/.test(job.adaptor)) {
311
- adaptors[job.adaptor] = true;
312
- }
310
+ job.adaptors?.filter((adaptor) => !/=/.test(adaptor)).forEach((adaptor) => {
311
+ adaptors[adaptor] = true;
312
+ });
313
313
  });
314
314
  return Object.keys(adaptors);
315
315
  };
@@ -443,11 +443,9 @@ var compileWorkflow = async (plan, opts, log) => {
443
443
  for (const step of plan.workflow.steps) {
444
444
  const job = step;
445
445
  const jobOpts = {
446
- ...opts
446
+ ...opts,
447
+ adaptors: job.adaptors ?? opts.adaptors
447
448
  };
448
- if (job.adaptor) {
449
- jobOpts.adaptors = [job.adaptor];
450
- }
451
449
  if (job.expression) {
452
450
  job.expression = await compileJob(
453
451
  job.expression,
@@ -483,33 +481,32 @@ var loadTransformOptions = async (opts, log) => {
483
481
  logger: log || logger_default(COMPILER, opts)
484
482
  };
485
483
  if (opts.adaptors?.length && opts.ignoreImports != true) {
486
- let exports;
487
- const [pattern] = opts.adaptors;
488
- const [specifier] = pattern.split("=");
489
- log.debug(`Trying to preload types for ${specifier}`);
490
- const path9 = await resolveSpecifierPath(pattern, opts.repoDir, log);
491
- if (path9) {
492
- try {
493
- exports = await preloadAdaptorExports(
494
- path9,
495
- opts.useAdaptorsMonorepo,
496
- log
497
- );
498
- } catch (e) {
499
- log.error(`Failed to load adaptor typedefs from path ${path9}`);
500
- log.error(e);
484
+ const adaptorsConfig = [];
485
+ for (const adaptorInput of opts.adaptors) {
486
+ let exports;
487
+ const [specifier] = adaptorInput.split("=");
488
+ log.debug(`Trying to preload types for ${specifier}`);
489
+ const path9 = await resolveSpecifierPath(adaptorInput, opts.repoDir, log);
490
+ if (path9) {
491
+ try {
492
+ exports = await preloadAdaptorExports(path9, log);
493
+ } catch (e) {
494
+ log.error(`Failed to load adaptor typedefs from path ${path9}`);
495
+ log.error(e);
496
+ }
501
497
  }
502
- }
503
- if (!exports || exports.length === 0) {
504
- log.debug(`No module exports found for ${pattern}`);
505
- }
506
- options["add-imports"] = {
507
- ignore: opts.ignoreImports,
508
- adaptor: {
498
+ if (!exports || exports.length === 0) {
499
+ log.debug(`No module exports found for ${adaptorInput}`);
500
+ }
501
+ adaptorsConfig.push({
509
502
  name: stripVersionSpecifier(specifier),
510
503
  exports,
511
504
  exportAll: true
512
- }
505
+ });
506
+ }
507
+ options["add-imports"] = {
508
+ ignore: opts.ignoreImports,
509
+ adaptors: adaptorsConfig
513
510
  };
514
511
  }
515
512
  return options;
@@ -653,8 +650,8 @@ var expand_adaptors_default = (input) => {
653
650
  const plan = input;
654
651
  Object.values(plan.workflow.steps).forEach((step) => {
655
652
  const job = step;
656
- if (job.adaptor) {
657
- job.adaptor = expand(job.adaptor);
653
+ if (job.adaptors) {
654
+ job.adaptors = job.adaptors.map(expand);
658
655
  }
659
656
  });
660
657
  return plan;
@@ -699,8 +696,10 @@ var mapAdaptorsToMonorepo = (monorepoPath = "", input = [], log) => {
699
696
  const plan = input;
700
697
  Object.values(plan.workflow.steps).forEach((step) => {
701
698
  const job = step;
702
- if (job.adaptor) {
703
- job.adaptor = updatePath(job.adaptor, monorepoPath, log);
699
+ if (job.adaptors) {
700
+ job.adaptors = job.adaptors.map(
701
+ (a) => updatePath(a, monorepoPath, log)
702
+ );
704
703
  }
705
704
  });
706
705
  return plan;
@@ -767,13 +766,11 @@ var loadExpression = async (options, logger) => {
767
766
  try {
768
767
  const expression = await fs3.readFile(expressionPath, "utf8");
769
768
  const name = path4.parse(expressionPath).name;
770
- const step = { expression };
771
- if (options.adaptors) {
772
- const [adaptor] = options.adaptors;
773
- if (adaptor) {
774
- step.adaptor = adaptor;
775
- }
776
- }
769
+ const step = {
770
+ expression,
771
+ // The adaptor should have been expanded nicely already, so we don't need intervene here
772
+ adaptors: options.adaptors ?? []
773
+ };
777
774
  const wfOptions = {};
778
775
  maybeAssign(options, wfOptions, ["timeout"]);
779
776
  const plan = {
@@ -868,6 +865,16 @@ var importExpressions = async (plan, rootDir, log) => {
868
865
  }
869
866
  }
870
867
  };
868
+ var ensureAdaptors = (plan) => {
869
+ Object.values(plan.workflow.steps).forEach((step) => {
870
+ const job = step;
871
+ if (job.adaptor) {
872
+ job.adaptors = [job.adaptor];
873
+ delete job.adaptor;
874
+ }
875
+ job.adaptors ??= [];
876
+ });
877
+ };
871
878
  var loadXPlan = async (plan, options, logger, defaultName = "") => {
872
879
  if (!plan.options) {
873
880
  plan.options = {};
@@ -875,6 +882,7 @@ var loadXPlan = async (plan, options, logger, defaultName = "") => {
875
882
  if (!plan.workflow.name && defaultName) {
876
883
  plan.workflow.name = defaultName;
877
884
  }
885
+ ensureAdaptors(plan);
878
886
  await importExpressions(plan, options.baseDir, logger);
879
887
  if (options.expandAdaptors) {
880
888
  expand_adaptors_default(plan);
@@ -944,7 +952,7 @@ var assertStepStructure = (step, index) => {
944
952
  "name",
945
953
  "next",
946
954
  "previous",
947
- "adaptor",
955
+ "adaptors",
948
956
  "expression",
949
957
  "state",
950
958
  "configuration",
@@ -955,7 +963,7 @@ var assertStepStructure = (step, index) => {
955
963
  throw new Error(`Invalid key "${key}" in step ${step.id || index}`);
956
964
  }
957
965
  }
958
- if ("adaptor" in step && !("expression" in step)) {
966
+ if (step.adaptors?.length && !("expression" in step)) {
959
967
  throw new Error(
960
968
  `Step ${step.id ?? index} with an adaptor must also have an expression`
961
969
  );
@@ -1646,13 +1654,11 @@ var loadVersionFromPath = (adaptorPath) => {
1646
1654
  };
1647
1655
  var printVersions = async (logger, options = {}, includeComponents = false) => {
1648
1656
  const { adaptors, logJson } = options;
1649
- let adaptor = "";
1650
- if (adaptors && adaptors.length) {
1651
- adaptor = adaptors[0];
1652
- }
1653
- let adaptorVersion;
1654
- let adaptorName = "";
1655
- if (adaptor) {
1657
+ let longestAdaptorName = "";
1658
+ const adaptorList = [];
1659
+ adaptors?.forEach((adaptor) => {
1660
+ let adaptorVersion;
1661
+ let adaptorName = "";
1656
1662
  if (adaptor.match("=")) {
1657
1663
  const [namePart, pathPart] = adaptor.split("=");
1658
1664
  adaptorVersion = loadVersionFromPath(pathPart);
@@ -1665,9 +1671,13 @@ var printVersions = async (logger, options = {}, includeComponents = false) => {
1665
1671
  adaptorName = name;
1666
1672
  adaptorVersion = version2 || "latest";
1667
1673
  }
1668
- }
1674
+ adaptorList.push([adaptorName, adaptorVersion]);
1675
+ if (adaptorName.length > longestAdaptorName.length) {
1676
+ longestAdaptorName = adaptorName;
1677
+ }
1678
+ });
1669
1679
  const longest = Math.max(
1670
- ...[NODE, CLI2, RUNTIME2, COMPILER2, adaptorName].map((s) => s.length)
1680
+ ...[NODE, CLI2, RUNTIME2, COMPILER2, longestAdaptorName].map((s) => s.length)
1671
1681
  );
1672
1682
  const prefix = (str) => ` ${t} ${str.padEnd(longest + 4, " ")}`;
1673
1683
  const dirname = path8.dirname(url.fileURLToPath(import.meta.url));
@@ -1687,8 +1697,10 @@ var printVersions = async (logger, options = {}, includeComponents = false) => {
1687
1697
  output.versions.runtime = runtimeVersion;
1688
1698
  output.versions.compiler = compilerVersion;
1689
1699
  }
1690
- if (adaptorName) {
1691
- output.versions[adaptorName] = adaptorVersion;
1700
+ if (adaptorList.length) {
1701
+ for (const [name, version2] of adaptorList) {
1702
+ output.versions[name] = version2;
1703
+ }
1692
1704
  }
1693
1705
  } else {
1694
1706
  output = `Versions:
@@ -1699,9 +1711,11 @@ ${prefix(CLI2)}${version}`;
1699
1711
  ${prefix(RUNTIME2)}${runtimeVersion}
1700
1712
  ${prefix(COMPILER2)}${compilerVersion}`;
1701
1713
  }
1702
- if (adaptorName) {
1703
- output += `
1704
- ${prefix(adaptorName)}${adaptorVersion}`;
1714
+ if (adaptorList.length) {
1715
+ for (const [name, version2] of adaptorList) {
1716
+ output += `
1717
+ ${prefix(name)}${version2}`;
1718
+ }
1705
1719
  }
1706
1720
  }
1707
1721
  logger.always(output);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openfn/cli",
3
- "version": "1.8.5",
3
+ "version": "1.8.6",
4
4
  "description": "CLI devtools for the openfn toolchain.",
5
5
  "engines": {
6
6
  "node": ">=18",
@@ -47,11 +47,11 @@
47
47
  "treeify": "^1.1.0",
48
48
  "ws": "^8.18.0",
49
49
  "yargs": "^17.7.2",
50
- "@openfn/compiler": "0.3.3",
50
+ "@openfn/compiler": "0.4.0",
51
+ "@openfn/deploy": "0.8.0",
51
52
  "@openfn/describe-package": "0.1.2",
52
53
  "@openfn/logger": "1.0.2",
53
- "@openfn/deploy": "0.8.0",
54
- "@openfn/runtime": "1.4.2"
54
+ "@openfn/runtime": "1.5.0"
55
55
  },
56
56
  "files": [
57
57
  "dist",