From 3720e8b6cc3e0370c4df03735b89ce87d77fffc0 Mon Sep 17 00:00:00 2001 From: yangzhen <3104844212@qq.com> Date: Tue, 17 Dec 2024 00:40:35 +0800 Subject: [PATCH 1/2] 11 --- node_modules/depd/index.js | 52 +++++++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/node_modules/depd/index.js b/node_modules/depd/index.js index 1bf2fcf..e09563e 100644 --- a/node_modules/depd/index.js +++ b/node_modules/depd/index.js @@ -46,22 +46,56 @@ function containsNamespace (str, namespace) { * Convert a data descriptor to accessor descriptor. */ -function convertDataDescriptorToAccessor (obj, prop, message) { - var descriptor = Object.getOwnPropertyDescriptor(obj, prop) - var value = descriptor.value +function containsNamespace(str, namespace) { + // 使用正则表达式将字符串按空格或逗号分割成数组 + var vals = str.split(/[ ,]+/); + // 将命名空间转换为小写以进行不区分大小写的比较 + var ns = String(namespace).toLowerCase(); - descriptor.get = function getter () { return value } + // 遍历分割后的数组 + for (var i = 0; i < vals.length; i++) { + var val = vals[i]; + // 如果 val 存在,并且等于 '*' 或者等于指定的命名空间,则返回 true + if (val && (val === '*' || val.toLowerCase() === ns)) { + return true; + } + } + + // 如果没有找到匹配的命名空间,则返回 false + return false; +} + +/** + * 将数据描述符转换为访问器描述符。 + * @param {Object} obj - 要修改的对象。 + * @param {string} prop - 要转换的属性名。 + * @param {string} message - 相关消息(未使用)。 + * @returns {Object} - 返回转换后的描述符。 + */ +function convertDataDescriptorToAccessor(obj, prop, message) { + // 获取对象的属性描述符 + var descriptor = Object.getOwnPropertyDescriptor(obj, prop); + // 获取属性的值 + var value = descriptor.value; + + // 定义 getter 方法,返回属性的值 + descriptor.get = function getter() { return value; }; + + // 如果属性是可写的,则定义 setter 方法 if (descriptor.writable) { - descriptor.set = function setter (val) { return (value = val) } + descriptor.set = function setter(val) { return (value = val); }; } - delete descriptor.value - delete descriptor.writable + // 删除原有的值和可写性描述符 + delete descriptor.value; + delete descriptor.writable; - Object.defineProperty(obj, prop, descriptor) + // 使用新的描述符重新定义对象的属性 + Object.defineProperty(obj, prop, descriptor); - return descriptor + // 返回转换后的描述符 + return descriptor; } /** -- 2.34.1 From be8d923311199e220c3dfa72f8b9d088a8107136 Mon Sep 17 00:00:00 2001 From: yangzhen <3104844212@qq.com> Date: Tue, 17 Dec 2024 00:44:28 +0800 Subject: [PATCH 2/2] 11 --- node_modules/depd/index.js | 99 +++++++++++++++----------------------- 1 file changed, 40 insertions(+), 59 deletions(-) diff --git a/node_modules/depd/index.js b/node_modules/depd/index.js index e09563e..2ed0679 100644 --- a/node_modules/depd/index.js +++ b/node_modules/depd/index.js @@ -102,83 +102,64 @@ function convertDataDescriptorToAccessor(obj, prop, message) { * Create arguments string to keep arity. */ -function createArgumentsString (arity) { - var str = '' - - for (var i = 0; i < arity; i++) { - str += ', arg' + i - } - - return str.substr(2) -} - /** - * Create stack string from stack. + * 检查给定的字符串中是否包含指定的命名空间。 + * @param {string} str - 要检查的字符串,可能包含多个命名空间。 + * @param {string} namespace - 要查找的命名空间。 + * @returns {boolean} - 如果字符串中包含命名空间,则返回 true;否则返回 false。 */ +function containsNamespace(str, namespace) { + // 使用正则表达式将字符串按空格或逗号分割成数组 + var vals = str.split(/[ ,]+/); + // 将命名空间转换为小写以进行不区分大小写的比较 + var ns = String(namespace).toLowerCase(); -function createStackString (stack) { - var str = this.name + ': ' + this.namespace - - if (this.message) { - str += ' deprecated ' + this.message - } + // 遍历分割后的数组 + for (var i = 0; i < vals.length; i++) { + var val = vals[i]; - for (var i = 0; i < stack.length; i++) { - str += '\n at ' + stack[i].toString() + // 如果 val 存在,并且等于 '*' 或者等于指定的命名空间,则返回 true + if (val && (val === '*' || val.toLowerCase() === ns)) { + return true; + } } - return str + // 如果没有找到匹配的命名空间,则返回 false + return false; } /** - * Create deprecate for namespace in caller. + * 将数据描述符转换为访问器描述符。 + * @param {Object} obj - 要修改的对象。 + * @param {string} prop - 要转换的属性名。 + * @param {string} message - 相关消息(未使用)。 + * @returns {Object} - 返回转换后的描述符。 */ +function convertDataDescriptorToAccessor(obj, prop, message) { + // 获取对象的属性描述符 + var descriptor = Object.getOwnPropertyDescriptor(obj, prop); + // 获取属性的值 + var value = descriptor.value; -function depd (namespace) { - if (!namespace) { - throw new TypeError('argument namespace is required') - } - - var stack = getStack() - var site = callSiteLocation(stack[1]) - var file = site[0] + // 定义 getter 方法,返回属性的值 + descriptor.get = function getter() { return value; }; - function deprecate (message) { - // call to self as log - log.call(deprecate, message) + // 如果属性是可写的,则定义 setter 方法 + if (descriptor.writable) { + descriptor.set = function setter(val) { return (value = val); }; } - deprecate._file = file - deprecate._ignored = isignored(namespace) - deprecate._namespace = namespace - deprecate._traced = istraced(namespace) - deprecate._warned = Object.create(null) + // 删除原有的值和可写性描述符 + delete descriptor.value; + delete descriptor.writable; - deprecate.function = wrapfunction - deprecate.property = wrapproperty + // 使用新的描述符重新定义对象的属性 + Object.defineProperty(obj, prop, descriptor); - return deprecate + // 返回转换后的描述符 + return descriptor; } -/** - * Determine if event emitter has listeners of a given type. - * - * The way to do this check is done three different ways in Node.js >= 0.8 - * so this consolidates them into a minimal set using instance methods. - * - * @param {EventEmitter} emitter - * @param {string} type - * @returns {boolean} - * @private - */ - -function eehaslisteners (emitter, type) { - var count = typeof emitter.listenerCount !== 'function' - ? emitter.listeners(type).length - : emitter.listenerCount(type) - - return count > 0 -} /** * Determine if namespace is ignored. -- 2.34.1