@jjlmoya/utils-finance 1.14.0 → 1.16.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 (225) hide show
  1. package/package.json +1 -1
  2. package/src/pages/[locale]/[slug].astro +29 -13
  3. package/src/tests/locale_completeness.test.ts +6 -16
  4. package/src/tests/shared-test-helpers.ts +56 -0
  5. package/src/tests/tool_exports.test.ts +34 -0
  6. package/src/tool/compoundInterest/bibliography.ts +20 -0
  7. package/src/tool/compoundInterest/compound-interest-calculator.css +315 -69
  8. package/src/tool/compoundInterest/entry.ts +2 -0
  9. package/src/tool/compoundInterest/i18n/de.ts +3 -16
  10. package/src/tool/compoundInterest/i18n/en.ts +3 -20
  11. package/src/tool/compoundInterest/i18n/es.ts +2 -20
  12. package/src/tool/compoundInterest/i18n/fr.ts +3 -20
  13. package/src/tool/compoundInterest/i18n/id.ts +3 -16
  14. package/src/tool/compoundInterest/i18n/it.ts +3 -16
  15. package/src/tool/compoundInterest/i18n/ja.ts +3 -16
  16. package/src/tool/compoundInterest/i18n/ko.ts +3 -16
  17. package/src/tool/compoundInterest/i18n/nl.ts +3 -16
  18. package/src/tool/compoundInterest/i18n/pl.ts +2 -16
  19. package/src/tool/compoundInterest/i18n/pt.ts +3 -16
  20. package/src/tool/compoundInterest/i18n/ru.ts +3 -16
  21. package/src/tool/compoundInterest/i18n/sv.ts +3 -16
  22. package/src/tool/compoundInterest/i18n/tr.ts +3 -16
  23. package/src/tool/compoundInterest/i18n/zh.ts +3 -16
  24. package/src/tool/compoundInterest/seo.astro +2 -1
  25. package/src/tool/courtFeeCalculator/bibliography.ts +16 -0
  26. package/src/tool/courtFeeCalculator/entry.ts +2 -0
  27. package/src/tool/courtFeeCalculator/i18n/de.ts +2 -18
  28. package/src/tool/courtFeeCalculator/i18n/en.ts +2 -22
  29. package/src/tool/courtFeeCalculator/i18n/es.ts +2 -22
  30. package/src/tool/courtFeeCalculator/i18n/fr.ts +2 -22
  31. package/src/tool/courtFeeCalculator/i18n/id.ts +2 -18
  32. package/src/tool/courtFeeCalculator/i18n/it.ts +2 -18
  33. package/src/tool/courtFeeCalculator/i18n/ja.ts +2 -18
  34. package/src/tool/courtFeeCalculator/i18n/ko.ts +2 -18
  35. package/src/tool/courtFeeCalculator/i18n/nl.ts +2 -18
  36. package/src/tool/courtFeeCalculator/i18n/pl.ts +2 -18
  37. package/src/tool/courtFeeCalculator/i18n/pt.ts +2 -18
  38. package/src/tool/courtFeeCalculator/i18n/ru.ts +2 -18
  39. package/src/tool/courtFeeCalculator/i18n/sv.ts +2 -18
  40. package/src/tool/courtFeeCalculator/i18n/tr.ts +2 -18
  41. package/src/tool/courtFeeCalculator/i18n/zh.ts +2 -18
  42. package/src/tool/courtFeeCalculator/seo.astro +2 -1
  43. package/src/tool/debtSnowball/bibliography.ts +12 -0
  44. package/src/tool/debtSnowball/entry.ts +2 -0
  45. package/src/tool/debtSnowball/i18n/de.ts +2 -14
  46. package/src/tool/debtSnowball/i18n/en.ts +2 -14
  47. package/src/tool/debtSnowball/i18n/es.ts +2 -14
  48. package/src/tool/debtSnowball/i18n/fr.ts +2 -14
  49. package/src/tool/debtSnowball/i18n/id.ts +2 -14
  50. package/src/tool/debtSnowball/i18n/it.ts +2 -14
  51. package/src/tool/debtSnowball/i18n/ja.ts +2 -14
  52. package/src/tool/debtSnowball/i18n/ko.ts +2 -14
  53. package/src/tool/debtSnowball/i18n/nl.ts +2 -14
  54. package/src/tool/debtSnowball/i18n/pl.ts +2 -14
  55. package/src/tool/debtSnowball/i18n/pt.ts +2 -14
  56. package/src/tool/debtSnowball/i18n/ru.ts +2 -14
  57. package/src/tool/debtSnowball/i18n/sv.ts +2 -14
  58. package/src/tool/debtSnowball/i18n/tr.ts +2 -14
  59. package/src/tool/debtSnowball/i18n/zh.ts +2 -14
  60. package/src/tool/debtSnowball/seo.astro +2 -1
  61. package/src/tool/fireCalculator/bibliography.ts +20 -0
  62. package/src/tool/fireCalculator/entry.ts +2 -0
  63. package/src/tool/fireCalculator/i18n/de.ts +2 -22
  64. package/src/tool/fireCalculator/i18n/en.ts +2 -22
  65. package/src/tool/fireCalculator/i18n/es.ts +2 -22
  66. package/src/tool/fireCalculator/i18n/fr.ts +2 -22
  67. package/src/tool/fireCalculator/i18n/id.ts +2 -22
  68. package/src/tool/fireCalculator/i18n/it.ts +2 -22
  69. package/src/tool/fireCalculator/i18n/ja.ts +2 -22
  70. package/src/tool/fireCalculator/i18n/ko.ts +2 -22
  71. package/src/tool/fireCalculator/i18n/nl.ts +2 -22
  72. package/src/tool/fireCalculator/i18n/pl.ts +2 -22
  73. package/src/tool/fireCalculator/i18n/pt.ts +2 -22
  74. package/src/tool/fireCalculator/i18n/ru.ts +2 -22
  75. package/src/tool/fireCalculator/i18n/sv.ts +2 -22
  76. package/src/tool/fireCalculator/i18n/tr.ts +2 -22
  77. package/src/tool/fireCalculator/i18n/zh.ts +2 -22
  78. package/src/tool/fireCalculator/seo.astro +2 -1
  79. package/src/tool/ibanBicSwiftConverter/bibliography.ts +12 -0
  80. package/src/tool/ibanBicSwiftConverter/entry.ts +2 -0
  81. package/src/tool/ibanBicSwiftConverter/i18n/de.ts +2 -14
  82. package/src/tool/ibanBicSwiftConverter/i18n/en.ts +2 -18
  83. package/src/tool/ibanBicSwiftConverter/i18n/es.ts +2 -18
  84. package/src/tool/ibanBicSwiftConverter/i18n/fr.ts +2 -18
  85. package/src/tool/ibanBicSwiftConverter/i18n/id.ts +2 -14
  86. package/src/tool/ibanBicSwiftConverter/i18n/it.ts +2 -14
  87. package/src/tool/ibanBicSwiftConverter/i18n/ja.ts +2 -14
  88. package/src/tool/ibanBicSwiftConverter/i18n/ko.ts +2 -14
  89. package/src/tool/ibanBicSwiftConverter/i18n/nl.ts +2 -14
  90. package/src/tool/ibanBicSwiftConverter/i18n/pl.ts +2 -14
  91. package/src/tool/ibanBicSwiftConverter/i18n/pt.ts +2 -14
  92. package/src/tool/ibanBicSwiftConverter/i18n/ru.ts +2 -14
  93. package/src/tool/ibanBicSwiftConverter/i18n/sv.ts +2 -14
  94. package/src/tool/ibanBicSwiftConverter/i18n/tr.ts +2 -14
  95. package/src/tool/ibanBicSwiftConverter/i18n/zh.ts +2 -14
  96. package/src/tool/ibanBicSwiftConverter/seo.astro +2 -1
  97. package/src/tool/inflation/bibliography.ts +20 -0
  98. package/src/tool/inflation/entry.ts +2 -0
  99. package/src/tool/inflation/i18n/de.ts +3 -16
  100. package/src/tool/inflation/i18n/en.ts +3 -20
  101. package/src/tool/inflation/i18n/es.ts +3 -20
  102. package/src/tool/inflation/i18n/fr.ts +3 -20
  103. package/src/tool/inflation/i18n/id.ts +3 -16
  104. package/src/tool/inflation/i18n/it.ts +3 -16
  105. package/src/tool/inflation/i18n/ja.ts +3 -16
  106. package/src/tool/inflation/i18n/ko.ts +3 -16
  107. package/src/tool/inflation/i18n/nl.ts +3 -16
  108. package/src/tool/inflation/i18n/pl.ts +3 -16
  109. package/src/tool/inflation/i18n/pt.ts +3 -16
  110. package/src/tool/inflation/i18n/ru.ts +3 -16
  111. package/src/tool/inflation/i18n/sv.ts +3 -16
  112. package/src/tool/inflation/i18n/tr.ts +3 -16
  113. package/src/tool/inflation/i18n/zh.ts +3 -16
  114. package/src/tool/inflation/seo.astro +2 -1
  115. package/src/tool/lateInterest/bibliography.ts +16 -0
  116. package/src/tool/lateInterest/entry.ts +2 -0
  117. package/src/tool/lateInterest/i18n/de.ts +3 -16
  118. package/src/tool/lateInterest/i18n/en.ts +3 -16
  119. package/src/tool/lateInterest/i18n/es.ts +3 -16
  120. package/src/tool/lateInterest/i18n/fr.ts +3 -16
  121. package/src/tool/lateInterest/i18n/id.ts +3 -16
  122. package/src/tool/lateInterest/i18n/it.ts +3 -16
  123. package/src/tool/lateInterest/i18n/ja.ts +3 -16
  124. package/src/tool/lateInterest/i18n/ko.ts +3 -16
  125. package/src/tool/lateInterest/i18n/nl.ts +3 -16
  126. package/src/tool/lateInterest/i18n/pl.ts +3 -16
  127. package/src/tool/lateInterest/i18n/pt.ts +3 -16
  128. package/src/tool/lateInterest/i18n/ru.ts +3 -16
  129. package/src/tool/lateInterest/i18n/sv.ts +3 -16
  130. package/src/tool/lateInterest/i18n/tr.ts +3 -16
  131. package/src/tool/lateInterest/i18n/zh.ts +3 -16
  132. package/src/tool/lateInterest/seo.astro +2 -1
  133. package/src/tool/legalInterestRate/bibliography.ts +16 -0
  134. package/src/tool/legalInterestRate/entry.ts +2 -0
  135. package/src/tool/legalInterestRate/i18n/de.ts +2 -18
  136. package/src/tool/legalInterestRate/i18n/en.ts +2 -22
  137. package/src/tool/legalInterestRate/i18n/es.ts +2 -22
  138. package/src/tool/legalInterestRate/i18n/fr.ts +2 -22
  139. package/src/tool/legalInterestRate/i18n/id.ts +2 -18
  140. package/src/tool/legalInterestRate/i18n/it.ts +2 -18
  141. package/src/tool/legalInterestRate/i18n/ja.ts +2 -18
  142. package/src/tool/legalInterestRate/i18n/ko.ts +2 -18
  143. package/src/tool/legalInterestRate/i18n/nl.ts +2 -18
  144. package/src/tool/legalInterestRate/i18n/pl.ts +2 -18
  145. package/src/tool/legalInterestRate/i18n/pt.ts +2 -18
  146. package/src/tool/legalInterestRate/i18n/ru.ts +2 -18
  147. package/src/tool/legalInterestRate/i18n/sv.ts +2 -18
  148. package/src/tool/legalInterestRate/i18n/tr.ts +2 -18
  149. package/src/tool/legalInterestRate/i18n/zh.ts +2 -18
  150. package/src/tool/legalInterestRate/seo.astro +2 -1
  151. package/src/tool/lotteryOptimizer/bibliography.ts +16 -0
  152. package/src/tool/lotteryOptimizer/entry.ts +2 -0
  153. package/src/tool/lotteryOptimizer/i18n/de.ts +2 -18
  154. package/src/tool/lotteryOptimizer/i18n/en.ts +2 -18
  155. package/src/tool/lotteryOptimizer/i18n/es.ts +2 -18
  156. package/src/tool/lotteryOptimizer/i18n/fr.ts +2 -18
  157. package/src/tool/lotteryOptimizer/i18n/id.ts +2 -18
  158. package/src/tool/lotteryOptimizer/i18n/it.ts +2 -18
  159. package/src/tool/lotteryOptimizer/i18n/ja.ts +2 -18
  160. package/src/tool/lotteryOptimizer/i18n/ko.ts +2 -18
  161. package/src/tool/lotteryOptimizer/i18n/nl.ts +2 -18
  162. package/src/tool/lotteryOptimizer/i18n/pl.ts +2 -18
  163. package/src/tool/lotteryOptimizer/i18n/pt.ts +2 -18
  164. package/src/tool/lotteryOptimizer/i18n/ru.ts +2 -18
  165. package/src/tool/lotteryOptimizer/i18n/sv.ts +2 -18
  166. package/src/tool/lotteryOptimizer/i18n/tr.ts +2 -18
  167. package/src/tool/lotteryOptimizer/i18n/zh.ts +2 -18
  168. package/src/tool/lotteryOptimizer/seo.astro +2 -1
  169. package/src/tool/lotteryOptimizer/spain-lottery-optimizer.css +524 -7
  170. package/src/tool/mortgage/bibliography.ts +20 -0
  171. package/src/tool/mortgage/entry.ts +2 -0
  172. package/src/tool/mortgage/i18n/de.ts +3 -16
  173. package/src/tool/mortgage/i18n/en.ts +3 -20
  174. package/src/tool/mortgage/i18n/es.ts +3 -20
  175. package/src/tool/mortgage/i18n/fr.ts +3 -20
  176. package/src/tool/mortgage/i18n/id.ts +3 -12
  177. package/src/tool/mortgage/i18n/it.ts +3 -16
  178. package/src/tool/mortgage/i18n/ja.ts +3 -12
  179. package/src/tool/mortgage/i18n/ko.ts +3 -12
  180. package/src/tool/mortgage/i18n/nl.ts +3 -12
  181. package/src/tool/mortgage/i18n/pl.ts +3 -12
  182. package/src/tool/mortgage/i18n/pt.ts +3 -12
  183. package/src/tool/mortgage/i18n/ru.ts +3 -12
  184. package/src/tool/mortgage/i18n/sv.ts +3 -12
  185. package/src/tool/mortgage/i18n/tr.ts +3 -12
  186. package/src/tool/mortgage/i18n/zh.ts +3 -12
  187. package/src/tool/mortgage/seo.astro +2 -1
  188. package/src/tool/percentageCalculator/bibliography.ts +16 -0
  189. package/src/tool/percentageCalculator/entry.ts +2 -0
  190. package/src/tool/percentageCalculator/i18n/de.ts +3 -12
  191. package/src/tool/percentageCalculator/i18n/en.ts +3 -16
  192. package/src/tool/percentageCalculator/i18n/es.ts +3 -16
  193. package/src/tool/percentageCalculator/i18n/fr.ts +3 -16
  194. package/src/tool/percentageCalculator/i18n/id.ts +3 -12
  195. package/src/tool/percentageCalculator/i18n/it.ts +3 -12
  196. package/src/tool/percentageCalculator/i18n/ja.ts +3 -12
  197. package/src/tool/percentageCalculator/i18n/ko.ts +3 -12
  198. package/src/tool/percentageCalculator/i18n/nl.ts +3 -12
  199. package/src/tool/percentageCalculator/i18n/pl.ts +3 -12
  200. package/src/tool/percentageCalculator/i18n/pt.ts +3 -12
  201. package/src/tool/percentageCalculator/i18n/ru.ts +3 -12
  202. package/src/tool/percentageCalculator/i18n/sv.ts +3 -12
  203. package/src/tool/percentageCalculator/i18n/tr.ts +3 -12
  204. package/src/tool/percentageCalculator/i18n/zh.ts +3 -12
  205. package/src/tool/percentageCalculator/percentage-calculator.css +20 -0
  206. package/src/tool/percentageCalculator/seo.astro +2 -1
  207. package/src/tool/rentIncreaseCalculator/bibliography.ts +16 -0
  208. package/src/tool/rentIncreaseCalculator/entry.ts +2 -0
  209. package/src/tool/rentIncreaseCalculator/i18n/de.ts +2 -18
  210. package/src/tool/rentIncreaseCalculator/i18n/en.ts +2 -18
  211. package/src/tool/rentIncreaseCalculator/i18n/es.ts +2 -18
  212. package/src/tool/rentIncreaseCalculator/i18n/fr.ts +2 -18
  213. package/src/tool/rentIncreaseCalculator/i18n/id.ts +2 -18
  214. package/src/tool/rentIncreaseCalculator/i18n/it.ts +2 -18
  215. package/src/tool/rentIncreaseCalculator/i18n/ja.ts +2 -18
  216. package/src/tool/rentIncreaseCalculator/i18n/ko.ts +2 -18
  217. package/src/tool/rentIncreaseCalculator/i18n/nl.ts +2 -18
  218. package/src/tool/rentIncreaseCalculator/i18n/pl.ts +2 -18
  219. package/src/tool/rentIncreaseCalculator/i18n/pt.ts +2 -18
  220. package/src/tool/rentIncreaseCalculator/i18n/ru.ts +2 -18
  221. package/src/tool/rentIncreaseCalculator/i18n/sv.ts +2 -18
  222. package/src/tool/rentIncreaseCalculator/i18n/tr.ts +2 -18
  223. package/src/tool/rentIncreaseCalculator/i18n/zh.ts +2 -18
  224. package/src/tool/rentIncreaseCalculator/seo.astro +2 -1
  225. package/src/types.ts +0 -2
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { FIRECalculatorUI } from '../ui';
@@ -48,25 +49,6 @@ const howToData = [
48
49
  },
49
50
  ];
50
51
 
51
- const bibliographyData = [
52
- {
53
- name: 'The Trinity Study: Portfolio Survivability',
54
- url: 'https://en.wikipedia.org/wiki/Trinity_study',
55
- },
56
- {
57
- name: 'Early Retirement Forum - 4% Rule Discussion',
58
- url: 'https://www.bogleheads.org/forum/',
59
- },
60
- {
61
- name: 'Shiller CAPE Index - Market Valuations',
62
- url: 'https://www.multpl.com/shiller-pe',
63
- },
64
- {
65
- name: 'Bogleheads - 投資ガイド',
66
- url: 'https://bogleheads.es/',
67
- },
68
- ];
69
-
70
52
  const faqSchema: WithContext<FAQPage> = {
71
53
  '@context': 'https://schema.org',
72
54
  '@type': 'FAQPage',
@@ -105,10 +87,8 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
105
87
  slug,
106
88
  title,
107
89
  description,
108
- faqTitle: 'FIREに関するよくある質問',
109
90
  faq: faqData,
110
- bibliographyTitle: '情報源とリファレンス',
111
- bibliography: bibliographyData,
91
+ bibliography,
112
92
  howTo: howToData,
113
93
  schemas: [faqSchema, howToSchema, appSchema],
114
94
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { FIRECalculatorUI } from '../ui';
@@ -48,25 +49,6 @@ const howToData = [
48
49
  },
49
50
  ];
50
51
 
51
- const bibliographyData = [
52
- {
53
- name: 'The Trinity Study: Portfolio Survivability',
54
- url: 'https://en.wikipedia.org/wiki/Trinity_study',
55
- },
56
- {
57
- name: 'Early Retirement Forum - 4% Rule Discussion',
58
- url: 'https://www.bogleheads.org/forum/',
59
- },
60
- {
61
- name: 'Shiller CAPE Index - Market Valuations',
62
- url: 'https://www.multpl.com/shiller-pe',
63
- },
64
- {
65
- name: 'Bogleheads - 투자 가이드',
66
- url: 'https://bogleheads.es/',
67
- },
68
- ];
69
-
70
52
  const faqSchema: WithContext<FAQPage> = {
71
53
  '@context': 'https://schema.org',
72
54
  '@type': 'FAQPage',
@@ -105,10 +87,8 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
105
87
  slug,
106
88
  title,
107
89
  description,
108
- faqTitle: 'FIRE에 대해 자주 묻는 질문',
109
90
  faq: faqData,
110
- bibliographyTitle: '출처 및 참고 자료',
111
- bibliography: bibliographyData,
91
+ bibliography,
112
92
  howTo: howToData,
113
93
  schemas: [faqSchema, howToSchema, appSchema],
114
94
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { FIRECalculatorUI } from '../ui';
@@ -48,25 +49,6 @@ const howToData = [
48
49
  },
49
50
  ];
50
51
 
51
- const bibliographyData = [
52
- {
53
- name: 'The Trinity Study: Portfolio Survivability',
54
- url: 'https://en.wikipedia.org/wiki/Trinity_study',
55
- },
56
- {
57
- name: 'Early Retirement Forum - 4% Rule Discussion',
58
- url: 'https://www.bogleheads.org/forum/',
59
- },
60
- {
61
- name: 'Shiller CAPE Index - Market Valuations',
62
- url: 'https://www.multpl.com/shiller-pe',
63
- },
64
- {
65
- name: 'Bogleheads - Beleggingsgids',
66
- url: 'https://bogleheads.es/',
67
- },
68
- ];
69
-
70
52
  const faqSchema: WithContext<FAQPage> = {
71
53
  '@context': 'https://schema.org',
72
54
  '@type': 'FAQPage',
@@ -105,10 +87,8 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
105
87
  slug,
106
88
  title,
107
89
  description,
108
- faqTitle: 'Veelgestelde vragen over FIRE',
109
90
  faq: faqData,
110
- bibliographyTitle: 'Bronnen en referenties',
111
- bibliography: bibliographyData,
91
+ bibliography,
112
92
  howTo: howToData,
113
93
  schemas: [faqSchema, howToSchema, appSchema],
114
94
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { FIRECalculatorUI } from '../ui';
@@ -48,25 +49,6 @@ const howToData = [
48
49
  },
49
50
  ];
50
51
 
51
- const bibliographyData = [
52
- {
53
- name: 'The Trinity Study: Portfolio Survivability',
54
- url: 'https://en.wikipedia.org/wiki/Trinity_study',
55
- },
56
- {
57
- name: 'Early Retirement Forum - 4% Rule Discussion',
58
- url: 'https://www.bogleheads.org/forum/',
59
- },
60
- {
61
- name: 'Shiller CAPE Index - Market Valuations',
62
- url: 'https://www.multpl.com/shiller-pe',
63
- },
64
- {
65
- name: 'Bogleheads - Przewodnik po inwestowaniu',
66
- url: 'https://bogleheads.es/',
67
- },
68
- ];
69
-
70
52
  const faqSchema: WithContext<FAQPage> = {
71
53
  '@context': 'https://schema.org',
72
54
  '@type': 'FAQPage',
@@ -105,10 +87,8 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
105
87
  slug,
106
88
  title,
107
89
  description,
108
- faqTitle: 'Często zadawane pytania o FIRE',
109
90
  faq: faqData,
110
- bibliographyTitle: 'Źródła i referencje',
111
- bibliography: bibliographyData,
91
+ bibliography,
112
92
  howTo: howToData,
113
93
  schemas: [faqSchema, howToSchema, appSchema],
114
94
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { FIRECalculatorUI } from '../ui';
@@ -48,25 +49,6 @@ const howToData = [
48
49
  },
49
50
  ];
50
51
 
51
- const bibliographyData = [
52
- {
53
- name: 'The Trinity Study: Portfolio Survivability',
54
- url: 'https://en.wikipedia.org/wiki/Trinity_study',
55
- },
56
- {
57
- name: 'Early Retirement Forum - 4% Rule Discussion',
58
- url: 'https://www.bogleheads.org/forum/',
59
- },
60
- {
61
- name: 'Shiller CAPE Index - Market Valuations',
62
- url: 'https://www.multpl.com/shiller-pe',
63
- },
64
- {
65
- name: 'Bogleheads - Guia de Investimento',
66
- url: 'https://bogleheads.es/',
67
- },
68
- ];
69
-
70
52
  const faqSchema: WithContext<FAQPage> = {
71
53
  '@context': 'https://schema.org',
72
54
  '@type': 'FAQPage',
@@ -105,10 +87,8 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
105
87
  slug,
106
88
  title,
107
89
  description,
108
- faqTitle: 'Perguntas Frequentes sobre FIRE',
109
90
  faq: faqData,
110
- bibliographyTitle: 'Fontes e Referências',
111
- bibliography: bibliographyData,
91
+ bibliography,
112
92
  howTo: howToData,
113
93
  schemas: [faqSchema, howToSchema, appSchema],
114
94
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { FIRECalculatorUI } from '../ui';
@@ -48,25 +49,6 @@ const howToData = [
48
49
  },
49
50
  ];
50
51
 
51
- const bibliographyData = [
52
- {
53
- name: 'The Trinity Study: Portfolio Survivability',
54
- url: 'https://en.wikipedia.org/wiki/Trinity_study',
55
- },
56
- {
57
- name: 'Early Retirement Forum - 4% Rule Discussion',
58
- url: 'https://www.bogleheads.org/forum/',
59
- },
60
- {
61
- name: 'Shiller CAPE Index - Market Valuations',
62
- url: 'https://www.multpl.com/shiller-pe',
63
- },
64
- {
65
- name: 'Bogleheads — Руководство по инвестированию',
66
- url: 'https://bogleheads.es/',
67
- },
68
- ];
69
-
70
52
  const faqSchema: WithContext<FAQPage> = {
71
53
  '@context': 'https://schema.org',
72
54
  '@type': 'FAQPage',
@@ -105,10 +87,8 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
105
87
  slug,
106
88
  title,
107
89
  description,
108
- faqTitle: 'Часто задаваемые вопросы о FIRE',
109
90
  faq: faqData,
110
- bibliographyTitle: 'Источники и рекомендации',
111
- bibliography: bibliographyData,
91
+ bibliography,
112
92
  howTo: howToData,
113
93
  schemas: [faqSchema, howToSchema, appSchema],
114
94
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { FIRECalculatorUI } from '../ui';
@@ -48,25 +49,6 @@ const howToData = [
48
49
  },
49
50
  ];
50
51
 
51
- const bibliographyData = [
52
- {
53
- name: 'The Trinity Study: Portfolio Survivability',
54
- url: 'https://en.wikipedia.org/wiki/Trinity_study',
55
- },
56
- {
57
- name: 'Early Retirement Forum - 4% Rule Discussion',
58
- url: 'https://www.bogleheads.org/forum/',
59
- },
60
- {
61
- name: 'Shiller CAPE Index - Market Valuations',
62
- url: 'https://www.multpl.com/shiller-pe',
63
- },
64
- {
65
- name: 'Bogleheads - Investeringsguide',
66
- url: 'https://bogleheads.es/',
67
- },
68
- ];
69
-
70
52
  const faqSchema: WithContext<FAQPage> = {
71
53
  '@context': 'https://schema.org',
72
54
  '@type': 'FAQPage',
@@ -105,10 +87,8 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
105
87
  slug,
106
88
  title,
107
89
  description,
108
- faqTitle: 'Vanliga frågor om FIRE',
109
90
  faq: faqData,
110
- bibliographyTitle: 'Källor och referenser',
111
- bibliography: bibliographyData,
91
+ bibliography,
112
92
  howTo: howToData,
113
93
  schemas: [faqSchema, howToSchema, appSchema],
114
94
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { FIRECalculatorUI } from '../ui';
@@ -48,25 +49,6 @@ const howToData = [
48
49
  },
49
50
  ];
50
51
 
51
- const bibliographyData = [
52
- {
53
- name: 'The Trinity Study: Portfolio Survivability',
54
- url: 'https://en.wikipedia.org/wiki/Trinity_study',
55
- },
56
- {
57
- name: 'Early Retirement Forum - 4% Rule Discussion',
58
- url: 'https://www.bogleheads.org/forum/',
59
- },
60
- {
61
- name: 'Shiller CAPE Index - Market Valuations',
62
- url: 'https://www.multpl.com/shiller-pe',
63
- },
64
- {
65
- name: 'Bogleheads - Yatırım Rehberi',
66
- url: 'https://bogleheads.es/',
67
- },
68
- ];
69
-
70
52
  const faqSchema: WithContext<FAQPage> = {
71
53
  '@context': 'https://schema.org',
72
54
  '@type': 'FAQPage',
@@ -105,10 +87,8 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
105
87
  slug,
106
88
  title,
107
89
  description,
108
- faqTitle: 'FIRE Hakkında Sıkça Sorulan Sorular',
109
90
  faq: faqData,
110
- bibliographyTitle: 'Kaynaklar ve Referanslar',
111
- bibliography: bibliographyData,
91
+ bibliography,
112
92
  howTo: howToData,
113
93
  schemas: [faqSchema, howToSchema, appSchema],
114
94
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { FIRECalculatorUI } from '../ui';
@@ -48,25 +49,6 @@ const howToData = [
48
49
  },
49
50
  ];
50
51
 
51
- const bibliographyData = [
52
- {
53
- name: 'The Trinity Study: Portfolio Survivability',
54
- url: 'https://en.wikipedia.org/wiki/Trinity_study',
55
- },
56
- {
57
- name: 'Early Retirement Forum - 4% Rule Discussion',
58
- url: 'https://www.bogleheads.org/forum/',
59
- },
60
- {
61
- name: 'Shiller CAPE Index - Market Valuations',
62
- url: 'https://www.multpl.com/shiller-pe',
63
- },
64
- {
65
- name: 'Bogleheads - 投资指南',
66
- url: 'https://bogleheads.es/',
67
- },
68
- ];
69
-
70
52
  const faqSchema: WithContext<FAQPage> = {
71
53
  '@context': 'https://schema.org',
72
54
  '@type': 'FAQPage',
@@ -105,10 +87,8 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
105
87
  slug,
106
88
  title,
107
89
  description,
108
- faqTitle: '关于 FIRE 的常见问题',
109
90
  faq: faqData,
110
- bibliographyTitle: '来源与参考',
111
- bibliography: bibliographyData,
91
+ bibliography,
112
92
  howTo: howToData,
113
93
  schemas: [faqSchema, howToSchema, appSchema],
114
94
  seo: [
@@ -11,4 +11,5 @@ const { locale = 'es' } = Astro.props;
11
11
  const content = await fireCalculator.i18n[locale]?.();
12
12
  if (!content) return null;
13
13
  ---
14
- <SEORenderer content={{ locale: locale as string, sections: content.seo }} />
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -0,0 +1,12 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'ISO 13616: Internationaler IBAN-Standard',
6
+ url: 'https://www.iso.org/',
7
+ },
8
+ {
9
+ name: 'SWIFT: Globales BIC-Register',
10
+ url: 'https://www.theswiftcodes.com/',
11
+ },
12
+ ];
@@ -27,3 +27,5 @@ export const ibanBicSwift: FinanceToolEntry<IBANBICSwiftUI> = {
27
27
  zh: () => import('./i18n/zh').then((m) => m.content),
28
28
  },
29
29
  };
30
+
31
+ export { bibliography } from './bibliography';
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { IBANBICSwiftUI } from '../ui';
@@ -44,17 +45,6 @@ const howToData = [
44
45
  },
45
46
  ];
46
47
 
47
- const bibliographyData = [
48
- {
49
- name: 'ISO 13616: Internationaler IBAN-Standard',
50
- url: 'https://www.iso.org/',
51
- },
52
- {
53
- name: 'SWIFT: Globales BIC-Register',
54
- url: 'https://www.theswiftcodes.com/',
55
- },
56
- ];
57
-
58
48
  const faqSchema: WithContext<FAQPage> = {
59
49
  '@context': 'https://schema.org',
60
50
  '@type': 'FAQPage',
@@ -91,10 +81,8 @@ export const content: ToolLocaleContent<IBANBICSwiftUI> = {
91
81
  slug,
92
82
  title,
93
83
  description,
94
- faqTitle: 'Häufig gestellte Fragen',
95
84
  faq: faqData,
96
- bibliographyTitle: 'Quellen und Referenzen',
97
- bibliography: bibliographyData,
85
+ bibliography,
98
86
  howTo: howToData,
99
87
  schemas: [faqSchema, howToSchema, appSchema],
100
88
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { IBANBICSwiftUI } from '../ui';
@@ -44,21 +45,6 @@ const howToData = [
44
45
  },
45
46
  ];
46
47
 
47
- const bibliographyData = [
48
- {
49
- name: 'ISO 13616: International IBAN Standard',
50
- url: 'https://www.iso.org/contents/data/standard/08/10/81090.html',
51
- },
52
- {
53
- name: 'SWIFT: Global BIC Registry',
54
- url: 'https://www.theswiftcodes.com',
55
- },
56
- {
57
- name: 'Bank of Spain: Entity Registry',
58
- url: 'https://www.bde.es/webbe/en/estadisticas/otras-clasificaciones/clasificacion-entidades/listas-instituciones-financieras/listas-instituciones-financieras-monetarias-pais/lista-mfi-es.html',
59
- },
60
- ];
61
-
62
48
  const faqSchema: WithContext<FAQPage> = {
63
49
  '@context': 'https://schema.org',
64
50
  '@type': 'FAQPage',
@@ -99,10 +85,8 @@ export const content: ToolLocaleContent<IBANBICSwiftUI> = {
99
85
  slug,
100
86
  title,
101
87
  description,
102
- faqTitle: 'Frequently Asked Questions',
103
88
  faq: faqData,
104
- bibliographyTitle: 'References and Sources',
105
- bibliography: bibliographyData,
89
+ bibliography,
106
90
  howTo: howToData,
107
91
  schemas: [faqSchema, howToSchema, appSchema],
108
92
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { IBANBICSwiftUI } from '../ui';
@@ -44,21 +45,6 @@ const howToData = [
44
45
  },
45
46
  ];
46
47
 
47
- const bibliographyData = [
48
- {
49
- name: 'ISO 13616: Estándar Internacional del IBAN',
50
- url: 'https://www.iso.org/es/contents/data/standard/08/10/81090.html',
51
- },
52
- {
53
- name: 'SWIFT: Registro Global de BIC',
54
- url: 'https://www.theswiftcodes.com/es',
55
- },
56
- {
57
- name: 'Banco de España: Registro de Entidades',
58
- url: 'https://www.bde.es/webbe/es/estadisticas/otras-clasificaciones/clasificacion-entidades/listas-instituciones-financieras/listas-instituciones-financieras-monetarias-pais/lista-mfi-es.html',
59
- },
60
- ];
61
-
62
48
  const faqSchema: WithContext<FAQPage> = {
63
49
  '@context': 'https://schema.org',
64
50
  '@type': 'FAQPage',
@@ -99,10 +85,8 @@ export const content: ToolLocaleContent<IBANBICSwiftUI> = {
99
85
  slug,
100
86
  title,
101
87
  description,
102
- faqTitle: 'Preguntas Frecuentes',
103
88
  faq: faqData,
104
- bibliographyTitle: 'Fuentes y Referencias',
105
- bibliography: bibliographyData,
89
+ bibliography,
106
90
  howTo: howToData,
107
91
  schemas: [faqSchema, howToSchema, appSchema],
108
92
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { IBANBICSwiftUI } from '../ui';
@@ -44,21 +45,6 @@ const howToData = [
44
45
  },
45
46
  ];
46
47
 
47
- const bibliographyData = [
48
- {
49
- name: 'ISO 13616 : Norme IBAN Internationale',
50
- url: 'https://www.iso.org/contents/data/standard/08/10/81090.html',
51
- },
52
- {
53
- name: 'SWIFT : Registre Mondial des BIC',
54
- url: 'https://www.theswiftcodes.com/fr',
55
- },
56
- {
57
- name: 'Banque d\'Espagne : Registre des Entités',
58
- url: 'https://www.bde.es/webbe/fr/estadisticas/otras-clasificaciones/clasificacion-entidades/listas-instituciones-financieras/listas-instituciones-financieras-monetarias-pais/lista-mfi-es.html',
59
- },
60
- ];
61
-
62
48
  const faqSchema: WithContext<FAQPage> = {
63
49
  '@context': 'https://schema.org',
64
50
  '@type': 'FAQPage',
@@ -99,10 +85,8 @@ export const content: ToolLocaleContent<IBANBICSwiftUI> = {
99
85
  slug,
100
86
  title,
101
87
  description,
102
- faqTitle: 'Questions Fréquemment Posées',
103
88
  faq: faqData,
104
- bibliographyTitle: 'Références et Sources',
105
- bibliography: bibliographyData,
89
+ bibliography,
106
90
  howTo: howToData,
107
91
  schemas: [faqSchema, howToSchema, appSchema],
108
92
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { IBANBICSwiftUI } from '../ui';
@@ -44,17 +45,6 @@ const howToData = [
44
45
  },
45
46
  ];
46
47
 
47
- const bibliographyData = [
48
- {
49
- name: 'ISO 13616: Standar Internasional IBAN',
50
- url: 'https://www.iso.org/',
51
- },
52
- {
53
- name: 'SWIFT: Registri BIC Global',
54
- url: 'https://www.theswiftcodes.com/',
55
- },
56
- ];
57
-
58
48
  const faqSchema: WithContext<FAQPage> = {
59
49
  '@context': 'https://schema.org',
60
50
  '@type': 'FAQPage',
@@ -91,10 +81,8 @@ export const content: ToolLocaleContent<IBANBICSwiftUI> = {
91
81
  slug,
92
82
  title,
93
83
  description,
94
- faqTitle: 'Pertanyaan Umum',
95
84
  faq: faqData,
96
- bibliographyTitle: 'Sumber dan Referensi',
97
- bibliography: bibliographyData,
85
+ bibliography,
98
86
  howTo: howToData,
99
87
  schemas: [faqSchema, howToSchema, appSchema],
100
88
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { IBANBICSwiftUI } from '../ui';
@@ -44,17 +45,6 @@ const howToData = [
44
45
  },
45
46
  ];
46
47
 
47
- const bibliographyData = [
48
- {
49
- name: 'ISO 13616: Standard Internazionale dell’IBAN',
50
- url: 'https://www.iso.org/',
51
- },
52
- {
53
- name: 'SWIFT: Registro Globale dei BIC',
54
- url: 'https://www.theswiftcodes.com/',
55
- },
56
- ];
57
-
58
48
  const faqSchema: WithContext<FAQPage> = {
59
49
  '@context': 'https://schema.org',
60
50
  '@type': 'FAQPage',
@@ -91,10 +81,8 @@ export const content: ToolLocaleContent<IBANBICSwiftUI> = {
91
81
  slug,
92
82
  title,
93
83
  description,
94
- faqTitle: 'Domande Frequenti',
95
84
  faq: faqData,
96
- bibliographyTitle: 'Fonti e Riferimenti',
97
- bibliography: bibliographyData,
85
+ bibliography,
98
86
  howTo: howToData,
99
87
  schemas: [faqSchema, howToSchema, appSchema],
100
88
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { IBANBICSwiftUI } from '../ui';
@@ -44,17 +45,6 @@ const howToData = [
44
45
  },
45
46
  ];
46
47
 
47
- const bibliographyData = [
48
- {
49
- name: 'ISO 13616: IBANの国際標準',
50
- url: 'https://www.iso.org/',
51
- },
52
- {
53
- name: 'SWIFT: グローバルBICレジストリ',
54
- url: 'https://www.theswiftcodes.com/',
55
- },
56
- ];
57
-
58
48
  const faqSchema: WithContext<FAQPage> = {
59
49
  '@context': 'https://schema.org',
60
50
  '@type': 'FAQPage',
@@ -91,10 +81,8 @@ export const content: ToolLocaleContent<IBANBICSwiftUI> = {
91
81
  slug,
92
82
  title,
93
83
  description,
94
- faqTitle: 'よくある質問',
95
84
  faq: faqData,
96
- bibliographyTitle: '情報源とリファレンス',
97
- bibliography: bibliographyData,
85
+ bibliography,
98
86
  howTo: howToData,
99
87
  schemas: [faqSchema, howToSchema, appSchema],
100
88
  seo: [