chore: Remove generated client types folder (#7633)

* chore: Remove generated client types folder

* chore: Remove typescript-codegen package and client commands for oas
This commit is contained in:
Stevche Radevski
2024-06-06 16:14:35 +02:00
committed by GitHub
parent 0507dbe027
commit 78768574af
249 changed files with 90 additions and 9128 deletions
+1 -65
View File
@@ -85,70 +85,6 @@ yarn medusa-oas oas --force
---
### Command - `client`
Will generate API client files from a given OAS file.
#### `--src-file <path>`
Specify the path to the OAS JSON file.
```bash
yarn medusa-oas client --src-file ./store.oas.json`
```
#### `--name <name>`
Namespace for the generated client. Usually `admin` or `store`.
```bash
yarn medusa-oas client --name admin`
```
#### `--out-dir <path>`
Specify in which directory should the files be outputted. Accepts relative and absolute path.
If the directory doesn't exist, it will be created. Defaults to `./`.
```bash
yarn medusa-oas client --out-dir ./client`
```
#### `--type <type>`
Client component types to generate. Accepts `all`, `types`, `client`, `hooks`.
Defaults to `all`.
```bash
yarn medusa-oas client --type types`
```
#### `--types-packages <name>`
Replace relative import statements by types package name. Mandatory when using `--type client` or `--type hooks`.
```bash
yarn medusa-oas client --types-packages @medusajs/client-types`
```
#### `--client-packages <name>`
Replace relative import statements by client package name. Mandatory when using `--type hooks`.
```bash
yarn medusa-oas client --client-packages @medusajs/medusa-js`
```
#### `--clean`
Delete destination directory content before generating client.
```bash
yarn medusa-oas client --clean
```
---
### Command - `docs`
Will sanitize OAS for use with Redocly's API documentation viewer.
@@ -188,7 +124,7 @@ yarn medusa-oas docs --src-file ./store.oas.json --dry-run
#### `--clean`
Delete destination directory content before generating client.
Delete destination directory content before generating the docs.
```bash
yarn medusa-oas docs --src-file ./store.oas.json --clean
@@ -37,7 +37,6 @@
},
"dependencies": {
"@medusajs/medusa": "^1.20.4",
"@medusajs/openapi-typescript-codegen": "^0.2.1",
"@medusajs/utils": "^1.11.8",
"@readme/json-schema-ref-parser": "^1.2.0",
"@readme/openapi-parser": "^2.4.0",
@@ -1,176 +0,0 @@
import path from "path"
import {
generate,
HttpClient,
Indent,
PackageNames,
} from "@medusajs/openapi-typescript-codegen"
import { upperFirst } from "lodash"
import fs, { mkdir, readFile } from "fs/promises"
import { OpenAPIObject } from "openapi3-ts"
import { Command, Option, OptionValues } from "commander"
/**
* CLI Command declaration
*/
export const commandName = "client"
export const commandDescription = "Generate API clients from OAS."
export const commandOptions: Option[] = [
new Option(
"-t, --type <type>",
"Namespace for the generated client. Usually `admin` or `store`."
).makeOptionMandatory(),
new Option(
"-s, --src-file <srcFile>",
"Path to source OAS JSON file."
).makeOptionMandatory(),
new Option(
"-o, --out-dir <outDir>",
"Output directory for generated client files."
).default(path.resolve(process.cwd(), "client")),
new Option(
"-c, --component <component>",
"Client component types to generate."
)
.choices(["all", "types", "client", "hooks"])
.default("all"),
new Option(
"--types-package <name>",
"Replace relative import statements by types package name."
),
new Option(
"--client-package <name>",
"Replace relative import statements by client package name."
),
new Option(
"--clean",
"Delete destination directory content before generating client."
),
]
export function getCommand() {
const command = new Command(commandName)
command.description(commandDescription)
for (const opt of commandOptions) {
command.addOption(opt)
}
command.action(async (options) => await execute(options))
command.showHelpAfterError(true)
return command
}
/**
* Main
*/
export async function execute(cliParams: OptionValues) {
/**
* Process CLI options
*/
if (
["client", "hooks"].includes(cliParams.component) &&
!cliParams.typesPackage
) {
throw new Error(
`--types-package must be declared when using --component=${cliParams.component}`
)
}
if (cliParams.component === "hooks" && !cliParams.clientPackage) {
throw new Error(
`--client-package must be declared when using --component=${cliParams.component}`
)
}
const shouldClean = !!cliParams.clean
const srcFile = path.resolve(cliParams.srcFile)
const outDir = path.resolve(cliParams.outDir)
const apiName = cliParams.type
const packageNames: PackageNames = {
models: cliParams.typesPackage,
client: cliParams.clientPackage,
}
const exportComponent = cliParams.component
/**
* Command execution
*/
console.log(`🟣 Generating client - ${apiName} - ${exportComponent}`)
if (shouldClean) {
console.log(`🟠 Cleaning output directory`)
await fs.rm(outDir, { recursive: true, force: true })
}
await mkdir(outDir, { recursive: true })
const oas = await getOASFromFile(srcFile)
await generateClientSDK(oas, outDir, apiName, exportComponent, packageNames)
console.log(
`⚫️ Client generated - ${apiName} - ${exportComponent} - ${outDir}`
)
}
/**
* Methods
*/
const getOASFromFile = async (jsonFile: string): Promise<OpenAPIObject> => {
const jsonString = await readFile(jsonFile, "utf8")
return JSON.parse(jsonString)
}
const generateClientSDK = async (
oas: OpenAPIObject,
targetDir: string,
apiName: string,
exportComponent: "all" | "types" | "client" | "hooks",
packageNames: PackageNames = {}
) => {
const exports = {
exportCore: false,
exportServices: false,
exportModels: false,
exportHooks: false,
}
switch (exportComponent) {
case "types":
exports.exportModels = true
break
case "client":
exports.exportCore = true
exports.exportServices = true
break
case "hooks":
exports.exportHooks = true
break
default:
exports.exportCore = true
exports.exportServices = true
exports.exportModels = true
exports.exportHooks = true
}
await generate({
input: oas,
output: targetDir,
httpClient: HttpClient.AXIOS,
useOptions: true,
useUnionTypes: true,
exportCore: exports.exportCore,
exportServices: exports.exportServices,
exportModels: exports.exportModels,
exportHooks: exports.exportHooks,
exportSchemas: false,
indent: Indent.SPACE_2,
postfixServices: "Service",
postfixModels: "",
clientName: `Medusa${upperFirst(apiName)}`,
request: undefined,
packageNames,
})
}
@@ -2,7 +2,6 @@
import { Command } from "commander"
import { getCommand as oasGetCommand } from "./command-oas"
import { getCommand as clientGetCommand } from "./command-client"
import { getCommand as docsGetCommand } from "./command-docs"
const run = async () => {
@@ -13,11 +12,6 @@ const run = async () => {
*/
program.addCommand(oasGetCommand())
/**
* Alias to command-client.ts
*/
program.addCommand(clientGetCommand())
/**
* Alias to command-docs.ts
*/