85 lines
2.4 KiB
TypeScript
85 lines
2.4 KiB
TypeScript
import { AppConfig } from '../apiCreateApp'
|
|
import {
|
|
DeprecationTypes,
|
|
softAssertCompatEnabled,
|
|
warnDeprecation
|
|
} from './compatConfig'
|
|
import { isCopyingConfig } from './global'
|
|
import { internalOptionMergeStrats } from '../componentOptions'
|
|
|
|
// legacy config warnings
|
|
export type LegacyConfig = {
|
|
/**
|
|
* @deprecated `config.silent` option has been removed
|
|
*/
|
|
silent?: boolean
|
|
/**
|
|
* @deprecated use __VUE_PROD_DEVTOOLS__ compile-time feature flag instead
|
|
* https://github.com/vuejs/core/tree/main/packages/vue#bundler-build-feature-flags
|
|
*/
|
|
devtools?: boolean
|
|
/**
|
|
* @deprecated use `config.isCustomElement` instead
|
|
* https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-ignoredelements-is-now-config-iscustomelement
|
|
*/
|
|
ignoredElements?: (string | RegExp)[]
|
|
/**
|
|
* @deprecated
|
|
* https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html
|
|
*/
|
|
keyCodes?: Record<string, number | number[]>
|
|
/**
|
|
* @deprecated
|
|
* https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-productiontip-removed
|
|
*/
|
|
productionTip?: boolean
|
|
}
|
|
|
|
// dev only
|
|
export function installLegacyConfigWarnings(config: AppConfig) {
|
|
const legacyConfigOptions: Record<string, DeprecationTypes> = {
|
|
silent: DeprecationTypes.CONFIG_SILENT,
|
|
devtools: DeprecationTypes.CONFIG_DEVTOOLS,
|
|
ignoredElements: DeprecationTypes.CONFIG_IGNORED_ELEMENTS,
|
|
keyCodes: DeprecationTypes.CONFIG_KEY_CODES,
|
|
productionTip: DeprecationTypes.CONFIG_PRODUCTION_TIP
|
|
}
|
|
|
|
Object.keys(legacyConfigOptions).forEach(key => {
|
|
let val = (config as any)[key]
|
|
Object.defineProperty(config, key, {
|
|
enumerable: true,
|
|
get() {
|
|
return val
|
|
},
|
|
set(newVal) {
|
|
if (!isCopyingConfig) {
|
|
warnDeprecation(legacyConfigOptions[key], null)
|
|
}
|
|
val = newVal
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
export function installLegacyOptionMergeStrats(config: AppConfig) {
|
|
config.optionMergeStrategies = new Proxy({} as any, {
|
|
get(target, key) {
|
|
if (key in target) {
|
|
return target[key]
|
|
}
|
|
if (
|
|
key in internalOptionMergeStrats &&
|
|
softAssertCompatEnabled(
|
|
DeprecationTypes.CONFIG_OPTION_MERGE_STRATS,
|
|
null
|
|
)
|
|
) {
|
|
return internalOptionMergeStrats[
|
|
key as keyof typeof internalOptionMergeStrats
|
|
]
|
|
}
|
|
}
|
|
})
|
|
}
|