The Coline App SDK: apps, tools, file types and surfaces that run inside Coline workspaces, and public websites with Coline Sites. TypeScript, with an in-memory test workspace. MIT.
| 4 | import { execFileSync } from "node:child_process"; |
| 5 | import { createRequire } from "node:module"; |
| 6 |
| 7 | const __dirname = dirname(fileURLToPath(import.meta.url)); |
| 8 | const sdkRoot = resolve(__dirname, ".."); |
| 9 | const repoRoot = resolve(sdkRoot, "..", ".."); |
| 10 | const openapiDir = resolve(sdkRoot, "openapi"); |
| 11 | const generatedDir = resolve(sdkRoot, "src", "generated"); |
| 12 |
| 13 | mkdirSync(openapiDir, { recursive: true }); |
| 14 | mkdirSync(generatedDir, { recursive: true }); |
| 15 |
| 16 | const require = createRequire(import.meta.url); |
| 17 | const { |
| 18 | APP_PLATFORM_V1_OPENAPI, |
| 19 | } = require(resolve( |
| 20 | repoRoot, |
| 21 | "apps/web/src/lib/api-platform/openapi/app-platform-v1.ts", |
| 22 | )); |
| 23 |
| 24 | const specPath = resolve(openapiDir, "app-platform-v1.json"); |
| 25 | const generatedTypesPath = resolve(generatedDir, "app-platform-v1.ts"); |
| 26 |
| 27 | writeFileSync(specPath, `${JSON.stringify(APP_PLATFORM_V1_OPENAPI, null, 2)}\n`); |
| 28 |
| 29 | execFileSync( |
| 30 | process.platform === "win32" ? "pnpm.cmd" : "pnpm", |
| 31 | [ |
| 32 | "exec", |
| 33 | "openapi-typescript", |
| 34 | specPath, |
| 35 | "-o", |
| 36 | generatedTypesPath, |
| 37 | ], |
| 38 | { |
| 39 | cwd: sdkRoot, |
| 40 | stdio: "inherit", |
| 41 | }, |
| 42 | ); |
| 43 |