Skip to content

Commit 1e7375a

Browse files
committed
js api: simplify comma-separated array validation
1 parent 5f5964d commit 1e7375a

File tree

1 file changed

+13
-36
lines changed

1 file changed

+13
-36
lines changed

lib/shared/common.ts

Lines changed: 13 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,14 @@ const quote: (x: string) => string = JSON.stringify
88
const buildLogLevelDefault = 'warning'
99
const transformLogLevelDefault = 'silent'
1010

11-
function validateTarget(target: string): string {
12-
validateStringValue(target, 'target')
13-
if (target.indexOf(',') >= 0) throw new Error(`Invalid target: ${target}`)
14-
return target
11+
function validateAndJoinStringArray(values: string[], what: string): string {
12+
const toJoin: string[] = []
13+
for (const value of values) {
14+
validateStringValue(value, what)
15+
if (value.indexOf(',') >= 0) throw new Error(`Invalid ${what}: ${value}`)
16+
toJoin.push(value)
17+
}
18+
return toJoin.join(',')
1519
}
1620

1721
let canBeAnything = () => null
@@ -171,10 +175,7 @@ function pushCommonFlags(flags: string[], options: CommonOptions, keys: OptionKe
171175
if (legalComments) flags.push(`--legal-comments=${legalComments}`)
172176
if (sourceRoot !== void 0) flags.push(`--source-root=${sourceRoot}`)
173177
if (sourcesContent !== void 0) flags.push(`--sources-content=${sourcesContent}`)
174-
if (target) {
175-
if (Array.isArray(target)) flags.push(`--target=${Array.from(target).map(validateTarget).join(',')}`)
176-
else flags.push(`--target=${validateTarget(target)}`)
177-
}
178+
if (target) flags.push(`--target=${validateAndJoinStringArray(Array.isArray(target) ? target : [target], 'target')}`)
178179
if (format) flags.push(`--format=${format}`)
179180
if (globalName) flags.push(`--global-name=${globalName}`)
180181
if (platform) flags.push(`--platform=${platform}`)
@@ -189,7 +190,7 @@ function pushCommonFlags(flags: string[], options: CommonOptions, keys: OptionKe
189190
if (treeShaking !== void 0) flags.push(`--tree-shaking=${treeShaking}`)
190191
if (ignoreAnnotations) flags.push(`--ignore-annotations`)
191192
if (drop) for (let what of drop) flags.push(`--drop:${validateStringValue(what, 'drop')}`)
192-
if (dropLabels) flags.push(`--drop-labels=${Array.from(dropLabels).map(what => validateStringValue(what, 'dropLabels')).join(',')}`)
193+
if (dropLabels) flags.push(`--drop-labels=${validateAndJoinStringArray(dropLabels, 'drop label')}`)
193194
if (mangleProps) flags.push(`--mangle-props=${jsRegExpToGoRegExp(mangleProps)}`)
194195
if (reserveProps) flags.push(`--reserve-props=${jsRegExpToGoRegExp(reserveProps)}`)
195196
if (mangleQuoted !== void 0) flags.push(`--mangle-quoted=${mangleQuoted}`)
@@ -294,37 +295,13 @@ function flagsForBuildOptions(
294295
if (outbase) flags.push(`--outbase=${outbase}`)
295296
if (tsconfig) flags.push(`--tsconfig=${tsconfig}`)
296297
if (packages) flags.push(`--packages=${packages}`)
297-
if (resolveExtensions) {
298-
let values: string[] = []
299-
for (let value of resolveExtensions) {
300-
validateStringValue(value, 'resolve extension')
301-
if (value.indexOf(',') >= 0) throw new Error(`Invalid resolve extension: ${value}`)
302-
values.push(value)
303-
}
304-
flags.push(`--resolve-extensions=${values.join(',')}`)
305-
}
298+
if (resolveExtensions) flags.push(`--resolve-extensions=${validateAndJoinStringArray(resolveExtensions, 'resolve extension')}`)
306299
if (publicPath) flags.push(`--public-path=${publicPath}`)
307300
if (entryNames) flags.push(`--entry-names=${entryNames}`)
308301
if (chunkNames) flags.push(`--chunk-names=${chunkNames}`)
309302
if (assetNames) flags.push(`--asset-names=${assetNames}`)
310-
if (mainFields) {
311-
let values: string[] = []
312-
for (let value of mainFields) {
313-
validateStringValue(value, 'main field')
314-
if (value.indexOf(',') >= 0) throw new Error(`Invalid main field: ${value}`)
315-
values.push(value)
316-
}
317-
flags.push(`--main-fields=${values.join(',')}`)
318-
}
319-
if (conditions) {
320-
let values: string[] = []
321-
for (let value of conditions) {
322-
validateStringValue(value, 'condition')
323-
if (value.indexOf(',') >= 0) throw new Error(`Invalid condition: ${value}`)
324-
values.push(value)
325-
}
326-
flags.push(`--conditions=${values.join(',')}`)
327-
}
303+
if (mainFields) flags.push(`--main-fields=${validateAndJoinStringArray(mainFields, 'main field')}`)
304+
if (conditions) flags.push(`--conditions=${validateAndJoinStringArray(conditions, 'condition')}`)
328305
if (external) for (let name of external) flags.push(`--external:${validateStringValue(name, 'external')}`)
329306
if (alias) {
330307
for (let old in alias) {

0 commit comments

Comments
 (0)