adorn-api 1.0.22 → 1.0.24

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 (380) hide show
  1. package/.eslintignore +3 -0
  2. package/.eslintrc.cjs +30 -0
  3. package/README.md +375 -531
  4. package/dist/core/express-adapter.d.ts +27 -0
  5. package/dist/core/express-adapter.d.ts.map +1 -0
  6. package/dist/core/express-adapter.js +146 -0
  7. package/dist/core/express-adapter.js.map +1 -0
  8. package/dist/core/http-error.d.ts +7 -0
  9. package/dist/core/http-error.d.ts.map +1 -0
  10. package/dist/core/http-error.js +14 -0
  11. package/dist/core/http-error.js.map +1 -0
  12. package/dist/decorators/controller.decorator.d.ts +2 -0
  13. package/dist/decorators/controller.decorator.d.ts.map +1 -0
  14. package/dist/decorators/controller.decorator.js +26 -0
  15. package/dist/decorators/controller.decorator.js.map +1 -0
  16. package/dist/decorators/create.decorator.d.ts +8 -0
  17. package/dist/decorators/create.decorator.d.ts.map +1 -0
  18. package/dist/decorators/create.decorator.js +67 -0
  19. package/dist/decorators/create.decorator.js.map +1 -0
  20. package/dist/decorators/http-method.decorator.d.ts +16 -0
  21. package/dist/decorators/http-method.decorator.d.ts.map +1 -0
  22. package/dist/decorators/http-method.decorator.js +117 -0
  23. package/dist/decorators/http-method.decorator.js.map +1 -0
  24. package/dist/decorators/http-params.d.ts +17 -0
  25. package/dist/decorators/http-params.d.ts.map +1 -0
  26. package/dist/decorators/http-params.js +26 -0
  27. package/dist/decorators/http-params.js.map +1 -0
  28. package/dist/decorators/index.d.ts +10 -5
  29. package/dist/decorators/index.d.ts.map +1 -1
  30. package/dist/decorators/index.js +14 -0
  31. package/dist/decorators/index.js.map +1 -0
  32. package/dist/decorators/list.decorator.d.ts +18 -0
  33. package/dist/decorators/list.decorator.d.ts.map +1 -0
  34. package/dist/decorators/list.decorator.js +99 -0
  35. package/dist/decorators/list.decorator.js.map +1 -0
  36. package/dist/decorators/middleware.decorator.d.ts +4 -0
  37. package/dist/decorators/middleware.decorator.d.ts.map +1 -0
  38. package/dist/decorators/middleware.decorator.js +34 -0
  39. package/dist/decorators/middleware.decorator.js.map +1 -0
  40. package/dist/decorators/response.decorator.d.ts +8 -0
  41. package/dist/decorators/response.decorator.d.ts.map +1 -0
  42. package/dist/decorators/response.decorator.js +44 -0
  43. package/dist/decorators/response.decorator.js.map +1 -0
  44. package/dist/decorators/route-options.d.ts +14 -0
  45. package/dist/decorators/route-options.d.ts.map +1 -0
  46. package/dist/decorators/route-options.js +22 -0
  47. package/dist/decorators/route-options.js.map +1 -0
  48. package/dist/decorators/schema.decorator.d.ts +82 -0
  49. package/dist/decorators/schema.decorator.d.ts.map +1 -0
  50. package/dist/decorators/schema.decorator.js +123 -0
  51. package/dist/decorators/schema.decorator.js.map +1 -0
  52. package/dist/decorators/update.decorator.d.ts +8 -0
  53. package/dist/decorators/update.decorator.d.ts.map +1 -0
  54. package/dist/decorators/update.decorator.js +63 -0
  55. package/dist/decorators/update.decorator.js.map +1 -0
  56. package/dist/index.d.ts +11 -13
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +18 -637
  59. package/dist/index.js.map +1 -1
  60. package/dist/metadata/metadata-storage.d.ts +38 -0
  61. package/dist/metadata/metadata-storage.d.ts.map +1 -0
  62. package/dist/metadata/metadata-storage.js +102 -0
  63. package/dist/metadata/metadata-storage.js.map +1 -0
  64. package/dist/metal-orm-integration/dto-helper.d.ts +5 -0
  65. package/dist/metal-orm-integration/dto-helper.d.ts.map +1 -0
  66. package/dist/metal-orm-integration/dto-helper.js +48 -0
  67. package/dist/metal-orm-integration/dto-helper.js.map +1 -0
  68. package/dist/metal-orm-integration/dto-response.decorator.d.ts +4 -0
  69. package/dist/metal-orm-integration/dto-response.decorator.d.ts.map +1 -0
  70. package/dist/metal-orm-integration/dto-response.decorator.js +69 -0
  71. package/dist/metal-orm-integration/dto-response.decorator.js.map +1 -0
  72. package/dist/metal-orm-integration/entity-schema-builder.d.ts +20 -0
  73. package/dist/metal-orm-integration/entity-schema-builder.d.ts.map +1 -0
  74. package/dist/metal-orm-integration/entity-schema-builder.js +356 -0
  75. package/dist/metal-orm-integration/entity-schema-builder.js.map +1 -0
  76. package/dist/metal-orm-integration/index.d.ts +5 -0
  77. package/dist/metal-orm-integration/index.d.ts.map +1 -0
  78. package/dist/metal-orm-integration/index.js +5 -0
  79. package/dist/metal-orm-integration/index.js.map +1 -0
  80. package/dist/metal-orm-integration/schema-modifier.d.ts +11 -0
  81. package/dist/metal-orm-integration/schema-modifier.d.ts.map +1 -0
  82. package/dist/metal-orm-integration/schema-modifier.js +62 -0
  83. package/dist/metal-orm-integration/schema-modifier.js.map +1 -0
  84. package/dist/openapi/index.d.ts +4 -0
  85. package/dist/openapi/index.d.ts.map +1 -0
  86. package/dist/openapi/index.js +4 -0
  87. package/dist/openapi/index.js.map +1 -0
  88. package/dist/openapi/openapi-generator.d.ts +22 -0
  89. package/dist/openapi/openapi-generator.d.ts.map +1 -0
  90. package/dist/openapi/openapi-generator.js +428 -0
  91. package/dist/openapi/openapi-generator.js.map +1 -0
  92. package/dist/openapi/swagger-ui.d.ts +11 -0
  93. package/dist/openapi/swagger-ui.d.ts.map +1 -0
  94. package/dist/openapi/swagger-ui.js +20 -0
  95. package/dist/openapi/swagger-ui.js.map +1 -0
  96. package/dist/openapi/zod-to-openapi.d.ts +4 -0
  97. package/dist/openapi/zod-to-openapi.d.ts.map +1 -0
  98. package/dist/openapi/zod-to-openapi.js +184 -0
  99. package/dist/openapi/zod-to-openapi.js.map +1 -0
  100. package/dist/types/common.d.ts +4 -0
  101. package/dist/types/common.d.ts.map +1 -0
  102. package/dist/types/common.js +2 -0
  103. package/dist/types/common.js.map +1 -0
  104. package/dist/types/controller.d.ts +14 -0
  105. package/dist/types/controller.d.ts.map +1 -0
  106. package/dist/types/controller.js +2 -0
  107. package/dist/types/controller.js.map +1 -0
  108. package/dist/types/metadata.d.ts +48 -0
  109. package/dist/types/metadata.d.ts.map +1 -0
  110. package/dist/types/metadata.js +2 -0
  111. package/dist/types/metadata.js.map +1 -0
  112. package/dist/types/openapi.d.ts +30 -0
  113. package/dist/types/openapi.d.ts.map +1 -0
  114. package/dist/types/openapi.js +2 -0
  115. package/dist/types/openapi.js.map +1 -0
  116. package/dist/validation/zod-adapter.d.ts +15 -0
  117. package/dist/validation/zod-adapter.d.ts.map +1 -0
  118. package/dist/validation/zod-adapter.js +61 -0
  119. package/dist/validation/zod-adapter.js.map +1 -0
  120. package/examples/basic/app.ts +15 -0
  121. package/examples/basic/index.ts +6 -0
  122. package/examples/basic/user.controller.ts +35 -0
  123. package/examples/basic/user.dtos.ts +23 -0
  124. package/examples/metal-orm-sqlite/app.ts +18 -0
  125. package/examples/metal-orm-sqlite/db.ts +90 -0
  126. package/examples/metal-orm-sqlite/index.ts +6 -0
  127. package/examples/metal-orm-sqlite/post.controller.ts +209 -0
  128. package/examples/metal-orm-sqlite/post.dtos.ts +78 -0
  129. package/examples/metal-orm-sqlite/post.entity.ts +24 -0
  130. package/examples/metal-orm-sqlite/user.controller.helpers.ts +305 -0
  131. package/examples/metal-orm-sqlite/user.controller.ts +231 -0
  132. package/examples/metal-orm-sqlite/user.dtos.ts +88 -0
  133. package/examples/metal-orm-sqlite/user.entity.ts +21 -0
  134. package/examples/metal-orm-sqlite-music/album.controller.ts +278 -0
  135. package/examples/metal-orm-sqlite-music/album.dtos.ts +85 -0
  136. package/examples/metal-orm-sqlite-music/album.entity.ts +28 -0
  137. package/examples/metal-orm-sqlite-music/app.ts +19 -0
  138. package/examples/metal-orm-sqlite-music/artist.controller.ts +272 -0
  139. package/examples/metal-orm-sqlite-music/artist.dtos.ts +68 -0
  140. package/examples/metal-orm-sqlite-music/artist.entity.ts +27 -0
  141. package/examples/metal-orm-sqlite-music/db.ts +148 -0
  142. package/examples/metal-orm-sqlite-music/index.ts +6 -0
  143. package/examples/metal-orm-sqlite-music/track.controller.ts +221 -0
  144. package/examples/metal-orm-sqlite-music/track.dtos.ts +82 -0
  145. package/examples/metal-orm-sqlite-music/track.entity.ts +27 -0
  146. package/examples/openapi/health.controller.ts +11 -0
  147. package/examples/openapi/health.dto.ts +7 -0
  148. package/examples/openapi/index.ts +12 -0
  149. package/examples/restful/app.ts +15 -0
  150. package/examples/restful/index.ts +9 -0
  151. package/examples/restful/task.controller.ts +118 -0
  152. package/examples/restful/task.dtos.ts +66 -0
  153. package/examples/restful/task.store.ts +95 -0
  154. package/examples/tsconfig.json +8 -0
  155. package/examples/utils/start-server.ts +56 -0
  156. package/package.json +33 -97
  157. package/scripts/run-example.js +29 -0
  158. package/src/adapter/express.ts +589 -0
  159. package/src/adapter/metal-orm/convention-overrides.ts +115 -0
  160. package/src/adapter/metal-orm/crud-dtos.ts +141 -0
  161. package/src/adapter/metal-orm/dto.ts +20 -0
  162. package/src/adapter/metal-orm/error-dtos.ts +51 -0
  163. package/src/adapter/metal-orm/field-builder.ts +185 -0
  164. package/src/adapter/metal-orm/filters.ts +52 -0
  165. package/src/adapter/metal-orm/index.ts +66 -0
  166. package/src/adapter/metal-orm/paged-dtos.ts +94 -0
  167. package/src/adapter/metal-orm/pagination.ts +28 -0
  168. package/src/adapter/metal-orm/types.ts +250 -0
  169. package/src/adapter/metal-orm/utils.ts +36 -0
  170. package/src/adapter/metal-orm.test.ts +439 -0
  171. package/src/core/__tests__/coerce.test.ts +39 -0
  172. package/src/core/__tests__/dto-compose.test.ts +68 -0
  173. package/src/core/__tests__/schema-builder.test.ts +82 -0
  174. package/src/core/coerce.ts +190 -0
  175. package/src/core/decorators.ts +645 -0
  176. package/src/core/errors.ts +55 -0
  177. package/src/core/metadata.ts +110 -0
  178. package/src/core/openapi.ts +282 -0
  179. package/src/core/schema-builder.ts +287 -0
  180. package/src/core/schema.ts +400 -0
  181. package/src/core/types.ts +14 -0
  182. package/src/e2e/http-error.e2e.test.ts +52 -0
  183. package/src/e2e/sqlite-metal-orm.e2e.test.ts +174 -0
  184. package/src/e2e/sqlite.e2e.test.ts +126 -0
  185. package/src/index.ts +8 -0
  186. package/tsconfig.eslint.json +7 -0
  187. package/tsconfig.json +18 -0
  188. package/vitest.config.ts +8 -0
  189. package/dist/adapter/express/auth.d.ts +0 -13
  190. package/dist/adapter/express/auth.d.ts.map +0 -1
  191. package/dist/adapter/express/bootstrap.d.ts +0 -40
  192. package/dist/adapter/express/bootstrap.d.ts.map +0 -1
  193. package/dist/adapter/express/coercion.d.ts +0 -102
  194. package/dist/adapter/express/coercion.d.ts.map +0 -1
  195. package/dist/adapter/express/index.d.ts +0 -6
  196. package/dist/adapter/express/index.d.ts.map +0 -1
  197. package/dist/adapter/express/merge.d.ts +0 -45
  198. package/dist/adapter/express/merge.d.ts.map +0 -1
  199. package/dist/adapter/express/openapi.d.ts +0 -66
  200. package/dist/adapter/express/openapi.d.ts.map +0 -1
  201. package/dist/adapter/express/router.d.ts +0 -10
  202. package/dist/adapter/express/router.d.ts.map +0 -1
  203. package/dist/adapter/express/swagger.d.ts +0 -18
  204. package/dist/adapter/express/swagger.d.ts.map +0 -1
  205. package/dist/adapter/express/types.d.ts +0 -110
  206. package/dist/adapter/express/types.d.ts.map +0 -1
  207. package/dist/adapter/express/validation.d.ts +0 -27
  208. package/dist/adapter/express/validation.d.ts.map +0 -1
  209. package/dist/cli/progress.d.ts +0 -122
  210. package/dist/cli/progress.d.ts.map +0 -1
  211. package/dist/cli.cjs +0 -4390
  212. package/dist/cli.cjs.map +0 -1
  213. package/dist/cli.d.ts +0 -3
  214. package/dist/cli.d.ts.map +0 -1
  215. package/dist/cli.js +0 -4371
  216. package/dist/cli.js.map +0 -1
  217. package/dist/compiler/analyze/index.d.ts +0 -5
  218. package/dist/compiler/analyze/index.d.ts.map +0 -1
  219. package/dist/compiler/analyze/scanControllers.d.ts +0 -88
  220. package/dist/compiler/analyze/scanControllers.d.ts.map +0 -1
  221. package/dist/compiler/cache/isStale.d.ts +0 -46
  222. package/dist/compiler/cache/isStale.d.ts.map +0 -1
  223. package/dist/compiler/cache/loadArtifacts.d.ts +0 -149
  224. package/dist/compiler/cache/loadArtifacts.d.ts.map +0 -1
  225. package/dist/compiler/cache/schema.d.ts +0 -32
  226. package/dist/compiler/cache/schema.d.ts.map +0 -1
  227. package/dist/compiler/cache/writeCache.d.ts +0 -14
  228. package/dist/compiler/cache/writeCache.d.ts.map +0 -1
  229. package/dist/compiler/gems.d.ts +0 -75
  230. package/dist/compiler/gems.d.ts.map +0 -1
  231. package/dist/compiler/generator/index.d.ts +0 -7
  232. package/dist/compiler/generator/index.d.ts.map +0 -1
  233. package/dist/compiler/generator/manifest.d.ts +0 -23
  234. package/dist/compiler/generator/manifest.d.ts.map +0 -1
  235. package/dist/compiler/generator/openapi.d.ts +0 -118
  236. package/dist/compiler/generator/openapi.d.ts.map +0 -1
  237. package/dist/compiler/graph/builder.d.ts +0 -24
  238. package/dist/compiler/graph/builder.d.ts.map +0 -1
  239. package/dist/compiler/graph/index.d.ts +0 -7
  240. package/dist/compiler/graph/index.d.ts.map +0 -1
  241. package/dist/compiler/graph/schemaGraph.d.ts +0 -67
  242. package/dist/compiler/graph/schemaGraph.d.ts.map +0 -1
  243. package/dist/compiler/graph/types.d.ts +0 -203
  244. package/dist/compiler/graph/types.d.ts.map +0 -1
  245. package/dist/compiler/index.d.ts +0 -12
  246. package/dist/compiler/index.d.ts.map +0 -1
  247. package/dist/compiler/ir/index.d.ts +0 -7
  248. package/dist/compiler/ir/index.d.ts.map +0 -1
  249. package/dist/compiler/ir/pipeline.d.ts +0 -82
  250. package/dist/compiler/ir/pipeline.d.ts.map +0 -1
  251. package/dist/compiler/ir/stages.d.ts +0 -40
  252. package/dist/compiler/ir/stages.d.ts.map +0 -1
  253. package/dist/compiler/ir/visitor.d.ts +0 -98
  254. package/dist/compiler/ir/visitor.d.ts.map +0 -1
  255. package/dist/compiler/manifest/emit.d.ts +0 -21
  256. package/dist/compiler/manifest/emit.d.ts.map +0 -1
  257. package/dist/compiler/manifest/format.d.ts +0 -119
  258. package/dist/compiler/manifest/format.d.ts.map +0 -1
  259. package/dist/compiler/manifest/index.d.ts +0 -6
  260. package/dist/compiler/manifest/index.d.ts.map +0 -1
  261. package/dist/compiler/runner/createProgram.d.ts +0 -24
  262. package/dist/compiler/runner/createProgram.d.ts.map +0 -1
  263. package/dist/compiler/runner/index.d.ts +0 -5
  264. package/dist/compiler/runner/index.d.ts.map +0 -1
  265. package/dist/compiler/schema/extractAnnotations.d.ts +0 -57
  266. package/dist/compiler/schema/extractAnnotations.d.ts.map +0 -1
  267. package/dist/compiler/schema/index.d.ts +0 -8
  268. package/dist/compiler/schema/index.d.ts.map +0 -1
  269. package/dist/compiler/schema/intersectionHandler.d.ts +0 -44
  270. package/dist/compiler/schema/intersectionHandler.d.ts.map +0 -1
  271. package/dist/compiler/schema/objectHandler.d.ts +0 -146
  272. package/dist/compiler/schema/objectHandler.d.ts.map +0 -1
  273. package/dist/compiler/schema/openapi.d.ts +0 -71
  274. package/dist/compiler/schema/openapi.d.ts.map +0 -1
  275. package/dist/compiler/schema/parameters.d.ts +0 -90
  276. package/dist/compiler/schema/parameters.d.ts.map +0 -1
  277. package/dist/compiler/schema/partitioner.d.ts +0 -85
  278. package/dist/compiler/schema/partitioner.d.ts.map +0 -1
  279. package/dist/compiler/schema/primitives.d.ts +0 -68
  280. package/dist/compiler/schema/primitives.d.ts.map +0 -1
  281. package/dist/compiler/schema/queryBuilderAnalyzer.d.ts +0 -76
  282. package/dist/compiler/schema/queryBuilderAnalyzer.d.ts.map +0 -1
  283. package/dist/compiler/schema/queryBuilderSchemaBuilder.d.ts +0 -13
  284. package/dist/compiler/schema/queryBuilderSchemaBuilder.d.ts.map +0 -1
  285. package/dist/compiler/schema/splitOpenapi.d.ts +0 -46
  286. package/dist/compiler/schema/splitOpenapi.d.ts.map +0 -1
  287. package/dist/compiler/schema/typeToJsonSchema.d.ts +0 -26
  288. package/dist/compiler/schema/typeToJsonSchema.d.ts.map +0 -1
  289. package/dist/compiler/schema/types.d.ts +0 -70
  290. package/dist/compiler/schema/types.d.ts.map +0 -1
  291. package/dist/compiler/schema/unionHandler.d.ts +0 -70
  292. package/dist/compiler/schema/unionHandler.d.ts.map +0 -1
  293. package/dist/compiler/transform/dedup.d.ts +0 -35
  294. package/dist/compiler/transform/dedup.d.ts.map +0 -1
  295. package/dist/compiler/transform/flatten.d.ts +0 -50
  296. package/dist/compiler/transform/flatten.d.ts.map +0 -1
  297. package/dist/compiler/transform/index.d.ts +0 -7
  298. package/dist/compiler/transform/index.d.ts.map +0 -1
  299. package/dist/compiler/transform/inline.d.ts +0 -46
  300. package/dist/compiler/transform/inline.d.ts.map +0 -1
  301. package/dist/compiler/validation/emitPrecompiledValidators.d.ts +0 -62
  302. package/dist/compiler/validation/emitPrecompiledValidators.d.ts.map +0 -1
  303. package/dist/compiler/validation/index.d.ts +0 -5
  304. package/dist/compiler/validation/index.d.ts.map +0 -1
  305. package/dist/decorators/Auth.d.ts +0 -22
  306. package/dist/decorators/Auth.d.ts.map +0 -1
  307. package/dist/decorators/Controller.d.ts +0 -17
  308. package/dist/decorators/Controller.d.ts.map +0 -1
  309. package/dist/decorators/Public.d.ts +0 -15
  310. package/dist/decorators/Public.d.ts.map +0 -1
  311. package/dist/decorators/Use.d.ts +0 -23
  312. package/dist/decorators/Use.d.ts.map +0 -1
  313. package/dist/decorators/methods.d.ts +0 -26
  314. package/dist/decorators/methods.d.ts.map +0 -1
  315. package/dist/express.cjs +0 -1186
  316. package/dist/express.cjs.map +0 -1
  317. package/dist/express.d.ts +0 -8
  318. package/dist/express.d.ts.map +0 -1
  319. package/dist/express.js +0 -1150
  320. package/dist/express.js.map +0 -1
  321. package/dist/http.d.ts +0 -33
  322. package/dist/http.d.ts.map +0 -1
  323. package/dist/index.cjs +0 -724
  324. package/dist/index.cjs.map +0 -1
  325. package/dist/metal/applyListQuery.d.ts +0 -100
  326. package/dist/metal/applyListQuery.d.ts.map +0 -1
  327. package/dist/metal/index.cjs +0 -278
  328. package/dist/metal/index.cjs.map +0 -1
  329. package/dist/metal/index.d.ts +0 -15
  330. package/dist/metal/index.d.ts.map +0 -1
  331. package/dist/metal/index.js +0 -243
  332. package/dist/metal/index.js.map +0 -1
  333. package/dist/metal/listQuery.d.ts +0 -26
  334. package/dist/metal/listQuery.d.ts.map +0 -1
  335. package/dist/metal/queryOptions.d.ts +0 -16
  336. package/dist/metal/queryOptions.d.ts.map +0 -1
  337. package/dist/metal/readMetalBag.d.ts +0 -69
  338. package/dist/metal/readMetalBag.d.ts.map +0 -1
  339. package/dist/metal/registerMetalEntities.d.ts +0 -26
  340. package/dist/metal/registerMetalEntities.d.ts.map +0 -1
  341. package/dist/metal/schemaFromEntity.d.ts +0 -41
  342. package/dist/metal/schemaFromEntity.d.ts.map +0 -1
  343. package/dist/metal/searchWhere.d.ts +0 -97
  344. package/dist/metal/searchWhere.d.ts.map +0 -1
  345. package/dist/metal/symbolMetadata.d.ts +0 -8
  346. package/dist/metal/symbolMetadata.d.ts.map +0 -1
  347. package/dist/runtime/auth/runtime.d.ts +0 -183
  348. package/dist/runtime/auth/runtime.d.ts.map +0 -1
  349. package/dist/runtime/metadata/bucket.d.ts +0 -2
  350. package/dist/runtime/metadata/bucket.d.ts.map +0 -1
  351. package/dist/runtime/metadata/key.d.ts +0 -2
  352. package/dist/runtime/metadata/key.d.ts.map +0 -1
  353. package/dist/runtime/metadata/read.d.ts +0 -2
  354. package/dist/runtime/metadata/read.d.ts.map +0 -1
  355. package/dist/runtime/metadata/types.d.ts +0 -95
  356. package/dist/runtime/metadata/types.d.ts.map +0 -1
  357. package/dist/runtime/polyfill.d.ts +0 -2
  358. package/dist/runtime/polyfill.d.ts.map +0 -1
  359. package/dist/runtime/upload.d.ts +0 -44
  360. package/dist/runtime/upload.d.ts.map +0 -1
  361. package/dist/runtime/validation/ajv.d.ts +0 -120
  362. package/dist/runtime/validation/ajv.d.ts.map +0 -1
  363. package/dist/runtime/validation/index.d.ts +0 -11
  364. package/dist/runtime/validation/index.d.ts.map +0 -1
  365. package/dist/schema/decorators.d.ts +0 -37
  366. package/dist/schema/decorators.d.ts.map +0 -1
  367. package/dist/schema/index.cjs +0 -214
  368. package/dist/schema/index.cjs.map +0 -1
  369. package/dist/schema/index.d.ts +0 -2
  370. package/dist/schema/index.d.ts.map +0 -1
  371. package/dist/schema/index.js +0 -163
  372. package/dist/schema/index.js.map +0 -1
  373. package/dist/scripts/adorn-example.cjs +0 -404
  374. package/dist/scripts/adorn-example.cjs.map +0 -1
  375. package/dist/utils/operationId.d.ts +0 -2
  376. package/dist/utils/operationId.d.ts.map +0 -1
  377. package/dist/utils/path.d.ts +0 -2
  378. package/dist/utils/path.d.ts.map +0 -1
  379. package/dist/utils/port.d.ts +0 -9
  380. package/dist/utils/port.d.ts.map +0 -1
@@ -1,404 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- var __create = Object.create;
4
- var __defProp = Object.defineProperty;
5
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getProtoOf = Object.getPrototypeOf;
8
- var __hasOwnProp = Object.prototype.hasOwnProperty;
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
18
- // If the importer is in node compatibility mode or this is not an ESM
19
- // file that has been converted to a CommonJS file using a Babel-
20
- // compatible transform (i.e. "__esModule" has not been set), then set
21
- // "default" to the CommonJS "module.exports" for node compatibility.
22
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
23
- mod
24
- ));
25
-
26
- // scripts/adorn-example.ts
27
- var import_child_process2 = require("child_process");
28
- var import_path = require("path");
29
- var import_fs = require("fs");
30
- var import_node_process = __toESM(require("process"), 1);
31
- var readline = __toESM(require("readline"), 1);
32
-
33
- // src/utils/port.ts
34
- var import_net = require("net");
35
- var import_child_process = require("child_process");
36
- var import_util = require("util");
37
- var execAsync = (0, import_util.promisify)(import_child_process.exec);
38
- async function isPortAvailable(port, host = "0.0.0.0") {
39
- return new Promise((resolve) => {
40
- const server = (0, import_net.createServer)();
41
- server.on("error", (err) => {
42
- if (err.code === "EADDRINUSE") {
43
- resolve(false);
44
- } else {
45
- resolve(false);
46
- }
47
- });
48
- server.once("listening", () => {
49
- server.close(() => {
50
- resolve(true);
51
- });
52
- });
53
- server.listen(port, host);
54
- });
55
- }
56
- async function findProcessOnPort(port) {
57
- try {
58
- const platform = process.platform;
59
- if (platform === "win32") {
60
- const { stdout } = await execAsync(`netstat -ano | findstr :${port}`);
61
- for (const line of stdout.split("\n")) {
62
- const trimmed = line.trim();
63
- if (!trimmed || trimmed.includes("PID")) continue;
64
- const parts = trimmed.split(/\s+/);
65
- if (parts.length >= 5) {
66
- const address = parts[1];
67
- const pid = parseInt(parts[parts.length - 1], 10);
68
- if (address.includes(`:${port}`) && !isNaN(pid)) {
69
- const command = await getProcessNameOnWindows(pid);
70
- return { pid, command };
71
- }
72
- }
73
- }
74
- } else {
75
- const { stdout } = await execAsync(`lsof -ti:${port}`);
76
- const pids = stdout.trim().split("\n").filter(Boolean).map(Number);
77
- if (pids.length > 0) {
78
- const pid = pids[0];
79
- const command = await getProcessNameOnUnix(pid);
80
- return { pid, command };
81
- }
82
- }
83
- return null;
84
- } catch (error) {
85
- if (error.message.includes("matches found")) {
86
- return null;
87
- }
88
- return null;
89
- }
90
- }
91
- async function getProcessNameOnWindows(pid) {
92
- try {
93
- const { stdout } = await execAsync(`tasklist /FI "PID eq ${pid}" /FO CSV /NH`);
94
- const line = stdout.trim().split("\n")[0];
95
- if (line) {
96
- const parts = line.split('","');
97
- if (parts.length >= 2) {
98
- return parts[0].replace(/"/g, "");
99
- }
100
- }
101
- } catch {
102
- return void 0;
103
- }
104
- }
105
- async function getProcessNameOnUnix(pid) {
106
- try {
107
- const { stdout } = await execAsync(`ps -p ${pid} -o comm=`);
108
- return stdout.trim() || void 0;
109
- } catch {
110
- return void 0;
111
- }
112
- }
113
- async function killProcess(pid) {
114
- try {
115
- process.kill(pid, "SIGTERM");
116
- await new Promise((resolve, reject) => {
117
- const timeout = setTimeout(() => {
118
- reject(new Error("Process did not terminate gracefully"));
119
- }, 5e3);
120
- const check = () => {
121
- try {
122
- process.kill(pid, 0);
123
- setTimeout(check, 500);
124
- } catch {
125
- clearInterval(interval);
126
- clearTimeout(timeout);
127
- resolve();
128
- }
129
- };
130
- const interval = setInterval(check, 500);
131
- });
132
- return true;
133
- } catch {
134
- try {
135
- process.kill(pid, "SIGKILL");
136
- await new Promise((resolve, reject) => {
137
- const timeout = setTimeout(() => {
138
- reject(new Error("Process did not terminate"));
139
- }, 3e3);
140
- setTimeout(() => {
141
- try {
142
- process.kill(pid, 0);
143
- clearTimeout(timeout);
144
- reject(new Error("Process still running"));
145
- } catch {
146
- clearTimeout(timeout);
147
- resolve();
148
- }
149
- }, 1e3);
150
- });
151
- return true;
152
- } catch {
153
- return false;
154
- }
155
- }
156
- }
157
- async function waitForPort(port, host = "0.0.0.0", timeout = 5e3) {
158
- const start = Date.now();
159
- while (Date.now() - start < timeout) {
160
- if (await isPortAvailable(port, host)) {
161
- return true;
162
- }
163
- await new Promise((resolve) => setTimeout(resolve, 200));
164
- }
165
- return false;
166
- }
167
-
168
- // scripts/adorn-example.ts
169
- function findRepoRoot(startDir) {
170
- let current = startDir;
171
- while (true) {
172
- const examplesDir = (0, import_path.join)(current, "examples");
173
- const packageJson = (0, import_path.join)(current, "package.json");
174
- if ((0, import_fs.existsSync)(examplesDir) && (0, import_fs.existsSync)(packageJson)) {
175
- return current;
176
- }
177
- const parent = (0, import_path.dirname)(current);
178
- if (parent === current) {
179
- return null;
180
- }
181
- current = parent;
182
- }
183
- }
184
- function resolveRepoRoot() {
185
- const candidates = [import_node_process.default.env.INIT_CWD, import_node_process.default.cwd()].filter(
186
- (dir) => Boolean(dir)
187
- );
188
- for (const candidate of candidates) {
189
- const root = findRepoRoot(candidate);
190
- if (root) return root;
191
- }
192
- return import_node_process.default.cwd();
193
- }
194
- var repoRoot = resolveRepoRoot();
195
- function isWindows() {
196
- return import_node_process.default.platform === "win32";
197
- }
198
- function runCommand(command, cwd) {
199
- const shell = isWindows() ? "cmd.exe" : "/bin/bash";
200
- (0, import_child_process2.execSync)(command, { cwd, stdio: "inherit", shell });
201
- }
202
- function spawnCommand(args, cwd) {
203
- return new Promise((resolve, reject) => {
204
- const cmd = isWindows() ? "npm.cmd" : "npm";
205
- const child = (0, import_child_process2.spawn)(cmd, args, {
206
- cwd,
207
- stdio: "inherit",
208
- shell: isWindows()
209
- });
210
- child.on("error", reject);
211
- resolve(child);
212
- });
213
- }
214
- function getExamples() {
215
- const examplesDir = (0, import_path.join)(repoRoot, "examples");
216
- if (!(0, import_fs.existsSync)(examplesDir)) return [];
217
- return (0, import_fs.readdirSync)(examplesDir).filter((name) => {
218
- const path = (0, import_path.join)(examplesDir, name);
219
- return (0, import_fs.statSync)(path).isDirectory();
220
- });
221
- }
222
- function printHelp() {
223
- console.log(`
224
- Usage: npx adorn-example <example-name>
225
-
226
- Run an adorn-api example with automatic dependency installation.
227
-
228
- Examples:
229
- npx adorn-example blog-platform
230
- npx adorn-example task-manager
231
- npx adorn-example basic
232
-
233
- Available examples:
234
- ${getExamples().map((e) => ` - ${e}`).join("\n")}
235
-
236
- Options:
237
- -h, --help Show this help message
238
- -l, --list List all available examples
239
- -f, --force Force kill process on port without prompting
240
- -p, --port Specify port (default: 3000, env: ADORN_EXAMPLE_PORT)
241
-
242
- From the adorn-api project root, you can also use:
243
- npm run example <example-name>
244
- `);
245
- }
246
- async function promptWithTimeout(question, timeout = 1e4) {
247
- const rl = readline.createInterface({
248
- input: import_node_process.default.stdin,
249
- output: import_node_process.default.stdout
250
- });
251
- let timeoutId = null;
252
- const timeoutPromise = new Promise((resolve) => {
253
- timeoutId = setTimeout(() => {
254
- rl.close();
255
- console.log("\n\u23F0 Timed out waiting for input");
256
- resolve(null);
257
- }, timeout);
258
- });
259
- const inputPromise = new Promise((resolve) => {
260
- rl.question(question, (answer) => {
261
- if (timeoutId) clearTimeout(timeoutId);
262
- rl.close();
263
- resolve(answer.trim());
264
- });
265
- });
266
- return Promise.race([inputPromise, timeoutPromise]);
267
- }
268
- async function ensurePortAvailable(targetPort, force) {
269
- console.log(`
270
- \u{1F50D} Checking port ${targetPort}...`);
271
- if (await isPortAvailable(targetPort)) {
272
- console.log(`\u2713 Port ${targetPort} is available`);
273
- return;
274
- }
275
- console.log(`\u274C Port ${targetPort} is already in use.`);
276
- const processInfo = await findProcessOnPort(targetPort);
277
- if (!processInfo) {
278
- console.error(" Could not determine process using this port");
279
- console.error(" Please stop it manually or use a different port (ADORN_EXAMPLE_PORT env var)");
280
- import_node_process.default.exit(1);
281
- }
282
- const { pid, command } = processInfo;
283
- console.log(` Process PID: ${pid}`);
284
- if (command) {
285
- console.log(` Command: ${command}`);
286
- }
287
- if (force) {
288
- console.log(`
289
- Force flag enabled, killing process ${pid}...`);
290
- } else {
291
- const answer = await promptWithTimeout(" Kill existing process? (y/n): ", 1e4);
292
- if (answer === null) {
293
- console.log("\n\u274C Aborted. Please stop the process manually or use a different port");
294
- import_node_process.default.exit(1);
295
- }
296
- if (answer.toLowerCase() !== "y" && answer.toLowerCase() !== "yes") {
297
- console.log("\n\u274C Aborted. Please stop the process manually or use a different port");
298
- console.log(" You can also use the --force flag to auto-kill");
299
- import_node_process.default.exit(1);
300
- }
301
- }
302
- console.log(` Terminating process ${pid}...`);
303
- if (await killProcess(pid)) {
304
- console.log(" \u2713 Process killed successfully");
305
- console.log(` Waiting for port ${targetPort} to be released...`);
306
- const released = await waitForPort(targetPort, "0.0.0.0", 3e3);
307
- if (!released) {
308
- console.error(`
309
- \u274C Port ${targetPort} still in use after killing process`);
310
- import_node_process.default.exit(1);
311
- }
312
- console.log(` \u2713 Port ${targetPort} is now available`);
313
- } else {
314
- console.error(`
315
- \u274C Failed to kill process ${pid}`);
316
- console.error(" You may need to kill it manually or choose a different port");
317
- import_node_process.default.exit(1);
318
- }
319
- }
320
- async function main() {
321
- const args = import_node_process.default.argv.slice(2);
322
- if (args.includes("-h") || args.includes("--help")) {
323
- printHelp();
324
- import_node_process.default.exit(0);
325
- }
326
- if (args.includes("-l") || args.includes("--list")) {
327
- console.log("Available examples:");
328
- getExamples().forEach((ex) => console.log(` - ${ex}`));
329
- import_node_process.default.exit(0);
330
- }
331
- const forceFlag = args.includes("-f") || args.includes("--force");
332
- const portIndex = args.indexOf("-p") !== -1 ? args.indexOf("-p") : args.indexOf("--port");
333
- let targetPort = Number(import_node_process.default.env.ADORN_EXAMPLE_PORT || 3e3);
334
- if (portIndex !== -1 && args[portIndex + 1]) {
335
- const portArg = Number(args[portIndex + 1]);
336
- if (!isNaN(portArg) && portArg > 0 && portArg <= 65535) {
337
- targetPort = portArg;
338
- } else {
339
- console.error(`
340
- \u274C Invalid port number: ${args[portIndex + 1]}`);
341
- console.error(" Port must be between 1 and 65535");
342
- import_node_process.default.exit(1);
343
- }
344
- }
345
- const filteredArgs = args.filter(
346
- (arg) => !["-f", "--force", "-p", "--port"].includes(arg) && (portIndex === -1 || arg !== args[portIndex + 1])
347
- );
348
- const example = filteredArgs[0] || "basic";
349
- const examplePath = (0, import_path.join)(repoRoot, "examples", example);
350
- if (!(0, import_fs.existsSync)(examplePath)) {
351
- console.error(`
352
- \u274C Example "${example}" not found.
353
- `);
354
- console.log("Available examples:");
355
- getExamples().forEach((ex) => console.log(` - ${ex}`));
356
- import_node_process.default.exit(1);
357
- }
358
- console.log(`
359
- \u{1F680} Running "${example}" example...
360
- `);
361
- let child = null;
362
- try {
363
- const nodeModulesPath = (0, import_path.join)(examplePath, "node_modules");
364
- const nodeModulesExists = (0, import_fs.existsSync)(nodeModulesPath);
365
- if (!nodeModulesExists) {
366
- console.log("\u{1F4E6} Installing dependencies...");
367
- runCommand("npm install", examplePath);
368
- }
369
- console.log("\u{1F4E6} Building artifacts...");
370
- runCommand("npm run build", examplePath);
371
- await ensurePortAvailable(targetPort, forceFlag);
372
- console.log("\n\u{1F310} Starting server...\n");
373
- console.log("Press Ctrl+C to stop\n");
374
- child = await spawnCommand(["run", "dev"], examplePath);
375
- import_node_process.default.on("SIGINT", () => {
376
- if (child) child.kill("SIGINT");
377
- });
378
- import_node_process.default.on("SIGTERM", () => {
379
- if (child) child.kill("SIGTERM");
380
- });
381
- await new Promise((resolve, reject) => {
382
- if (!child) {
383
- reject(new Error("Child process not started"));
384
- return;
385
- }
386
- child.on("exit", (code) => {
387
- if (code === 0 || code === null) {
388
- resolve();
389
- } else {
390
- reject(new Error(`Process exited with code ${code}`));
391
- }
392
- });
393
- child.on("error", reject);
394
- });
395
- } catch (err) {
396
- if (err.code !== "SIGINT" && err.code !== "SIGTERM") {
397
- console.error(`
398
- \u274C Error: ${err.message}`);
399
- import_node_process.default.exit(1);
400
- }
401
- }
402
- }
403
- main();
404
- //# sourceMappingURL=adorn-example.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../scripts/adorn-example.ts","../../src/utils/port.ts"],"sourcesContent":["#!/usr/bin/env node\n\n/**\n * Adorn-API Example Runner\n * \n * Usage:\n * npx adorn-example <example-name>\n * npx adorn-example blog-platform\n * npx adorn-example task-manager\n * \n * Or from the adorn-api project root:\n * npm run example <example-name>\n */\n\nimport { execSync, spawn, ChildProcess } from \"child_process\";\nimport { dirname, join } from \"path\";\nimport { existsSync, readdirSync, statSync } from \"fs\";\nimport process from \"node:process\";\nimport * as readline from \"readline\";\nimport { isPortAvailable, findProcessOnPort, killProcess, waitForPort } from \"../src/utils/port\";\n\nfunction findRepoRoot(startDir: string): string | null {\n let current = startDir;\n while (true) {\n const examplesDir = join(current, \"examples\");\n const packageJson = join(current, \"package.json\");\n if (existsSync(examplesDir) && existsSync(packageJson)) {\n return current;\n }\n const parent = dirname(current);\n if (parent === current) {\n return null;\n }\n current = parent;\n }\n}\n\nfunction resolveRepoRoot(): string {\n const candidates = [process.env.INIT_CWD, process.cwd()].filter(\n (dir): dir is string => Boolean(dir),\n );\n\n for (const candidate of candidates) {\n const root = findRepoRoot(candidate);\n if (root) return root;\n }\n\n return process.cwd();\n}\n\nconst repoRoot = resolveRepoRoot();\n\nfunction isWindows(): boolean {\n return process.platform === \"win32\";\n}\n\nfunction runCommand(command: string, cwd: string): void {\n const shell = isWindows() ? \"cmd.exe\" : \"/bin/bash\";\n execSync(command, { cwd, stdio: \"inherit\", shell });\n}\n\nfunction spawnCommand(args: string[], cwd: string): Promise<ChildProcess> {\n return new Promise((resolve, reject) => {\n const cmd = isWindows() ? \"npm.cmd\" : \"npm\";\n const child = spawn(cmd, args, {\n cwd,\n stdio: \"inherit\",\n shell: isWindows(),\n });\n\n child.on(\"error\", reject);\n resolve(child);\n });\n}\n\nfunction getExamples(): string[] {\n const examplesDir = join(repoRoot, \"examples\");\n if (!existsSync(examplesDir)) return [];\n return readdirSync(examplesDir).filter(name => {\n const path = join(examplesDir, name);\n return statSync(path).isDirectory();\n });\n}\n\nfunction printHelp(): void {\n console.log(`\nUsage: npx adorn-example <example-name>\n\nRun an adorn-api example with automatic dependency installation.\n\nExamples:\n npx adorn-example blog-platform\n npx adorn-example task-manager\n npx adorn-example basic\n\nAvailable examples:\n${getExamples().map(e => ` - ${e}`).join(\"\\n\")}\n\nOptions:\n -h, --help Show this help message\n -l, --list List all available examples\n -f, --force Force kill process on port without prompting\n -p, --port Specify port (default: 3000, env: ADORN_EXAMPLE_PORT)\n\nFrom the adorn-api project root, you can also use:\n npm run example <example-name>\n `);\n}\n\nasync function promptWithTimeout(question: string, timeout: number = 10000): Promise<string | null> {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n let timeoutId: NodeJS.Timeout | null = null;\n\n const timeoutPromise = new Promise<string | null>((resolve) => {\n timeoutId = setTimeout(() => {\n rl.close();\n console.log(\"\\nā° Timed out waiting for input\");\n resolve(null);\n }, timeout);\n });\n\n const inputPromise = new Promise<string>((resolve) => {\n rl.question(question, (answer) => {\n if (timeoutId) clearTimeout(timeoutId);\n rl.close();\n resolve(answer.trim());\n });\n });\n\n return Promise.race([inputPromise, timeoutPromise]);\n}\n\nasync function ensurePortAvailable(targetPort: number, force: boolean): Promise<void> {\n console.log(`\\nšŸ” Checking port ${targetPort}...`);\n\n if (await isPortAvailable(targetPort)) {\n console.log(`āœ“ Port ${targetPort} is available`);\n return;\n }\n\n console.log(`āŒ Port ${targetPort} is already in use.`);\n\n const processInfo = await findProcessOnPort(targetPort);\n \n if (!processInfo) {\n console.error(\" Could not determine process using this port\");\n console.error(\" Please stop it manually or use a different port (ADORN_EXAMPLE_PORT env var)\");\n process.exit(1);\n }\n\n const { pid, command } = processInfo;\n console.log(` Process PID: ${pid}`);\n if (command) {\n console.log(` Command: ${command}`);\n }\n\n if (force) {\n console.log(`\\n Force flag enabled, killing process ${pid}...`);\n } else {\n const answer = await promptWithTimeout(\" Kill existing process? (y/n): \", 10000);\n\n if (answer === null) {\n console.log(\"\\nāŒ Aborted. Please stop the process manually or use a different port\");\n process.exit(1);\n }\n\n if (answer.toLowerCase() !== \"y\" && answer.toLowerCase() !== \"yes\") {\n console.log(\"\\nāŒ Aborted. Please stop the process manually or use a different port\");\n console.log(\" You can also use the --force flag to auto-kill\");\n process.exit(1);\n }\n }\n\n console.log(` Terminating process ${pid}...`);\n if (await killProcess(pid)) {\n console.log(\" āœ“ Process killed successfully\");\n\n console.log(` Waiting for port ${targetPort} to be released...`);\n const released = await waitForPort(targetPort, \"0.0.0.0\", 3000);\n\n if (!released) {\n console.error(`\\nāŒ Port ${targetPort} still in use after killing process`);\n process.exit(1);\n }\n \n console.log(` āœ“ Port ${targetPort} is now available`);\n } else {\n console.error(`\\nāŒ Failed to kill process ${pid}`);\n console.error(\" You may need to kill it manually or choose a different port\");\n process.exit(1);\n }\n}\n\nasync function main(): Promise<void> {\n const args = process.argv.slice(2);\n \n if (args.includes(\"-h\") || args.includes(\"--help\")) {\n printHelp();\n process.exit(0);\n }\n\n if (args.includes(\"-l\") || args.includes(\"--list\")) {\n console.log(\"Available examples:\");\n getExamples().forEach(ex => console.log(` - ${ex}`));\n process.exit(0);\n }\n\n const forceFlag = args.includes(\"-f\") || args.includes(\"--force\");\n const portIndex = args.indexOf(\"-p\") !== -1 ? args.indexOf(\"-p\") : args.indexOf(\"--port\");\n let targetPort = Number(process.env.ADORN_EXAMPLE_PORT || 3000);\n \n if (portIndex !== -1 && args[portIndex + 1]) {\n const portArg = Number(args[portIndex + 1]);\n if (!isNaN(portArg) && portArg > 0 && portArg <= 65535) {\n targetPort = portArg;\n } else {\n console.error(`\\nāŒ Invalid port number: ${args[portIndex + 1]}`);\n console.error(\" Port must be between 1 and 65535\");\n process.exit(1);\n }\n }\n\n const filteredArgs = args.filter(arg => \n ![\"-f\", \"--force\", \"-p\", \"--port\"].includes(arg) &&\n (portIndex === -1 || arg !== args[portIndex + 1])\n );\n\n const example = filteredArgs[0] || \"basic\";\n const examplePath = join(repoRoot, \"examples\", example);\n\n if (!existsSync(examplePath)) {\n console.error(`\\nāŒ Example \"${example}\" not found.\\n`);\n console.log(\"Available examples:\");\n getExamples().forEach(ex => console.log(` - ${ex}`));\n process.exit(1);\n }\n\n console.log(`\\nšŸš€ Running \"${example}\" example...\\n`);\n\n let child: ChildProcess | null = null;\n\n try {\n const nodeModulesPath = join(examplePath, \"node_modules\");\n const nodeModulesExists = existsSync(nodeModulesPath);\n\n if (!nodeModulesExists) {\n console.log(\"šŸ“¦ Installing dependencies...\");\n runCommand(\"npm install\", examplePath);\n }\n\n console.log(\"šŸ“¦ Building artifacts...\");\n runCommand(\"npm run build\", examplePath);\n\n await ensurePortAvailable(targetPort, forceFlag);\n\n console.log(\"\\n🌐 Starting server...\\n\");\n console.log(\"Press Ctrl+C to stop\\n\");\n\n child = await spawnCommand([\"run\", \"dev\"], examplePath);\n\n process.on(\"SIGINT\", () => {\n if (child) child.kill(\"SIGINT\");\n });\n\n process.on(\"SIGTERM\", () => {\n if (child) child.kill(\"SIGTERM\");\n });\n\n await new Promise<void>((resolve, reject) => {\n if (!child) {\n reject(new Error(\"Child process not started\"));\n return;\n }\n child.on(\"exit\", (code) => {\n if (code === 0 || code === null) {\n resolve();\n } else {\n reject(new Error(`Process exited with code ${code}`));\n }\n });\n child.on(\"error\", reject);\n });\n } catch (err: any) {\n if (err.code !== \"SIGINT\" && err.code !== \"SIGTERM\") {\n console.error(`\\nāŒ Error: ${err.message}`);\n process.exit(1);\n }\n }\n}\n\nmain();\n","import { createServer, Server } from \"net\";\nimport { exec } from \"child_process\";\nimport { promisify } from \"util\";\n\nconst execAsync = promisify(exec);\n\nexport interface ProcessInfo {\n pid: number;\n command?: string;\n}\n\nexport async function isPortAvailable(port: number, host: string = \"0.0.0.0\"): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n const server: Server = createServer();\n\n server.on(\"error\", (err: any) => {\n if (err.code === \"EADDRINUSE\") {\n resolve(false);\n } else {\n resolve(false);\n }\n });\n\n server.once(\"listening\", () => {\n server.close(() => {\n resolve(true);\n });\n });\n\n server.listen(port, host);\n });\n}\n\nexport async function findProcessOnPort(port: number): Promise<ProcessInfo | null> {\n try {\n const platform = process.platform;\n\n if (platform === \"win32\") {\n const { stdout } = await execAsync(`netstat -ano | findstr :${port}`);\n \n for (const line of stdout.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.includes(\"PID\")) continue;\n \n const parts = trimmed.split(/\\s+/);\n if (parts.length >= 5) {\n const address = parts[1];\n const pid = parseInt(parts[parts.length - 1], 10);\n \n if (address.includes(`:${port}`) && !isNaN(pid)) {\n const command = await getProcessNameOnWindows(pid);\n return { pid, command };\n }\n }\n }\n } else {\n const { stdout } = await execAsync(`lsof -ti:${port}`);\n const pids = stdout.trim().split(\"\\n\").filter(Boolean).map(Number);\n \n if (pids.length > 0) {\n const pid = pids[0];\n const command = await getProcessNameOnUnix(pid);\n return { pid, command };\n }\n }\n\n return null;\n } catch (error: any) {\n if (error.message.includes(\"matches found\")) {\n return null;\n }\n return null;\n }\n}\n\nasync function getProcessNameOnWindows(pid: number): Promise<string | undefined> {\n try {\n const { stdout } = await execAsync(`tasklist /FI \"PID eq ${pid}\" /FO CSV /NH`);\n const line = stdout.trim().split(\"\\n\")[0];\n if (line) {\n const parts = line.split('\",\"');\n if (parts.length >= 2) {\n return parts[0].replace(/\"/g, \"\");\n }\n }\n } catch {\n return undefined;\n }\n}\n\nasync function getProcessNameOnUnix(pid: number): Promise<string | undefined> {\n try {\n const { stdout } = await execAsync(`ps -p ${pid} -o comm=`);\n return stdout.trim() || undefined;\n } catch {\n return undefined;\n }\n}\n\nexport async function killProcess(pid: number): Promise<boolean> {\n try {\n process.kill(pid, \"SIGTERM\");\n \n await new Promise<void>((resolve, reject) => {\n const timeout = setTimeout(() => {\n reject(new Error(\"Process did not terminate gracefully\"));\n }, 5000);\n \n const check = () => {\n try {\n process.kill(pid, 0);\n setTimeout(check, 500);\n } catch {\n clearInterval(interval);\n clearTimeout(timeout);\n resolve();\n }\n };\n \n const interval = setInterval(check, 500);\n });\n \n return true;\n } catch {\n try {\n process.kill(pid, \"SIGKILL\");\n await new Promise<void>((resolve, reject) => {\n const timeout = setTimeout(() => {\n reject(new Error(\"Process did not terminate\"));\n }, 3000);\n \n setTimeout(() => {\n try {\n process.kill(pid, 0);\n clearTimeout(timeout);\n reject(new Error(\"Process still running\"));\n } catch {\n clearTimeout(timeout);\n resolve();\n }\n }, 1000);\n });\n \n return true;\n } catch {\n return false;\n }\n }\n}\n\nexport async function waitForPort(port: number, host: string = \"0.0.0.0\", timeout: number = 5000): Promise<boolean> {\n const start = Date.now();\n \n while (Date.now() - start < timeout) {\n if (await isPortAvailable(port, host)) {\n return true;\n }\n await new Promise(resolve => setTimeout(resolve, 200));\n }\n \n return false;\n}\n"],"mappings":"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","names":["import_child_process","process"]}
@@ -1,2 +0,0 @@
1
- export declare function defaultOperationId(controllerName: string, methodName: string): string;
2
- //# sourceMappingURL=operationId.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"operationId.d.ts","sourceRoot":"","sources":["../../src/utils/operationId.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAErF"}
@@ -1,2 +0,0 @@
1
- export declare function joinPaths(base: string, sub: string): string;
2
- //# sourceMappingURL=path.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAI3D"}
@@ -1,9 +0,0 @@
1
- export interface ProcessInfo {
2
- pid: number;
3
- command?: string;
4
- }
5
- export declare function isPortAvailable(port: number, host?: string): Promise<boolean>;
6
- export declare function findProcessOnPort(port: number): Promise<ProcessInfo | null>;
7
- export declare function killProcess(pid: number): Promise<boolean>;
8
- export declare function waitForPort(port: number, host?: string, timeout?: number): Promise<boolean>;
9
- //# sourceMappingURL=port.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../src/utils/port.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAoB9F;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAwCjF;AA0BD,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAiD/D;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAkB,EAAE,OAAO,GAAE,MAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAWlH"}