From 83ff3e48fd0d3b77fb918153e59d27e9e08c4051 Mon Sep 17 00:00:00 2001 From: Konstantin Knyazev <29006524+sckv@users.noreply.github.com> Date: Thu, 25 Dec 2025 21:45:59 +0100 Subject: [PATCH] misc: fix imports for nodenext modules --- jest.config.cjs | 1 + src/__tests__/context/context.test.ts | 2 +- src/__tests__/logger/serializers.test.ts | 2 +- src/__tests__/request.test.ts | 2 +- src/__tests__/server.integration.test.ts | 4 ++-- src/__tests__/server.middlewares.test.ts | 2 +- src/__tests__/server.routes.test.ts | 2 +- src/__tests__/server.websockets.test.ts | 2 +- src/bench/baretest.ts | 2 +- src/context/index.ts | 2 +- src/examples/bare-http.ts | 2 +- src/index.ts | 10 +++++----- src/logger/index.ts | 4 ++-- src/logger/serializers.ts | 2 +- src/middlewares/cookies/cookie-manager.ts | 6 +++--- src/middlewares/cors/cors.ts | 4 ++-- src/request.ts | 14 ++++++++------ src/schemas/custom-schema.ts | 4 ++-- src/schemas/dirty-tsm.ts | 4 ++-- src/schemas/generator.ts | 6 +++--- src/schemas/json-schema.ts | 9 ++++++--- src/schemas/openami-schema.ts | 9 ++++++--- src/server.ts | 18 +++++++++--------- src/utils/index.ts | 8 ++++---- src/websocket.ts | 4 ++-- tsconfig.json | 4 ++-- 26 files changed, 69 insertions(+), 60 deletions(-) diff --git a/jest.config.cjs b/jest.config.cjs index 93807ce..2aacaef 100644 --- a/jest.config.cjs +++ b/jest.config.cjs @@ -6,6 +6,7 @@ module.exports = { }, moduleNameMapper: { '^callsites$': '/src/__tests__/__mocks__/callsites.cjs', + '^(\\.{1,2}/.*)\\.js$': '$1', }, collectCoverageFrom: ['/src/**/*.ts'], coveragePathIgnorePatterns: ['/src/examples'], diff --git a/src/__tests__/context/context.test.ts b/src/__tests__/context/context.test.ts index 2e14c02..133777f 100644 --- a/src/__tests__/context/context.test.ts +++ b/src/__tests__/context/context.test.ts @@ -1,4 +1,4 @@ -import { context, enableContext, newContext } from '../../context/index'; +import { context, enableContext, newContext } from '../../context/index.js'; test("Do not create execution if it's not enabled", () => { newContext('newContext'); diff --git a/src/__tests__/logger/serializers.test.ts b/src/__tests__/logger/serializers.test.ts index 4eb4470..c169bce 100644 --- a/src/__tests__/logger/serializers.test.ts +++ b/src/__tests__/logger/serializers.test.ts @@ -1,4 +1,4 @@ -import { getStatusLevel, parseError, serializeHttp, serializeLog } from '../../logger/serializers'; +import { getStatusLevel, parseError, serializeHttp, serializeLog } from '../../logger/serializers.js'; describe('logger - loglevel', () => { test('Correctly gets http log level from the returning http status <300', () => { diff --git a/src/__tests__/request.test.ts b/src/__tests__/request.test.ts index 2ea8827..2726e1d 100644 --- a/src/__tests__/request.test.ts +++ b/src/__tests__/request.test.ts @@ -1,4 +1,4 @@ -import { BareRequest } from '../request'; +import { BareRequest } from '../request.js'; import { IncomingMessage, ServerResponse } from 'http'; import { Socket } from 'net'; diff --git a/src/__tests__/server.integration.test.ts b/src/__tests__/server.integration.test.ts index caf50e9..23ece7f 100644 --- a/src/__tests__/server.integration.test.ts +++ b/src/__tests__/server.integration.test.ts @@ -1,7 +1,7 @@ import axios from 'axios'; -import { context } from '../context'; -import { BareHttp } from '../server'; +import { context } from '../context/index.js'; +import { BareHttp } from '../server.js'; test('Enables context in the settings', async () => { const app = new BareHttp({ context: true, setRandomPort: true }); diff --git a/src/__tests__/server.middlewares.test.ts b/src/__tests__/server.middlewares.test.ts index 3a50c2e..8ed1c4c 100644 --- a/src/__tests__/server.middlewares.test.ts +++ b/src/__tests__/server.middlewares.test.ts @@ -1,6 +1,6 @@ import axios from 'axios'; -import { BareHttp } from '../server'; +import { BareHttp } from '../server.js'; jest.spyOn(console, 'log'); diff --git a/src/__tests__/server.routes.test.ts b/src/__tests__/server.routes.test.ts index 4487050..bac5073 100644 --- a/src/__tests__/server.routes.test.ts +++ b/src/__tests__/server.routes.test.ts @@ -1,6 +1,6 @@ import axios from 'axios'; -import { BareHttp } from '../server'; +import { BareHttp } from '../server.js'; // test('Registers a route with a handler', () => { // const app = new BareHttp({ setRandomPort: true }); diff --git a/src/__tests__/server.websockets.test.ts b/src/__tests__/server.websockets.test.ts index 3db1bde..e21c839 100644 --- a/src/__tests__/server.websockets.test.ts +++ b/src/__tests__/server.websockets.test.ts @@ -1,4 +1,4 @@ -import { BareHttp } from '../server'; +import { BareHttp } from '../server.js'; test('Starts and shut downs the server with ws', async () => { const app = new BareHttp({ setRandomPort: true }); diff --git a/src/bench/baretest.ts b/src/bench/baretest.ts index 2aa8bec..69d21d3 100644 --- a/src/bench/baretest.ts +++ b/src/bench/baretest.ts @@ -1,4 +1,4 @@ -import { BareHttp } from '../index'; +import { BareHttp } from '../index.js'; const brt = new BareHttp({ logging: false }); diff --git a/src/context/index.ts b/src/context/index.ts index 6d355c5..2a7f298 100644 --- a/src/context/index.ts +++ b/src/context/index.ts @@ -1,4 +1,4 @@ -import { Execution } from './execution'; +import { Execution } from './execution.js'; import asyncHooks from 'async_hooks'; diff --git a/src/examples/bare-http.ts b/src/examples/bare-http.ts index 0afc1fa..7a6f62c 100644 --- a/src/examples/bare-http.ts +++ b/src/examples/bare-http.ts @@ -1,4 +1,4 @@ -import { BareHttp } from '../index'; +import { BareHttp } from '../index.js'; const app = new BareHttp({ logging: false, diff --git a/src/index.ts b/src/index.ts index a7e30c7..c3a3e2f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,5 @@ -export { BareHttp } from './server'; -export type { BareHttpType } from './server'; -export type { BareRequest } from './request'; -export { context } from './context'; -export { logMe } from './logger'; +export { BareHttp } from './server.js'; +export type { BareHttpType } from './server.js'; +export type { BareRequest } from './request.js'; +export { context } from './context/index.js'; +export { logMe } from './logger/index.js'; diff --git a/src/logger/index.ts b/src/logger/index.ts index 3b45714..72b69fe 100644 --- a/src/logger/index.ts +++ b/src/logger/index.ts @@ -1,8 +1,8 @@ import pino, { destination } from 'pino'; -import { serializeLog, serializeHttp } from './serializers'; +import { serializeLog, serializeHttp } from './serializers.js'; -import { envs } from '../env'; +import { envs } from '../env.js'; const asyncDest = envs.isProd ? [destination({ sync: false })] : []; diff --git a/src/logger/serializers.ts b/src/logger/serializers.ts index 6ce2202..e1e2535 100644 --- a/src/logger/serializers.ts +++ b/src/logger/serializers.ts @@ -1,6 +1,6 @@ import callsites from 'callsites'; -import { context } from '../context'; +import { context } from '../context/index.js'; import util from 'util'; import type { IncomingMessage, ServerResponse } from 'http'; diff --git a/src/middlewares/cookies/cookie-manager.ts b/src/middlewares/cookies/cookie-manager.ts index 72e6205..9309e67 100644 --- a/src/middlewares/cookies/cookie-manager.ts +++ b/src/middlewares/cookies/cookie-manager.ts @@ -1,9 +1,9 @@ import { serialize, type ParseOptions, type SerializeOptions } from 'cookie'; -import { secretsOperator } from './signer'; +import { secretsOperator } from './signer.js'; -import { logMe } from '../../logger'; -import type { BareRequest } from '../../request'; +import { logMe } from '../../logger/index.js'; +import type { BareRequest } from '../../request.js'; export type CookiesManagerOptions = Omit & { expires?: Date | number; diff --git a/src/middlewares/cors/cors.ts b/src/middlewares/cors/cors.ts index e20e5c2..fd98894 100644 --- a/src/middlewares/cors/cors.ts +++ b/src/middlewares/cors/cors.ts @@ -1,7 +1,7 @@ 'use strict'; -import type { HttpMethodsUnionUppercase } from '../../utils'; -import type { BareRequest } from '../../request'; +import type { HttpMethodsUnionUppercase } from '../../utils/index.js'; +import type { BareRequest } from '../../request.js'; import type { IncomingMessage } from 'http'; diff --git a/src/request.ts b/src/request.ts index 35a774f..f185db7 100644 --- a/src/request.ts +++ b/src/request.ts @@ -1,10 +1,10 @@ import hyperid from 'hyperid'; -import { StatusCodes, StatusCodesUnion, StatusPhrases } from './utils/'; -import { JSONParse, JSONStringify } from './utils/safe-json'; -import { logHttp, logMe } from './logger'; -import { ContentType } from './utils/content-type'; -import { CookiesManager, CookiesManagerOptions } from './middlewares/cookies/cookie-manager'; +import { StatusCodes, StatusCodesUnion, StatusPhrases } from './utils/index.js'; +import { JSONParse, JSONStringify } from './utils/safe-json.js'; +import { logHttp, logMe } from './logger/index.js'; +import { ContentType } from './utils/content-type.js'; +import { CookiesManager, CookiesManagerOptions } from './middlewares/cookies/cookie-manager.js'; import { types } from 'util'; import { Writable } from 'stream'; @@ -36,7 +36,9 @@ export type CacheOpts = { revalidation?: Revalidation; }; -const statusTuples = Object.entries(StatusCodes).reduce((acc, [name, status]) => { +const statusTuples = (Object.entries(StatusCodes) as Array< + [keyof typeof StatusCodes, StatusCodesUnion] +>).reduce((acc, [name, status]) => { acc[status] = StatusPhrases[name]; return acc; }, {} as Codes); diff --git a/src/schemas/custom-schema.ts b/src/schemas/custom-schema.ts index 330aa38..7650ae4 100644 --- a/src/schemas/custom-schema.ts +++ b/src/schemas/custom-schema.ts @@ -1,4 +1,4 @@ -import find from 'lodash/find'; +import find from 'lodash/find.js'; import { ts, Type } from 'ts-morph'; import { @@ -7,7 +7,7 @@ import { helpers, isFinalType, isNullType, -} from './helpers'; +} from './helpers.js'; // (type: X, is: K): type is T // export const customTypeIs = < diff --git a/src/schemas/dirty-tsm.ts b/src/schemas/dirty-tsm.ts index d4820cc..3b8d56f 100644 --- a/src/schemas/dirty-tsm.ts +++ b/src/schemas/dirty-tsm.ts @@ -1,7 +1,7 @@ import { ClassMemberTypes, Node, Project, SyntaxList, ts, Type } from 'ts-morph'; -import { generateCustomSchema } from './custom-schema'; -import { isFinalType, logInternals } from './helpers'; +import { generateCustomSchema } from './custom-schema.js'; +import { isFinalType, logInternals } from './helpers.js'; const project = new Project({ tsConfigFilePath: 'tsconfig.json' }); project.enableLogging(); diff --git a/src/schemas/generator.ts b/src/schemas/generator.ts index 5cedc84..0bc4184 100644 --- a/src/schemas/generator.ts +++ b/src/schemas/generator.ts @@ -1,8 +1,8 @@ import { ClassMemberTypes, Node, Project, ReferenceEntry, SyntaxList, ts, Type } from 'ts-morph'; -import { generateCustomSchema } from './custom-schema'; -import { isFinalType, isHandler, isRoute } from './helpers'; -import { convertToJsonSchema } from './json-schema'; +import { generateCustomSchema } from './custom-schema.js'; +import { isFinalType, isHandler, isRoute } from './helpers.js'; +import { convertToJsonSchema } from './json-schema.js'; import path from 'path'; import { existsSync } from 'fs'; diff --git a/src/schemas/json-schema.ts b/src/schemas/json-schema.ts index 3750859..47e209f 100644 --- a/src/schemas/json-schema.ts +++ b/src/schemas/json-schema.ts @@ -1,4 +1,4 @@ -import { ArraySchemaType, CustomSchema, ObjectSchemaType, UnionSchemaType } from './custom-schema'; +import { ArraySchemaType, CustomSchema, ObjectSchemaType, UnionSchemaType } from './custom-schema.js'; export const convertToJsonSchema = (schema: CustomSchema) => { if (schema.type === 'string') { @@ -32,12 +32,15 @@ export const convertToJsonSchema = (schema: CustomSchema) => { return acc; }, {} as any); - const required = Object.entries(reSchema.properties).reduce((acc, [key, value]) => { + const required = (Object.entries(reSchema.properties) as Array<[string, CustomSchema]>).reduce( + (acc, [key, value]) => { if (!value.nullable) { acc.push(key); } return acc; - }, [] as string[]); + }, + [] as string[], + ); return { required, diff --git a/src/schemas/openami-schema.ts b/src/schemas/openami-schema.ts index 8f66bfc..2442c68 100644 --- a/src/schemas/openami-schema.ts +++ b/src/schemas/openami-schema.ts @@ -1,4 +1,4 @@ -import { ArraySchemaType, CustomSchema, ObjectSchemaType, UnionSchemaType } from './custom-schema'; +import { ArraySchemaType, CustomSchema, ObjectSchemaType, UnionSchemaType } from './custom-schema.js'; const createRouteSchema = (route: string, method: string, openApiSchema: any) => ({ [route]: { @@ -43,12 +43,15 @@ export const convertToOpenApiSchema = (schema: CustomSchema, route?: string, met return acc; }, {} as any); - const required = Object.entries(reSchema.properties).reduce((acc, [key, value]) => { + const required = (Object.entries(reSchema.properties) as Array<[string, CustomSchema]>).reduce( + (acc, [key, value]) => { if (!value.nullable) { acc.push(key); } return acc; - }, [] as string[]); + }, + [] as string[], + ); return { required, diff --git a/src/server.ts b/src/server.ts index e5ff8a5..24eccaf 100644 --- a/src/server.ts +++ b/src/server.ts @@ -1,21 +1,21 @@ import Router from 'find-my-way'; import { ServerOptions } from 'ws'; -import Ajv, { ValidateFunction } from 'ajv'; +import { Ajv, ValidateFunction } from 'ajv'; -import { BareRequest, CacheOpts } from './request'; -import { logMe } from './logger'; -import { context, enableContext, newContext } from './context'; -import { CookiesManagerOptions } from './middlewares/cookies/cookie-manager'; +import { BareRequest, CacheOpts } from './request.js'; +import { logMe } from './logger/index.js'; +import { context, enableContext, newContext } from './context/index.js'; +import { CookiesManagerOptions } from './middlewares/cookies/cookie-manager.js'; import { HttpMethods, HttpMethodsUnion, HttpMethodsUnionUppercase, StatusCodes, StatusCodesUnion, -} from './utils'; -import { Cors, CorsOptions } from './middlewares/cors/cors'; -import { WebSocketServer } from './websocket'; -import { generateRouteSchema } from './schemas/generator'; +} from './utils/index.js'; +import { Cors, CorsOptions } from './middlewares/cors/cors.js'; +import { WebSocketServer } from './websocket.js'; +import { generateRouteSchema } from './schemas/generator.js'; import dns from 'dns'; import { createServer, IncomingMessage, ServerResponse, Server } from 'http'; diff --git a/src/utils/index.ts b/src/utils/index.ts index ea0f392..c22d7a4 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,4 +1,4 @@ -export { StatusPhrases } from './status-phrases'; -export { StatusCodes, StatusCodesUnion } from './status-codes'; -export { HttpMethods, HttpMethodsUnion, HttpMethodsUnionUppercase } from './http-methods'; -export { JSONStringify, JSONParse } from './safe-json'; +export { StatusPhrases } from './status-phrases.js'; +export { StatusCodes, StatusCodesUnion } from './status-codes.js'; +export { HttpMethods, HttpMethodsUnion, HttpMethodsUnionUppercase } from './http-methods.js'; +export { JSONStringify, JSONParse } from './safe-json.js'; diff --git a/src/websocket.ts b/src/websocket.ts index 784d572..cbf38da 100644 --- a/src/websocket.ts +++ b/src/websocket.ts @@ -2,8 +2,8 @@ import WebSocket, { WebSocketServer as WServer, type MessageEvent, type ServerOp import callsites from 'callsites'; import hyperid from 'hyperid'; -import { logMe } from './logger'; -import { JSONParse, JSONStringify } from './utils'; +import { logMe } from './logger/index.js'; +import { JSONParse, JSONStringify } from './utils/index.js'; import { IncomingMessage, Server } from 'http'; import { Duplex } from 'stream'; diff --git a/tsconfig.json b/tsconfig.json index 7a722ca..bd71055 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,8 +2,8 @@ "compilerOptions": { "declaration": true, "downlevelIteration": true, - "module": "esnext", - "moduleResolution": "Node", + "module": "nodenext", + "moduleResolution": "nodenext", "outDir": "./lib", "target": "ESNext", "lib": ["ES2015", "ES2016", "ES2017", "ES2018", "ES2019", "ES2020", "ESNext"],