@jjlmoya/utils-developer 1.28.0 → 1.29.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (457) hide show
  1. package/package.json +1 -1
  2. package/src/entries.ts +4 -1
  3. package/src/tests/entry_contract.test.ts +10 -0
  4. package/src/tests/i18n_coverage.test.ts +5 -2
  5. package/src/tests/locale_completeness.test.ts +1 -1
  6. package/src/tests/qa-test-helpers.ts +32 -0
  7. package/src/tests/qa_bibliography_links.test.ts +43 -0
  8. package/src/tests/qa_claim_evidence.test.ts +69 -0
  9. package/src/tests/qa_logic_reference_coverage.test.ts +46 -0
  10. package/src/tests/qa_runtime_i18n.test.ts +115 -0
  11. package/src/tests/tool_validation.test.ts +1 -1
  12. package/src/tool/aspectRatio/bibliography.astro +2 -10
  13. package/src/tool/aspectRatio/bibliography.ts +7 -0
  14. package/src/tool/aspectRatio/i18n/de.ts +2 -14
  15. package/src/tool/aspectRatio/i18n/en.ts +2 -14
  16. package/src/tool/aspectRatio/i18n/es.ts +2 -14
  17. package/src/tool/aspectRatio/i18n/fr.ts +2 -14
  18. package/src/tool/aspectRatio/i18n/id.ts +2 -14
  19. package/src/tool/aspectRatio/i18n/it.ts +2 -14
  20. package/src/tool/aspectRatio/i18n/ja.ts +2 -14
  21. package/src/tool/aspectRatio/i18n/ko.ts +2 -14
  22. package/src/tool/aspectRatio/i18n/nl.ts +2 -14
  23. package/src/tool/aspectRatio/i18n/pl.ts +2 -14
  24. package/src/tool/aspectRatio/i18n/pt.ts +2 -14
  25. package/src/tool/aspectRatio/i18n/ru.ts +2 -14
  26. package/src/tool/aspectRatio/i18n/sv.ts +2 -14
  27. package/src/tool/aspectRatio/i18n/tr.ts +2 -14
  28. package/src/tool/aspectRatio/i18n/zh.ts +2 -14
  29. package/src/tool/calculadoraTiempoDatos/bibliography.astro +2 -10
  30. package/src/tool/calculadoraTiempoDatos/bibliography.ts +8 -0
  31. package/src/tool/calculadoraTiempoDatos/component.astro +6 -2
  32. package/src/tool/calculadoraTiempoDatos/i18n/de.ts +2 -6
  33. package/src/tool/calculadoraTiempoDatos/i18n/en.ts +2 -6
  34. package/src/tool/calculadoraTiempoDatos/i18n/es.ts +2 -6
  35. package/src/tool/calculadoraTiempoDatos/i18n/fr.ts +2 -6
  36. package/src/tool/calculadoraTiempoDatos/i18n/id.ts +2 -6
  37. package/src/tool/calculadoraTiempoDatos/i18n/it.ts +2 -6
  38. package/src/tool/calculadoraTiempoDatos/i18n/ja.ts +2 -6
  39. package/src/tool/calculadoraTiempoDatos/i18n/ko.ts +2 -6
  40. package/src/tool/calculadoraTiempoDatos/i18n/nl.ts +2 -6
  41. package/src/tool/calculadoraTiempoDatos/i18n/pl.ts +2 -6
  42. package/src/tool/calculadoraTiempoDatos/i18n/pt.ts +2 -6
  43. package/src/tool/calculadoraTiempoDatos/i18n/ru.ts +2 -6
  44. package/src/tool/calculadoraTiempoDatos/i18n/sv.ts +2 -6
  45. package/src/tool/calculadoraTiempoDatos/i18n/tr.ts +2 -6
  46. package/src/tool/calculadoraTiempoDatos/i18n/zh.ts +2 -6
  47. package/src/tool/colorConverter/bibliography.astro +2 -10
  48. package/src/tool/colorConverter/bibliography.ts +7 -0
  49. package/src/tool/colorConverter/i18n/de.ts +2 -5
  50. package/src/tool/colorConverter/i18n/en.ts +5 -8
  51. package/src/tool/colorConverter/i18n/es.ts +4 -7
  52. package/src/tool/colorConverter/i18n/fr.ts +2 -5
  53. package/src/tool/colorConverter/i18n/id.ts +2 -5
  54. package/src/tool/colorConverter/i18n/it.ts +2 -5
  55. package/src/tool/colorConverter/i18n/ja.ts +2 -5
  56. package/src/tool/colorConverter/i18n/ko.ts +2 -5
  57. package/src/tool/colorConverter/i18n/nl.ts +2 -5
  58. package/src/tool/colorConverter/i18n/pl.ts +2 -5
  59. package/src/tool/colorConverter/i18n/pt.ts +2 -5
  60. package/src/tool/colorConverter/i18n/ru.ts +2 -5
  61. package/src/tool/colorConverter/i18n/sv.ts +2 -5
  62. package/src/tool/colorConverter/i18n/tr.ts +2 -5
  63. package/src/tool/colorConverter/i18n/zh.ts +2 -5
  64. package/src/tool/conversorExcelCsvHtml/bibliography.astro +2 -10
  65. package/src/tool/conversorExcelCsvHtml/bibliography.ts +8 -0
  66. package/src/tool/conversorExcelCsvHtml/component.astro +4 -3
  67. package/src/tool/conversorExcelCsvHtml/i18n/de.ts +2 -6
  68. package/src/tool/conversorExcelCsvHtml/i18n/en.ts +2 -6
  69. package/src/tool/conversorExcelCsvHtml/i18n/es.ts +2 -6
  70. package/src/tool/conversorExcelCsvHtml/i18n/fr.ts +2 -6
  71. package/src/tool/conversorExcelCsvHtml/i18n/id.ts +2 -6
  72. package/src/tool/conversorExcelCsvHtml/i18n/it.ts +2 -6
  73. package/src/tool/conversorExcelCsvHtml/i18n/ja.ts +2 -6
  74. package/src/tool/conversorExcelCsvHtml/i18n/ko.ts +2 -6
  75. package/src/tool/conversorExcelCsvHtml/i18n/nl.ts +2 -6
  76. package/src/tool/conversorExcelCsvHtml/i18n/pl.ts +2 -6
  77. package/src/tool/conversorExcelCsvHtml/i18n/pt.ts +2 -6
  78. package/src/tool/conversorExcelCsvHtml/i18n/ru.ts +2 -6
  79. package/src/tool/conversorExcelCsvHtml/i18n/sv.ts +2 -6
  80. package/src/tool/conversorExcelCsvHtml/i18n/tr.ts +2 -6
  81. package/src/tool/conversorExcelCsvHtml/i18n/zh.ts +2 -6
  82. package/src/tool/cronGenerator/bibliography.astro +2 -10
  83. package/src/tool/cronGenerator/bibliography.ts +6 -0
  84. package/src/tool/cronGenerator/component.astro +5 -1
  85. package/src/tool/cronGenerator/i18n/de.ts +2 -10
  86. package/src/tool/cronGenerator/i18n/en.ts +2 -10
  87. package/src/tool/cronGenerator/i18n/es.ts +2 -10
  88. package/src/tool/cronGenerator/i18n/fr.ts +2 -10
  89. package/src/tool/cronGenerator/i18n/id.ts +2 -10
  90. package/src/tool/cronGenerator/i18n/it.ts +2 -10
  91. package/src/tool/cronGenerator/i18n/ja.ts +2 -10
  92. package/src/tool/cronGenerator/i18n/ko.ts +2 -10
  93. package/src/tool/cronGenerator/i18n/nl.ts +2 -10
  94. package/src/tool/cronGenerator/i18n/pl.ts +2 -10
  95. package/src/tool/cronGenerator/i18n/pt.ts +2 -10
  96. package/src/tool/cronGenerator/i18n/ru.ts +2 -10
  97. package/src/tool/cronGenerator/i18n/sv.ts +2 -10
  98. package/src/tool/cronGenerator/i18n/tr.ts +2 -10
  99. package/src/tool/cronGenerator/i18n/zh.ts +2 -10
  100. package/src/tool/cssBoxShadowGenerator/component.astro +2 -1
  101. package/src/tool/cssBoxShadowGenerator/logic.test.ts +28 -0
  102. package/src/tool/cssSpecificityCalculator/bibliography.astro +2 -10
  103. package/src/tool/cssSpecificityCalculator/bibliography.ts +6 -0
  104. package/src/tool/cssSpecificityCalculator/i18n/de.ts +2 -10
  105. package/src/tool/cssSpecificityCalculator/i18n/en.ts +2 -10
  106. package/src/tool/cssSpecificityCalculator/i18n/es.ts +2 -10
  107. package/src/tool/cssSpecificityCalculator/i18n/fr.ts +2 -10
  108. package/src/tool/cssSpecificityCalculator/i18n/id.ts +2 -10
  109. package/src/tool/cssSpecificityCalculator/i18n/it.ts +2 -10
  110. package/src/tool/cssSpecificityCalculator/i18n/ja.ts +2 -10
  111. package/src/tool/cssSpecificityCalculator/i18n/ko.ts +2 -10
  112. package/src/tool/cssSpecificityCalculator/i18n/nl.ts +2 -10
  113. package/src/tool/cssSpecificityCalculator/i18n/pl.ts +2 -10
  114. package/src/tool/cssSpecificityCalculator/i18n/pt.ts +2 -10
  115. package/src/tool/cssSpecificityCalculator/i18n/ru.ts +2 -10
  116. package/src/tool/cssSpecificityCalculator/i18n/sv.ts +2 -10
  117. package/src/tool/cssSpecificityCalculator/i18n/tr.ts +2 -10
  118. package/src/tool/cssSpecificityCalculator/i18n/zh.ts +2 -10
  119. package/src/tool/cssToInlineConverter/bibliography.astro +2 -10
  120. package/src/tool/cssToInlineConverter/bibliography.ts +7 -0
  121. package/src/tool/cssToInlineConverter/i18n/de.ts +2 -14
  122. package/src/tool/cssToInlineConverter/i18n/en.ts +4 -16
  123. package/src/tool/cssToInlineConverter/i18n/es.ts +5 -17
  124. package/src/tool/cssToInlineConverter/i18n/fr.ts +2 -14
  125. package/src/tool/cssToInlineConverter/i18n/id.ts +2 -14
  126. package/src/tool/cssToInlineConverter/i18n/it.ts +2 -14
  127. package/src/tool/cssToInlineConverter/i18n/ja.ts +2 -14
  128. package/src/tool/cssToInlineConverter/i18n/ko.ts +2 -14
  129. package/src/tool/cssToInlineConverter/i18n/nl.ts +2 -14
  130. package/src/tool/cssToInlineConverter/i18n/pl.ts +2 -14
  131. package/src/tool/cssToInlineConverter/i18n/pt.ts +2 -14
  132. package/src/tool/cssToInlineConverter/i18n/ru.ts +2 -14
  133. package/src/tool/cssToInlineConverter/i18n/sv.ts +2 -14
  134. package/src/tool/cssToInlineConverter/i18n/tr.ts +2 -14
  135. package/src/tool/cssToInlineConverter/i18n/zh.ts +2 -14
  136. package/src/tool/duplicateCssRemover/bibliography.astro +2 -10
  137. package/src/tool/duplicateCssRemover/bibliography.ts +7 -0
  138. package/src/tool/duplicateCssRemover/i18n/de.ts +2 -14
  139. package/src/tool/duplicateCssRemover/i18n/en.ts +4 -16
  140. package/src/tool/duplicateCssRemover/i18n/es.ts +4 -16
  141. package/src/tool/duplicateCssRemover/i18n/fr.ts +2 -14
  142. package/src/tool/duplicateCssRemover/i18n/id.ts +2 -14
  143. package/src/tool/duplicateCssRemover/i18n/it.ts +2 -14
  144. package/src/tool/duplicateCssRemover/i18n/ja.ts +2 -14
  145. package/src/tool/duplicateCssRemover/i18n/ko.ts +2 -14
  146. package/src/tool/duplicateCssRemover/i18n/nl.ts +2 -14
  147. package/src/tool/duplicateCssRemover/i18n/pl.ts +2 -14
  148. package/src/tool/duplicateCssRemover/i18n/pt.ts +2 -14
  149. package/src/tool/duplicateCssRemover/i18n/ru.ts +2 -14
  150. package/src/tool/duplicateCssRemover/i18n/sv.ts +2 -14
  151. package/src/tool/duplicateCssRemover/i18n/tr.ts +2 -14
  152. package/src/tool/duplicateCssRemover/i18n/zh.ts +2 -14
  153. package/src/tool/generadorSecurityTxt/bibliography.astro +2 -10
  154. package/src/tool/generadorSecurityTxt/bibliography.ts +7 -0
  155. package/src/tool/generadorSecurityTxt/component.astro +1 -2
  156. package/src/tool/generadorSecurityTxt/i18n/de.ts +2 -5
  157. package/src/tool/generadorSecurityTxt/i18n/en.ts +2 -5
  158. package/src/tool/generadorSecurityTxt/i18n/es.ts +2 -5
  159. package/src/tool/generadorSecurityTxt/i18n/fr.ts +2 -5
  160. package/src/tool/generadorSecurityTxt/i18n/id.ts +2 -5
  161. package/src/tool/generadorSecurityTxt/i18n/it.ts +2 -5
  162. package/src/tool/generadorSecurityTxt/i18n/ja.ts +2 -5
  163. package/src/tool/generadorSecurityTxt/i18n/ko.ts +2 -5
  164. package/src/tool/generadorSecurityTxt/i18n/nl.ts +2 -5
  165. package/src/tool/generadorSecurityTxt/i18n/pl.ts +2 -5
  166. package/src/tool/generadorSecurityTxt/i18n/pt.ts +2 -5
  167. package/src/tool/generadorSecurityTxt/i18n/ru.ts +2 -5
  168. package/src/tool/generadorSecurityTxt/i18n/sv.ts +2 -5
  169. package/src/tool/generadorSecurityTxt/i18n/tr.ts +2 -5
  170. package/src/tool/generadorSecurityTxt/i18n/zh.ts +2 -5
  171. package/src/tool/hashGenerator/bibliography.astro +2 -10
  172. package/src/tool/hashGenerator/bibliography.ts +7 -0
  173. package/src/tool/hashGenerator/i18n/de.ts +2 -5
  174. package/src/tool/hashGenerator/i18n/en.ts +2 -5
  175. package/src/tool/hashGenerator/i18n/es.ts +2 -5
  176. package/src/tool/hashGenerator/i18n/fr.ts +2 -5
  177. package/src/tool/hashGenerator/i18n/id.ts +2 -5
  178. package/src/tool/hashGenerator/i18n/it.ts +2 -5
  179. package/src/tool/hashGenerator/i18n/ja.ts +2 -5
  180. package/src/tool/hashGenerator/i18n/ko.ts +2 -5
  181. package/src/tool/hashGenerator/i18n/nl.ts +2 -5
  182. package/src/tool/hashGenerator/i18n/pl.ts +2 -5
  183. package/src/tool/hashGenerator/i18n/pt.ts +2 -5
  184. package/src/tool/hashGenerator/i18n/ru.ts +2 -5
  185. package/src/tool/hashGenerator/i18n/sv.ts +2 -5
  186. package/src/tool/hashGenerator/i18n/tr.ts +2 -5
  187. package/src/tool/hashGenerator/i18n/zh.ts +2 -5
  188. package/src/tool/inspectorCertificadosSsl/bibliography.astro +2 -10
  189. package/src/tool/inspectorCertificadosSsl/bibliography.ts +8 -0
  190. package/src/tool/inspectorCertificadosSsl/component.astro +4 -3
  191. package/src/tool/inspectorCertificadosSsl/i18n/de.ts +2 -6
  192. package/src/tool/inspectorCertificadosSsl/i18n/en.ts +2 -6
  193. package/src/tool/inspectorCertificadosSsl/i18n/es.ts +2 -6
  194. package/src/tool/inspectorCertificadosSsl/i18n/fr.ts +2 -6
  195. package/src/tool/inspectorCertificadosSsl/i18n/id.ts +2 -6
  196. package/src/tool/inspectorCertificadosSsl/i18n/it.ts +2 -6
  197. package/src/tool/inspectorCertificadosSsl/i18n/ja.ts +2 -6
  198. package/src/tool/inspectorCertificadosSsl/i18n/ko.ts +2 -6
  199. package/src/tool/inspectorCertificadosSsl/i18n/nl.ts +2 -6
  200. package/src/tool/inspectorCertificadosSsl/i18n/pl.ts +2 -6
  201. package/src/tool/inspectorCertificadosSsl/i18n/pt.ts +2 -6
  202. package/src/tool/inspectorCertificadosSsl/i18n/ru.ts +2 -6
  203. package/src/tool/inspectorCertificadosSsl/i18n/sv.ts +2 -6
  204. package/src/tool/inspectorCertificadosSsl/i18n/tr.ts +2 -6
  205. package/src/tool/inspectorCertificadosSsl/i18n/zh.ts +2 -6
  206. package/src/tool/jsonFormatter/bibliography.astro +2 -10
  207. package/src/tool/jsonFormatter/bibliography.ts +8 -0
  208. package/src/tool/jsonFormatter/i18n/de.ts +2 -18
  209. package/src/tool/jsonFormatter/i18n/en.ts +2 -18
  210. package/src/tool/jsonFormatter/i18n/es.ts +2 -18
  211. package/src/tool/jsonFormatter/i18n/fr.ts +2 -18
  212. package/src/tool/jsonFormatter/i18n/id.ts +2 -18
  213. package/src/tool/jsonFormatter/i18n/it.ts +2 -18
  214. package/src/tool/jsonFormatter/i18n/ja.ts +2 -18
  215. package/src/tool/jsonFormatter/i18n/ko.ts +2 -18
  216. package/src/tool/jsonFormatter/i18n/nl.ts +2 -18
  217. package/src/tool/jsonFormatter/i18n/pl.ts +2 -18
  218. package/src/tool/jsonFormatter/i18n/pt.ts +2 -18
  219. package/src/tool/jsonFormatter/i18n/ru.ts +2 -18
  220. package/src/tool/jsonFormatter/i18n/sv.ts +2 -18
  221. package/src/tool/jsonFormatter/i18n/tr.ts +2 -18
  222. package/src/tool/jsonFormatter/i18n/zh.ts +2 -18
  223. package/src/tool/jwtDecoder/component.astro +2 -1
  224. package/src/tool/jwtDecoder/logic.test.ts +32 -0
  225. package/src/tool/keycode/bibliography.astro +2 -10
  226. package/src/tool/keycode/bibliography.ts +7 -0
  227. package/src/tool/keycode/i18n/de.ts +2 -14
  228. package/src/tool/keycode/i18n/en.ts +2 -14
  229. package/src/tool/keycode/i18n/es.ts +2 -14
  230. package/src/tool/keycode/i18n/fr.ts +2 -14
  231. package/src/tool/keycode/i18n/id.ts +2 -14
  232. package/src/tool/keycode/i18n/it.ts +2 -14
  233. package/src/tool/keycode/i18n/ja.ts +2 -14
  234. package/src/tool/keycode/i18n/ko.ts +2 -14
  235. package/src/tool/keycode/i18n/nl.ts +2 -14
  236. package/src/tool/keycode/i18n/pl.ts +2 -14
  237. package/src/tool/keycode/i18n/pt.ts +2 -14
  238. package/src/tool/keycode/i18n/ru.ts +2 -14
  239. package/src/tool/keycode/i18n/sv.ts +2 -14
  240. package/src/tool/keycode/i18n/tr.ts +2 -14
  241. package/src/tool/keycode/i18n/zh.ts +2 -14
  242. package/src/tool/llmCostCalculator/bibliography.astro +2 -10
  243. package/src/tool/llmCostCalculator/bibliography.ts +8 -0
  244. package/src/tool/llmCostCalculator/i18n/de.ts +2 -18
  245. package/src/tool/llmCostCalculator/i18n/en.ts +2 -18
  246. package/src/tool/llmCostCalculator/i18n/es.ts +2 -18
  247. package/src/tool/llmCostCalculator/i18n/fr.ts +2 -18
  248. package/src/tool/llmCostCalculator/i18n/id.ts +2 -18
  249. package/src/tool/llmCostCalculator/i18n/it.ts +2 -18
  250. package/src/tool/llmCostCalculator/i18n/ja.ts +2 -18
  251. package/src/tool/llmCostCalculator/i18n/ko.ts +2 -18
  252. package/src/tool/llmCostCalculator/i18n/nl.ts +2 -18
  253. package/src/tool/llmCostCalculator/i18n/pl.ts +2 -18
  254. package/src/tool/llmCostCalculator/i18n/pt.ts +2 -18
  255. package/src/tool/llmCostCalculator/i18n/ru.ts +2 -18
  256. package/src/tool/llmCostCalculator/i18n/sv.ts +2 -18
  257. package/src/tool/llmCostCalculator/i18n/tr.ts +2 -18
  258. package/src/tool/llmCostCalculator/i18n/zh.ts +2 -18
  259. package/src/tool/mobileMockupGenerator/bibliography.astro +2 -10
  260. package/src/tool/mobileMockupGenerator/bibliography.ts +6 -0
  261. package/src/tool/mobileMockupGenerator/i18n/de.ts +2 -4
  262. package/src/tool/mobileMockupGenerator/i18n/en.ts +2 -4
  263. package/src/tool/mobileMockupGenerator/i18n/es.ts +2 -4
  264. package/src/tool/mobileMockupGenerator/i18n/fr.ts +2 -4
  265. package/src/tool/mobileMockupGenerator/i18n/id.ts +2 -4
  266. package/src/tool/mobileMockupGenerator/i18n/it.ts +2 -4
  267. package/src/tool/mobileMockupGenerator/i18n/ja.ts +2 -4
  268. package/src/tool/mobileMockupGenerator/i18n/ko.ts +2 -4
  269. package/src/tool/mobileMockupGenerator/i18n/nl.ts +2 -4
  270. package/src/tool/mobileMockupGenerator/i18n/pl.ts +2 -1
  271. package/src/tool/mobileMockupGenerator/i18n/pt.ts +2 -4
  272. package/src/tool/mobileMockupGenerator/i18n/ru.ts +2 -4
  273. package/src/tool/mobileMockupGenerator/i18n/sv.ts +2 -4
  274. package/src/tool/mobileMockupGenerator/i18n/tr.ts +2 -4
  275. package/src/tool/mobileMockupGenerator/i18n/zh.ts +2 -4
  276. package/src/tool/musicalTypography/bibliography.astro +2 -10
  277. package/src/tool/musicalTypography/bibliography.ts +7 -0
  278. package/src/tool/musicalTypography/i18n/de.ts +2 -14
  279. package/src/tool/musicalTypography/i18n/en.ts +3 -15
  280. package/src/tool/musicalTypography/i18n/es.ts +3 -15
  281. package/src/tool/musicalTypography/i18n/fr.ts +2 -14
  282. package/src/tool/musicalTypography/i18n/id.ts +2 -14
  283. package/src/tool/musicalTypography/i18n/it.ts +2 -14
  284. package/src/tool/musicalTypography/i18n/ja.ts +2 -14
  285. package/src/tool/musicalTypography/i18n/ko.ts +2 -14
  286. package/src/tool/musicalTypography/i18n/nl.ts +2 -14
  287. package/src/tool/musicalTypography/i18n/pl.ts +2 -14
  288. package/src/tool/musicalTypography/i18n/pt.ts +2 -5
  289. package/src/tool/musicalTypography/i18n/ru.ts +2 -5
  290. package/src/tool/musicalTypography/i18n/sv.ts +2 -1
  291. package/src/tool/musicalTypography/i18n/tr.ts +2 -1
  292. package/src/tool/musicalTypography/i18n/zh.ts +2 -1
  293. package/src/tool/placeholderGenerator/bibliography.astro +2 -10
  294. package/src/tool/placeholderGenerator/bibliography.ts +7 -0
  295. package/src/tool/placeholderGenerator/i18n/de.ts +2 -14
  296. package/src/tool/placeholderGenerator/i18n/en.ts +4 -16
  297. package/src/tool/placeholderGenerator/i18n/es.ts +4 -16
  298. package/src/tool/placeholderGenerator/i18n/fr.ts +2 -14
  299. package/src/tool/placeholderGenerator/i18n/id.ts +2 -14
  300. package/src/tool/placeholderGenerator/i18n/it.ts +2 -14
  301. package/src/tool/placeholderGenerator/i18n/ja.ts +2 -14
  302. package/src/tool/placeholderGenerator/i18n/ko.ts +2 -14
  303. package/src/tool/placeholderGenerator/i18n/nl.ts +2 -14
  304. package/src/tool/placeholderGenerator/i18n/pl.ts +2 -14
  305. package/src/tool/placeholderGenerator/i18n/pt.ts +2 -14
  306. package/src/tool/placeholderGenerator/i18n/ru.ts +2 -14
  307. package/src/tool/placeholderGenerator/i18n/sv.ts +2 -14
  308. package/src/tool/placeholderGenerator/i18n/tr.ts +2 -14
  309. package/src/tool/placeholderGenerator/i18n/zh.ts +2 -14
  310. package/src/tool/promoteThisWebsite/asset-bindings.ts +73 -0
  311. package/src/tool/promoteThisWebsite/bibliography.astro +14 -0
  312. package/src/tool/promoteThisWebsite/bibliography.ts +14 -0
  313. package/src/tool/promoteThisWebsite/component.astro +136 -0
  314. package/src/tool/promoteThisWebsite/control-views.ts +83 -0
  315. package/src/tool/promoteThisWebsite/controller.ts +232 -0
  316. package/src/tool/promoteThisWebsite/dom-views.ts +322 -0
  317. package/src/tool/promoteThisWebsite/entry.ts +16 -0
  318. package/src/tool/promoteThisWebsite/evaluator.ts +9 -0
  319. package/src/tool/promoteThisWebsite/i18n/en.ts +111 -0
  320. package/src/tool/promoteThisWebsite/i18n/es.ts +111 -0
  321. package/src/tool/promoteThisWebsite/index.ts +11 -0
  322. package/src/tool/promoteThisWebsite/jjlmoya-overlay.png +0 -0
  323. package/src/tool/promoteThisWebsite/logic.test.ts +29 -0
  324. package/src/tool/promoteThisWebsite/logic.ts +108 -0
  325. package/src/tool/promoteThisWebsite/pixel-cat.png +0 -0
  326. package/src/tool/promoteThisWebsite/promote-this-website.css +322 -0
  327. package/src/tool/promoteThisWebsite/seo.astro +15 -0
  328. package/src/tool/promoteThisWebsite/storage.ts +28 -0
  329. package/src/tool/promoteThisWebsite/title-view.ts +206 -0
  330. package/src/tool/promoteThisWebsite/ui.ts +59 -0
  331. package/src/tool/promptLibrary/bibliography.astro +2 -10
  332. package/src/tool/promptLibrary/bibliography.ts +6 -0
  333. package/src/tool/promptLibrary/i18n/de.ts +2 -4
  334. package/src/tool/promptLibrary/i18n/en.ts +2 -4
  335. package/src/tool/promptLibrary/i18n/es.ts +2 -4
  336. package/src/tool/promptLibrary/i18n/fr.ts +2 -4
  337. package/src/tool/promptLibrary/i18n/id.ts +2 -4
  338. package/src/tool/promptLibrary/i18n/it.ts +2 -4
  339. package/src/tool/promptLibrary/i18n/ja.ts +2 -4
  340. package/src/tool/promptLibrary/i18n/ko.ts +2 -4
  341. package/src/tool/promptLibrary/i18n/nl.ts +2 -4
  342. package/src/tool/promptLibrary/i18n/pl.ts +2 -1
  343. package/src/tool/promptLibrary/i18n/pt.ts +2 -4
  344. package/src/tool/promptLibrary/i18n/ru.ts +2 -4
  345. package/src/tool/promptLibrary/i18n/sv.ts +2 -4
  346. package/src/tool/promptLibrary/i18n/tr.ts +2 -4
  347. package/src/tool/promptLibrary/i18n/zh.ts +2 -4
  348. package/src/tool/readabilityCalculator/bibliography.astro +2 -10
  349. package/src/tool/readabilityCalculator/bibliography.ts +7 -0
  350. package/src/tool/readabilityCalculator/i18n/de.ts +2 -5
  351. package/src/tool/readabilityCalculator/i18n/en.ts +2 -5
  352. package/src/tool/readabilityCalculator/i18n/es.ts +2 -5
  353. package/src/tool/readabilityCalculator/i18n/fr.ts +2 -5
  354. package/src/tool/readabilityCalculator/i18n/id.ts +2 -5
  355. package/src/tool/readabilityCalculator/i18n/it.ts +2 -5
  356. package/src/tool/readabilityCalculator/i18n/ja.ts +2 -5
  357. package/src/tool/readabilityCalculator/i18n/ko.ts +2 -5
  358. package/src/tool/readabilityCalculator/i18n/nl.ts +2 -5
  359. package/src/tool/readabilityCalculator/i18n/pl.ts +2 -1
  360. package/src/tool/readabilityCalculator/i18n/pt.ts +2 -5
  361. package/src/tool/readabilityCalculator/i18n/ru.ts +2 -5
  362. package/src/tool/readabilityCalculator/i18n/sv.ts +2 -5
  363. package/src/tool/readabilityCalculator/i18n/tr.ts +2 -5
  364. package/src/tool/readabilityCalculator/i18n/zh.ts +2 -5
  365. package/src/tool/serpPixelSimulator/controller.ts +1 -0
  366. package/src/tool/serpPixelSimulator/i18n/en.ts +2 -2
  367. package/src/tool/serpPixelSimulator/i18n/es.ts +2 -2
  368. package/src/tool/serpPixelSimulator/logic.test.ts +25 -0
  369. package/src/tool/svgSanitizer/bibliography.astro +2 -10
  370. package/src/tool/svgSanitizer/bibliography.ts +7 -0
  371. package/src/tool/svgSanitizer/i18n/de.ts +2 -5
  372. package/src/tool/svgSanitizer/i18n/en.ts +2 -5
  373. package/src/tool/svgSanitizer/i18n/es.ts +2 -5
  374. package/src/tool/svgSanitizer/i18n/fr.ts +2 -5
  375. package/src/tool/svgSanitizer/i18n/id.ts +2 -5
  376. package/src/tool/svgSanitizer/i18n/it.ts +2 -5
  377. package/src/tool/svgSanitizer/i18n/ja.ts +2 -5
  378. package/src/tool/svgSanitizer/i18n/ko.ts +2 -5
  379. package/src/tool/svgSanitizer/i18n/nl.ts +2 -5
  380. package/src/tool/svgSanitizer/i18n/pl.ts +2 -5
  381. package/src/tool/svgSanitizer/i18n/pt.ts +2 -1
  382. package/src/tool/svgSanitizer/i18n/ru.ts +2 -5
  383. package/src/tool/svgSanitizer/i18n/sv.ts +2 -5
  384. package/src/tool/svgSanitizer/i18n/tr.ts +2 -5
  385. package/src/tool/svgSanitizer/i18n/zh.ts +2 -5
  386. package/src/tool/svgToCss/bibliography.astro +2 -10
  387. package/src/tool/svgToCss/bibliography.ts +8 -0
  388. package/src/tool/svgToCss/i18n/de.ts +2 -18
  389. package/src/tool/svgToCss/i18n/en.ts +2 -18
  390. package/src/tool/svgToCss/i18n/es.ts +2 -18
  391. package/src/tool/svgToCss/i18n/fr.ts +2 -18
  392. package/src/tool/svgToCss/i18n/id.ts +2 -18
  393. package/src/tool/svgToCss/i18n/it.ts +2 -18
  394. package/src/tool/svgToCss/i18n/ja.ts +2 -18
  395. package/src/tool/svgToCss/i18n/ko.ts +2 -18
  396. package/src/tool/svgToCss/i18n/nl.ts +2 -18
  397. package/src/tool/svgToCss/i18n/pl.ts +2 -18
  398. package/src/tool/svgToCss/i18n/pt.ts +2 -18
  399. package/src/tool/svgToCss/i18n/ru.ts +2 -18
  400. package/src/tool/svgToCss/i18n/sv.ts +2 -18
  401. package/src/tool/svgToCss/i18n/tr.ts +2 -18
  402. package/src/tool/svgToCss/i18n/zh.ts +2 -18
  403. package/src/tool/urlCleaner/bibliography.astro +2 -10
  404. package/src/tool/urlCleaner/bibliography.ts +7 -0
  405. package/src/tool/urlCleaner/i18n/de.ts +2 -5
  406. package/src/tool/urlCleaner/i18n/en.ts +2 -5
  407. package/src/tool/urlCleaner/i18n/es.ts +2 -5
  408. package/src/tool/urlCleaner/i18n/fr.ts +2 -5
  409. package/src/tool/urlCleaner/i18n/id.ts +2 -5
  410. package/src/tool/urlCleaner/i18n/it.ts +2 -5
  411. package/src/tool/urlCleaner/i18n/ja.ts +2 -5
  412. package/src/tool/urlCleaner/i18n/ko.ts +2 -5
  413. package/src/tool/urlCleaner/i18n/nl.ts +2 -5
  414. package/src/tool/urlCleaner/i18n/pl.ts +2 -1
  415. package/src/tool/urlCleaner/i18n/pt.ts +2 -5
  416. package/src/tool/urlCleaner/i18n/ru.ts +2 -5
  417. package/src/tool/urlCleaner/i18n/sv.ts +2 -5
  418. package/src/tool/urlCleaner/i18n/tr.ts +2 -5
  419. package/src/tool/urlCleaner/i18n/zh.ts +2 -5
  420. package/src/tool/urlEncoderDecoder/bibliography.astro +2 -10
  421. package/src/tool/urlEncoderDecoder/bibliography.ts +7 -0
  422. package/src/tool/urlEncoderDecoder/i18n/de.ts +2 -14
  423. package/src/tool/urlEncoderDecoder/i18n/en.ts +3 -15
  424. package/src/tool/urlEncoderDecoder/i18n/es.ts +3 -15
  425. package/src/tool/urlEncoderDecoder/i18n/fr.ts +2 -14
  426. package/src/tool/urlEncoderDecoder/i18n/id.ts +2 -14
  427. package/src/tool/urlEncoderDecoder/i18n/it.ts +2 -14
  428. package/src/tool/urlEncoderDecoder/i18n/ja.ts +2 -14
  429. package/src/tool/urlEncoderDecoder/i18n/ko.ts +2 -14
  430. package/src/tool/urlEncoderDecoder/i18n/nl.ts +2 -14
  431. package/src/tool/urlEncoderDecoder/i18n/pl.ts +2 -14
  432. package/src/tool/urlEncoderDecoder/i18n/pt.ts +2 -14
  433. package/src/tool/urlEncoderDecoder/i18n/ru.ts +2 -14
  434. package/src/tool/urlEncoderDecoder/i18n/sv.ts +2 -14
  435. package/src/tool/urlEncoderDecoder/i18n/tr.ts +2 -14
  436. package/src/tool/urlEncoderDecoder/i18n/zh.ts +2 -14
  437. package/src/tool/utmGenerator/bibliography.astro +2 -10
  438. package/src/tool/utmGenerator/bibliography.ts +6 -0
  439. package/src/tool/utmGenerator/i18n/de.ts +2 -4
  440. package/src/tool/utmGenerator/i18n/en.ts +2 -4
  441. package/src/tool/utmGenerator/i18n/es.ts +2 -4
  442. package/src/tool/utmGenerator/i18n/fr.ts +2 -4
  443. package/src/tool/utmGenerator/i18n/id.ts +2 -4
  444. package/src/tool/utmGenerator/i18n/it.ts +2 -4
  445. package/src/tool/utmGenerator/i18n/ja.ts +2 -4
  446. package/src/tool/utmGenerator/i18n/ko.ts +2 -4
  447. package/src/tool/utmGenerator/i18n/nl.ts +2 -4
  448. package/src/tool/utmGenerator/i18n/pl.ts +2 -4
  449. package/src/tool/utmGenerator/i18n/pt.ts +2 -4
  450. package/src/tool/utmGenerator/i18n/ru.ts +2 -4
  451. package/src/tool/utmGenerator/i18n/sv.ts +2 -4
  452. package/src/tool/utmGenerator/i18n/tr.ts +2 -4
  453. package/src/tool/utmGenerator/i18n/zh.ts +2 -4
  454. package/src/tool/visualCssGridFlexboxGenerator/component.astro +1 -0
  455. package/src/tool/visualCssGridFlexboxGenerator/logic.test.ts +29 -0
  456. package/src/tool/visualCssGridFlexboxGenerator/workspace.ts +13 -1
  457. package/src/tools.ts +2 -1
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { JsonFormatterUI } from '../ui';
@@ -107,24 +108,7 @@ export const content: ToolLocaleContent<JsonFormatterUI> = {
107
108
  faqTitle: 'Часто задаваемые вопросы',
108
109
  faq: faqData,
109
110
  bibliographyTitle: 'Ссылки и стандарты',
110
- bibliography: [
111
- {
112
- name: 'RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
113
- url: 'https://datatracker.ietf.org/doc/html/rfc8259',
114
- },
115
- {
116
- name: 'ECMA-404 - The JSON Data Interchange Syntax (Ecma International)',
117
- url: 'https://www.ecma-international.org/publications-and-standards/standards/ecma-404/',
118
- },
119
- {
120
- name: 'JSON.org - Введение в JSON',
121
- url: 'https://www.json.org/json-en.html',
122
- },
123
- {
124
- name: 'MDN Web Docs - JSON',
125
- url: 'https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/JSON',
126
- },
127
- ],
111
+ bibliography,
128
112
  howTo: howToData,
129
113
  schemas: [faqSchema, howToSchema, appSchema],
130
114
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { JsonFormatterUI } from '../ui';
@@ -107,24 +108,7 @@ export const content: ToolLocaleContent<JsonFormatterUI> = {
107
108
  faqTitle: 'Vanliga frågor',
108
109
  faq: faqData,
109
110
  bibliographyTitle: 'Referenser och Standarder',
110
- bibliography: [
111
- {
112
- name: 'RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
113
- url: 'https://datatracker.ietf.org/doc/html/rfc8259',
114
- },
115
- {
116
- name: 'ECMA-404 - The JSON Data Interchange Syntax (Ecma International)',
117
- url: 'https://www.ecma-international.org/publications-and-standards/standards/ecma-404/',
118
- },
119
- {
120
- name: 'JSON.org - Introduktion till JSON',
121
- url: 'https://www.json.org/json-en.html',
122
- },
123
- {
124
- name: 'MDN Web Docs - JSON',
125
- url: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON',
126
- },
127
- ],
111
+ bibliography,
128
112
  howTo: howToData,
129
113
  schemas: [faqSchema, howToSchema, appSchema],
130
114
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { JsonFormatterUI } from '../ui';
@@ -107,24 +108,7 @@ export const content: ToolLocaleContent<JsonFormatterUI> = {
107
108
  faqTitle: 'Sıkça Sorulan Sorular',
108
109
  faq: faqData,
109
110
  bibliographyTitle: 'Referanslar ve Standartlar',
110
- bibliography: [
111
- {
112
- name: 'RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
113
- url: 'https://datatracker.ietf.org/doc/html/rfc8259',
114
- },
115
- {
116
- name: 'ECMA-404 - The JSON Data Interchange Syntax (Ecma International)',
117
- url: 'https://www.ecma-international.org/publications-and-standards/standards/ecma-404/',
118
- },
119
- {
120
- name: 'JSON.org - JSON\'a Giriş',
121
- url: 'https://www.json.org/json-en.html',
122
- },
123
- {
124
- name: 'MDN Web Docs - JSON',
125
- url: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON',
126
- },
127
- ],
111
+ bibliography,
128
112
  howTo: howToData,
129
113
  schemas: [faqSchema, howToSchema, appSchema],
130
114
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { JsonFormatterUI } from '../ui';
@@ -107,24 +108,7 @@ export const content: ToolLocaleContent<JsonFormatterUI> = {
107
108
  faqTitle: '常见问题',
108
109
  faq: faqData,
109
110
  bibliographyTitle: '参考资料与标准',
110
- bibliography: [
111
- {
112
- name: 'RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
113
- url: 'https://datatracker.ietf.org/doc/html/rfc8259',
114
- },
115
- {
116
- name: 'ECMA-404 - The JSON Data Interchange Syntax (Ecma International)',
117
- url: 'https://www.ecma-international.org/publications-and-standards/standards/ecma-404/',
118
- },
119
- {
120
- name: 'JSON.org - JSON 介绍',
121
- url: 'https://www.json.org/json-en.html',
122
- },
123
- {
124
- name: 'MDN Web Docs - JSON',
125
- url: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON',
126
- },
127
- ],
111
+ bibliography,
128
112
  howTo: howToData,
129
113
  schemas: [faqSchema, howToSchema, appSchema],
130
114
  seo: [
@@ -156,7 +156,8 @@ const t = (ui ?? {}) as JwtDecoderUI;
156
156
  function renderInvalidToken(error: ReturnType<typeof decodeJwt>['error']) {
157
157
  resetOutputs();
158
158
  headerOutput.textContent = t.invalidTokenTitle;
159
- payloadOutput.textContent = error === 'invalid-segments' ? t.invalidSegmentError : t.invalidDecodeError;
159
+ const detail = error === 'invalid-segments' ? t.invalidSegmentError : t.invalidDecodeError;
160
+ payloadOutput.textContent = `${detail}\n${t.invalidTokenBody}`;
160
161
  setStatus(t.statusInvalid, 'invalid');
161
162
  }
162
163
 
@@ -0,0 +1,32 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { decodeJwt, formatClaimDate, formatClaimValue, formatJson } from './logic';
3
+
4
+ function encode(value: Record<string, unknown>): string {
5
+ return btoa(JSON.stringify(value)).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
6
+ }
7
+
8
+ describe('JWT decoder logic', () => {
9
+ it('decodes a valid signed-looking token and marks expired claims', () => {
10
+ const token = `${encode({ alg: 'HS256', typ: 'JWT' })}.${encode({ sub: '42', exp: 1 })}.signature`;
11
+ const result = decodeJwt(token);
12
+ expect(result.valid).toBe(true);
13
+ expect(result.payload.sub).toBe('42');
14
+ expect(result.expired).toBe(true);
15
+ expect(result.unsigned).toBe(false);
16
+ });
17
+
18
+ it('recognizes unsigned tokens and invalid structures', () => {
19
+ const unsigned = `${encode({ alg: 'none' })}.${encode({ role: 'reader' })}.`;
20
+ expect(decodeJwt(unsigned).unsigned).toBe(true);
21
+ expect(decodeJwt('not-a-jwt').error).toBe('invalid-segments');
22
+ expect(decodeJwt('e30.invalid-json.signature').error).toBe('invalid-json');
23
+ });
24
+
25
+ it('formats JSON, claims and dates without inventing values', () => {
26
+ expect(formatJson({ ok: true })).toContain('"ok": true');
27
+ expect(formatClaimValue(['a', 2])).toBe('a, 2');
28
+ expect(formatClaimValue(null)).toBeNull();
29
+ expect(formatClaimDate(0)).toBeTypeOf('string');
30
+ expect(formatClaimDate('0')).toBeNull();
31
+ });
32
+ });
@@ -1,14 +1,6 @@
1
1
  ---
2
2
  import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
- import { keycode } from './index';
4
- import type { KnownLocale } from '../../types';
5
-
6
- interface Props {
7
- locale?: KnownLocale;
8
- }
9
-
10
- const { locale = 'es' } = Astro.props;
11
- const content = await keycode.i18n[locale]?.();
3
+ import { bibliography } from './bibliography';
12
4
  ---
13
5
 
14
- {content && <SharedBibliography links={content.bibliography} />}
6
+ <SharedBibliography links={bibliography} />
@@ -0,0 +1,7 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ { name: 'MDN Web Docs - KeyboardEvent', url: 'https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent' },
5
+ { name: 'UI Events Specification (W3C) - KeyboardEvent', url: 'https://www.w3.org/TR/uievents/#events-keyboardevents' },
6
+ { name: 'MDN - KeyboardEvent.code values', url: 'https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values' },
7
+ ];
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { KeycodeUI } from '../ui';
@@ -98,20 +99,7 @@ export const content: ToolLocaleContent<KeycodeUI> = {
98
99
  faqTitle: 'Häufig gestellte Fragen',
99
100
  faq: faqData,
100
101
  bibliographyTitle: 'Referenzen und Standards',
101
- bibliography: [
102
- {
103
- name: 'MDN Web Docs - KeyboardEvent',
104
- url: 'https://developer.mozilla.org/de/docs/Web/API/KeyboardEvent',
105
- },
106
- {
107
- name: 'UI Events Specification (W3C) - KeyboardEvent',
108
- url: 'https://www.w3.org/TR/uievents/#events-keyboardevents',
109
- },
110
- {
111
- name: 'MDN - KeyboardEvent.code values',
112
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values',
113
- },
114
- ],
102
+ bibliography,
115
103
  howTo: howToData,
116
104
  schemas: [faqSchema, howToSchema, appSchema],
117
105
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { KeycodeUI } from '../ui';
@@ -98,20 +99,7 @@ export const content: ToolLocaleContent<KeycodeUI> = {
98
99
  faqTitle: 'Frequently Asked Questions',
99
100
  faq: faqData,
100
101
  bibliographyTitle: 'References and Standards',
101
- bibliography: [
102
- {
103
- name: 'MDN Web Docs - KeyboardEvent',
104
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent',
105
- },
106
- {
107
- name: 'UI Events Specification (W3C) - KeyboardEvent',
108
- url: 'https://www.w3.org/TR/uievents/#events-keyboardevents',
109
- },
110
- {
111
- name: 'MDN - KeyboardEvent.code values',
112
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values',
113
- },
114
- ],
102
+ bibliography,
115
103
  howTo: howToData,
116
104
  schemas: [faqSchema, howToSchema, appSchema],
117
105
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { KeycodeUI } from '../ui';
@@ -98,20 +99,7 @@ export const content: ToolLocaleContent<KeycodeUI> = {
98
99
  faqTitle: 'Preguntas Frecuentes',
99
100
  faq: faqData,
100
101
  bibliographyTitle: 'Referencias y Estándares',
101
- bibliography: [
102
- {
103
- name: 'MDN Web Docs - KeyboardEvent',
104
- url: 'https://developer.mozilla.org/es/docs/Web/API/KeyboardEvent',
105
- },
106
- {
107
- name: 'UI Events Specification (W3C) - KeyboardEvent',
108
- url: 'https://www.w3.org/TR/uievents/#events-keyboardevents',
109
- },
110
- {
111
- name: 'MDN - KeyboardEvent.code values',
112
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values',
113
- },
114
- ],
102
+ bibliography,
115
103
  howTo: howToData,
116
104
  schemas: [faqSchema, howToSchema, appSchema],
117
105
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { KeycodeUI } from '../ui';
@@ -98,20 +99,7 @@ export const content: ToolLocaleContent<KeycodeUI> = {
98
99
  faqTitle: 'Questions fréquentes',
99
100
  faq: faqData,
100
101
  bibliographyTitle: 'Références et standards',
101
- bibliography: [
102
- {
103
- name: 'MDN Web Docs - KeyboardEvent',
104
- url: 'https://developer.mozilla.org/fr/docs/Web/API/KeyboardEvent',
105
- },
106
- {
107
- name: 'Spécification UI Events (W3C) - KeyboardEvent',
108
- url: 'https://www.w3.org/TR/uievents/#events-keyboardevents',
109
- },
110
- {
111
- name: 'MDN - Valeurs de KeyboardEvent.code',
112
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values',
113
- },
114
- ],
102
+ bibliography,
115
103
  howTo: howToData,
116
104
  schemas: [faqSchema, howToSchema, appSchema],
117
105
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { KeycodeUI } from '../ui';
@@ -98,20 +99,7 @@ export const content: ToolLocaleContent<KeycodeUI> = {
98
99
  faqTitle: 'Pertanyaan yang Sering Diajukan',
99
100
  faq: faqData,
100
101
  bibliographyTitle: 'Referensi dan Standar',
101
- bibliography: [
102
- {
103
- name: 'MDN Web Docs - KeyboardEvent',
104
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent',
105
- },
106
- {
107
- name: 'UI Events Specification (W3C) - KeyboardEvent',
108
- url: 'https://www.w3.org/TR/uievents/#events-keyboardevents',
109
- },
110
- {
111
- name: 'MDN - KeyboardEvent.code values',
112
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values',
113
- },
114
- ],
102
+ bibliography,
115
103
  howTo: howToData,
116
104
  schemas: [faqSchema, howToSchema, appSchema],
117
105
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { KeycodeUI } from '../ui';
@@ -98,20 +99,7 @@ export const content: ToolLocaleContent<KeycodeUI> = {
98
99
  faqTitle: 'Domande Frequenti',
99
100
  faq: faqData,
100
101
  bibliographyTitle: 'Riferimenti e Standard',
101
- bibliography: [
102
- {
103
- name: 'MDN Web Docs - KeyboardEvent',
104
- url: 'https://developer.mozilla.org/it/docs/Web/API/KeyboardEvent',
105
- },
106
- {
107
- name: 'UI Events Specification (W3C) - KeyboardEvent',
108
- url: 'https://www.w3.org/TR/uievents/#events-keyboardevents',
109
- },
110
- {
111
- name: 'MDN - KeyboardEvent.code values',
112
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values',
113
- },
114
- ],
102
+ bibliography,
115
103
  howTo: howToData,
116
104
  schemas: [faqSchema, howToSchema, appSchema],
117
105
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { KeycodeUI } from '../ui';
@@ -98,20 +99,7 @@ export const content: ToolLocaleContent<KeycodeUI> = {
98
99
  faqTitle: 'よくある質問',
99
100
  faq: faqData,
100
101
  bibliographyTitle: '参考資料と標準',
101
- bibliography: [
102
- {
103
- name: 'MDN Web Docs - KeyboardEvent',
104
- url: 'https://developer.mozilla.org/ja/docs/Web/API/KeyboardEvent',
105
- },
106
- {
107
- name: 'UI Events Specification (W3C) - KeyboardEvent',
108
- url: 'https://www.w3.org/TR/uievents/#events-keyboardevents',
109
- },
110
- {
111
- name: 'MDN - KeyboardEvent.code values',
112
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values',
113
- },
114
- ],
102
+ bibliography,
115
103
  howTo: howToData,
116
104
  schemas: [faqSchema, howToSchema, appSchema],
117
105
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { KeycodeUI } from '../ui';
@@ -98,20 +99,7 @@ export const content: ToolLocaleContent<KeycodeUI> = {
98
99
  faqTitle: '자주 묻는 질문',
99
100
  faq: faqData,
100
101
  bibliographyTitle: '참고 자료 및 표준',
101
- bibliography: [
102
- {
103
- name: 'MDN Web Docs - KeyboardEvent',
104
- url: 'https://developer.mozilla.org/ko/docs/Web/API/KeyboardEvent',
105
- },
106
- {
107
- name: 'UI Events Specification (W3C) - KeyboardEvent',
108
- url: 'https://www.w3.org/TR/uievents/#events-keyboardevents',
109
- },
110
- {
111
- name: 'MDN - KeyboardEvent.code values',
112
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values',
113
- },
114
- ],
102
+ bibliography,
115
103
  howTo: howToData,
116
104
  schemas: [faqSchema, howToSchema, appSchema],
117
105
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { KeycodeUI } from '../ui';
@@ -98,20 +99,7 @@ export const content: ToolLocaleContent<KeycodeUI> = {
98
99
  faqTitle: 'Veelgestelde Vragen',
99
100
  faq: faqData,
100
101
  bibliographyTitle: 'Referenties en Standaarden',
101
- bibliography: [
102
- {
103
- name: 'MDN Web Docs - KeyboardEvent',
104
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent',
105
- },
106
- {
107
- name: 'UI Events Specification (W3C) - KeyboardEvent',
108
- url: 'https://www.w3.org/TR/uievents/#events-keyboardevents',
109
- },
110
- {
111
- name: 'MDN - KeyboardEvent.code values',
112
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values',
113
- },
114
- ],
102
+ bibliography,
115
103
  howTo: howToData,
116
104
  schemas: [faqSchema, howToSchema, appSchema],
117
105
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { KeycodeUI } from '../ui';
@@ -98,20 +99,7 @@ export const content: ToolLocaleContent<KeycodeUI> = {
98
99
  faqTitle: 'Często Zadawane Pytania',
99
100
  faq: faqData,
100
101
  bibliographyTitle: 'Referencje i Standardy',
101
- bibliography: [
102
- {
103
- name: 'MDN Web Docs - KeyboardEvent',
104
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent',
105
- },
106
- {
107
- name: 'UI Events Specification (W3C) - KeyboardEvent',
108
- url: 'https://www.w3.org/TR/uievents/#events-keyboardevents',
109
- },
110
- {
111
- name: 'MDN - KeyboardEvent.code values',
112
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values',
113
- },
114
- ],
102
+ bibliography,
115
103
  howTo: howToData,
116
104
  schemas: [faqSchema, howToSchema, appSchema],
117
105
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { KeycodeUI } from '../ui';
@@ -98,20 +99,7 @@ export const content: ToolLocaleContent<KeycodeUI> = {
98
99
  faqTitle: 'Perguntas Frequentes',
99
100
  faq: faqData,
100
101
  bibliographyTitle: 'Referências e Padrões',
101
- bibliography: [
102
- {
103
- name: 'MDN Web Docs - KeyboardEvent',
104
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent',
105
- },
106
- {
107
- name: 'Especificação UI Events (W3C) - KeyboardEvent',
108
- url: 'https://www.w3.org/TR/uievents/#events-keyboardevents',
109
- },
110
- {
111
- name: 'MDN - Valores de KeyboardEvent.code',
112
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values',
113
- },
114
- ],
102
+ bibliography,
115
103
  howTo: howToData,
116
104
  schemas: [faqSchema, howToSchema, appSchema],
117
105
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { KeycodeUI } from '../ui';
@@ -98,20 +99,7 @@ export const content: ToolLocaleContent<KeycodeUI> = {
98
99
  faqTitle: 'Часто Задаваемые Вопросы',
99
100
  faq: faqData,
100
101
  bibliographyTitle: 'Ссылки и Стандарты',
101
- bibliography: [
102
- {
103
- name: 'MDN Web Docs - KeyboardEvent',
104
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent',
105
- },
106
- {
107
- name: 'Спецификация UI Events (W3C) - KeyboardEvent',
108
- url: 'https://www.w3.org/TR/uievents/#events-keyboardevents',
109
- },
110
- {
111
- name: 'MDN - Значения KeyboardEvent.code',
112
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values',
113
- },
114
- ],
102
+ bibliography,
115
103
  howTo: howToData,
116
104
  schemas: [faqSchema, howToSchema, appSchema],
117
105
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { KeycodeUI } from '../ui';
@@ -98,20 +99,7 @@ export const content: ToolLocaleContent<KeycodeUI> = {
98
99
  faqTitle: 'Vanliga Frågor',
99
100
  faq: faqData,
100
101
  bibliographyTitle: 'Referenser och Standarder',
101
- bibliography: [
102
- {
103
- name: 'MDN Web Docs - KeyboardEvent',
104
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent',
105
- },
106
- {
107
- name: 'UI Events Specification (W3C) - KeyboardEvent',
108
- url: 'https://www.w3.org/TR/uievents/#events-keyboardevents',
109
- },
110
- {
111
- name: 'MDN - KeyboardEvent.code values',
112
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values',
113
- },
114
- ],
102
+ bibliography,
115
103
  howTo: howToData,
116
104
  schemas: [faqSchema, howToSchema, appSchema],
117
105
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { KeycodeUI } from '../ui';
@@ -98,20 +99,7 @@ export const content: ToolLocaleContent<KeycodeUI> = {
98
99
  faqTitle: 'Sık Sorulan Sorular',
99
100
  faq: faqData,
100
101
  bibliographyTitle: 'Referanslar ve Standartlar',
101
- bibliography: [
102
- {
103
- name: 'MDN Web Docs - KeyboardEvent',
104
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent',
105
- },
106
- {
107
- name: 'UI Events Specification (W3C) - KeyboardEvent',
108
- url: 'https://www.w3.org/TR/uievents/#events-keyboardevents',
109
- },
110
- {
111
- name: 'MDN - KeyboardEvent.code values',
112
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values',
113
- },
114
- ],
102
+ bibliography,
115
103
  howTo: howToData,
116
104
  schemas: [faqSchema, howToSchema, appSchema],
117
105
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { KeycodeUI } from '../ui';
@@ -98,20 +99,7 @@ export const content: ToolLocaleContent<KeycodeUI> = {
98
99
  faqTitle: '常见问题',
99
100
  faq: faqData,
100
101
  bibliographyTitle: '参考资料和标准',
101
- bibliography: [
102
- {
103
- name: 'MDN Web Docs - KeyboardEvent',
104
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent',
105
- },
106
- {
107
- name: 'UI Events Specification (W3C) - KeyboardEvent',
108
- url: 'https://www.w3.org/TR/uievents/#events-keyboardevents',
109
- },
110
- {
111
- name: 'MDN - KeyboardEvent.code values',
112
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values',
113
- },
114
- ],
102
+ bibliography,
115
103
  howTo: howToData,
116
104
  schemas: [faqSchema, howToSchema, appSchema],
117
105
  seo: [
@@ -1,14 +1,6 @@
1
1
  ---
2
2
  import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
- import { llmCostCalculator } from './index';
4
- import type { KnownLocale } from '../../types';
5
-
6
- interface Props {
7
- locale?: KnownLocale;
8
- }
9
-
10
- const { locale = 'es' } = Astro.props;
11
- const content = await llmCostCalculator.i18n[locale]?.();
3
+ import { bibliography } from './bibliography';
12
4
  ---
13
5
 
14
- {content && <SharedBibliography links={content.bibliography} />}
6
+ <SharedBibliography links={bibliography} />
@@ -0,0 +1,8 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ { name: 'OpenAI API Pricing', url: 'https://openai.com/pricing' },
5
+ { name: 'Anthropic API Pricing', url: 'https://www.anthropic.com/pricing' },
6
+ { name: 'Google AI Studio Pricing', url: 'https://ai.google.dev/pricing' },
7
+ { name: 'OpenAI Tokenizer', url: 'https://platform.openai.com/tokenizer' },
8
+ ];