- OpenAPI 3.0 ์คํ ์๋ฒฝ ์ค์: ๋ชจ๋ ํ์ ์ ์๋ฅผ OpenAPI 3.0 ๊ณต์ ์คํ์ ๋ง์ถฐ ์ฌ์์ฑ
unknownํ์ ์ ๊ฑฐ: ๋ ๊ตฌ์ฒด์ ์ธ ํ์ ์ผ๋ก ๋์ฒดJSONValueํ์ ๋์ (string | number | boolean | null | JSONObject | JSONArray)ExampleValue = JSONValue๋ก ๋ช ํํ ํ์ ์ ์
- ์์ ํ ํ์
์ ์:
SchemaObject: JSON Schema ์ ์ฒด ํ๋กํผํฐ ์ง์ParameterObject: style, explode ๋ฑ ๋ชจ๋ OpenAPI ํ๋กํผํฐResponseObject: headers, links ๋ฑ ์์ ํ ์ ์ReferenceObject: $ref ์ฒ๋ฆฌComponentsObject: ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์ปดํฌ๋ํธSecuritySchemeObject: ๋ชจ๋ ์ธ์ฆ ๋ฐฉ์ (apiKey, http, oauth2, openIdConnect)MediaTypeObject,EncodingObject,LinkObject,CallbackObject๋ฑ ์ถ๊ฐ
- Type Guards ์ถ๊ฐ:
isReferenceObject(),isSchemaObject(),isParameterObject()๋ฑ- ์์ ํ ํ์ ์ฒดํฌ ๋ฐ ํ์ narrowing
package.json์"type": "module"์ถ๊ฐtsconfig.json์ค์ ์ ๋ฐ์ดํธ:module: "ESNext"moduleResolution: "bundler"
- ๋ชจ๋ import ๋ฌธ์
.jsํ์ฅ์ ์ถ๊ฐ (ESM ๊ท๊ฒฉ ์ค์) - top-level await ๋ฌธ์ ํด๊ฒฐ
- npm โ pnpm ์ ํ
.npmrcํ์ผ ์ถ๊ฐ (shamefully-hoist ์ค์ )- ๋ชจ๋ ๋ฌธ์์์ npm ๋ช ๋ น์ด๋ฅผ pnpm์ผ๋ก ์ ๋ฐ์ดํธ
- Ink: v4.4.1 โ v6.6.0
- React: v18.2.0 โ v19.2.3
- Node.js ์๊ตฌ์ฌํญ: >=18.0.0 โ >=22.0.0
- ๋ชจ๋ devDependencies ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธ
ParameterObject | ReferenceObject์ ๋์จ ํ์ ์ฒ๋ฆฌ ๊ฐ์openapi-parser์๋น์ค์์ ReferenceObject ํํฐ๋ง ์ถ๊ฐ- validator์์ ReferenceObject ์ฒดํฌ ์ถ๊ฐ
- ParameterForm์์ example ๊ฐ ๋ ๋๋ง ํ์ ์์ ์ฑ ๊ฐ์
- TypeScript strict ๋ชจ๋ ์ค๋น (ํ์ฌ๋ false๋ก ์ค์ ํ์ฌ ์ ์ง์ ๋ง์ด๊ทธ๋ ์ด์ )
- ํ์ ์์ ์ฑ ๋ํญ ํฅ์
- OpenAPI ์คํ ์๋ฒฝ ์ค์๋ก ํฅํ ๊ธฐ๋ฅ ํ์ฅ ์ฉ์ด
- Swagger 2.0 & OpenAPI 3.x ๋ฌธ์ ํ์ฑ ์ง์
- Vim ์คํ์ผ ํค๋ณด๋ ๋ค๋น๊ฒ์ด์ (h, j, k, l)
- 3๊ฐ์ง ํ๋ฉด ๊ตฌ์ฑ:
- ๋ชฉ๋ก ํ๋ฉด (List View)
- ์์ธ ํ๋ฉด (Detail View)
- ๊ฒฐ๊ณผ ํ๋ฉด (Result View)
- HTTP ๋ฉ์๋๋ณ ํํฐ๋ง
- API ์์ฒญ ์คํ ๋ฐ ์๋ต ํ์
- ํด๋ฆฝ๋ณด๋ ๋ณต์ฌ ๊ธฐ๋ฅ
- React 18.2.0
- Ink 4.4.1 (Terminal UI)
- TypeScript 5.3.3
- Jest (ํ ์คํธ)
- axios (HTTP ํด๋ผ์ด์ธํธ)
- swagger-parser (OpenAPI ํ์)
- ๋ค์จ ๊ทธ๋ฆฐ ํ ๋ง (#13ec13)
- ํฐ๋ฏธ๋ ์นํ์ UI
- Space Grotesk & JetBrains Mono ํฐํธ