diff --git a/.github/workflows/headers.yml b/.github/workflows/headers.yml index abc9038571..692449caac 100644 --- a/.github/workflows/headers.yml +++ b/.github/workflows/headers.yml @@ -6,7 +6,7 @@ on: - cron: "0 0 * * 0" # Runs every Sunday at midnight UTC permissions: - contents: write # Grants write access to push changes + contents: write # Grants write access to push changes pull-requests: write # and create PRs jobs: @@ -31,7 +31,7 @@ jobs: run: pnpm install - name: Check for new headers on IANA.ORG - run: pnpm unrun tools/headers.ts + run: pnpm node tools/headers.ts - name: Check for changes id: git-state diff --git a/README.md b/README.md index c59dbee79e..93e59ab9ed 100644 --- a/README.md +++ b/README.md @@ -243,7 +243,7 @@ const helloWorldEndpoint = defaultEndpointsFactory.build({ Connect your endpoint to the `/v1/hello` route: ```ts -import { Routing } from "express-zod-api"; +import type { Routing } from "express-zod-api"; const routing: Routing = { v1: { @@ -1218,7 +1218,7 @@ purpose, the `.deprecated()` method is available on each schema and `Endpoint`, You can also deprecate all routes the `Endpoint` assigned to by setting `EndpointsFactory::build({ deprecated: true })`. ```ts -import { Routing } from "express-zod-api"; +import type { Routing } from "express-zod-api"; import { z } from "zod"; const someEndpoint = factory.build({ diff --git a/compat-test/quick-start.spec.ts b/compat-test/quick-start.spec.ts index 12658ed174..089a9eb359 100644 --- a/compat-test/quick-start.spec.ts +++ b/compat-test/quick-start.spec.ts @@ -8,14 +8,14 @@ import { expect, test, } from "vitest"; -import { givePort } from "../tools/ports"; +import { givePort } from "../tools/ports.ts"; describe("ESM Test", async () => { let out = ""; const listener = (chunk: Buffer) => { out += chunk.toString(); }; - const quickStart = spawn("unrun", ["quick-start.ts"]); + const quickStart = spawn("node", ["quick-start.ts"]); quickStart.stdout.on("data", listener); quickStart.stderr.on("data", listener); await vi.waitFor(() => assert(out.includes(`Listening`)), { timeout: 1e4 }); diff --git a/eslint.config.js b/eslint.config.js index 5bf6c30375..f4c0fc24d4 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -210,6 +210,7 @@ export default tsPlugin.config( curly: ["warn", "multi-or-nest", "consistent"], "@typescript-eslint/no-shadow": "warn", "no-restricted-syntax": ["warn", ...importConcerns], + "no-duplicate-imports": "warn", }, }, { @@ -274,6 +275,7 @@ export default tsPlugin.config( files: ["*-test/quick-start.ts", "example/example.client.ts"], rules: { "prettier/prettier": "off", + "no-duplicate-imports": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-empty-object-type": [ "error", diff --git a/esm-test/quick-start.spec.ts b/esm-test/quick-start.spec.ts index cc1daaf563..84994fb85e 100644 --- a/esm-test/quick-start.spec.ts +++ b/esm-test/quick-start.spec.ts @@ -1,12 +1,12 @@ import { spawn } from "node:child_process"; -import { givePort } from "../tools/ports"; +import { givePort } from "../tools/ports.ts"; describe("ESM Test", async () => { let out = ""; const listener = (chunk: Buffer) => { out += chunk.toString(); }; - const quickStart = spawn("unrun", ["quick-start.ts"]); + const quickStart = spawn("node", ["quick-start.ts"]); quickStart.stdout.on("data", listener); quickStart.stderr.on("data", listener); const port = givePort("esm"); diff --git a/example/config.ts b/example/config.ts index b9bcc7025e..1d262d4773 100644 --- a/example/config.ts +++ b/example/config.ts @@ -1,7 +1,7 @@ import { BuiltinLogger, createConfig } from "express-zod-api"; import ui from "swagger-ui-express"; import createHttpError from "http-errors"; -import { givePort } from "../tools/ports"; +import { givePort } from "../tools/ports.ts"; import qs from "qs"; export const config = createConfig({ diff --git a/example/endpoints/create-user.ts b/example/endpoints/create-user.ts index 0cbbba7893..b7b6f44cfd 100644 --- a/example/endpoints/create-user.ts +++ b/example/endpoints/create-user.ts @@ -1,7 +1,7 @@ import createHttpError from "http-errors"; import assert from "node:assert/strict"; import { z } from "zod"; -import { statusDependingFactory } from "../factories"; +import { statusDependingFactory } from "../factories.ts"; const namePart = z.string().regex(/^\w+$/); diff --git a/example/endpoints/delete-user.ts b/example/endpoints/delete-user.ts index e655a3e4ae..eb521ba951 100644 --- a/example/endpoints/delete-user.ts +++ b/example/endpoints/delete-user.ts @@ -1,7 +1,7 @@ import createHttpError from "http-errors"; import assert from "node:assert/strict"; import { z } from "zod"; -import { noContentFactory } from "../factories"; +import { noContentFactory } from "../factories.ts"; /** @desc The endpoint demonstrates no content response established by its factory */ export const deleteUserEndpoint = noContentFactory.buildVoid({ diff --git a/example/endpoints/list-users.ts b/example/endpoints/list-users.ts index b9844dfa3a..c5e919ef27 100644 --- a/example/endpoints/list-users.ts +++ b/example/endpoints/list-users.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import { arrayRespondingFactory } from "../factories"; +import { arrayRespondingFactory } from "../factories.ts"; const roleSchema = z.enum(["manager", "operator", "admin"]); diff --git a/example/endpoints/retrieve-user.ts b/example/endpoints/retrieve-user.ts index 9996d18f59..9ca550b3b3 100644 --- a/example/endpoints/retrieve-user.ts +++ b/example/endpoints/retrieve-user.ts @@ -2,7 +2,7 @@ import createHttpError from "http-errors"; import assert from "node:assert/strict"; import { z } from "zod"; import { defaultEndpointsFactory } from "express-zod-api"; -import { methodProviderMiddleware } from "../middlewares"; +import { methodProviderMiddleware } from "../middlewares.ts"; // Demonstrating circular schemas using z.object() const feature = z diff --git a/example/endpoints/send-avatar.ts b/example/endpoints/send-avatar.ts index 9bc91b442d..4ba078d78d 100644 --- a/example/endpoints/send-avatar.ts +++ b/example/endpoints/send-avatar.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import { fileSendingEndpointsFactory } from "../factories"; +import { fileSendingEndpointsFactory } from "../factories.ts"; import { readFile } from "node:fs/promises"; export const sendAvatarEndpoint = fileSendingEndpointsFactory.build({ diff --git a/example/endpoints/stream-avatar.ts b/example/endpoints/stream-avatar.ts index 677edc57b6..8c567313a4 100644 --- a/example/endpoints/stream-avatar.ts +++ b/example/endpoints/stream-avatar.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import { fileStreamingEndpointsFactory } from "../factories"; +import { fileStreamingEndpointsFactory } from "../factories.ts"; export const streamAvatarEndpoint = fileStreamingEndpointsFactory.build({ shortDescription: "Streams a file content.", diff --git a/example/endpoints/time-subscription.ts b/example/endpoints/time-subscription.ts index bc571a98d0..9416aedf47 100644 --- a/example/endpoints/time-subscription.ts +++ b/example/endpoints/time-subscription.ts @@ -1,6 +1,6 @@ import { z } from "zod"; import { setTimeout } from "node:timers/promises"; -import { eventsFactory } from "../factories"; +import { eventsFactory } from "../factories.ts"; /** @desc The endpoint demonstrates emitting server-sent events (SSE) */ export const subscriptionEndpoint = eventsFactory.buildVoid({ diff --git a/example/endpoints/update-user.ts b/example/endpoints/update-user.ts index 8f15b9fc11..0abc67df43 100644 --- a/example/endpoints/update-user.ts +++ b/example/endpoints/update-user.ts @@ -2,7 +2,7 @@ import createHttpError from "http-errors"; import assert from "node:assert/strict"; import { z } from "zod"; import { ez } from "express-zod-api"; -import { keyAndTokenAuthenticatedEndpointsFactory } from "../factories"; +import { keyAndTokenAuthenticatedEndpointsFactory } from "../factories.ts"; export const updateUserEndpoint = keyAndTokenAuthenticatedEndpointsFactory.build({ diff --git a/example/factories.ts b/example/factories.ts index 3486217b94..e637820165 100644 --- a/example/factories.ts +++ b/example/factories.ts @@ -7,7 +7,7 @@ import { EventStreamFactory, defaultEndpointsFactory, } from "express-zod-api"; -import { authMiddleware } from "./middlewares"; +import { authMiddleware } from "./middlewares.ts"; import { createReadStream } from "node:fs"; import { z } from "zod"; import { stat } from "node:fs/promises"; diff --git a/example/generate-client.ts b/example/generate-client.ts index 16f7e3057a..4d6ce87fec 100644 --- a/example/generate-client.ts +++ b/example/generate-client.ts @@ -1,7 +1,7 @@ import { writeFile } from "node:fs/promises"; import { Integration } from "express-zod-api"; -import { routing } from "./routing"; -import { config } from "./config"; +import { routing } from "./routing.ts"; +import { config } from "./config.ts"; import typescript from "typescript"; await writeFile( diff --git a/example/generate-documentation.ts b/example/generate-documentation.ts index 82f70845a1..badba033ca 100644 --- a/example/generate-documentation.ts +++ b/example/generate-documentation.ts @@ -1,8 +1,8 @@ import { writeFile } from "node:fs/promises"; import { Documentation } from "express-zod-api"; -import { config } from "./config"; -import { routing } from "./routing"; -import manifest from "./package.json"; +import { config } from "./config.ts"; +import { routing } from "./routing.ts"; +import manifest from "./package.json" with { type: "json" }; await writeFile( "example.documentation.yaml", diff --git a/example/index.spec.ts b/example/index.spec.ts index 76916f4e54..41a7d1c62d 100644 --- a/example/index.spec.ts +++ b/example/index.spec.ts @@ -1,11 +1,10 @@ -import assert from "node:assert/strict"; +import assert, { fail } from "node:assert/strict"; import { spawn } from "node:child_process"; import { createReadStream, readFileSync } from "node:fs"; -import { Client, Subscription } from "./example.client"; -import { givePort } from "../tools/ports"; +import { Client, Subscription } from "./example.client.ts"; +import { givePort } from "../tools/ports.ts"; import { createHash } from "node:crypto"; import { readFile } from "node:fs/promises"; -import { fail } from "node:assert"; describe("Example", async () => { let out = ""; @@ -13,7 +12,7 @@ describe("Example", async () => { out += chunk.toString(); }; const matchOut = (regExp: RegExp) => regExp.test(out); - const example = spawn("unrun", ["index.ts"]); + const example = spawn("node", ["index.ts"]); example.stdout.on("data", listener); const port = givePort("example"); await vi.waitFor(() => assert(out.includes(`Listening`)), { timeout: 1e4 }); diff --git a/example/index.ts b/example/index.ts index 9f62dc28d3..3292f7dfcf 100644 --- a/example/index.ts +++ b/example/index.ts @@ -1,6 +1,6 @@ import { createServer } from "express-zod-api"; -import { config } from "./config"; -import { routing } from "./routing"; +import { config } from "./config.ts"; +import { routing } from "./routing.ts"; /** * "await" is only needed for using entities returned from this method. diff --git a/example/middlewares.ts b/example/middlewares.ts index e3b68021f9..c4b922b764 100644 --- a/example/middlewares.ts +++ b/example/middlewares.ts @@ -1,7 +1,7 @@ import createHttpError from "http-errors"; import assert from "node:assert/strict"; import { z } from "zod"; -import { Method, Middleware } from "express-zod-api"; +import { Middleware, type Method } from "express-zod-api"; export const authMiddleware = new Middleware({ security: { diff --git a/example/package.json b/example/package.json index 0c87bc76f3..591b8fc7a4 100644 --- a/example/package.json +++ b/example/package.json @@ -4,10 +4,10 @@ "version": "0.0.0", "type": "module", "scripts": { - "start": "unrun index.ts", + "start": "node index.ts", "build": "pnpm build:docs && pnpm build:client", - "build:docs": "unrun generate-documentation.ts", - "build:client": "unrun generate-client.ts", + "build:docs": "node generate-documentation.ts", + "build:client": "node generate-client.ts", "pretest": "tsc", "test": "vitest run index.spec.ts" }, diff --git a/example/routing.ts b/example/routing.ts index 0bd924ba9c..0b9f2088cf 100644 --- a/example/routing.ts +++ b/example/routing.ts @@ -1,16 +1,16 @@ -import { Routing, ServeStatic } from "express-zod-api"; -import { rawAcceptingEndpoint } from "./endpoints/accept-raw"; -import { createUserEndpoint } from "./endpoints/create-user"; -import { deleteUserEndpoint } from "./endpoints/delete-user"; -import { listUsersEndpoint } from "./endpoints/list-users"; -import { listUsersPaginatedEndpoint } from "./endpoints/list-users-paginated"; -import { submitFeedbackEndpoint } from "./endpoints/submit-feedback"; -import { subscriptionEndpoint } from "./endpoints/time-subscription"; -import { uploadAvatarEndpoint } from "./endpoints/upload-avatar"; -import { retrieveUserEndpoint } from "./endpoints/retrieve-user"; -import { sendAvatarEndpoint } from "./endpoints/send-avatar"; -import { updateUserEndpoint } from "./endpoints/update-user"; -import { streamAvatarEndpoint } from "./endpoints/stream-avatar"; +import { type Routing, ServeStatic } from "express-zod-api"; +import { rawAcceptingEndpoint } from "./endpoints/accept-raw.ts"; +import { createUserEndpoint } from "./endpoints/create-user.ts"; +import { deleteUserEndpoint } from "./endpoints/delete-user.ts"; +import { listUsersEndpoint } from "./endpoints/list-users.ts"; +import { listUsersPaginatedEndpoint } from "./endpoints/list-users-paginated.ts"; +import { submitFeedbackEndpoint } from "./endpoints/submit-feedback.ts"; +import { subscriptionEndpoint } from "./endpoints/time-subscription.ts"; +import { uploadAvatarEndpoint } from "./endpoints/upload-avatar.ts"; +import { retrieveUserEndpoint } from "./endpoints/retrieve-user.ts"; +import { sendAvatarEndpoint } from "./endpoints/send-avatar.ts"; +import { updateUserEndpoint } from "./endpoints/update-user.ts"; +import { streamAvatarEndpoint } from "./endpoints/stream-avatar.ts"; export const routing: Routing = { v1: { diff --git a/express-zod-api/package.json b/express-zod-api/package.json index 3a30b69f57..b63f4d3bf3 100644 --- a/express-zod-api/package.json +++ b/express-zod-api/package.json @@ -16,7 +16,7 @@ "bugs": "https://github.com/RobinTail/express-zod-api/issues", "funding": "https://github.com/sponsors/RobinTail", "scripts": { - "build": "tsdown --config-loader unrun", + "build": "tsdown", "pretest": "tsc", "test": "vitest run --coverage", "bench": "vitest bench --run ./bench", diff --git a/express-zod-api/src/builtin-logger.ts b/express-zod-api/src/builtin-logger.ts index 1008bff276..f5b3c5f01b 100644 --- a/express-zod-api/src/builtin-logger.ts +++ b/express-zod-api/src/builtin-logger.ts @@ -1,13 +1,13 @@ import ansis from "ansis"; import { inspect } from "node:util"; import { performance } from "node:perf_hooks"; -import { FlatObject, isProduction } from "./common-helpers"; +import { isProduction, type FlatObject } from "./common-helpers"; import { - AbstractLogger, formatDuration, isHidden, - Severity, styles, + type AbstractLogger, + type Severity, } from "./logger-helpers"; interface Context extends FlatObject { diff --git a/express-zod-api/src/common-helpers.ts b/express-zod-api/src/common-helpers.ts index d727e4cc04..e0f1c9dec4 100644 --- a/express-zod-api/src/common-helpers.ts +++ b/express-zod-api/src/common-helpers.ts @@ -1,16 +1,16 @@ -import { Request } from "express"; +import type { Request } from "express"; import * as R from "ramda"; import { z } from "zod"; -import { CommonConfig, InputSource, InputSources } from "./config-type"; +import type { CommonConfig, InputSource, InputSources } from "./config-type"; import { contentTypes } from "./content-type"; import { - ClientMethod, - SomeMethod, + type ClientMethod, + type SomeMethod, + type Method, + type CORSMethod, isMethod, - Method, - CORSMethod, } from "./method"; -import { NormalizedResponse } from "./api-response"; +import type { NormalizedResponse } from "./api-response"; /** @since zod 3.25.61 output type fixed */ export const emptySchema = z.object({}); diff --git a/express-zod-api/src/config-type.ts b/express-zod-api/src/config-type.ts index 7b7f781703..d1b8c65852 100644 --- a/express-zod-api/src/config-type.ts +++ b/express-zod-api/src/config-type.ts @@ -1,14 +1,14 @@ import type compression from "compression"; -import { IRouter, Request, RequestHandler } from "express"; +import type { IRouter, Request, RequestHandler } from "express"; import type fileUpload from "express-fileupload"; -import { ServerOptions } from "node:https"; -import { BuiltinLoggerConfig } from "./builtin-logger"; -import { AbstractEndpoint } from "./endpoint"; -import { AbstractLogger, ActualLogger } from "./logger-helpers"; -import { Method } from "./method"; -import { AbstractResultHandler } from "./result-handler"; -import { ListenOptions } from "node:net"; -import { GetLogger } from "./server-helpers"; +import type { ServerOptions } from "node:https"; +import type { BuiltinLoggerConfig } from "./builtin-logger"; +import type { AbstractEndpoint } from "./endpoint"; +import type { AbstractLogger, ActualLogger } from "./logger-helpers"; +import type { Method } from "./method"; +import type { AbstractResultHandler } from "./result-handler"; +import type { ListenOptions } from "node:net"; +import type { GetLogger } from "./server-helpers"; export type InputSource = keyof Pick< Request, diff --git a/express-zod-api/src/deep-checks.ts b/express-zod-api/src/deep-checks.ts index 0b167ad15d..c2e7abfd2c 100644 --- a/express-zod-api/src/deep-checks.ts +++ b/express-zod-api/src/deep-checks.ts @@ -5,9 +5,9 @@ import { ezDateInBrand } from "./date-in-schema"; import { ezDateOutBrand } from "./date-out-schema"; import { DeepCheckError } from "./errors"; import { ezFormBrand } from "./form-schema"; -import { IOSchema } from "./io-schema"; +import type { IOSchema } from "./io-schema"; import { getBrand } from "@express-zod-api/zod-plugin"; -import { FirstPartyKind } from "./schema-walker"; +import type { FirstPartyKind } from "./schema-walker"; import { ezUploadBrand } from "./upload-schema"; import { ezRawBrand } from "./raw-schema"; diff --git a/express-zod-api/src/diagnostics.ts b/express-zod-api/src/diagnostics.ts index 6e96515b70..9f16116a83 100644 --- a/express-zod-api/src/diagnostics.ts +++ b/express-zod-api/src/diagnostics.ts @@ -1,11 +1,11 @@ import { z } from "zod"; import { responseVariants } from "./api-response"; -import { FlatObject, getRoutePathParams } from "./common-helpers"; +import { type FlatObject, getRoutePathParams } from "./common-helpers"; import { contentTypes } from "./content-type"; import { findJsonIncompatible } from "./deep-checks"; import { AbstractEndpoint } from "./endpoint"; import { flattenIO } from "./json-schema-helpers"; -import { ActualLogger } from "./logger-helpers"; +import type { ActualLogger } from "./logger-helpers"; import type { OnEndpoint } from "./routing-walker"; interface Findings { diff --git a/express-zod-api/src/documentation-helpers.ts b/express-zod-api/src/documentation-helpers.ts index cf1638e3c9..5981ba6974 100644 --- a/express-zod-api/src/documentation-helpers.ts +++ b/express-zod-api/src/documentation-helpers.ts @@ -1,49 +1,49 @@ import { - ExamplesObject, + type ExamplesObject, + type MediaTypeObject, + type OAuthFlowObject, + type ParameterObject, + type ReferenceObject, + type RequestBodyObject, + type ResponseObject, + type SchemaObject, + type SchemaObjectType, + type SecurityRequirementObject, + type SecuritySchemeObject, + type TagObject, isReferenceObject, isSchemaObject, - MediaTypeObject, - OAuthFlowObject, - ParameterObject, - ReferenceObject, - RequestBodyObject, - ResponseObject, - SchemaObject, - SchemaObjectType, - SecurityRequirementObject, - SecuritySchemeObject, - TagObject, } from "openapi3-ts/oas31"; import * as R from "ramda"; import { z } from "zod"; -import { NormalizedResponse, ResponseVariant } from "./api-response"; +import type { NormalizedResponse, ResponseVariant } from "./api-response"; import { ezBufferBrand } from "./buffer-schema"; import { + type FlatObject, + type Tag, shouldHaveContent, - FlatObject, getRoutePathParams, getTransformedType, isObject, isSchema, makeCleanId, routePathParamsRegex, - Tag, ucFirst, } from "./common-helpers"; -import { InputSource } from "./config-type"; +import type { InputSource } from "./config-type"; import { contentTypes } from "./content-type"; import { ezDateInBrand } from "./date-in-schema"; import { ezDateOutBrand } from "./date-out-schema"; import { DocumentationError } from "./errors"; -import { IOSchema } from "./io-schema"; +import type { IOSchema } from "./io-schema"; import { flattenIO } from "./json-schema-helpers"; -import { Alternatives } from "./logical-container"; +import type { Alternatives } from "./logical-container"; import { getBrand } from "@express-zod-api/zod-plugin"; -import { ClientMethod } from "./method"; -import { ProprietaryBrand } from "./proprietary-schemas"; +import type { ClientMethod } from "./method"; +import type { ProprietaryBrand } from "./proprietary-schemas"; import { ezRawBrand } from "./raw-schema"; -import { FirstPartyKind } from "./schema-walker"; -import { Security } from "./security"; +import type { FirstPartyKind } from "./schema-walker"; +import type { Security } from "./security"; import { ezUploadBrand } from "./upload-schema"; import wellKnownHeaders from "./well-known-headers"; diff --git a/express-zod-api/src/documentation.ts b/express-zod-api/src/documentation.ts index 173930cbe6..fb663354bd 100644 --- a/express-zod-api/src/documentation.ts +++ b/express-zod-api/src/documentation.ts @@ -1,20 +1,20 @@ import { + type OperationObject, + type ReferenceObject, + type ResponsesObject, + type SchemaObject, + type SecuritySchemeObject, + type SecuritySchemeType, OpenApiBuilder, - OperationObject, - ReferenceObject, - ResponsesObject, - SchemaObject, - SecuritySchemeObject, - SecuritySchemeType, } from "openapi3-ts/oas31"; import * as R from "ramda"; import { responseVariants } from "./api-response"; import { contentTypes } from "./content-type"; import { DocumentationError } from "./errors"; import { getInputSources, makeCleanId } from "./common-helpers"; -import { CommonConfig } from "./config-type"; +import type { CommonConfig } from "./config-type"; import { processContainers } from "./logical-container"; -import { ClientMethod } from "./method"; +import type { ClientMethod } from "./method"; import { depictBody, depictRequestParams, @@ -24,13 +24,13 @@ import { depictTags, ensureShortDescription, reformatParamsInPath, - IsHeader, nonEmpty, - BrandHandling, depictRequest, + type IsHeader, + type BrandHandling, } from "./documentation-helpers"; -import { Routing } from "./routing"; -import { OnEndpoint, walkRouting, withHead } from "./routing-walker"; +import type { Routing } from "./routing"; +import { walkRouting, withHead, type OnEndpoint } from "./routing-walker"; type Component = | "positiveResponse" diff --git a/express-zod-api/src/endpoint.ts b/express-zod-api/src/endpoint.ts index c8db21d4e5..a8c9ed744b 100644 --- a/express-zod-api/src/endpoint.ts +++ b/express-zod-api/src/endpoint.ts @@ -1,34 +1,37 @@ -import { Request, Response } from "express"; +import type { Request, Response } from "express"; import * as R from "ramda"; import { z, globalRegistry } from "zod"; -import { NormalizedResponse, ResponseVariant } from "./api-response"; +import type { NormalizedResponse, ResponseVariant } from "./api-response"; import { findRequestTypeDefiningSchema } from "./deep-checks"; import { - FlatObject, + type FlatObject, getActualMethod, getInput, ensureError, isSchema, } from "./common-helpers"; -import { CommonConfig } from "./config-type"; +import type { CommonConfig } from "./config-type"; import { InputValidationError, OutputValidationError, ResultHandlerError, } from "./errors"; import { ezFormBrand } from "./form-schema"; -import { IOSchema } from "./io-schema"; +import type { IOSchema } from "./io-schema"; import { lastResortHandler } from "./last-resort"; -import { ActualLogger } from "./logger-helpers"; -import { LogicalContainer } from "./logical-container"; +import type { ActualLogger } from "./logger-helpers"; +import type { LogicalContainer } from "./logical-container"; import { getBrand } from "@express-zod-api/zod-plugin"; -import { ClientMethod, CORSMethod, Method, SomeMethod } from "./method"; +import type { ClientMethod, CORSMethod, Method, SomeMethod } from "./method"; import { AbstractMiddleware, ExpressMiddleware } from "./middleware"; -import { ContentType } from "./content-type"; +import type { ContentType } from "./content-type"; import { ezRawBrand } from "./raw-schema"; -import { DiscriminatedResult, pullResponseExamples } from "./result-helpers"; -import { AbstractResultHandler } from "./result-handler"; -import { Security } from "./security"; +import { + type DiscriminatedResult, + pullResponseExamples, +} from "./result-helpers"; +import type { AbstractResultHandler } from "./result-handler"; +import type { Security } from "./security"; import { ezUploadBrand } from "./upload-schema"; import type { Routing } from "./routing"; diff --git a/express-zod-api/src/endpoints-factory.ts b/express-zod-api/src/endpoints-factory.ts index 99443e7615..b825887b7a 100644 --- a/express-zod-api/src/endpoints-factory.ts +++ b/express-zod-api/src/endpoints-factory.ts @@ -1,21 +1,21 @@ -import { Request, Response } from "express"; +import type { Request, Response } from "express"; import { z } from "zod"; import { - EmptyObject, emptySchema, - EmptySchema, - FlatObject, - Tag, + type EmptyObject, + type EmptySchema, + type FlatObject, + type Tag, } from "./common-helpers"; -import { Endpoint, Handler } from "./endpoint"; +import { Endpoint, type Handler } from "./endpoint"; import { - IOSchema, - FinalInputSchema, - Extension, ensureExtension, makeFinalInputSchema, + type IOSchema, + type FinalInputSchema, + type Extension, } from "./io-schema"; -import { ClientMethod, Method } from "./method"; +import type { ClientMethod, Method } from "./method"; import { AbstractMiddleware, ExpressMiddleware, diff --git a/express-zod-api/src/errors.ts b/express-zod-api/src/errors.ts index 3da95acea6..65b50c46d8 100644 --- a/express-zod-api/src/errors.ts +++ b/express-zod-api/src/errors.ts @@ -1,6 +1,6 @@ import { z } from "zod"; import { getMessageFromError } from "./common-helpers"; -import { OpenAPIContext } from "./documentation-helpers"; +import type { OpenAPIContext } from "./documentation-helpers"; import type { Method } from "./method"; /** @desc An error related to the wrong Routing declaration */ diff --git a/express-zod-api/src/integration-base.ts b/express-zod-api/src/integration-base.ts index 744439dd6e..f48359b27f 100644 --- a/express-zod-api/src/integration-base.ts +++ b/express-zod-api/src/integration-base.ts @@ -1,10 +1,10 @@ import * as R from "ramda"; import type ts from "typescript"; -import { ResponseVariant } from "./api-response"; +import type { ResponseVariant } from "./api-response"; import { contentTypes } from "./content-type"; -import { ClientMethod, clientMethods } from "./method"; +import { clientMethods, type ClientMethod } from "./method"; import type { makeEventSchema } from "./sse"; -import { propOf, Typeable, TypescriptAPI } from "./typescript-api"; +import { propOf, TypescriptAPI, type Typeable } from "./typescript-api"; import type { CursorPaginatedResult, OffsetPaginatedResult, diff --git a/express-zod-api/src/integration.ts b/express-zod-api/src/integration.ts index 1fe253e34a..9f58bffe7e 100644 --- a/express-zod-api/src/integration.ts +++ b/express-zod-api/src/integration.ts @@ -1,17 +1,17 @@ import * as R from "ramda"; import type ts from "typescript"; import { z } from "zod"; -import { ResponseVariant, responseVariants } from "./api-response"; +import { responseVariants, type ResponseVariant } from "./api-response"; import { IntegrationBase } from "./integration-base"; import { shouldHaveContent, makeCleanId } from "./common-helpers"; import { loadPeer } from "./peer-helpers"; -import { Routing } from "./routing"; -import { OnEndpoint, walkRouting, withHead } from "./routing-walker"; -import { HandlingRules } from "./schema-walker"; +import type { Routing } from "./routing"; +import { walkRouting, withHead, type OnEndpoint } from "./routing-walker"; +import type { HandlingRules } from "./schema-walker"; import { zodToTs } from "./zts"; -import { ZTSContext } from "./zts-helpers"; +import type { ZTSContext } from "./zts-helpers"; import type Prettier from "prettier"; -import { ClientMethod } from "./method"; +import type { ClientMethod } from "./method"; import type { CommonConfig } from "./config-type"; interface IntegrationParams { diff --git a/express-zod-api/src/json-schema-helpers.ts b/express-zod-api/src/json-schema-helpers.ts index 1d96da0daa..17a9c15ba6 100644 --- a/express-zod-api/src/json-schema-helpers.ts +++ b/express-zod-api/src/json-schema-helpers.ts @@ -1,5 +1,5 @@ import * as R from "ramda"; -import { combinations, FlatObject, isObject } from "./common-helpers"; +import { combinations, isObject, type FlatObject } from "./common-helpers"; import type { z } from "zod"; const isJsonObjectSchema = ( diff --git a/express-zod-api/src/last-resort.ts b/express-zod-api/src/last-resort.ts index a37b81151d..2f62dab97e 100644 --- a/express-zod-api/src/last-resort.ts +++ b/express-zod-api/src/last-resort.ts @@ -1,7 +1,7 @@ -import { Response } from "express"; +import type { Response } from "express"; import createHttpError, { isHttpError } from "http-errors"; import { ResultHandlerError } from "./errors"; -import { ActualLogger } from "./logger-helpers"; +import type { ActualLogger } from "./logger-helpers"; import { getPublicErrorMessage } from "./result-helpers"; interface LastResortHandlerParams { diff --git a/express-zod-api/src/middleware.ts b/express-zod-api/src/middleware.ts index 33e6477b00..7aa4dcca41 100644 --- a/express-zod-api/src/middleware.ts +++ b/express-zod-api/src/middleware.ts @@ -1,11 +1,11 @@ -import { NextFunction, Request, Response } from "express"; +import type { NextFunction, Request, Response } from "express"; import { z } from "zod"; -import { emptySchema, FlatObject } from "./common-helpers"; +import { emptySchema, type FlatObject } from "./common-helpers"; import { InputValidationError } from "./errors"; -import { IOSchema } from "./io-schema"; -import { LogicalContainer } from "./logical-container"; -import { Security } from "./security"; -import { ActualLogger } from "./logger-helpers"; +import type { IOSchema } from "./io-schema"; +import type { LogicalContainer } from "./logical-container"; +import type { Security } from "./security"; +import type { ActualLogger } from "./logger-helpers"; type Handler = (params: { /** @desc The inputs from the enabled input sources validated against the input schema of the Middleware */ diff --git a/express-zod-api/src/result-handler.ts b/express-zod-api/src/result-handler.ts index 937b4e6079..d753b07d24 100644 --- a/express-zod-api/src/result-handler.ts +++ b/express-zod-api/src/result-handler.ts @@ -1,21 +1,21 @@ -import { Request, Response } from "express"; +import type { Request, Response } from "express"; import { globalRegistry, z } from "zod"; import { - ApiResponse, defaultStatusCodes, - NormalizedResponse, + type ApiResponse, + type NormalizedResponse, } from "./api-response"; -import { FlatObject, isObject } from "./common-helpers"; +import { isObject, type FlatObject } from "./common-helpers"; import { contentTypes } from "./content-type"; -import { IOSchema } from "./io-schema"; -import { ActualLogger } from "./logger-helpers"; +import type { IOSchema } from "./io-schema"; +import type { ActualLogger } from "./logger-helpers"; import { - DiscriminatedResult, + type DiscriminatedResult, + type ResultSchema, ensureHttpError, getPublicErrorMessage, logServerError, normalize, - ResultSchema, } from "./result-helpers"; type Handler = ( diff --git a/express-zod-api/src/result-helpers.ts b/express-zod-api/src/result-helpers.ts index 0f7cd11627..6b50c40178 100644 --- a/express-zod-api/src/result-helpers.ts +++ b/express-zod-api/src/result-helpers.ts @@ -1,16 +1,16 @@ -import { Request } from "express"; +import type { Request } from "express"; import createHttpError, { HttpError, isHttpError } from "http-errors"; import * as R from "ramda"; import { globalRegistry, z } from "zod"; -import { NormalizedResponse, ResponseVariant } from "./api-response"; +import type { NormalizedResponse, ResponseVariant } from "./api-response"; import { combinations, - FlatObject, getMessageFromError, isProduction, + type FlatObject, } from "./common-helpers"; import { InputValidationError, ResultHandlerError } from "./errors"; -import { ActualLogger } from "./logger-helpers"; +import type { ActualLogger } from "./logger-helpers"; import type { LazyResult, Result } from "./result-handler"; export type ResultSchema = diff --git a/express-zod-api/src/routing-walker.ts b/express-zod-api/src/routing-walker.ts index 9dba9564e4..59a1269fdf 100644 --- a/express-zod-api/src/routing-walker.ts +++ b/express-zod-api/src/routing-walker.ts @@ -1,8 +1,8 @@ import { AbstractEndpoint } from "./endpoint"; import { RoutingError } from "./errors"; -import { ClientMethod, isMethod, Method } from "./method"; -import { Routing } from "./routing"; -import { ServeStatic, StaticHandler } from "./serve-static"; +import { isMethod, type ClientMethod, type Method } from "./method"; +import type { Routing } from "./routing"; +import { ServeStatic, type StaticHandler } from "./serve-static"; import type { CommonConfig } from "./config-type"; export type OnEndpoint = ( diff --git a/express-zod-api/src/routing.ts b/express-zod-api/src/routing.ts index c9b5d7ceab..a52533e4eb 100644 --- a/express-zod-api/src/routing.ts +++ b/express-zod-api/src/routing.ts @@ -1,14 +1,14 @@ -import { IRouter, RequestHandler } from "express"; +import type { IRouter, RequestHandler } from "express"; import createHttpError from "http-errors"; import { isProduction } from "./common-helpers"; -import { CommonConfig } from "./config-type"; -import { ContentType } from "./content-type"; +import type { CommonConfig } from "./config-type"; +import type { ContentType } from "./content-type"; import { Diagnostics } from "./diagnostics"; -import { AbstractEndpoint } from "./endpoint"; -import { CORSMethod, isMethod } from "./method"; -import { OnEndpoint, walkRouting } from "./routing-walker"; +import type { AbstractEndpoint } from "./endpoint"; +import { isMethod, type CORSMethod } from "./method"; +import { walkRouting, type OnEndpoint } from "./routing-walker"; import { ServeStatic } from "./serve-static"; -import { GetLogger } from "./server-helpers"; +import type { GetLogger } from "./server-helpers"; import * as R from "ramda"; /** diff --git a/express-zod-api/src/server-helpers.ts b/express-zod-api/src/server-helpers.ts index 2949740d37..7be3b08127 100644 --- a/express-zod-api/src/server-helpers.ts +++ b/express-zod-api/src/server-helpers.ts @@ -1,9 +1,9 @@ import type fileUpload from "express-fileupload"; import { loadPeer } from "./peer-helpers"; -import { AbstractResultHandler } from "./result-handler"; -import { ActualLogger } from "./logger-helpers"; -import { CommonConfig, ServerConfig } from "./config-type"; -import { ErrorRequestHandler, RequestHandler, Request } from "express"; +import type { AbstractResultHandler } from "./result-handler"; +import type { ActualLogger } from "./logger-helpers"; +import type { CommonConfig, ServerConfig } from "./config-type"; +import type { ErrorRequestHandler, RequestHandler, Request } from "express"; import createHttpError from "http-errors"; import { lastResortHandler } from "./last-resort"; import { ResultHandlerError } from "./errors"; diff --git a/express-zod-api/src/server.ts b/express-zod-api/src/server.ts index 76ad38959d..c74ba07bfd 100644 --- a/express-zod-api/src/server.ts +++ b/express-zod-api/src/server.ts @@ -3,7 +3,7 @@ import type compression from "compression"; import http from "node:http"; import https from "node:https"; import { BuiltinLogger } from "./builtin-logger"; -import { +import type { AppConfig, CommonConfig, HttpConfig, @@ -12,7 +12,7 @@ import { import { isLoggerInstance } from "./logger-helpers"; import { loadPeer } from "./peer-helpers"; import { defaultResultHandler } from "./result-handler"; -import { Parsers, Routing, initRouting } from "./routing"; +import { initRouting, type Parsers, type Routing } from "./routing"; import { createLoggingMiddleware, createNotFoundHandler, diff --git a/express-zod-api/src/sse.ts b/express-zod-api/src/sse.ts index 273e12fc0b..152a3a0333 100644 --- a/express-zod-api/src/sse.ts +++ b/express-zod-api/src/sse.ts @@ -1,6 +1,6 @@ -import { Response } from "express"; +import type { Response } from "express"; import { z } from "zod"; -import { FlatObject } from "./common-helpers"; +import type { FlatObject } from "./common-helpers"; import { contentTypes } from "./content-type"; import { EndpointsFactory } from "./endpoints-factory"; import { Middleware } from "./middleware"; diff --git a/express-zod-api/src/testing.ts b/express-zod-api/src/testing.ts index c2d2ec2a84..b6ce76ab5c 100644 --- a/express-zod-api/src/testing.ts +++ b/express-zod-api/src/testing.ts @@ -1,19 +1,19 @@ -import { Request, Response } from "express"; -import { ensureError, FlatObject, getInput } from "./common-helpers"; -import { CommonConfig } from "./config-type"; -import { AbstractEndpoint } from "./endpoint"; +import type { Request, Response } from "express"; +import { ensureError, getInput, type FlatObject } from "./common-helpers"; +import type { CommonConfig } from "./config-type"; +import type { AbstractEndpoint } from "./endpoint"; import { - AbstractLogger, - ActualLogger, isSeverity, - Severity, + type AbstractLogger, + type ActualLogger, + type Severity, } from "./logger-helpers"; import { contentTypes } from "./content-type"; import { createRequest, - RequestOptions, createResponse, - ResponseOptions, + type RequestOptions, + type ResponseOptions, } from "node-mocks-http"; import { AbstractMiddleware } from "./middleware"; import { defaultResultHandler } from "./result-handler"; diff --git a/express-zod-api/src/zts-helpers.ts b/express-zod-api/src/zts-helpers.ts index 4778b8deac..07bfa8e087 100644 --- a/express-zod-api/src/zts-helpers.ts +++ b/express-zod-api/src/zts-helpers.ts @@ -1,6 +1,6 @@ import type ts from "typescript"; -import { FlatObject } from "./common-helpers"; -import { SchemaHandler } from "./schema-walker"; +import type { FlatObject } from "./common-helpers"; +import type { SchemaHandler } from "./schema-walker"; import type { TypescriptAPI } from "./typescript-api"; export interface ZTSContext extends FlatObject { diff --git a/express-zod-api/src/zts.ts b/express-zod-api/src/zts.ts index db4d7e36ac..99de97fcd6 100644 --- a/express-zod-api/src/zts.ts +++ b/express-zod-api/src/zts.ts @@ -6,11 +6,15 @@ import { getTransformedType, isSchema } from "./common-helpers"; import { ezDateInBrand } from "./date-in-schema"; import { ezDateOutBrand } from "./date-out-schema"; import { hasCycle } from "./deep-checks"; -import { ProprietaryBrand } from "./proprietary-schemas"; -import { ezRawBrand, RawSchema } from "./raw-schema"; -import { FirstPartyKind, HandlingRules, walkSchema } from "./schema-walker"; +import type { ProprietaryBrand } from "./proprietary-schemas"; +import { ezRawBrand, type RawSchema } from "./raw-schema"; +import { + walkSchema, + type FirstPartyKind, + type HandlingRules, +} from "./schema-walker"; import type { TypescriptAPI } from "./typescript-api"; -import { Producer, ZTSContext } from "./zts-helpers"; +import type { Producer, ZTSContext } from "./zts-helpers"; const nodePath = { name: R.path([ diff --git a/express-zod-api/tests/builtin-logger.spec.ts b/express-zod-api/tests/builtin-logger.spec.ts index 92a7b8520d..02abaa49cf 100644 --- a/express-zod-api/tests/builtin-logger.spec.ts +++ b/express-zod-api/tests/builtin-logger.spec.ts @@ -1,5 +1,5 @@ import { performance } from "node:perf_hooks"; -import { BuiltinLogger, BuiltinLoggerConfig } from "../src/builtin-logger"; +import { BuiltinLogger, type BuiltinLoggerConfig } from "../src/builtin-logger"; describe("BuiltinLogger", () => { beforeEach(() => { diff --git a/express-zod-api/tests/common-helpers.spec.ts b/express-zod-api/tests/common-helpers.spec.ts index 96b24cc2da..98b401b085 100644 --- a/express-zod-api/tests/common-helpers.spec.ts +++ b/express-zod-api/tests/common-helpers.spec.ts @@ -10,13 +10,13 @@ import { shouldHaveContent, getInputSources, emptySchema, - EmptySchema, - EmptyObject, + type EmptySchema, + type EmptyObject, } from "../src/common-helpers"; import { z } from "zod"; import { makeRequestMock } from "../src/testing"; import { methods } from "../src/method"; -import { CommonConfig, InputSources } from "../src/config-type"; +import type { CommonConfig, InputSources } from "../src/config-type"; describe("Common Helpers", () => { describe("emptySchema", () => { diff --git a/express-zod-api/tests/config-type.spec.ts b/express-zod-api/tests/config-type.spec.ts index ed45f6d90c..3777089209 100644 --- a/express-zod-api/tests/config-type.spec.ts +++ b/express-zod-api/tests/config-type.spec.ts @@ -1,4 +1,4 @@ -import { Express, IRouter } from "express"; +import type { Express, IRouter } from "express"; import { createConfig } from "../src"; describe("ConfigType", () => { diff --git a/express-zod-api/tests/deep-checks.spec.ts b/express-zod-api/tests/deep-checks.spec.ts index 8308daf0b1..9f5c66f914 100644 --- a/express-zod-api/tests/deep-checks.spec.ts +++ b/express-zod-api/tests/deep-checks.spec.ts @@ -1,4 +1,4 @@ -import { UploadedFile } from "express-fileupload"; +import type { UploadedFile } from "express-fileupload"; import { z } from "zod"; import { ez } from "../src"; import { findNestedSchema, hasCycle } from "../src/deep-checks"; diff --git a/express-zod-api/tests/documentation-helpers.spec.ts b/express-zod-api/tests/documentation-helpers.spec.ts index 9f5d45d373..208bbd8dd5 100644 --- a/express-zod-api/tests/documentation-helpers.spec.ts +++ b/express-zod-api/tests/documentation-helpers.spec.ts @@ -1,9 +1,9 @@ -import { SchemaObject } from "openapi3-ts/oas31"; +import type { SchemaObject } from "openapi3-ts/oas31"; import * as R from "ramda"; import { z } from "zod"; import { ez } from "../src"; import { - OpenAPIContext, + type OpenAPIContext, depictRequestParams, depictSecurity, depictSecurityRefs, diff --git a/express-zod-api/tests/documentation.spec.ts b/express-zod-api/tests/documentation.spec.ts index 136a21addf..1e8b8a62d2 100644 --- a/express-zod-api/tests/documentation.spec.ts +++ b/express-zod-api/tests/documentation.spec.ts @@ -9,8 +9,8 @@ import { defaultEndpointsFactory, ez, ResultHandler, - Depicter, - Method, + type Depicter, + type Method, } from "../src"; import { contentTypes } from "../src/content-type"; import { z } from "zod"; diff --git a/express-zod-api/tests/endpoints-factory.spec.ts b/express-zod-api/tests/endpoints-factory.spec.ts index 999ebb6e5c..58d291c3b9 100644 --- a/express-zod-api/tests/endpoints-factory.spec.ts +++ b/express-zod-api/tests/endpoints-factory.spec.ts @@ -1,4 +1,4 @@ -import { RequestHandler } from "express"; +import type { RequestHandler } from "express"; import createHttpError from "http-errors"; import { expectTypeOf } from "vitest"; import { @@ -8,7 +8,7 @@ import { ResultHandler, testMiddleware, } from "../src"; -import { EmptyObject } from "../src/common-helpers"; +import type { EmptyObject } from "../src/common-helpers"; import { Endpoint } from "../src/endpoint"; import { z } from "zod"; diff --git a/express-zod-api/tests/index.spec.ts b/express-zod-api/tests/index.spec.ts index 0ebd4cba06..e0c9920459 100644 --- a/express-zod-api/tests/index.spec.ts +++ b/express-zod-api/tests/index.spec.ts @@ -1,8 +1,8 @@ -import { IRouter } from "express"; +import type { IRouter } from "express"; import ts from "typescript"; import { z } from "zod"; import * as entrypoint from "../src"; -import { +import type { ApiResponse, AppConfig, BasicSecurity, diff --git a/express-zod-api/tests/integration.spec.ts b/express-zod-api/tests/integration.spec.ts index 9edc16d10d..4ca6a2221a 100644 --- a/express-zod-api/tests/integration.spec.ts +++ b/express-zod-api/tests/integration.spec.ts @@ -3,9 +3,9 @@ import { globalRegistry, z } from "zod"; import { EndpointsFactory, Integration, - Producer, defaultEndpointsFactory, ResultHandler, + type Producer, } from "../src"; describe("Integration", () => { diff --git a/express-zod-api/tests/io-schema.spec.ts b/express-zod-api/tests/io-schema.spec.ts index dde7e5600b..7d17ea95f2 100644 --- a/express-zod-api/tests/io-schema.spec.ts +++ b/express-zod-api/tests/io-schema.spec.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import { IOSchema, ez } from "../src"; +import { ez, type IOSchema } from "../src"; import { makeFinalInputSchema, ensureExtension } from "../src/io-schema"; describe("I/O Schema and related helpers", () => { diff --git a/express-zod-api/tests/logger-helpers.spec.ts b/express-zod-api/tests/logger-helpers.spec.ts index 4529f2cb56..2ae7faadb3 100644 --- a/express-zod-api/tests/logger-helpers.spec.ts +++ b/express-zod-api/tests/logger-helpers.spec.ts @@ -1,12 +1,12 @@ import { BuiltinLogger } from "../src"; -import { BuiltinLoggerConfig } from "../src/builtin-logger"; +import type { BuiltinLoggerConfig } from "../src/builtin-logger"; import { - AbstractLogger, isLoggerInstance, isSeverity, isHidden, makeNumberFormat, formatDuration, + type AbstractLogger, } from "../src/logger-helpers"; describe("Logger helpers", () => { diff --git a/express-zod-api/tests/method.spec.ts b/express-zod-api/tests/method.spec.ts index 7bab93da7a..6ed97cbd57 100644 --- a/express-zod-api/tests/method.spec.ts +++ b/express-zod-api/tests/method.spec.ts @@ -2,11 +2,11 @@ import * as R from "ramda"; import { isMethod, methods, - Method, clientMethods, - ClientMethod, - SomeMethod, - CORSMethod, + type Method, + type ClientMethod, + type SomeMethod, + type CORSMethod, } from "../src/method"; describe("Method", () => { diff --git a/express-zod-api/tests/result-handler.spec.ts b/express-zod-api/tests/result-handler.spec.ts index a134ee3cab..f1c3e998fe 100644 --- a/express-zod-api/tests/result-handler.spec.ts +++ b/express-zod-api/tests/result-handler.spec.ts @@ -1,4 +1,4 @@ -import { Response } from "express"; +import type { Response } from "express"; import createHttpError from "http-errors"; import { z } from "zod"; import { @@ -8,7 +8,7 @@ import { ResultHandler, } from "../src"; import { ResultHandlerError } from "../src/errors"; -import { AbstractResultHandler, Result } from "../src/result-handler"; +import { AbstractResultHandler, type Result } from "../src/result-handler"; import { makeLoggerMock, makeRequestMock, diff --git a/express-zod-api/tests/routing.spec.ts b/express-zod-api/tests/routing.spec.ts index 50b985a0f7..691be65e35 100644 --- a/express-zod-api/tests/routing.spec.ts +++ b/express-zod-api/tests/routing.spec.ts @@ -7,10 +7,10 @@ import { import { z } from "zod"; import { EndpointsFactory, - Routing, ServeStatic, defaultResultHandler, ez, + type Routing, } from "../src"; import { makeLoggerMock, diff --git a/express-zod-api/tests/server-helpers.spec.ts b/express-zod-api/tests/server-helpers.spec.ts index 4beda60abc..3bf7a55a27 100644 --- a/express-zod-api/tests/server-helpers.spec.ts +++ b/express-zod-api/tests/server-helpers.spec.ts @@ -13,8 +13,8 @@ import { installTerminationListener, localsID, } from "../src/server-helpers"; -import { CommonConfig, defaultResultHandler, ResultHandler } from "../src"; -import { Request } from "express"; +import { defaultResultHandler, ResultHandler, type CommonConfig } from "../src"; +import type { Request } from "express"; import { makeLoggerMock, makeRequestMock, diff --git a/express-zod-api/tests/server.spec.ts b/express-zod-api/tests/server.spec.ts index 72494eb662..07b80bd0aa 100644 --- a/express-zod-api/tests/server.spec.ts +++ b/express-zod-api/tests/server.spec.ts @@ -15,14 +15,14 @@ import { } from "./http-mock"; import { z } from "zod"; import { - AppConfig, BuiltinLogger, EndpointsFactory, - ServerConfig, attachRouting, createServer, defaultResultHandler, ez, + type AppConfig, + type ServerConfig, } from "../src"; import express from "express"; diff --git a/express-zod-api/tests/sse.spec.ts b/express-zod-api/tests/sse.spec.ts index 1a7dd3aaec..3fd64c5412 100644 --- a/express-zod-api/tests/sse.spec.ts +++ b/express-zod-api/tests/sse.spec.ts @@ -1,15 +1,15 @@ import { z } from "zod"; import { - FlatObject, Middleware, ResultHandler, testEndpoint, testMiddleware, EventStreamFactory, EndpointsFactory, + type FlatObject, } from "../src"; import { - Emitter, + type Emitter, ensureStream, formatEvent, makeEventSchema, diff --git a/express-zod-api/tests/system.spec.ts b/express-zod-api/tests/system.spec.ts index 876f8638e5..0c0c44182e 100644 --- a/express-zod-api/tests/system.spec.ts +++ b/express-zod-api/tests/system.spec.ts @@ -5,7 +5,6 @@ import { readFile } from "node:fs/promises"; import { z } from "zod"; import { EndpointsFactory, - Method, createConfig, createServer, defaultResultHandler, @@ -13,6 +12,7 @@ import { BuiltinLogger, Middleware, ez, + type Method, } from "../src"; import { givePort } from "../../tools/ports"; import { setTimeout } from "node:timers/promises"; diff --git a/express-zod-api/tests/testing.spec.ts b/express-zod-api/tests/testing.spec.ts index 8c2887d0a7..89e184c73d 100644 --- a/express-zod-api/tests/testing.spec.ts +++ b/express-zod-api/tests/testing.spec.ts @@ -1,11 +1,11 @@ import { z } from "zod"; import { - CommonConfig, defaultEndpointsFactory, Middleware, ResultHandler, testEndpoint, testMiddleware, + type CommonConfig, } from "../src"; import type { Mock } from "vitest"; diff --git a/express-zod-api/tests/zts.spec.ts b/express-zod-api/tests/zts.spec.ts index ead5443012..556e7217f4 100644 --- a/express-zod-api/tests/zts.spec.ts +++ b/express-zod-api/tests/zts.spec.ts @@ -3,7 +3,7 @@ import { z } from "zod"; import { ez } from "../src"; import { TypescriptAPI } from "../src/typescript-api"; import { zodToTs } from "../src/zts"; -import { ZTSContext } from "../src/zts-helpers"; +import type { ZTSContext } from "../src/zts-helpers"; describe("zod-to-ts", () => { const api = new TypescriptAPI(ts); diff --git a/express-zod-api/tsdown.config.ts b/express-zod-api/tsdown.config.ts index d43e30afa4..689f5377cf 100644 --- a/express-zod-api/tsdown.config.ts +++ b/express-zod-api/tsdown.config.ts @@ -1,6 +1,6 @@ import { defineConfig } from "tsdown"; import manifest from "./package.json" with { type: "json" }; -import { fixDtsPlugin } from "../tools/fixDts"; +import { fixDtsPlugin } from "../tools/fixDts.ts"; export default defineConfig({ entry: "src/index.ts", diff --git a/issue952-test/tags.ts b/issue952-test/tags.ts index ff08fa0dcd..5db4034954 100644 --- a/issue952-test/tags.ts +++ b/issue952-test/tags.ts @@ -1,7 +1,7 @@ import { defaultEndpointsFactory, - TagOverrides, Documentation, + type TagOverrides, } from "express-zod-api"; declare module "express-zod-api" { diff --git a/migration/package.json b/migration/package.json index 4cf7685cf9..3766451e5d 100644 --- a/migration/package.json +++ b/migration/package.json @@ -17,7 +17,7 @@ "scripts": { "pretest": "tsc", "test": "vitest run --globals", - "build": "tsdown --config-loader unrun", + "build": "tsdown", "prepublishOnly": "eslint && pnpm test && pnpm build" }, "type": "module", diff --git a/migration/tsdown.config.ts b/migration/tsdown.config.ts index b0b5217fc7..80a30db817 100644 --- a/migration/tsdown.config.ts +++ b/migration/tsdown.config.ts @@ -1,6 +1,6 @@ import { defineConfig } from "tsdown"; import manifest from "./package.json" with { type: "json" }; -import { fixDtsPlugin } from "../tools/fixDts"; +import { fixDtsPlugin } from "../tools/fixDts.ts"; export default defineConfig({ entry: "index.ts", diff --git a/package.json b/package.json index 0d2927472f..6e055d6fc8 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,9 @@ "type": "module", "scripts": { "start": "pnpm -F example start", - "prebuild": "unrun tools/contributors.ts && unrun tools/license.ts", + "prebuild": "node tools/contributors.ts && node tools/license.ts", "build": "pnpm -r build", - "pretest": "unrun tools/make-tests.ts", + "pretest": "node tools/make-tests.ts", "test": "pnpm -r test", "bench": "pnpm -F express-zod-api bench", "lint": "eslint && prettier *.md **/*.md --check", @@ -28,7 +28,6 @@ "prettier": "3.8.1", "tsdown": "^0.21.5", "typescript-eslint": "catalog:dev", - "unrun": "^0.2.32", "vitest": "^4.0.16" }, "packageManager": "pnpm@10.33.0+sha512.10568bb4a6afb58c9eb3630da90cc9516417abebd3fabbe6739f0ae795728da1491e9db5a544c76ad8eb7570f5c4bb3d6c637b2cb41bfdcdb47fa823c8649319" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8d3fcee451..f4d43f6aac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -104,9 +104,6 @@ importers: typescript-eslint: specifier: catalog:dev version: 8.56.0(eslint@10.0.0)(typescript@6.0.2) - unrun: - specifier: ^0.2.32 - version: 0.2.33(synckit@0.11.12) vitest: specifier: ^4.0.16 version: 4.1.1(@types/node@24.12.0)(yaml@2.8.2) diff --git a/tools/license.ts b/tools/license.ts index 857db55fd8..e264b388c0 100644 --- a/tools/license.ts +++ b/tools/license.ts @@ -1,5 +1,5 @@ import { writeFile } from "node:fs/promises"; -import manifest from "../express-zod-api/package.json"; +import manifest from "../express-zod-api/package.json" with { type: "json" }; const text = ` MIT License diff --git a/tools/make-tests.ts b/tools/make-tests.ts index d0b42b2b5c..c49f858657 100644 --- a/tools/make-tests.ts +++ b/tools/make-tests.ts @@ -1,6 +1,6 @@ import assert from "node:assert/strict"; import { readFile, writeFile } from "node:fs/promises"; -import { givePort } from "./ports"; +import { givePort } from "./ports.ts"; const extractQuickStartFromReadme = async () => { const readme = await readFile("README.md", "utf-8"); diff --git a/tsconfig.json b/tsconfig.json index 704f30c3e2..459782a6b4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,6 +9,8 @@ "noImplicitOverride": true, "noUncheckedSideEffectImports": true, "resolveJsonModule": true, + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, "types": ["node", "vitest/globals"] } } diff --git a/zod-plugin/package.json b/zod-plugin/package.json index e4d7031d52..bce9ddfb8a 100644 --- a/zod-plugin/package.json +++ b/zod-plugin/package.json @@ -18,7 +18,7 @@ "scripts": { "pretest": "tsc", "test": "vitest run", - "build": "tsdown --config-loader unrun", + "build": "tsdown", "prepublishOnly": "eslint && pnpm test && pnpm build" }, "type": "module", diff --git a/zod-plugin/tsdown.config.ts b/zod-plugin/tsdown.config.ts index f1d481e7c8..c2fd153916 100644 --- a/zod-plugin/tsdown.config.ts +++ b/zod-plugin/tsdown.config.ts @@ -1,6 +1,6 @@ import { defineConfig } from "tsdown"; import manifest from "./package.json" with { type: "json" }; -import { fixDtsPlugin } from "../tools/fixDts"; +import { fixDtsPlugin } from "../tools/fixDts.ts"; const plugins = [fixDtsPlugin()];