@cbnventures/nova 0.13.1 → 0.15.0

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 (902) hide show
  1. package/README.md +48 -0
  2. package/bin/nova.mjs +3 -0
  3. package/build/package.json +38 -32
  4. package/build/src/api/node-releases.d.ts +4 -4
  5. package/build/src/api/node-releases.d.ts.map +1 -1
  6. package/build/src/api/node-releases.js +31 -26
  7. package/build/src/api/node-releases.js.map +1 -1
  8. package/build/src/api/spdx-licenses.d.ts +4 -4
  9. package/build/src/api/spdx-licenses.d.ts.map +1 -1
  10. package/build/src/api/spdx-licenses.js +21 -18
  11. package/build/src/api/spdx-licenses.js.map +1 -1
  12. package/build/src/cli/generate/github/funding.d.ts +5 -0
  13. package/build/src/cli/generate/github/funding.d.ts.map +1 -0
  14. package/build/src/cli/generate/github/funding.js +68 -0
  15. package/build/src/cli/generate/github/funding.js.map +1 -0
  16. package/build/src/cli/generate/github/issue-template.d.ts +5 -0
  17. package/build/src/cli/generate/github/issue-template.d.ts.map +1 -0
  18. package/build/src/cli/generate/github/issue-template.js +267 -0
  19. package/build/src/cli/generate/github/issue-template.js.map +1 -0
  20. package/build/src/cli/generate/github/workflows.d.ts +10 -0
  21. package/build/src/cli/generate/github/workflows.d.ts.map +1 -0
  22. package/build/src/cli/generate/github/workflows.js +464 -0
  23. package/build/src/cli/generate/github/workflows.js.map +1 -0
  24. package/build/src/cli/generate/must-haves/agent-conventions.d.ts +5 -0
  25. package/build/src/cli/generate/must-haves/agent-conventions.d.ts.map +1 -0
  26. package/build/src/cli/generate/must-haves/agent-conventions.js +114 -0
  27. package/build/src/cli/generate/must-haves/agent-conventions.js.map +1 -0
  28. package/build/src/cli/generate/must-haves/dotenv.d.ts +12 -0
  29. package/build/src/cli/generate/must-haves/dotenv.d.ts.map +1 -0
  30. package/build/src/cli/generate/must-haves/dotenv.js +504 -0
  31. package/build/src/cli/generate/must-haves/dotenv.js.map +1 -0
  32. package/build/src/cli/generate/must-haves/editorconfig.d.ts +5 -0
  33. package/build/src/cli/generate/must-haves/editorconfig.d.ts.map +1 -0
  34. package/build/src/cli/generate/must-haves/editorconfig.js +37 -0
  35. package/build/src/cli/generate/must-haves/editorconfig.js.map +1 -0
  36. package/build/src/cli/generate/must-haves/gitignore.d.ts +13 -0
  37. package/build/src/cli/generate/must-haves/gitignore.d.ts.map +1 -0
  38. package/build/src/cli/generate/must-haves/gitignore.js +446 -0
  39. package/build/src/cli/generate/must-haves/gitignore.js.map +1 -0
  40. package/build/src/cli/generate/must-haves/license.d.ts +5 -0
  41. package/build/src/cli/generate/must-haves/license.d.ts.map +1 -0
  42. package/build/src/cli/generate/must-haves/license.js +131 -0
  43. package/build/src/cli/generate/must-haves/license.js.map +1 -0
  44. package/build/src/cli/generate/must-haves/read-me.d.ts +8 -0
  45. package/build/src/cli/generate/must-haves/read-me.d.ts.map +1 -0
  46. package/build/src/cli/generate/must-haves/read-me.js +255 -0
  47. package/build/src/cli/generate/must-haves/read-me.js.map +1 -0
  48. package/build/src/cli/index.js +421 -107
  49. package/build/src/cli/index.js.map +1 -1
  50. package/build/src/cli/recipe/index.d.ts +3 -0
  51. package/build/src/cli/recipe/index.d.ts.map +1 -0
  52. package/build/src/cli/recipe/index.js +57 -0
  53. package/build/src/cli/recipe/index.js.map +1 -0
  54. package/build/src/cli/recipe/package-json/cleanup.d.ts +8 -0
  55. package/build/src/cli/recipe/package-json/cleanup.d.ts.map +1 -0
  56. package/build/src/cli/recipe/package-json/cleanup.js +183 -0
  57. package/build/src/cli/recipe/package-json/cleanup.js.map +1 -0
  58. package/build/src/cli/recipe/package-json/normalize-artifacts.d.ts +8 -0
  59. package/build/src/cli/recipe/package-json/normalize-artifacts.d.ts.map +1 -0
  60. package/build/src/cli/recipe/package-json/normalize-artifacts.js +250 -0
  61. package/build/src/cli/recipe/package-json/normalize-artifacts.js.map +1 -0
  62. package/build/src/cli/recipe/package-json/normalize-bundler.d.ts +6 -0
  63. package/build/src/cli/recipe/package-json/normalize-bundler.d.ts.map +1 -0
  64. package/build/src/cli/recipe/package-json/normalize-bundler.js +146 -0
  65. package/build/src/cli/recipe/package-json/normalize-bundler.js.map +1 -0
  66. package/build/src/cli/recipe/package-json/normalize-dependencies.d.ts +9 -0
  67. package/build/src/cli/recipe/package-json/normalize-dependencies.d.ts.map +1 -0
  68. package/build/src/cli/recipe/package-json/normalize-dependencies.js +268 -0
  69. package/build/src/cli/recipe/package-json/normalize-dependencies.js.map +1 -0
  70. package/build/src/cli/recipe/package-json/normalize-modules.d.ts +6 -0
  71. package/build/src/cli/recipe/package-json/normalize-modules.d.ts.map +1 -0
  72. package/build/src/cli/recipe/package-json/normalize-modules.js +263 -0
  73. package/build/src/cli/recipe/package-json/normalize-modules.js.map +1 -0
  74. package/build/src/cli/recipe/package-json/normalize-tooling.d.ts +7 -0
  75. package/build/src/cli/recipe/package-json/normalize-tooling.d.ts.map +1 -0
  76. package/build/src/cli/recipe/package-json/normalize-tooling.js +163 -0
  77. package/build/src/cli/recipe/package-json/normalize-tooling.js.map +1 -0
  78. package/build/src/cli/recipe/package-json/sync-environment.d.ts +9 -0
  79. package/build/src/cli/recipe/package-json/sync-environment.d.ts.map +1 -0
  80. package/build/src/cli/recipe/package-json/sync-environment.js +283 -0
  81. package/build/src/cli/recipe/package-json/sync-environment.js.map +1 -0
  82. package/build/src/cli/recipe/package-json/sync-identity.d.ts +6 -0
  83. package/build/src/cli/recipe/package-json/sync-identity.d.ts.map +1 -0
  84. package/build/src/cli/recipe/package-json/sync-identity.js +224 -0
  85. package/build/src/cli/recipe/package-json/sync-identity.js.map +1 -0
  86. package/build/src/cli/recipe/package-json/sync-ownership.d.ts +6 -0
  87. package/build/src/cli/recipe/package-json/sync-ownership.d.ts.map +1 -0
  88. package/build/src/cli/recipe/package-json/sync-ownership.js +349 -0
  89. package/build/src/cli/recipe/package-json/sync-ownership.js.map +1 -0
  90. package/build/src/cli/scaffold/app/expressjs.d.ts +5 -0
  91. package/build/src/cli/scaffold/app/expressjs.d.ts.map +1 -0
  92. package/build/src/cli/scaffold/app/expressjs.js +8 -0
  93. package/build/src/cli/scaffold/app/expressjs.js.map +1 -0
  94. package/build/src/cli/scaffold/app/nextjs.d.ts +5 -0
  95. package/build/src/cli/scaffold/app/nextjs.d.ts.map +1 -0
  96. package/build/src/cli/scaffold/app/nextjs.js +8 -0
  97. package/build/src/cli/scaffold/app/nextjs.js.map +1 -0
  98. package/build/src/cli/scaffold/app/vite.d.ts +5 -0
  99. package/build/src/cli/scaffold/app/vite.d.ts.map +1 -0
  100. package/build/src/cli/scaffold/app/vite.js +8 -0
  101. package/build/src/cli/scaffold/app/vite.js.map +1 -0
  102. package/build/src/cli/scaffold/app/workers.d.ts +5 -0
  103. package/build/src/cli/scaffold/app/workers.d.ts.map +1 -0
  104. package/build/src/cli/scaffold/app/workers.js +8 -0
  105. package/build/src/cli/scaffold/app/workers.js.map +1 -0
  106. package/build/src/cli/scaffold/docs/docusaurus.d.ts +5 -0
  107. package/build/src/cli/scaffold/docs/docusaurus.d.ts.map +1 -0
  108. package/build/src/cli/scaffold/docs/docusaurus.js +8 -0
  109. package/build/src/cli/scaffold/docs/docusaurus.js.map +1 -0
  110. package/build/src/cli/scaffold/starter/base.d.ts +5 -0
  111. package/build/src/cli/scaffold/starter/base.d.ts.map +1 -0
  112. package/build/src/cli/scaffold/starter/base.js +132 -0
  113. package/build/src/cli/scaffold/starter/base.js.map +1 -0
  114. package/build/src/cli/utility/changelog.d.ts +3 -3
  115. package/build/src/cli/utility/changelog.d.ts.map +1 -1
  116. package/build/src/cli/utility/changelog.js +207 -173
  117. package/build/src/cli/utility/changelog.js.map +1 -1
  118. package/build/src/cli/utility/initialize.d.ts +6 -3
  119. package/build/src/cli/utility/initialize.d.ts.map +1 -1
  120. package/build/src/cli/utility/initialize.js +1194 -284
  121. package/build/src/cli/utility/initialize.js.map +1 -1
  122. package/build/src/cli/utility/run-recipes.d.ts +5 -0
  123. package/build/src/cli/utility/run-recipes.d.ts.map +1 -0
  124. package/build/src/cli/utility/run-recipes.js +43 -0
  125. package/build/src/cli/utility/run-recipes.js.map +1 -0
  126. package/build/src/cli/utility/run-scripts.d.ts +10 -0
  127. package/build/src/cli/utility/run-scripts.d.ts.map +1 -0
  128. package/build/src/cli/utility/run-scripts.js +257 -0
  129. package/build/src/cli/utility/run-scripts.js.map +1 -0
  130. package/build/src/cli/utility/transpile.d.ts +9 -0
  131. package/build/src/cli/utility/transpile.d.ts.map +1 -0
  132. package/build/src/cli/utility/transpile.js +64 -0
  133. package/build/src/cli/utility/transpile.js.map +1 -0
  134. package/build/src/cli/utility/type-check.d.ts +3 -3
  135. package/build/src/cli/utility/type-check.d.ts.map +1 -1
  136. package/build/src/cli/utility/type-check.js +26 -21
  137. package/build/src/cli/utility/type-check.js.map +1 -1
  138. package/build/src/cli/utility/version.d.ts +3 -3
  139. package/build/src/cli/utility/version.d.ts.map +1 -1
  140. package/build/src/cli/utility/version.js +126 -68
  141. package/build/src/cli/utility/version.js.map +1 -1
  142. package/build/src/lib/item.d.ts +31 -24
  143. package/build/src/lib/item.d.ts.map +1 -1
  144. package/build/src/lib/item.js +129 -39
  145. package/build/src/lib/item.js.map +1 -1
  146. package/build/src/lib/nova-config.d.ts +6 -5
  147. package/build/src/lib/nova-config.d.ts.map +1 -1
  148. package/build/src/lib/nova-config.js +252 -69
  149. package/build/src/lib/nova-config.js.map +1 -1
  150. package/build/src/lib/regex.d.ts +92 -26
  151. package/build/src/lib/regex.d.ts.map +1 -1
  152. package/build/src/lib/regex.js +92 -26
  153. package/build/src/lib/regex.js.map +1 -1
  154. package/build/src/lib/scaffold.d.ts +10 -0
  155. package/build/src/lib/scaffold.d.ts.map +1 -0
  156. package/build/src/lib/scaffold.js +535 -0
  157. package/build/src/lib/scaffold.js.map +1 -0
  158. package/build/src/lib/schema.d.ts +2 -9
  159. package/build/src/lib/schema.d.ts.map +1 -1
  160. package/build/src/lib/schema.js +6 -8
  161. package/build/src/lib/schema.js.map +1 -1
  162. package/build/src/lib/utility.d.ts +21 -18
  163. package/build/src/lib/utility.d.ts.map +1 -1
  164. package/build/src/lib/utility.js +176 -79
  165. package/build/src/lib/utility.js.map +1 -1
  166. package/build/src/lib/workflow-templates.d.ts +3 -0
  167. package/build/src/lib/workflow-templates.d.ts.map +1 -0
  168. package/build/src/lib/workflow-templates.js +187 -0
  169. package/build/src/lib/workflow-templates.js.map +1 -0
  170. package/build/src/presets/eslint/dx-code-style.d.ts +4 -0
  171. package/build/src/presets/eslint/dx-code-style.d.ts.map +1 -0
  172. package/build/src/presets/eslint/dx-code-style.js +523 -0
  173. package/build/src/presets/eslint/dx-code-style.js.map +1 -0
  174. package/build/src/presets/eslint/dx-ignore.d.ts +4 -0
  175. package/build/src/presets/eslint/dx-ignore.d.ts.map +1 -0
  176. package/build/src/presets/eslint/{dx-ignore.mjs → dx-ignore.js} +1 -1
  177. package/build/src/presets/eslint/dx-ignore.js.map +1 -0
  178. package/build/src/presets/eslint/fw-docusaurus.d.ts +4 -0
  179. package/build/src/presets/eslint/fw-docusaurus.d.ts.map +1 -0
  180. package/build/src/presets/eslint/fw-docusaurus.js +6 -0
  181. package/build/src/presets/eslint/fw-docusaurus.js.map +1 -0
  182. package/build/src/presets/eslint/fw-expressjs.d.ts +4 -0
  183. package/build/src/presets/eslint/fw-expressjs.d.ts.map +1 -0
  184. package/build/src/presets/eslint/{fw-expressjs.mjs → fw-expressjs.js} +3 -5
  185. package/build/src/presets/eslint/fw-expressjs.js.map +1 -0
  186. package/build/src/presets/eslint/fw-nextjs.d.ts +4 -0
  187. package/build/src/presets/eslint/fw-nextjs.d.ts.map +1 -0
  188. package/build/src/presets/eslint/{fw-nextjs.mjs → fw-nextjs.js} +3 -5
  189. package/build/src/presets/eslint/fw-nextjs.js.map +1 -0
  190. package/build/src/presets/eslint/index.d.ts +16 -0
  191. package/build/src/presets/eslint/index.d.ts.map +1 -0
  192. package/build/src/presets/eslint/index.js +16 -0
  193. package/build/src/presets/eslint/index.js.map +1 -0
  194. package/build/src/presets/eslint/lang-javascript.d.ts +4 -0
  195. package/build/src/presets/eslint/lang-javascript.d.ts.map +1 -0
  196. package/build/src/presets/eslint/lang-javascript.js +34 -0
  197. package/build/src/presets/eslint/lang-javascript.js.map +1 -0
  198. package/build/src/presets/eslint/lang-mdx.d.ts +4 -0
  199. package/build/src/presets/eslint/lang-mdx.d.ts.map +1 -0
  200. package/build/src/presets/eslint/{lang-mdx.mjs → lang-mdx.js} +4 -8
  201. package/build/src/presets/eslint/lang-mdx.js.map +1 -0
  202. package/build/src/presets/eslint/lang-typescript.d.ts +4 -0
  203. package/build/src/presets/eslint/lang-typescript.d.ts.map +1 -0
  204. package/build/src/presets/eslint/lang-typescript.js +148 -0
  205. package/build/src/presets/eslint/lang-typescript.js.map +1 -0
  206. package/build/src/presets/eslint/runtime-browser.d.ts +4 -0
  207. package/build/src/presets/eslint/runtime-browser.d.ts.map +1 -0
  208. package/build/src/presets/eslint/{env-web-worker.mjs → runtime-browser.js} +1 -1
  209. package/build/src/presets/eslint/runtime-browser.js.map +1 -0
  210. package/build/src/presets/eslint/runtime-cloudflare-workers.d.ts +4 -0
  211. package/build/src/presets/eslint/runtime-cloudflare-workers.d.ts.map +1 -0
  212. package/build/src/presets/eslint/runtime-cloudflare-workers.js +6 -0
  213. package/build/src/presets/eslint/runtime-cloudflare-workers.js.map +1 -0
  214. package/build/src/presets/eslint/runtime-edge.d.ts +4 -0
  215. package/build/src/presets/eslint/runtime-edge.d.ts.map +1 -0
  216. package/build/src/presets/eslint/{env-edge.mjs → runtime-edge.js} +1 -1
  217. package/build/src/presets/eslint/runtime-edge.js.map +1 -0
  218. package/build/src/presets/eslint/runtime-node.d.ts +4 -0
  219. package/build/src/presets/eslint/runtime-node.d.ts.map +1 -0
  220. package/build/src/presets/eslint/{env-node.mjs → runtime-node.js} +4 -4
  221. package/build/src/presets/eslint/runtime-node.js.map +1 -0
  222. package/build/src/presets/eslint/runtime-service-worker.d.ts +4 -0
  223. package/build/src/presets/eslint/runtime-service-worker.d.ts.map +1 -0
  224. package/build/src/presets/eslint/runtime-service-worker.js +3 -0
  225. package/build/src/presets/eslint/runtime-service-worker.js.map +1 -0
  226. package/build/src/presets/eslint/runtime-web-worker.d.ts +4 -0
  227. package/build/src/presets/eslint/runtime-web-worker.d.ts.map +1 -0
  228. package/build/src/presets/eslint/runtime-web-worker.js +3 -0
  229. package/build/src/presets/eslint/runtime-web-worker.js.map +1 -0
  230. package/build/src/presets/eslint/tool-vite.d.ts +4 -0
  231. package/build/src/presets/eslint/tool-vite.d.ts.map +1 -0
  232. package/build/src/presets/eslint/{tool-vite.mjs → tool-vite.js} +3 -5
  233. package/build/src/presets/eslint/tool-vite.js.map +1 -0
  234. package/build/src/presets/tsconfig/dx-strict.json +1 -0
  235. package/build/src/presets/tsconfig/runtime-cloudflare-workers.json +12 -0
  236. package/build/src/presets/tsconfig/{platform-cloudflare-workers.json → runtime-web-worker.json} +2 -2
  237. package/build/src/rules/eslint/conventions/no-default-export-declaration.d.ts +11 -0
  238. package/build/src/rules/eslint/conventions/no-default-export-declaration.d.ts.map +1 -0
  239. package/build/src/rules/eslint/conventions/no-default-export-declaration.js +73 -0
  240. package/build/src/rules/eslint/conventions/no-default-export-declaration.js.map +1 -0
  241. package/build/src/rules/eslint/conventions/no-implicit-boolean.d.ts +15 -0
  242. package/build/src/rules/eslint/conventions/no-implicit-boolean.d.ts.map +1 -0
  243. package/build/src/rules/eslint/conventions/no-implicit-boolean.js +140 -0
  244. package/build/src/rules/eslint/conventions/no-implicit-boolean.js.map +1 -0
  245. package/build/src/rules/eslint/conventions/require-explicit-return.d.ts +15 -0
  246. package/build/src/rules/eslint/conventions/require-explicit-return.d.ts.map +1 -0
  247. package/build/src/rules/eslint/conventions/require-explicit-return.js +184 -0
  248. package/build/src/rules/eslint/conventions/require-explicit-return.js.map +1 -0
  249. package/build/src/rules/eslint/conventions/require-hash-private.d.ts +12 -0
  250. package/build/src/rules/eslint/conventions/require-hash-private.d.ts.map +1 -0
  251. package/build/src/rules/eslint/conventions/require-hash-private.js +67 -0
  252. package/build/src/rules/eslint/conventions/require-hash-private.js.map +1 -0
  253. package/build/src/rules/eslint/conventions/require-kebab-case-filename.d.ts +14 -0
  254. package/build/src/rules/eslint/conventions/require-kebab-case-filename.d.ts.map +1 -0
  255. package/build/src/rules/eslint/conventions/require-kebab-case-filename.js +95 -0
  256. package/build/src/rules/eslint/conventions/require-kebab-case-filename.js.map +1 -0
  257. package/build/src/rules/eslint/conventions/require-naming-convention.d.ts +34 -0
  258. package/build/src/rules/eslint/conventions/require-naming-convention.d.ts.map +1 -0
  259. package/build/src/rules/eslint/conventions/require-naming-convention.js +382 -0
  260. package/build/src/rules/eslint/conventions/require-naming-convention.js.map +1 -0
  261. package/build/src/rules/eslint/conventions/require-undefined-init.d.ts +11 -0
  262. package/build/src/rules/eslint/conventions/require-undefined-init.d.ts.map +1 -0
  263. package/build/src/rules/eslint/conventions/require-undefined-init.js +71 -0
  264. package/build/src/rules/eslint/conventions/require-undefined-init.js.map +1 -0
  265. package/build/src/rules/eslint/conventions/switch-case-blocks.d.ts +13 -0
  266. package/build/src/rules/eslint/conventions/switch-case-blocks.d.ts.map +1 -0
  267. package/build/src/rules/eslint/conventions/switch-case-blocks.js +82 -0
  268. package/build/src/rules/eslint/conventions/switch-case-blocks.js.map +1 -0
  269. package/build/src/rules/eslint/formatting/no-complex-arrow-concise.d.ts +15 -0
  270. package/build/src/rules/eslint/formatting/no-complex-arrow-concise.d.ts.map +1 -0
  271. package/build/src/rules/eslint/formatting/no-complex-arrow-concise.js +166 -0
  272. package/build/src/rules/eslint/formatting/no-complex-arrow-concise.js.map +1 -0
  273. package/build/src/rules/eslint/formatting/no-multiline-strings.d.ts +15 -0
  274. package/build/src/rules/eslint/formatting/no-multiline-strings.d.ts.map +1 -0
  275. package/build/src/rules/eslint/formatting/no-multiline-strings.js +162 -0
  276. package/build/src/rules/eslint/formatting/no-multiline-strings.js.map +1 -0
  277. package/build/src/rules/eslint/formatting/no-raw-text-in-code.d.ts +11 -0
  278. package/build/src/rules/eslint/formatting/no-raw-text-in-code.d.ts.map +1 -0
  279. package/build/src/rules/eslint/formatting/no-raw-text-in-code.js +57 -0
  280. package/build/src/rules/eslint/formatting/no-raw-text-in-code.js.map +1 -0
  281. package/build/src/rules/eslint/formatting/no-ternary-in-template-literal.d.ts +11 -0
  282. package/build/src/rules/eslint/formatting/no-ternary-in-template-literal.d.ts.map +1 -0
  283. package/build/src/rules/eslint/formatting/no-ternary-in-template-literal.js +55 -0
  284. package/build/src/rules/eslint/formatting/no-ternary-in-template-literal.js.map +1 -0
  285. package/build/src/rules/eslint/formatting/require-import-order.d.ts +14 -0
  286. package/build/src/rules/eslint/formatting/require-import-order.d.ts.map +1 -0
  287. package/build/src/rules/eslint/formatting/require-import-order.js +187 -0
  288. package/build/src/rules/eslint/formatting/require-import-order.js.map +1 -0
  289. package/build/src/rules/eslint/formatting/require-multiline-condition-groups.d.ts +13 -0
  290. package/build/src/rules/eslint/formatting/require-multiline-condition-groups.d.ts.map +1 -0
  291. package/build/src/rules/eslint/formatting/require-multiline-condition-groups.js +138 -0
  292. package/build/src/rules/eslint/formatting/require-multiline-condition-groups.js.map +1 -0
  293. package/build/src/rules/eslint/formatting/require-multiline-conditions.d.ts +13 -0
  294. package/build/src/rules/eslint/formatting/require-multiline-conditions.d.ts.map +1 -0
  295. package/build/src/rules/eslint/formatting/require-multiline-conditions.js +94 -0
  296. package/build/src/rules/eslint/formatting/require-multiline-conditions.js.map +1 -0
  297. package/build/src/rules/eslint/formatting/require-padding-lines.d.ts +25 -0
  298. package/build/src/rules/eslint/formatting/require-padding-lines.d.ts.map +1 -0
  299. package/build/src/rules/eslint/formatting/require-padding-lines.js +309 -0
  300. package/build/src/rules/eslint/formatting/require-padding-lines.js.map +1 -0
  301. package/build/src/rules/eslint/formatting/require-ternary-parens.d.ts +11 -0
  302. package/build/src/rules/eslint/formatting/require-ternary-parens.d.ts.map +1 -0
  303. package/build/src/rules/eslint/formatting/require-ternary-parens.js +76 -0
  304. package/build/src/rules/eslint/formatting/require-ternary-parens.js.map +1 -0
  305. package/build/src/rules/eslint/index.d.ts +44 -5
  306. package/build/src/rules/eslint/index.d.ts.map +1 -1
  307. package/build/src/rules/eslint/index.js +44 -5
  308. package/build/src/rules/eslint/index.js.map +1 -1
  309. package/build/src/rules/eslint/jsdoc/require-jsdoc-body.d.ts +15 -0
  310. package/build/src/rules/eslint/jsdoc/require-jsdoc-body.d.ts.map +1 -0
  311. package/build/src/rules/eslint/jsdoc/require-jsdoc-body.js +176 -0
  312. package/build/src/rules/eslint/jsdoc/require-jsdoc-body.js.map +1 -0
  313. package/build/src/rules/eslint/jsdoc/require-jsdoc-hierarchy.d.ts +26 -0
  314. package/build/src/rules/eslint/jsdoc/require-jsdoc-hierarchy.d.ts.map +1 -0
  315. package/build/src/rules/eslint/jsdoc/require-jsdoc-hierarchy.js +495 -0
  316. package/build/src/rules/eslint/jsdoc/require-jsdoc-hierarchy.js.map +1 -0
  317. package/build/src/rules/eslint/jsdoc/require-jsdoc-param-alignment.d.ts +12 -0
  318. package/build/src/rules/eslint/jsdoc/require-jsdoc-param-alignment.d.ts.map +1 -0
  319. package/build/src/rules/eslint/jsdoc/require-jsdoc-param-alignment.js +144 -0
  320. package/build/src/rules/eslint/jsdoc/require-jsdoc-param-alignment.js.map +1 -0
  321. package/build/src/rules/eslint/jsdoc/require-jsdoc-param-name.d.ts +12 -0
  322. package/build/src/rules/eslint/jsdoc/require-jsdoc-param-name.d.ts.map +1 -0
  323. package/build/src/rules/eslint/jsdoc/require-jsdoc-param-name.js +97 -0
  324. package/build/src/rules/eslint/jsdoc/require-jsdoc-param-name.js.map +1 -0
  325. package/build/src/rules/eslint/jsdoc/require-jsdoc-private.d.ts +11 -0
  326. package/build/src/rules/eslint/jsdoc/require-jsdoc-private.d.ts.map +1 -0
  327. package/build/src/rules/eslint/jsdoc/require-jsdoc-private.js +90 -0
  328. package/build/src/rules/eslint/jsdoc/require-jsdoc-private.js.map +1 -0
  329. package/build/src/rules/eslint/jsdoc/require-jsdoc-since.d.ts +11 -0
  330. package/build/src/rules/eslint/jsdoc/require-jsdoc-since.d.ts.map +1 -0
  331. package/build/src/rules/eslint/jsdoc/require-jsdoc-since.js +88 -0
  332. package/build/src/rules/eslint/jsdoc/require-jsdoc-since.js.map +1 -0
  333. package/build/src/rules/eslint/nova/no-logger-dev.d.ts +13 -0
  334. package/build/src/rules/eslint/nova/no-logger-dev.d.ts.map +1 -0
  335. package/build/src/rules/eslint/nova/no-logger-dev.js +112 -0
  336. package/build/src/rules/eslint/nova/no-logger-dev.js.map +1 -0
  337. package/build/src/rules/eslint/patterns/no-assign-then-return.d.ts +11 -0
  338. package/build/src/rules/eslint/patterns/no-assign-then-return.d.ts.map +1 -0
  339. package/build/src/rules/eslint/patterns/no-assign-then-return.js +96 -0
  340. package/build/src/rules/eslint/patterns/no-assign-then-return.js.map +1 -0
  341. package/build/src/rules/eslint/patterns/no-await-in-loop.d.ts +17 -0
  342. package/build/src/rules/eslint/patterns/no-await-in-loop.d.ts.map +1 -0
  343. package/build/src/rules/eslint/patterns/no-await-in-loop.js +103 -0
  344. package/build/src/rules/eslint/patterns/no-await-in-loop.js.map +1 -0
  345. package/build/src/rules/eslint/patterns/no-boolean-var-for-if.d.ts +11 -0
  346. package/build/src/rules/eslint/patterns/no-boolean-var-for-if.d.ts.map +1 -0
  347. package/build/src/rules/eslint/patterns/no-boolean-var-for-if.js +100 -0
  348. package/build/src/rules/eslint/patterns/no-boolean-var-for-if.js.map +1 -0
  349. package/build/src/rules/eslint/patterns/no-bracket-assignment.d.ts +11 -0
  350. package/build/src/rules/eslint/patterns/no-bracket-assignment.d.ts.map +1 -0
  351. package/build/src/rules/eslint/patterns/no-bracket-assignment.js +69 -0
  352. package/build/src/rules/eslint/patterns/no-bracket-assignment.js.map +1 -0
  353. package/build/src/rules/eslint/patterns/no-bracket-method-call.d.ts +12 -0
  354. package/build/src/rules/eslint/patterns/no-bracket-method-call.d.ts.map +1 -0
  355. package/build/src/rules/eslint/patterns/no-bracket-method-call.js +86 -0
  356. package/build/src/rules/eslint/patterns/no-bracket-method-call.js.map +1 -0
  357. package/build/src/rules/eslint/patterns/no-template-curly-in-string.d.ts +11 -0
  358. package/build/src/rules/eslint/patterns/no-template-curly-in-string.d.ts.map +1 -0
  359. package/build/src/rules/eslint/patterns/no-template-curly-in-string.js +77 -0
  360. package/build/src/rules/eslint/patterns/no-template-curly-in-string.js.map +1 -0
  361. package/build/src/rules/eslint/patterns/no-use-before-define.d.ts +15 -0
  362. package/build/src/rules/eslint/patterns/no-use-before-define.d.ts.map +1 -0
  363. package/build/src/rules/eslint/patterns/no-use-before-define.js +148 -0
  364. package/build/src/rules/eslint/patterns/no-use-before-define.js.map +1 -0
  365. package/build/src/rules/eslint/regex/no-regex-literal-flags.d.ts +11 -0
  366. package/build/src/rules/eslint/regex/no-regex-literal-flags.d.ts.map +1 -0
  367. package/build/src/rules/eslint/regex/no-regex-literal-flags.js +55 -0
  368. package/build/src/rules/eslint/regex/no-regex-literal-flags.js.map +1 -0
  369. package/build/src/rules/eslint/regex/no-regex-literals.d.ts +12 -0
  370. package/build/src/rules/eslint/regex/no-regex-literals.d.ts.map +1 -0
  371. package/build/src/rules/eslint/regex/no-regex-literals.js +72 -0
  372. package/build/src/rules/eslint/regex/no-regex-literals.js.map +1 -0
  373. package/build/src/rules/eslint/safety/no-script-url.d.ts +12 -0
  374. package/build/src/rules/eslint/safety/no-script-url.d.ts.map +1 -0
  375. package/build/src/rules/eslint/safety/no-script-url.js +71 -0
  376. package/build/src/rules/eslint/safety/no-script-url.js.map +1 -0
  377. package/build/src/rules/eslint/syntax/no-destructuring.d.ts +21 -0
  378. package/build/src/rules/eslint/syntax/no-destructuring.d.ts.map +1 -0
  379. package/build/src/rules/eslint/syntax/no-destructuring.js +219 -0
  380. package/build/src/rules/eslint/syntax/no-destructuring.js.map +1 -0
  381. package/build/src/rules/eslint/syntax/no-numeric-literals.d.ts +14 -0
  382. package/build/src/rules/eslint/syntax/no-numeric-literals.d.ts.map +1 -0
  383. package/build/src/rules/eslint/syntax/no-numeric-literals.js +108 -0
  384. package/build/src/rules/eslint/syntax/no-numeric-literals.js.map +1 -0
  385. package/build/src/rules/eslint/syntax/no-optional-chaining.d.ts +11 -0
  386. package/build/src/rules/eslint/syntax/no-optional-chaining.d.ts.map +1 -0
  387. package/build/src/rules/eslint/syntax/no-optional-chaining.js +51 -0
  388. package/build/src/rules/eslint/syntax/no-optional-chaining.js.map +1 -0
  389. package/build/src/rules/eslint/syntax/no-rest-params.d.ts +15 -0
  390. package/build/src/rules/eslint/syntax/no-rest-params.d.ts.map +1 -0
  391. package/build/src/rules/eslint/syntax/no-rest-params.js +158 -0
  392. package/build/src/rules/eslint/syntax/no-rest-params.js.map +1 -0
  393. package/build/src/rules/eslint/typescript/no-catch-unknown-annotation.d.ts +11 -0
  394. package/build/src/rules/eslint/typescript/no-catch-unknown-annotation.d.ts.map +1 -0
  395. package/build/src/rules/eslint/typescript/no-catch-unknown-annotation.js +65 -0
  396. package/build/src/rules/eslint/typescript/no-catch-unknown-annotation.js.map +1 -0
  397. package/build/src/rules/eslint/typescript/no-explicit-any.d.ts +11 -0
  398. package/build/src/rules/eslint/typescript/no-explicit-any.d.ts.map +1 -0
  399. package/build/src/rules/eslint/typescript/no-explicit-any.js +51 -0
  400. package/build/src/rules/eslint/typescript/no-explicit-any.js.map +1 -0
  401. package/build/src/rules/eslint/typescript/no-inline-type-annotation.d.ts +16 -0
  402. package/build/src/rules/eslint/typescript/no-inline-type-annotation.d.ts.map +1 -0
  403. package/build/src/rules/eslint/typescript/no-inline-type-annotation.js +186 -0
  404. package/build/src/rules/eslint/typescript/no-inline-type-annotation.js.map +1 -0
  405. package/build/src/rules/eslint/typescript/no-shared-type-import.d.ts +12 -0
  406. package/build/src/rules/eslint/typescript/no-shared-type-import.d.ts.map +1 -0
  407. package/build/src/rules/eslint/typescript/no-shared-type-import.js +71 -0
  408. package/build/src/rules/eslint/typescript/no-shared-type-import.js.map +1 -0
  409. package/build/src/rules/eslint/typescript/require-bracket-property-access.d.ts +12 -0
  410. package/build/src/rules/eslint/typescript/require-bracket-property-access.d.ts.map +1 -0
  411. package/build/src/rules/eslint/typescript/require-bracket-property-access.js +115 -0
  412. package/build/src/rules/eslint/typescript/require-bracket-property-access.js.map +1 -0
  413. package/build/src/rules/eslint/typescript/require-type-naming.d.ts +12 -0
  414. package/build/src/rules/eslint/typescript/require-type-naming.d.ts.map +1 -0
  415. package/build/src/rules/eslint/typescript/require-type-naming.js +98 -0
  416. package/build/src/rules/eslint/typescript/require-type-naming.js.map +1 -0
  417. package/build/src/toolkit/bootstrap.d.ts +13 -0
  418. package/build/src/toolkit/bootstrap.d.ts.map +1 -0
  419. package/build/src/toolkit/bootstrap.js +175 -0
  420. package/build/src/toolkit/bootstrap.js.map +1 -0
  421. package/build/src/toolkit/cli-header.d.ts +5 -4
  422. package/build/src/toolkit/cli-header.d.ts.map +1 -1
  423. package/build/src/toolkit/cli-header.js +77 -63
  424. package/build/src/toolkit/cli-header.js.map +1 -1
  425. package/build/src/toolkit/index.d.ts +1 -0
  426. package/build/src/toolkit/index.d.ts.map +1 -1
  427. package/build/src/toolkit/index.js +1 -0
  428. package/build/src/toolkit/index.js.map +1 -1
  429. package/build/src/toolkit/logger.d.ts +9 -8
  430. package/build/src/toolkit/logger.d.ts.map +1 -1
  431. package/build/src/toolkit/logger.js +51 -32
  432. package/build/src/toolkit/logger.js.map +1 -1
  433. package/build/src/toolkit/markdown-table.d.ts +6 -5
  434. package/build/src/toolkit/markdown-table.d.ts.map +1 -1
  435. package/build/src/toolkit/markdown-table.js +36 -20
  436. package/build/src/toolkit/markdown-table.js.map +1 -1
  437. package/build/src/types/api/node-releases.d.ts +51 -0
  438. package/build/src/types/api/spdx-licenses.d.ts +41 -0
  439. package/build/src/types/cli/generate/github/funding.d.ts +59 -0
  440. package/build/src/types/cli/generate/github/issue-template.d.ts +142 -0
  441. package/build/src/types/cli/generate/github/workflows.d.ts +336 -0
  442. package/build/src/types/cli/generate/must-haves/agent-conventions.d.ts +43 -0
  443. package/build/src/types/cli/generate/must-haves/dotenv.d.ts +414 -0
  444. package/build/src/types/cli/generate/must-haves/editorconfig.d.ts +33 -0
  445. package/build/src/types/cli/generate/must-haves/gitignore.d.ts +344 -0
  446. package/build/src/types/cli/generate/must-haves/license.d.ts +72 -0
  447. package/build/src/types/cli/generate/must-haves/read-me.d.ts +175 -0
  448. package/build/src/types/cli/index.d.ts +182 -0
  449. package/build/src/types/cli/recipe/index.d.ts +36 -0
  450. package/build/src/types/cli/recipe/package-json/cleanup.d.ts +125 -0
  451. package/build/src/types/cli/recipe/package-json/normalize-artifacts.d.ts +104 -0
  452. package/build/src/types/cli/recipe/package-json/normalize-bundler.d.ts +78 -0
  453. package/build/src/types/cli/recipe/package-json/normalize-dependencies.d.ts +150 -0
  454. package/build/src/types/cli/recipe/package-json/normalize-modules.d.ts +76 -0
  455. package/build/src/types/cli/recipe/package-json/normalize-tooling.d.ts +89 -0
  456. package/build/src/types/cli/recipe/package-json/sync-environment.d.ts +140 -0
  457. package/build/src/types/cli/recipe/package-json/sync-identity.d.ts +107 -0
  458. package/build/src/types/cli/recipe/package-json/sync-ownership.d.ts +152 -0
  459. package/build/src/types/cli/scaffold/app/expressjs.d.ts +21 -0
  460. package/build/src/types/cli/scaffold/app/nextjs.d.ts +21 -0
  461. package/build/src/types/cli/scaffold/app/vite.d.ts +21 -0
  462. package/build/src/types/cli/scaffold/app/workers.d.ts +21 -0
  463. package/build/src/types/cli/scaffold/docs/docusaurus.d.ts +21 -0
  464. package/build/src/types/cli/scaffold/starter/base.d.ts +57 -0
  465. package/build/src/types/cli/utility/changelog.d.ts +381 -0
  466. package/build/src/types/cli/utility/initialize.d.ts +1185 -0
  467. package/build/src/types/cli/utility/run-recipes.d.ts +25 -0
  468. package/build/src/types/cli/utility/run-scripts.d.ts +133 -0
  469. package/build/src/types/cli/utility/transpile.d.ts +90 -0
  470. package/build/src/types/cli/utility/type-check.d.ts +88 -0
  471. package/build/src/types/cli/utility/version.d.ts +286 -0
  472. package/build/src/types/fetch-response.d.ts +12 -0
  473. package/build/src/types/lib/item.d.ts +536 -0
  474. package/build/src/types/lib/nova-config.d.ts +421 -0
  475. package/build/src/types/lib/scaffold.d.ts +342 -0
  476. package/build/src/types/lib/utility.d.ts +486 -0
  477. package/build/src/types/lib/workflow-templates.d.ts +48 -0
  478. package/build/src/types/presets/eslint/dx-code-style.d.ts +8 -0
  479. package/build/src/types/presets/eslint/dx-ignore.d.ts +8 -0
  480. package/build/src/types/presets/eslint/fw-docusaurus.d.ts +8 -0
  481. package/build/src/types/presets/eslint/fw-expressjs.d.ts +8 -0
  482. package/build/src/types/presets/eslint/fw-nextjs.d.ts +8 -0
  483. package/build/src/types/presets/eslint/lang-javascript.d.ts +8 -0
  484. package/build/src/types/presets/eslint/lang-mdx.d.ts +8 -0
  485. package/build/src/types/presets/eslint/lang-typescript.d.ts +8 -0
  486. package/build/src/types/presets/eslint/runtime-browser.d.ts +8 -0
  487. package/build/src/types/presets/eslint/runtime-cloudflare-workers.d.ts +8 -0
  488. package/build/src/types/presets/eslint/runtime-edge.d.ts +8 -0
  489. package/build/src/types/presets/eslint/runtime-node.d.ts +8 -0
  490. package/build/src/types/presets/eslint/runtime-service-worker.d.ts +8 -0
  491. package/build/src/types/presets/eslint/runtime-web-worker.d.ts +8 -0
  492. package/build/src/types/presets/eslint/tool-vite.d.ts +8 -0
  493. package/build/src/types/rules/eslint/conventions/no-default-export-declaration.d.ts +32 -0
  494. package/build/src/types/rules/eslint/conventions/no-implicit-boolean.d.ts +72 -0
  495. package/build/src/types/rules/eslint/conventions/require-explicit-return.d.ts +73 -0
  496. package/build/src/types/rules/eslint/conventions/require-hash-private.d.ts +31 -0
  497. package/build/src/types/rules/eslint/conventions/require-kebab-case-filename.d.ts +64 -0
  498. package/build/src/types/rules/eslint/conventions/require-naming-convention.d.ts +265 -0
  499. package/build/src/types/rules/eslint/conventions/require-undefined-init.d.ts +30 -0
  500. package/build/src/types/rules/eslint/conventions/switch-case-blocks.d.ts +48 -0
  501. package/build/src/types/rules/eslint/formatting/no-complex-arrow-concise.d.ts +74 -0
  502. package/build/src/types/rules/eslint/formatting/no-multiline-strings.d.ts +104 -0
  503. package/build/src/types/rules/eslint/formatting/no-raw-text-in-code.d.ts +28 -0
  504. package/build/src/types/rules/eslint/formatting/no-ternary-in-template-literal.d.ts +26 -0
  505. package/build/src/types/rules/eslint/formatting/require-import-order.d.ts +91 -0
  506. package/build/src/types/rules/eslint/formatting/require-multiline-condition-groups.d.ts +64 -0
  507. package/build/src/types/rules/eslint/formatting/require-multiline-conditions.d.ts +52 -0
  508. package/build/src/types/rules/eslint/formatting/require-padding-lines.d.ts +212 -0
  509. package/build/src/types/rules/eslint/formatting/require-ternary-parens.d.ts +32 -0
  510. package/build/src/types/rules/eslint/jsdoc/require-jsdoc-body.d.ts +56 -0
  511. package/build/src/types/rules/eslint/jsdoc/require-jsdoc-hierarchy.d.ts +302 -0
  512. package/build/src/types/rules/eslint/jsdoc/require-jsdoc-param-alignment.d.ts +108 -0
  513. package/build/src/types/rules/eslint/jsdoc/require-jsdoc-param-name.d.ts +61 -0
  514. package/build/src/types/rules/eslint/jsdoc/require-jsdoc-private.d.ts +40 -0
  515. package/build/src/types/rules/eslint/jsdoc/require-jsdoc-since.d.ts +30 -0
  516. package/build/src/types/rules/eslint/nova/no-logger-dev.d.ts +60 -0
  517. package/build/src/types/rules/eslint/patterns/no-assign-then-return.d.ts +42 -0
  518. package/build/src/types/rules/eslint/patterns/no-await-in-loop.d.ts +87 -0
  519. package/build/src/types/rules/eslint/patterns/no-boolean-var-for-if.d.ts +48 -0
  520. package/build/src/types/rules/eslint/patterns/no-bracket-assignment.d.ts +34 -0
  521. package/build/src/types/rules/eslint/patterns/no-bracket-method-call.d.ts +46 -0
  522. package/build/src/types/rules/eslint/patterns/no-template-curly-in-string.d.ts +32 -0
  523. package/build/src/types/rules/eslint/patterns/no-use-before-define.d.ts +84 -0
  524. package/build/src/types/rules/eslint/regex/no-regex-literal-flags.d.ts +26 -0
  525. package/build/src/types/rules/eslint/regex/no-regex-literals.d.ts +40 -0
  526. package/build/src/types/rules/eslint/safety/no-script-url.d.ts +37 -0
  527. package/build/src/types/rules/eslint/syntax/no-destructuring.d.ts +131 -0
  528. package/build/src/types/rules/eslint/syntax/no-numeric-literals.d.ts +57 -0
  529. package/build/src/types/rules/eslint/syntax/no-optional-chaining.d.ts +26 -0
  530. package/build/src/types/rules/eslint/syntax/no-rest-params.d.ts +78 -0
  531. package/build/src/types/rules/eslint/typescript/no-catch-unknown-annotation.d.ts +30 -0
  532. package/build/src/types/rules/eslint/typescript/no-explicit-any.d.ts +26 -0
  533. package/build/src/types/rules/eslint/typescript/no-inline-type-annotation.d.ts +94 -0
  534. package/build/src/types/rules/eslint/typescript/no-shared-type-import.d.ts +43 -0
  535. package/build/src/types/rules/eslint/typescript/require-bracket-property-access.d.ts +53 -0
  536. package/build/src/types/rules/eslint/typescript/require-type-naming.d.ts +51 -0
  537. package/build/src/types/shared.d.ts +724 -0
  538. package/build/src/types/tests/api/node-releases.test.d.ts +14 -0
  539. package/build/src/types/tests/api/spdx-licenses.test.d.ts +18 -0
  540. package/build/src/types/tests/cli/generate/github/funding.test.d.ts +26 -0
  541. package/build/src/types/tests/cli/generate/github/issue-template.test.d.ts +14 -0
  542. package/build/src/types/tests/cli/generate/github/workflows.test.d.ts +38 -0
  543. package/build/src/types/tests/cli/generate/must-haves/agent-conventions.test.d.ts +32 -0
  544. package/build/src/types/tests/cli/generate/must-haves/dotenv.test.d.ts +14 -0
  545. package/build/src/types/tests/cli/generate/must-haves/editorconfig.test.d.ts +22 -0
  546. package/build/src/types/tests/cli/generate/must-haves/gitignore.test.d.ts +14 -0
  547. package/build/src/types/tests/cli/generate/must-haves/license.test.d.ts +26 -0
  548. package/build/src/types/tests/cli/generate/must-haves/read-me.test.d.ts +26 -0
  549. package/build/src/types/tests/cli/recipe/package-json/cleanup.test.d.ts +42 -0
  550. package/build/src/types/tests/cli/recipe/package-json/normalize-artifacts.test.d.ts +32 -0
  551. package/build/src/types/tests/cli/recipe/package-json/normalize-bundler.test.d.ts +32 -0
  552. package/build/src/types/tests/cli/recipe/package-json/normalize-dependencies.test.d.ts +40 -0
  553. package/build/src/types/tests/cli/recipe/package-json/normalize-modules.test.d.ts +32 -0
  554. package/build/src/types/tests/cli/recipe/package-json/normalize-tooling.test.d.ts +32 -0
  555. package/build/src/types/tests/cli/recipe/package-json/sync-environment.test.d.ts +32 -0
  556. package/build/src/types/tests/cli/recipe/package-json/sync-identity.test.d.ts +32 -0
  557. package/build/src/types/tests/cli/recipe/package-json/sync-ownership.test.d.ts +32 -0
  558. package/build/src/types/tests/cli/scaffold/app/expressjs.test.d.ts +40 -0
  559. package/build/src/types/tests/cli/scaffold/app/nextjs.test.d.ts +42 -0
  560. package/build/src/types/tests/cli/scaffold/app/vite.test.d.ts +42 -0
  561. package/build/src/types/tests/cli/scaffold/app/workers.test.d.ts +40 -0
  562. package/build/src/types/tests/cli/scaffold/docs/docusaurus.test.d.ts +40 -0
  563. package/build/src/types/tests/cli/scaffold/starter/base.test.d.ts +40 -0
  564. package/build/src/types/tests/cli/utility/changelog.test.d.ts +68 -0
  565. package/build/src/types/tests/cli/utility/initialize.test.d.ts +14 -0
  566. package/build/src/types/tests/cli/utility/run-recipes.test.d.ts +22 -0
  567. package/build/src/types/tests/cli/utility/run-scripts.test.d.ts +52 -0
  568. package/build/src/types/tests/cli/utility/transpile.test.d.ts +26 -0
  569. package/build/src/types/tests/cli/utility/type-check.test.d.ts +22 -0
  570. package/build/src/types/tests/cli/utility/version.test.d.ts +12 -0
  571. package/build/src/types/tests/lib/item.test.d.ts +88 -0
  572. package/build/src/types/tests/lib/nova-config.test.d.ts +138 -0
  573. package/build/src/types/tests/lib/regex.test.d.ts +122 -0
  574. package/build/src/types/tests/lib/scaffold.test.d.ts +26 -0
  575. package/build/src/types/tests/lib/schema.test.d.ts +36 -0
  576. package/build/src/types/tests/lib/utility.test.d.ts +324 -0
  577. package/build/src/types/tests/lib/workflow-templates.test.d.ts +77 -0
  578. package/build/src/types/tests/rules/eslint/conventions/no-default-export-declaration.test.d.ts +8 -0
  579. package/build/src/types/tests/rules/eslint/conventions/no-implicit-boolean.test.d.ts +8 -0
  580. package/build/src/types/tests/rules/eslint/conventions/require-explicit-return.test.d.ts +8 -0
  581. package/build/src/types/tests/rules/eslint/conventions/require-hash-private.test.d.ts +8 -0
  582. package/build/src/types/tests/rules/eslint/conventions/require-kebab-case-filename.test.d.ts +8 -0
  583. package/build/src/types/tests/rules/eslint/conventions/require-naming-convention.test.d.ts +8 -0
  584. package/build/src/types/tests/rules/eslint/conventions/require-undefined-init.test.d.ts +8 -0
  585. package/build/src/types/tests/rules/eslint/conventions/switch-case-blocks.test.d.ts +8 -0
  586. package/build/src/types/tests/rules/eslint/formatting/no-complex-arrow-concise.test.d.ts +8 -0
  587. package/build/src/types/tests/rules/eslint/formatting/no-multiline-strings.test.d.ts +8 -0
  588. package/build/src/types/tests/rules/eslint/formatting/no-raw-text-in-code.test.d.ts +8 -0
  589. package/build/src/types/tests/rules/eslint/formatting/no-ternary-in-template-literal.test.d.ts +8 -0
  590. package/build/src/types/tests/rules/eslint/formatting/require-import-order.test.d.ts +8 -0
  591. package/build/src/types/tests/rules/eslint/formatting/require-multiline-condition-groups.test.d.ts +8 -0
  592. package/build/src/types/tests/rules/eslint/formatting/require-multiline-conditions.test.d.ts +8 -0
  593. package/build/src/types/tests/rules/eslint/formatting/require-padding-lines.test.d.ts +8 -0
  594. package/build/src/types/tests/rules/eslint/formatting/require-ternary-parens.test.d.ts +8 -0
  595. package/build/src/types/tests/rules/eslint/jsdoc/require-jsdoc-body.test.d.ts +8 -0
  596. package/build/src/types/tests/rules/eslint/jsdoc/require-jsdoc-hierarchy.test.d.ts +8 -0
  597. package/build/src/types/tests/rules/eslint/jsdoc/require-jsdoc-param-alignment.test.d.ts +8 -0
  598. package/build/src/types/tests/rules/eslint/jsdoc/require-jsdoc-param-name.test.d.ts +8 -0
  599. package/build/src/types/tests/rules/eslint/jsdoc/require-jsdoc-private.test.d.ts +8 -0
  600. package/build/src/types/tests/rules/eslint/jsdoc/require-jsdoc-since.test.d.ts +8 -0
  601. package/build/src/types/tests/rules/eslint/nova/no-logger-dev.test.d.ts +8 -0
  602. package/build/src/types/tests/rules/eslint/patterns/no-assign-then-return.test.d.ts +8 -0
  603. package/build/src/types/tests/rules/eslint/patterns/no-await-in-loop.test.d.ts +8 -0
  604. package/build/src/types/tests/rules/eslint/patterns/no-boolean-var-for-if.test.d.ts +8 -0
  605. package/build/src/types/tests/rules/eslint/patterns/no-bracket-assignment.test.d.ts +8 -0
  606. package/build/src/types/tests/rules/eslint/patterns/no-bracket-method-call.test.d.ts +8 -0
  607. package/build/src/types/tests/rules/eslint/patterns/no-template-curly-in-string.test.d.ts +8 -0
  608. package/build/src/types/tests/rules/eslint/patterns/no-use-before-define.test.d.ts +8 -0
  609. package/build/src/types/tests/rules/eslint/regex/no-regex-literal-flags.test.d.ts +8 -0
  610. package/build/src/types/tests/rules/eslint/regex/no-regex-literals.test.d.ts +8 -0
  611. package/build/src/types/tests/rules/eslint/safety/no-script-url.test.d.ts +8 -0
  612. package/build/src/types/tests/rules/eslint/syntax/no-destructuring.test.d.ts +8 -0
  613. package/build/src/types/tests/rules/eslint/syntax/no-numeric-literals.test.d.ts +8 -0
  614. package/build/src/types/tests/rules/eslint/syntax/no-optional-chaining.test.d.ts +8 -0
  615. package/build/src/types/tests/rules/eslint/syntax/no-rest-params.test.d.ts +8 -0
  616. package/build/src/types/tests/rules/eslint/typescript/no-catch-unknown-annotation.test.d.ts +8 -0
  617. package/build/src/types/tests/rules/eslint/typescript/no-explicit-any.test.d.ts +8 -0
  618. package/build/src/types/tests/rules/eslint/typescript/no-inline-type-annotation.test.d.ts +8 -0
  619. package/build/src/types/tests/rules/eslint/typescript/no-shared-type-import.test.d.ts +8 -0
  620. package/build/src/types/tests/rules/eslint/typescript/require-bracket-property-access.test.d.ts +12 -0
  621. package/build/src/types/tests/rules/eslint/typescript/require-type-naming.test.d.ts +8 -0
  622. package/build/src/types/tests/toolkit/bootstrap.test.d.ts +108 -0
  623. package/build/src/types/tests/toolkit/cli-header.test.d.ts +46 -0
  624. package/build/src/types/tests/toolkit/logger.test.d.ts +20 -0
  625. package/build/src/types/tests/toolkit/markdown-table.test.d.ts +65 -0
  626. package/build/src/types/tests/type-declarations.test.d.ts +564 -0
  627. package/build/src/types/toolkit/bootstrap.d.ts +133 -0
  628. package/build/src/types/toolkit/cli-header.d.ts +203 -0
  629. package/build/src/types/toolkit/logger.d.ts +160 -0
  630. package/build/src/types/toolkit/markdown-table.d.ts +159 -0
  631. package/build/templates/.novaignore +0 -0
  632. package/build/templates/generators/github/funding/FUNDING.yml +12 -0
  633. package/build/templates/generators/github/issue-template/BUG-REPORT.yml +86 -0
  634. package/build/templates/generators/github/issue-template/FEATURE-REQUEST.yml +61 -0
  635. package/build/templates/generators/github/issue-template/SUPPORT-REQUEST.yml +50 -0
  636. package/build/templates/generators/github/issue-template/bug-report-fields/android.yml +16 -0
  637. package/build/templates/generators/github/issue-template/bug-report-fields/apple.yml +23 -0
  638. package/build/templates/generators/github/issue-template/bug-report-fields/csharp.yml +20 -0
  639. package/build/templates/generators/github/issue-template/bug-report-fields/docker.yml +33 -0
  640. package/build/templates/generators/github/issue-template/bug-report-fields/homebridge.yml +16 -0
  641. package/build/templates/generators/github/issue-template/bug-report-fields/nodejs.yml +8 -0
  642. package/build/templates/generators/github/issue-template/bug-report-fields/pfsense.yml +8 -0
  643. package/build/templates/generators/github/issue-template/bug-report-fields/php.yml +8 -0
  644. package/build/templates/generators/github/issue-template/bug-report-fields/python.yml +8 -0
  645. package/build/templates/generators/github/issue-template/bug-report-fields/screenshots.yml +7 -0
  646. package/build/templates/generators/github/issue-template/bug-report-fields/synology.yml +8 -0
  647. package/build/templates/generators/github/issue-template/bug-report-fields/web.yml +21 -0
  648. package/build/templates/generators/github/issue-template/config.yml +1 -0
  649. package/build/templates/generators/github/issue-template/legal-agreements/bug-report.yml +8 -0
  650. package/build/templates/generators/github/issue-template/legal-agreements/feature-request.yml +8 -0
  651. package/build/templates/generators/github/issue-template/legal-agreements/support-request.yml +8 -0
  652. package/build/templates/generators/github/workflows/check-sponsor-gated-issues/base.yml +57 -0
  653. package/build/templates/generators/github/workflows/lock-inactive-issues/base.yml +43 -0
  654. package/build/templates/generators/github/workflows/lock-inactive-issues/triggers/schedule.yml +5 -0
  655. package/build/templates/generators/github/workflows/publish-to-aws-amplify-nextjs/base.yml +53 -0
  656. package/build/templates/generators/github/workflows/publish-to-aws-amplify-nextjs/triggers/push.yml +5 -0
  657. package/build/templates/generators/github/workflows/publish-to-aws-amplify-nextjs/triggers/release.yml +5 -0
  658. package/build/templates/generators/github/workflows/publish-to-cloudflare-pages-docusaurus/base.yml +62 -0
  659. package/build/templates/generators/github/workflows/publish-to-cloudflare-pages-docusaurus/triggers/push.yml +5 -0
  660. package/build/templates/generators/github/workflows/publish-to-cloudflare-pages-docusaurus/triggers/release.yml +5 -0
  661. package/build/templates/generators/github/workflows/publish-to-docker-hub/base.yml +58 -0
  662. package/build/templates/generators/github/workflows/publish-to-docker-hub/triggers/release.yml +5 -0
  663. package/build/templates/generators/github/workflows/publish-to-docker-hub/triggers/workflow-run-any.yml +7 -0
  664. package/build/templates/generators/github/workflows/publish-to-docker-hub/triggers/workflow-run-failure.yml +8 -0
  665. package/build/templates/generators/github/workflows/publish-to-docker-hub/triggers/workflow-run-success.yml +8 -0
  666. package/build/templates/generators/github/workflows/publish-to-github-packages/base.yml +108 -0
  667. package/build/templates/generators/github/workflows/publish-to-github-packages/triggers/release.yml +5 -0
  668. package/build/templates/generators/github/workflows/publish-to-github-packages/triggers/workflow-run-any.yml +7 -0
  669. package/build/templates/generators/github/workflows/publish-to-github-packages/triggers/workflow-run-failure.yml +8 -0
  670. package/build/templates/generators/github/workflows/publish-to-github-packages/triggers/workflow-run-success.yml +8 -0
  671. package/build/templates/generators/github/workflows/publish-to-github-pages-docusaurus/base.yml +79 -0
  672. package/build/templates/generators/github/workflows/publish-to-github-pages-docusaurus/triggers/push.yml +5 -0
  673. package/build/templates/generators/github/workflows/publish-to-github-pages-docusaurus/triggers/release.yml +5 -0
  674. package/build/templates/generators/github/workflows/publish-to-npm/base.yml +91 -0
  675. package/build/templates/generators/github/workflows/publish-to-npm/triggers/release.yml +5 -0
  676. package/build/templates/generators/github/workflows/publish-to-npm/triggers/workflow-run-any.yml +7 -0
  677. package/build/templates/generators/github/workflows/publish-to-npm/triggers/workflow-run-failure.yml +8 -0
  678. package/build/templates/generators/github/workflows/publish-to-npm/triggers/workflow-run-success.yml +8 -0
  679. package/build/templates/generators/must-haves/agent-conventions/.cursorrules +54 -0
  680. package/build/templates/generators/must-haves/agent-conventions/AGENTS.md +54 -0
  681. package/build/templates/generators/must-haves/agent-conventions/CLAUDE.md +54 -0
  682. package/build/templates/generators/must-haves/agent-conventions/PROJECT_RULES.md +290 -0
  683. package/build/templates/generators/must-haves/agent-conventions/VISION.md +62 -0
  684. package/build/templates/generators/must-haves/agent-conventions/conventions/csharp.md +317 -0
  685. package/build/templates/generators/must-haves/agent-conventions/conventions/css.md +188 -0
  686. package/build/templates/generators/must-haves/agent-conventions/conventions/docker.md +131 -0
  687. package/build/templates/generators/must-haves/agent-conventions/conventions/documentation.md +615 -0
  688. package/build/templates/generators/must-haves/agent-conventions/conventions/java.md +285 -0
  689. package/build/templates/generators/must-haves/agent-conventions/conventions/kotlin.md +297 -0
  690. package/build/templates/generators/must-haves/agent-conventions/conventions/php.md +257 -0
  691. package/build/templates/generators/must-haves/agent-conventions/conventions/python.md +260 -0
  692. package/build/templates/generators/must-haves/agent-conventions/conventions/shell.md +205 -0
  693. package/build/templates/generators/must-haves/agent-conventions/conventions/swift.md +312 -0
  694. package/build/templates/generators/must-haves/agent-conventions/conventions/typescript.md +1530 -0
  695. package/build/templates/generators/must-haves/agent-conventions/conventions/universal.md +202 -0
  696. package/build/templates/generators/must-haves/dotenv/.env.sample +14 -0
  697. package/build/templates/generators/must-haves/editorconfig/.editorconfig +212 -0
  698. package/build/templates/generators/must-haves/license/AGPL-3.0 +662 -0
  699. package/build/templates/generators/must-haves/license/Apache-2.0 +202 -0
  700. package/build/templates/generators/must-haves/license/BSD-2-Clause +25 -0
  701. package/build/templates/generators/must-haves/license/BSD-3-Clause +29 -0
  702. package/build/templates/generators/must-haves/license/BSL-1.0 +24 -0
  703. package/build/templates/generators/must-haves/license/CC0-1.0 +122 -0
  704. package/build/templates/generators/must-haves/license/EPL-2.0 +278 -0
  705. package/build/templates/generators/must-haves/license/GPL-2.0 +340 -0
  706. package/build/templates/generators/must-haves/license/GPL-3.0 +675 -0
  707. package/build/templates/generators/must-haves/license/LGPL-2.1 +505 -0
  708. package/build/templates/generators/must-haves/license/MIT +22 -0
  709. package/build/templates/generators/must-haves/license/MPL-2.0 +374 -0
  710. package/build/templates/generators/must-haves/license/Proprietary +22 -0
  711. package/build/templates/generators/must-haves/license/Unlicense +25 -0
  712. package/build/templates/generators/must-haves/read-me/README.md +17 -0
  713. package/build/templates/scaffold/app/express/package.json +20 -0
  714. package/build/templates/scaffold/app/express/src/index.ts +12 -0
  715. package/build/templates/scaffold/app/express/tsconfig.json +15 -0
  716. package/build/templates/scaffold/app/nextjs/next.config.mjs +4 -0
  717. package/build/templates/scaffold/app/nextjs/package.json +22 -0
  718. package/build/templates/scaffold/app/nextjs/src/app/globals.css +11 -0
  719. package/build/templates/scaffold/app/nextjs/src/app/layout.tsx +18 -0
  720. package/build/templates/scaffold/app/nextjs/src/app/page.tsx +8 -0
  721. package/build/templates/scaffold/app/nextjs/tsconfig.json +26 -0
  722. package/build/templates/scaffold/app/vite/index.html +12 -0
  723. package/build/templates/scaffold/app/vite/package.json +17 -0
  724. package/build/templates/scaffold/app/vite/src/main.ts +5 -0
  725. package/build/templates/scaffold/app/vite/tsconfig.json +16 -0
  726. package/build/templates/scaffold/app/vite/vite.config.mts +3 -0
  727. package/build/templates/scaffold/app/workers/package.json +16 -0
  728. package/build/templates/scaffold/app/workers/src/index.ts +13 -0
  729. package/build/templates/scaffold/app/workers/tsconfig.json +17 -0
  730. package/build/templates/scaffold/app/workers/wrangler.toml +3 -0
  731. package/build/templates/scaffold/docs/docusaurus/docs/intro.md +9 -0
  732. package/build/templates/scaffold/docs/docusaurus/docusaurus.config.ts +33 -0
  733. package/build/templates/scaffold/docs/docusaurus/package.json +20 -0
  734. package/build/templates/scaffold/docs/docusaurus/sidebars.ts +9 -0
  735. package/build/templates/scaffold/docs/docusaurus/static/.gitkeep +0 -0
  736. package/build/templates/scaffold/docs/docusaurus/tsconfig.json +8 -0
  737. package/package.json +38 -32
  738. package/build/eslint.config.d.ts +0 -34
  739. package/build/eslint.config.d.ts.map +0 -1
  740. package/build/eslint.config.js +0 -40
  741. package/build/eslint.config.js.map +0 -1
  742. package/build/src/cli/recipe/pin-versions.d.ts +0 -7
  743. package/build/src/cli/recipe/pin-versions.d.ts.map +0 -1
  744. package/build/src/cli/recipe/pin-versions.js +0 -145
  745. package/build/src/cli/recipe/pin-versions.js.map +0 -1
  746. package/build/src/cli/recipe/sync-lts-engines.d.ts +0 -6
  747. package/build/src/cli/recipe/sync-lts-engines.d.ts.map +0 -1
  748. package/build/src/cli/recipe/sync-lts-engines.js +0 -118
  749. package/build/src/cli/recipe/sync-lts-engines.js.map +0 -1
  750. package/build/src/cli/recipe/sync-packages.d.ts +0 -18
  751. package/build/src/cli/recipe/sync-packages.d.ts.map +0 -1
  752. package/build/src/cli/recipe/sync-packages.js +0 -1212
  753. package/build/src/cli/recipe/sync-packages.js.map +0 -1
  754. package/build/src/presets/eslint/dx-code-style.d.mts +0 -4
  755. package/build/src/presets/eslint/dx-code-style.d.mts.map +0 -1
  756. package/build/src/presets/eslint/dx-code-style.mjs +0 -211
  757. package/build/src/presets/eslint/dx-code-style.mjs.map +0 -1
  758. package/build/src/presets/eslint/dx-ignore.d.mts +0 -4
  759. package/build/src/presets/eslint/dx-ignore.d.mts.map +0 -1
  760. package/build/src/presets/eslint/dx-ignore.mjs.map +0 -1
  761. package/build/src/presets/eslint/env-browser.d.mts +0 -4
  762. package/build/src/presets/eslint/env-browser.d.mts.map +0 -1
  763. package/build/src/presets/eslint/env-browser.mjs +0 -3
  764. package/build/src/presets/eslint/env-browser.mjs.map +0 -1
  765. package/build/src/presets/eslint/env-edge.d.mts +0 -4
  766. package/build/src/presets/eslint/env-edge.d.mts.map +0 -1
  767. package/build/src/presets/eslint/env-edge.mjs.map +0 -1
  768. package/build/src/presets/eslint/env-node.d.mts +0 -4
  769. package/build/src/presets/eslint/env-node.d.mts.map +0 -1
  770. package/build/src/presets/eslint/env-node.mjs.map +0 -1
  771. package/build/src/presets/eslint/env-service-worker.d.mts +0 -4
  772. package/build/src/presets/eslint/env-service-worker.d.mts.map +0 -1
  773. package/build/src/presets/eslint/env-service-worker.mjs +0 -3
  774. package/build/src/presets/eslint/env-service-worker.mjs.map +0 -1
  775. package/build/src/presets/eslint/env-web-worker.d.mts +0 -4
  776. package/build/src/presets/eslint/env-web-worker.d.mts.map +0 -1
  777. package/build/src/presets/eslint/env-web-worker.mjs.map +0 -1
  778. package/build/src/presets/eslint/fw-docusaurus.d.mts +0 -4
  779. package/build/src/presets/eslint/fw-docusaurus.d.mts.map +0 -1
  780. package/build/src/presets/eslint/fw-docusaurus.mjs +0 -10
  781. package/build/src/presets/eslint/fw-docusaurus.mjs.map +0 -1
  782. package/build/src/presets/eslint/fw-expressjs.d.mts +0 -4
  783. package/build/src/presets/eslint/fw-expressjs.d.mts.map +0 -1
  784. package/build/src/presets/eslint/fw-expressjs.mjs.map +0 -1
  785. package/build/src/presets/eslint/fw-nextjs.d.mts +0 -4
  786. package/build/src/presets/eslint/fw-nextjs.d.mts.map +0 -1
  787. package/build/src/presets/eslint/fw-nextjs.mjs.map +0 -1
  788. package/build/src/presets/eslint/index.d.mts +0 -16
  789. package/build/src/presets/eslint/index.d.mts.map +0 -1
  790. package/build/src/presets/eslint/index.mjs +0 -16
  791. package/build/src/presets/eslint/index.mjs.map +0 -1
  792. package/build/src/presets/eslint/lang-javascript.d.mts +0 -4
  793. package/build/src/presets/eslint/lang-javascript.d.mts.map +0 -1
  794. package/build/src/presets/eslint/lang-javascript.mjs +0 -3
  795. package/build/src/presets/eslint/lang-javascript.mjs.map +0 -1
  796. package/build/src/presets/eslint/lang-mdx.d.mts +0 -4
  797. package/build/src/presets/eslint/lang-mdx.d.mts.map +0 -1
  798. package/build/src/presets/eslint/lang-mdx.mjs.map +0 -1
  799. package/build/src/presets/eslint/lang-typescript.d.mts +0 -4
  800. package/build/src/presets/eslint/lang-typescript.d.mts.map +0 -1
  801. package/build/src/presets/eslint/lang-typescript.mjs +0 -88
  802. package/build/src/presets/eslint/lang-typescript.mjs.map +0 -1
  803. package/build/src/presets/eslint/platform-cloudflare-workers.d.mts +0 -4
  804. package/build/src/presets/eslint/platform-cloudflare-workers.d.mts.map +0 -1
  805. package/build/src/presets/eslint/platform-cloudflare-workers.mjs +0 -8
  806. package/build/src/presets/eslint/platform-cloudflare-workers.mjs.map +0 -1
  807. package/build/src/presets/eslint/tool-vite.d.mts +0 -4
  808. package/build/src/presets/eslint/tool-vite.d.mts.map +0 -1
  809. package/build/src/presets/eslint/tool-vite.mjs.map +0 -1
  810. package/build/src/presets/tsconfig/env-web-worker.json +0 -12
  811. package/build/src/rules/eslint/no-logger-dev.d.ts +0 -6
  812. package/build/src/rules/eslint/no-logger-dev.d.ts.map +0 -1
  813. package/build/src/rules/eslint/no-logger-dev.js +0 -88
  814. package/build/src/rules/eslint/no-logger-dev.js.map +0 -1
  815. package/build/src/rules/eslint/no-raw-text-in-code.d.ts +0 -6
  816. package/build/src/rules/eslint/no-raw-text-in-code.d.ts.map +0 -1
  817. package/build/src/rules/eslint/no-raw-text-in-code.js +0 -34
  818. package/build/src/rules/eslint/no-raw-text-in-code.js.map +0 -1
  819. package/build/src/rules/eslint/no-regex-literal-flags.d.ts +0 -6
  820. package/build/src/rules/eslint/no-regex-literal-flags.d.ts.map +0 -1
  821. package/build/src/rules/eslint/no-regex-literal-flags.js +0 -30
  822. package/build/src/rules/eslint/no-regex-literal-flags.js.map +0 -1
  823. package/build/src/rules/eslint/no-regex-literals.d.ts +0 -9
  824. package/build/src/rules/eslint/no-regex-literals.d.ts.map +0 -1
  825. package/build/src/rules/eslint/no-regex-literals.js +0 -55
  826. package/build/src/rules/eslint/no-regex-literals.js.map +0 -1
  827. package/build/src/rules/eslint/switch-case-blocks.d.ts +0 -6
  828. package/build/src/rules/eslint/switch-case-blocks.d.ts.map +0 -1
  829. package/build/src/rules/eslint/switch-case-blocks.js +0 -36
  830. package/build/src/rules/eslint/switch-case-blocks.js.map +0 -1
  831. package/build/src/tests/api/node-releases.test.d.ts +0 -2
  832. package/build/src/tests/api/node-releases.test.d.ts.map +0 -1
  833. package/build/src/tests/api/node-releases.test.js +0 -193
  834. package/build/src/tests/api/node-releases.test.js.map +0 -1
  835. package/build/src/tests/api/spdx-licenses.test.d.ts +0 -2
  836. package/build/src/tests/api/spdx-licenses.test.d.ts.map +0 -1
  837. package/build/src/tests/api/spdx-licenses.test.js +0 -91
  838. package/build/src/tests/api/spdx-licenses.test.js.map +0 -1
  839. package/build/src/tests/cli/recipe/pin-versions.test.d.ts +0 -2
  840. package/build/src/tests/cli/recipe/pin-versions.test.d.ts.map +0 -1
  841. package/build/src/tests/cli/recipe/pin-versions.test.js +0 -197
  842. package/build/src/tests/cli/recipe/pin-versions.test.js.map +0 -1
  843. package/build/src/tests/cli/recipe/sync-lts-engines.test.d.ts +0 -2
  844. package/build/src/tests/cli/recipe/sync-lts-engines.test.d.ts.map +0 -1
  845. package/build/src/tests/cli/recipe/sync-lts-engines.test.js +0 -131
  846. package/build/src/tests/cli/recipe/sync-lts-engines.test.js.map +0 -1
  847. package/build/src/tests/lib/item.test.d.ts +0 -2
  848. package/build/src/tests/lib/item.test.d.ts.map +0 -1
  849. package/build/src/tests/lib/item.test.js +0 -142
  850. package/build/src/tests/lib/item.test.js.map +0 -1
  851. package/build/src/tests/lib/nova-config.test.d.ts +0 -2
  852. package/build/src/tests/lib/nova-config.test.d.ts.map +0 -1
  853. package/build/src/tests/lib/nova-config.test.js +0 -489
  854. package/build/src/tests/lib/nova-config.test.js.map +0 -1
  855. package/build/src/tests/lib/regex.test.d.ts +0 -2
  856. package/build/src/tests/lib/regex.test.d.ts.map +0 -1
  857. package/build/src/tests/lib/regex.test.js +0 -342
  858. package/build/src/tests/lib/regex.test.js.map +0 -1
  859. package/build/src/tests/lib/schema.test.d.ts +0 -2
  860. package/build/src/tests/lib/schema.test.d.ts.map +0 -1
  861. package/build/src/tests/lib/schema.test.js +0 -260
  862. package/build/src/tests/lib/schema.test.js.map +0 -1
  863. package/build/src/tests/lib/utility.test.d.ts +0 -2
  864. package/build/src/tests/lib/utility.test.d.ts.map +0 -1
  865. package/build/src/tests/lib/utility.test.js +0 -744
  866. package/build/src/tests/lib/utility.test.js.map +0 -1
  867. package/build/src/tests/rules/eslint/no-logger-dev.test.d.ts +0 -2
  868. package/build/src/tests/rules/eslint/no-logger-dev.test.d.ts.map +0 -1
  869. package/build/src/tests/rules/eslint/no-logger-dev.test.js +0 -55
  870. package/build/src/tests/rules/eslint/no-logger-dev.test.js.map +0 -1
  871. package/build/src/tests/rules/eslint/no-raw-text-in-code.test.d.ts +0 -2
  872. package/build/src/tests/rules/eslint/no-raw-text-in-code.test.d.ts.map +0 -1
  873. package/build/src/tests/rules/eslint/no-raw-text-in-code.test.js +0 -47
  874. package/build/src/tests/rules/eslint/no-raw-text-in-code.test.js.map +0 -1
  875. package/build/src/tests/rules/eslint/no-regex-literal-flags.test.d.ts +0 -2
  876. package/build/src/tests/rules/eslint/no-regex-literal-flags.test.d.ts.map +0 -1
  877. package/build/src/tests/rules/eslint/no-regex-literal-flags.test.js +0 -47
  878. package/build/src/tests/rules/eslint/no-regex-literal-flags.test.js.map +0 -1
  879. package/build/src/tests/rules/eslint/no-regex-literals.test.d.ts +0 -2
  880. package/build/src/tests/rules/eslint/no-regex-literals.test.d.ts.map +0 -1
  881. package/build/src/tests/rules/eslint/no-regex-literals.test.js +0 -49
  882. package/build/src/tests/rules/eslint/no-regex-literals.test.js.map +0 -1
  883. package/build/src/tests/rules/eslint/switch-case-blocks.test.d.ts +0 -2
  884. package/build/src/tests/rules/eslint/switch-case-blocks.test.d.ts.map +0 -1
  885. package/build/src/tests/rules/eslint/switch-case-blocks.test.js +0 -43
  886. package/build/src/tests/rules/eslint/switch-case-blocks.test.js.map +0 -1
  887. package/build/src/tests/toolkit/cli-header.test.d.ts +0 -2
  888. package/build/src/tests/toolkit/cli-header.test.d.ts.map +0 -1
  889. package/build/src/tests/toolkit/cli-header.test.js +0 -143
  890. package/build/src/tests/toolkit/cli-header.test.js.map +0 -1
  891. package/build/src/tests/toolkit/logger.test.d.ts +0 -2
  892. package/build/src/tests/toolkit/logger.test.d.ts.map +0 -1
  893. package/build/src/tests/toolkit/logger.test.js +0 -96
  894. package/build/src/tests/toolkit/logger.test.js.map +0 -1
  895. package/build/src/tests/toolkit/markdown-table.test.d.ts +0 -2
  896. package/build/src/tests/toolkit/markdown-table.test.d.ts.map +0 -1
  897. package/build/src/tests/toolkit/markdown-table.test.js +0 -138
  898. package/build/src/tests/toolkit/markdown-table.test.js.map +0 -1
  899. /package/build/src/presets/tsconfig/{env-browser.json → runtime-browser.json} +0 -0
  900. /package/build/src/presets/tsconfig/{env-edge.json → runtime-edge.json} +0 -0
  901. /package/build/src/presets/tsconfig/{env-node.json → runtime-node.json} +0 -0
  902. /package/build/src/presets/tsconfig/{env-service-worker.json → runtime-service-worker.json} +0 -0
@@ -0,0 +1,285 @@
1
+ # Java Conventions
2
+
3
+ Quotes: Double (only option). Indentation: 4-space. File naming: PascalCase matching class name (e.g., `EntityRepository.java`).
4
+
5
+ ## Documentation Style
6
+
7
+ - Comment syntax: `/** */`
8
+ - Padding tag: `@since 1.0.0` (Javadoc)
9
+ - Param format: `@param name - Name.` (description matches the parameter name, capitalized, with a trailing period)
10
+ - Return format: `@return Type`
11
+
12
+ ### Example
13
+
14
+ ```java
15
+ /**
16
+ * Entity Repository.
17
+ *
18
+ * @since 1.0.0
19
+ */
20
+ public class EntityRepository {
21
+ /**
22
+ * Entity Repository - Database.
23
+ *
24
+ * @since 1.0.0
25
+ */
26
+ private final Database database;
27
+
28
+ /**
29
+ * Entity Repository - Constructor.
30
+ *
31
+ * @param database - Database.
32
+ *
33
+ * @since 1.0.0
34
+ */
35
+ public EntityRepository(Database database) { ... }
36
+
37
+ /**
38
+ * Entity Repository - Find By ID.
39
+ *
40
+ * @param id - ID.
41
+ *
42
+ * @return Entity
43
+ *
44
+ * @since 1.0.0
45
+ */
46
+ public Entity findById(UUID id) { ... }
47
+ }
48
+ ```
49
+
50
+ ## Code Style
51
+
52
+ ### Explicit Access Modifiers
53
+
54
+ All class members require explicit `public`, `private`, or `protected`. Never rely on package-private (default) access.
55
+
56
+ ```java
57
+ // BAD — package-private (implicit)
58
+ void processData(String input) { ... }
59
+
60
+ // GOOD — explicit modifier
61
+ public void processData(String input) { ... }
62
+ private void validateInput(String input) { ... }
63
+ ```
64
+
65
+ ### `final` on Local Variables
66
+
67
+ Use `final` for variables that are assigned once and never reassigned. Equivalent to `const` in TypeScript.
68
+
69
+ ```java
70
+ // GOOD — assigned once, never reassigned
71
+ final String configPath = resolve("config.json");
72
+ final String configRaw = Files.readString(Path.of(configPath));
73
+
74
+ // No final — reassigned later
75
+ String selectedCategory = null;
76
+ selectedCategory = matchedCategory;
77
+ ```
78
+
79
+ ### Method Overloads vs Generic Parameters
80
+
81
+ Prefer overloads when the return type or behavior differs per input type. A single parameter type (e.g., `Object`) is fine when the handling is identical regardless of input type.
82
+
83
+ ```java
84
+ // GOOD — overloads (different behavior per type)
85
+ private static String format(String value) {
86
+ return value.trim();
87
+ }
88
+
89
+ private static String format(int value) {
90
+ return String.valueOf(value);
91
+ }
92
+
93
+ // GOOD — single param (same handling regardless)
94
+ private static boolean validate(Object value) {
95
+ return value != null;
96
+ }
97
+ ```
98
+
99
+ ### Method Ordering
100
+
101
+ 1. Public methods first.
102
+ 2. Private methods second.
103
+
104
+ Each method separated by a blank line. No blank line after opening brace or before closing brace of the class.
105
+
106
+ ### Switch Statements — Always Block-Scoped
107
+
108
+ Every `case` and `default` uses block scoping with `{ }`. Always include a `default` case, even if there's nothing to handle.
109
+
110
+ ```java
111
+ switch (category) {
112
+ case "added": {
113
+ logger.info("New feature.");
114
+ break;
115
+ }
116
+
117
+ case "fixed": {
118
+ logger.info("Bug fix.");
119
+ break;
120
+ }
121
+
122
+ default: {
123
+ logger.warn("Unknown category.");
124
+ break;
125
+ }
126
+ }
127
+ ```
128
+
129
+ ### Explicit Null Checks — No Truthy/Falsy
130
+
131
+ Always use explicit comparisons. Prefer explicit null checks over `Optional` wrapping for simple cases.
132
+
133
+ - `== null` — not initialized / absent.
134
+ - `!= null` — present.
135
+ - `.equals()` — value comparison for objects.
136
+ - `.isEmpty()` — explicit empty check for strings and collections.
137
+
138
+ ```java
139
+ // BAD — truthy-style string check
140
+ if (name) { ... }
141
+
142
+ // GOOD — explicit checks
143
+ if (name != null) { ... }
144
+ if (!name.isEmpty()) { ... }
145
+ if (items.size() > 0) { ... }
146
+ ```
147
+
148
+ ### Stream API vs `for` Loop
149
+
150
+ - `.filter()`, `.map()`, `.findFirst()` — transforming or searching, returns a new value.
151
+ - `for` / `for-each` — side effects (logging, mutating external collections).
152
+ - `.reduce()` — acceptable, but `for-each` with a mutable accumulator is also fine.
153
+
154
+ ```java
155
+ // GOOD — stream for transformation
156
+ final List<String> names = items.stream()
157
+ .filter(item -> item.isActive())
158
+ .map(item -> item.getName())
159
+ .toList();
160
+
161
+ // GOOD — for-each for side effects
162
+ for (final Item item : items) {
163
+ logger.info(item.getName());
164
+ }
165
+ ```
166
+
167
+ ### Block Body vs Expression Body in Lambdas
168
+
169
+ - **Block body** (`-> { ... }`): When accessing properties of the param, or when multiple statements needed.
170
+ - **Expression body** (`-> expression`): When the lambda is a direct comparison or single method call.
171
+
172
+ ```java
173
+ // Block body — accessing properties, multiple operations
174
+ items.stream().map(item -> {
175
+ final String itemName = item.getName();
176
+ final String itemRole = item.getRole();
177
+
178
+ return new ItemResult(itemName, itemRole);
179
+ });
180
+
181
+ // Expression body — direct comparison
182
+ validCategories.stream().filter(
183
+ validCategory -> validCategory.equals(value)
184
+ );
185
+
186
+ // Expression body — single method call
187
+ items.stream().map(item -> item.getName());
188
+ ```
189
+
190
+ ### Descriptive Lambda Parameter Names
191
+
192
+ Derive from the collection name in singular form. Array and iterable variable names must end with a plural noun so the singular form can be derived naturally. No single-letter abbreviations.
193
+
194
+ ```java
195
+ // BAD
196
+ validCategories.stream().filter(c -> c.equals(value));
197
+
198
+ // GOOD
199
+ validCategories.stream().filter(
200
+ validCategory -> validCategory.equals(value)
201
+ );
202
+ ```
203
+
204
+ ### Variable Names Chain from Parent
205
+
206
+ When extracting properties from an object, the variable name chains from the parent variable name.
207
+
208
+ ```java
209
+ final Config workspaceConfig = workspace.getConfig();
210
+ final String workspaceConfigName = workspaceConfig.getName();
211
+ final String workspaceConfigRole = workspaceConfig.getRole();
212
+ ```
213
+
214
+ ### Comment Placement in Method Bodies
215
+
216
+ Comments describe the process/intent. Placement rules:
217
+ - Comment sits above the code block it describes.
218
+ - Blank line before the comment (except at the start of a scope).
219
+ - No comment needed on the first block if it's self-explanatory.
220
+ - No trailing comments (same-line comments after code). Exception: multi-line conditions may use inline `//` comments after each condition line to explain the check.
221
+
222
+ ### No Stacked Comments
223
+
224
+ One descriptive comment per code block. No consecutive comments without code between them.
225
+
226
+ ### Quote File Names in Comments and Log Messages
227
+
228
+ Wrap file names in double quotes inside comments and log strings (e.g., `"config.json"`, `"CHANGELOG.md"`).
229
+
230
+ ### Blank Lines between Distinct Operations
231
+
232
+ Separate method calls and different logical blocks with blank lines. Variable declarations and loops also need blank line separation.
233
+
234
+ ```java
235
+ // BAD — everything stuck together
236
+ final String configRaw = Files.readString(configPath);
237
+ final Config config = parser.parse(configRaw);
238
+ final List<Item> filtered = filterItems(config.getItems());
239
+
240
+ // GOOD — each operation gets breathing room
241
+ final String configRaw = Files.readString(configPath);
242
+
243
+ final Config config = parser.parse(configRaw);
244
+
245
+ final List<Item> filtered = filterItems(config.getItems());
246
+ ```
247
+
248
+ ### Bare Side-Effect Statements Get Their Own Visual Group
249
+
250
+ When a method call has no assignment (return value unused), separate it from surrounding assignments with a blank line.
251
+
252
+ ### Return Directly When Immediately Returned
253
+
254
+ Don't assign to an intermediate variable just to return it on the next line.
255
+
256
+ ### Extract Nested Function Calls into Variables
257
+
258
+ Don't nest function calls as arguments to other function calls. Extract into its own named variable for readability.
259
+
260
+ ### One Entry per Line in Collections
261
+
262
+ Array literals, list literals, and similar collections use one entry per line in multiline constructs.
263
+
264
+ ### Mixed Logical Conditions
265
+
266
+ When mixing `&&`/`||`, parenthesized groups go on their own lines, each condition on its own line.
267
+
268
+ ### No Multi-Line Boolean Variable Assignments for `if`
269
+
270
+ Don't extract a multi-condition boolean into a named variable just to check it once. Inline conditions directly in `if` blocks.
271
+
272
+ ### Ternary Expressions
273
+
274
+ - No nested ternaries.
275
+ - No ternaries inside string concatenation — extract to a variable first.
276
+
277
+ ### Readability — All Generated Code Must Be Human-Readable
278
+
279
+ Don't inline complex expressions into string concatenation or other expressions. Break them into named variables so each step is clear.
280
+
281
+ ### Error Handling
282
+
283
+ - **Creator** (method designer): may design a method to throw on failure — that's the API contract. Prefer unchecked exceptions (`RuntimeException` subclasses) for programming errors. Use checked exceptions only for recoverable conditions the caller must handle.
284
+ - **Consumer** (method caller): always wraps calls to throwing methods in try/catch.
285
+ - CLI entry points never throw — set the appropriate exit code with `System.exit()` and return.
@@ -0,0 +1,297 @@
1
+ # Kotlin Conventions
2
+
3
+ Quotes: Double (only option). Indentation: 4-space. File naming: PascalCase matching class name (e.g., `EntityRepository.kt`).
4
+
5
+ ## Documentation Style
6
+
7
+ - Comment syntax: `/** */`
8
+ - Padding tag: `@since 1.0.0` (KDoc)
9
+ - Param format: `@param name - Name.` (description matches the parameter name, capitalized, with a trailing period)
10
+ - Return format: `@return Type?`
11
+ - Include `@private` tag for private members.
12
+
13
+ ### Example
14
+
15
+ ```kotlin
16
+ /**
17
+ * Entity Repository.
18
+ *
19
+ * @since 1.0.0
20
+ */
21
+ class EntityRepository(
22
+ /**
23
+ * Entity Repository - Database.
24
+ *
25
+ * @since 1.0.0
26
+ */
27
+ private val database: Database,
28
+ ) {
29
+ /**
30
+ * Entity Repository - Find By ID.
31
+ *
32
+ * @param id - ID.
33
+ *
34
+ * @return Entity?
35
+ *
36
+ * @since 1.0.0
37
+ */
38
+ suspend fun findById(id: UUID): Entity? { ... }
39
+ }
40
+ ```
41
+
42
+ ## Code Style
43
+
44
+ ### Explicit Visibility Modifiers
45
+
46
+ All class members require explicit `public`, `private`, `protected`, or `internal`. Never rely on Kotlin's default `public`.
47
+
48
+ ```kotlin
49
+ // BAD — implicit public
50
+ fun processData(input: String) { ... }
51
+
52
+ // GOOD — explicit modifier
53
+ public fun processData(input: String) { ... }
54
+ private fun validateInput(input: String) { ... }
55
+ ```
56
+
57
+ ### `val` over `var`
58
+
59
+ Default to `val` (immutable). Use `var` only when reassignment is needed.
60
+
61
+ ```kotlin
62
+ // GOOD — assigned once
63
+ val configPath = resolve("config.json")
64
+ val configRaw = File(configPath).readText()
65
+
66
+ // var — reassigned later
67
+ var selectedCategory: String? = null
68
+ selectedCategory = matchedCategory
69
+ ```
70
+
71
+ ### Method Overloads vs Generic Parameters
72
+
73
+ Prefer overloads when the return type or behavior differs per input type. A single parameter type (e.g., `Any`) is fine when the handling is identical regardless of input type.
74
+
75
+ ```kotlin
76
+ // GOOD — overloads (different behavior per type)
77
+ private fun format(value: String): String {
78
+ return value.trim()
79
+ }
80
+
81
+ private fun format(value: Int): String {
82
+ return value.toString()
83
+ }
84
+
85
+ // GOOD — single param (same handling regardless)
86
+ private fun validate(value: Any?): Boolean {
87
+ return value != null
88
+ }
89
+ ```
90
+
91
+ ### Method Ordering
92
+
93
+ 1. Public methods first.
94
+ 2. Private methods second.
95
+
96
+ Each method separated by a blank line. No blank line after opening brace or before closing brace of the class.
97
+
98
+ ### Expression Functions vs Block Body
99
+
100
+ - **Expression function** (`= expression`): Only for single-expression methods that are simple and short.
101
+ - **Block body** (`{ ... }`): For anything with multiple statements or complex logic.
102
+
103
+ ```kotlin
104
+ // GOOD — expression function for simple getter
105
+ public fun isActive(): Boolean = status == Status.ACTIVE
106
+
107
+ // GOOD — block body for anything with logic
108
+ public fun findById(id: UUID): Entity? {
109
+ val entity = database.get(id)
110
+
111
+ return entity
112
+ }
113
+ ```
114
+
115
+ ### `when` Expression — Always Include `else`
116
+
117
+ Always include an `else` branch, even if there's nothing to handle. Each branch uses block scoping with `{ }`.
118
+
119
+ ```kotlin
120
+ when (category) {
121
+ "added" -> {
122
+ logger.info("New feature.")
123
+ }
124
+
125
+ "fixed" -> {
126
+ logger.info("Bug fix.")
127
+ }
128
+
129
+ else -> {
130
+ logger.warn("Unknown category.")
131
+ }
132
+ }
133
+ ```
134
+
135
+ ### Explicit Null Checks — Avoid Optional Chaining
136
+
137
+ Avoid `?.` chaining — prefer explicit null checks with early returns. Nullish coalescing (`?:`) is fine for providing defaults. Don't combine them.
138
+
139
+ ```kotlin
140
+ // BAD — optional chaining
141
+ val name = config?.name
142
+
143
+ // GOOD — explicit check
144
+ if (config == null) {
145
+ return
146
+ }
147
+
148
+ val name = config.name
149
+
150
+ // GOOD — Elvis operator for defaults
151
+ val timeout = options.timeout ?: 5000
152
+ val label = config.name ?: "default"
153
+
154
+ // BAD — chained together
155
+ val name = config?.name ?: "default"
156
+ ```
157
+
158
+ ### Scope Functions — Use Sparingly
159
+
160
+ Prefer explicit variable assignments over scope functions (`let`, `apply`, `also`, `run`, `with`). Use scope functions only when they genuinely improve readability — typically `apply` for object configuration.
161
+
162
+ ```kotlin
163
+ // GOOD — apply for builder-style configuration
164
+ val config = Config().apply {
165
+ name = "nova"
166
+ version = "1.0.0"
167
+ }
168
+
169
+ // BAD — let for simple null check (use explicit if instead)
170
+ config?.let { processConfig(it) }
171
+
172
+ // GOOD — explicit null check
173
+ if (config != null) {
174
+ processConfig(config)
175
+ }
176
+ ```
177
+
178
+ ### Named Lambda Parameters over `it`
179
+
180
+ Always name lambda parameters explicitly. Never use implicit `it`.
181
+
182
+ ```kotlin
183
+ // BAD — implicit it
184
+ items.filter { it.isActive() }
185
+
186
+ // GOOD — named parameter
187
+ items.filter { item -> item.isActive() }
188
+ ```
189
+
190
+ ### Collection Operations vs `for` Loop
191
+
192
+ - `.filter()`, `.map()`, `.find()` — transforming or searching, returns a new value.
193
+ - `for` loop — side effects (logging, mutating external collections, coroutine operations).
194
+ - `.fold()` — acceptable, but `for` with a mutable accumulator is also fine.
195
+
196
+ ### Block Body vs Expression Body in Lambdas
197
+
198
+ - **Block body** (`{ param -> ... }`): When accessing properties of the param, or when multiple statements needed.
199
+ - **Expression body** (`{ param -> expression }`): When the lambda is a direct comparison or single method call.
200
+
201
+ ```kotlin
202
+ // Block body — accessing properties, multiple operations
203
+ items.map { item ->
204
+ val itemName = item.name
205
+ val itemRole = item.role
206
+
207
+ ItemResult(title = itemName, description = itemRole)
208
+ }
209
+
210
+ // Expression body — direct comparison
211
+ validCategories.find { validCategory -> validCategory == value }
212
+
213
+ // Expression body — single property check
214
+ results.filter { result -> result.status == "fulfilled" }
215
+ ```
216
+
217
+ ### Descriptive Lambda Parameter Names
218
+
219
+ Derive from the collection name in singular form. Array and iterable variable names must end with a plural noun so the singular form can be derived naturally. No single-letter abbreviations.
220
+
221
+ ```kotlin
222
+ // BAD
223
+ validCategories.filter { c -> c == value }
224
+
225
+ // GOOD
226
+ validCategories.filter { validCategory -> validCategory == value }
227
+ ```
228
+
229
+ ### Variable Names Chain from Parent
230
+
231
+ When extracting properties from an object, the variable name chains from the parent variable name.
232
+
233
+ ```kotlin
234
+ val workspaceConfig = workspace.config
235
+ val workspaceConfigName = workspaceConfig.name
236
+ val workspaceConfigRole = workspaceConfig.role
237
+ ```
238
+
239
+ ### Comment Placement in Method Bodies
240
+
241
+ Comments describe the process/intent. Placement rules:
242
+ - Comment sits above the code block it describes.
243
+ - Blank line before the comment (except at the start of a scope).
244
+ - No comment needed on the first block if it's self-explanatory.
245
+ - No trailing comments (same-line comments after code). Exception: multi-line conditions may use inline `//` comments after each condition line to explain the check.
246
+
247
+ ### No Stacked Comments
248
+
249
+ One descriptive comment per code block. No consecutive comments without code between them.
250
+
251
+ ### Quote File Names in Comments and Log Messages
252
+
253
+ Wrap file names in double quotes inside comments and log strings (e.g., `"config.json"`, `"CHANGELOG.md"`).
254
+
255
+ ### Blank Lines between Distinct Operations
256
+
257
+ Separate method calls, suspend calls, and different logical blocks with blank lines. Variable declarations and loops also need blank line separation.
258
+
259
+ ### Bare Side-Effect Statements Get Their Own Visual Group
260
+
261
+ When a function call has no assignment (return value unused), separate it from surrounding assignments with a blank line.
262
+
263
+ ### Return Directly When Immediately Returned
264
+
265
+ Don't assign to an intermediate variable just to return it on the next line.
266
+
267
+ ### Extract Nested Function Calls into Variables
268
+
269
+ Don't nest function calls as arguments to other function calls. Extract into its own named variable for readability.
270
+
271
+ ### One Entry per Line in Collections
272
+
273
+ List literals, map literals, and similar collections use one entry per line in multiline constructs.
274
+
275
+ ### Mixed Logical Conditions
276
+
277
+ When mixing `&&`/`||`, parenthesized groups go on their own lines, each condition on its own line.
278
+
279
+ ### No Multi-Line Boolean Variable Assignments for `if`
280
+
281
+ Don't extract a multi-condition boolean into a named variable just to check it once. Inline conditions directly in `if` blocks.
282
+
283
+ ### Ternary Expressions
284
+
285
+ Kotlin uses `if`/`else` expressions instead of ternary. Same rules apply:
286
+ - No nested `if`/`else` expression chains.
287
+ - No `if`/`else` expressions inside string templates — extract to a variable first.
288
+
289
+ ### Readability — All Generated Code Must Be Human-Readable
290
+
291
+ Don't inline complex expressions into string templates or other expressions. Break them into named variables so each step is clear.
292
+
293
+ ### Error Handling
294
+
295
+ - **Creator** (function designer): may design a function to throw on failure — that's the API contract.
296
+ - **Consumer** (function caller): always wraps calls to throwing functions in try/catch.
297
+ - CLI entry points never throw — set the appropriate exit code with `exitProcess()` and return.