235 lines
11 KiB
JSON
235 lines
11 KiB
JSON
{
|
|
"parserOptions": {
|
|
"ecmaVersion": 2022,
|
|
"sourceType": "script"
|
|
},
|
|
"env": {
|
|
"node": true,
|
|
"es2022": true
|
|
},
|
|
"rules": {
|
|
"eqeqeq": [
|
|
"warn",
|
|
"always"
|
|
],
|
|
"no-eq-null": "warn",
|
|
"no-redeclare": 2,
|
|
"no-undef": 2,
|
|
"no-use-before-define": [
|
|
"error",
|
|
{
|
|
"variables": false,
|
|
"functions": false,
|
|
"classes": false
|
|
}
|
|
],
|
|
"block-scoped-var": 2,
|
|
"no-const-assign": 2,
|
|
"prefer-const": 1,
|
|
"no-var": 1,
|
|
"no-restricted-globals": [
|
|
"warn",
|
|
{
|
|
"name": "escape",
|
|
"message": "escape() is deprecated. Use encodeURIComponent() instead."
|
|
},
|
|
{
|
|
"name": "unescape",
|
|
"message": "unescape() is deprecated. Use decodeURIComponent() instead."
|
|
}
|
|
],
|
|
"no-restricted-syntax": [
|
|
"warn",
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.property.name='substr']",
|
|
"message": "String.prototype.substr() is deprecated. Use String.prototype.slice() instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.name='substr']",
|
|
"message": "substr() is deprecated. Use slice() instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.property.name='substring']",
|
|
"message": "substring() found, for continuity, please use String.prototype.slice() instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.name='substring']",
|
|
"message": "substring() found, for continuity, please use slice() instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='Buffer'][callee.property.name='slice']",
|
|
"message": "Found .slice() call. If this is on a Buffer, use Buffer.subarray() instead for better performance."
|
|
},
|
|
{
|
|
"selector": "NewExpression[callee.name='Buffer']",
|
|
"message": "new Buffer() is deprecated. Use Buffer.from(), Buffer.alloc(), or Buffer.allocUnsafe() instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='fs'][callee.property.name='exists']",
|
|
"message": "fs.exists() is deprecated. Use fs.existsSync() or fs.access() instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='util'][callee.property.name='isArray']",
|
|
"message": "util.isArray() is deprecated. Use Array.isArray() instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='util'][callee.property.name='isBoolean']",
|
|
"message": "util.isBoolean() is deprecated. Use typeof x === 'boolean' instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='util'][callee.property.name='isBuffer']",
|
|
"message": "util.isBuffer() is deprecated. Use Buffer.isBuffer() instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='util'][callee.property.name='isDate']",
|
|
"message": "util.isDate() is deprecated. Use x instanceof Date instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='util'][callee.property.name='isError']",
|
|
"message": "util.isError() is deprecated. Use x instanceof Error instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='util'][callee.property.name='isFunction']",
|
|
"message": "util.isFunction() is deprecated. Use typeof x === 'function' instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='util'][callee.property.name='isNull']",
|
|
"message": "util.isNull() is deprecated. Use x === null instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='util'][callee.property.name='isNullOrUndefined']",
|
|
"message": "util.isNullOrUndefined() is deprecated. Use x == null instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='util'][callee.property.name='isNumber']",
|
|
"message": "util.isNumber() is deprecated. Use typeof x === 'number' instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='util'][callee.property.name='isObject']",
|
|
"message": "util.isObject() is deprecated. Use typeof x === 'object' && x !== null instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='util'][callee.property.name='isPrimitive']",
|
|
"message": "util.isPrimitive() is deprecated. Use manual type checking instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='util'][callee.property.name='isRegExp']",
|
|
"message": "util.isRegExp() is deprecated. Use x instanceof RegExp instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='util'][callee.property.name='isString']",
|
|
"message": "util.isString() is deprecated. Use typeof x === 'string' instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='util'][callee.property.name='isSymbol']",
|
|
"message": "util.isSymbol() is deprecated. Use typeof x === 'symbol' instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='util'][callee.property.name='isUndefined']",
|
|
"message": "util.isUndefined() is deprecated. Use x === undefined instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='util'][callee.property.name='debug']",
|
|
"message": "util.debug() is deprecated. Use console.error() instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='util'][callee.property.name='error']",
|
|
"message": "util.error() is deprecated. Use console.error() instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='util'][callee.property.name='print']",
|
|
"message": "util.print() is deprecated. Use console.log() instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='util'][callee.property.name='puts']",
|
|
"message": "util.puts() is deprecated. Use console.log() instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='util'][callee.property.name='pump']",
|
|
"message": "util.pump() is deprecated. Use stream.pipeline() instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.name='require'][arguments.0.value='domain']",
|
|
"message": "The 'domain' module is deprecated. Use AsyncLocalStorage or async_hooks instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='crypto'][callee.property.name='createCredentials']",
|
|
"message": "crypto.createCredentials() is deprecated. Use tls.createSecureContext() instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='crypto'][callee.property.name='Credentials']",
|
|
"message": "crypto.Credentials is deprecated. Use tls.SecureContext instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.name='session_data'][callee.property.name='hasCap']",
|
|
"message": "session_data.hasCap() is deprecated. Use session_data.capabilities.get() instead."
|
|
},
|
|
{
|
|
"selector": "CallExpression[callee.type='MemberExpression'][callee.object.type='MemberExpression'][callee.object.property.name='session_data'][callee.property.name='hasCap']",
|
|
"message": "session_data.hasCap() is deprecated. Use session_data.capabilities.get() instead."
|
|
},
|
|
{
|
|
"selector": "BinaryExpression[operator='==='][left.type='Literal'][left.value=/^\\d+$/][left.typeof='number'][right.type='Identifier']",
|
|
"message": "Comparing string literal that looks like a number with a variable using strict equality. Consider parseInt() or ensure both operands are the same type."
|
|
},
|
|
{
|
|
"selector": "BinaryExpression[operator='==='][left.type='Identifier'][right.type='Literal'][right.value=/^\\d+$/][right.typeof='number']",
|
|
"message": "Comparing variable with string literal that looks like a number using strict equality. Consider parseInt() or ensure both operands are the same type."
|
|
},
|
|
{
|
|
"selector": "BinaryExpression[operator='==='][left.type='Literal'][left.typeof='string'][right.type='Literal'][right.typeof='number']",
|
|
"message": "Comparing string literal with number literal using strict equality. This will always be false."
|
|
},
|
|
{
|
|
"selector": "BinaryExpression[operator='==='][left.type='Literal'][left.typeof='number'][right.type='Literal'][right.typeof='string']",
|
|
"message": "Comparing number literal with string literal using strict equality. This will always be false."
|
|
},
|
|
{
|
|
"selector": "BinaryExpression[operator='!=='][left.type='Literal'][left.typeof='string'][right.type='Literal'][right.typeof='number']",
|
|
"message": "Comparing string literal with number literal using strict inequality. This will always be true."
|
|
},
|
|
{
|
|
"selector": "BinaryExpression[operator='!=='][left.type='Literal'][left.typeof='number'][right.type='Literal'][right.typeof='string']",
|
|
"message": "Comparing number literal with string literal using strict inequality. This will always be true."
|
|
}
|
|
]
|
|
},
|
|
"globals": {
|
|
"wtvmime": "readonly",
|
|
"http": "readonly",
|
|
"https": "readonly",
|
|
"sharp": "readonly",
|
|
"util": "readonly",
|
|
"nunjucks": "readonly",
|
|
"URL": "readonly",
|
|
"URLSearchParams": "readonly",
|
|
"wtvshared": "readonly",
|
|
"zlib": "readonly",
|
|
"clientShowAlert": "readonly",
|
|
"WTVClientSessionData": "readonly",
|
|
"WTVClientCapabilities": "readonly",
|
|
"strftime": "readonly",
|
|
"CryptoJS": "readonly",
|
|
"crypto": "readonly",
|
|
"fs": "readonly",
|
|
"path": "readonly",
|
|
"debug": "readonly",
|
|
"minisrv_config": "readonly",
|
|
"socket": "readonly",
|
|
"headers": "readonly",
|
|
"data": "readonly",
|
|
"request_is_async": "readonly",
|
|
"minisrv_version_string": "readonly",
|
|
"getServiceString": "readonly",
|
|
"sendToClient": "readonly",
|
|
"service_vaults": "readonly",
|
|
"service_deps": "readonly",
|
|
"ssid_sessions": "readonly",
|
|
"moveArrayKey": "readonly",
|
|
"cwd": "readonly",
|
|
"request_headers": "readonly",
|
|
"session_data": "readonly",
|
|
"service_name": "readonly",
|
|
"WTVAuthor": "readonly"
|
|
}
|
|
} |