@lage-run/cache 0.1.21 → 0.1.23
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/salt.js +37 -18
- package/lib/salt.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.json
CHANGED
|
@@ -2,7 +2,37 @@
|
|
|
2
2
|
"name": "@lage-run/cache",
|
|
3
3
|
"entries": [
|
|
4
4
|
{
|
|
5
|
-
"date": "
|
|
5
|
+
"date": "Tue, 25 Oct 2022 00:06:34 GMT",
|
|
6
|
+
"tag": "@lage-run/cache_v0.1.23",
|
|
7
|
+
"version": "0.1.23",
|
|
8
|
+
"comments": {
|
|
9
|
+
"patch": [
|
|
10
|
+
{
|
|
11
|
+
"author": "kchau@microsoft.com",
|
|
12
|
+
"package": "@lage-run/cache",
|
|
13
|
+
"commit": "1f0d69225e193de2c9495d9fe7a6e331ea8a3284",
|
|
14
|
+
"comment": "recover the cache check to not bombard with file reads"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"date": "Mon, 24 Oct 2022 21:40:05 GMT",
|
|
21
|
+
"tag": "@lage-run/cache_v0.1.22",
|
|
22
|
+
"version": "0.1.22",
|
|
23
|
+
"comments": {
|
|
24
|
+
"patch": [
|
|
25
|
+
{
|
|
26
|
+
"author": "kchau@microsoft.com",
|
|
27
|
+
"package": "@lage-run/cache",
|
|
28
|
+
"commit": "c91040aa0f9d6e804c300e18a1b41295c242fa4e",
|
|
29
|
+
"comment": "Fixed salt to not have race conditions with env hash calculations"
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"date": "Sun, 23 Oct 2022 04:31:57 GMT",
|
|
6
36
|
"tag": "@lage-run/cache_v0.1.21",
|
|
7
37
|
"version": "0.1.21",
|
|
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 Tue, 25 Oct 2022 00:06:34 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 0.1.23
|
|
8
|
+
|
|
9
|
+
Tue, 25 Oct 2022 00:06:34 GMT
|
|
10
|
+
|
|
11
|
+
### Patches
|
|
12
|
+
|
|
13
|
+
- recover the cache check to not bombard with file reads (kchau@microsoft.com)
|
|
14
|
+
|
|
15
|
+
## 0.1.22
|
|
16
|
+
|
|
17
|
+
Mon, 24 Oct 2022 21:40:05 GMT
|
|
18
|
+
|
|
19
|
+
### Patches
|
|
20
|
+
|
|
21
|
+
- Fixed salt to not have race conditions with env hash calculations (kchau@microsoft.com)
|
|
22
|
+
|
|
7
23
|
## 0.1.21
|
|
8
24
|
|
|
9
|
-
Sun, 23 Oct 2022 04:31:
|
|
25
|
+
Sun, 23 Oct 2022 04:31:57 GMT
|
|
10
26
|
|
|
11
27
|
### Patches
|
|
12
28
|
|
package/lib/salt.js
CHANGED
|
@@ -28,33 +28,52 @@ const path = __importStar(require("path"));
|
|
|
28
28
|
const crypto = __importStar(require("crypto"));
|
|
29
29
|
const fg = __importStar(require("fast-glob"));
|
|
30
30
|
const fs = __importStar(require("fs/promises"));
|
|
31
|
-
let
|
|
31
|
+
let envHashes = {};
|
|
32
|
+
// A promise to guarantee the getEnvHashes is done one at a time
|
|
33
|
+
let oneAtATime = Promise.resolve();
|
|
32
34
|
function _testResetEnvHash() {
|
|
33
|
-
|
|
35
|
+
envHashes = {};
|
|
34
36
|
}
|
|
35
37
|
exports._testResetEnvHash = _testResetEnvHash;
|
|
36
38
|
async function salt(environmentGlobFiles, command, repoRoot, customKey = "") {
|
|
37
|
-
|
|
39
|
+
const envHash = await getEnvHash(environmentGlobFiles, repoRoot);
|
|
40
|
+
return hashStrings([...envHash, command, customKey]);
|
|
38
41
|
}
|
|
39
42
|
exports.salt = salt;
|
|
43
|
+
function envHashKey(environmentGlobFiles) {
|
|
44
|
+
return environmentGlobFiles.sort().join("|");
|
|
45
|
+
}
|
|
40
46
|
async function getEnvHash(environmentGlobFiles, repoRoot) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
files.sort((a, b) => a.localeCompare(b));
|
|
49
|
-
for (const file of files) {
|
|
50
|
-
const hasher = crypto.createHash("sha1");
|
|
51
|
-
hasher.update(file);
|
|
52
|
-
const fileBuffer = await fs.readFile(path.join(repoRoot, file), "utf-8");
|
|
53
|
-
const data = fileBuffer.replace(newline, LF);
|
|
54
|
-
hasher.update(data);
|
|
55
|
-
envHash.push(hasher.digest("hex"));
|
|
47
|
+
const key = envHashKey(environmentGlobFiles);
|
|
48
|
+
// We want to make sure that we only call getEnvHashOneAtTime one at a time
|
|
49
|
+
// to avoid having many concurrent calls to read files again and again
|
|
50
|
+
oneAtATime = oneAtATime.then(() => {
|
|
51
|
+
// we may already have it by time we get to here
|
|
52
|
+
if (envHashes[key]) {
|
|
53
|
+
return envHashes[key];
|
|
56
54
|
}
|
|
55
|
+
return getEnvHashOneAtTime(environmentGlobFiles, repoRoot);
|
|
56
|
+
});
|
|
57
|
+
return oneAtATime;
|
|
58
|
+
}
|
|
59
|
+
async function getEnvHashOneAtTime(environmentGlobFiles, repoRoot) {
|
|
60
|
+
const envHash = [];
|
|
61
|
+
const newline = /\r\n|\r|\n/g;
|
|
62
|
+
const LF = "\n";
|
|
63
|
+
const files = fg.sync(environmentGlobFiles, {
|
|
64
|
+
cwd: repoRoot,
|
|
65
|
+
});
|
|
66
|
+
files.sort((a, b) => a.localeCompare(b));
|
|
67
|
+
for (const file of files) {
|
|
68
|
+
const hasher = crypto.createHash("sha1");
|
|
69
|
+
hasher.update(file);
|
|
70
|
+
const fileBuffer = await fs.readFile(path.join(repoRoot, file), "utf-8");
|
|
71
|
+
const data = fileBuffer.replace(newline, LF);
|
|
72
|
+
hasher.update(data);
|
|
73
|
+
envHash.push(hasher.digest("hex"));
|
|
57
74
|
}
|
|
75
|
+
const key = envHashKey(environmentGlobFiles);
|
|
76
|
+
envHashes[key] = envHash;
|
|
58
77
|
return envHash;
|
|
59
78
|
}
|
|
60
79
|
function hashStrings(strings) {
|
package/lib/salt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"salt.js","sourceRoot":"","sources":["../src/salt.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAC7B,+CAAiC;AACjC,8CAAgC;AAChC,gDAAkC;
|
|
1
|
+
{"version":3,"file":"salt.js","sourceRoot":"","sources":["../src/salt.ts"],"names":[],"mappings":"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"}
|