backfill 6.4.7 → 6.4.9

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.js CHANGED
@@ -2,6 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ 0 && (module.exports = {
6
+ computeHash: null,
7
+ computeHashOfOutput: null,
8
+ fetch: null,
9
+ makeLogger: null,
10
+ put: null
11
+ });
5
12
  function _export(target, all) {
6
13
  for(var name in all)Object.defineProperty(target, name, {
7
14
  enumerable: true,
package/lib/api.js.map CHANGED
@@ -1 +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"}
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.js CHANGED
@@ -2,6 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ 0 && (module.exports = {
6
+ closeWatcher: null,
7
+ initializeWatcher: null,
8
+ noSideEffectString: null,
9
+ sideEffectCallToActionString: null,
10
+ sideEffectWarningString: null
11
+ });
5
12
  function _export(target, all) {
6
13
  for(var name in all)Object.defineProperty(target, name, {
7
14
  enumerable: true,
package/lib/audit.js.map CHANGED
@@ -1 +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"}
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"}
@@ -2,6 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ 0 && (module.exports = {
6
+ createBuildCommand: null,
7
+ getRawBuildCommand: null
8
+ });
5
9
  function _export(target, all) {
6
10
  for(var name in all)Object.defineProperty(target, name, {
7
11
  enumerable: true,
@@ -18,7 +22,7 @@ _export(exports, {
18
22
  });
19
23
  const _execa = /*#__PURE__*/ _interop_require_default(require("execa"));
20
24
  const _fsextra = /*#__PURE__*/ _interop_require_default(require("fs-extra"));
21
- const _globby = require("@lage-run/globby");
25
+ const _globby = require("globby");
22
26
  function _interop_require_default(obj) {
23
27
  return obj && obj.__esModule ? obj : {
24
28
  default: obj
@@ -34,7 +38,7 @@ function createBuildCommand(buildCommand, clearOutput, outputGlob, logger) {
34
38
  throw new Error("Command not provided");
35
39
  }
36
40
  if (clearOutput) {
37
- const filesToClear = (0, _globby.globUncached)(outputGlob);
41
+ const filesToClear = (0, _globby.sync)(outputGlob);
38
42
  await Promise.all(filesToClear.map(async (file)=>await _fsextra.default.remove(file)));
39
43
  }
40
44
  try {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commandRunner.ts"],"sourcesContent":["import execa from \"execa\";\nimport fs from \"fs-extra\";\nimport { globUncached } 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 = globUncached(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","globUncached","Promise","all","map","file","fs","remove","tracer","setTime","runner","execa","shell","pipeProcessOutput","stdout","stderr","stop","e","error"],"mappings":";;;;;;;;;;;QAagBA;eAAAA;;QAJAC;eAAAA;;;8DATE;gEACH;wBACc;;;;;;AAOtB,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,oBAAY,EAACL;YAClC,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"}
1
+ {"version":3,"sources":["../src/commandRunner.ts"],"sourcesContent":["import execa from \"execa\";\nimport fs from \"fs-extra\";\nimport { sync as globbySync } from \"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 = globbySync(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","globbySync","Promise","all","map","file","fs","remove","tracer","setTime","runner","execa","shell","pipeProcessOutput","stdout","stderr","stop","e","error"],"mappings":";;;;;;;;;;;;;;;QAagBA;eAAAA;;QAJAC;eAAAA;;;8DATE;gEACH;wBACoB;;;;;;AAO5B,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,YAAU,EAACL;YAChC,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.js CHANGED
@@ -2,6 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ 0 && (module.exports = {
6
+ backfill: null,
7
+ createDefaultConfig: null,
8
+ main: null
9
+ });
5
10
  function _export(target, all) {
6
11
  for(var name in all)Object.defineProperty(target, name, {
7
12
  enumerable: true,
package/lib/index.js.map CHANGED
@@ -1 +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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"}
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,6 +1,6 @@
1
1
  {
2
2
  "name": "backfill",
3
- "version": "6.4.7",
3
+ "version": "6.4.9",
4
4
  "description": "Backfill CLI",
5
5
  "license": "MIT",
6
6
  "author": "Benjamin Weggersen <bewegger@microsoft.com>",
@@ -20,17 +20,17 @@
20
20
  "test": "yarn run -T jest"
21
21
  },
22
22
  "dependencies": {
23
- "@lage-run/globby": "^13.0.2",
24
23
  "anymatch": "^3.1.3",
25
- "backfill-cache": "^5.12.2",
26
- "backfill-config": "^6.7.2",
27
- "backfill-hasher": "^6.7.2",
28
- "backfill-logger": "^5.4.1",
29
- "backfill-utils-dotenv": "^5.3.2",
24
+ "backfill-cache": "^5.12.4",
25
+ "backfill-config": "^6.7.3",
26
+ "backfill-hasher": "^6.7.4",
27
+ "backfill-logger": "^5.4.2",
28
+ "backfill-utils-dotenv": "^5.3.3",
30
29
  "chokidar": "^3.6.0",
31
30
  "execa": "^5.1.1",
32
31
  "find-up": "^5.0.0",
33
32
  "fs-extra": "^8.1.0",
33
+ "globby": "^11.1.0",
34
34
  "yargs": "^16.2.0"
35
35
  },
36
36
  "devDependencies": {