@quenty/nevermore-cli 4.43.4 → 4.44.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/CHANGELOG.md +4 -0
- package/build-scripts/{combine-test-places.luau → combine-test-places.lua} +3 -3
- package/build-scripts/{transform-inject-deploy-metadata.luau → transform-inject-deploy-metadata.lua} +3 -3
- package/dist/commands/batch-command/batch-deploy-command.js +4 -4
- package/dist/commands/batch-command/batch-deploy-command.js.map +1 -1
- package/dist/commands/batch-command/batch-test-command.d.ts.map +1 -1
- package/dist/commands/batch-command/batch-test-command.js +76 -19
- package/dist/commands/batch-command/batch-test-command.js.map +1 -1
- package/dist/commands/deploy-command/deploy-init-utils.d.ts.map +1 -1
- package/dist/commands/deploy-command/deploy-init-utils.js +7 -1
- package/dist/commands/deploy-command/deploy-init-utils.js.map +1 -1
- package/dist/commands/deploy-command/index.js +1 -1
- package/dist/commands/deploy-command/index.js.map +1 -1
- package/dist/utils/deploy/deploy-github-columns.d.ts +12 -2
- package/dist/utils/deploy/deploy-github-columns.d.ts.map +1 -1
- package/dist/utils/deploy/deploy-github-columns.js +11 -4
- package/dist/utils/deploy/deploy-github-columns.js.map +1 -1
- package/dist/utils/deploy/deploy-metadata.js +1 -1
- package/dist/utils/deploy/deploy-metadata.js.map +1 -1
- package/dist/utils/job-context/base-job-context.d.ts +2 -2
- package/dist/utils/job-context/base-job-context.d.ts.map +1 -1
- package/dist/utils/job-context/base-job-context.js +1 -1
- package/dist/utils/job-context/base-job-context.js.map +1 -1
- package/dist/utils/job-context/batch-script-job-context.d.ts +37 -2
- package/dist/utils/job-context/batch-script-job-context.d.ts.map +1 -1
- package/dist/utils/job-context/batch-script-job-context.js +59 -22
- package/dist/utils/job-context/batch-script-job-context.js.map +1 -1
- package/dist/utils/job-context/cloud-job-context.d.ts +2 -2
- package/dist/utils/job-context/cloud-job-context.d.ts.map +1 -1
- package/dist/utils/job-context/cloud-job-context.js +10 -5
- package/dist/utils/job-context/cloud-job-context.js.map +1 -1
- package/dist/utils/job-context/cloud-job-context.test.d.ts +7 -0
- package/dist/utils/job-context/cloud-job-context.test.d.ts.map +1 -0
- package/dist/utils/job-context/cloud-job-context.test.js +91 -0
- package/dist/utils/job-context/cloud-job-context.test.js.map +1 -0
- package/dist/utils/job-context/job-context.d.ts +70 -2
- package/dist/utils/job-context/job-context.d.ts.map +1 -1
- package/dist/utils/job-context/local-job-context.d.ts +2 -2
- package/dist/utils/job-context/local-job-context.d.ts.map +1 -1
- package/dist/utils/job-context/local-job-context.js +4 -2
- package/dist/utils/job-context/local-job-context.js.map +1 -1
- package/dist/utils/job-context/local-job-context.test.d.ts +7 -0
- package/dist/utils/job-context/local-job-context.test.d.ts.map +1 -0
- package/dist/utils/job-context/local-job-context.test.js +68 -0
- package/dist/utils/job-context/local-job-context.test.js.map +1 -0
- package/dist/utils/open-cloud/open-cloud-client.d.ts +50 -7
- package/dist/utils/open-cloud/open-cloud-client.d.ts.map +1 -1
- package/dist/utils/open-cloud/open-cloud-client.js +49 -13
- package/dist/utils/open-cloud/open-cloud-client.js.map +1 -1
- package/dist/utils/open-cloud/open-cloud-client.test.js +125 -1
- package/dist/utils/open-cloud/open-cloud-client.test.js.map +1 -1
- package/dist/utils/open-cloud/open-cloud-logs.characterization.test.d.ts +22 -0
- package/dist/utils/open-cloud/open-cloud-logs.characterization.test.d.ts.map +1 -0
- package/dist/utils/open-cloud/open-cloud-logs.characterization.test.js +202 -0
- package/dist/utils/open-cloud/open-cloud-logs.characterization.test.js.map +1 -0
- package/dist/utils/package-manager-utils.d.ts.map +1 -1
- package/dist/utils/package-manager-utils.js +32 -1
- package/dist/utils/package-manager-utils.js.map +1 -1
- package/dist/utils/package-manager-utils.test.js +25 -0
- package/dist/utils/package-manager-utils.test.js.map +1 -1
- package/dist/utils/testing/batch-run.e2e.test.d.ts +17 -0
- package/dist/utils/testing/batch-run.e2e.test.d.ts.map +1 -0
- package/dist/utils/testing/batch-run.e2e.test.js +343 -0
- package/dist/utils/testing/batch-run.e2e.test.js.map +1 -0
- package/dist/utils/testing/batch-test-runner-template.test.d.ts +11 -0
- package/dist/utils/testing/batch-test-runner-template.test.d.ts.map +1 -0
- package/dist/utils/testing/batch-test-runner-template.test.js +38 -0
- package/dist/utils/testing/batch-test-runner-template.test.js.map +1 -0
- package/dist/utils/testing/log-fetch-stats.d.ts +40 -0
- package/dist/utils/testing/log-fetch-stats.d.ts.map +1 -0
- package/dist/utils/testing/log-fetch-stats.js +18 -0
- package/dist/utils/testing/log-fetch-stats.js.map +1 -0
- package/dist/utils/testing/log-fetch-stats.test.d.ts +2 -0
- package/dist/utils/testing/log-fetch-stats.test.d.ts.map +1 -0
- package/dist/utils/testing/log-fetch-stats.test.js +41 -0
- package/dist/utils/testing/log-fetch-stats.test.js.map +1 -0
- package/dist/utils/testing/parsers/batch-log-parser.d.ts +126 -1
- package/dist/utils/testing/parsers/batch-log-parser.d.ts.map +1 -1
- package/dist/utils/testing/parsers/batch-log-parser.js +440 -103
- package/dist/utils/testing/parsers/batch-log-parser.js.map +1 -1
- package/dist/utils/testing/parsers/batch-log-parser.test.js +494 -1
- package/dist/utils/testing/parsers/batch-log-parser.test.js.map +1 -1
- package/dist/utils/testing/parsers/batch-log-renderer.d.ts +79 -0
- package/dist/utils/testing/parsers/batch-log-renderer.d.ts.map +1 -0
- package/dist/utils/testing/parsers/batch-log-renderer.js +241 -0
- package/dist/utils/testing/parsers/batch-log-renderer.js.map +1 -0
- package/dist/utils/testing/parsers/batch-log-renderer.test.d.ts +2 -0
- package/dist/utils/testing/parsers/batch-log-renderer.test.d.ts.map +1 -0
- package/dist/utils/testing/parsers/batch-log-renderer.test.js +202 -0
- package/dist/utils/testing/parsers/batch-log-renderer.test.js.map +1 -0
- package/dist/utils/testing/runner/combined-project-generator.js +1 -1
- package/dist/utils/testing/runner/combined-project-generator.js.map +1 -1
- package/dist/utils/testing/runner/test-runner.d.ts +24 -0
- package/dist/utils/testing/runner/test-runner.d.ts.map +1 -1
- package/dist/utils/testing/runner/test-runner.js +166 -6
- package/dist/utils/testing/runner/test-runner.js.map +1 -1
- package/dist/utils/testing/runner/test-runner.test.js +228 -2
- package/dist/utils/testing/runner/test-runner.test.js.map +1 -1
- package/dist/utils/testing/structured-test-results.d.ts +77 -0
- package/dist/utils/testing/structured-test-results.d.ts.map +1 -0
- package/dist/utils/testing/structured-test-results.js +140 -0
- package/dist/utils/testing/structured-test-results.js.map +1 -0
- package/dist/utils/testing/structured-test-results.test.d.ts +7 -0
- package/dist/utils/testing/structured-test-results.test.d.ts.map +1 -0
- package/dist/utils/testing/structured-test-results.test.js +179 -0
- package/dist/utils/testing/structured-test-results.test.js.map +1 -0
- package/package.json +6 -6
- package/src/commands/batch-command/batch-deploy-command.ts +4 -4
- package/src/commands/batch-command/batch-test-command.ts +94 -19
- package/src/commands/deploy-command/deploy-init-utils.ts +7 -1
- package/src/commands/deploy-command/index.ts +1 -1
- package/src/utils/deploy/deploy-github-columns.ts +14 -4
- package/src/utils/deploy/deploy-metadata.ts +1 -1
- package/src/utils/job-context/base-job-context.ts +3 -2
- package/src/utils/job-context/batch-script-job-context.ts +98 -17
- package/src/utils/job-context/cloud-job-context.test.ts +112 -0
- package/src/utils/job-context/cloud-job-context.ts +12 -6
- package/src/utils/job-context/job-context.ts +71 -2
- package/src/utils/job-context/local-job-context.test.ts +89 -0
- package/src/utils/job-context/local-job-context.ts +7 -3
- package/src/utils/open-cloud/open-cloud-client.test.ts +155 -1
- package/src/utils/open-cloud/open-cloud-client.ts +94 -18
- package/src/utils/open-cloud/open-cloud-logs.characterization.test.ts +277 -0
- package/src/utils/package-manager-utils.test.ts +27 -0
- package/src/utils/package-manager-utils.ts +34 -1
- package/src/utils/testing/batch-run.e2e.test.ts +425 -0
- package/src/utils/testing/batch-test-runner-template.test.ts +62 -0
- package/src/utils/testing/log-fetch-stats.test.ts +48 -0
- package/src/utils/testing/log-fetch-stats.ts +55 -0
- package/src/utils/testing/parsers/batch-log-parser.test.ts +660 -1
- package/src/utils/testing/parsers/batch-log-parser.ts +721 -116
- package/src/utils/testing/parsers/batch-log-renderer.test.ts +330 -0
- package/src/utils/testing/parsers/batch-log-renderer.ts +329 -0
- package/src/utils/testing/runner/combined-project-generator.ts +1 -1
- package/src/utils/testing/runner/test-runner.test.ts +332 -2
- package/src/utils/testing/runner/test-runner.ts +231 -9
- package/src/utils/testing/structured-test-results.test.ts +267 -0
- package/src/utils/testing/structured-test-results.ts +199 -0
- package/templates/batch-test-runner.lua +242 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/templates/batch-test-runner.luau +0 -137
- /package/build-scripts/{smoke-test-server.luau → smoke-test-server.lua} +0 -0
- /package/build-scripts/{transform-rojo-merge-place.luau → transform-rojo-merge-place.lua} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-job-context.d.ts","sourceRoot":"","sources":["../../../src/utils/job-context/base-job-context.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"base-job-context.d.ts","sourceRoot":"","sources":["../../../src/utils/job-context/base-job-context.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,OAAO,EACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAiClE;;;;;;;;;GASG;AACH,8BAAsB,cAAe,YAAW,UAAU;IACxD,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC9B,SAAS,CAAC,gBAAgB,EAAE,eAAe,GAAG,SAAS,CAAC;IACxD,OAAO,CAAC,kBAAkB,CAAgC;IAC1D,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,iBAAiB,CAAsC;gBAG7D,QAAQ,EAAE,QAAQ,EAClB,eAAe,CAAC,EAAE,eAAe,EACjC,iBAAiB,CAAC,EAAE,iBAAiB;IAOjC,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAsCtE,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,qBAAqB;YAYf,4BAA4B;YA2B5B,mBAAmB;YAenB,oBAAoB;IAgF5B,sBAAsB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BnE,QAAQ,CAAC,qBAAqB,CAC5B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,UAAU,CAAC;IACtB,QAAQ,CAAC,cAAc,CACrB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAC/D,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAEtD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAiDpC"}
|
|
@@ -3,7 +3,7 @@ import * as path from 'path';
|
|
|
3
3
|
import { BuildContext, resolvePackagePath, } from '@quenty/nevermore-template-helpers';
|
|
4
4
|
import { OutputHelper } from '@quenty/cli-output-helpers';
|
|
5
5
|
import { buildPlaceAsync, } from '../build/build.js';
|
|
6
|
-
const MERGE_SCRIPT_PATH = resolvePackagePath(import.meta.url, 'build-scripts', 'transform-rojo-merge-place.
|
|
6
|
+
const MERGE_SCRIPT_PATH = resolvePackagePath(import.meta.url, 'build-scripts', 'transform-rojo-merge-place.lua');
|
|
7
7
|
class TrackedBuiltPlace {
|
|
8
8
|
rbxlPath;
|
|
9
9
|
target;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-job-context.js","sourceRoot":"","sources":["../../../src/utils/job-context/base-job-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EACL,YAAY,EACZ,kBAAkB,GACnB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EACL,eAAe,GAGhB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"base-job-context.js","sourceRoot":"","sources":["../../../src/utils/job-context/base-job-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { type Reporter } from '@quenty/cli-output-helpers/reporting';
|
|
2
|
-
import { type BuiltPlace, type Deployment, type DeployPlaceOptions, type JobContext, type RunScriptOptions, type ScriptRunResult } from './job-context.js';
|
|
2
|
+
import { type BuiltPlace, type Deployment, type DeployPlaceOptions, type JobContext, type RunScriptOptions, type ScriptRunResult, type JobLogs } from './job-context.js';
|
|
3
3
|
import { type BuildPlaceOptions } from '../build/build.js';
|
|
4
4
|
import { type BatchTarget } from '../batch/changed-packages-utils.js';
|
|
5
|
+
import { type BatchDiagnosticLevel, type BatchPackageResult } from '../testing/parsers/batch-log-parser.js';
|
|
6
|
+
import { type LogFetchStats } from '../testing/log-fetch-stats.js';
|
|
7
|
+
import { type RenderableLogLine } from '../testing/parsers/batch-log-renderer.js';
|
|
5
8
|
/**
|
|
6
9
|
* JobContext wrapper that batches all packages into a single build, upload, and
|
|
7
10
|
* execution. Wraps an inner context (cloud or local) and intercepts all methods
|
|
@@ -14,6 +17,30 @@ import { type BatchTarget } from '../batch/changed-packages-utils.js';
|
|
|
14
17
|
* package configured with one — those belong in `nevermore batch test
|
|
15
18
|
* --no-aggregated`, or in an integration deploy.
|
|
16
19
|
*/
|
|
20
|
+
/**
|
|
21
|
+
* Everything one aggregated batch produced, as data.
|
|
22
|
+
*
|
|
23
|
+
* The execution used to parse, render and print from in here. Printing from a
|
|
24
|
+
* job context put presentation in the transport, bypassed whatever reporter the
|
|
25
|
+
* command had chosen — output written straight to the console is invisible to a
|
|
26
|
+
* SpinnerReporter's capture — and left the whole path untestable without spying
|
|
27
|
+
* on `console.log`. The context returns this instead, and the command layer
|
|
28
|
+
* decides what to show.
|
|
29
|
+
*/
|
|
30
|
+
export interface BatchExecutionOutcome {
|
|
31
|
+
results: Map<string, BatchPackageResult>;
|
|
32
|
+
/** The run's output, typed by severity and not yet rendered. */
|
|
33
|
+
lines: RenderableLogLine[];
|
|
34
|
+
/** What the fetch had to do to collect it; absent for a transport that cannot say. */
|
|
35
|
+
stats?: LogFetchStats;
|
|
36
|
+
/** What reading the log turned up, to report after the log itself. */
|
|
37
|
+
diagnostics: Array<{
|
|
38
|
+
level: BatchDiagnosticLevel;
|
|
39
|
+
message: string;
|
|
40
|
+
}>;
|
|
41
|
+
/** Section slug to package name, for whoever titles the sections. */
|
|
42
|
+
slugToPackage: Map<string, string>;
|
|
43
|
+
}
|
|
17
44
|
export declare class BatchScriptJobContext implements JobContext {
|
|
18
45
|
private _inner;
|
|
19
46
|
private _batchTargets;
|
|
@@ -37,7 +64,15 @@ export declare class BatchScriptJobContext implements JobContext {
|
|
|
37
64
|
buildPlaceAsync(options: BuildPlaceOptions): Promise<BuiltPlace>;
|
|
38
65
|
deployBuiltPlaceAsync(options: DeployPlaceOptions): Promise<Deployment>;
|
|
39
66
|
runScriptAsync(deployment: Deployment, options: RunScriptOptions): Promise<ScriptRunResult>;
|
|
40
|
-
|
|
67
|
+
/**
|
|
68
|
+
* Run the batch if it has not run, and hand back everything it produced.
|
|
69
|
+
*
|
|
70
|
+
* Public so the command layer can render the run once, before the
|
|
71
|
+
* per-package loop asks for results — which is also what keeps the shared
|
|
72
|
+
* build and upload out of any one package's async context.
|
|
73
|
+
*/
|
|
74
|
+
getExecutionOutcomeAsync(): Promise<BatchExecutionOutcome>;
|
|
75
|
+
getLogsAsync(deployment: Deployment): Promise<JobLogs>;
|
|
41
76
|
releaseAsync(_deployment: Deployment): Promise<void>;
|
|
42
77
|
releaseBuiltPlaceAsync(_builtPlace: BuiltPlace): Promise<void>;
|
|
43
78
|
disposeAsync(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-script-job-context.d.ts","sourceRoot":"","sources":["../../../src/utils/job-context/batch-script-job-context.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EACL,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"batch-script-job-context.d.ts","sourceRoot":"","sources":["../../../src/utils/job-context/batch-script-job-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { resolveTemplatePath, } from '@quenty/nevermore-template-helpers';
|
|
|
3
3
|
import { OutputHelper } from '@quenty/cli-output-helpers';
|
|
4
4
|
import { generateCombinedProjectAsync, } from '../testing/runner/combined-project-generator.js';
|
|
5
5
|
import { parseBatchTestLogs, } from '../testing/parsers/batch-log-parser.js';
|
|
6
|
+
import { toRenderableLines, } from '../testing/parsers/batch-log-renderer.js';
|
|
6
7
|
/** Per-package deployment handle. Wraps a shared inner deployment. */
|
|
7
8
|
class BatchDeployment {
|
|
8
9
|
packageName;
|
|
@@ -12,18 +13,6 @@ class BatchDeployment {
|
|
|
12
13
|
this.inner = inner;
|
|
13
14
|
}
|
|
14
15
|
}
|
|
15
|
-
/**
|
|
16
|
-
* JobContext wrapper that batches all packages into a single build, upload, and
|
|
17
|
-
* execution. Wraps an inner context (cloud or local) and intercepts all methods
|
|
18
|
-
* using the lazy-promise pattern: the first concurrent call triggers the shared
|
|
19
|
-
* operation, all others await the same promise.
|
|
20
|
-
*
|
|
21
|
-
* Note that a `basePlace` cannot be honoured here: every package is combined
|
|
22
|
-
* into one place, so there is no per-package place to merge Studio content
|
|
23
|
-
* into. Rather than silently drop that content, the constructor warns for any
|
|
24
|
-
* package configured with one — those belong in `nevermore batch test
|
|
25
|
-
* --no-aggregated`, or in an integration deploy.
|
|
26
|
-
*/
|
|
27
16
|
export class BatchScriptJobContext {
|
|
28
17
|
_inner;
|
|
29
18
|
_batchTargets;
|
|
@@ -71,8 +60,8 @@ export class BatchScriptJobContext {
|
|
|
71
60
|
}
|
|
72
61
|
async runScriptAsync(deployment, options) {
|
|
73
62
|
const batchDeployment = deployment;
|
|
74
|
-
const
|
|
75
|
-
const result =
|
|
63
|
+
const { results } = await this._getBatchExecutionAsync();
|
|
64
|
+
const result = results.get(batchDeployment.packageName);
|
|
76
65
|
if (!result) {
|
|
77
66
|
return { success: false };
|
|
78
67
|
}
|
|
@@ -80,13 +69,36 @@ export class BatchScriptJobContext {
|
|
|
80
69
|
success: result.success,
|
|
81
70
|
durationMs: result.durationMs,
|
|
82
71
|
errorMessage: result.error,
|
|
72
|
+
// returnValues stays absent: one execution covers every package, so
|
|
73
|
+
// nothing it returns belongs to any single one of them. The batch runner
|
|
74
|
+
// folds each package's own results into the batch summary, which the log
|
|
75
|
+
// parser has already split back out — so they are handed over decoded
|
|
76
|
+
// rather than left for the caller to find in a return value that is not
|
|
77
|
+
// this package's.
|
|
78
|
+
testResults: result.testResults,
|
|
79
|
+
logsLost: result.logsLost,
|
|
83
80
|
};
|
|
84
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Run the batch if it has not run, and hand back everything it produced.
|
|
84
|
+
*
|
|
85
|
+
* Public so the command layer can render the run once, before the
|
|
86
|
+
* per-package loop asks for results — which is also what keeps the shared
|
|
87
|
+
* build and upload out of any one package's async context.
|
|
88
|
+
*/
|
|
89
|
+
async getExecutionOutcomeAsync() {
|
|
90
|
+
return this._getBatchExecutionAsync();
|
|
91
|
+
}
|
|
85
92
|
async getLogsAsync(deployment) {
|
|
86
93
|
const batchDeployment = deployment;
|
|
87
|
-
const
|
|
88
|
-
const result =
|
|
89
|
-
|
|
94
|
+
const { results, stats } = await this._getBatchExecutionAsync();
|
|
95
|
+
const result = results.get(batchDeployment.packageName);
|
|
96
|
+
// The text is this package's section; the stats describe the one fetch that
|
|
97
|
+
// pulled every section, which is what happened to any package whose own
|
|
98
|
+
// section went missing from it. Messages stay empty: severity is per
|
|
99
|
+
// message across the whole window, and slicing it per package would need
|
|
100
|
+
// the section boundaries the parser already resolved.
|
|
101
|
+
return { text: result?.logs ?? '', messages: [], stats };
|
|
90
102
|
}
|
|
91
103
|
async releaseAsync(_deployment) {
|
|
92
104
|
// No-op — shared deployment released in disposeAsync
|
|
@@ -198,7 +210,7 @@ export class BatchScriptJobContext {
|
|
|
198
210
|
const deployment = await this._getSharedDeploymentAsync();
|
|
199
211
|
const { slugMap } = buildState.combinedResult;
|
|
200
212
|
// Build the batch Luau script from the template
|
|
201
|
-
const templatePath = resolveTemplatePath(import.meta.url, 'batch-test-runner.
|
|
213
|
+
const templatePath = resolveTemplatePath(import.meta.url, 'batch-test-runner.lua');
|
|
202
214
|
const template = await fs.readFile(templatePath, 'utf-8');
|
|
203
215
|
const slugArray = [...slugMap.values()];
|
|
204
216
|
const batchScript = template.replaceAll('{{ PACKAGE_SLUGS_JSON }}', JSON.stringify(slugArray));
|
|
@@ -208,8 +220,9 @@ export class BatchScriptJobContext {
|
|
|
208
220
|
packageName: '_batch_',
|
|
209
221
|
timeoutMs: this._batchTimeoutMs,
|
|
210
222
|
});
|
|
211
|
-
// Fetch the combined logs
|
|
212
|
-
const
|
|
223
|
+
// Fetch the combined logs, with the severity and fetch that produced them.
|
|
224
|
+
const logs = await this._inner.getLogsAsync(deployment);
|
|
225
|
+
const rawLogs = logs.text;
|
|
213
226
|
if (!result.success) {
|
|
214
227
|
const stateInfo = result.taskState ? ` (state: ${result.taskState})` : '';
|
|
215
228
|
OutputHelper.warn(`Batch execution task did not complete successfully${stateInfo} — parsing partial results`);
|
|
@@ -221,8 +234,32 @@ export class BatchScriptJobContext {
|
|
|
221
234
|
}
|
|
222
235
|
OutputHelper.verbose(`Raw batch logs:\n${rawLogs || '(empty)'}`);
|
|
223
236
|
}
|
|
224
|
-
// Parse into per-package results
|
|
225
|
-
|
|
237
|
+
// Parse into per-package results. Diagnostics are collected rather than
|
|
238
|
+
// printed: they describe the log window, so they belong after it, and that
|
|
239
|
+
// is the caller's ordering to make.
|
|
240
|
+
const diagnostics = [];
|
|
241
|
+
const results = parseBatchTestLogs(rawLogs, slugMap, {
|
|
242
|
+
logFetchStats: logs.stats,
|
|
243
|
+
// The batch script returns the same summary it prints. Handing both over
|
|
244
|
+
// lets the parser read the copy that cannot arrive truncated, and fall
|
|
245
|
+
// back to the printed one on a transport that carries no return channel.
|
|
246
|
+
returnValues: result.returnValues,
|
|
247
|
+
onDiagnostic: (level, message) => diagnostics.push({ level, message }),
|
|
248
|
+
});
|
|
249
|
+
const slugToPackage = new Map();
|
|
250
|
+
for (const [packageName, slug] of slugMap) {
|
|
251
|
+
slugToPackage.set(slug, packageName);
|
|
252
|
+
}
|
|
253
|
+
// Typed messages when the transport carries severity; otherwise the joined
|
|
254
|
+
// text, which renders uncolored rather than guessed at.
|
|
255
|
+
const messages = logs.messages.length > 0 ? logs.messages : [{ message: rawLogs }];
|
|
256
|
+
return {
|
|
257
|
+
results,
|
|
258
|
+
lines: toRenderableLines(messages),
|
|
259
|
+
stats: logs.stats,
|
|
260
|
+
diagnostics,
|
|
261
|
+
slugToPackage,
|
|
262
|
+
};
|
|
226
263
|
}
|
|
227
264
|
}
|
|
228
265
|
//# sourceMappingURL=batch-script-job-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-script-job-context.js","sourceRoot":"","sources":["../../../src/utils/job-context/batch-script-job-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAEL,mBAAmB,GACpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"batch-script-job-context.js","sourceRoot":"","sources":["../../../src/utils/job-context/batch-script-job-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { type Reporter } from '@quenty/cli-output-helpers/reporting';
|
|
2
2
|
import { type OpenCloudClient } from '../open-cloud/open-cloud-client.js';
|
|
3
|
-
import { type Deployment, type DeployPlaceOptions, type RunScriptOptions, type ScriptRunResult } from './job-context.js';
|
|
3
|
+
import { type Deployment, type DeployPlaceOptions, type JobLogs, type RunScriptOptions, type ScriptRunResult } from './job-context.js';
|
|
4
4
|
import { type BasePlaceResolver } from '@quenty/nevermore-deploy';
|
|
5
5
|
import { BaseJobContext } from './base-job-context.js';
|
|
6
6
|
export declare class CloudJobContext extends BaseJobContext {
|
|
7
7
|
constructor(reporter: Reporter, openCloudClient: OpenCloudClient, basePlaceResolver?: BasePlaceResolver);
|
|
8
8
|
deployBuiltPlaceAsync(options: DeployPlaceOptions): Promise<Deployment>;
|
|
9
9
|
runScriptAsync(deployment: Deployment, options: RunScriptOptions): Promise<ScriptRunResult>;
|
|
10
|
-
getLogsAsync(deployment: Deployment): Promise<
|
|
10
|
+
getLogsAsync(deployment: Deployment): Promise<JobLogs>;
|
|
11
11
|
releaseAsync(_deployment: Deployment): Promise<void>;
|
|
12
12
|
disposeAsync(): Promise<void>;
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-job-context.d.ts","sourceRoot":"","sources":["../../../src/utils/job-context/cloud-job-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,
|
|
1
|
+
{"version":3,"file":"cloud-job-context.d.ts","sourceRoot":"","sources":["../../../src/utils/job-context/cloud-job-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EACL,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAkBvD,qBAAa,eAAgB,SAAQ,cAAc;gBAE/C,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe,EAChC,iBAAiB,CAAC,EAAE,iBAAiB;IAKjC,qBAAqB,CACzB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,UAAU,CAAC;IAgChB,cAAc,CAClB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC;IA8DrB,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAuBtD,YAAY,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAGpC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getTaskReturnValues, } from '../open-cloud/open-cloud-client.js';
|
|
1
2
|
import { tryRenamePlaceAsync } from '@quenty/nevermore-cli-helpers';
|
|
2
3
|
import { buildPlaceNameAsync, timeoutAsync } from '../nevermore-cli-utils.js';
|
|
3
4
|
import { BaseJobContext } from './base-job-context.js';
|
|
@@ -81,6 +82,7 @@ export class CloudJobContext extends BaseJobContext {
|
|
|
81
82
|
success: completedTask.state === 'COMPLETE',
|
|
82
83
|
taskState: completedTask.state,
|
|
83
84
|
errorMessage,
|
|
85
|
+
returnValues: getTaskReturnValues(completedTask),
|
|
84
86
|
};
|
|
85
87
|
}
|
|
86
88
|
async getLogsAsync(deployment) {
|
|
@@ -88,13 +90,16 @@ export class CloudJobContext extends BaseJobContext {
|
|
|
88
90
|
if (!cloudDeployment.taskPath) {
|
|
89
91
|
throw new Error('No task has been run yet');
|
|
90
92
|
}
|
|
91
|
-
const
|
|
93
|
+
const fetched = await this._openCloudClient.getRawTaskLogsAsync(cloudDeployment.taskPath);
|
|
92
94
|
if (cloudDeployment.taskState && cloudDeployment.taskState !== 'COMPLETE') {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
.join('\n')
|
|
95
|
+
const note = `Task ended with state: ${cloudDeployment.taskState}`;
|
|
96
|
+
return {
|
|
97
|
+
text: [fetched.text, note].filter(Boolean).join('\n'),
|
|
98
|
+
messages: [...fetched.messages, { message: note }],
|
|
99
|
+
stats: fetched.stats,
|
|
100
|
+
};
|
|
96
101
|
}
|
|
97
|
-
return
|
|
102
|
+
return fetched;
|
|
98
103
|
}
|
|
99
104
|
async releaseAsync(_deployment) {
|
|
100
105
|
// No-op for cloud — place stays on cloud, task metadata discarded with the handle.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-job-context.js","sourceRoot":"","sources":["../../../src/utils/job-context/cloud-job-context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cloud-job-context.js","sourceRoot":"","sources":["../../../src/utils/job-context/cloud-job-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for CloudJobContext.runScriptAsync — validates what a finished
|
|
3
|
+
* Open Cloud task reports back as a ScriptRunResult, in particular that a task
|
|
4
|
+
* which produced no output stays distinguishable from one that returned nothing.
|
|
5
|
+
*/
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=cloud-job-context.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-job-context.test.d.ts","sourceRoot":"","sources":["../../../src/utils/job-context/cloud-job-context.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for CloudJobContext.runScriptAsync — validates what a finished
|
|
3
|
+
* Open Cloud task reports back as a ScriptRunResult, in particular that a task
|
|
4
|
+
* which produced no output stays distinguishable from one that returned nothing.
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect, vi, afterEach } from 'vitest';
|
|
7
|
+
import { CloudJobContext } from './cloud-job-context.js';
|
|
8
|
+
function createReporter() {
|
|
9
|
+
return {
|
|
10
|
+
onPackagePhaseChange: vi.fn(),
|
|
11
|
+
onPackageProgressUpdate: vi.fn(),
|
|
12
|
+
onPackageStart: vi.fn(),
|
|
13
|
+
onPackageResult: vi.fn(),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A client whose task completes as `completedTask`. The real deployment handle
|
|
18
|
+
* is private to the context, so the test passes the three fields runScriptAsync
|
|
19
|
+
* reads off it.
|
|
20
|
+
*/
|
|
21
|
+
function createContext(completedTask) {
|
|
22
|
+
const task = {
|
|
23
|
+
path: 'universes/1/places/2/versions/3/luau-execution-session-tasks/4',
|
|
24
|
+
createTime: '2026-01-01T00:00:00Z',
|
|
25
|
+
updateTime: '2026-01-01T00:01:00Z',
|
|
26
|
+
user: 'users/1',
|
|
27
|
+
state: 'COMPLETE',
|
|
28
|
+
script: 'return 1',
|
|
29
|
+
...completedTask,
|
|
30
|
+
};
|
|
31
|
+
const client = {
|
|
32
|
+
createExecutionTaskAsync: vi.fn(async () => task),
|
|
33
|
+
pollTaskCompletionAsync: vi.fn(async () => task),
|
|
34
|
+
};
|
|
35
|
+
const context = new CloudJobContext(createReporter(), client);
|
|
36
|
+
const deployment = {
|
|
37
|
+
universeId: 1,
|
|
38
|
+
placeId: 2,
|
|
39
|
+
version: 3,
|
|
40
|
+
};
|
|
41
|
+
return { context, deployment };
|
|
42
|
+
}
|
|
43
|
+
describe('CloudJobContext.runScriptAsync', () => {
|
|
44
|
+
afterEach(() => {
|
|
45
|
+
vi.useRealTimers();
|
|
46
|
+
});
|
|
47
|
+
it('reports the values the script returned', async () => {
|
|
48
|
+
// Fake timers keep the client-side timeout race from leaving a live timer
|
|
49
|
+
// behind; nothing in the run itself waits on one.
|
|
50
|
+
vi.useFakeTimers();
|
|
51
|
+
const { context, deployment } = createContext({
|
|
52
|
+
state: 'COMPLETE',
|
|
53
|
+
output: { results: [{ slug: 'maid', counts: { passed: 1014 } }] },
|
|
54
|
+
});
|
|
55
|
+
const result = await context.runScriptAsync(deployment, {
|
|
56
|
+
scriptContent: 'return results',
|
|
57
|
+
packageName: 'maid',
|
|
58
|
+
});
|
|
59
|
+
expect(result.success).toBe(true);
|
|
60
|
+
expect(result.returnValues).toEqual([
|
|
61
|
+
{ slug: 'maid', counts: { passed: 1014 } },
|
|
62
|
+
]);
|
|
63
|
+
});
|
|
64
|
+
it('reports an empty result when the task returned nothing', async () => {
|
|
65
|
+
vi.useFakeTimers();
|
|
66
|
+
const { context, deployment } = createContext({
|
|
67
|
+
state: 'COMPLETE',
|
|
68
|
+
output: {},
|
|
69
|
+
});
|
|
70
|
+
const result = await context.runScriptAsync(deployment, {
|
|
71
|
+
scriptContent: 'print("hi")',
|
|
72
|
+
packageName: 'maid',
|
|
73
|
+
});
|
|
74
|
+
expect(result.returnValues).toEqual([]);
|
|
75
|
+
});
|
|
76
|
+
it('leaves returnValues absent when a failed task carried no output', async () => {
|
|
77
|
+
vi.useFakeTimers();
|
|
78
|
+
const { context, deployment } = createContext({
|
|
79
|
+
state: 'FAILED',
|
|
80
|
+
output: undefined,
|
|
81
|
+
});
|
|
82
|
+
const result = await context.runScriptAsync(deployment, {
|
|
83
|
+
scriptContent: 'return huge',
|
|
84
|
+
packageName: 'maid',
|
|
85
|
+
});
|
|
86
|
+
expect(result.success).toBe(false);
|
|
87
|
+
expect(result.taskState).toBe('FAILED');
|
|
88
|
+
expect(result.returnValues).toBeUndefined();
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=cloud-job-context.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-job-context.test.js","sourceRoot":"","sources":["../../../src/utils/job-context/cloud-job-context.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
import { type BuildPlaceOptions, type BuiltPlace } from '../build/build.js';
|
|
2
|
+
import { type StructuredTestResults } from '../testing/structured-test-results.js';
|
|
3
|
+
import { type LogFetchStats } from '../testing/log-fetch-stats.js';
|
|
4
|
+
import { type TaskLogMessage } from '../open-cloud/open-cloud-client.js';
|
|
5
|
+
/** A run's output, with the severity and the fetch that produced it. */
|
|
6
|
+
export interface JobLogs {
|
|
7
|
+
text: string;
|
|
8
|
+
/**
|
|
9
|
+
* The same output split into typed messages, when the transport reports
|
|
10
|
+
* severity. Empty for one that does not — a local run reads its logs off the
|
|
11
|
+
* Studio bridge, which says only what was printed.
|
|
12
|
+
*/
|
|
13
|
+
messages: TaskLogMessage[];
|
|
14
|
+
/**
|
|
15
|
+
* What collecting them took, when the transport can say. Absent rather than
|
|
16
|
+
* zeroed, so "no fetch to measure" cannot read as "a fetch that found
|
|
17
|
+
* nothing".
|
|
18
|
+
*/
|
|
19
|
+
stats?: LogFetchStats;
|
|
20
|
+
}
|
|
2
21
|
export type { BuiltPlace } from '../build/build.js';
|
|
3
22
|
export interface DeployPlaceOptions {
|
|
4
23
|
builtPlace: BuiltPlace;
|
|
@@ -24,6 +43,48 @@ export interface ScriptRunResult {
|
|
|
24
43
|
taskState?: string;
|
|
25
44
|
/** Error message from the execution backend, if any. */
|
|
26
45
|
errorMessage?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Everything the executed script returned, in order — the structured channel
|
|
48
|
+
* out of a run, as opposed to its printed output. Engine logs are truncated
|
|
49
|
+
* by Open Cloud on long runs, so anything a caller must read back exactly
|
|
50
|
+
* belongs here rather than in the log text.
|
|
51
|
+
*
|
|
52
|
+
* `undefined` means the transport never delivered a return channel: a cloud
|
|
53
|
+
* task that ended without an `output` (a FAILED task carries none, and an
|
|
54
|
+
* oversize return value fails the task rather than truncating the value), a
|
|
55
|
+
* bridge run that timed out or disconnected, or a context that does not
|
|
56
|
+
* carry return values at all. That is deliberately distinct from `[]`, which
|
|
57
|
+
* means the script ran and returned nothing — a caller that needs the value
|
|
58
|
+
* can fall back to parsing logs in the first case but not the second.
|
|
59
|
+
*
|
|
60
|
+
* Values are JSON-shaped, but the two transports spell exotic Luau types
|
|
61
|
+
* differently: Open Cloud auto-serializes them, while the Studio bridge
|
|
62
|
+
* marshals them into `{ type, value }` wrappers (`SerializedReturnValue`).
|
|
63
|
+
* Plain tables of strings, numbers and booleans come back identically on
|
|
64
|
+
* both, so structured results should stay inside that subset.
|
|
65
|
+
*/
|
|
66
|
+
returnValues?: unknown[];
|
|
67
|
+
/**
|
|
68
|
+
* The run's structured test results, when the context resolved them itself
|
|
69
|
+
* rather than leaving them in `returnValues` for the caller to decode.
|
|
70
|
+
*
|
|
71
|
+
* Only aggregated batch mode sets this: one execution covers every package, so
|
|
72
|
+
* its return value belongs to no single one of them and the per-package
|
|
73
|
+
* results have to be recovered from the batch summary first. A context that
|
|
74
|
+
* sets this has also reported where the counts came from, so the caller does
|
|
75
|
+
* not report it a second time.
|
|
76
|
+
*/
|
|
77
|
+
testResults?: StructuredTestResults;
|
|
78
|
+
/**
|
|
79
|
+
* True when this run's verdict rests on returned results alone, its log
|
|
80
|
+
* output having been dropped before it reached us.
|
|
81
|
+
*
|
|
82
|
+
* A narrower verdict than an ordinary one: the counts are exact, but with no
|
|
83
|
+
* text there is nothing to check for tracebacks and nothing to read when
|
|
84
|
+
* something did go wrong. Reported so it can be shown as such rather than as
|
|
85
|
+
* an ordinary pass.
|
|
86
|
+
*/
|
|
87
|
+
logsLost?: boolean;
|
|
27
88
|
}
|
|
28
89
|
/**
|
|
29
90
|
* Opaque handle representing a single deployed place.
|
|
@@ -38,8 +99,15 @@ export interface JobContext {
|
|
|
38
99
|
deployBuiltPlaceAsync(options: DeployPlaceOptions): Promise<Deployment>;
|
|
39
100
|
/** Execute a Luau script in a deployed place. */
|
|
40
101
|
runScriptAsync(deployment: Deployment, options: RunScriptOptions): Promise<ScriptRunResult>;
|
|
41
|
-
/**
|
|
42
|
-
|
|
102
|
+
/**
|
|
103
|
+
* Everything the most recent script execution printed.
|
|
104
|
+
*
|
|
105
|
+
* One value rather than a log plus two optional side-channels for its
|
|
106
|
+
* severity and its fetch: they all come from the same fetch, so returning
|
|
107
|
+
* them together removes both the chance of asking a context that does not
|
|
108
|
+
* implement one and the chance of handing an accessor the wrong handle.
|
|
109
|
+
*/
|
|
110
|
+
getLogsAsync(deployment: Deployment): Promise<JobLogs>;
|
|
43
111
|
/** Release a single deployment (stop bridge / clear task metadata). */
|
|
44
112
|
releaseAsync(deployment: Deployment): Promise<void>;
|
|
45
113
|
/** Eagerly release a built place's temporary resources. Idempotent. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-context.d.ts","sourceRoot":"","sources":["../../../src/utils/job-context/job-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"job-context.d.ts","sourceRoot":"","sources":["../../../src/utils/job-context/job-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,wEAAwE;AACxE,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B;;;;OAIG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC;IACzB;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AAEH,MAAM,WAAW,UAAU;CAAG;AAE9B,MAAM,WAAW,UAAU;IACzB,6FAA6F;IAC7F,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEjE,qGAAqG;IACrG,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAExE,iDAAiD;IACjD,cAAc,CACZ,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CAAC;IAE5B;;;;;;;OAOG;IACH,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvD,uEAAuE;IACvE,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD,uEAAuE;IACvE,sBAAsB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9D,wGAAwG;IACxG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Reporter } from '@quenty/cli-output-helpers/reporting';
|
|
2
|
-
import { type Deployment, type DeployPlaceOptions, type RunScriptOptions, type ScriptRunResult } from './job-context.js';
|
|
2
|
+
import { type Deployment, type DeployPlaceOptions, type RunScriptOptions, type ScriptRunResult, type JobLogs } from './job-context.js';
|
|
3
3
|
import { type BasePlaceResolver } from '@quenty/nevermore-deploy';
|
|
4
4
|
import { BaseJobContext } from './base-job-context.js';
|
|
5
5
|
import { type OpenCloudClient } from '../open-cloud/open-cloud-client.js';
|
|
@@ -8,7 +8,7 @@ export declare class LocalJobContext extends BaseJobContext {
|
|
|
8
8
|
constructor(reporter: Reporter, openCloudClient?: OpenCloudClient, basePlaceResolver?: BasePlaceResolver);
|
|
9
9
|
deployBuiltPlaceAsync(options: DeployPlaceOptions): Promise<Deployment>;
|
|
10
10
|
runScriptAsync(deployment: Deployment, options: RunScriptOptions): Promise<ScriptRunResult>;
|
|
11
|
-
getLogsAsync(deployment: Deployment): Promise<
|
|
11
|
+
getLogsAsync(deployment: Deployment): Promise<JobLogs>;
|
|
12
12
|
releaseAsync(deployment: Deployment): Promise<void>;
|
|
13
13
|
disposeAsync(): Promise<void>;
|
|
14
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-job-context.d.ts","sourceRoot":"","sources":["../../../src/utils/job-context/local-job-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAErE,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"local-job-context.d.ts","sourceRoot":"","sources":["../../../src/utils/job-context/local-job-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAErE,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,OAAO,EACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAa1E,qBAAa,eAAgB,SAAQ,cAAc;IACjD,OAAO,CAAC,YAAY,CAA8B;gBAGhD,QAAQ,EAAE,QAAQ,EAClB,eAAe,CAAC,EAAE,eAAe,EACjC,iBAAiB,CAAC,EAAE,iBAAiB;IAKjC,qBAAqB,CACzB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,UAAU,CAAC;IAmBhB,cAAc,CAClB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC;IAqBrB,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAQtD,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAOpC"}
|