feat(utils): add
This commit is contained in:
1
packages/utils/.gitignore
vendored
Normal file
1
packages/utils/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
dist
|
||||
29
packages/utils/package.json
Normal file
29
packages/utils/package.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"name": "@lbf-bot/utils",
|
||||
"type": "module",
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/index.js",
|
||||
"types": "dist/index.d.ts",
|
||||
"exports": {
|
||||
".": {
|
||||
"types": "./dist/index.d.ts",
|
||||
"import": "./dist/index.js",
|
||||
"default": "./dist/index.js"
|
||||
}
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "rm -rf dist && tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json"
|
||||
},
|
||||
"dependencies": {
|
||||
"dotenv": "17.2.3",
|
||||
"zod": "4.1.11"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "22.19.1",
|
||||
"tsc-alias": "1.8.16",
|
||||
"typescript": "5.9.3"
|
||||
}
|
||||
}
|
||||
17
packages/utils/src/env.ts
Normal file
17
packages/utils/src/env.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import "dotenv/config";
|
||||
import { z } from "zod";
|
||||
|
||||
export const parseEnv = <T extends z.ZodRawShape>(vars: T) => {
|
||||
const schema = z.object(vars);
|
||||
const result = schema.safeParse(process.env);
|
||||
if (!result.success) {
|
||||
console.error("ERROR: Environment variable validation failed:");
|
||||
for (const issue of result.error.issues) {
|
||||
console.error(`- ${issue.path.join(".")}: ${issue.message}`);
|
||||
}
|
||||
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
return result.data;
|
||||
};
|
||||
1
packages/utils/src/index.ts
Normal file
1
packages/utils/src/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export * from "./env";
|
||||
14
packages/utils/tsconfig.build.json
Normal file
14
packages/utils/tsconfig.build.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "dist",
|
||||
"declaration": true,
|
||||
"declarationMap": true,
|
||||
"sourceMap": true,
|
||||
"removeComments": false
|
||||
},
|
||||
"tsc-alias": {
|
||||
"resolveFullPaths": true
|
||||
},
|
||||
"include": ["src"]
|
||||
}
|
||||
28
packages/utils/tsconfig.json
Normal file
28
packages/utils/tsconfig.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"lib": ["ESNext"],
|
||||
"target": "ESNext",
|
||||
"module": "ESNext",
|
||||
"moduleDetection": "force",
|
||||
|
||||
"moduleResolution": "bundler",
|
||||
"allowImportingTsExtensions": false,
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"~/*": ["./src/*"],
|
||||
"~": ["./src/index"]
|
||||
},
|
||||
|
||||
"strict": true,
|
||||
"skipLibCheck": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"esModuleInterop": true,
|
||||
"resolveJsonModule": true,
|
||||
|
||||
"noUnusedLocals": false,
|
||||
"noUnusedParameters": false,
|
||||
"noPropertyAccessFromIndexSignature": false
|
||||
},
|
||||
"include": ["src"],
|
||||
"exclude": ["node_modules", "dist"]
|
||||
}
|
||||
Reference in New Issue
Block a user