diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index bee7376b..00000000 --- a/.eslintrc.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "ignorePatterns": ["types/", "dist/", "lib/"], - "env": { - "es2020": true, - "browser": true - }, - "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"], - "root": true, - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 2020, - "sourceType": "module" - }, - "plugins": ["@typescript-eslint"], - "rules": { - "@typescript-eslint/consistent-type-imports": "error", - "prefer-promise-reject-errors": "error", - "no-throw-literal": "error" - } -} diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..f47b3139 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,19 @@ +import eslint from '@eslint/js'; +import tseslint from 'typescript-eslint'; +import globals from "globals"; + +export default tseslint.config( + { + ignores: ["**/types/", "**/dist/", "**/lib/"] + }, + eslint.configs.recommended, + tseslint.configs.recommended, + { + files: ["examples/*.js"], + languageOptions: { + globals: { + ...globals.node, + }, + }, + } +); diff --git a/package.json b/package.json index 38eb4abd..aea3514c 100644 --- a/package.json +++ b/package.json @@ -58,18 +58,17 @@ }, "homepage": "https://github.com/cloudamqp/amqp-client.js#readme", "devDependencies": { - "@types/node": "^20.5.3", - "@typescript-eslint/eslint-plugin": "^6.4.1", - "@typescript-eslint/parser": "^6.4.1", - "@vitest/browser": "^0.34.2", - "@vitest/coverage-v8": "^0.34.2", - "eslint": "^8.47.0", - "playwright": "^1.37.1", - "rollup": "^3.28.1", - "rollup-plugin-sourcemaps": "^0.6.3", - "ts-node": "^10.9.1", - "typedoc": "^0.24.8", - "typescript": "^5.1.6", - "vitest": "^0.34.2" + "@types/node": "*", + "@vitest/browser": "*", + "@vitest/coverage-v8": "*", + "eslint": "*", + "typescript-eslint": "*", + "playwright": "*", + "rollup": "*", + "rollup-plugin-sourcemaps": "*", + "ts-node": "*", + "typedoc": "*", + "typescript": "*", + "vitest": "*" } } diff --git a/src/amqp-base-client.ts b/src/amqp-base-client.ts index 02ef0db7..329efd69 100644 --- a/src/amqp-base-client.ts +++ b/src/amqp-base-client.ts @@ -163,13 +163,14 @@ export abstract class AMQPBaseClient { const type = view.getUint8(i); i += 1 const channelId = view.getUint16(i); i += 2 const frameSize = view.getUint32(i); i += 4 + let frameEnd = 0 try { - const frameEnd = view.getUint8(i + frameSize) - if (frameEnd !== 206) - throw (new AMQPError(`Invalid frame end ${frameEnd}, expected 206`, this)) - } catch (e) { + frameEnd = view.getUint8(i + frameSize) + } catch { throw (new AMQPError(`Frame end out of range, frameSize=${frameSize}, pos=${i}, byteLength=${view.byteLength}`, this)) } + if (frameEnd !== 206) + throw (new AMQPError(`Invalid frame end ${frameEnd}, expected 206`, this)) const channel = this.channels[channelId] if (!channel) { diff --git a/src/amqp-channel.ts b/src/amqp-channel.ts index 9fef7666..ab9438b6 100644 --- a/src/amqp-channel.ts +++ b/src/amqp-channel.ts @@ -831,13 +831,13 @@ export class AMQPChannel { * Resolvs next RPC command * @ignore */ - resolveRPC(value?: unknown) : void { value } + resolveRPC(value?: unknown) : unknown | void { return value } /** * Reject next RPC command * @ignore */ - rejectRPC(err?: Error) : void { err } + rejectRPC(err?: Error) : Error | void { return err } /** * Deliver a message to a consumer diff --git a/src/amqp-view.ts b/src/amqp-view.ts index b99bde14..e811d407 100644 --- a/src/amqp-view.ts +++ b/src/amqp-view.ts @@ -6,7 +6,7 @@ import type { AMQPProperties, Field } from './amqp-properties.js' * Get methods returns the value read and how many bytes it used. * @ignore */ -export class AMQPView extends DataView { +export class AMQPView extends DataView { getUint64(byteOffset: number, littleEndian?: boolean) : number { // split 64-bit number into two 32-bit (4-byte) parts const left = this.getUint32(byteOffset, littleEndian) @@ -16,7 +16,6 @@ export class AMQPView extends DataView { const combined = littleEndian ? left + 2**32 * right : 2**32 * left + right if (!Number.isSafeInteger(combined)) { - // eslint-disable-next-line no-console console.warn(combined, 'exceeds MAX_SAFE_INTEGER. Precision may be lost') } diff --git a/tsconfig.json b/tsconfig.json index c53ec536..a959c2ba 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,7 +3,6 @@ "compilerOptions": { "target": "es2020", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ "module": "es2020", /* Specify what module code is generated. */ - "moduleResolution": "node16", "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ "declarationMap": true, /* Create sourcemaps for d.ts files. */ "sourceMap": true, /* Create source map files for emitted JavaScript files. */