From a4f0d61367645ad8dbcbf77f0bbb0107469ebf5c Mon Sep 17 00:00:00 2001 From: Imod7 Date: Tue, 8 Oct 2024 12:08:16 +0200 Subject: [PATCH 1/3] chore(deps): update express to v5 & jest deprecations --- package.json | 6 +- src/App.ts | 8 +- src/controllers/AbstractControllers.spec.ts | 18 +- src/middleware/error/testTools.ts | 42 +-- src/middleware/validate/util.ts | 18 +- .../AccountsBalanceInfoService.spec.ts | 12 +- yarn.lock | 350 +++++++++++------- 7 files changed, 271 insertions(+), 183 deletions(-) diff --git a/package.json b/package.json index 8b5833ce1..89e231c22 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "@substrate/calc": "^0.3.1", "argparse": "^2.0.1", "confmgr": "^1.1.0", - "express": "^4.21.0", + "express": "^5.0.0", "express-winston": "^4.2.0", "http-errors": "^2.0.0", "lru-cache": "^11.0.1", @@ -68,8 +68,8 @@ "devDependencies": { "@substrate/dev": "^0.8.0", "@types/argparse": "2.0.16", - "@types/express": "^4.17.21", - "@types/express-serve-static-core": "^4.19.5", + "@types/express": "^5.0.0", + "@types/express-serve-static-core": "^5.0.0", "@types/http-errors": "2.0.4", "@types/lru-cache": "^7.10.10", "@types/morgan": "1.9.9", diff --git a/src/App.ts b/src/App.ts index 09efda324..2a79dcf2d 100644 --- a/src/App.ts +++ b/src/App.ts @@ -1,4 +1,4 @@ -// Copyright 2017-2022 Parity Technologies (UK) Ltd. +// Copyright 2017-2024 Parity Technologies (UK) Ltd. // This file is part of Substrate API Sidecar. // // Substrate API Sidecar is free software: you can redistribute it and/or modify @@ -97,15 +97,15 @@ export default class App { */ private initRoot() { // Set up a root route - this.app.get('/', (_req: Request, res: Response) => + this.app.get('/', (_req: Request, res: Response) => { res.send({ docs: 'https://paritytech.github.io/substrate-api-sidecar/dist', github: 'https://github.com/paritytech/substrate-api-sidecar', version: packageJson.version, listen: `${this.host}:${this.port}`, routes: this.getRoutes(), - }), - ); + }); + }); } /** diff --git a/src/controllers/AbstractControllers.spec.ts b/src/controllers/AbstractControllers.spec.ts index 51392e68d..9bb8af77c 100644 --- a/src/controllers/AbstractControllers.spec.ts +++ b/src/controllers/AbstractControllers.spec.ts @@ -1,4 +1,4 @@ -// Copyright 2017-2022 Parity Technologies (UK) Ltd. +// Copyright 2017-2024 Parity Technologies (UK) Ltd. // This file is part of Substrate API Sidecar. // // Substrate API Sidecar is free software: you can redistribute it and/or modify @@ -81,8 +81,8 @@ describe('AbstractController', () => { // eslint-disable-next-line @typescript-eslint/no-misused-promises AbstractController['catchWrap'](throws)(req, res, next), ).resolves.toBe(undefined); - expect(next).toBeCalledTimes(1); - expect(next).toBeCalledWith('Throwing'); + expect(next).toHaveBeenCalledTimes(1); + expect(next).toHaveBeenCalledWith('Throwing'); }); it('catches throw from a synchronous functions and calls next with error', async () => { @@ -98,27 +98,27 @@ describe('AbstractController', () => { // eslint-disable-next-line @typescript-eslint/await-thenable AbstractController['catchWrap'](throws)(req, res, next), ).resolves.toBe(undefined); - expect(next).toBeCalledTimes(1); - expect(next).toBeCalledWith('Throwing'); + expect(next).toHaveBeenCalledTimes(1); + expect(next).toHaveBeenCalledWith('Throwing'); }); it('handles a successful async callback appropriately', async () => { const next = jest.fn(); - const success = () => Promise.resolve().then(() => 'Great success!'); + const success = () => Promise.resolve().then(() => console.log('Great success!')); await expect( // eslint-disable-next-line @typescript-eslint/no-misused-promises AbstractController['catchWrap'](success)(req, res, next), ).resolves.toBe(undefined); - expect(next).not.toBeCalled(); + expect(next).not.toHaveBeenCalled(); }); it('handles a successful synchronous callback appropriately', async () => { const next = jest.fn(); - const success = () => 'Great success!'; + const success = () => console.log('Great success!'); await expect(AbstractController['catchWrap'](success)(req, res, next)).resolves.toBe(undefined); - expect(next).not.toBeCalled(); + expect(next).not.toHaveBeenCalled(); }); }); diff --git a/src/middleware/error/testTools.ts b/src/middleware/error/testTools.ts index fa81cb3d8..2c0c9fc64 100644 --- a/src/middleware/error/testTools.ts +++ b/src/middleware/error/testTools.ts @@ -1,4 +1,4 @@ -// Copyright 2017-2022 Parity Technologies (UK) Ltd. +// Copyright 2017-2024 Parity Technologies (UK) Ltd. // This file is part of Substrate API Sidecar. // // Substrate API Sidecar is free software: you can redistribute it and/or modify @@ -31,7 +31,7 @@ const mockReq = {} as Request; export const callsNextWithErr = (ware: ErrorRequestHandler) => (name: string, err: unknown): void => { - it(`calls next on error of type ${name}`, () => { + it(`calls next on error of type ${name}`, async () => { const next = jest.fn(); const send = jest.fn(); const status = jest.fn((_code: number) => { @@ -40,10 +40,10 @@ export const callsNextWithErr = }; }); - ware(err, mockReq, { headersSent: false, status } as unknown as Response, next); - expect(status).not.toBeCalled(); - expect(send).not.toBeCalled(); - expect(next).toBeCalledTimes(1); + await ware(err, mockReq, { headersSent: false, status } as unknown as Response, next); + expect(status).not.toHaveBeenCalled(); + expect(send).not.toHaveBeenCalled(); + expect(next).toHaveBeenCalledTimes(1); }); }; @@ -59,7 +59,7 @@ export const callsNextWithErr = export const catchesErrWithStatus = (ware: ErrorRequestHandler) => (name: string, err: unknown, code: number): void => { - it(`catches ${name} and sends status code ${code}`, () => { + it(`catches ${name} and sends status code ${code}`, async () => { const next = jest.fn(); const send = jest.fn(); const status = jest.fn((_code: number) => { @@ -68,11 +68,11 @@ export const catchesErrWithStatus = }; }); - ware(err, mockReq, { headersSent: false, status } as unknown as Response, next); - expect(send).toBeCalledTimes(1); - expect(status).toBeCalledWith<[number]>(code); - expect(status).toBeCalledTimes(1); - expect(next).not.toBeCalled(); + await ware(err, mockReq, { headersSent: false, status } as unknown as Response, next); + expect(send).toHaveBeenCalledTimes(1); + expect(status).toHaveBeenCalledWith<[number]>(code); + expect(status).toHaveBeenCalledTimes(1); + expect(next).not.toHaveBeenCalled(); }); }; @@ -89,7 +89,7 @@ export const catchesErrWithStatus = export const catchesErrWithResponse = (ware: ErrorRequestHandler) => (name: string, err: unknown, code: number, response: unknown): void => { - it(`catches ${name} and sends status code ${code}`, () => { + it(`catches ${name} and sends status code ${code}`, async () => { const next = jest.fn(); const send = jest.fn(); const status = jest.fn((_code: number) => { @@ -98,17 +98,17 @@ export const catchesErrWithResponse = }; }); - ware(err, mockReq, { headersSent: false, status } as unknown as Response, next); - expect(send).toBeCalledTimes(1); - expect(send).toBeCalledWith(response); - expect(status).toBeCalledWith<[number]>(code); - expect(status).toBeCalledTimes(1); - expect(next).not.toBeCalled(); + await ware(err, mockReq, { headersSent: false, status } as unknown as Response, next); + expect(send).toHaveBeenCalledTimes(1); + expect(send).toHaveBeenCalledWith(response); + expect(status).toHaveBeenCalledWith<[number]>(code); + expect(status).toHaveBeenCalledTimes(1); + expect(next).not.toHaveBeenCalled(); }); }; export function callsNextWithSentHeaders(ware: ErrorRequestHandler, err: unknown): void { - it('calls next if the headers have been sent', () => { + it('calls next if the headers have been sent', async () => { const next = jest.fn(); const send = jest.fn(); const status = jest.fn((_code: number) => { @@ -117,7 +117,7 @@ export function callsNextWithSentHeaders(ware: ErrorRequestHandler, err: unknown }; }); - ware(err, mockReq, { headersSent: true, status } as unknown as Response, next); + await ware(err, mockReq, { headersSent: true, status } as unknown as Response, next); expect(send).not.toBeCalled(); expect(status).not.toBeCalled(); expect(next).toBeCalledTimes(1); diff --git a/src/middleware/validate/util.ts b/src/middleware/validate/util.ts index 376574ec6..f675930e1 100644 --- a/src/middleware/validate/util.ts +++ b/src/middleware/validate/util.ts @@ -1,4 +1,4 @@ -// Copyright 2017-2022 Parity Technologies (UK) Ltd. +// Copyright 2017-2024 Parity Technologies (UK) Ltd. // This file is part of Substrate API Sidecar. // // Substrate API Sidecar is free software: you can redistribute it and/or modify @@ -24,11 +24,11 @@ import { RequestHandler } from 'express-serve-static-core'; * @param req Express Request containing thing it errors on. */ export const doesNotErrorWith = (name: string, req: Request, middleware: RequestHandler): void => { - it(`does not error with ${name}`, () => { + it(`does not error with ${name}`, async () => { const next = jest.fn(); - middleware(req, null as unknown as Response, next); - expect(next).toBeCalledTimes(1); - expect(next).toBeCalledWith(); + await middleware(req, null as unknown as Response, next); + expect(next).toHaveBeenCalledTimes(1); + expect(next).toHaveBeenCalledWith(); }); }; @@ -41,11 +41,11 @@ export const doesNotErrorWith = (name: string, req: Request, middleware: Request * @param err Expected error that it passes to next. */ export const errorsWith = (name: string, req: Request, err: unknown, middleware: RequestHandler): void => { - it(`errors with ${name}`, () => { + it(`errors with ${name}`, async () => { const next = jest.fn(); - middleware(req, null as unknown as Response, next); - expect(next).toBeCalledTimes(1); - expect(next).toBeCalledWith(err); + await middleware(req, null as unknown as Response, next); + expect(next).toHaveBeenCalledTimes(1); + expect(next).toHaveBeenCalledWith(err); }); }; diff --git a/src/services/accounts/AccountsBalanceInfoService.spec.ts b/src/services/accounts/AccountsBalanceInfoService.spec.ts index a1ecc7ad9..0574f2b4c 100644 --- a/src/services/accounts/AccountsBalanceInfoService.spec.ts +++ b/src/services/accounts/AccountsBalanceInfoService.spec.ts @@ -243,9 +243,9 @@ describe('AccountsBalanceInfoService', () => { ).tokenSymbol, ).toEqual('fOoToKeN'); - expect(mockTokensLocksAt).toBeCalled(); - expect(mockTokenAccountAt).toBeCalled(); - expect(mockBalancesLocksAt).not.toBeCalled(); + expect(mockTokensLocksAt).toHaveBeenCalled(); + expect(mockTokenAccountAt).toHaveBeenCalled(); + expect(mockBalancesLocksAt).not.toHaveBeenCalled(); }); it('does not query tokens pallet storage with the native token', async () => { @@ -263,9 +263,9 @@ describe('AccountsBalanceInfoService', () => { ).tokenSymbol, ).toEqual('doT'); - expect(mockTokensLocksAt).not.toBeCalled(); - expect(mockTokenAccountAt).not.toBeCalled(); - expect(mockBalancesLocksAt).toBeCalled(); + expect(mockTokensLocksAt).not.toHaveBeenCalled(); + expect(mockTokenAccountAt).not.toHaveBeenCalled(); + expect(mockBalancesLocksAt).toHaveBeenCalled(); }); }); }); diff --git a/yarn.lock b/yarn.lock index 336b8baab..93e9b7762 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1586,15 +1586,15 @@ __metadata: "@substrate/calc": "npm:^0.3.1" "@substrate/dev": "npm:^0.8.0" "@types/argparse": "npm:2.0.16" - "@types/express": "npm:^4.17.21" - "@types/express-serve-static-core": "npm:^4.19.5" + "@types/express": "npm:^5.0.0" + "@types/express-serve-static-core": "npm:^5.0.0" "@types/http-errors": "npm:2.0.4" "@types/lru-cache": "npm:^7.10.10" "@types/morgan": "npm:1.9.9" "@types/triple-beam": "npm:^1.3.5" argparse: "npm:^2.0.1" confmgr: "npm:^1.1.0" - express: "npm:^4.21.0" + express: "npm:^5.0.0" express-winston: "npm:^4.2.0" http-errors: "npm:^2.0.0" lru-cache: "npm:^11.0.1" @@ -1805,27 +1805,27 @@ __metadata: languageName: node linkType: hard -"@types/express-serve-static-core@npm:^4.17.33, @types/express-serve-static-core@npm:^4.19.5": - version: 4.19.5 - resolution: "@types/express-serve-static-core@npm:4.19.5" +"@types/express-serve-static-core@npm:^5.0.0": + version: 5.0.0 + resolution: "@types/express-serve-static-core@npm:5.0.0" dependencies: "@types/node": "npm:*" "@types/qs": "npm:*" "@types/range-parser": "npm:*" "@types/send": "npm:*" - checksum: 10/49350c6315eeb7d640e13e6138ba6005121b3b610b1e25746fccd5b86b559be810a4ba384b9bd7eee288975b5bd8cf67c1772c646254b812beaa488774eb5513 + checksum: 10/fc40cdeae61113d8b2335f4b0f9334a7a64388a0931f2e98f8fc9bdadd0b13b501a70da14c256ae4aa140db49bd2eff75a99a683266d561e62540784a61dc489 languageName: node linkType: hard -"@types/express@npm:^4.17.21": - version: 4.17.21 - resolution: "@types/express@npm:4.17.21" +"@types/express@npm:^5.0.0": + version: 5.0.0 + resolution: "@types/express@npm:5.0.0" dependencies: "@types/body-parser": "npm:*" - "@types/express-serve-static-core": "npm:^4.17.33" + "@types/express-serve-static-core": "npm:^5.0.0" "@types/qs": "npm:*" "@types/serve-static": "npm:*" - checksum: 10/7a6d26cf6f43d3151caf4fec66ea11c9d23166e4f3102edfe45a94170654a54ea08cf3103d26b3928d7ebcc24162c90488e33986b7e3a5f8941225edd5eb18c7 + checksum: 10/45b199ab669caa33e6badafeebf078e277ea95042309d325a04b1ec498f33d33fd5a4ae9c8e358342367b178fe454d7323c5dfc8002bf27070b210a2c6cc11f0 languageName: node linkType: hard @@ -2132,13 +2132,13 @@ __metadata: languageName: node linkType: hard -"accepts@npm:~1.3.8": - version: 1.3.8 - resolution: "accepts@npm:1.3.8" +"accepts@npm:^2.0.0": + version: 2.0.0 + resolution: "accepts@npm:2.0.0" dependencies: - mime-types: "npm:~2.1.34" - negotiator: "npm:0.6.3" - checksum: 10/67eaaa90e2917c58418e7a9b89392002d2b1ccd69bcca4799135d0c632f3b082f23f4ae4ddeedbced5aa59bcc7bdf4699c69ebed4593696c922462b7bc5744d6 + mime-types: "npm:^3.0.0" + negotiator: "npm:^1.0.0" + checksum: 10/ea1343992b40b2bfb3a3113fa9c3c2f918ba0f9197ae565c48d3f84d44b174f6b1d5cd9989decd7655963eb03a272abc36968cc439c2907f999bd5ef8653d5a7 languageName: node linkType: hard @@ -2312,10 +2312,10 @@ __metadata: languageName: node linkType: hard -"array-flatten@npm:1.1.1": - version: 1.1.1 - resolution: "array-flatten@npm:1.1.1" - checksum: 10/e13c9d247241be82f8b4ec71d035ed7204baa82fae820d4db6948d30d3c4a9f2b3905eb2eec2b937d4aa3565200bd3a1c500480114cff649fa748747d2a50feb +"array-flatten@npm:3.0.0": + version: 3.0.0 + resolution: "array-flatten@npm:3.0.0" + checksum: 10/e1b11b51c0e0f0b1315ddab1d8e1760bbc76b4387290f73232d71195aa93e3f55179c434cac48f2c1446c614758b073b059bb0b2b545b8f0ec4af0cae9dc4371 languageName: node linkType: hard @@ -2444,23 +2444,22 @@ __metadata: languageName: node linkType: hard -"body-parser@npm:1.20.3": - version: 1.20.3 - resolution: "body-parser@npm:1.20.3" +"body-parser@npm:^2.0.1": + version: 2.0.1 + resolution: "body-parser@npm:2.0.1" dependencies: bytes: "npm:3.1.2" content-type: "npm:~1.0.5" - debug: "npm:2.6.9" - depd: "npm:2.0.0" + debug: "npm:3.1.0" destroy: "npm:1.2.0" http-errors: "npm:2.0.0" - iconv-lite: "npm:0.4.24" + iconv-lite: "npm:0.5.2" on-finished: "npm:2.4.1" qs: "npm:6.13.0" - raw-body: "npm:2.5.2" + raw-body: "npm:^3.0.0" type-is: "npm:~1.6.18" unpipe: "npm:1.0.0" - checksum: 10/8723e3d7a672eb50854327453bed85ac48d045f4958e81e7d470c56bf111f835b97e5b73ae9f6393d0011cc9e252771f46fd281bbabc57d33d3986edf1e6aeca + checksum: 10/e9d9102bb2817d60d7b724f6b7aab3634c17ff6b22d4f103d1449bfdf2a5a5c21528eee32ce4894a40f861ddeec6b15964dce55cb02eb0326572cc4d15e99077 languageName: node linkType: hard @@ -2805,16 +2804,16 @@ __metadata: languageName: node linkType: hard -"content-disposition@npm:0.5.4": - version: 0.5.4 - resolution: "content-disposition@npm:0.5.4" +"content-disposition@npm:^1.0.0": + version: 1.0.0 + resolution: "content-disposition@npm:1.0.0" dependencies: safe-buffer: "npm:5.2.1" - checksum: 10/b7f4ce176e324f19324be69b05bf6f6e411160ac94bc523b782248129eb1ef3be006f6cff431aaea5e337fe5d176ce8830b8c2a1b721626ead8933f0cbe78720 + checksum: 10/0dcc1a2d7874526b0072df3011b134857b49d97a3bc135bb464a299525d4972de6f5f464fd64da6c4d8406d26a1ffb976f62afaffef7723b1021a44498d10e08 languageName: node linkType: hard -"content-type@npm:~1.0.4, content-type@npm:~1.0.5": +"content-type@npm:^1.0.5, content-type@npm:~1.0.4, content-type@npm:~1.0.5": version: 1.0.5 resolution: "content-type@npm:1.0.5" checksum: 10/585847d98dc7fb8035c02ae2cb76c7a9bd7b25f84c447e5ed55c45c2175e83617c8813871b4ee22f368126af6b2b167df655829007b21aa10302873ea9c62662 @@ -2835,10 +2834,10 @@ __metadata: languageName: node linkType: hard -"cookie-signature@npm:1.0.6": - version: 1.0.6 - resolution: "cookie-signature@npm:1.0.6" - checksum: 10/f4e1b0a98a27a0e6e66fd7ea4e4e9d8e038f624058371bf4499cfcd8f3980be9a121486995202ba3fca74fbed93a407d6d54d43a43f96fd28d0bd7a06761591a +"cookie-signature@npm:^1.2.1": + version: 1.2.1 + resolution: "cookie-signature@npm:1.2.1" + checksum: 10/b871138a81382173d51dde5c1c56e8b313bc4b9e5f2f67d0d63be50fd43b92a25cb9bd72c2fc2935c0c6cb6cce834e7e2fd12830d7ec289ccac5bdec19dd14eb languageName: node linkType: hard @@ -2900,7 +2899,16 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": +"debug@npm:3.1.0": + version: 3.1.0 + resolution: "debug@npm:3.1.0" + dependencies: + ms: "npm:2.0.0" + checksum: 10/f5fd4b1390dd3b03a78aa30133a4b4db62acc3e6cd86af49f114bf7f7bd57c41a5c5c2eced2ad2c8190d70c60309f2dd5782feeaa0704dbaa5697890e3c5ad07 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5": version: 4.3.7 resolution: "debug@npm:4.3.7" dependencies: @@ -2912,6 +2920,18 @@ __metadata: languageName: node linkType: hard +"debug@npm:4.3.6": + version: 4.3.6 + resolution: "debug@npm:4.3.6" + dependencies: + ms: "npm:2.1.2" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10/d3adb9af7d57a9e809a68f404490cf776122acca16e6359a2702c0f462e510e91f9765c07f707b8ab0d91e03bad57328f3256f5082631cefb5393d0394d50fb7 + languageName: node + linkType: hard + "dedent@npm:^1.0.0": version: 1.5.1 resolution: "dedent@npm:1.5.1" @@ -2963,7 +2983,7 @@ __metadata: languageName: node linkType: hard -"destroy@npm:1.2.0": +"destroy@npm:1.2.0, destroy@npm:^1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" checksum: 10/0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 @@ -3085,6 +3105,13 @@ __metadata: languageName: node linkType: hard +"encodeurl@npm:^2.0.0, encodeurl@npm:~2.0.0": + version: 2.0.0 + resolution: "encodeurl@npm:2.0.0" + checksum: 10/abf5cd51b78082cf8af7be6785813c33b6df2068ce5191a40ca8b1afe6a86f9230af9a9ce694a5ce4665955e5c1120871826df9c128a642e09c58d592e2807fe + languageName: node + linkType: hard + "encodeurl@npm:~1.0.2": version: 1.0.2 resolution: "encodeurl@npm:1.0.2" @@ -3092,13 +3119,6 @@ __metadata: languageName: node linkType: hard -"encodeurl@npm:~2.0.0": - version: 2.0.0 - resolution: "encodeurl@npm:2.0.0" - checksum: 10/abf5cd51b78082cf8af7be6785813c33b6df2068ce5191a40ca8b1afe6a86f9230af9a9ce694a5ce4665955e5c1120871826df9c128a642e09c58d592e2807fe - languageName: node - linkType: hard - "encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" @@ -3154,7 +3174,7 @@ __metadata: languageName: node linkType: hard -"escape-html@npm:~1.0.3": +"escape-html@npm:^1.0.3, escape-html@npm:~1.0.3": version: 1.0.3 resolution: "escape-html@npm:1.0.3" checksum: 10/6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 @@ -3340,7 +3360,7 @@ __metadata: languageName: node linkType: hard -"etag@npm:~1.8.1": +"etag@npm:^1.8.1, etag@npm:~1.8.1": version: 1.8.1 resolution: "etag@npm:1.8.1" checksum: 10/571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff @@ -3410,42 +3430,43 @@ __metadata: languageName: node linkType: hard -"express@npm:^4.21.0": - version: 4.21.0 - resolution: "express@npm:4.21.0" +"express@npm:^5.0.0": + version: 5.0.0 + resolution: "express@npm:5.0.0" dependencies: - accepts: "npm:~1.3.8" - array-flatten: "npm:1.1.1" - body-parser: "npm:1.20.3" - content-disposition: "npm:0.5.4" + accepts: "npm:^2.0.0" + body-parser: "npm:^2.0.1" + content-disposition: "npm:^1.0.0" content-type: "npm:~1.0.4" cookie: "npm:0.6.0" - cookie-signature: "npm:1.0.6" - debug: "npm:2.6.9" + cookie-signature: "npm:^1.2.1" + debug: "npm:4.3.6" depd: "npm:2.0.0" encodeurl: "npm:~2.0.0" escape-html: "npm:~1.0.3" etag: "npm:~1.8.1" - finalhandler: "npm:1.3.1" - fresh: "npm:0.5.2" + finalhandler: "npm:^2.0.0" + fresh: "npm:2.0.0" http-errors: "npm:2.0.0" - merge-descriptors: "npm:1.0.3" + merge-descriptors: "npm:^2.0.0" methods: "npm:~1.1.2" + mime-types: "npm:^3.0.0" on-finished: "npm:2.4.1" + once: "npm:1.4.0" parseurl: "npm:~1.3.3" - path-to-regexp: "npm:0.1.10" proxy-addr: "npm:~2.0.7" qs: "npm:6.13.0" range-parser: "npm:~1.2.1" + router: "npm:^2.0.0" safe-buffer: "npm:5.2.1" - send: "npm:0.19.0" - serve-static: "npm:1.16.2" + send: "npm:^1.1.0" + serve-static: "npm:^2.1.0" setprototypeof: "npm:1.2.0" statuses: "npm:2.0.1" - type-is: "npm:~1.6.18" + type-is: "npm:^2.0.0" utils-merge: "npm:1.0.1" vary: "npm:~1.1.2" - checksum: 10/3b1ee5bc5b1bd996f688702519cebc9b63a24e506965f6e1773268238cfa2c24ffdb38cc3fcb4fde66f77de1c0bebd9ee058dad06bb9c6f084b525f3c09164d3 + checksum: 10/279049949d2d5a963d250c4dd5c229aec4b56e57a43220d22e68e5316bc69c8576678fc2df817acd12cd54d1b8db41436ea6839623c36d5fdb65c31b1db81012 languageName: node linkType: hard @@ -3552,18 +3573,18 @@ __metadata: languageName: node linkType: hard -"finalhandler@npm:1.3.1": - version: 1.3.1 - resolution: "finalhandler@npm:1.3.1" +"finalhandler@npm:^2.0.0": + version: 2.0.0 + resolution: "finalhandler@npm:2.0.0" dependencies: debug: "npm:2.6.9" - encodeurl: "npm:~2.0.0" + encodeurl: "npm:~1.0.2" escape-html: "npm:~1.0.3" on-finished: "npm:2.4.1" parseurl: "npm:~1.3.3" statuses: "npm:2.0.1" unpipe: "npm:~1.0.0" - checksum: 10/4babe72969b7373b5842bc9f75c3a641a4d0f8eb53af6b89fa714d4460ce03fb92b28de751d12ba415e96e7e02870c436d67412120555e2b382640535697305b + checksum: 10/59b941fd40fcd2e173c858a47cccd493abf9709df54d5e06ef51be910957b6de7518af79110851f721e826dc246ce4456290d8dfe24a58b13488264690f76ed8 languageName: node linkType: hard @@ -3637,7 +3658,14 @@ __metadata: languageName: node linkType: hard -"fresh@npm:0.5.2": +"fresh@npm:2.0.0": + version: 2.0.0 + resolution: "fresh@npm:2.0.0" + checksum: 10/44e1468488363074641991c1340d2a10c5a6f6d7c353d89fd161c49d120c58ebf9890720f7584f509058385836e3ce50ddb60e9f017315a4ba8c6c3461813bfc + languageName: node + linkType: hard + +"fresh@npm:^0.5.2": version: 0.5.2 resolution: "fresh@npm:0.5.2" checksum: 10/64c88e489b5d08e2f29664eb3c79c705ff9a8eb15d3e597198ef76546d4ade295897a44abb0abd2700e7ef784b2e3cbf1161e4fbf16f59129193fd1030d16da1 @@ -3978,16 +4006,16 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" +"iconv-lite@npm:0.5.2": + version: 0.5.2 + resolution: "iconv-lite@npm:0.5.2" dependencies: safer-buffer: "npm:>= 2.1.2 < 3" - checksum: 10/6d3a2dac6e5d1fb126d25645c25c3a1209f70cceecc68b8ef51ae0da3cdc078c151fade7524a30b12a3094926336831fca09c666ef55b37e2c69638b5d6bd2e3 + checksum: 10/b48a1c8a173b638cb3d9a21674acbfed1c1fd8e81f6dc52e63cf44d3b56f37fd48f8ff81d93a71c8b60b4dfb464d3e87f606df5f8a0f0247c21737665059565c languageName: node linkType: hard -"iconv-lite@npm:^0.6.2": +"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: @@ -4153,6 +4181,13 @@ __metadata: languageName: node linkType: hard +"is-promise@npm:4.0.0": + version: 4.0.0 + resolution: "is-promise@npm:4.0.0" + checksum: 10/0b46517ad47b00b6358fd6553c83ec1f6ba9acd7ffb3d30a0bf519c5c69e7147c132430452351b8a9fc198f8dd6c4f76f8e6f5a7f100f8c77d57d9e0f4261a8a + languageName: node + linkType: hard + "is-stream@npm:^2.0.0": version: 2.0.1 resolution: "is-stream@npm:2.0.1" @@ -4957,10 +4992,17 @@ __metadata: languageName: node linkType: hard -"merge-descriptors@npm:1.0.3": - version: 1.0.3 - resolution: "merge-descriptors@npm:1.0.3" - checksum: 10/52117adbe0313d5defa771c9993fe081e2d2df9b840597e966aadafde04ae8d0e3da46bac7ca4efc37d4d2b839436582659cd49c6a43eacb3fe3050896a105d1 +"media-typer@npm:^1.1.0": + version: 1.1.0 + resolution: "media-typer@npm:1.1.0" + checksum: 10/a58dd60804df73c672942a7253ccc06815612326dc1c0827984b1a21704466d7cde351394f47649e56cf7415e6ee2e26e000e81b51b3eebb5a93540e8bf93cbd + languageName: node + linkType: hard + +"merge-descriptors@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-descriptors@npm:2.0.0" + checksum: 10/e383332e700a94682d0125a36c8be761142a1320fc9feeb18e6e36647c9edf064271645f5669b2c21cf352116e561914fd8aa831b651f34db15ef4038c86696a languageName: node linkType: hard @@ -5002,7 +5044,14 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": +"mime-db@npm:^1.53.0": + version: 1.53.0 + resolution: "mime-db@npm:1.53.0" + checksum: 10/82409c568a20254cc67a763a25e581d2213e1ef5d070a0af805239634f8a655f5d8a15138200f5f81c5b06fc6623d27f6168c612d447642d59e37eb7f20f7412 + languageName: node + linkType: hard + +"mime-types@npm:^2.1.35, mime-types@npm:~2.1.24": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -5011,12 +5060,12 @@ __metadata: languageName: node linkType: hard -"mime@npm:1.6.0": - version: 1.6.0 - resolution: "mime@npm:1.6.0" - bin: - mime: cli.js - checksum: 10/b7d98bb1e006c0e63e2c91b590fe1163b872abf8f7ef224d53dd31499c2197278a6d3d0864c45239b1a93d22feaf6f9477e9fc847eef945838150b8c02d03170 +"mime-types@npm:^3.0.0": + version: 3.0.0 + resolution: "mime-types@npm:3.0.0" + dependencies: + mime-db: "npm:^1.53.0" + checksum: 10/819584a951124b1cdee21e0c5515d174e1df018407b837297cef0da0620e4c0551336909fc3704166fca3a3fc141d19976bcc34e94eb720af04bbf4b50b43545 languageName: node linkType: hard @@ -5168,7 +5217,14 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 10/673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f + languageName: node + linkType: hard + +"ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: 10/aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -5182,13 +5238,20 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": +"negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: 10/2723fb822a17ad55c93a588a4bc44d53b22855bf4be5499916ca0cab1e7165409d0b288ba2577d7b029f10ce18cf2ed8e703e5af31c984e1e2304277ef979837 languageName: node linkType: hard +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 10/b5734e87295324fabf868e36fb97c84b7d7f3156ec5f4ee5bf6e488079c11054f818290fc33804cef7b1ee21f55eeb14caea83e7dafae6492a409b3e573153e5 + languageName: node + linkType: hard + "nock@npm:^13.5.4": version: 13.5.5 resolution: "nock@npm:13.5.5" @@ -5299,7 +5362,7 @@ __metadata: languageName: node linkType: hard -"on-finished@npm:2.4.1": +"on-finished@npm:2.4.1, on-finished@npm:^2.4.1": version: 2.4.1 resolution: "on-finished@npm:2.4.1" dependencies: @@ -5308,7 +5371,7 @@ __metadata: languageName: node linkType: hard -"once@npm:^1.3.0": +"once@npm:1.4.0, once@npm:^1.3.0": version: 1.4.0 resolution: "once@npm:1.4.0" dependencies: @@ -5422,7 +5485,7 @@ __metadata: languageName: node linkType: hard -"parseurl@npm:~1.3.3": +"parseurl@npm:^1.3.3, parseurl@npm:~1.3.3": version: 1.3.3 resolution: "parseurl@npm:1.3.3" checksum: 10/407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 @@ -5467,10 +5530,10 @@ __metadata: languageName: node linkType: hard -"path-to-regexp@npm:0.1.10": - version: 0.1.10 - resolution: "path-to-regexp@npm:0.1.10" - checksum: 10/894e31f1b20e592732a87db61fff5b95c892a3fe430f9ab18455ebe69ee88ef86f8eb49912e261f9926fc53da9f93b46521523e33aefd9cb0a7b0d85d7096006 +"path-to-regexp@npm:^8.0.0": + version: 8.2.0 + resolution: "path-to-regexp@npm:8.2.0" + checksum: 10/23378276a172b8ba5f5fb824475d1818ca5ccee7bbdb4674701616470f23a14e536c1db11da9c9e6d82b82c556a817bbf4eee6e41b9ed20090ef9427cbb38e13 languageName: node linkType: hard @@ -5644,22 +5707,22 @@ __metadata: languageName: node linkType: hard -"range-parser@npm:~1.2.1": +"range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": version: 1.2.1 resolution: "range-parser@npm:1.2.1" checksum: 10/ce21ef2a2dd40506893157970dc76e835c78cf56437e26e19189c48d5291e7279314477b06ac38abd6a401b661a6840f7b03bd0b1249da9b691deeaa15872c26 languageName: node linkType: hard -"raw-body@npm:2.5.2": - version: 2.5.2 - resolution: "raw-body@npm:2.5.2" +"raw-body@npm:^3.0.0": + version: 3.0.0 + resolution: "raw-body@npm:3.0.0" dependencies: bytes: "npm:3.1.2" http-errors: "npm:2.0.0" - iconv-lite: "npm:0.4.24" + iconv-lite: "npm:0.6.3" unpipe: "npm:1.0.0" - checksum: 10/863b5171e140546a4d99f349b720abac4410338e23df5e409cfcc3752538c9caf947ce382c89129ba976f71894bd38b5806c774edac35ebf168d02aa1ac11a95 + checksum: 10/2443429bbb2f9ae5c50d3d2a6c342533dfbde6b3173740b70fa0302b30914ff400c6d31a46b3ceacbe7d0925dc07d4413928278b494b04a65736fc17ca33e30c languageName: node linkType: hard @@ -5807,6 +5870,21 @@ __metadata: languageName: node linkType: hard +"router@npm:^2.0.0": + version: 2.0.0 + resolution: "router@npm:2.0.0" + dependencies: + array-flatten: "npm:3.0.0" + is-promise: "npm:4.0.0" + methods: "npm:~1.1.2" + parseurl: "npm:~1.3.3" + path-to-regexp: "npm:^8.0.0" + setprototypeof: "npm:1.2.0" + utils-merge: "npm:1.0.1" + checksum: 10/cb0b044f0672eca104239680ac16d2629809df41a886a07a5ec319c683ef3c09c4ac0c88a91de2cea3da7d314ea6054d9c35840851ab55a3c2230e9ba690a885 + languageName: node + linkType: hard + "run-parallel@npm:^1.1.9": version: 1.2.0 resolution: "run-parallel@npm:1.2.0" @@ -5871,36 +5949,35 @@ __metadata: languageName: node linkType: hard -"send@npm:0.19.0": - version: 0.19.0 - resolution: "send@npm:0.19.0" - dependencies: - debug: "npm:2.6.9" - depd: "npm:2.0.0" - destroy: "npm:1.2.0" - encodeurl: "npm:~1.0.2" - escape-html: "npm:~1.0.3" - etag: "npm:~1.8.1" - fresh: "npm:0.5.2" - http-errors: "npm:2.0.0" - mime: "npm:1.6.0" - ms: "npm:2.1.3" - on-finished: "npm:2.4.1" - range-parser: "npm:~1.2.1" - statuses: "npm:2.0.1" - checksum: 10/1f6064dea0ae4cbe4878437aedc9270c33f2a6650a77b56a16b62d057527f2766d96ee282997dd53ec0339082f2aad935bc7d989b46b48c82fc610800dc3a1d0 +"send@npm:^1.0.0, send@npm:^1.1.0": + version: 1.1.0 + resolution: "send@npm:1.1.0" + dependencies: + debug: "npm:^4.3.5" + destroy: "npm:^1.2.0" + encodeurl: "npm:^2.0.0" + escape-html: "npm:^1.0.3" + etag: "npm:^1.8.1" + fresh: "npm:^0.5.2" + http-errors: "npm:^2.0.0" + mime-types: "npm:^2.1.35" + ms: "npm:^2.1.3" + on-finished: "npm:^2.4.1" + range-parser: "npm:^1.2.1" + statuses: "npm:^2.0.1" + checksum: 10/5040d4d1e52a2a4634a3381a0c21be8115543be3ac0345b99c16d2510af2391968e1c4031ac3e1620cca6948f5ff888f39fa6515c4b6005c6c792c56300ea997 languageName: node linkType: hard -"serve-static@npm:1.16.2": - version: 1.16.2 - resolution: "serve-static@npm:1.16.2" +"serve-static@npm:^2.1.0": + version: 2.1.0 + resolution: "serve-static@npm:2.1.0" dependencies: - encodeurl: "npm:~2.0.0" - escape-html: "npm:~1.0.3" - parseurl: "npm:~1.3.3" - send: "npm:0.19.0" - checksum: 10/7fa9d9c68090f6289976b34fc13c50ac8cd7f16ae6bce08d16459300f7fc61fbc2d7ebfa02884c073ec9d6ab9e7e704c89561882bbe338e99fcacb2912fde737 + encodeurl: "npm:^2.0.0" + escape-html: "npm:^1.0.3" + parseurl: "npm:^1.3.3" + send: "npm:^1.0.0" + checksum: 10/ecb5969b66520e6546721454e72ee3fbe827fee16224a563d258d71ab68d9316991c81910b94bd2a7b75112669ef887068ab0ef66a4bf524ed8ed9c919a01de0 languageName: node linkType: hard @@ -6141,7 +6218,7 @@ __metadata: languageName: node linkType: hard -"statuses@npm:2.0.1": +"statuses@npm:2.0.1, statuses@npm:^2.0.1": version: 2.0.1 resolution: "statuses@npm:2.0.1" checksum: 10/18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb @@ -6540,6 +6617,17 @@ __metadata: languageName: node linkType: hard +"type-is@npm:^2.0.0": + version: 2.0.0 + resolution: "type-is@npm:2.0.0" + dependencies: + content-type: "npm:^1.0.5" + media-typer: "npm:^1.1.0" + mime-types: "npm:^3.0.0" + checksum: 10/056ae0e94fc7e01209f001d2b4506e39908d95e454aef6eefec7f8f252a00b15c6c0a9707fa3d4d6a83be8ea3ea95fe1d6cfd5bfe7ef90831b61875f5512f441 + languageName: node + linkType: hard + "type-is@npm:~1.6.18": version: 1.6.18 resolution: "type-is@npm:1.6.18" From bec7dbad981bec6ea2105c3d48e5edc783d11e29 Mon Sep 17 00:00:00 2001 From: Imod7 Date: Tue, 8 Oct 2024 13:25:48 +0200 Subject: [PATCH 2/3] update maintenance guide --- guides/MAINTENANCE.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/guides/MAINTENANCE.md b/guides/MAINTENANCE.md index 8d192ea0d..45685e95b 100644 --- a/guides/MAINTENANCE.md +++ b/guides/MAINTENANCE.md @@ -46,7 +46,12 @@ Review the security alerts raised by Dependabot [here](https://github.com/parity **NOTE**: This dependency is mentioned separately from the general ones because it is critical, requiring manual checks and thorough testing before updating. -**Frequency**: Monthly or longer. +### Express version +- Check if there is a new major version of [Express](https://github.com/expressjs/express). +- Update the version by running the command `yarn add express@^X.X.X`, e.g. `yarn add express@^5.0.0`. +- After upgrading, we can do the usual sanity checks (e.g. `yarn`, `yarn dedupe`, `yarn build`, `yarn lint --fix`). + +**Frequency**: Yearly or longer. ### Keep `substrate-js-dev` repository up to date Sidecar is using [substrate-js-dev](https://github.com/paritytech/substrate-js-dev) repository as a dependency. For instance, running `yarn lint` in sidecar triggers the `substrate-dev-run-lint` script which is defined [here](https://github.com/paritytech/substrate-js-dev/blob/58fe47c55610a797c2e780c5cfef0f3dd2fae7ca/scripts/substrate-dev-run-lint.cjs). Therefore, it is important to keep this repository's dependencies up to date as well. This can be done by running `yarn upgrade-interactive` and following the process mentioned in the previous step. Last, we would need to make a new release in that repository and then update the package version in Sidecar. @@ -113,3 +118,6 @@ The frequency is somewhat flexible. - Check Public instances of Sidecar. - Docker images of Sidecar. - Review repository branches. + +- Yearly + - Express version. From f869194945db2dfea1e232fced61d93f9c485c04 Mon Sep 17 00:00:00 2001 From: Imod7 Date: Tue, 8 Oct 2024 13:27:27 +0200 Subject: [PATCH 3/3] small nit --- guides/MAINTENANCE.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/guides/MAINTENANCE.md b/guides/MAINTENANCE.md index 45685e95b..cd768cbbb 100644 --- a/guides/MAINTENANCE.md +++ b/guides/MAINTENANCE.md @@ -46,6 +46,8 @@ Review the security alerts raised by Dependabot [here](https://github.com/parity **NOTE**: This dependency is mentioned separately from the general ones because it is critical, requiring manual checks and thorough testing before updating. +**Frequency**: Monthly or longer. + ### Express version - Check if there is a new major version of [Express](https://github.com/expressjs/express). - Update the version by running the command `yarn add express@^X.X.X`, e.g. `yarn add express@^5.0.0`.