Skip to content

Commit f30db9c

Browse files
chore(config): add rootDir to the validated config type (#3577)
Just adding `.rootDir` as a required field on the `ValidatedConfig` type, cutting down our null check violations a little bit.
1 parent fc8efb3 commit f30db9c

7 files changed

Lines changed: 14 additions & 2 deletions

File tree

src/cli/run.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ export const runTask = async (
133133
flags: createConfigFlags(config.flags ?? { task }),
134134
logger,
135135
outputTargets: config.outputTargets ?? [],
136+
rootDir: config.rootDir ?? '/',
136137
sys: sys ?? config.sys ?? coreCompiler.createSystem({ logger }),
137138
testing: config.testing ?? {},
138139
};

src/compiler/config/test/validate-service-worker.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ describe('validateServiceWorker', () => {
1212
beforeEach(() => {
1313
config = {
1414
fsNamespace: 'app',
15+
rootDir: '/',
1516
sys: mockCompilerSystem(),
1617
devMode: false,
1718
flags: createConfigFlags(),

src/compiler/config/validate-config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ export const validateConfig = (
5353
flags: JSON.parse(JSON.stringify(config.flags || {})),
5454
logger,
5555
outputTargets: config.outputTargets ?? [],
56+
rootDir: typeof config.rootDir === 'string' ? config.rootDir : '/',
5657
sys: config.sys ?? bootstrapConfig.sys ?? createSystem({ logger }),
5758
testing: config.testing ?? {},
5859
};

src/compiler/config/validate-paths.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
import type * as d from '../../declarations';
22
import { isAbsolute, join } from 'path';
33

4-
export const validatePaths = (config: d.UnvalidatedConfig) => {
4+
/**
5+
* Do logical-level validation (as opposed to type-level validation)
6+
* for various properties in the user-supplied config which represent
7+
* filesystem paths.
8+
*
9+
* @param config a validated user-supplied configuration
10+
*/
11+
export const validatePaths = (config: d.ValidatedConfig) => {
512
if (typeof config.rootDir !== 'string') {
613
config.rootDir = '/';
714
}

src/compiler/sys/config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export const getConfig = (userConfig: d.Config): d.ValidatedConfig => {
1111
flags: createConfigFlags(userConfig.flags ?? {}),
1212
logger,
1313
outputTargets: userConfig.outputTargets ?? [],
14+
rootDir: userConfig.rootDir ?? '/',
1415
sys: userConfig.sys ?? createSystem({ logger }),
1516
testing: userConfig ?? {},
1617
};

src/declarations/stencil-public-compiler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ type RequireFields<T, K extends keyof T> = T & { [P in K]-?: T[P] };
410410
/**
411411
* Fields in {@link Config} to make required for {@link ValidatedConfig}
412412
*/
413-
type StrictConfigFields = 'flags' | 'logger' | 'outputTargets' | 'sys' | 'testing';
413+
type StrictConfigFields = 'flags' | 'logger' | 'outputTargets' | 'rootDir' | 'sys' | 'testing';
414414

415415
/**
416416
* A version of {@link Config} that makes certain fields required. This type represents a valid configuration entity.

src/testing/mocks.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export function mockValidatedConfig(overrides: Partial<ValidatedConfig> = {}): V
3535
flags: createConfigFlags(),
3636
logger: mockLogger(),
3737
outputTargets: baseConfig.outputTargets ?? [],
38+
rootDir: path.resolve('/'),
3839
sys: createTestingSystem(),
3940
testing: {},
4041
...overrides,

0 commit comments

Comments
 (0)