@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,850 @@
1
+ # Security and Performance Best Practices
2
+
3
+ Comprehensive guide to security and performance optimization in TypeScript applications.
4
+
5
+ ## Table of Contents
6
+ - [Security Headers in Next.js](#security-headers-in-nextjs)
7
+ - [Type-Safe Runtime Validation](#type-safe-runtime-validation)
8
+ - [Memoization Patterns](#memoization-patterns)
9
+ - [Bundle Analysis](#bundle-analysis)
10
+ - [Tree-Shaking Optimization](#tree-shaking-optimization)
11
+ - [Performance Monitoring](#performance-monitoring)
12
+ - [Best Practices](#best-practices)
13
+
14
+ ---
15
+
16
+ ## Security Headers in Next.js
17
+
18
+ ### Overview
19
+
20
+ Security headers protect your application from common web vulnerabilities like XSS, clickjacking, and MIME sniffing.
21
+
22
+ ### Configuration
23
+
24
+ ```typescript
25
+ // next.config.js
26
+ const securityHeaders = [
27
+ {
28
+ key: 'X-DNS-Prefetch-Control',
29
+ value: 'on'
30
+ },
31
+ {
32
+ key: 'Strict-Transport-Security',
33
+ value: 'max-age=63072000; includeSubDomains; preload'
34
+ },
35
+ {
36
+ key: 'X-Frame-Options',
37
+ value: 'SAMEORIGIN'
38
+ },
39
+ {
40
+ key: 'X-Content-Type-Options',
41
+ value: 'nosniff'
42
+ },
43
+ {
44
+ key: 'X-XSS-Protection',
45
+ value: '1; mode=block'
46
+ },
47
+ {
48
+ key: 'Referrer-Policy',
49
+ value: 'origin-when-cross-origin'
50
+ },
51
+ {
52
+ key: 'Permissions-Policy',
53
+ value: 'camera=(), microphone=(), geolocation=()'
54
+ },
55
+ {
56
+ key: 'Content-Security-Policy',
57
+ value: [
58
+ "default-src 'self'",
59
+ "script-src 'self' 'unsafe-eval' 'unsafe-inline'",
60
+ "style-src 'self' 'unsafe-inline'",
61
+ "img-src 'self' data: https:",
62
+ "font-src 'self' data:",
63
+ "connect-src 'self' https:",
64
+ "frame-ancestors 'none'"
65
+ ].join('; ')
66
+ }
67
+ ];
68
+
69
+ module.exports = {
70
+ async headers() {
71
+ return [
72
+ {
73
+ source: '/:path*',
74
+ headers: securityHeaders
75
+ }
76
+ ];
77
+ }
78
+ };
79
+ ```
80
+
81
+ ### Content Security Policy (CSP)
82
+
83
+ ```typescript
84
+ // lib/csp.ts
85
+ export const generateCSP = () => {
86
+ const nonce = Buffer.from(crypto.randomUUID()).toString('base64');
87
+
88
+ const csp = [
89
+ `default-src 'self'`,
90
+ `script-src 'self' 'nonce-${nonce}' 'strict-dynamic'`,
91
+ `style-src 'self' 'unsafe-inline'`,
92
+ `img-src 'self' data: https:`,
93
+ `font-src 'self' data:`,
94
+ `connect-src 'self' https:`,
95
+ `frame-ancestors 'none'`,
96
+ `base-uri 'self'`,
97
+ `form-action 'self'`
98
+ ].join('; ');
99
+
100
+ return { csp, nonce };
101
+ };
102
+
103
+ // middleware.ts
104
+ import { NextResponse } from 'next/server';
105
+ import type { NextRequest } from 'next/server';
106
+ import { generateCSP } from './lib/csp';
107
+
108
+ export function middleware(request: NextRequest) {
109
+ const { csp, nonce } = generateCSP();
110
+
111
+ const response = NextResponse.next();
112
+ response.headers.set('Content-Security-Policy', csp);
113
+ response.headers.set('X-Nonce', nonce);
114
+
115
+ return response;
116
+ }
117
+ ```
118
+
119
+ ### Environment Variables Security
120
+
121
+ ```typescript
122
+ // lib/env.ts
123
+ import { z } from 'zod';
124
+
125
+ const envSchema = z.object({
126
+ // Public variables (exposed to client)
127
+ NEXT_PUBLIC_API_URL: z.string().url(),
128
+ NEXT_PUBLIC_APP_NAME: z.string(),
129
+
130
+ // Private variables (server-only)
131
+ DATABASE_URL: z.string().url(),
132
+ API_SECRET_KEY: z.string().min(32),
133
+ JWT_SECRET: z.string().min(32),
134
+
135
+ // Optional with defaults
136
+ NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),
137
+ PORT: z.coerce.number().default(3000)
138
+ });
139
+
140
+ export const env = envSchema.parse(process.env);
141
+
142
+ // Type-safe environment variables
143
+ export type Env = z.infer<typeof envSchema>;
144
+ ```
145
+
146
+ ### Sanitizing User Input
147
+
148
+ ```typescript
149
+ import DOMPurify from 'isomorphic-dompurify';
150
+
151
+ // Sanitize HTML content
152
+ export function sanitizeHTML(dirty: string): string {
153
+ return DOMPurify.sanitize(dirty, {
154
+ ALLOWED_TAGS: ['b', 'i', 'em', 'strong', 'a', 'p'],
155
+ ALLOWED_ATTR: ['href']
156
+ });
157
+ }
158
+
159
+ // Usage in component
160
+ function UserContent({ content }: { content: string }) {
161
+ const clean = sanitizeHTML(content);
162
+ return <div dangerouslySetInnerHTML={{ __html: clean }} />;
163
+ }
164
+ ```
165
+
166
+ ---
167
+
168
+ ## Type-Safe Runtime Validation
169
+
170
+ ### Using Zod
171
+
172
+ ```typescript
173
+ import { z } from 'zod';
174
+
175
+ // Define schema
176
+ const userSchema = z.object({
177
+ id: z.number().positive(),
178
+ name: z.string().min(1).max(100),
179
+ email: z.string().email(),
180
+ age: z.number().min(18).max(120).optional(),
181
+ role: z.enum(['admin', 'user', 'guest']),
182
+ createdAt: z.coerce.date()
183
+ });
184
+
185
+ // Infer TypeScript type from schema
186
+ type User = z.infer<typeof userSchema>;
187
+
188
+ // Validate data
189
+ function validateUser(data: unknown): User {
190
+ return userSchema.parse(data); // Throws on invalid data
191
+ }
192
+
193
+ // Safe validation
194
+ function safeValidateUser(data: unknown): User | null {
195
+ const result = userSchema.safeParse(data);
196
+ return result.success ? result.data : null;
197
+ }
198
+ ```
199
+
200
+ ### API Route Validation
201
+
202
+ ```typescript
203
+ // app/api/users/route.ts
204
+ import { z } from 'zod';
205
+ import { NextRequest, NextResponse } from 'next/server';
206
+
207
+ const createUserSchema = z.object({
208
+ name: z.string().min(1).max(100),
209
+ email: z.string().email(),
210
+ password: z.string().min(8).max(100)
211
+ });
212
+
213
+ export async function POST(request: NextRequest) {
214
+ try {
215
+ const body = await request.json();
216
+ const validatedData = createUserSchema.parse(body);
217
+
218
+ // Create user with validated data
219
+ const user = await createUser(validatedData);
220
+
221
+ return NextResponse.json(user, { status: 201 });
222
+ } catch (error) {
223
+ if (error instanceof z.ZodError) {
224
+ return NextResponse.json(
225
+ { errors: error.errors },
226
+ { status: 400 }
227
+ );
228
+ }
229
+ return NextResponse.json(
230
+ { error: 'Internal server error' },
231
+ { status: 500 }
232
+ );
233
+ }
234
+ }
235
+ ```
236
+
237
+ ### Form Validation with React Hook Form
238
+
239
+ ```typescript
240
+ import { useForm } from 'react-hook-form';
241
+ import { zodResolver } from '@hookform/resolvers/zod';
242
+ import { z } from 'zod';
243
+
244
+ const formSchema = z.object({
245
+ name: z.string().min(1, 'Name is required'),
246
+ email: z.string().email('Invalid email address'),
247
+ age: z.coerce.number().min(18, 'Must be 18 or older')
248
+ });
249
+
250
+ type FormData = z.infer<typeof formSchema>;
251
+
252
+ function UserForm() {
253
+ const {
254
+ register,
255
+ handleSubmit,
256
+ formState: { errors }
257
+ } = useForm<FormData>({
258
+ resolver: zodResolver(formSchema)
259
+ });
260
+
261
+ const onSubmit = (data: FormData) => {
262
+ // Data is type-safe and validated
263
+ console.log(data);
264
+ };
265
+
266
+ return (
267
+ <form onSubmit={handleSubmit(onSubmit)}>
268
+ <input {...register('name')} />
269
+ {errors.name && <span>{errors.name.message}</span>}
270
+
271
+ <input {...register('email')} />
272
+ {errors.email && <span>{errors.email.message}</span>}
273
+
274
+ <input {...register('age')} type="number" />
275
+ {errors.age && <span>{errors.age.message}</span>}
276
+
277
+ <button type="submit">Submit</button>
278
+ </form>
279
+ );
280
+ }
281
+ ```
282
+
283
+ ---
284
+
285
+ ## Memoization Patterns
286
+
287
+ ### React.memo
288
+
289
+ ```typescript
290
+ import { memo } from 'react';
291
+
292
+ interface UserCardProps {
293
+ user: {
294
+ id: number;
295
+ name: string;
296
+ email: string;
297
+ };
298
+ onDelete: (id: number) => void;
299
+ }
300
+
301
+ // Memoize component to prevent unnecessary re-renders
302
+ export const UserCard = memo(function UserCard({ user, onDelete }: UserCardProps) {
303
+ return (
304
+ <div>
305
+ <h3>{user.name}</h3>
306
+ <p>{user.email}</p>
307
+ <button onClick={() => onDelete(user.id)}>Delete</button>
308
+ </div>
309
+ );
310
+ });
311
+
312
+ // Custom comparison function
313
+ export const UserCardWithCustomCompare = memo(
314
+ UserCard,
315
+ (prevProps, nextProps) => {
316
+ return prevProps.user.id === nextProps.user.id &&
317
+ prevProps.user.name === nextProps.user.name;
318
+ }
319
+ );
320
+ ```
321
+
322
+ ### useMemo
323
+
324
+ ```typescript
325
+ import { useMemo } from 'react';
326
+
327
+ function ExpensiveComponent({ items }: { items: Item[] }) {
328
+ // Memoize expensive computation
329
+ const sortedItems = useMemo(() => {
330
+ console.log('Sorting items...');
331
+ return items.sort((a, b) => a.name.localeCompare(b.name));
332
+ }, [items]);
333
+
334
+ // Memoize filtered data
335
+ const activeItems = useMemo(() => {
336
+ return sortedItems.filter((item) => item.active);
337
+ }, [sortedItems]);
338
+
339
+ return (
340
+ <ul>
341
+ {activeItems.map((item) => (
342
+ <li key={item.id}>{item.name}</li>
343
+ ))}
344
+ </ul>
345
+ );
346
+ }
347
+ ```
348
+
349
+ ### useCallback
350
+
351
+ ```typescript
352
+ import { useCallback, useState } from 'react';
353
+
354
+ function ParentComponent() {
355
+ const [count, setCount] = useState(0);
356
+ const [items, setItems] = useState<Item[]>([]);
357
+
358
+ // Memoize callback to prevent child re-renders
359
+ const handleDelete = useCallback((id: number) => {
360
+ setItems((prev) => prev.filter((item) => item.id !== id));
361
+ }, []);
362
+
363
+ const handleAdd = useCallback((item: Item) => {
364
+ setItems((prev) => [...prev, item]);
365
+ }, []);
366
+
367
+ return (
368
+ <div>
369
+ <button onClick={() => setCount(count + 1)}>Count: {count}</button>
370
+ <ItemList items={items} onDelete={handleDelete} onAdd={handleAdd} />
371
+ </div>
372
+ );
373
+ }
374
+ ```
375
+
376
+ ### Memoization with Lodash
377
+
378
+ ```typescript
379
+ import memoize from 'lodash/memoize';
380
+
381
+ // Memoize expensive function
382
+ const fibonacci = memoize((n: number): number => {
383
+ if (n <= 1) return n;
384
+ return fibonacci(n - 1) + fibonacci(n - 2);
385
+ });
386
+
387
+ // Memoize with custom resolver
388
+ const getUserById = memoize(
389
+ async (id: number) => {
390
+ const response = await fetch(`/api/users/${id}`);
391
+ return response.json();
392
+ },
393
+ (id) => `user-${id}` // Custom cache key
394
+ );
395
+
396
+ // Clear cache
397
+ getUserById.cache.clear();
398
+ ```
399
+
400
+ ---
401
+
402
+ ## Bundle Analysis
403
+
404
+ ### Next.js Bundle Analyzer
405
+
406
+ ```bash
407
+ # Install bundle analyzer
408
+ npm install -D @next/bundle-analyzer
409
+ ```
410
+
411
+ ```typescript
412
+ // next.config.js
413
+ const withBundleAnalyzer = require('@next/bundle-analyzer')({
414
+ enabled: process.env.ANALYZE === 'true'
415
+ });
416
+
417
+ module.exports = withBundleAnalyzer({
418
+ // Your Next.js config
419
+ });
420
+ ```
421
+
422
+ ```bash
423
+ # Analyze bundle
424
+ ANALYZE=true npm run build
425
+ ```
426
+
427
+ ### Webpack Bundle Analyzer
428
+
429
+ ```bash
430
+ npm install -D webpack-bundle-analyzer
431
+ ```
432
+
433
+ ```typescript
434
+ // webpack.config.js
435
+ const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
436
+
437
+ module.exports = {
438
+ plugins: [
439
+ new BundleAnalyzerPlugin({
440
+ analyzerMode: 'static',
441
+ openAnalyzer: false,
442
+ reportFilename: 'bundle-report.html'
443
+ })
444
+ ]
445
+ };
446
+ ```
447
+
448
+ ### Analyzing Bundle Size
449
+
450
+ ```typescript
451
+ // package.json
452
+ {
453
+ "scripts": {
454
+ "analyze": "ANALYZE=true next build",
455
+ "analyze:server": "BUNDLE_ANALYZE=server next build",
456
+ "analyze:browser": "BUNDLE_ANALYZE=browser next build"
457
+ }
458
+ }
459
+ ```
460
+
461
+ ---
462
+
463
+ ## Tree-Shaking Optimization
464
+
465
+ ### ES Modules
466
+
467
+ ```typescript
468
+ // ✅ Good: Named exports (tree-shakeable)
469
+ export const add = (a: number, b: number) => a + b;
470
+ export const subtract = (a: number, b: number) => a - b;
471
+ export const multiply = (a: number, b: number) => a * b;
472
+
473
+ // Import only what you need
474
+ import { add, subtract } from './math';
475
+
476
+ // ❌ Bad: Default export (not tree-shakeable)
477
+ export default {
478
+ add: (a: number, b: number) => a + b,
479
+ subtract: (a: number, b: number) => a - b,
480
+ multiply: (a: number, b: number) => a * b
481
+ };
482
+ ```
483
+
484
+ ### Side-Effect Free Code
485
+
486
+ ```typescript
487
+ // package.json
488
+ {
489
+ "sideEffects": false // Enables aggressive tree-shaking
490
+ }
491
+
492
+ // Or specify files with side effects
493
+ {
494
+ "sideEffects": [
495
+ "*.css",
496
+ "*.scss",
497
+ "./src/polyfills.ts"
498
+ ]
499
+ }
500
+ ```
501
+
502
+ ### Dynamic Imports
503
+
504
+ ```typescript
505
+ // Code splitting with dynamic imports
506
+ const HeavyComponent = lazy(() => import('./HeavyComponent'));
507
+
508
+ function App() {
509
+ return (
510
+ <Suspense fallback={<Loading />}>
511
+ <HeavyComponent />
512
+ </Suspense>
513
+ );
514
+ }
515
+
516
+ // Conditional loading
517
+ async function loadAnalytics() {
518
+ if (process.env.NODE_ENV === 'production') {
519
+ const analytics = await import('./analytics');
520
+ analytics.init();
521
+ }
522
+ }
523
+ ```
524
+
525
+ ### Barrel File Optimization
526
+
527
+ ```typescript
528
+ // ❌ Bad: Barrel file imports everything
529
+ // utils/index.ts
530
+ export * from './string';
531
+ export * from './number';
532
+ export * from './date';
533
+
534
+ // ✅ Good: Direct imports
535
+ import { capitalize } from './utils/string';
536
+ import { formatNumber } from './utils/number';
537
+
538
+ // Or use named re-exports
539
+ // utils/index.ts
540
+ export { capitalize, lowercase } from './string';
541
+ export { formatNumber, parseNumber } from './number';
542
+ ```
543
+
544
+ ### Lodash Tree-Shaking
545
+
546
+ ```typescript
547
+ // ❌ Bad: Imports entire lodash
548
+ import _ from 'lodash';
549
+ _.debounce(fn, 300);
550
+
551
+ // ✅ Good: Import specific function
552
+ import debounce from 'lodash/debounce';
553
+ debounce(fn, 300);
554
+
555
+ // ✅ Better: Use lodash-es (ES modules)
556
+ import { debounce } from 'lodash-es';
557
+ debounce(fn, 300);
558
+ ```
559
+
560
+ ### Next.js Optimization
561
+
562
+ ```typescript
563
+ // next.config.js
564
+ module.exports = {
565
+ // Enable SWC minification
566
+ swcMinify: true,
567
+
568
+ // Optimize images
569
+ images: {
570
+ formats: ['image/avif', 'image/webp'],
571
+ minimumCacheTTL: 60
572
+ },
573
+
574
+ // Experimental features
575
+ experimental: {
576
+ optimizeCss: true,
577
+ optimizePackageImports: ['@mui/material', 'lodash']
578
+ },
579
+
580
+ // Webpack configuration
581
+ webpack: (config, { isServer }) => {
582
+ if (!isServer) {
583
+ config.optimization.splitChunks = {
584
+ chunks: 'all',
585
+ cacheGroups: {
586
+ default: false,
587
+ vendors: false,
588
+ commons: {
589
+ name: 'commons',
590
+ chunks: 'all',
591
+ minChunks: 2
592
+ }
593
+ }
594
+ };
595
+ }
596
+ return config;
597
+ }
598
+ };
599
+ ```
600
+
601
+ ---
602
+
603
+ ## Performance Monitoring
604
+
605
+ ### Web Vitals
606
+
607
+ ```typescript
608
+ // app/layout.tsx
609
+ import { Analytics } from '@vercel/analytics/react';
610
+ import { SpeedInsights } from '@vercel/speed-insights/next';
611
+
612
+ export default function RootLayout({ children }: { children: React.ReactNode }) {
613
+ return (
614
+ <html lang="en">
615
+ <body>
616
+ {children}
617
+ <Analytics />
618
+ <SpeedInsights />
619
+ </body>
620
+ </html>
621
+ );
622
+ }
623
+ ```
624
+
625
+ ### Custom Performance Tracking
626
+
627
+ ```typescript
628
+ // lib/performance.ts
629
+ export function measurePerformance(name: string, fn: () => void) {
630
+ const start = performance.now();
631
+ fn();
632
+ const end = performance.now();
633
+ console.log(`${name} took ${end - start}ms`);
634
+ }
635
+
636
+ // Usage
637
+ measurePerformance('Data processing', () => {
638
+ processLargeDataset(data);
639
+ });
640
+ ```
641
+
642
+ ### React Profiler
643
+
644
+ ```typescript
645
+ import { Profiler, ProfilerOnRenderCallback } from 'react';
646
+
647
+ const onRenderCallback: ProfilerOnRenderCallback = (
648
+ id,
649
+ phase,
650
+ actualDuration,
651
+ baseDuration,
652
+ startTime,
653
+ commitTime
654
+ ) => {
655
+ console.log({
656
+ id,
657
+ phase,
658
+ actualDuration,
659
+ baseDuration,
660
+ startTime,
661
+ commitTime
662
+ });
663
+ };
664
+
665
+ function App() {
666
+ return (
667
+ <Profiler id="App" onRender={onRenderCallback}>
668
+ <YourComponent />
669
+ </Profiler>
670
+ );
671
+ }
672
+ ```
673
+
674
+ ### Lighthouse CI
675
+
676
+ ```yaml
677
+ # .github/workflows/lighthouse.yml
678
+ name: Lighthouse CI
679
+ on: [push]
680
+ jobs:
681
+ lighthouse:
682
+ runs-on: ubuntu-latest
683
+ steps:
684
+ - uses: actions/checkout@v3
685
+ - uses: actions/setup-node@v3
686
+ - run: npm ci
687
+ - run: npm run build
688
+ - run: npm install -g @lhci/cli
689
+ - run: lhci autorun
690
+ ```
691
+
692
+ ```javascript
693
+ // lighthouserc.js
694
+ module.exports = {
695
+ ci: {
696
+ collect: {
697
+ startServerCommand: 'npm run start',
698
+ url: ['http://localhost:3000/'],
699
+ numberOfRuns: 3
700
+ },
701
+ assert: {
702
+ assertions: {
703
+ 'categories:performance': ['error', { minScore: 0.9 }],
704
+ 'categories:accessibility': ['error', { minScore: 0.9 }],
705
+ 'categories:best-practices': ['error', { minScore: 0.9 }],
706
+ 'categories:seo': ['error', { minScore: 0.9 }]
707
+ }
708
+ },
709
+ upload: {
710
+ target: 'temporary-public-storage'
711
+ }
712
+ }
713
+ };
714
+ ```
715
+
716
+ ---
717
+
718
+ ## Best Practices
719
+
720
+ ### 1. Always Validate External Data
721
+
722
+ ```typescript
723
+ // ✅ Good: Validate API responses
724
+ async function fetchUser(id: number) {
725
+ const response = await fetch(`/api/users/${id}`);
726
+ const data = await response.json();
727
+ return userSchema.parse(data); // Validate with Zod
728
+ }
729
+
730
+ // ❌ Bad: Trust external data
731
+ async function fetchUser(id: number) {
732
+ const response = await fetch(`/api/users/${id}`);
733
+ return response.json(); // No validation
734
+ }
735
+ ```
736
+
737
+ ### 2. Use Security Headers
738
+
739
+ ```typescript
740
+ // ✅ Good: Comprehensive security headers
741
+ const securityHeaders = [
742
+ { key: 'X-Frame-Options', value: 'SAMEORIGIN' },
743
+ { key: 'X-Content-Type-Options', value: 'nosniff' },
744
+ { key: 'Strict-Transport-Security', value: 'max-age=63072000' }
745
+ ];
746
+ ```
747
+
748
+ ### 3. Memoize Expensive Computations
749
+
750
+ ```typescript
751
+ // ✅ Good: Memoize expensive operations
752
+ const sortedData = useMemo(() => {
753
+ return data.sort((a, b) => a.value - b.value);
754
+ }, [data]);
755
+
756
+ // ❌ Bad: Recompute on every render
757
+ const sortedData = data.sort((a, b) => a.value - b.value);
758
+ ```
759
+
760
+ ### 4. Use Dynamic Imports for Code Splitting
761
+
762
+ ```typescript
763
+ // ✅ Good: Dynamic import
764
+ const Chart = lazy(() => import('./Chart'));
765
+
766
+ // ❌ Bad: Static import for large component
767
+ import Chart from './Chart';
768
+ ```
769
+
770
+ ### 5. Optimize Bundle Size
771
+
772
+ ```typescript
773
+ // ✅ Good: Import specific functions
774
+ import { debounce } from 'lodash-es';
775
+
776
+ // ❌ Bad: Import entire library
777
+ import _ from 'lodash';
778
+ ```
779
+
780
+ ### 6. Monitor Performance
781
+
782
+ ```typescript
783
+ // ✅ Good: Track performance metrics
784
+ export function reportWebVitals(metric: NextWebVitalsMetric) {
785
+ console.log(metric);
786
+ // Send to analytics
787
+ }
788
+ ```
789
+
790
+ ---
791
+
792
+ ## Common Pitfalls
793
+
794
+ ### ❌ Trusting User Input
795
+
796
+ ```typescript
797
+ // Never trust user input
798
+ function renderHTML(userInput: string) {
799
+ return <div dangerouslySetInnerHTML={{ __html: userInput }} />; // ❌ XSS vulnerability
800
+ }
801
+
802
+ // Always sanitize
803
+ function renderHTML(userInput: string) {
804
+ const clean = DOMPurify.sanitize(userInput);
805
+ return <div dangerouslySetInnerHTML={{ __html: clean }} />; // ✅ Safe
806
+ }
807
+ ```
808
+
809
+ ### ❌ Over-Memoization
810
+
811
+ ```typescript
812
+ // Don't memoize everything
813
+ const value = useMemo(() => x + y, [x, y]); // ❌ Unnecessary for simple operations
814
+
815
+ // Only memoize expensive computations
816
+ const value = x + y; // ✅ Simple operation
817
+ ```
818
+
819
+ ### ❌ Ignoring Bundle Size
820
+
821
+ ```typescript
822
+ // Check bundle size regularly
823
+ npm run analyze
824
+
825
+ // Use bundle size limits
826
+ // package.json
827
+ {
828
+ "bundlesize": [
829
+ {
830
+ "path": "./dist/*.js",
831
+ "maxSize": "100 kB"
832
+ }
833
+ ]
834
+ }
835
+ ```
836
+
837
+ ---
838
+
839
+ ## References
840
+
841
+ - [OWASP Top 10](https://owasp.org/www-project-top-ten/)
842
+ - [Next.js Security Headers](https://nextjs.org/docs/advanced-features/security-headers)
843
+ - [Zod Documentation](https://zod.dev)
844
+ - [React Performance Optimization](https://react.dev/learn/render-and-commit)
845
+ - [Web Vitals](https://web.dev/vitals/)
846
+ - [Lighthouse CI](https://github.com/GoogleChrome/lighthouse-ci)
847
+
848
+
849
+
850
+