diff --git a/packages/app/package.json b/packages/app/package.json index b5cd992..7e8fd23 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -6,20 +6,19 @@ "main": "dist/index.js", "exports": { ".": { - "types": "./src/index.ts", + "types": "./dist/index.d.ts", "import": "./dist/index.js", "default": "./dist/index.js" } }, "files": [ - "dist", - "src" + "dist" ], "publishConfig": { "access": "public" }, "scripts": { - "build": "vite build", + "build": "vite build && tsc -p tsconfig.build.json", "dev": "vite build --watch", "lint": "npx @ton-ai-core/vibecode-linter src/", "lint:tests": "npx @ton-ai-core/vibecode-linter tests/", @@ -27,7 +26,8 @@ "lint:types": "./scripts/lint-types.sh", "check": "tsc --noEmit", "test": "vitest run", - "typecheck": "tsc --noEmit" + "typecheck": "tsc --noEmit", + "test:consumer": "tsc -p tsconfig.build.json && tsc -p tests/consumer/tsconfig.json" }, "repository": { "type": "git", diff --git a/packages/app/tests/consumer/index.ts b/packages/app/tests/consumer/index.ts new file mode 100644 index 0000000..5797482 --- /dev/null +++ b/packages/app/tests/consumer/index.ts @@ -0,0 +1,22 @@ +// Consumer proof: external project imports createClientEffect and compiles with tsc --noEmit. +// This file must compile cleanly with no local module declaration overrides. +import { createClientEffect } from "@prover-coder-ai/openapi-effect" + +type Paths = { + "/health": { + get: { + responses: { + 200: { + content: { + "application/json": { ok: boolean } + } + } + } + } + } +} + +const client = createClientEffect() + +// Verify .GET exists and returns something (compile-time only) +client.GET("/health") diff --git a/packages/app/tests/consumer/tsconfig.json b/packages/app/tests/consumer/tsconfig.json new file mode 100644 index 0000000..2e80c8b --- /dev/null +++ b/packages/app/tests/consumer/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "strict": true, + "noEmit": true, + "module": "NodeNext", + "moduleResolution": "NodeNext", + "target": "ES2022", + "lib": ["ES2022", "DOM"], + "verbatimModuleSyntax": true, + "baseUrl": ".", + "paths": { + "@prover-coder-ai/openapi-effect": ["../../dist/index.d.ts"] + } + }, + "include": ["index.ts"] +} diff --git a/packages/app/tsconfig.build.json b/packages/app/tsconfig.build.json new file mode 100644 index 0000000..c95717d --- /dev/null +++ b/packages/app/tsconfig.build.json @@ -0,0 +1,18 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "types": ["node"] + }, + "include": ["src/**/*"], + "exclude": [ + "src/examples/**/*", + "node_modules", + "dist" + ] +} diff --git a/packages/app/tsconfig.json b/packages/app/tsconfig.json index d24d47e..ff63b63 100644 --- a/packages/app/tsconfig.json +++ b/packages/app/tsconfig.json @@ -28,6 +28,7 @@ ], "exclude": [ "dist", - "node_modules" + "node_modules", + "tests/consumer" ] }