Skip to content

Commit 3d4f4fc

Browse files
authored
deps: update root and package dependencies (#1264)
* update deps * update to TypeScript 6 * fix compile errors * api type fixes * fix assert in sindresorhus/env-paths@612c498#diff-e727e4bdf3657fd1d798edcd6b099d6e092f8573cba266154583a746bba0f346R51 * fix missing defaults for rate limiter * fix integration tests * update pnpm-lock.yaml * replace unmaintained eslint rules with perfectionist * run lint * fix test * style: resolve style guide violations [ci-lint-fix] * fix check
1 parent 09661a5 commit 3d4f4fc

676 files changed

Lines changed: 4002 additions & 3111 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

eslint.config.js

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import tseslint from "typescript-eslint";
2+
import perfectionist from "eslint-plugin-perfectionist";
23
import prettier from "eslint-plugin-prettier";
34
import promise from "eslint-plugin-promise";
4-
import simpleImportSort from "eslint-plugin-simple-import-sort";
55
import sonarjs from "eslint-plugin-sonarjs";
6-
import sortKeysFix from "eslint-plugin-sort-keys-fix";
76
import unicorn from "eslint-plugin-unicorn";
87
import unusedImports from "eslint-plugin-unused-imports";
98
import esImport from "eslint-plugin-import";
@@ -36,11 +35,10 @@ export default [
3635
},
3736
{
3837
plugins: {
38+
perfectionist,
3939
prettier: prettier,
4040
promise: promise,
41-
"simple-import-sort": simpleImportSort,
4241
sonarjs: sonarjs,
43-
"sort-keys-fix": sortKeysFix,
4442
unicorn: unicorn,
4543
"unused-imports": unusedImports,
4644
import: esImport,
@@ -111,6 +109,16 @@ export default [
111109
"no-unneeded-ternary": "warn",
112110
"no-unused-expressions": "off",
113111
"no-unused-vars": "off",
112+
"perfectionist/sort-imports": "warn",
113+
"perfectionist/sort-exports": "error",
114+
"perfectionist/sort-objects": [
115+
"warn",
116+
{
117+
type: "alphabetical",
118+
order: "asc",
119+
ignoreCase: false,
120+
},
121+
],
114122
"prefer-const": [
115123
"warn",
116124
{
@@ -125,8 +133,6 @@ export default [
125133
],
126134
"promise/always-return": "warn",
127135
"promise/param-names": "warn",
128-
"simple-import-sort/exports": "error",
129-
"simple-import-sort/imports": "warn",
130136
"sonarjs/cognitive-complexity": "warn",
131137
"sonarjs/no-all-duplicated-branches": "warn",
132138
"sonarjs/no-collapsible-if": "warn",
@@ -138,13 +144,6 @@ export default [
138144
"sonarjs/no-small-switch": "warn",
139145
"sonarjs/no-use-of-empty-return-value": "warn",
140146
"sonarjs/prefer-single-boolean-return": "off",
141-
"sort-keys-fix/sort-keys-fix": [
142-
"warn",
143-
"asc",
144-
{
145-
caseSensitive: true,
146-
},
147-
],
148147
"unicorn/consistent-destructuring": "warn",
149148
"unicorn/consistent-function-scoping": "warn",
150149
"unicorn/error-message": "warn",

package.json

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -44,36 +44,35 @@
4444
"workflows:unit": "node scripts/generate-unit-workflow.js"
4545
},
4646
"devDependencies": {
47-
"@eslint/compat": "^1.4.0",
48-
"@eslint/eslintrc": "^3.3.1",
49-
"@eslint/js": "^9.38.0",
47+
"@eslint/compat": "^2.0.3",
48+
"@eslint/eslintrc": "^3.3.5",
49+
"@eslint/js": "^10.0.1",
5050
"@types/node": "24.3.0",
51-
"c8": "10.1.3",
52-
"chalk": "5.6.0",
53-
"cross-env": "10.0.0",
51+
"c8": "11.0.0",
52+
"chalk": "5.6.2",
53+
"cross-env": "10.1.0",
5454
"depcheck": "1.4.7",
55-
"eslint": "9.38.0",
55+
"eslint": "10.1.0",
5656
"eslint-plugin-import": "2.32.0",
57-
"eslint-plugin-prettier": "5.5.4",
57+
"eslint-plugin-perfectionist": "5.7.0",
58+
"eslint-plugin-prettier": "5.5.5",
5859
"eslint-plugin-promise": "7.2.1",
59-
"eslint-plugin-simple-import-sort": "12.1.1",
60-
"eslint-plugin-sonarjs": "3.0.5",
61-
"eslint-plugin-sort-keys-fix": "1.1.2",
62-
"eslint-plugin-unicorn": "62.0.0",
63-
"eslint-plugin-unused-imports": "4.3.0",
60+
"eslint-plugin-sonarjs": "4.0.2",
61+
"eslint-plugin-unicorn": "64.0.0",
62+
"eslint-plugin-unused-imports": "4.4.1",
6463
"husky": "9.1.7",
6564
"lerna": "9.0.7",
66-
"lint-staged": "16.2.6",
65+
"lint-staged": "16.4.0",
6766
"madge": "8.0.0",
68-
"npm-check-updates": "18.0.2",
69-
"prettier": "3.6.2",
70-
"sort-package-json": "3.4.0",
71-
"tsx": "4.20.4",
72-
"typedoc": "0.28.10",
73-
"typescript": "5.9.2",
74-
"typescript-eslint": "^8.46.2",
67+
"npm-check-updates": "19.6.6",
68+
"prettier": "3.8.1",
69+
"sort-package-json": "3.6.1",
70+
"tsx": "4.21.0",
71+
"typedoc": "0.28.18",
72+
"typescript": "6.0.2",
73+
"typescript-eslint": "^8.58.0",
7574
"typesync": "0.14.3",
76-
"yaml": "2.8.1"
75+
"yaml": "2.8.3"
7776
},
7877
"pnpm": {
7978
"onlyBuiltDependencies": [

packages/api-common/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,25 +22,25 @@
2222
},
2323
"dependencies": {
2424
"@hapi/boom": "10.0.1",
25-
"@hapi/hapi": "21.4.3",
25+
"@hapi/hapi": "21.4.7",
2626
"@hapi/hoek": "11.0.7",
2727
"@mainsail/api-database": "workspace:*",
2828
"@mainsail/constants": "workspace:*",
2929
"@mainsail/container": "workspace:*",
3030
"@mainsail/exceptions": "workspace:*",
3131
"@mainsail/kernel": "workspace:*",
3232
"@mainsail/utils": "workspace:*",
33-
"ajv": "8.17.1",
34-
"joi": "18.0.0",
33+
"ajv": "8.18.0",
34+
"joi": "18.1.2",
3535
"micromatch": "4.0.8",
36-
"rate-limiter-flexible": "7.2.0"
36+
"rate-limiter-flexible": "10.0.1"
3737
},
3838
"devDependencies": {
3939
"@mainsail/contracts": "workspace:*",
4040
"@mainsail/test-runner": "workspace:*",
4141
"@types/ip": "1.1.3",
4242
"@types/micromatch": "4.0.10",
43-
"@types/semver": "7.7.0",
43+
"@types/semver": "7.7.1",
4444
"uvu": "0.5.6"
4545
},
4646
"engines": {

packages/api-common/source/controller.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,25 @@
1+
import type { Contracts } from "@mainsail/contracts";
2+
13
import Boom from "@hapi/boom";
2-
import Hapi from "@hapi/hapi";
34
import { Identifiers } from "@mainsail/constants";
45
import { inject, injectable } from "@mainsail/container";
5-
import type { Contracts } from "@mainsail/contracts";
66

77
import { SchemaObject } from "./schemas.js";
8+
import { HapiRequest, RequestQuery } from "./types.js";
89

910
@injectable()
1011
export abstract class AbstractController {
1112
@inject(Identifiers.Application.Instance)
1213
protected readonly app!: Contracts.Kernel.Application;
1314

14-
protected getQueryPagination(query: Hapi.RequestQuery): Contracts.Api.Pagination {
15+
protected getQueryPagination(query: RequestQuery): Contracts.Api.Pagination {
1516
return {
1617
limit: query.limit,
1718
offset: (query.page - 1) * query.limit || 0,
1819
};
1920
}
2021

21-
protected getQueryCriteria(query: Hapi.RequestQuery, schemaObject: SchemaObject): unknown {
22+
protected getQueryCriteria(query: RequestQuery, schemaObject: SchemaObject): unknown {
2223
const schemaObjectKeys = Object.keys(schemaObject);
2324
const criteria = {};
2425
for (const [key, value] of Object.entries(query)) {
@@ -29,7 +30,7 @@ export abstract class AbstractController {
2930
return criteria;
3031
}
3132

32-
protected getListingPage(request: Hapi.Request): Contracts.Api.Pagination {
33+
protected getListingPage(request: HapiRequest): Contracts.Api.Pagination {
3334
const pagination = {
3435
limit: request.query.limit || 100,
3536
offset: (request.query.page - 1) * request.query.limit || 0,
@@ -42,7 +43,7 @@ export abstract class AbstractController {
4243
return pagination;
4344
}
4445

45-
protected getListingOrder(request: Hapi.Request): Contracts.Api.Sorting {
46+
protected getListingOrder(request: HapiRequest): Contracts.Api.Sorting {
4647
if (!request.query.orderBy) {
4748
return [];
4849
}

packages/api-common/source/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ export * as Plugins from "./plugins/index.js";
33
export * as Schemas from "./schemas.js";
44
export * from "./server.js";
55
export * from "./service-provider.js";
6+
export * as Types from "./types.js";
67
export * as Validation from "./validation/index.js";

packages/api-common/source/plugins/comma-separated-query.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type Hapi from "@hapi/hapi";
2+
23
import { set } from "@mainsail/utils";
34

45
export const commaArrayQuery = {

packages/api-common/source/plugins/database-ready.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import type Hapi from "@hapi/hapi";
22
import type { Contracts as ApiDatabaseContracts } from "@mainsail/api-database";
3-
import { Identifiers as ApiDatabaseIdentifiers } from "@mainsail/api-database";
43
import type { Contracts } from "@mainsail/contracts";
54

5+
import { Identifiers as ApiDatabaseIdentifiers } from "@mainsail/api-database";
6+
67
export const databaseReady = {
78
getOnRequestHandler(app: Contracts.Kernel.Application) {
89
const systemRepository = app.get<ApiDatabaseContracts.SystemRepositoryFactory>(

packages/api-common/source/plugins/dot-separated-query.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type Hapi from "@hapi/hapi";
2+
23
import { set } from "@mainsail/utils";
34

45
export const dotSeparatedQuery = {

packages/api-common/source/plugins/pagination/extension.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
11
// Based on https://github.com/fknop/hapi-pagination
22

33
import type Hapi from "@hapi/hapi";
4-
import { applyToDefaults } from "@hapi/hoek";
54
import type { Utils } from "@mainsail/contracts";
5+
6+
import { applyToDefaults } from "@hapi/hoek";
67
import { assert, get } from "@mainsail/utils";
78
import Qs from "querystring";
89

10+
import type { HapiRequest } from "../../types.js";
11+
912
export class Extension {
1013
private readonly routePathPrefix = "/api";
1114
public constructor(private readonly config: object) {}
1215

13-
public isValidRoute(request: Hapi.Request): boolean {
16+
public isValidRoute(request: HapiRequest): boolean {
1417
return this.hasPagination(request);
1518
}
1619

17-
public onPreHandler(request: Hapi.Request, h: Hapi.ResponseToolkit): Hapi.Lifecycle.ReturnValue {
20+
public onPreHandler(request: HapiRequest, h: Hapi.ResponseToolkit): Hapi.Lifecycle.ReturnValue {
1821
if (this.isValidRoute(request)) {
1922
const setParameter = (name, defaultValue) => {
2023
let value;
@@ -38,7 +41,7 @@ export class Extension {
3841
return h.continue;
3942
}
4043

41-
public onPostHandler(request: Hapi.Request, h: Hapi.ResponseToolkit): Hapi.Lifecycle.ReturnValue {
44+
public onPostHandler(request: HapiRequest, h: Hapi.ResponseToolkit): Hapi.Lifecycle.ReturnValue {
4245
if ("isBoom" in request.response) {
4346
return h.continue;
4447
}
@@ -102,7 +105,7 @@ export class Extension {
102105
self: getUri(currentPage),
103106
totalCount: totalCount ? totalCount : 0,
104107
},
105-
// eslint-disable-next-line sort-keys-fix/sort-keys-fix
108+
// eslint-disable-next-line perfectionist/sort-objects
106109
data: results,
107110
};
108111

@@ -122,7 +125,7 @@ export class Extension {
122125
return h.continue;
123126
}
124127

125-
public hasPagination(request: Hapi.Request): boolean {
128+
public hasPagination(request: HapiRequest): boolean {
126129
const pagination = this.getRoutePaginationOptions(request);
127130

128131
if (!pagination) {
@@ -132,7 +135,7 @@ export class Extension {
132135
return pagination.enabled !== undefined ? pagination.enabled : true;
133136
}
134137

135-
private getRoutePaginationOptions(request: Hapi.Request): { enabled: boolean } | undefined {
138+
private getRoutePaginationOptions(request: HapiRequest): { enabled: boolean } | undefined {
136139
const { plugins } = request.route.settings;
137140
if (!plugins) {
138141
return undefined;
Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
// Based on https://github.com/fknop/hapi-pagination
22

33
import type { Contracts } from "@mainsail/contracts";
4-
import { assert } from "@mainsail/utils";
54
import type Joi from "joi";
65

6+
import { assert } from "@mainsail/utils";
7+
8+
import type { HapiRequest } from "../../types.js";
9+
710
import { getConfig } from "./config.js";
811
import { Extension } from "./extension.js";
912

1013
export const pagination = {
1114
name: "hapi-pagination",
1215
register(server: Contracts.Api.ApiServer, options: Joi.ValidationOptions): void {
13-
const { error, config } = getConfig(options);
16+
const { config, error } = getConfig(options);
1417

1518
if (error) {
1619
throw error;
@@ -19,8 +22,8 @@ export const pagination = {
1922
assert.defined(config);
2023
const extension = new Extension(config);
2124

22-
server.ext("onPreHandler", (request, h) => extension.onPreHandler(request, h));
23-
server.ext("onPostHandler", (request, h) => extension.onPostHandler(request, h));
25+
server.ext("onPreHandler", (request, h) => extension.onPreHandler(request as unknown as HapiRequest, h));
26+
server.ext("onPostHandler", (request, h) => extension.onPostHandler(request as unknown as HapiRequest, h));
2427
},
2528
version: "1.0.0",
2629
};

0 commit comments

Comments
 (0)