@guru-ai-product/ai-product-kit 0.2.251117192248 → 0.2.251118120602

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 (979) hide show
  1. package/mcp/skills/aipk_init_project/template/AGENTS_TEMPLATE.md +11 -11
  2. package/mcp/src/server.js +10 -10
  3. package/package.json +1 -1
  4. package/skills/aipk_aso-new-release/GURU_AI.md +4 -4
  5. package/skills/aipk_aso-new-release/SKILL.md +15 -1
  6. package/skills/aipk_development/GURU_AI.md +3 -3
  7. package/skills/aipk_development/SKILL.md +15 -1
  8. package/skills/aipk_format-requirement-pages-with-design/GURU_AI.md +3 -3
  9. package/skills/aipk_format-requirement-pages-with-design/SKILL.md +10 -1
  10. package/skills/aipk_init_project/GURU_AI.md +5 -5
  11. package/skills/aipk_init_project/SKILL.md +15 -1
  12. package/skills/aipk_initiative-planning/GURU_AI.md +7 -7
  13. package/skills/aipk_initiative-planning/SKILL.md +17 -1
  14. package/skills/aipk_requirements-changes/GURU_AI.md +6 -6
  15. package/skills/aipk_requirements-changes/SKILL.md +15 -1
  16. package/skills/aipk_requirements-documentation/GURU_AI.md +15 -15
  17. package/skills/aipk_requirements-documentation/SKILL.md +17 -1
  18. package/skills/aipk_requirements-intake/GURU_AI.md +9 -9
  19. package/skills/aipk_requirements-intake/SKILL.md +15 -1
  20. package/skills/aipk_skill_generate/GURU_AI.md +5 -5
  21. package/skills/aipk_skill_generate/SKILL.md +15 -1
  22. package/skills/aipk_tool_prompts/GURU_AI.md +8 -8
  23. package/skills/aipk_tool_prompts/SKILL.md +15 -1
  24. package/skills/aipk_update-requirements-from-design/GURU_AI.md +6 -116
  25. package/skills/aipk_update-requirements-from-design/SKILL.md +15 -1
  26. package/mcp/.doc_cache/04980c3595edbf2d_SKILL.md +0 -218
  27. package/mcp/.doc_cache/04e80f12d73851a2_/346/214/207/345/215/227/346/226/207/346/241/243/346/240/207/345/207/206/346/250/241/346/235/277.md +0 -59
  28. package/mcp/.doc_cache/07cc092c31fd7015_/345/267/245/345/205/267/344/275/277/347/224/250/346/214/207/345/215/227/346/250/241/346/235/277.md +0 -106
  29. package/mcp/.doc_cache/09ac9834a831e8b5_/346/212/200/346/234/257/346/226/271/346/241/210/350/257/204/344/274/260/344/270/216/345/217/257/350/241/214/346/200/247/345/210/206/346/236/220/346/250/241/346/235/277.md +0 -72
  30. package/mcp/.doc_cache/0c0570b87cf4a98a_/351/234/200/346/261/202/350/277/255/344/273/243/346/250/241/346/235/277.md +0 -821
  31. package/mcp/.doc_cache/0c284fc4be48dbd3_/346/267/261/345/272/246/347/224/250/346/210/267/350/241/214/344/270/272/344/270/216/351/234/200/346/261/202/346/264/236/345/257/237/346/250/241/346/235/277.md +0 -59
  32. package/mcp/.doc_cache/0da74fe7b9aad548_K12/346/225/260/345/255/246/345/255/246/344/271/240/345/272/224/347/224/250/346/241/210/344/276/213.md +0 -371
  33. package/mcp/.doc_cache/1546780035ed893b_Draft_/344/272/247/345/223/201/351/234/200/346/261/202/350/215/211/347/250/277.md +0 -60
  34. package/mcp/.doc_cache/16d5f6b79f02c65e_/351/234/200/346/261/202/350/277/255/344/273/243/347/264/242/345/274/225.md +0 -30
  35. package/mcp/.doc_cache/1c631acd2940588e_index.md +0 -83
  36. package/mcp/.doc_cache/1e4a829f0abddb00_/344/272/247/345/223/201/350/247/204/345/210/222/346/250/241/346/235/277.md +0 -322
  37. package/mcp/.doc_cache/24f00280e7b9b2c7_index.md +0 -83
  38. package/mcp/.doc_cache/2767e2d4cd6afd5c_/345/225/206/344/270/232/345/214/226/350/247/204/345/210/222/346/250/241/346/235/277.md +0 -201
  39. package/mcp/.doc_cache/276d12074fd7af7d_SKILL.md +0 -243
  40. package/mcp/.doc_cache/2b6b35389546c3b9_SKILL.md +0 -407
  41. package/mcp/.doc_cache/2f45cddfb05ac32c_/351/234/200/346/261/202/350/277/255/344/273/243/347/264/242/345/274/225.md +0 -30
  42. package/mcp/.doc_cache/3086c6d32a0393da_Draft_/347/224/250/346/210/267/346/227/205/347/250/213/350/215/211/347/250/277.md +0 -84
  43. package/mcp/.doc_cache/33cd96cf79c86eaa_K12/346/225/260/345/255/246/345/255/246/344/271/240/345/272/224/347/224/250/346/241/210/344/276/213.md +0 -371
  44. package/mcp/.doc_cache/341909c063335dd2_/351/234/200/346/261/202/345/217/230/345/212/250/350/257/264/346/230/216/347/224/237/346/210/220Prompt.md +0 -349
  45. package/mcp/.doc_cache/3e0dfd0a1b9f6ce7_/344/272/247/345/223/201/351/234/200/346/261/202/345/217/221/347/216/260/344/270/216/351/252/214/350/257/201/346/250/241/346/235/277.md +0 -53
  46. package/mcp/.doc_cache/3eab19b804522d23_SKILL.md +0 -407
  47. package/mcp/.doc_cache/4b671afde6bb1fa8_/351/234/200/346/261/202/345/217/230/345/212/250/350/257/264/346/230/216/347/224/237/346/210/220/346/214/207/345/215/227.md +0 -292
  48. package/mcp/.doc_cache/4c780724e27f6f94_/351/234/200/346/261/202/350/277/255/344/273/243/346/250/241/346/235/277.md +0 -821
  49. package/mcp/.doc_cache/563de023ffa4a630_/345/237/213/347/202/271/350/247/204/350/214/203/346/226/207/346/241/243.md +0 -372
  50. package/mcp/.doc_cache/56975fb92532ee87_2_/345/212/237/350/203/275/351/234/200/346/261/202.md +0 -67
  51. package/mcp/.doc_cache/5a67e1c18353cfca_/345/270/202/345/234/272/346/234/272/344/274/232/350/257/204/344/274/260/344/270/216/347/253/236/344/272/211/345/210/206/346/236/220/346/250/241/346/235/277.md +0 -53
  52. package/mcp/.doc_cache/5b8ba3d67e39371a_SKILL.md +0 -930
  53. package/mcp/.doc_cache/5b91334295d6ad31_SKILL.md +0 -588
  54. package/mcp/.doc_cache/609688b8b4332a01_/351/234/200/346/261/202/345/217/230/345/212/250/350/257/264/346/230/216/346/226/207/346/241/243/346/250/241/346/235/277.md +0 -576
  55. package/mcp/.doc_cache/61a0859a11a562ca_3_/345/225/206/344/270/232/345/214/226/347/255/226/347/225/245.md +0 -131
  56. package/mcp/.doc_cache/6643f4d546c6a03c_/346/267/261/345/272/246/347/224/250/346/210/267/350/241/214/344/270/272/344/270/216/351/234/200/346/261/202/346/264/236/345/257/237/346/250/241/346/235/277.md +0 -59
  57. package/mcp/.doc_cache/674c69479a90ad15_4_/347/224/250/346/210/267/347/225/214/351/235/242/344/270/216/344/275/223/351/252/214.md +0 -665
  58. package/mcp/.doc_cache/674f8b285658055d_/345/270/202/345/234/272/344/270/216/345/225/206/344/270/232/345/210/206/346/236/220/346/250/241/346/235/277.md +0 -176
  59. package/mcp/.doc_cache/6cfccfda6b0e7641_SWOT/345/210/206/346/236/220/346/250/241/346/235/277.md +0 -381
  60. package/mcp/.doc_cache/6fbc13740044659b_1_/344/272/247/345/223/201/345/256/232/344/275/215/344/270/216/345/210/206/346/236/220.md +0 -86
  61. package/mcp/.doc_cache/7842a4e7fe7a3b91_/346/212/200/346/234/257/350/247/204/345/210/222/346/250/241/346/235/277.md +0 -314
  62. package/mcp/.doc_cache/7db63a8354bf8037_2_/345/212/237/350/203/275/351/234/200/346/261/202.md +0 -67
  63. package/mcp/.doc_cache/81528b4e0b12a881_SKILL.md +0 -196
  64. package/mcp/.doc_cache/83d17bdb48d30903_4_/347/224/250/346/210/267/347/225/214/351/235/242/344/270/216/344/275/223/351/252/214.md +0 -665
  65. package/mcp/.doc_cache/88e1d483f18abd02_/345/237/213/347/202/271/350/247/204/350/214/203/346/226/207/346/241/243.md +0 -372
  66. package/mcp/.doc_cache/8f420425062dcb93_SWOT/345/210/206/346/236/220/346/250/241/346/235/277.md +0 -381
  67. package/mcp/.doc_cache/8f981c56b3d4b17d_/345/225/206/344/270/232/345/214/226/350/247/204/345/210/222/346/250/241/346/235/277.md +0 -201
  68. package/mcp/.doc_cache/a3328dcce1521943_/345/270/202/345/234/272/344/270/216/345/225/206/344/270/232/345/210/206/346/236/220/346/250/241/346/235/277.md +0 -176
  69. package/mcp/.doc_cache/a4ef757633f13133_/346/212/200/346/234/257/346/226/271/346/241/210/350/257/204/344/274/260/344/270/216/345/217/257/350/241/214/346/200/247/345/210/206/346/236/220/346/250/241/346/235/277.md +0 -72
  70. package/mcp/.doc_cache/a90401fc94ca29a3_SKILL.md +0 -260
  71. package/mcp/.doc_cache/bad4b7992748a7a0_/344/272/247/345/223/201/351/234/200/346/261/202/345/217/221/347/216/260/344/270/216/351/252/214/350/257/201/346/250/241/346/235/277.md +0 -53
  72. package/mcp/.doc_cache/baeac26fdbcd25de_/344/272/247/345/223/201/350/247/204/345/210/222/346/250/241/346/235/277.md +0 -322
  73. package/mcp/.doc_cache/c58bcfc199ada118_SKILL.md +0 -196
  74. package/mcp/.doc_cache/c8305789db809e48_SKILL.md +0 -588
  75. package/mcp/.doc_cache/cache_mapping.json +0 -69
  76. package/mcp/.doc_cache/d09142514e6a9de0_/347/224/265/345/225/206/345/271/263/345/217/260/344/274/230/345/214/226/346/241/210/344/276/213.md +0 -426
  77. package/mcp/.doc_cache/d165d35fea568d64_/351/234/200/346/261/202/345/217/230/345/212/250/350/257/264/346/230/216/346/226/207/346/241/243/346/250/241/346/235/277.md +0 -576
  78. package/mcp/.doc_cache/d17b04c82d2497b2_/347/224/265/345/225/206/345/271/263/345/217/260/344/274/230/345/214/226/346/241/210/344/276/213.md +0 -426
  79. package/mcp/.doc_cache/d1cfa2f8882fcdf9_/346/214/207/345/215/227/346/226/207/346/241/243/346/240/207/345/207/206/346/250/241/346/235/277.md +0 -59
  80. package/mcp/.doc_cache/d2585b5df3d21fc9_3_/345/225/206/344/270/232/345/214/226/347/255/226/347/225/245.md +0 -131
  81. package/mcp/.doc_cache/d604a1290099121c_/351/234/200/346/261/202/345/217/230/345/212/250/350/257/264/346/230/216/347/224/237/346/210/220/346/214/207/345/215/227.md +0 -292
  82. package/mcp/.doc_cache/d66edce025de6b82_Draft_/344/272/247/345/223/201/351/234/200/346/261/202/350/215/211/347/250/277.md +0 -60
  83. package/mcp/.doc_cache/d6c3ff791e7da726_SKILL.md +0 -33
  84. package/mcp/.doc_cache/da2c3d4d7b8957af_SKILL.md +0 -218
  85. package/mcp/.doc_cache/da8f4d40a1e8f36a_/346/212/200/346/234/257/350/247/204/345/210/222/346/250/241/346/235/277.md +0 -314
  86. package/mcp/.doc_cache/db70562fc59f1658_SKILL.md +0 -260
  87. package/mcp/.doc_cache/dd61f22b0ec13e10_Draft_/347/224/250/346/210/267/346/227/205/347/250/213/350/215/211/347/250/277.md +0 -84
  88. package/mcp/.doc_cache/e1451d5b65894789_SKILL.md +0 -930
  89. package/mcp/.doc_cache/e4f23de1b5313796_1_/344/272/247/345/223/201/345/256/232/344/275/215/344/270/216/345/210/206/346/236/220.md +0 -86
  90. package/mcp/.doc_cache/e668cf08c5f905ca_/345/267/245/345/205/267/344/275/277/347/224/250/346/214/207/345/215/227/346/250/241/346/235/277.md +0 -106
  91. package/mcp/.doc_cache/e69eeaaf88a175df_/345/270/202/345/234/272/346/234/272/344/274/232/350/257/204/344/274/260/344/270/216/347/253/236/344/272/211/345/210/206/346/236/220/346/250/241/346/235/277.md +0 -53
  92. package/mcp/.doc_cache/ea4c5e5a6254f616_SKILL.md +0 -243
  93. package/mcp/.doc_cache/ec9ad6ce24808f0a_/351/234/200/346/261/202/345/217/230/345/212/250/350/257/264/346/230/216/347/224/237/346/210/220Prompt.md +0 -349
  94. package/mcp/node_modules/.package-lock.json +0 -147
  95. package/mcp/node_modules/@modelcontextprotocol/sdk/LICENSE +0 -7
  96. package/mcp/node_modules/@modelcontextprotocol/sdk/README.md +0 -110
  97. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/cli.d.ts +0 -2
  98. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/cli.d.ts.map +0 -1
  99. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/cli.js +0 -129
  100. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/cli.js.map +0 -1
  101. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/index.d.ts +0 -773
  102. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/index.d.ts.map +0 -1
  103. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/index.js +0 -206
  104. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/index.js.map +0 -1
  105. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/index.test.d.ts +0 -2
  106. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/index.test.d.ts.map +0 -1
  107. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/index.test.js +0 -357
  108. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/index.test.js.map +0 -1
  109. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/sse.d.ts +0 -22
  110. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/sse.d.ts.map +0 -1
  111. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/sse.js +0 -91
  112. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/sse.js.map +0 -1
  113. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/stdio.d.ts +0 -56
  114. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/stdio.d.ts.map +0 -1
  115. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/stdio.js +0 -135
  116. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/stdio.js.map +0 -1
  117. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/stdio.test.d.ts +0 -2
  118. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/stdio.test.d.ts.map +0 -1
  119. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/stdio.test.js +0 -51
  120. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/stdio.test.js.map +0 -1
  121. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/websocket.d.ts +0 -17
  122. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/websocket.d.ts.map +0 -1
  123. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/websocket.js +0 -61
  124. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/client/websocket.js.map +0 -1
  125. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/inMemory.d.ts +0 -20
  126. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/inMemory.d.ts.map +0 -1
  127. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/inMemory.js +0 -47
  128. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/inMemory.js.map +0 -1
  129. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/inMemory.test.d.ts +0 -2
  130. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/inMemory.test.d.ts.map +0 -1
  131. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/inMemory.test.js +0 -74
  132. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/inMemory.test.js.map +0 -1
  133. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/server/index.d.ts +0 -112
  134. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/server/index.d.ts.map +0 -1
  135. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/server/index.js +0 -182
  136. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/server/index.js.map +0 -1
  137. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/server/index.test.d.ts +0 -2
  138. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/server/index.test.d.ts.map +0 -1
  139. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/server/index.test.js +0 -360
  140. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/server/index.test.js.map +0 -1
  141. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/server/sse.d.ts +0 -46
  142. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/server/sse.d.ts.map +0 -1
  143. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/server/sse.js +0 -116
  144. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/server/sse.js.map +0 -1
  145. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/server/stdio.d.ts +0 -28
  146. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/server/stdio.d.ts.map +0 -1
  147. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/server/stdio.js +0 -69
  148. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/server/stdio.js.map +0 -1
  149. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/server/stdio.test.d.ts +0 -2
  150. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/server/stdio.test.d.ts.map +0 -1
  151. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/server/stdio.test.js +0 -87
  152. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/server/stdio.test.js.map +0 -1
  153. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/shared/protocol.d.ts +0 -149
  154. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/shared/protocol.d.ts.map +0 -1
  155. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/shared/protocol.js +0 -274
  156. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/shared/protocol.js.map +0 -1
  157. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/shared/stdio.d.ts +0 -13
  158. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/shared/stdio.d.ts.map +0 -1
  159. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/shared/stdio.js +0 -31
  160. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/shared/stdio.js.map +0 -1
  161. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/shared/stdio.test.d.ts +0 -2
  162. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/shared/stdio.test.d.ts.map +0 -1
  163. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/shared/stdio.test.js +0 -27
  164. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/shared/stdio.test.js.map +0 -1
  165. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/shared/transport.d.ts +0 -39
  166. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/shared/transport.d.ts.map +0 -1
  167. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/shared/transport.js +0 -2
  168. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/shared/transport.js.map +0 -1
  169. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/types.d.ts +0 -26424
  170. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/types.d.ts.map +0 -1
  171. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/types.js +0 -996
  172. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/types.js.map +0 -1
  173. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/utils.d.ts +0 -5
  174. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/utils.d.ts.map +0 -1
  175. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/utils.js +0 -11
  176. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/utils.js.map +0 -1
  177. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/utils.test.d.ts +0 -2
  178. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/utils.test.d.ts.map +0 -1
  179. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/utils.test.js +0 -14
  180. package/mcp/node_modules/@modelcontextprotocol/sdk/dist/utils.test.js.map +0 -1
  181. package/mcp/node_modules/@modelcontextprotocol/sdk/package.json +0 -61
  182. package/mcp/node_modules/bytes/History.md +0 -97
  183. package/mcp/node_modules/bytes/LICENSE +0 -23
  184. package/mcp/node_modules/bytes/Readme.md +0 -152
  185. package/mcp/node_modules/bytes/index.js +0 -170
  186. package/mcp/node_modules/bytes/package.json +0 -42
  187. package/mcp/node_modules/content-type/HISTORY.md +0 -29
  188. package/mcp/node_modules/content-type/LICENSE +0 -22
  189. package/mcp/node_modules/content-type/README.md +0 -94
  190. package/mcp/node_modules/content-type/index.js +0 -225
  191. package/mcp/node_modules/content-type/package.json +0 -42
  192. package/mcp/node_modules/depd/History.md +0 -103
  193. package/mcp/node_modules/depd/LICENSE +0 -22
  194. package/mcp/node_modules/depd/Readme.md +0 -280
  195. package/mcp/node_modules/depd/index.js +0 -538
  196. package/mcp/node_modules/depd/lib/browser/index.js +0 -77
  197. package/mcp/node_modules/depd/package.json +0 -45
  198. package/mcp/node_modules/http-errors/HISTORY.md +0 -180
  199. package/mcp/node_modules/http-errors/LICENSE +0 -23
  200. package/mcp/node_modules/http-errors/README.md +0 -169
  201. package/mcp/node_modules/http-errors/index.js +0 -289
  202. package/mcp/node_modules/http-errors/package.json +0 -50
  203. package/mcp/node_modules/iconv-lite/Changelog.md +0 -236
  204. package/mcp/node_modules/iconv-lite/LICENSE +0 -21
  205. package/mcp/node_modules/iconv-lite/README.md +0 -138
  206. package/mcp/node_modules/iconv-lite/encodings/dbcs-codec.js +0 -532
  207. package/mcp/node_modules/iconv-lite/encodings/dbcs-data.js +0 -185
  208. package/mcp/node_modules/iconv-lite/encodings/index.js +0 -23
  209. package/mcp/node_modules/iconv-lite/encodings/internal.js +0 -218
  210. package/mcp/node_modules/iconv-lite/encodings/sbcs-codec.js +0 -75
  211. package/mcp/node_modules/iconv-lite/encodings/sbcs-data-generated.js +0 -451
  212. package/mcp/node_modules/iconv-lite/encodings/sbcs-data.js +0 -178
  213. package/mcp/node_modules/iconv-lite/encodings/tables/big5-added.json +0 -122
  214. package/mcp/node_modules/iconv-lite/encodings/tables/cp936.json +0 -264
  215. package/mcp/node_modules/iconv-lite/encodings/tables/cp949.json +0 -273
  216. package/mcp/node_modules/iconv-lite/encodings/tables/cp950.json +0 -177
  217. package/mcp/node_modules/iconv-lite/encodings/tables/eucjp.json +0 -182
  218. package/mcp/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +0 -1
  219. package/mcp/node_modules/iconv-lite/encodings/tables/gbk-added.json +0 -56
  220. package/mcp/node_modules/iconv-lite/encodings/tables/shiftjis.json +0 -125
  221. package/mcp/node_modules/iconv-lite/encodings/utf16.js +0 -187
  222. package/mcp/node_modules/iconv-lite/encodings/utf32.js +0 -307
  223. package/mcp/node_modules/iconv-lite/encodings/utf7.js +0 -283
  224. package/mcp/node_modules/iconv-lite/lib/bom-handling.js +0 -48
  225. package/mcp/node_modules/iconv-lite/lib/helpers/merge-exports.js +0 -13
  226. package/mcp/node_modules/iconv-lite/lib/index.d.ts +0 -41
  227. package/mcp/node_modules/iconv-lite/lib/index.js +0 -183
  228. package/mcp/node_modules/iconv-lite/lib/streams.js +0 -105
  229. package/mcp/node_modules/iconv-lite/package.json +0 -59
  230. package/mcp/node_modules/inherits/LICENSE +0 -16
  231. package/mcp/node_modules/inherits/README.md +0 -42
  232. package/mcp/node_modules/inherits/inherits.js +0 -9
  233. package/mcp/node_modules/inherits/inherits_browser.js +0 -27
  234. package/mcp/node_modules/inherits/package.json +0 -29
  235. package/mcp/node_modules/raw-body/HISTORY.md +0 -333
  236. package/mcp/node_modules/raw-body/LICENSE +0 -22
  237. package/mcp/node_modules/raw-body/README.md +0 -223
  238. package/mcp/node_modules/raw-body/SECURITY.md +0 -24
  239. package/mcp/node_modules/raw-body/index.d.ts +0 -85
  240. package/mcp/node_modules/raw-body/index.js +0 -336
  241. package/mcp/node_modules/raw-body/package.json +0 -50
  242. package/mcp/node_modules/safer-buffer/LICENSE +0 -21
  243. package/mcp/node_modules/safer-buffer/Porting-Buffer.md +0 -268
  244. package/mcp/node_modules/safer-buffer/Readme.md +0 -156
  245. package/mcp/node_modules/safer-buffer/dangerous.js +0 -58
  246. package/mcp/node_modules/safer-buffer/package.json +0 -34
  247. package/mcp/node_modules/safer-buffer/safer.js +0 -77
  248. package/mcp/node_modules/safer-buffer/tests.js +0 -406
  249. package/mcp/node_modules/setprototypeof/LICENSE +0 -13
  250. package/mcp/node_modules/setprototypeof/README.md +0 -31
  251. package/mcp/node_modules/setprototypeof/index.d.ts +0 -2
  252. package/mcp/node_modules/setprototypeof/index.js +0 -17
  253. package/mcp/node_modules/setprototypeof/package.json +0 -38
  254. package/mcp/node_modules/setprototypeof/test/index.js +0 -24
  255. package/mcp/node_modules/statuses/HISTORY.md +0 -82
  256. package/mcp/node_modules/statuses/LICENSE +0 -23
  257. package/mcp/node_modules/statuses/README.md +0 -136
  258. package/mcp/node_modules/statuses/codes.json +0 -65
  259. package/mcp/node_modules/statuses/index.js +0 -146
  260. package/mcp/node_modules/statuses/package.json +0 -49
  261. package/mcp/node_modules/toidentifier/HISTORY.md +0 -9
  262. package/mcp/node_modules/toidentifier/LICENSE +0 -21
  263. package/mcp/node_modules/toidentifier/README.md +0 -61
  264. package/mcp/node_modules/toidentifier/index.js +0 -32
  265. package/mcp/node_modules/toidentifier/package.json +0 -38
  266. package/mcp/node_modules/unpipe/HISTORY.md +0 -4
  267. package/mcp/node_modules/unpipe/LICENSE +0 -22
  268. package/mcp/node_modules/unpipe/README.md +0 -43
  269. package/mcp/node_modules/unpipe/index.js +0 -69
  270. package/mcp/node_modules/unpipe/package.json +0 -27
  271. package/mcp/node_modules/zod/LICENSE +0 -21
  272. package/mcp/node_modules/zod/README.md +0 -208
  273. package/mcp/node_modules/zod/index.cjs +0 -33
  274. package/mcp/node_modules/zod/index.d.cts +0 -4
  275. package/mcp/node_modules/zod/index.d.ts +0 -4
  276. package/mcp/node_modules/zod/index.js +0 -4
  277. package/mcp/node_modules/zod/package.json +0 -118
  278. package/mcp/node_modules/zod/src/index.ts +0 -4
  279. package/mcp/node_modules/zod/src/v3/ZodError.ts +0 -330
  280. package/mcp/node_modules/zod/src/v3/benchmarks/datetime.ts +0 -58
  281. package/mcp/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +0 -80
  282. package/mcp/node_modules/zod/src/v3/benchmarks/index.ts +0 -59
  283. package/mcp/node_modules/zod/src/v3/benchmarks/ipv4.ts +0 -57
  284. package/mcp/node_modules/zod/src/v3/benchmarks/object.ts +0 -69
  285. package/mcp/node_modules/zod/src/v3/benchmarks/primitives.ts +0 -162
  286. package/mcp/node_modules/zod/src/v3/benchmarks/realworld.ts +0 -63
  287. package/mcp/node_modules/zod/src/v3/benchmarks/string.ts +0 -55
  288. package/mcp/node_modules/zod/src/v3/benchmarks/union.ts +0 -80
  289. package/mcp/node_modules/zod/src/v3/errors.ts +0 -13
  290. package/mcp/node_modules/zod/src/v3/external.ts +0 -6
  291. package/mcp/node_modules/zod/src/v3/helpers/enumUtil.ts +0 -17
  292. package/mcp/node_modules/zod/src/v3/helpers/errorUtil.ts +0 -8
  293. package/mcp/node_modules/zod/src/v3/helpers/parseUtil.ts +0 -176
  294. package/mcp/node_modules/zod/src/v3/helpers/partialUtil.ts +0 -34
  295. package/mcp/node_modules/zod/src/v3/helpers/typeAliases.ts +0 -2
  296. package/mcp/node_modules/zod/src/v3/helpers/util.ts +0 -224
  297. package/mcp/node_modules/zod/src/v3/index.ts +0 -4
  298. package/mcp/node_modules/zod/src/v3/locales/en.ts +0 -124
  299. package/mcp/node_modules/zod/src/v3/standard-schema.ts +0 -113
  300. package/mcp/node_modules/zod/src/v3/tests/Mocker.ts +0 -54
  301. package/mcp/node_modules/zod/src/v3/tests/all-errors.test.ts +0 -157
  302. package/mcp/node_modules/zod/src/v3/tests/anyunknown.test.ts +0 -28
  303. package/mcp/node_modules/zod/src/v3/tests/array.test.ts +0 -71
  304. package/mcp/node_modules/zod/src/v3/tests/async-parsing.test.ts +0 -388
  305. package/mcp/node_modules/zod/src/v3/tests/async-refinements.test.ts +0 -46
  306. package/mcp/node_modules/zod/src/v3/tests/base.test.ts +0 -29
  307. package/mcp/node_modules/zod/src/v3/tests/bigint.test.ts +0 -55
  308. package/mcp/node_modules/zod/src/v3/tests/branded.test.ts +0 -53
  309. package/mcp/node_modules/zod/src/v3/tests/catch.test.ts +0 -220
  310. package/mcp/node_modules/zod/src/v3/tests/coerce.test.ts +0 -133
  311. package/mcp/node_modules/zod/src/v3/tests/complex.test.ts +0 -56
  312. package/mcp/node_modules/zod/src/v3/tests/custom.test.ts +0 -31
  313. package/mcp/node_modules/zod/src/v3/tests/date.test.ts +0 -32
  314. package/mcp/node_modules/zod/src/v3/tests/deepmasking.test.ts +0 -186
  315. package/mcp/node_modules/zod/src/v3/tests/default.test.ts +0 -112
  316. package/mcp/node_modules/zod/src/v3/tests/description.test.ts +0 -33
  317. package/mcp/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +0 -315
  318. package/mcp/node_modules/zod/src/v3/tests/enum.test.ts +0 -80
  319. package/mcp/node_modules/zod/src/v3/tests/error.test.ts +0 -551
  320. package/mcp/node_modules/zod/src/v3/tests/firstparty.test.ts +0 -87
  321. package/mcp/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +0 -21
  322. package/mcp/node_modules/zod/src/v3/tests/function.test.ts +0 -257
  323. package/mcp/node_modules/zod/src/v3/tests/generics.test.ts +0 -48
  324. package/mcp/node_modules/zod/src/v3/tests/instanceof.test.ts +0 -37
  325. package/mcp/node_modules/zod/src/v3/tests/intersection.test.ts +0 -110
  326. package/mcp/node_modules/zod/src/v3/tests/language-server.source.ts +0 -76
  327. package/mcp/node_modules/zod/src/v3/tests/language-server.test.ts +0 -207
  328. package/mcp/node_modules/zod/src/v3/tests/literal.test.ts +0 -36
  329. package/mcp/node_modules/zod/src/v3/tests/map.test.ts +0 -110
  330. package/mcp/node_modules/zod/src/v3/tests/masking.test.ts +0 -4
  331. package/mcp/node_modules/zod/src/v3/tests/mocker.test.ts +0 -19
  332. package/mcp/node_modules/zod/src/v3/tests/nan.test.ts +0 -21
  333. package/mcp/node_modules/zod/src/v3/tests/nativeEnum.test.ts +0 -87
  334. package/mcp/node_modules/zod/src/v3/tests/nullable.test.ts +0 -42
  335. package/mcp/node_modules/zod/src/v3/tests/number.test.ts +0 -176
  336. package/mcp/node_modules/zod/src/v3/tests/object-augmentation.test.ts +0 -29
  337. package/mcp/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +0 -29
  338. package/mcp/node_modules/zod/src/v3/tests/object.test.ts +0 -434
  339. package/mcp/node_modules/zod/src/v3/tests/optional.test.ts +0 -42
  340. package/mcp/node_modules/zod/src/v3/tests/parseUtil.test.ts +0 -23
  341. package/mcp/node_modules/zod/src/v3/tests/parser.test.ts +0 -41
  342. package/mcp/node_modules/zod/src/v3/tests/partials.test.ts +0 -243
  343. package/mcp/node_modules/zod/src/v3/tests/pickomit.test.ts +0 -111
  344. package/mcp/node_modules/zod/src/v3/tests/pipeline.test.ts +0 -29
  345. package/mcp/node_modules/zod/src/v3/tests/preprocess.test.ts +0 -186
  346. package/mcp/node_modules/zod/src/v3/tests/primitive.test.ts +0 -440
  347. package/mcp/node_modules/zod/src/v3/tests/promise.test.ts +0 -90
  348. package/mcp/node_modules/zod/src/v3/tests/readonly.test.ts +0 -194
  349. package/mcp/node_modules/zod/src/v3/tests/record.test.ts +0 -171
  350. package/mcp/node_modules/zod/src/v3/tests/recursive.test.ts +0 -197
  351. package/mcp/node_modules/zod/src/v3/tests/refine.test.ts +0 -313
  352. package/mcp/node_modules/zod/src/v3/tests/safeparse.test.ts +0 -27
  353. package/mcp/node_modules/zod/src/v3/tests/set.test.ts +0 -142
  354. package/mcp/node_modules/zod/src/v3/tests/standard-schema.test.ts +0 -83
  355. package/mcp/node_modules/zod/src/v3/tests/string.test.ts +0 -916
  356. package/mcp/node_modules/zod/src/v3/tests/transformer.test.ts +0 -233
  357. package/mcp/node_modules/zod/src/v3/tests/tuple.test.ts +0 -90
  358. package/mcp/node_modules/zod/src/v3/tests/unions.test.ts +0 -57
  359. package/mcp/node_modules/zod/src/v3/tests/validations.test.ts +0 -133
  360. package/mcp/node_modules/zod/src/v3/tests/void.test.ts +0 -15
  361. package/mcp/node_modules/zod/src/v3/types.ts +0 -5136
  362. package/mcp/node_modules/zod/src/v4/classic/checks.ts +0 -30
  363. package/mcp/node_modules/zod/src/v4/classic/coerce.ts +0 -27
  364. package/mcp/node_modules/zod/src/v4/classic/compat.ts +0 -66
  365. package/mcp/node_modules/zod/src/v4/classic/errors.ts +0 -75
  366. package/mcp/node_modules/zod/src/v4/classic/external.ts +0 -50
  367. package/mcp/node_modules/zod/src/v4/classic/index.ts +0 -5
  368. package/mcp/node_modules/zod/src/v4/classic/iso.ts +0 -90
  369. package/mcp/node_modules/zod/src/v4/classic/parse.ts +0 -33
  370. package/mcp/node_modules/zod/src/v4/classic/schemas.ts +0 -2054
  371. package/mcp/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +0 -26
  372. package/mcp/node_modules/zod/src/v4/classic/tests/array.test.ts +0 -264
  373. package/mcp/node_modules/zod/src/v4/classic/tests/assignability.test.ts +0 -210
  374. package/mcp/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +0 -381
  375. package/mcp/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +0 -68
  376. package/mcp/node_modules/zod/src/v4/classic/tests/base.test.ts +0 -7
  377. package/mcp/node_modules/zod/src/v4/classic/tests/bigint.test.ts +0 -54
  378. package/mcp/node_modules/zod/src/v4/classic/tests/brand.test.ts +0 -63
  379. package/mcp/node_modules/zod/src/v4/classic/tests/catch.test.ts +0 -252
  380. package/mcp/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +0 -20
  381. package/mcp/node_modules/zod/src/v4/classic/tests/coerce.test.ts +0 -160
  382. package/mcp/node_modules/zod/src/v4/classic/tests/continuability.test.ts +0 -352
  383. package/mcp/node_modules/zod/src/v4/classic/tests/custom.test.ts +0 -40
  384. package/mcp/node_modules/zod/src/v4/classic/tests/date.test.ts +0 -31
  385. package/mcp/node_modules/zod/src/v4/classic/tests/datetime.test.ts +0 -296
  386. package/mcp/node_modules/zod/src/v4/classic/tests/default.test.ts +0 -313
  387. package/mcp/node_modules/zod/src/v4/classic/tests/description.test.ts +0 -32
  388. package/mcp/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +0 -619
  389. package/mcp/node_modules/zod/src/v4/classic/tests/enum.test.ts +0 -285
  390. package/mcp/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +0 -527
  391. package/mcp/node_modules/zod/src/v4/classic/tests/error.test.ts +0 -711
  392. package/mcp/node_modules/zod/src/v4/classic/tests/file.test.ts +0 -91
  393. package/mcp/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +0 -175
  394. package/mcp/node_modules/zod/src/v4/classic/tests/function.test.ts +0 -268
  395. package/mcp/node_modules/zod/src/v4/classic/tests/generics.test.ts +0 -72
  396. package/mcp/node_modules/zod/src/v4/classic/tests/index.test.ts +0 -829
  397. package/mcp/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +0 -34
  398. package/mcp/node_modules/zod/src/v4/classic/tests/intersection.test.ts +0 -171
  399. package/mcp/node_modules/zod/src/v4/classic/tests/json.test.ts +0 -108
  400. package/mcp/node_modules/zod/src/v4/classic/tests/lazy.test.ts +0 -227
  401. package/mcp/node_modules/zod/src/v4/classic/tests/literal.test.ts +0 -92
  402. package/mcp/node_modules/zod/src/v4/classic/tests/map.test.ts +0 -196
  403. package/mcp/node_modules/zod/src/v4/classic/tests/nan.test.ts +0 -21
  404. package/mcp/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +0 -168
  405. package/mcp/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +0 -86
  406. package/mcp/node_modules/zod/src/v4/classic/tests/nullable.test.ts +0 -22
  407. package/mcp/node_modules/zod/src/v4/classic/tests/number.test.ts +0 -247
  408. package/mcp/node_modules/zod/src/v4/classic/tests/object.test.ts +0 -563
  409. package/mcp/node_modules/zod/src/v4/classic/tests/optional.test.ts +0 -123
  410. package/mcp/node_modules/zod/src/v4/classic/tests/partial.test.ts +0 -147
  411. package/mcp/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +0 -127
  412. package/mcp/node_modules/zod/src/v4/classic/tests/pipe.test.ts +0 -81
  413. package/mcp/node_modules/zod/src/v4/classic/tests/prefault.test.ts +0 -37
  414. package/mcp/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +0 -298
  415. package/mcp/node_modules/zod/src/v4/classic/tests/primitive.test.ts +0 -175
  416. package/mcp/node_modules/zod/src/v4/classic/tests/promise.test.ts +0 -81
  417. package/mcp/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +0 -23
  418. package/mcp/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -252
  419. package/mcp/node_modules/zod/src/v4/classic/tests/record.test.ts +0 -342
  420. package/mcp/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +0 -356
  421. package/mcp/node_modules/zod/src/v4/classic/tests/refine.test.ts +0 -532
  422. package/mcp/node_modules/zod/src/v4/classic/tests/registries.test.ts +0 -204
  423. package/mcp/node_modules/zod/src/v4/classic/tests/set.test.ts +0 -179
  424. package/mcp/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +0 -57
  425. package/mcp/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +0 -109
  426. package/mcp/node_modules/zod/src/v4/classic/tests/string.test.ts +0 -881
  427. package/mcp/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +0 -66
  428. package/mcp/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +0 -758
  429. package/mcp/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +0 -2314
  430. package/mcp/node_modules/zod/src/v4/classic/tests/transform.test.ts +0 -250
  431. package/mcp/node_modules/zod/src/v4/classic/tests/tuple.test.ts +0 -163
  432. package/mcp/node_modules/zod/src/v4/classic/tests/union.test.ts +0 -94
  433. package/mcp/node_modules/zod/src/v4/classic/tests/validations.test.ts +0 -283
  434. package/mcp/node_modules/zod/src/v4/classic/tests/void.test.ts +0 -12
  435. package/mcp/node_modules/zod/src/v4/core/api.ts +0 -1594
  436. package/mcp/node_modules/zod/src/v4/core/checks.ts +0 -1283
  437. package/mcp/node_modules/zod/src/v4/core/config.ts +0 -15
  438. package/mcp/node_modules/zod/src/v4/core/core.ts +0 -134
  439. package/mcp/node_modules/zod/src/v4/core/doc.ts +0 -44
  440. package/mcp/node_modules/zod/src/v4/core/errors.ts +0 -424
  441. package/mcp/node_modules/zod/src/v4/core/function.ts +0 -176
  442. package/mcp/node_modules/zod/src/v4/core/index.ts +0 -15
  443. package/mcp/node_modules/zod/src/v4/core/json-schema.ts +0 -143
  444. package/mcp/node_modules/zod/src/v4/core/parse.ts +0 -94
  445. package/mcp/node_modules/zod/src/v4/core/regexes.ts +0 -135
  446. package/mcp/node_modules/zod/src/v4/core/registries.ts +0 -96
  447. package/mcp/node_modules/zod/src/v4/core/schemas.ts +0 -3842
  448. package/mcp/node_modules/zod/src/v4/core/standard-schema.ts +0 -64
  449. package/mcp/node_modules/zod/src/v4/core/tests/index.test.ts +0 -46
  450. package/mcp/node_modules/zod/src/v4/core/tests/locales/be.test.ts +0 -124
  451. package/mcp/node_modules/zod/src/v4/core/tests/locales/en.test.ts +0 -22
  452. package/mcp/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +0 -128
  453. package/mcp/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +0 -69
  454. package/mcp/node_modules/zod/src/v4/core/to-json-schema.ts +0 -977
  455. package/mcp/node_modules/zod/src/v4/core/util.ts +0 -775
  456. package/mcp/node_modules/zod/src/v4/core/versions.ts +0 -5
  457. package/mcp/node_modules/zod/src/v4/core/zsf.ts +0 -323
  458. package/mcp/node_modules/zod/src/v4/index.ts +0 -4
  459. package/mcp/node_modules/zod/src/v4/locales/ar.ts +0 -125
  460. package/mcp/node_modules/zod/src/v4/locales/az.ts +0 -121
  461. package/mcp/node_modules/zod/src/v4/locales/be.ts +0 -184
  462. package/mcp/node_modules/zod/src/v4/locales/ca.ts +0 -127
  463. package/mcp/node_modules/zod/src/v4/locales/cs.ts +0 -142
  464. package/mcp/node_modules/zod/src/v4/locales/de.ts +0 -124
  465. package/mcp/node_modules/zod/src/v4/locales/en.ts +0 -127
  466. package/mcp/node_modules/zod/src/v4/locales/eo.ts +0 -125
  467. package/mcp/node_modules/zod/src/v4/locales/es.ts +0 -125
  468. package/mcp/node_modules/zod/src/v4/locales/fa.ts +0 -134
  469. package/mcp/node_modules/zod/src/v4/locales/fi.ts +0 -131
  470. package/mcp/node_modules/zod/src/v4/locales/fr-CA.ts +0 -126
  471. package/mcp/node_modules/zod/src/v4/locales/fr.ts +0 -124
  472. package/mcp/node_modules/zod/src/v4/locales/he.ts +0 -125
  473. package/mcp/node_modules/zod/src/v4/locales/hu.ts +0 -126
  474. package/mcp/node_modules/zod/src/v4/locales/id.ts +0 -125
  475. package/mcp/node_modules/zod/src/v4/locales/index.ts +0 -39
  476. package/mcp/node_modules/zod/src/v4/locales/it.ts +0 -125
  477. package/mcp/node_modules/zod/src/v4/locales/ja.ts +0 -122
  478. package/mcp/node_modules/zod/src/v4/locales/kh.ts +0 -126
  479. package/mcp/node_modules/zod/src/v4/locales/ko.ts +0 -131
  480. package/mcp/node_modules/zod/src/v4/locales/mk.ts +0 -127
  481. package/mcp/node_modules/zod/src/v4/locales/ms.ts +0 -124
  482. package/mcp/node_modules/zod/src/v4/locales/nl.ts +0 -126
  483. package/mcp/node_modules/zod/src/v4/locales/no.ts +0 -124
  484. package/mcp/node_modules/zod/src/v4/locales/ota.ts +0 -125
  485. package/mcp/node_modules/zod/src/v4/locales/pl.ts +0 -126
  486. package/mcp/node_modules/zod/src/v4/locales/ps.ts +0 -133
  487. package/mcp/node_modules/zod/src/v4/locales/pt.ts +0 -123
  488. package/mcp/node_modules/zod/src/v4/locales/ru.ts +0 -184
  489. package/mcp/node_modules/zod/src/v4/locales/sl.ts +0 -126
  490. package/mcp/node_modules/zod/src/v4/locales/sv.ts +0 -127
  491. package/mcp/node_modules/zod/src/v4/locales/ta.ts +0 -125
  492. package/mcp/node_modules/zod/src/v4/locales/th.ts +0 -126
  493. package/mcp/node_modules/zod/src/v4/locales/tr.ts +0 -121
  494. package/mcp/node_modules/zod/src/v4/locales/ua.ts +0 -126
  495. package/mcp/node_modules/zod/src/v4/locales/ur.ts +0 -126
  496. package/mcp/node_modules/zod/src/v4/locales/vi.ts +0 -125
  497. package/mcp/node_modules/zod/src/v4/locales/zh-CN.ts +0 -123
  498. package/mcp/node_modules/zod/src/v4/locales/zh-TW.ts +0 -125
  499. package/mcp/node_modules/zod/src/v4/mini/checks.ts +0 -32
  500. package/mcp/node_modules/zod/src/v4/mini/coerce.ts +0 -22
  501. package/mcp/node_modules/zod/src/v4/mini/external.ts +0 -40
  502. package/mcp/node_modules/zod/src/v4/mini/index.ts +0 -3
  503. package/mcp/node_modules/zod/src/v4/mini/iso.ts +0 -62
  504. package/mcp/node_modules/zod/src/v4/mini/parse.ts +0 -1
  505. package/mcp/node_modules/zod/src/v4/mini/schemas.ts +0 -1579
  506. package/mcp/node_modules/zod/src/v4/mini/tests/assignability.test.ts +0 -129
  507. package/mcp/node_modules/zod/src/v4/mini/tests/brand.test.ts +0 -51
  508. package/mcp/node_modules/zod/src/v4/mini/tests/checks.test.ts +0 -144
  509. package/mcp/node_modules/zod/src/v4/mini/tests/computed.test.ts +0 -36
  510. package/mcp/node_modules/zod/src/v4/mini/tests/error.test.ts +0 -22
  511. package/mcp/node_modules/zod/src/v4/mini/tests/functions.test.ts +0 -43
  512. package/mcp/node_modules/zod/src/v4/mini/tests/index.test.ts +0 -871
  513. package/mcp/node_modules/zod/src/v4/mini/tests/number.test.ts +0 -95
  514. package/mcp/node_modules/zod/src/v4/mini/tests/object.test.ts +0 -185
  515. package/mcp/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +0 -43
  516. package/mcp/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +0 -275
  517. package/mcp/node_modules/zod/src/v4/mini/tests/string.test.ts +0 -299
  518. package/mcp/node_modules/zod/src/v4-mini/index.ts +0 -1
  519. package/mcp/node_modules/zod/v3/ZodError.cjs +0 -138
  520. package/mcp/node_modules/zod/v3/ZodError.d.cts +0 -164
  521. package/mcp/node_modules/zod/v3/ZodError.d.ts +0 -164
  522. package/mcp/node_modules/zod/v3/ZodError.js +0 -133
  523. package/mcp/node_modules/zod/v3/errors.cjs +0 -17
  524. package/mcp/node_modules/zod/v3/errors.d.cts +0 -5
  525. package/mcp/node_modules/zod/v3/errors.d.ts +0 -5
  526. package/mcp/node_modules/zod/v3/errors.js +0 -9
  527. package/mcp/node_modules/zod/v3/external.cjs +0 -22
  528. package/mcp/node_modules/zod/v3/external.d.cts +0 -6
  529. package/mcp/node_modules/zod/v3/external.d.ts +0 -6
  530. package/mcp/node_modules/zod/v3/external.js +0 -6
  531. package/mcp/node_modules/zod/v3/helpers/enumUtil.cjs +0 -2
  532. package/mcp/node_modules/zod/v3/helpers/enumUtil.d.cts +0 -8
  533. package/mcp/node_modules/zod/v3/helpers/enumUtil.d.ts +0 -8
  534. package/mcp/node_modules/zod/v3/helpers/enumUtil.js +0 -1
  535. package/mcp/node_modules/zod/v3/helpers/errorUtil.cjs +0 -9
  536. package/mcp/node_modules/zod/v3/helpers/errorUtil.d.cts +0 -9
  537. package/mcp/node_modules/zod/v3/helpers/errorUtil.d.ts +0 -9
  538. package/mcp/node_modules/zod/v3/helpers/errorUtil.js +0 -6
  539. package/mcp/node_modules/zod/v3/helpers/parseUtil.cjs +0 -124
  540. package/mcp/node_modules/zod/v3/helpers/parseUtil.d.cts +0 -78
  541. package/mcp/node_modules/zod/v3/helpers/parseUtil.d.ts +0 -78
  542. package/mcp/node_modules/zod/v3/helpers/parseUtil.js +0 -109
  543. package/mcp/node_modules/zod/v3/helpers/partialUtil.cjs +0 -2
  544. package/mcp/node_modules/zod/v3/helpers/partialUtil.d.cts +0 -8
  545. package/mcp/node_modules/zod/v3/helpers/partialUtil.d.ts +0 -8
  546. package/mcp/node_modules/zod/v3/helpers/partialUtil.js +0 -1
  547. package/mcp/node_modules/zod/v3/helpers/typeAliases.cjs +0 -2
  548. package/mcp/node_modules/zod/v3/helpers/typeAliases.d.cts +0 -2
  549. package/mcp/node_modules/zod/v3/helpers/typeAliases.d.ts +0 -2
  550. package/mcp/node_modules/zod/v3/helpers/typeAliases.js +0 -1
  551. package/mcp/node_modules/zod/v3/helpers/util.cjs +0 -137
  552. package/mcp/node_modules/zod/v3/helpers/util.d.cts +0 -85
  553. package/mcp/node_modules/zod/v3/helpers/util.d.ts +0 -85
  554. package/mcp/node_modules/zod/v3/helpers/util.js +0 -133
  555. package/mcp/node_modules/zod/v3/index.cjs +0 -33
  556. package/mcp/node_modules/zod/v3/index.d.cts +0 -4
  557. package/mcp/node_modules/zod/v3/index.d.ts +0 -4
  558. package/mcp/node_modules/zod/v3/index.js +0 -4
  559. package/mcp/node_modules/zod/v3/locales/en.cjs +0 -111
  560. package/mcp/node_modules/zod/v3/locales/en.d.cts +0 -3
  561. package/mcp/node_modules/zod/v3/locales/en.d.ts +0 -3
  562. package/mcp/node_modules/zod/v3/locales/en.js +0 -109
  563. package/mcp/node_modules/zod/v3/standard-schema.cjs +0 -2
  564. package/mcp/node_modules/zod/v3/standard-schema.d.cts +0 -102
  565. package/mcp/node_modules/zod/v3/standard-schema.d.ts +0 -102
  566. package/mcp/node_modules/zod/v3/standard-schema.js +0 -1
  567. package/mcp/node_modules/zod/v3/types.cjs +0 -3775
  568. package/mcp/node_modules/zod/v3/types.d.cts +0 -1031
  569. package/mcp/node_modules/zod/v3/types.d.ts +0 -1031
  570. package/mcp/node_modules/zod/v3/types.js +0 -3693
  571. package/mcp/node_modules/zod/v4/classic/checks.cjs +0 -32
  572. package/mcp/node_modules/zod/v4/classic/checks.d.cts +0 -1
  573. package/mcp/node_modules/zod/v4/classic/checks.d.ts +0 -1
  574. package/mcp/node_modules/zod/v4/classic/checks.js +0 -1
  575. package/mcp/node_modules/zod/v4/classic/coerce.cjs +0 -47
  576. package/mcp/node_modules/zod/v4/classic/coerce.d.cts +0 -17
  577. package/mcp/node_modules/zod/v4/classic/coerce.d.ts +0 -17
  578. package/mcp/node_modules/zod/v4/classic/coerce.js +0 -17
  579. package/mcp/node_modules/zod/v4/classic/compat.cjs +0 -57
  580. package/mcp/node_modules/zod/v4/classic/compat.d.cts +0 -46
  581. package/mcp/node_modules/zod/v4/classic/compat.d.ts +0 -46
  582. package/mcp/node_modules/zod/v4/classic/compat.js +0 -27
  583. package/mcp/node_modules/zod/v4/classic/errors.cjs +0 -67
  584. package/mcp/node_modules/zod/v4/classic/errors.d.cts +0 -30
  585. package/mcp/node_modules/zod/v4/classic/errors.d.ts +0 -30
  586. package/mcp/node_modules/zod/v4/classic/errors.js +0 -41
  587. package/mcp/node_modules/zod/v4/classic/external.cjs +0 -70
  588. package/mcp/node_modules/zod/v4/classic/external.d.cts +0 -13
  589. package/mcp/node_modules/zod/v4/classic/external.d.ts +0 -13
  590. package/mcp/node_modules/zod/v4/classic/external.js +0 -18
  591. package/mcp/node_modules/zod/v4/classic/index.cjs +0 -33
  592. package/mcp/node_modules/zod/v4/classic/index.d.cts +0 -4
  593. package/mcp/node_modules/zod/v4/classic/index.d.ts +0 -4
  594. package/mcp/node_modules/zod/v4/classic/index.js +0 -4
  595. package/mcp/node_modules/zod/v4/classic/iso.cjs +0 -60
  596. package/mcp/node_modules/zod/v4/classic/iso.d.cts +0 -22
  597. package/mcp/node_modules/zod/v4/classic/iso.d.ts +0 -22
  598. package/mcp/node_modules/zod/v4/classic/iso.js +0 -30
  599. package/mcp/node_modules/zod/v4/classic/parse.cjs +0 -32
  600. package/mcp/node_modules/zod/v4/classic/parse.d.cts +0 -23
  601. package/mcp/node_modules/zod/v4/classic/parse.d.ts +0 -23
  602. package/mcp/node_modules/zod/v4/classic/parse.js +0 -6
  603. package/mcp/node_modules/zod/v4/classic/schemas.cjs +0 -1109
  604. package/mcp/node_modules/zod/v4/classic/schemas.d.cts +0 -630
  605. package/mcp/node_modules/zod/v4/classic/schemas.d.ts +0 -630
  606. package/mcp/node_modules/zod/v4/classic/schemas.js +0 -1006
  607. package/mcp/node_modules/zod/v4/core/api.cjs +0 -1039
  608. package/mcp/node_modules/zod/v4/core/api.d.cts +0 -284
  609. package/mcp/node_modules/zod/v4/core/api.d.ts +0 -284
  610. package/mcp/node_modules/zod/v4/core/api.js +0 -906
  611. package/mcp/node_modules/zod/v4/core/checks.cjs +0 -591
  612. package/mcp/node_modules/zod/v4/core/checks.d.cts +0 -278
  613. package/mcp/node_modules/zod/v4/core/checks.d.ts +0 -278
  614. package/mcp/node_modules/zod/v4/core/checks.js +0 -565
  615. package/mcp/node_modules/zod/v4/core/core.cjs +0 -67
  616. package/mcp/node_modules/zod/v4/core/core.d.cts +0 -49
  617. package/mcp/node_modules/zod/v4/core/core.d.ts +0 -49
  618. package/mcp/node_modules/zod/v4/core/core.js +0 -61
  619. package/mcp/node_modules/zod/v4/core/doc.cjs +0 -39
  620. package/mcp/node_modules/zod/v4/core/doc.d.cts +0 -14
  621. package/mcp/node_modules/zod/v4/core/doc.d.ts +0 -14
  622. package/mcp/node_modules/zod/v4/core/doc.js +0 -35
  623. package/mcp/node_modules/zod/v4/core/errors.cjs +0 -226
  624. package/mcp/node_modules/zod/v4/core/errors.d.cts +0 -208
  625. package/mcp/node_modules/zod/v4/core/errors.d.ts +0 -208
  626. package/mcp/node_modules/zod/v4/core/errors.js +0 -195
  627. package/mcp/node_modules/zod/v4/core/function.cjs +0 -102
  628. package/mcp/node_modules/zod/v4/core/function.d.cts +0 -52
  629. package/mcp/node_modules/zod/v4/core/function.d.ts +0 -52
  630. package/mcp/node_modules/zod/v4/core/function.js +0 -75
  631. package/mcp/node_modules/zod/v4/core/index.cjs +0 -44
  632. package/mcp/node_modules/zod/v4/core/index.d.cts +0 -15
  633. package/mcp/node_modules/zod/v4/core/index.d.ts +0 -15
  634. package/mcp/node_modules/zod/v4/core/index.js +0 -15
  635. package/mcp/node_modules/zod/v4/core/json-schema.cjs +0 -2
  636. package/mcp/node_modules/zod/v4/core/json-schema.d.cts +0 -87
  637. package/mcp/node_modules/zod/v4/core/json-schema.d.ts +0 -87
  638. package/mcp/node_modules/zod/v4/core/json-schema.js +0 -1
  639. package/mcp/node_modules/zod/v4/core/parse.cjs +0 -87
  640. package/mcp/node_modules/zod/v4/core/parse.d.cts +0 -25
  641. package/mcp/node_modules/zod/v4/core/parse.d.ts +0 -25
  642. package/mcp/node_modules/zod/v4/core/parse.js +0 -57
  643. package/mcp/node_modules/zod/v4/core/regexes.cjs +0 -103
  644. package/mcp/node_modules/zod/v4/core/regexes.d.cts +0 -62
  645. package/mcp/node_modules/zod/v4/core/regexes.d.ts +0 -62
  646. package/mcp/node_modules/zod/v4/core/regexes.js +0 -95
  647. package/mcp/node_modules/zod/v4/core/registries.cjs +0 -56
  648. package/mcp/node_modules/zod/v4/core/registries.d.cts +0 -35
  649. package/mcp/node_modules/zod/v4/core/registries.d.ts +0 -35
  650. package/mcp/node_modules/zod/v4/core/registries.js +0 -51
  651. package/mcp/node_modules/zod/v4/core/schemas.cjs +0 -1748
  652. package/mcp/node_modules/zod/v4/core/schemas.d.cts +0 -1041
  653. package/mcp/node_modules/zod/v4/core/schemas.d.ts +0 -1041
  654. package/mcp/node_modules/zod/v4/core/schemas.js +0 -1717
  655. package/mcp/node_modules/zod/v4/core/standard-schema.cjs +0 -2
  656. package/mcp/node_modules/zod/v4/core/standard-schema.d.cts +0 -55
  657. package/mcp/node_modules/zod/v4/core/standard-schema.d.ts +0 -55
  658. package/mcp/node_modules/zod/v4/core/standard-schema.js +0 -1
  659. package/mcp/node_modules/zod/v4/core/to-json-schema.cjs +0 -854
  660. package/mcp/node_modules/zod/v4/core/to-json-schema.d.cts +0 -88
  661. package/mcp/node_modules/zod/v4/core/to-json-schema.d.ts +0 -88
  662. package/mcp/node_modules/zod/v4/core/to-json-schema.js +0 -849
  663. package/mcp/node_modules/zod/v4/core/util.cjs +0 -539
  664. package/mcp/node_modules/zod/v4/core/util.d.cts +0 -183
  665. package/mcp/node_modules/zod/v4/core/util.d.ts +0 -183
  666. package/mcp/node_modules/zod/v4/core/util.js +0 -493
  667. package/mcp/node_modules/zod/v4/core/versions.cjs +0 -8
  668. package/mcp/node_modules/zod/v4/core/versions.d.cts +0 -5
  669. package/mcp/node_modules/zod/v4/core/versions.d.ts +0 -5
  670. package/mcp/node_modules/zod/v4/core/versions.js +0 -5
  671. package/mcp/node_modules/zod/v4/index.cjs +0 -22
  672. package/mcp/node_modules/zod/v4/index.d.cts +0 -3
  673. package/mcp/node_modules/zod/v4/index.d.ts +0 -3
  674. package/mcp/node_modules/zod/v4/index.js +0 -3
  675. package/mcp/node_modules/zod/v4/locales/ar.cjs +0 -142
  676. package/mcp/node_modules/zod/v4/locales/ar.d.cts +0 -4
  677. package/mcp/node_modules/zod/v4/locales/ar.d.ts +0 -4
  678. package/mcp/node_modules/zod/v4/locales/ar.js +0 -116
  679. package/mcp/node_modules/zod/v4/locales/az.cjs +0 -141
  680. package/mcp/node_modules/zod/v4/locales/az.d.cts +0 -4
  681. package/mcp/node_modules/zod/v4/locales/az.d.ts +0 -4
  682. package/mcp/node_modules/zod/v4/locales/az.js +0 -115
  683. package/mcp/node_modules/zod/v4/locales/be.cjs +0 -190
  684. package/mcp/node_modules/zod/v4/locales/be.d.cts +0 -4
  685. package/mcp/node_modules/zod/v4/locales/be.d.ts +0 -4
  686. package/mcp/node_modules/zod/v4/locales/be.js +0 -164
  687. package/mcp/node_modules/zod/v4/locales/ca.cjs +0 -144
  688. package/mcp/node_modules/zod/v4/locales/ca.d.cts +0 -4
  689. package/mcp/node_modules/zod/v4/locales/ca.d.ts +0 -4
  690. package/mcp/node_modules/zod/v4/locales/ca.js +0 -118
  691. package/mcp/node_modules/zod/v4/locales/cs.cjs +0 -161
  692. package/mcp/node_modules/zod/v4/locales/cs.d.cts +0 -4
  693. package/mcp/node_modules/zod/v4/locales/cs.d.ts +0 -4
  694. package/mcp/node_modules/zod/v4/locales/cs.js +0 -135
  695. package/mcp/node_modules/zod/v4/locales/de.cjs +0 -142
  696. package/mcp/node_modules/zod/v4/locales/de.d.cts +0 -4
  697. package/mcp/node_modules/zod/v4/locales/de.d.ts +0 -4
  698. package/mcp/node_modules/zod/v4/locales/de.js +0 -116
  699. package/mcp/node_modules/zod/v4/locales/en.cjs +0 -145
  700. package/mcp/node_modules/zod/v4/locales/en.d.cts +0 -5
  701. package/mcp/node_modules/zod/v4/locales/en.d.ts +0 -5
  702. package/mcp/node_modules/zod/v4/locales/en.js +0 -117
  703. package/mcp/node_modules/zod/v4/locales/eo.cjs +0 -144
  704. package/mcp/node_modules/zod/v4/locales/eo.d.cts +0 -5
  705. package/mcp/node_modules/zod/v4/locales/eo.d.ts +0 -5
  706. package/mcp/node_modules/zod/v4/locales/eo.js +0 -116
  707. package/mcp/node_modules/zod/v4/locales/es.cjs +0 -143
  708. package/mcp/node_modules/zod/v4/locales/es.d.cts +0 -4
  709. package/mcp/node_modules/zod/v4/locales/es.d.ts +0 -4
  710. package/mcp/node_modules/zod/v4/locales/es.js +0 -117
  711. package/mcp/node_modules/zod/v4/locales/fa.cjs +0 -148
  712. package/mcp/node_modules/zod/v4/locales/fa.d.cts +0 -4
  713. package/mcp/node_modules/zod/v4/locales/fa.d.ts +0 -4
  714. package/mcp/node_modules/zod/v4/locales/fa.js +0 -122
  715. package/mcp/node_modules/zod/v4/locales/fi.cjs +0 -148
  716. package/mcp/node_modules/zod/v4/locales/fi.d.cts +0 -4
  717. package/mcp/node_modules/zod/v4/locales/fi.d.ts +0 -4
  718. package/mcp/node_modules/zod/v4/locales/fi.js +0 -122
  719. package/mcp/node_modules/zod/v4/locales/fr-CA.cjs +0 -143
  720. package/mcp/node_modules/zod/v4/locales/fr-CA.d.cts +0 -4
  721. package/mcp/node_modules/zod/v4/locales/fr-CA.d.ts +0 -4
  722. package/mcp/node_modules/zod/v4/locales/fr-CA.js +0 -117
  723. package/mcp/node_modules/zod/v4/locales/fr.cjs +0 -142
  724. package/mcp/node_modules/zod/v4/locales/fr.d.cts +0 -4
  725. package/mcp/node_modules/zod/v4/locales/fr.d.ts +0 -4
  726. package/mcp/node_modules/zod/v4/locales/fr.js +0 -116
  727. package/mcp/node_modules/zod/v4/locales/he.cjs +0 -143
  728. package/mcp/node_modules/zod/v4/locales/he.d.cts +0 -4
  729. package/mcp/node_modules/zod/v4/locales/he.d.ts +0 -4
  730. package/mcp/node_modules/zod/v4/locales/he.js +0 -117
  731. package/mcp/node_modules/zod/v4/locales/hu.cjs +0 -143
  732. package/mcp/node_modules/zod/v4/locales/hu.d.cts +0 -4
  733. package/mcp/node_modules/zod/v4/locales/hu.d.ts +0 -4
  734. package/mcp/node_modules/zod/v4/locales/hu.js +0 -117
  735. package/mcp/node_modules/zod/v4/locales/id.cjs +0 -142
  736. package/mcp/node_modules/zod/v4/locales/id.d.cts +0 -4
  737. package/mcp/node_modules/zod/v4/locales/id.d.ts +0 -4
  738. package/mcp/node_modules/zod/v4/locales/id.js +0 -116
  739. package/mcp/node_modules/zod/v4/locales/index.cjs +0 -84
  740. package/mcp/node_modules/zod/v4/locales/index.d.cts +0 -39
  741. package/mcp/node_modules/zod/v4/locales/index.d.ts +0 -39
  742. package/mcp/node_modules/zod/v4/locales/index.js +0 -39
  743. package/mcp/node_modules/zod/v4/locales/it.cjs +0 -143
  744. package/mcp/node_modules/zod/v4/locales/it.d.cts +0 -4
  745. package/mcp/node_modules/zod/v4/locales/it.d.ts +0 -4
  746. package/mcp/node_modules/zod/v4/locales/it.js +0 -117
  747. package/mcp/node_modules/zod/v4/locales/ja.cjs +0 -141
  748. package/mcp/node_modules/zod/v4/locales/ja.d.cts +0 -4
  749. package/mcp/node_modules/zod/v4/locales/ja.d.ts +0 -4
  750. package/mcp/node_modules/zod/v4/locales/ja.js +0 -115
  751. package/mcp/node_modules/zod/v4/locales/kh.cjs +0 -143
  752. package/mcp/node_modules/zod/v4/locales/kh.d.cts +0 -4
  753. package/mcp/node_modules/zod/v4/locales/kh.d.ts +0 -4
  754. package/mcp/node_modules/zod/v4/locales/kh.js +0 -117
  755. package/mcp/node_modules/zod/v4/locales/ko.cjs +0 -147
  756. package/mcp/node_modules/zod/v4/locales/ko.d.cts +0 -4
  757. package/mcp/node_modules/zod/v4/locales/ko.d.ts +0 -4
  758. package/mcp/node_modules/zod/v4/locales/ko.js +0 -121
  759. package/mcp/node_modules/zod/v4/locales/mk.cjs +0 -144
  760. package/mcp/node_modules/zod/v4/locales/mk.d.cts +0 -4
  761. package/mcp/node_modules/zod/v4/locales/mk.d.ts +0 -4
  762. package/mcp/node_modules/zod/v4/locales/mk.js +0 -118
  763. package/mcp/node_modules/zod/v4/locales/ms.cjs +0 -142
  764. package/mcp/node_modules/zod/v4/locales/ms.d.cts +0 -4
  765. package/mcp/node_modules/zod/v4/locales/ms.d.ts +0 -4
  766. package/mcp/node_modules/zod/v4/locales/ms.js +0 -116
  767. package/mcp/node_modules/zod/v4/locales/nl.cjs +0 -143
  768. package/mcp/node_modules/zod/v4/locales/nl.d.cts +0 -4
  769. package/mcp/node_modules/zod/v4/locales/nl.d.ts +0 -4
  770. package/mcp/node_modules/zod/v4/locales/nl.js +0 -117
  771. package/mcp/node_modules/zod/v4/locales/no.cjs +0 -142
  772. package/mcp/node_modules/zod/v4/locales/no.d.cts +0 -4
  773. package/mcp/node_modules/zod/v4/locales/no.d.ts +0 -4
  774. package/mcp/node_modules/zod/v4/locales/no.js +0 -116
  775. package/mcp/node_modules/zod/v4/locales/ota.cjs +0 -143
  776. package/mcp/node_modules/zod/v4/locales/ota.d.cts +0 -4
  777. package/mcp/node_modules/zod/v4/locales/ota.d.ts +0 -4
  778. package/mcp/node_modules/zod/v4/locales/ota.js +0 -117
  779. package/mcp/node_modules/zod/v4/locales/pl.cjs +0 -143
  780. package/mcp/node_modules/zod/v4/locales/pl.d.cts +0 -4
  781. package/mcp/node_modules/zod/v4/locales/pl.d.ts +0 -4
  782. package/mcp/node_modules/zod/v4/locales/pl.js +0 -117
  783. package/mcp/node_modules/zod/v4/locales/ps.cjs +0 -148
  784. package/mcp/node_modules/zod/v4/locales/ps.d.cts +0 -4
  785. package/mcp/node_modules/zod/v4/locales/ps.d.ts +0 -4
  786. package/mcp/node_modules/zod/v4/locales/ps.js +0 -122
  787. package/mcp/node_modules/zod/v4/locales/pt.cjs +0 -142
  788. package/mcp/node_modules/zod/v4/locales/pt.d.cts +0 -4
  789. package/mcp/node_modules/zod/v4/locales/pt.d.ts +0 -4
  790. package/mcp/node_modules/zod/v4/locales/pt.js +0 -116
  791. package/mcp/node_modules/zod/v4/locales/ru.cjs +0 -190
  792. package/mcp/node_modules/zod/v4/locales/ru.d.cts +0 -4
  793. package/mcp/node_modules/zod/v4/locales/ru.d.ts +0 -4
  794. package/mcp/node_modules/zod/v4/locales/ru.js +0 -164
  795. package/mcp/node_modules/zod/v4/locales/sl.cjs +0 -143
  796. package/mcp/node_modules/zod/v4/locales/sl.d.cts +0 -4
  797. package/mcp/node_modules/zod/v4/locales/sl.d.ts +0 -4
  798. package/mcp/node_modules/zod/v4/locales/sl.js +0 -117
  799. package/mcp/node_modules/zod/v4/locales/sv.cjs +0 -144
  800. package/mcp/node_modules/zod/v4/locales/sv.d.cts +0 -4
  801. package/mcp/node_modules/zod/v4/locales/sv.d.ts +0 -4
  802. package/mcp/node_modules/zod/v4/locales/sv.js +0 -118
  803. package/mcp/node_modules/zod/v4/locales/ta.cjs +0 -143
  804. package/mcp/node_modules/zod/v4/locales/ta.d.cts +0 -4
  805. package/mcp/node_modules/zod/v4/locales/ta.d.ts +0 -4
  806. package/mcp/node_modules/zod/v4/locales/ta.js +0 -117
  807. package/mcp/node_modules/zod/v4/locales/th.cjs +0 -143
  808. package/mcp/node_modules/zod/v4/locales/th.d.cts +0 -4
  809. package/mcp/node_modules/zod/v4/locales/th.d.ts +0 -4
  810. package/mcp/node_modules/zod/v4/locales/th.js +0 -117
  811. package/mcp/node_modules/zod/v4/locales/tr.cjs +0 -143
  812. package/mcp/node_modules/zod/v4/locales/tr.d.cts +0 -5
  813. package/mcp/node_modules/zod/v4/locales/tr.d.ts +0 -5
  814. package/mcp/node_modules/zod/v4/locales/tr.js +0 -115
  815. package/mcp/node_modules/zod/v4/locales/ua.cjs +0 -143
  816. package/mcp/node_modules/zod/v4/locales/ua.d.cts +0 -4
  817. package/mcp/node_modules/zod/v4/locales/ua.d.ts +0 -4
  818. package/mcp/node_modules/zod/v4/locales/ua.js +0 -117
  819. package/mcp/node_modules/zod/v4/locales/ur.cjs +0 -143
  820. package/mcp/node_modules/zod/v4/locales/ur.d.cts +0 -4
  821. package/mcp/node_modules/zod/v4/locales/ur.d.ts +0 -4
  822. package/mcp/node_modules/zod/v4/locales/ur.js +0 -117
  823. package/mcp/node_modules/zod/v4/locales/vi.cjs +0 -142
  824. package/mcp/node_modules/zod/v4/locales/vi.d.cts +0 -4
  825. package/mcp/node_modules/zod/v4/locales/vi.d.ts +0 -4
  826. package/mcp/node_modules/zod/v4/locales/vi.js +0 -116
  827. package/mcp/node_modules/zod/v4/locales/zh-CN.cjs +0 -142
  828. package/mcp/node_modules/zod/v4/locales/zh-CN.d.cts +0 -4
  829. package/mcp/node_modules/zod/v4/locales/zh-CN.d.ts +0 -4
  830. package/mcp/node_modules/zod/v4/locales/zh-CN.js +0 -116
  831. package/mcp/node_modules/zod/v4/locales/zh-TW.cjs +0 -143
  832. package/mcp/node_modules/zod/v4/locales/zh-TW.d.cts +0 -4
  833. package/mcp/node_modules/zod/v4/locales/zh-TW.d.ts +0 -4
  834. package/mcp/node_modules/zod/v4/locales/zh-TW.js +0 -117
  835. package/mcp/node_modules/zod/v4/mini/checks.cjs +0 -34
  836. package/mcp/node_modules/zod/v4/mini/checks.d.cts +0 -1
  837. package/mcp/node_modules/zod/v4/mini/checks.d.ts +0 -1
  838. package/mcp/node_modules/zod/v4/mini/checks.js +0 -1
  839. package/mcp/node_modules/zod/v4/mini/coerce.cjs +0 -47
  840. package/mcp/node_modules/zod/v4/mini/coerce.d.cts +0 -7
  841. package/mcp/node_modules/zod/v4/mini/coerce.d.ts +0 -7
  842. package/mcp/node_modules/zod/v4/mini/coerce.js +0 -17
  843. package/mcp/node_modules/zod/v4/mini/external.cjs +0 -62
  844. package/mcp/node_modules/zod/v4/mini/external.d.cts +0 -11
  845. package/mcp/node_modules/zod/v4/mini/external.d.ts +0 -11
  846. package/mcp/node_modules/zod/v4/mini/external.js +0 -13
  847. package/mcp/node_modules/zod/v4/mini/index.cjs +0 -32
  848. package/mcp/node_modules/zod/v4/mini/index.d.cts +0 -3
  849. package/mcp/node_modules/zod/v4/mini/index.d.ts +0 -3
  850. package/mcp/node_modules/zod/v4/mini/index.js +0 -3
  851. package/mcp/node_modules/zod/v4/mini/iso.cjs +0 -60
  852. package/mcp/node_modules/zod/v4/mini/iso.d.cts +0 -22
  853. package/mcp/node_modules/zod/v4/mini/iso.d.ts +0 -22
  854. package/mcp/node_modules/zod/v4/mini/iso.js +0 -30
  855. package/mcp/node_modules/zod/v4/mini/parse.cjs +0 -8
  856. package/mcp/node_modules/zod/v4/mini/parse.d.cts +0 -1
  857. package/mcp/node_modules/zod/v4/mini/parse.d.ts +0 -1
  858. package/mcp/node_modules/zod/v4/mini/parse.js +0 -1
  859. package/mcp/node_modules/zod/v4/mini/schemas.cjs +0 -839
  860. package/mcp/node_modules/zod/v4/mini/schemas.d.cts +0 -356
  861. package/mcp/node_modules/zod/v4/mini/schemas.d.ts +0 -356
  862. package/mcp/node_modules/zod/v4/mini/schemas.js +0 -732
  863. package/mcp/node_modules/zod/v4-mini/index.cjs +0 -17
  864. package/mcp/node_modules/zod/v4-mini/index.d.cts +0 -1
  865. package/mcp/node_modules/zod/v4-mini/index.d.ts +0 -1
  866. package/mcp/node_modules/zod/v4-mini/index.js +0 -1
  867. package/mcp/src/__pycache__/server.cpython-312.pyc +0 -0
  868. package/mcp/src/__pycache__/server_core.cpython-312.pyc +0 -0
  869. package/mcp/test/__pycache__/test_server.cpython-312-pytest-8.4.1.pyc +0 -0
  870. package/mcp/test/__pycache__/test_server.cpython-312.pyc +0 -0
  871. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/.package-lock.json +0 -113
  872. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/colour/LICENSE.md +0 -82
  873. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/colour/README.md +0 -15
  874. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/colour/color.cjs +0 -1594
  875. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/colour/index.cjs +0 -1
  876. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/colour/package.json +0 -45
  877. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/sharp-darwin-arm64/LICENSE +0 -191
  878. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/sharp-darwin-arm64/README.md +0 -18
  879. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
  880. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/sharp-darwin-arm64/package.json +0 -40
  881. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/sharp-libvips-darwin-arm64/README.md +0 -46
  882. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/sharp-libvips-darwin-arm64/lib/glib-2.0/include/glibconfig.h +0 -220
  883. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/sharp-libvips-darwin-arm64/lib/index.js +0 -1
  884. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib +0 -0
  885. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/sharp-libvips-darwin-arm64/package.json +0 -36
  886. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/sharp-libvips-darwin-arm64/versions.json +0 -30
  887. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/detect-libc/LICENSE +0 -201
  888. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/detect-libc/README.md +0 -163
  889. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/detect-libc/index.d.ts +0 -14
  890. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/detect-libc/lib/detect-libc.js +0 -313
  891. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/detect-libc/lib/elf.js +0 -39
  892. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/detect-libc/lib/filesystem.js +0 -51
  893. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/detect-libc/lib/process.js +0 -24
  894. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/detect-libc/package.json +0 -44
  895. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/LICENSE +0 -15
  896. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/README.md +0 -664
  897. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/bin/semver.js +0 -191
  898. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/classes/comparator.js +0 -143
  899. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/classes/index.js +0 -7
  900. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/classes/range.js +0 -557
  901. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/classes/semver.js +0 -333
  902. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/clean.js +0 -8
  903. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/cmp.js +0 -54
  904. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/coerce.js +0 -62
  905. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/compare-build.js +0 -9
  906. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/compare-loose.js +0 -5
  907. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/compare.js +0 -7
  908. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/diff.js +0 -60
  909. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/eq.js +0 -5
  910. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/gt.js +0 -5
  911. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/gte.js +0 -5
  912. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/inc.js +0 -21
  913. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/lt.js +0 -5
  914. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/lte.js +0 -5
  915. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/major.js +0 -5
  916. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/minor.js +0 -5
  917. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/neq.js +0 -5
  918. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/parse.js +0 -18
  919. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/patch.js +0 -5
  920. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/prerelease.js +0 -8
  921. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/rcompare.js +0 -5
  922. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/rsort.js +0 -5
  923. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/satisfies.js +0 -12
  924. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/sort.js +0 -5
  925. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/valid.js +0 -8
  926. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/index.js +0 -91
  927. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/internal/constants.js +0 -37
  928. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/internal/debug.js +0 -11
  929. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/internal/identifiers.js +0 -29
  930. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/internal/lrucache.js +0 -42
  931. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/internal/parse-options.js +0 -17
  932. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/internal/re.js +0 -223
  933. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/package.json +0 -78
  934. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/preload.js +0 -4
  935. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/range.bnf +0 -16
  936. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/gtr.js +0 -6
  937. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/intersects.js +0 -9
  938. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/ltr.js +0 -6
  939. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/max-satisfying.js +0 -27
  940. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/min-satisfying.js +0 -26
  941. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/min-version.js +0 -63
  942. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/outside.js +0 -82
  943. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/simplify.js +0 -49
  944. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/subset.js +0 -249
  945. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/to-comparators.js +0 -10
  946. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/valid.js +0 -13
  947. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/LICENSE +0 -191
  948. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/README.md +0 -118
  949. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/install/build.js +0 -38
  950. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/install/check.js +0 -14
  951. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/channel.js +0 -177
  952. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/colour.js +0 -195
  953. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/composite.js +0 -212
  954. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/constructor.js +0 -499
  955. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/index.d.ts +0 -1971
  956. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/index.js +0 -16
  957. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/input.js +0 -809
  958. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/is.js +0 -143
  959. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/libvips.js +0 -207
  960. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/operation.js +0 -1016
  961. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/output.js +0 -1666
  962. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/resize.js +0 -595
  963. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/sharp.js +0 -121
  964. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/utility.js +0 -291
  965. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/package.json +0 -202
  966. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/binding.gyp +0 -298
  967. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/common.cc +0 -1130
  968. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/common.h +0 -402
  969. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/metadata.cc +0 -346
  970. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/metadata.h +0 -90
  971. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/operations.cc +0 -499
  972. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/operations.h +0 -137
  973. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/pipeline.cc +0 -1814
  974. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/pipeline.h +0 -408
  975. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/sharp.cc +0 -43
  976. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/stats.cc +0 -186
  977. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/stats.h +0 -62
  978. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/utilities.cc +0 -288
  979. package/skills/aipk_update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/utilities.h +0 -22
@@ -1,1666 +0,0 @@
1
- /*!
2
- Copyright 2013 Lovell Fuller and others.
3
- SPDX-License-Identifier: Apache-2.0
4
- */
5
-
6
- const path = require('node:path');
7
- const is = require('./is');
8
- const sharp = require('./sharp');
9
-
10
- const formats = new Map([
11
- ['heic', 'heif'],
12
- ['heif', 'heif'],
13
- ['avif', 'avif'],
14
- ['jpeg', 'jpeg'],
15
- ['jpg', 'jpeg'],
16
- ['jpe', 'jpeg'],
17
- ['tile', 'tile'],
18
- ['dz', 'tile'],
19
- ['png', 'png'],
20
- ['raw', 'raw'],
21
- ['tiff', 'tiff'],
22
- ['tif', 'tiff'],
23
- ['webp', 'webp'],
24
- ['gif', 'gif'],
25
- ['jp2', 'jp2'],
26
- ['jpx', 'jp2'],
27
- ['j2k', 'jp2'],
28
- ['j2c', 'jp2'],
29
- ['jxl', 'jxl']
30
- ]);
31
-
32
- const jp2Regex = /\.(jp[2x]|j2[kc])$/i;
33
-
34
- const errJp2Save = () => new Error('JP2 output requires libvips with support for OpenJPEG');
35
-
36
- const bitdepthFromColourCount = (colours) => 1 << 31 - Math.clz32(Math.ceil(Math.log2(colours)));
37
-
38
- /**
39
- * Write output image data to a file.
40
- *
41
- * If an explicit output format is not selected, it will be inferred from the extension,
42
- * with JPEG, PNG, WebP, AVIF, TIFF, GIF, DZI, and libvips' V format supported.
43
- * Note that raw pixel data is only supported for buffer output.
44
- *
45
- * By default all metadata will be removed, which includes EXIF-based orientation.
46
- * See {@link #withmetadata withMetadata} for control over this.
47
- *
48
- * The caller is responsible for ensuring directory structures and permissions exist.
49
- *
50
- * A `Promise` is returned when `callback` is not provided.
51
- *
52
- * @example
53
- * sharp(input)
54
- * .toFile('output.png', (err, info) => { ... });
55
- *
56
- * @example
57
- * sharp(input)
58
- * .toFile('output.png')
59
- * .then(info => { ... })
60
- * .catch(err => { ... });
61
- *
62
- * @param {string} fileOut - the path to write the image data to.
63
- * @param {Function} [callback] - called on completion with two arguments `(err, info)`.
64
- * `info` contains the output image `format`, `size` (bytes), `width`, `height`,
65
- * `channels` and `premultiplied` (indicating if premultiplication was used).
66
- * When using a crop strategy also contains `cropOffsetLeft` and `cropOffsetTop`.
67
- * When using the attention crop strategy also contains `attentionX` and `attentionY`, the focal point of the cropped region.
68
- * Animated output will also contain `pageHeight` and `pages`.
69
- * May also contain `textAutofitDpi` (dpi the font was rendered at) if image was created from text.
70
- * @returns {Promise<Object>} - when no callback is provided
71
- * @throws {Error} Invalid parameters
72
- */
73
- function toFile (fileOut, callback) {
74
- let err;
75
- if (!is.string(fileOut)) {
76
- err = new Error('Missing output file path');
77
- } else if (is.string(this.options.input.file) && path.resolve(this.options.input.file) === path.resolve(fileOut)) {
78
- err = new Error('Cannot use same file for input and output');
79
- } else if (jp2Regex.test(path.extname(fileOut)) && !this.constructor.format.jp2k.output.file) {
80
- err = errJp2Save();
81
- }
82
- if (err) {
83
- if (is.fn(callback)) {
84
- callback(err);
85
- } else {
86
- return Promise.reject(err);
87
- }
88
- } else {
89
- this.options.fileOut = fileOut;
90
- const stack = Error();
91
- return this._pipeline(callback, stack);
92
- }
93
- return this;
94
- }
95
-
96
- /**
97
- * Write output to a Buffer.
98
- * JPEG, PNG, WebP, AVIF, TIFF, GIF and raw pixel data output are supported.
99
- *
100
- * Use {@link #toformat toFormat} or one of the format-specific functions such as {@link #jpeg jpeg}, {@link #png png} etc. to set the output format.
101
- *
102
- * If no explicit format is set, the output format will match the input image, except SVG input which becomes PNG output.
103
- *
104
- * By default all metadata will be removed, which includes EXIF-based orientation.
105
- * See {@link #withmetadata withMetadata} for control over this.
106
- *
107
- * `callback`, if present, gets three arguments `(err, data, info)` where:
108
- * - `err` is an error, if any.
109
- * - `data` is the output image data.
110
- * - `info` contains the output image `format`, `size` (bytes), `width`, `height`,
111
- * `channels` and `premultiplied` (indicating if premultiplication was used).
112
- * When using a crop strategy also contains `cropOffsetLeft` and `cropOffsetTop`.
113
- * Animated output will also contain `pageHeight` and `pages`.
114
- * May also contain `textAutofitDpi` (dpi the font was rendered at) if image was created from text.
115
- *
116
- * A `Promise` is returned when `callback` is not provided.
117
- *
118
- * @example
119
- * sharp(input)
120
- * .toBuffer((err, data, info) => { ... });
121
- *
122
- * @example
123
- * sharp(input)
124
- * .toBuffer()
125
- * .then(data => { ... })
126
- * .catch(err => { ... });
127
- *
128
- * @example
129
- * sharp(input)
130
- * .png()
131
- * .toBuffer({ resolveWithObject: true })
132
- * .then(({ data, info }) => { ... })
133
- * .catch(err => { ... });
134
- *
135
- * @example
136
- * const { data, info } = await sharp('my-image.jpg')
137
- * // output the raw pixels
138
- * .raw()
139
- * .toBuffer({ resolveWithObject: true });
140
- *
141
- * // create a more type safe way to work with the raw pixel data
142
- * // this will not copy the data, instead it will change `data`s underlying ArrayBuffer
143
- * // so `data` and `pixelArray` point to the same memory location
144
- * const pixelArray = new Uint8ClampedArray(data.buffer);
145
- *
146
- * // When you are done changing the pixelArray, sharp takes the `pixelArray` as an input
147
- * const { width, height, channels } = info;
148
- * await sharp(pixelArray, { raw: { width, height, channels } })
149
- * .toFile('my-changed-image.jpg');
150
- *
151
- * @param {Object} [options]
152
- * @param {boolean} [options.resolveWithObject] Resolve the Promise with an Object containing `data` and `info` properties instead of resolving only with `data`.
153
- * @param {Function} [callback]
154
- * @returns {Promise<Buffer>} - when no callback is provided
155
- */
156
- function toBuffer (options, callback) {
157
- if (is.object(options)) {
158
- this._setBooleanOption('resolveWithObject', options.resolveWithObject);
159
- } else if (this.options.resolveWithObject) {
160
- this.options.resolveWithObject = false;
161
- }
162
- this.options.fileOut = '';
163
- const stack = Error();
164
- return this._pipeline(is.fn(options) ? options : callback, stack);
165
- }
166
-
167
- /**
168
- * Keep all EXIF metadata from the input image in the output image.
169
- *
170
- * EXIF metadata is unsupported for TIFF output.
171
- *
172
- * @since 0.33.0
173
- *
174
- * @example
175
- * const outputWithExif = await sharp(inputWithExif)
176
- * .keepExif()
177
- * .toBuffer();
178
- *
179
- * @returns {Sharp}
180
- */
181
- function keepExif () {
182
- this.options.keepMetadata |= 0b00001;
183
- return this;
184
- }
185
-
186
- /**
187
- * Set EXIF metadata in the output image, ignoring any EXIF in the input image.
188
- *
189
- * @since 0.33.0
190
- *
191
- * @example
192
- * const dataWithExif = await sharp(input)
193
- * .withExif({
194
- * IFD0: {
195
- * Copyright: 'The National Gallery'
196
- * },
197
- * IFD3: {
198
- * GPSLatitudeRef: 'N',
199
- * GPSLatitude: '51/1 30/1 3230/100',
200
- * GPSLongitudeRef: 'W',
201
- * GPSLongitude: '0/1 7/1 4366/100'
202
- * }
203
- * })
204
- * .toBuffer();
205
- *
206
- * @param {Object<string, Object<string, string>>} exif Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data.
207
- * @returns {Sharp}
208
- * @throws {Error} Invalid parameters
209
- */
210
- function withExif (exif) {
211
- if (is.object(exif)) {
212
- for (const [ifd, entries] of Object.entries(exif)) {
213
- if (is.object(entries)) {
214
- for (const [k, v] of Object.entries(entries)) {
215
- if (is.string(v)) {
216
- this.options.withExif[`exif-${ifd.toLowerCase()}-${k}`] = v;
217
- } else {
218
- throw is.invalidParameterError(`${ifd}.${k}`, 'string', v);
219
- }
220
- }
221
- } else {
222
- throw is.invalidParameterError(ifd, 'object', entries);
223
- }
224
- }
225
- } else {
226
- throw is.invalidParameterError('exif', 'object', exif);
227
- }
228
- this.options.withExifMerge = false;
229
- return this.keepExif();
230
- }
231
-
232
- /**
233
- * Update EXIF metadata from the input image in the output image.
234
- *
235
- * @since 0.33.0
236
- *
237
- * @example
238
- * const dataWithMergedExif = await sharp(inputWithExif)
239
- * .withExifMerge({
240
- * IFD0: {
241
- * Copyright: 'The National Gallery'
242
- * }
243
- * })
244
- * .toBuffer();
245
- *
246
- * @param {Object<string, Object<string, string>>} exif Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data.
247
- * @returns {Sharp}
248
- * @throws {Error} Invalid parameters
249
- */
250
- function withExifMerge (exif) {
251
- this.withExif(exif);
252
- this.options.withExifMerge = true;
253
- return this;
254
- }
255
-
256
- /**
257
- * Keep ICC profile from the input image in the output image.
258
- *
259
- * When input and output colour spaces differ, use with {@link /api-colour/#tocolourspace toColourspace} and optionally {@link /api-colour/#pipelinecolourspace pipelineColourspace}.
260
- *
261
- * @since 0.33.0
262
- *
263
- * @example
264
- * const outputWithIccProfile = await sharp(inputWithIccProfile)
265
- * .keepIccProfile()
266
- * .toBuffer();
267
- *
268
- * @example
269
- * const cmykOutputWithIccProfile = await sharp(cmykInputWithIccProfile)
270
- * .pipelineColourspace('cmyk')
271
- * .toColourspace('cmyk')
272
- * .keepIccProfile()
273
- * .toBuffer();
274
- *
275
- * @returns {Sharp}
276
- */
277
- function keepIccProfile () {
278
- this.options.keepMetadata |= 0b01000;
279
- return this;
280
- }
281
-
282
- /**
283
- * Transform using an ICC profile and attach to the output image.
284
- *
285
- * This can either be an absolute filesystem path or
286
- * built-in profile name (`srgb`, `p3`, `cmyk`).
287
- *
288
- * @since 0.33.0
289
- *
290
- * @example
291
- * const outputWithP3 = await sharp(input)
292
- * .withIccProfile('p3')
293
- * .toBuffer();
294
- *
295
- * @param {string} icc - Absolute filesystem path to output ICC profile or built-in profile name (srgb, p3, cmyk).
296
- * @param {Object} [options]
297
- * @param {number} [options.attach=true] Should the ICC profile be included in the output image metadata?
298
- * @returns {Sharp}
299
- * @throws {Error} Invalid parameters
300
- */
301
- function withIccProfile (icc, options) {
302
- if (is.string(icc)) {
303
- this.options.withIccProfile = icc;
304
- } else {
305
- throw is.invalidParameterError('icc', 'string', icc);
306
- }
307
- this.keepIccProfile();
308
- if (is.object(options)) {
309
- if (is.defined(options.attach)) {
310
- if (is.bool(options.attach)) {
311
- if (!options.attach) {
312
- this.options.keepMetadata &= ~0b01000;
313
- }
314
- } else {
315
- throw is.invalidParameterError('attach', 'boolean', options.attach);
316
- }
317
- }
318
- }
319
- return this;
320
- }
321
-
322
- /**
323
- * Keep XMP metadata from the input image in the output image.
324
- *
325
- * @since 0.34.3
326
- *
327
- * @example
328
- * const outputWithXmp = await sharp(inputWithXmp)
329
- * .keepXmp()
330
- * .toBuffer();
331
- *
332
- * @returns {Sharp}
333
- */
334
- function keepXmp () {
335
- this.options.keepMetadata |= 0b00010;
336
- return this;
337
- }
338
-
339
- /**
340
- * Set XMP metadata in the output image.
341
- *
342
- * Supported by PNG, JPEG, WebP, and TIFF output.
343
- *
344
- * @since 0.34.3
345
- *
346
- * @example
347
- * const xmpString = `
348
- * <?xml version="1.0"?>
349
- * <x:xmpmeta xmlns:x="adobe:ns:meta/">
350
- * <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
351
- * <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/">
352
- * <dc:creator><rdf:Seq><rdf:li>John Doe</rdf:li></rdf:Seq></dc:creator>
353
- * </rdf:Description>
354
- * </rdf:RDF>
355
- * </x:xmpmeta>`;
356
- *
357
- * const data = await sharp(input)
358
- * .withXmp(xmpString)
359
- * .toBuffer();
360
- *
361
- * @param {string} xmp String containing XMP metadata to be embedded in the output image.
362
- * @returns {Sharp}
363
- * @throws {Error} Invalid parameters
364
- */
365
- function withXmp (xmp) {
366
- if (is.string(xmp) && xmp.length > 0) {
367
- this.options.withXmp = xmp;
368
- this.options.keepMetadata |= 0b00010;
369
- } else {
370
- throw is.invalidParameterError('xmp', 'non-empty string', xmp);
371
- }
372
- return this;
373
- }
374
-
375
- /**
376
- * Keep all metadata (EXIF, ICC, XMP, IPTC) from the input image in the output image.
377
- *
378
- * The default behaviour, when `keepMetadata` is not used, is to convert to the device-independent
379
- * sRGB colour space and strip all metadata, including the removal of any ICC profile.
380
- *
381
- * @since 0.33.0
382
- *
383
- * @example
384
- * const outputWithMetadata = await sharp(inputWithMetadata)
385
- * .keepMetadata()
386
- * .toBuffer();
387
- *
388
- * @returns {Sharp}
389
- */
390
- function keepMetadata () {
391
- this.options.keepMetadata = 0b11111;
392
- return this;
393
- }
394
-
395
- /**
396
- * Keep most metadata (EXIF, XMP, IPTC) from the input image in the output image.
397
- *
398
- * This will also convert to and add a web-friendly sRGB ICC profile if appropriate.
399
- *
400
- * Allows orientation and density to be set or updated.
401
- *
402
- * @example
403
- * const outputSrgbWithMetadata = await sharp(inputRgbWithMetadata)
404
- * .withMetadata()
405
- * .toBuffer();
406
- *
407
- * @example
408
- * // Set output metadata to 96 DPI
409
- * const data = await sharp(input)
410
- * .withMetadata({ density: 96 })
411
- * .toBuffer();
412
- *
413
- * @param {Object} [options]
414
- * @param {number} [options.orientation] Used to update the EXIF `Orientation` tag, integer between 1 and 8.
415
- * @param {number} [options.density] Number of pixels per inch (DPI).
416
- * @returns {Sharp}
417
- * @throws {Error} Invalid parameters
418
- */
419
- function withMetadata (options) {
420
- this.keepMetadata();
421
- this.withIccProfile('srgb');
422
- if (is.object(options)) {
423
- if (is.defined(options.orientation)) {
424
- if (is.integer(options.orientation) && is.inRange(options.orientation, 1, 8)) {
425
- this.options.withMetadataOrientation = options.orientation;
426
- } else {
427
- throw is.invalidParameterError('orientation', 'integer between 1 and 8', options.orientation);
428
- }
429
- }
430
- if (is.defined(options.density)) {
431
- if (is.number(options.density) && options.density > 0) {
432
- this.options.withMetadataDensity = options.density;
433
- } else {
434
- throw is.invalidParameterError('density', 'positive number', options.density);
435
- }
436
- }
437
- if (is.defined(options.icc)) {
438
- this.withIccProfile(options.icc);
439
- }
440
- if (is.defined(options.exif)) {
441
- this.withExifMerge(options.exif);
442
- }
443
- }
444
- return this;
445
- }
446
-
447
- /**
448
- * Force output to a given format.
449
- *
450
- * @example
451
- * // Convert any input to PNG output
452
- * const data = await sharp(input)
453
- * .toFormat('png')
454
- * .toBuffer();
455
- *
456
- * @param {(string|Object)} format - as a string or an Object with an 'id' attribute
457
- * @param {Object} options - output options
458
- * @returns {Sharp}
459
- * @throws {Error} unsupported format or options
460
- */
461
- function toFormat (format, options) {
462
- const actualFormat = formats.get((is.object(format) && is.string(format.id) ? format.id : format).toLowerCase());
463
- if (!actualFormat) {
464
- throw is.invalidParameterError('format', `one of: ${[...formats.keys()].join(', ')}`, format);
465
- }
466
- return this[actualFormat](options);
467
- }
468
-
469
- /**
470
- * Use these JPEG options for output image.
471
- *
472
- * @example
473
- * // Convert any input to very high quality JPEG output
474
- * const data = await sharp(input)
475
- * .jpeg({
476
- * quality: 100,
477
- * chromaSubsampling: '4:4:4'
478
- * })
479
- * .toBuffer();
480
- *
481
- * @example
482
- * // Use mozjpeg to reduce output JPEG file size (slower)
483
- * const data = await sharp(input)
484
- * .jpeg({ mozjpeg: true })
485
- * .toBuffer();
486
- *
487
- * @param {Object} [options] - output options
488
- * @param {number} [options.quality=80] - quality, integer 1-100
489
- * @param {boolean} [options.progressive=false] - use progressive (interlace) scan
490
- * @param {string} [options.chromaSubsampling='4:2:0'] - set to '4:4:4' to prevent chroma subsampling otherwise defaults to '4:2:0' chroma subsampling
491
- * @param {boolean} [options.optimiseCoding=true] - optimise Huffman coding tables
492
- * @param {boolean} [options.optimizeCoding=true] - alternative spelling of optimiseCoding
493
- * @param {boolean} [options.mozjpeg=false] - use mozjpeg defaults, equivalent to `{ trellisQuantisation: true, overshootDeringing: true, optimiseScans: true, quantisationTable: 3 }`
494
- * @param {boolean} [options.trellisQuantisation=false] - apply trellis quantisation
495
- * @param {boolean} [options.overshootDeringing=false] - apply overshoot deringing
496
- * @param {boolean} [options.optimiseScans=false] - optimise progressive scans, forces progressive
497
- * @param {boolean} [options.optimizeScans=false] - alternative spelling of optimiseScans
498
- * @param {number} [options.quantisationTable=0] - quantization table to use, integer 0-8
499
- * @param {number} [options.quantizationTable=0] - alternative spelling of quantisationTable
500
- * @param {boolean} [options.force=true] - force JPEG output, otherwise attempt to use input format
501
- * @returns {Sharp}
502
- * @throws {Error} Invalid options
503
- */
504
- function jpeg (options) {
505
- if (is.object(options)) {
506
- if (is.defined(options.quality)) {
507
- if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {
508
- this.options.jpegQuality = options.quality;
509
- } else {
510
- throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);
511
- }
512
- }
513
- if (is.defined(options.progressive)) {
514
- this._setBooleanOption('jpegProgressive', options.progressive);
515
- }
516
- if (is.defined(options.chromaSubsampling)) {
517
- if (is.string(options.chromaSubsampling) && is.inArray(options.chromaSubsampling, ['4:2:0', '4:4:4'])) {
518
- this.options.jpegChromaSubsampling = options.chromaSubsampling;
519
- } else {
520
- throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling);
521
- }
522
- }
523
- const optimiseCoding = is.bool(options.optimizeCoding) ? options.optimizeCoding : options.optimiseCoding;
524
- if (is.defined(optimiseCoding)) {
525
- this._setBooleanOption('jpegOptimiseCoding', optimiseCoding);
526
- }
527
- if (is.defined(options.mozjpeg)) {
528
- if (is.bool(options.mozjpeg)) {
529
- if (options.mozjpeg) {
530
- this.options.jpegTrellisQuantisation = true;
531
- this.options.jpegOvershootDeringing = true;
532
- this.options.jpegOptimiseScans = true;
533
- this.options.jpegProgressive = true;
534
- this.options.jpegQuantisationTable = 3;
535
- }
536
- } else {
537
- throw is.invalidParameterError('mozjpeg', 'boolean', options.mozjpeg);
538
- }
539
- }
540
- const trellisQuantisation = is.bool(options.trellisQuantization) ? options.trellisQuantization : options.trellisQuantisation;
541
- if (is.defined(trellisQuantisation)) {
542
- this._setBooleanOption('jpegTrellisQuantisation', trellisQuantisation);
543
- }
544
- if (is.defined(options.overshootDeringing)) {
545
- this._setBooleanOption('jpegOvershootDeringing', options.overshootDeringing);
546
- }
547
- const optimiseScans = is.bool(options.optimizeScans) ? options.optimizeScans : options.optimiseScans;
548
- if (is.defined(optimiseScans)) {
549
- this._setBooleanOption('jpegOptimiseScans', optimiseScans);
550
- if (optimiseScans) {
551
- this.options.jpegProgressive = true;
552
- }
553
- }
554
- const quantisationTable = is.number(options.quantizationTable) ? options.quantizationTable : options.quantisationTable;
555
- if (is.defined(quantisationTable)) {
556
- if (is.integer(quantisationTable) && is.inRange(quantisationTable, 0, 8)) {
557
- this.options.jpegQuantisationTable = quantisationTable;
558
- } else {
559
- throw is.invalidParameterError('quantisationTable', 'integer between 0 and 8', quantisationTable);
560
- }
561
- }
562
- }
563
- return this._updateFormatOut('jpeg', options);
564
- }
565
-
566
- /**
567
- * Use these PNG options for output image.
568
- *
569
- * By default, PNG output is full colour at 8 bits per pixel.
570
- *
571
- * Indexed PNG input at 1, 2 or 4 bits per pixel is converted to 8 bits per pixel.
572
- * Set `palette` to `true` for slower, indexed PNG output.
573
- *
574
- * For 16 bits per pixel output, convert to `rgb16` via
575
- * {@link /api-colour/#tocolourspace toColourspace}.
576
- *
577
- * @example
578
- * // Convert any input to full colour PNG output
579
- * const data = await sharp(input)
580
- * .png()
581
- * .toBuffer();
582
- *
583
- * @example
584
- * // Convert any input to indexed PNG output (slower)
585
- * const data = await sharp(input)
586
- * .png({ palette: true })
587
- * .toBuffer();
588
- *
589
- * @example
590
- * // Output 16 bits per pixel RGB(A)
591
- * const data = await sharp(input)
592
- * .toColourspace('rgb16')
593
- * .png()
594
- * .toBuffer();
595
- *
596
- * @param {Object} [options]
597
- * @param {boolean} [options.progressive=false] - use progressive (interlace) scan
598
- * @param {number} [options.compressionLevel=6] - zlib compression level, 0 (fastest, largest) to 9 (slowest, smallest)
599
- * @param {boolean} [options.adaptiveFiltering=false] - use adaptive row filtering
600
- * @param {boolean} [options.palette=false] - quantise to a palette-based image with alpha transparency support
601
- * @param {number} [options.quality=100] - use the lowest number of colours needed to achieve given quality, sets `palette` to `true`
602
- * @param {number} [options.effort=7] - CPU effort, between 1 (fastest) and 10 (slowest), sets `palette` to `true`
603
- * @param {number} [options.colours=256] - maximum number of palette entries, sets `palette` to `true`
604
- * @param {number} [options.colors=256] - alternative spelling of `options.colours`, sets `palette` to `true`
605
- * @param {number} [options.dither=1.0] - level of Floyd-Steinberg error diffusion, sets `palette` to `true`
606
- * @param {boolean} [options.force=true] - force PNG output, otherwise attempt to use input format
607
- * @returns {Sharp}
608
- * @throws {Error} Invalid options
609
- */
610
- function png (options) {
611
- if (is.object(options)) {
612
- if (is.defined(options.progressive)) {
613
- this._setBooleanOption('pngProgressive', options.progressive);
614
- }
615
- if (is.defined(options.compressionLevel)) {
616
- if (is.integer(options.compressionLevel) && is.inRange(options.compressionLevel, 0, 9)) {
617
- this.options.pngCompressionLevel = options.compressionLevel;
618
- } else {
619
- throw is.invalidParameterError('compressionLevel', 'integer between 0 and 9', options.compressionLevel);
620
- }
621
- }
622
- if (is.defined(options.adaptiveFiltering)) {
623
- this._setBooleanOption('pngAdaptiveFiltering', options.adaptiveFiltering);
624
- }
625
- const colours = options.colours || options.colors;
626
- if (is.defined(colours)) {
627
- if (is.integer(colours) && is.inRange(colours, 2, 256)) {
628
- this.options.pngBitdepth = bitdepthFromColourCount(colours);
629
- } else {
630
- throw is.invalidParameterError('colours', 'integer between 2 and 256', colours);
631
- }
632
- }
633
- if (is.defined(options.palette)) {
634
- this._setBooleanOption('pngPalette', options.palette);
635
- } else if ([options.quality, options.effort, options.colours, options.colors, options.dither].some(is.defined)) {
636
- this._setBooleanOption('pngPalette', true);
637
- }
638
- if (this.options.pngPalette) {
639
- if (is.defined(options.quality)) {
640
- if (is.integer(options.quality) && is.inRange(options.quality, 0, 100)) {
641
- this.options.pngQuality = options.quality;
642
- } else {
643
- throw is.invalidParameterError('quality', 'integer between 0 and 100', options.quality);
644
- }
645
- }
646
- if (is.defined(options.effort)) {
647
- if (is.integer(options.effort) && is.inRange(options.effort, 1, 10)) {
648
- this.options.pngEffort = options.effort;
649
- } else {
650
- throw is.invalidParameterError('effort', 'integer between 1 and 10', options.effort);
651
- }
652
- }
653
- if (is.defined(options.dither)) {
654
- if (is.number(options.dither) && is.inRange(options.dither, 0, 1)) {
655
- this.options.pngDither = options.dither;
656
- } else {
657
- throw is.invalidParameterError('dither', 'number between 0.0 and 1.0', options.dither);
658
- }
659
- }
660
- }
661
- }
662
- return this._updateFormatOut('png', options);
663
- }
664
-
665
- /**
666
- * Use these WebP options for output image.
667
- *
668
- * @example
669
- * // Convert any input to lossless WebP output
670
- * const data = await sharp(input)
671
- * .webp({ lossless: true })
672
- * .toBuffer();
673
- *
674
- * @example
675
- * // Optimise the file size of an animated WebP
676
- * const outputWebp = await sharp(inputWebp, { animated: true })
677
- * .webp({ effort: 6 })
678
- * .toBuffer();
679
- *
680
- * @param {Object} [options] - output options
681
- * @param {number} [options.quality=80] - quality, integer 1-100
682
- * @param {number} [options.alphaQuality=100] - quality of alpha layer, integer 0-100
683
- * @param {boolean} [options.lossless=false] - use lossless compression mode
684
- * @param {boolean} [options.nearLossless=false] - use near_lossless compression mode
685
- * @param {boolean} [options.smartSubsample=false] - use high quality chroma subsampling
686
- * @param {boolean} [options.smartDeblock=false] - auto-adjust the deblocking filter, can improve low contrast edges (slow)
687
- * @param {string} [options.preset='default'] - named preset for preprocessing/filtering, one of: default, photo, picture, drawing, icon, text
688
- * @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 6 (slowest)
689
- * @param {number} [options.loop=0] - number of animation iterations, use 0 for infinite animation
690
- * @param {number|number[]} [options.delay] - delay(s) between animation frames (in milliseconds)
691
- * @param {boolean} [options.minSize=false] - prevent use of animation key frames to minimise file size (slow)
692
- * @param {boolean} [options.mixed=false] - allow mixture of lossy and lossless animation frames (slow)
693
- * @param {boolean} [options.force=true] - force WebP output, otherwise attempt to use input format
694
- * @returns {Sharp}
695
- * @throws {Error} Invalid options
696
- */
697
- function webp (options) {
698
- if (is.object(options)) {
699
- if (is.defined(options.quality)) {
700
- if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {
701
- this.options.webpQuality = options.quality;
702
- } else {
703
- throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);
704
- }
705
- }
706
- if (is.defined(options.alphaQuality)) {
707
- if (is.integer(options.alphaQuality) && is.inRange(options.alphaQuality, 0, 100)) {
708
- this.options.webpAlphaQuality = options.alphaQuality;
709
- } else {
710
- throw is.invalidParameterError('alphaQuality', 'integer between 0 and 100', options.alphaQuality);
711
- }
712
- }
713
- if (is.defined(options.lossless)) {
714
- this._setBooleanOption('webpLossless', options.lossless);
715
- }
716
- if (is.defined(options.nearLossless)) {
717
- this._setBooleanOption('webpNearLossless', options.nearLossless);
718
- }
719
- if (is.defined(options.smartSubsample)) {
720
- this._setBooleanOption('webpSmartSubsample', options.smartSubsample);
721
- }
722
- if (is.defined(options.smartDeblock)) {
723
- this._setBooleanOption('webpSmartDeblock', options.smartDeblock);
724
- }
725
- if (is.defined(options.preset)) {
726
- if (is.string(options.preset) && is.inArray(options.preset, ['default', 'photo', 'picture', 'drawing', 'icon', 'text'])) {
727
- this.options.webpPreset = options.preset;
728
- } else {
729
- throw is.invalidParameterError('preset', 'one of: default, photo, picture, drawing, icon, text', options.preset);
730
- }
731
- }
732
- if (is.defined(options.effort)) {
733
- if (is.integer(options.effort) && is.inRange(options.effort, 0, 6)) {
734
- this.options.webpEffort = options.effort;
735
- } else {
736
- throw is.invalidParameterError('effort', 'integer between 0 and 6', options.effort);
737
- }
738
- }
739
- if (is.defined(options.minSize)) {
740
- this._setBooleanOption('webpMinSize', options.minSize);
741
- }
742
- if (is.defined(options.mixed)) {
743
- this._setBooleanOption('webpMixed', options.mixed);
744
- }
745
- }
746
- trySetAnimationOptions(options, this.options);
747
- return this._updateFormatOut('webp', options);
748
- }
749
-
750
- /**
751
- * Use these GIF options for the output image.
752
- *
753
- * The first entry in the palette is reserved for transparency.
754
- *
755
- * The palette of the input image will be re-used if possible.
756
- *
757
- * @since 0.30.0
758
- *
759
- * @example
760
- * // Convert PNG to GIF
761
- * await sharp(pngBuffer)
762
- * .gif()
763
- * .toBuffer();
764
- *
765
- * @example
766
- * // Convert animated WebP to animated GIF
767
- * await sharp('animated.webp', { animated: true })
768
- * .toFile('animated.gif');
769
- *
770
- * @example
771
- * // Create a 128x128, cropped, non-dithered, animated thumbnail of an animated GIF
772
- * const out = await sharp('in.gif', { animated: true })
773
- * .resize({ width: 128, height: 128 })
774
- * .gif({ dither: 0 })
775
- * .toBuffer();
776
- *
777
- * @example
778
- * // Lossy file size reduction of animated GIF
779
- * await sharp('in.gif', { animated: true })
780
- * .gif({ interFrameMaxError: 8 })
781
- * .toFile('optim.gif');
782
- *
783
- * @param {Object} [options] - output options
784
- * @param {boolean} [options.reuse=true] - re-use existing palette, otherwise generate new (slow)
785
- * @param {boolean} [options.progressive=false] - use progressive (interlace) scan
786
- * @param {number} [options.colours=256] - maximum number of palette entries, including transparency, between 2 and 256
787
- * @param {number} [options.colors=256] - alternative spelling of `options.colours`
788
- * @param {number} [options.effort=7] - CPU effort, between 1 (fastest) and 10 (slowest)
789
- * @param {number} [options.dither=1.0] - level of Floyd-Steinberg error diffusion, between 0 (least) and 1 (most)
790
- * @param {number} [options.interFrameMaxError=0] - maximum inter-frame error for transparency, between 0 (lossless) and 32
791
- * @param {number} [options.interPaletteMaxError=3] - maximum inter-palette error for palette reuse, between 0 and 256
792
- * @param {boolean} [options.keepDuplicateFrames=false] - keep duplicate frames in the output instead of combining them
793
- * @param {number} [options.loop=0] - number of animation iterations, use 0 for infinite animation
794
- * @param {number|number[]} [options.delay] - delay(s) between animation frames (in milliseconds)
795
- * @param {boolean} [options.force=true] - force GIF output, otherwise attempt to use input format
796
- * @returns {Sharp}
797
- * @throws {Error} Invalid options
798
- */
799
- function gif (options) {
800
- if (is.object(options)) {
801
- if (is.defined(options.reuse)) {
802
- this._setBooleanOption('gifReuse', options.reuse);
803
- }
804
- if (is.defined(options.progressive)) {
805
- this._setBooleanOption('gifProgressive', options.progressive);
806
- }
807
- const colours = options.colours || options.colors;
808
- if (is.defined(colours)) {
809
- if (is.integer(colours) && is.inRange(colours, 2, 256)) {
810
- this.options.gifBitdepth = bitdepthFromColourCount(colours);
811
- } else {
812
- throw is.invalidParameterError('colours', 'integer between 2 and 256', colours);
813
- }
814
- }
815
- if (is.defined(options.effort)) {
816
- if (is.number(options.effort) && is.inRange(options.effort, 1, 10)) {
817
- this.options.gifEffort = options.effort;
818
- } else {
819
- throw is.invalidParameterError('effort', 'integer between 1 and 10', options.effort);
820
- }
821
- }
822
- if (is.defined(options.dither)) {
823
- if (is.number(options.dither) && is.inRange(options.dither, 0, 1)) {
824
- this.options.gifDither = options.dither;
825
- } else {
826
- throw is.invalidParameterError('dither', 'number between 0.0 and 1.0', options.dither);
827
- }
828
- }
829
- if (is.defined(options.interFrameMaxError)) {
830
- if (is.number(options.interFrameMaxError) && is.inRange(options.interFrameMaxError, 0, 32)) {
831
- this.options.gifInterFrameMaxError = options.interFrameMaxError;
832
- } else {
833
- throw is.invalidParameterError('interFrameMaxError', 'number between 0.0 and 32.0', options.interFrameMaxError);
834
- }
835
- }
836
- if (is.defined(options.interPaletteMaxError)) {
837
- if (is.number(options.interPaletteMaxError) && is.inRange(options.interPaletteMaxError, 0, 256)) {
838
- this.options.gifInterPaletteMaxError = options.interPaletteMaxError;
839
- } else {
840
- throw is.invalidParameterError('interPaletteMaxError', 'number between 0.0 and 256.0', options.interPaletteMaxError);
841
- }
842
- }
843
- if (is.defined(options.keepDuplicateFrames)) {
844
- if (is.bool(options.keepDuplicateFrames)) {
845
- this._setBooleanOption('gifKeepDuplicateFrames', options.keepDuplicateFrames);
846
- } else {
847
- throw is.invalidParameterError('keepDuplicateFrames', 'boolean', options.keepDuplicateFrames);
848
- }
849
- }
850
- }
851
- trySetAnimationOptions(options, this.options);
852
- return this._updateFormatOut('gif', options);
853
- }
854
-
855
- /**
856
- * Use these JP2 options for output image.
857
- *
858
- * Requires libvips compiled with support for OpenJPEG.
859
- * The prebuilt binaries do not include this - see
860
- * {@link /install#custom-libvips installing a custom libvips}.
861
- *
862
- * @example
863
- * // Convert any input to lossless JP2 output
864
- * const data = await sharp(input)
865
- * .jp2({ lossless: true })
866
- * .toBuffer();
867
- *
868
- * @example
869
- * // Convert any input to very high quality JP2 output
870
- * const data = await sharp(input)
871
- * .jp2({
872
- * quality: 100,
873
- * chromaSubsampling: '4:4:4'
874
- * })
875
- * .toBuffer();
876
- *
877
- * @since 0.29.1
878
- *
879
- * @param {Object} [options] - output options
880
- * @param {number} [options.quality=80] - quality, integer 1-100
881
- * @param {boolean} [options.lossless=false] - use lossless compression mode
882
- * @param {number} [options.tileWidth=512] - horizontal tile size
883
- * @param {number} [options.tileHeight=512] - vertical tile size
884
- * @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling
885
- * @returns {Sharp}
886
- * @throws {Error} Invalid options
887
- */
888
- function jp2 (options) {
889
- /* node:coverage ignore next 41 */
890
- if (!this.constructor.format.jp2k.output.buffer) {
891
- throw errJp2Save();
892
- }
893
- if (is.object(options)) {
894
- if (is.defined(options.quality)) {
895
- if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {
896
- this.options.jp2Quality = options.quality;
897
- } else {
898
- throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);
899
- }
900
- }
901
- if (is.defined(options.lossless)) {
902
- if (is.bool(options.lossless)) {
903
- this.options.jp2Lossless = options.lossless;
904
- } else {
905
- throw is.invalidParameterError('lossless', 'boolean', options.lossless);
906
- }
907
- }
908
- if (is.defined(options.tileWidth)) {
909
- if (is.integer(options.tileWidth) && is.inRange(options.tileWidth, 1, 32768)) {
910
- this.options.jp2TileWidth = options.tileWidth;
911
- } else {
912
- throw is.invalidParameterError('tileWidth', 'integer between 1 and 32768', options.tileWidth);
913
- }
914
- }
915
- if (is.defined(options.tileHeight)) {
916
- if (is.integer(options.tileHeight) && is.inRange(options.tileHeight, 1, 32768)) {
917
- this.options.jp2TileHeight = options.tileHeight;
918
- } else {
919
- throw is.invalidParameterError('tileHeight', 'integer between 1 and 32768', options.tileHeight);
920
- }
921
- }
922
- if (is.defined(options.chromaSubsampling)) {
923
- if (is.string(options.chromaSubsampling) && is.inArray(options.chromaSubsampling, ['4:2:0', '4:4:4'])) {
924
- this.options.jp2ChromaSubsampling = options.chromaSubsampling;
925
- } else {
926
- throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling);
927
- }
928
- }
929
- }
930
- return this._updateFormatOut('jp2', options);
931
- }
932
-
933
- /**
934
- * Set animation options if available.
935
- * @private
936
- *
937
- * @param {Object} [source] - output options
938
- * @param {number} [source.loop=0] - number of animation iterations, use 0 for infinite animation
939
- * @param {number[]} [source.delay] - list of delays between animation frames (in milliseconds)
940
- * @param {Object} [target] - target object for valid options
941
- * @throws {Error} Invalid options
942
- */
943
- function trySetAnimationOptions (source, target) {
944
- if (is.object(source) && is.defined(source.loop)) {
945
- if (is.integer(source.loop) && is.inRange(source.loop, 0, 65535)) {
946
- target.loop = source.loop;
947
- } else {
948
- throw is.invalidParameterError('loop', 'integer between 0 and 65535', source.loop);
949
- }
950
- }
951
- if (is.object(source) && is.defined(source.delay)) {
952
- // We allow singular values as well
953
- if (is.integer(source.delay) && is.inRange(source.delay, 0, 65535)) {
954
- target.delay = [source.delay];
955
- } else if (
956
- Array.isArray(source.delay) &&
957
- source.delay.every(is.integer) &&
958
- source.delay.every(v => is.inRange(v, 0, 65535))) {
959
- target.delay = source.delay;
960
- } else {
961
- throw is.invalidParameterError('delay', 'integer or an array of integers between 0 and 65535', source.delay);
962
- }
963
- }
964
- }
965
-
966
- /**
967
- * Use these TIFF options for output image.
968
- *
969
- * The `density` can be set in pixels/inch via {@link #withmetadata withMetadata}
970
- * instead of providing `xres` and `yres` in pixels/mm.
971
- *
972
- * @example
973
- * // Convert SVG input to LZW-compressed, 1 bit per pixel TIFF output
974
- * sharp('input.svg')
975
- * .tiff({
976
- * compression: 'lzw',
977
- * bitdepth: 1
978
- * })
979
- * .toFile('1-bpp-output.tiff')
980
- * .then(info => { ... });
981
- *
982
- * @param {Object} [options] - output options
983
- * @param {number} [options.quality=80] - quality, integer 1-100
984
- * @param {boolean} [options.force=true] - force TIFF output, otherwise attempt to use input format
985
- * @param {string} [options.compression='jpeg'] - compression options: none, jpeg, deflate, packbits, ccittfax4, lzw, webp, zstd, jp2k
986
- * @param {boolean} [options.bigtiff=false] - use BigTIFF variant (has no effect when compression is none)
987
- * @param {string} [options.predictor='horizontal'] - compression predictor options: none, horizontal, float
988
- * @param {boolean} [options.pyramid=false] - write an image pyramid
989
- * @param {boolean} [options.tile=false] - write a tiled tiff
990
- * @param {number} [options.tileWidth=256] - horizontal tile size
991
- * @param {number} [options.tileHeight=256] - vertical tile size
992
- * @param {number} [options.xres=1.0] - horizontal resolution in pixels/mm
993
- * @param {number} [options.yres=1.0] - vertical resolution in pixels/mm
994
- * @param {string} [options.resolutionUnit='inch'] - resolution unit options: inch, cm
995
- * @param {number} [options.bitdepth=8] - reduce bitdepth to 1, 2 or 4 bit
996
- * @param {boolean} [options.miniswhite=false] - write 1-bit images as miniswhite
997
- * @returns {Sharp}
998
- * @throws {Error} Invalid options
999
- */
1000
- function tiff (options) {
1001
- if (is.object(options)) {
1002
- if (is.defined(options.quality)) {
1003
- if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {
1004
- this.options.tiffQuality = options.quality;
1005
- } else {
1006
- throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);
1007
- }
1008
- }
1009
- if (is.defined(options.bitdepth)) {
1010
- if (is.integer(options.bitdepth) && is.inArray(options.bitdepth, [1, 2, 4, 8])) {
1011
- this.options.tiffBitdepth = options.bitdepth;
1012
- } else {
1013
- throw is.invalidParameterError('bitdepth', '1, 2, 4 or 8', options.bitdepth);
1014
- }
1015
- }
1016
- // tiling
1017
- if (is.defined(options.tile)) {
1018
- this._setBooleanOption('tiffTile', options.tile);
1019
- }
1020
- if (is.defined(options.tileWidth)) {
1021
- if (is.integer(options.tileWidth) && options.tileWidth > 0) {
1022
- this.options.tiffTileWidth = options.tileWidth;
1023
- } else {
1024
- throw is.invalidParameterError('tileWidth', 'integer greater than zero', options.tileWidth);
1025
- }
1026
- }
1027
- if (is.defined(options.tileHeight)) {
1028
- if (is.integer(options.tileHeight) && options.tileHeight > 0) {
1029
- this.options.tiffTileHeight = options.tileHeight;
1030
- } else {
1031
- throw is.invalidParameterError('tileHeight', 'integer greater than zero', options.tileHeight);
1032
- }
1033
- }
1034
- // miniswhite
1035
- if (is.defined(options.miniswhite)) {
1036
- this._setBooleanOption('tiffMiniswhite', options.miniswhite);
1037
- }
1038
- // pyramid
1039
- if (is.defined(options.pyramid)) {
1040
- this._setBooleanOption('tiffPyramid', options.pyramid);
1041
- }
1042
- // resolution
1043
- if (is.defined(options.xres)) {
1044
- if (is.number(options.xres) && options.xres > 0) {
1045
- this.options.tiffXres = options.xres;
1046
- } else {
1047
- throw is.invalidParameterError('xres', 'number greater than zero', options.xres);
1048
- }
1049
- }
1050
- if (is.defined(options.yres)) {
1051
- if (is.number(options.yres) && options.yres > 0) {
1052
- this.options.tiffYres = options.yres;
1053
- } else {
1054
- throw is.invalidParameterError('yres', 'number greater than zero', options.yres);
1055
- }
1056
- }
1057
- // compression
1058
- if (is.defined(options.compression)) {
1059
- if (is.string(options.compression) && is.inArray(options.compression, ['none', 'jpeg', 'deflate', 'packbits', 'ccittfax4', 'lzw', 'webp', 'zstd', 'jp2k'])) {
1060
- this.options.tiffCompression = options.compression;
1061
- } else {
1062
- throw is.invalidParameterError('compression', 'one of: none, jpeg, deflate, packbits, ccittfax4, lzw, webp, zstd, jp2k', options.compression);
1063
- }
1064
- }
1065
- // bigtiff
1066
- if (is.defined(options.bigtiff)) {
1067
- this._setBooleanOption('tiffBigtiff', options.bigtiff);
1068
- }
1069
- // predictor
1070
- if (is.defined(options.predictor)) {
1071
- if (is.string(options.predictor) && is.inArray(options.predictor, ['none', 'horizontal', 'float'])) {
1072
- this.options.tiffPredictor = options.predictor;
1073
- } else {
1074
- throw is.invalidParameterError('predictor', 'one of: none, horizontal, float', options.predictor);
1075
- }
1076
- }
1077
- // resolutionUnit
1078
- if (is.defined(options.resolutionUnit)) {
1079
- if (is.string(options.resolutionUnit) && is.inArray(options.resolutionUnit, ['inch', 'cm'])) {
1080
- this.options.tiffResolutionUnit = options.resolutionUnit;
1081
- } else {
1082
- throw is.invalidParameterError('resolutionUnit', 'one of: inch, cm', options.resolutionUnit);
1083
- }
1084
- }
1085
- }
1086
- return this._updateFormatOut('tiff', options);
1087
- }
1088
-
1089
- /**
1090
- * Use these AVIF options for output image.
1091
- *
1092
- * AVIF image sequences are not supported.
1093
- * Prebuilt binaries support a bitdepth of 8 only.
1094
- *
1095
- * This feature is experimental on the Windows ARM64 platform
1096
- * and requires a CPU with ARM64v8.4 or later.
1097
- *
1098
- * @example
1099
- * const data = await sharp(input)
1100
- * .avif({ effort: 2 })
1101
- * .toBuffer();
1102
- *
1103
- * @example
1104
- * const data = await sharp(input)
1105
- * .avif({ lossless: true })
1106
- * .toBuffer();
1107
- *
1108
- * @since 0.27.0
1109
- *
1110
- * @param {Object} [options] - output options
1111
- * @param {number} [options.quality=50] - quality, integer 1-100
1112
- * @param {boolean} [options.lossless=false] - use lossless compression
1113
- * @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 9 (slowest)
1114
- * @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling
1115
- * @param {number} [options.bitdepth=8] - set bitdepth to 8, 10 or 12 bit
1116
- * @returns {Sharp}
1117
- * @throws {Error} Invalid options
1118
- */
1119
- function avif (options) {
1120
- return this.heif({ ...options, compression: 'av1' });
1121
- }
1122
-
1123
- /**
1124
- * Use these HEIF options for output image.
1125
- *
1126
- * Support for patent-encumbered HEIC images using `hevc` compression requires the use of a
1127
- * globally-installed libvips compiled with support for libheif, libde265 and x265.
1128
- *
1129
- * @example
1130
- * const data = await sharp(input)
1131
- * .heif({ compression: 'hevc' })
1132
- * .toBuffer();
1133
- *
1134
- * @since 0.23.0
1135
- *
1136
- * @param {Object} options - output options
1137
- * @param {string} options.compression - compression format: av1, hevc
1138
- * @param {number} [options.quality=50] - quality, integer 1-100
1139
- * @param {boolean} [options.lossless=false] - use lossless compression
1140
- * @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 9 (slowest)
1141
- * @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling
1142
- * @param {number} [options.bitdepth=8] - set bitdepth to 8, 10 or 12 bit
1143
- * @returns {Sharp}
1144
- * @throws {Error} Invalid options
1145
- */
1146
- function heif (options) {
1147
- if (is.object(options)) {
1148
- if (is.string(options.compression) && is.inArray(options.compression, ['av1', 'hevc'])) {
1149
- this.options.heifCompression = options.compression;
1150
- } else {
1151
- throw is.invalidParameterError('compression', 'one of: av1, hevc', options.compression);
1152
- }
1153
- if (is.defined(options.quality)) {
1154
- if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {
1155
- this.options.heifQuality = options.quality;
1156
- } else {
1157
- throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);
1158
- }
1159
- }
1160
- if (is.defined(options.lossless)) {
1161
- if (is.bool(options.lossless)) {
1162
- this.options.heifLossless = options.lossless;
1163
- } else {
1164
- throw is.invalidParameterError('lossless', 'boolean', options.lossless);
1165
- }
1166
- }
1167
- if (is.defined(options.effort)) {
1168
- if (is.integer(options.effort) && is.inRange(options.effort, 0, 9)) {
1169
- this.options.heifEffort = options.effort;
1170
- } else {
1171
- throw is.invalidParameterError('effort', 'integer between 0 and 9', options.effort);
1172
- }
1173
- }
1174
- if (is.defined(options.chromaSubsampling)) {
1175
- if (is.string(options.chromaSubsampling) && is.inArray(options.chromaSubsampling, ['4:2:0', '4:4:4'])) {
1176
- this.options.heifChromaSubsampling = options.chromaSubsampling;
1177
- } else {
1178
- throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling);
1179
- }
1180
- }
1181
- if (is.defined(options.bitdepth)) {
1182
- if (is.integer(options.bitdepth) && is.inArray(options.bitdepth, [8, 10, 12])) {
1183
- if (options.bitdepth !== 8 && this.constructor.versions.heif) {
1184
- throw is.invalidParameterError('bitdepth when using prebuilt binaries', 8, options.bitdepth);
1185
- }
1186
- this.options.heifBitdepth = options.bitdepth;
1187
- } else {
1188
- throw is.invalidParameterError('bitdepth', '8, 10 or 12', options.bitdepth);
1189
- }
1190
- }
1191
- } else {
1192
- throw is.invalidParameterError('options', 'Object', options);
1193
- }
1194
- return this._updateFormatOut('heif', options);
1195
- }
1196
-
1197
- /**
1198
- * Use these JPEG-XL (JXL) options for output image.
1199
- *
1200
- * This feature is experimental, please do not use in production systems.
1201
- *
1202
- * Requires libvips compiled with support for libjxl.
1203
- * The prebuilt binaries do not include this - see
1204
- * {@link /install/#custom-libvips installing a custom libvips}.
1205
- *
1206
- * @since 0.31.3
1207
- *
1208
- * @param {Object} [options] - output options
1209
- * @param {number} [options.distance=1.0] - maximum encoding error, between 0 (highest quality) and 15 (lowest quality)
1210
- * @param {number} [options.quality] - calculate `distance` based on JPEG-like quality, between 1 and 100, overrides distance if specified
1211
- * @param {number} [options.decodingTier=0] - target decode speed tier, between 0 (highest quality) and 4 (lowest quality)
1212
- * @param {boolean} [options.lossless=false] - use lossless compression
1213
- * @param {number} [options.effort=7] - CPU effort, between 1 (fastest) and 9 (slowest)
1214
- * @param {number} [options.loop=0] - number of animation iterations, use 0 for infinite animation
1215
- * @param {number|number[]} [options.delay] - delay(s) between animation frames (in milliseconds)
1216
- * @returns {Sharp}
1217
- * @throws {Error} Invalid options
1218
- */
1219
- function jxl (options) {
1220
- if (is.object(options)) {
1221
- if (is.defined(options.quality)) {
1222
- if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {
1223
- // https://github.com/libjxl/libjxl/blob/0aeea7f180bafd6893c1db8072dcb67d2aa5b03d/tools/cjxl_main.cc#L640-L644
1224
- this.options.jxlDistance = options.quality >= 30
1225
- ? 0.1 + (100 - options.quality) * 0.09
1226
- : 53 / 3000 * options.quality * options.quality - 23 / 20 * options.quality + 25;
1227
- } else {
1228
- throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);
1229
- }
1230
- } else if (is.defined(options.distance)) {
1231
- if (is.number(options.distance) && is.inRange(options.distance, 0, 15)) {
1232
- this.options.jxlDistance = options.distance;
1233
- } else {
1234
- throw is.invalidParameterError('distance', 'number between 0.0 and 15.0', options.distance);
1235
- }
1236
- }
1237
- if (is.defined(options.decodingTier)) {
1238
- if (is.integer(options.decodingTier) && is.inRange(options.decodingTier, 0, 4)) {
1239
- this.options.jxlDecodingTier = options.decodingTier;
1240
- } else {
1241
- throw is.invalidParameterError('decodingTier', 'integer between 0 and 4', options.decodingTier);
1242
- }
1243
- }
1244
- if (is.defined(options.lossless)) {
1245
- if (is.bool(options.lossless)) {
1246
- this.options.jxlLossless = options.lossless;
1247
- } else {
1248
- throw is.invalidParameterError('lossless', 'boolean', options.lossless);
1249
- }
1250
- }
1251
- if (is.defined(options.effort)) {
1252
- if (is.integer(options.effort) && is.inRange(options.effort, 1, 9)) {
1253
- this.options.jxlEffort = options.effort;
1254
- } else {
1255
- throw is.invalidParameterError('effort', 'integer between 1 and 9', options.effort);
1256
- }
1257
- }
1258
- }
1259
- trySetAnimationOptions(options, this.options);
1260
- return this._updateFormatOut('jxl', options);
1261
- }
1262
-
1263
- /**
1264
- * Force output to be raw, uncompressed pixel data.
1265
- * Pixel ordering is left-to-right, top-to-bottom, without padding.
1266
- * Channel ordering will be RGB or RGBA for non-greyscale colourspaces.
1267
- *
1268
- * @example
1269
- * // Extract raw, unsigned 8-bit RGB pixel data from JPEG input
1270
- * const { data, info } = await sharp('input.jpg')
1271
- * .raw()
1272
- * .toBuffer({ resolveWithObject: true });
1273
- *
1274
- * @example
1275
- * // Extract alpha channel as raw, unsigned 16-bit pixel data from PNG input
1276
- * const data = await sharp('input.png')
1277
- * .ensureAlpha()
1278
- * .extractChannel(3)
1279
- * .toColourspace('b-w')
1280
- * .raw({ depth: 'ushort' })
1281
- * .toBuffer();
1282
- *
1283
- * @param {Object} [options] - output options
1284
- * @param {string} [options.depth='uchar'] - bit depth, one of: char, uchar (default), short, ushort, int, uint, float, complex, double, dpcomplex
1285
- * @returns {Sharp}
1286
- * @throws {Error} Invalid options
1287
- */
1288
- function raw (options) {
1289
- if (is.object(options)) {
1290
- if (is.defined(options.depth)) {
1291
- if (is.string(options.depth) && is.inArray(options.depth,
1292
- ['char', 'uchar', 'short', 'ushort', 'int', 'uint', 'float', 'complex', 'double', 'dpcomplex']
1293
- )) {
1294
- this.options.rawDepth = options.depth;
1295
- } else {
1296
- throw is.invalidParameterError('depth', 'one of: char, uchar, short, ushort, int, uint, float, complex, double, dpcomplex', options.depth);
1297
- }
1298
- }
1299
- }
1300
- return this._updateFormatOut('raw');
1301
- }
1302
-
1303
- /**
1304
- * Use tile-based deep zoom (image pyramid) output.
1305
- *
1306
- * Set the format and options for tile images via the `toFormat`, `jpeg`, `png` or `webp` functions.
1307
- * Use a `.zip` or `.szi` file extension with `toFile` to write to a compressed archive file format.
1308
- *
1309
- * The container will be set to `zip` when the output is a Buffer or Stream, otherwise it will default to `fs`.
1310
- *
1311
- * @example
1312
- * sharp('input.tiff')
1313
- * .png()
1314
- * .tile({
1315
- * size: 512
1316
- * })
1317
- * .toFile('output.dz', function(err, info) {
1318
- * // output.dzi is the Deep Zoom XML definition
1319
- * // output_files contains 512x512 tiles grouped by zoom level
1320
- * });
1321
- *
1322
- * @example
1323
- * const zipFileWithTiles = await sharp(input)
1324
- * .tile({ basename: "tiles" })
1325
- * .toBuffer();
1326
- *
1327
- * @example
1328
- * const iiififier = sharp().tile({ layout: "iiif" });
1329
- * readableStream
1330
- * .pipe(iiififier)
1331
- * .pipe(writeableStream);
1332
- *
1333
- * @param {Object} [options]
1334
- * @param {number} [options.size=256] tile size in pixels, a value between 1 and 8192.
1335
- * @param {number} [options.overlap=0] tile overlap in pixels, a value between 0 and 8192.
1336
- * @param {number} [options.angle=0] tile angle of rotation, must be a multiple of 90.
1337
- * @param {string|Object} [options.background={r: 255, g: 255, b: 255, alpha: 1}] - background colour, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to white without transparency.
1338
- * @param {string} [options.depth] how deep to make the pyramid, possible values are `onepixel`, `onetile` or `one`, default based on layout.
1339
- * @param {number} [options.skipBlanks=-1] Threshold to skip tile generation. Range is 0-255 for 8-bit images, 0-65535 for 16-bit images. Default is 5 for `google` layout, -1 (no skip) otherwise.
1340
- * @param {string} [options.container='fs'] tile container, with value `fs` (filesystem) or `zip` (compressed file).
1341
- * @param {string} [options.layout='dz'] filesystem layout, possible values are `dz`, `iiif`, `iiif3`, `zoomify` or `google`.
1342
- * @param {boolean} [options.centre=false] centre image in tile.
1343
- * @param {boolean} [options.center=false] alternative spelling of centre.
1344
- * @param {string} [options.id='https://example.com/iiif'] when `layout` is `iiif`/`iiif3`, sets the `@id`/`id` attribute of `info.json`
1345
- * @param {string} [options.basename] the name of the directory within the zip file when container is `zip`.
1346
- * @returns {Sharp}
1347
- * @throws {Error} Invalid parameters
1348
- */
1349
- function tile (options) {
1350
- if (is.object(options)) {
1351
- // Size of square tiles, in pixels
1352
- if (is.defined(options.size)) {
1353
- if (is.integer(options.size) && is.inRange(options.size, 1, 8192)) {
1354
- this.options.tileSize = options.size;
1355
- } else {
1356
- throw is.invalidParameterError('size', 'integer between 1 and 8192', options.size);
1357
- }
1358
- }
1359
- // Overlap of tiles, in pixels
1360
- if (is.defined(options.overlap)) {
1361
- if (is.integer(options.overlap) && is.inRange(options.overlap, 0, 8192)) {
1362
- if (options.overlap > this.options.tileSize) {
1363
- throw is.invalidParameterError('overlap', `<= size (${this.options.tileSize})`, options.overlap);
1364
- }
1365
- this.options.tileOverlap = options.overlap;
1366
- } else {
1367
- throw is.invalidParameterError('overlap', 'integer between 0 and 8192', options.overlap);
1368
- }
1369
- }
1370
- // Container
1371
- if (is.defined(options.container)) {
1372
- if (is.string(options.container) && is.inArray(options.container, ['fs', 'zip'])) {
1373
- this.options.tileContainer = options.container;
1374
- } else {
1375
- throw is.invalidParameterError('container', 'one of: fs, zip', options.container);
1376
- }
1377
- }
1378
- // Layout
1379
- if (is.defined(options.layout)) {
1380
- if (is.string(options.layout) && is.inArray(options.layout, ['dz', 'google', 'iiif', 'iiif3', 'zoomify'])) {
1381
- this.options.tileLayout = options.layout;
1382
- } else {
1383
- throw is.invalidParameterError('layout', 'one of: dz, google, iiif, iiif3, zoomify', options.layout);
1384
- }
1385
- }
1386
- // Angle of rotation,
1387
- if (is.defined(options.angle)) {
1388
- if (is.integer(options.angle) && !(options.angle % 90)) {
1389
- this.options.tileAngle = options.angle;
1390
- } else {
1391
- throw is.invalidParameterError('angle', 'positive/negative multiple of 90', options.angle);
1392
- }
1393
- }
1394
- // Background colour
1395
- this._setBackgroundColourOption('tileBackground', options.background);
1396
- // Depth of tiles
1397
- if (is.defined(options.depth)) {
1398
- if (is.string(options.depth) && is.inArray(options.depth, ['onepixel', 'onetile', 'one'])) {
1399
- this.options.tileDepth = options.depth;
1400
- } else {
1401
- throw is.invalidParameterError('depth', 'one of: onepixel, onetile, one', options.depth);
1402
- }
1403
- }
1404
- // Threshold to skip blank tiles
1405
- if (is.defined(options.skipBlanks)) {
1406
- if (is.integer(options.skipBlanks) && is.inRange(options.skipBlanks, -1, 65535)) {
1407
- this.options.tileSkipBlanks = options.skipBlanks;
1408
- } else {
1409
- throw is.invalidParameterError('skipBlanks', 'integer between -1 and 255/65535', options.skipBlanks);
1410
- }
1411
- } else if (is.defined(options.layout) && options.layout === 'google') {
1412
- this.options.tileSkipBlanks = 5;
1413
- }
1414
- // Center image in tile
1415
- const centre = is.bool(options.center) ? options.center : options.centre;
1416
- if (is.defined(centre)) {
1417
- this._setBooleanOption('tileCentre', centre);
1418
- }
1419
- // @id attribute for IIIF layout
1420
- if (is.defined(options.id)) {
1421
- if (is.string(options.id)) {
1422
- this.options.tileId = options.id;
1423
- } else {
1424
- throw is.invalidParameterError('id', 'string', options.id);
1425
- }
1426
- }
1427
- // Basename for zip container
1428
- if (is.defined(options.basename)) {
1429
- if (is.string(options.basename)) {
1430
- this.options.tileBasename = options.basename;
1431
- } else {
1432
- throw is.invalidParameterError('basename', 'string', options.basename);
1433
- }
1434
- }
1435
- }
1436
- // Format
1437
- if (is.inArray(this.options.formatOut, ['jpeg', 'png', 'webp'])) {
1438
- this.options.tileFormat = this.options.formatOut;
1439
- } else if (this.options.formatOut !== 'input') {
1440
- throw is.invalidParameterError('format', 'one of: jpeg, png, webp', this.options.formatOut);
1441
- }
1442
- return this._updateFormatOut('dz');
1443
- }
1444
-
1445
- /**
1446
- * Set a timeout for processing, in seconds.
1447
- * Use a value of zero to continue processing indefinitely, the default behaviour.
1448
- *
1449
- * The clock starts when libvips opens an input image for processing.
1450
- * Time spent waiting for a libuv thread to become available is not included.
1451
- *
1452
- * @example
1453
- * // Ensure processing takes no longer than 3 seconds
1454
- * try {
1455
- * const data = await sharp(input)
1456
- * .blur(1000)
1457
- * .timeout({ seconds: 3 })
1458
- * .toBuffer();
1459
- * } catch (err) {
1460
- * if (err.message.includes('timeout')) { ... }
1461
- * }
1462
- *
1463
- * @since 0.29.2
1464
- *
1465
- * @param {Object} options
1466
- * @param {number} options.seconds - Number of seconds after which processing will be stopped
1467
- * @returns {Sharp}
1468
- */
1469
- function timeout (options) {
1470
- if (!is.plainObject(options)) {
1471
- throw is.invalidParameterError('options', 'object', options);
1472
- }
1473
- if (is.integer(options.seconds) && is.inRange(options.seconds, 0, 3600)) {
1474
- this.options.timeoutSeconds = options.seconds;
1475
- } else {
1476
- throw is.invalidParameterError('seconds', 'integer between 0 and 3600', options.seconds);
1477
- }
1478
- return this;
1479
- }
1480
-
1481
- /**
1482
- * Update the output format unless options.force is false,
1483
- * in which case revert to input format.
1484
- * @private
1485
- * @param {string} formatOut
1486
- * @param {Object} [options]
1487
- * @param {boolean} [options.force=true] - force output format, otherwise attempt to use input format
1488
- * @returns {Sharp}
1489
- */
1490
- function _updateFormatOut (formatOut, options) {
1491
- if (!(is.object(options) && options.force === false)) {
1492
- this.options.formatOut = formatOut;
1493
- }
1494
- return this;
1495
- }
1496
-
1497
- /**
1498
- * Update a boolean attribute of the this.options Object.
1499
- * @private
1500
- * @param {string} key
1501
- * @param {boolean} val
1502
- * @throws {Error} Invalid key
1503
- */
1504
- function _setBooleanOption (key, val) {
1505
- if (is.bool(val)) {
1506
- this.options[key] = val;
1507
- } else {
1508
- throw is.invalidParameterError(key, 'boolean', val);
1509
- }
1510
- }
1511
-
1512
- /**
1513
- * Called by a WriteableStream to notify us it is ready for data.
1514
- * @private
1515
- */
1516
- function _read () {
1517
- if (!this.options.streamOut) {
1518
- this.options.streamOut = true;
1519
- const stack = Error();
1520
- this._pipeline(undefined, stack);
1521
- }
1522
- }
1523
-
1524
- /**
1525
- * Invoke the C++ image processing pipeline
1526
- * Supports callback, stream and promise variants
1527
- * @private
1528
- */
1529
- function _pipeline (callback, stack) {
1530
- if (typeof callback === 'function') {
1531
- // output=file/buffer
1532
- if (this._isStreamInput()) {
1533
- // output=file/buffer, input=stream
1534
- this.on('finish', () => {
1535
- this._flattenBufferIn();
1536
- sharp.pipeline(this.options, (err, data, info) => {
1537
- if (err) {
1538
- callback(is.nativeError(err, stack));
1539
- } else {
1540
- callback(null, data, info);
1541
- }
1542
- });
1543
- });
1544
- } else {
1545
- // output=file/buffer, input=file/buffer
1546
- sharp.pipeline(this.options, (err, data, info) => {
1547
- if (err) {
1548
- callback(is.nativeError(err, stack));
1549
- } else {
1550
- callback(null, data, info);
1551
- }
1552
- });
1553
- }
1554
- return this;
1555
- } else if (this.options.streamOut) {
1556
- // output=stream
1557
- if (this._isStreamInput()) {
1558
- // output=stream, input=stream
1559
- this.once('finish', () => {
1560
- this._flattenBufferIn();
1561
- sharp.pipeline(this.options, (err, data, info) => {
1562
- if (err) {
1563
- this.emit('error', is.nativeError(err, stack));
1564
- } else {
1565
- this.emit('info', info);
1566
- this.push(data);
1567
- }
1568
- this.push(null);
1569
- this.on('end', () => this.emit('close'));
1570
- });
1571
- });
1572
- if (this.streamInFinished) {
1573
- this.emit('finish');
1574
- }
1575
- } else {
1576
- // output=stream, input=file/buffer
1577
- sharp.pipeline(this.options, (err, data, info) => {
1578
- if (err) {
1579
- this.emit('error', is.nativeError(err, stack));
1580
- } else {
1581
- this.emit('info', info);
1582
- this.push(data);
1583
- }
1584
- this.push(null);
1585
- this.on('end', () => this.emit('close'));
1586
- });
1587
- }
1588
- return this;
1589
- } else {
1590
- // output=promise
1591
- if (this._isStreamInput()) {
1592
- // output=promise, input=stream
1593
- return new Promise((resolve, reject) => {
1594
- this.once('finish', () => {
1595
- this._flattenBufferIn();
1596
- sharp.pipeline(this.options, (err, data, info) => {
1597
- if (err) {
1598
- reject(is.nativeError(err, stack));
1599
- } else {
1600
- if (this.options.resolveWithObject) {
1601
- resolve({ data, info });
1602
- } else {
1603
- resolve(data);
1604
- }
1605
- }
1606
- });
1607
- });
1608
- });
1609
- } else {
1610
- // output=promise, input=file/buffer
1611
- return new Promise((resolve, reject) => {
1612
- sharp.pipeline(this.options, (err, data, info) => {
1613
- if (err) {
1614
- reject(is.nativeError(err, stack));
1615
- } else {
1616
- if (this.options.resolveWithObject) {
1617
- resolve({ data, info });
1618
- } else {
1619
- resolve(data);
1620
- }
1621
- }
1622
- });
1623
- });
1624
- }
1625
- }
1626
- }
1627
-
1628
- /**
1629
- * Decorate the Sharp prototype with output-related functions.
1630
- * @module Sharp
1631
- * @private
1632
- */
1633
- module.exports = (Sharp) => {
1634
- Object.assign(Sharp.prototype, {
1635
- // Public
1636
- toFile,
1637
- toBuffer,
1638
- keepExif,
1639
- withExif,
1640
- withExifMerge,
1641
- keepIccProfile,
1642
- withIccProfile,
1643
- keepXmp,
1644
- withXmp,
1645
- keepMetadata,
1646
- withMetadata,
1647
- toFormat,
1648
- jpeg,
1649
- jp2,
1650
- png,
1651
- webp,
1652
- tiff,
1653
- avif,
1654
- heif,
1655
- jxl,
1656
- gif,
1657
- raw,
1658
- tile,
1659
- timeout,
1660
- // Private
1661
- _updateFormatOut,
1662
- _setBooleanOption,
1663
- _read,
1664
- _pipeline
1665
- });
1666
- };