Skip to content

Commit

Permalink
Improve shared ids
Browse files Browse the repository at this point in the history
  • Loading branch information
ehmicky committed Feb 13, 2022
1 parent b4d65a1 commit 322dc36
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 12 deletions.
4 changes: 2 additions & 2 deletions src/config/plugin/lib/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ const normalizeSharedConfig = async function ({
[...item, ...dummyDefinitions],
{
context: { ...context, plugin },
prefix: propName,
prefix: `${propName}.`,
cwd,
UserErrorType: ConsumerError,
SystemErrorType: UserError,
Expand All @@ -87,7 +87,7 @@ const normalizeSpecificConfig = async function ({
[...dummyDefinitions, ...pluginConfigDefinitions],
{
context,
prefix: propName,
prefix: `${propName}.`,
cwd,
UserErrorType: ConsumerError,
SystemErrorType: PluginError,
Expand Down
10 changes: 9 additions & 1 deletion src/config/plugin/lib/id.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ export const isModuleId = function (id, modulePrefix, builtins) {
return (
modulePrefix !== undefined &&
!isInlineId(id) &&
!isSharedId(id) &&
!isBuiltinId(id, builtins) &&
!isPathId(id, builtins)
)
Expand All @@ -25,15 +26,22 @@ export const isModuleId = function (id, modulePrefix, builtins) {
export const isPathId = function (id, builtins) {
return (
!isInlineId(id) &&
!isSharedId(id) &&
!isBuiltinId(id, builtins) &&
(id.startsWith('.') || isAbsolute(id))
)
}

export const isBuiltinId = function (id, builtins) {
return builtins[id] !== undefined
return !isSharedId(id) && builtins[id] !== undefined
}

export const isSharedId = function (id) {
return id === SHARED_ID
}

const SHARED_ID = 'any'

export const isInlineId = function (id) {
return typeof id !== 'string'
}
Expand Down
4 changes: 3 additions & 1 deletion src/config/plugin/lib/multiple.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,5 +45,7 @@ const handleDuplicatePlugin = function (
return pluginConfig
}

return duplicatePlugins[0] === pluginConfig ? deepMerge(duplicatePlugins) : {}
return duplicatePlugins[duplicatePlugins.length - 1] === pluginConfig
? deepMerge(duplicatePlugins)
: {}
}
12 changes: 4 additions & 8 deletions src/config/plugin/lib/shared_config.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import { deepMerge } from '../../merge.js'

import { isSharedId } from './id.js'

// Plugin configurations with `id: "any"` are merged to all others, with lower
// priority
export const applySharedConfigs = function (pluginConfigs, { pluginProp }) {
const sharedConfigs = pluginConfigs.filter((pluginConfig) =>
isSharedConfig(pluginConfig, pluginProp),
isSharedId(pluginConfig[pluginProp]),
)

if (sharedConfigs.length === 0) {
Expand All @@ -18,13 +20,7 @@ export const applySharedConfigs = function (pluginConfigs, { pluginProp }) {
}

const applySharedConfig = function (pluginConfig, sharedConfig, pluginProp) {
return isSharedConfig(pluginConfig, pluginProp)
return isSharedId(pluginConfig[pluginProp])
? {}
: deepMerge([sharedConfig, pluginConfig])
}

const isSharedConfig = function (pluginConfig, pluginProp) {
return pluginConfig[pluginProp] === SHARED_ID
}

const SHARED_ID = 'any'

0 comments on commit 322dc36

Please sign in to comment.