@next-vibe/checker 1.0.52 → 3.0.1

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 (430) hide show
  1. package/LICENSE +669 -5
  2. package/README.md +179 -200
  3. package/check.config.ts +85 -16
  4. package/generated/alias-map.ts +30 -0
  5. package/generated/endpoint.ts +75 -0
  6. package/{src/app/api/[locale]/system/check/oxlint/plugins/i18n/src/index.ts → oxlint-plugins/i18n.ts} +45 -9
  7. package/{src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/src/index.ts → oxlint-plugins/jsx-capitalization.ts} +84 -17
  8. package/{src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/src/index.ts → oxlint-plugins/restricted-syntax.ts} +40 -14
  9. package/package.json +27 -131
  10. package/.dist/LICENSE +0 -674
  11. package/.dist/README.md +0 -257
  12. package/.dist/bin/vibe-runtime.js +0 -58166
  13. package/.dist/bin/vibe-runtime.js.map +0 -451
  14. package/.dist/oxlint-plugins/i18n.js +0 -381
  15. package/.dist/oxlint-plugins/jsx-capitalization.js +0 -436
  16. package/.dist/oxlint-plugins/restricted-syntax.js +0 -409
  17. package/src/app/api/[locale]/LICENSE +0 -674
  18. package/src/app/api/[locale]/i18n/de/index.ts +0 -15
  19. package/src/app/api/[locale]/i18n/en/index.ts +0 -14
  20. package/src/app/api/[locale]/i18n/pl/index.ts +0 -13
  21. package/src/app/api/[locale]/shared/i18n/de/index.ts +0 -85
  22. package/src/app/api/[locale]/shared/i18n/en/index.ts +0 -83
  23. package/src/app/api/[locale]/shared/i18n/pl/index.ts +0 -85
  24. package/src/app/api/[locale]/shared/stats-filtering.ts +0 -174
  25. package/src/app/api/[locale]/shared/types/common.schema.ts +0 -55
  26. package/src/app/api/[locale]/shared/types/response.schema.ts +0 -411
  27. package/src/app/api/[locale]/shared/types/stats-filtering.schema.ts +0 -315
  28. package/src/app/api/[locale]/shared/types/utils.ts +0 -187
  29. package/src/app/api/[locale]/shared/utils/base64.ts +0 -46
  30. package/src/app/api/[locale]/shared/utils/env-util.ts +0 -36
  31. package/src/app/api/[locale]/shared/utils/i18n/de/index.ts +0 -21
  32. package/src/app/api/[locale]/shared/utils/i18n/en/index.ts +0 -19
  33. package/src/app/api/[locale]/shared/utils/i18n/pl/index.ts +0 -21
  34. package/src/app/api/[locale]/shared/utils/index.ts +0 -11
  35. package/src/app/api/[locale]/shared/utils/object-path.ts +0 -41
  36. package/src/app/api/[locale]/shared/utils/object.test.ts +0 -82
  37. package/src/app/api/[locale]/shared/utils/object.ts +0 -73
  38. package/src/app/api/[locale]/shared/utils/parse-error.ts +0 -134
  39. package/src/app/api/[locale]/shared/utils/parse-json.ts +0 -62
  40. package/src/app/api/[locale]/shared/utils/time.ts +0 -46
  41. package/src/app/api/[locale]/shared/utils/validation.ts +0 -117
  42. package/src/app/api/[locale]/shared/utils/zod-required-fields.ts +0 -115
  43. package/src/app/api/[locale]/system/builder/definition.ts +0 -1750
  44. package/src/app/api/[locale]/system/builder/enum.ts +0 -78
  45. package/src/app/api/[locale]/system/builder/i18n/de/index.ts +0 -645
  46. package/src/app/api/[locale]/system/builder/i18n/en/index.ts +0 -653
  47. package/src/app/api/[locale]/system/builder/i18n/pl/index.ts +0 -643
  48. package/src/app/api/[locale]/system/builder/repository/build-executor.test.ts +0 -178
  49. package/src/app/api/[locale]/system/builder/repository/build-executor.ts +0 -538
  50. package/src/app/api/[locale]/system/builder/repository/bun-compiler.ts +0 -250
  51. package/src/app/api/[locale]/system/builder/repository/bundle-analyzer.ts +0 -170
  52. package/src/app/api/[locale]/system/builder/repository/config-loader.ts +0 -146
  53. package/src/app/api/[locale]/system/builder/repository/config-validator.ts +0 -97
  54. package/src/app/api/[locale]/system/builder/repository/constants.ts +0 -125
  55. package/src/app/api/[locale]/system/builder/repository/error-suggester.ts +0 -67
  56. package/src/app/api/[locale]/system/builder/repository/file-copier.ts +0 -90
  57. package/src/app/api/[locale]/system/builder/repository/folder-cleaner.ts +0 -75
  58. package/src/app/api/[locale]/system/builder/repository/index.ts +0 -2
  59. package/src/app/api/[locale]/system/builder/repository/npm-package-generator.ts +0 -143
  60. package/src/app/api/[locale]/system/builder/repository/output-formatter.ts +0 -104
  61. package/src/app/api/[locale]/system/builder/repository/profile-service.ts +0 -79
  62. package/src/app/api/[locale]/system/builder/repository/report-generator.ts +0 -109
  63. package/src/app/api/[locale]/system/builder/repository/vite-compiler.ts +0 -277
  64. package/src/app/api/[locale]/system/builder/route.ts +0 -21
  65. package/src/app/api/[locale]/system/builder/test-files/file1.ts +0 -2
  66. package/src/app/api/[locale]/system/builder/test-files/file2.tsx +0 -10
  67. package/src/app/api/[locale]/system/builder/test-files/file3.tsx +0 -16
  68. package/src/app/api/[locale]/system/builder/test-files/folderToCopy/fileInFolder.ts +0 -2
  69. package/src/app/api/[locale]/system/builder/test-files/test-config.ts +0 -38
  70. package/src/app/api/[locale]/system/builder/test-files/test-delete-config.ts +0 -8
  71. package/src/app/api/[locale]/system/builder/test-files/test-project/package.json +0 -24
  72. package/src/app/api/[locale]/system/builder/test-files/test-project/src/constants.ts +0 -6
  73. package/src/app/api/[locale]/system/builder/test-files/test-project/src/greet.ts +0 -18
  74. package/src/app/api/[locale]/system/builder/test-files/test-project/src/index.ts +0 -7
  75. package/src/app/api/[locale]/system/builder/test-files/test-project/src/utils/calculate.ts +0 -27
  76. package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.json +0 -19
  77. package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.tsbuildinfo +0 -1
  78. package/src/app/api/[locale]/system/builder/test-files/test3.css +0 -1
  79. package/src/app/api/[locale]/system/check/config/create/definition.ts +0 -266
  80. package/src/app/api/[locale]/system/check/config/create/i18n/de/index.ts +0 -151
  81. package/src/app/api/[locale]/system/check/config/create/i18n/en/index.ts +0 -146
  82. package/src/app/api/[locale]/system/check/config/create/i18n/pl/index.ts +0 -148
  83. package/src/app/api/[locale]/system/check/config/create/repository.ts +0 -269
  84. package/src/app/api/[locale]/system/check/config/create/route.ts +0 -21
  85. package/src/app/api/[locale]/system/check/config/repository.ts +0 -846
  86. package/src/app/api/[locale]/system/check/config/shared.ts +0 -364
  87. package/src/app/api/[locale]/system/check/config/types.ts +0 -610
  88. package/src/app/api/[locale]/system/check/config/utils.ts +0 -155
  89. package/src/app/api/[locale]/system/check/i18n/de/index.ts +0 -19
  90. package/src/app/api/[locale]/system/check/i18n/en/index.ts +0 -18
  91. package/src/app/api/[locale]/system/check/i18n/pl/index.ts +0 -19
  92. package/src/app/api/[locale]/system/check/lint/definition.ts +0 -383
  93. package/src/app/api/[locale]/system/check/lint/enum.ts +0 -34
  94. package/src/app/api/[locale]/system/check/lint/i18n/de/index.ts +0 -160
  95. package/src/app/api/[locale]/system/check/lint/i18n/en/index.ts +0 -158
  96. package/src/app/api/[locale]/system/check/lint/i18n/pl/index.ts +0 -160
  97. package/src/app/api/[locale]/system/check/lint/repository.ts +0 -844
  98. package/src/app/api/[locale]/system/check/lint/route.ts +0 -21
  99. package/src/app/api/[locale]/system/check/oxlint/README.md +0 -190
  100. package/src/app/api/[locale]/system/check/oxlint/definition.ts +0 -375
  101. package/src/app/api/[locale]/system/check/oxlint/enum.ts +0 -34
  102. package/src/app/api/[locale]/system/check/oxlint/i18n/de/index.ts +0 -166
  103. package/src/app/api/[locale]/system/check/oxlint/i18n/en/index.ts +0 -164
  104. package/src/app/api/[locale]/system/check/oxlint/i18n/pl/index.ts +0 -166
  105. package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/README.md +0 -269
  106. package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/test.tsx +0 -74
  107. package/src/app/api/[locale]/system/check/oxlint/plugins/shared/config-loader.ts +0 -283
  108. package/src/app/api/[locale]/system/check/oxlint/repository.ts +0 -553
  109. package/src/app/api/[locale]/system/check/oxlint/route.ts +0 -21
  110. package/src/app/api/[locale]/system/check/oxlint/types.ts +0 -191
  111. package/src/app/api/[locale]/system/check/test-project/.vscode/settings.json +0 -48
  112. package/src/app/api/[locale]/system/check/test-project/bun.lock +0 -640
  113. package/src/app/api/[locale]/system/check/test-project/check.config.ts +0 -955
  114. package/src/app/api/[locale]/system/check/test-project/package.json +0 -17
  115. package/src/app/api/[locale]/system/check/test-project/src/constants.ts +0 -6
  116. package/src/app/api/[locale]/system/check/test-project/src/greet.ts +0 -18
  117. package/src/app/api/[locale]/system/check/test-project/src/test-issues/a11y-issues.tsx +0 -107
  118. package/src/app/api/[locale]/system/check/test-project/src/test-issues/eslint-issues.tsx +0 -37
  119. package/src/app/api/[locale]/system/check/test-project/src/test-issues/general-issues.ts +0 -135
  120. package/src/app/api/[locale]/system/check/test-project/src/test-issues/i18n-issues.tsx +0 -113
  121. package/src/app/api/[locale]/system/check/test-project/src/test-issues/jsx-capitalization-issues.tsx +0 -127
  122. package/src/app/api/[locale]/system/check/test-project/src/test-issues/nextjs-issues.tsx +0 -92
  123. package/src/app/api/[locale]/system/check/test-project/src/test-issues/promise-issues.ts +0 -73
  124. package/src/app/api/[locale]/system/check/test-project/src/test-issues/react-issues.tsx +0 -95
  125. package/src/app/api/[locale]/system/check/test-project/src/test-issues/restricted-syntax-issues.tsx +0 -61
  126. package/src/app/api/[locale]/system/check/test-project/src/test-issues/typescript-issues.ts +0 -78
  127. package/src/app/api/[locale]/system/check/test-project/src/utils/calculate.ts +0 -27
  128. package/src/app/api/[locale]/system/check/test-project/tsconfig.json +0 -22
  129. package/src/app/api/[locale]/system/check/test-project/tsconfig.tsbuildinfo +0 -1
  130. package/src/app/api/[locale]/system/check/typecheck/definition.ts +0 -328
  131. package/src/app/api/[locale]/system/check/typecheck/enum.ts +0 -34
  132. package/src/app/api/[locale]/system/check/typecheck/i18n/de/index.ts +0 -148
  133. package/src/app/api/[locale]/system/check/typecheck/i18n/en/index.ts +0 -145
  134. package/src/app/api/[locale]/system/check/typecheck/i18n/pl/index.ts +0 -148
  135. package/src/app/api/[locale]/system/check/typecheck/repository.ts +0 -863
  136. package/src/app/api/[locale]/system/check/typecheck/route.ts +0 -21
  137. package/src/app/api/[locale]/system/check/typecheck/utils.ts +0 -160
  138. package/src/app/api/[locale]/system/check/vibe-check/definition.ts +0 -448
  139. package/src/app/api/[locale]/system/check/vibe-check/enum.ts +0 -63
  140. package/src/app/api/[locale]/system/check/vibe-check/i18n/de/index.ts +0 -164
  141. package/src/app/api/[locale]/system/check/vibe-check/i18n/en/index.ts +0 -161
  142. package/src/app/api/[locale]/system/check/vibe-check/i18n/pl/index.ts +0 -163
  143. package/src/app/api/[locale]/system/check/vibe-check/repository.ts +0 -516
  144. package/src/app/api/[locale]/system/check/vibe-check/route.test.ts +0 -1010
  145. package/src/app/api/[locale]/system/check/vibe-check/route.ts +0 -21
  146. package/src/app/api/[locale]/system/generated/endpoint.ts +0 -274
  147. package/src/app/api/[locale]/system/generated/endpoints.ts +0 -138
  148. package/src/app/api/[locale]/system/generated/route-handlers.ts +0 -213
  149. package/src/app/api/[locale]/system/generators/endpoint/definition.ts +0 -167
  150. package/src/app/api/[locale]/system/generators/endpoint/i18n/de/index.ts +0 -48
  151. package/src/app/api/[locale]/system/generators/endpoint/i18n/en/index.ts +0 -48
  152. package/src/app/api/[locale]/system/generators/endpoint/i18n/pl/index.ts +0 -50
  153. package/src/app/api/[locale]/system/generators/endpoint/repository.ts +0 -286
  154. package/src/app/api/[locale]/system/generators/endpoint/route.ts +0 -18
  155. package/src/app/api/[locale]/system/generators/endpoints/definition.ts +0 -246
  156. package/src/app/api/[locale]/system/generators/endpoints/i18n/de/index.ts +0 -54
  157. package/src/app/api/[locale]/system/generators/endpoints/i18n/en/index.ts +0 -52
  158. package/src/app/api/[locale]/system/generators/endpoints/i18n/pl/index.ts +0 -54
  159. package/src/app/api/[locale]/system/generators/endpoints/options-repository.ts +0 -425
  160. package/src/app/api/[locale]/system/generators/endpoints/repository.ts +0 -368
  161. package/src/app/api/[locale]/system/generators/endpoints/route.ts +0 -17
  162. package/src/app/api/[locale]/system/generators/endpoints-index/definition.ts +0 -166
  163. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/de/index.ts +0 -71
  164. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/en/index.ts +0 -69
  165. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/pl/index.ts +0 -71
  166. package/src/app/api/[locale]/system/generators/endpoints-index/repository.ts +0 -279
  167. package/src/app/api/[locale]/system/generators/endpoints-index/route.ts +0 -18
  168. package/src/app/api/[locale]/system/generators/generate-all/definition.ts +0 -327
  169. package/src/app/api/[locale]/system/generators/generate-all/i18n/de/index.ts +0 -96
  170. package/src/app/api/[locale]/system/generators/generate-all/i18n/en/index.ts +0 -94
  171. package/src/app/api/[locale]/system/generators/generate-all/i18n/pl/index.ts +0 -96
  172. package/src/app/api/[locale]/system/generators/generate-all/repository.ts +0 -240
  173. package/src/app/api/[locale]/system/generators/generate-all/route.ts +0 -19
  174. package/src/app/api/[locale]/system/generators/i18n/de/index.ts +0 -15
  175. package/src/app/api/[locale]/system/generators/i18n/en/index.ts +0 -14
  176. package/src/app/api/[locale]/system/generators/i18n/pl/index.ts +0 -15
  177. package/src/app/api/[locale]/system/generators/route-handlers/definition.ts +0 -178
  178. package/src/app/api/[locale]/system/generators/route-handlers/i18n/de/index.ts +0 -48
  179. package/src/app/api/[locale]/system/generators/route-handlers/i18n/en/index.ts +0 -48
  180. package/src/app/api/[locale]/system/generators/route-handlers/i18n/pl/index.ts +0 -50
  181. package/src/app/api/[locale]/system/generators/route-handlers/repository.ts +0 -267
  182. package/src/app/api/[locale]/system/generators/route-handlers/route.ts +0 -14
  183. package/src/app/api/[locale]/system/generators/shared/utils.ts +0 -215
  184. package/src/app/api/[locale]/system/help/definition.ts +0 -433
  185. package/src/app/api/[locale]/system/help/i18n/de/index.ts +0 -263
  186. package/src/app/api/[locale]/system/help/i18n/en/index.ts +0 -259
  187. package/src/app/api/[locale]/system/help/i18n/pl/index.ts +0 -262
  188. package/src/app/api/[locale]/system/help/interactive/definition.ts +0 -122
  189. package/src/app/api/[locale]/system/help/interactive/i18n/de/index.ts +0 -21
  190. package/src/app/api/[locale]/system/help/interactive/i18n/en/index.ts +0 -19
  191. package/src/app/api/[locale]/system/help/interactive/i18n/pl/index.ts +0 -21
  192. package/src/app/api/[locale]/system/help/interactive/repository.ts +0 -1131
  193. package/src/app/api/[locale]/system/help/interactive/route.ts +0 -43
  194. package/src/app/api/[locale]/system/help/list/definition.ts +0 -362
  195. package/src/app/api/[locale]/system/help/list/repository.ts +0 -99
  196. package/src/app/api/[locale]/system/help/list/route.ts +0 -21
  197. package/src/app/api/[locale]/system/help/repository.ts +0 -238
  198. package/src/app/api/[locale]/system/help/route.ts +0 -16
  199. package/src/app/api/[locale]/system/i18n/de/index.ts +0 -67
  200. package/src/app/api/[locale]/system/i18n/en/index.ts +0 -66
  201. package/src/app/api/[locale]/system/i18n/pl/index.ts +0 -67
  202. package/src/app/api/[locale]/system/release-tool/definition.ts +0 -2925
  203. package/src/app/api/[locale]/system/release-tool/i18n/de/index.ts +0 -782
  204. package/src/app/api/[locale]/system/release-tool/i18n/en/index.ts +0 -779
  205. package/src/app/api/[locale]/system/release-tool/i18n/pl/index.ts +0 -781
  206. package/src/app/api/[locale]/system/release-tool/repository/asset-zipper.ts +0 -122
  207. package/src/app/api/[locale]/system/release-tool/repository/changelog-generator.ts +0 -205
  208. package/src/app/api/[locale]/system/release-tool/repository/ci-detector.ts +0 -540
  209. package/src/app/api/[locale]/system/release-tool/repository/config.ts +0 -106
  210. package/src/app/api/[locale]/system/release-tool/repository/constants.ts +0 -406
  211. package/src/app/api/[locale]/system/release-tool/repository/dependency-manager.ts +0 -496
  212. package/src/app/api/[locale]/system/release-tool/repository/git-service.ts +0 -378
  213. package/src/app/api/[locale]/system/release-tool/repository/hook-runner.ts +0 -96
  214. package/src/app/api/[locale]/system/release-tool/repository/index.ts +0 -1
  215. package/src/app/api/[locale]/system/release-tool/repository/notification-service.ts +0 -575
  216. package/src/app/api/[locale]/system/release-tool/repository/package-service.ts +0 -150
  217. package/src/app/api/[locale]/system/release-tool/repository/publisher.ts +0 -241
  218. package/src/app/api/[locale]/system/release-tool/repository/quality-runner.ts +0 -413
  219. package/src/app/api/[locale]/system/release-tool/repository/release-creator.ts +0 -283
  220. package/src/app/api/[locale]/system/release-tool/repository/release-executor.ts +0 -1084
  221. package/src/app/api/[locale]/system/release-tool/repository/snyk-service.ts +0 -132
  222. package/src/app/api/[locale]/system/release-tool/repository/utils.ts +0 -603
  223. package/src/app/api/[locale]/system/release-tool/repository/validation.ts +0 -265
  224. package/src/app/api/[locale]/system/release-tool/repository/version-service.ts +0 -275
  225. package/src/app/api/[locale]/system/release-tool/route.ts +0 -21
  226. package/src/app/api/[locale]/system/unified-interface/README.md +0 -328
  227. package/src/app/api/[locale]/system/unified-interface/cli/README.md +0 -349
  228. package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-handler.ts +0 -82
  229. package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-user.ts +0 -120
  230. package/src/app/api/[locale]/system/unified-interface/cli/auth/session-file.ts +0 -244
  231. package/src/app/api/[locale]/system/unified-interface/cli/env.ts +0 -24
  232. package/src/app/api/[locale]/system/unified-interface/cli/i18n/de/index.ts +0 -159
  233. package/src/app/api/[locale]/system/unified-interface/cli/i18n/en/index.ts +0 -158
  234. package/src/app/api/[locale]/system/unified-interface/cli/i18n/pl/index.ts +0 -159
  235. package/src/app/api/[locale]/system/unified-interface/cli/runtime/debug.ts +0 -573
  236. package/src/app/api/[locale]/system/unified-interface/cli/runtime/entry-point.ts +0 -128
  237. package/src/app/api/[locale]/system/unified-interface/cli/runtime/environment.ts +0 -155
  238. package/src/app/api/[locale]/system/unified-interface/cli/runtime/execution-errors.ts +0 -423
  239. package/src/app/api/[locale]/system/unified-interface/cli/runtime/parsing.ts +0 -252
  240. package/src/app/api/[locale]/system/unified-interface/cli/runtime/route-executor.ts +0 -901
  241. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/de/index.ts +0 -12
  242. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/en/index.ts +0 -11
  243. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/pl/index.ts +0 -12
  244. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/definition.ts +0 -235
  245. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/de/index.ts +0 -54
  246. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/en/index.ts +0 -52
  247. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/pl/index.ts +0 -54
  248. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/repository.ts +0 -444
  249. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/route.ts +0 -25
  250. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/definition.ts +0 -159
  251. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/de/index.ts +0 -61
  252. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/en/index.ts +0 -59
  253. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/pl/index.ts +0 -61
  254. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/repository.ts +0 -181
  255. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/route.ts +0 -22
  256. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/definition.ts +0 -164
  257. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/de/index.ts +0 -54
  258. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/en/index.ts +0 -52
  259. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/pl/index.ts +0 -54
  260. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/repository.ts +0 -195
  261. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/route.ts +0 -24
  262. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/definition.ts +0 -180
  263. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/de/index.ts +0 -54
  264. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/en/index.ts +0 -52
  265. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/pl/index.ts +0 -54
  266. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/repository.ts +0 -105
  267. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/route.ts +0 -22
  268. package/src/app/api/[locale]/system/unified-interface/cli/vibe-runtime.ts +0 -264
  269. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/base-renderer.ts +0 -246
  270. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/registry.ts +0 -305
  271. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/types.ts +0 -116
  272. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/de/index.ts +0 -67
  273. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/en/index.ts +0 -65
  274. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/pl/index.ts +0 -67
  275. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/accordion.ts +0 -70
  276. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/avatar.ts +0 -37
  277. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/badge.ts +0 -52
  278. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-output.ts +0 -285
  279. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-files.ts +0 -71
  280. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-list.ts +0 -281
  281. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-summary.ts +0 -83
  282. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/container.ts +0 -175
  283. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-card.ts +0 -61
  284. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-cards.ts +0 -518
  285. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-list.ts +0 -75
  286. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-table.ts +0 -357
  287. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/editable-text.ts +0 -93
  288. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/empty-state.ts +0 -49
  289. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/errors.ts +0 -63
  290. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/grouped-list.ts +0 -667
  291. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-card.ts +0 -78
  292. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-list.ts +0 -99
  293. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link.ts +0 -54
  294. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/loading.ts +0 -46
  295. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/markdown.ts +0 -123
  296. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/metric.ts +0 -269
  297. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/section.ts +0 -114
  298. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/stats-grid.ts +0 -138
  299. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/tabs.ts +0 -59
  300. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/text.ts +0 -76
  301. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/title.ts +0 -37
  302. package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/response-renderer.ts +0 -403
  303. package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/schema-handler.ts +0 -504
  304. package/src/app/api/[locale]/system/unified-interface/i18n/de/index.ts +0 -39
  305. package/src/app/api/[locale]/system/unified-interface/i18n/en/index.ts +0 -37
  306. package/src/app/api/[locale]/system/unified-interface/i18n/pl/index.ts +0 -39
  307. package/src/app/api/[locale]/system/unified-interface/mcp/README.md +0 -114
  308. package/src/app/api/[locale]/system/unified-interface/mcp/converter.ts +0 -136
  309. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/de/index.ts +0 -180
  310. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/en/index.ts +0 -178
  311. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/pl/index.ts +0 -180
  312. package/src/app/api/[locale]/system/unified-interface/mcp/registry.ts +0 -305
  313. package/src/app/api/[locale]/system/unified-interface/mcp/serve/definition.ts +0 -124
  314. package/src/app/api/[locale]/system/unified-interface/mcp/serve/repository.ts +0 -44
  315. package/src/app/api/[locale]/system/unified-interface/mcp/serve/route.ts +0 -14
  316. package/src/app/api/[locale]/system/unified-interface/mcp/server/protocol-handler.ts +0 -291
  317. package/src/app/api/[locale]/system/unified-interface/mcp/server/server.ts +0 -155
  318. package/src/app/api/[locale]/system/unified-interface/mcp/server/stdio-transport.ts +0 -191
  319. package/src/app/api/[locale]/system/unified-interface/mcp/types.ts +0 -247
  320. package/src/app/api/[locale]/system/unified-interface/react/icons.tsx +0 -346
  321. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create-form.ts +0 -1413
  322. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create.ts +0 -525
  323. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/endpoint-to-metadata.ts +0 -52
  324. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/loader.ts +0 -144
  325. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definitions/registry.ts +0 -262
  326. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/permissions/registry.ts +0 -656
  327. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/executor.ts +0 -220
  328. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/handler.ts +0 -313
  329. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/multi.ts +0 -182
  330. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/request-validator.ts +0 -173
  331. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/single.ts +0 -58
  332. package/src/app/api/[locale]/system/unified-interface/shared/env/define-env-client.ts +0 -45
  333. package/src/app/api/[locale]/system/unified-interface/shared/env/define-env.ts +0 -43
  334. package/src/app/api/[locale]/system/unified-interface/shared/env/validation-logger.ts +0 -58
  335. package/src/app/api/[locale]/system/unified-interface/shared/field/enum.ts +0 -107
  336. package/src/app/api/[locale]/system/unified-interface/shared/field/specialized.ts +0 -336
  337. package/src/app/api/[locale]/system/unified-interface/shared/field/utils.test.ts +0 -385
  338. package/src/app/api/[locale]/system/unified-interface/shared/field/utils.ts +0 -1827
  339. package/src/app/api/[locale]/system/unified-interface/shared/field-config/endpoint-field-types.ts +0 -108
  340. package/src/app/api/[locale]/system/unified-interface/shared/field-config/field-config-types.ts +0 -288
  341. package/src/app/api/[locale]/system/unified-interface/shared/logger/colors.ts +0 -114
  342. package/src/app/api/[locale]/system/unified-interface/shared/logger/endpoint.ts +0 -155
  343. package/src/app/api/[locale]/system/unified-interface/shared/logger/file-logger.ts +0 -85
  344. package/src/app/api/[locale]/system/unified-interface/shared/logger/formatters.ts +0 -167
  345. package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/base-auth-handler.ts +0 -82
  346. package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/factory.ts +0 -34
  347. package/src/app/api/[locale]/system/unified-interface/shared/server-only/server-only.ts +0 -1
  348. package/src/app/api/[locale]/system/unified-interface/shared/types/actions.ts +0 -284
  349. package/src/app/api/[locale]/system/unified-interface/shared/types/endpoint.ts +0 -1101
  350. package/src/app/api/[locale]/system/unified-interface/shared/types/enums.ts +0 -383
  351. package/src/app/api/[locale]/system/unified-interface/shared/types/platform.ts +0 -34
  352. package/src/app/api/[locale]/system/unified-interface/shared/types/types.ts +0 -76
  353. package/src/app/api/[locale]/system/unified-interface/shared/types/ui-config.ts +0 -72
  354. package/src/app/api/[locale]/system/unified-interface/shared/utils/error-types.ts +0 -27
  355. package/src/app/api/[locale]/system/unified-interface/shared/utils/path.ts +0 -80
  356. package/src/app/api/[locale]/system/unified-interface/shared/utils/scanner.ts +0 -225
  357. package/src/app/api/[locale]/system/unified-interface/shared/widgets/actions.ts +0 -251
  358. package/src/app/api/[locale]/system/unified-interface/shared/widgets/configs.ts +0 -1060
  359. package/src/app/api/[locale]/system/unified-interface/shared/widgets/helpers.ts +0 -70
  360. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/accordion.ts +0 -75
  361. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/avatar.ts +0 -69
  362. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/badge.ts +0 -86
  363. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-output.ts +0 -283
  364. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-quality-list.ts +0 -190
  365. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/container.ts +0 -114
  366. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-card.ts +0 -71
  367. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-cards.ts +0 -228
  368. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-list.ts +0 -119
  369. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-table.ts +0 -367
  370. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/editable-text.ts +0 -81
  371. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/empty-state.ts +0 -71
  372. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/errors.ts +0 -79
  373. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/grouped-list.ts +0 -426
  374. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/index.ts +0 -38
  375. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-card.ts +0 -112
  376. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-list.ts +0 -110
  377. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link.ts +0 -66
  378. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/loading.ts +0 -79
  379. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/markdown.ts +0 -159
  380. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/metric-card.ts +0 -225
  381. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/section.ts +0 -85
  382. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/stats-grid.ts +0 -63
  383. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/tabs.ts +0 -73
  384. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/text.ts +0 -96
  385. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/title.ts +0 -57
  386. package/src/app/api/[locale]/system/unified-interface/shared/widgets/types.ts +0 -236
  387. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/field-helpers.ts +0 -120
  388. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/formatting.ts +0 -414
  389. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/url.ts +0 -37
  390. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/widget-helpers.ts +0 -427
  391. package/src/app/api/[locale]/user/auth/i18n/de/index.ts +0 -204
  392. package/src/app/api/[locale]/user/auth/i18n/en/index.ts +0 -199
  393. package/src/app/api/[locale]/user/auth/i18n/pl/index.ts +0 -203
  394. package/src/app/api/[locale]/user/auth/types.ts +0 -45
  395. package/src/app/api/[locale]/user/enum.ts +0 -64
  396. package/src/app/api/[locale]/user/i18n/de/index.ts +0 -75
  397. package/src/app/api/[locale]/user/i18n/en/index.ts +0 -74
  398. package/src/app/api/[locale]/user/i18n/pl/index.ts +0 -75
  399. package/src/app/api/[locale]/user/types.ts +0 -111
  400. package/src/app/api/[locale]/user/user-roles/enum.ts +0 -103
  401. package/src/app/api/[locale]/user/user-roles/i18n/de/index.ts +0 -85
  402. package/src/app/api/[locale]/user/user-roles/i18n/en/index.ts +0 -83
  403. package/src/app/api/[locale]/user/user-roles/i18n/pl/index.ts +0 -85
  404. package/src/app/api/[locale]/user/user-roles/types.ts +0 -32
  405. package/src/app/api/i18n/de/index.ts +0 -6
  406. package/src/app/api/i18n/en/index.ts +0 -5
  407. package/src/app/api/i18n/pl/index.ts +0 -5
  408. package/src/app/i18n/de/index.ts +0 -18
  409. package/src/app/i18n/en/index.ts +0 -18
  410. package/src/app/i18n/pl/index.ts +0 -17
  411. package/src/config/constants.ts +0 -8
  412. package/src/config/debug.ts +0 -30
  413. package/src/config/env-client.ts +0 -57
  414. package/src/config/env.ts +0 -56
  415. package/src/config/i18n/de/index.ts +0 -3
  416. package/src/config/i18n/en/index.ts +0 -51
  417. package/src/config/i18n/pl/index.ts +0 -3
  418. package/src/i18n/core/config.ts +0 -225
  419. package/src/i18n/core/language-utils.ts +0 -226
  420. package/src/i18n/core/localization-utils.ts +0 -394
  421. package/src/i18n/core/scoped-translation.ts +0 -104
  422. package/src/i18n/core/shared-component.tsx +0 -28
  423. package/src/i18n/core/shared-translation-utils.ts +0 -97
  424. package/src/i18n/core/shared.ts +0 -44
  425. package/src/i18n/core/static-types.ts +0 -64
  426. package/src/i18n/core/translation-utils.ts +0 -186
  427. package/src/i18n/de/index.ts +0 -8
  428. package/src/i18n/en/index.ts +0 -7
  429. package/src/i18n/index.ts +0 -100
  430. package/src/i18n/pl/index.ts +0 -7
@@ -1,603 +0,0 @@
1
- /**
2
- * Release Tool Utilities
3
- * Type guards, retry logic, and helper functions
4
- */
5
-
6
- import type { EndpointLogger } from "../../unified-interface/shared/logger/endpoint";
7
- import type { PackageJson, ParsedVersion, ReleaseConfig, RetryConfig } from "../definition";
8
- import { MESSAGES, RETRY_DEFAULTS } from "./constants";
9
-
10
- // ============================================================================
11
- // Type Definitions for Type Guards
12
- // ============================================================================
13
-
14
- /**
15
- * Parsed JSON value type (result of JSON.parse)
16
- */
17
- type JsonValue = string | number | boolean | null | JsonObject | JsonArray;
18
- interface JsonObject {
19
- [key: string]: JsonValue;
20
- }
21
- type JsonArray = JsonValue[];
22
-
23
- /**
24
- * Error type from catch blocks - can be any value
25
- */
26
- type CatchError =
27
- | Error
28
- | {
29
- stdout?: string | Buffer;
30
- stderr?: string | Buffer;
31
- status?: number;
32
- message?: string;
33
- };
34
-
35
- /**
36
- * Exec sync error type with stdout/stderr
37
- */
38
- interface ExecSyncError {
39
- stdout?: string | Buffer;
40
- stderr?: string | Buffer;
41
- status?: number;
42
- }
43
-
44
- // ============================================================================
45
- // Type Guards
46
- // ============================================================================
47
-
48
- /**
49
- * Check if a parsed JSON value is a valid PackageJson
50
- * Returns the value typed as PackageJson if valid, otherwise undefined
51
- */
52
- export function parsePackageJson(value: JsonValue | undefined): PackageJson | undefined {
53
- if (typeof value !== "object" || value === null || Array.isArray(value)) {
54
- return undefined;
55
- }
56
- const obj = value as JsonObject;
57
- if (typeof obj.name === "string" && typeof obj.version === "string") {
58
- // Build a properly typed PackageJson object
59
- return {
60
- name: obj.name,
61
- version: obj.version,
62
- scripts: obj.scripts as PackageJson["scripts"],
63
- dependencies: obj.dependencies as PackageJson["dependencies"],
64
- devDependencies: obj.devDependencies as PackageJson["devDependencies"],
65
- peerDependencies: obj.peerDependencies as PackageJson["peerDependencies"],
66
- optionalDependencies: obj.optionalDependencies as PackageJson["optionalDependencies"],
67
- updateIgnoreDependencies:
68
- obj.updateIgnoreDependencies as PackageJson["updateIgnoreDependencies"],
69
- };
70
- }
71
- return undefined;
72
- }
73
-
74
- /**
75
- * Safe JSON parse that returns JsonValue type
76
- */
77
- export function safeJsonParse(text: string): JsonValue | undefined {
78
- try {
79
- return JSON.parse(text) as JsonValue;
80
- } catch {
81
- return undefined;
82
- }
83
- }
84
-
85
- /**
86
- * Type guard for ReleaseConfig modules
87
- */
88
- export function isReleaseConfigModule(
89
- module: { default?: ReleaseConfig } | null | undefined,
90
- ): module is { default: ReleaseConfig } {
91
- if (typeof module !== "object" || module === null) {
92
- return false;
93
- }
94
- if (!("default" in module) || module.default === undefined) {
95
- return false;
96
- }
97
- const defaultExport = module.default;
98
- if (typeof defaultExport !== "object" || defaultExport === null) {
99
- return false;
100
- }
101
- if (!("packages" in defaultExport)) {
102
- return false;
103
- }
104
- return Array.isArray(defaultExport.packages);
105
- }
106
-
107
- /**
108
- * Convert catch error to typed error
109
- * Accepts any value from catch block and converts to CatchError
110
- */
111
- export function toCatchError(err: Error | ExecSyncError | string | null | undefined): CatchError {
112
- if (err instanceof Error) {
113
- return err;
114
- }
115
- if (typeof err === "string") {
116
- return new Error(err);
117
- }
118
- if (typeof err === "object" && err !== null) {
119
- return err as CatchError;
120
- }
121
- return new Error(String(err));
122
- }
123
-
124
- /**
125
- * Type guard for errors with stdout
126
- */
127
- export function hasStdout(error: CatchError): error is CatchError & { stdout: string | Buffer } {
128
- if (typeof error !== "object" || error === null) {
129
- return false;
130
- }
131
- return (
132
- "stdout" in error &&
133
- error.stdout !== undefined &&
134
- (typeof error.stdout === "string" || Buffer.isBuffer(error.stdout))
135
- );
136
- }
137
-
138
- /**
139
- * Type guard for errors with stderr
140
- */
141
- export function hasStderr(error: CatchError): error is CatchError & { stderr: string | Buffer } {
142
- if (typeof error !== "object" || error === null) {
143
- return false;
144
- }
145
- return (
146
- "stderr" in error &&
147
- error.stderr !== undefined &&
148
- (typeof error.stderr === "string" || Buffer.isBuffer(error.stderr))
149
- );
150
- }
151
-
152
- /**
153
- * Type guard for errors with exit code
154
- */
155
- export function hasExitCode(error: CatchError): error is CatchError & { status: number } {
156
- if (typeof error !== "object" || error === null) {
157
- return false;
158
- }
159
- return "status" in error && typeof error.status === "number";
160
- }
161
-
162
- /**
163
- * Check if a value is a non-empty string
164
- */
165
- export function isNonEmptyString(value: string | undefined | null): value is string {
166
- return typeof value === "string" && value.trim().length > 0;
167
- }
168
-
169
- /**
170
- * Check if a value is a valid semver string
171
- */
172
- export function isValidSemver(value: string): boolean {
173
- const semverRegex = /^\d+\.\d+\.\d+(-[a-zA-Z0-9.-]+)?(\+[a-zA-Z0-9.-]+)?$/;
174
- return semverRegex.test(value);
175
- }
176
-
177
- // ============================================================================
178
- // Retry Logic
179
- // ============================================================================
180
-
181
- /**
182
- * Result type for retry operations
183
- */
184
- export type RetryResult<T> = { success: true; data: T } | { success: false; message: string };
185
-
186
- /**
187
- * Handler for retrying failed operations with exponential backoff
188
- */
189
- export class RetryHandler {
190
- private readonly maxAttempts: number;
191
- private readonly delayMs: number;
192
- private readonly backoffMultiplier: number;
193
- private readonly maxDelayMs: number;
194
-
195
- constructor(config?: RetryConfig) {
196
- this.maxAttempts = config?.maxAttempts ?? RETRY_DEFAULTS.MAX_ATTEMPTS;
197
- this.delayMs = config?.delayMs ?? RETRY_DEFAULTS.INITIAL_DELAY;
198
- this.backoffMultiplier = config?.backoffMultiplier ?? RETRY_DEFAULTS.BACKOFF_MULTIPLIER;
199
- this.maxDelayMs = config?.maxDelayMs ?? RETRY_DEFAULTS.MAX_DELAY;
200
- }
201
-
202
- /**
203
- * Execute an operation with retry logic
204
- * Returns a result type instead of throwing
205
- */
206
- async withRetry<T>(
207
- operation: () => Promise<T>,
208
- logger: EndpointLogger,
209
- operationName: string,
210
- ): Promise<RetryResult<T>> {
211
- let lastError: Error | undefined;
212
-
213
- for (let attempt = 1; attempt <= this.maxAttempts; attempt++) {
214
- try {
215
- const data = await operation();
216
- return { success: true, data };
217
- } catch (error) {
218
- lastError = error instanceof Error ? error : new Error(String(error));
219
-
220
- if (attempt < this.maxAttempts) {
221
- const delay = this.calculateDelay(attempt);
222
- logger.warn(MESSAGES.RETRY_ATTEMPT, {
223
- operation: operationName,
224
- attempt,
225
- maxAttempts: this.maxAttempts,
226
- nextRetryIn: formatDuration(delay),
227
- error: lastError.message,
228
- });
229
- await sleep(delay);
230
- }
231
- }
232
- }
233
-
234
- logger.error(MESSAGES.RETRY_FAILED, {
235
- operation: operationName,
236
- attempts: this.maxAttempts,
237
- lastError: lastError?.message,
238
- });
239
-
240
- return {
241
- success: false,
242
- message: lastError?.message ?? `${operationName} failed after ${this.maxAttempts} attempts`,
243
- };
244
- }
245
-
246
- /**
247
- * Calculate delay for a given attempt using exponential backoff
248
- */
249
- private calculateDelay(attempt: number): number {
250
- const delay = this.delayMs * Math.pow(this.backoffMultiplier, attempt - 1);
251
- return Math.min(delay, this.maxDelayMs);
252
- }
253
- }
254
-
255
- // ============================================================================
256
- // Time and Duration Helpers
257
- // ============================================================================
258
-
259
- /**
260
- * Sleep for a specified duration
261
- */
262
- export function sleep(ms: number): Promise<void> {
263
- return new Promise((resolve) => {
264
- setTimeout(resolve, ms);
265
- });
266
- }
267
-
268
- /**
269
- * Format a duration in milliseconds to a human-readable string
270
- */
271
- export function formatDuration(ms: number): string {
272
- if (ms < 1000) {
273
- return `${ms}ms`;
274
- }
275
-
276
- const seconds = Math.floor(ms / 1000);
277
- const remainingMs = ms % 1000;
278
-
279
- if (seconds < 60) {
280
- return remainingMs > 0 ? `${seconds}.${Math.floor(remainingMs / 100)}s` : `${seconds}s`;
281
- }
282
-
283
- const minutes = Math.floor(seconds / 60);
284
- const remainingSeconds = seconds % 60;
285
-
286
- if (minutes < 60) {
287
- return remainingSeconds > 0 ? `${minutes}m ${remainingSeconds}s` : `${minutes}m`;
288
- }
289
-
290
- const hours = Math.floor(minutes / 60);
291
- const remainingMinutes = minutes % 60;
292
- return `${hours}h ${remainingMinutes}m`;
293
- }
294
-
295
- /**
296
- * Create a stopwatch for measuring operation duration
297
- */
298
- export function createStopwatch(): {
299
- stop: () => number;
300
- elapsed: () => number;
301
- } {
302
- const start = Date.now();
303
- return {
304
- stop: () => Date.now() - start,
305
- elapsed: () => Date.now() - start,
306
- };
307
- }
308
-
309
- // ============================================================================
310
- // String Helpers
311
- // ============================================================================
312
-
313
- /**
314
- * Escape shell special characters in a string
315
- */
316
- export function sanitizeForShell(value: string): string {
317
- return value.replaceAll(/[`$\\!"']/g, "\\$&");
318
- }
319
-
320
- /**
321
- * Escape double quotes in a string for shell commands
322
- */
323
- export function escapeDoubleQuotes(value: string): string {
324
- return value.replaceAll('"', '\\"');
325
- }
326
-
327
- /**
328
- * Truncate a string to a maximum length with ellipsis
329
- */
330
- export function truncate(str: string, maxLength: number): string {
331
- if (str.length <= maxLength) {
332
- return str;
333
- }
334
- return `${str.slice(0, maxLength - 3)}...`;
335
- }
336
-
337
- /**
338
- * Convert a string to kebab-case
339
- */
340
- export function toKebabCase(str: string): string {
341
- return str
342
- .replaceAll(/([a-z])([A-Z])/g, "$1-$2")
343
- .replaceAll(/[\s_]+/g, "-")
344
- .toLowerCase();
345
- }
346
-
347
- /**
348
- * Pluralize a word based on count
349
- */
350
- export function pluralize(count: number, singular: string, plural?: string): string {
351
- return count === 1 ? singular : (plural ?? `${singular}s`);
352
- }
353
-
354
- // ============================================================================
355
- // Version Helpers
356
- // ============================================================================
357
-
358
- /**
359
- * Parse a semantic version string into components
360
- */
361
- export function parseVersion(version: string): ParsedVersion {
362
- const regex = /^(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9.-]+))?(?:\+([a-zA-Z0-9.-]+))?$/;
363
- const match = version.match(regex);
364
-
365
- if (!match) {
366
- return {
367
- major: 0,
368
- minor: 0,
369
- patch: 0,
370
- prerelease: null,
371
- prereleaseNumber: null,
372
- buildMetadata: null,
373
- };
374
- }
375
-
376
- const prerelease = match[4] ?? null;
377
- let prereleaseNumber: number | null = null;
378
-
379
- if (prerelease) {
380
- const preMatch = prerelease.match(/\.(\d+)$/);
381
- if (preMatch) {
382
- prereleaseNumber = parseInt(preMatch[1] ?? "0", 10);
383
- }
384
- }
385
-
386
- return {
387
- major: parseInt(match[1] ?? "0", 10),
388
- minor: parseInt(match[2] ?? "0", 10),
389
- patch: parseInt(match[3] ?? "0", 10),
390
- prerelease,
391
- prereleaseNumber,
392
- buildMetadata: match[5] ?? null,
393
- };
394
- }
395
-
396
- /**
397
- * Compare two semantic version strings
398
- * Returns: -1 if a < b, 0 if a == b, 1 if a > b
399
- */
400
- export function compareVersions(a: string, b: string): -1 | 0 | 1 {
401
- const va = parseVersion(a);
402
- const vb = parseVersion(b);
403
-
404
- // Compare major.minor.patch
405
- if (va.major !== vb.major) {
406
- return va.major > vb.major ? 1 : -1;
407
- }
408
- if (va.minor !== vb.minor) {
409
- return va.minor > vb.minor ? 1 : -1;
410
- }
411
- if (va.patch !== vb.patch) {
412
- return va.patch > vb.patch ? 1 : -1;
413
- }
414
-
415
- // Handle prerelease comparison
416
- if (va.prerelease === null && vb.prerelease === null) {
417
- return 0;
418
- }
419
- if (va.prerelease === null) {
420
- return 1; // Release > prerelease
421
- }
422
- if (vb.prerelease === null) {
423
- return -1;
424
- }
425
-
426
- // Compare prerelease identifiers
427
- const comparison = va.prerelease.localeCompare(vb.prerelease);
428
- return comparison === 0 ? 0 : comparison > 0 ? 1 : -1;
429
- }
430
-
431
- // ============================================================================
432
- // Array Helpers
433
- // ============================================================================
434
-
435
- /**
436
- * Chunk an array into smaller arrays of specified size
437
- */
438
- export function chunk<T>(array: T[], size: number): T[][] {
439
- const chunks: T[][] = [];
440
- for (let i = 0; i < array.length; i += size) {
441
- chunks.push(array.slice(i, i + size));
442
- }
443
- return chunks;
444
- }
445
-
446
- /**
447
- * Remove duplicate items from an array
448
- */
449
- export function unique<T>(array: T[]): T[] {
450
- return [...new Set(array)];
451
- }
452
-
453
- /**
454
- * Execute async operations with a concurrency limit
455
- * Uses Promise.allSettled for cleaner implementation without type casts
456
- */
457
- export async function asyncPool<T, R>(
458
- items: T[],
459
- concurrency: number,
460
- fn: (item: T) => Promise<R>,
461
- ): Promise<R[]> {
462
- const results: R[] = [];
463
-
464
- // Process items in batches of concurrency size
465
- for (let i = 0; i < items.length; i += concurrency) {
466
- const batch = items.slice(i, i + concurrency);
467
- const batchResults = await Promise.allSettled(batch.map(fn));
468
-
469
- for (const result of batchResults) {
470
- if (result.status === "fulfilled") {
471
- results.push(result.value);
472
- }
473
- }
474
- }
475
-
476
- return results;
477
- }
478
-
479
- // ============================================================================
480
- // Object Helpers
481
- // ============================================================================
482
-
483
- /**
484
- * Deep clone an object
485
- */
486
- export function deepClone<T>(obj: T): T {
487
- return JSON.parse(JSON.stringify(obj));
488
- }
489
-
490
- /**
491
- * Pick specific keys from an object
492
- */
493
- export function pick<T extends Record<string, JsonValue>, K extends keyof T>(
494
- obj: T,
495
- keys: K[],
496
- ): Pick<T, K> {
497
- const result = {} as Pick<T, K>;
498
- for (const key of keys) {
499
- if (key in obj) {
500
- result[key] = obj[key];
501
- }
502
- }
503
- return result;
504
- }
505
-
506
- /**
507
- * Omit specific keys from an object
508
- */
509
- export function omit<T extends Record<string, JsonValue>, K extends keyof T>(
510
- obj: T,
511
- keys: K[],
512
- ): Omit<T, K> {
513
- const result = { ...obj };
514
- for (const key of keys) {
515
- delete result[key];
516
- }
517
- return result as Omit<T, K>;
518
- }
519
-
520
- // ============================================================================
521
- // Environment Helpers
522
- // ============================================================================
523
-
524
- /**
525
- * Result type for environment variable retrieval
526
- */
527
- export type EnvResult = { success: true; value: string } | { success: false; message: string };
528
-
529
- /**
530
- * Get an environment variable with a default value
531
- */
532
- export function getEnv(key: string, defaultValue?: string): string | undefined {
533
- return process.env[key] ?? defaultValue;
534
- }
535
-
536
- /**
537
- * Get a required environment variable
538
- * Returns a result type instead of throwing
539
- */
540
- export function requireEnv(key: string): EnvResult {
541
- const value = process.env[key];
542
- if (value === undefined || value === "") {
543
- return {
544
- success: false,
545
- message: `Required environment variable ${key} is not set`,
546
- };
547
- }
548
- return { success: true, value };
549
- }
550
-
551
- /**
552
- * Check if running in production
553
- */
554
- export function isProduction(): boolean {
555
- return process.env.NODE_ENV === "production";
556
- }
557
-
558
- /**
559
- * Check if running in development
560
- */
561
- export function isDevelopment(): boolean {
562
- return process.env.NODE_ENV === "development" || !process.env.NODE_ENV;
563
- }
564
-
565
- // ============================================================================
566
- // Path Helpers
567
- // ============================================================================
568
-
569
- /**
570
- * Normalize path separators to forward slashes
571
- */
572
- export function normalizePath(path: string): string {
573
- return path.replaceAll("\\", "/");
574
- }
575
-
576
- /**
577
- * Get file extension from path (without dot)
578
- */
579
- export function getExtension(path: string): string {
580
- const lastDot = path.lastIndexOf(".");
581
- if (lastDot === -1 || lastDot === 0) {
582
- return "";
583
- }
584
- return path.slice(lastDot + 1).toLowerCase();
585
- }
586
-
587
- // ============================================================================
588
- // Date Helpers
589
- // ============================================================================
590
-
591
- /**
592
- * Get current date in ISO format (YYYY-MM-DD)
593
- */
594
- export function getISODate(): string {
595
- return new Date().toISOString().split("T")[0] ?? "";
596
- }
597
-
598
- /**
599
- * Get current timestamp suitable for filenames
600
- */
601
- export function getFileTimestamp(): string {
602
- return new Date().toISOString().replaceAll(/[:.T]/g, "-").split("-").slice(0, 6).join("-");
603
- }