types: prep for publishing
vi did:web:vt3e.cat
Fri, 19 Jun 2026 05:28:10 +0100
10 files changed,
44 insertions(+),
39 deletions(-)
jump to
M
pkgs/types/.gitignore
→
pkgs/types/.gitignore
@@ -1,6 +1,9 @@
# dependencies (bun install) node_modules +src/models.ts +src/routes.ts + # output out dist
M
pkgs/types/package.json
→
pkgs/types/package.json
@@ -1,11 +1,22 @@
{ - "name": "@purrkit/types", - "module": "src/index.ts", - "type": "module", - "devDependencies": { - "@types/bun": "latest" - }, - "peerDependencies": { - "typescript": "^5" - } + "name": "@purrkit/types", + "files": [ + "dist" + ], + "type": "module", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "scripts": { + "generate": "bun scripts/generate.ts", + "build:types": "tsc --emitDeclarationOnly", + "build:js": "bun build ./src/index.ts --outdir ./dist --minify --target bun", + "build": "bun run generate && bun run build:types && bun run build:js", + "prepublishOnly": "bun run build" + }, + "devDependencies": { + "@types/bun": "latest" + }, + "peerDependencies": { + "typescript": "^5" + } }
A
pkgs/types/src/index.ts
@@ -0,0 +1,2 @@
+export * as Models from "./models.ts"; +export * from "./routes.ts";
M
pkgs/types/src/lib/generator.ts
→
pkgs/types/src/generator/generator.ts
@@ -73,7 +73,7 @@ export function generateRoutesSpec(paths: Record<string, any>, modelNamespace = "Models"): string {
const output: string[] = []; output.push("// this file is auto-generated. don;t edit it manually."); - output.push(`import * as ${modelNamespace} from "./models";`); + output.push(`import * as ${modelNamespace} from "./models.ts";`); output.push(""); output.push("export interface DiscordApiEndpoints {");
M
pkgs/types/src/lib/index.ts
→
pkgs/types/scripts/generate.ts
@@ -1,7 +1,7 @@
import * as fs from "fs/promises"; import * as path from "path"; -import { OpenAPISpec } from "./types"; -import { generateModelsSpec, generateRoutesSpec } from "./generator"; +import { OpenAPISpec } from "../src/generator/types"; +import { generateModelsSpec, generateRoutesSpec } from "../src/generator/generator"; const SPEC_URL = "https://raw.githubusercontent.com/discord/discord-api-spec/main/specs/openapi.json";@@ -21,12 +21,12 @@ const paths = spec.paths || {};
console.log("generating models.ts..."); const modelsCode = generateModelsSpec(schemas); - const modelsPath = path.join(process.cwd(), "models.ts"); + const modelsPath = path.join(process.cwd(), "src", "models.ts"); await fs.writeFile(modelsPath, modelsCode, "utf-8"); console.log("generating routes.ts..."); const routesCode = generateRoutesSpec(paths, "Models"); - const routesPath = path.join(process.cwd(), "routes.ts"); + const routesPath = path.join(process.cwd(), "src", "routes.ts"); await fs.writeFile(routesPath, routesCode, "utf-8"); console.log("\ntype generation complete!");
M
pkgs/types/tsconfig.json
→
pkgs/types/tsconfig.json
@@ -1,27 +1,16 @@
{ - "compilerOptions": { - "outDir": "dist", - "declaration": true, - - // Environment setup & latest features - "lib": ["ESNext"], - "target": "ESNext", - "module": "Preserve", - "moduleDetection": "force", - "jsx": "react-jsx", - "allowJs": true, - "types": ["bun"], - - // Best practices - "strict": true, - "skipLibCheck": true, - "noFallthroughCasesInSwitch": true, - "noUncheckedIndexedAccess": true, - "noImplicitOverride": true, - - // Some stricter flags (disabled by default) - "noUnusedLocals": false, - "noUnusedParameters": false, - "noPropertyAccessFromIndexSignature": false - } + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "esModuleInterop": true, + "strict": true, + "skipLibCheck": true, + "declaration": true, + "outDir": "./dist", + "allowImportingTsExtensions": true, + "emitDeclarationOnly": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "src/generator/**/*"] }