From 7db72531fd9f9b7f1c2ef9c6b69113a30c5deb27 Mon Sep 17 00:00:00 2001 From: Spencer Date: Thu, 21 May 2020 10:01:09 -0700 Subject: [PATCH] [kbn/optimizer] ensure build script can prime cache (#67020) --- .../kbn-optimizer/src/common/worker_config.ts | 2 ++ .../src/optimizer/cache_keys.test.ts | 2 -- .../kbn-optimizer/src/optimizer/cache_keys.ts | 16 +++++++++++++--- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/kbn-optimizer/src/common/worker_config.ts b/packages/kbn-optimizer/src/common/worker_config.ts index c999260872d0..3fb1880a7371 100644 --- a/packages/kbn-optimizer/src/common/worker_config.ts +++ b/packages/kbn-optimizer/src/common/worker_config.ts @@ -31,6 +31,8 @@ export interface WorkerConfig { readonly optimizerCacheKey: unknown; } +export type CacheableWorkerConfig = Omit; + export function parseWorkerConfig(json: string): WorkerConfig { try { if (typeof json !== 'string') { diff --git a/packages/kbn-optimizer/src/optimizer/cache_keys.test.ts b/packages/kbn-optimizer/src/optimizer/cache_keys.test.ts index 7750f9145667..7351a3787f76 100644 --- a/packages/kbn-optimizer/src/optimizer/cache_keys.test.ts +++ b/packages/kbn-optimizer/src/optimizer/cache_keys.test.ts @@ -103,9 +103,7 @@ describe('getOptimizerCacheKey()', () => { "cache": true, "dist": false, "optimizerCacheKey": "♻", - "profileWebpack": false, "repoRoot": , - "watch": false, }, } `); diff --git a/packages/kbn-optimizer/src/optimizer/cache_keys.ts b/packages/kbn-optimizer/src/optimizer/cache_keys.ts index af6a8a648d29..11288afa2896 100644 --- a/packages/kbn-optimizer/src/optimizer/cache_keys.ts +++ b/packages/kbn-optimizer/src/optimizer/cache_keys.ts @@ -28,7 +28,7 @@ import stripAnsi from 'strip-ansi'; import jestDiff from 'jest-diff'; import jsonStable from 'json-stable-stringify'; -import { ascending, WorkerConfig } from '../common'; +import { ascending, CacheableWorkerConfig } from '../common'; import { getMtimes } from './get_mtimes'; import { getChanges } from './get_changes'; @@ -37,6 +37,16 @@ import { OptimizerConfig } from './optimizer_config'; const OPTIMIZER_DIR = Path.dirname(require.resolve('../../package.json')); const RELATIVE_DIR = Path.relative(REPO_ROOT, OPTIMIZER_DIR); +function omit(obj: T, keys: K[]): Omit { + const result: any = {}; + for (const [key, value] of Object.entries(obj) as any) { + if (!keys.includes(key)) { + result[key] = value; + } + } + return result as Omit; +} + export function diffCacheKey(expected?: unknown, actual?: unknown) { if (jsonStable(expected) === jsonStable(actual)) { return; @@ -119,7 +129,7 @@ export function reformatJestDiff(diff: string | null) { export interface OptimizerCacheKey { readonly lastCommit: string | undefined; readonly bootstrap: string | undefined; - readonly workerConfig: WorkerConfig; + readonly workerConfig: CacheableWorkerConfig; readonly deletedPaths: string[]; readonly modifiedTimes: Record; } @@ -164,11 +174,11 @@ export async function getOptimizerCacheKey(config: OptimizerConfig) { } const cacheKeys: OptimizerCacheKey = { - workerConfig: config.getWorkerConfig('♻'), lastCommit, bootstrap, deletedPaths, modifiedTimes: {} as Record, + workerConfig: omit(config.getWorkerConfig('♻'), ['watch', 'profileWebpack']), }; const mtimes = await getMtimes(modifiedPaths);