@mytechtoday/augment-extensions 1.7.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (465) hide show
  1. package/README.md +240 -19
  2. package/augment-extensions/coding-standards/bash/CHANGELOG.md +51 -0
  3. package/augment-extensions/coding-standards/bash/metadata.json +21 -0
  4. package/augment-extensions/coding-standards/c/metadata.json +50 -0
  5. package/augment-extensions/coding-standards/css/CHANGELOG.md +51 -0
  6. package/augment-extensions/coding-standards/css/metadata.json +30 -0
  7. package/augment-extensions/coding-standards/go/CHANGELOG.md +51 -0
  8. package/augment-extensions/coding-standards/go/metadata.json +57 -0
  9. package/augment-extensions/coding-standards/html/CHANGELOG.md +51 -0
  10. package/augment-extensions/coding-standards/html/metadata.json +25 -0
  11. package/augment-extensions/coding-standards/html-css-js/CHANGELOG.md +51 -0
  12. package/augment-extensions/coding-standards/html-css-js/metadata.json +40 -0
  13. package/augment-extensions/coding-standards/js/CHANGELOG.md +51 -0
  14. package/augment-extensions/coding-standards/js/metadata.json +37 -0
  15. package/augment-extensions/coding-standards/perl/README.md +173 -0
  16. package/augment-extensions/coding-standards/php/CHANGELOG.md +51 -0
  17. package/augment-extensions/coding-standards/php/metadata.json +35 -0
  18. package/augment-extensions/coding-standards/powershell/CHANGELOG.md +51 -0
  19. package/augment-extensions/coding-standards/powershell/metadata.json +33 -0
  20. package/augment-extensions/coding-standards/python/CHANGELOG.md +51 -0
  21. package/augment-extensions/coding-standards/python/metadata.json +38 -0
  22. package/augment-extensions/coding-standards/react/CHANGELOG.md +51 -0
  23. package/augment-extensions/coding-standards/react/metadata.json +31 -0
  24. package/augment-extensions/coding-standards/typescript/CHANGELOG.md +39 -0
  25. package/augment-extensions/coding-standards/typescript/README.md +248 -19
  26. package/augment-extensions/coding-standards/typescript/VERSION +2 -0
  27. package/augment-extensions/coding-standards/typescript/examples/biome.json +199 -0
  28. package/augment-extensions/coding-standards/typescript/examples/eslint-flat-config.js +166 -0
  29. package/augment-extensions/coding-standards/typescript/examples/monorepo-config/README.md +47 -0
  30. package/augment-extensions/coding-standards/typescript/examples/monorepo-config/package.json +37 -0
  31. package/augment-extensions/coding-standards/typescript/examples/monorepo-config/pnpm-workspace.yaml +5 -0
  32. package/augment-extensions/coding-standards/typescript/examples/monorepo-config/tsconfig.base.json +50 -0
  33. package/augment-extensions/coding-standards/typescript/examples/monorepo-config/turbo.json +47 -0
  34. package/augment-extensions/coding-standards/typescript/examples/vitest-setup.ts +198 -0
  35. package/augment-extensions/coding-standards/typescript/metadata.json +46 -0
  36. package/augment-extensions/coding-standards/typescript/module.json +25 -7
  37. package/augment-extensions/coding-standards/typescript/rules/architecture.md +1096 -0
  38. package/augment-extensions/coding-standards/typescript/rules/error-handling.md +1174 -0
  39. package/augment-extensions/coding-standards/typescript/rules/modern-features.md +625 -0
  40. package/augment-extensions/coding-standards/typescript/rules/monorepo.md +745 -0
  41. package/augment-extensions/coding-standards/typescript/rules/security-performance.md +850 -0
  42. package/augment-extensions/coding-standards/typescript/rules/testing.md +918 -0
  43. package/augment-extensions/coding-standards/typescript/rules/tooling.md +1071 -0
  44. package/augment-extensions/coding-standards/typescript/rules/type-patterns.md +750 -0
  45. package/augment-extensions/domain-rules/api-design/CHANGELOG.md +51 -0
  46. package/augment-extensions/domain-rules/api-design/metadata.json +32 -0
  47. package/augment-extensions/domain-rules/database/CHANGELOG.md +51 -0
  48. package/augment-extensions/domain-rules/database/metadata.json +50 -0
  49. package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/CHANGELOG.md +51 -0
  50. package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/metadata.json +18 -0
  51. package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/CHANGELOG.md +51 -0
  52. package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/metadata.json +18 -0
  53. package/augment-extensions/domain-rules/design/color/themes/dracula/CHANGELOG.md +51 -0
  54. package/augment-extensions/domain-rules/design/color/themes/dracula/metadata.json +18 -0
  55. package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/CHANGELOG.md +51 -0
  56. package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/metadata.json +18 -0
  57. package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/CHANGELOG.md +51 -0
  58. package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/metadata.json +18 -0
  59. package/augment-extensions/domain-rules/design/color/themes/high-contrast/CHANGELOG.md +51 -0
  60. package/augment-extensions/domain-rules/design/color/themes/high-contrast/metadata.json +18 -0
  61. package/augment-extensions/domain-rules/design/color/themes/monokai/CHANGELOG.md +51 -0
  62. package/augment-extensions/domain-rules/design/color/themes/monokai/metadata.json +18 -0
  63. package/augment-extensions/domain-rules/design/color/themes/nord/CHANGELOG.md +51 -0
  64. package/augment-extensions/domain-rules/design/color/themes/nord/metadata.json +18 -0
  65. package/augment-extensions/domain-rules/design/color/themes/one-dark/CHANGELOG.md +51 -0
  66. package/augment-extensions/domain-rules/design/color/themes/one-dark/metadata.json +18 -0
  67. package/augment-extensions/domain-rules/design/color/themes/one-light/CHANGELOG.md +51 -0
  68. package/augment-extensions/domain-rules/design/color/themes/one-light/metadata.json +18 -0
  69. package/augment-extensions/domain-rules/design/color/themes/solarized-dark/CHANGELOG.md +51 -0
  70. package/augment-extensions/domain-rules/design/color/themes/solarized-dark/metadata.json +18 -0
  71. package/augment-extensions/domain-rules/design/color/themes/solarized-light/CHANGELOG.md +51 -0
  72. package/augment-extensions/domain-rules/design/color/themes/solarized-light/metadata.json +18 -0
  73. package/augment-extensions/domain-rules/design/color/themes/tokyo-night/CHANGELOG.md +51 -0
  74. package/augment-extensions/domain-rules/design/color/themes/tokyo-night/metadata.json +18 -0
  75. package/augment-extensions/domain-rules/mcp/CHANGELOG.md +51 -0
  76. package/augment-extensions/domain-rules/mcp/metadata.json +42 -0
  77. package/augment-extensions/domain-rules/security/CHANGELOG.md +51 -0
  78. package/augment-extensions/domain-rules/security/metadata.json +33 -0
  79. package/augment-extensions/domain-rules/seo-sales-marketing/CHANGELOG.md +51 -0
  80. package/augment-extensions/domain-rules/seo-sales-marketing/metadata.json +40 -0
  81. package/augment-extensions/domain-rules/software-architecture/CHANGELOG.md +51 -0
  82. package/augment-extensions/domain-rules/software-architecture/metadata.json +55 -0
  83. package/augment-extensions/domain-rules/wordpress/CHANGELOG.md +51 -0
  84. package/augment-extensions/domain-rules/wordpress/metadata.json +42 -0
  85. package/augment-extensions/domain-rules/wordpress-plugin/CHANGELOG.md +51 -0
  86. package/augment-extensions/domain-rules/wordpress-plugin/metadata.json +70 -0
  87. package/augment-extensions/examples/design-patterns/CHANGELOG.md +51 -0
  88. package/augment-extensions/examples/design-patterns/metadata.json +29 -0
  89. package/augment-extensions/examples/gutenberg-block-plugin/CHANGELOG.md +51 -0
  90. package/augment-extensions/examples/gutenberg-block-plugin/metadata.json +26 -0
  91. package/augment-extensions/examples/rest-api-plugin/CHANGELOG.md +51 -0
  92. package/augment-extensions/examples/rest-api-plugin/metadata.json +27 -0
  93. package/augment-extensions/examples/woocommerce-extension/CHANGELOG.md +51 -0
  94. package/augment-extensions/examples/woocommerce-extension/metadata.json +27 -0
  95. package/augment-extensions/visual-design/metadata.json +34 -0
  96. package/augment-extensions/workflows/adr-support/CHANGELOG.md +51 -0
  97. package/augment-extensions/workflows/adr-support/metadata.json +41 -0
  98. package/augment-extensions/workflows/beads/CHANGELOG.md +51 -0
  99. package/augment-extensions/workflows/beads/metadata.json +23 -0
  100. package/augment-extensions/workflows/beads-integration/CHANGELOG.md +51 -0
  101. package/augment-extensions/workflows/beads-integration/metadata.json +30 -0
  102. package/augment-extensions/workflows/database/CHANGELOG.md +51 -0
  103. package/augment-extensions/workflows/database/metadata.json +30 -0
  104. package/augment-extensions/workflows/wordpress-plugin/CHANGELOG.md +51 -0
  105. package/augment-extensions/workflows/wordpress-plugin/metadata.json +41 -0
  106. package/augment-extensions/writing-standards/literature/shakespeare/CHANGELOG.md +51 -0
  107. package/augment-extensions/writing-standards/literature/shakespeare/metadata.json +60 -0
  108. package/augment-extensions/writing-standards/screenplay/CHANGELOG.md +51 -0
  109. package/augment-extensions/writing-standards/screenplay/cinematic-styles/CHANGELOG.md +51 -0
  110. package/augment-extensions/writing-standards/screenplay/cinematic-styles/comedy-formats/CHANGELOG.md +51 -0
  111. package/augment-extensions/writing-standards/screenplay/cinematic-styles/comedy-formats/metadata.json +24 -0
  112. package/augment-extensions/writing-standards/screenplay/cinematic-styles/comedy-formats/monty-python/CHANGELOG.md +51 -0
  113. package/augment-extensions/writing-standards/screenplay/cinematic-styles/comedy-formats/monty-python/metadata.json +24 -0
  114. package/augment-extensions/writing-standards/screenplay/cinematic-styles/comedy-formats/saturday-night-live/CHANGELOG.md +51 -0
  115. package/augment-extensions/writing-standards/screenplay/cinematic-styles/comedy-formats/saturday-night-live/metadata.json +24 -0
  116. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/CHANGELOG.md +51 -0
  117. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/alfred-hitchcock/CHANGELOG.md +51 -0
  118. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/alfred-hitchcock/metadata.json +24 -0
  119. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/ari-aster/CHANGELOG.md +51 -0
  120. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/ari-aster/metadata.json +24 -0
  121. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/brad-bird/CHANGELOG.md +51 -0
  122. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/brad-bird/metadata.json +24 -0
  123. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/brian-de-palma/CHANGELOG.md +51 -0
  124. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/brian-de-palma/metadata.json +24 -0
  125. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/buster-keaton/CHANGELOG.md +51 -0
  126. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/buster-keaton/metadata.json +24 -0
  127. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/christopher-nolan/CHANGELOG.md +51 -0
  128. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/christopher-nolan/metadata.json +24 -0
  129. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/clint-eastwood/CHANGELOG.md +51 -0
  130. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/clint-eastwood/metadata.json +24 -0
  131. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/coen-brothers/CHANGELOG.md +51 -0
  132. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/coen-brothers/metadata.json +24 -0
  133. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/darren-aronofsky/CHANGELOG.md +51 -0
  134. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/darren-aronofsky/metadata.json +24 -0
  135. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/david-fincher/CHANGELOG.md +51 -0
  136. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/david-fincher/metadata.json +24 -0
  137. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/david-lynch/CHANGELOG.md +51 -0
  138. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/david-lynch/metadata.json +24 -0
  139. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/denis-villeneuve/CHANGELOG.md +51 -0
  140. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/denis-villeneuve/metadata.json +24 -0
  141. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/francis-ford-coppola/CHANGELOG.md +51 -0
  142. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/francis-ford-coppola/metadata.json +24 -0
  143. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/gary-marshall/CHANGELOG.md +51 -0
  144. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/gary-marshall/metadata.json +24 -0
  145. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/george-a-romero/CHANGELOG.md +51 -0
  146. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/george-a-romero/metadata.json +24 -0
  147. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/george-lucas/CHANGELOG.md +51 -0
  148. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/george-lucas/metadata.json +24 -0
  149. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/guillermo-del-toro/CHANGELOG.md +51 -0
  150. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/guillermo-del-toro/metadata.json +24 -0
  151. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/gus-van-sant/CHANGELOG.md +51 -0
  152. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/gus-van-sant/metadata.json +24 -0
  153. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/james-ivory-ismail-merchant/CHANGELOG.md +51 -0
  154. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/james-ivory-ismail-merchant/metadata.json +24 -0
  155. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/jim-jarmusch/CHANGELOG.md +51 -0
  156. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/jim-jarmusch/metadata.json +24 -0
  157. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/john-carpenter/CHANGELOG.md +51 -0
  158. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/john-carpenter/metadata.json +24 -0
  159. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/john-ford/CHANGELOG.md +51 -0
  160. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/john-ford/metadata.json +24 -0
  161. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/john-huston/CHANGELOG.md +51 -0
  162. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/john-huston/metadata.json +24 -0
  163. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/john-landis/CHANGELOG.md +51 -0
  164. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/john-landis/metadata.json +24 -0
  165. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/jonathan-demme/CHANGELOG.md +51 -0
  166. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/jonathan-demme/metadata.json +24 -0
  167. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/joseph-l-mankiewicz/CHANGELOG.md +51 -0
  168. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/joseph-l-mankiewicz/metadata.json +24 -0
  169. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/kathryn-bigelow/CHANGELOG.md +51 -0
  170. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/kathryn-bigelow/metadata.json +24 -0
  171. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/kelly-reichardt/CHANGELOG.md +51 -0
  172. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/kelly-reichardt/metadata.json +24 -0
  173. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/kevin-smith/CHANGELOG.md +51 -0
  174. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/kevin-smith/metadata.json +24 -0
  175. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/linda-shayne/CHANGELOG.md +51 -0
  176. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/linda-shayne/metadata.json +24 -0
  177. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/martin-scorsese/CHANGELOG.md +51 -0
  178. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/martin-scorsese/metadata.json +24 -0
  179. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/mel-brooks/CHANGELOG.md +51 -0
  180. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/mel-brooks/metadata.json +24 -0
  181. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/metadata.json +25 -0
  182. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/michael-curtiz/CHANGELOG.md +51 -0
  183. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/michael-curtiz/metadata.json +24 -0
  184. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/michael-mann/CHANGELOG.md +51 -0
  185. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/michael-mann/metadata.json +24 -0
  186. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/mike-nichols/CHANGELOG.md +51 -0
  187. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/mike-nichols/metadata.json +24 -0
  188. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/orson-welles/CHANGELOG.md +51 -0
  189. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/orson-welles/metadata.json +24 -0
  190. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/park-chan-wook/CHANGELOG.md +51 -0
  191. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/park-chan-wook/metadata.json +24 -0
  192. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/paul-thomas-anderson/CHANGELOG.md +51 -0
  193. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/paul-thomas-anderson/metadata.json +24 -0
  194. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/penny-marshall/CHANGELOG.md +51 -0
  195. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/penny-marshall/metadata.json +24 -0
  196. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/peter-bogdanovich/CHANGELOG.md +51 -0
  197. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/peter-bogdanovich/metadata.json +24 -0
  198. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/quentin-tarantino/CHANGELOG.md +51 -0
  199. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/quentin-tarantino/metadata.json +24 -0
  200. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/richard-linklater/CHANGELOG.md +51 -0
  201. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/richard-linklater/metadata.json +24 -0
  202. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/rob-reiner/CHANGELOG.md +51 -0
  203. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/rob-reiner/metadata.json +24 -0
  204. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/robert-altman/CHANGELOG.md +51 -0
  205. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/robert-altman/metadata.json +24 -0
  206. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/robert-eggers/CHANGELOG.md +51 -0
  207. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/robert-eggers/metadata.json +24 -0
  208. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/robert-zemeckis/CHANGELOG.md +51 -0
  209. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/robert-zemeckis/metadata.json +24 -0
  210. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/sam-peckinpah/CHANGELOG.md +51 -0
  211. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/sam-peckinpah/metadata.json +24 -0
  212. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/sidney-lumet/CHANGELOG.md +51 -0
  213. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/sidney-lumet/metadata.json +24 -0
  214. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/spike-lee/CHANGELOG.md +51 -0
  215. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/spike-lee/metadata.json +24 -0
  216. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/stanley-donen-gene-kelly/CHANGELOG.md +51 -0
  217. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/stanley-donen-gene-kelly/metadata.json +24 -0
  218. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/stanley-kubrick/CHANGELOG.md +51 -0
  219. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/stanley-kubrick/metadata.json +24 -0
  220. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/steve-martin/CHANGELOG.md +51 -0
  221. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/steve-martin/metadata.json +24 -0
  222. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/steven-spielberg/CHANGELOG.md +51 -0
  223. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/steven-spielberg/metadata.json +24 -0
  224. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/sydney-pollack/CHANGELOG.md +51 -0
  225. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/sydney-pollack/metadata.json +24 -0
  226. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/terry-gilliam/CHANGELOG.md +51 -0
  227. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/terry-gilliam/metadata.json +24 -0
  228. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/tim-burton/CHANGELOG.md +51 -0
  229. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/tim-burton/metadata.json +24 -0
  230. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/tobe-hooper/CHANGELOG.md +51 -0
  231. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/tobe-hooper/metadata.json +24 -0
  232. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/wes-anderson/CHANGELOG.md +51 -0
  233. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/wes-anderson/metadata.json +24 -0
  234. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/william-friedkin/CHANGELOG.md +51 -0
  235. package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/william-friedkin/metadata.json +24 -0
  236. package/augment-extensions/writing-standards/screenplay/cinematic-styles/films/CHANGELOG.md +51 -0
  237. package/augment-extensions/writing-standards/screenplay/cinematic-styles/films/blue-ruin/CHANGELOG.md +51 -0
  238. package/augment-extensions/writing-standards/screenplay/cinematic-styles/films/blue-ruin/metadata.json +24 -0
  239. package/augment-extensions/writing-standards/screenplay/cinematic-styles/films/metadata.json +24 -0
  240. package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/CHANGELOG.md +51 -0
  241. package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/fast-and-furious/CHANGELOG.md +51 -0
  242. package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/fast-and-furious/metadata.json +24 -0
  243. package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/harry-potter/CHANGELOG.md +51 -0
  244. package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/harry-potter/metadata.json +24 -0
  245. package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/james-bond/CHANGELOG.md +51 -0
  246. package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/james-bond/metadata.json +24 -0
  247. package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/john-wick/CHANGELOG.md +51 -0
  248. package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/john-wick/metadata.json +24 -0
  249. package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/lord-of-the-rings/CHANGELOG.md +51 -0
  250. package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/lord-of-the-rings/metadata.json +24 -0
  251. package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/mcu/CHANGELOG.md +51 -0
  252. package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/mcu/metadata.json +25 -0
  253. package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/metadata.json +25 -0
  254. package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/star-trek/CHANGELOG.md +51 -0
  255. package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/star-trek/metadata.json +33 -0
  256. package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/star-wars/CHANGELOG.md +51 -0
  257. package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/star-wars/metadata.json +24 -0
  258. package/augment-extensions/writing-standards/screenplay/cinematic-styles/metadata.json +50 -0
  259. package/augment-extensions/writing-standards/screenplay/cinematic-styles/narrative-theory/CHANGELOG.md +51 -0
  260. package/augment-extensions/writing-standards/screenplay/cinematic-styles/narrative-theory/joseph-campbell/CHANGELOG.md +51 -0
  261. package/augment-extensions/writing-standards/screenplay/cinematic-styles/narrative-theory/joseph-campbell/metadata.json +24 -0
  262. package/augment-extensions/writing-standards/screenplay/cinematic-styles/narrative-theory/metadata.json +24 -0
  263. package/augment-extensions/writing-standards/screenplay/cinematic-styles/producers/CHANGELOG.md +51 -0
  264. package/augment-extensions/writing-standards/screenplay/cinematic-styles/producers/bruckheimer-and-simpson/CHANGELOG.md +51 -0
  265. package/augment-extensions/writing-standards/screenplay/cinematic-styles/producers/bruckheimer-and-simpson/metadata.json +24 -0
  266. package/augment-extensions/writing-standards/screenplay/cinematic-styles/producers/metadata.json +23 -0
  267. package/augment-extensions/writing-standards/screenplay/genres/CHANGELOG.md +51 -0
  268. package/augment-extensions/writing-standards/screenplay/genres/metadata.json +43 -0
  269. package/augment-extensions/writing-standards/screenplay/metadata.json +65 -0
  270. package/augment-extensions/writing-standards/screenplay/styles/CHANGELOG.md +51 -0
  271. package/augment-extensions/writing-standards/screenplay/styles/metadata.json +38 -0
  272. package/augment-extensions/writing-standards/screenplay/themes/CHANGELOG.md +51 -0
  273. package/augment-extensions/writing-standards/screenplay/themes/metadata.json +47 -0
  274. package/cli/dist/__test_health-checker.d.ts +2 -0
  275. package/cli/dist/__test_health-checker.d.ts.map +1 -0
  276. package/cli/dist/__test_health-checker.js +4 -0
  277. package/cli/dist/__test_health-checker.js.map +1 -0
  278. package/cli/dist/__test_template-engine.d.ts +2 -0
  279. package/cli/dist/__test_template-engine.d.ts.map +1 -0
  280. package/cli/dist/__test_template-engine.js +4 -0
  281. package/cli/dist/__test_template-engine.js.map +1 -0
  282. package/cli/dist/cli.js +25 -0
  283. package/cli/dist/cli.js.map +1 -1
  284. package/cli/dist/commands/generate-shot-list/formatter/json-formatter.d.ts +1 -0
  285. package/cli/dist/commands/generate-shot-list/formatter/json-formatter.d.ts.map +1 -1
  286. package/cli/dist/commands/generate-shot-list/formatter/json-formatter.js +6 -0
  287. package/cli/dist/commands/generate-shot-list/formatter/json-formatter.js.map +1 -1
  288. package/cli/dist/commands/generate-shot-list/formatter/jsonl-formatter.d.ts +1 -0
  289. package/cli/dist/commands/generate-shot-list/formatter/jsonl-formatter.d.ts.map +1 -1
  290. package/cli/dist/commands/generate-shot-list/formatter/jsonl-formatter.js +6 -0
  291. package/cli/dist/commands/generate-shot-list/formatter/jsonl-formatter.js.map +1 -1
  292. package/cli/dist/commands/generate-shot-list/formatter/markdown-formatter.d.ts +14 -0
  293. package/cli/dist/commands/generate-shot-list/formatter/markdown-formatter.d.ts.map +1 -1
  294. package/cli/dist/commands/generate-shot-list/formatter/markdown-formatter.js +46 -3
  295. package/cli/dist/commands/generate-shot-list/formatter/markdown-formatter.js.map +1 -1
  296. package/cli/dist/commands/generate-shot-list/generator/context-builder.d.ts +29 -1
  297. package/cli/dist/commands/generate-shot-list/generator/context-builder.d.ts.map +1 -1
  298. package/cli/dist/commands/generate-shot-list/generator/context-builder.js +310 -27
  299. package/cli/dist/commands/generate-shot-list/generator/context-builder.js.map +1 -1
  300. package/cli/dist/commands/generate-shot-list/generator/index.d.ts +26 -2
  301. package/cli/dist/commands/generate-shot-list/generator/index.d.ts.map +1 -1
  302. package/cli/dist/commands/generate-shot-list/generator/index.js +162 -10
  303. package/cli/dist/commands/generate-shot-list/generator/index.js.map +1 -1
  304. package/cli/dist/commands/generate-shot-list/generator/metadata-extractor.d.ts.map +1 -1
  305. package/cli/dist/commands/generate-shot-list/generator/metadata-extractor.js +1 -0
  306. package/cli/dist/commands/generate-shot-list/generator/metadata-extractor.js.map +1 -1
  307. package/cli/dist/commands/generate-shot-list/generator/types.d.ts +12 -2
  308. package/cli/dist/commands/generate-shot-list/generator/types.d.ts.map +1 -1
  309. package/cli/dist/commands/generate-shot-list/help-text.d.ts +1 -1
  310. package/cli/dist/commands/generate-shot-list/help-text.d.ts.map +1 -1
  311. package/cli/dist/commands/generate-shot-list/help-text.js +48 -5
  312. package/cli/dist/commands/generate-shot-list/help-text.js.map +1 -1
  313. package/cli/dist/commands/generate-shot-list/logger/jsonl-writer.d.ts +11 -1
  314. package/cli/dist/commands/generate-shot-list/logger/jsonl-writer.d.ts.map +1 -1
  315. package/cli/dist/commands/generate-shot-list/logger/jsonl-writer.js +61 -1
  316. package/cli/dist/commands/generate-shot-list/logger/jsonl-writer.js.map +1 -1
  317. package/cli/dist/commands/generate-shot-list/parser/docx-parser.d.ts +29 -0
  318. package/cli/dist/commands/generate-shot-list/parser/docx-parser.d.ts.map +1 -0
  319. package/cli/dist/commands/generate-shot-list/parser/docx-parser.js +111 -0
  320. package/cli/dist/commands/generate-shot-list/parser/docx-parser.js.map +1 -0
  321. package/cli/dist/commands/generate-shot-list/parser/finaldraft-parser.d.ts +18 -0
  322. package/cli/dist/commands/generate-shot-list/parser/finaldraft-parser.d.ts.map +1 -0
  323. package/cli/dist/commands/generate-shot-list/parser/finaldraft-parser.js +184 -0
  324. package/cli/dist/commands/generate-shot-list/parser/finaldraft-parser.js.map +1 -0
  325. package/cli/dist/commands/generate-shot-list/parser/index.d.ts +4 -3
  326. package/cli/dist/commands/generate-shot-list/parser/index.d.ts.map +1 -1
  327. package/cli/dist/commands/generate-shot-list/parser/index.js +54 -3
  328. package/cli/dist/commands/generate-shot-list/parser/index.js.map +1 -1
  329. package/cli/dist/commands/generate-shot-list/parser/pdf-parser.d.ts +24 -0
  330. package/cli/dist/commands/generate-shot-list/parser/pdf-parser.d.ts.map +1 -0
  331. package/cli/dist/commands/generate-shot-list/parser/pdf-parser.js +84 -0
  332. package/cli/dist/commands/generate-shot-list/parser/pdf-parser.js.map +1 -0
  333. package/cli/dist/commands/generate-shot-list/parser/rtf-parser.d.ts +28 -0
  334. package/cli/dist/commands/generate-shot-list/parser/rtf-parser.d.ts.map +1 -0
  335. package/cli/dist/commands/generate-shot-list/parser/rtf-parser.js +143 -0
  336. package/cli/dist/commands/generate-shot-list/parser/rtf-parser.js.map +1 -0
  337. package/cli/dist/commands/generate-shot-list/parser/types.d.ts +9 -6
  338. package/cli/dist/commands/generate-shot-list/parser/types.d.ts.map +1 -1
  339. package/cli/dist/commands/generate-shot-list/parser/types.js.map +1 -1
  340. package/cli/dist/commands/generate-shot-list/schema/shot-list.schema.json +341 -0
  341. package/cli/dist/commands/generate-shot-list/schema/validator.d.ts +55 -0
  342. package/cli/dist/commands/generate-shot-list/schema/validator.d.ts.map +1 -0
  343. package/cli/dist/commands/generate-shot-list/schema/validator.js +180 -0
  344. package/cli/dist/commands/generate-shot-list/schema/validator.js.map +1 -0
  345. package/cli/dist/commands/generate-shot-list/style/guideline-parser.d.ts +36 -0
  346. package/cli/dist/commands/generate-shot-list/style/guideline-parser.d.ts.map +1 -0
  347. package/cli/dist/commands/generate-shot-list/style/guideline-parser.js +108 -0
  348. package/cli/dist/commands/generate-shot-list/style/guideline-parser.js.map +1 -0
  349. package/cli/dist/commands/generate-shot-list/style/index.d.ts +39 -0
  350. package/cli/dist/commands/generate-shot-list/style/index.d.ts.map +1 -0
  351. package/cli/dist/commands/generate-shot-list/style/index.js +85 -0
  352. package/cli/dist/commands/generate-shot-list/style/index.js.map +1 -0
  353. package/cli/dist/commands/generate-shot-list/style/style-loader.d.ts +35 -0
  354. package/cli/dist/commands/generate-shot-list/style/style-loader.d.ts.map +1 -0
  355. package/cli/dist/commands/generate-shot-list/style/style-loader.js +178 -0
  356. package/cli/dist/commands/generate-shot-list/style/style-loader.js.map +1 -0
  357. package/cli/dist/commands/generate-shot-list/style/style-merger.d.ts +36 -0
  358. package/cli/dist/commands/generate-shot-list/style/style-merger.d.ts.map +1 -0
  359. package/cli/dist/commands/generate-shot-list/style/style-merger.js +123 -0
  360. package/cli/dist/commands/generate-shot-list/style/style-merger.js.map +1 -0
  361. package/cli/dist/commands/generate-shot-list/style/types.d.ts +105 -0
  362. package/cli/dist/commands/generate-shot-list/style/types.d.ts.map +1 -0
  363. package/cli/dist/commands/generate-shot-list/style/types.js +8 -0
  364. package/cli/dist/commands/generate-shot-list/style/types.js.map +1 -0
  365. package/cli/dist/commands/generate-shot-list.d.ts +1 -0
  366. package/cli/dist/commands/generate-shot-list.d.ts.map +1 -1
  367. package/cli/dist/commands/generate-shot-list.js +79 -25
  368. package/cli/dist/commands/generate-shot-list.js.map +1 -1
  369. package/cli/dist/commands/list.d.ts +1 -0
  370. package/cli/dist/commands/list.d.ts.map +1 -1
  371. package/cli/dist/commands/list.js +21 -5
  372. package/cli/dist/commands/list.js.map +1 -1
  373. package/cli/dist/commands/upgrade.d.ts +15 -0
  374. package/cli/dist/commands/upgrade.d.ts.map +1 -0
  375. package/cli/dist/commands/upgrade.js +229 -0
  376. package/cli/dist/commands/upgrade.js.map +1 -0
  377. package/cli/dist/commands/use.d.ts +15 -0
  378. package/cli/dist/commands/use.d.ts.map +1 -0
  379. package/cli/dist/commands/use.js +180 -0
  380. package/cli/dist/commands/use.js.map +1 -0
  381. package/cli/dist/commands/version-info.d.ts +15 -0
  382. package/cli/dist/commands/version-info.d.ts.map +1 -0
  383. package/cli/dist/commands/version-info.js +194 -0
  384. package/cli/dist/commands/version-info.js.map +1 -0
  385. package/cli/dist/core/compatibility-checker.d.ts +73 -0
  386. package/cli/dist/core/compatibility-checker.d.ts.map +1 -0
  387. package/cli/dist/core/compatibility-checker.js +188 -0
  388. package/cli/dist/core/compatibility-checker.js.map +1 -0
  389. package/cli/dist/core/index.d.ts +9 -0
  390. package/cli/dist/core/index.d.ts.map +1 -0
  391. package/cli/dist/core/index.js +16 -0
  392. package/cli/dist/core/index.js.map +1 -0
  393. package/cli/dist/core/module-loader.d.ts +68 -0
  394. package/cli/dist/core/module-loader.d.ts.map +1 -0
  395. package/cli/dist/core/module-loader.js +137 -0
  396. package/cli/dist/core/module-loader.js.map +1 -0
  397. package/cli/dist/core/version-manager.d.ts +62 -0
  398. package/cli/dist/core/version-manager.d.ts.map +1 -0
  399. package/cli/dist/core/version-manager.js +157 -0
  400. package/cli/dist/core/version-manager.js.map +1 -0
  401. package/cli/dist/core/version-resolver.d.ts +63 -0
  402. package/cli/dist/core/version-resolver.d.ts.map +1 -0
  403. package/cli/dist/core/version-resolver.js +163 -0
  404. package/cli/dist/core/version-resolver.js.map +1 -0
  405. package/cli/dist/gui/app.d.ts +17 -0
  406. package/cli/dist/gui/app.d.ts.map +1 -0
  407. package/cli/dist/gui/app.js +79 -0
  408. package/cli/dist/gui/app.js.map +1 -0
  409. package/cli/dist/gui/components/preview-pane.d.ts +40 -0
  410. package/cli/dist/gui/components/preview-pane.d.ts.map +1 -0
  411. package/cli/dist/gui/components/preview-pane.js +90 -0
  412. package/cli/dist/gui/components/preview-pane.js.map +1 -0
  413. package/cli/dist/gui/components/search-filter.d.ts +26 -0
  414. package/cli/dist/gui/components/search-filter.d.ts.map +1 -0
  415. package/cli/dist/gui/components/search-filter.js +168 -0
  416. package/cli/dist/gui/components/search-filter.js.map +1 -0
  417. package/cli/dist/gui/components/status-bar.d.ts +22 -0
  418. package/cli/dist/gui/components/status-bar.d.ts.map +1 -0
  419. package/cli/dist/gui/components/status-bar.js +58 -0
  420. package/cli/dist/gui/components/status-bar.js.map +1 -0
  421. package/cli/dist/gui/components/tree-navigator.d.ts +30 -0
  422. package/cli/dist/gui/components/tree-navigator.d.ts.map +1 -0
  423. package/cli/dist/gui/components/tree-navigator.js +133 -0
  424. package/cli/dist/gui/components/tree-navigator.js.map +1 -0
  425. package/cli/dist/gui/components/version-selector.d.ts +27 -0
  426. package/cli/dist/gui/components/version-selector.d.ts.map +1 -0
  427. package/cli/dist/gui/components/version-selector.js +110 -0
  428. package/cli/dist/gui/components/version-selector.js.map +1 -0
  429. package/cli/dist/gui/hooks/use-version-loader.d.ts +25 -0
  430. package/cli/dist/gui/hooks/use-version-loader.d.ts.map +1 -0
  431. package/cli/dist/gui/hooks/use-version-loader.js +116 -0
  432. package/cli/dist/gui/hooks/use-version-loader.js.map +1 -0
  433. package/cli/dist/gui/index.d.ts +15 -0
  434. package/cli/dist/gui/index.d.ts.map +1 -0
  435. package/cli/dist/gui/index.js +39 -0
  436. package/cli/dist/gui/index.js.map +1 -0
  437. package/cli/dist/gui/layouts/main-layout.d.ts +14 -0
  438. package/cli/dist/gui/layouts/main-layout.d.ts.map +1 -0
  439. package/cli/dist/gui/layouts/main-layout.js +205 -0
  440. package/cli/dist/gui/layouts/main-layout.js.map +1 -0
  441. package/cli/dist/gui/state/navigation-state.d.ts +39 -0
  442. package/cli/dist/gui/state/navigation-state.d.ts.map +1 -0
  443. package/cli/dist/gui/state/navigation-state.js +151 -0
  444. package/cli/dist/gui/state/navigation-state.js.map +1 -0
  445. package/cli/dist/gui/state/selection-state.d.ts +36 -0
  446. package/cli/dist/gui/state/selection-state.d.ts.map +1 -0
  447. package/cli/dist/gui/state/selection-state.js +132 -0
  448. package/cli/dist/gui/state/selection-state.js.map +1 -0
  449. package/cli/dist/gui/theme.d.ts +50 -0
  450. package/cli/dist/gui/theme.d.ts.map +1 -0
  451. package/cli/dist/gui/theme.js +73 -0
  452. package/cli/dist/gui/theme.js.map +1 -0
  453. package/cli/dist/utils/help.d.ts +13 -0
  454. package/cli/dist/utils/help.d.ts.map +1 -0
  455. package/cli/dist/utils/help.js +137 -0
  456. package/cli/dist/utils/help.js.map +1 -0
  457. package/cli/dist/utils/module-system.d.ts +8 -0
  458. package/cli/dist/utils/module-system.d.ts.map +1 -1
  459. package/cli/dist/utils/module-system.js +38 -3
  460. package/cli/dist/utils/module-system.js.map +1 -1
  461. package/cli/dist/utils/validate-versioning.d.ts +43 -0
  462. package/cli/dist/utils/validate-versioning.d.ts.map +1 -0
  463. package/cli/dist/utils/validate-versioning.js +258 -0
  464. package/cli/dist/utils/validate-versioning.js.map +1 -0
  465. package/package.json +11 -1
@@ -0,0 +1,625 @@
1
+ # Modern TypeScript Features (5.0-5.6+)
2
+
3
+ Comprehensive guide to modern TypeScript features introduced in versions 5.0 through 5.6+.
4
+
5
+ ## Table of Contents
6
+ - [Const Type Parameters (5.0)](#const-type-parameters-50)
7
+ - [Inferred Type Predicates (5.5)](#inferred-type-predicates-55)
8
+ - [Satisfies Operator (4.9/5.0)](#satisfies-operator-4950)
9
+ - [Variance Annotations (4.7)](#variance-annotations-47)
10
+ - [Declaration Merging Patterns](#declaration-merging-patterns)
11
+ - [Template Literal Types](#template-literal-types)
12
+ - [Const Assertions](#const-assertions)
13
+
14
+ ---
15
+
16
+ ## Const Type Parameters (5.0)
17
+
18
+ TypeScript 5.0 introduced `const` type parameters, which infer the most specific type possible.
19
+
20
+ ### Basic Usage
21
+
22
+ ```typescript
23
+ // ❌ Before: Generic type loses literal types
24
+ function makeArray<T>(items: T[]): T[] {
25
+ return items;
26
+ }
27
+
28
+ const numbers = makeArray([1, 2, 3]); // Type: number[]
29
+
30
+ // ✅ After: Const type parameter preserves literal types
31
+ function makeArrayConst<const T>(items: T[]): T[] {
32
+ return items;
33
+ }
34
+
35
+ const numbersConst = makeArrayConst([1, 2, 3]); // Type: [1, 2, 3]
36
+ ```
37
+
38
+ ### Practical Example: Configuration Objects
39
+
40
+ ```typescript
41
+ // ✅ Preserve exact configuration shape
42
+ function defineConfig<const T extends Record<string, unknown>>(config: T): T {
43
+ return config;
44
+ }
45
+
46
+ const appConfig = defineConfig({
47
+ apiUrl: 'https://api.example.com',
48
+ timeout: 5000,
49
+ retries: 3,
50
+ features: {
51
+ darkMode: true,
52
+ analytics: false
53
+ }
54
+ } as const);
55
+
56
+ // Type is preserved exactly:
57
+ // {
58
+ // readonly apiUrl: "https://api.example.com";
59
+ // readonly timeout: 5000;
60
+ // readonly retries: 3;
61
+ // readonly features: {
62
+ // readonly darkMode: true;
63
+ // readonly analytics: false;
64
+ // };
65
+ // }
66
+
67
+ // This enables autocomplete and type safety
68
+ appConfig.apiUrl; // ✅ Type: "https://api.example.com"
69
+ appConfig.timeout; // ✅ Type: 5000
70
+ ```
71
+
72
+ ### Route Definitions
73
+
74
+ ```typescript
75
+ // ✅ Type-safe route definitions
76
+ function defineRoutes<const T extends readonly Route[]>(routes: T): T {
77
+ return routes;
78
+ }
79
+
80
+ interface Route {
81
+ path: string;
82
+ method: 'GET' | 'POST' | 'PUT' | 'DELETE';
83
+ handler: string;
84
+ }
85
+
86
+ const routes = defineRoutes([
87
+ { path: '/users', method: 'GET', handler: 'getUsers' },
88
+ { path: '/users/:id', method: 'GET', handler: 'getUser' },
89
+ { path: '/users', method: 'POST', handler: 'createUser' },
90
+ ] as const);
91
+
92
+ // Type: readonly [
93
+ // { readonly path: "/users"; readonly method: "GET"; readonly handler: "getUsers"; },
94
+ // { readonly path: "/users/:id"; readonly method: "GET"; readonly handler: "getUser"; },
95
+ // { readonly path: "/users"; readonly method: "POST"; readonly handler: "createUser"; }
96
+ // ]
97
+
98
+ type RoutePaths = typeof routes[number]['path'];
99
+ // Type: "/users" | "/users/:id"
100
+ ```
101
+
102
+ ---
103
+
104
+ ## Inferred Type Predicates (5.5)
105
+
106
+ TypeScript 5.5 can automatically infer type predicates from function implementations.
107
+
108
+ ### Before vs After
109
+
110
+ ```typescript
111
+ // ❌ Before: Manual type predicate
112
+ function isString(value: unknown): value is string {
113
+ return typeof value === 'string';
114
+ }
115
+
116
+ // ✅ After: Inferred type predicate (TS 5.5+)
117
+ function isString(value: unknown) {
118
+ return typeof value === 'string';
119
+ }
120
+ // TypeScript infers: value is string
121
+
122
+ // Works with arrays too
123
+ function filterStrings(items: unknown[]) {
124
+ return items.filter(isString);
125
+ }
126
+ // Return type: string[]
127
+ ```
128
+
129
+ ### Complex Type Guards
130
+
131
+ ```typescript
132
+ interface User {
133
+ id: number;
134
+ name: string;
135
+ email: string;
136
+ }
137
+
138
+ interface Admin extends User {
139
+ role: 'admin';
140
+ permissions: string[];
141
+ }
142
+
143
+ // ✅ Inferred type predicate
144
+ function isAdmin(user: User) {
145
+ return 'role' in user && user.role === 'admin';
146
+ }
147
+ // TypeScript infers: user is Admin
148
+
149
+ function processUser(user: User) {
150
+ if (isAdmin(user)) {
151
+ // ✅ TypeScript knows user is Admin here
152
+ console.log(user.permissions);
153
+ }
154
+ }
155
+ ```
156
+
157
+ ### Array Filtering
158
+
159
+ ```typescript
160
+ interface Product {
161
+ id: number;
162
+ name: string;
163
+ price: number | null;
164
+ }
165
+
166
+ const products: Product[] = [
167
+ { id: 1, name: 'Widget', price: 10 },
168
+ { id: 2, name: 'Gadget', price: null },
169
+ { id: 3, name: 'Doohickey', price: 15 },
170
+ ];
171
+
172
+ // ✅ Inferred type predicate
173
+ function hasPrice(product: Product) {
174
+ return product.price !== null;
175
+ }
176
+
177
+ const productsWithPrices = products.filter(hasPrice);
178
+ // Type: Product[] where price is number (not null)
179
+ ```
180
+
181
+ ---
182
+
183
+ ## Satisfies Operator (4.9/5.0)
184
+
185
+ The `satisfies` operator validates types without widening them.
186
+
187
+ ### Basic Usage
188
+
189
+ ```typescript
190
+ // ❌ Problem: Type annotation widens the type
191
+ const config: Record<string, string | number> = {
192
+ apiUrl: 'https://api.example.com',
193
+ timeout: 5000
194
+ };
195
+
196
+ config.apiUrl.toUpperCase(); // ❌ Error: Property 'toUpperCase' does not exist on type 'string | number'
197
+
198
+ // ✅ Solution: Use satisfies to validate without widening
199
+ const configSatisfies = {
200
+ apiUrl: 'https://api.example.com',
201
+ timeout: 5000
202
+ } satisfies Record<string, string | number>;
203
+
204
+ configSatisfies.apiUrl.toUpperCase(); // ✅ Works! Type is still "https://api.example.com"
205
+ configSatisfies.timeout.toFixed(2); // ✅ Works! Type is still 5000
206
+ ```
207
+
208
+ ### Color Palette Example
209
+
210
+ ```typescript
211
+ type RGB = readonly [red: number, green: number, blue: number];
212
+ type Color = string | RGB;
213
+
214
+ // ✅ Validate structure while preserving exact types
215
+ const palette = {
216
+ primary: '#007bff',
217
+ secondary: [128, 128, 128],
218
+ success: '#28a745',
219
+ danger: [255, 0, 0],
220
+ warning: '#ffc107'
221
+ } satisfies Record<string, Color>;
222
+
223
+ // Type is preserved:
224
+ palette.primary; // Type: "#007bff"
225
+ palette.secondary; // Type: [128, 128, 128]
226
+
227
+ // But validation ensures correctness:
228
+ const invalid = {
229
+ primary: '#007bff',
230
+ secondary: [128, 128] // ❌ Error: Type '[number, number]' is not assignable to type 'Color'
231
+ } satisfies Record<string, Color>;
232
+ ```
233
+
234
+ ### API Response Validation
235
+
236
+ ```typescript
237
+ interface ApiResponse<T> {
238
+ data: T;
239
+ status: number;
240
+ message: string;
241
+ }
242
+
243
+ // ✅ Validate response shape while preserving data type
244
+ const userResponse = {
245
+ data: { id: 1, name: 'Alice', email: 'alice@example.com' },
246
+ status: 200,
247
+ message: 'Success'
248
+ } satisfies ApiResponse<{ id: number; name: string; email: string }>;
249
+
250
+ userResponse.data.name; // ✅ Type: string (not widened to unknown)
251
+ ```
252
+
253
+ ---
254
+
255
+ ## Variance Annotations (4.7)
256
+
257
+ TypeScript 4.7 introduced explicit variance annotations for better type safety.
258
+
259
+ ### Covariance (`out`)
260
+
261
+ ```typescript
262
+ // ✅ Explicitly mark type parameter as covariant (output-only)
263
+ interface Producer<out T> {
264
+ produce(): T;
265
+ }
266
+
267
+ // This is safe because T only appears in output positions
268
+ const stringProducer: Producer<string> = { produce: () => 'hello' };
269
+ const unknownProducer: Producer<unknown> = stringProducer; // ✅ OK
270
+ ```
271
+
272
+ ### Contravariance (`in`)
273
+
274
+ ```typescript
275
+ // ✅ Explicitly mark type parameter as contravariant (input-only)
276
+ interface Consumer<in T> {
277
+ consume(value: T): void;
278
+ }
279
+
280
+ // This is safe because T only appears in input positions
281
+ const unknownConsumer: Consumer<unknown> = { consume: (value) => console.log(value) };
282
+ const stringConsumer: Consumer<string> = unknownConsumer; // ✅ OK
283
+ ```
284
+
285
+ ### Invariance (default)
286
+
287
+ ```typescript
288
+ // Default: Type parameter is invariant (both input and output)
289
+ interface Box<T> {
290
+ get(): T;
291
+ set(value: T): void;
292
+ }
293
+
294
+ // ❌ Not safe to assign
295
+ const stringBox: Box<string> = { get: () => 'hello', set: (v) => {} };
296
+ const unknownBox: Box<unknown> = stringBox; // ❌ Error
297
+ ```
298
+
299
+ ### Practical Example: Event Emitter
300
+
301
+ ```typescript
302
+ // ✅ Use variance annotations for type-safe event emitter
303
+ interface EventEmitter<out Events extends Record<string, unknown>> {
304
+ on<K extends keyof Events>(event: K, handler: (data: Events[K]) => void): void;
305
+ emit<K extends keyof Events>(event: K, data: Events[K]): void;
306
+ }
307
+
308
+ interface AppEvents {
309
+ userLogin: { userId: number; timestamp: Date };
310
+ userLogout: { userId: number };
311
+ error: { message: string; code: number };
312
+ }
313
+
314
+ const emitter: EventEmitter<AppEvents> = {
315
+ on: (event, handler) => {},
316
+ emit: (event, data) => {}
317
+ };
318
+
319
+ // ✅ Type-safe event handling
320
+ emitter.on('userLogin', (data) => {
321
+ console.log(data.userId); // ✅ Type: number
322
+ console.log(data.timestamp); // ✅ Type: Date
323
+ });
324
+ ```
325
+
326
+ ---
327
+
328
+ ## Declaration Merging Patterns
329
+
330
+ TypeScript allows merging multiple declarations of the same name.
331
+
332
+ ### Interface Merging
333
+
334
+ ```typescript
335
+ // ✅ Extend existing interfaces
336
+ interface User {
337
+ id: number;
338
+ name: string;
339
+ }
340
+
341
+ interface User {
342
+ email: string;
343
+ createdAt: Date;
344
+ }
345
+
346
+ // Merged interface:
347
+ const user: User = {
348
+ id: 1,
349
+ name: 'Alice',
350
+ email: 'alice@example.com',
351
+ createdAt: new Date()
352
+ };
353
+ ```
354
+
355
+ ### Module Augmentation
356
+
357
+ ```typescript
358
+ // ✅ Augment third-party modules
359
+ import 'express';
360
+
361
+ declare module 'express' {
362
+ interface Request {
363
+ user?: {
364
+ id: number;
365
+ email: string;
366
+ };
367
+ }
368
+ }
369
+
370
+ // Now Request has user property
371
+ app.get('/profile', (req, res) => {
372
+ if (req.user) {
373
+ res.json({ id: req.user.id, email: req.user.email });
374
+ }
375
+ });
376
+ ```
377
+
378
+ ### Global Augmentation
379
+
380
+ ```typescript
381
+ // ✅ Add properties to global objects
382
+ declare global {
383
+ interface Window {
384
+ analytics?: {
385
+ track(event: string, properties?: Record<string, unknown>): void;
386
+ };
387
+ }
388
+ }
389
+
390
+ // Now window.analytics is typed
391
+ window.analytics?.track('page_view', { path: '/home' });
392
+ ```
393
+
394
+ ### Namespace Merging
395
+
396
+ ```typescript
397
+ // ✅ Merge namespace with class
398
+ class Album {
399
+ constructor(public title: string) {}
400
+ }
401
+
402
+ namespace Album {
403
+ export function fromJSON(json: { title: string }): Album {
404
+ return new Album(json.title);
405
+ }
406
+
407
+ export function validate(title: string): boolean {
408
+ return title.length > 0 && title.length <= 100;
409
+ }
410
+ }
411
+
412
+ // Use both class and namespace
413
+ const album = new Album('Abbey Road');
414
+ const albumFromJSON = Album.fromJSON({ title: 'Revolver' });
415
+ const isValid = Album.validate('Rubber Soul');
416
+ ```
417
+
418
+ ---
419
+
420
+ ## Template Literal Types
421
+
422
+ Advanced string manipulation at the type level.
423
+
424
+ ### Basic Template Literals
425
+
426
+ ```typescript
427
+ // ✅ Create string literal types dynamically
428
+ type EventName = 'click' | 'focus' | 'blur';
429
+ type EventHandler = `on${Capitalize<EventName>}`;
430
+ // Type: "onClick" | "onFocus" | "onBlur"
431
+
432
+ type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';
433
+ type Endpoint = `/api/${Lowercase<HTTPMethod>}`;
434
+ // Type: "/api/get" | "/api/post" | "/api/put" | "/api/delete"
435
+ ```
436
+
437
+ ### CSS-in-JS Type Safety
438
+
439
+ ```typescript
440
+ // ✅ Type-safe CSS properties
441
+ type CSSUnit = 'px' | 'em' | 'rem' | '%' | 'vh' | 'vw';
442
+ type CSSValue<T extends number> = `${T}${CSSUnit}`;
443
+
444
+ interface Spacing {
445
+ margin: CSSValue<number>;
446
+ padding: CSSValue<number>;
447
+ }
448
+
449
+ const spacing: Spacing = {
450
+ margin: '16px', // ✅ OK
451
+ padding: '2rem', // ✅ OK
452
+ };
453
+
454
+ const invalid: Spacing = {
455
+ margin: '16', // ❌ Error: Type '"16"' is not assignable to type 'CSSValue<number>'
456
+ padding: '2rem',
457
+ };
458
+ ```
459
+
460
+ ### API Route Type Safety
461
+
462
+ ```typescript
463
+ // ✅ Type-safe API routes
464
+ type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
465
+ type Resource = 'users' | 'posts' | 'comments';
466
+ type APIRoute = `/${Resource}` | `/${Resource}/:id`;
467
+
468
+ type RouteHandler<M extends HTTPMethod, R extends APIRoute> = {
469
+ method: M;
470
+ path: R;
471
+ handler: (req: Request, res: Response) => void;
472
+ };
473
+
474
+ const getUsersRoute: RouteHandler<'GET', '/users'> = {
475
+ method: 'GET',
476
+ path: '/users',
477
+ handler: (req, res) => {}
478
+ };
479
+
480
+ const getUserRoute: RouteHandler<'GET', '/users/:id'> = {
481
+ method: 'GET',
482
+ path: '/users/:id',
483
+ handler: (req, res) => {}
484
+ };
485
+ ```
486
+
487
+ ### Database Query Builder
488
+
489
+ ```typescript
490
+ // ✅ Type-safe query builder
491
+ type SQLOperator = 'SELECT' | 'INSERT' | 'UPDATE' | 'DELETE';
492
+ type TableName = 'users' | 'posts' | 'comments';
493
+ type Query<Op extends SQLOperator, Table extends TableName> = `${Op} * FROM ${Table}`;
494
+
495
+ function executeQuery<Op extends SQLOperator, Table extends TableName>(
496
+ query: Query<Op, Table>
497
+ ): void {
498
+ console.log(query);
499
+ }
500
+
501
+ executeQuery('SELECT * FROM users'); // ✅ OK
502
+ executeQuery('SELECT * FROM posts'); // ✅ OK
503
+ executeQuery('SELECT * FROM invalid'); // ❌ Error
504
+ ```
505
+
506
+ ---
507
+
508
+ ## Const Assertions
509
+
510
+ Use `as const` to create deeply readonly types with literal values.
511
+
512
+ ### Object Const Assertions
513
+
514
+ ```typescript
515
+ // ❌ Without const assertion
516
+ const config = {
517
+ apiUrl: 'https://api.example.com',
518
+ timeout: 5000,
519
+ retries: 3
520
+ };
521
+ // Type: { apiUrl: string; timeout: number; retries: number }
522
+
523
+ // ✅ With const assertion
524
+ const configConst = {
525
+ apiUrl: 'https://api.example.com',
526
+ timeout: 5000,
527
+ retries: 3
528
+ } as const;
529
+ // Type: {
530
+ // readonly apiUrl: "https://api.example.com";
531
+ // readonly timeout: 5000;
532
+ // readonly retries: 3;
533
+ // }
534
+ ```
535
+
536
+ ### Array Const Assertions
537
+
538
+ ```typescript
539
+ // ❌ Without const assertion
540
+ const colors = ['red', 'green', 'blue'];
541
+ // Type: string[]
542
+
543
+ // ✅ With const assertion
544
+ const colorsConst = ['red', 'green', 'blue'] as const;
545
+ // Type: readonly ["red", "green", "blue"]
546
+
547
+ type Color = typeof colorsConst[number];
548
+ // Type: "red" | "green" | "blue"
549
+ ```
550
+
551
+ ### Enum Alternative
552
+
553
+ ```typescript
554
+ // ✅ Use const assertion instead of enum
555
+ const Status = {
556
+ PENDING: 'pending',
557
+ APPROVED: 'approved',
558
+ REJECTED: 'rejected'
559
+ } as const;
560
+
561
+ type StatusValue = typeof Status[keyof typeof Status];
562
+ // Type: "pending" | "approved" | "rejected"
563
+
564
+ function updateStatus(status: StatusValue) {
565
+ console.log(status);
566
+ }
567
+
568
+ updateStatus(Status.PENDING); // ✅ OK
569
+ updateStatus('pending'); // ✅ OK
570
+ updateStatus('invalid'); // ❌ Error
571
+ ```
572
+
573
+ ---
574
+
575
+ ## Best Practices
576
+
577
+ 1. **Use const type parameters** when you need to preserve exact literal types
578
+ 2. **Leverage inferred type predicates** to reduce boilerplate in type guards
579
+ 3. **Use satisfies** to validate types without widening them
580
+ 4. **Apply variance annotations** for better type safety in generic interfaces
581
+ 5. **Use declaration merging** to extend third-party types safely
582
+ 6. **Leverage template literal types** for type-safe string manipulation
583
+ 7. **Use const assertions** instead of enums for better type inference
584
+ 8. **Combine features** for maximum type safety and developer experience
585
+
586
+ ---
587
+
588
+ ## Migration Guide
589
+
590
+ ### From TypeScript 4.x to 5.x
591
+
592
+ ```typescript
593
+ // Before (TS 4.x)
594
+ function makeArray<T>(items: T[]): T[] {
595
+ return items;
596
+ }
597
+
598
+ // After (TS 5.0+)
599
+ function makeArray<const T>(items: T[]): T[] {
600
+ return items;
601
+ }
602
+
603
+ // Before (TS 4.x)
604
+ function isString(value: unknown): value is string {
605
+ return typeof value === 'string';
606
+ }
607
+
608
+ // After (TS 5.5+)
609
+ function isString(value: unknown) {
610
+ return typeof value === 'string';
611
+ }
612
+ // Type predicate is inferred automatically
613
+ ```
614
+
615
+ ---
616
+
617
+ ## References
618
+
619
+ - [TypeScript 5.0 Release Notes](https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/)
620
+ - [TypeScript 5.5 Release Notes](https://devblogs.microsoft.com/typescript/announcing-typescript-5-5/)
621
+ - [TypeScript Handbook - Advanced Types](https://www.typescriptlang.org/docs/handbook/2/types-from-types.html)
622
+ - [Template Literal Types](https://www.typescriptlang.org/docs/handbook/2/template-literal-types.html)
623
+
624
+
625
+