From 6dbc37108e8be06623f0818cce957e8a398aef21 Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Thu, 18 Apr 2019 21:18:53 +0200 Subject: [PATCH 1/3] Project can also have platforms --- packages/cli/src/tools/config/index.js | 2 +- packages/cli/src/tools/config/schema.js | 10 +++++++++- types/index.js | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/tools/config/index.js b/packages/cli/src/tools/config/index.js index f265a2a41..0ba40ecec 100644 --- a/packages/cli/src/tools/config/index.js +++ b/packages/cli/src/tools/config/index.js @@ -124,7 +124,7 @@ function loadConfig(projectRoot: string = process.cwd()): ConfigT { get assets() { return findAssets(projectRoot, userConfig.assets); }, - platforms: {}, + platforms: userConfig.platforms, haste: { providesModuleNodeModules: [], platforms: [], diff --git a/packages/cli/src/tools/config/schema.js b/packages/cli/src/tools/config/schema.js index a46f03776..79e9b5fa4 100644 --- a/packages/cli/src/tools/config/schema.js +++ b/packages/cli/src/tools/config/schema.js @@ -85,7 +85,7 @@ export const dependencyConfig = t projectConfig: t.func(), linkConfig: t.func(), }), - ).default(), + ).default({}), commands: t .array() .items(command) @@ -170,5 +170,13 @@ export const projectConfig = t .array() .items(command) .default([]), + platforms: map( + t.string(), + t.object({ + dependencyConfig: t.func(), + projectConfig: t.func(), + linkConfig: t.func(), + }), + ).default({}), }) .default(); diff --git a/types/index.js b/types/index.js index feef6bcd2..56943eb8a 100644 --- a/types/index.js +++ b/types/index.js @@ -198,7 +198,7 @@ export type UserConfigT = { * Shares some structure with ConfigT, except that haste, root, platforms * are calculated and can't be defined */ - ...$Diff, + ...$Diff, reactNativePath: ?string, // Additional project settings From 4ee2643a0750e7ee439669b7e653a8d3a491f9c2 Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Thu, 18 Apr 2019 21:22:00 +0200 Subject: [PATCH 2/3] strip unknown --- packages/cli/src/tools/config/readConfigFromDisk.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/tools/config/readConfigFromDisk.js b/packages/cli/src/tools/config/readConfigFromDisk.js index 58a99bf58..015a94e92 100644 --- a/packages/cli/src/tools/config/readConfigFromDisk.js +++ b/packages/cli/src/tools/config/readConfigFromDisk.js @@ -34,7 +34,9 @@ export function readConfigFromDisk(rootFolder: string): UserConfigT { const {config} = explorer.searchSync(rootFolder) || {config: undefined}; - const result = Joi.validate(config, schema.projectConfig); + const result = Joi.validate(config, schema.projectConfig, { + stripUnknown: true, + }); if (result.error) { throw new JoiError(result.error); @@ -57,7 +59,9 @@ export function readDependencyConfigFromDisk( const {config} = explorer.searchSync(rootFolder) || {config: undefined}; - const result = Joi.validate(config, schema.dependencyConfig); + const result = Joi.validate(config, schema.dependencyConfig, { + stripUnknown: true, + }); if (result.error) { throw new JoiError(result.error); From 039c343c2a0859352fadce6cd96c200a4cab279d Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Thu, 18 Apr 2019 22:02:36 +0200 Subject: [PATCH 3/3] Remove stripUnknown and prefer allowUnknown on one level only --- packages/cli/src/tools/config/readConfigFromDisk.js | 8 ++------ packages/cli/src/tools/config/schema.js | 2 ++ types/index.js | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/cli/src/tools/config/readConfigFromDisk.js b/packages/cli/src/tools/config/readConfigFromDisk.js index 015a94e92..58a99bf58 100644 --- a/packages/cli/src/tools/config/readConfigFromDisk.js +++ b/packages/cli/src/tools/config/readConfigFromDisk.js @@ -34,9 +34,7 @@ export function readConfigFromDisk(rootFolder: string): UserConfigT { const {config} = explorer.searchSync(rootFolder) || {config: undefined}; - const result = Joi.validate(config, schema.projectConfig, { - stripUnknown: true, - }); + const result = Joi.validate(config, schema.projectConfig); if (result.error) { throw new JoiError(result.error); @@ -59,9 +57,7 @@ export function readDependencyConfigFromDisk( const {config} = explorer.searchSync(rootFolder) || {config: undefined}; - const result = Joi.validate(config, schema.dependencyConfig, { - stripUnknown: true, - }); + const result = Joi.validate(config, schema.dependencyConfig); if (result.error) { throw new JoiError(result.error); diff --git a/packages/cli/src/tools/config/schema.js b/packages/cli/src/tools/config/schema.js index 79e9b5fa4..cd2870afe 100644 --- a/packages/cli/src/tools/config/schema.js +++ b/packages/cli/src/tools/config/schema.js @@ -91,6 +91,7 @@ export const dependencyConfig = t .items(command) .default([]), }) + .unknown(true) .default(); /** @@ -179,4 +180,5 @@ export const projectConfig = t }), ).default({}), }) + .unknown(true) .default(); diff --git a/types/index.js b/types/index.js index 56943eb8a..67178942f 100644 --- a/types/index.js +++ b/types/index.js @@ -195,7 +195,7 @@ export type UserDependencyConfigT = { */ export type UserConfigT = { /** - * Shares some structure with ConfigT, except that haste, root, platforms + * Shares some structure with ConfigT, except that haste and root * are calculated and can't be defined */ ...$Diff,