@rushstack/rush-http-build-cache-plugin 5.109.1 → 5.110.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/.rush/temp/operation/_phase_build/all.log +6 -6
  2. package/.rush/temp/operation/_phase_build/state.json +1 -1
  3. package/.rush/temp/operation/_phase_test/all.log +15 -15
  4. package/.rush/temp/operation/_phase_test/state.json +1 -1
  5. package/.rush/temp/{rushstack+rush-http-build-cache-plugin-_phase_build-7d401680bf3bf0eed7a5fd5643898d15e32a9b69.tar.log → rushstack+rush-http-build-cache-plugin-_phase_build-6123140279635b4e69641307e04c82615d4a5778.tar.log} +2 -2
  6. package/.rush/temp/rushstack+rush-http-build-cache-plugin-_phase_build-6123140279635b4e69641307e04c82615d4a5778.untar.log +10 -0
  7. package/.rush/temp/{rushstack+rush-http-build-cache-plugin-_phase_test-feaedf2fd3e8683d195ad4842d74adbfdde78aee.tar.log → rushstack+rush-http-build-cache-plugin-_phase_test-78333a9310f75472822f70554dee637804eb3b97.tar.log} +2 -2
  8. package/.rush/temp/rushstack+rush-http-build-cache-plugin-_phase_test-78333a9310f75472822f70554dee637804eb3b97.untar.log +10 -0
  9. package/README.md +116 -116
  10. package/config/jest.config.json +14 -14
  11. package/config/rig.json +18 -18
  12. package/coverage/HttpBuildCacheProvider.ts.html +12 -12
  13. package/coverage/RushHttpBuildCachePlugin.ts.html +2 -2
  14. package/coverage/cobertura-coverage.xml +42 -42
  15. package/coverage/index.html +10 -10
  16. package/coverage/index.ts.html +1 -1
  17. package/coverage/junit.xml +4 -4
  18. package/lib/HttpBuildCacheProvider.d.ts +1 -2
  19. package/lib/HttpBuildCacheProvider.d.ts.map +1 -1
  20. package/lib/HttpBuildCacheProvider.js +4 -3
  21. package/lib/HttpBuildCacheProvider.js.map +1 -1
  22. package/lib/RushHttpBuildCachePlugin.js +1 -1
  23. package/lib/RushHttpBuildCachePlugin.js.map +1 -1
  24. package/lib/index.js.map +1 -1
  25. package/lib/schemas/plugin-config.schema.json +52 -52
  26. package/lib/test/HttpBuildCacheProvider.test.js +1 -1
  27. package/lib/test/HttpBuildCacheProvider.test.js.map +1 -1
  28. package/package.json +4 -4
  29. package/rush-logs/rush-http-build-cache-plugin._phase_build.cache.log +8 -7
  30. package/rush-logs/rush-http-build-cache-plugin._phase_build.log +6 -6
  31. package/rush-logs/rush-http-build-cache-plugin._phase_test.cache.log +17 -16
  32. package/rush-logs/rush-http-build-cache-plugin._phase_test.log +15 -15
  33. package/rush-plugin-manifest.json +11 -11
  34. package/src/HttpBuildCacheProvider.ts +424 -424
  35. package/src/RushHttpBuildCachePlugin.ts +81 -81
  36. package/src/index.ts +4 -4
  37. package/src/schemas/plugin-config.schema.json +52 -52
  38. package/src/test/HttpBuildCacheProvider.test.ts +115 -115
  39. package/temp/build/typescript/ts_l9Fw4VUO.json +1 -1
  40. package/tsconfig.json +3 -3
  41. package/.rush/temp/rushstack+rush-http-build-cache-plugin-_phase_build-7d401680bf3bf0eed7a5fd5643898d15e32a9b69.untar.log +0 -10
  42. package/.rush/temp/rushstack+rush-http-build-cache-plugin-_phase_test-feaedf2fd3e8683d195ad4842d74adbfdde78aee.untar.log +0 -10
@@ -1 +1 @@
1
- {"version":3,"file":"HttpBuildCacheProvider.test.js","sourceRoot":"","sources":["../../src/test/HttpBuildCacheProvider.test.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\njest.mock('node-fetch', function () {\n return Object.assign(jest.fn(), jest.requireActual('node-fetch'));\n});\n\nimport fetch, { Response } from 'node-fetch';\nimport { RushSession, EnvironmentConfiguration } from '@rushstack/rush-sdk';\nimport { StringBufferTerminalProvider, Terminal } from '@rushstack/node-core-library';\n\nimport { HttpBuildCacheProvider } from '../HttpBuildCacheProvider';\n\nconst EXAMPLE_OPTIONS = {\n url: 'https://buildcache.example.acme.com',\n tokenHandler: {\n exec: 'node',\n args: ['tokenHandler.js']\n },\n uploadMethod: 'POST',\n isCacheWriteAllowed: false,\n pluginName: 'example-plugin',\n rushProjectRoot: '/repo',\n minHttpRetryDelayMs: 1\n};\n\ndescribe('HttpBuildCacheProvider', () => {\n let terminalBuffer: StringBufferTerminalProvider;\n let terminal!: Terminal;\n\n beforeEach(() => {\n terminalBuffer = new StringBufferTerminalProvider();\n terminal = new Terminal(terminalBuffer);\n });\n\n describe('tryGetCacheEntryBufferByIdAsync', () => {\n it('prints warning if read credentials are not available', async () => {\n jest.spyOn(EnvironmentConfiguration, 'buildCacheCredential', 'get').mockReturnValue(undefined);\n\n const session: RushSession = {} as RushSession;\n const provider = new HttpBuildCacheProvider(EXAMPLE_OPTIONS, session);\n\n mocked(fetch).mockResolvedValue(\n new Response('Unauthorized', {\n status: 401,\n statusText: 'Unauthorized'\n })\n );\n\n const result = await provider.tryGetCacheEntryBufferByIdAsync(terminal, 'some-key');\n expect(result).toBe(undefined);\n expect(fetch).toHaveBeenCalledTimes(1);\n expect(fetch).toHaveBeenNthCalledWith(1, 'https://buildcache.example.acme.com/some-key', {\n body: undefined,\n headers: {},\n method: 'GET',\n redirect: 'follow'\n });\n expect(terminalBuffer.getWarningOutput()).toMatchInlineSnapshot(\n `\"Error getting cache entry: Error: Credentials for https://buildcache.example.acme.com/ have not been provided.[n]In CI, verify that RUSH_BUILD_CACHE_CREDENTIAL contains a valid Authorization header value.[n][n]For local developers, run:[n][n] rush update-cloud-credentials --interactive[n][n]\"`\n );\n });\n\n it('attempts up to 3 times to download a cache entry', async () => {\n jest.spyOn(EnvironmentConfiguration, 'buildCacheCredential', 'get').mockReturnValue(undefined);\n\n const session: RushSession = {} as RushSession;\n const provider = new HttpBuildCacheProvider(EXAMPLE_OPTIONS, session);\n\n mocked(fetch).mockResolvedValueOnce(\n new Response('InternalServiceError', {\n status: 500,\n statusText: 'InternalServiceError'\n })\n );\n mocked(fetch).mockResolvedValueOnce(\n new Response('ServiceUnavailable', {\n status: 503,\n statusText: 'ServiceUnavailable'\n })\n );\n mocked(fetch).mockResolvedValueOnce(\n new Response('BadGateway', {\n status: 504,\n statusText: 'BadGateway'\n })\n );\n\n const result = await provider.tryGetCacheEntryBufferByIdAsync(terminal, 'some-key');\n expect(result).toBe(undefined);\n expect(fetch).toHaveBeenCalledTimes(3);\n expect(fetch).toHaveBeenNthCalledWith(1, 'https://buildcache.example.acme.com/some-key', {\n body: undefined,\n headers: {},\n method: 'GET',\n redirect: 'follow'\n });\n expect(fetch).toHaveBeenNthCalledWith(2, 'https://buildcache.example.acme.com/some-key', {\n body: undefined,\n headers: {},\n method: 'GET',\n redirect: 'follow'\n });\n expect(fetch).toHaveBeenNthCalledWith(3, 'https://buildcache.example.acme.com/some-key', {\n body: undefined,\n headers: {},\n method: 'GET',\n redirect: 'follow'\n });\n expect(terminalBuffer.getWarningOutput()).toMatchInlineSnapshot(\n `\"Could not get cache entry: HTTP 504: BadGateway[n]\"`\n );\n });\n });\n});\n"]}
1
+ {"version":3,"file":"HttpBuildCacheProvider.test.js","sourceRoot":"","sources":["../../src/test/HttpBuildCacheProvider.test.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\r\n// See LICENSE in the project root for license information.\r\n\r\njest.mock('node-fetch', function () {\r\n return Object.assign(jest.fn(), jest.requireActual('node-fetch'));\r\n});\r\n\r\nimport fetch, { Response } from 'node-fetch';\r\nimport { RushSession, EnvironmentConfiguration } from '@rushstack/rush-sdk';\r\nimport { StringBufferTerminalProvider, Terminal } from '@rushstack/node-core-library';\r\n\r\nimport { HttpBuildCacheProvider, type IHttpBuildCacheProviderOptions } from '../HttpBuildCacheProvider';\r\n\r\nconst EXAMPLE_OPTIONS: IHttpBuildCacheProviderOptions = {\r\n url: 'https://buildcache.example.acme.com',\r\n tokenHandler: {\r\n exec: 'node',\r\n args: ['tokenHandler.js']\r\n },\r\n uploadMethod: 'POST',\r\n isCacheWriteAllowed: false,\r\n pluginName: 'example-plugin',\r\n rushJsonFolder: '/repo',\r\n minHttpRetryDelayMs: 1\r\n};\r\n\r\ndescribe('HttpBuildCacheProvider', () => {\r\n let terminalBuffer: StringBufferTerminalProvider;\r\n let terminal!: Terminal;\r\n\r\n beforeEach(() => {\r\n terminalBuffer = new StringBufferTerminalProvider();\r\n terminal = new Terminal(terminalBuffer);\r\n });\r\n\r\n describe('tryGetCacheEntryBufferByIdAsync', () => {\r\n it('prints warning if read credentials are not available', async () => {\r\n jest.spyOn(EnvironmentConfiguration, 'buildCacheCredential', 'get').mockReturnValue(undefined);\r\n\r\n const session: RushSession = {} as RushSession;\r\n const provider = new HttpBuildCacheProvider(EXAMPLE_OPTIONS, session);\r\n\r\n mocked(fetch).mockResolvedValue(\r\n new Response('Unauthorized', {\r\n status: 401,\r\n statusText: 'Unauthorized'\r\n })\r\n );\r\n\r\n const result = await provider.tryGetCacheEntryBufferByIdAsync(terminal, 'some-key');\r\n expect(result).toBe(undefined);\r\n expect(fetch).toHaveBeenCalledTimes(1);\r\n expect(fetch).toHaveBeenNthCalledWith(1, 'https://buildcache.example.acme.com/some-key', {\r\n body: undefined,\r\n headers: {},\r\n method: 'GET',\r\n redirect: 'follow'\r\n });\r\n expect(terminalBuffer.getWarningOutput()).toMatchInlineSnapshot(\r\n `\"Error getting cache entry: Error: Credentials for https://buildcache.example.acme.com/ have not been provided.[n]In CI, verify that RUSH_BUILD_CACHE_CREDENTIAL contains a valid Authorization header value.[n][n]For local developers, run:[n][n] rush update-cloud-credentials --interactive[n][n]\"`\r\n );\r\n });\r\n\r\n it('attempts up to 3 times to download a cache entry', async () => {\r\n jest.spyOn(EnvironmentConfiguration, 'buildCacheCredential', 'get').mockReturnValue(undefined);\r\n\r\n const session: RushSession = {} as RushSession;\r\n const provider = new HttpBuildCacheProvider(EXAMPLE_OPTIONS, session);\r\n\r\n mocked(fetch).mockResolvedValueOnce(\r\n new Response('InternalServiceError', {\r\n status: 500,\r\n statusText: 'InternalServiceError'\r\n })\r\n );\r\n mocked(fetch).mockResolvedValueOnce(\r\n new Response('ServiceUnavailable', {\r\n status: 503,\r\n statusText: 'ServiceUnavailable'\r\n })\r\n );\r\n mocked(fetch).mockResolvedValueOnce(\r\n new Response('BadGateway', {\r\n status: 504,\r\n statusText: 'BadGateway'\r\n })\r\n );\r\n\r\n const result = await provider.tryGetCacheEntryBufferByIdAsync(terminal, 'some-key');\r\n expect(result).toBe(undefined);\r\n expect(fetch).toHaveBeenCalledTimes(3);\r\n expect(fetch).toHaveBeenNthCalledWith(1, 'https://buildcache.example.acme.com/some-key', {\r\n body: undefined,\r\n headers: {},\r\n method: 'GET',\r\n redirect: 'follow'\r\n });\r\n expect(fetch).toHaveBeenNthCalledWith(2, 'https://buildcache.example.acme.com/some-key', {\r\n body: undefined,\r\n headers: {},\r\n method: 'GET',\r\n redirect: 'follow'\r\n });\r\n expect(fetch).toHaveBeenNthCalledWith(3, 'https://buildcache.example.acme.com/some-key', {\r\n body: undefined,\r\n headers: {},\r\n method: 'GET',\r\n redirect: 'follow'\r\n });\r\n expect(terminalBuffer.getWarningOutput()).toMatchInlineSnapshot(\r\n `\"Could not get cache entry: HTTP 504: BadGateway[n]\"`\r\n );\r\n });\r\n });\r\n});\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rushstack/rush-http-build-cache-plugin",
3
- "version": "5.109.1",
3
+ "version": "5.110.0",
4
4
  "description": "Rush plugin for generic HTTP cloud build cache",
5
5
  "repository": {
6
6
  "type": "git",
@@ -15,12 +15,12 @@
15
15
  "https-proxy-agent": "~5.0.0",
16
16
  "node-fetch": "2.6.7",
17
17
  "@rushstack/node-core-library": "3.61.0",
18
- "@rushstack/rush-sdk": "5.109.1"
18
+ "@rushstack/rush-sdk": "5.110.0"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@types/node-fetch": "2.6.2",
22
- "@microsoft/rush-lib": "5.109.1",
23
- "@rushstack/heft": "0.62.3",
22
+ "@microsoft/rush-lib": "5.110.0",
23
+ "@rushstack/heft": "0.63.0",
24
24
  "local-node-rig": "1.0.0"
25
25
  },
26
26
  "scripts": {
@@ -1,10 +1,11 @@
1
1
  Build cache hit.
2
+ Cache key: rushstack+rush-http-build-cache-plugin-_phase_build-6123140279635b4e69641307e04c82615d4a5778
2
3
  Clearing cached folders: dist, lib, lib-commonjs, temp, .heft
3
4
  Successfully restored output from the build cache.
4
- Restoring cached log file at /home/vsts/work/1/s/rush-plugins/rush-http-build-cache-plugin/.rush/temp/operation/_phase_build/all.log
5
- Invoking: heft run --only build -- --clean --production
6
- ---- build started ----
7
- [build:typescript] Using TypeScript version 5.0.4
8
- [build:typescript] Copied 1 folder or file and linked 0 files
9
- ---- build finished (7.587s) ----
10
- -------------------- Finished (7.593s) --------------------
5
+ Restoring cached log file at D:\a\_work\1\s\rush-plugins\rush-http-build-cache-plugin/.rush/temp/operation/_phase_build/all.log
6
+ Invoking: heft run --only build -- --clean --production
7
+ ---- build started ----
8
+ [build:typescript] Using TypeScript version 5.0.4
9
+ [build:typescript] Copied 1 folder or file and linked 0 files
10
+ ---- build finished (4.156s) ----
11
+ -------------------- Finished (4.163s) --------------------
@@ -1,6 +1,6 @@
1
- Invoking: heft run --only build -- --clean --production
2
- ---- build started ----
3
- [build:typescript] Using TypeScript version 5.0.4
4
- [build:typescript] Copied 1 folder or file and linked 0 files
5
- ---- build finished (7.587s) ----
6
- -------------------- Finished (7.593s) --------------------
1
+ Invoking: heft run --only build -- --clean --production
2
+ ---- build started ----
3
+ [build:typescript] Using TypeScript version 5.0.4
4
+ [build:typescript] Copied 1 folder or file and linked 0 files
5
+ ---- build finished (4.156s) ----
6
+ -------------------- Finished (4.163s) --------------------
@@ -1,19 +1,20 @@
1
1
  Build cache hit.
2
+ Cache key: rushstack+rush-http-build-cache-plugin-_phase_test-78333a9310f75472822f70554dee637804eb3b97
2
3
  Clearing cached folders: coverage
3
4
  Successfully restored output from the build cache.
4
- Restoring cached log file at /home/vsts/work/1/s/rush-plugins/rush-http-build-cache-plugin/.rush/temp/operation/_phase_test/all.log
5
- Invoking: heft run --only test -- --clean --production
6
- The provided list of phases does not contain all phase dependencies. You may need to run the excluded phases manually.
7
- ---- test started ----
8
- [test:jest] Using Jest version 29.5.0
9
- [test:jest]
10
- [test:jest] Run start. 1 test suite
11
- [test:jest] START lib/test/HttpBuildCacheProvider.test.js
12
- [test:jest] PASS lib/test/HttpBuildCacheProvider.test.js (duration: 0.952s, 2 passed, 0 failed)
13
- [test:jest]
14
- [test:jest] Tests finished:
15
- [test:jest] Successes: 2
16
- [test:jest] Failures: 0
17
- [test:jest] Total: 2
18
- ---- test finished (1.852s) ----
19
- -------------------- Finished (1.859s) --------------------
5
+ Restoring cached log file at D:\a\_work\1\s\rush-plugins\rush-http-build-cache-plugin/.rush/temp/operation/_phase_test/all.log
6
+ Invoking: heft run --only test -- --clean --production
7
+ The provided list of phases does not contain all phase dependencies. You may need to run the excluded phases manually.
8
+ ---- test started ----
9
+ [test:jest] Using Jest version 29.5.0
10
+ [test:jest]
11
+ [test:jest] Run start. 1 test suite
12
+ [test:jest] START lib\test\HttpBuildCacheProvider.test.js
13
+ [test:jest] PASS lib\test\HttpBuildCacheProvider.test.js (duration: 0.976s, 2 passed, 0 failed)
14
+ [test:jest]
15
+ [test:jest] Tests finished:
16
+ [test:jest] Successes: 2
17
+ [test:jest] Failures: 0
18
+ [test:jest] Total: 2
19
+ ---- test finished (1.860s) ----
20
+ -------------------- Finished (1.866s) --------------------
@@ -1,15 +1,15 @@
1
- Invoking: heft run --only test -- --clean --production
2
- The provided list of phases does not contain all phase dependencies. You may need to run the excluded phases manually.
3
- ---- test started ----
4
- [test:jest] Using Jest version 29.5.0
5
- [test:jest]
6
- [test:jest] Run start. 1 test suite
7
- [test:jest] START lib/test/HttpBuildCacheProvider.test.js
8
- [test:jest] PASS lib/test/HttpBuildCacheProvider.test.js (duration: 0.952s, 2 passed, 0 failed)
9
- [test:jest]
10
- [test:jest] Tests finished:
11
- [test:jest] Successes: 2
12
- [test:jest] Failures: 0
13
- [test:jest] Total: 2
14
- ---- test finished (1.852s) ----
15
- -------------------- Finished (1.859s) --------------------
1
+ Invoking: heft run --only test -- --clean --production
2
+ The provided list of phases does not contain all phase dependencies. You may need to run the excluded phases manually.
3
+ ---- test started ----
4
+ [test:jest] Using Jest version 29.5.0
5
+ [test:jest]
6
+ [test:jest] Run start. 1 test suite
7
+ [test:jest] START lib\test\HttpBuildCacheProvider.test.js
8
+ [test:jest] PASS lib\test\HttpBuildCacheProvider.test.js (duration: 0.976s, 2 passed, 0 failed)
9
+ [test:jest]
10
+ [test:jest] Tests finished:
11
+ [test:jest] Successes: 2
12
+ [test:jest] Failures: 0
13
+ [test:jest] Total: 2
14
+ ---- test finished (1.860s) ----
15
+ -------------------- Finished (1.866s) --------------------
@@ -1,11 +1,11 @@
1
- {
2
- "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/rush-plugin-manifest.schema.json",
3
- "plugins": [
4
- {
5
- "pluginName": "rush-http-build-cache-plugin",
6
- "description": "Rush plugin for generic HTTP build cache",
7
- "entryPoint": "lib/index.js",
8
- "optionsSchema": "lib/schemas/plugin-config.schema.json"
9
- }
10
- ]
11
- }
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/rush-plugin-manifest.schema.json",
3
+ "plugins": [
4
+ {
5
+ "pluginName": "rush-http-build-cache-plugin",
6
+ "description": "Rush plugin for generic HTTP build cache",
7
+ "entryPoint": "lib/index.js",
8
+ "optionsSchema": "lib/schemas/plugin-config.schema.json"
9
+ }
10
+ ]
11
+ }