@jjlmoya/utils-developer 1.28.0 → 1.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (455) hide show
  1. package/package.json +1 -1
  2. package/src/entries.ts +4 -1
  3. package/src/tests/i18n_coverage.test.ts +5 -2
  4. package/src/tests/locale_completeness.test.ts +1 -1
  5. package/src/tests/qa-test-helpers.ts +32 -0
  6. package/src/tests/qa_bibliography_links.test.ts +43 -0
  7. package/src/tests/qa_claim_evidence.test.ts +69 -0
  8. package/src/tests/qa_logic_reference_coverage.test.ts +46 -0
  9. package/src/tests/qa_runtime_i18n.test.ts +115 -0
  10. package/src/tests/tool_validation.test.ts +1 -1
  11. package/src/tool/aspectRatio/bibliography.astro +2 -10
  12. package/src/tool/aspectRatio/bibliography.ts +7 -0
  13. package/src/tool/aspectRatio/i18n/de.ts +2 -14
  14. package/src/tool/aspectRatio/i18n/en.ts +2 -14
  15. package/src/tool/aspectRatio/i18n/es.ts +2 -14
  16. package/src/tool/aspectRatio/i18n/fr.ts +2 -14
  17. package/src/tool/aspectRatio/i18n/id.ts +2 -14
  18. package/src/tool/aspectRatio/i18n/it.ts +2 -14
  19. package/src/tool/aspectRatio/i18n/ja.ts +2 -14
  20. package/src/tool/aspectRatio/i18n/ko.ts +2 -14
  21. package/src/tool/aspectRatio/i18n/nl.ts +2 -14
  22. package/src/tool/aspectRatio/i18n/pl.ts +2 -14
  23. package/src/tool/aspectRatio/i18n/pt.ts +2 -14
  24. package/src/tool/aspectRatio/i18n/ru.ts +2 -14
  25. package/src/tool/aspectRatio/i18n/sv.ts +2 -14
  26. package/src/tool/aspectRatio/i18n/tr.ts +2 -14
  27. package/src/tool/aspectRatio/i18n/zh.ts +2 -14
  28. package/src/tool/calculadoraTiempoDatos/bibliography.astro +2 -10
  29. package/src/tool/calculadoraTiempoDatos/bibliography.ts +8 -0
  30. package/src/tool/calculadoraTiempoDatos/component.astro +6 -2
  31. package/src/tool/calculadoraTiempoDatos/i18n/de.ts +2 -6
  32. package/src/tool/calculadoraTiempoDatos/i18n/en.ts +2 -6
  33. package/src/tool/calculadoraTiempoDatos/i18n/es.ts +2 -6
  34. package/src/tool/calculadoraTiempoDatos/i18n/fr.ts +2 -6
  35. package/src/tool/calculadoraTiempoDatos/i18n/id.ts +2 -6
  36. package/src/tool/calculadoraTiempoDatos/i18n/it.ts +2 -6
  37. package/src/tool/calculadoraTiempoDatos/i18n/ja.ts +2 -6
  38. package/src/tool/calculadoraTiempoDatos/i18n/ko.ts +2 -6
  39. package/src/tool/calculadoraTiempoDatos/i18n/nl.ts +2 -6
  40. package/src/tool/calculadoraTiempoDatos/i18n/pl.ts +2 -6
  41. package/src/tool/calculadoraTiempoDatos/i18n/pt.ts +2 -6
  42. package/src/tool/calculadoraTiempoDatos/i18n/ru.ts +2 -6
  43. package/src/tool/calculadoraTiempoDatos/i18n/sv.ts +2 -6
  44. package/src/tool/calculadoraTiempoDatos/i18n/tr.ts +2 -6
  45. package/src/tool/calculadoraTiempoDatos/i18n/zh.ts +2 -6
  46. package/src/tool/colorConverter/bibliography.astro +2 -10
  47. package/src/tool/colorConverter/bibliography.ts +7 -0
  48. package/src/tool/colorConverter/i18n/de.ts +2 -5
  49. package/src/tool/colorConverter/i18n/en.ts +5 -8
  50. package/src/tool/colorConverter/i18n/es.ts +4 -7
  51. package/src/tool/colorConverter/i18n/fr.ts +2 -5
  52. package/src/tool/colorConverter/i18n/id.ts +2 -5
  53. package/src/tool/colorConverter/i18n/it.ts +2 -5
  54. package/src/tool/colorConverter/i18n/ja.ts +2 -5
  55. package/src/tool/colorConverter/i18n/ko.ts +2 -5
  56. package/src/tool/colorConverter/i18n/nl.ts +2 -5
  57. package/src/tool/colorConverter/i18n/pl.ts +2 -5
  58. package/src/tool/colorConverter/i18n/pt.ts +2 -5
  59. package/src/tool/colorConverter/i18n/ru.ts +2 -5
  60. package/src/tool/colorConverter/i18n/sv.ts +2 -5
  61. package/src/tool/colorConverter/i18n/tr.ts +2 -5
  62. package/src/tool/colorConverter/i18n/zh.ts +2 -5
  63. package/src/tool/conversorExcelCsvHtml/bibliography.astro +2 -10
  64. package/src/tool/conversorExcelCsvHtml/bibliography.ts +8 -0
  65. package/src/tool/conversorExcelCsvHtml/component.astro +4 -3
  66. package/src/tool/conversorExcelCsvHtml/i18n/de.ts +2 -6
  67. package/src/tool/conversorExcelCsvHtml/i18n/en.ts +2 -6
  68. package/src/tool/conversorExcelCsvHtml/i18n/es.ts +2 -6
  69. package/src/tool/conversorExcelCsvHtml/i18n/fr.ts +2 -6
  70. package/src/tool/conversorExcelCsvHtml/i18n/id.ts +2 -6
  71. package/src/tool/conversorExcelCsvHtml/i18n/it.ts +2 -6
  72. package/src/tool/conversorExcelCsvHtml/i18n/ja.ts +2 -6
  73. package/src/tool/conversorExcelCsvHtml/i18n/ko.ts +2 -6
  74. package/src/tool/conversorExcelCsvHtml/i18n/nl.ts +2 -6
  75. package/src/tool/conversorExcelCsvHtml/i18n/pl.ts +2 -6
  76. package/src/tool/conversorExcelCsvHtml/i18n/pt.ts +2 -6
  77. package/src/tool/conversorExcelCsvHtml/i18n/ru.ts +2 -6
  78. package/src/tool/conversorExcelCsvHtml/i18n/sv.ts +2 -6
  79. package/src/tool/conversorExcelCsvHtml/i18n/tr.ts +2 -6
  80. package/src/tool/conversorExcelCsvHtml/i18n/zh.ts +2 -6
  81. package/src/tool/cronGenerator/bibliography.astro +2 -10
  82. package/src/tool/cronGenerator/bibliography.ts +6 -0
  83. package/src/tool/cronGenerator/component.astro +5 -1
  84. package/src/tool/cronGenerator/i18n/de.ts +2 -10
  85. package/src/tool/cronGenerator/i18n/en.ts +2 -10
  86. package/src/tool/cronGenerator/i18n/es.ts +2 -10
  87. package/src/tool/cronGenerator/i18n/fr.ts +2 -10
  88. package/src/tool/cronGenerator/i18n/id.ts +2 -10
  89. package/src/tool/cronGenerator/i18n/it.ts +2 -10
  90. package/src/tool/cronGenerator/i18n/ja.ts +2 -10
  91. package/src/tool/cronGenerator/i18n/ko.ts +2 -10
  92. package/src/tool/cronGenerator/i18n/nl.ts +2 -10
  93. package/src/tool/cronGenerator/i18n/pl.ts +2 -10
  94. package/src/tool/cronGenerator/i18n/pt.ts +2 -10
  95. package/src/tool/cronGenerator/i18n/ru.ts +2 -10
  96. package/src/tool/cronGenerator/i18n/sv.ts +2 -10
  97. package/src/tool/cronGenerator/i18n/tr.ts +2 -10
  98. package/src/tool/cronGenerator/i18n/zh.ts +2 -10
  99. package/src/tool/cssBoxShadowGenerator/component.astro +2 -1
  100. package/src/tool/cssBoxShadowGenerator/logic.test.ts +28 -0
  101. package/src/tool/cssSpecificityCalculator/bibliography.astro +2 -10
  102. package/src/tool/cssSpecificityCalculator/bibliography.ts +6 -0
  103. package/src/tool/cssSpecificityCalculator/i18n/de.ts +2 -10
  104. package/src/tool/cssSpecificityCalculator/i18n/en.ts +2 -10
  105. package/src/tool/cssSpecificityCalculator/i18n/es.ts +2 -10
  106. package/src/tool/cssSpecificityCalculator/i18n/fr.ts +2 -10
  107. package/src/tool/cssSpecificityCalculator/i18n/id.ts +2 -10
  108. package/src/tool/cssSpecificityCalculator/i18n/it.ts +2 -10
  109. package/src/tool/cssSpecificityCalculator/i18n/ja.ts +2 -10
  110. package/src/tool/cssSpecificityCalculator/i18n/ko.ts +2 -10
  111. package/src/tool/cssSpecificityCalculator/i18n/nl.ts +2 -10
  112. package/src/tool/cssSpecificityCalculator/i18n/pl.ts +2 -10
  113. package/src/tool/cssSpecificityCalculator/i18n/pt.ts +2 -10
  114. package/src/tool/cssSpecificityCalculator/i18n/ru.ts +2 -10
  115. package/src/tool/cssSpecificityCalculator/i18n/sv.ts +2 -10
  116. package/src/tool/cssSpecificityCalculator/i18n/tr.ts +2 -10
  117. package/src/tool/cssSpecificityCalculator/i18n/zh.ts +2 -10
  118. package/src/tool/cssToInlineConverter/bibliography.astro +2 -10
  119. package/src/tool/cssToInlineConverter/bibliography.ts +7 -0
  120. package/src/tool/cssToInlineConverter/i18n/de.ts +2 -14
  121. package/src/tool/cssToInlineConverter/i18n/en.ts +4 -16
  122. package/src/tool/cssToInlineConverter/i18n/es.ts +5 -17
  123. package/src/tool/cssToInlineConverter/i18n/fr.ts +2 -14
  124. package/src/tool/cssToInlineConverter/i18n/id.ts +2 -14
  125. package/src/tool/cssToInlineConverter/i18n/it.ts +2 -14
  126. package/src/tool/cssToInlineConverter/i18n/ja.ts +2 -14
  127. package/src/tool/cssToInlineConverter/i18n/ko.ts +2 -14
  128. package/src/tool/cssToInlineConverter/i18n/nl.ts +2 -14
  129. package/src/tool/cssToInlineConverter/i18n/pl.ts +2 -14
  130. package/src/tool/cssToInlineConverter/i18n/pt.ts +2 -14
  131. package/src/tool/cssToInlineConverter/i18n/ru.ts +2 -14
  132. package/src/tool/cssToInlineConverter/i18n/sv.ts +2 -14
  133. package/src/tool/cssToInlineConverter/i18n/tr.ts +2 -14
  134. package/src/tool/cssToInlineConverter/i18n/zh.ts +2 -14
  135. package/src/tool/duplicateCssRemover/bibliography.astro +2 -10
  136. package/src/tool/duplicateCssRemover/bibliography.ts +7 -0
  137. package/src/tool/duplicateCssRemover/i18n/de.ts +2 -14
  138. package/src/tool/duplicateCssRemover/i18n/en.ts +4 -16
  139. package/src/tool/duplicateCssRemover/i18n/es.ts +4 -16
  140. package/src/tool/duplicateCssRemover/i18n/fr.ts +2 -14
  141. package/src/tool/duplicateCssRemover/i18n/id.ts +2 -14
  142. package/src/tool/duplicateCssRemover/i18n/it.ts +2 -14
  143. package/src/tool/duplicateCssRemover/i18n/ja.ts +2 -14
  144. package/src/tool/duplicateCssRemover/i18n/ko.ts +2 -14
  145. package/src/tool/duplicateCssRemover/i18n/nl.ts +2 -14
  146. package/src/tool/duplicateCssRemover/i18n/pl.ts +2 -14
  147. package/src/tool/duplicateCssRemover/i18n/pt.ts +2 -14
  148. package/src/tool/duplicateCssRemover/i18n/ru.ts +2 -14
  149. package/src/tool/duplicateCssRemover/i18n/sv.ts +2 -14
  150. package/src/tool/duplicateCssRemover/i18n/tr.ts +2 -14
  151. package/src/tool/duplicateCssRemover/i18n/zh.ts +2 -14
  152. package/src/tool/generadorSecurityTxt/bibliography.astro +2 -10
  153. package/src/tool/generadorSecurityTxt/bibliography.ts +7 -0
  154. package/src/tool/generadorSecurityTxt/component.astro +1 -2
  155. package/src/tool/generadorSecurityTxt/i18n/de.ts +2 -5
  156. package/src/tool/generadorSecurityTxt/i18n/en.ts +2 -5
  157. package/src/tool/generadorSecurityTxt/i18n/es.ts +2 -5
  158. package/src/tool/generadorSecurityTxt/i18n/fr.ts +2 -5
  159. package/src/tool/generadorSecurityTxt/i18n/id.ts +2 -5
  160. package/src/tool/generadorSecurityTxt/i18n/it.ts +2 -5
  161. package/src/tool/generadorSecurityTxt/i18n/ja.ts +2 -5
  162. package/src/tool/generadorSecurityTxt/i18n/ko.ts +2 -5
  163. package/src/tool/generadorSecurityTxt/i18n/nl.ts +2 -5
  164. package/src/tool/generadorSecurityTxt/i18n/pl.ts +2 -5
  165. package/src/tool/generadorSecurityTxt/i18n/pt.ts +2 -5
  166. package/src/tool/generadorSecurityTxt/i18n/ru.ts +2 -5
  167. package/src/tool/generadorSecurityTxt/i18n/sv.ts +2 -5
  168. package/src/tool/generadorSecurityTxt/i18n/tr.ts +2 -5
  169. package/src/tool/generadorSecurityTxt/i18n/zh.ts +2 -5
  170. package/src/tool/hashGenerator/bibliography.astro +2 -10
  171. package/src/tool/hashGenerator/bibliography.ts +7 -0
  172. package/src/tool/hashGenerator/i18n/de.ts +2 -5
  173. package/src/tool/hashGenerator/i18n/en.ts +2 -5
  174. package/src/tool/hashGenerator/i18n/es.ts +2 -5
  175. package/src/tool/hashGenerator/i18n/fr.ts +2 -5
  176. package/src/tool/hashGenerator/i18n/id.ts +2 -5
  177. package/src/tool/hashGenerator/i18n/it.ts +2 -5
  178. package/src/tool/hashGenerator/i18n/ja.ts +2 -5
  179. package/src/tool/hashGenerator/i18n/ko.ts +2 -5
  180. package/src/tool/hashGenerator/i18n/nl.ts +2 -5
  181. package/src/tool/hashGenerator/i18n/pl.ts +2 -5
  182. package/src/tool/hashGenerator/i18n/pt.ts +2 -5
  183. package/src/tool/hashGenerator/i18n/ru.ts +2 -5
  184. package/src/tool/hashGenerator/i18n/sv.ts +2 -5
  185. package/src/tool/hashGenerator/i18n/tr.ts +2 -5
  186. package/src/tool/hashGenerator/i18n/zh.ts +2 -5
  187. package/src/tool/inspectorCertificadosSsl/bibliography.astro +2 -10
  188. package/src/tool/inspectorCertificadosSsl/bibliography.ts +8 -0
  189. package/src/tool/inspectorCertificadosSsl/component.astro +4 -3
  190. package/src/tool/inspectorCertificadosSsl/i18n/de.ts +2 -6
  191. package/src/tool/inspectorCertificadosSsl/i18n/en.ts +2 -6
  192. package/src/tool/inspectorCertificadosSsl/i18n/es.ts +2 -6
  193. package/src/tool/inspectorCertificadosSsl/i18n/fr.ts +2 -6
  194. package/src/tool/inspectorCertificadosSsl/i18n/id.ts +2 -6
  195. package/src/tool/inspectorCertificadosSsl/i18n/it.ts +2 -6
  196. package/src/tool/inspectorCertificadosSsl/i18n/ja.ts +2 -6
  197. package/src/tool/inspectorCertificadosSsl/i18n/ko.ts +2 -6
  198. package/src/tool/inspectorCertificadosSsl/i18n/nl.ts +2 -6
  199. package/src/tool/inspectorCertificadosSsl/i18n/pl.ts +2 -6
  200. package/src/tool/inspectorCertificadosSsl/i18n/pt.ts +2 -6
  201. package/src/tool/inspectorCertificadosSsl/i18n/ru.ts +2 -6
  202. package/src/tool/inspectorCertificadosSsl/i18n/sv.ts +2 -6
  203. package/src/tool/inspectorCertificadosSsl/i18n/tr.ts +2 -6
  204. package/src/tool/inspectorCertificadosSsl/i18n/zh.ts +2 -6
  205. package/src/tool/jsonFormatter/bibliography.astro +2 -10
  206. package/src/tool/jsonFormatter/bibliography.ts +8 -0
  207. package/src/tool/jsonFormatter/i18n/de.ts +2 -18
  208. package/src/tool/jsonFormatter/i18n/en.ts +2 -18
  209. package/src/tool/jsonFormatter/i18n/es.ts +2 -18
  210. package/src/tool/jsonFormatter/i18n/fr.ts +2 -18
  211. package/src/tool/jsonFormatter/i18n/id.ts +2 -18
  212. package/src/tool/jsonFormatter/i18n/it.ts +2 -18
  213. package/src/tool/jsonFormatter/i18n/ja.ts +2 -18
  214. package/src/tool/jsonFormatter/i18n/ko.ts +2 -18
  215. package/src/tool/jsonFormatter/i18n/nl.ts +2 -18
  216. package/src/tool/jsonFormatter/i18n/pl.ts +2 -18
  217. package/src/tool/jsonFormatter/i18n/pt.ts +2 -18
  218. package/src/tool/jsonFormatter/i18n/ru.ts +2 -18
  219. package/src/tool/jsonFormatter/i18n/sv.ts +2 -18
  220. package/src/tool/jsonFormatter/i18n/tr.ts +2 -18
  221. package/src/tool/jsonFormatter/i18n/zh.ts +2 -18
  222. package/src/tool/jwtDecoder/component.astro +2 -1
  223. package/src/tool/jwtDecoder/logic.test.ts +32 -0
  224. package/src/tool/keycode/bibliography.astro +2 -10
  225. package/src/tool/keycode/bibliography.ts +7 -0
  226. package/src/tool/keycode/i18n/de.ts +2 -14
  227. package/src/tool/keycode/i18n/en.ts +2 -14
  228. package/src/tool/keycode/i18n/es.ts +2 -14
  229. package/src/tool/keycode/i18n/fr.ts +2 -14
  230. package/src/tool/keycode/i18n/id.ts +2 -14
  231. package/src/tool/keycode/i18n/it.ts +2 -14
  232. package/src/tool/keycode/i18n/ja.ts +2 -14
  233. package/src/tool/keycode/i18n/ko.ts +2 -14
  234. package/src/tool/keycode/i18n/nl.ts +2 -14
  235. package/src/tool/keycode/i18n/pl.ts +2 -14
  236. package/src/tool/keycode/i18n/pt.ts +2 -14
  237. package/src/tool/keycode/i18n/ru.ts +2 -14
  238. package/src/tool/keycode/i18n/sv.ts +2 -14
  239. package/src/tool/keycode/i18n/tr.ts +2 -14
  240. package/src/tool/keycode/i18n/zh.ts +2 -14
  241. package/src/tool/llmCostCalculator/bibliography.astro +2 -10
  242. package/src/tool/llmCostCalculator/bibliography.ts +8 -0
  243. package/src/tool/llmCostCalculator/i18n/de.ts +2 -18
  244. package/src/tool/llmCostCalculator/i18n/en.ts +2 -18
  245. package/src/tool/llmCostCalculator/i18n/es.ts +2 -18
  246. package/src/tool/llmCostCalculator/i18n/fr.ts +2 -18
  247. package/src/tool/llmCostCalculator/i18n/id.ts +2 -18
  248. package/src/tool/llmCostCalculator/i18n/it.ts +2 -18
  249. package/src/tool/llmCostCalculator/i18n/ja.ts +2 -18
  250. package/src/tool/llmCostCalculator/i18n/ko.ts +2 -18
  251. package/src/tool/llmCostCalculator/i18n/nl.ts +2 -18
  252. package/src/tool/llmCostCalculator/i18n/pl.ts +2 -18
  253. package/src/tool/llmCostCalculator/i18n/pt.ts +2 -18
  254. package/src/tool/llmCostCalculator/i18n/ru.ts +2 -18
  255. package/src/tool/llmCostCalculator/i18n/sv.ts +2 -18
  256. package/src/tool/llmCostCalculator/i18n/tr.ts +2 -18
  257. package/src/tool/llmCostCalculator/i18n/zh.ts +2 -18
  258. package/src/tool/mobileMockupGenerator/bibliography.astro +2 -10
  259. package/src/tool/mobileMockupGenerator/bibliography.ts +6 -0
  260. package/src/tool/mobileMockupGenerator/i18n/de.ts +2 -4
  261. package/src/tool/mobileMockupGenerator/i18n/en.ts +2 -4
  262. package/src/tool/mobileMockupGenerator/i18n/es.ts +2 -4
  263. package/src/tool/mobileMockupGenerator/i18n/fr.ts +2 -4
  264. package/src/tool/mobileMockupGenerator/i18n/id.ts +2 -4
  265. package/src/tool/mobileMockupGenerator/i18n/it.ts +2 -4
  266. package/src/tool/mobileMockupGenerator/i18n/ja.ts +2 -4
  267. package/src/tool/mobileMockupGenerator/i18n/ko.ts +2 -4
  268. package/src/tool/mobileMockupGenerator/i18n/nl.ts +2 -4
  269. package/src/tool/mobileMockupGenerator/i18n/pl.ts +2 -1
  270. package/src/tool/mobileMockupGenerator/i18n/pt.ts +2 -4
  271. package/src/tool/mobileMockupGenerator/i18n/ru.ts +2 -4
  272. package/src/tool/mobileMockupGenerator/i18n/sv.ts +2 -4
  273. package/src/tool/mobileMockupGenerator/i18n/tr.ts +2 -4
  274. package/src/tool/mobileMockupGenerator/i18n/zh.ts +2 -4
  275. package/src/tool/musicalTypography/bibliography.astro +2 -10
  276. package/src/tool/musicalTypography/bibliography.ts +7 -0
  277. package/src/tool/musicalTypography/i18n/de.ts +2 -14
  278. package/src/tool/musicalTypography/i18n/en.ts +3 -15
  279. package/src/tool/musicalTypography/i18n/es.ts +3 -15
  280. package/src/tool/musicalTypography/i18n/fr.ts +2 -14
  281. package/src/tool/musicalTypography/i18n/id.ts +2 -14
  282. package/src/tool/musicalTypography/i18n/it.ts +2 -14
  283. package/src/tool/musicalTypography/i18n/ja.ts +2 -14
  284. package/src/tool/musicalTypography/i18n/ko.ts +2 -14
  285. package/src/tool/musicalTypography/i18n/nl.ts +2 -14
  286. package/src/tool/musicalTypography/i18n/pl.ts +2 -14
  287. package/src/tool/musicalTypography/i18n/pt.ts +2 -5
  288. package/src/tool/musicalTypography/i18n/ru.ts +2 -5
  289. package/src/tool/musicalTypography/i18n/sv.ts +2 -1
  290. package/src/tool/musicalTypography/i18n/tr.ts +2 -1
  291. package/src/tool/musicalTypography/i18n/zh.ts +2 -1
  292. package/src/tool/placeholderGenerator/bibliography.astro +2 -10
  293. package/src/tool/placeholderGenerator/bibliography.ts +7 -0
  294. package/src/tool/placeholderGenerator/i18n/de.ts +2 -14
  295. package/src/tool/placeholderGenerator/i18n/en.ts +4 -16
  296. package/src/tool/placeholderGenerator/i18n/es.ts +4 -16
  297. package/src/tool/placeholderGenerator/i18n/fr.ts +2 -14
  298. package/src/tool/placeholderGenerator/i18n/id.ts +2 -14
  299. package/src/tool/placeholderGenerator/i18n/it.ts +2 -14
  300. package/src/tool/placeholderGenerator/i18n/ja.ts +2 -14
  301. package/src/tool/placeholderGenerator/i18n/ko.ts +2 -14
  302. package/src/tool/placeholderGenerator/i18n/nl.ts +2 -14
  303. package/src/tool/placeholderGenerator/i18n/pl.ts +2 -14
  304. package/src/tool/placeholderGenerator/i18n/pt.ts +2 -14
  305. package/src/tool/placeholderGenerator/i18n/ru.ts +2 -14
  306. package/src/tool/placeholderGenerator/i18n/sv.ts +2 -14
  307. package/src/tool/placeholderGenerator/i18n/tr.ts +2 -14
  308. package/src/tool/placeholderGenerator/i18n/zh.ts +2 -14
  309. package/src/tool/promoteThisWebsite/asset-bindings.ts +73 -0
  310. package/src/tool/promoteThisWebsite/bibliography.astro +14 -0
  311. package/src/tool/promoteThisWebsite/bibliography.ts +14 -0
  312. package/src/tool/promoteThisWebsite/component.astro +136 -0
  313. package/src/tool/promoteThisWebsite/control-views.ts +83 -0
  314. package/src/tool/promoteThisWebsite/controller.ts +232 -0
  315. package/src/tool/promoteThisWebsite/dom-views.ts +322 -0
  316. package/src/tool/promoteThisWebsite/entry.ts +15 -0
  317. package/src/tool/promoteThisWebsite/evaluator.ts +9 -0
  318. package/src/tool/promoteThisWebsite/i18n/en.ts +111 -0
  319. package/src/tool/promoteThisWebsite/index.ts +11 -0
  320. package/src/tool/promoteThisWebsite/jjlmoya-overlay.png +0 -0
  321. package/src/tool/promoteThisWebsite/logic.test.ts +29 -0
  322. package/src/tool/promoteThisWebsite/logic.ts +108 -0
  323. package/src/tool/promoteThisWebsite/pixel-cat.png +0 -0
  324. package/src/tool/promoteThisWebsite/promote-this-website.css +322 -0
  325. package/src/tool/promoteThisWebsite/seo.astro +15 -0
  326. package/src/tool/promoteThisWebsite/storage.ts +28 -0
  327. package/src/tool/promoteThisWebsite/title-view.ts +206 -0
  328. package/src/tool/promoteThisWebsite/ui.ts +59 -0
  329. package/src/tool/promptLibrary/bibliography.astro +2 -10
  330. package/src/tool/promptLibrary/bibliography.ts +6 -0
  331. package/src/tool/promptLibrary/i18n/de.ts +2 -4
  332. package/src/tool/promptLibrary/i18n/en.ts +2 -4
  333. package/src/tool/promptLibrary/i18n/es.ts +2 -4
  334. package/src/tool/promptLibrary/i18n/fr.ts +2 -4
  335. package/src/tool/promptLibrary/i18n/id.ts +2 -4
  336. package/src/tool/promptLibrary/i18n/it.ts +2 -4
  337. package/src/tool/promptLibrary/i18n/ja.ts +2 -4
  338. package/src/tool/promptLibrary/i18n/ko.ts +2 -4
  339. package/src/tool/promptLibrary/i18n/nl.ts +2 -4
  340. package/src/tool/promptLibrary/i18n/pl.ts +2 -1
  341. package/src/tool/promptLibrary/i18n/pt.ts +2 -4
  342. package/src/tool/promptLibrary/i18n/ru.ts +2 -4
  343. package/src/tool/promptLibrary/i18n/sv.ts +2 -4
  344. package/src/tool/promptLibrary/i18n/tr.ts +2 -4
  345. package/src/tool/promptLibrary/i18n/zh.ts +2 -4
  346. package/src/tool/readabilityCalculator/bibliography.astro +2 -10
  347. package/src/tool/readabilityCalculator/bibliography.ts +7 -0
  348. package/src/tool/readabilityCalculator/i18n/de.ts +2 -5
  349. package/src/tool/readabilityCalculator/i18n/en.ts +2 -5
  350. package/src/tool/readabilityCalculator/i18n/es.ts +2 -5
  351. package/src/tool/readabilityCalculator/i18n/fr.ts +2 -5
  352. package/src/tool/readabilityCalculator/i18n/id.ts +2 -5
  353. package/src/tool/readabilityCalculator/i18n/it.ts +2 -5
  354. package/src/tool/readabilityCalculator/i18n/ja.ts +2 -5
  355. package/src/tool/readabilityCalculator/i18n/ko.ts +2 -5
  356. package/src/tool/readabilityCalculator/i18n/nl.ts +2 -5
  357. package/src/tool/readabilityCalculator/i18n/pl.ts +2 -1
  358. package/src/tool/readabilityCalculator/i18n/pt.ts +2 -5
  359. package/src/tool/readabilityCalculator/i18n/ru.ts +2 -5
  360. package/src/tool/readabilityCalculator/i18n/sv.ts +2 -5
  361. package/src/tool/readabilityCalculator/i18n/tr.ts +2 -5
  362. package/src/tool/readabilityCalculator/i18n/zh.ts +2 -5
  363. package/src/tool/serpPixelSimulator/controller.ts +1 -0
  364. package/src/tool/serpPixelSimulator/i18n/en.ts +2 -2
  365. package/src/tool/serpPixelSimulator/i18n/es.ts +2 -2
  366. package/src/tool/serpPixelSimulator/logic.test.ts +25 -0
  367. package/src/tool/svgSanitizer/bibliography.astro +2 -10
  368. package/src/tool/svgSanitizer/bibliography.ts +7 -0
  369. package/src/tool/svgSanitizer/i18n/de.ts +2 -5
  370. package/src/tool/svgSanitizer/i18n/en.ts +2 -5
  371. package/src/tool/svgSanitizer/i18n/es.ts +2 -5
  372. package/src/tool/svgSanitizer/i18n/fr.ts +2 -5
  373. package/src/tool/svgSanitizer/i18n/id.ts +2 -5
  374. package/src/tool/svgSanitizer/i18n/it.ts +2 -5
  375. package/src/tool/svgSanitizer/i18n/ja.ts +2 -5
  376. package/src/tool/svgSanitizer/i18n/ko.ts +2 -5
  377. package/src/tool/svgSanitizer/i18n/nl.ts +2 -5
  378. package/src/tool/svgSanitizer/i18n/pl.ts +2 -5
  379. package/src/tool/svgSanitizer/i18n/pt.ts +2 -1
  380. package/src/tool/svgSanitizer/i18n/ru.ts +2 -5
  381. package/src/tool/svgSanitizer/i18n/sv.ts +2 -5
  382. package/src/tool/svgSanitizer/i18n/tr.ts +2 -5
  383. package/src/tool/svgSanitizer/i18n/zh.ts +2 -5
  384. package/src/tool/svgToCss/bibliography.astro +2 -10
  385. package/src/tool/svgToCss/bibliography.ts +8 -0
  386. package/src/tool/svgToCss/i18n/de.ts +2 -18
  387. package/src/tool/svgToCss/i18n/en.ts +2 -18
  388. package/src/tool/svgToCss/i18n/es.ts +2 -18
  389. package/src/tool/svgToCss/i18n/fr.ts +2 -18
  390. package/src/tool/svgToCss/i18n/id.ts +2 -18
  391. package/src/tool/svgToCss/i18n/it.ts +2 -18
  392. package/src/tool/svgToCss/i18n/ja.ts +2 -18
  393. package/src/tool/svgToCss/i18n/ko.ts +2 -18
  394. package/src/tool/svgToCss/i18n/nl.ts +2 -18
  395. package/src/tool/svgToCss/i18n/pl.ts +2 -18
  396. package/src/tool/svgToCss/i18n/pt.ts +2 -18
  397. package/src/tool/svgToCss/i18n/ru.ts +2 -18
  398. package/src/tool/svgToCss/i18n/sv.ts +2 -18
  399. package/src/tool/svgToCss/i18n/tr.ts +2 -18
  400. package/src/tool/svgToCss/i18n/zh.ts +2 -18
  401. package/src/tool/urlCleaner/bibliography.astro +2 -10
  402. package/src/tool/urlCleaner/bibliography.ts +7 -0
  403. package/src/tool/urlCleaner/i18n/de.ts +2 -5
  404. package/src/tool/urlCleaner/i18n/en.ts +2 -5
  405. package/src/tool/urlCleaner/i18n/es.ts +2 -5
  406. package/src/tool/urlCleaner/i18n/fr.ts +2 -5
  407. package/src/tool/urlCleaner/i18n/id.ts +2 -5
  408. package/src/tool/urlCleaner/i18n/it.ts +2 -5
  409. package/src/tool/urlCleaner/i18n/ja.ts +2 -5
  410. package/src/tool/urlCleaner/i18n/ko.ts +2 -5
  411. package/src/tool/urlCleaner/i18n/nl.ts +2 -5
  412. package/src/tool/urlCleaner/i18n/pl.ts +2 -1
  413. package/src/tool/urlCleaner/i18n/pt.ts +2 -5
  414. package/src/tool/urlCleaner/i18n/ru.ts +2 -5
  415. package/src/tool/urlCleaner/i18n/sv.ts +2 -5
  416. package/src/tool/urlCleaner/i18n/tr.ts +2 -5
  417. package/src/tool/urlCleaner/i18n/zh.ts +2 -5
  418. package/src/tool/urlEncoderDecoder/bibliography.astro +2 -10
  419. package/src/tool/urlEncoderDecoder/bibliography.ts +7 -0
  420. package/src/tool/urlEncoderDecoder/i18n/de.ts +2 -14
  421. package/src/tool/urlEncoderDecoder/i18n/en.ts +3 -15
  422. package/src/tool/urlEncoderDecoder/i18n/es.ts +3 -15
  423. package/src/tool/urlEncoderDecoder/i18n/fr.ts +2 -14
  424. package/src/tool/urlEncoderDecoder/i18n/id.ts +2 -14
  425. package/src/tool/urlEncoderDecoder/i18n/it.ts +2 -14
  426. package/src/tool/urlEncoderDecoder/i18n/ja.ts +2 -14
  427. package/src/tool/urlEncoderDecoder/i18n/ko.ts +2 -14
  428. package/src/tool/urlEncoderDecoder/i18n/nl.ts +2 -14
  429. package/src/tool/urlEncoderDecoder/i18n/pl.ts +2 -14
  430. package/src/tool/urlEncoderDecoder/i18n/pt.ts +2 -14
  431. package/src/tool/urlEncoderDecoder/i18n/ru.ts +2 -14
  432. package/src/tool/urlEncoderDecoder/i18n/sv.ts +2 -14
  433. package/src/tool/urlEncoderDecoder/i18n/tr.ts +2 -14
  434. package/src/tool/urlEncoderDecoder/i18n/zh.ts +2 -14
  435. package/src/tool/utmGenerator/bibliography.astro +2 -10
  436. package/src/tool/utmGenerator/bibliography.ts +6 -0
  437. package/src/tool/utmGenerator/i18n/de.ts +2 -4
  438. package/src/tool/utmGenerator/i18n/en.ts +2 -4
  439. package/src/tool/utmGenerator/i18n/es.ts +2 -4
  440. package/src/tool/utmGenerator/i18n/fr.ts +2 -4
  441. package/src/tool/utmGenerator/i18n/id.ts +2 -4
  442. package/src/tool/utmGenerator/i18n/it.ts +2 -4
  443. package/src/tool/utmGenerator/i18n/ja.ts +2 -4
  444. package/src/tool/utmGenerator/i18n/ko.ts +2 -4
  445. package/src/tool/utmGenerator/i18n/nl.ts +2 -4
  446. package/src/tool/utmGenerator/i18n/pl.ts +2 -4
  447. package/src/tool/utmGenerator/i18n/pt.ts +2 -4
  448. package/src/tool/utmGenerator/i18n/ru.ts +2 -4
  449. package/src/tool/utmGenerator/i18n/sv.ts +2 -4
  450. package/src/tool/utmGenerator/i18n/tr.ts +2 -4
  451. package/src/tool/utmGenerator/i18n/zh.ts +2 -4
  452. package/src/tool/visualCssGridFlexboxGenerator/component.astro +1 -0
  453. package/src/tool/visualCssGridFlexboxGenerator/logic.test.ts +29 -0
  454. package/src/tool/visualCssGridFlexboxGenerator/workspace.ts +13 -1
  455. 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 { UrlCleanerUI } from '../ui';
@@ -82,11 +83,7 @@ export const content: ToolLocaleContent<UrlCleanerUI> = {
82
83
  faqTitle: '자주 묻는 질문',
83
84
  faq: faqData,
84
85
  bibliographyTitle: '프라이버시 및 웹 추적 관련 자료',
85
- bibliography: [
86
- { name: 'Electronic Frontier Foundation (EFF): 온라인 추적 가이드', url: 'https://www.eff.org/issues/online-behavioral-tracking' },
87
- { name: 'Google Analytics: UTM 파라미터 문서', url: 'https://support.google.com/analytics/answer/1033863' },
88
- { name: '웹 프라이버시: 클릭 ID의 영향', url: 'https://www.w3.org/community/web-advertising/wiki/Click_Identifiers' },
89
- ],
86
+ bibliography,
90
87
  howTo: howToData,
91
88
  schemas: [faqSchema, howToSchema, appSchema],
92
89
  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 { UrlCleanerUI } from '../ui';
@@ -82,11 +83,7 @@ export const content: ToolLocaleContent<UrlCleanerUI> = {
82
83
  faqTitle: 'Veelgestelde vragen',
83
84
  faq: faqData,
84
85
  bibliographyTitle: 'Bronnen over privacy en webtracking',
85
- bibliography: [
86
- { name: 'Electronic Frontier Foundation (EFF): Gids voor online tracking', url: 'https://www.eff.org/issues/online-behavioral-tracking' },
87
- { name: 'Google Analytics: documentatie over UTM-parameters', url: 'https://support.google.com/analytics/answer/1033863' },
88
- { name: 'Webprivacy: de impact van klik-ID\'s', url: 'https://www.w3.org/community/web-advertising/wiki/Click_Identifiers' },
89
- ],
86
+ bibliography,
90
87
  howTo: howToData,
91
88
  schemas: [faqSchema, howToSchema, appSchema],
92
89
  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 { UrlCleanerUI } from '../ui';
@@ -26,4 +27,4 @@ const appSchema: WithContext<SoftwareApplication> = { '@context': 'https://schem
26
27
 
27
28
  const ui: UrlCleanerUI = { labelInput: 'Wklej adres URL z parametrami śledzenia', btnClean: 'Wyczyść', labelCleaned: 'Czysty Adres URL', labelRemoved: 'Usunięte Trackery', countLabel: 'Usunięte parametry', reductionLabel: 'Redukcja długości', noneDetected: 'Nie wykryto wspólnych parametrów śledzenia.', errorInvalid: 'Proszę wprowadzić prawidłowy adres URL.', btnCopy: 'Kopiuj', btnCopied: 'Skopiowano', };
28
29
 
29
- export const content: ToolLocaleContent<UrlCleanerUI> = { slug, title, description, ui, faqTitle: 'Często Zadawane Pytania', faq: faqData, bibliographyTitle: 'Zasoby Dotyczące Prywatności i Śledzenia Sieciowego', bibliography: [{ name: 'Electronic Frontier Foundation (EFF): Guide to Online Tracking', url: 'https://www.eff.org/issues/online-behavioral-tracking' }, { name: 'Google Analytics: UTM Parameter Documentation', url: 'https://support.google.com/analytics/answer/1033863' }, { name: 'Web Privacy: The Impact of Click IDs', url: 'https://www.w3.org/community/web-advertising/wiki/Click_Identifiers' }], howTo: howToData, schemas: [faqSchema, howToSchema, appSchema], seo: [{ type: 'title', text: 'Czyścic Śledzenia URL: Usuń UTM, FBCLID i GCLID', level: 2 }, { type: 'paragraph', html: 'Usuń niewidoczne trackery ze swoich linków, aby dzielić się nimi czyszczę, prywatnie i profesjonalnie. Odkryj, co oznaczają te dziwne kody w Twoich adresach URL.' }, { type: 'title', text: 'Co to jest Czyszczący Śledzenia URL i po co ci jest potrzebny?', level: 3 }, { type: 'paragraph', html: 'Kiedykolwiek skopiowałeś link do wysłania do przyjaciela i zdałeś sobie sprawę, że jest trzy razy dłuższy, niż powinien być? Ten dodatkowy "szum" to parametry śledzenia. <strong>Czyszczący śledzenia</strong> to narzędzie przeznaczone do "rozdzielania" adresu URL ze wszystkich informacji o reklamie i śledzieniu, które duże platformy wstrzykują do każdego kliknięcia, które wykonujesz.' }, { type: 'title', text: 'Najczęstsze parametry śledzenia', level: 3 }, { type: 'list', items: ['<strong>UTM (Google Analytics):</strong> utm_source, utm_medium, utm_campaign do śledzenia kampanii', '<strong>FBCLID:</strong> Identyfikator kliknięcia facebooka aby ominąć ograniczenia plików cookie', '<strong>GCLID / DCLID:</strong> Identyfikator kliknięcia Google do łączenia wizyt z kampaniami Google Ads', '<strong>MSCLKID:</strong> Identyfikator kliknięcia Microsoft Advertising i Bing', '<strong>HubSpot i Mailchimp:</strong> Parametry automatyzacji marketingu, takie jak _hsenc, mc_cid', '<strong>LinkedIn i Inne:</strong> li_fat_id i inne trackery mediów społecznych'] }] };
30
+ export const content: ToolLocaleContent<UrlCleanerUI> = { slug, title, description, ui, faqTitle: 'Często Zadawane Pytania', faq: faqData, bibliographyTitle: 'Zasoby Dotyczące Prywatności i Śledzenia Sieciowego', bibliography, howTo: howToData, schemas: [faqSchema, howToSchema, appSchema], seo: [{ type: 'title', text: 'Czyścic Śledzenia URL: Usuń UTM, FBCLID i GCLID', level: 2 }, { type: 'paragraph', html: 'Usuń niewidoczne trackery ze swoich linków, aby dzielić się nimi czyszczę, prywatnie i profesjonalnie. Odkryj, co oznaczają te dziwne kody w Twoich adresach URL.' }, { type: 'title', text: 'Co to jest Czyszczący Śledzenia URL i po co ci jest potrzebny?', level: 3 }, { type: 'paragraph', html: 'Kiedykolwiek skopiowałeś link do wysłania do przyjaciela i zdałeś sobie sprawę, że jest trzy razy dłuższy, niż powinien być? Ten dodatkowy "szum" to parametry śledzenia. <strong>Czyszczący śledzenia</strong> to narzędzie przeznaczone do "rozdzielania" adresu URL ze wszystkich informacji o reklamie i śledzieniu, które duże platformy wstrzykują do każdego kliknięcia, które wykonujesz.' }, { type: 'title', text: 'Najczęstsze parametry śledzenia', level: 3 }, { type: 'list', items: ['<strong>UTM (Google Analytics):</strong> utm_source, utm_medium, utm_campaign do śledzenia kampanii', '<strong>FBCLID:</strong> Identyfikator kliknięcia facebooka aby ominąć ograniczenia plików cookie', '<strong>GCLID / DCLID:</strong> Identyfikator kliknięcia Google do łączenia wizyt z kampaniami Google Ads', '<strong>MSCLKID:</strong> Identyfikator kliknięcia Microsoft Advertising i Bing', '<strong>HubSpot i Mailchimp:</strong> Parametry automatyzacji marketingu, takie jak _hsenc, mc_cid', '<strong>LinkedIn i Inne:</strong> li_fat_id i inne trackery mediów społecznych'] }] };
@@ -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 { UrlCleanerUI } from '../ui';
@@ -25,11 +26,7 @@ export const content: ToolLocaleContent<UrlCleanerUI> = {
25
26
  faqTitle: 'Perguntas Frequentes',
26
27
  faq: faqData,
27
28
  bibliographyTitle: 'Recursos sobre Privacidade e Rastreamento Web',
28
- bibliography: [
29
- { name: 'Electronic Frontier Foundation (EFF): Guia para Rastreamento Online', url: 'https://www.eff.org/issues/online-behavioral-tracking' },
30
- { name: 'Google Analytics: Documentação de Parâmetro UTM', url: 'https://support.google.com/analytics/answer/1033863' },
31
- { name: 'Web Privacy: O Impacto de Click IDs', url: 'https://www.w3.org/community/web-advertising/wiki/Click_Identifiers' },
32
- ],
29
+ bibliography,
33
30
  howTo: howToData,
34
31
  schemas: [faqSchema, howToSchema, appSchema],
35
32
  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 { UrlCleanerUI } from '../ui';
@@ -25,11 +26,7 @@ export const content: ToolLocaleContent<UrlCleanerUI> = {
25
26
  faqTitle: 'Часто Задаваемые Вопросы',
26
27
  faq: faqData,
27
28
  bibliographyTitle: 'Ресурсы по Приватности и Веб-Отслеживанию',
28
- bibliography: [
29
- { name: 'Electronic Frontier Foundation (EFF): Руководство по Онлайн-отслеживанию', url: 'https://www.eff.org/issues/online-behavioral-tracking' },
30
- { name: 'Google Analytics: Документация по Параметру UTM', url: 'https://support.google.com/analytics/answer/1033863' },
31
- { name: 'Web Privacy: Влияние Click ID', url: 'https://www.w3.org/community/web-advertising/wiki/Click_Identifiers' },
32
- ],
29
+ bibliography,
33
30
  howTo: howToData,
34
31
  schemas: [faqSchema, howToSchema, appSchema],
35
32
  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 { UrlCleanerUI } from '../ui';
@@ -25,11 +26,7 @@ export const content: ToolLocaleContent<UrlCleanerUI> = {
25
26
  faqTitle: 'Vanliga Frågor',
26
27
  faq: faqData,
27
28
  bibliographyTitle: 'Resurser om Integritet och Webbspårning',
28
- bibliography: [
29
- { name: 'Electronic Frontier Foundation (EFF): Vägledning till Online-spårning', url: 'https://www.eff.org/issues/online-behavioral-tracking' },
30
- { name: 'Google Analytics: UTM-parameterdokumentation', url: 'https://support.google.com/analytics/answer/1033863' },
31
- { name: 'Web Privacy: Effekten av Klick-ID:n', url: 'https://www.w3.org/community/web-advertising/wiki/Click_Identifiers' },
32
- ],
29
+ bibliography,
33
30
  howTo: howToData,
34
31
  schemas: [faqSchema, howToSchema, appSchema],
35
32
  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 { UrlCleanerUI } from '../ui';
@@ -25,11 +26,7 @@ export const content: ToolLocaleContent<UrlCleanerUI> = {
25
26
  faqTitle: 'Sık Sorulan Sorular',
26
27
  faq: faqData,
27
28
  bibliographyTitle: 'Gizlilik ve Web İzlemesi Kaynakları',
28
- bibliography: [
29
- { name: 'Electronic Frontier Foundation (EFF): Çevrimiçi İzleme Rehberi', url: 'https://www.eff.org/issues/online-behavioral-tracking' },
30
- { name: 'Google Analytics: UTM Parametre Belgeleri', url: 'https://support.google.com/analytics/answer/1033863' },
31
- { name: 'Web Gizliliği: Tıklatma Kimliklerinin Etkisi', url: 'https://www.w3.org/community/web-advertising/wiki/Click_Identifiers' },
32
- ],
29
+ bibliography,
33
30
  howTo: howToData,
34
31
  schemas: [faqSchema, howToSchema, appSchema],
35
32
  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 { UrlCleanerUI } from '../ui';
@@ -25,11 +26,7 @@ export const content: ToolLocaleContent<UrlCleanerUI> = {
25
26
  faqTitle: '常见问题',
26
27
  faq: faqData,
27
28
  bibliographyTitle: '隐私和网络跟踪资源',
28
- bibliography: [
29
- { name: '电子前沿基金会 (EFF):在线追踪指南', url: 'https://www.eff.org/issues/online-behavioral-tracking' },
30
- { name: 'Google Analytics:UTM 参数文档', url: 'https://support.google.com/analytics/answer/1033863' },
31
- { name: '网络隐私:点击 ID 的影响', url: 'https://www.w3.org/community/web-advertising/wiki/Click_Identifiers' },
32
- ],
29
+ bibliography,
33
30
  howTo: howToData,
34
31
  schemas: [faqSchema, howToSchema, appSchema],
35
32
  seo: [
@@ -1,14 +1,6 @@
1
1
  ---
2
2
  import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
- import { urlEncoderDecoder } 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 urlEncoderDecoder.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: encodeURIComponent()', url: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent' },
5
+ { name: 'IETF RFC 3986: URI Generic Syntax', url: 'https://datatracker.ietf.org/doc/html/rfc3986' },
6
+ { name: 'W3C: URL Living Standard', url: 'https://url.spec.whatwg.org/#url' },
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 { UrlEncoderDecoderUI } from '../ui';
@@ -99,20 +100,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
99
100
  faqTitle: 'Häufig gestellte Fragen',
100
101
  faq: faqData,
101
102
  bibliographyTitle: 'Referenzen und Dokumentation',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: encodeURIComponent()',
105
- url: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent',
106
- },
107
- {
108
- name: 'IETF RFC 3986: URI Generic Syntax',
109
- url: 'https://datatracker.ietf.org/doc/html/rfc3986',
110
- },
111
- {
112
- name: 'W3C: URL Living Standard',
113
- url: 'https://url.spec.whatwg.org/',
114
- },
115
- ],
103
+ bibliography,
116
104
  howTo: howToData,
117
105
  schemas: [faqSchema, howToSchema, appSchema],
118
106
  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 { UrlEncoderDecoderUI } from '../ui';
@@ -99,20 +100,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
99
100
  faqTitle: 'Frequently Asked Questions',
100
101
  faq: faqData,
101
102
  bibliographyTitle: 'References and Documentation',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: encodeURIComponent()',
105
- url: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent',
106
- },
107
- {
108
- name: 'IETF RFC 3986: URI Generic Syntax',
109
- url: 'https://datatracker.ietf.org/doc/html/rfc3986',
110
- },
111
- {
112
- name: 'W3C: URL Living Standard',
113
- url: 'https://url.spec.whatwg.org/',
114
- },
115
- ],
103
+ bibliography,
116
104
  howTo: howToData,
117
105
  schemas: [faqSchema, howToSchema, appSchema],
118
106
  seo: [
@@ -156,7 +144,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
156
144
  },
157
145
  {
158
146
  type: 'paragraph',
159
- html: 'This tool guarantees clean, automatic calculations with 100% execution in your local browser. None of your URL strings are transmitted to third-party servers, ensuring the privacy of your tokens and analytics parameters.',
147
+ html: 'This tool performs clean, automatic calculations in your local browser. None of your URL strings need to be transmitted to third-party servers, which helps keep your tokens and analytics parameters private.',
160
148
  },
161
149
  ],
162
150
  };
@@ -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 { UrlEncoderDecoderUI } from '../ui';
@@ -99,20 +100,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
99
100
  faqTitle: 'Preguntas Frecuentes',
100
101
  faq: faqData,
101
102
  bibliographyTitle: 'Referencias y Documentación',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: encodeURIComponent()',
105
- url: 'https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent',
106
- },
107
- {
108
- name: 'IETF RFC 3986: Estructura de URIs',
109
- url: 'https://datatracker.ietf.org/doc/html/rfc3986',
110
- },
111
- {
112
- name: 'W3C: URL Living Standard',
113
- url: 'https://url.spec.whatwg.org/',
114
- },
115
- ],
103
+ bibliography,
116
104
  howTo: howToData,
117
105
  schemas: [faqSchema, howToSchema, appSchema],
118
106
  seo: [
@@ -156,7 +144,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
156
144
  },
157
145
  {
158
146
  type: 'paragraph',
159
- html: 'Esta herramienta garantiza cálculos limpios y automáticos con un 100% de ejecución en tu navegador local. Ninguna de tus cadenas URL es transmitida a servidores de terceros, asegurando la privacidad de tus tokens y parámetros analíticos.',
147
+ html: 'Esta herramienta realiza los cálculos directamente en tu navegador local. Ninguna de tus cadenas URL necesita enviarse a servidores de terceros, lo que ayuda a mantener privados tus tokens y parámetros analíticos.',
160
148
  },
161
149
  ],
162
150
  };
@@ -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 { UrlEncoderDecoderUI } from '../ui';
@@ -99,20 +100,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
99
100
  faqTitle: 'Questions Fréquentes',
100
101
  faq: faqData,
101
102
  bibliographyTitle: 'Références et Documentation',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: encodeURIComponent()',
105
- url: 'https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent',
106
- },
107
- {
108
- name: 'IETF RFC 3986: Syntaxe URI',
109
- url: 'https://datatracker.ietf.org/doc/html/rfc3986',
110
- },
111
- {
112
- name: 'W3C: URL Living Standard',
113
- url: 'https://url.spec.whatwg.org/',
114
- },
115
- ],
103
+ bibliography,
116
104
  howTo: howToData,
117
105
  schemas: [faqSchema, howToSchema, appSchema],
118
106
  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 { UrlEncoderDecoderUI } from '../ui';
@@ -99,20 +100,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
99
100
  faqTitle: 'Pertanyaan yang Sering Diajukan',
100
101
  faq: faqData,
101
102
  bibliographyTitle: 'Referensi dan Dokumentasi',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: encodeURIComponent()',
105
- url: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent',
106
- },
107
- {
108
- name: 'IETF RFC 3986: URI Generic Syntax',
109
- url: 'https://datatracker.ietf.org/doc/html/rfc3986',
110
- },
111
- {
112
- name: 'W3C: URL Living Standard',
113
- url: 'https://url.spec.whatwg.org/',
114
- },
115
- ],
103
+ bibliography,
116
104
  howTo: howToData,
117
105
  schemas: [faqSchema, howToSchema, appSchema],
118
106
  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 { UrlEncoderDecoderUI } from '../ui';
@@ -99,20 +100,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
99
100
  faqTitle: 'Domande Frequenti',
100
101
  faq: faqData,
101
102
  bibliographyTitle: 'Riferimenti e Documentazione',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: encodeURIComponent()',
105
- url: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent',
106
- },
107
- {
108
- name: 'IETF RFC 3986: URI Generic Syntax',
109
- url: 'https://datatracker.ietf.org/doc/html/rfc3986',
110
- },
111
- {
112
- name: 'W3C: URL Living Standard',
113
- url: 'https://url.spec.whatwg.org/',
114
- },
115
- ],
103
+ bibliography,
116
104
  howTo: howToData,
117
105
  schemas: [faqSchema, howToSchema, appSchema],
118
106
  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 { UrlEncoderDecoderUI } from '../ui';
@@ -99,20 +100,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
99
100
  faqTitle: 'よくある質問',
100
101
  faq: faqData,
101
102
  bibliographyTitle: '参考文献とドキュメント',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: encodeURIComponent()',
105
- url: 'https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent',
106
- },
107
- {
108
- name: 'IETF RFC 3986: URI Generic Syntax',
109
- url: 'https://datatracker.ietf.org/doc/html/rfc3986',
110
- },
111
- {
112
- name: 'W3C: URL Living Standard',
113
- url: 'https://url.spec.whatwg.org/',
114
- },
115
- ],
103
+ bibliography,
116
104
  howTo: howToData,
117
105
  schemas: [faqSchema, howToSchema, appSchema],
118
106
  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 { UrlEncoderDecoderUI } from '../ui';
@@ -99,20 +100,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
99
100
  faqTitle: '자주 묻는 질문',
100
101
  faq: faqData,
101
102
  bibliographyTitle: '참고 자료 및 문서',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: encodeURIComponent()',
105
- url: 'https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent',
106
- },
107
- {
108
- name: 'IETF RFC 3986: URI Generic Syntax',
109
- url: 'https://datatracker.ietf.org/doc/html/rfc3986',
110
- },
111
- {
112
- name: 'W3C: URL Living Standard',
113
- url: 'https://url.spec.whatwg.org/',
114
- },
115
- ],
103
+ bibliography,
116
104
  howTo: howToData,
117
105
  schemas: [faqSchema, howToSchema, appSchema],
118
106
  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 { UrlEncoderDecoderUI } from '../ui';
@@ -99,20 +100,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
99
100
  faqTitle: 'Veelgestelde Vragen',
100
101
  faq: faqData,
101
102
  bibliographyTitle: 'Referenties en Documentatie',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: encodeURIComponent()',
105
- url: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent',
106
- },
107
- {
108
- name: 'IETF RFC 3986: URI Generic Syntax',
109
- url: 'https://datatracker.ietf.org/doc/html/rfc3986',
110
- },
111
- {
112
- name: 'W3C: URL Living Standard',
113
- url: 'https://url.spec.whatwg.org/',
114
- },
115
- ],
103
+ bibliography,
116
104
  howTo: howToData,
117
105
  schemas: [faqSchema, howToSchema, appSchema],
118
106
  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 { UrlEncoderDecoderUI } from '../ui';
@@ -99,20 +100,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
99
100
  faqTitle: 'Często zadawane pytania',
100
101
  faq: faqData,
101
102
  bibliographyTitle: 'Referencje i dokumentacja',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: encodeURIComponent()',
105
- url: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent',
106
- },
107
- {
108
- name: 'IETF RFC 3986: URI Generic Syntax',
109
- url: 'https://datatracker.ietf.org/doc/html/rfc3986',
110
- },
111
- {
112
- name: 'W3C: URL Living Standard',
113
- url: 'https://url.spec.whatwg.org/',
114
- },
115
- ],
103
+ bibliography,
116
104
  howTo: howToData,
117
105
  schemas: [faqSchema, howToSchema, appSchema],
118
106
  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 { UrlEncoderDecoderUI } from '../ui';
@@ -99,20 +100,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
99
100
  faqTitle: 'Perguntas Frequentes',
100
101
  faq: faqData,
101
102
  bibliographyTitle: 'Referências e Documentação',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: encodeURIComponent()',
105
- url: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent',
106
- },
107
- {
108
- name: 'IETF RFC 3986: URI Generic Syntax',
109
- url: 'https://datatracker.ietf.org/doc/html/rfc3986',
110
- },
111
- {
112
- name: 'W3C: URL Living Standard',
113
- url: 'https://url.spec.whatwg.org/',
114
- },
115
- ],
103
+ bibliography,
116
104
  howTo: howToData,
117
105
  schemas: [faqSchema, howToSchema, appSchema],
118
106
  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 { UrlEncoderDecoderUI } from '../ui';
@@ -99,20 +100,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
99
100
  faqTitle: 'Часто задаваемые вопросы',
100
101
  faq: faqData,
101
102
  bibliographyTitle: 'Ссылки и документация',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: encodeURIComponent()',
105
- url: 'https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent',
106
- },
107
- {
108
- name: 'IETF RFC 3986: URI Generic Syntax',
109
- url: 'https://datatracker.ietf.org/doc/html/rfc3986',
110
- },
111
- {
112
- name: 'W3C: URL Living Standard',
113
- url: 'https://url.spec.whatwg.org/',
114
- },
115
- ],
103
+ bibliography,
116
104
  howTo: howToData,
117
105
  schemas: [faqSchema, howToSchema, appSchema],
118
106
  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 { UrlEncoderDecoderUI } from '../ui';
@@ -99,20 +100,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
99
100
  faqTitle: 'Vanliga frågor',
100
101
  faq: faqData,
101
102
  bibliographyTitle: 'Referenser och dokumentation',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: encodeURIComponent()',
105
- url: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent',
106
- },
107
- {
108
- name: 'IETF RFC 3986: URI Generic Syntax',
109
- url: 'https://datatracker.ietf.org/doc/html/rfc3986',
110
- },
111
- {
112
- name: 'W3C: URL Living Standard',
113
- url: 'https://url.spec.whatwg.org/',
114
- },
115
- ],
103
+ bibliography,
116
104
  howTo: howToData,
117
105
  schemas: [faqSchema, howToSchema, appSchema],
118
106
  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 { UrlEncoderDecoderUI } from '../ui';
@@ -99,20 +100,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
99
100
  faqTitle: 'Sıkça Sorulan Sorular',
100
101
  faq: faqData,
101
102
  bibliographyTitle: 'Referanslar ve Dokümantasyon',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: encodeURIComponent()',
105
- url: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent',
106
- },
107
- {
108
- name: 'IETF RFC 3986: URI Generic Syntax',
109
- url: 'https://datatracker.ietf.org/doc/html/rfc3986',
110
- },
111
- {
112
- name: 'W3C: URL Living Standard',
113
- url: 'https://url.spec.whatwg.org/',
114
- },
115
- ],
103
+ bibliography,
116
104
  howTo: howToData,
117
105
  schemas: [faqSchema, howToSchema, appSchema],
118
106
  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 { UrlEncoderDecoderUI } from '../ui';
@@ -99,20 +100,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
99
100
  faqTitle: '常见问题',
100
101
  faq: faqData,
101
102
  bibliographyTitle: '参考资料与文档',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: encodeURIComponent()',
105
- url: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent',
106
- },
107
- {
108
- name: 'IETF RFC 3986: URI Generic Syntax',
109
- url: 'https://datatracker.ietf.org/doc/html/rfc3986',
110
- },
111
- {
112
- name: 'W3C: URL Living Standard',
113
- url: 'https://url.spec.whatwg.org/',
114
- },
115
- ],
103
+ bibliography,
116
104
  howTo: howToData,
117
105
  schemas: [faqSchema, howToSchema, appSchema],
118
106
  seo: [
@@ -1,14 +1,6 @@
1
1
  ---
2
2
  import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
- import { utmGenerator } 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 utmGenerator.i18n[locale]?.();
3
+ import { bibliography } from './bibliography';
12
4
  ---
13
5
 
14
- {content && <SharedBibliography links={content.bibliography} />}
6
+ <SharedBibliography links={bibliography} />
@@ -0,0 +1,6 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ { name: 'Collect campaign data with custom URLs - Google Analytics Help (2024)', url: 'https://support.google.com/analytics/answer/1033863' },
5
+ { name: 'Best Practices for Campaign URL Tagging - VWO Blog (2023)', url: 'https://vwo.com/blog/utm-tagging-best-practices/' },
6
+ ];