@nrwl/nx-cloud 14.6.1 → 14.7.0-beta.1

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.
Files changed (25) hide show
  1. package/lib/core/api/error-reporter.api.js +36 -1
  2. package/lib/core/api/run-group.api.js +68 -1
  3. package/lib/core/commands/start-ci-run.js +7 -2
  4. package/lib/core/commands/start-ci-run.js.map +1 -1
  5. package/lib/core/runners/cloud-enabled/cloud-enabled-life-cycle.js +156 -1
  6. package/lib/core/runners/cloud-enabled/cloud-enabled.runner.js +288 -1
  7. package/lib/core/runners/cloud-enabled/cloud-remote-cache.js +113 -1
  8. package/lib/core/runners/cloud-enabled/cloud-run.api.js +167 -1
  9. package/lib/core/runners/cloud-enabled/id-generator.js +16 -1
  10. package/lib/core/runners/distributed-agent/distributed-agent.api.js +79 -1
  11. package/lib/core/runners/distributed-agent/distributed-agent.impl.js +263 -1
  12. package/lib/core/runners/distributed-agent/distributed-agent.impl.js.map +1 -1
  13. package/lib/core/runners/distributed-execution/distributed-execution.api.js +143 -1
  14. package/lib/core/runners/distributed-execution/distributed-execution.runner.js +220 -1
  15. package/lib/core/runners/distributed-execution/split-task-graph-into-stages.js +37 -1
  16. package/lib/core/runners/distributed-execution/task-graph-creator.js +77 -1
  17. package/lib/nx-cloud-tasks-runner.js +7 -3
  18. package/lib/nx-cloud-tasks-runner.js.map +1 -1
  19. package/lib/utilities/distributed-task-execution-detection.d.ts +2 -2
  20. package/lib/utilities/distributed-task-execution-detection.js +12 -5
  21. package/lib/utilities/distributed-task-execution-detection.js.map +1 -1
  22. package/lib/utilities/environment.d.ts +0 -1
  23. package/lib/utilities/environment.js +2 -3
  24. package/lib/utilities/environment.js.map +1 -1
  25. package/package.json +4 -4
@@ -1 +1,36 @@
1
- const a0_0x51ab=['then','reportError','axiosMultipleTries','value','apiAxiosInstance','../../utilities/nx-imports','apply','throw','warn','done','__esModule','../../utilities/axios','ErrorReporterApi','Unable\x20to\x20record\x20the\x20following\x20error:\x20\x27','post','next','message'];(function(_0x5b9fd5,_0x51abd8){const _0xeabedc=function(_0x4d6e2c){while(--_0x4d6e2c){_0x5b9fd5['push'](_0x5b9fd5['shift']());}};_0xeabedc(++_0x51abd8);}(a0_0x51ab,0x1e5));const a0_0xeabe=function(_0x5b9fd5,_0x51abd8){_0x5b9fd5=_0x5b9fd5-0x0;let _0xeabedc=a0_0x51ab[_0x5b9fd5];return _0xeabedc;};'use strict';var __awaiter=this&&this['__awaiter']||function(_0x1db08b,_0x1f2347,_0x489707,_0x263341){function _0x20e473(_0x41bbaf){return _0x41bbaf instanceof _0x489707?_0x41bbaf:new _0x489707(function(_0xbd9bb9){_0xbd9bb9(_0x41bbaf);});}return new(_0x489707||(_0x489707=Promise))(function(_0x107fa3,_0x4b168e){function _0x15bd09(_0xe52ade){try{_0x27fea2(_0x263341[a0_0xeabe('0x6')](_0xe52ade));}catch(_0x47c98){_0x4b168e(_0x47c98);}}function _0x2cb2db(_0x31cb99){try{_0x27fea2(_0x263341[a0_0xeabe('0xf')](_0x31cb99));}catch(_0x37eedc){_0x4b168e(_0x37eedc);}}function _0x27fea2(_0x2729fc){_0x2729fc[a0_0xeabe('0x0')]?_0x107fa3(_0x2729fc[a0_0xeabe('0xb')]):_0x20e473(_0x2729fc[a0_0xeabe('0xb')])[a0_0xeabe('0x8')](_0x15bd09,_0x2cb2db);}_0x27fea2((_0x263341=_0x263341[a0_0xeabe('0xe')](_0x1db08b,_0x1f2347||[]))[a0_0xeabe('0x6')]());});};Object['defineProperty'](exports,a0_0xeabe('0x1'),{'value':!![]});exports['ErrorReporterApi']=void 0x0;const axios_1=require(a0_0xeabe('0x2'));const {output}=require(a0_0xeabe('0xd'));class ErrorReporterApi{constructor(_0x2ff69){this['apiAxiosInstance']=(0x0,axios_1['createApiAxiosInstance'])(_0x2ff69);}[a0_0xeabe('0x9')](_0x22e3f8){return __awaiter(this,void 0x0,void 0x0,function*(){try{yield(0x0,axios_1[a0_0xeabe('0xa')])(()=>this[a0_0xeabe('0xc')][a0_0xeabe('0x5')]('/nx-cloud/report-client-error',{'message':_0x22e3f8}));}catch(_0x2986d8){output[a0_0xeabe('0x10')]({'title':a0_0xeabe('0x4')+_0x22e3f8+'\x27','bodyLines':[_0x2986d8[a0_0xeabe('0x7')]]});}});}}exports[a0_0xeabe('0x3')]=ErrorReporterApi;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ErrorReporterApi = void 0;
13
+ const axios_1 = require("../../utilities/axios");
14
+ const { output } = require('../../utilities/nx-imports');
15
+ class ErrorReporterApi {
16
+ constructor(options) {
17
+ this.apiAxiosInstance = (0, axios_1.createApiAxiosInstance)(options);
18
+ }
19
+ reportError(message) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ try {
22
+ yield (0, axios_1.axiosMultipleTries)(() => this.apiAxiosInstance.post('/nx-cloud/report-client-error', {
23
+ message,
24
+ }));
25
+ }
26
+ catch (e) {
27
+ output.warn({
28
+ title: `Unable to record the following error: '${message}'`,
29
+ bodyLines: [e.message],
30
+ });
31
+ }
32
+ });
33
+ }
34
+ }
35
+ exports.ErrorReporterApi = ErrorReporterApi;
36
+ //# sourceMappingURL=error-reporter.api.js.map
@@ -1 +1,68 @@
1
- const a1_0x2af7=['/nx-cloud/executions/create-run-group','apiAxiosInstance','value','createRunGroup','__awaiter','defineProperty','response','axiosException','RUNNER_FAILURE_PERF_ENTRY','recordMetric','then','message','apply','../../utilities/axios','createMetricRecorder','../../utilities/nx-imports','RunGroupApi','post','next','mapRespToPerfEntry','exit','done','error'];(function(_0x11f9e7,_0x2af7ee){const _0x7fafe4=function(_0x43c176){while(--_0x43c176){_0x11f9e7['push'](_0x11f9e7['shift']());}};_0x7fafe4(++_0x2af7ee);}(a1_0x2af7,0xaf));const a1_0x7faf=function(_0x11f9e7,_0x2af7ee){_0x11f9e7=_0x11f9e7-0x0;let _0x7fafe4=a1_0x2af7[_0x11f9e7];return _0x7fafe4;};'use strict';var __awaiter=this&&this[a1_0x7faf('0xd')]||function(_0x171f74,_0x566e81,_0x27173d,_0x294375){function _0x3a138e(_0x210685){return _0x210685 instanceof _0x27173d?_0x210685:new _0x27173d(function(_0x2517b7){_0x2517b7(_0x210685);});}return new(_0x27173d||(_0x27173d=Promise))(function(_0x19cfeb,_0x5a7c09){function _0x13a1ce(_0x3c8b88){try{_0x4f040d(_0x294375[a1_0x7faf('0x4')](_0x3c8b88));}catch(_0x55b1c7){_0x5a7c09(_0x55b1c7);}}function _0x412636(_0x285c72){try{_0x4f040d(_0x294375['throw'](_0x285c72));}catch(_0x118253){_0x5a7c09(_0x118253);}}function _0x4f040d(_0x413a0f){_0x413a0f[a1_0x7faf('0x7')]?_0x19cfeb(_0x413a0f[a1_0x7faf('0xb')]):_0x3a138e(_0x413a0f[a1_0x7faf('0xb')])[a1_0x7faf('0x13')](_0x13a1ce,_0x412636);}_0x4f040d((_0x294375=_0x294375[a1_0x7faf('0x15')](_0x171f74,_0x566e81||[]))[a1_0x7faf('0x4')]());});};Object[a1_0x7faf('0xe')](exports,'__esModule',{'value':!![]});exports[a1_0x7faf('0x2')]=void 0x0;const axios_1=require(a1_0x7faf('0x16'));const metric_logger_1=require('../../utilities/metric-logger');const {output}=require(a1_0x7faf('0x1'));class RunGroupApi{constructor(_0x473bb3){this['apiAxiosInstance']=(0x0,axios_1['createApiAxiosInstance'])(_0x473bb3);}[a1_0x7faf('0xc')](_0x52844e,_0x3d5605,_0x57bdcc,_0x1d8476,_0x14718b){var _0x140f1e;return __awaiter(this,void 0x0,void 0x0,function*(){const _0x3588cc=(0x0,metric_logger_1[a1_0x7faf('0x0')])(a1_0x7faf('0xc'));try{const _0x4381ae=yield(0x0,axios_1['axiosMultipleTries'])(()=>this[a1_0x7faf('0xa')]['post'](a1_0x7faf('0x9'),{'branch':_0x52844e,'runGroup':_0x3d5605,'stopAgentsOnFailure':_0x57bdcc,'agentCount':_0x1d8476,'stopAgentsAfter':_0x14718b}));_0x3588cc['recordMetric']((0x0,metric_logger_1[a1_0x7faf('0x5')])(_0x4381ae));}catch(_0x3c907f){_0x3588cc['recordMetric'](((_0x140f1e=_0x3c907f===null||_0x3c907f===void 0x0?void 0x0:_0x3c907f[a1_0x7faf('0x10')])===null||_0x140f1e===void 0x0?void 0x0:_0x140f1e[a1_0x7faf('0xf')])?(0x0,metric_logger_1['mapRespToPerfEntry'])(_0x3c907f[a1_0x7faf('0x10')][a1_0x7faf('0xf')]):metric_logger_1[a1_0x7faf('0x11')]);output[a1_0x7faf('0x8')]({'title':_0x3c907f[a1_0x7faf('0x14')]});process[a1_0x7faf('0x6')](0x1);}});}['completeRunGroup'](_0x24b0c0){var _0x191493;return __awaiter(this,void 0x0,void 0x0,function*(){const _0x289a30=(0x0,metric_logger_1[a1_0x7faf('0x0')])(a1_0x7faf('0xc'));try{const _0x475929=yield(0x0,axios_1['axiosMultipleTries'])(()=>this[a1_0x7faf('0xa')][a1_0x7faf('0x3')]('/nx-cloud/executions/complete-run-group',{'runGroup':_0x24b0c0}));_0x289a30[a1_0x7faf('0x12')]((0x0,metric_logger_1['mapRespToPerfEntry'])(_0x475929));}catch(_0x45bea4){_0x289a30[a1_0x7faf('0x12')](((_0x191493=_0x45bea4===null||_0x45bea4===void 0x0?void 0x0:_0x45bea4['axiosException'])===null||_0x191493===void 0x0?void 0x0:_0x191493['response'])?(0x0,metric_logger_1[a1_0x7faf('0x5')])(_0x45bea4[a1_0x7faf('0x10')][a1_0x7faf('0xf')]):metric_logger_1[a1_0x7faf('0x11')]);output[a1_0x7faf('0x8')]({'title':_0x45bea4[a1_0x7faf('0x14')]});process[a1_0x7faf('0x6')](0x1);}});}}exports[a1_0x7faf('0x2')]=RunGroupApi;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RunGroupApi = void 0;
13
+ const axios_1 = require("../../utilities/axios");
14
+ const metric_logger_1 = require("../../utilities/metric-logger");
15
+ const { output } = require('../../utilities/nx-imports');
16
+ class RunGroupApi {
17
+ constructor(options) {
18
+ this.apiAxiosInstance = (0, axios_1.createApiAxiosInstance)(options);
19
+ }
20
+ createRunGroup(branch, runGroup, stopAgentsOnFailure, agentCount, stopAgentsAfter) {
21
+ var _a;
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ const recorder = (0, metric_logger_1.createMetricRecorder)('createRunGroup');
24
+ try {
25
+ const resp = yield (0, axios_1.axiosMultipleTries)(() => this.apiAxiosInstance.post('/nx-cloud/executions/create-run-group', {
26
+ branch,
27
+ runGroup,
28
+ stopAgentsOnFailure,
29
+ agentCount,
30
+ stopAgentsAfter,
31
+ }));
32
+ recorder.recordMetric((0, metric_logger_1.mapRespToPerfEntry)(resp));
33
+ }
34
+ catch (e) {
35
+ recorder.recordMetric(((_a = e === null || e === void 0 ? void 0 : e.axiosException) === null || _a === void 0 ? void 0 : _a.response)
36
+ ? (0, metric_logger_1.mapRespToPerfEntry)(e.axiosException.response)
37
+ : metric_logger_1.RUNNER_FAILURE_PERF_ENTRY);
38
+ output.error({
39
+ title: e.message,
40
+ });
41
+ process.exit(1);
42
+ }
43
+ });
44
+ }
45
+ completeRunGroup(runGroup) {
46
+ var _a;
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ const recorder = (0, metric_logger_1.createMetricRecorder)('createRunGroup');
49
+ try {
50
+ const resp = yield (0, axios_1.axiosMultipleTries)(() => this.apiAxiosInstance.post('/nx-cloud/executions/complete-run-group', {
51
+ runGroup: runGroup,
52
+ }));
53
+ recorder.recordMetric((0, metric_logger_1.mapRespToPerfEntry)(resp));
54
+ }
55
+ catch (e) {
56
+ recorder.recordMetric(((_a = e === null || e === void 0 ? void 0 : e.axiosException) === null || _a === void 0 ? void 0 : _a.response)
57
+ ? (0, metric_logger_1.mapRespToPerfEntry)(e.axiosException.response)
58
+ : metric_logger_1.RUNNER_FAILURE_PERF_ENTRY);
59
+ output.error({
60
+ title: e.message,
61
+ });
62
+ process.exit(1);
63
+ }
64
+ });
65
+ }
66
+ }
67
+ exports.RunGroupApi = RunGroupApi;
68
+ //# sourceMappingURL=run-group.api.js.map
@@ -19,9 +19,12 @@ const yargsParser = require("yargs-parser");
19
19
  const distributed_task_execution_detection_1 = require("../../utilities/distributed-task-execution-detection");
20
20
  const { output, workspaceRoot } = require('../../utilities/nx-imports');
21
21
  const args = yargsParser(process.argv, {
22
- boolean: ['stop-agents-on-failure'],
22
+ boolean: ['stop-agents-on-failure', 'use-dte-by-default'],
23
23
  number: ['agent-count', 'command-count'],
24
24
  string: ['stop-agents-after'],
25
+ default: {
26
+ useDteByDefault: true,
27
+ },
25
28
  });
26
29
  function startCiRun() {
27
30
  return __awaiter(this, void 0, void 0, function* () {
@@ -49,7 +52,9 @@ function startCiRun() {
49
52
  const options = JSON.parse(stripJsonComments((0, fs_1.readFileSync)(`${workspaceRoot}/nx.json`).toString())).tasksRunnerOptions.default.options;
50
53
  const api = new run_group_api_1.RunGroupApi(options);
51
54
  yield api.createRunGroup(branch, runGroup, args.stopAgentsOnFailure, args.agentCount, args.stopAgentsAfter);
52
- (0, distributed_task_execution_detection_1.storeMarker)();
55
+ if (args.useDteByDefault) {
56
+ (0, distributed_task_execution_detection_1.storeDteMarker)();
57
+ }
53
58
  });
54
59
  }
55
60
  exports.startCiRun = startCiRun;
@@ -1 +1 @@
1
- {"version":3,"file":"start-ci-run.js","sourceRoot":"","sources":["../../../../../../../libs/nx-packages/nx-cloud/lib/core/commands/start-ci-run.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAyD;AACzD,6DAIqC;AACrC,0EAAoE;AACpE,wDAAmD;AACnD,2BAAkC;AAClC,4CAA4C;AAC5C,+GAAmF;AAEnF,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;AACxE,MAAM,IAAI,GAAQ,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE;IAC1C,OAAO,EAAE,CAAC,wBAAwB,CAAC;IACnC,MAAM,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC;IACxC,MAAM,EAAE,CAAC,mBAAmB,CAAC;CAC9B,CAAC,CAAC;AAEH,SAAsB,UAAU;;QAC9B,MAAM,MAAM,GAAG,IAAA,uBAAS,GAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAA,yBAAW,GAAE,CAAC;QAE/B,IAAI,CAAC,QAAQ,EAAE;YACb,IAAA,0CAAkB,GAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjB;QAED,IAAI,6BAAe,EAAE;YACnB,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,sBAAsB,QAAQ,EAAE;aACxC,CAAC,CAAC;SACJ;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,kEAAkE;SACnE;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,MAAM,CAAC,KAAK,CAAC;gBACX,KAAK,EAAE,iEAAiE;gBACxE,SAAS,EAAE,CAAC,2DAA2D,CAAC;aACzE,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjB;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CACxB,iBAAiB,CAAC,IAAA,iBAAY,EAAC,GAAG,aAAa,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,CACvE,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC;QAErC,MAAM,GAAG,GAAG,IAAI,2BAAW,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,GAAG,CAAC,cAAc,CACtB,MAAM,EACN,QAAQ,EACR,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,eAAe,CACrB,CAAC;QACF,IAAA,kDAAW,GAAE,CAAC;IAChB,CAAC;CAAA;AAxCD,gCAwCC"}
1
+ {"version":3,"file":"start-ci-run.js","sourceRoot":"","sources":["../../../../../../../libs/nx-packages/nx-cloud/lib/core/commands/start-ci-run.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAyD;AACzD,6DAIqC;AACrC,0EAAoE;AACpE,wDAAmD;AACnD,2BAAkC;AAClC,4CAA4C;AAC5C,+GAAsF;AAEtF,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;AACxE,MAAM,IAAI,GAAQ,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE;IAC1C,OAAO,EAAE,CAAC,wBAAwB,EAAE,oBAAoB,CAAC;IACzD,MAAM,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC;IACxC,MAAM,EAAE,CAAC,mBAAmB,CAAC;IAC7B,OAAO,EAAE;QACP,eAAe,EAAE,IAAI;KACtB;CACF,CAAC,CAAC;AAEH,SAAsB,UAAU;;QAC9B,MAAM,MAAM,GAAG,IAAA,uBAAS,GAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAA,yBAAW,GAAE,CAAC;QAE/B,IAAI,CAAC,QAAQ,EAAE;YACb,IAAA,0CAAkB,GAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjB;QAED,IAAI,6BAAe,EAAE;YACnB,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,sBAAsB,QAAQ,EAAE;aACxC,CAAC,CAAC;SACJ;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,kEAAkE;SACnE;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,MAAM,CAAC,KAAK,CAAC;gBACX,KAAK,EAAE,iEAAiE;gBACxE,SAAS,EAAE,CAAC,2DAA2D,CAAC;aACzE,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjB;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CACxB,iBAAiB,CAAC,IAAA,iBAAY,EAAC,GAAG,aAAa,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,CACvE,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC;QAErC,MAAM,GAAG,GAAG,IAAI,2BAAW,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,GAAG,CAAC,cAAc,CACtB,MAAM,EACN,QAAQ,EACR,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,eAAe,CACrB,CAAC;QAEF,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAA,qDAAc,GAAE,CAAC;SAClB;IACH,CAAC;CAAA;AA3CD,gCA2CC"}
@@ -1 +1,156 @@
1
- const a0_0x3df0=['code','endTask','local-cache-hit','skipNxCache','updateStartedTask','filter','task','params','obfuscate','TRUNCATED\x0a\x0a','readFileSync','hash','npm:','remote-cache','toISOString','MAX_CHARACTERS_SUCCESSFUL_TASK','cleanUpHashDetails','cache','remote-cache-hit','scheduleTask','cacheStatus','cacheDirectory','collectTerminalOutput','MAX_CHARACTERS_FAILED_TASK','toString','startsWith','push','keys','tasks','node_modules','target','implicitDeps','endTasks','Cannot\x20find\x20task\x20','path','readTerminalOutputFile','nodes','length','terminalOutputs','local-cache-kept-existing','outputObfuscator','endTime','statuses','getTerminalOutput','taskId','NX_CLOUD_UNLIMITED_OUTPUT','CloudEnabledLifeCycle','slice','runtime','hashDetails','cacheableOperations','../../../utilities/serializer-overrides','indexOf','find','forEach','runContext','.cache','terminalOutput','startTask','join','status','defineProperty'];(function(_0x4048d,_0x3df023){const _0x551dba=function(_0x471484){while(--_0x471484){_0x4048d['push'](_0x4048d['shift']());}};_0x551dba(++_0x3df023);}(a0_0x3df0,0x65));const a0_0x551d=function(_0x4048d,_0x3df023){_0x4048d=_0x4048d-0x0;let _0x551dba=a0_0x3df0[_0x4048d];return _0x551dba;};'use strict';Object[a0_0x551d('0x16')](exports,'__esModule',{'value':!![]});exports[a0_0x551d('0x7')]=void 0x0;const path=require('path');const path_1=require(a0_0x551d('0x39'));const fs_1=require('fs');const environment_1=require('../../../utilities/environment');const serializer_overrides_1=require(a0_0x551d('0xc'));const {workspaceRoot}=require('../../../utilities/nx-imports');class CloudEnabledLifeCycle{constructor(_0x54d050,_0x3a03b1,_0x13b946,_0x55deb8,_0x51ea36,_0x285ddd,_0x16c34f){this[a0_0x551d('0x10')]=_0x54d050;this[a0_0x551d('0x2c')]=_0x3a03b1;this[a0_0x551d('0x1a')]=_0x13b946;this['collectTerminalOutput']=_0x55deb8;this[a0_0x551d('0xb')]=_0x51ea36;this[a0_0x551d('0x1')]=_0x285ddd;this[a0_0x551d('0x33')]=_0x16c34f;}[a0_0x551d('0x2a')](_0x347e9d){this[a0_0x551d('0x10')]['scheduledTasks'][a0_0x551d('0x31')](_0x347e9d);}[a0_0x551d('0x13')](_0x3f9f93){this['tasks']['push']({'taskId':_0x3f9f93['id'],'startTime':new Date()['toISOString'](),'target':_0x3f9f93[a0_0x551d('0x35')]['target'],'projectName':_0x3f9f93[a0_0x551d('0x35')]['project'],'hash':_0x3f9f93[a0_0x551d('0x22')],'hashDetails':this[a0_0x551d('0x27')](_0x3f9f93[a0_0x551d('0xa')]),'params':(0x0,serializer_overrides_1['serializeOverrides'])(_0x3f9f93)});}[a0_0x551d('0x18')](_0x268748,_0x16e07a){let _0x5373a4;if(this[a0_0x551d('0x10')][a0_0x551d('0x3')][_0x268748[a0_0x551d('0x22')]]){_0x5373a4=this[a0_0x551d('0x10')][a0_0x551d('0x3')][_0x268748[a0_0x551d('0x22')]];}else{if(this['cacheableOperations'][a0_0x551d('0xd')](_0x268748[a0_0x551d('0x35')][a0_0x551d('0x35')])>-0x1&&!this['skipNxCache']){_0x5373a4=a0_0x551d('0x19');}else{_0x5373a4='cache-miss';}}this[a0_0x551d('0x1b')](_0x268748,_0x16e07a,_0x5373a4);}[a0_0x551d('0x37')](_0x205207){for(let _0x44fd79 of _0x205207){let _0x5ab624;const _0x136ce6=_0x44fd79[a0_0x551d('0x15')]===a0_0x551d('0x24');const _0x485373=_0x44fd79[a0_0x551d('0x15')]===a0_0x551d('0x28');const _0x380403=_0x44fd79[a0_0x551d('0x15')]==='local-cache'||_0x44fd79['status']===a0_0x551d('0x0')||_0x485373;if(this[a0_0x551d('0x10')][a0_0x551d('0x3')][_0x44fd79['task']['hash']]){_0x5ab624=this[a0_0x551d('0x10')][a0_0x551d('0x3')][_0x44fd79[a0_0x551d('0x1d')]['hash']];}else if(_0x136ce6){_0x5ab624=a0_0x551d('0x29');}else if(_0x380403){_0x5ab624=a0_0x551d('0x19');}else{if(this[a0_0x551d('0xb')][a0_0x551d('0xd')](_0x44fd79['task'][a0_0x551d('0x35')][a0_0x551d('0x35')])>-0x1&&!this[a0_0x551d('0x1a')]){_0x5ab624=a0_0x551d('0x19');}else{_0x5ab624='cache-miss';}}this[a0_0x551d('0x1b')](_0x44fd79[a0_0x551d('0x1d')],_0x44fd79[a0_0x551d('0x17')],_0x5ab624);}}['endCommand'](){}[a0_0x551d('0x1b')](_0x34ba70,_0x4e7124,_0x268449){const _0x4439c7=this[a0_0x551d('0x33')][a0_0x551d('0xe')](_0x1bc8fc=>_0x1bc8fc[a0_0x551d('0x5')]===_0x34ba70['id']);if(!_0x4439c7){throw new Error(a0_0x551d('0x38')+_0x34ba70['id']);}_0x4439c7[a0_0x551d('0x2')]=new Date()[a0_0x551d('0x25')]();_0x4439c7[a0_0x551d('0x15')]=_0x4e7124;_0x4439c7['params']=this[a0_0x551d('0x1')][a0_0x551d('0x1f')](_0x4439c7[a0_0x551d('0x1e')]);_0x4439c7[a0_0x551d('0x2b')]=_0x268449;if(this[a0_0x551d('0x2d')]){_0x4439c7[a0_0x551d('0x12')]=this[a0_0x551d('0x4')](_0x34ba70[a0_0x551d('0x22')],_0x4439c7['cacheStatus'],_0x4e7124);}}[a0_0x551d('0x4')](_0x570430,_0x1558fa,_0xcc9e6e){let _0x34a85b;if(this['cacheDirectory']){if(this[a0_0x551d('0x2c')][a0_0x551d('0x30')]('./')){_0x34a85b=(0x0,path_1[a0_0x551d('0x14')])(workspaceRoot,this[a0_0x551d('0x2c')]);}else{_0x34a85b=this[a0_0x551d('0x2c')];}}else{_0x34a85b=(0x0,path_1[a0_0x551d('0x14')])(workspaceRoot,a0_0x551d('0x34'),a0_0x551d('0x11'),'nx');}try{const _0x3d03f4=this[a0_0x551d('0x3a')](_0x34a85b,_0x570430);const _0x194489=this[a0_0x551d('0x1')][a0_0x551d('0x1f')](_0x3d03f4);if(environment_1[a0_0x551d('0x6')])return _0x194489;const _0x16c718=_0x1558fa==='cache-miss'?_0xcc9e6e===0x0?CloudEnabledLifeCycle[a0_0x551d('0x26')]:CloudEnabledLifeCycle[a0_0x551d('0x2e')]:CloudEnabledLifeCycle['MAX_CHARACTERS_CACHED_TASK'];return _0x194489[a0_0x551d('0x3c')]>_0x16c718?a0_0x551d('0x20')+_0x194489[a0_0x551d('0x8')](_0x194489['length']-_0x16c718):_0x194489;}catch(_0x3bcbcd){return'';}}['cleanUpHashDetails'](_0x5cf483){const _0x1c23ce={};Object[a0_0x551d('0x32')](_0x5cf483[a0_0x551d('0x3b')])[a0_0x551d('0x1c')](_0x3b369a=>!_0x3b369a[a0_0x551d('0x30')](a0_0x551d('0x23')))[a0_0x551d('0xf')](_0x16adb9=>{_0x1c23ce[_0x16adb9]=_0x5cf483[a0_0x551d('0x3b')][_0x16adb9];});return{'nodes':_0x1c23ce,'runtime':_0x5cf483[a0_0x551d('0x9')],'implicitDeps':_0x5cf483[a0_0x551d('0x36')]};}[a0_0x551d('0x3a')](_0x5cfb00,_0x5cacdb){try{return(0x0,fs_1[a0_0x551d('0x21')])(path[a0_0x551d('0x14')](_0x5cfb00,a0_0x551d('0x3d'),_0x5cacdb))[a0_0x551d('0x2f')]();}catch(_0x539f5a){try{return(0x0,fs_1['readFileSync'])(path[a0_0x551d('0x14')](_0x5cfb00,_0x5cacdb,a0_0x551d('0x12')))[a0_0x551d('0x2f')]();}catch(_0x3db7fa){return'';}}}}exports['CloudEnabledLifeCycle']=CloudEnabledLifeCycle;CloudEnabledLifeCycle['MAX_CHARACTERS_FAILED_TASK']=0x30d40;CloudEnabledLifeCycle[a0_0x551d('0x26')]=0x4e20;CloudEnabledLifeCycle['MAX_CHARACTERS_CACHED_TASK']=0x4e20;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CloudEnabledLifeCycle = void 0;
4
+ const path = require("path");
5
+ const path_1 = require("path");
6
+ const fs_1 = require("fs");
7
+ const environment_1 = require("../../../utilities/environment");
8
+ const serializer_overrides_1 = require("../../../utilities/serializer-overrides");
9
+ const { workspaceRoot } = require('../../../utilities/nx-imports');
10
+ class CloudEnabledLifeCycle {
11
+ constructor(runContext, cacheDirectory, skipNxCache, collectTerminalOutput, cacheableOperations, outputObfuscator, tasks) {
12
+ this.runContext = runContext;
13
+ this.cacheDirectory = cacheDirectory;
14
+ this.skipNxCache = skipNxCache;
15
+ this.collectTerminalOutput = collectTerminalOutput;
16
+ this.cacheableOperations = cacheableOperations;
17
+ this.outputObfuscator = outputObfuscator;
18
+ this.tasks = tasks;
19
+ }
20
+ scheduleTask(task) {
21
+ this.runContext.scheduledTasks.push(task);
22
+ }
23
+ startTask(task) {
24
+ this.tasks.push({
25
+ taskId: task.id,
26
+ startTime: new Date().toISOString(),
27
+ target: task.target.target,
28
+ projectName: task.target.project,
29
+ hash: task.hash,
30
+ hashDetails: this.cleanUpHashDetails(task.hashDetails),
31
+ params: (0, serializer_overrides_1.serializeOverrides)(task),
32
+ });
33
+ }
34
+ // Used for older version for Nx. Remove in Dec 2022
35
+ endTask(task, code) {
36
+ let cacheStatus;
37
+ if (this.runContext.statuses[task.hash]) {
38
+ cacheStatus = this.runContext.statuses[task.hash];
39
+ }
40
+ else {
41
+ if (this.cacheableOperations.indexOf(task.target.target) > -1 &&
42
+ !this.skipNxCache) {
43
+ cacheStatus = 'local-cache-hit';
44
+ }
45
+ else {
46
+ cacheStatus = 'cache-miss';
47
+ }
48
+ }
49
+ this.updateStartedTask(task, code, cacheStatus);
50
+ }
51
+ endTasks(tasks) {
52
+ for (let t of tasks) {
53
+ let cacheStatus;
54
+ const taskIsRemoteCacheHit = t.status === 'remote-cache';
55
+ const taskIsLocalCacheHitPreNx135 = t.status === 'cache';
56
+ const taskIsLocalCacheHit = t.status === 'local-cache' ||
57
+ t.status === 'local-cache-kept-existing' ||
58
+ taskIsLocalCacheHitPreNx135;
59
+ if (this.runContext.statuses[t.task.hash]) {
60
+ cacheStatus = this.runContext.statuses[t.task.hash];
61
+ }
62
+ else if (taskIsRemoteCacheHit) {
63
+ cacheStatus = 'remote-cache-hit';
64
+ }
65
+ else if (taskIsLocalCacheHit) {
66
+ cacheStatus = 'local-cache-hit';
67
+ }
68
+ else {
69
+ if (this.cacheableOperations.indexOf(t.task.target.target) > -1 &&
70
+ !this.skipNxCache) {
71
+ cacheStatus = 'local-cache-hit';
72
+ }
73
+ else {
74
+ cacheStatus = 'cache-miss';
75
+ }
76
+ }
77
+ this.updateStartedTask(t.task, t.code, cacheStatus);
78
+ }
79
+ }
80
+ endCommand() { }
81
+ updateStartedTask(task, code, cacheStatus) {
82
+ const startedTask = this.tasks.find((t) => t.taskId === task.id);
83
+ if (!startedTask) {
84
+ throw new Error(`Cannot find task ${task.id}`);
85
+ }
86
+ startedTask.endTime = new Date().toISOString();
87
+ startedTask.status = code;
88
+ startedTask.params = this.outputObfuscator.obfuscate(startedTask.params);
89
+ startedTask.cacheStatus = cacheStatus;
90
+ if (this.collectTerminalOutput) {
91
+ startedTask.terminalOutput = this.getTerminalOutput(task.hash, startedTask.cacheStatus, code);
92
+ }
93
+ }
94
+ getTerminalOutput(hash, cacheStatus, code) {
95
+ let dir;
96
+ if (this.cacheDirectory) {
97
+ if (this.cacheDirectory.startsWith('./')) {
98
+ dir = (0, path_1.join)(workspaceRoot, this.cacheDirectory);
99
+ }
100
+ else {
101
+ dir = this.cacheDirectory;
102
+ }
103
+ }
104
+ else {
105
+ dir = (0, path_1.join)(workspaceRoot, 'node_modules', '.cache', 'nx');
106
+ }
107
+ try {
108
+ const taskOutput = this.readTerminalOutputFile(dir, hash);
109
+ const taskOutputSanitized = this.outputObfuscator.obfuscate(taskOutput);
110
+ if (environment_1.NX_CLOUD_UNLIMITED_OUTPUT)
111
+ return taskOutputSanitized;
112
+ const maxCharacters = cacheStatus === 'cache-miss'
113
+ ? code === 0
114
+ ? CloudEnabledLifeCycle.MAX_CHARACTERS_SUCCESSFUL_TASK
115
+ : CloudEnabledLifeCycle.MAX_CHARACTERS_FAILED_TASK
116
+ : CloudEnabledLifeCycle.MAX_CHARACTERS_CACHED_TASK;
117
+ return taskOutputSanitized.length > maxCharacters
118
+ ? `TRUNCATED\n\n${taskOutputSanitized.slice(taskOutputSanitized.length - maxCharacters)}`
119
+ : taskOutputSanitized;
120
+ }
121
+ catch (e) {
122
+ return '';
123
+ }
124
+ }
125
+ cleanUpHashDetails(hashDetails) {
126
+ const nodes = {};
127
+ Object.keys(hashDetails.nodes)
128
+ .filter((k) => !k.startsWith('npm:'))
129
+ .forEach((k) => {
130
+ nodes[k] = hashDetails.nodes[k];
131
+ });
132
+ return {
133
+ nodes,
134
+ runtime: hashDetails.runtime,
135
+ implicitDeps: hashDetails.implicitDeps,
136
+ };
137
+ }
138
+ readTerminalOutputFile(dir, hash) {
139
+ try {
140
+ return (0, fs_1.readFileSync)(path.join(dir, 'terminalOutputs', hash)).toString();
141
+ }
142
+ catch (_a) {
143
+ try {
144
+ return (0, fs_1.readFileSync)(path.join(dir, hash, 'terminalOutput')).toString();
145
+ }
146
+ catch (_b) {
147
+ return '';
148
+ }
149
+ }
150
+ }
151
+ }
152
+ exports.CloudEnabledLifeCycle = CloudEnabledLifeCycle;
153
+ CloudEnabledLifeCycle.MAX_CHARACTERS_FAILED_TASK = 200000;
154
+ CloudEnabledLifeCycle.MAX_CHARACTERS_SUCCESSFUL_TASK = 20000;
155
+ CloudEnabledLifeCycle.MAX_CHARACTERS_CACHED_TASK = 20000;
156
+ //# sourceMappingURL=cloud-enabled-life-cycle.js.map
@@ -1 +1,288 @@
1
- const a1_0x154c=['env','uploads','map','indexOf','@nrwl/nx-cloud/lib/daemon/process-run-end','../../../utilities/environment','printCacheHitsMessage','value','cacheableOperations','./cloud-enabled-life-cycle','anyErrors','../../file-storage/e2e-encryption','pathExists','enabled','join','apply','cachePath','defineProperty','toISOString','cloudEnabledTasksRunner','taskId','writeFileSync','../../../utilities/metric-logger','Nx\x20Cloud\x20wasn\x27t\x20able\x20to\x20record\x20its\x20run.','getBranch','url','Nx\x20Cloud\x20Problems','Nx\x20Cloud\x20wasn\x27t\x20able\x20to\x20store\x20artifacts.','localhost','./cloud-run.api','encryptionKey','printMessages','ENCRYPTION_KEY','obfuscate','complete','tasks-hashes-','error','cacheDirectory','subscribe','daemon','stringify','ACCESS_TOKEN','./id-generator','fs-extra','../../terminal-output/end-of-run-message','FileStorage','.nx.app','endsWith','extractGitSha','../../terminal-output/output-obfuscator','runUrl','note','NX_CLOUD_DISTRIBUTED_EXECUTION_ID','processInBackground','endRun','done','assign','AGENT_RUNNING_IN_DISTRIBUTED_EXECUTION','https://nx.app','../../api/error-reporter.api','../../terminal-output/message-reporter','throw','submitRunMetrics','MessageReporter','../../../utilities/nx-imports','./cloud-remote-cache','api.nrwl.io','then','scan','skipNxCache','catch','__esModule','getRunGroup','accessToken','CloudEnabledLifeCycle','E2EEncryption','getMachineInfo','DISTRIBUTED_TASK_EXECUTION_INTERNAL_ERROR_STATUS_CODE','maskedProperties','Executed\x20tasks\x20with\x20hashes:\x20','length','ErrorReporterApi','next','lifeCycle','requests','filter','waitForStoreRequestsToComplete','../../file-storage/file-storage','hash','./node_modules/.cache/nx','.commit'];(function(_0x571903,_0x154cc9){const _0x42785c=function(_0x4c21dc){while(--_0x4c21dc){_0x571903['push'](_0x571903['shift']());}};_0x42785c(++_0x154cc9);}(a1_0x154c,0x1d2));const a1_0x4278=function(_0x571903,_0x154cc9){_0x571903=_0x571903-0x0;let _0x42785c=a1_0x154c[_0x571903];return _0x42785c;};'use strict';var __awaiter=this&&this['__awaiter']||function(_0x969374,_0x52d25a,_0x55eb34,_0xcc9f58){function _0x2d9c1d(_0x440911){return _0x440911 instanceof _0x55eb34?_0x440911:new _0x55eb34(function(_0x5c2b83){_0x5c2b83(_0x440911);});}return new(_0x55eb34||(_0x55eb34=Promise))(function(_0x1e560b,_0x19927f){function _0x3e19e2(_0x25407b){try{_0x2c37cd(_0xcc9f58['next'](_0x25407b));}catch(_0xb4eb01){_0x19927f(_0xb4eb01);}}function _0x26c524(_0x4a68a7){try{_0x2c37cd(_0xcc9f58[a1_0x4278('0x32')](_0x4a68a7));}catch(_0x41059f){_0x19927f(_0x41059f);}}function _0x2c37cd(_0x270705){_0x270705[a1_0x4278('0x2c')]?_0x1e560b(_0x270705[a1_0x4278('0x57')]):_0x2d9c1d(_0x270705[a1_0x4278('0x57')])[a1_0x4278('0x38')](_0x3e19e2,_0x26c524);}_0x2c37cd((_0xcc9f58=_0xcc9f58[a1_0x4278('0x4')](_0x969374,_0x52d25a||[]))[a1_0x4278('0x47')]());});};Object[a1_0x4278('0x6')](exports,a1_0x4278('0x3c'),{'value':!![]});exports['cloudEnabledTasksRunner']=void 0x0;const message_reporter_1=require(a1_0x4278('0x31'));const end_of_run_message_1=require(a1_0x4278('0x21'));const output_obfuscator_1=require(a1_0x4278('0x26'));const cloud_enabled_life_cycle_1=require(a1_0x4278('0x59'));const file_storage_1=require(a1_0x4278('0x4c'));const e2e_encryption_1=require(a1_0x4278('0x0'));const environment_1=require(a1_0x4278('0x55'));const cloud_remote_cache_1=require(a1_0x4278('0x36'));const cloud_run_api_1=require(a1_0x4278('0x12'));const fs_1=require('fs');const path=require('path');const metric_logger_1=require(a1_0x4278('0xb'));const error_reporter_api_1=require(a1_0x4278('0x30'));const path_1=require('path');const fs_extra_1=require(a1_0x4278('0x20'));const id_generator_1=require(a1_0x4278('0x1f'));const {tasksRunner,output,Cache}=require(a1_0x4278('0x35'));function createApi(_0x565d58,_0x3d922f,_0x373304){const _0x39a598=(0x0,environment_1[a1_0x4278('0x41')])(_0x3d922f);return new cloud_run_api_1['CloudRunApi'](_0x565d58,_0x373304,_0x3d922f,_0x39a598);}function storeTaskHashes(_0x51aef5,_0x8fa494,_0x1d31a8){const _0x352087=JSON[a1_0x4278('0x1d')](_0x51aef5[a1_0x4278('0x52')](_0x124a37=>({'taskId':_0x124a37[a1_0x4278('0x9')],'hash':_0x124a37[a1_0x4278('0x4d')]})));if(environment_1['VERBOSE_LOGGING']){output[a1_0x4278('0x28')]({'title':a1_0x4278('0x44')+_0x352087});}(0x0,fs_1[a1_0x4278('0xa')])(path['join'](_0x8fa494,a1_0x4278('0x18')+_0x1d31a8),_0x352087);}function onComplete({daemon,lifeCycle,options,remoteCache,api,outputObfuscator,runStartTime,messages,endOfRunMessage,taskExecutions,versionOfNxBefore133,inner,encryptionKey,fileStorage,uploadInCurrentProcess,runContext}){return __awaiter(this,void 0x0,void 0x0,function*(){const _0x257720=new Date()[a1_0x4278('0x7')]();const _0x24dc40=(0x0,environment_1[a1_0x4278('0xd')])();const _0x100f50={'command':outputObfuscator[a1_0x4278('0x16')]((0x0,environment_1['parseCommand'])()),'startTime':runStartTime,'endTime':_0x257720,'distributedExecutionId':environment_1[a1_0x4278('0x29')],'branch':_0x24dc40,'scan':!![],'runGroup':(0x0,environment_1[a1_0x4278('0x3d')])(),'sha':_0x24dc40?(0x0,environment_1[a1_0x4278('0x25')])():undefined,'inner':inner};if(uploadInCurrentProcess){if(environment_1[a1_0x4278('0x2e')]){storeTaskHashes(taskExecutions,options['cacheDirectory']||a1_0x4278('0x4e'),environment_1[a1_0x4278('0x29')]);}try{yield remoteCache[a1_0x4278('0x4b')]();}catch(_0x4874fc){output[a1_0x4278('0x19')]({'title':a1_0x4278('0x10')});messages['printMessages']();process['exit'](environment_1[a1_0x4278('0x42')]);}try{yield api[a1_0x4278('0x2b')](_0x100f50,taskExecutions);}catch(_0x8a3936){output[a1_0x4278('0x19')]({'title':a1_0x4278('0xc')});messages[a1_0x4278('0x14')]();process['exit'](environment_1['DISTRIBUTED_TASK_EXECUTION_INTERNAL_ERROR_STATUS_CODE']);}yield(0x0,metric_logger_1[a1_0x4278('0x33')])(options);}else{try{const _0x14e471=environment_1[a1_0x4278('0x1e')]?environment_1[a1_0x4278('0x1e')]:options[a1_0x4278('0x3e')];const _0x211741=(0x0,id_generator_1['generateUniqueLinkId'])();yield daemon[a1_0x4278('0x2a')](a1_0x4278('0x54'),{'encryptionKey':encryptionKey,'runnerOptions':Object[a1_0x4278('0x2d')](Object[a1_0x4278('0x2d')]({},options),{'accessToken':_0x14e471}),'uploads':fileStorage[a1_0x4278('0x51')],'runEnd':{'runData':_0x100f50,'taskExecutions':taskExecutions,'linkId':_0x211741}});runContext[a1_0x4278('0x27')]=(options[a1_0x4278('0xe')]||a1_0x4278('0x2f'))+'/runs/'+_0x211741;}catch(_0x483b36){output['warn']({'title':a1_0x4278('0xf'),'bodyLines':[_0x483b36['message']||_0x483b36['toString']()]});}}if(versionOfNxBefore133){setTimeout(()=>{messages[a1_0x4278('0x14')]();if(!messages[a1_0x4278('0x5a')]&&!inner){endOfRunMessage['printCacheHitsMessage']();}},0x0);}else{messages[a1_0x4278('0x14')]();if(!messages[a1_0x4278('0x5a')]&&!inner){endOfRunMessage[a1_0x4278('0x56')]();}}});}function createLifeCycle(_0x25e98c,_0x114a80,_0x40339c,_0x4bfd9e){const _0x41e1f6=new cloud_enabled_life_cycle_1[(a1_0x4278('0x3f'))](_0x25e98c,_0x114a80[a1_0x4278('0x1a')],!!_0x114a80[a1_0x4278('0x3a')],_0x114a80['scan']===undefined?!![]:_0x114a80[a1_0x4278('0x39')],_0x114a80[a1_0x4278('0x58')]||[],_0x40339c,_0x4bfd9e);try{const {CompositeLifeCycle}=require(a1_0x4278('0x35'));if(!CompositeLifeCycle)return _0x41e1f6;return new CompositeLifeCycle([_0x114a80['lifeCycle'],_0x41e1f6]);}catch(_0x4c8aab){return _0x41e1f6;}}function fetchUrlsForKnownHashesUpfront(_0x1bfa5e,_0x3d4f7f,_0x17e2c2,_0x47082c){return __awaiter(this,void 0x0,void 0x0,function*(){let _0x379cc5=_0x17e2c2[a1_0x4278('0x52')](_0x5c4cfe=>_0x5c4cfe[a1_0x4278('0x4d')])[a1_0x4278('0x4a')](_0x28299f=>!!_0x28299f);const _0x5c01f6=new Cache(_0x47082c);if(!_0x47082c['skipNxCache']){const _0x4253dc=yield Promise['all'](_0x379cc5['map'](_0x2fc98b=>{const _0x8a1b04=(0x0,path_1[a1_0x4278('0x3')])(_0x5c01f6[a1_0x4278('0x5')],_0x2fc98b+a1_0x4278('0x4f'));return(0x0,fs_extra_1[a1_0x4278('0x1')])(_0x8a1b04);}));const _0x26bcc0=[];for(let _0xb5a5a8=0x0;_0xb5a5a8<_0x4253dc[a1_0x4278('0x45')];++_0xb5a5a8){if(_0x4253dc[_0xb5a5a8]){_0x26bcc0['push'](_0x379cc5[_0xb5a5a8]);}}_0x379cc5=_0x26bcc0;}if(_0x379cc5[a1_0x4278('0x45')]>0x0){const _0x5eeb94=_0x1bfa5e['startRun'](environment_1['NX_CLOUD_DISTRIBUTED_EXECUTION_ID'],_0x379cc5);for(const _0x20b41 of _0x379cc5){_0x3d4f7f[a1_0x4278('0x49')][_0x20b41]=_0x5eeb94;}}});}function isConnectedToPrivateCloud(_0x2d7f26){if(!_0x2d7f26[a1_0x4278('0xe')])return![];if(_0x2d7f26[a1_0x4278('0xe')][a1_0x4278('0x24')](a1_0x4278('0x37')))return![];if(_0x2d7f26[a1_0x4278('0xe')]['endsWith'](a1_0x4278('0x23')))return![];if(_0x2d7f26[a1_0x4278('0xe')][a1_0x4278('0x53')](a1_0x4278('0x11'))>-0x1)return![];return!![];}function cloudEnabledTasksRunner(_0x3314c8,_0x388ed5,_0x15b16f,_0x5b7533=![]){var _0x4ee041;const _0xc1f823={'statuses':{},'scheduledTasks':[],'requests':{},'allTasks':_0x3314c8};const _0x20a09f=_0x388ed5[a1_0x4278('0x48')]===undefined;const _0x42d96c=[];const _0xcaf623=new message_reporter_1[(a1_0x4278('0x34'))](_0x388ed5);const _0x483533=createApi(_0xcaf623,_0x388ed5,_0xc1f823);const _0xced1d6=new end_of_run_message_1['EndOfRunMessage'](_0xc1f823,_0x42d96c);const _0x16a79c=new output_obfuscator_1['OutputObfuscator'](_0x388ed5[a1_0x4278('0x43')]);const _0xf1c4ba=new Date()[a1_0x4278('0x7')]();const _0x234bb9=createLifeCycle(_0xc1f823,_0x388ed5,_0x16a79c,_0x42d96c);const _0x392e27=environment_1[a1_0x4278('0x15')]||_0x388ed5[a1_0x4278('0x13')];const _0x2ebc7b=new e2e_encryption_1[(a1_0x4278('0x40'))](_0x392e27);const _0x312f53=new error_reporter_api_1[(a1_0x4278('0x46'))](_0x388ed5);const _0x289672=!!environment_1[a1_0x4278('0x2e')]||!((_0x4ee041=_0x15b16f['daemon'])===null||_0x4ee041===void 0x0?void 0x0:_0x4ee041[a1_0x4278('0x2')]())||isConnectedToPrivateCloud(_0x388ed5);const _0x4aa72f=new file_storage_1[(a1_0x4278('0x22'))](_0x2ebc7b,_0x312f53,![],_0x289672);const _0x53ee25=new cloud_remote_cache_1['CloudRemoteCache'](_0xcaf623,_0x483533,_0xc1f823,_0x4aa72f);fetchUrlsForKnownHashesUpfront(_0x483533,_0xc1f823,_0x3314c8,_0x388ed5);delete process[a1_0x4278('0x50')][a1_0x4278('0x29')];const _0x27bfc9=tasksRunner(_0x3314c8,Object[a1_0x4278('0x2d')](Object[a1_0x4278('0x2d')]({},_0x388ed5),{'remoteCache':_0x53ee25,'lifeCycle':_0x234bb9}),_0x15b16f);if(_0x27bfc9[a1_0x4278('0x1b')]){const {Subject}=require('rxjs/internal/Subject');const _0x24d96b=new Subject();_0x27bfc9['subscribe']({'next':_0x100b0b=>_0x24d96b['next'](_0x100b0b),'error':_0x73fc46=>_0x24d96b[a1_0x4278('0x19')](_0x73fc46),'complete':()=>__awaiter(this,void 0x0,void 0x0,function*(){yield onComplete({'daemon':_0x15b16f[a1_0x4278('0x1c')],'lifeCycle':_0x234bb9,'options':_0x388ed5,'remoteCache':_0x53ee25,'api':_0x483533,'outputObfuscator':_0x16a79c,'runStartTime':_0xf1c4ba,'messages':_0xcaf623,'endOfRunMessage':_0xced1d6,'taskExecutions':_0x42d96c,'versionOfNxBefore133':_0x20a09f,'inner':_0x5b7533,'encryptionKey':_0x392e27,'fileStorage':_0x4aa72f,'uploadInCurrentProcess':_0x289672,'runContext':_0xc1f823});_0x24d96b[a1_0x4278('0x17')]();})});return _0x24d96b;}else{return _0x27bfc9[a1_0x4278('0x38')](_0xc0134b=>__awaiter(this,void 0x0,void 0x0,function*(){yield onComplete({'daemon':_0x15b16f['daemon'],'lifeCycle':_0x234bb9,'options':_0x388ed5,'remoteCache':_0x53ee25,'api':_0x483533,'outputObfuscator':_0x16a79c,'runStartTime':_0xf1c4ba,'messages':_0xcaf623,'endOfRunMessage':_0xced1d6,'taskExecutions':_0x42d96c,'versionOfNxBefore133':_0x20a09f,'inner':_0x5b7533,'encryptionKey':_0x392e27,'fileStorage':_0x4aa72f,'uploadInCurrentProcess':_0x289672,'runContext':_0xc1f823});return _0xc0134b;}))[a1_0x4278('0x3b')](_0x5529f6=>__awaiter(this,void 0x0,void 0x0,function*(){yield onComplete({'daemon':_0x15b16f[a1_0x4278('0x1c')],'lifeCycle':_0x234bb9,'options':_0x388ed5,'remoteCache':_0x53ee25,'api':_0x483533,'outputObfuscator':_0x16a79c,'runStartTime':_0xf1c4ba,'messages':_0xcaf623,'endOfRunMessage':_0xced1d6,'taskExecutions':_0x42d96c,'versionOfNxBefore133':_0x20a09f,'inner':_0x5b7533,'encryptionKey':_0x392e27,'fileStorage':_0x4aa72f,'uploadInCurrentProcess':_0x289672,'runContext':_0xc1f823});throw _0x5529f6;}));}}exports[a1_0x4278('0x8')]=cloudEnabledTasksRunner;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.cloudEnabledTasksRunner = void 0;
13
+ const message_reporter_1 = require("../../terminal-output/message-reporter");
14
+ const end_of_run_message_1 = require("../../terminal-output/end-of-run-message");
15
+ const output_obfuscator_1 = require("../../terminal-output/output-obfuscator");
16
+ const cloud_enabled_life_cycle_1 = require("./cloud-enabled-life-cycle");
17
+ const file_storage_1 = require("../../file-storage/file-storage");
18
+ const e2e_encryption_1 = require("../../file-storage/e2e-encryption");
19
+ const environment_1 = require("../../../utilities/environment");
20
+ const cloud_remote_cache_1 = require("./cloud-remote-cache");
21
+ const cloud_run_api_1 = require("./cloud-run.api");
22
+ const fs_1 = require("fs");
23
+ const path = require("path");
24
+ const metric_logger_1 = require("../../../utilities/metric-logger");
25
+ const error_reporter_api_1 = require("../../api/error-reporter.api");
26
+ const path_1 = require("path");
27
+ const fs_extra_1 = require("fs-extra");
28
+ const id_generator_1 = require("./id-generator");
29
+ const { tasksRunner, output, Cache } = require('../../../utilities/nx-imports');
30
+ function createApi(errors, options, runContext) {
31
+ const machineInfo = (0, environment_1.getMachineInfo)(options);
32
+ return new cloud_run_api_1.CloudRunApi(errors, runContext, options, machineInfo);
33
+ }
34
+ function storeTaskHashes(taskExecutions, directory, distributedExecutionId) {
35
+ const hashes = JSON.stringify(taskExecutions.map((t) => ({
36
+ taskId: t.taskId,
37
+ hash: t.hash,
38
+ })));
39
+ if (environment_1.VERBOSE_LOGGING) {
40
+ output.note({
41
+ title: `Executed tasks with hashes: ${hashes}`,
42
+ });
43
+ }
44
+ (0, fs_1.writeFileSync)(path.join(directory, `tasks-hashes-${distributedExecutionId}`), hashes);
45
+ }
46
+ function onComplete({ daemon, lifeCycle, options, remoteCache, api, outputObfuscator, runStartTime, messages, endOfRunMessage, taskExecutions, versionOfNxBefore133, inner, encryptionKey, fileStorage, uploadInCurrentProcess, runContext, }) {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ const runEndTime = new Date().toISOString();
49
+ const branch = (0, environment_1.getBranch)();
50
+ const runData = {
51
+ command: outputObfuscator.obfuscate((0, environment_1.parseCommand)()),
52
+ startTime: runStartTime,
53
+ endTime: runEndTime,
54
+ distributedExecutionId: environment_1.NX_CLOUD_DISTRIBUTED_EXECUTION_ID,
55
+ branch: branch,
56
+ scan: true,
57
+ runGroup: (0, environment_1.getRunGroup)(),
58
+ // only set sha if branch is set because we invoke a separate process,
59
+ // which adds a few millis
60
+ sha: branch ? (0, environment_1.extractGitSha)() : undefined,
61
+ inner: inner,
62
+ };
63
+ if (uploadInCurrentProcess) {
64
+ if (environment_1.AGENT_RUNNING_IN_DISTRIBUTED_EXECUTION) {
65
+ storeTaskHashes(taskExecutions, options.cacheDirectory || './node_modules/.cache/nx', environment_1.NX_CLOUD_DISTRIBUTED_EXECUTION_ID);
66
+ }
67
+ try {
68
+ yield remoteCache.waitForStoreRequestsToComplete();
69
+ }
70
+ catch (e) {
71
+ output.error({
72
+ title: `Nx Cloud wasn't able to store artifacts.`,
73
+ });
74
+ messages.printMessages();
75
+ process.exit(environment_1.DISTRIBUTED_TASK_EXECUTION_INTERNAL_ERROR_STATUS_CODE);
76
+ }
77
+ try {
78
+ yield api.endRun(runData, taskExecutions);
79
+ }
80
+ catch (e) {
81
+ output.error({
82
+ title: `Nx Cloud wasn't able to record its run.`,
83
+ });
84
+ messages.printMessages();
85
+ process.exit(environment_1.DISTRIBUTED_TASK_EXECUTION_INTERNAL_ERROR_STATUS_CODE);
86
+ }
87
+ yield (0, metric_logger_1.submitRunMetrics)(options);
88
+ }
89
+ else {
90
+ try {
91
+ const accessToken = environment_1.ACCESS_TOKEN ? environment_1.ACCESS_TOKEN : options.accessToken;
92
+ const linkId = (0, id_generator_1.generateUniqueLinkId)();
93
+ yield daemon.processInBackground('@nrwl/nx-cloud/lib/daemon/process-run-end', {
94
+ encryptionKey,
95
+ runnerOptions: Object.assign(Object.assign({}, options), { accessToken }),
96
+ uploads: fileStorage.uploads,
97
+ runEnd: {
98
+ runData,
99
+ taskExecutions,
100
+ linkId,
101
+ },
102
+ });
103
+ runContext.runUrl = `${options.url || 'https://nx.app'}/runs/${linkId}`;
104
+ }
105
+ catch (e) {
106
+ output.warn({
107
+ title: `Nx Cloud Problems`,
108
+ bodyLines: [e.message || e.toString()],
109
+ });
110
+ }
111
+ }
112
+ // this workaround is required because prior to Nx 13.3 we printed
113
+ // the end message after the runner completes, so we need to wait for the
114
+ // message to appear in the right place
115
+ if (versionOfNxBefore133) {
116
+ setTimeout(() => {
117
+ messages.printMessages();
118
+ if (!messages.anyErrors && !inner) {
119
+ endOfRunMessage.printCacheHitsMessage();
120
+ }
121
+ }, 0);
122
+ }
123
+ else {
124
+ messages.printMessages();
125
+ if (!messages.anyErrors && !inner) {
126
+ endOfRunMessage.printCacheHitsMessage();
127
+ }
128
+ }
129
+ });
130
+ }
131
+ function createLifeCycle(runContext, options, outputObfuscator, tasks) {
132
+ const cloudEnabledLifeCycle = new cloud_enabled_life_cycle_1.CloudEnabledLifeCycle(runContext, options.cacheDirectory, !!options.skipNxCache, options.scan === undefined ? true : options.scan, options.cacheableOperations || [], outputObfuscator, tasks);
133
+ try {
134
+ const { CompositeLifeCycle } = require('../../../utilities/nx-imports');
135
+ if (!CompositeLifeCycle)
136
+ return cloudEnabledLifeCycle;
137
+ return new CompositeLifeCycle([options.lifeCycle, cloudEnabledLifeCycle]);
138
+ }
139
+ catch (e) {
140
+ return cloudEnabledLifeCycle;
141
+ }
142
+ }
143
+ function fetchUrlsForKnownHashesUpfront(api, runContext, tasks, options) {
144
+ return __awaiter(this, void 0, void 0, function* () {
145
+ let hashes = tasks.map((t) => t.hash).filter((h) => !!h);
146
+ const c = new Cache(options);
147
+ if (!options.skipNxCache) {
148
+ // filter out the urls that don't have artifact stored locally
149
+ const promises = yield Promise.all(hashes.map((hash) => {
150
+ const tdCommit = (0, path_1.join)(c.cachePath, `${hash}.commit`);
151
+ return (0, fs_extra_1.pathExists)(tdCommit);
152
+ }));
153
+ const missingHashes = [];
154
+ for (let i = 0; i < promises.length; ++i) {
155
+ if (promises[i]) {
156
+ missingHashes.push(hashes[i]);
157
+ }
158
+ }
159
+ hashes = missingHashes;
160
+ }
161
+ if (hashes.length > 0) {
162
+ const startRunRequest = api.startRun(environment_1.NX_CLOUD_DISTRIBUTED_EXECUTION_ID, hashes);
163
+ for (const hash of hashes) {
164
+ runContext.requests[hash] = startRunRequest;
165
+ }
166
+ }
167
+ });
168
+ }
169
+ function isConnectedToPrivateCloud(options) {
170
+ if (!options.url)
171
+ return false;
172
+ if (options.url.endsWith('api.nrwl.io'))
173
+ return false;
174
+ if (options.url.endsWith('.nx.app'))
175
+ return false;
176
+ if (options.url.indexOf('localhost') > -1)
177
+ return false;
178
+ return true;
179
+ }
180
+ function cloudEnabledTasksRunner(tasks, options, context, inner = false) {
181
+ var _a;
182
+ const runContext = {
183
+ statuses: {},
184
+ scheduledTasks: [],
185
+ requests: {},
186
+ allTasks: tasks,
187
+ };
188
+ const versionOfNxBefore133 = options.lifeCycle === undefined;
189
+ const taskExecutions = [];
190
+ const messages = new message_reporter_1.MessageReporter(options);
191
+ const api = createApi(messages, options, runContext);
192
+ const endOfRunMessage = new end_of_run_message_1.EndOfRunMessage(runContext, taskExecutions);
193
+ const outputObfuscator = new output_obfuscator_1.OutputObfuscator(options.maskedProperties);
194
+ const runStartTime = new Date().toISOString();
195
+ const lifeCycle = createLifeCycle(runContext, options, outputObfuscator, taskExecutions);
196
+ const encryptionKey = environment_1.ENCRYPTION_KEY || options.encryptionKey;
197
+ const encryption = new e2e_encryption_1.E2EEncryption(encryptionKey);
198
+ const errorApi = new error_reporter_api_1.ErrorReporterApi(options);
199
+ const uploadInCurrentProcess = !!environment_1.AGENT_RUNNING_IN_DISTRIBUTED_EXECUTION ||
200
+ !((_a = context.daemon) === null || _a === void 0 ? void 0 : _a.enabled()) ||
201
+ isConnectedToPrivateCloud(options);
202
+ const fileStorage = new file_storage_1.FileStorage(encryption, errorApi, false, uploadInCurrentProcess);
203
+ const remoteCache = new cloud_remote_cache_1.CloudRemoteCache(messages, api, runContext, fileStorage);
204
+ // we don't await for it cause this step is optional
205
+ fetchUrlsForKnownHashesUpfront(api, runContext, tasks, options);
206
+ // have to reset it so we don't capture inner tasks
207
+ delete process.env.NX_CLOUD_DISTRIBUTED_EXECUTION_ID;
208
+ const res = tasksRunner(tasks, Object.assign(Object.assign({}, options), { remoteCache, lifeCycle }), context);
209
+ // observable -> legacy
210
+ if (res.subscribe) {
211
+ const { Subject } = require('rxjs/internal/Subject');
212
+ const wrappedRes = new Subject();
213
+ res.subscribe({
214
+ next: (value) => wrappedRes.next(value),
215
+ error: (err) => wrappedRes.error(err),
216
+ complete: () => __awaiter(this, void 0, void 0, function* () {
217
+ yield onComplete({
218
+ daemon: context.daemon,
219
+ lifeCycle,
220
+ options,
221
+ remoteCache,
222
+ api,
223
+ outputObfuscator,
224
+ runStartTime,
225
+ messages,
226
+ endOfRunMessage,
227
+ taskExecutions,
228
+ versionOfNxBefore133,
229
+ inner,
230
+ encryptionKey,
231
+ fileStorage,
232
+ uploadInCurrentProcess,
233
+ runContext,
234
+ });
235
+ wrappedRes.complete();
236
+ }),
237
+ });
238
+ return wrappedRes;
239
+ // promise
240
+ }
241
+ else {
242
+ return res
243
+ .then((r) => __awaiter(this, void 0, void 0, function* () {
244
+ yield onComplete({
245
+ daemon: context.daemon,
246
+ lifeCycle,
247
+ options,
248
+ remoteCache,
249
+ api,
250
+ outputObfuscator,
251
+ runStartTime,
252
+ messages,
253
+ endOfRunMessage,
254
+ taskExecutions,
255
+ versionOfNxBefore133,
256
+ inner,
257
+ encryptionKey,
258
+ fileStorage,
259
+ uploadInCurrentProcess,
260
+ runContext,
261
+ });
262
+ return r;
263
+ }))
264
+ .catch((e) => __awaiter(this, void 0, void 0, function* () {
265
+ yield onComplete({
266
+ daemon: context.daemon,
267
+ lifeCycle,
268
+ options,
269
+ remoteCache,
270
+ api,
271
+ outputObfuscator,
272
+ runStartTime,
273
+ messages,
274
+ endOfRunMessage,
275
+ taskExecutions,
276
+ versionOfNxBefore133,
277
+ inner,
278
+ encryptionKey,
279
+ fileStorage,
280
+ uploadInCurrentProcess,
281
+ runContext,
282
+ });
283
+ throw e;
284
+ }));
285
+ }
286
+ }
287
+ exports.cloudEnabledTasksRunner = cloudEnabledTasksRunner;
288
+ //# sourceMappingURL=cloud-enabled.runner.js.map