@lage-run/scheduler 0.2.0 → 0.3.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.json +40 -1
- package/CHANGELOG.md +14 -2
- package/README.md +6 -0
- package/lib/SimpleScheduler.d.ts +9 -7
- package/lib/SimpleScheduler.js +16 -18
- package/lib/SimpleScheduler.js.map +1 -1
- package/lib/WrappedTarget.d.ts +2 -2
- package/lib/WrappedTarget.js +1 -1
- package/lib/WrappedTarget.js.map +1 -1
- package/lib/createCachedOutputTransform.d.ts +1 -1
- package/lib/createCachedOutputTransform.js +2 -1
- package/lib/createCachedOutputTransform.js.map +1 -1
- package/lib/formatDuration.js +2 -2
- package/lib/formatDuration.js.map +1 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.js +7 -3
- package/lib/index.js.map +1 -1
- package/lib/runners/NoOpRunner.d.ts +1 -1
- package/lib/runners/NoOpRunner.js +3 -1
- package/lib/runners/NoOpRunner.js.map +1 -1
- package/lib/runners/NpmScriptRunner.d.ts +3 -3
- package/lib/runners/NpmScriptRunner.js +2 -2
- package/lib/runners/NpmScriptRunner.js.map +1 -1
- package/lib/runners/TargetRunnerPicker.d.ts +13 -0
- package/lib/runners/TargetRunnerPicker.js +24 -0
- package/lib/runners/TargetRunnerPicker.js.map +1 -0
- package/lib/runners/WorkerRunner.d.ts +61 -0
- package/lib/runners/WorkerRunner.js +152 -0
- package/lib/runners/WorkerRunner.js.map +1 -0
- package/lib/types/TargetRun.d.ts +2 -2
- package/lib/types/TargetRunner.d.ts +3 -2
- package/lib/types/TargetScheduler.d.ts +1 -1
- package/package.json +6 -4
package/CHANGELOG.json
CHANGED
|
@@ -2,7 +2,46 @@
|
|
|
2
2
|
"name": "@lage-run/scheduler",
|
|
3
3
|
"entries": [
|
|
4
4
|
{
|
|
5
|
-
"date": "
|
|
5
|
+
"date": "Sun, 04 Sep 2022 23:00:04 GMT",
|
|
6
|
+
"tag": "@lage-run/scheduler_v0.3.0",
|
|
7
|
+
"version": "0.3.0",
|
|
8
|
+
"comments": {
|
|
9
|
+
"minor": [
|
|
10
|
+
{
|
|
11
|
+
"author": "ken@gizzar.com",
|
|
12
|
+
"package": "@lage-run/scheduler",
|
|
13
|
+
"commit": "21bc0d3c799d654d236aa994e8e98ac5c250567c",
|
|
14
|
+
"comment": "Supports worker as a new target type"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"author": "beachball",
|
|
18
|
+
"package": "@lage-run/scheduler",
|
|
19
|
+
"comment": "Bump @lage-run/target-graph to v0.3.0",
|
|
20
|
+
"commit": "21bc0d3c799d654d236aa994e8e98ac5c250567c"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"author": "beachball",
|
|
24
|
+
"package": "@lage-run/scheduler",
|
|
25
|
+
"comment": "Bump @lage-run/logger to v1.2.0",
|
|
26
|
+
"commit": "21bc0d3c799d654d236aa994e8e98ac5c250567c"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"author": "beachball",
|
|
30
|
+
"package": "@lage-run/scheduler",
|
|
31
|
+
"comment": "Bump @lage-run/cache to v0.1.7",
|
|
32
|
+
"commit": "21bc0d3c799d654d236aa994e8e98ac5c250567c"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"author": "beachball",
|
|
36
|
+
"package": "@lage-run/scheduler",
|
|
37
|
+
"comment": "Bump @lage-run/worker-threads-pool to v0.1.1",
|
|
38
|
+
"commit": "21bc0d3c799d654d236aa994e8e98ac5c250567c"
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"date": "Fri, 26 Aug 2022 06:34:51 GMT",
|
|
6
45
|
"tag": "@lage-run/scheduler_v0.2.0",
|
|
7
46
|
"version": "0.2.0",
|
|
8
47
|
"comments": {
|
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
# Change Log - @lage-run/scheduler
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Sun, 04 Sep 2022 23:00:04 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 0.3.0
|
|
8
|
+
|
|
9
|
+
Sun, 04 Sep 2022 23:00:04 GMT
|
|
10
|
+
|
|
11
|
+
### Minor changes
|
|
12
|
+
|
|
13
|
+
- Supports worker as a new target type (ken@gizzar.com)
|
|
14
|
+
- Bump @lage-run/target-graph to v0.3.0
|
|
15
|
+
- Bump @lage-run/logger to v1.2.0
|
|
16
|
+
- Bump @lage-run/cache to v0.1.7
|
|
17
|
+
- Bump @lage-run/worker-threads-pool to v0.1.1
|
|
18
|
+
|
|
7
19
|
## 0.2.0
|
|
8
20
|
|
|
9
|
-
Fri, 26 Aug 2022 06:34:
|
|
21
|
+
Fri, 26 Aug 2022 06:34:51 GMT
|
|
10
22
|
|
|
11
23
|
### Minor changes
|
|
12
24
|
|
package/README.md
CHANGED
package/lib/SimpleScheduler.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Logger } from "@lage-run/logger";
|
|
1
|
+
import { AbortController } from "abort-controller";
|
|
3
2
|
import { WrappedTarget } from "./WrappedTarget";
|
|
3
|
+
import type { AbortSignal } from "abort-controller";
|
|
4
4
|
import type { CacheProvider, TargetHasher } from "@lage-run/cache";
|
|
5
|
-
import type {
|
|
5
|
+
import type { Logger } from "@lage-run/logger";
|
|
6
|
+
import type { SchedulerRunSummary } from "./types/SchedulerRunSummary";
|
|
7
|
+
import type { TargetGraph } from "@lage-run/target-graph";
|
|
8
|
+
import type { TargetRunnerPicker } from "./runners/TargetRunnerPicker";
|
|
6
9
|
import type { TargetScheduler } from "./types/TargetScheduler";
|
|
7
|
-
import type { AbortSignal } from "abort-controller";
|
|
8
|
-
import { AbortController } from "abort-controller";
|
|
9
|
-
import { SchedulerRunSummary } from "./types/SchedulerRunSummary";
|
|
10
10
|
export interface SimpleSchedulerOptions {
|
|
11
11
|
logger: Logger;
|
|
12
12
|
concurrency: number;
|
|
@@ -15,7 +15,9 @@ export interface SimpleSchedulerOptions {
|
|
|
15
15
|
hasher: TargetHasher;
|
|
16
16
|
shouldCache: boolean;
|
|
17
17
|
shouldResetCache: boolean;
|
|
18
|
-
|
|
18
|
+
runnerPicker: {
|
|
19
|
+
pick: TargetRunnerPicker["pick"];
|
|
20
|
+
};
|
|
19
21
|
}
|
|
20
22
|
/**
|
|
21
23
|
* Simple scheduler that runs all targets in a promise graph using p-graph library.
|
package/lib/SimpleScheduler.js
CHANGED
|
@@ -4,12 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.SimpleScheduler = void 0;
|
|
7
|
-
const target_graph_1 = require("@lage-run/target-graph");
|
|
8
|
-
const WrappedTarget_1 = require("./WrappedTarget");
|
|
9
|
-
const p_graph_1 = __importDefault(require("p-graph"));
|
|
10
7
|
const abort_controller_1 = require("abort-controller");
|
|
11
|
-
const NoOpRunner_1 = require("./runners/NoOpRunner");
|
|
12
8
|
const categorizeTargetRuns_1 = require("./categorizeTargetRuns");
|
|
9
|
+
const WrappedTarget_1 = require("./WrappedTarget");
|
|
10
|
+
const p_graph_1 = __importDefault(require("p-graph"));
|
|
13
11
|
/**
|
|
14
12
|
* Simple scheduler that runs all targets in a promise graph using p-graph library.
|
|
15
13
|
*
|
|
@@ -41,7 +39,7 @@ class SimpleScheduler {
|
|
|
41
39
|
*/
|
|
42
40
|
async run(root, targetGraph) {
|
|
43
41
|
const startTime = process.hrtime();
|
|
44
|
-
const { concurrency, continueOnError, logger, cacheProvider, shouldCache, shouldResetCache, hasher,
|
|
42
|
+
const { concurrency, continueOnError, logger, cacheProvider, shouldCache, shouldResetCache, hasher, runnerPicker } = this.options;
|
|
45
43
|
const { dependencies, targets } = targetGraph;
|
|
46
44
|
const pGraphNodes = new Map();
|
|
47
45
|
const pGraphEdges = dependencies;
|
|
@@ -66,9 +64,7 @@ class SimpleScheduler {
|
|
|
66
64
|
if (this.abortSignal.aborted) {
|
|
67
65
|
return;
|
|
68
66
|
}
|
|
69
|
-
|
|
70
|
-
return this.wrappedTargets.get(target.id).run(NoOpRunner_1.NoOpRunner);
|
|
71
|
-
}
|
|
67
|
+
const runner = runnerPicker.pick(target);
|
|
72
68
|
return this.wrappedTargets.get(target.id).run(runner);
|
|
73
69
|
},
|
|
74
70
|
priority: target.priority,
|
|
@@ -76,6 +72,8 @@ class SimpleScheduler {
|
|
|
76
72
|
}
|
|
77
73
|
let results = "failed";
|
|
78
74
|
let error;
|
|
75
|
+
let duration = [0, 0];
|
|
76
|
+
let targetRunByStatus;
|
|
79
77
|
try {
|
|
80
78
|
await (0, p_graph_1.default)(pGraphNodes, pGraphEdges).run({
|
|
81
79
|
concurrency,
|
|
@@ -86,8 +84,8 @@ class SimpleScheduler {
|
|
|
86
84
|
error = e instanceof Error ? e.message : String(e);
|
|
87
85
|
}
|
|
88
86
|
finally {
|
|
89
|
-
|
|
90
|
-
|
|
87
|
+
duration = process.hrtime(startTime);
|
|
88
|
+
targetRunByStatus = (0, categorizeTargetRuns_1.categorizeTargetRuns)([...this.wrappedTargets.values()]);
|
|
91
89
|
if (targetRunByStatus.failed.length +
|
|
92
90
|
targetRunByStatus.aborted.length +
|
|
93
91
|
targetRunByStatus.pending.length +
|
|
@@ -95,15 +93,15 @@ class SimpleScheduler {
|
|
|
95
93
|
0) {
|
|
96
94
|
results = "success";
|
|
97
95
|
}
|
|
98
|
-
return {
|
|
99
|
-
targetRunByStatus,
|
|
100
|
-
targetRuns: this.wrappedTargets,
|
|
101
|
-
duration,
|
|
102
|
-
startTime,
|
|
103
|
-
results,
|
|
104
|
-
error,
|
|
105
|
-
};
|
|
106
96
|
}
|
|
97
|
+
return {
|
|
98
|
+
targetRunByStatus,
|
|
99
|
+
targetRuns: this.wrappedTargets,
|
|
100
|
+
duration,
|
|
101
|
+
startTime,
|
|
102
|
+
results,
|
|
103
|
+
error,
|
|
104
|
+
};
|
|
107
105
|
}
|
|
108
106
|
/**
|
|
109
107
|
* Abort the scheduler using the abort controller.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleScheduler.js","sourceRoot":"","sources":["../src/SimpleScheduler.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"SimpleScheduler.js","sourceRoot":"","sources":["../src/SimpleScheduler.ts"],"names":[],"mappings":"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"}
|
package/lib/WrappedTarget.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Logger } from "@lage-run/logger";
|
|
2
|
-
import { TargetHasher } from "@lage-run/cache";
|
|
1
|
+
import type { Logger } from "@lage-run/logger";
|
|
2
|
+
import type { TargetHasher } from "@lage-run/cache";
|
|
3
3
|
import type { AbortController } from "abort-controller";
|
|
4
4
|
import type { CacheProvider } from "@lage-run/cache";
|
|
5
5
|
import type { Target } from "@lage-run/target-graph";
|
package/lib/WrappedTarget.js
CHANGED
|
@@ -106,7 +106,7 @@ class WrappedTarget {
|
|
|
106
106
|
const cachedOutput = fs_1.default.createReadStream(cachedOutputFile, "utf8");
|
|
107
107
|
this.options.logger.verbose(">> Replaying cached output", { target });
|
|
108
108
|
this.options.logger.stream(logger_1.LogLevel.verbose, cachedOutput, { target });
|
|
109
|
-
return await new Promise((resolve
|
|
109
|
+
return await new Promise((resolve) => {
|
|
110
110
|
cachedOutput.on("close", () => {
|
|
111
111
|
this.onSkipped(hash);
|
|
112
112
|
resolve();
|
package/lib/WrappedTarget.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WrappedTarget.js","sourceRoot":"","sources":["../src/WrappedTarget.ts"],"names":[],"mappings":";;;;;;AAAA,qDAA+C;
|
|
1
|
+
{"version":3,"file":"WrappedTarget.js","sourceRoot":"","sources":["../src/WrappedTarget.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { Target } from "@lage-run/target-graph";
|
|
2
|
+
import type { Target } from "@lage-run/target-graph";
|
|
3
3
|
import { Transform } from "node:stream";
|
|
4
4
|
export declare function getLageOutputCacheLocation(target: Target, hash: string): string;
|
|
5
5
|
export declare function createCachedOutputTransform(target: Target, hash: string): Transform;
|
|
@@ -26,11 +26,12 @@ function createCachedOutputTransform(target, hash) {
|
|
|
26
26
|
});
|
|
27
27
|
return transform;
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
const transform = new node_stream_1.Transform({
|
|
30
30
|
transform(chunk, encoding, callback) {
|
|
31
31
|
callback(null, chunk);
|
|
32
32
|
},
|
|
33
33
|
});
|
|
34
|
+
return transform;
|
|
34
35
|
}
|
|
35
36
|
exports.createCachedOutputTransform = createCachedOutputTransform;
|
|
36
37
|
//# sourceMappingURL=createCachedOutputTransform.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCachedOutputTransform.js","sourceRoot":"","sources":["../src/createCachedOutputTransform.ts"],"names":[],"mappings":";;;;;;AACA,6CAAwC;AACxC,sDAAyB;AACzB,0DAA6B;AAE7B,SAAgB,0BAA0B,CAAC,MAAc,EAAE,IAAY;IACrE,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,kCAAkC,CAAC,CAAC;IAC7E,OAAO,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;AAC9C,CAAC;AAHD,gEAGC;AAED,SAAgB,2BAA2B,CAAC,MAAc,EAAE,IAAY;IACtE,MAAM,UAAU,GAAG,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAE5C,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;QAC9B,iBAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,iBAAE,CAAC,iBAAiB,CAAC,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;QAE/E,MAAM,SAAS,GAAG,IAAI,uBAAS,CAAC;YAC9B,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ;gBACjC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACxB,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;KAClB;IAED,
|
|
1
|
+
{"version":3,"file":"createCachedOutputTransform.js","sourceRoot":"","sources":["../src/createCachedOutputTransform.ts"],"names":[],"mappings":";;;;;;AACA,6CAAwC;AACxC,sDAAyB;AACzB,0DAA6B;AAE7B,SAAgB,0BAA0B,CAAC,MAAc,EAAE,IAAY;IACrE,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,kCAAkC,CAAC,CAAC;IAC7E,OAAO,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;AAC9C,CAAC;AAHD,gEAGC;AAED,SAAgB,2BAA2B,CAAC,MAAc,EAAE,IAAY;IACtE,MAAM,UAAU,GAAG,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAE5C,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;QAC9B,iBAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,iBAAE,CAAC,iBAAiB,CAAC,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;QAE/E,MAAM,SAAS,GAAG,IAAI,uBAAS,CAAC;YAC9B,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ;gBACjC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACxB,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,SAAS,GAAG,IAAI,uBAAS,CAAC;QAC9B,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ;YACjC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACxB,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC;AAzBD,kEAyBC"}
|
package/lib/formatDuration.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.hrToSeconds = exports.formatDuration = void 0;
|
|
4
4
|
function formatDuration(seconds) {
|
|
5
|
-
|
|
5
|
+
const raw = parseFloat(seconds);
|
|
6
6
|
if (raw > 60) {
|
|
7
7
|
const minutes = Math.floor(raw / 60);
|
|
8
8
|
const seconds = (raw - minutes * 60).toFixed(2);
|
|
@@ -15,7 +15,7 @@ function formatDuration(seconds) {
|
|
|
15
15
|
}
|
|
16
16
|
exports.formatDuration = formatDuration;
|
|
17
17
|
function hrToSeconds(hrtime) {
|
|
18
|
-
|
|
18
|
+
const raw = hrtime[0] + hrtime[1] / 1e9;
|
|
19
19
|
return raw.toFixed(2);
|
|
20
20
|
}
|
|
21
21
|
exports.hrToSeconds = hrToSeconds;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatDuration.js","sourceRoot":"","sources":["../src/formatDuration.ts"],"names":[],"mappings":";;;AAAA,SAAgB,cAAc,CAAC,OAAe;IAC5C,
|
|
1
|
+
{"version":3,"file":"formatDuration.js","sourceRoot":"","sources":["../src/formatDuration.ts"],"names":[],"mappings":";;;AAAA,SAAgB,cAAc,CAAC,OAAe;IAC5C,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAChC,IAAI,GAAG,GAAG,EAAE,EAAE;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,CAAC;KAClC;SAAM;QACL,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO,GAAG,OAAO,GAAG,CAAC;KACtB;AACH,CAAC;AAVD,wCAUC;AAED,SAAgB,WAAW,CAAC,MAAwB;IAClD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACxC,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AAHD,kCAGC"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
export { SimpleScheduler } from "./SimpleScheduler";
|
|
2
1
|
export { NpmScriptRunner } from "./runners/NpmScriptRunner";
|
|
2
|
+
export { SimpleScheduler } from "./SimpleScheduler";
|
|
3
|
+
export { TargetRunnerPicker } from "./runners/TargetRunnerPicker";
|
|
4
|
+
export { WorkerRunner } from "./runners/WorkerRunner";
|
|
3
5
|
export type { TargetStatus } from "./types/TargetStatus";
|
|
4
6
|
export type { TargetRun } from "./types/TargetRun";
|
|
5
7
|
export type { TargetRunner } from "./types/TargetRunner";
|
package/lib/index.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
var SimpleScheduler_1 = require("./SimpleScheduler");
|
|
5
|
-
Object.defineProperty(exports, "SimpleScheduler", { enumerable: true, get: function () { return SimpleScheduler_1.SimpleScheduler; } });
|
|
3
|
+
exports.WorkerRunner = exports.TargetRunnerPicker = exports.SimpleScheduler = exports.NpmScriptRunner = void 0;
|
|
6
4
|
var NpmScriptRunner_1 = require("./runners/NpmScriptRunner");
|
|
7
5
|
Object.defineProperty(exports, "NpmScriptRunner", { enumerable: true, get: function () { return NpmScriptRunner_1.NpmScriptRunner; } });
|
|
6
|
+
var SimpleScheduler_1 = require("./SimpleScheduler");
|
|
7
|
+
Object.defineProperty(exports, "SimpleScheduler", { enumerable: true, get: function () { return SimpleScheduler_1.SimpleScheduler; } });
|
|
8
|
+
var TargetRunnerPicker_1 = require("./runners/TargetRunnerPicker");
|
|
9
|
+
Object.defineProperty(exports, "TargetRunnerPicker", { enumerable: true, get: function () { return TargetRunnerPicker_1.TargetRunnerPicker; } });
|
|
10
|
+
var WorkerRunner_1 = require("./runners/WorkerRunner");
|
|
11
|
+
Object.defineProperty(exports, "WorkerRunner", { enumerable: true, get: function () { return WorkerRunner_1.WorkerRunner; } });
|
|
8
12
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6DAA4D;AAAnD,kHAAA,eAAe,OAAA;AACxB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,mEAAkE;AAAzD,wHAAA,kBAAkB,OAAA;AAC3B,uDAAsD;AAA7C,4GAAA,YAAY,OAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { TargetRunner } from "../types/TargetRunner";
|
|
1
|
+
import type { TargetRunner } from "../types/TargetRunner";
|
|
2
2
|
export declare const NoOpRunner: TargetRunner;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NoOpRunner.js","sourceRoot":"","sources":["../../src/runners/NoOpRunner.ts"],"names":[],"mappings":";;;AAEa,QAAA,UAAU,GAAiB;IACtC,KAAK,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"NoOpRunner.js","sourceRoot":"","sources":["../../src/runners/NoOpRunner.ts"],"names":[],"mappings":";;;AAEa,QAAA,UAAU,GAAiB;IACtC,KAAK,CAAC,GAAG;QACP,OAAO;IACT,CAAC;CACF,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import type { Logger } from "@lage-run/logger";
|
|
2
|
+
import type { TargetCaptureStreams, TargetRunner } from "../types/TargetRunner";
|
|
3
|
+
import type { AbortSignal } from "abort-controller";
|
|
4
4
|
import type { Target } from "@lage-run/target-graph";
|
|
5
5
|
export interface NpmScriptRunnerOptions {
|
|
6
6
|
logger: Logger;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NpmScriptRunner = void 0;
|
|
4
|
-
const child_process_1 = require("child_process");
|
|
5
4
|
const fs_1 = require("fs");
|
|
6
5
|
const path_1 = require("path");
|
|
7
6
|
const logger_1 = require("@lage-run/logger");
|
|
8
7
|
const promises_1 = require("fs/promises");
|
|
8
|
+
const child_process_1 = require("child_process");
|
|
9
9
|
/**
|
|
10
10
|
* Runs a npm script on a target.
|
|
11
11
|
*
|
|
@@ -93,7 +93,7 @@ class NpmScriptRunner {
|
|
|
93
93
|
env: Object.assign(Object.assign(Object.assign(Object.assign({}, process.env), (process.stdout.isTTY && { FORCE_COLOR: "1" })), (npmRunNodeOptions && { NODE_OPTIONS: npmRunNodeOptions })), { LAGE_PACKAGE_NAME: target.packageName, LAGE_TASK: target.task }),
|
|
94
94
|
});
|
|
95
95
|
let exitHandled = false;
|
|
96
|
-
const handleChildProcessExit = (code
|
|
96
|
+
const handleChildProcessExit = (code) => {
|
|
97
97
|
var _a, _b, _c;
|
|
98
98
|
childProcess === null || childProcess === void 0 ? void 0 : childProcess.off("exit", handleChildProcessExit);
|
|
99
99
|
childProcess === null || childProcess === void 0 ? void 0 : childProcess.off("error", handleChildProcessExit);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NpmScriptRunner.js","sourceRoot":"","sources":["../../src/runners/NpmScriptRunner.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"NpmScriptRunner.js","sourceRoot":"","sources":["../../src/runners/NpmScriptRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Target } from "@lage-run/target-graph";
|
|
2
|
+
import type { TargetRunner } from "../types/TargetRunner";
|
|
3
|
+
interface TargetRunnerPickerOptions {
|
|
4
|
+
runners: {
|
|
5
|
+
[key: string]: TargetRunner;
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export declare class TargetRunnerPicker {
|
|
9
|
+
private options;
|
|
10
|
+
constructor(options: TargetRunnerPickerOptions);
|
|
11
|
+
pick(target: Target): TargetRunner;
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TargetRunnerPicker = void 0;
|
|
4
|
+
const target_graph_1 = require("@lage-run/target-graph");
|
|
5
|
+
const NoOpRunner_1 = require("./NoOpRunner");
|
|
6
|
+
class TargetRunnerPicker {
|
|
7
|
+
constructor(options) {
|
|
8
|
+
this.options = options;
|
|
9
|
+
}
|
|
10
|
+
pick(target) {
|
|
11
|
+
if (target.id === (0, target_graph_1.getStartTargetId)()) {
|
|
12
|
+
return NoOpRunner_1.NoOpRunner;
|
|
13
|
+
}
|
|
14
|
+
if (!target.type) {
|
|
15
|
+
target.type = "npmScript";
|
|
16
|
+
}
|
|
17
|
+
if (this.options.runners[target.type]) {
|
|
18
|
+
return this.options.runners[target.type];
|
|
19
|
+
}
|
|
20
|
+
throw new Error(`No runner found for target ${target.id}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.TargetRunnerPicker = TargetRunnerPicker;
|
|
24
|
+
//# sourceMappingURL=TargetRunnerPicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TargetRunnerPicker.js","sourceRoot":"","sources":["../../src/runners/TargetRunnerPicker.ts"],"names":[],"mappings":";;;AAAA,yDAA0D;AAC1D,6CAA0C;AAQ1C,MAAa,kBAAkB;IAC7B,YAAoB,OAAkC;QAAlC,YAAO,GAAP,OAAO,CAA2B;IAAG,CAAC;IAE1D,IAAI,CAAC,MAAc;QACjB,IAAI,MAAM,CAAC,EAAE,KAAK,IAAA,+BAAgB,GAAE,EAAE;YACpC,OAAO,uBAAU,CAAC;SACnB;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YAChB,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC;SAC3B;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACrC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC1C;QAED,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF;AAlBD,gDAkBC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { WorkerPool } from "@lage-run/worker-threads-pool";
|
|
3
|
+
import type { AbortSignal } from "abort-controller";
|
|
4
|
+
import type { Logger } from "@lage-run/logger";
|
|
5
|
+
import type { Target, TargetConfig } from "@lage-run/target-graph";
|
|
6
|
+
import type { TargetCaptureStreams, TargetRunner } from "../types/TargetRunner";
|
|
7
|
+
import type { Worker } from "worker_threads";
|
|
8
|
+
export interface WorkerRunnerOptions {
|
|
9
|
+
logger: Logger;
|
|
10
|
+
workerTargetConfigs: Record<string, TargetConfig>;
|
|
11
|
+
nodeOptions?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface PoolOptions {
|
|
14
|
+
id: string;
|
|
15
|
+
options: Record<string, any>;
|
|
16
|
+
script: string;
|
|
17
|
+
nodeOptions: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Creates a workerpool per target task definition of "type: worker"
|
|
21
|
+
*
|
|
22
|
+
* Target options are fed into `workerpool`, so target can customize the pool:
|
|
23
|
+
*
|
|
24
|
+
* https://www.npmjs.com/package/workerpool
|
|
25
|
+
*
|
|
26
|
+
* Example:
|
|
27
|
+
*
|
|
28
|
+
* ```ts
|
|
29
|
+
* // lage.config.js
|
|
30
|
+
* {
|
|
31
|
+
* pipeline: {
|
|
32
|
+
* "lint": {
|
|
33
|
+
* type: "worker",
|
|
34
|
+
* options: {
|
|
35
|
+
* worker: "workers/lint.js",
|
|
36
|
+
* maxWorkers: 15,
|
|
37
|
+
* minWorkers: 2,
|
|
38
|
+
* }
|
|
39
|
+
* }
|
|
40
|
+
* }
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* ```js
|
|
45
|
+
* // worker.js
|
|
46
|
+
* const { WorkerRunner } = require("@lage-run/scheduler");
|
|
47
|
+
* WorkerRunner.register({
|
|
48
|
+
* })
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare class WorkerRunner implements TargetRunner {
|
|
52
|
+
private options;
|
|
53
|
+
private pools;
|
|
54
|
+
static gracefulKillTimeout: number;
|
|
55
|
+
constructor(options: WorkerRunnerOptions);
|
|
56
|
+
getPoolOptions(target: Target): PoolOptions;
|
|
57
|
+
ensurePool(poolOptions: PoolOptions): WorkerPool;
|
|
58
|
+
captureStream(target: Target, worker: Worker, captureStreams?: TargetCaptureStreams): () => void;
|
|
59
|
+
run(target: Target, abortSignal?: AbortSignal, captureStreams?: TargetCaptureStreams): Promise<void>;
|
|
60
|
+
cleanup(): void;
|
|
61
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.WorkerRunner = void 0;
|
|
7
|
+
const logger_1 = require("@lage-run/logger");
|
|
8
|
+
const worker_threads_pool_1 = require("@lage-run/worker-threads-pool");
|
|
9
|
+
const os_1 = __importDefault(require("os"));
|
|
10
|
+
/**
|
|
11
|
+
* Creates a workerpool per target task definition of "type: worker"
|
|
12
|
+
*
|
|
13
|
+
* Target options are fed into `workerpool`, so target can customize the pool:
|
|
14
|
+
*
|
|
15
|
+
* https://www.npmjs.com/package/workerpool
|
|
16
|
+
*
|
|
17
|
+
* Example:
|
|
18
|
+
*
|
|
19
|
+
* ```ts
|
|
20
|
+
* // lage.config.js
|
|
21
|
+
* {
|
|
22
|
+
* pipeline: {
|
|
23
|
+
* "lint": {
|
|
24
|
+
* type: "worker",
|
|
25
|
+
* options: {
|
|
26
|
+
* worker: "workers/lint.js",
|
|
27
|
+
* maxWorkers: 15,
|
|
28
|
+
* minWorkers: 2,
|
|
29
|
+
* }
|
|
30
|
+
* }
|
|
31
|
+
* }
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* ```js
|
|
36
|
+
* // worker.js
|
|
37
|
+
* const { WorkerRunner } = require("@lage-run/scheduler");
|
|
38
|
+
* WorkerRunner.register({
|
|
39
|
+
* })
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
class WorkerRunner {
|
|
43
|
+
constructor(options) {
|
|
44
|
+
this.options = options;
|
|
45
|
+
this.pools = {};
|
|
46
|
+
}
|
|
47
|
+
getPoolOptions(target) {
|
|
48
|
+
var _a, _b, _c, _d, _e;
|
|
49
|
+
const { task } = target;
|
|
50
|
+
const { workerTargetConfigs } = this.options;
|
|
51
|
+
let id = "";
|
|
52
|
+
let options = {};
|
|
53
|
+
let script = "";
|
|
54
|
+
if (workerTargetConfigs[target.id]) {
|
|
55
|
+
id = target.id;
|
|
56
|
+
script = (_a = workerTargetConfigs[target.id].options) === null || _a === void 0 ? void 0 : _a.worker;
|
|
57
|
+
options = (_b = workerTargetConfigs[target.id].options) !== null && _b !== void 0 ? _b : {};
|
|
58
|
+
}
|
|
59
|
+
else if (workerTargetConfigs[task]) {
|
|
60
|
+
id = task;
|
|
61
|
+
script = (_c = workerTargetConfigs[task].options) === null || _c === void 0 ? void 0 : _c.worker;
|
|
62
|
+
options = (_d = workerTargetConfigs[task].options) !== null && _d !== void 0 ? _d : {};
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
id,
|
|
66
|
+
script,
|
|
67
|
+
options,
|
|
68
|
+
nodeOptions: (_e = workerTargetConfigs[id].options) === null || _e === void 0 ? void 0 : _e.nodeOptions,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
ensurePool(poolOptions) {
|
|
72
|
+
var _a;
|
|
73
|
+
const { id, script, options } = poolOptions;
|
|
74
|
+
if (!this.pools[id]) {
|
|
75
|
+
const pool = new worker_threads_pool_1.WorkerPool({
|
|
76
|
+
maxWorkers: (_a = options.maxWorkers) !== null && _a !== void 0 ? _a : os_1.default.cpus().length,
|
|
77
|
+
script,
|
|
78
|
+
workerOptions: {
|
|
79
|
+
stdout: true,
|
|
80
|
+
stderr: true,
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
this.pools[id] = pool;
|
|
84
|
+
}
|
|
85
|
+
return this.pools[id];
|
|
86
|
+
}
|
|
87
|
+
captureStream(target, worker, captureStreams = {}) {
|
|
88
|
+
const { logger } = this.options;
|
|
89
|
+
let stdout = worker.stdout;
|
|
90
|
+
let stderr = worker.stderr;
|
|
91
|
+
const releaseStreams = {
|
|
92
|
+
stdout: () => {
|
|
93
|
+
// pass
|
|
94
|
+
},
|
|
95
|
+
stderr: () => {
|
|
96
|
+
// pass
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
if (stdout) {
|
|
100
|
+
if (captureStreams.stdout) {
|
|
101
|
+
stdout = stdout.pipe(captureStreams.stdout);
|
|
102
|
+
}
|
|
103
|
+
releaseStreams.stdout = logger.stream(logger_1.LogLevel.verbose, stdout, { target, tid: worker.threadId });
|
|
104
|
+
}
|
|
105
|
+
if (stderr) {
|
|
106
|
+
if (captureStreams.stderr) {
|
|
107
|
+
stderr = stderr.pipe(captureStreams.stderr);
|
|
108
|
+
}
|
|
109
|
+
releaseStreams.stderr = logger.stream(logger_1.LogLevel.verbose, stderr, { target, tid: worker.threadId });
|
|
110
|
+
}
|
|
111
|
+
return () => {
|
|
112
|
+
if (captureStreams.stdout && stdout) {
|
|
113
|
+
stdout.unpipe(captureStreams.stdout);
|
|
114
|
+
captureStreams.stdout.destroy();
|
|
115
|
+
}
|
|
116
|
+
if (captureStreams.stderr && stderr) {
|
|
117
|
+
stderr.unpipe(captureStreams.stderr);
|
|
118
|
+
captureStreams.stderr.destroy();
|
|
119
|
+
}
|
|
120
|
+
releaseStreams.stdout();
|
|
121
|
+
releaseStreams.stderr();
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
async run(target, abortSignal, captureStreams = {}) {
|
|
125
|
+
if (abortSignal) {
|
|
126
|
+
if (abortSignal.aborted) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const abortSignalHandler = () => {
|
|
130
|
+
abortSignal.removeEventListener("abort", abortSignalHandler);
|
|
131
|
+
this.cleanup();
|
|
132
|
+
};
|
|
133
|
+
abortSignal.addEventListener("abort", abortSignalHandler);
|
|
134
|
+
}
|
|
135
|
+
const poolOptions = this.getPoolOptions(target);
|
|
136
|
+
const pool = this.ensurePool(poolOptions);
|
|
137
|
+
let cleanupStreams;
|
|
138
|
+
await pool.exec({ target }, (worker) => {
|
|
139
|
+
cleanupStreams = this.captureStream(target, worker, captureStreams);
|
|
140
|
+
}, (worker) => {
|
|
141
|
+
cleanupStreams();
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
cleanup() {
|
|
145
|
+
for (const pool of Object.values(this.pools)) {
|
|
146
|
+
pool.close();
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
exports.WorkerRunner = WorkerRunner;
|
|
151
|
+
WorkerRunner.gracefulKillTimeout = 2500;
|
|
152
|
+
//# sourceMappingURL=WorkerRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkerRunner.js","sourceRoot":"","sources":["../../src/runners/WorkerRunner.ts"],"names":[],"mappings":"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"}
|
package/lib/types/TargetRun.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Target } from "@lage-run/target-graph";
|
|
2
|
-
import { TargetStatus } from "./TargetStatus";
|
|
1
|
+
import type { Target } from "@lage-run/target-graph";
|
|
2
|
+
import type { TargetStatus } from "./TargetStatus";
|
|
3
3
|
export interface TargetRun {
|
|
4
4
|
startTime: [number, number];
|
|
5
5
|
duration: [number, number];
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { Target } from "@lage-run/target-graph";
|
|
2
|
+
import type { Target } from "@lage-run/target-graph";
|
|
3
3
|
import type { AbortSignal } from "abort-controller";
|
|
4
|
-
import { Transform } from "stream";
|
|
4
|
+
import type { Transform } from "stream";
|
|
5
5
|
export interface TargetCaptureStreams {
|
|
6
6
|
stdout?: Transform;
|
|
7
7
|
stderr?: Transform;
|
|
8
8
|
}
|
|
9
9
|
export interface TargetRunner {
|
|
10
10
|
run(target: Target, abortSignal?: AbortSignal, captureStreams?: TargetCaptureStreams): Promise<void>;
|
|
11
|
+
cleanup?(): Promise<void> | void;
|
|
11
12
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lage-run/scheduler",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Scheduler for Lage",
|
|
5
5
|
"repository": {
|
|
6
6
|
"url": "https://github.com/microsoft/lage"
|
|
@@ -15,9 +15,10 @@
|
|
|
15
15
|
"lint": "monorepo-scripts lint"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@lage-run/target-graph": "^0.
|
|
19
|
-
"@lage-run/logger": "^1.
|
|
20
|
-
"@lage-run/cache": "^0.1.
|
|
18
|
+
"@lage-run/target-graph": "^0.3.0",
|
|
19
|
+
"@lage-run/logger": "^1.2.0",
|
|
20
|
+
"@lage-run/cache": "^0.1.7",
|
|
21
|
+
"@lage-run/worker-threads-pool": "^0.1.1",
|
|
21
22
|
"p-graph": "^1.1.1",
|
|
22
23
|
"p-profiler": "^0.2.1",
|
|
23
24
|
"abort-controller": "^3.0.0",
|
|
@@ -27,6 +28,7 @@
|
|
|
27
28
|
"@lage-run/monorepo-fixture": "^0.1.0",
|
|
28
29
|
"@types/jest": "^27.0.1",
|
|
29
30
|
"@types/node": "14.18.26",
|
|
31
|
+
"@types/workerpool": "^6.1.0",
|
|
30
32
|
"monorepo-scripts": "*"
|
|
31
33
|
},
|
|
32
34
|
"publishConfig": {
|