@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 +2 -2
- package/dist/process/runner.js +74 -60
- package/package.json +4 -4
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.
|
|
60
|
-
job.
|
|
59
|
+
if (job.adaptors) {
|
|
60
|
+
job.adaptors = job.adaptors.map(expand);
|
|
61
61
|
}
|
|
62
62
|
});
|
|
63
63
|
return plan;
|
package/dist/process/runner.js
CHANGED
|
@@ -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
|
-
|
|
273
|
-
const { name, ...maybeVersionAndPath } = extractInfo(
|
|
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
|
-
|
|
311
|
-
adaptors[
|
|
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
|
-
|
|
487
|
-
const
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
path9,
|
|
495
|
-
|
|
496
|
-
log
|
|
497
|
-
|
|
498
|
-
|
|
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
|
-
|
|
504
|
-
|
|
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.
|
|
657
|
-
job.
|
|
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.
|
|
703
|
-
job.
|
|
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 = {
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
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
|
-
"
|
|
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 (
|
|
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
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
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,
|
|
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 (
|
|
1691
|
-
|
|
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 (
|
|
1703
|
-
|
|
1704
|
-
|
|
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.
|
|
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.
|
|
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/
|
|
54
|
-
"@openfn/runtime": "1.4.2"
|
|
54
|
+
"@openfn/runtime": "1.5.0"
|
|
55
55
|
},
|
|
56
56
|
"files": [
|
|
57
57
|
"dist",
|