12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- /**
- * Sets a constant default value for the property when it is undefined.
- * @template T
- * @template {keyof T} Property
- * @param {T} object An object.
- * @param {Property} property A property of the provided object.
- * @param {T[Property]} defaultValue The default value to set for the property.
- * @returns {T[Property]} The defaulted property value.
- */
- const d = (object, property, defaultValue) => {
- if (typeof object[property] === 'undefined' && typeof defaultValue !== 'undefined') {
- object[property] = defaultValue;
- }
- return object[property];
- };
- /**
- * Resolves the value for a nested object option.
- * @template T
- * @template {keyof T} Property
- * @template Result
- * @param {T} object An object.
- * @param {Property} property A property of the provided object.
- * @param {function(T | undefined): Result} fn The handler to resolve the property's value.
- * @returns {Result} The resolved option value.
- */
- const nestedOption = (object, property, fn) => {
- object[property] = fn(object[property]);
- return object[property];
- };
- /**
- * Normalizes the options for the plugin.
- * @param {import('../types').ReactRefreshPluginOptions} options Non-normalized plugin options.
- * @returns {import('../types').NormalizedPluginOptions} Normalized plugin options.
- */
- const normalizeOptions = (options) => {
- // Show deprecation notice for the `disableRefreshCheck` option and remove it
- if (typeof options.disableRefreshCheck !== 'undefined') {
- delete options.disableRefreshCheck;
- console.warn(
- [
- 'The "disableRefreshCheck" option has been deprecated and will not have any effect on how the plugin parses files.',
- 'Please remove it from your configuration.',
- ].join(' ')
- );
- }
- d(options, 'exclude', /node_modules/i);
- d(options, 'include', /\.([jt]sx?|flow)$/i);
- d(options, 'forceEnable');
- nestedOption(options, 'overlay', (overlay) => {
- /** @type {import('../types').NormalizedErrorOverlayOptions} */
- const defaults = {
- entry: require.resolve('../../client/ErrorOverlayEntry'),
- module: require.resolve('../../overlay'),
- sockIntegration: 'wds',
- };
- if (overlay === false) {
- return false;
- }
- if (typeof overlay === 'undefined' || overlay === true) {
- return defaults;
- }
- d(overlay, 'entry', defaults.entry);
- d(overlay, 'module', defaults.module);
- d(overlay, 'sockIntegration', defaults.sockIntegration);
- d(overlay, 'sockHost');
- d(overlay, 'sockPath');
- d(overlay, 'sockPort');
- d(options, 'useLegacyWDSSockets');
- return overlay;
- });
- return options;
- };
- module.exports = normalizeOptions;
|