@tskmgr/client 2.0.6 → 2.2.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/package.json +2 -4
- package/src/lib/client.d.ts +2 -2
- package/src/lib/client.js +21 -19
- package/src/lib/client.js.map +1 -1
- package/src/lib/utils.d.ts +5 -5
- package/src/lib/utils.js +13 -13
- package/src/lib/utils.js.map +1 -1
- package/src/lib/client-example.d.ts +0 -11
- package/src/lib/client-example.js +0 -120
- package/src/lib/client-example.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tskmgr/client",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"debug": "^4.3.4",
|
|
7
|
-
"@tskmgr/common": "2.0
|
|
8
|
-
"uuid": "^9.0.1",
|
|
9
|
-
"@nx/devkit": "18.0.7"
|
|
7
|
+
"@tskmgr/common": "2.2.0"
|
|
10
8
|
},
|
|
11
9
|
"main": "./src/index.js",
|
|
12
10
|
"type": "commonjs"
|
package/src/lib/client.d.ts
CHANGED
|
@@ -4,9 +4,9 @@ import { ClientOptions } from './client-options';
|
|
|
4
4
|
export declare class Client {
|
|
5
5
|
private readonly apiUrl;
|
|
6
6
|
private readonly runnerId;
|
|
7
|
-
private readonly
|
|
7
|
+
private readonly clientOptions;
|
|
8
8
|
static readonly DefaultOptions: ClientOptions;
|
|
9
|
-
constructor(apiUrl: ApiUrl, runnerId: string,
|
|
9
|
+
constructor(apiUrl: ApiUrl, runnerId: string, clientOptions: ClientOptions);
|
|
10
10
|
createRun(params: CreateRunRequestDto): Promise<Run>;
|
|
11
11
|
closeRun(runId: number): Promise<Run>;
|
|
12
12
|
abortRun(runId: number): Promise<Run>;
|
package/src/lib/client.js
CHANGED
|
@@ -12,15 +12,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.Client = void 0;
|
|
13
13
|
const utils_1 = require("./utils");
|
|
14
14
|
const run_tasks_result_1 = require("./run-tasks-result");
|
|
15
|
-
const
|
|
15
|
+
const node_fs_1 = require("node:fs");
|
|
16
16
|
const debug_1 = require("debug");
|
|
17
17
|
const promises_1 = require("node:fs/promises");
|
|
18
18
|
const debug = (0, debug_1.default)('tskmgr:client');
|
|
19
19
|
class Client {
|
|
20
|
-
constructor(apiUrl, runnerId,
|
|
20
|
+
constructor(apiUrl, runnerId, clientOptions) {
|
|
21
21
|
this.apiUrl = apiUrl;
|
|
22
22
|
this.runnerId = runnerId;
|
|
23
|
-
this.
|
|
23
|
+
this.clientOptions = clientOptions;
|
|
24
24
|
}
|
|
25
25
|
createRun(params) {
|
|
26
26
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -93,7 +93,7 @@ class Client {
|
|
|
93
93
|
runTasks(runId) {
|
|
94
94
|
return __awaiter(this, void 0, void 0, function* () {
|
|
95
95
|
const taskRunners = [];
|
|
96
|
-
for (let i = 0; i < this.
|
|
96
|
+
for (let i = 0; i < this.clientOptions.parallel; i++) {
|
|
97
97
|
taskRunners.push(this.defaultParallelTaskRunner(runId, i));
|
|
98
98
|
}
|
|
99
99
|
const taskResults = yield Promise.all(taskRunners);
|
|
@@ -148,6 +148,7 @@ class Client {
|
|
|
148
148
|
});
|
|
149
149
|
}
|
|
150
150
|
defaultParallelTaskRunner(runId, parallelId) {
|
|
151
|
+
var _a, _b;
|
|
151
152
|
return __awaiter(this, void 0, void 0, function* () {
|
|
152
153
|
const logInfo = `[${this.runnerId}:${parallelId}]`;
|
|
153
154
|
const taskResults = [];
|
|
@@ -164,8 +165,8 @@ class Client {
|
|
|
164
165
|
continue;
|
|
165
166
|
}
|
|
166
167
|
if (!res.task) {
|
|
167
|
-
debug(`${logInfo} polling for new tasks in ${this.
|
|
168
|
-
yield (0, utils_1.delay)(this.
|
|
168
|
+
debug(`${logInfo} polling for new tasks in ${this.clientOptions.pollingDelayMs} ms`);
|
|
169
|
+
yield (0, utils_1.delay)(this.clientOptions.pollingDelayMs);
|
|
169
170
|
continue;
|
|
170
171
|
}
|
|
171
172
|
const { run, task } = res;
|
|
@@ -176,27 +177,26 @@ class Client {
|
|
|
176
177
|
let childProcess;
|
|
177
178
|
let error;
|
|
178
179
|
const taskLogFilename = (0, utils_1.getTaskLogFilename)(task.id);
|
|
179
|
-
const writeStream = (0,
|
|
180
|
+
const writeStream = (0, node_fs_1.createWriteStream)(taskLogFilename);
|
|
180
181
|
writeStream.on('open', () => (writable = true));
|
|
181
182
|
const dataHandler = (data) => {
|
|
182
|
-
this.
|
|
183
|
+
this.clientOptions.dataCallback(task, data, () => (cached = true));
|
|
183
184
|
if (writable) {
|
|
184
185
|
writeStream.write(`[${new Date().toISOString()}] ${data}\n`);
|
|
185
186
|
}
|
|
186
187
|
};
|
|
187
188
|
const errorHandler = (data) => {
|
|
188
|
-
this.
|
|
189
|
+
this.clientOptions.errorCallback(task, data);
|
|
189
190
|
if (writable) {
|
|
190
191
|
writeStream.write(`[${new Date().toISOString()}] ${data}\n`);
|
|
191
192
|
}
|
|
192
193
|
};
|
|
193
|
-
const
|
|
194
|
-
options.env = Object.assign(Object.assign(Object.assign({}, process.env), options.env), { TSKMGR_PARALLEL_ID: parallelId.toString() });
|
|
194
|
+
const spawnOptions = Object.assign(Object.assign(Object.assign({}, task.options), this.clientOptions.spawnOptions), { env: Object.assign(Object.assign(Object.assign(Object.assign({}, process.env), (_a = task.options) === null || _a === void 0 ? void 0 : _a.env), (_b = this.clientOptions.spawnOptions) === null || _b === void 0 ? void 0 : _b.env), { TSKMGR_PARALLEL_ID: parallelId.toString() }) });
|
|
195
195
|
debug(`${logInfo} starting task: ${task.id}`);
|
|
196
196
|
try {
|
|
197
|
-
childProcess = yield (0, utils_1.spawnAsync)(task.command, task.arguments,
|
|
198
|
-
|
|
199
|
-
|
|
197
|
+
childProcess = yield (0, utils_1.spawnAsync)(task.command, task.arguments, spawnOptions, {
|
|
198
|
+
dataHandler,
|
|
199
|
+
errorHandler,
|
|
200
200
|
});
|
|
201
201
|
completed = true;
|
|
202
202
|
debug(`${logInfo} completed task: ${task.id}`);
|
|
@@ -227,7 +227,7 @@ class Client {
|
|
|
227
227
|
description: `Log for task ${task.id}`,
|
|
228
228
|
});
|
|
229
229
|
debug(`${logInfo} uploaded file for task: ${task.id} sent`);
|
|
230
|
-
(0,
|
|
230
|
+
(0, node_fs_1.unlinkSync)(taskLogFilename);
|
|
231
231
|
}
|
|
232
232
|
}
|
|
233
233
|
debug(`${logInfo} parallel task runner completed`);
|
|
@@ -238,10 +238,12 @@ class Client {
|
|
|
238
238
|
exports.Client = Client;
|
|
239
239
|
Client.DefaultOptions = {
|
|
240
240
|
parallel: 1,
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
errorCallback: (task, data) => {
|
|
241
|
+
dataCallback: (task, data, cached) => {
|
|
242
|
+
// noop
|
|
243
|
+
},
|
|
244
|
+
errorCallback: (task, data) => {
|
|
245
|
+
// noop
|
|
246
|
+
},
|
|
245
247
|
pollingDelayMs: 5000,
|
|
246
248
|
retryDelayMs: 5000,
|
|
247
249
|
retryCount: 2,
|
package/src/lib/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../../libs/client/src/lib/client.ts"],"names":[],"mappings":";;;;;;;;;;;;AAeA,mCAA6E;AAC7E,yDAAoD;AAGpD,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../../libs/client/src/lib/client.ts"],"names":[],"mappings":"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"}
|
package/src/lib/utils.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { ChildProcess, SpawnOptionsWithoutStdio } from 'child_process';
|
|
3
|
-
export interface
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import { ChildProcess, SpawnOptionsWithoutStdio } from 'node:child_process';
|
|
3
|
+
export interface SpawnAsyncLineHandlers {
|
|
4
|
+
dataHandler?: (line: string) => void;
|
|
5
|
+
errorHandler?: (line: string) => void;
|
|
6
6
|
}
|
|
7
|
-
export declare function spawnAsync(command: string, args?: ReadonlyArray<string>, options?: SpawnOptionsWithoutStdio,
|
|
7
|
+
export declare function spawnAsync(command: string, args?: ReadonlyArray<string>, options?: SpawnOptionsWithoutStdio, lineHandlers?: SpawnAsyncLineHandlers): Promise<ChildProcess>;
|
|
8
8
|
export declare function delay(ms: number): Promise<void>;
|
|
9
9
|
export declare function getTaskLogFilename(taskId: number): string;
|
|
10
10
|
export declare class HTTPResponseError extends Error {
|
package/src/lib/utils.js
CHANGED
|
@@ -10,21 +10,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.checkStatus = exports.HTTPResponseError = exports.getTaskLogFilename = exports.delay = exports.spawnAsync = void 0;
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
function spawnAsync(command, args, options,
|
|
13
|
+
const node_child_process_1 = require("node:child_process");
|
|
14
|
+
const node_readline_1 = require("node:readline");
|
|
15
|
+
const node_os_1 = require("node:os");
|
|
16
|
+
const node_path_1 = require("node:path");
|
|
17
|
+
function spawnAsync(command, args, options, lineHandlers) {
|
|
18
18
|
return __awaiter(this, void 0, void 0, function* () {
|
|
19
19
|
return new Promise((resolve, reject) => {
|
|
20
|
-
const childProcess = (0,
|
|
21
|
-
if (
|
|
22
|
-
const readlineStdout = (0,
|
|
23
|
-
readlineStdout.on('line',
|
|
20
|
+
const childProcess = (0, node_child_process_1.spawn)(command, args, options);
|
|
21
|
+
if (lineHandlers === null || lineHandlers === void 0 ? void 0 : lineHandlers.dataHandler) {
|
|
22
|
+
const readlineStdout = (0, node_readline_1.createInterface)({ input: childProcess.stdout });
|
|
23
|
+
readlineStdout.on('line', lineHandlers.dataHandler);
|
|
24
24
|
}
|
|
25
|
-
if (
|
|
26
|
-
const readlineStderr = (0,
|
|
27
|
-
readlineStderr.on('line',
|
|
25
|
+
if (lineHandlers === null || lineHandlers === void 0 ? void 0 : lineHandlers.errorHandler) {
|
|
26
|
+
const readlineStderr = (0, node_readline_1.createInterface)({ input: childProcess.stderr });
|
|
27
|
+
readlineStderr.on('line', lineHandlers.errorHandler);
|
|
28
28
|
}
|
|
29
29
|
childProcess.on('close', (code) => {
|
|
30
30
|
if (code === 0) {
|
|
@@ -48,7 +48,7 @@ function delay(ms) {
|
|
|
48
48
|
}
|
|
49
49
|
exports.delay = delay;
|
|
50
50
|
function getTaskLogFilename(taskId) {
|
|
51
|
-
return (0,
|
|
51
|
+
return (0, node_path_1.join)((0, node_os_1.tmpdir)(), `task-${taskId}.log`);
|
|
52
52
|
}
|
|
53
53
|
exports.getTaskLogFilename = getTaskLogFilename;
|
|
54
54
|
class HTTPResponseError extends Error {
|
package/src/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../libs/client/src/lib/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../libs/client/src/lib/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2DAAmF;AACnF,iDAAgD;AAChD,qCAAiC;AACjC,yCAAiC;AAOjC,SAAsB,UAAU,CAC9B,OAAe,EACf,IAA4B,EAC5B,OAAkC,EAClC,YAAqC;;QAErC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,YAAY,GAAG,IAAA,0BAAK,EAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAEnD,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,WAAW,EAAE,CAAC;gBAC9B,MAAM,cAAc,GAAG,IAAA,+BAAe,EAAC,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;gBACvE,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;YACtD,CAAC;YAED,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,YAAY,EAAE,CAAC;gBAC/B,MAAM,cAAc,GAAG,IAAA,+BAAe,EAAC,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;gBACvE,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;YACvD,CAAC;YAED,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,OAAO,CAAC,YAAY,CAAC,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,YAAY,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBACtC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,oCAAoC;YAC5D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CAAA;AA/BD,gCA+BC;AAED,SAAgB,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAJD,sBAIC;AAED,SAAgB,kBAAkB,CAAC,MAAc;IAC/C,OAAO,IAAA,gBAAI,EAAC,IAAA,gBAAM,GAAE,EAAE,QAAQ,MAAM,MAAM,CAAC,CAAC;AAC9C,CAAC;AAFD,gDAEC;AAED,MAAa,iBAAkB,SAAQ,KAAK;IAC1C,YAA4B,QAAQ;QAClC,KAAK,CAAC,wBAAwB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAD9C,aAAQ,GAAR,QAAQ,CAAA;QAElC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AALD,8CAKC;AAEM,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,EAAE;IACtC,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;QAChB,kDAAkD;QAClD,OAAO,QAAQ,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;AACH,CAAC,CAAC;AAPW,QAAA,WAAW,eAOtB"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* IntelliJ debug:
|
|
3
|
-
* Node parameters: --require ts-node/register --require tsconfig-paths/register
|
|
4
|
-
* Environment variables: TS_NODE_PROJECT=libs/client/tsconfig.lib.json
|
|
5
|
-
*
|
|
6
|
-
* Start API:
|
|
7
|
-
* nx serve api
|
|
8
|
-
* Command:
|
|
9
|
-
* DEBUG=tskmgr:* ts-node --project libs/client/tsconfig.lib.json -r tsconfig-paths/register "libs/client/src/lib/client-example.ts"
|
|
10
|
-
*/
|
|
11
|
-
export {};
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* IntelliJ debug:
|
|
4
|
-
* Node parameters: --require ts-node/register --require tsconfig-paths/register
|
|
5
|
-
* Environment variables: TS_NODE_PROJECT=libs/client/tsconfig.lib.json
|
|
6
|
-
*
|
|
7
|
-
* Start API:
|
|
8
|
-
* nx serve api
|
|
9
|
-
* Command:
|
|
10
|
-
* DEBUG=tskmgr:* ts-node --project libs/client/tsconfig.lib.json -r tsconfig-paths/register "libs/client/src/lib/client-example.ts"
|
|
11
|
-
*/
|
|
12
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
const child_process_1 = require("child_process");
|
|
23
|
-
const common_1 = require("@tskmgr/common");
|
|
24
|
-
const client_factory_1 = require("./client-factory");
|
|
25
|
-
const uuid_1 = require("uuid");
|
|
26
|
-
const debug_1 = require("debug");
|
|
27
|
-
const devkit_1 = require("@nx/devkit");
|
|
28
|
-
const fs_1 = require("fs");
|
|
29
|
-
const debug = (0, debug_1.default)('tskmgr:client-example');
|
|
30
|
-
delete process.env.TS_NODE_PROJECT;
|
|
31
|
-
const options = {
|
|
32
|
-
parallel: 1,
|
|
33
|
-
dataCallback,
|
|
34
|
-
errorCallback,
|
|
35
|
-
spawnOptions: { env: Object.assign({}, process.env) },
|
|
36
|
-
};
|
|
37
|
-
const client = client_factory_1.ClientFactory.createNew('http://localhost:3333', 'RUNNER_1', options);
|
|
38
|
-
let completed = false;
|
|
39
|
-
let run;
|
|
40
|
-
(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
|
-
try {
|
|
42
|
-
// 1. Create the new run
|
|
43
|
-
run = yield client.createRun({
|
|
44
|
-
name: (0, uuid_1.v4)(),
|
|
45
|
-
type: '123',
|
|
46
|
-
prioritization: [common_1.TaskPriority.Longest],
|
|
47
|
-
});
|
|
48
|
-
debug(run);
|
|
49
|
-
// 2. Leader should create some tasks to run
|
|
50
|
-
const election = yield client.setLeader(run.id);
|
|
51
|
-
if (election.leader) {
|
|
52
|
-
const tasks = getNxTasks().map((nxTask) => {
|
|
53
|
-
const command = `npx nx run ${nxTask.target.project}:${nxTask.target.target} --configuration=production`;
|
|
54
|
-
return {
|
|
55
|
-
name: nxTask.target.project,
|
|
56
|
-
type: nxTask.target.target,
|
|
57
|
-
command: command.trim(),
|
|
58
|
-
options: { shell: true },
|
|
59
|
-
priority: common_1.TaskPriority.Longest,
|
|
60
|
-
};
|
|
61
|
-
});
|
|
62
|
-
const createdTasks = yield client.createTasks(run.id, { tasks });
|
|
63
|
-
debug(createdTasks);
|
|
64
|
-
const closeRun = yield client.closeRun(run.id);
|
|
65
|
-
debug(closeRun);
|
|
66
|
-
}
|
|
67
|
-
// 3. Execute tasks
|
|
68
|
-
const result = yield client.runTasks(run.id);
|
|
69
|
-
if (result.completed) {
|
|
70
|
-
// if failFast set to false, runTasks will continue without throwing errors.
|
|
71
|
-
completed = true;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
catch (e) {
|
|
75
|
-
console.error(e);
|
|
76
|
-
}
|
|
77
|
-
finally {
|
|
78
|
-
// 4. See results
|
|
79
|
-
console.log('--------------------------------------------------');
|
|
80
|
-
console.log(` tskmgr run: http://localhost:4200/runs/${run.id}`);
|
|
81
|
-
console.log('--------------------------------------------------');
|
|
82
|
-
console.log(`${completed ? 'COMPLETED!' : 'FAILED!'}`);
|
|
83
|
-
process.exit(completed ? 0 : 1);
|
|
84
|
-
}
|
|
85
|
-
}))();
|
|
86
|
-
function getNxTasks() {
|
|
87
|
-
const graphFileName = (0, uuid_1.v4)() + '.json';
|
|
88
|
-
// In CI environment use npx nx affected --graph=${graphFileName} --target=lint command. run-many is just for demo purpose.
|
|
89
|
-
(0, child_process_1.execSync)(`npx nx run-many --graph=lint-${graphFileName} --target=lint`);
|
|
90
|
-
const lintJson = (0, devkit_1.readJsonFile)(`lint-${graphFileName}`);
|
|
91
|
-
(0, fs_1.unlinkSync)(`lint-${graphFileName}`);
|
|
92
|
-
const lintTasks = Object.values(lintJson.tasks.tasks);
|
|
93
|
-
(0, child_process_1.execSync)(`npx nx run-many --graph=test-${graphFileName} --target=test`);
|
|
94
|
-
const testJson = (0, devkit_1.readJsonFile)(`test-${graphFileName}`);
|
|
95
|
-
(0, fs_1.unlinkSync)(`test-${graphFileName}`);
|
|
96
|
-
const testTasks = Object.values(testJson.tasks.tasks);
|
|
97
|
-
(0, child_process_1.execSync)(`npx nx run-many --graph=build-${graphFileName} --target=build`);
|
|
98
|
-
const buildJson = (0, devkit_1.readJsonFile)(`build-${graphFileName}`);
|
|
99
|
-
(0, fs_1.unlinkSync)(`build-${graphFileName}`);
|
|
100
|
-
const buildTasks = Object.values(buildJson.tasks.tasks);
|
|
101
|
-
(0, child_process_1.execSync)(`npx nx run-many --graph=e2e-${graphFileName} --target=e2e`);
|
|
102
|
-
const e2eJson = (0, devkit_1.readJsonFile)(`e2e-${graphFileName}`);
|
|
103
|
-
(0, fs_1.unlinkSync)(`e2e-${graphFileName}`);
|
|
104
|
-
const e2eTasks = Object.values(e2eJson.tasks.tasks);
|
|
105
|
-
return [...lintTasks, ...testTasks, ...buildTasks, ...e2eTasks];
|
|
106
|
-
}
|
|
107
|
-
function dataCallback(task, data, cached) {
|
|
108
|
-
// > nx run frontend:lint [existing outputs match the cache, left as is]
|
|
109
|
-
// > nx run client:lint [local cache]
|
|
110
|
-
if ((data.startsWith(`> nx run ${task.name}:${task.type}`) &&
|
|
111
|
-
data.endsWith('[existing outputs match the cache, left as is]')) ||
|
|
112
|
-
data.endsWith('[local cache]')) {
|
|
113
|
-
cached();
|
|
114
|
-
}
|
|
115
|
-
console.log(`[stdout] ${data}`);
|
|
116
|
-
}
|
|
117
|
-
function errorCallback(task, data) {
|
|
118
|
-
console.log(`[stderr] ${data}`);
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=client-example.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client-example.js","sourceRoot":"","sources":["../../../../../libs/client/src/lib/client-example.ts"],"names":[],"mappings":"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"}
|