MCPcopy
hub / github.com/webpack/webpack / deprecateAllProperties

Function deprecateAllProperties

lib/util/deprecation.js:260–299  ·  view source on GitHub ↗
(obj, message, code)

Source from the content-addressed store, hash-verified

258 * @returns {T} object with property access deprecated
259 */
260const deprecateAllProperties = (obj, message, code) => {
261 const newObj = {};
262 const descriptors = Object.getOwnPropertyDescriptors(obj);
263 for (const name of Object.keys(descriptors)) {
264 const descriptor = descriptors[name];
265 if (typeof descriptor.value === "function") {
266 Object.defineProperty(newObj, name, {
267 ...descriptor,
268 value: util.deprecate(descriptor.value, message, code)
269 });
270 } else if (descriptor.get || descriptor.set) {
271 Object.defineProperty(newObj, name, {
272 ...descriptor,
273 get: descriptor.get && util.deprecate(descriptor.get, message, code),
274 set: descriptor.set && util.deprecate(descriptor.set, message, code)
275 });
276 } else {
277 let value = descriptor.value;
278 Object.defineProperty(newObj, name, {
279 configurable: descriptor.configurable,
280 enumerable: descriptor.enumerable,
281 get: util.deprecate(() => value, message, code),
282 set: descriptor.writable
283 ? util.deprecate(
284 /**
285 * Handles the callback logic for this hook.
286 * @template T
287 * @param {T} v value
288 * @returns {T} result
289 */
290 (v) => (value = v),
291 message,
292 code
293 )
294 : undefined
295 });
296 }
297 }
298 return /** @type {T} */ (newObj);
299};
300
301module.exports.deprecateAllProperties = deprecateAllProperties;
302

Callers 1

deprecation.jsFile · 0.85

Calls 1

keysMethod · 0.65

Tested by

no test coverage detected