Skip to content

Latest commit

ย 

History

History
83 lines (68 loc) ยท 2.8 KB

File metadata and controls

83 lines (68 loc) ยท 2.8 KB

Changelog

v1.0.1 - 2024-12-25

๊ฐœ์„ ์‚ฌํ•ญ

ํƒ€์ž… ์‹œ์Šคํ…œ ์™„์ „ ์žฌ์ž‘์„ฑ โœจ

  • 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

ESM ๋ชจ๋“ˆ ์‹œ์Šคํ…œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

  • 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 ์ŠคํŽ™ ์™„๋ฒฝ ์ค€์ˆ˜๋กœ ํ–ฅํ›„ ๊ธฐ๋Šฅ ํ™•์žฅ ์šฉ์ด

v1.0.0 - 2024-12-25

์ดˆ๊ธฐ ๋ฆด๋ฆฌ์Šค ๐ŸŽ‰

์ฃผ์š” ๊ธฐ๋Šฅ

  • 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 ํฐํŠธ