@kurly-growth/growthman 0.1.1 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/app-path-routes-manifest.json +12 -0
  3. package/.next/build/chunks/8e02f_b5d23412._.js +6758 -0
  4. package/.next/build/chunks/8e02f_b5d23412._.js.map +47 -0
  5. package/.next/build/chunks/[root-of-the-server]__310ad51a._.js +206 -0
  6. package/.next/build/chunks/[root-of-the-server]__310ad51a._.js.map +8 -0
  7. package/.next/build/chunks/[root-of-the-server]__8e2c0d87._.js +500 -0
  8. package/.next/build/chunks/[root-of-the-server]__8e2c0d87._.js.map +11 -0
  9. package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_5040861e._.js +13 -0
  10. package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_5040861e._.js.map +5 -0
  11. package/.next/build/chunks/[turbopack]_runtime.js +795 -0
  12. package/.next/build/chunks/[turbopack]_runtime.js.map +10 -0
  13. package/.next/build/package.json +1 -0
  14. package/.next/build/postcss.js +6 -0
  15. package/.next/build/postcss.js.map +5 -0
  16. package/.next/build-manifest.json +19 -0
  17. package/.next/diagnostics/build-diagnostics.json +6 -0
  18. package/.next/diagnostics/framework.json +1 -0
  19. package/.next/export-marker.json +6 -0
  20. package/.next/fallback-build-manifest.json +12 -0
  21. package/.next/images-manifest.json +66 -0
  22. package/.next/next-minimal-server.js.nft.json +1 -0
  23. package/.next/next-server.js.nft.json +1 -0
  24. package/.next/package.json +1 -0
  25. package/.next/prerender-manifest.json +114 -0
  26. package/.next/required-server-files.js +163 -0
  27. package/.next/required-server-files.json +163 -0
  28. package/.next/routes-manifest.json +109 -0
  29. package/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
  30. package/.next/server/app/_global-error/page/build-manifest.json +16 -0
  31. package/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
  32. package/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
  33. package/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
  34. package/.next/server/app/_global-error/page.js +11 -0
  35. package/.next/server/app/_global-error/page.js.map +5 -0
  36. package/.next/server/app/_global-error/page.js.nft.json +1 -0
  37. package/.next/server/app/_global-error/page_client-reference-manifest.js +2 -0
  38. package/.next/server/app/_global-error.html +2 -0
  39. package/.next/server/app/_global-error.meta +15 -0
  40. package/.next/server/app/_global-error.rsc +13 -0
  41. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +5 -0
  42. package/.next/server/app/_global-error.segments/_full.segment.rsc +13 -0
  43. package/.next/server/app/_global-error.segments/_head.segment.rsc +6 -0
  44. package/.next/server/app/_global-error.segments/_index.segment.rsc +4 -0
  45. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  46. package/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
  47. package/.next/server/app/_not-found/page/build-manifest.json +16 -0
  48. package/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
  49. package/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
  50. package/.next/server/app/_not-found/page/server-reference-manifest.json +4 -0
  51. package/.next/server/app/_not-found/page.js +14 -0
  52. package/.next/server/app/_not-found/page.js.map +5 -0
  53. package/.next/server/app/_not-found/page.js.nft.json +1 -0
  54. package/.next/server/app/_not-found/page_client-reference-manifest.js +2 -0
  55. package/.next/server/app/_not-found.html +1 -0
  56. package/.next/server/app/_not-found.meta +16 -0
  57. package/.next/server/app/_not-found.rsc +15 -0
  58. package/.next/server/app/_not-found.segments/_full.segment.rsc +15 -0
  59. package/.next/server/app/_not-found.segments/_head.segment.rsc +6 -0
  60. package/.next/server/app/_not-found.segments/_index.segment.rsc +6 -0
  61. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
  62. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +4 -0
  63. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -0
  64. package/.next/server/app/api/endpoints/[id]/route/app-paths-manifest.json +3 -0
  65. package/.next/server/app/api/endpoints/[id]/route/build-manifest.json +11 -0
  66. package/.next/server/app/api/endpoints/[id]/route/server-reference-manifest.json +4 -0
  67. package/.next/server/app/api/endpoints/[id]/route.js +7 -0
  68. package/.next/server/app/api/endpoints/[id]/route.js.map +5 -0
  69. package/.next/server/app/api/endpoints/[id]/route.js.nft.json +1 -0
  70. package/.next/server/app/api/endpoints/[id]/route_client-reference-manifest.js +2 -0
  71. package/.next/server/app/api/endpoints/bulk/route/app-paths-manifest.json +3 -0
  72. package/.next/server/app/api/endpoints/bulk/route/build-manifest.json +11 -0
  73. package/.next/server/app/api/endpoints/bulk/route/server-reference-manifest.json +4 -0
  74. package/.next/server/app/api/endpoints/bulk/route.js +7 -0
  75. package/.next/server/app/api/endpoints/bulk/route.js.map +5 -0
  76. package/.next/server/app/api/endpoints/bulk/route.js.nft.json +1 -0
  77. package/.next/server/app/api/endpoints/bulk/route_client-reference-manifest.js +2 -0
  78. package/.next/server/app/api/endpoints/import/route/app-paths-manifest.json +3 -0
  79. package/.next/server/app/api/endpoints/import/route/build-manifest.json +11 -0
  80. package/.next/server/app/api/endpoints/import/route/server-reference-manifest.json +4 -0
  81. package/.next/server/app/api/endpoints/import/route.js +7 -0
  82. package/.next/server/app/api/endpoints/import/route.js.map +5 -0
  83. package/.next/server/app/api/endpoints/import/route.js.nft.json +1 -0
  84. package/.next/server/app/api/endpoints/import/route_client-reference-manifest.js +2 -0
  85. package/.next/server/app/api/endpoints/route/app-paths-manifest.json +3 -0
  86. package/.next/server/app/api/endpoints/route/build-manifest.json +11 -0
  87. package/.next/server/app/api/endpoints/route/server-reference-manifest.json +4 -0
  88. package/.next/server/app/api/endpoints/route.js +7 -0
  89. package/.next/server/app/api/endpoints/route.js.map +5 -0
  90. package/.next/server/app/api/endpoints/route.js.nft.json +1 -0
  91. package/.next/server/app/api/endpoints/route_client-reference-manifest.js +2 -0
  92. package/.next/server/app/api/endpoints/sync/route/app-paths-manifest.json +3 -0
  93. package/.next/server/app/api/endpoints/sync/route/build-manifest.json +11 -0
  94. package/.next/server/app/api/endpoints/sync/route/server-reference-manifest.json +4 -0
  95. package/.next/server/app/api/endpoints/sync/route.js +7 -0
  96. package/.next/server/app/api/endpoints/sync/route.js.map +5 -0
  97. package/.next/server/app/api/endpoints/sync/route.js.nft.json +1 -0
  98. package/.next/server/app/api/endpoints/sync/route_client-reference-manifest.js +2 -0
  99. package/.next/server/app/api/mock/[...slug]/route/app-paths-manifest.json +3 -0
  100. package/.next/server/app/api/mock/[...slug]/route/build-manifest.json +11 -0
  101. package/.next/server/app/api/mock/[...slug]/route/server-reference-manifest.json +4 -0
  102. package/.next/server/app/api/mock/[...slug]/route.js +8 -0
  103. package/.next/server/app/api/mock/[...slug]/route.js.map +5 -0
  104. package/.next/server/app/api/mock/[...slug]/route.js.nft.json +1 -0
  105. package/.next/server/app/api/mock/[...slug]/route_client-reference-manifest.js +2 -0
  106. package/.next/server/app/favicon.ico/route/app-paths-manifest.json +3 -0
  107. package/.next/server/app/favicon.ico/route/build-manifest.json +11 -0
  108. package/.next/server/app/favicon.ico/route.js +7 -0
  109. package/.next/server/app/favicon.ico/route.js.map +5 -0
  110. package/.next/server/app/favicon.ico/route.js.nft.json +1 -0
  111. package/.next/server/app/favicon.ico.meta +1 -0
  112. package/.next/server/app/index.html +1 -0
  113. package/.next/server/app/index.meta +14 -0
  114. package/.next/server/app/index.rsc +21 -0
  115. package/.next/server/app/index.segments/__PAGE__.segment.rsc +9 -0
  116. package/.next/server/app/index.segments/_full.segment.rsc +21 -0
  117. package/.next/server/app/index.segments/_head.segment.rsc +6 -0
  118. package/.next/server/app/index.segments/_index.segment.rsc +6 -0
  119. package/.next/server/app/index.segments/_tree.segment.rsc +4 -0
  120. package/.next/server/app/page/app-paths-manifest.json +3 -0
  121. package/.next/server/app/page/build-manifest.json +16 -0
  122. package/.next/server/app/page/next-font-manifest.json +11 -0
  123. package/.next/server/app/page/react-loadable-manifest.json +8 -0
  124. package/.next/server/app/page/server-reference-manifest.json +4 -0
  125. package/.next/server/app/page.js +16 -0
  126. package/.next/server/app/page.js.map +5 -0
  127. package/.next/server/app/page.js.nft.json +1 -0
  128. package/.next/server/app/page_client-reference-manifest.js +2 -0
  129. package/.next/server/app-paths-manifest.json +12 -0
  130. package/.next/server/chunks/4c6d9__next-internal_server_app_api_endpoints_[id]_route_actions_9be426d4.js +3 -0
  131. package/.next/server/chunks/4c6d9__next-internal_server_app_api_endpoints_[id]_route_actions_9be426d4.js.map +1 -0
  132. package/.next/server/chunks/4c6d9__next-internal_server_app_api_endpoints_bulk_route_actions_e28c0cd3.js +3 -0
  133. package/.next/server/chunks/4c6d9__next-internal_server_app_api_endpoints_bulk_route_actions_e28c0cd3.js.map +1 -0
  134. package/.next/server/chunks/4c6d9__next-internal_server_app_api_endpoints_import_route_actions_89a982f4.js +3 -0
  135. package/.next/server/chunks/4c6d9__next-internal_server_app_api_endpoints_import_route_actions_89a982f4.js.map +1 -0
  136. package/.next/server/chunks/4c6d9__next-internal_server_app_api_endpoints_route_actions_0c151162.js +3 -0
  137. package/.next/server/chunks/4c6d9__next-internal_server_app_api_endpoints_route_actions_0c151162.js.map +1 -0
  138. package/.next/server/chunks/4c6d9__next-internal_server_app_api_endpoints_sync_route_actions_3051349a.js +3 -0
  139. package/.next/server/chunks/4c6d9__next-internal_server_app_api_endpoints_sync_route_actions_3051349a.js.map +1 -0
  140. package/.next/server/chunks/4c6d9__next-internal_server_app_api_mock_[___slug]_route_actions_521def8c.js +3 -0
  141. package/.next/server/chunks/4c6d9__next-internal_server_app_api_mock_[___slug]_route_actions_521def8c.js.map +1 -0
  142. package/.next/server/chunks/8e02f_529f6098._.js +3 -0
  143. package/.next/server/chunks/8e02f_529f6098._.js.map +1 -0
  144. package/.next/server/chunks/8e02f_next_dist_esm_build_templates_app-route_2d5d7dcf.js +3 -0
  145. package/.next/server/chunks/8e02f_next_dist_esm_build_templates_app-route_2d5d7dcf.js.map +1 -0
  146. package/.next/server/chunks/[externals]__cf2ccb51._.js +3 -0
  147. package/.next/server/chunks/[externals]__cf2ccb51._.js.map +1 -0
  148. package/.next/server/chunks/[externals]_next_dist_8dbe5856._.js +3 -0
  149. package/.next/server/chunks/[externals]_next_dist_8dbe5856._.js.map +1 -0
  150. package/.next/server/chunks/[root-of-the-server]__05641340._.js +3 -0
  151. package/.next/server/chunks/[root-of-the-server]__05641340._.js.map +1 -0
  152. package/.next/server/chunks/[root-of-the-server]__40089159._.js +3 -0
  153. package/.next/server/chunks/[root-of-the-server]__40089159._.js.map +1 -0
  154. package/.next/server/chunks/[root-of-the-server]__84981507._.js +3 -0
  155. package/.next/server/chunks/[root-of-the-server]__84981507._.js.map +1 -0
  156. package/.next/server/chunks/[root-of-the-server]__88f1e82c._.js +21 -0
  157. package/.next/server/chunks/[root-of-the-server]__88f1e82c._.js.map +1 -0
  158. package/.next/server/chunks/[root-of-the-server]__9f34b8fa._.js +129 -0
  159. package/.next/server/chunks/[root-of-the-server]__9f34b8fa._.js.map +1 -0
  160. package/.next/server/chunks/[root-of-the-server]__a0785728._.js +3 -0
  161. package/.next/server/chunks/[root-of-the-server]__a0785728._.js.map +1 -0
  162. package/.next/server/chunks/[root-of-the-server]__c49c53b0._.js +3 -0
  163. package/.next/server/chunks/[root-of-the-server]__c49c53b0._.js.map +1 -0
  164. package/.next/server/chunks/[turbopack]_runtime.js +795 -0
  165. package/.next/server/chunks/[turbopack]_runtime.js.map +10 -0
  166. package/.next/server/chunks/ced06_growth-mock-server__next-internal_server_app_favicon_ico_route_actions_b931e89c.js +3 -0
  167. package/.next/server/chunks/ced06_growth-mock-server__next-internal_server_app_favicon_ico_route_actions_b931e89c.js.map +1 -0
  168. package/.next/server/chunks/ssr/3d860_Project_Web_growth-mock-server__next-internal_server_app_page_actions_a455ccb7.js +3 -0
  169. package/.next/server/chunks/ssr/3d860_Project_Web_growth-mock-server__next-internal_server_app_page_actions_a455ccb7.js.map +1 -0
  170. package/.next/server/chunks/ssr/4c6d9__next-internal_server_app__global-error_page_actions_386af4fb.js +3 -0
  171. package/.next/server/chunks/ssr/4c6d9__next-internal_server_app__global-error_page_actions_386af4fb.js.map +1 -0
  172. package/.next/server/chunks/ssr/8e02f_lucide-react_dist_esm_createLucideIcon_92babc87.js +3 -0
  173. package/.next/server/chunks/ssr/8e02f_lucide-react_dist_esm_createLucideIcon_92babc87.js.map +1 -0
  174. package/.next/server/chunks/ssr/8e02f_next_dist_5f7af8e7._.js +3 -0
  175. package/.next/server/chunks/ssr/8e02f_next_dist_5f7af8e7._.js.map +1 -0
  176. package/.next/server/chunks/ssr/8e02f_next_dist_8b7d79d3._.js +6 -0
  177. package/.next/server/chunks/ssr/8e02f_next_dist_8b7d79d3._.js.map +1 -0
  178. package/.next/server/chunks/ssr/8e02f_next_dist_a79dfbb1._.js +4 -0
  179. package/.next/server/chunks/ssr/8e02f_next_dist_a79dfbb1._.js.map +1 -0
  180. package/.next/server/chunks/ssr/8e02f_next_dist_client_components_b780ac2a._.js +3 -0
  181. package/.next/server/chunks/ssr/8e02f_next_dist_client_components_b780ac2a._.js.map +1 -0
  182. package/.next/server/chunks/ssr/8e02f_next_dist_client_components_builtin_forbidden_8e6242aa.js +3 -0
  183. package/.next/server/chunks/ssr/8e02f_next_dist_client_components_builtin_forbidden_8e6242aa.js.map +1 -0
  184. package/.next/server/chunks/ssr/8e02f_next_dist_client_components_builtin_global-error_fef7daa4.js +3 -0
  185. package/.next/server/chunks/ssr/8e02f_next_dist_client_components_builtin_global-error_fef7daa4.js.map +1 -0
  186. package/.next/server/chunks/ssr/8e02f_next_dist_client_components_builtin_unauthorized_d6f465ad.js +3 -0
  187. package/.next/server/chunks/ssr/8e02f_next_dist_client_components_builtin_unauthorized_d6f465ad.js.map +1 -0
  188. package/.next/server/chunks/ssr/8e02f_next_dist_esm_build_templates_app-page_aefc7b05.js +4 -0
  189. package/.next/server/chunks/ssr/8e02f_next_dist_esm_build_templates_app-page_aefc7b05.js.map +1 -0
  190. package/.next/server/chunks/ssr/Desktop_Project_Web_growth-mock-server_192f26a7._.js +3 -0
  191. package/.next/server/chunks/ssr/Desktop_Project_Web_growth-mock-server_192f26a7._.js.map +1 -0
  192. package/.next/server/chunks/ssr/Desktop_Project_Web_growth-mock-server_4d3bfee7._.js +4 -0
  193. package/.next/server/chunks/ssr/Desktop_Project_Web_growth-mock-server_4d3bfee7._.js.map +1 -0
  194. package/.next/server/chunks/ssr/Desktop_Project_Web_growth-mock-server_app_734cd624._.js +3 -0
  195. package/.next/server/chunks/ssr/Desktop_Project_Web_growth-mock-server_app_734cd624._.js.map +1 -0
  196. package/.next/server/chunks/ssr/Desktop_Project_Web_growth-mock-server_e3bf5efe._.js +7 -0
  197. package/.next/server/chunks/ssr/Desktop_Project_Web_growth-mock-server_e3bf5efe._.js.map +1 -0
  198. package/.next/server/chunks/ssr/[externals]_next_dist_server_app-render_work-async-storage_external_1f8eeae7.js +3 -0
  199. package/.next/server/chunks/ssr/[externals]_next_dist_server_app-render_work-async-storage_external_1f8eeae7.js.map +1 -0
  200. package/.next/server/chunks/ssr/[root-of-the-server]__04e2ab43._.js +10 -0
  201. package/.next/server/chunks/ssr/[root-of-the-server]__04e2ab43._.js.map +1 -0
  202. package/.next/server/chunks/ssr/[root-of-the-server]__0715ef20._.js +3 -0
  203. package/.next/server/chunks/ssr/[root-of-the-server]__0715ef20._.js.map +1 -0
  204. package/.next/server/chunks/ssr/[root-of-the-server]__0c263e23._.js +3 -0
  205. package/.next/server/chunks/ssr/[root-of-the-server]__0c263e23._.js.map +1 -0
  206. package/.next/server/chunks/ssr/[root-of-the-server]__5d3307e0._.js +3 -0
  207. package/.next/server/chunks/ssr/[root-of-the-server]__5d3307e0._.js.map +1 -0
  208. package/.next/server/chunks/ssr/[root-of-the-server]__6f5c427b._.js +4 -0
  209. package/.next/server/chunks/ssr/[root-of-the-server]__6f5c427b._.js.map +1 -0
  210. package/.next/server/chunks/ssr/[root-of-the-server]__a41353a2._.js +3 -0
  211. package/.next/server/chunks/ssr/[root-of-the-server]__a41353a2._.js.map +1 -0
  212. package/.next/server/chunks/ssr/[root-of-the-server]__c6e8de01._.js +3 -0
  213. package/.next/server/chunks/ssr/[root-of-the-server]__c6e8de01._.js.map +1 -0
  214. package/.next/server/chunks/ssr/[root-of-the-server]__c9e25af2._.js +3 -0
  215. package/.next/server/chunks/ssr/[root-of-the-server]__c9e25af2._.js.map +1 -0
  216. package/.next/server/chunks/ssr/[root-of-the-server]__caa92361._.js +3 -0
  217. package/.next/server/chunks/ssr/[root-of-the-server]__caa92361._.js.map +1 -0
  218. package/.next/server/chunks/ssr/[root-of-the-server]__d0f18aa0._.js +3 -0
  219. package/.next/server/chunks/ssr/[root-of-the-server]__d0f18aa0._.js.map +1 -0
  220. package/.next/server/chunks/ssr/[root-of-the-server]__e5032d8c._.js +3 -0
  221. package/.next/server/chunks/ssr/[root-of-the-server]__e5032d8c._.js.map +1 -0
  222. package/.next/server/chunks/ssr/[turbopack]_runtime.js +795 -0
  223. package/.next/server/chunks/ssr/[turbopack]_runtime.js.map +10 -0
  224. package/.next/server/chunks/ssr/ced06_growth-mock-server__next-internal_server_app__not-found_page_actions_41a9defd.js +3 -0
  225. package/.next/server/chunks/ssr/ced06_growth-mock-server__next-internal_server_app__not-found_page_actions_41a9defd.js.map +1 -0
  226. package/.next/server/functions-config-manifest.json +4 -0
  227. package/.next/server/interception-route-rewrite-manifest.js +1 -0
  228. package/.next/server/middleware-build-manifest.js +20 -0
  229. package/.next/server/middleware-manifest.json +6 -0
  230. package/.next/server/next-font-manifest.js +1 -0
  231. package/.next/server/next-font-manifest.json +15 -0
  232. package/.next/server/pages/404.html +1 -0
  233. package/.next/server/pages/500.html +2 -0
  234. package/.next/server/pages-manifest.json +4 -0
  235. package/.next/server/server-reference-manifest.js +1 -0
  236. package/.next/server/server-reference-manifest.json +5 -0
  237. package/.next/static/17-ALhiWger7Ahids28qF/_buildManifest.js +11 -0
  238. package/.next/static/17-ALhiWger7Ahids28qF/_clientMiddlewareManifest.json +1 -0
  239. package/.next/static/17-ALhiWger7Ahids28qF/_ssgManifest.js +1 -0
  240. package/.next/static/chunks/31523f3a41fdf0b5.js +1 -0
  241. package/.next/static/chunks/3a3338ff069e0977.js +5 -0
  242. package/.next/static/chunks/68c20af4dfeb36d0.js +1 -0
  243. package/.next/static/chunks/77942ffae83b12ce.js +1 -0
  244. package/.next/static/chunks/81faf4667437d774.js +1 -0
  245. package/.next/static/chunks/8c554104dfee37e0.js +5 -0
  246. package/.next/static/chunks/a6dad97d9634a72d.js +1 -0
  247. package/.next/static/chunks/a6dad97d9634a72d.js.map +1 -0
  248. package/.next/static/chunks/ab3bc4985a0e98d2.css +3 -0
  249. package/.next/static/chunks/d71bf6d63636cd19.js +1 -0
  250. package/.next/static/chunks/f32c6649a0ca2698.js +1 -0
  251. package/.next/static/chunks/turbopack-7ea3b444f61e390f.js +4 -0
  252. package/.next/static/media/4fa387ec64143e14-s.c1fdd6c2.woff2 +0 -0
  253. package/.next/static/media/7178b3e590c64307-s.b97b3418.woff2 +0 -0
  254. package/.next/static/media/797e433ab948586e-s.p.dbea232f.woff2 +0 -0
  255. package/.next/static/media/8a480f0b521d4e75-s.8e0177b5.woff2 +0 -0
  256. package/.next/static/media/bbc41e54d2fcbd21-s.799d8ef8.woff2 +0 -0
  257. package/.next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2 +0 -0
  258. package/.next/static/media/favicon.de6b30f1.ico +0 -0
  259. package/.next/trace +1 -0
  260. package/.next/trace-build +1 -0
  261. package/.next/turbopack +0 -0
  262. package/.next/types/routes.d.ts +78 -0
  263. package/.next/types/validator.ts +124 -0
  264. package/README.md +24 -1
  265. package/package.json +20 -13
  266. package/prisma/schema.prisma +1 -0
  267. package/.claude/settings.local.json +0 -10
  268. package/CLAUDE.md +0 -58
  269. package/app/api/endpoints/[id]/route.ts +0 -63
  270. package/app/api/endpoints/bulk/route.ts +0 -23
  271. package/app/api/endpoints/import/route.ts +0 -52
  272. package/app/api/endpoints/route.ts +0 -39
  273. package/app/api/endpoints/sync/route.ts +0 -80
  274. package/app/api/mock/[...slug]/route.ts +0 -82
  275. package/app/globals.css +0 -125
  276. package/app/layout.tsx +0 -36
  277. package/app/page.tsx +0 -184
  278. package/components/endpoint-edit-dialog.tsx +0 -181
  279. package/components/endpoint-table.tsx +0 -133
  280. package/components/openapi-upload-dialog.tsx +0 -196
  281. package/components/ui/button.tsx +0 -62
  282. package/components/ui/checkbox.tsx +0 -32
  283. package/components/ui/dialog.tsx +0 -143
  284. package/components/ui/input.tsx +0 -21
  285. package/components/ui/label.tsx +0 -24
  286. package/components/ui/sonner.tsx +0 -37
  287. package/components/ui/table.tsx +0 -116
  288. package/components/ui/textarea.tsx +0 -18
  289. package/components.json +0 -22
  290. package/eslint.config.mjs +0 -18
  291. package/lib/openapi-parser.ts +0 -270
  292. package/lib/prisma.ts +0 -9
  293. package/lib/utils.ts +0 -6
  294. package/lib/validation.ts +0 -19
  295. package/next.config.ts +0 -7
  296. package/pnpm-workspace.yaml +0 -4
  297. package/postcss.config.mjs +0 -7
  298. package/prisma/seed.ts +0 -29
  299. package/tsconfig.json +0 -34
  300. package/types/endpoint.ts +0 -10
  301. /package/{app/favicon.ico → .next/server/app/favicon.ico.body} +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,57534,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},34893,(e,t,r)=>{"use strict";function n(e,t={}){if(t.onlyHashChange)return void e();let r=document.documentElement;if("smooth"!==r.dataset.scrollBehavior)return void e();let a=r.style.scrollBehavior;r.style.scrollBehavior="auto",t.dontForceLayout||r.getClientRects(),e(),r.style.scrollBehavior=a}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"disableSmoothScrollDuringRouteTransition",{enumerable:!0,get:function(){return n}}),e.r(57534)},80778,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"HTTPAccessFallbackBoundary",{enumerable:!0,get:function(){return l}});let n=e.r(13549),a=e.r(53500),o=n._(e.r(42043)),i=e.r(95276),s=e.r(71255);e.r(57534);let c=e.r(77713);class u extends o.default.Component{constructor(e){super(e),this.state={triggeredStatus:void 0,previousPathname:e.pathname}}componentDidCatch(){}static getDerivedStateFromError(e){if((0,s.isHTTPAccessFallbackError)(e))return{triggeredStatus:(0,s.getAccessFallbackHTTPStatus)(e)};throw e}static getDerivedStateFromProps(e,t){return e.pathname!==t.previousPathname&&t.triggeredStatus?{triggeredStatus:void 0,previousPathname:e.pathname}:{triggeredStatus:t.triggeredStatus,previousPathname:e.pathname}}render(){let{notFound:e,forbidden:t,unauthorized:r,children:n}=this.props,{triggeredStatus:o}=this.state,i={[s.HTTPAccessErrorStatus.NOT_FOUND]:e,[s.HTTPAccessErrorStatus.FORBIDDEN]:t,[s.HTTPAccessErrorStatus.UNAUTHORIZED]:r};if(o){let c=o===s.HTTPAccessErrorStatus.NOT_FOUND&&e,u=o===s.HTTPAccessErrorStatus.FORBIDDEN&&t,l=o===s.HTTPAccessErrorStatus.UNAUTHORIZED&&r;return c||u||l?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("meta",{name:"robots",content:"noindex"}),!1,i[o]]}):n}return n}}function l({notFound:e,forbidden:t,unauthorized:r,children:n}){let s=(0,i.useUntrackedPathname)(),l=(0,o.useContext)(c.MissingSlotContext);return e||t||r?(0,a.jsx)(u,{pathname:s,notFound:e,forbidden:t,unauthorized:r,missingSlots:l,children:n}):(0,a.jsx)(a.Fragment,{children:n})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},4427,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useRouterBFCache",{enumerable:!0,get:function(){return a}});let n=e.r(42043);function a(e,t){let[r,a]=(0,n.useState)(()=>({tree:e,stateKey:t,next:null}));if(r.tree===e)return r;let o={tree:e,stateKey:t,next:null},i=1,s=r,c=o;for(;null!==s&&i<1;){if(s.stateKey===t){c.next=s.next;break}{i++;let e={tree:s.tree,stateKey:s.stateKey,next:null};c.next=e,c=e}s=s.next}return a(o),o}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},68402,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return w}});let n=e.r(17274),a=e.r(13549),o=e.r(53500),i=a._(e.r(42043)),s=n._(e.r(60710)),c=e.r(77713),u=e.r(52511),l=e.r(78731),d=e.r(1241),f=e.r(34893),p=e.r(43656),h=e.r(80778),m=e.r(67949),g=e.r(4427);e.r(31803);let y=e.r(80780),b=e.r(95907),P=e.r(31048),_=s.default.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,S=["bottom","height","left","right","top","width","x","y"];function v(e,t){let r=e.getBoundingClientRect();return r.top>=0&&r.top<=t}class O extends i.default.Component{componentDidMount(){this.handlePotentialScroll()}componentDidUpdate(){this.props.focusAndScrollRef.apply&&this.handlePotentialScroll()}render(){return this.props.children}constructor(...e){super(...e),this.handlePotentialScroll=()=>{let{focusAndScrollRef:e,segmentPath:t}=this.props;if(e.apply){if(0!==e.segmentPaths.length&&!e.segmentPaths.some(e=>t.every((t,r)=>(0,d.matchSegment)(t,e[r]))))return;let r=null,n=e.hashFragment;if(n&&(r="top"===n?document.body:document.getElementById(n)??document.getElementsByName(n)[0]),r||(r="undefined"==typeof window?null:(0,_.findDOMNode)(this)),!(r instanceof Element))return;for(;!(r instanceof HTMLElement)||function(e){if(["sticky","fixed"].includes(getComputedStyle(e).position))return!0;let t=e.getBoundingClientRect();return S.every(e=>0===t[e])}(r);){if(null===r.nextElementSibling)return;r=r.nextElementSibling}e.apply=!1,e.hashFragment=null,e.segmentPaths=[],(0,f.disableSmoothScrollDuringRouteTransition)(()=>{if(n)return void r.scrollIntoView();let e=document.documentElement,t=e.clientHeight;!v(r,t)&&(e.scrollTop=0,v(r,t)||r.scrollIntoView())},{dontForceLayout:!0,onlyHashChange:e.onlyHashChange}),e.onlyHashChange=!1,r.focus()}}}}function R({segmentPath:e,children:t}){let r=(0,i.useContext)(c.GlobalLayoutRouterContext);if(!r)throw Object.defineProperty(Error("invariant global layout router not mounted"),"__NEXT_ERROR_CODE",{value:"E473",enumerable:!1,configurable:!0});return(0,o.jsx)(O,{segmentPath:e,focusAndScrollRef:r.focusAndScrollRef,children:t})}function E({tree:e,segmentPath:t,debugNameContext:r,cacheNode:n,params:a,url:s,isActive:l}){let d,f=(0,i.useContext)(c.GlobalLayoutRouterContext);if((0,i.useContext)(y.NavigationPromisesContext),!f)throw Object.defineProperty(Error("invariant global layout router not mounted"),"__NEXT_ERROR_CODE",{value:"E473",enumerable:!1,configurable:!0});let p=null!==n?n:(0,i.use)(u.unresolvedThenable),h=null!==p.prefetchRsc?p.prefetchRsc:p.rsc,m=(0,i.useDeferredValue)(p.rsc,h);if((0,P.isDeferredRsc)(m)){let e=(0,i.use)(m);null===e&&(0,i.use)(u.unresolvedThenable),d=e}else null===m&&(0,i.use)(u.unresolvedThenable),d=m;let g=d;return(0,o.jsx)(c.LayoutRouterContext.Provider,{value:{parentTree:e,parentCacheNode:p,parentSegmentPath:t,parentParams:a,debugNameContext:r,url:s,isActive:l},children:g})}function j({name:e,loading:t,children:r}){let n;if(n="object"==typeof t&&null!==t&&"function"==typeof t.then?(0,i.use)(t):t){let t=n[0],a=n[1],s=n[2];return(0,o.jsx)(i.Suspense,{name:e,fallback:(0,o.jsxs)(o.Fragment,{children:[a,s,t]}),children:r})}return(0,o.jsx)(o.Fragment,{children:r})}function w({parallelRouterKey:e,error:t,errorStyles:r,errorScripts:n,templateStyles:a,templateScripts:s,template:d,notFound:f,forbidden:y,unauthorized:P,segmentViewBoundaries:_}){let S=(0,i.useContext)(c.LayoutRouterContext);if(!S)throw Object.defineProperty(Error("invariant expected layout router to be mounted"),"__NEXT_ERROR_CODE",{value:"E56",enumerable:!1,configurable:!0});let{parentTree:v,parentCacheNode:O,parentSegmentPath:w,parentParams:C,url:T,isActive:x,debugNameContext:A}=S,M=O.parallelRoutes,D=M.get(e);D||(D=new Map,M.set(e,D));let F=v[0],I=null===w?[e]:w.concat([F,e]),k=v[1][e];void 0===k&&(0,i.use)(u.unresolvedThenable);let N=k[0],U=(0,m.createRouterCacheKey)(N,!0),B=(0,g.useRouterBFCache)(k,U),L=[];do{let e=B.tree,i=B.stateKey,u=e[0],g=(0,m.createRouterCacheKey)(u),_=D.get(g)??null,S=C;if(Array.isArray(u)){let e=u[0],t=u[1],r=u[2],n=(0,b.getParamValueFromCacheKey)(t,r);null!==n&&(S={...C,[e]:n})}let v=function(e){if("/"===e)return"/";if("string"==typeof e)if("(slot)"===e)return;else return e+"/";return e[1]+"/"}(u),w=v??A,M=void 0===v?void 0:A,F=O.loading,k=(0,o.jsxs)(c.TemplateContext.Provider,{value:(0,o.jsxs)(R,{segmentPath:I,children:[(0,o.jsx)(l.ErrorBoundary,{errorComponent:t,errorStyles:r,errorScripts:n,children:(0,o.jsx)(j,{name:M,loading:F,children:(0,o.jsx)(h.HTTPAccessFallbackBoundary,{notFound:f,forbidden:y,unauthorized:P,children:(0,o.jsxs)(p.RedirectBoundary,{children:[(0,o.jsx)(E,{url:T,tree:e,params:S,cacheNode:_,segmentPath:I,debugNameContext:w,isActive:x&&i===U}),null]})})})}),null]}),children:[a,s,d]},i);L.push(k),B=B.next}while(null!==B)return L}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},1359,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return s}});let n=e.r(13549),a=e.r(53500),o=n._(e.r(42043)),i=e.r(77713);function s(){let e=(0,o.useContext)(i.TemplateContext);return(0,a.jsx)(a.Fragment,{children:e})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},36505,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderSearchParamsFromClient",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e){let t=n.get(e);if(t)return t;let r=Promise.resolve(e);return n.set(e,r),r}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},33727,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderSearchParamsFromClient",{enumerable:!0,get:function(){return n}});let n=e.r(36505).createRenderSearchParamsFromClient;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},97911,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderParamsFromClient",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e){let t=n.get(e);if(t)return t;let r=Promise.resolve(e);return n.set(e,r),r}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},77577,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderParamsFromClient",{enumerable:!0,get:function(){return n}});let n=e.r(97911).createRenderParamsFromClient;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},60982,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReflectAdapter",{enumerable:!0,get:function(){return n}});class n{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},85480,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createDedupedByCallsiteServerErrorLoggerDev",{enumerable:!0,get:function(){return c}});let n=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=a(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var s=o?Object.getOwnPropertyDescriptor(e,i):null;s&&(s.get||s.set)?Object.defineProperty(n,i,s):n[i]=e[i]}return n.default=e,r&&r.set(e,n),n}(e.r(42043));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(a=function(e){return e?r:t})(e)}let o={current:null},i="function"==typeof n.cache?n.cache:e=>e,s=console.warn;function c(e){return function(...t){s(e(...t))}}i(e=>{try{s(o.current)}finally{o.current=null}})},90127,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={describeHasCheckingStringProperty:function(){return s},describeStringPropertyAccess:function(){return i},wellKnownProperties:function(){return c}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function i(e,t){return o.test(t)?`\`${e}.${t}\``:`\`${e}[${JSON.stringify(t)}]\``}function s(e,t){let r=JSON.stringify(t);return`\`Reflect.has(${e}, ${r})\`, \`${r} in ${e}\`, or similar`}let c=new Set(["hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toString","valueOf","toLocaleString","then","catch","finally","status","displayName","_debugInfo","toJSON","$$typeof","__esModule"])},21059,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(38981).createAsyncLocalStorage)()},56279,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return n.afterTaskAsyncStorageInstance}});let n=e.r(21059)},29592,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={isRequestAPICallableInsideAfter:function(){return u},throwForSearchParamsAccessInUseCache:function(){return c},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return s}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(26619),i=e.r(56279);function s(e,t){throw Object.defineProperty(new o.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function c(e,t){let r=Object.defineProperty(Error(`Route ${e.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(r,t),e.invalidDynamicUsageError??=r,r}function u(){let e=i.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}},81523,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={RenderStage:function(){return c},StagedRenderingController:function(){return u}};for(var o in a)Object.defineProperty(r,o,{enumerable:!0,get:a[o]});let i=e.r(87721),s=e.r(53404);var c=((n={})[n.Before=1]="Before",n[n.Static=2]="Static",n[n.Runtime=3]="Runtime",n[n.Dynamic=4]="Dynamic",n[n.Abandoned=5]="Abandoned",n);class u{constructor(e=null,t){this.abortSignal=e,this.hasRuntimePrefetch=t,this.currentStage=1,this.staticInterruptReason=null,this.runtimeInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.runtimeStagePromise=(0,s.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,s.createPromiseWithResolvers)(),this.mayAbandon=!1,e&&(e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<3&&(this.runtimeStagePromise.promise.catch(l),this.runtimeStagePromise.reject(t)),(this.currentStage<4||5===this.currentStage)&&(this.dynamicStagePromise.promise.catch(l),this.dynamicStagePromise.reject(t))},{once:!0}),this.mayAbandon=!0)}onStage(e,t){if(this.currentStage>=e)t();else if(3===e)this.runtimeStageListeners.push(t);else if(4===e)this.dynamicStageListeners.push(t);else throw Object.defineProperty(new i.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}canSyncInterrupt(){if(1===this.currentStage)return!1;let e=this.hasRuntimePrefetch?4:3;return this.currentStage<e}syncInterruptCurrentStageWithReason(e){if(1!==this.currentStage){if(this.mayAbandon)return this.abandonRenderImpl();switch(this.currentStage){case 2:this.staticInterruptReason=e,this.advanceStage(4);return;case 3:this.hasRuntimePrefetch&&(this.runtimeInterruptReason=e,this.advanceStage(4));return}}}getStaticInterruptReason(){return this.staticInterruptReason}getRuntimeInterruptReason(){return this.runtimeInterruptReason}getStaticStageEndTime(){return this.staticStageEndTime}getRuntimeStageEndTime(){return this.runtimeStageEndTime}abandonRender(){if(!this.mayAbandon)throw Object.defineProperty(new i.InvariantError("`abandonRender` called on a stage controller that cannot be abandoned."),"__NEXT_ERROR_CODE",{value:"E938",enumerable:!1,configurable:!0});this.abandonRenderImpl()}abandonRenderImpl(){let{currentStage:e}=this;switch(e){case 2:this.currentStage=5,this.resolveRuntimeStage();return;case 3:this.currentStage=5;return}}advanceStage(e){if(e<=this.currentStage)return;let t=this.currentStage;if(this.currentStage=e,t<3&&e>=3&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),t<4&&e>=4){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveRuntimeStage(){let e=this.runtimeStageListeners;for(let t=0;t<e.length;t++)e[t]();e.length=0,this.runtimeStagePromise.resolve()}resolveDynamicStage(){let e=this.dynamicStageListeners;for(let t=0;t<e.length;t++)e[t]();e.length=0,this.dynamicStagePromise.resolve()}getStagePromise(e){switch(e){case 3:return this.runtimeStagePromise.promise;case 4:return this.dynamicStagePromise.promise;default:throw Object.defineProperty(new i.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}}waitForStage(e){return this.getStagePromise(e)}delayUntilStage(e,t,r){var n,a,o;let i,s=(n=this.getStagePromise(e),a=t,o=r,i=new Promise((e,t)=>{n.then(e.bind(null,o),t)}),void 0!==a&&(i.displayName=a),i);return this.abortSignal&&s.catch(l),s}}function l(){}},55882,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={createPrerenderSearchParamsForClientPage:function(){return g},createSearchParamsFromClient:function(){return p},createServerSearchParamsForMetadata:function(){return h},createServerSearchParamsForServerPage:function(){return m},makeErroringSearchParamsForUseCache:function(){return S}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(60982),i=e.r(47990),s=e.r(70979),c=e.r(87721),u=e.r(56890),l=e.r(85480),d=e.r(90127),f=e.r(29592);function p(e,t){let r=s.workUnitAsyncStorage.getStore();if(r)switch(r.type){case"prerender":case"prerender-client":case"prerender-ppr":case"prerender-legacy":return y(t,r);case"prerender-runtime":throw Object.defineProperty(new c.InvariantError("createSearchParamsFromClient should not be called in a runtime prerender."),"__NEXT_ERROR_CODE",{value:"E769",enumerable:!1,configurable:!0});case"cache":case"private-cache":case"unstable-cache":throw Object.defineProperty(new c.InvariantError("createSearchParamsFromClient should not be called in cache contexts."),"__NEXT_ERROR_CODE",{value:"E739",enumerable:!1,configurable:!0});case"request":return b(e,t,r)}(0,s.throwInvariantForMissingStore)()}e.r(81523);let h=m;function m(e,t){let r=s.workUnitAsyncStorage.getStore();if(r)switch(r.type){case"prerender":case"prerender-client":case"prerender-ppr":case"prerender-legacy":return y(t,r);case"cache":case"private-cache":case"unstable-cache":throw Object.defineProperty(new c.InvariantError("createServerSearchParamsForServerPage should not be called in cache contexts."),"__NEXT_ERROR_CODE",{value:"E747",enumerable:!1,configurable:!0});case"prerender-runtime":var n,a;return n=e,a=r,(0,i.delayUntilRuntimeStage)(a,v(n));case"request":return b(e,t,r)}(0,s.throwInvariantForMissingStore)()}function g(e){if(e.forceStatic)return Promise.resolve({});let t=s.workUnitAsyncStorage.getStore();if(t)switch(t.type){case"prerender":case"prerender-client":return(0,u.makeHangingPromise)(t.renderSignal,e.route,"`searchParams`");case"prerender-runtime":throw Object.defineProperty(new c.InvariantError("createPrerenderSearchParamsForClientPage should not be called in a runtime prerender."),"__NEXT_ERROR_CODE",{value:"E768",enumerable:!1,configurable:!0});case"cache":case"private-cache":case"unstable-cache":throw Object.defineProperty(new c.InvariantError("createPrerenderSearchParamsForClientPage should not be called in cache contexts."),"__NEXT_ERROR_CODE",{value:"E746",enumerable:!1,configurable:!0});case"prerender-ppr":case"prerender-legacy":case"request":return Promise.resolve({})}(0,s.throwInvariantForMissingStore)()}function y(e,t){if(e.forceStatic)return Promise.resolve({});switch(t.type){case"prerender":case"prerender-client":var r=e,n=t;let a=P.get(n);if(a)return a;let s=(0,u.makeHangingPromise)(n.renderSignal,r.route,"`searchParams`"),c=new Proxy(s,{get(e,t,r){if(Object.hasOwn(s,t))return o.ReflectAdapter.get(e,t,r);switch(t){case"then":return(0,i.annotateDynamicAccess)("`await searchParams`, `searchParams.then`, or similar",n),o.ReflectAdapter.get(e,t,r);case"status":return(0,i.annotateDynamicAccess)("`use(searchParams)`, `searchParams.status`, or similar",n),o.ReflectAdapter.get(e,t,r);default:return o.ReflectAdapter.get(e,t,r)}}});return P.set(n,c),c;case"prerender-ppr":case"prerender-legacy":var l=e,d=t;let p=P.get(l);if(p)return p;let h=Promise.resolve({}),m=new Proxy(h,{get(e,t,r){if(Object.hasOwn(h,t))return o.ReflectAdapter.get(e,t,r);if("string"==typeof t&&"then"===t){let e="`await searchParams`, `searchParams.then`, or similar";l.dynamicShouldError?(0,f.throwWithStaticGenerationBailoutErrorWithDynamicError)(l.route,e):"prerender-ppr"===d.type?(0,i.postponeWithTracking)(l.route,e,d.dynamicTracking):(0,i.throwToInterruptStaticGeneration)(e,l,d)}return o.ReflectAdapter.get(e,t,r)}});return P.set(l,m),m;default:return t}}function b(e,t,r){return t.forceStatic?Promise.resolve({}):v(e)}let P=new WeakMap,_=new WeakMap;function S(e){let t=_.get(e);if(t)return t;let r=Promise.resolve({}),n=new Proxy(r,{get:function t(n,a,i){return Object.hasOwn(r,a)||"string"!=typeof a||"then"!==a&&d.wellKnownProperties.has(a)||(0,f.throwForSearchParamsAccessInUseCache)(e,t),o.ReflectAdapter.get(n,a,i)}});return _.set(e,n),n}function v(e){let t=P.get(e);if(t)return t;let r=Promise.resolve(e);return P.set(e,r),r}(0,l.createDedupedByCallsiteServerErrorLoggerDev)(function(e,t){let r=e?`Route "${e}" `:"This route ";return Object.defineProperty(Error(`${r}used ${t}. \`searchParams\` is a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`),"__NEXT_ERROR_CODE",{value:"E848",enumerable:!1,configurable:!0})})},13650,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"dynamicAccessAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(38981).createAsyncLocalStorage)()},1929,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"dynamicAccessAsyncStorage",{enumerable:!0,get:function(){return n.dynamicAccessAsyncStorageInstance}});let n=e.r(13650)},70198,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={createParamsFromClient:function(){return h},createPrerenderParamsForClientSegment:function(){return b},createServerParamsForMetadata:function(){return m},createServerParamsForRoute:function(){return g},createServerParamsForServerSegment:function(){return y}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(38908),i=e.r(60982),s=e.r(47990),c=e.r(70979),u=e.r(87721),l=e.r(90127),d=e.r(56890),f=e.r(85480),p=e.r(1929);function h(e,t){let r=c.workUnitAsyncStorage.getStore();if(r)switch(r.type){case"prerender":case"prerender-client":case"prerender-ppr":case"prerender-legacy":return P(e,t,r);case"cache":case"private-cache":case"unstable-cache":throw Object.defineProperty(new u.InvariantError("createParamsFromClient should not be called in cache contexts."),"__NEXT_ERROR_CODE",{value:"E736",enumerable:!1,configurable:!0});case"prerender-runtime":throw Object.defineProperty(new u.InvariantError("createParamsFromClient should not be called in a runtime prerender."),"__NEXT_ERROR_CODE",{value:"E770",enumerable:!1,configurable:!0});case"request":return O(e)}(0,c.throwInvariantForMissingStore)()}e.r(81523);let m=y;function g(e,t){let r=c.workUnitAsyncStorage.getStore();if(r)switch(r.type){case"prerender":case"prerender-client":case"prerender-ppr":case"prerender-legacy":return P(e,t,r);case"cache":case"private-cache":case"unstable-cache":throw Object.defineProperty(new u.InvariantError("createServerParamsForRoute should not be called in cache contexts."),"__NEXT_ERROR_CODE",{value:"E738",enumerable:!1,configurable:!0});case"prerender-runtime":return _(e,r);case"request":return O(e)}(0,c.throwInvariantForMissingStore)()}function y(e,t){let r=c.workUnitAsyncStorage.getStore();if(r)switch(r.type){case"prerender":case"prerender-client":case"prerender-ppr":case"prerender-legacy":return P(e,t,r);case"cache":case"private-cache":case"unstable-cache":throw Object.defineProperty(new u.InvariantError("createServerParamsForServerSegment should not be called in cache contexts."),"__NEXT_ERROR_CODE",{value:"E743",enumerable:!1,configurable:!0});case"prerender-runtime":return _(e,r);case"request":return O(e)}(0,c.throwInvariantForMissingStore)()}function b(e){let t=o.workAsyncStorage.getStore();if(!t)throw Object.defineProperty(new u.InvariantError("Missing workStore in createPrerenderParamsForClientSegment"),"__NEXT_ERROR_CODE",{value:"E773",enumerable:!1,configurable:!0});let r=c.workUnitAsyncStorage.getStore();if(r)switch(r.type){case"prerender":case"prerender-client":let n=r.fallbackRouteParams;if(n){for(let a in e)if(n.has(a))return(0,d.makeHangingPromise)(r.renderSignal,t.route,"`params`")}break;case"cache":case"private-cache":case"unstable-cache":throw Object.defineProperty(new u.InvariantError("createPrerenderParamsForClientSegment should not be called in cache contexts."),"__NEXT_ERROR_CODE",{value:"E734",enumerable:!1,configurable:!0})}return Promise.resolve(e)}function P(e,t,r){switch(r.type){case"prerender":case"prerender-client":{let n=r.fallbackRouteParams;if(n){for(let a in e)if(n.has(a))return function(e,t,r){let n=S.get(e);if(n)return n;let a=new Proxy((0,d.makeHangingPromise)(r.renderSignal,t.route,"`params`"),v);return S.set(e,a),a}(e,t,r)}break}case"prerender-ppr":{let n=r.fallbackRouteParams;if(n){for(let a in e)if(n.has(a))return function(e,t,r,n){let a=S.get(e);if(a)return a;let o={...e},i=Promise.resolve(o);return S.set(e,i),Object.keys(e).forEach(e=>{l.wellKnownProperties.has(e)||t.has(e)&&Object.defineProperty(o,e,{get(){let t=(0,l.describeStringPropertyAccess)("params",e);"prerender-ppr"===n.type?(0,s.postponeWithTracking)(r.route,t,n.dynamicTracking):(0,s.throwToInterruptStaticGeneration)(t,r,n)},enumerable:!0})}),i}(e,n,t,r)}}}return O(e)}function _(e,t){return(0,s.delayUntilRuntimeStage)(t,O(e))}let S=new WeakMap,v={get:function(e,t,r){if("then"===t||"catch"===t||"finally"===t){let n=i.ReflectAdapter.get(e,t,r);return({[t]:(...t)=>{let r=p.dynamicAccessAsyncStorage.getStore();return r&&r.abortController.abort(Object.defineProperty(Error("Accessed fallback `params` during prerendering."),"__NEXT_ERROR_CODE",{value:"E691",enumerable:!1,configurable:!0})),new Proxy(n.apply(e,t),v)}})[t]}return i.ReflectAdapter.get(e,t,r)}};function O(e){let t=S.get(e);if(t)return t;let r=Promise.resolve(e);return S.set(e,r),r}(0,f.createDedupedByCallsiteServerErrorLoggerDev)(function(e,t){let r=e?`Route "${e}" `:"This route ";return Object.defineProperty(Error(`${r}used ${t}. \`params\` is a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`),"__NEXT_ERROR_CODE",{value:"E834",enumerable:!1,configurable:!0})})},91060,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ClientPageRoot",{enumerable:!0,get:function(){return u}});let n=e.r(53500),a=e.r(87721),o=e.r(77713),i=e.r(42043),s=e.r(95907),c=e.r(80780);function u({Component:t,serverProvidedParams:r}){let u,l;if(null!==r)u=r.searchParams,l=r.params;else{let e=(0,i.use)(o.LayoutRouterContext);l=null!==e?e.parentParams:{},u=(0,s.urlSearchParamsToParsedUrlQuery)((0,i.use)(c.SearchParamsContext))}if("undefined"==typeof window){let r,o,{workAsyncStorage:i}=e.r(38908),s=i.getStore();if(!s)throw Object.defineProperty(new a.InvariantError("Expected workStore to exist when handling searchParams in a client Page."),"__NEXT_ERROR_CODE",{value:"E564",enumerable:!1,configurable:!0});let{createSearchParamsFromClient:c}=e.r(55882);r=c(u,s);let{createParamsFromClient:d}=e.r(70198);return o=d(l,s),(0,n.jsx)(t,{params:o,searchParams:r})}{let{createRenderSearchParamsFromClient:r}=e.r(33727),a=r(u),{createRenderParamsFromClient:o}=e.r(77577),i=o(l);return(0,n.jsx)(t,{params:i,searchParams:a})}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},48344,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ClientSegmentRoot",{enumerable:!0,get:function(){return s}});let n=e.r(53500),a=e.r(87721),o=e.r(77713),i=e.r(42043);function s({Component:t,slots:r,serverProvidedParams:s}){let c;if(null!==s)c=s.params;else{let e=(0,i.use)(o.LayoutRouterContext);c=null!==e?e.parentParams:{}}if("undefined"==typeof window){let o,{workAsyncStorage:i}=e.r(38908),s=i.getStore();if(!s)throw Object.defineProperty(new a.InvariantError("Expected workStore to exist when handling params in a client segment such as a Layout or Template."),"__NEXT_ERROR_CODE",{value:"E600",enumerable:!1,configurable:!0});let{createParamsFromClient:u}=e.r(70198);return o=u(c,s),(0,n.jsx)(t,{...r,params:o})}{let{createRenderParamsFromClient:a}=e.r(77577),o=a(c);return(0,n.jsx)(t,{...r,params:o})}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18521,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"IconMark",{enumerable:!0,get:function(){return a}});let n=e.r(53500),a=()=>"undefined"!=typeof window?null:(0,n.jsx)("meta",{name:"«nxt-icon»"})}]);
@@ -0,0 +1,4 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/68c20af4dfeb36d0.js","static/chunks/d71bf6d63636cd19.js","static/chunks/8c554104dfee37e0.js"],runtimeModuleIds:[63435]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=(self.TURBOPACK_CHUNK_SUFFIX??document?.currentScript?.getAttribute?.("src")?.replace(/^(.*(?=\?)|^.*$)/,""))||"",n=new WeakMap;function o(e,t){this.m=e,this.e=t}let l=o.prototype,i=Object.prototype.hasOwnProperty,s="undefined"!=typeof Symbol&&Symbol.toStringTag;function u(e,t,r){i.call(e,t)||Object.defineProperty(e,t,r)}function c(e,t){let r=e[t];return r||(r=a(t),e[t]=r),r}function a(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function f(e,t){u(e,"__esModule",{value:!0}),s&&u(e,s,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)u(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?u(e,n,{get:o,set:t[r++],enumerable:!0}):u(e,n,{get:o,enumerable:!0})}Object.seal(e)}l.s=function(e,t){let r,n;null!=t?n=(r=c(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,f(n,e)},l.j=function(e,t){var r,o;let l,s,u;null!=t?s=(l=c(this.c,t)).exports:(l=this.m,s=this.e);let a=(r=l,o=s,(u=n.get(r))||(n.set(r,u=[]),r.exports=r.namespaceObject=new Proxy(o,{get(e,t){if(i.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of u){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of u)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),u);"object"==typeof e&&null!==e&&a.push(e)},l.v=function(e,t){(null!=t?c(this.c,t):this.m).exports=e},l.n=function(e,t){let r;(r=null!=t?c(this.c,t):this.m).exports=r.namespaceObject=e};let p=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d=[null,p({}),p([]),p(p)];function h(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!d.includes(t);t=p(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),f(t,n),t}function m(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=h(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function b(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function y(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}l.i=m,l.A=function(e){return this.r(e)(m.bind(this))},l.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},l.r=function(e){return B(e,this.m).exports},l.f=function(e){function t(t){if(t=b(t),i.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=b(t),i.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let O=Symbol("turbopack queues"),g=Symbol("turbopack exports"),w=Symbol("turbopack error");function C(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}l.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:l,reject:i,promise:s}=y(),u=Object.assign(s,{[g]:r.exports,[O]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),c={get:()=>u,set(e){e!==u&&(u[g]=e)}};Object.defineProperty(r,"exports",c),Object.defineProperty(r,"namespaceObject",c),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(O in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[g]:{},[O]:e=>e(t)};return e.then(e=>{r[g]=e,C(t)},e=>{r[w]=e,C(t)}),r}}return{[g]:e,[O]:()=>{}}}),r=()=>t.map(e=>{if(e[w])throw e[w];return e[g]}),{promise:l,resolve:i}=y(),s=Object.assign(()=>i(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[O](u)),s.queueCount?l:r()},function(e){e?i(u[w]=e):l(u[g]),C(n)}),n&&-1===n.status&&(n.status=0)};let U=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function R(e,t){throw Error(`Invariant: ${t(e)}`)}U.prototype=URL.prototype,l.U=U,l.z=function(e){throw Error("dynamic usage of require is not supported")},l.g=globalThis;let j=o.prototype;var _,k=((_=k||{})[_.Runtime=0]="Runtime",_[_.Parent=1]="Parent",_[_.Update=2]="Update",_);let v=new Map;l.M=v;let $=new Map,P=new Map;async function S(e,t,r){let n;if("string"==typeof r)return E(e,t,K(r));let o=r.included||[],l=o.map(e=>!!v.has(e)||$.get(e));if(l.length>0&&l.every(e=>e))return void await Promise.all(l);let i=r.moduleChunks||[],s=i.map(e=>P.get(e)).filter(e=>e);if(s.length>0){if(s.length===i.length)return void await Promise.all(s);let r=new Set;for(let e of i)P.has(e)||r.add(e);for(let n of r){let r=E(e,t,K(n));P.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=E(e,t,K(r.path)),i))P.has(o)||P.set(o,n)}for(let e of o)$.has(e)||$.set(e,n);await n}j.l=function(e){return S(1,this.m.id,e)};let T=Promise.resolve(void 0),A=new WeakMap;function E(t,r,n){let o=e.loadChunkCached(t,n),l=A.get(o);if(void 0===l){let e=A.set.bind(A,o,T);l=o.then(e).catch(e=>{let o;switch(t){case 0:o=`as a runtime dependency of chunk ${r}`;break;case 1:o=`from module ${r}`;break;case 2:o="from an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}let l=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw l.name="ChunkLoadError",l}),A.set(o,l)}return l}function K(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}j.L=function(e){return E(1,this.m.id,e)},j.R=function(e){let t=this.r(e);return t?.default??t},j.P=function(e){return`/ROOT/${e??""}`},j.b=function(e){let t=new Blob([`self.TURBOPACK_WORKER_LOCATION = ${JSON.stringify(location.origin)};
2
+ self.TURBOPACK_CHUNK_SUFFIX = ${JSON.stringify(r)};
3
+ self.TURBOPACK_NEXT_CHUNK_URLS = ${JSON.stringify(e.reverse().map(K),null,2)};
4
+ importScripts(...self.TURBOPACK_NEXT_CHUNK_URLS.map(c => self.TURBOPACK_WORKER_LOCATION + c).reverse());`],{type:"text/javascript"});return URL.createObjectURL(t)};let x=/\.js(?:\?[^#]*)?(?:#.*)?$/,N=/\.css(?:\?[^#]*)?(?:#.*)?$/;function M(e){return N.test(e)}l.w=function(t,r,n){return e.loadWebAssembly(1,this.m.id,t,r,n)},l.u=function(t,r){return e.loadWebAssemblyModule(1,this.m.id,t,r)};let L={};l.c=L;let B=(e,t)=>{let r=L[e];if(r){if(r.error)throw r.error;return r}return q(e,k.Parent,t.id)};function q(e,t,r){let n=v.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let l=a(e),i=l.exports;L[e]=l;let s=new o(l,i);try{n(s,l,i)}catch(e){throw l.error=e,e}return l.namespaceObject&&l.exports!==l.namespaceObject&&h(l.exports,l.namespaceObject),l}function I(r){let n,o=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(("undefined"!=typeof TURBOPACK_NEXT_CHUNK_URLS?TURBOPACK_NEXT_CHUNK_URLS.pop():e.getAttribute("src")).replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(r[0]);return 2===r.length?n=r[1]:(n=void 0,!function(e,t,r,n){let o=1;for(;o<e.length;){let t=e[o],n=o+1;for(;n<e.length&&"function"!=typeof e[n];)n++;if(n===e.length)throw Error("malformed chunk format, expected a factory function");if(!r.has(t)){let l=e[n];for(Object.defineProperty(l,"name",{value:"module evaluation"});o<n;o++)t=e[o],r.set(t,l)}o=n+1}}(r,0,v)),e.registerChunk(o,n)}let W=new Map;function H(e){let t=W.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},W.set(e,t)}return t}e={async registerChunk(e,t){if(H(K(e)).resolve(),null!=t){for(let e of t.otherChunks)H(K("string"==typeof e?e:e.path));if(await Promise.all(t.otherChunks.map(t=>S(0,e,t))),t.runtimeModuleIds.length>0)for(let r of t.runtimeModuleIds)!function(e,t){let r=L[t];if(r){if(r.error)throw r.error;return}q(t,k.Runtime,e)}(e,r)}},loadChunkCached:(e,t)=>(function(e,t){let r=H(t);if(r.loadingStarted)return r.promise;if(e===k.Runtime)return r.loadingStarted=!0,M(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(M(t));else if(x.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(TURBOPACK_WORKER_LOCATION+t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(M(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)r.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onerror=()=>{r.reject()},e.onload=()=>{r.resolve()},document.head.appendChild(e)}else if(x.test(t)){let n=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${e}"],script[src^="${e}?"]`);if(n.length>0)for(let e of Array.from(n))e.addEventListener("error",()=>{r.reject()});else{let e=document.createElement("script");e.src=t,e.onerror=()=>{r.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise})(e,t),async loadWebAssembly(e,t,r,n,o){let l=fetch(K(r)),{instance:i}=await WebAssembly.instantiateStreaming(l,o);return i.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(K(r));return await WebAssembly.compileStreaming(o)}};let F=globalThis.TURBOPACK;globalThis.TURBOPACK={push:I},F.forEach(I)})();
package/.next/trace ADDED
@@ -0,0 +1 @@
1
+ [{"name":"generate-buildid","duration":74,"timestamp":1732191397361,"id":4,"parentId":1,"tags":{},"startTime":1767603634333,"traceId":"fac73b8835a67ef7"},{"name":"load-custom-routes","duration":106,"timestamp":1732191397466,"id":5,"parentId":1,"tags":{},"startTime":1767603634333,"traceId":"fac73b8835a67ef7"},{"name":"create-dist-dir","duration":570,"timestamp":1732191397579,"id":6,"parentId":1,"tags":{},"startTime":1767603634333,"traceId":"fac73b8835a67ef7"},{"name":"clean","duration":40421,"timestamp":1732191398771,"id":7,"parentId":1,"tags":{},"startTime":1767603634334,"traceId":"fac73b8835a67ef7"},{"name":"create-pages-mapping","duration":103,"timestamp":1732191444539,"id":8,"parentId":1,"tags":{},"startTime":1767603634380,"traceId":"fac73b8835a67ef7"},{"name":"collect-app-files","duration":1236,"timestamp":1732191444657,"id":9,"parentId":1,"tags":{},"startTime":1767603634380,"traceId":"fac73b8835a67ef7"},{"name":"create-app-mapping","duration":940,"timestamp":1732191445905,"id":10,"parentId":1,"tags":{},"startTime":1767603634382,"traceId":"fac73b8835a67ef7"},{"name":"create-app-layouts","duration":53,"timestamp":1732191446858,"id":11,"parentId":1,"tags":{},"startTime":1767603634383,"traceId":"fac73b8835a67ef7"},{"name":"collect-default-files","duration":605,"timestamp":1732191447788,"id":13,"parentId":1,"tags":{},"startTime":1767603634383,"traceId":"fac73b8835a67ef7"},{"name":"generate-route-types","duration":7736,"timestamp":1732191447476,"id":12,"parentId":1,"tags":{},"startTime":1767603634383,"traceId":"fac73b8835a67ef7"},{"name":"public-dir-conflict-check","duration":26,"timestamp":1732191455231,"id":14,"parentId":1,"tags":{},"startTime":1767603634391,"traceId":"fac73b8835a67ef7"},{"name":"generate-routes-manifest","duration":970,"timestamp":1732191455279,"id":15,"parentId":1,"tags":{},"startTime":1767603634391,"traceId":"fac73b8835a67ef7"},{"name":"run-turbopack","duration":1963852,"timestamp":1732191460663,"id":17,"parentId":1,"tags":{},"startTime":1767603634396,"traceId":"fac73b8835a67ef7"},{"name":"run-typescript","duration":1006773,"timestamp":1732193437652,"id":19,"parentId":1,"tags":{},"startTime":1767603636373,"traceId":"fac73b8835a67ef7"},{"name":"generate-required-server-files","duration":372,"timestamp":1732194445874,"id":21,"parentId":1,"tags":{},"startTime":1767603637381,"traceId":"fac73b8835a67ef7"},{"name":"check-static-error-page","duration":5157,"timestamp":1732194455246,"id":23,"parentId":22,"tags":{},"startTime":1767603637391,"traceId":"fac73b8835a67ef7"},{"name":"is-page-static","duration":213351,"timestamp":1732194462674,"id":35,"parentId":25,"tags":{},"startTime":1767603637398,"traceId":"fac73b8835a67ef7"},{"name":"check-page","duration":215946,"timestamp":1732194460159,"id":25,"parentId":22,"tags":{"page":"/_global-error"},"startTime":1767603637396,"traceId":"fac73b8835a67ef7"},{"name":"is-page-static","duration":252854,"timestamp":1732194462537,"id":34,"parentId":24,"tags":{},"startTime":1767603637398,"traceId":"fac73b8835a67ef7"},{"name":"check-page","duration":255651,"timestamp":1732194459771,"id":24,"parentId":22,"tags":{"page":"/_not-found"},"startTime":1767603637395,"traceId":"fac73b8835a67ef7"},{"name":"is-page-static","duration":263919,"timestamp":1732194462759,"id":36,"parentId":26,"tags":{},"startTime":1767603637398,"traceId":"fac73b8835a67ef7"},{"name":"check-page","duration":266460,"timestamp":1732194460245,"id":26,"parentId":22,"tags":{"page":"/api/endpoints/[id]"},"startTime":1767603637396,"traceId":"fac73b8835a67ef7"},{"name":"is-page-static","duration":267533,"timestamp":1732194462795,"id":37,"parentId":27,"tags":{},"startTime":1767603637398,"traceId":"fac73b8835a67ef7"},{"name":"check-page","duration":270071,"timestamp":1732194460285,"id":27,"parentId":22,"tags":{"page":"/api/endpoints/bulk"},"startTime":1767603637396,"traceId":"fac73b8835a67ef7"},{"name":"is-page-static","duration":267895,"timestamp":1732194462832,"id":38,"parentId":28,"tags":{},"startTime":1767603637398,"traceId":"fac73b8835a67ef7"},{"name":"check-page","duration":270439,"timestamp":1732194460302,"id":28,"parentId":22,"tags":{"page":"/api/endpoints/import"},"startTime":1767603637396,"traceId":"fac73b8835a67ef7"},{"name":"is-page-static","duration":266380,"timestamp":1732194464407,"id":43,"parentId":33,"tags":{},"startTime":1767603637400,"traceId":"fac73b8835a67ef7"},{"name":"check-page","duration":270419,"timestamp":1732194460386,"id":33,"parentId":22,"tags":{"page":"/"},"startTime":1767603637396,"traceId":"fac73b8835a67ef7"},{"name":"is-page-static","duration":269138,"timestamp":1732194463144,"id":42,"parentId":32,"tags":{},"startTime":1767603637399,"traceId":"fac73b8835a67ef7"},{"name":"check-page","duration":271931,"timestamp":1732194460370,"id":32,"parentId":22,"tags":{"page":"/favicon.ico"},"startTime":1767603637396,"traceId":"fac73b8835a67ef7"},{"name":"is-page-static","duration":273069,"timestamp":1732194462871,"id":39,"parentId":29,"tags":{},"startTime":1767603637398,"traceId":"fac73b8835a67ef7"},{"name":"check-page","duration":275638,"timestamp":1732194460329,"id":29,"parentId":22,"tags":{"page":"/api/endpoints"},"startTime":1767603637396,"traceId":"fac73b8835a67ef7"},{"name":"is-page-static","duration":278596,"timestamp":1732194462903,"id":40,"parentId":30,"tags":{},"startTime":1767603637399,"traceId":"fac73b8835a67ef7"},{"name":"check-page","duration":281179,"timestamp":1732194460344,"id":30,"parentId":22,"tags":{"page":"/api/endpoints/sync"},"startTime":1767603637396,"traceId":"fac73b8835a67ef7"},{"name":"is-page-static","duration":281877,"timestamp":1732194463025,"id":41,"parentId":31,"tags":{},"startTime":1767603637399,"traceId":"fac73b8835a67ef7"},{"name":"check-page","duration":284565,"timestamp":1732194460355,"id":31,"parentId":22,"tags":{"page":"/api/mock/[...slug]"},"startTime":1767603637396,"traceId":"fac73b8835a67ef7"},{"name":"static-check","duration":289912,"timestamp":1732194455025,"id":22,"parentId":1,"tags":{},"startTime":1767603637391,"traceId":"fac73b8835a67ef7"},{"name":"write-routes-manifest","duration":651,"timestamp":1732194746120,"id":45,"parentId":1,"tags":{},"startTime":1767603637682,"traceId":"fac73b8835a67ef7"},{"name":"load-dotenv","duration":11,"timestamp":1732194751102,"id":48,"parentId":47,"tags":{},"startTime":1767603637687,"traceId":"fac73b8835a67ef7"},{"name":"run-export-path-map","duration":177,"timestamp":1732194752706,"id":49,"parentId":47,"tags":{},"startTime":1767603637688,"traceId":"fac73b8835a67ef7"},{"name":"next-export","duration":199706,"timestamp":1732194750716,"id":47,"parentId":1,"tags":{},"startTime":1767603637686,"traceId":"fac73b8835a67ef7"},{"name":"move-exported-app-not-found-","duration":511,"timestamp":1732194951088,"id":50,"parentId":46,"tags":{},"startTime":1767603637887,"traceId":"fac73b8835a67ef7"},{"name":"move-exported-app-global-error-","duration":375,"timestamp":1732194951634,"id":51,"parentId":46,"tags":{},"startTime":1767603637887,"traceId":"fac73b8835a67ef7"},{"name":"static-generation","duration":204294,"timestamp":1732194748724,"id":46,"parentId":1,"tags":{},"startTime":1767603637684,"traceId":"fac73b8835a67ef7"},{"name":"write-routes-manifest","duration":225,"timestamp":1732194953082,"id":52,"parentId":1,"tags":{},"startTime":1767603637889,"traceId":"fac73b8835a67ef7"},{"name":"print-tree-view","duration":711,"timestamp":1732194964146,"id":53,"parentId":1,"tags":{},"startTime":1767603637900,"traceId":"fac73b8835a67ef7"},{"name":"telemetry-flush","duration":495096,"timestamp":1732194964864,"id":54,"parentId":1,"tags":{},"startTime":1767603637900,"traceId":"fac73b8835a67ef7"},{"name":"next-build","duration":4148009,"timestamp":1732191312005,"id":1,"tags":{"buildMode":"default","version":"16.1.1","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1767603634248,"traceId":"fac73b8835a67ef7"}]
@@ -0,0 +1 @@
1
+ [{"name":"run-turbopack","duration":1963852,"timestamp":1732191460663,"id":17,"parentId":1,"tags":{},"startTime":1767603634396,"traceId":"fac73b8835a67ef7"},{"name":"run-typescript","duration":1006773,"timestamp":1732193437652,"id":19,"parentId":1,"tags":{},"startTime":1767603636373,"traceId":"fac73b8835a67ef7"},{"name":"static-check","duration":289912,"timestamp":1732194455025,"id":22,"parentId":1,"tags":{},"startTime":1767603637391,"traceId":"fac73b8835a67ef7"},{"name":"static-generation","duration":204294,"timestamp":1732194748724,"id":46,"parentId":1,"tags":{},"startTime":1767603637684,"traceId":"fac73b8835a67ef7"},{"name":"telemetry-flush","duration":495096,"timestamp":1732194964864,"id":54,"parentId":1,"tags":{},"startTime":1767603637900,"traceId":"fac73b8835a67ef7"},{"name":"next-build","duration":4148009,"timestamp":1732191312005,"id":1,"tags":{"buildMode":"default","version":"16.1.1","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1767603634248,"traceId":"fac73b8835a67ef7"}]
File without changes
@@ -0,0 +1,78 @@
1
+ // This file is generated automatically by Next.js
2
+ // Do not edit this file manually
3
+
4
+ type AppRoutes = "/"
5
+ type AppRouteHandlerRoutes = "/api/endpoints" | "/api/endpoints/[id]" | "/api/endpoints/bulk" | "/api/endpoints/import" | "/api/endpoints/sync" | "/api/mock/[...slug]"
6
+ type PageRoutes = never
7
+ type LayoutRoutes = "/"
8
+ type RedirectRoutes = never
9
+ type RewriteRoutes = never
10
+ type Routes = AppRoutes | PageRoutes | LayoutRoutes | RedirectRoutes | RewriteRoutes | AppRouteHandlerRoutes
11
+
12
+
13
+ interface ParamMap {
14
+ "/": {}
15
+ "/api/endpoints": {}
16
+ "/api/endpoints/[id]": { "id": string; }
17
+ "/api/endpoints/bulk": {}
18
+ "/api/endpoints/import": {}
19
+ "/api/endpoints/sync": {}
20
+ "/api/mock/[...slug]": { "slug": string[]; }
21
+ }
22
+
23
+
24
+ export type ParamsOf<Route extends Routes> = ParamMap[Route]
25
+
26
+ interface LayoutSlotMap {
27
+ "/": never
28
+ }
29
+
30
+
31
+ export type { AppRoutes, PageRoutes, LayoutRoutes, RedirectRoutes, RewriteRoutes, ParamMap, AppRouteHandlerRoutes }
32
+
33
+ declare global {
34
+ /**
35
+ * Props for Next.js App Router page components
36
+ * @example
37
+ * ```tsx
38
+ * export default function Page(props: PageProps<'/blog/[slug]'>) {
39
+ * const { slug } = await props.params
40
+ * return <div>Blog post: {slug}</div>
41
+ * }
42
+ * ```
43
+ */
44
+ interface PageProps<AppRoute extends AppRoutes> {
45
+ params: Promise<ParamMap[AppRoute]>
46
+ searchParams: Promise<Record<string, string | string[] | undefined>>
47
+ }
48
+
49
+ /**
50
+ * Props for Next.js App Router layout components
51
+ * @example
52
+ * ```tsx
53
+ * export default function Layout(props: LayoutProps<'/dashboard'>) {
54
+ * return <div>{props.children}</div>
55
+ * }
56
+ * ```
57
+ */
58
+ type LayoutProps<LayoutRoute extends LayoutRoutes> = {
59
+ params: Promise<ParamMap[LayoutRoute]>
60
+ children: React.ReactNode
61
+ } & {
62
+ [K in LayoutSlotMap[LayoutRoute]]: React.ReactNode
63
+ }
64
+
65
+ /**
66
+ * Context for Next.js App Router route handlers
67
+ * @example
68
+ * ```tsx
69
+ * export async function GET(request: NextRequest, context: RouteContext<'/api/users/[id]'>) {
70
+ * const { id } = await context.params
71
+ * return Response.json({ id })
72
+ * }
73
+ * ```
74
+ */
75
+ interface RouteContext<AppRouteHandlerRoute extends AppRouteHandlerRoutes> {
76
+ params: Promise<ParamMap[AppRouteHandlerRoute]>
77
+ }
78
+ }
@@ -0,0 +1,124 @@
1
+ // This file is generated automatically by Next.js
2
+ // Do not edit this file manually
3
+ // This file validates that all pages and layouts export the correct types
4
+
5
+ import type { AppRoutes, LayoutRoutes, ParamMap, AppRouteHandlerRoutes } from "./routes.js"
6
+ import type { ResolvingMetadata, ResolvingViewport } from "next/types.js"
7
+ import type { NextRequest } from 'next/server.js'
8
+
9
+ type AppPageConfig<Route extends AppRoutes = AppRoutes> = {
10
+ default: React.ComponentType<{ params: Promise<ParamMap[Route]> } & any> | ((props: { params: Promise<ParamMap[Route]> } & any) => React.ReactNode | Promise<React.ReactNode> | never | void | Promise<void>)
11
+ generateStaticParams?: (props: { params: ParamMap[Route] }) => Promise<any[]> | any[]
12
+ generateMetadata?: (
13
+ props: { params: Promise<ParamMap[Route]> } & any,
14
+ parent: ResolvingMetadata
15
+ ) => Promise<any> | any
16
+ generateViewport?: (
17
+ props: { params: Promise<ParamMap[Route]> } & any,
18
+ parent: ResolvingViewport
19
+ ) => Promise<any> | any
20
+ metadata?: any
21
+ viewport?: any
22
+ }
23
+
24
+ type LayoutConfig<Route extends LayoutRoutes = LayoutRoutes> = {
25
+ default: React.ComponentType<LayoutProps<Route>> | ((props: LayoutProps<Route>) => React.ReactNode | Promise<React.ReactNode> | never | void | Promise<void>)
26
+ generateStaticParams?: (props: { params: ParamMap[Route] }) => Promise<any[]> | any[]
27
+ generateMetadata?: (
28
+ props: { params: Promise<ParamMap[Route]> } & any,
29
+ parent: ResolvingMetadata
30
+ ) => Promise<any> | any
31
+ generateViewport?: (
32
+ props: { params: Promise<ParamMap[Route]> } & any,
33
+ parent: ResolvingViewport
34
+ ) => Promise<any> | any
35
+ metadata?: any
36
+ viewport?: any
37
+ }
38
+
39
+ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRoutes> = {
40
+ GET?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response | void> | Response | void
41
+ POST?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response | void> | Response | void
42
+ PUT?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response | void> | Response | void
43
+ PATCH?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response | void> | Response | void
44
+ DELETE?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response | void> | Response | void
45
+ HEAD?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response | void> | Response | void
46
+ OPTIONS?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response | void> | Response | void
47
+ }
48
+
49
+
50
+ // Validate ../../app/page.tsx
51
+ {
52
+ type __IsExpected<Specific extends AppPageConfig<"/">> = Specific
53
+ const handler = {} as typeof import("../../app/page.js")
54
+ type __Check = __IsExpected<typeof handler>
55
+ // @ts-ignore
56
+ type __Unused = __Check
57
+ }
58
+
59
+ // Validate ../../app/api/endpoints/[id]/route.ts
60
+ {
61
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/endpoints/[id]">> = Specific
62
+ const handler = {} as typeof import("../../app/api/endpoints/[id]/route.js")
63
+ type __Check = __IsExpected<typeof handler>
64
+ // @ts-ignore
65
+ type __Unused = __Check
66
+ }
67
+
68
+ // Validate ../../app/api/endpoints/bulk/route.ts
69
+ {
70
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/endpoints/bulk">> = Specific
71
+ const handler = {} as typeof import("../../app/api/endpoints/bulk/route.js")
72
+ type __Check = __IsExpected<typeof handler>
73
+ // @ts-ignore
74
+ type __Unused = __Check
75
+ }
76
+
77
+ // Validate ../../app/api/endpoints/import/route.ts
78
+ {
79
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/endpoints/import">> = Specific
80
+ const handler = {} as typeof import("../../app/api/endpoints/import/route.js")
81
+ type __Check = __IsExpected<typeof handler>
82
+ // @ts-ignore
83
+ type __Unused = __Check
84
+ }
85
+
86
+ // Validate ../../app/api/endpoints/route.ts
87
+ {
88
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/endpoints">> = Specific
89
+ const handler = {} as typeof import("../../app/api/endpoints/route.js")
90
+ type __Check = __IsExpected<typeof handler>
91
+ // @ts-ignore
92
+ type __Unused = __Check
93
+ }
94
+
95
+ // Validate ../../app/api/endpoints/sync/route.ts
96
+ {
97
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/endpoints/sync">> = Specific
98
+ const handler = {} as typeof import("../../app/api/endpoints/sync/route.js")
99
+ type __Check = __IsExpected<typeof handler>
100
+ // @ts-ignore
101
+ type __Unused = __Check
102
+ }
103
+
104
+ // Validate ../../app/api/mock/[...slug]/route.ts
105
+ {
106
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/mock/[...slug]">> = Specific
107
+ const handler = {} as typeof import("../../app/api/mock/[...slug]/route.js")
108
+ type __Check = __IsExpected<typeof handler>
109
+ // @ts-ignore
110
+ type __Unused = __Check
111
+ }
112
+
113
+
114
+
115
+
116
+
117
+ // Validate ../../app/layout.tsx
118
+ {
119
+ type __IsExpected<Specific extends LayoutConfig<"/">> = Specific
120
+ const handler = {} as typeof import("../../app/layout.js")
121
+ type __Check = __IsExpected<typeof handler>
122
+ // @ts-ignore
123
+ type __Unused = __Check
124
+ }
package/README.md CHANGED
@@ -2,7 +2,30 @@
2
2
 
3
3
  로컬 개발용 Mock API 서버. UI에서 엔드포인트를 등록하고 가짜 응답을 설정할 수 있습니다.
4
4
 
5
- ## 실행 방법
5
+ ## 설치 및 실행
6
+
7
+ ### npx로 바로 실행 (권장)
8
+
9
+ ```bash
10
+ npx growthman
11
+ ```
12
+
13
+ ### 전역 설치 후 실행
14
+
15
+ ```bash
16
+ npm install -g @kurly-growth/growthman
17
+ growthman
18
+ ```
19
+
20
+ ### 프로젝트에 설치
21
+
22
+ ```bash
23
+ npm install @kurly-growth/growthman
24
+ # 또는
25
+ pnpm add @kurly-growth/growthman
26
+ ```
27
+
28
+ ## 로컬 개발
6
29
 
7
30
  ```bash
8
31
  pnpm install # 의존성 설치 + DB 자동 생성
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kurly-growth/growthman",
3
- "version": "0.1.1",
3
+ "version": "0.1.4",
4
4
  "description": "Local mock API server with UI dashboard",
5
5
  "bin": {
6
6
  "growthman": "./bin/cli.js"
@@ -8,17 +8,14 @@
8
8
  "publishConfig": {
9
9
  "access": "public"
10
10
  },
11
- "scripts": {
12
- "prepack": "next build",
13
- "postinstall": "prisma generate && prisma db push",
14
- "dev": "next dev",
15
- "dev:clean": "npx prisma db seed && next dev",
16
- "build": "next build",
17
- "start": "next start",
18
- "lint": "eslint",
19
- "db:seed": "npx prisma db seed",
20
- "db:reset": "rm -f prisma/dev.db && npx prisma db push && npx prisma db seed"
21
- },
11
+ "files": [
12
+ "bin",
13
+ ".next",
14
+ "!.next/cache",
15
+ "!.next/dev",
16
+ "prisma/schema.prisma",
17
+ "public"
18
+ ],
22
19
  "prisma": {
23
20
  "seed": "npx tsx prisma/seed.ts"
24
21
  },
@@ -52,5 +49,15 @@
52
49
  "tsx": "^4.21.0",
53
50
  "tw-animate-css": "^1.4.0",
54
51
  "typescript": "^5"
52
+ },
53
+ "scripts": {
54
+ "postinstall": "prisma generate && prisma db push",
55
+ "dev": "next dev",
56
+ "dev:clean": "npx prisma db seed && next dev",
57
+ "build": "next build",
58
+ "start": "next start",
59
+ "lint": "eslint",
60
+ "db:seed": "npx prisma db seed",
61
+ "db:reset": "rm -f prisma/dev.db && npx prisma db push && npx prisma db seed"
55
62
  }
56
- }
63
+ }
@@ -1,5 +1,6 @@
1
1
  generator client {
2
2
  provider = "prisma-client-js"
3
+ output = "../generated/prisma"
3
4
  }
4
5
 
5
6
  datasource db {
@@ -1,10 +0,0 @@
1
- {
2
- "permissions": {
3
- "allow": [
4
- "Bash(pnpm add:*)",
5
- "Bash(pnpm dlx shadcn@latest add:*)",
6
- "Bash(npx prisma migrate:*)",
7
- "Bash(chmod:*)"
8
- ]
9
- }
10
- }
package/CLAUDE.md DELETED
@@ -1,58 +0,0 @@
1
- # CLAUDE.md
2
-
3
- This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
-
5
- ## Development Commands
6
-
7
- ```bash
8
- pnpm dev # Start dev server (http://localhost:3000)
9
- pnpm dev:clean # Reset DB with seed data and start dev server
10
- pnpm build # Build for production
11
- pnpm lint # Run ESLint
12
- pnpm db:seed # Seed the database
13
- pnpm db:reset # Reset database with migrations
14
- ```
15
-
16
- ## Architecture Overview
17
-
18
- This is a **Mock Server Dashboard** - a Next.js 16 application that allows users to create, manage, and serve mock API endpoints stored in PostgreSQL via Prisma.
19
-
20
- ### Core Concept
21
-
22
- 1. Users define mock endpoints (path, method, status code, response body) through a web UI
23
- 2. These endpoints are stored in the `MockEndpoint` table
24
- 3. Requests to `/api/mock/*` are dynamically matched against stored endpoints using `path-to-regexp`
25
-
26
- ### Key Components
27
-
28
- - **`/app/api/mock/[...slug]/route.ts`** - Catch-all route that handles all mock requests. Matches incoming requests against stored endpoints using pattern matching (supports path parameters like `:id`)
29
-
30
- - **`/app/api/endpoints/`** - CRUD API for managing mock endpoints
31
- - `route.ts` - GET (list all), POST (create)
32
- - `[id]/route.ts` - PUT (update), DELETE
33
- - `import/route.ts` - Bulk import from OpenAPI spec
34
- - `sync/route.ts` - Sync endpoints with external spec
35
-
36
- - **`/lib/openapi-parser.ts`** - Parses OpenAPI 3.x specs and generates mock response data based on schema definitions. Handles `$ref`, `allOf`, `oneOf`, `anyOf`, and generates type-appropriate mock values.
37
-
38
- - **`/components/`** - React components for the dashboard UI
39
- - `endpoint-table.tsx` - Display list of endpoints
40
- - `endpoint-edit-dialog.tsx` - Create/edit endpoint with Monaco editor for JSON
41
- - `openapi-upload-dialog.tsx` - Import endpoints from OpenAPI spec
42
-
43
- ### Database Schema
44
-
45
- Single table `MockEndpoint` with unique constraint on `(path, method)`:
46
- - `path` - Express-style route (e.g., `/v1/users/:id`)
47
- - `method` - HTTP method
48
- - `statusCode` - Response status code
49
- - `responseBody` - JSON response data
50
-
51
- ### Tech Stack
52
-
53
- - Next.js 16 (App Router)
54
- - React 19
55
- - Prisma with PostgreSQL
56
- - Tailwind CSS 4
57
- - Radix UI + shadcn/ui components
58
- - Monaco Editor for JSON editing
@@ -1,63 +0,0 @@
1
- import { NextRequest, NextResponse } from 'next/server'
2
- import { prisma } from '@/lib/prisma'
3
- import { validatePath, validateMethod, validateStatusCode } from '@/lib/validation'
4
-
5
- type RouteParams = {
6
- params: Promise<{ id: string }>
7
- }
8
-
9
- // GET: 단일 엔드포인트 조회
10
- export async function GET(_request: NextRequest, { params }: RouteParams) {
11
- const { id } = await params
12
-
13
- const endpoint = await prisma.mockEndpoint.findUnique({
14
- where: { id },
15
- })
16
-
17
- if (!endpoint) {
18
- return NextResponse.json({ error: 'Endpoint not found' }, { status: 404 })
19
- }
20
-
21
- return NextResponse.json(endpoint)
22
- }
23
-
24
- // PUT: 엔드포인트 수정
25
- export async function PUT(request: NextRequest, { params }: RouteParams) {
26
- const { id } = await params
27
- const body = await request.json()
28
- const { path, method, description, statusCode, responseBody } = body
29
-
30
- if (path !== undefined && !validatePath(path)) {
31
- return NextResponse.json({ error: 'Invalid path' }, { status: 400 })
32
- }
33
- if (method !== undefined && !validateMethod(method)) {
34
- return NextResponse.json({ error: 'Invalid method' }, { status: 400 })
35
- }
36
- if (!validateStatusCode(statusCode)) {
37
- return NextResponse.json({ error: 'Invalid status code' }, { status: 400 })
38
- }
39
-
40
- const endpoint = await prisma.mockEndpoint.update({
41
- where: { id },
42
- data: {
43
- path,
44
- method: method?.toUpperCase(),
45
- description,
46
- statusCode,
47
- responseBody,
48
- },
49
- })
50
-
51
- return NextResponse.json(endpoint)
52
- }
53
-
54
- // DELETE: 엔드포인트 삭제
55
- export async function DELETE(_request: NextRequest, { params }: RouteParams) {
56
- const { id } = await params
57
-
58
- await prisma.mockEndpoint.delete({
59
- where: { id },
60
- })
61
-
62
- return NextResponse.json({ success: true })
63
- }
@@ -1,23 +0,0 @@
1
- import { NextRequest, NextResponse } from 'next/server'
2
- import { prisma } from '@/lib/prisma'
3
-
4
- // DELETE: 여러 엔드포인트 일괄 삭제
5
- export async function DELETE(request: NextRequest) {
6
- const body = await request.json()
7
- const { ids } = body
8
-
9
- if (!Array.isArray(ids) || ids.length === 0) {
10
- return NextResponse.json(
11
- { error: 'ids must be a non-empty array' },
12
- { status: 400 }
13
- )
14
- }
15
-
16
- const result = await prisma.mockEndpoint.deleteMany({
17
- where: {
18
- id: { in: ids },
19
- },
20
- })
21
-
22
- return NextResponse.json({ deleted: result.count })
23
- }