@sqlanvil/cli 1.30.0 → 1.32.0
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/bundle.js +59 -10
- package/package.json +2 -2
- package/worker_bundle.js +12 -0
package/bundle.js
CHANGED
|
@@ -49559,6 +49559,7 @@ var VerifyProtoErrorBehaviour;
|
|
|
49559
49559
|
})(VerifyProtoErrorBehaviour || (VerifyProtoErrorBehaviour = {}));
|
|
49560
49560
|
const Struct = google.protobuf.Struct;
|
|
49561
49561
|
const originalVerify = Struct.verify;
|
|
49562
|
+
const originalFromObject = Struct.fromObject;
|
|
49562
49563
|
Struct.verify = function (object) {
|
|
49563
49564
|
if (object && typeof object === "object" && !("fields" in object)) {
|
|
49564
49565
|
const fields = {};
|
|
@@ -49570,6 +49571,17 @@ Struct.verify = function (object) {
|
|
|
49570
49571
|
}
|
|
49571
49572
|
return originalVerify.call(this, object);
|
|
49572
49573
|
};
|
|
49574
|
+
Struct.fromObject = function (object) {
|
|
49575
|
+
if (object && typeof object === "object" && !("fields" in object)) {
|
|
49576
|
+
const fields = {};
|
|
49577
|
+
for (const [k, v] of Object.entries(object)) {
|
|
49578
|
+
fields[k] = unknownToValueShallow(v);
|
|
49579
|
+
}
|
|
49580
|
+
Object.keys(object).forEach(key => delete object[key]);
|
|
49581
|
+
object.fields = fields;
|
|
49582
|
+
}
|
|
49583
|
+
return originalFromObject.call(this, object);
|
|
49584
|
+
};
|
|
49573
49585
|
function verifyObjectMatchesProto(protoType, object, errorBehaviour = VerifyProtoErrorBehaviour.DEFAULT) {
|
|
49574
49586
|
if (Array.isArray(object)) {
|
|
49575
49587
|
throw ReferenceError(`Expected a top-level object, but found an array`);
|
|
@@ -49583,6 +49595,11 @@ function verifyObjectMatchesProto(protoType, object, errorBehaviour = VerifyProt
|
|
|
49583
49595
|
throw ReferenceError(`Invalid property value: ${verificationError}.` +
|
|
49584
49596
|
maybeGetDocsLinkPrefix(errorBehaviour, protoType));
|
|
49585
49597
|
}
|
|
49598
|
+
try {
|
|
49599
|
+
protoType.fromObject(object);
|
|
49600
|
+
}
|
|
49601
|
+
catch (_a) {
|
|
49602
|
+
}
|
|
49586
49603
|
const proto = protoType.create(object);
|
|
49587
49604
|
const protoCastObject = protoType.toObject(proto);
|
|
49588
49605
|
function checkFields(present, desired) {
|
|
@@ -49696,8 +49713,8 @@ function unknownToValueShallow(raw) {
|
|
|
49696
49713
|
|
|
49697
49714
|
const nativeRequire = typeof __webpack_require__ === "function" ? __non_webpack_require__ : require;
|
|
49698
49715
|
function globToRegExp(pattern) {
|
|
49699
|
-
const
|
|
49700
|
-
return new RegExp(`^${
|
|
49716
|
+
const escapeLiteral = (literal) => literal.replace(/[.+?^${}()|[\]\\]/g, "\\$&");
|
|
49717
|
+
return new RegExp(`^${pattern.split("*").map(escapeLiteral).join(".*")}$`);
|
|
49701
49718
|
}
|
|
49702
49719
|
function matchPatterns(patterns, values) {
|
|
49703
49720
|
const fullyQualifiedActions = [];
|
|
@@ -51079,8 +51096,8 @@ function collectEvaluationQueries(queryOrAction, concatenate, queryModifier = (q
|
|
|
51079
51096
|
.filter(validationQuery => !!validationQuery.query);
|
|
51080
51097
|
}
|
|
51081
51098
|
|
|
51082
|
-
const version = "1.
|
|
51083
|
-
const dataformVersion = "3.0.
|
|
51099
|
+
const version = "1.32.0";
|
|
51100
|
+
const dataformVersion = "3.0.66";
|
|
51084
51101
|
|
|
51085
51102
|
async function build(compiledGraph, runConfig, dbadapter) {
|
|
51086
51103
|
const prunedGraph = prune(compiledGraph, runConfig);
|
|
@@ -57562,6 +57579,7 @@ function printExecutionGraph(executionGraph, asJson) {
|
|
|
57562
57579
|
}
|
|
57563
57580
|
}
|
|
57564
57581
|
function printExecutedAction(executedAction, executionAction, dryRun) {
|
|
57582
|
+
var _a, _b;
|
|
57565
57583
|
const jobIds = executedAction.tasks
|
|
57566
57584
|
.filter(task => { var _a, _b; return (_b = (_a = task.metadata) === null || _a === void 0 ? void 0 : _a.bigquery) === null || _b === void 0 ? void 0 : _b.jobId; })
|
|
57567
57585
|
.map(task => task.metadata.bigquery.jobId);
|
|
@@ -57609,17 +57627,19 @@ function printExecutedAction(executedAction, executionAction, dryRun) {
|
|
|
57609
57627
|
return;
|
|
57610
57628
|
}
|
|
57611
57629
|
case sqlanvil.ActionResult.ExecutionStatus.SKIPPED: {
|
|
57630
|
+
const skipReason = (_b = (_a = executedAction.tasks) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.errorMessage;
|
|
57631
|
+
const skipSuffix = skipReason ? ` (${skipReason})` : "";
|
|
57612
57632
|
switch (executionAction.type) {
|
|
57613
57633
|
case "table": {
|
|
57614
|
-
writeStdOut(`${warningOutput("Skipping dataset creation: ")} ${datasetString(executionAction.target, executionAction.tableType, executionAction.tasks.length === 0)}`);
|
|
57634
|
+
writeStdOut(`${warningOutput("Skipping dataset creation: ")} ${datasetString(executionAction.target, executionAction.tableType, executionAction.tasks.length === 0)}${skipSuffix}`);
|
|
57615
57635
|
return;
|
|
57616
57636
|
}
|
|
57617
57637
|
case "assertion": {
|
|
57618
|
-
writeStdOut(`${warningOutput("Skipping assertion execution: ")} ${assertionString(executionAction.target, executionAction.tasks.length === 0)}`);
|
|
57638
|
+
writeStdOut(`${warningOutput("Skipping assertion execution: ")} ${assertionString(executionAction.target, executionAction.tasks.length === 0)}${skipSuffix}`);
|
|
57619
57639
|
return;
|
|
57620
57640
|
}
|
|
57621
57641
|
case "operation": {
|
|
57622
|
-
writeStdOut(`${warningOutput("Skipping operation execution: ")} ${operationString(executionAction.target, executionAction.tasks.length === 0)}`);
|
|
57642
|
+
writeStdOut(`${warningOutput("Skipping operation execution: ")} ${operationString(executionAction.target, executionAction.tasks.length === 0)}${skipSuffix}`);
|
|
57623
57643
|
return;
|
|
57624
57644
|
}
|
|
57625
57645
|
}
|
|
@@ -57701,7 +57721,7 @@ function dotRepresentation(graph, interactive) {
|
|
|
57701
57721
|
(_c = graph.operations) === null || _c === void 0 ? void 0 : _c.forEach(operation => {
|
|
57702
57722
|
var _a;
|
|
57703
57723
|
const nodeName = `${formatTarget(operation.target)}`;
|
|
57704
|
-
nodes.push(`"${nodeName}" [label="${formatTarget(operation.target)}"`);
|
|
57724
|
+
nodes.push(`"${nodeName}" [label="${formatTarget(operation.target)}"]`);
|
|
57705
57725
|
(_a = operation.dependencyTargets) === null || _a === void 0 ? void 0 : _a.forEach(dependencyTarget => {
|
|
57706
57726
|
edges.push(`"${formatTarget(dependencyTarget)}" -> "${nodeName}"`);
|
|
57707
57727
|
});
|
|
@@ -59389,6 +59409,14 @@ const timeoutOption = option("timeout", {
|
|
|
59389
59409
|
default: null,
|
|
59390
59410
|
coerce: (rawTimeoutString) => rawTimeoutString ? parseDuration__default["default"](rawTimeoutString) : null
|
|
59391
59411
|
});
|
|
59412
|
+
const executionTimeoutOption = option("execution-timeout", {
|
|
59413
|
+
describe: "Wall-clock deadline for the entire run (compile + all actions). When it fires, " +
|
|
59414
|
+
"in-flight actions are cancelled and pending actions are skipped. Off by default. " +
|
|
59415
|
+
"Examples: '10m', '2h'.",
|
|
59416
|
+
type: "string",
|
|
59417
|
+
default: null,
|
|
59418
|
+
coerce: (rawTimeoutString) => rawTimeoutString ? parseDuration__default["default"](rawTimeoutString) : null
|
|
59419
|
+
});
|
|
59392
59420
|
const noArtifactsOption = option("no-artifacts", {
|
|
59393
59421
|
describe: "Skip writing the queryable Parquet artifacts under target/ (catalog on compile; run history " +
|
|
59394
59422
|
"on run).",
|
|
@@ -59461,6 +59489,7 @@ const verboseOptionName = "verbose";
|
|
|
59461
59489
|
const dryRunOptionName = "dry-run";
|
|
59462
59490
|
const runTestsOptionName = "run-tests";
|
|
59463
59491
|
const checkOptionName = "check";
|
|
59492
|
+
const ignoreJsFilesOptionName = "ignore-js-files";
|
|
59464
59493
|
const actionRetryLimitName = "action-retry-limit";
|
|
59465
59494
|
function getCredentialsPath(projectDir, credentialsPath) {
|
|
59466
59495
|
return actuallyResolve(projectDir, credentialsPath);
|
|
@@ -60024,6 +60053,7 @@ function runCli() {
|
|
|
60024
60053
|
credentialsOption,
|
|
60025
60054
|
jsonOutputOption,
|
|
60026
60055
|
timeoutOption,
|
|
60056
|
+
executionTimeoutOption,
|
|
60027
60057
|
tagsOption,
|
|
60028
60058
|
bigqueryJobLabelsOption,
|
|
60029
60059
|
noArtifactsOption,
|
|
@@ -60107,7 +60137,8 @@ function runCli() {
|
|
|
60107
60137
|
actions: argv[actionsOption.name],
|
|
60108
60138
|
includeDependencies: argv[includeDepsOption.name],
|
|
60109
60139
|
includeDependents: argv[includeDependentsOption.name],
|
|
60110
|
-
tags: argv[tagsOption.name]
|
|
60140
|
+
tags: argv[tagsOption.name],
|
|
60141
|
+
timeoutMillis: argv[executionTimeoutOption.name] || undefined
|
|
60111
60142
|
}, dbadapter);
|
|
60112
60143
|
if (argv[dryRunOptionName] && argv[jsonOutputOption.name]) {
|
|
60113
60144
|
printExecutionGraph(executionGraph, argv[jsonOutputOption.name]);
|
|
@@ -60176,6 +60207,18 @@ function runCli() {
|
|
|
60176
60207
|
runner.onChange(printExecutedGraph);
|
|
60177
60208
|
const runResult = await runner.result();
|
|
60178
60209
|
printExecutedGraph(runResult);
|
|
60210
|
+
if (!argv[jsonOutputOption.name]) {
|
|
60211
|
+
if (runResult.status === sqlanvil.RunResult.ExecutionStatus.TIMED_OUT) {
|
|
60212
|
+
const executionTimeoutMillis = argv[executionTimeoutOption.name];
|
|
60213
|
+
const suffix = executionTimeoutMillis
|
|
60214
|
+
? ` after ${executionTimeoutMillis / 1000} seconds (--execution-timeout)`
|
|
60215
|
+
: "";
|
|
60216
|
+
printError(`Run timed out${suffix}.`);
|
|
60217
|
+
}
|
|
60218
|
+
else if (runResult.status === sqlanvil.RunResult.ExecutionStatus.CANCELLED) {
|
|
60219
|
+
printError("Run cancelled.");
|
|
60220
|
+
}
|
|
60221
|
+
}
|
|
60179
60222
|
if (!argv[noArtifactsOption.name]) {
|
|
60180
60223
|
await safeWriteArtifacts(compiledGraph, argv[projectDirOption.name], {
|
|
60181
60224
|
runResult,
|
|
@@ -60227,10 +60270,16 @@ function runCli() {
|
|
|
60227
60270
|
describe: "Check if files are formatted correctly without modifying them.",
|
|
60228
60271
|
type: "boolean",
|
|
60229
60272
|
default: false
|
|
60273
|
+
}),
|
|
60274
|
+
option(ignoreJsFilesOptionName, {
|
|
60275
|
+
describe: "If set, the formatter will not consider javascript files (.js).",
|
|
60276
|
+
type: "boolean",
|
|
60277
|
+
default: false
|
|
60230
60278
|
})
|
|
60231
60279
|
],
|
|
60232
60280
|
processFn: async (argv) => {
|
|
60233
|
-
|
|
60281
|
+
const extensions = argv[ignoreJsFilesOptionName] ? "*.sqlx" : "*.{js,sqlx}";
|
|
60282
|
+
let actions = [`{definitions,includes}/**/${extensions}`];
|
|
60234
60283
|
if (actionsOption.name in argv && argv[actionsOption.name].length > 0) {
|
|
60235
60284
|
actions = argv[actionsOption.name];
|
|
60236
60285
|
}
|
package/package.json
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"tmp": "^0.2.7",
|
|
25
25
|
"typeid-js": "0.3.0",
|
|
26
26
|
"untildify": "^4.0.0",
|
|
27
|
-
"vm2": "3.11.
|
|
27
|
+
"vm2": "3.11.6",
|
|
28
28
|
"yargs": "^16.2.0"
|
|
29
29
|
},
|
|
30
30
|
"resolutions": {
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
"bin": {
|
|
74
74
|
"sqlanvil": "bundle.js"
|
|
75
75
|
},
|
|
76
|
-
"version": "1.
|
|
76
|
+
"version": "1.32.0",
|
|
77
77
|
"name": "@sqlanvil/cli",
|
|
78
78
|
"description": "sqlanvil command line interface.",
|
|
79
79
|
"main": "bundle.js"
|
package/worker_bundle.js
CHANGED
|
@@ -49495,6 +49495,7 @@ var VerifyProtoErrorBehaviour;
|
|
|
49495
49495
|
})(VerifyProtoErrorBehaviour || (VerifyProtoErrorBehaviour = {}));
|
|
49496
49496
|
const Struct = google.protobuf.Struct;
|
|
49497
49497
|
const originalVerify = Struct.verify;
|
|
49498
|
+
const originalFromObject = Struct.fromObject;
|
|
49498
49499
|
Struct.verify = function (object) {
|
|
49499
49500
|
if (object && typeof object === "object" && !("fields" in object)) {
|
|
49500
49501
|
const fields = {};
|
|
@@ -49506,6 +49507,17 @@ Struct.verify = function (object) {
|
|
|
49506
49507
|
}
|
|
49507
49508
|
return originalVerify.call(this, object);
|
|
49508
49509
|
};
|
|
49510
|
+
Struct.fromObject = function (object) {
|
|
49511
|
+
if (object && typeof object === "object" && !("fields" in object)) {
|
|
49512
|
+
const fields = {};
|
|
49513
|
+
for (const [k, v] of Object.entries(object)) {
|
|
49514
|
+
fields[k] = unknownToValueShallow(v);
|
|
49515
|
+
}
|
|
49516
|
+
Object.keys(object).forEach(key => delete object[key]);
|
|
49517
|
+
object.fields = fields;
|
|
49518
|
+
}
|
|
49519
|
+
return originalFromObject.call(this, object);
|
|
49520
|
+
};
|
|
49509
49521
|
function encode64(protoType, value = {}) {
|
|
49510
49522
|
return toBase64(protoType.encode(protoType.create(value)).finish());
|
|
49511
49523
|
}
|