Skip to content

Commit 5ca3d90

Browse files
committed
refactor(openapi): move generated artifacts into workspace package
1 parent 68a1d56 commit 5ca3d90

12 files changed

Lines changed: 76 additions & 10 deletions

File tree

bun.lock

Lines changed: 11 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"packages/container",
1111
"packages/docker-git-session-sync",
1212
"packages/lib",
13+
"packages/openapi",
1314
"packages/terminal"
1415
],
1516
"scripts": {
@@ -20,7 +21,7 @@
2021
"api:dev": "bun run --filter @effect-template/api dev",
2122
"api:test": "bun run --filter @effect-template/api test",
2223
"api:typecheck": "bun run --filter @effect-template/api typecheck",
23-
"check": "bun run --filter @prover-coder-ai/docker-git-session-sync check && bun run --filter @prover-coder-ai/docker-git-terminal check && bun run --filter @prover-coder-ai/docker-git check && bun run --filter @effect-template/lib typecheck",
24+
"check": "bun run --filter @prover-coder-ai/docker-git-session-sync check && bun run --filter @prover-coder-ai/docker-git-terminal check && bun run --filter @prover-coder-ai/docker-git-openapi check && bun run --filter @prover-coder-ai/docker-git check && bun run --filter @effect-template/lib typecheck",
2425
"check:dist-deps-prune": "bun node_modules/@prover-coder-ai/dist-deps-prune/dist/main.js scan --package ./packages/app/package.json --prune-dev true --silent",
2526
"changeset": "changeset",
2627
"changeset-publish": "bun -e \"if (!process.env.NPM_TOKEN) { console.log('Skipping publish: NPM_TOKEN is not set'); process.exit(0); }\" && changeset publish",
@@ -42,14 +43,14 @@
4243
"dev": "bun run --cwd packages/app dev",
4344
"web:dev": "bun run --cwd packages/app dev:web",
4445
"web:build": "bun run --cwd packages/app build:web",
45-
"web:generate-api": "bun run --cwd packages/app generate:api",
46+
"web:generate-api": "bun run --cwd packages/openapi generate",
4647
"web:preview": "bun run --cwd packages/app preview:web",
4748
"web:serve": "bun run --cwd packages/app serve:web",
4849
"lint": "bun run --filter @prover-coder-ai/docker-git-terminal lint && bun run --filter @prover-coder-ai/docker-git lint && bun run --filter @effect-template/lib lint",
4950
"lint:tests": "bun run --filter @prover-coder-ai/docker-git lint:tests",
5051
"lint:effect": "bun run --filter @prover-coder-ai/docker-git-session-sync lint:effect && bun run --filter @prover-coder-ai/docker-git-terminal lint:effect && bun run --filter @prover-coder-ai/docker-git lint:effect && bun run --filter @prover-coder-ai/docker-git-container lint:effect && bun run --filter @effect-template/lib lint:effect && bun run --filter @effect-template/api lint:effect",
5152
"test": "bun run --filter @prover-coder-ai/docker-git-session-sync test && bun run --filter @prover-coder-ai/docker-git-terminal test && bun run --filter @prover-coder-ai/docker-git test && bun run --filter @effect-template/lib test",
52-
"typecheck": "bun run --filter @prover-coder-ai/docker-git-session-sync typecheck && bun run --filter @prover-coder-ai/docker-git-terminal typecheck && bun run --filter @prover-coder-ai/docker-git typecheck && bun run --filter @effect-template/lib typecheck",
53+
"typecheck": "bun run --filter @prover-coder-ai/docker-git-session-sync typecheck && bun run --filter @prover-coder-ai/docker-git-terminal typecheck && bun run --filter @prover-coder-ai/docker-git-openapi typecheck && bun run --filter @prover-coder-ai/docker-git typecheck && bun run --filter @effect-template/lib typecheck",
5354
"start": "bun run --cwd packages/app build:docker-git && bun ./packages/app/dist/src/docker-git/main.js"
5455
},
5556
"devDependencies": {

packages/app/biome.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
},
88
"files": {
99
"ignoreUnknown": false,
10-
"includes": ["**", "!src/web/generated/**"]
10+
"includes": ["**"]
1111
},
1212
"assist": {
1313
"enabled": false

packages/app/eslint.config.mts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,5 +304,5 @@ export default defineConfig(
304304
},
305305

306306
// 4) Глобальные игноры
307-
{ ignores: ['dist/**', 'build/**', 'coverage/**', '**/dist/**', 'src/web/generated/**'] },
307+
{ ignores: ['dist/**', 'build/**', 'coverage/**', '**/dist/**'] },
308308
);

packages/app/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"build:app": "vite build --ssr src/app/main.ts",
1919
"build:web": "vite build --config vite.web.config.ts",
2020
"build:web:strict": "bun ../../scripts/ci/check-web-build-output.mjs",
21-
"generate:api": "bun ../../scripts/write-openapi.ts && openapi-typescript ../../packages/api/openapi.json -o src/web/generated/openapi-paths.ts",
21+
"generate:api": "bun run --cwd ../openapi generate",
2222
"prepack": "bun run build:docker-git",
2323
"dev": "vite build --watch --ssr src/app/main.ts",
2424
"dev:web": "vite --config vite.web.config.ts",
@@ -96,6 +96,7 @@
9696
"@eslint/compat": "2.1.0",
9797
"@eslint/eslintrc": "3.3.5",
9898
"@eslint/js": "10.0.1",
99+
"@prover-coder-ai/docker-git-openapi": "workspace:*",
99100
"@prover-coder-ai/docker-git-terminal": "workspace:*",
100101
"@prover-coder-ai/eslint-plugin-suggest-members": "^0.0.26",
101102
"@ton-ai-core/vibecode-linter": "^1.0.11",
@@ -120,7 +121,6 @@
120121
"fast-check": "4.8.0",
121122
"globals": "^17.6.0",
122123
"jscpd": "^5.0.10",
123-
"openapi-typescript": "^7.13.0",
124124
"typescript": "^6.0.3",
125125
"typescript-eslint": "^8.61.1",
126126
"vite": "^8.0.16",

packages/app/src/web/openapi-client.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import * as ParseResult from "@effect/schema/ParseResult"
22
import type * as Schema from "@effect/schema/Schema"
33
import * as TreeFormatter from "@effect/schema/TreeFormatter"
4+
import type { paths } from "@prover-coder-ai/docker-git-openapi"
45
import { Effect, Either, Option } from "effect"
56
import createClient, { type Client, type Middleware } from "openapi-fetch"
67

78
import { resolveApiBaseUrl } from "./api-http.js"
8-
import type { paths } from "./generated/openapi-paths.js"
99

1010
type DockerGitOpenApiClient = Client<paths>
1111

packages/openapi/package.json

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
"name": "@prover-coder-ai/docker-git-openapi",
3+
"version": "0.1.0",
4+
"private": true,
5+
"description": "Generated docker-git OpenAPI artifacts",
6+
"type": "module",
7+
"packageManager": "bun@1.3.11",
8+
"types": "./src/index.ts",
9+
"exports": {
10+
".": {
11+
"types": "./src/index.ts"
12+
},
13+
"./openapi-paths": {
14+
"types": "./src/openapi-paths.ts"
15+
},
16+
"./openapi.json": "./openapi.json"
17+
},
18+
"scripts": {
19+
"check": "bun run typecheck",
20+
"generate": "bun ../../scripts/write-openapi.ts && openapi-typescript openapi.json -o src/openapi-paths.ts",
21+
"typecheck": "tsc --noEmit -p tsconfig.json"
22+
},
23+
"devDependencies": {
24+
"openapi-typescript": "^7.13.0",
25+
"typescript": "^6.0.3"
26+
},
27+
"repository": {
28+
"type": "git",
29+
"url": "git+https://github.com/ProverCoderAI/docker-git.git"
30+
},
31+
"license": "MIT"
32+
}

packages/openapi/src/index.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/**
2+
* Generated OpenAPI path map for the docker-git JSON REST API.
3+
*
4+
* @returns Type-only exports consumed by typed OpenAPI clients.
5+
*
6+
* @pure true
7+
* @effect none
8+
* @invariant all exported types are derived from packages/openapi/openapi.json.
9+
* @precondition run `bun run --cwd packages/openapi generate` after changing the source HttpApi contract.
10+
* @postcondition consumers depend on this package instead of importing generated files from app internals.
11+
* @complexity O(1)/O(1)
12+
* @throws Never - type-only module.
13+
*/
14+
export type { components, operations, paths, webhooks } from "./openapi-paths.js"
File renamed without changes.

0 commit comments

Comments
 (0)