From a03f4aec6ad4b80e6189d9224c6737e2b4f899ac Mon Sep 17 00:00:00 2001 From: A5cend-dev Date: Sun, 29 Mar 2026 12:55:34 +0100 Subject: [PATCH] feat: enforce no-restricted-syntax for BigInt safety in core-ts --- packages/core-ts/.eslintrc.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 packages/core-ts/.eslintrc.js diff --git a/packages/core-ts/.eslintrc.js b/packages/core-ts/.eslintrc.js new file mode 100644 index 0000000..5e8f71b --- /dev/null +++ b/packages/core-ts/.eslintrc.js @@ -0,0 +1,33 @@ +module.exports = { + root: false, + parser: "@typescript-eslint/parser", + parserOptions: { + ecmaVersion: 2020, + sourceType: "module", + }, + ignorePatterns: ["dist/", "node_modules/"], + rules: { + "no-restricted-syntax": [ + "error", + { + selector: "CallExpression[callee.name='Number']", + message: + "Do not use Number() to cast values in core-ts routing interfaces. " + + "Casting BigInt to Number silently clips values above Number.MAX_SAFE_INTEGER (2^53-1), " + + "causing routing corruption. Keep values as BigInt throughout." + }, + { + selector: "UnaryExpression[operator='+']", + message: + "Do not use unary + in core-ts. " + + "This coerces BigInt to Number with silent precision loss." + }, + { + selector: "CallExpression[callee.name='parseFloat']", + message: + "Do not use parseFloat() in core-ts routing interfaces. " + + "This may silently lose precision on large integers." + } + ] + } +}; \ No newline at end of file