From 0330e6985d05303c7456d7e508346f3bc651dbbb Mon Sep 17 00:00:00 2001 From: denchiklut Date: Sun, 6 Oct 2024 14:37:17 -0700 Subject: [PATCH] chore: jest types --- @types/env/index.d.ts | 16 ++++--------- @types/utils/index.d.ts | 1 + config/spec/setup.ts | 10 ++++---- src/common/env/env.util.ts | 2 +- src/server/middleware/error/index.ts | 1 - webpack/configs/spa.config.ts | 4 +--- webpack/plugins/define.plugin.ts | 36 +++++++++++++--------------- 7 files changed, 29 insertions(+), 41 deletions(-) diff --git a/@types/env/index.d.ts b/@types/env/index.d.ts index 88072e2..810a761 100644 --- a/@types/env/index.d.ts +++ b/@types/env/index.d.ts @@ -1,23 +1,17 @@ import type { Env } from "src/common" declare global { - declare const IS_DEV: boolean - declare const IS_PROD: boolean - declare const IS_SERVER: boolean - declare const IS_SPA: boolean - declare const clientPrefix: string + declare var IS_DEV: boolean + declare var IS_PROD: boolean + declare var IS_SERVER: boolean + declare var IS_SPA: boolean + declare var clientPrefix: string namespace NodeJS { interface ProcessEnv extends Partial> {} } interface Window { - IS_SPA: boolean - IS_SERVER: boolean - IS_DEV: boolean - IS_PROD: boolean - env_vars: Partial> - clientPrefix: string } } diff --git a/@types/utils/index.d.ts b/@types/utils/index.d.ts index 2f53ece..dfe2133 100644 --- a/@types/utils/index.d.ts +++ b/@types/utils/index.d.ts @@ -1,4 +1,5 @@ type Collection = Record +type Falsy = false | 0 | '' | null | undefined; interface Array { filter(predicate: BooleanConstructor, thisArg?: unknown): Exclude[] diff --git a/config/spec/setup.ts b/config/spec/setup.ts index d81f904..14b0b0c 100644 --- a/config/spec/setup.ts +++ b/config/spec/setup.ts @@ -1,11 +1,9 @@ import '@testing-library/jest-dom' -declare const global: Window - -global.IS_SERVER = false -global.IS_DEV = false -global.IS_SPA = true -global.clientPrefix = 'PUBLIC_' +globalThis.IS_SERVER = false +globalThis.IS_DEV = false +globalThis.IS_SPA = true +globalThis.clientPrefix = 'CLIENT_' jest.mock('src/common/env/env.util', () => ({ ...jest.requireActual('src/common/env/env.util'), diff --git a/src/common/env/env.util.ts b/src/common/env/env.util.ts index 75c4431..7392db1 100644 --- a/src/common/env/env.util.ts +++ b/src/common/env/env.util.ts @@ -25,7 +25,7 @@ export function createEnv({ const { success, data, error } = (IS_SERVER ? schema : client).safeParse(envs) if (!success) { - logger.error('❌ Invalid environment variables:', error.flatten().fieldErrors) + logger.error('❌ Invalid environment variables: %o', error.flatten().fieldErrors) throw new Error('Invalid environment variables') } diff --git a/src/server/middleware/error/index.ts b/src/server/middleware/error/index.ts index 1d600b4..ad1316f 100644 --- a/src/server/middleware/error/index.ts +++ b/src/server/middleware/error/index.ts @@ -1,5 +1,4 @@ import type { ErrorRequestHandler } from 'express' - import { logger } from 'src/common' export const error: ErrorRequestHandler = (error, _, res, __) => { diff --git a/webpack/configs/spa.config.ts b/webpack/configs/spa.config.ts index 107a2dd..d1fc542 100644 --- a/webpack/configs/spa.config.ts +++ b/webpack/configs/spa.config.ts @@ -4,7 +4,7 @@ import { DIST_DIR, ROOT_DIR, devServerConfig } from '../utils' import * as plugins from '../plugins' import * as rules from '../rules' -const config = { +export default { name: 'spa', target: 'web', devtool: 'eval-cheap-module-source-map', @@ -43,5 +43,3 @@ const config = { ...plugins.htmlWebpackPlugin({ spa: true }) ].filter(Boolean) } as Configuration - -export default config diff --git a/webpack/plugins/define.plugin.ts b/webpack/plugins/define.plugin.ts index 7d4d3cf..6d6004d 100644 --- a/webpack/plugins/define.plugin.ts +++ b/webpack/plugins/define.plugin.ts @@ -6,23 +6,21 @@ interface Props { server?: boolean spa?: boolean } -const config = (IS_SERVER: boolean, IS_SPA: boolean) => ({ - IS_SERVER, - IS_DEV, - IS_PROD, - IS_SPA, - clientPrefix: JSON.stringify('CLIENT_'), - ...(!IS_SERVER && { - 'process.env': JSON.stringify( - Object.entries(process.env) - .filter(([k]) => k.startsWith('CLIENT_')) - .reduce>((res, [k, v]) => { - res[k] = v - return res - }, {}) - ) - }) -}) - export const definePlugin = ({ server = false, spa = false }: Props = {}) => - new DefinePlugin(config(server, spa)) + new DefinePlugin({ + IS_PROD, + IS_DEV, + IS_SPA: spa, + IS_SERVER: server, + clientPrefix: JSON.stringify('CLIENT_'), + ...(spa && { + 'process.env': JSON.stringify( + Object.entries(process.env) + .filter(([k]) => k.startsWith('CLIENT_')) + .reduce>((res, [k, v]) => { + res[k] = v + return res + }, {}) + ) + }) + })