@lage-run/cache 1.3.13 → 1.3.15
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 +31 -1
- package/CHANGELOG.md +18 -2
- package/lib/backfillWrapper.d.ts +2 -2
- package/lib/backfillWrapper.js +3 -3
- package/lib/backfillWrapper.js.map +1 -1
- package/lib/getCacheDirectory.js +4 -4
- package/lib/getCacheDirectory.js.map +1 -1
- package/lib/index.js +6 -6
- package/lib/index.js.map +1 -1
- package/lib/providers/BackfillCacheProvider.js.map +1 -1
- package/lib/providers/RemoteFallbackCacheProvider.js.map +1 -1
- package/package.json +6 -6
package/CHANGELOG.json
CHANGED
|
@@ -2,7 +2,37 @@
|
|
|
2
2
|
"name": "@lage-run/cache",
|
|
3
3
|
"entries": [
|
|
4
4
|
{
|
|
5
|
-
"date": "
|
|
5
|
+
"date": "Thu, 07 Aug 2025 08:09:50 GMT",
|
|
6
|
+
"version": "1.3.15",
|
|
7
|
+
"tag": "@lage-run/cache_v1.3.15",
|
|
8
|
+
"comments": {
|
|
9
|
+
"patch": [
|
|
10
|
+
{
|
|
11
|
+
"author": "email not defined",
|
|
12
|
+
"package": "@lage-run/cache",
|
|
13
|
+
"commit": "7ca58c8121ab43d58ba76379e5e0c2320622cf5d",
|
|
14
|
+
"comment": "Update backfill monorepo"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"date": "Fri, 01 Aug 2025 08:10:15 GMT",
|
|
21
|
+
"version": "1.3.14",
|
|
22
|
+
"tag": "@lage-run/cache_v1.3.14",
|
|
23
|
+
"comments": {
|
|
24
|
+
"patch": [
|
|
25
|
+
{
|
|
26
|
+
"author": "renovate@whitesourcesoftware.com",
|
|
27
|
+
"package": "@lage-run/cache",
|
|
28
|
+
"commit": "28308e0b441f625fb5a83daabadb55f49b208603",
|
|
29
|
+
"comment": "Update backfill monorepo"
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"date": "Tue, 29 Apr 2025 08:10:03 GMT",
|
|
6
36
|
"version": "1.3.13",
|
|
7
37
|
"tag": "@lage-run/cache_v1.3.13",
|
|
8
38
|
"comments": {
|
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,28 @@
|
|
|
1
1
|
# Change Log - @lage-run/cache
|
|
2
2
|
|
|
3
|
-
<!-- This log was last generated on
|
|
3
|
+
<!-- This log was last generated on Thu, 07 Aug 2025 08:09:50 GMT and should not be manually modified. -->
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 1.3.15
|
|
8
|
+
|
|
9
|
+
Thu, 07 Aug 2025 08:09:50 GMT
|
|
10
|
+
|
|
11
|
+
### Patches
|
|
12
|
+
|
|
13
|
+
- Update backfill monorepo (email not defined)
|
|
14
|
+
|
|
15
|
+
## 1.3.14
|
|
16
|
+
|
|
17
|
+
Fri, 01 Aug 2025 08:10:15 GMT
|
|
18
|
+
|
|
19
|
+
### Patches
|
|
20
|
+
|
|
21
|
+
- Update backfill monorepo (renovate@whitesourcesoftware.com)
|
|
22
|
+
|
|
7
23
|
## 1.3.13
|
|
8
24
|
|
|
9
|
-
Tue, 29 Apr 2025 08:
|
|
25
|
+
Tue, 29 Apr 2025 08:10:03 GMT
|
|
10
26
|
|
|
11
27
|
### Patches
|
|
12
28
|
|
package/lib/backfillWrapper.d.ts
CHANGED
|
@@ -6,18 +6,18 @@ import type { CacheOptions } from "@lage-run/config";
|
|
|
6
6
|
export declare function createBackfillLogger(): BackfillLogger;
|
|
7
7
|
export declare function createBackfillCacheConfig(cwd: string, cacheOptions: Partial<CacheOptions> | undefined, backfillLogger: BackfillLogger): {
|
|
8
8
|
cacheStorageConfig: import("backfill-config").CacheStorageConfig;
|
|
9
|
+
outputGlob: string[];
|
|
9
10
|
clearOutput: boolean;
|
|
10
11
|
internalCacheFolder: string;
|
|
11
12
|
logFolder: string;
|
|
12
13
|
logLevel: "silly" | "verbose" | "info" | "warn" | "error" | "mute";
|
|
13
14
|
name: string;
|
|
14
15
|
mode: "READ_ONLY" | "WRITE_ONLY" | "READ_WRITE" | "PASS";
|
|
15
|
-
outputGlob: string[];
|
|
16
16
|
packageRoot: string;
|
|
17
|
-
performanceReportName?: string | undefined;
|
|
18
17
|
producePerformanceLogs: boolean;
|
|
19
18
|
validateOutput: boolean;
|
|
20
19
|
incrementalCaching: boolean;
|
|
20
|
+
performanceReportName?: string | undefined;
|
|
21
21
|
writeRemoteCache?: boolean | undefined;
|
|
22
22
|
skipLocalCache?: boolean | undefined;
|
|
23
23
|
environmentGlob?: string[] | undefined;
|
package/lib/backfillWrapper.js
CHANGED
|
@@ -7,14 +7,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
function _export(target, all) {
|
|
8
8
|
for(var name in all)Object.defineProperty(target, name, {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: all
|
|
10
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
11
11
|
});
|
|
12
12
|
}
|
|
13
13
|
_export(exports, {
|
|
14
|
-
createBackfillCacheConfig
|
|
14
|
+
get createBackfillCacheConfig () {
|
|
15
15
|
return createBackfillCacheConfig;
|
|
16
16
|
},
|
|
17
|
-
createBackfillLogger
|
|
17
|
+
get createBackfillLogger () {
|
|
18
18
|
return createBackfillLogger;
|
|
19
19
|
}
|
|
20
20
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/backfillWrapper.ts"],"sourcesContent":["/**\n * Backfill wrappers: some functions that uses the `backfill` library that doesn't require them to be inside a class\n */\n\nimport * as os from \"os\";\nimport { createDefaultConfig, getEnvConfig } from \"backfill-config\";\nimport { makeLogger } from \"backfill-logger\";\nimport type { Logger as BackfillLogger } from \"backfill-logger\";\nimport type { CacheOptions } from \"@lage-run/config\";\nimport { CredentialCache } from \"./CredentialCache.js\";\n\nexport function createBackfillLogger() {\n const stdout = process.stdout;\n const stderr = process.stderr;\n return makeLogger(\"error\", {\n console: {\n info(...args) {\n stdout.write(args.join(\" \") + os.EOL);\n },\n warn(...args) {\n stderr.write(args.join(\" \") + os.EOL);\n },\n error(...args) {\n stderr.write(args.join(\" \") + os.EOL);\n },\n },\n });\n}\n\nexport function createBackfillCacheConfig(cwd: string, cacheOptions: Partial<CacheOptions> = {}, backfillLogger: BackfillLogger) {\n const envConfig = getEnvConfig(backfillLogger);\n const mergedConfig = {\n ...createDefaultConfig(cwd),\n ...cacheOptions,\n ...envConfig,\n };\n\n if (mergedConfig.cacheStorageConfig.provider === \"azure-blob\") {\n const azureOptions = mergedConfig.cacheStorageConfig.options;\n if (\"connectionString\" in azureOptions && !isTokenConnectionString(azureOptions.connectionString)) {\n azureOptions.credential = CredentialCache.getInstance();\n }\n }\n\n return mergedConfig;\n}\n\nfunction isTokenConnectionString(connectionString: string) {\n return connectionString.includes(\"SharedAccessSignature\");\n}\n"],"names":["createBackfillCacheConfig","createBackfillLogger","stdout","process","stderr","makeLogger","console","info","args","write","join","os","EOL","warn","error","cwd","cacheOptions","backfillLogger","envConfig","getEnvConfig","mergedConfig","createDefaultConfig","cacheStorageConfig","provider","azureOptions","options","isTokenConnectionString","connectionString","credential","CredentialCache","getInstance","includes"],"mappings":"AAAA;;CAEC;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../src/backfillWrapper.ts"],"sourcesContent":["/**\n * Backfill wrappers: some functions that uses the `backfill` library that doesn't require them to be inside a class\n */\n\nimport * as os from \"os\";\nimport { createDefaultConfig, getEnvConfig } from \"backfill-config\";\nimport { makeLogger } from \"backfill-logger\";\nimport type { Logger as BackfillLogger } from \"backfill-logger\";\nimport type { CacheOptions } from \"@lage-run/config\";\nimport { CredentialCache } from \"./CredentialCache.js\";\n\nexport function createBackfillLogger() {\n const stdout = process.stdout;\n const stderr = process.stderr;\n return makeLogger(\"error\", {\n console: {\n info(...args) {\n stdout.write(args.join(\" \") + os.EOL);\n },\n warn(...args) {\n stderr.write(args.join(\" \") + os.EOL);\n },\n error(...args) {\n stderr.write(args.join(\" \") + os.EOL);\n },\n },\n });\n}\n\nexport function createBackfillCacheConfig(cwd: string, cacheOptions: Partial<CacheOptions> = {}, backfillLogger: BackfillLogger) {\n const envConfig = getEnvConfig(backfillLogger);\n const mergedConfig = {\n ...createDefaultConfig(cwd),\n ...cacheOptions,\n ...envConfig,\n };\n\n if (mergedConfig.cacheStorageConfig.provider === \"azure-blob\") {\n const azureOptions = mergedConfig.cacheStorageConfig.options;\n if (\"connectionString\" in azureOptions && !isTokenConnectionString(azureOptions.connectionString)) {\n azureOptions.credential = CredentialCache.getInstance();\n }\n }\n\n return mergedConfig;\n}\n\nfunction isTokenConnectionString(connectionString: string) {\n return connectionString.includes(\"SharedAccessSignature\");\n}\n"],"names":["createBackfillCacheConfig","createBackfillLogger","stdout","process","stderr","makeLogger","console","info","args","write","join","os","EOL","warn","error","cwd","cacheOptions","backfillLogger","envConfig","getEnvConfig","mergedConfig","createDefaultConfig","cacheStorageConfig","provider","azureOptions","options","isTokenConnectionString","connectionString","credential","CredentialCache","getInstance","includes"],"mappings":"AAAA;;CAEC;;;;;;;;;;;QA2BeA;eAAAA;;QAlBAC;eAAAA;;;4DAPI;gCAC8B;gCACvB;iCAGK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEzB,SAASA;IACd,MAAMC,SAASC,QAAQD,MAAM;IAC7B,MAAME,SAASD,QAAQC,MAAM;IAC7B,OAAOC,IAAAA,0BAAU,EAAC,SAAS;QACzBC,SAAS;YACPC,MAAK,GAAGC,IAAI;gBACVN,OAAOO,KAAK,CAACD,KAAKE,IAAI,CAAC,OAAOC,IAAGC,GAAG;YACtC;YACAC,MAAK,GAAGL,IAAI;gBACVJ,OAAOK,KAAK,CAACD,KAAKE,IAAI,CAAC,OAAOC,IAAGC,GAAG;YACtC;YACAE,OAAM,GAAGN,IAAI;gBACXJ,OAAOK,KAAK,CAACD,KAAKE,IAAI,CAAC,OAAOC,IAAGC,GAAG;YACtC;QACF;IACF;AACF;AAEO,SAASZ,0BAA0Be,GAAW,EAAEC,eAAsC,CAAC,CAAC,EAAEC,cAA8B;IAC7H,MAAMC,YAAYC,IAAAA,4BAAY,EAACF;IAC/B,MAAMG,eAAe;QACnB,GAAGC,IAAAA,mCAAmB,EAACN,IAAI;QAC3B,GAAGC,YAAY;QACf,GAAGE,SAAS;IACd;IAEA,IAAIE,aAAaE,kBAAkB,CAACC,QAAQ,KAAK,cAAc;QAC7D,MAAMC,eAAeJ,aAAaE,kBAAkB,CAACG,OAAO;QAC5D,IAAI,sBAAsBD,gBAAgB,CAACE,wBAAwBF,aAAaG,gBAAgB,GAAG;YACjGH,aAAaI,UAAU,GAAGC,gCAAe,CAACC,WAAW;QACvD;IACF;IAEA,OAAOV;AACT;AAEA,SAASM,wBAAwBC,gBAAwB;IACvD,OAAOA,iBAAiBI,QAAQ,CAAC;AACnC"}
|
package/lib/getCacheDirectory.js
CHANGED
|
@@ -5,17 +5,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
function _export(target, all) {
|
|
6
6
|
for(var name in all)Object.defineProperty(target, name, {
|
|
7
7
|
enumerable: true,
|
|
8
|
-
get: all
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
getCacheDirectory
|
|
12
|
+
get getCacheDirectory () {
|
|
13
13
|
return getCacheDirectory;
|
|
14
14
|
},
|
|
15
|
-
getCacheDirectoryRoot
|
|
15
|
+
get getCacheDirectoryRoot () {
|
|
16
16
|
return getCacheDirectoryRoot;
|
|
17
17
|
},
|
|
18
|
-
getLogsCacheDirectory
|
|
18
|
+
get getLogsCacheDirectory () {
|
|
19
19
|
return getLogsCacheDirectory;
|
|
20
20
|
}
|
|
21
21
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/getCacheDirectory.ts"],"sourcesContent":["import path from \"path\";\n\nexport function getCacheDirectoryRoot(root: string) {\n return path.join(root, \"node_modules\", \".cache\", \"lage\");\n}\n\nexport function getCacheDirectory(root: string, hash: string) {\n return path.join(getCacheDirectoryRoot(root), \"cache\", hash.substring(0, 4));\n}\n\nexport function getLogsCacheDirectory(root: string, hash: string) {\n return path.join(getCacheDirectoryRoot(root), \"logs\", hash.substring(0, 4));\n}\n"],"names":["getCacheDirectory","getCacheDirectoryRoot","getLogsCacheDirectory","root","path","join","hash","substring"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../src/getCacheDirectory.ts"],"sourcesContent":["import path from \"path\";\n\nexport function getCacheDirectoryRoot(root: string) {\n return path.join(root, \"node_modules\", \".cache\", \"lage\");\n}\n\nexport function getCacheDirectory(root: string, hash: string) {\n return path.join(getCacheDirectoryRoot(root), \"cache\", hash.substring(0, 4));\n}\n\nexport function getLogsCacheDirectory(root: string, hash: string) {\n return path.join(getCacheDirectoryRoot(root), \"logs\", hash.substring(0, 4));\n}\n"],"names":["getCacheDirectory","getCacheDirectoryRoot","getLogsCacheDirectory","root","path","join","hash","substring"],"mappings":";;;;;;;;;;;QAMgBA;eAAAA;;QAJAC;eAAAA;;QAQAC;eAAAA;;;6DAVC;;;;;;AAEV,SAASD,sBAAsBE,IAAY;IAChD,OAAOC,aAAI,CAACC,IAAI,CAACF,MAAM,gBAAgB,UAAU;AACnD;AAEO,SAASH,kBAAkBG,IAAY,EAAEG,IAAY;IAC1D,OAAOF,aAAI,CAACC,IAAI,CAACJ,sBAAsBE,OAAO,SAASG,KAAKC,SAAS,CAAC,GAAG;AAC3E;AAEO,SAASL,sBAAsBC,IAAY,EAAEG,IAAY;IAC9D,OAAOF,aAAI,CAACC,IAAI,CAACJ,sBAAsBE,OAAO,QAAQG,KAAKC,SAAS,CAAC,GAAG;AAC1E"}
|
package/lib/index.js
CHANGED
|
@@ -5,23 +5,23 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
function _export(target, all) {
|
|
6
6
|
for(var name in all)Object.defineProperty(target, name, {
|
|
7
7
|
enumerable: true,
|
|
8
|
-
get: all
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
BackfillCacheProvider
|
|
12
|
+
get BackfillCacheProvider () {
|
|
13
13
|
return _BackfillCacheProvider.BackfillCacheProvider;
|
|
14
14
|
},
|
|
15
|
-
RemoteFallbackCacheProvider
|
|
15
|
+
get RemoteFallbackCacheProvider () {
|
|
16
16
|
return _RemoteFallbackCacheProvider.RemoteFallbackCacheProvider;
|
|
17
17
|
},
|
|
18
|
-
getCacheDirectory
|
|
18
|
+
get getCacheDirectory () {
|
|
19
19
|
return _getCacheDirectory.getCacheDirectory;
|
|
20
20
|
},
|
|
21
|
-
getCacheDirectoryRoot
|
|
21
|
+
get getCacheDirectoryRoot () {
|
|
22
22
|
return _getCacheDirectory.getCacheDirectoryRoot;
|
|
23
23
|
},
|
|
24
|
-
getLogsCacheDirectory
|
|
24
|
+
get getLogsCacheDirectory () {
|
|
25
25
|
return _getCacheDirectory.getLogsCacheDirectory;
|
|
26
26
|
}
|
|
27
27
|
});
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { BackfillCacheProvider } from \"./providers/BackfillCacheProvider.js\";\nexport { RemoteFallbackCacheProvider } from \"./providers/RemoteFallbackCacheProvider.js\";\nexport type { CacheOptions } from \"@lage-run/config\";\nexport type { CacheProvider } from \"./types/CacheProvider.js\";\n\nexport { getCacheDirectory, getLogsCacheDirectory, getCacheDirectoryRoot } from \"./getCacheDirectory.js\";\n"],"names":["BackfillCacheProvider","RemoteFallbackCacheProvider","getCacheDirectory","getCacheDirectoryRoot","getLogsCacheDirectory"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { BackfillCacheProvider } from \"./providers/BackfillCacheProvider.js\";\nexport { RemoteFallbackCacheProvider } from \"./providers/RemoteFallbackCacheProvider.js\";\nexport type { CacheOptions } from \"@lage-run/config\";\nexport type { CacheProvider } from \"./types/CacheProvider.js\";\n\nexport { getCacheDirectory, getLogsCacheDirectory, getCacheDirectoryRoot } from \"./getCacheDirectory.js\";\n"],"names":["BackfillCacheProvider","RemoteFallbackCacheProvider","getCacheDirectory","getCacheDirectoryRoot","getLogsCacheDirectory"],"mappings":";;;;;;;;;;;QAASA;eAAAA,4CAAqB;;QACrBC;eAAAA,wDAA2B;;QAI3BC;eAAAA,oCAAiB;;QAAyBC;eAAAA,wCAAqB;;QAA5CC;eAAAA,wCAAqB;;;uCALX;6CACM;mCAIoC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/providers/BackfillCacheProvider.ts"],"sourcesContent":["import { createBackfillCacheConfig, createBackfillLogger } from \"../backfillWrapper.js\";\nimport { getCacheStorageProvider } from \"backfill-cache\";\nimport { promisify } from \"util\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport type { CacheProvider } from \"../types/CacheProvider.js\";\nimport type { CacheOptions } from \"@lage-run/config\";\nimport type { Logger as BackfillLogger } from \"backfill-logger\";\nimport type { Target } from \"@lage-run/target-graph\";\nimport type { Logger } from \"@lage-run/logger\";\nimport { getCacheDirectory, getCacheDirectoryRoot } from \"../getCacheDirectory.js\";\nimport { chunkPromise } from \"../chunkPromise.js\";\n\nconst rm = promisify(fs.rm);\nconst readdir = promisify(fs.readdir);\nconst stat = promisify(fs.stat);\n\nconst MS_IN_A_DAY = 1000 * 60 * 60 * 24;\n\nexport interface BackfillCacheProviderOptions {\n root: string;\n logger: Logger;\n cacheOptions: Partial<CacheOptions>;\n}\n\nexport class BackfillCacheProvider implements CacheProvider {\n /**\n * logger for backfill\n */\n private backfillLogger: BackfillLogger;\n\n private getTargetCacheStorageProvider(cwd: string, hash: string) {\n const { cacheOptions } = this.options;\n const { cacheStorageConfig, incrementalCaching } = createBackfillCacheConfig(cwd, cacheOptions, this.backfillLogger);\n\n const cachePath = this.getCachePath(cwd, hash);\n\n return getCacheStorageProvider(cacheStorageConfig ?? { provider: \"local\" }, cachePath, this.backfillLogger, cwd, incrementalCaching);\n }\n\n constructor(private options: BackfillCacheProviderOptions) {\n this.backfillLogger = createBackfillLogger();\n }\n\n async fetch(hash: string, target: Target): Promise<boolean> {\n const { logger } = this.options;\n\n if (!hash) {\n return false;\n }\n\n const cacheStorage = this.getTargetCacheStorageProvider(target.cwd, hash);\n\n try {\n return await cacheStorage.fetch(hash);\n } catch (error) {\n let message;\n\n if (error instanceof Error) {\n message = error.message;\n } else message = String(error);\n\n logger.silly(`Cache fetch failed: ${message}`, { target });\n\n // backfill fetch can error, but we should simply ignore and continue\n return false;\n }\n }\n\n async put(hash: string, target: Target): Promise<void> {\n const { logger } = this.options;\n\n if (!hash) {\n return;\n }\n\n const cacheStorage = this.getTargetCacheStorageProvider(target.cwd, hash);\n\n try {\n await cacheStorage.put(hash, target.outputs ?? this.options.cacheOptions.outputGlob ?? [\"**/*\"]);\n } catch (error) {\n let message;\n\n if (error instanceof Error) {\n message = error.message;\n } else message = String(error);\n\n logger.silly(`Cache fetch failed: ${message}`, { target });\n\n // backfill throws an error if outputGlob doesn't match any files, we will skip this error\n }\n }\n\n async clear(concurrency = 10): Promise<void> {\n return this.purge(0, concurrency);\n }\n\n async purge(prunePeriod = 30, concurrency = 10): Promise<void> {\n const now = new Date();\n\n const cacheTypes = [\"cache\", \"logs\"];\n const entries: string[] = [];\n\n for (const cacheType of cacheTypes) {\n const cacheTypeDirectory = path.join(getCacheDirectoryRoot(this.options.root), cacheType);\n if (fs.existsSync(cacheTypeDirectory)) {\n const hashPrefixes = await readdir(cacheTypeDirectory);\n for (const prefix of hashPrefixes) {\n const cachePath = path.join(cacheTypeDirectory, prefix);\n entries.push(cachePath);\n }\n }\n }\n\n await chunkPromise(\n entries.map((entry) => {\n return async () => {\n const entryPath = entry;\n const entryStat = await stat(entryPath);\n\n if (now.getTime() - entryStat.mtime.getTime() > prunePeriod * MS_IN_A_DAY) {\n await removeCache(entryPath, entryStat);\n }\n };\n }),\n concurrency\n );\n }\n\n getCachePath(packagePath: string, hash: string) {\n return path.relative(packagePath, getCacheDirectory(this.options.root, hash));\n }\n}\n\nasync function removeCache(cachePath: string, entryStat: fs.Stats) {\n if (entryStat.isDirectory()) {\n return rm(cachePath, { recursive: true });\n } else {\n return rm(cachePath);\n }\n}\n"],"names":["BackfillCacheProvider","rm","promisify","fs","readdir","stat","MS_IN_A_DAY","getTargetCacheStorageProvider","cwd","hash","cacheOptions","options","cacheStorageConfig","incrementalCaching","createBackfillCacheConfig","backfillLogger","cachePath","getCachePath","getCacheStorageProvider","provider","fetch","target","logger","cacheStorage","error","message","Error","String","silly","put","outputs","outputGlob","clear","concurrency","purge","prunePeriod","now","Date","cacheTypes","entries","cacheType","cacheTypeDirectory","path","join","getCacheDirectoryRoot","root","existsSync","hashPrefixes","prefix","push","chunkPromise","map","entry","entryPath","entryStat","getTime","mtime","removeCache","packagePath","relative","getCacheDirectory","
|
|
1
|
+
{"version":3,"sources":["../../src/providers/BackfillCacheProvider.ts"],"sourcesContent":["import { createBackfillCacheConfig, createBackfillLogger } from \"../backfillWrapper.js\";\nimport { getCacheStorageProvider } from \"backfill-cache\";\nimport { promisify } from \"util\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport type { CacheProvider } from \"../types/CacheProvider.js\";\nimport type { CacheOptions } from \"@lage-run/config\";\nimport type { Logger as BackfillLogger } from \"backfill-logger\";\nimport type { Target } from \"@lage-run/target-graph\";\nimport type { Logger } from \"@lage-run/logger\";\nimport { getCacheDirectory, getCacheDirectoryRoot } from \"../getCacheDirectory.js\";\nimport { chunkPromise } from \"../chunkPromise.js\";\n\nconst rm = promisify(fs.rm);\nconst readdir = promisify(fs.readdir);\nconst stat = promisify(fs.stat);\n\nconst MS_IN_A_DAY = 1000 * 60 * 60 * 24;\n\nexport interface BackfillCacheProviderOptions {\n root: string;\n logger: Logger;\n cacheOptions: Partial<CacheOptions>;\n}\n\nexport class BackfillCacheProvider implements CacheProvider {\n /**\n * logger for backfill\n */\n private backfillLogger: BackfillLogger;\n\n private getTargetCacheStorageProvider(cwd: string, hash: string) {\n const { cacheOptions } = this.options;\n const { cacheStorageConfig, incrementalCaching } = createBackfillCacheConfig(cwd, cacheOptions, this.backfillLogger);\n\n const cachePath = this.getCachePath(cwd, hash);\n\n return getCacheStorageProvider(cacheStorageConfig ?? { provider: \"local\" }, cachePath, this.backfillLogger, cwd, incrementalCaching);\n }\n\n constructor(private options: BackfillCacheProviderOptions) {\n this.backfillLogger = createBackfillLogger();\n }\n\n async fetch(hash: string, target: Target): Promise<boolean> {\n const { logger } = this.options;\n\n if (!hash) {\n return false;\n }\n\n const cacheStorage = this.getTargetCacheStorageProvider(target.cwd, hash);\n\n try {\n return await cacheStorage.fetch(hash);\n } catch (error) {\n let message;\n\n if (error instanceof Error) {\n message = error.message;\n } else message = String(error);\n\n logger.silly(`Cache fetch failed: ${message}`, { target });\n\n // backfill fetch can error, but we should simply ignore and continue\n return false;\n }\n }\n\n async put(hash: string, target: Target): Promise<void> {\n const { logger } = this.options;\n\n if (!hash) {\n return;\n }\n\n const cacheStorage = this.getTargetCacheStorageProvider(target.cwd, hash);\n\n try {\n await cacheStorage.put(hash, target.outputs ?? this.options.cacheOptions.outputGlob ?? [\"**/*\"]);\n } catch (error) {\n let message;\n\n if (error instanceof Error) {\n message = error.message;\n } else message = String(error);\n\n logger.silly(`Cache fetch failed: ${message}`, { target });\n\n // backfill throws an error if outputGlob doesn't match any files, we will skip this error\n }\n }\n\n async clear(concurrency = 10): Promise<void> {\n return this.purge(0, concurrency);\n }\n\n async purge(prunePeriod = 30, concurrency = 10): Promise<void> {\n const now = new Date();\n\n const cacheTypes = [\"cache\", \"logs\"];\n const entries: string[] = [];\n\n for (const cacheType of cacheTypes) {\n const cacheTypeDirectory = path.join(getCacheDirectoryRoot(this.options.root), cacheType);\n if (fs.existsSync(cacheTypeDirectory)) {\n const hashPrefixes = await readdir(cacheTypeDirectory);\n for (const prefix of hashPrefixes) {\n const cachePath = path.join(cacheTypeDirectory, prefix);\n entries.push(cachePath);\n }\n }\n }\n\n await chunkPromise(\n entries.map((entry) => {\n return async () => {\n const entryPath = entry;\n const entryStat = await stat(entryPath);\n\n if (now.getTime() - entryStat.mtime.getTime() > prunePeriod * MS_IN_A_DAY) {\n await removeCache(entryPath, entryStat);\n }\n };\n }),\n concurrency\n );\n }\n\n getCachePath(packagePath: string, hash: string) {\n return path.relative(packagePath, getCacheDirectory(this.options.root, hash));\n }\n}\n\nasync function removeCache(cachePath: string, entryStat: fs.Stats) {\n if (entryStat.isDirectory()) {\n return rm(cachePath, { recursive: true });\n } else {\n return rm(cachePath);\n }\n}\n"],"names":["BackfillCacheProvider","rm","promisify","fs","readdir","stat","MS_IN_A_DAY","getTargetCacheStorageProvider","cwd","hash","cacheOptions","options","cacheStorageConfig","incrementalCaching","createBackfillCacheConfig","backfillLogger","cachePath","getCachePath","getCacheStorageProvider","provider","fetch","target","logger","cacheStorage","error","message","Error","String","silly","put","outputs","outputGlob","clear","concurrency","purge","prunePeriod","now","Date","cacheTypes","entries","cacheType","cacheTypeDirectory","path","join","getCacheDirectoryRoot","root","existsSync","hashPrefixes","prefix","push","chunkPromise","map","entry","entryPath","entryStat","getTime","mtime","removeCache","packagePath","relative","getCacheDirectory","createBackfillLogger","isDirectory","recursive"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/providers/RemoteFallbackCacheProvider.ts"],"sourcesContent":["import type { CacheProvider } from \"../types/CacheProvider.js\";\nimport type { Logger } from \"@lage-run/logger\";\nimport type { Target } from \"@lage-run/target-graph\";\n\nexport interface RemoteFallbackCacheProviderOptions {\n root: string;\n logger: Logger;\n\n localCacheProvider?: CacheProvider;\n remoteCacheProvider?: CacheProvider;\n\n writeRemoteCache?: boolean;\n}\n\n/**\n * Remote Fallback Cache Provider\n *\n * This backfill cache provider will fallback to a remote cache provider if the local cache does not contain the item.\n * It will also automatically populate the local cache with the remote cache.\n */\nexport class RemoteFallbackCacheProvider implements CacheProvider {\n private static localHits: { [hash: string]: boolean } = {};\n private static remoteHits: { [hash: string]: boolean } = {};\n\n constructor(private options: RemoteFallbackCacheProviderOptions) {}\n\n async fetch(hash: string, target: Target) {\n const { logger, remoteCacheProvider, localCacheProvider } = this.options;\n\n if (localCacheProvider) {\n RemoteFallbackCacheProvider.localHits[hash] = await localCacheProvider.fetch(hash, target);\n logger.silly(`local cache fetch: ${hash} ${RemoteFallbackCacheProvider.localHits[hash]}`);\n }\n\n if (!RemoteFallbackCacheProvider.localHits[hash] && remoteCacheProvider) {\n RemoteFallbackCacheProvider.remoteHits[hash] = await remoteCacheProvider.fetch(hash, target);\n logger.silly(`remote fallback fetch: ${hash} ${RemoteFallbackCacheProvider.remoteHits[hash]}`);\n\n // now save this into the localCacheProvider, if available\n if (localCacheProvider && RemoteFallbackCacheProvider.remoteHits[hash]) {\n logger.silly(`local cache put, fetched cache from remote: ${hash}`);\n await localCacheProvider.put(hash, target);\n }\n\n return RemoteFallbackCacheProvider.remoteHits[hash];\n }\n\n return RemoteFallbackCacheProvider.localHits[hash];\n }\n\n async put(hash: string, target: Target) {\n const { logger, remoteCacheProvider, localCacheProvider, writeRemoteCache } = this.options;\n const putPromises: Promise<void>[] = [];\n\n // Write local cache if it doesn't already exist, or if the the hash isn't in the localHits\n const shouldWriteLocalCache = !this.isLocalHit(hash) && !!localCacheProvider;\n\n if (shouldWriteLocalCache) {\n logger.silly(`local cache put: ${hash}`);\n putPromises.push(localCacheProvider.put(hash, target));\n }\n\n // Write to remote if there is a no hit in the remote cache, and remote cache storage provider, and that the \"writeRemoteCache\" config flag is set to true\n const shouldWriteRemoteCache = !this.isRemoteHit(hash) && !!remoteCacheProvider && writeRemoteCache;\n\n if (shouldWriteRemoteCache) {\n logger.silly(`remote fallback put: ${hash}`);\n const remotePut = remoteCacheProvider.put(hash, target);\n putPromises.push(remotePut);\n }\n\n await Promise.all(putPromises);\n }\n\n private isRemoteHit(hash) {\n return hash in RemoteFallbackCacheProvider.remoteHits && RemoteFallbackCacheProvider.remoteHits[hash];\n }\n\n private isLocalHit(hash) {\n return hash in RemoteFallbackCacheProvider.localHits && RemoteFallbackCacheProvider.localHits[hash];\n }\n\n async clear(): Promise<void> {\n const { localCacheProvider } = this.options;\n if (localCacheProvider) {\n return localCacheProvider.clear();\n }\n }\n\n async purge(sinceDays: number): Promise<void> {\n const { localCacheProvider } = this.options;\n if (localCacheProvider) {\n return localCacheProvider.purge(sinceDays);\n }\n }\n}\n"],"names":["RemoteFallbackCacheProvider","fetch","hash","target","logger","remoteCacheProvider","localCacheProvider","options","localHits","silly","remoteHits","put","writeRemoteCache","putPromises","shouldWriteLocalCache","isLocalHit","push","shouldWriteRemoteCache","isRemoteHit","remotePut","Promise","all","clear","purge","sinceDays"
|
|
1
|
+
{"version":3,"sources":["../../src/providers/RemoteFallbackCacheProvider.ts"],"sourcesContent":["import type { CacheProvider } from \"../types/CacheProvider.js\";\nimport type { Logger } from \"@lage-run/logger\";\nimport type { Target } from \"@lage-run/target-graph\";\n\nexport interface RemoteFallbackCacheProviderOptions {\n root: string;\n logger: Logger;\n\n localCacheProvider?: CacheProvider;\n remoteCacheProvider?: CacheProvider;\n\n writeRemoteCache?: boolean;\n}\n\n/**\n * Remote Fallback Cache Provider\n *\n * This backfill cache provider will fallback to a remote cache provider if the local cache does not contain the item.\n * It will also automatically populate the local cache with the remote cache.\n */\nexport class RemoteFallbackCacheProvider implements CacheProvider {\n private static localHits: { [hash: string]: boolean } = {};\n private static remoteHits: { [hash: string]: boolean } = {};\n\n constructor(private options: RemoteFallbackCacheProviderOptions) {}\n\n async fetch(hash: string, target: Target) {\n const { logger, remoteCacheProvider, localCacheProvider } = this.options;\n\n if (localCacheProvider) {\n RemoteFallbackCacheProvider.localHits[hash] = await localCacheProvider.fetch(hash, target);\n logger.silly(`local cache fetch: ${hash} ${RemoteFallbackCacheProvider.localHits[hash]}`);\n }\n\n if (!RemoteFallbackCacheProvider.localHits[hash] && remoteCacheProvider) {\n RemoteFallbackCacheProvider.remoteHits[hash] = await remoteCacheProvider.fetch(hash, target);\n logger.silly(`remote fallback fetch: ${hash} ${RemoteFallbackCacheProvider.remoteHits[hash]}`);\n\n // now save this into the localCacheProvider, if available\n if (localCacheProvider && RemoteFallbackCacheProvider.remoteHits[hash]) {\n logger.silly(`local cache put, fetched cache from remote: ${hash}`);\n await localCacheProvider.put(hash, target);\n }\n\n return RemoteFallbackCacheProvider.remoteHits[hash];\n }\n\n return RemoteFallbackCacheProvider.localHits[hash];\n }\n\n async put(hash: string, target: Target) {\n const { logger, remoteCacheProvider, localCacheProvider, writeRemoteCache } = this.options;\n const putPromises: Promise<void>[] = [];\n\n // Write local cache if it doesn't already exist, or if the the hash isn't in the localHits\n const shouldWriteLocalCache = !this.isLocalHit(hash) && !!localCacheProvider;\n\n if (shouldWriteLocalCache) {\n logger.silly(`local cache put: ${hash}`);\n putPromises.push(localCacheProvider.put(hash, target));\n }\n\n // Write to remote if there is a no hit in the remote cache, and remote cache storage provider, and that the \"writeRemoteCache\" config flag is set to true\n const shouldWriteRemoteCache = !this.isRemoteHit(hash) && !!remoteCacheProvider && writeRemoteCache;\n\n if (shouldWriteRemoteCache) {\n logger.silly(`remote fallback put: ${hash}`);\n const remotePut = remoteCacheProvider.put(hash, target);\n putPromises.push(remotePut);\n }\n\n await Promise.all(putPromises);\n }\n\n private isRemoteHit(hash) {\n return hash in RemoteFallbackCacheProvider.remoteHits && RemoteFallbackCacheProvider.remoteHits[hash];\n }\n\n private isLocalHit(hash) {\n return hash in RemoteFallbackCacheProvider.localHits && RemoteFallbackCacheProvider.localHits[hash];\n }\n\n async clear(): Promise<void> {\n const { localCacheProvider } = this.options;\n if (localCacheProvider) {\n return localCacheProvider.clear();\n }\n }\n\n async purge(sinceDays: number): Promise<void> {\n const { localCacheProvider } = this.options;\n if (localCacheProvider) {\n return localCacheProvider.purge(sinceDays);\n }\n }\n}\n"],"names":["RemoteFallbackCacheProvider","fetch","hash","target","logger","remoteCacheProvider","localCacheProvider","options","localHits","silly","remoteHits","put","writeRemoteCache","putPromises","shouldWriteLocalCache","isLocalHit","push","shouldWriteRemoteCache","isRemoteHit","remotePut","Promise","all","clear","purge","sinceDays"],"mappings":";;;;+BAoBaA;;;eAAAA;;;;;;;;;;;;;;;;AAAN,MAAMA;IAMX,MAAMC,MAAMC,IAAY,EAAEC,MAAc,EAAE;QACxC,MAAM,EAAEC,MAAM,EAAEC,mBAAmB,EAAEC,kBAAkB,EAAE,GAAG,IAAI,CAACC,OAAO;QAExE,IAAID,oBAAoB;YACtBN,4BAA4BQ,SAAS,CAACN,KAAK,GAAG,MAAMI,mBAAmBL,KAAK,CAACC,MAAMC;YACnFC,OAAOK,KAAK,CAAC,CAAC,mBAAmB,EAAEP,KAAK,CAAC,EAAEF,4BAA4BQ,SAAS,CAACN,KAAK,EAAE;QAC1F;QAEA,IAAI,CAACF,4BAA4BQ,SAAS,CAACN,KAAK,IAAIG,qBAAqB;YACvEL,4BAA4BU,UAAU,CAACR,KAAK,GAAG,MAAMG,oBAAoBJ,KAAK,CAACC,MAAMC;YACrFC,OAAOK,KAAK,CAAC,CAAC,uBAAuB,EAAEP,KAAK,CAAC,EAAEF,4BAA4BU,UAAU,CAACR,KAAK,EAAE;YAE7F,0DAA0D;YAC1D,IAAII,sBAAsBN,4BAA4BU,UAAU,CAACR,KAAK,EAAE;gBACtEE,OAAOK,KAAK,CAAC,CAAC,4CAA4C,EAAEP,MAAM;gBAClE,MAAMI,mBAAmBK,GAAG,CAACT,MAAMC;YACrC;YAEA,OAAOH,4BAA4BU,UAAU,CAACR,KAAK;QACrD;QAEA,OAAOF,4BAA4BQ,SAAS,CAACN,KAAK;IACpD;IAEA,MAAMS,IAAIT,IAAY,EAAEC,MAAc,EAAE;QACtC,MAAM,EAAEC,MAAM,EAAEC,mBAAmB,EAAEC,kBAAkB,EAAEM,gBAAgB,EAAE,GAAG,IAAI,CAACL,OAAO;QAC1F,MAAMM,cAA+B,EAAE;QAEvC,2FAA2F;QAC3F,MAAMC,wBAAwB,CAAC,IAAI,CAACC,UAAU,CAACb,SAAS,CAAC,CAACI;QAE1D,IAAIQ,uBAAuB;YACzBV,OAAOK,KAAK,CAAC,CAAC,iBAAiB,EAAEP,MAAM;YACvCW,YAAYG,IAAI,CAACV,mBAAmBK,GAAG,CAACT,MAAMC;QAChD;QAEA,0JAA0J;QAC1J,MAAMc,yBAAyB,CAAC,IAAI,CAACC,WAAW,CAAChB,SAAS,CAAC,CAACG,uBAAuBO;QAEnF,IAAIK,wBAAwB;YAC1Bb,OAAOK,KAAK,CAAC,CAAC,qBAAqB,EAAEP,MAAM;YAC3C,MAAMiB,YAAYd,oBAAoBM,GAAG,CAACT,MAAMC;YAChDU,YAAYG,IAAI,CAACG;QACnB;QAEA,MAAMC,QAAQC,GAAG,CAACR;IACpB;IAEQK,YAAYhB,IAAI,EAAE;QACxB,OAAOA,QAAQF,4BAA4BU,UAAU,IAAIV,4BAA4BU,UAAU,CAACR,KAAK;IACvG;IAEQa,WAAWb,IAAI,EAAE;QACvB,OAAOA,QAAQF,4BAA4BQ,SAAS,IAAIR,4BAA4BQ,SAAS,CAACN,KAAK;IACrG;IAEA,MAAMoB,QAAuB;QAC3B,MAAM,EAAEhB,kBAAkB,EAAE,GAAG,IAAI,CAACC,OAAO;QAC3C,IAAID,oBAAoB;YACtB,OAAOA,mBAAmBgB,KAAK;QACjC;IACF;IAEA,MAAMC,MAAMC,SAAiB,EAAiB;QAC5C,MAAM,EAAElB,kBAAkB,EAAE,GAAG,IAAI,CAACC,OAAO;QAC3C,IAAID,oBAAoB;YACtB,OAAOA,mBAAmBiB,KAAK,CAACC;QAClC;IACF;IAtEA,YAAY,AAAQjB,OAA2C,CAAE;;aAA7CA,UAAAA;IAA8C;AAuEpE;AA1EE,iBADWP,6BACIQ,aAAyC,CAAC;AACzD,iBAFWR,6BAEIU,cAA0C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lage-run/cache",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.15",
|
|
4
4
|
"description": "Cache for Lage",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -18,12 +18,12 @@
|
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@azure/identity": "^4.0.1",
|
|
21
|
-
"@lage-run/config": "^0.4.
|
|
21
|
+
"@lage-run/config": "^0.4.17",
|
|
22
22
|
"@lage-run/logger": "^1.3.1",
|
|
23
|
-
"@lage-run/target-graph": "^0.11.
|
|
24
|
-
"backfill-cache": "5.
|
|
25
|
-
"backfill-config": "6.
|
|
26
|
-
"backfill-logger": "5.
|
|
23
|
+
"@lage-run/target-graph": "^0.11.3",
|
|
24
|
+
"backfill-cache": "5.11.1",
|
|
25
|
+
"backfill-config": "6.7.1",
|
|
26
|
+
"backfill-logger": "5.4.0",
|
|
27
27
|
"glob-hasher": "^1.4.2"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|