Skip to content

Commit 8bf3368

Browse files
committed
js api: validate some options as arrays of strings
1 parent 1e7375a commit 8bf3368

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

lib/shared/common.ts

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ let mustBeFunction = (value: Function | undefined): string | null =>
4141
let mustBeArray = <T>(value: T[] | undefined): string | null =>
4242
Array.isArray(value) ? null : 'an array'
4343

44+
let mustBeArrayOfStrings = (value: string[] | undefined): string | null =>
45+
Array.isArray(value) && value.every(x => typeof x === 'string') ? null : 'an array of strings'
46+
4447
let mustBeObject = (value: Object | undefined): string | null =>
4548
typeof value === 'object' && value !== null && !Array.isArray(value) ? null : 'an object'
4649

@@ -153,8 +156,8 @@ function pushCommonFlags(flags: string[], options: CommonOptions, keys: OptionKe
153156
let minifyWhitespace = getFlag(options, keys, 'minifyWhitespace', mustBeBoolean)
154157
let minifyIdentifiers = getFlag(options, keys, 'minifyIdentifiers', mustBeBoolean)
155158
let lineLimit = getFlag(options, keys, 'lineLimit', mustBeInteger)
156-
let drop = getFlag(options, keys, 'drop', mustBeArray)
157-
let dropLabels = getFlag(options, keys, 'dropLabels', mustBeArray)
159+
let drop = getFlag(options, keys, 'drop', mustBeArrayOfStrings)
160+
let dropLabels = getFlag(options, keys, 'dropLabels', mustBeArrayOfStrings)
158161
let charset = getFlag(options, keys, 'charset', mustBeString)
159162
let treeShaking = getFlag(options, keys, 'treeShaking', mustBeBoolean)
160163
let ignoreAnnotations = getFlag(options, keys, 'ignoreAnnotations', mustBeBoolean)
@@ -167,7 +170,7 @@ function pushCommonFlags(flags: string[], options: CommonOptions, keys: OptionKe
167170
let define = getFlag(options, keys, 'define', mustBeObject)
168171
let logOverride = getFlag(options, keys, 'logOverride', mustBeObject)
169172
let supported = getFlag(options, keys, 'supported', mustBeObject)
170-
let pure = getFlag(options, keys, 'pure', mustBeArray)
173+
let pure = getFlag(options, keys, 'pure', mustBeArrayOfStrings)
171174
let keepNames = getFlag(options, keys, 'keepNames', mustBeBoolean)
172175
let platform = getFlag(options, keys, 'platform', mustBeString)
173176
let tsconfigRaw = getFlag(options, keys, 'tsconfigRaw', mustBeStringOrObject)
@@ -259,11 +262,11 @@ function flagsForBuildOptions(
259262
let outdir = getFlag(options, keys, 'outdir', mustBeString)
260263
let outbase = getFlag(options, keys, 'outbase', mustBeString)
261264
let tsconfig = getFlag(options, keys, 'tsconfig', mustBeString)
262-
let resolveExtensions = getFlag(options, keys, 'resolveExtensions', mustBeArray)
263-
let nodePathsInput = getFlag(options, keys, 'nodePaths', mustBeArray)
264-
let mainFields = getFlag(options, keys, 'mainFields', mustBeArray)
265-
let conditions = getFlag(options, keys, 'conditions', mustBeArray)
266-
let external = getFlag(options, keys, 'external', mustBeArray)
265+
let resolveExtensions = getFlag(options, keys, 'resolveExtensions', mustBeArrayOfStrings)
266+
let nodePathsInput = getFlag(options, keys, 'nodePaths', mustBeArrayOfStrings)
267+
let mainFields = getFlag(options, keys, 'mainFields', mustBeArrayOfStrings)
268+
let conditions = getFlag(options, keys, 'conditions', mustBeArrayOfStrings)
269+
let external = getFlag(options, keys, 'external', mustBeArrayOfStrings)
267270
let packages = getFlag(options, keys, 'packages', mustBeString)
268271
let alias = getFlag(options, keys, 'alias', mustBeObject)
269272
let loader = getFlag(options, keys, 'loader', mustBeObject)
@@ -272,7 +275,7 @@ function flagsForBuildOptions(
272275
let entryNames = getFlag(options, keys, 'entryNames', mustBeString)
273276
let chunkNames = getFlag(options, keys, 'chunkNames', mustBeString)
274277
let assetNames = getFlag(options, keys, 'assetNames', mustBeString)
275-
let inject = getFlag(options, keys, 'inject', mustBeArray)
278+
let inject = getFlag(options, keys, 'inject', mustBeArrayOfStrings)
276279
let banner = getFlag(options, keys, 'banner', mustBeObject)
277280
let footer = getFlag(options, keys, 'footer', mustBeObject)
278281
let entryPoints = getFlag(options, keys, 'entryPoints', mustBeEntryPoints)
@@ -1386,8 +1389,8 @@ let handlePlugins = async (
13861389
let pluginData = getFlag(result, keys, 'pluginData', canBeAnything)
13871390
let errors = getFlag(result, keys, 'errors', mustBeArray)
13881391
let warnings = getFlag(result, keys, 'warnings', mustBeArray)
1389-
let watchFiles = getFlag(result, keys, 'watchFiles', mustBeArray)
1390-
let watchDirs = getFlag(result, keys, 'watchDirs', mustBeArray)
1392+
let watchFiles = getFlag(result, keys, 'watchFiles', mustBeArrayOfStrings)
1393+
let watchDirs = getFlag(result, keys, 'watchDirs', mustBeArrayOfStrings)
13911394
checkForInvalidFlags(result, keys, `from onResolve() callback in plugin ${quote(name)}`)
13921395

13931396
response.id = id
@@ -1435,8 +1438,8 @@ let handlePlugins = async (
14351438
let loader = getFlag(result, keys, 'loader', mustBeString)
14361439
let errors = getFlag(result, keys, 'errors', mustBeArray)
14371440
let warnings = getFlag(result, keys, 'warnings', mustBeArray)
1438-
let watchFiles = getFlag(result, keys, 'watchFiles', mustBeArray)
1439-
let watchDirs = getFlag(result, keys, 'watchDirs', mustBeArray)
1441+
let watchFiles = getFlag(result, keys, 'watchFiles', mustBeArrayOfStrings)
1442+
let watchDirs = getFlag(result, keys, 'watchDirs', mustBeArrayOfStrings)
14401443
checkForInvalidFlags(result, keys, `from onLoad() callback in plugin ${quote(name)}`)
14411444

14421445
response.id = id

0 commit comments

Comments
 (0)