@cbnventures/nova 0.14.0 → 0.15.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 (969) hide show
  1. package/README.md +48 -0
  2. package/bin/nova.mjs +16 -0
  3. package/build/package.json +33 -23
  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 +490 -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 +439 -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 +298 -100
  49. package/build/src/cli/index.js.map +1 -1
  50. package/build/src/cli/recipe/index.d.ts +2 -2
  51. package/build/src/cli/recipe/index.d.ts.map +1 -1
  52. package/build/src/cli/recipe/index.js +19 -19
  53. package/build/src/cli/recipe/index.js.map +1 -1
  54. package/build/src/cli/recipe/package-json/cleanup.d.ts +3 -3
  55. package/build/src/cli/recipe/package-json/cleanup.d.ts.map +1 -1
  56. package/build/src/cli/recipe/package-json/cleanup.js +59 -50
  57. package/build/src/cli/recipe/package-json/cleanup.js.map +1 -1
  58. package/build/src/cli/recipe/package-json/normalize-artifacts.d.ts +3 -3
  59. package/build/src/cli/recipe/package-json/normalize-artifacts.d.ts.map +1 -1
  60. package/build/src/cli/recipe/package-json/normalize-artifacts.js +120 -112
  61. package/build/src/cli/recipe/package-json/normalize-artifacts.js.map +1 -1
  62. package/build/src/cli/recipe/package-json/normalize-bundler.d.ts +3 -3
  63. package/build/src/cli/recipe/package-json/normalize-bundler.d.ts.map +1 -1
  64. package/build/src/cli/recipe/package-json/normalize-bundler.js +36 -35
  65. package/build/src/cli/recipe/package-json/normalize-bundler.js.map +1 -1
  66. package/build/src/cli/recipe/package-json/normalize-dependencies.d.ts +3 -3
  67. package/build/src/cli/recipe/package-json/normalize-dependencies.d.ts.map +1 -1
  68. package/build/src/cli/recipe/package-json/normalize-dependencies.js +70 -64
  69. package/build/src/cli/recipe/package-json/normalize-dependencies.js.map +1 -1
  70. package/build/src/cli/recipe/package-json/normalize-modules.d.ts +3 -3
  71. package/build/src/cli/recipe/package-json/normalize-modules.d.ts.map +1 -1
  72. package/build/src/cli/recipe/package-json/normalize-modules.js +156 -142
  73. package/build/src/cli/recipe/package-json/normalize-modules.js.map +1 -1
  74. package/build/src/cli/recipe/package-json/normalize-tooling.d.ts +3 -3
  75. package/build/src/cli/recipe/package-json/normalize-tooling.d.ts.map +1 -1
  76. package/build/src/cli/recipe/package-json/normalize-tooling.js +52 -57
  77. package/build/src/cli/recipe/package-json/normalize-tooling.js.map +1 -1
  78. package/build/src/cli/recipe/package-json/sync-environment.d.ts +3 -3
  79. package/build/src/cli/recipe/package-json/sync-environment.d.ts.map +1 -1
  80. package/build/src/cli/recipe/package-json/sync-environment.js +94 -97
  81. package/build/src/cli/recipe/package-json/sync-environment.js.map +1 -1
  82. package/build/src/cli/recipe/package-json/sync-identity.d.ts +3 -3
  83. package/build/src/cli/recipe/package-json/sync-identity.d.ts.map +1 -1
  84. package/build/src/cli/recipe/package-json/sync-identity.js +67 -62
  85. package/build/src/cli/recipe/package-json/sync-identity.js.map +1 -1
  86. package/build/src/cli/recipe/package-json/sync-ownership.d.ts +3 -3
  87. package/build/src/cli/recipe/package-json/sync-ownership.d.ts.map +1 -1
  88. package/build/src/cli/recipe/package-json/sync-ownership.js +106 -106
  89. package/build/src/cli/recipe/package-json/sync-ownership.js.map +1 -1
  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 +206 -172
  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 +990 -265
  121. package/build/src/cli/utility/initialize.js.map +1 -1
  122. package/build/src/cli/utility/run-recipes.d.ts +3 -3
  123. package/build/src/cli/utility/run-recipes.d.ts.map +1 -1
  124. package/build/src/cli/utility/run-recipes.js +15 -14
  125. package/build/src/cli/utility/run-recipes.js.map +1 -1
  126. package/build/src/cli/utility/run-scripts.d.ts +4 -4
  127. package/build/src/cli/utility/run-scripts.d.ts.map +1 -1
  128. package/build/src/cli/utility/run-scripts.js +167 -70
  129. package/build/src/cli/utility/run-scripts.js.map +1 -1
  130. package/build/src/cli/utility/transpile.d.ts +3 -3
  131. package/build/src/cli/utility/transpile.d.ts.map +1 -1
  132. package/build/src/cli/utility/transpile.js +24 -19
  133. package/build/src/cli/utility/transpile.js.map +1 -1
  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 +24 -19
  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 -29
  143. package/build/src/lib/item.d.ts.map +1 -1
  144. package/build/src/lib/item.js +106 -43
  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 +217 -59
  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 +542 -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 +173 -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 +9 -4
  278. package/build/src/rules/eslint/formatting/no-raw-text-in-code.d.ts.map +1 -1
  279. package/build/src/rules/eslint/formatting/no-raw-text-in-code.js +53 -30
  280. package/build/src/rules/eslint/formatting/no-raw-text-in-code.js.map +1 -1
  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 +23 -11
  298. package/build/src/rules/eslint/formatting/require-padding-lines.d.ts.map +1 -1
  299. package/build/src/rules/eslint/formatting/require-padding-lines.js +291 -155
  300. package/build/src/rules/eslint/formatting/require-padding-lines.js.map +1 -1
  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 -14
  306. package/build/src/rules/eslint/index.d.ts.map +1 -1
  307. package/build/src/rules/eslint/index.js +44 -14
  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 +11 -4
  334. package/build/src/rules/eslint/nova/no-logger-dev.d.ts.map +1 -1
  335. package/build/src/rules/eslint/nova/no-logger-dev.js +104 -82
  336. package/build/src/rules/eslint/nova/no-logger-dev.js.map +1 -1
  337. package/build/src/rules/eslint/patterns/no-assign-then-return.d.ts +9 -4
  338. package/build/src/rules/eslint/patterns/no-assign-then-return.d.ts.map +1 -1
  339. package/build/src/rules/eslint/patterns/no-assign-then-return.js +92 -51
  340. package/build/src/rules/eslint/patterns/no-assign-then-return.js.map +1 -1
  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 +9 -4
  350. package/build/src/rules/eslint/patterns/no-bracket-assignment.d.ts.map +1 -1
  351. package/build/src/rules/eslint/patterns/no-bracket-assignment.js +60 -22
  352. package/build/src/rules/eslint/patterns/no-bracket-assignment.js.map +1 -1
  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 +9 -4
  366. package/build/src/rules/eslint/regex/no-regex-literal-flags.d.ts.map +1 -1
  367. package/build/src/rules/eslint/regex/no-regex-literal-flags.js +51 -26
  368. package/build/src/rules/eslint/regex/no-regex-literal-flags.js.map +1 -1
  369. package/build/src/rules/eslint/regex/no-regex-literals.d.ts +10 -7
  370. package/build/src/rules/eslint/regex/no-regex-literals.d.ts.map +1 -1
  371. package/build/src/rules/eslint/regex/no-regex-literals.js +62 -45
  372. package/build/src/rules/eslint/regex/no-regex-literals.js.map +1 -1
  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 +9 -4
  394. package/build/src/rules/eslint/typescript/no-catch-unknown-annotation.d.ts.map +1 -1
  395. package/build/src/rules/eslint/typescript/no-catch-unknown-annotation.js +61 -34
  396. package/build/src/rules/eslint/typescript/no-catch-unknown-annotation.js.map +1 -1
  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 +14 -4
  402. package/build/src/rules/eslint/typescript/no-inline-type-annotation.d.ts.map +1 -1
  403. package/build/src/rules/eslint/typescript/no-inline-type-annotation.js +180 -30
  404. package/build/src/rules/eslint/typescript/no-inline-type-annotation.js.map +1 -1
  405. package/build/src/rules/eslint/typescript/no-shared-type-import.d.ts +10 -7
  406. package/build/src/rules/eslint/typescript/no-shared-type-import.d.ts.map +1 -1
  407. package/build/src/rules/eslint/typescript/no-shared-type-import.js +65 -51
  408. package/build/src/rules/eslint/typescript/no-shared-type-import.js.map +1 -1
  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 +76 -62
  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 +338 -0
  442. package/build/src/types/cli/generate/must-haves/agent-conventions.d.ts +45 -0
  443. package/build/src/types/cli/generate/must-haves/dotenv.d.ts +421 -0
  444. package/build/src/types/cli/generate/must-haves/editorconfig.d.ts +35 -0
  445. package/build/src/types/cli/generate/must-haves/gitignore.d.ts +346 -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 +176 -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 +344 -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 +731 -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/generators/github/funding/FUNDING.yml +12 -0
  632. package/build/templates/generators/github/issue-template/BUG-REPORT.yml +86 -0
  633. package/build/templates/generators/github/issue-template/FEATURE-REQUEST.yml +61 -0
  634. package/build/templates/generators/github/issue-template/SUPPORT-REQUEST.yml +50 -0
  635. package/build/templates/generators/github/issue-template/bug-report-fields/android.yml +16 -0
  636. package/build/templates/generators/github/issue-template/bug-report-fields/apple.yml +23 -0
  637. package/build/templates/generators/github/issue-template/bug-report-fields/csharp.yml +20 -0
  638. package/build/templates/generators/github/issue-template/bug-report-fields/docker.yml +33 -0
  639. package/build/templates/generators/github/issue-template/bug-report-fields/homebridge.yml +16 -0
  640. package/build/templates/generators/github/issue-template/bug-report-fields/nodejs.yml +8 -0
  641. package/build/templates/generators/github/issue-template/bug-report-fields/pfsense.yml +8 -0
  642. package/build/templates/generators/github/issue-template/bug-report-fields/php.yml +8 -0
  643. package/build/templates/generators/github/issue-template/bug-report-fields/python.yml +8 -0
  644. package/build/templates/generators/github/issue-template/bug-report-fields/screenshots.yml +7 -0
  645. package/build/templates/generators/github/issue-template/bug-report-fields/synology.yml +8 -0
  646. package/build/templates/generators/github/issue-template/bug-report-fields/web.yml +21 -0
  647. package/build/templates/generators/github/issue-template/config.yml +1 -0
  648. package/build/templates/generators/github/issue-template/legal-agreements/bug-report.yml +8 -0
  649. package/build/templates/generators/github/issue-template/legal-agreements/feature-request.yml +8 -0
  650. package/build/templates/generators/github/issue-template/legal-agreements/support-request.yml +8 -0
  651. package/build/templates/generators/github/workflows/check-sponsor-gated-issues/base.yml +57 -0
  652. package/build/templates/generators/github/workflows/lock-inactive-issues/base.yml +43 -0
  653. package/build/templates/generators/github/workflows/lock-inactive-issues/triggers/schedule.yml +5 -0
  654. package/build/templates/generators/github/workflows/publish-to-aws-amplify-nextjs/base.yml +53 -0
  655. package/build/templates/generators/github/workflows/publish-to-aws-amplify-nextjs/triggers/push.yml +5 -0
  656. package/build/templates/generators/github/workflows/publish-to-aws-amplify-nextjs/triggers/release.yml +5 -0
  657. package/build/templates/generators/github/workflows/publish-to-cloudflare-pages-docusaurus/base.yml +62 -0
  658. package/build/templates/generators/github/workflows/publish-to-cloudflare-pages-docusaurus/triggers/push.yml +5 -0
  659. package/build/templates/generators/github/workflows/publish-to-cloudflare-pages-docusaurus/triggers/release.yml +5 -0
  660. package/build/templates/generators/github/workflows/publish-to-docker-hub/base.yml +58 -0
  661. package/build/templates/generators/github/workflows/publish-to-docker-hub/triggers/release.yml +5 -0
  662. package/build/templates/generators/github/workflows/publish-to-docker-hub/triggers/workflow-run-any.yml +7 -0
  663. package/build/templates/generators/github/workflows/publish-to-docker-hub/triggers/workflow-run-failure.yml +8 -0
  664. package/build/templates/generators/github/workflows/publish-to-docker-hub/triggers/workflow-run-success.yml +8 -0
  665. package/build/templates/generators/github/workflows/publish-to-github-packages/base.yml +108 -0
  666. package/build/templates/generators/github/workflows/publish-to-github-packages/triggers/release.yml +5 -0
  667. package/build/templates/generators/github/workflows/publish-to-github-packages/triggers/workflow-run-any.yml +7 -0
  668. package/build/templates/generators/github/workflows/publish-to-github-packages/triggers/workflow-run-failure.yml +8 -0
  669. package/build/templates/generators/github/workflows/publish-to-github-packages/triggers/workflow-run-success.yml +8 -0
  670. package/build/templates/generators/github/workflows/publish-to-github-pages-docusaurus/base.yml +79 -0
  671. package/build/templates/generators/github/workflows/publish-to-github-pages-docusaurus/triggers/push.yml +5 -0
  672. package/build/templates/generators/github/workflows/publish-to-github-pages-docusaurus/triggers/release.yml +5 -0
  673. package/build/templates/generators/github/workflows/publish-to-npm/base.yml +91 -0
  674. package/build/templates/generators/github/workflows/publish-to-npm/triggers/release.yml +5 -0
  675. package/build/templates/generators/github/workflows/publish-to-npm/triggers/workflow-run-any.yml +7 -0
  676. package/build/templates/generators/github/workflows/publish-to-npm/triggers/workflow-run-failure.yml +8 -0
  677. package/build/templates/generators/github/workflows/publish-to-npm/triggers/workflow-run-success.yml +8 -0
  678. package/build/templates/generators/must-haves/agent-conventions/AGENTS.md +54 -0
  679. package/build/templates/generators/must-haves/agent-conventions/CLAUDE.md +54 -0
  680. package/build/templates/generators/must-haves/agent-conventions/PROJECT_RULES.md +290 -0
  681. package/build/templates/generators/must-haves/agent-conventions/VISION.md +62 -0
  682. package/build/templates/generators/must-haves/agent-conventions/conventions/csharp.md +317 -0
  683. package/build/templates/generators/must-haves/agent-conventions/conventions/css.md +188 -0
  684. package/build/templates/generators/must-haves/agent-conventions/conventions/docker.md +131 -0
  685. package/build/templates/generators/must-haves/agent-conventions/conventions/documentation.md +615 -0
  686. package/build/templates/generators/must-haves/agent-conventions/conventions/java.md +285 -0
  687. package/build/templates/generators/must-haves/agent-conventions/conventions/kotlin.md +297 -0
  688. package/build/templates/generators/must-haves/agent-conventions/conventions/php.md +257 -0
  689. package/build/templates/generators/must-haves/agent-conventions/conventions/python.md +260 -0
  690. package/build/templates/generators/must-haves/agent-conventions/conventions/shell.md +205 -0
  691. package/build/templates/generators/must-haves/agent-conventions/conventions/swift.md +312 -0
  692. package/build/templates/generators/must-haves/agent-conventions/conventions/typescript.md +1530 -0
  693. package/build/templates/generators/must-haves/agent-conventions/conventions/universal.md +202 -0
  694. package/build/templates/generators/must-haves/license/AGPL-3.0 +662 -0
  695. package/build/templates/generators/must-haves/license/Apache-2.0 +202 -0
  696. package/build/templates/generators/must-haves/license/BSD-2-Clause +25 -0
  697. package/build/templates/generators/must-haves/license/BSD-3-Clause +29 -0
  698. package/build/templates/generators/must-haves/license/BSL-1.0 +24 -0
  699. package/build/templates/generators/must-haves/license/CC0-1.0 +122 -0
  700. package/build/templates/generators/must-haves/license/EPL-2.0 +278 -0
  701. package/build/templates/generators/must-haves/license/GPL-2.0 +340 -0
  702. package/build/templates/generators/must-haves/license/GPL-3.0 +675 -0
  703. package/build/templates/generators/must-haves/license/LGPL-2.1 +505 -0
  704. package/build/templates/generators/must-haves/license/MIT +22 -0
  705. package/build/templates/generators/must-haves/license/MPL-2.0 +374 -0
  706. package/build/templates/generators/must-haves/license/Proprietary +22 -0
  707. package/build/templates/generators/must-haves/license/Unlicense +25 -0
  708. package/build/templates/generators/must-haves/read-me/README.md +17 -0
  709. package/build/templates/scaffold/app/express/package.json +20 -0
  710. package/build/templates/scaffold/app/express/src/index.ts +12 -0
  711. package/build/templates/scaffold/app/express/tsconfig.json +15 -0
  712. package/build/templates/scaffold/app/nextjs/next.config.mjs +4 -0
  713. package/build/templates/scaffold/app/nextjs/package.json +22 -0
  714. package/build/templates/scaffold/app/nextjs/src/app/globals.css +11 -0
  715. package/build/templates/scaffold/app/nextjs/src/app/layout.tsx +18 -0
  716. package/build/templates/scaffold/app/nextjs/src/app/page.tsx +8 -0
  717. package/build/templates/scaffold/app/nextjs/tsconfig.json +26 -0
  718. package/build/templates/scaffold/app/vite/index.html +12 -0
  719. package/build/templates/scaffold/app/vite/package.json +17 -0
  720. package/build/templates/scaffold/app/vite/src/main.ts +5 -0
  721. package/build/templates/scaffold/app/vite/tsconfig.json +16 -0
  722. package/build/templates/scaffold/app/vite/vite.config.mts +3 -0
  723. package/build/templates/scaffold/app/workers/package.json +16 -0
  724. package/build/templates/scaffold/app/workers/src/index.ts +13 -0
  725. package/build/templates/scaffold/app/workers/tsconfig.json +17 -0
  726. package/build/templates/scaffold/app/workers/wrangler.toml +3 -0
  727. package/build/templates/scaffold/docs/docusaurus/docs/intro.md +9 -0
  728. package/build/templates/scaffold/docs/docusaurus/docusaurus.config.ts +33 -0
  729. package/build/templates/scaffold/docs/docusaurus/package.json +20 -0
  730. package/build/templates/scaffold/docs/docusaurus/sidebars.ts +9 -0
  731. package/build/templates/scaffold/docs/docusaurus/tsconfig.json +8 -0
  732. package/package.json +33 -23
  733. package/build/src/presets/eslint/dx-code-style.d.mts +0 -4
  734. package/build/src/presets/eslint/dx-code-style.d.mts.map +0 -1
  735. package/build/src/presets/eslint/dx-code-style.mjs +0 -211
  736. package/build/src/presets/eslint/dx-code-style.mjs.map +0 -1
  737. package/build/src/presets/eslint/dx-ignore.d.mts +0 -4
  738. package/build/src/presets/eslint/dx-ignore.d.mts.map +0 -1
  739. package/build/src/presets/eslint/dx-ignore.mjs.map +0 -1
  740. package/build/src/presets/eslint/env-browser.d.mts +0 -4
  741. package/build/src/presets/eslint/env-browser.d.mts.map +0 -1
  742. package/build/src/presets/eslint/env-browser.mjs +0 -3
  743. package/build/src/presets/eslint/env-browser.mjs.map +0 -1
  744. package/build/src/presets/eslint/env-edge.d.mts +0 -4
  745. package/build/src/presets/eslint/env-edge.d.mts.map +0 -1
  746. package/build/src/presets/eslint/env-edge.mjs.map +0 -1
  747. package/build/src/presets/eslint/env-node.d.mts +0 -4
  748. package/build/src/presets/eslint/env-node.d.mts.map +0 -1
  749. package/build/src/presets/eslint/env-node.mjs.map +0 -1
  750. package/build/src/presets/eslint/env-service-worker.d.mts +0 -4
  751. package/build/src/presets/eslint/env-service-worker.d.mts.map +0 -1
  752. package/build/src/presets/eslint/env-service-worker.mjs +0 -3
  753. package/build/src/presets/eslint/env-service-worker.mjs.map +0 -1
  754. package/build/src/presets/eslint/env-web-worker.d.mts +0 -4
  755. package/build/src/presets/eslint/env-web-worker.d.mts.map +0 -1
  756. package/build/src/presets/eslint/env-web-worker.mjs.map +0 -1
  757. package/build/src/presets/eslint/fw-docusaurus.d.mts +0 -4
  758. package/build/src/presets/eslint/fw-docusaurus.d.mts.map +0 -1
  759. package/build/src/presets/eslint/fw-docusaurus.mjs +0 -10
  760. package/build/src/presets/eslint/fw-docusaurus.mjs.map +0 -1
  761. package/build/src/presets/eslint/fw-expressjs.d.mts +0 -4
  762. package/build/src/presets/eslint/fw-expressjs.d.mts.map +0 -1
  763. package/build/src/presets/eslint/fw-expressjs.mjs.map +0 -1
  764. package/build/src/presets/eslint/fw-nextjs.d.mts +0 -4
  765. package/build/src/presets/eslint/fw-nextjs.d.mts.map +0 -1
  766. package/build/src/presets/eslint/fw-nextjs.mjs.map +0 -1
  767. package/build/src/presets/eslint/index.d.mts +0 -16
  768. package/build/src/presets/eslint/index.d.mts.map +0 -1
  769. package/build/src/presets/eslint/index.mjs +0 -16
  770. package/build/src/presets/eslint/index.mjs.map +0 -1
  771. package/build/src/presets/eslint/lang-javascript.d.mts +0 -4
  772. package/build/src/presets/eslint/lang-javascript.d.mts.map +0 -1
  773. package/build/src/presets/eslint/lang-javascript.mjs +0 -3
  774. package/build/src/presets/eslint/lang-javascript.mjs.map +0 -1
  775. package/build/src/presets/eslint/lang-mdx.d.mts +0 -4
  776. package/build/src/presets/eslint/lang-mdx.d.mts.map +0 -1
  777. package/build/src/presets/eslint/lang-mdx.mjs.map +0 -1
  778. package/build/src/presets/eslint/lang-typescript.d.mts +0 -4
  779. package/build/src/presets/eslint/lang-typescript.d.mts.map +0 -1
  780. package/build/src/presets/eslint/lang-typescript.mjs +0 -88
  781. package/build/src/presets/eslint/lang-typescript.mjs.map +0 -1
  782. package/build/src/presets/eslint/platform-cloudflare-workers.d.mts +0 -4
  783. package/build/src/presets/eslint/platform-cloudflare-workers.d.mts.map +0 -1
  784. package/build/src/presets/eslint/platform-cloudflare-workers.mjs +0 -8
  785. package/build/src/presets/eslint/platform-cloudflare-workers.mjs.map +0 -1
  786. package/build/src/presets/eslint/tool-vite.d.mts +0 -4
  787. package/build/src/presets/eslint/tool-vite.d.mts.map +0 -1
  788. package/build/src/presets/eslint/tool-vite.mjs.map +0 -1
  789. package/build/src/presets/tsconfig/env-web-worker.json +0 -12
  790. package/build/src/rules/eslint/patterns/no-destructuring.d.ts +0 -13
  791. package/build/src/rules/eslint/patterns/no-destructuring.d.ts.map +0 -1
  792. package/build/src/rules/eslint/patterns/no-destructuring.js +0 -177
  793. package/build/src/rules/eslint/patterns/no-destructuring.js.map +0 -1
  794. package/build/src/rules/eslint/patterns/no-implicit-boolean.d.ts +0 -6
  795. package/build/src/rules/eslint/patterns/no-implicit-boolean.d.ts.map +0 -1
  796. package/build/src/rules/eslint/patterns/no-implicit-boolean.js +0 -62
  797. package/build/src/rules/eslint/patterns/no-implicit-boolean.js.map +0 -1
  798. package/build/src/rules/eslint/patterns/no-ternary-in-template-literal.d.ts +0 -6
  799. package/build/src/rules/eslint/patterns/no-ternary-in-template-literal.d.ts.map +0 -1
  800. package/build/src/rules/eslint/patterns/no-ternary-in-template-literal.js +0 -32
  801. package/build/src/rules/eslint/patterns/no-ternary-in-template-literal.js.map +0 -1
  802. package/build/src/rules/eslint/patterns/switch-case-blocks.d.ts +0 -6
  803. package/build/src/rules/eslint/patterns/switch-case-blocks.d.ts.map +0 -1
  804. package/build/src/rules/eslint/patterns/switch-case-blocks.js +0 -36
  805. package/build/src/rules/eslint/patterns/switch-case-blocks.js.map +0 -1
  806. package/build/src/tests/api/node-releases.test.d.ts +0 -2
  807. package/build/src/tests/api/node-releases.test.d.ts.map +0 -1
  808. package/build/src/tests/api/node-releases.test.js +0 -193
  809. package/build/src/tests/api/node-releases.test.js.map +0 -1
  810. package/build/src/tests/api/spdx-licenses.test.d.ts +0 -2
  811. package/build/src/tests/api/spdx-licenses.test.d.ts.map +0 -1
  812. package/build/src/tests/api/spdx-licenses.test.js +0 -91
  813. package/build/src/tests/api/spdx-licenses.test.js.map +0 -1
  814. package/build/src/tests/cli/recipe/package-json/cleanup.test.d.ts +0 -2
  815. package/build/src/tests/cli/recipe/package-json/cleanup.test.d.ts.map +0 -1
  816. package/build/src/tests/cli/recipe/package-json/cleanup.test.js +0 -240
  817. package/build/src/tests/cli/recipe/package-json/cleanup.test.js.map +0 -1
  818. package/build/src/tests/cli/recipe/package-json/normalize-artifacts.test.d.ts +0 -2
  819. package/build/src/tests/cli/recipe/package-json/normalize-artifacts.test.d.ts.map +0 -1
  820. package/build/src/tests/cli/recipe/package-json/normalize-artifacts.test.js +0 -161
  821. package/build/src/tests/cli/recipe/package-json/normalize-artifacts.test.js.map +0 -1
  822. package/build/src/tests/cli/recipe/package-json/normalize-bundler.test.d.ts +0 -2
  823. package/build/src/tests/cli/recipe/package-json/normalize-bundler.test.d.ts.map +0 -1
  824. package/build/src/tests/cli/recipe/package-json/normalize-bundler.test.js +0 -161
  825. package/build/src/tests/cli/recipe/package-json/normalize-bundler.test.js.map +0 -1
  826. package/build/src/tests/cli/recipe/package-json/normalize-dependencies.test.d.ts +0 -2
  827. package/build/src/tests/cli/recipe/package-json/normalize-dependencies.test.d.ts.map +0 -1
  828. package/build/src/tests/cli/recipe/package-json/normalize-dependencies.test.js +0 -175
  829. package/build/src/tests/cli/recipe/package-json/normalize-dependencies.test.js.map +0 -1
  830. package/build/src/tests/cli/recipe/package-json/normalize-modules.test.d.ts +0 -2
  831. package/build/src/tests/cli/recipe/package-json/normalize-modules.test.d.ts.map +0 -1
  832. package/build/src/tests/cli/recipe/package-json/normalize-modules.test.js +0 -164
  833. package/build/src/tests/cli/recipe/package-json/normalize-modules.test.js.map +0 -1
  834. package/build/src/tests/cli/recipe/package-json/normalize-tooling.test.d.ts +0 -2
  835. package/build/src/tests/cli/recipe/package-json/normalize-tooling.test.d.ts.map +0 -1
  836. package/build/src/tests/cli/recipe/package-json/normalize-tooling.test.js +0 -193
  837. package/build/src/tests/cli/recipe/package-json/normalize-tooling.test.js.map +0 -1
  838. package/build/src/tests/cli/recipe/package-json/sync-environment.test.d.ts +0 -2
  839. package/build/src/tests/cli/recipe/package-json/sync-environment.test.d.ts.map +0 -1
  840. package/build/src/tests/cli/recipe/package-json/sync-environment.test.js +0 -158
  841. package/build/src/tests/cli/recipe/package-json/sync-environment.test.js.map +0 -1
  842. package/build/src/tests/cli/recipe/package-json/sync-identity.test.d.ts +0 -2
  843. package/build/src/tests/cli/recipe/package-json/sync-identity.test.d.ts.map +0 -1
  844. package/build/src/tests/cli/recipe/package-json/sync-identity.test.js +0 -156
  845. package/build/src/tests/cli/recipe/package-json/sync-identity.test.js.map +0 -1
  846. package/build/src/tests/cli/recipe/package-json/sync-ownership.test.d.ts +0 -2
  847. package/build/src/tests/cli/recipe/package-json/sync-ownership.test.d.ts.map +0 -1
  848. package/build/src/tests/cli/recipe/package-json/sync-ownership.test.js +0 -164
  849. package/build/src/tests/cli/recipe/package-json/sync-ownership.test.js.map +0 -1
  850. package/build/src/tests/cli/utility/changelog.test.d.ts +0 -2
  851. package/build/src/tests/cli/utility/changelog.test.d.ts.map +0 -1
  852. package/build/src/tests/cli/utility/changelog.test.js +0 -274
  853. package/build/src/tests/cli/utility/changelog.test.js.map +0 -1
  854. package/build/src/tests/cli/utility/initialize.test.d.ts +0 -2
  855. package/build/src/tests/cli/utility/initialize.test.d.ts.map +0 -1
  856. package/build/src/tests/cli/utility/initialize.test.js +0 -27
  857. package/build/src/tests/cli/utility/initialize.test.js.map +0 -1
  858. package/build/src/tests/cli/utility/run-recipes.test.d.ts +0 -2
  859. package/build/src/tests/cli/utility/run-recipes.test.d.ts.map +0 -1
  860. package/build/src/tests/cli/utility/run-recipes.test.js +0 -41
  861. package/build/src/tests/cli/utility/run-recipes.test.js.map +0 -1
  862. package/build/src/tests/cli/utility/run-scripts.test.d.ts +0 -2
  863. package/build/src/tests/cli/utility/run-scripts.test.d.ts.map +0 -1
  864. package/build/src/tests/cli/utility/run-scripts.test.js +0 -153
  865. package/build/src/tests/cli/utility/run-scripts.test.js.map +0 -1
  866. package/build/src/tests/cli/utility/transpile.test.d.ts +0 -2
  867. package/build/src/tests/cli/utility/transpile.test.d.ts.map +0 -1
  868. package/build/src/tests/cli/utility/transpile.test.js +0 -65
  869. package/build/src/tests/cli/utility/transpile.test.js.map +0 -1
  870. package/build/src/tests/cli/utility/type-check.test.d.ts +0 -2
  871. package/build/src/tests/cli/utility/type-check.test.d.ts.map +0 -1
  872. package/build/src/tests/cli/utility/type-check.test.js +0 -63
  873. package/build/src/tests/cli/utility/type-check.test.js.map +0 -1
  874. package/build/src/tests/cli/utility/version.test.d.ts +0 -2
  875. package/build/src/tests/cli/utility/version.test.d.ts.map +0 -1
  876. package/build/src/tests/cli/utility/version.test.js +0 -38
  877. package/build/src/tests/cli/utility/version.test.js.map +0 -1
  878. package/build/src/tests/lib/item.test.d.ts +0 -2
  879. package/build/src/tests/lib/item.test.d.ts.map +0 -1
  880. package/build/src/tests/lib/item.test.js +0 -142
  881. package/build/src/tests/lib/item.test.js.map +0 -1
  882. package/build/src/tests/lib/nova-config.test.d.ts +0 -2
  883. package/build/src/tests/lib/nova-config.test.d.ts.map +0 -1
  884. package/build/src/tests/lib/nova-config.test.js +0 -516
  885. package/build/src/tests/lib/nova-config.test.js.map +0 -1
  886. package/build/src/tests/lib/regex.test.d.ts +0 -2
  887. package/build/src/tests/lib/regex.test.d.ts.map +0 -1
  888. package/build/src/tests/lib/regex.test.js +0 -342
  889. package/build/src/tests/lib/regex.test.js.map +0 -1
  890. package/build/src/tests/lib/schema.test.d.ts +0 -2
  891. package/build/src/tests/lib/schema.test.d.ts.map +0 -1
  892. package/build/src/tests/lib/schema.test.js +0 -260
  893. package/build/src/tests/lib/schema.test.js.map +0 -1
  894. package/build/src/tests/lib/utility.test.d.ts +0 -2
  895. package/build/src/tests/lib/utility.test.d.ts.map +0 -1
  896. package/build/src/tests/lib/utility.test.js +0 -744
  897. package/build/src/tests/lib/utility.test.js.map +0 -1
  898. package/build/src/tests/rules/eslint/formatting/no-raw-text-in-code.test.d.ts +0 -2
  899. package/build/src/tests/rules/eslint/formatting/no-raw-text-in-code.test.d.ts.map +0 -1
  900. package/build/src/tests/rules/eslint/formatting/no-raw-text-in-code.test.js +0 -47
  901. package/build/src/tests/rules/eslint/formatting/no-raw-text-in-code.test.js.map +0 -1
  902. package/build/src/tests/rules/eslint/formatting/require-padding-lines.test.d.ts +0 -2
  903. package/build/src/tests/rules/eslint/formatting/require-padding-lines.test.d.ts.map +0 -1
  904. package/build/src/tests/rules/eslint/formatting/require-padding-lines.test.js +0 -131
  905. package/build/src/tests/rules/eslint/formatting/require-padding-lines.test.js.map +0 -1
  906. package/build/src/tests/rules/eslint/nova/no-logger-dev.test.d.ts +0 -2
  907. package/build/src/tests/rules/eslint/nova/no-logger-dev.test.d.ts.map +0 -1
  908. package/build/src/tests/rules/eslint/nova/no-logger-dev.test.js +0 -55
  909. package/build/src/tests/rules/eslint/nova/no-logger-dev.test.js.map +0 -1
  910. package/build/src/tests/rules/eslint/patterns/no-assign-then-return.test.d.ts +0 -2
  911. package/build/src/tests/rules/eslint/patterns/no-assign-then-return.test.d.ts.map +0 -1
  912. package/build/src/tests/rules/eslint/patterns/no-assign-then-return.test.js +0 -39
  913. package/build/src/tests/rules/eslint/patterns/no-assign-then-return.test.js.map +0 -1
  914. package/build/src/tests/rules/eslint/patterns/no-bracket-assignment.test.d.ts +0 -2
  915. package/build/src/tests/rules/eslint/patterns/no-bracket-assignment.test.d.ts.map +0 -1
  916. package/build/src/tests/rules/eslint/patterns/no-bracket-assignment.test.js +0 -40
  917. package/build/src/tests/rules/eslint/patterns/no-bracket-assignment.test.js.map +0 -1
  918. package/build/src/tests/rules/eslint/patterns/no-destructuring.test.d.ts +0 -2
  919. package/build/src/tests/rules/eslint/patterns/no-destructuring.test.d.ts.map +0 -1
  920. package/build/src/tests/rules/eslint/patterns/no-destructuring.test.js +0 -86
  921. package/build/src/tests/rules/eslint/patterns/no-destructuring.test.js.map +0 -1
  922. package/build/src/tests/rules/eslint/patterns/no-implicit-boolean.test.d.ts +0 -2
  923. package/build/src/tests/rules/eslint/patterns/no-implicit-boolean.test.d.ts.map +0 -1
  924. package/build/src/tests/rules/eslint/patterns/no-implicit-boolean.test.js +0 -76
  925. package/build/src/tests/rules/eslint/patterns/no-implicit-boolean.test.js.map +0 -1
  926. package/build/src/tests/rules/eslint/patterns/no-ternary-in-template-literal.test.d.ts +0 -2
  927. package/build/src/tests/rules/eslint/patterns/no-ternary-in-template-literal.test.d.ts.map +0 -1
  928. package/build/src/tests/rules/eslint/patterns/no-ternary-in-template-literal.test.js +0 -42
  929. package/build/src/tests/rules/eslint/patterns/no-ternary-in-template-literal.test.js.map +0 -1
  930. package/build/src/tests/rules/eslint/patterns/switch-case-blocks.test.d.ts +0 -2
  931. package/build/src/tests/rules/eslint/patterns/switch-case-blocks.test.d.ts.map +0 -1
  932. package/build/src/tests/rules/eslint/patterns/switch-case-blocks.test.js +0 -43
  933. package/build/src/tests/rules/eslint/patterns/switch-case-blocks.test.js.map +0 -1
  934. package/build/src/tests/rules/eslint/regex/no-regex-literal-flags.test.d.ts +0 -2
  935. package/build/src/tests/rules/eslint/regex/no-regex-literal-flags.test.d.ts.map +0 -1
  936. package/build/src/tests/rules/eslint/regex/no-regex-literal-flags.test.js +0 -47
  937. package/build/src/tests/rules/eslint/regex/no-regex-literal-flags.test.js.map +0 -1
  938. package/build/src/tests/rules/eslint/regex/no-regex-literals.test.d.ts +0 -2
  939. package/build/src/tests/rules/eslint/regex/no-regex-literals.test.d.ts.map +0 -1
  940. package/build/src/tests/rules/eslint/regex/no-regex-literals.test.js +0 -49
  941. package/build/src/tests/rules/eslint/regex/no-regex-literals.test.js.map +0 -1
  942. package/build/src/tests/rules/eslint/typescript/no-catch-unknown-annotation.test.d.ts +0 -2
  943. package/build/src/tests/rules/eslint/typescript/no-catch-unknown-annotation.test.d.ts.map +0 -1
  944. package/build/src/tests/rules/eslint/typescript/no-catch-unknown-annotation.test.js +0 -34
  945. package/build/src/tests/rules/eslint/typescript/no-catch-unknown-annotation.test.js.map +0 -1
  946. package/build/src/tests/rules/eslint/typescript/no-inline-type-annotation.test.d.ts +0 -2
  947. package/build/src/tests/rules/eslint/typescript/no-inline-type-annotation.test.d.ts.map +0 -1
  948. package/build/src/tests/rules/eslint/typescript/no-inline-type-annotation.test.js +0 -55
  949. package/build/src/tests/rules/eslint/typescript/no-inline-type-annotation.test.js.map +0 -1
  950. package/build/src/tests/rules/eslint/typescript/no-shared-type-import.test.d.ts +0 -2
  951. package/build/src/tests/rules/eslint/typescript/no-shared-type-import.test.d.ts.map +0 -1
  952. package/build/src/tests/rules/eslint/typescript/no-shared-type-import.test.js +0 -51
  953. package/build/src/tests/rules/eslint/typescript/no-shared-type-import.test.js.map +0 -1
  954. package/build/src/tests/toolkit/cli-header.test.d.ts +0 -2
  955. package/build/src/tests/toolkit/cli-header.test.d.ts.map +0 -1
  956. package/build/src/tests/toolkit/cli-header.test.js +0 -143
  957. package/build/src/tests/toolkit/cli-header.test.js.map +0 -1
  958. package/build/src/tests/toolkit/logger.test.d.ts +0 -2
  959. package/build/src/tests/toolkit/logger.test.d.ts.map +0 -1
  960. package/build/src/tests/toolkit/logger.test.js +0 -96
  961. package/build/src/tests/toolkit/logger.test.js.map +0 -1
  962. package/build/src/tests/toolkit/markdown-table.test.d.ts +0 -2
  963. package/build/src/tests/toolkit/markdown-table.test.d.ts.map +0 -1
  964. package/build/src/tests/toolkit/markdown-table.test.js +0 -138
  965. package/build/src/tests/toolkit/markdown-table.test.js.map +0 -1
  966. /package/build/src/presets/tsconfig/{env-browser.json → runtime-browser.json} +0 -0
  967. /package/build/src/presets/tsconfig/{env-edge.json → runtime-edge.json} +0 -0
  968. /package/build/src/presets/tsconfig/{env-node.json → runtime-node.json} +0 -0
  969. /package/build/src/presets/tsconfig/{env-service-worker.json → runtime-service-worker.json} +0 -0
@@ -0,0 +1,257 @@
1
+ # PHP Conventions
2
+
3
+ Quotes: Single (non-interpolated). Indentation: 4-space. File naming: PascalCase (PSR-4) or snake_case (e.g., `EntityRepository.php`).
4
+
5
+ ## Documentation Style
6
+
7
+ - Comment syntax: `/** */`
8
+ - Padding tag: `@since 1.0.0` (PHPDoc)
9
+ - Param format: `@param type $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
+ ```php
16
+ /**
17
+ * Backup Config File.
18
+ *
19
+ * @param string $backup_name - Backup name.
20
+ * @param string $conf_path - Conf path.
21
+ * @param string $backup_path - Backup path.
22
+ *
23
+ * @return void
24
+ *
25
+ * @since 1.0.0
26
+ */
27
+ function backup_config_file(
28
+ string $backup_name,
29
+ string $conf_path,
30
+ string $backup_path
31
+ ): void { ... }
32
+ ```
33
+
34
+ ## Code Style
35
+
36
+ ### Strict Types Declaration
37
+
38
+ Every PHP file starts with `declare(strict_types=1)` immediately after the opening `<?php` tag.
39
+
40
+ ```php
41
+ <?php
42
+
43
+ declare(strict_types=1);
44
+ ```
45
+
46
+ ### Explicit Access Modifiers
47
+
48
+ All class members require explicit `public`, `private`, or `protected`. Never rely on PHP's implicit public.
49
+
50
+ ```php
51
+ // BAD — implicit public
52
+ function processData(string $input): void { ... }
53
+
54
+ // GOOD — explicit modifier
55
+ public function processData(string $input): void { ... }
56
+ private function validateInput(string $input): void { ... }
57
+ ```
58
+
59
+ ### Type Declarations Everywhere
60
+
61
+ All function parameters, return types, and class properties must have explicit type declarations. Use union types (`string|int`) and nullable types (`?string`) where needed.
62
+
63
+ ```php
64
+ // BAD — no type declarations
65
+ function findById($id) { ... }
66
+
67
+ // GOOD — fully typed
68
+ public function findById(string $id): ?Entity { ... }
69
+ ```
70
+
71
+ ### `readonly` Properties
72
+
73
+ Use `readonly` on properties assigned once in the constructor, never reassigned after (PHP 8.1+).
74
+
75
+ ```php
76
+ public function __construct(
77
+ private readonly Database $database,
78
+ private readonly Logger $logger,
79
+ ) { ... }
80
+ ```
81
+
82
+ ### Method Ordering
83
+
84
+ 1. Public methods first.
85
+ 2. Private methods second.
86
+
87
+ Each method separated by a blank line. No blank line after opening brace or before closing brace of the class.
88
+
89
+ ### `match` Expression — Always Include `default`
90
+
91
+ Prefer `match` over `switch` for value mapping. Always include a `default` arm.
92
+
93
+ ```php
94
+ $label = match ($category) {
95
+ 'added' => 'New feature',
96
+ 'fixed' => 'Bug fix',
97
+ default => 'Unknown',
98
+ };
99
+ ```
100
+
101
+ For side-effect branches, use `switch` with block-scoped `case` and always include `default`:
102
+
103
+ ```php
104
+ switch ($category) {
105
+ case 'added': {
106
+ $logger->info('New feature.');
107
+ break;
108
+ }
109
+
110
+ case 'fixed': {
111
+ $logger->info('Bug fix.');
112
+ break;
113
+ }
114
+
115
+ default: {
116
+ $logger->warn('Unknown category.');
117
+ break;
118
+ }
119
+ }
120
+ ```
121
+
122
+ ### Explicit Null Checks
123
+
124
+ Always use explicit comparisons. No truthy/falsy shortcuts.
125
+
126
+ - `=== null` — not set.
127
+ - `!== null` — present.
128
+ - `=== ''` — explicit empty string check.
129
+ - `count($array) > 0` — explicit array length check.
130
+ - `??` — null coalescing for defaults (fine to use).
131
+
132
+ ```php
133
+ // BAD — truthy check
134
+ if ($name) { ... }
135
+
136
+ // GOOD — explicit checks
137
+ if ($name !== null) { ... }
138
+ if ($name !== '') { ... }
139
+ if (count($items) > 0) { ... }
140
+
141
+ // GOOD — null coalescing for defaults
142
+ $timeout = $options['timeout'] ?? 5000;
143
+ ```
144
+
145
+ ### Array Functions vs `foreach`
146
+
147
+ - `array_filter()`, `array_map()` — transforming or searching, returns a new value.
148
+ - `foreach` — side effects (logging, mutating external state).
149
+ - `array_reduce()` — acceptable, but `foreach` with a mutable accumulator is also fine.
150
+
151
+ ### Descriptive Callback Parameter Names
152
+
153
+ 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.
154
+
155
+ ```php
156
+ // BAD
157
+ array_filter($valid_categories, fn($c) => $c === $value);
158
+
159
+ // GOOD
160
+ array_filter(
161
+ $valid_categories,
162
+ fn(string $valid_category) => $valid_category === $value
163
+ );
164
+ ```
165
+
166
+ ### Arrow Functions vs Anonymous Functions
167
+
168
+ - **Arrow function** (`fn() =>`): Single expression, no side effects.
169
+ - **Anonymous function** (`function() { }`): Multiple statements or side effects.
170
+
171
+ ```php
172
+ // Arrow function — single expression
173
+ $names = array_map(
174
+ fn(Item $item) => $item->getName(),
175
+ $items
176
+ );
177
+
178
+ // Anonymous function — multiple statements
179
+ $results = array_map(
180
+ function (Item $item) {
181
+ $item_name = $item->getName();
182
+ $item_role = $item->getRole();
183
+
184
+ return new ItemResult($item_name, $item_role);
185
+ },
186
+ $items
187
+ );
188
+ ```
189
+
190
+ ### Variable Names Chain from Parent
191
+
192
+ When extracting properties from an object, the variable name chains from the parent variable name.
193
+
194
+ ```php
195
+ $workspace_config = $workspace->getConfig();
196
+ $workspace_config_name = $workspace_config->getName();
197
+ $workspace_config_role = $workspace_config->getRole();
198
+ ```
199
+
200
+ ### Comment Placement in Method Bodies
201
+
202
+ Comments describe the process/intent. Placement rules:
203
+ - Comment sits above the code block it describes.
204
+ - Blank line before the comment (except at the start of a scope).
205
+ - No comment needed on the first block if it's self-explanatory.
206
+ - No trailing comments (same-line comments after code). Exception: multi-line conditions may use inline `//` comments after each condition line to explain the check.
207
+
208
+ ### No Stacked Comments
209
+
210
+ One descriptive comment per code block. No consecutive comments without code between them.
211
+
212
+ ### Quote File Names in Comments and Log Messages
213
+
214
+ Wrap file names in double quotes inside comments and log strings (e.g., `"config.json"`, `"CHANGELOG.md"`).
215
+
216
+ ### Blank Lines between Distinct Operations
217
+
218
+ Separate function calls and different logical blocks with blank lines. Variable declarations and loops also need blank line separation.
219
+
220
+ ### Bare Side-Effect Statements Get Their Own Visual Group
221
+
222
+ When a function call has no assignment (return value unused), separate it from surrounding assignments with a blank line.
223
+
224
+ ### Return Directly When Immediately Returned
225
+
226
+ Don't assign to an intermediate variable just to return it on the next line.
227
+
228
+ ### Extract Nested Function Calls into Variables
229
+
230
+ Don't nest function calls as arguments to other function calls. Extract into its own named variable for readability.
231
+
232
+ ### One Entry per Line in Collections
233
+
234
+ Array literals and similar collections use one entry per line in multiline constructs.
235
+
236
+ ### Mixed Logical Conditions
237
+
238
+ When mixing `&&`/`||`, parenthesized groups go on their own lines, each condition on its own line.
239
+
240
+ ### No Multi-Line Boolean Variable Assignments for `if`
241
+
242
+ Don't extract a multi-condition boolean into a named variable just to check it once. Inline conditions directly in `if` blocks.
243
+
244
+ ### Ternary Expressions
245
+
246
+ - No nested ternaries.
247
+ - No ternaries inside string interpolation — extract to a variable first.
248
+
249
+ ### Readability — All Generated Code Must Be Human-Readable
250
+
251
+ Don't inline complex expressions into string interpolation or other expressions. Break them into named variables so each step is clear.
252
+
253
+ ### Error Handling
254
+
255
+ - **Creator** (function designer): may design a function to throw on failure — that's the API contract.
256
+ - **Consumer** (function caller): always wraps calls to throwing functions in try/catch.
257
+ - CLI entry points never throw — set the appropriate exit code with `exit()` and return.
@@ -0,0 +1,260 @@
1
+ # Python Conventions
2
+
3
+ Quotes: Double (Black/Google convention). Indentation: 4-space. File naming: snake_case (PEP 8) (e.g., `entity_repository.py`).
4
+
5
+ ## Documentation Style
6
+
7
+ - Comment syntax: `"""` (Google-style)
8
+ - Padding tag: `Version:\n 1.0.0` (Google-style custom section)
9
+ - Param format: `Args:\n name: Name.` (description matches the parameter name, capitalized, with a trailing period)
10
+ - Return format: `Returns:\n Type.`
11
+ - Docstring starts with `"""` then a newline before the summary line.
12
+ - No `@private` tag; use `_` prefix naming instead.
13
+
14
+ ### Example
15
+
16
+ ```python
17
+ class EntityRepository:
18
+ """
19
+ Entity Repository.
20
+
21
+ Version:
22
+ 1.0.0
23
+ """
24
+
25
+ def __init__(self, database):
26
+ """
27
+ Entity Repository - Constructor.
28
+
29
+ Args:
30
+ database: Database.
31
+
32
+ Version:
33
+ 1.0.0
34
+ """
35
+ self._database = database
36
+
37
+ def find_by_id(self, entity_id):
38
+ """
39
+ Entity Repository - Find By ID.
40
+
41
+ Args:
42
+ entity_id: ID.
43
+
44
+ Returns:
45
+ Entity.
46
+
47
+ Version:
48
+ 1.0.0
49
+ """
50
+ return self._database.get(entity_id)
51
+ ```
52
+
53
+ ## Code Style
54
+
55
+ ### Private Members — `_` Prefix Convention
56
+
57
+ Use `_` prefix for private methods and attributes. Use `__` (name mangling) only when subclass collision avoidance is genuinely needed.
58
+
59
+ ```python
60
+ # GOOD — single underscore for private
61
+ self._database = database
62
+ self._cache = {}
63
+
64
+ def _validate_input(self, value):
65
+ ...
66
+
67
+ # Only when subclass collision is a real concern
68
+ def __internal_reset(self):
69
+ ...
70
+ ```
71
+
72
+ ### Type Hints Everywhere
73
+
74
+ All function parameters, return types, and class attributes must have type hints. Use `from __future__ import annotations` for forward references.
75
+
76
+ ```python
77
+ from __future__ import annotations
78
+
79
+ def find_by_id(self, entity_id: str) -> Entity | None:
80
+ ...
81
+
82
+ def process_items(self, items: list[Item]) -> list[Result]:
83
+ ...
84
+ ```
85
+
86
+ ### `Final` and Immutability
87
+
88
+ Use `typing.Final` for constants that should never be reassigned. Python has no `const` — `Final` is the closest equivalent.
89
+
90
+ ```python
91
+ from typing import Final
92
+
93
+ MAX_RETRIES: Final[int] = 3
94
+ DEFAULT_TIMEOUT: Final[int] = 5000
95
+ ```
96
+
97
+ ### Method Ordering
98
+
99
+ 1. Public methods first.
100
+ 2. Private methods second (prefix `_`).
101
+
102
+ Each method separated by a blank line. No blank line after class declaration or before closing of the class.
103
+
104
+ ### `match` Statement — Always Include Wildcard
105
+
106
+ Always include a `case _` wildcard (Python 3.10+). Each case uses a block.
107
+
108
+ ```python
109
+ match category:
110
+ case "added":
111
+ logger.info("New feature.")
112
+
113
+ case "fixed":
114
+ logger.info("Bug fix.")
115
+
116
+ case _:
117
+ logger.warning("Unknown category.")
118
+ ```
119
+
120
+ ### Explicit `None` Checks — No Truthy/Falsy
121
+
122
+ Always use explicit comparisons. No truthy/falsy shortcuts.
123
+
124
+ - `is None` — not set.
125
+ - `is not None` — present.
126
+ - `== ""` — explicit empty string.
127
+ - `len(items) > 0` — explicit length check.
128
+
129
+ ```python
130
+ # BAD — truthy check
131
+ if name:
132
+ ...
133
+
134
+ # GOOD — explicit checks
135
+ if name is not None:
136
+ ...
137
+ if name != "":
138
+ ...
139
+ if len(items) > 0:
140
+ ...
141
+ ```
142
+
143
+ ### List Comprehensions vs `map`/`filter` vs `for` Loop
144
+
145
+ - List comprehensions — transforming or filtering, returns a new list. Prefer over `map()`/`filter()`.
146
+ - `for` loop — side effects (logging, mutating external collections, async operations).
147
+ - `functools.reduce()` — acceptable, but `for` with a mutable accumulator is also fine.
148
+
149
+ ```python
150
+ # GOOD — list comprehension for transformation
151
+ names = [item.name for item in items if item.is_active]
152
+
153
+ # GOOD — for loop for side effects
154
+ for item in items:
155
+ logger.info(item.name)
156
+ ```
157
+
158
+ ### Descriptive Loop Variable Names
159
+
160
+ 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.
161
+
162
+ ```python
163
+ # BAD
164
+ for c in valid_categories:
165
+ ...
166
+
167
+ # GOOD
168
+ for valid_category in valid_categories:
169
+ ...
170
+
171
+ # More examples
172
+ for raw_path in raw_paths:
173
+ ...
174
+ for allowed_policy in allowed_policies:
175
+ ...
176
+ ```
177
+
178
+ ### Variable Names Chain from Parent
179
+
180
+ When extracting properties from an object, the variable name chains from the parent variable name.
181
+
182
+ ```python
183
+ workspace_config = workspace.config
184
+ workspace_config_name = workspace_config.name
185
+ workspace_config_role = workspace_config.role
186
+ ```
187
+
188
+ ### Comment Placement in Method Bodies
189
+
190
+ Comments describe the process/intent. Placement rules:
191
+ - Comment sits above the code block it describes.
192
+ - Blank line before the comment (except at the start of a scope).
193
+ - No comment needed on the first block if it's self-explanatory.
194
+ - No trailing comments (same-line comments after code). Exception: multi-line conditions may use inline `#` comments after each condition line to explain the check.
195
+
196
+ ### No Stacked Comments
197
+
198
+ One descriptive comment per code block. No consecutive comments without code between them.
199
+
200
+ ### Quote File Names in Comments and Log Messages
201
+
202
+ Wrap file names in double quotes inside comments and log strings (e.g., `"config.json"`, `"CHANGELOG.md"`).
203
+
204
+ ### Blank Lines between Distinct Operations
205
+
206
+ Separate function calls, `await` statements, and different logical blocks with blank lines. Variable declarations and loops also need blank line separation.
207
+
208
+ ```python
209
+ # BAD — everything stuck together
210
+ config_raw = path.read_text()
211
+ config = parser.parse(config_raw)
212
+ filtered = filter_items(config.items)
213
+
214
+ # GOOD — each operation gets breathing room
215
+ config_raw = path.read_text()
216
+
217
+ config = parser.parse(config_raw)
218
+
219
+ filtered = filter_items(config.items)
220
+ ```
221
+
222
+ ### Bare Side-Effect Statements Get Their Own Visual Group
223
+
224
+ When a function call has no assignment (return value unused), separate it from surrounding assignments with a blank line.
225
+
226
+ ### Return Directly When Immediately Returned
227
+
228
+ Don't assign to an intermediate variable just to return it on the next line.
229
+
230
+ ### Extract Nested Function Calls into Variables
231
+
232
+ Don't nest function calls as arguments to other function calls. Extract into its own named variable for readability.
233
+
234
+ ### One Entry per Line in Collections
235
+
236
+ List literals, dict literals, and similar collections use one entry per line in multiline constructs.
237
+
238
+ ### Mixed Logical Conditions
239
+
240
+ When mixing `and`/`or`, parenthesized groups go on their own lines, each condition on its own line.
241
+
242
+ ### No Multi-Line Boolean Variable Assignments for `if`
243
+
244
+ Don't extract a multi-condition boolean into a named variable just to check it once. Inline conditions directly in `if` blocks.
245
+
246
+ ### Inline `if`/`else` Expressions
247
+
248
+ Python's ternary is `value_a if condition else value_b`. Same rules apply:
249
+ - No nested inline `if`/`else` chains.
250
+ - No inline `if`/`else` inside f-strings — extract to a variable first.
251
+
252
+ ### Readability — All Generated Code Must Be Human-Readable
253
+
254
+ Don't inline complex expressions into f-strings or other expressions. Break them into named variables so each step is clear.
255
+
256
+ ### Error Handling
257
+
258
+ - **Creator** (function designer): may design a function to raise on failure — that's the API contract.
259
+ - **Consumer** (function caller): always wraps calls to raising functions in `try`/`except`.
260
+ - CLI entry points never raise — set the appropriate exit code with `sys.exit()` and return.
@@ -0,0 +1,205 @@
1
+ # Shell Conventions
2
+
3
+ Quotes: Double (for variable expansion). Indentation: 2-space. File naming: kebab-case (e.g., `backup-config.sh`).
4
+
5
+ ## Documentation Style
6
+
7
+ Section banners and inline comments only. No doc comment blocks. Shell uses `#` with `=` borders:
8
+
9
+ ```bash
10
+ # ============================
11
+ # Section Title
12
+ # ============================
13
+ ```
14
+
15
+ ## Code Style
16
+
17
+ ### Strict Mode
18
+
19
+ Every shell script starts with `set -euo pipefail` after the shebang.
20
+
21
+ ```bash
22
+ #!/usr/bin/env bash
23
+ set -euo pipefail
24
+ ```
25
+
26
+ ### `SCRIPT_DIR` Detection
27
+
28
+ Every script that references relative paths must detect its own directory.
29
+
30
+ ```bash
31
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
32
+ ```
33
+
34
+ ### `main()` Entry Point
35
+
36
+ Scripts use a `main()` function as the entry point, called at the bottom of the file.
37
+
38
+ ```bash
39
+ main() {
40
+ # Script logic here.
41
+ ...
42
+ }
43
+
44
+ main "$@"
45
+ ```
46
+
47
+ ### Variable Quoting
48
+
49
+ Always double-quote variables. Unquoted variables cause word splitting and glob expansion.
50
+
51
+ ```bash
52
+ # BAD — unquoted
53
+ cp $source_file $dest_dir
54
+
55
+ # GOOD — quoted
56
+ cp "${source_file}" "${dest_dir}"
57
+ ```
58
+
59
+ ### Variable Naming
60
+
61
+ - Local variables: `snake_case` (lowercase).
62
+ - Environment/exported variables: `UPPER_SNAKE_CASE`.
63
+ - Use `local` for function-scoped variables.
64
+
65
+ ```bash
66
+ # GOOD
67
+ local config_path="${SCRIPT_DIR}/config.json"
68
+ local output_dir="${1:-./output}"
69
+
70
+ export APP_VERSION="1.0.0"
71
+ ```
72
+
73
+ ### Descriptive Loop Variable Names
74
+
75
+ 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.
76
+
77
+ ```bash
78
+ # BAD
79
+ for f in "${workflow_files[@]}"; do
80
+
81
+ # GOOD
82
+ for workflow_file in "${workflow_files[@]}"; do
83
+ ```
84
+
85
+ ### Comment Placement
86
+
87
+ Comments describe the process/intent. Placement rules:
88
+ - Comment sits above the code block it describes.
89
+ - Blank line before the comment (except at the start of a scope).
90
+ - No comment needed on the first block if it's self-explanatory.
91
+ - No trailing comments (same-line comments after code). Exception: multi-line conditions may use inline `#` comments after each condition line to explain the check.
92
+
93
+ ### No Stacked Comments
94
+
95
+ One descriptive comment per code block. No consecutive comments without code between them.
96
+
97
+ ### Quote File Names in Comments and Log Messages
98
+
99
+ Wrap file names in double quotes inside comments and log strings (e.g., `"config.json"`, `"CHANGELOG.md"`).
100
+
101
+ ### Blank Lines between Distinct Operations
102
+
103
+ Separate commands and different logical blocks with blank lines. Variable declarations and loops also need blank line separation.
104
+
105
+ ```bash
106
+ # BAD — everything stuck together
107
+ local config_raw
108
+ config_raw="$(cat "${config_path}")"
109
+ local items
110
+ items="$(echo "${config_raw}" | jq '.items')"
111
+ process_items "${items}"
112
+
113
+ # GOOD — each operation gets breathing room
114
+ local config_raw
115
+ config_raw="$(cat "${config_path}")"
116
+
117
+ local items
118
+ items="$(echo "${config_raw}" | jq '.items')"
119
+
120
+ process_items "${items}"
121
+ ```
122
+
123
+ ### Return Directly When Immediately Returned
124
+
125
+ Don't assign to an intermediate variable just to echo it on the next line.
126
+
127
+ ### Extract Nested Commands into Variables
128
+
129
+ Don't nest command substitutions. Extract into its own named variable for readability.
130
+
131
+ ```bash
132
+ # BAD — nested substitutions
133
+ local result
134
+ result="$(basename "$(dirname "${file_path}")")"
135
+
136
+ # GOOD — extracted
137
+ local parent_dir
138
+ parent_dir="$(dirname "${file_path}")"
139
+
140
+ local result
141
+ result="$(basename "${parent_dir}")"
142
+ ```
143
+
144
+ ### One Entry per Line in Arrays
145
+
146
+ Array literals use one entry per line in multiline constructs.
147
+
148
+ ```bash
149
+ local platforms=(
150
+ "nodejs"
151
+ "swift"
152
+ "kotlin"
153
+ "docker"
154
+ )
155
+ ```
156
+
157
+ ### Conditional Expressions
158
+
159
+ Use `[[ ]]` over `[ ]`. Always use explicit comparisons.
160
+
161
+ ```bash
162
+ # BAD — single bracket, implicit check
163
+ if [ $name ]; then
164
+
165
+ # GOOD — double bracket, explicit check
166
+ if [[ -n "${name}" ]]; then
167
+ if [[ "${count}" -gt 0 ]]; then
168
+ if [[ "${value}" == "expected" ]]; then
169
+ ```
170
+
171
+ ### `case` Statement — Always Include Wildcard
172
+
173
+ Always include a `*)` wildcard. Each pattern uses `;;` terminator.
174
+
175
+ ```bash
176
+ case "${category}" in
177
+ "added")
178
+ info "New feature."
179
+ ;;
180
+
181
+ "fixed")
182
+ info "Bug fix."
183
+ ;;
184
+
185
+ *)
186
+ warn "Unknown category."
187
+ ;;
188
+ esac
189
+ ```
190
+
191
+ ### Error Handling
192
+
193
+ - Functions that can fail should return non-zero exit codes.
194
+ - Callers check return codes or use `||` for error handling.
195
+ - Scripts never leave errors unhandled — `set -e` catches unchecked failures.
196
+ - Use `trap` for cleanup on exit.
197
+
198
+ ```bash
199
+ trap cleanup EXIT
200
+
201
+ cleanup() {
202
+ # Remove temporary files.
203
+ rm -f "${tmp_file}"
204
+ }
205
+ ```