backfill 6.4.2 → 6.4.4
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/lib/api.d.ts +0 -2
- package/lib/api.js +55 -32
- package/lib/api.js.map +1 -0
- package/lib/audit.d.ts +1 -2
- package/lib/audit.js +65 -38
- package/lib/audit.js.map +1 -0
- package/lib/commandRunner.d.ts +3 -4
- package/lib/commandRunner.js +31 -18
- package/lib/commandRunner.js.map +1 -0
- package/lib/index.d.ts +1 -2
- package/lib/index.js +80 -71
- package/lib/index.js.map +1 -0
- package/package.json +27 -29
package/lib/api.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import type { Writable } from "stream";
|
|
3
2
|
import { type Config, type ICacheStorage } from "backfill-config";
|
|
4
3
|
import { type Logger, type LogLevel } from "backfill-logger";
|
|
@@ -8,4 +7,3 @@ export declare function computeHash(cwd: string, logger: Logger, hashSalt?: stri
|
|
|
8
7
|
export declare function computeHashOfOutput(cwd: string, logger: Logger, config?: Pick<Config, "packageRoot">): Promise<string>;
|
|
9
8
|
export declare function fetch(cwd: string, hash: string, logger: Logger, config?: Pick<Config, "cacheStorageConfig" | "internalCacheFolder" | "incrementalCaching">): Promise<boolean>;
|
|
10
9
|
export declare function put(cwd: string, hash: string, logger: Logger, config?: Pick<Config, "cacheStorageConfig" | "internalCacheFolder" | "outputGlob" | "incrementalCaching">): Promise<void>;
|
|
11
|
-
//# sourceMappingURL=api.d.ts.map
|
package/lib/api.js
CHANGED
|
@@ -1,65 +1,88 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get computeHash () {
|
|
13
|
+
return computeHash;
|
|
14
|
+
},
|
|
15
|
+
get computeHashOfOutput () {
|
|
16
|
+
return computeHashOfOutput;
|
|
17
|
+
},
|
|
18
|
+
get fetch () {
|
|
19
|
+
return fetch;
|
|
20
|
+
},
|
|
21
|
+
get makeLogger () {
|
|
22
|
+
return makeLogger;
|
|
23
|
+
},
|
|
24
|
+
get put () {
|
|
25
|
+
return put;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
const _os = require("os");
|
|
29
|
+
const _backfillconfig = require("backfill-config");
|
|
30
|
+
const _backfilllogger = require("backfill-logger");
|
|
31
|
+
const _backfillhasher = require("backfill-hasher");
|
|
32
|
+
const _backfillcache = require("backfill-cache");
|
|
9
33
|
function makeConsole(stdout, stderr) {
|
|
10
34
|
return {
|
|
11
|
-
info(...args) {
|
|
12
|
-
stdout.write(args.join(" ") +
|
|
13
|
-
},
|
|
14
|
-
warn(...args) {
|
|
15
|
-
stderr.write(args.join(" ") + os_1.EOL);
|
|
35
|
+
info (...args) {
|
|
36
|
+
stdout.write(args.join(" ") + _os.EOL);
|
|
16
37
|
},
|
|
17
|
-
|
|
18
|
-
stderr.write(args.join(" ") +
|
|
38
|
+
warn (...args) {
|
|
39
|
+
stderr.write(args.join(" ") + _os.EOL);
|
|
19
40
|
},
|
|
41
|
+
error (...args) {
|
|
42
|
+
stderr.write(args.join(" ") + _os.EOL);
|
|
43
|
+
}
|
|
20
44
|
};
|
|
21
45
|
}
|
|
22
46
|
function makeLogger(logLevel, stdout, stderr) {
|
|
23
|
-
return (0,
|
|
47
|
+
return (0, _backfilllogger.makeLogger)(logLevel, {
|
|
48
|
+
console: makeConsole(stdout, stderr)
|
|
49
|
+
});
|
|
24
50
|
}
|
|
25
|
-
exports.makeLogger = makeLogger;
|
|
26
51
|
async function computeHash(cwd, logger, hashSalt, config) {
|
|
27
52
|
if (!config) {
|
|
28
|
-
config = (0,
|
|
53
|
+
config = (0, _backfillconfig.createConfig)(logger, cwd);
|
|
29
54
|
}
|
|
30
55
|
const { packageRoot } = config;
|
|
31
|
-
const hasher = new
|
|
56
|
+
const hasher = new _backfillhasher.Hasher({
|
|
57
|
+
packageRoot
|
|
58
|
+
}, logger);
|
|
32
59
|
const hash = await hasher.createPackageHash(hashSalt || "");
|
|
33
60
|
return hash;
|
|
34
61
|
}
|
|
35
|
-
exports.computeHash = computeHash;
|
|
36
62
|
async function computeHashOfOutput(cwd, logger, config) {
|
|
37
63
|
if (!config) {
|
|
38
|
-
config = (0,
|
|
64
|
+
config = (0, _backfillconfig.createConfig)(logger, cwd);
|
|
39
65
|
}
|
|
40
66
|
const { packageRoot } = config;
|
|
41
|
-
const hasher = new
|
|
67
|
+
const hasher = new _backfillhasher.Hasher({
|
|
68
|
+
packageRoot
|
|
69
|
+
}, logger);
|
|
42
70
|
const hash = await hasher.hashOfOutput();
|
|
43
71
|
return hash;
|
|
44
72
|
}
|
|
45
|
-
exports.computeHashOfOutput = computeHashOfOutput;
|
|
46
73
|
async function fetch(cwd, hash, logger, config) {
|
|
47
74
|
if (!config) {
|
|
48
|
-
config = (0,
|
|
75
|
+
config = (0, _backfillconfig.createConfig)(logger, cwd);
|
|
49
76
|
}
|
|
50
77
|
const { cacheStorageConfig, internalCacheFolder, incrementalCaching } = config;
|
|
51
|
-
const cacheStorage = (0,
|
|
52
|
-
|
|
53
|
-
return fetch;
|
|
78
|
+
const cacheStorage = (0, _backfillcache.getCacheStorageProvider)(cacheStorageConfig, internalCacheFolder, logger, cwd, incrementalCaching);
|
|
79
|
+
return await cacheStorage.fetch(hash);
|
|
54
80
|
}
|
|
55
|
-
exports.fetch = fetch;
|
|
56
81
|
async function put(cwd, hash, logger, config) {
|
|
57
82
|
if (!config) {
|
|
58
|
-
config = (0,
|
|
83
|
+
config = (0, _backfillconfig.createConfig)(logger, cwd);
|
|
59
84
|
}
|
|
60
|
-
const { cacheStorageConfig, internalCacheFolder, outputGlob, incrementalCaching
|
|
61
|
-
const cacheStorage = (0,
|
|
85
|
+
const { cacheStorageConfig, internalCacheFolder, outputGlob, incrementalCaching } = config;
|
|
86
|
+
const cacheStorage = (0, _backfillcache.getCacheStorageProvider)(cacheStorageConfig, internalCacheFolder, logger, cwd, incrementalCaching);
|
|
62
87
|
await cacheStorage.put(hash, outputGlob);
|
|
63
88
|
}
|
|
64
|
-
exports.put = put;
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwyQkFBeUI7QUFFekIscURBQWdGO0FBQ2hGLHFEQUt5QjtBQUN6QixxREFBeUM7QUFDekMsbURBQXlEO0FBSXpELFNBQVMsV0FBVyxDQUFDLE1BQWdCLEVBQUUsTUFBZ0I7SUFDckQsT0FBTztRQUNMLElBQUksQ0FBQyxHQUFHLElBQWM7WUFDcEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQUcsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxJQUFJLENBQUMsR0FBRyxJQUFjO1lBQ3BCLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFHLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsS0FBSyxDQUFDLEdBQUcsSUFBYztZQUNyQixNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBRyxDQUFDLENBQUM7UUFDckMsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsVUFBVSxDQUN4QixRQUFrQixFQUNsQixNQUFnQixFQUNoQixNQUFnQjtJQUVoQixPQUFPLElBQUEsNEJBQWtCLEVBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFORCxnQ0FNQztBQUVNLEtBQUssVUFBVSxXQUFXLENBQy9CLEdBQVcsRUFDWCxNQUFjLEVBQ2QsUUFBaUIsRUFDakIsTUFBb0M7SUFFcEMsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE1BQU0sR0FBRyxJQUFBLDhCQUFZLEVBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3BDO0lBQ0QsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJLHdCQUFNLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUVuRCxNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBZEQsa0NBY0M7QUFFTSxLQUFLLFVBQVUsbUJBQW1CLENBQ3ZDLEdBQVcsRUFDWCxNQUFjLEVBQ2QsTUFBb0M7SUFFcEMsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE1BQU0sR0FBRyxJQUFBLDhCQUFZLEVBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3BDO0lBQ0QsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJLHdCQUFNLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRCxNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFaRCxrREFZQztBQUVNLEtBQUssVUFBVSxLQUFLLENBQ3pCLEdBQVcsRUFDWCxJQUFZLEVBQ1osTUFBYyxFQUNkLE1BR0M7SUFFRCxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ1gsTUFBTSxHQUFHLElBQUEsOEJBQVksRUFBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDcEM7SUFDRCxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsR0FDbkUsTUFBTSxDQUFDO0lBQ1QsTUFBTSxZQUFZLEdBQUcsSUFBQSx3Q0FBdUIsRUFDMUMsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixNQUFNLEVBQ04sR0FBRyxFQUNILGtCQUFrQixDQUNuQixDQUFDO0lBQ0YsTUFBTSxLQUFLLEdBQUcsTUFBTSxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQXZCRCxzQkF1QkM7QUFFTSxLQUFLLFVBQVUsR0FBRyxDQUN2QixHQUFXLEVBQ1gsSUFBWSxFQUNaLE1BQWMsRUFDZCxNQU1DO0lBRUQsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE1BQU0sR0FBRyxJQUFBLDhCQUFZLEVBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3BDO0lBQ0QsTUFBTSxFQUNKLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLGtCQUFrQixHQUNuQixHQUFHLE1BQU0sQ0FBQztJQUNYLE1BQU0sWUFBWSxHQUFHLElBQUEsd0NBQXVCLEVBQzFDLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsTUFBTSxFQUNOLEdBQUcsRUFDSCxrQkFBa0IsQ0FDbkIsQ0FBQztJQUNGLE1BQU0sWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQTdCRCxrQkE2QkMifQ==
|
package/lib/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/api.ts"],"sourcesContent":["import type { Writable } from \"stream\";\nimport { EOL } from \"os\";\n\nimport { createConfig, type Config, type ICacheStorage } from \"backfill-config\";\nimport {\n type Logger,\n makeLogger as makeLoggerInternal,\n type Console,\n type LogLevel,\n} from \"backfill-logger\";\nimport { Hasher } from \"backfill-hasher\";\nimport { getCacheStorageProvider } from \"backfill-cache\";\n\nexport type { Config, ICacheStorage };\n\nfunction makeConsole(stdout: Writable, stderr: Writable): Console {\n return {\n info(...args: string[]): void {\n stdout.write(args.join(\" \") + EOL);\n },\n warn(...args: string[]): void {\n stderr.write(args.join(\" \") + EOL);\n },\n error(...args: string[]): void {\n stderr.write(args.join(\" \") + EOL);\n },\n };\n}\n\nexport function makeLogger(\n logLevel: LogLevel,\n stdout: Writable,\n stderr: Writable\n): Logger {\n return makeLoggerInternal(logLevel, { console: makeConsole(stdout, stderr) });\n}\n\nexport async function computeHash(\n cwd: string,\n logger: Logger,\n hashSalt?: string,\n config?: Pick<Config, \"packageRoot\">\n): Promise<string> {\n if (!config) {\n config = createConfig(logger, cwd);\n }\n const { packageRoot } = config;\n const hasher = new Hasher({ packageRoot }, logger);\n\n const hash = await hasher.createPackageHash(hashSalt || \"\");\n return hash;\n}\n\nexport async function computeHashOfOutput(\n cwd: string,\n logger: Logger,\n config?: Pick<Config, \"packageRoot\">\n): Promise<string> {\n if (!config) {\n config = createConfig(logger, cwd);\n }\n const { packageRoot } = config;\n const hasher = new Hasher({ packageRoot }, logger);\n const hash = await hasher.hashOfOutput();\n return hash;\n}\n\nexport async function fetch(\n cwd: string,\n hash: string,\n logger: Logger,\n config?: Pick<\n Config,\n \"cacheStorageConfig\" | \"internalCacheFolder\" | \"incrementalCaching\"\n >\n): Promise<boolean> {\n if (!config) {\n config = createConfig(logger, cwd);\n }\n const { cacheStorageConfig, internalCacheFolder, incrementalCaching } =\n config;\n const cacheStorage = getCacheStorageProvider(\n cacheStorageConfig,\n internalCacheFolder,\n logger,\n cwd,\n incrementalCaching\n );\n return await cacheStorage.fetch(hash);\n}\n\nexport async function put(\n cwd: string,\n hash: string,\n logger: Logger,\n config?: Pick<\n Config,\n | \"cacheStorageConfig\"\n | \"internalCacheFolder\"\n | \"outputGlob\"\n | \"incrementalCaching\"\n >\n): Promise<void> {\n if (!config) {\n config = createConfig(logger, cwd);\n }\n const {\n cacheStorageConfig,\n internalCacheFolder,\n outputGlob,\n incrementalCaching,\n } = config;\n const cacheStorage = getCacheStorageProvider(\n cacheStorageConfig,\n internalCacheFolder,\n logger,\n cwd,\n incrementalCaching\n );\n await cacheStorage.put(hash, outputGlob);\n}\n"],"names":["computeHash","computeHashOfOutput","fetch","makeLogger","put","makeConsole","stdout","stderr","info","args","write","join","EOL","warn","error","logLevel","makeLoggerInternal","console","cwd","logger","hashSalt","config","createConfig","packageRoot","hasher","Hasher","hash","createPackageHash","hashOfOutput","cacheStorageConfig","internalCacheFolder","incrementalCaching","cacheStorage","getCacheStorageProvider","outputGlob"],"mappings":";;;;;;;;;;;QAqCsBA;eAAAA;;QAgBAC;eAAAA;;QAcAC;eAAAA;;QAtCNC;eAAAA;;QA8DMC;eAAAA;;;oBA1FF;gCAE0C;gCAMvD;gCACgB;+BACiB;AAIxC,SAASC,YAAYC,MAAgB,EAAEC,MAAgB;IACrD,OAAO;QACLC,MAAK,GAAGC,IAAc;YACpBH,OAAOI,KAAK,CAACD,KAAKE,IAAI,CAAC,OAAOC,OAAG;QACnC;QACAC,MAAK,GAAGJ,IAAc;YACpBF,OAAOG,KAAK,CAACD,KAAKE,IAAI,CAAC,OAAOC,OAAG;QACnC;QACAE,OAAM,GAAGL,IAAc;YACrBF,OAAOG,KAAK,CAACD,KAAKE,IAAI,CAAC,OAAOC,OAAG;QACnC;IACF;AACF;AAEO,SAAST,WACdY,QAAkB,EAClBT,MAAgB,EAChBC,MAAgB;IAEhB,OAAOS,IAAAA,0BAAkB,EAACD,UAAU;QAAEE,SAASZ,YAAYC,QAAQC;IAAQ;AAC7E;AAEO,eAAeP,YACpBkB,GAAW,EACXC,MAAc,EACdC,QAAiB,EACjBC,MAAoC;IAEpC,IAAI,CAACA,QAAQ;QACXA,SAASC,IAAAA,4BAAY,EAACH,QAAQD;IAChC;IACA,MAAM,EAAEK,WAAW,EAAE,GAAGF;IACxB,MAAMG,SAAS,IAAIC,sBAAM,CAAC;QAAEF;IAAY,GAAGJ;IAE3C,MAAMO,OAAO,MAAMF,OAAOG,iBAAiB,CAACP,YAAY;IACxD,OAAOM;AACT;AAEO,eAAezB,oBACpBiB,GAAW,EACXC,MAAc,EACdE,MAAoC;IAEpC,IAAI,CAACA,QAAQ;QACXA,SAASC,IAAAA,4BAAY,EAACH,QAAQD;IAChC;IACA,MAAM,EAAEK,WAAW,EAAE,GAAGF;IACxB,MAAMG,SAAS,IAAIC,sBAAM,CAAC;QAAEF;IAAY,GAAGJ;IAC3C,MAAMO,OAAO,MAAMF,OAAOI,YAAY;IACtC,OAAOF;AACT;AAEO,eAAexB,MACpBgB,GAAW,EACXQ,IAAY,EACZP,MAAc,EACdE,MAGC;IAED,IAAI,CAACA,QAAQ;QACXA,SAASC,IAAAA,4BAAY,EAACH,QAAQD;IAChC;IACA,MAAM,EAAEW,kBAAkB,EAAEC,mBAAmB,EAAEC,kBAAkB,EAAE,GACnEV;IACF,MAAMW,eAAeC,IAAAA,sCAAuB,EAC1CJ,oBACAC,qBACAX,QACAD,KACAa;IAEF,OAAO,MAAMC,aAAa9B,KAAK,CAACwB;AAClC;AAEO,eAAetB,IACpBc,GAAW,EACXQ,IAAY,EACZP,MAAc,EACdE,MAMC;IAED,IAAI,CAACA,QAAQ;QACXA,SAASC,IAAAA,4BAAY,EAACH,QAAQD;IAChC;IACA,MAAM,EACJW,kBAAkB,EAClBC,mBAAmB,EACnBI,UAAU,EACVH,kBAAkB,EACnB,GAAGV;IACJ,MAAMW,eAAeC,IAAAA,sCAAuB,EAC1CJ,oBACAC,qBACAX,QACAD,KACAa;IAEF,MAAMC,aAAa5B,GAAG,CAACsB,MAAMQ;AAC/B"}
|
package/lib/audit.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { Logger } from "backfill-logger";
|
|
1
|
+
import type { Logger } from "backfill-logger";
|
|
2
2
|
export declare function initializeWatcher(packageRoot: string, internalCacheFolder: string, logFolder: string, outputGlob: string[], logger: Logger): void;
|
|
3
3
|
export declare const sideEffectWarningString = "[audit] The following files got changed outside of the scope of the folder to be cached:";
|
|
4
4
|
export declare const sideEffectCallToActionString = "[audit] You should make sure that these changes are non-essential, as they would not be brought back on a cache-hit.";
|
|
5
5
|
export declare const noSideEffectString = "[audit] All observed file changes were within the scope of the folder to be cached.";
|
|
6
6
|
export declare function closeWatcher(logger: Logger): Promise<void>;
|
|
7
|
-
//# sourceMappingURL=audit.d.ts.map
|
package/lib/audit.js
CHANGED
|
@@ -1,30 +1,64 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get closeWatcher () {
|
|
13
|
+
return closeWatcher;
|
|
14
|
+
},
|
|
15
|
+
get initializeWatcher () {
|
|
16
|
+
return initializeWatcher;
|
|
17
|
+
},
|
|
18
|
+
get noSideEffectString () {
|
|
19
|
+
return noSideEffectString;
|
|
20
|
+
},
|
|
21
|
+
get sideEffectCallToActionString () {
|
|
22
|
+
return sideEffectCallToActionString;
|
|
23
|
+
},
|
|
24
|
+
get sideEffectWarningString () {
|
|
25
|
+
return sideEffectWarningString;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
29
|
+
const _chokidar = /*#__PURE__*/ _interop_require_default(require("chokidar"));
|
|
30
|
+
const _findup = /*#__PURE__*/ _interop_require_default(require("find-up"));
|
|
31
|
+
const _anymatch = /*#__PURE__*/ _interop_require_default(require("anymatch"));
|
|
32
|
+
function _interop_require_default(obj) {
|
|
33
|
+
return obj && obj.__esModule ? obj : {
|
|
34
|
+
default: obj
|
|
35
|
+
};
|
|
36
|
+
}
|
|
11
37
|
let changedFilesOutsideScope = [];
|
|
12
38
|
let changedFilesInsideScope = [];
|
|
13
39
|
let watcher;
|
|
14
40
|
function getGitRepositoryRoot(packageRoot) {
|
|
15
41
|
// .git is typically a folder but will be a file in a worktree
|
|
16
|
-
const nearestGitInfo =
|
|
17
|
-
|
|
42
|
+
const nearestGitInfo = _findup.default.sync(".git", {
|
|
43
|
+
cwd: packageRoot,
|
|
44
|
+
type: "directory"
|
|
45
|
+
}) || _findup.default.sync(".git", {
|
|
46
|
+
cwd: packageRoot,
|
|
47
|
+
type: "file"
|
|
48
|
+
});
|
|
18
49
|
if (nearestGitInfo) {
|
|
19
50
|
// Return the parent folder of some/path/.git
|
|
20
|
-
return
|
|
51
|
+
return _path.default.join(nearestGitInfo, "..");
|
|
21
52
|
}
|
|
22
53
|
return packageRoot;
|
|
23
54
|
}
|
|
24
55
|
function addGlobstars(globPatterns) {
|
|
25
|
-
const folders = globPatterns.map((p)
|
|
26
|
-
const files = globPatterns.map((p)
|
|
27
|
-
return [
|
|
56
|
+
const folders = globPatterns.map((p)=>_path.default.posix.join("**", p, "**", "*"));
|
|
57
|
+
const files = globPatterns.map((p)=>_path.default.posix.join("**", p));
|
|
58
|
+
return [
|
|
59
|
+
...folders,
|
|
60
|
+
...files
|
|
61
|
+
];
|
|
28
62
|
}
|
|
29
63
|
function initializeWatcher(packageRoot, internalCacheFolder, logFolder, outputGlob, logger) {
|
|
30
64
|
// Trying to find the git root and using it as an approximation of code boundary
|
|
@@ -40,34 +74,30 @@ function initializeWatcher(packageRoot, internalCacheFolder, logFolder, outputGl
|
|
|
40
74
|
".git",
|
|
41
75
|
".cache",
|
|
42
76
|
logFolder,
|
|
43
|
-
internalCacheFolder
|
|
77
|
+
internalCacheFolder
|
|
44
78
|
]);
|
|
45
|
-
watcher =
|
|
46
|
-
.watch("**", {
|
|
79
|
+
watcher = _chokidar.default.watch("**", {
|
|
47
80
|
ignored: ignoreGlobs,
|
|
48
81
|
cwd: repositoryRoot,
|
|
49
82
|
persistent: true,
|
|
50
83
|
ignoreInitial: true,
|
|
51
84
|
followSymlinks: false,
|
|
52
|
-
usePolling: true
|
|
53
|
-
})
|
|
54
|
-
.on("all", (event, filePath) => {
|
|
85
|
+
usePolling: true
|
|
86
|
+
}).on("all", (event, filePath)=>{
|
|
55
87
|
const logLine = `${filePath} (${event})`;
|
|
56
88
|
logger.silly(`[audit] File change: ${logLine}`);
|
|
57
|
-
if (!(0,
|
|
89
|
+
if (!(0, _anymatch.default)(outputGlob.map((glob)=>_path.default.posix.join("**", glob)), filePath)) {
|
|
58
90
|
changedFilesOutsideScope.push(logLine);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
91
|
+
} else {
|
|
61
92
|
changedFilesInsideScope.push(logLine);
|
|
62
93
|
}
|
|
63
94
|
});
|
|
64
95
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
exports.noSideEffectString = "[audit] All observed file changes were within the scope of the folder to be cached.";
|
|
96
|
+
const sideEffectWarningString = "[audit] The following files got changed outside of the scope of the folder to be cached:";
|
|
97
|
+
const sideEffectCallToActionString = "[audit] You should make sure that these changes are non-essential, as they would not be brought back on a cache-hit.";
|
|
98
|
+
const noSideEffectString = "[audit] All observed file changes were within the scope of the folder to be cached.";
|
|
69
99
|
async function delay(time) {
|
|
70
|
-
return new Promise((resolve)
|
|
100
|
+
return new Promise((resolve)=>{
|
|
71
101
|
setTimeout(resolve, time);
|
|
72
102
|
});
|
|
73
103
|
}
|
|
@@ -75,14 +105,11 @@ async function closeWatcher(logger) {
|
|
|
75
105
|
// Wait for one second before closing, giving time for file changes to propagate
|
|
76
106
|
await delay(1000);
|
|
77
107
|
if (changedFilesOutsideScope.length > 0) {
|
|
78
|
-
logger.warn(
|
|
79
|
-
changedFilesOutsideScope.forEach((file)
|
|
80
|
-
logger.warn(
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
logger.info(exports.noSideEffectString);
|
|
108
|
+
logger.warn(sideEffectWarningString);
|
|
109
|
+
changedFilesOutsideScope.forEach((file)=>logger.warn(`- ${file}`));
|
|
110
|
+
logger.warn(sideEffectCallToActionString);
|
|
111
|
+
} else {
|
|
112
|
+
logger.info(noSideEffectString);
|
|
84
113
|
}
|
|
85
|
-
watcher.close();
|
|
114
|
+
await watcher.close();
|
|
86
115
|
}
|
|
87
|
-
exports.closeWatcher = closeWatcher;
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXVkaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0RBQXdCO0FBQ3hCLHdEQUFnQztBQUNoQyxzREFBNkI7QUFDN0Isd0RBQWdDO0FBSWhDLElBQUksd0JBQXdCLEdBQWEsRUFBRSxDQUFDO0FBQzVDLElBQUksdUJBQXVCLEdBQWEsRUFBRSxDQUFDO0FBRTNDLElBQUksT0FBMkIsQ0FBQztBQUVoQyxTQUFTLG9CQUFvQixDQUFDLFdBQW1CO0lBQy9DLDhEQUE4RDtJQUM5RCxNQUFNLGNBQWMsR0FDbEIsaUJBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDNUQsaUJBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUUxRCxJQUFJLGNBQWMsRUFBRTtRQUNsQiw2Q0FBNkM7UUFDN0MsT0FBTyxjQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUN4QztJQUVELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxZQUFzQjtJQUMxQyxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxjQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdFLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGNBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FB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
|
package/lib/audit.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/audit.ts"],"sourcesContent":["import path from \"path\";\nimport chokidar from \"chokidar\";\nimport findUp from \"find-up\";\nimport anymatch from \"anymatch\";\n\nimport type { Logger } from \"backfill-logger\";\n\nlet changedFilesOutsideScope: string[] = [];\nlet changedFilesInsideScope: string[] = [];\n\nlet watcher: chokidar.FSWatcher;\n\nfunction getGitRepositoryRoot(packageRoot: string) {\n // .git is typically a folder but will be a file in a worktree\n const nearestGitInfo =\n findUp.sync(\".git\", { cwd: packageRoot, type: \"directory\" }) ||\n findUp.sync(\".git\", { cwd: packageRoot, type: \"file\" });\n\n if (nearestGitInfo) {\n // Return the parent folder of some/path/.git\n return path.join(nearestGitInfo, \"..\");\n }\n\n return packageRoot;\n}\n\nfunction addGlobstars(globPatterns: string[]): string[] {\n const folders = globPatterns.map((p) => path.posix.join(\"**\", p, \"**\", \"*\"));\n const files = globPatterns.map((p) => path.posix.join(\"**\", p));\n\n return [...folders, ...files];\n}\n\nexport function initializeWatcher(\n packageRoot: string,\n internalCacheFolder: string,\n logFolder: string,\n outputGlob: string[],\n logger: Logger\n): void {\n // Trying to find the git root and using it as an approximation of code boundary\n const repositoryRoot = getGitRepositoryRoot(packageRoot);\n\n // Empty the arrays\n changedFilesOutsideScope = [];\n changedFilesInsideScope = [];\n\n logger.info(\"Running in AUDIT mode\");\n logger.info(`[audit] Watching file changes in: ${repositoryRoot}`);\n logger.info(`[audit] Backfill will cache folder: ${outputGlob}`);\n\n // Define globs\n const ignoreGlobs = addGlobstars([\n \".git\",\n \".cache\",\n logFolder,\n internalCacheFolder,\n ]);\n watcher = chokidar\n .watch(\"**\", {\n ignored: ignoreGlobs,\n cwd: repositoryRoot,\n persistent: true,\n ignoreInitial: true,\n followSymlinks: false,\n usePolling: true,\n })\n .on(\"all\", (event, filePath) => {\n const logLine = `${filePath} (${event})`;\n logger.silly(`[audit] File change: ${logLine}`);\n\n if (\n !anymatch(\n outputGlob.map((glob) => path.posix.join(\"**\", glob)),\n filePath\n )\n ) {\n changedFilesOutsideScope.push(logLine);\n } else {\n changedFilesInsideScope.push(logLine);\n }\n });\n}\n\nexport const sideEffectWarningString =\n \"[audit] The following files got changed outside of the scope of the folder to be cached:\";\nexport const sideEffectCallToActionString =\n \"[audit] You should make sure that these changes are non-essential, as they would not be brought back on a cache-hit.\";\nexport const noSideEffectString =\n \"[audit] All observed file changes were within the scope of the folder to be cached.\";\n\nasync function delay(time: number) {\n return new Promise((resolve) => {\n setTimeout(resolve, time);\n });\n}\n\nexport async function closeWatcher(logger: Logger): Promise<void> {\n // Wait for one second before closing, giving time for file changes to propagate\n await delay(1000);\n\n if (changedFilesOutsideScope.length > 0) {\n logger.warn(sideEffectWarningString);\n changedFilesOutsideScope.forEach((file) => logger.warn(`- ${file}`));\n logger.warn(sideEffectCallToActionString);\n } else {\n logger.info(noSideEffectString);\n }\n\n await watcher.close();\n}\n"],"names":["closeWatcher","initializeWatcher","noSideEffectString","sideEffectCallToActionString","sideEffectWarningString","changedFilesOutsideScope","changedFilesInsideScope","watcher","getGitRepositoryRoot","packageRoot","nearestGitInfo","findUp","sync","cwd","type","path","join","addGlobstars","globPatterns","folders","map","p","posix","files","internalCacheFolder","logFolder","outputGlob","logger","repositoryRoot","info","ignoreGlobs","chokidar","watch","ignored","persistent","ignoreInitial","followSymlinks","usePolling","on","event","filePath","logLine","silly","anymatch","glob","push","delay","time","Promise","resolve","setTimeout","length","warn","forEach","file","close"],"mappings":";;;;;;;;;;;QAiGsBA;eAAAA;;QAhENC;eAAAA;;QAuDHC;eAAAA;;QAFAC;eAAAA;;QAFAC;eAAAA;;;6DApFI;iEACI;+DACF;iEACE;;;;;;AAIrB,IAAIC,2BAAqC,EAAE;AAC3C,IAAIC,0BAAoC,EAAE;AAE1C,IAAIC;AAEJ,SAASC,qBAAqBC,WAAmB;IAC/C,8DAA8D;IAC9D,MAAMC,iBACJC,eAAM,CAACC,IAAI,CAAC,QAAQ;QAAEC,KAAKJ;QAAaK,MAAM;IAAY,MAC1DH,eAAM,CAACC,IAAI,CAAC,QAAQ;QAAEC,KAAKJ;QAAaK,MAAM;IAAO;IAEvD,IAAIJ,gBAAgB;QAClB,6CAA6C;QAC7C,OAAOK,aAAI,CAACC,IAAI,CAACN,gBAAgB;IACnC;IAEA,OAAOD;AACT;AAEA,SAASQ,aAAaC,YAAsB;IAC1C,MAAMC,UAAUD,aAAaE,GAAG,CAAC,CAACC,IAAMN,aAAI,CAACO,KAAK,CAACN,IAAI,CAAC,MAAMK,GAAG,MAAM;IACvE,MAAME,QAAQL,aAAaE,GAAG,CAAC,CAACC,IAAMN,aAAI,CAACO,KAAK,CAACN,IAAI,CAAC,MAAMK;IAE5D,OAAO;WAAIF;WAAYI;KAAM;AAC/B;AAEO,SAAStB,kBACdQ,WAAmB,EACnBe,mBAA2B,EAC3BC,SAAiB,EACjBC,UAAoB,EACpBC,MAAc;IAEd,gFAAgF;IAChF,MAAMC,iBAAiBpB,qBAAqBC;IAE5C,mBAAmB;IACnBJ,2BAA2B,EAAE;IAC7BC,0BAA0B,EAAE;IAE5BqB,OAAOE,IAAI,CAAC;IACZF,OAAOE,IAAI,CAAC,CAAC,kCAAkC,EAAED,gBAAgB;IACjED,OAAOE,IAAI,CAAC,CAAC,oCAAoC,EAAEH,YAAY;IAE/D,eAAe;IACf,MAAMI,cAAcb,aAAa;QAC/B;QACA;QACAQ;QACAD;KACD;IACDjB,UAAUwB,iBAAQ,CACfC,KAAK,CAAC,MAAM;QACXC,SAASH;QACTjB,KAAKe;QACLM,YAAY;QACZC,eAAe;QACfC,gBAAgB;QAChBC,YAAY;IACd,GACCC,EAAE,CAAC,OAAO,CAACC,OAAOC;QACjB,MAAMC,UAAU,GAAGD,SAAS,EAAE,EAAED,MAAM,CAAC,CAAC;QACxCZ,OAAOe,KAAK,CAAC,CAAC,qBAAqB,EAAED,SAAS;QAE9C,IACE,CAACE,IAAAA,iBAAQ,EACPjB,WAAWN,GAAG,CAAC,CAACwB,OAAS7B,aAAI,CAACO,KAAK,CAACN,IAAI,CAAC,MAAM4B,QAC/CJ,WAEF;YACAnC,yBAAyBwC,IAAI,CAACJ;QAChC,OAAO;YACLnC,wBAAwBuC,IAAI,CAACJ;QAC/B;IACF;AACJ;AAEO,MAAMrC,0BACX;AACK,MAAMD,+BACX;AACK,MAAMD,qBACX;AAEF,eAAe4C,MAAMC,IAAY;IAC/B,OAAO,IAAIC,QAAQ,CAACC;QAClBC,WAAWD,SAASF;IACtB;AACF;AAEO,eAAe/C,aAAa2B,MAAc;IAC/C,gFAAgF;IAChF,MAAMmB,MAAM;IAEZ,IAAIzC,yBAAyB8C,MAAM,GAAG,GAAG;QACvCxB,OAAOyB,IAAI,CAAChD;QACZC,yBAAyBgD,OAAO,CAAC,CAACC,OAAS3B,OAAOyB,IAAI,CAAC,CAAC,EAAE,EAAEE,MAAM;QAClE3B,OAAOyB,IAAI,CAACjD;IACd,OAAO;QACLwB,OAAOE,IAAI,CAAC3B;IACd;IAEA,MAAMK,QAAQgD,KAAK;AACrB"}
|
package/lib/commandRunner.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import execa from "execa";
|
|
2
|
-
import { Logger } from "backfill-logger";
|
|
3
|
-
export
|
|
4
|
-
export
|
|
2
|
+
import type { Logger } from "backfill-logger";
|
|
3
|
+
export type ExecaReturns = execa.ExecaChildProcess;
|
|
4
|
+
export type BuildCommand = () => Promise<ExecaReturns | void>;
|
|
5
5
|
export declare function getRawBuildCommand(): string;
|
|
6
6
|
export declare function createBuildCommand(buildCommand: (string | number)[], clearOutput: boolean, outputGlob: string[], logger: Logger): () => Promise<ExecaReturns | void>;
|
|
7
|
-
//# sourceMappingURL=commandRunner.d.ts.map
|
package/lib/commandRunner.js
CHANGED
|
@@ -1,41 +1,54 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get createBuildCommand () {
|
|
13
|
+
return createBuildCommand;
|
|
14
|
+
},
|
|
15
|
+
get getRawBuildCommand () {
|
|
16
|
+
return getRawBuildCommand;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const _execa = /*#__PURE__*/ _interop_require_default(require("execa"));
|
|
20
|
+
const _fsextra = /*#__PURE__*/ _interop_require_default(require("fs-extra"));
|
|
21
|
+
const _globby = require("@lage-run/globby");
|
|
22
|
+
function _interop_require_default(obj) {
|
|
23
|
+
return obj && obj.__esModule ? obj : {
|
|
24
|
+
default: obj
|
|
25
|
+
};
|
|
26
|
+
}
|
|
10
27
|
function getRawBuildCommand() {
|
|
11
28
|
return process.argv.slice(2).join(" ");
|
|
12
29
|
}
|
|
13
|
-
exports.getRawBuildCommand = getRawBuildCommand;
|
|
14
30
|
function createBuildCommand(buildCommand, clearOutput, outputGlob, logger) {
|
|
15
|
-
return async ()
|
|
31
|
+
return async ()=>{
|
|
16
32
|
const parsedBuildCommand = buildCommand.join(" ");
|
|
17
33
|
if (!parsedBuildCommand) {
|
|
18
34
|
throw new Error("Command not provided");
|
|
19
35
|
}
|
|
20
36
|
if (clearOutput) {
|
|
21
|
-
const filesToClear =
|
|
22
|
-
await Promise.all(filesToClear.map(async (file)
|
|
37
|
+
const filesToClear = (0, _globby.glob)(outputGlob);
|
|
38
|
+
await Promise.all(filesToClear.map(async (file)=>await _fsextra.default.remove(file)));
|
|
23
39
|
}
|
|
24
40
|
try {
|
|
25
41
|
// Set up runner
|
|
26
42
|
const tracer = logger.setTime("buildTime");
|
|
27
|
-
const runner = (0,
|
|
28
|
-
shell: true
|
|
43
|
+
const runner = (0, _execa.default)(parsedBuildCommand, {
|
|
44
|
+
shell: true
|
|
29
45
|
});
|
|
30
46
|
logger.pipeProcessOutput(runner.stdout, runner.stderr);
|
|
31
47
|
await runner;
|
|
32
48
|
tracer.stop();
|
|
33
|
-
}
|
|
34
|
-
catch (e) {
|
|
49
|
+
} catch (e) {
|
|
35
50
|
logger.error(`Failed while running: "${parsedBuildCommand}"`);
|
|
36
51
|
throw e;
|
|
37
52
|
}
|
|
38
53
|
};
|
|
39
54
|
}
|
|
40
|
-
exports.createBuildCommand = createBuildCommand;
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZFJ1bm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tYW5kUnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUMxQix3REFBMEI7QUFDMUIsb0RBQTRCO0FBTzVCLFNBQWdCLGtCQUFrQjtJQUNoQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRkQsZ0RBRUM7QUFFRCxTQUFnQixrQkFBa0IsQ0FDaEMsWUFBaUMsRUFDakMsV0FBb0IsRUFDcEIsVUFBb0IsRUFDcEIsTUFBYztJQUVkLE9BQU8sS0FBSyxJQUFrQyxFQUFFO1FBQzlDLE1BQU0sa0JBQWtCLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVsRCxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsSUFBSSxXQUFXLEVBQUU7WUFDZixNQUFNLFlBQVksR0FBRyxnQkFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM3QyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLGtCQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3hELENBQUM7U0FDSDtRQUVELElBQUk7WUFDRixnQkFBZ0I7WUFDaEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFBLGVBQUssRUFBQyxrQkFBa0IsRUFBRTtnQkFDdkMsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFdkQsTUFBTSxNQUFNLENBQUM7WUFDYixNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDZjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO1lBQzlELE1BQU0sQ0FBQyxDQUFDO1NBQ1Q7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDO0FBcENELGdEQW9DQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commandRunner.ts"],"sourcesContent":["import execa from \"execa\";\nimport fs from \"fs-extra\";\nimport { glob } from \"@lage-run/globby\";\n\nimport type { Logger } from \"backfill-logger\";\n\nexport type ExecaReturns = execa.ExecaChildProcess;\nexport type BuildCommand = () => Promise<ExecaReturns | void>;\n\nexport function getRawBuildCommand(): string {\n return process.argv.slice(2).join(\" \");\n}\n\nexport function createBuildCommand(\n buildCommand: (string | number)[],\n clearOutput: boolean,\n outputGlob: string[],\n logger: Logger\n): () => Promise<ExecaReturns | void> {\n return async (): Promise<ExecaReturns | void> => {\n const parsedBuildCommand = buildCommand.join(\" \");\n\n if (!parsedBuildCommand) {\n throw new Error(\"Command not provided\");\n }\n\n if (clearOutput) {\n const filesToClear = glob(outputGlob);\n await Promise.all(\n filesToClear.map(async (file) => await fs.remove(file))\n );\n }\n\n try {\n // Set up runner\n const tracer = logger.setTime(\"buildTime\");\n const runner = execa(parsedBuildCommand, {\n shell: true,\n });\n\n logger.pipeProcessOutput(runner.stdout, runner.stderr);\n\n await runner;\n tracer.stop();\n } catch (e) {\n logger.error(`Failed while running: \"${parsedBuildCommand}\"`);\n throw e;\n }\n };\n}\n"],"names":["createBuildCommand","getRawBuildCommand","process","argv","slice","join","buildCommand","clearOutput","outputGlob","logger","parsedBuildCommand","Error","filesToClear","glob","Promise","all","map","file","fs","remove","tracer","setTime","runner","execa","shell","pipeProcessOutput","stdout","stderr","stop","e","error"],"mappings":";;;;;;;;;;;QAagBA;eAAAA;;QAJAC;eAAAA;;;8DATE;gEACH;wBACM;;;;;;AAOd,SAASA;IACd,OAAOC,QAAQC,IAAI,CAACC,KAAK,CAAC,GAAGC,IAAI,CAAC;AACpC;AAEO,SAASL,mBACdM,YAAiC,EACjCC,WAAoB,EACpBC,UAAoB,EACpBC,MAAc;IAEd,OAAO;QACL,MAAMC,qBAAqBJ,aAAaD,IAAI,CAAC;QAE7C,IAAI,CAACK,oBAAoB;YACvB,MAAM,IAAIC,MAAM;QAClB;QAEA,IAAIJ,aAAa;YACf,MAAMK,eAAeC,IAAAA,YAAI,EAACL;YAC1B,MAAMM,QAAQC,GAAG,CACfH,aAAaI,GAAG,CAAC,OAAOC,OAAS,MAAMC,gBAAE,CAACC,MAAM,CAACF;QAErD;QAEA,IAAI;YACF,gBAAgB;YAChB,MAAMG,SAASX,OAAOY,OAAO,CAAC;YAC9B,MAAMC,SAASC,IAAAA,cAAK,EAACb,oBAAoB;gBACvCc,OAAO;YACT;YAEAf,OAAOgB,iBAAiB,CAACH,OAAOI,MAAM,EAAEJ,OAAOK,MAAM;YAErD,MAAML;YACNF,OAAOQ,IAAI;QACb,EAAE,OAAOC,GAAG;YACVpB,OAAOqB,KAAK,CAAC,CAAC,uBAAuB,EAAEpB,mBAAmB,CAAC,CAAC;YAC5D,MAAMmB;QACR;IACF;AACF"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { type Logger } from "backfill-logger";
|
|
2
2
|
import { type Config } from "backfill-config";
|
|
3
|
-
import { BuildCommand } from "./commandRunner";
|
|
3
|
+
import { type BuildCommand } from "./commandRunner.js";
|
|
4
4
|
export { createDefaultConfig, type Config, type ICacheStorage, } from "backfill-config";
|
|
5
5
|
export declare function backfill(config: Config, buildCommand: BuildCommand, hashSalt: string, logger: Logger): Promise<void>;
|
|
6
6
|
export declare function main(): Promise<void>;
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.js
CHANGED
|
@@ -1,114 +1,123 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get backfill () {
|
|
13
|
+
return backfill;
|
|
14
|
+
},
|
|
15
|
+
get createDefaultConfig () {
|
|
16
|
+
return _backfillconfig.createDefaultConfig;
|
|
17
|
+
},
|
|
18
|
+
get main () {
|
|
19
|
+
return main;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
const _backfillutilsdotenv = require("backfill-utils-dotenv");
|
|
23
|
+
const _backfilllogger = require("backfill-logger");
|
|
24
|
+
const _backfillconfig = require("backfill-config");
|
|
25
|
+
const _backfillcache = require("backfill-cache");
|
|
26
|
+
const _yargs = /*#__PURE__*/ _interop_require_default(require("yargs"));
|
|
27
|
+
const _commandRunner = require("./commandRunner.js");
|
|
28
|
+
const _audit = require("./audit.js");
|
|
29
|
+
const _api = require("./api.js");
|
|
30
|
+
function _interop_require_default(obj) {
|
|
31
|
+
return obj && obj.__esModule ? obj : {
|
|
32
|
+
default: obj
|
|
33
|
+
};
|
|
34
|
+
}
|
|
17
35
|
// Load environment variables
|
|
18
|
-
(0,
|
|
36
|
+
(0, _backfillutilsdotenv.loadDotenv)();
|
|
19
37
|
async function backfill(config, buildCommand, hashSalt, logger) {
|
|
20
|
-
const { cacheStorageConfig, name, mode, logFolder, packageRoot, producePerformanceLogs, validateOutput
|
|
38
|
+
const { cacheStorageConfig, name, mode, logFolder, packageRoot, producePerformanceLogs, validateOutput } = config;
|
|
21
39
|
logger.setName(name);
|
|
22
40
|
logger.setMode(mode, mode === "READ_WRITE" ? "info" : "verbose");
|
|
23
|
-
logger.setCacheProvider((0,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
const fetch = async (hash) => await (0, api_1.fetch)(packageRoot, hash, logger, config);
|
|
28
|
-
const run = async () => {
|
|
41
|
+
logger.setCacheProvider((0, _backfillcache.isCustomProvider)(cacheStorageConfig) ? cacheStorageConfig.name || "custom-storage-provider" : cacheStorageConfig.provider);
|
|
42
|
+
const createPackageHash = async ()=>await (0, _api.computeHash)(packageRoot, logger, hashSalt);
|
|
43
|
+
const fetch = async (hash)=>await (0, _api.fetch)(packageRoot, hash, logger, config);
|
|
44
|
+
const run = async ()=>{
|
|
29
45
|
try {
|
|
30
46
|
await buildCommand();
|
|
31
|
-
}
|
|
32
|
-
catch (err) {
|
|
47
|
+
} catch (err) {
|
|
33
48
|
throw new Error(`Command failed with the following error:\n\n${err}`);
|
|
34
49
|
}
|
|
35
50
|
};
|
|
36
|
-
const put = async (hash)
|
|
51
|
+
const put = async (hash)=>{
|
|
37
52
|
try {
|
|
38
|
-
await (0,
|
|
39
|
-
}
|
|
40
|
-
catch (err) {
|
|
53
|
+
await (0, _api.put)(packageRoot, hash, logger, config);
|
|
54
|
+
} catch (err) {
|
|
41
55
|
logger.error(`Failed to persist the cache with the following error:\n\n${err}`);
|
|
42
56
|
}
|
|
43
57
|
};
|
|
44
|
-
switch
|
|
45
|
-
case "READ_WRITE":
|
|
46
|
-
|
|
47
|
-
|
|
58
|
+
switch(mode){
|
|
59
|
+
case "READ_WRITE":
|
|
60
|
+
{
|
|
61
|
+
const hash = await createPackageHash();
|
|
62
|
+
if (!await fetch(hash)) {
|
|
63
|
+
await run();
|
|
64
|
+
await put(hash);
|
|
65
|
+
}
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
case "READ_ONLY":
|
|
69
|
+
{
|
|
70
|
+
const hash = await createPackageHash();
|
|
71
|
+
if (!await fetch(hash)) {
|
|
72
|
+
await run();
|
|
73
|
+
}
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
case "WRITE_ONLY":
|
|
77
|
+
{
|
|
48
78
|
await run();
|
|
79
|
+
const hash = await createPackageHash();
|
|
49
80
|
await put(hash);
|
|
81
|
+
break;
|
|
50
82
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
case "READ_ONLY": {
|
|
54
|
-
const hash = await createPackageHash();
|
|
55
|
-
if (!(await fetch(hash))) {
|
|
83
|
+
case "PASS":
|
|
84
|
+
{
|
|
56
85
|
await run();
|
|
86
|
+
break;
|
|
57
87
|
}
|
|
58
|
-
break;
|
|
59
|
-
}
|
|
60
|
-
case "WRITE_ONLY": {
|
|
61
|
-
await run();
|
|
62
|
-
const hash = await createPackageHash();
|
|
63
|
-
await put(hash);
|
|
64
|
-
break;
|
|
65
|
-
}
|
|
66
|
-
case "PASS": {
|
|
67
|
-
await run();
|
|
68
|
-
break;
|
|
69
|
-
}
|
|
70
88
|
}
|
|
71
89
|
if (validateOutput) {
|
|
72
|
-
const hashOfOutput = await (0,
|
|
90
|
+
const hashOfOutput = await (0, _api.computeHashOfOutput)(packageRoot, logger);
|
|
73
91
|
logger.setHashOfOutput(hashOfOutput);
|
|
74
92
|
}
|
|
75
93
|
if (producePerformanceLogs) {
|
|
76
94
|
await logger.toFile(logFolder);
|
|
77
95
|
}
|
|
78
96
|
}
|
|
79
|
-
exports.backfill = backfill;
|
|
80
97
|
async function main() {
|
|
81
|
-
let logger = (0,
|
|
98
|
+
let logger = (0, _backfilllogger.makeLogger)("info");
|
|
82
99
|
const cwd = process.cwd();
|
|
83
100
|
try {
|
|
84
|
-
const config = (0,
|
|
85
|
-
const { clearOutput, internalCacheFolder, logFolder, logLevel, outputGlob, packageRoot
|
|
101
|
+
const config = (0, _backfillconfig.createConfig)(logger, cwd);
|
|
102
|
+
const { clearOutput, internalCacheFolder, logFolder, logLevel, outputGlob, packageRoot } = config;
|
|
86
103
|
if (logLevel) {
|
|
87
|
-
logger = (0,
|
|
104
|
+
logger = (0, _backfilllogger.makeLogger)(logLevel);
|
|
88
105
|
}
|
|
89
106
|
const helpString = "Backfills unchanged packages.";
|
|
90
|
-
const argv =
|
|
91
|
-
.strict()
|
|
92
|
-
.usage(helpString)
|
|
93
|
-
.alias("h", "help")
|
|
94
|
-
.version(false)
|
|
95
|
-
.option("audit", {
|
|
107
|
+
const argv = _yargs.default.strict().usage(helpString).alias("h", "help").version(false).option("audit", {
|
|
96
108
|
description: "Compare files changed with those cached",
|
|
97
|
-
type: "boolean"
|
|
109
|
+
type: "boolean"
|
|
98
110
|
}).argv;
|
|
99
|
-
const buildCommand = (0,
|
|
111
|
+
const buildCommand = (0, _commandRunner.createBuildCommand)(argv["_"], clearOutput, outputGlob, logger);
|
|
100
112
|
if (argv["audit"]) {
|
|
101
|
-
(0,
|
|
113
|
+
(0, _audit.initializeWatcher)(packageRoot, internalCacheFolder, logFolder, outputGlob, logger);
|
|
102
114
|
}
|
|
103
|
-
await backfill(config, buildCommand, (0,
|
|
115
|
+
await backfill(config, buildCommand, (0, _commandRunner.getRawBuildCommand)(), logger);
|
|
104
116
|
if (argv["audit"]) {
|
|
105
|
-
await (0,
|
|
117
|
+
await (0, _audit.closeWatcher)(logger);
|
|
106
118
|
}
|
|
107
|
-
}
|
|
108
|
-
catch (err) {
|
|
119
|
+
} catch (err) {
|
|
109
120
|
logger.error(err);
|
|
110
121
|
process.exit(1);
|
|
111
122
|
}
|
|
112
123
|
}
|
|
113
|
-
exports.main = main;
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsaUVBQW1EO0FBQ25ELHFEQUEwRDtBQUMxRCxxREFBNEQ7QUFDNUQsbURBQWtEO0FBQ2xELGtEQUEwQjtBQUMxQixtREFJeUI7QUFDekIsbUNBQTBEO0FBQzFELCtCQUtlO0FBRWYsbURBSXlCO0FBSHZCLHNIQUFBLG1CQUFtQixPQUFBO0FBS3JCLDZCQUE2QjtBQUM3QixJQUFBLGtDQUFVLEdBQUUsQ0FBQztBQUVOLEtBQUssVUFBVSxRQUFRLENBQzVCLE1BQWMsRUFDZCxZQUEwQixFQUMxQixRQUFnQixFQUNoQixNQUFjO0lBRWQsTUFBTSxFQUNKLGtCQUFrQixFQUNsQixJQUFJLEVBQ0osSUFBSSxFQUNKLFNBQVMsRUFDVCxXQUFXLEVBQ1gsc0JBQXNCLEVBQ3RCLGNBQWMsR0FDZixHQUFHLE1BQU0sQ0FBQztJQUVYLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRSxNQUFNLENBQUMsZ0JBQWdCLENBQ3JCLElBQUEsaUNBQWdCLEVBQUMsa0JBQWtCLENBQUM7UUFDbEMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksSUFBSSx5QkFBeUI7UUFDdEQsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FDaEMsQ0FBQztJQUVGLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FDbkMsTUFBTSxJQUFBLGlCQUFXLEVBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNuRCxNQUFNLEtBQUssR0FBRyxLQUFLLEVBQUUsSUFBWSxFQUFFLEVBQUUsQ0FDbkMsTUFBTSxJ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
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { loadDotenv } from \"backfill-utils-dotenv\";\nimport { type Logger, makeLogger } from \"backfill-logger\";\nimport { createConfig, type Config } from \"backfill-config\";\nimport { isCustomProvider } from \"backfill-cache\";\nimport yargs from \"yargs\";\nimport {\n getRawBuildCommand,\n createBuildCommand,\n type BuildCommand,\n} from \"./commandRunner.js\";\nimport { initializeWatcher, closeWatcher } from \"./audit.js\";\nimport {\n put as put_api,\n fetch as fetch_api,\n computeHash,\n computeHashOfOutput,\n} from \"./api.js\";\n\nexport {\n createDefaultConfig,\n type Config,\n type ICacheStorage,\n} from \"backfill-config\";\n\n// Load environment variables\nloadDotenv();\n\nexport async function backfill(\n config: Config,\n buildCommand: BuildCommand,\n hashSalt: string,\n logger: Logger\n): Promise<void> {\n const {\n cacheStorageConfig,\n name,\n mode,\n logFolder,\n packageRoot,\n producePerformanceLogs,\n validateOutput,\n } = config;\n\n logger.setName(name);\n logger.setMode(mode, mode === \"READ_WRITE\" ? \"info\" : \"verbose\");\n logger.setCacheProvider(\n isCustomProvider(cacheStorageConfig)\n ? cacheStorageConfig.name || \"custom-storage-provider\"\n : cacheStorageConfig.provider\n );\n\n const createPackageHash = async () =>\n await computeHash(packageRoot, logger, hashSalt);\n const fetch = async (hash: string) =>\n await fetch_api(packageRoot, hash, logger, config);\n const run = async () => {\n try {\n await buildCommand();\n } catch (err) {\n throw new Error(`Command failed with the following error:\\n\\n${err}`);\n }\n };\n const put = async (hash: string) => {\n try {\n await put_api(packageRoot, hash, logger, config);\n } catch (err) {\n logger.error(\n `Failed to persist the cache with the following error:\\n\\n${err}`\n );\n }\n };\n\n switch (mode) {\n case \"READ_WRITE\": {\n const hash = await createPackageHash();\n if (!(await fetch(hash))) {\n await run();\n await put(hash);\n }\n\n break;\n }\n case \"READ_ONLY\": {\n const hash = await createPackageHash();\n if (!(await fetch(hash))) {\n await run();\n }\n\n break;\n }\n case \"WRITE_ONLY\": {\n await run();\n\n const hash = await createPackageHash();\n await put(hash);\n\n break;\n }\n case \"PASS\": {\n await run();\n break;\n }\n }\n\n if (validateOutput) {\n const hashOfOutput = await computeHashOfOutput(packageRoot, logger);\n logger.setHashOfOutput(hashOfOutput);\n }\n\n if (producePerformanceLogs) {\n await logger.toFile(logFolder);\n }\n}\n\nexport async function main(): Promise<void> {\n let logger = makeLogger(\"info\");\n const cwd = process.cwd();\n\n try {\n const config = createConfig(logger, cwd);\n const {\n clearOutput,\n internalCacheFolder,\n logFolder,\n logLevel,\n outputGlob,\n packageRoot,\n } = config;\n\n if (logLevel) {\n logger = makeLogger(logLevel);\n }\n\n const helpString = \"Backfills unchanged packages.\";\n\n const argv = yargs\n .strict()\n .usage(helpString)\n .alias(\"h\", \"help\")\n .version(false)\n .option(\"audit\", {\n description: \"Compare files changed with those cached\",\n type: \"boolean\",\n }).argv;\n\n const buildCommand = createBuildCommand(\n argv[\"_\"],\n clearOutput,\n outputGlob,\n logger\n );\n\n if (argv[\"audit\"]) {\n initializeWatcher(\n packageRoot,\n internalCacheFolder,\n logFolder,\n outputGlob,\n logger\n );\n }\n\n await backfill(config, buildCommand, getRawBuildCommand(), logger);\n\n if (argv[\"audit\"]) {\n await closeWatcher(logger);\n }\n } catch (err) {\n logger.error(err as any);\n process.exit(1);\n }\n}\n"],"names":["backfill","createDefaultConfig","main","loadDotenv","config","buildCommand","hashSalt","logger","cacheStorageConfig","name","mode","logFolder","packageRoot","producePerformanceLogs","validateOutput","setName","setMode","setCacheProvider","isCustomProvider","provider","createPackageHash","computeHash","fetch","hash","fetch_api","run","err","Error","put","put_api","error","hashOfOutput","computeHashOfOutput","setHashOfOutput","toFile","makeLogger","cwd","process","createConfig","clearOutput","internalCacheFolder","logLevel","outputGlob","helpString","argv","yargs","strict","usage","alias","version","option","description","type","createBuildCommand","initializeWatcher","getRawBuildCommand","closeWatcher","exit"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,50 +1,48 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "backfill",
|
|
3
|
-
"version": "6.4.
|
|
3
|
+
"version": "6.4.4",
|
|
4
4
|
"description": "Backfill CLI",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Benjamin Weggersen <bewegger@microsoft.com>",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
|
-
"url": "https://github.com/microsoft/
|
|
9
|
+
"url": "https://github.com/microsoft/lage"
|
|
10
10
|
},
|
|
11
11
|
"main": "lib/index.js",
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
},
|
|
12
|
+
"types": "lib/index.d.ts",
|
|
13
|
+
"bin": "./bin/backfill.js",
|
|
15
14
|
"scripts": {
|
|
16
|
-
"build": "yarn
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
15
|
+
"build": "yarn types && yarn transpile",
|
|
16
|
+
"transpile": "monorepo-scripts transpile",
|
|
17
|
+
"types": "yarn run -T tsc",
|
|
18
|
+
"lint": "monorepo-scripts lint",
|
|
19
|
+
"test": "yarn run -T jest"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"backfill-
|
|
25
|
-
"backfill-
|
|
26
|
-
"backfill-
|
|
27
|
-
"backfill-
|
|
28
|
-
"
|
|
29
|
-
"
|
|
22
|
+
"@lage-run/globby": "^13.0.1",
|
|
23
|
+
"anymatch": "^3.1.3",
|
|
24
|
+
"backfill-cache": "^5.11.4",
|
|
25
|
+
"backfill-config": "^6.7.2",
|
|
26
|
+
"backfill-hasher": "^6.7.1",
|
|
27
|
+
"backfill-logger": "^5.4.1",
|
|
28
|
+
"backfill-utils-dotenv": "^5.3.2",
|
|
29
|
+
"chokidar": "^3.6.0",
|
|
30
|
+
"execa": "^5.1.1",
|
|
30
31
|
"find-up": "^5.0.0",
|
|
31
32
|
"fs-extra": "^8.1.0",
|
|
32
|
-
"
|
|
33
|
-
"yargs": "^16.1.1"
|
|
33
|
+
"yargs": "^16.2.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@
|
|
37
|
-
"@types/
|
|
38
|
-
"@types/node": "^14.18.36",
|
|
36
|
+
"@lage-run/monorepo-scripts": "^1.0.0",
|
|
37
|
+
"@types/fs-extra": "^8.0.0",
|
|
39
38
|
"@types/yargs": "^15.0.15",
|
|
40
|
-
"backfill-utils-test": "
|
|
41
|
-
"backfill-utils-tsconfig": "*",
|
|
42
|
-
"jest": "^30.0.0",
|
|
43
|
-
"ts-jest": "^29.0.0",
|
|
44
|
-
"ts-mockito": "^2.6.1",
|
|
45
|
-
"typescript": "~4.7.0"
|
|
39
|
+
"backfill-utils-test": "^5.1.3"
|
|
46
40
|
},
|
|
47
41
|
"engines": {
|
|
48
42
|
"node": ">=14"
|
|
49
|
-
}
|
|
43
|
+
},
|
|
44
|
+
"files": [
|
|
45
|
+
"lib/!(__*)",
|
|
46
|
+
"lib/!(__*)/**"
|
|
47
|
+
]
|
|
50
48
|
}
|