mirror of
https://github.com/hanzoai/sign.git
synced 2026-10-21 01:21:51 +00:00
Six lines disabled @typescript-eslint/ban-types over `string & {}`, the
union that keeps a string type's known values in autocomplete.
typescript-eslint 8 removed ban-types, and ESLint 10 reports a disable
comment for a rule that does not exist as an error — "Definition for rule
'@typescript-eslint/ban-types' was not found" — so each of them failed the
lint. Its successors do not flag `{}` inside an intersection, so with the
comments gone nothing is reported on those lines. Five go here; the sixth,
in render-email-with-i18n.tsx, goes with that file's other lint fix.
Co-authored-by: Hanzo Dev <[email protected]>
26 lines
940 B
TypeScript
26 lines
940 B
TypeScript
/// <reference types="@hanzo/esign-tsconfig/process-env.d.ts" />
|
|
|
|
declare global {
|
|
interface Window {
|
|
__ENV__?: Record<string, string | undefined>;
|
|
}
|
|
}
|
|
|
|
type EnvKey = keyof NodeJS.ProcessEnv | (string & {});
|
|
type EnvValue<K extends EnvKey> = K extends keyof NodeJS.ProcessEnv
|
|
? NodeJS.ProcessEnv[K]
|
|
: string | undefined;
|
|
|
|
export const env = <K extends EnvKey>(variable: K): EnvValue<K> => {
|
|
if (typeof window !== 'undefined' && typeof window.__ENV__ === 'object') {
|
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
return window.__ENV__[variable as string] as EnvValue<K>;
|
|
}
|
|
|
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
return (typeof process !== 'undefined' ? process?.env?.[variable] : undefined) as EnvValue<K>;
|
|
};
|
|
|
|
export const createPublicEnv = () =>
|
|
Object.fromEntries(Object.entries(process.env).filter(([key]) => key.startsWith('NEXT_PUBLIC_')));
|