@jjlmoya/utils-finance 1.16.0 → 1.18.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 (54) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +3 -1
  3. package/src/entries.ts +7 -1
  4. package/src/tests/locale_completeness.test.ts +1 -1
  5. package/src/tests/tool_validation.test.ts +2 -2
  6. package/src/tool/financialFreedom/bibliography.astro +14 -0
  7. package/src/tool/financialFreedom/bibliography.ts +12 -0
  8. package/src/tool/financialFreedom/component.astro +253 -0
  9. package/src/tool/financialFreedom/entry.ts +27 -0
  10. package/src/tool/financialFreedom/financial-freedom-calculator.css +346 -0
  11. package/src/tool/financialFreedom/i18n/de.ts +123 -0
  12. package/src/tool/financialFreedom/i18n/en.ts +182 -0
  13. package/src/tool/financialFreedom/i18n/es.ts +182 -0
  14. package/src/tool/financialFreedom/i18n/fr.ts +123 -0
  15. package/src/tool/financialFreedom/i18n/id.ts +123 -0
  16. package/src/tool/financialFreedom/i18n/it.ts +123 -0
  17. package/src/tool/financialFreedom/i18n/ja.ts +123 -0
  18. package/src/tool/financialFreedom/i18n/ko.ts +123 -0
  19. package/src/tool/financialFreedom/i18n/nl.ts +123 -0
  20. package/src/tool/financialFreedom/i18n/pl.ts +123 -0
  21. package/src/tool/financialFreedom/i18n/pt.ts +123 -0
  22. package/src/tool/financialFreedom/i18n/ru.ts +123 -0
  23. package/src/tool/financialFreedom/i18n/sv.ts +123 -0
  24. package/src/tool/financialFreedom/i18n/tr.ts +123 -0
  25. package/src/tool/financialFreedom/i18n/zh.ts +123 -0
  26. package/src/tool/financialFreedom/index.ts +10 -0
  27. package/src/tool/financialFreedom/logic.ts +68 -0
  28. package/src/tool/financialFreedom/seo.astro +13 -0
  29. package/src/tool/financialFreedom/ui.ts +26 -0
  30. package/src/tool/profitability/bibliography.astro +14 -0
  31. package/src/tool/profitability/bibliography.ts +12 -0
  32. package/src/tool/profitability/component.astro +249 -0
  33. package/src/tool/profitability/entry.ts +27 -0
  34. package/src/tool/profitability/i18n/de.ts +116 -0
  35. package/src/tool/profitability/i18n/en.ts +165 -0
  36. package/src/tool/profitability/i18n/es.ts +152 -0
  37. package/src/tool/profitability/i18n/fr.ts +112 -0
  38. package/src/tool/profitability/i18n/id.ts +112 -0
  39. package/src/tool/profitability/i18n/it.ts +112 -0
  40. package/src/tool/profitability/i18n/ja.ts +112 -0
  41. package/src/tool/profitability/i18n/ko.ts +112 -0
  42. package/src/tool/profitability/i18n/nl.ts +112 -0
  43. package/src/tool/profitability/i18n/pl.ts +112 -0
  44. package/src/tool/profitability/i18n/pt.ts +112 -0
  45. package/src/tool/profitability/i18n/ru.ts +112 -0
  46. package/src/tool/profitability/i18n/sv.ts +112 -0
  47. package/src/tool/profitability/i18n/tr.ts +112 -0
  48. package/src/tool/profitability/i18n/zh.ts +112 -0
  49. package/src/tool/profitability/index.ts +10 -0
  50. package/src/tool/profitability/logic.ts +43 -0
  51. package/src/tool/profitability/profitability-calculator.css +263 -0
  52. package/src/tool/profitability/seo.astro +15 -0
  53. package/src/tool/profitability/ui.ts +20 -0
  54. package/src/tools.ts +3 -1
@@ -0,0 +1,123 @@
1
+ import type { FinancialFreedomUI } from '../ui';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ export const ui: FinancialFreedomUI = {
5
+ labelSavings: 'Totala Sparande',
6
+ labelExpenses: 'Nuvarande Utgifter',
7
+ labelMonthly: 'Månadsvis',
8
+ labelYearly: 'Årsvis',
9
+ labelTimeRemaining: 'Din Ekonomiska Runway',
10
+ labelYears: 'År',
11
+ labelMonths: 'Månader',
12
+ labelDays: 'Dagar',
13
+ labelYearsShort: 'å',
14
+ labelMonthsShort: 'm',
15
+ labelDaysShort: 'd',
16
+ labelStatus: 'Finansiell Säkerhetsstatus',
17
+ labelRedZone: 'Röd Zon: Hög Risk',
18
+ labelYellowZone: 'Gul Zon: Stabil',
19
+ labelGreenZone: 'Grön Zon: Finansiell Frihet',
20
+ labelBurnRateDaily: 'Daglig Utgiftstakt',
21
+ labelBurnRateMonthly: 'Månatlig Utgiftstakt',
22
+ labelWhatIf: '10%-Regeln',
23
+ labelWhatIfDescription: 'Genom att minska dina utgifter med bara 10% kan du förlänga din runway avsevärt.',
24
+ labelGainTime: 'Extra Överlevnadstid',
25
+ labelCopyResult: 'Kopiera Sammanfattning',
26
+ labelCopied: 'Kopierad!',
27
+ };
28
+
29
+ const slug = 'ekonomisk-frihet-kalkylator-overlevnadstid';
30
+ const title = 'Kalkylator för Ekonomisk Frihet & Överlevnadstid';
31
+ const description = 'Beräkna exakt hur länge dina besparingar räcker. Vårt verktyg hjälper dig att visualisera din ekonomiska självständighet.';
32
+
33
+ const faq = [
34
+ {
35
+ question: 'Vad är en bra runway?',
36
+ answer: 'Experter rekommenderar minst 3 till 6 månader. För verklig frihet, sikta på 2 år eller mer.',
37
+ },
38
+ {
39
+ question: 'Inkluderar denna kalkylator inflation?',
40
+ answer: 'Detta verktyg är utformat för omedelbar beräkning av likvida medel mot nuvarande utgifter.',
41
+ },
42
+ {
43
+ question: 'Vad är "Burn Rate" i privatekonomi?',
44
+ answer: 'Burn rate är takten med vilken du spenderar dina besparingar för att täcka levnadskostnader.',
45
+ },
46
+ ];
47
+
48
+ const howTo = [
49
+ {
50
+ name: 'Ange dina totala besparingar',
51
+ text: 'Fyll i det totala beloppet av likvida medel du har tillgång till.',
52
+ },
53
+ {
54
+ name: 'Ställ in utgifter',
55
+ text: 'Ange hur mycket du spenderar per månad eller år.',
56
+ },
57
+ {
58
+ name: 'Analysera säkerhetszon',
59
+ text: 'Kontrollera om du är i röd, gul eller grön zon.',
60
+ },
61
+ ];
62
+
63
+ export const content: ToolLocaleContent<FinancialFreedomUI> = {
64
+ slug,
65
+ title,
66
+ description,
67
+ ui,
68
+ seo: [
69
+ {
70
+ type: 'title',
71
+ text: 'Vad är en ekonomisk runway?',
72
+ level: 2,
73
+ },
74
+ {
75
+ type: 'paragraph',
76
+ html: 'En <strong>ekonomisk runway</strong> är den tid du kan leva utan nya inkomster. Det är det ultimata måttet på ekonomisk frihet.',
77
+ },
78
+ ],
79
+ faq,
80
+ bibliography: [
81
+ {
82
+ name: 'Principer för FIRE-rörelsen',
83
+ url: 'https://en.wikipedia.org/wiki/FIRE_movement',
84
+ },
85
+ ],
86
+ howTo,
87
+ schemas: [
88
+ {
89
+ '@context': 'https://schema.org',
90
+ '@type': 'FinancialProduct',
91
+ name: title,
92
+ description,
93
+ },
94
+ {
95
+ '@context': 'https://schema.org',
96
+ '@type': 'FAQPage',
97
+ mainEntity: faq.map((f) => ({
98
+ '@type': 'Question',
99
+ name: f.question,
100
+ acceptedAnswer: { '@type': 'Answer', text: f.answer },
101
+ })),
102
+ },
103
+ {
104
+ '@context': 'https://schema.org',
105
+ '@type': 'HowTo',
106
+ name: title,
107
+ step: howTo.map((h, i) => ({
108
+ '@type': 'HowToStep',
109
+ position: i + 1,
110
+ name: h.name,
111
+ text: h.text,
112
+ })),
113
+ },
114
+ {
115
+ '@context': 'https://schema.org',
116
+ '@type': 'SoftwareApplication',
117
+ name: title,
118
+ applicationCategory: 'FinanceApplication',
119
+ operatingSystem: 'All',
120
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
121
+ },
122
+ ],
123
+ };
@@ -0,0 +1,123 @@
1
+ import type { FinancialFreedomUI } from '../ui';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ export const ui: FinancialFreedomUI = {
5
+ labelSavings: 'Toplam Tasarruf',
6
+ labelExpenses: 'Mevcut Giderler',
7
+ labelMonthly: 'Aylık',
8
+ labelYearly: 'Yıllık',
9
+ labelTimeRemaining: 'Hayatta Kalma Süreniz',
10
+ labelYears: 'Yıl',
11
+ labelMonths: 'Ay',
12
+ labelDays: 'Gün',
13
+ labelYearsShort: 'y',
14
+ labelMonthsShort: 'a',
15
+ labelDaysShort: 'g',
16
+ labelStatus: 'Finansal Güvenlik Durumu',
17
+ labelRedZone: 'Kırmızı Bölge: Yüksek Risk',
18
+ labelYellowZone: 'Sarı Bölge: Stabil',
19
+ labelGreenZone: 'Yeşil Bölge: Finansal Özgürlük',
20
+ labelBurnRateDaily: 'Günlük Harcama Oranı',
21
+ labelBurnRateMonthly: 'Aylık Harcama Oranı',
22
+ labelWhatIf: '%10 Kuralı',
23
+ labelWhatIfDescription: 'Giderlerinizi sadece %10 azaltarak, hayatta kalma sürenizi önemli ölçüde artırabilirsiniz.',
24
+ labelGainTime: 'Ekstra Hayatta Kalma Süresi',
25
+ labelCopyResult: 'Özeti Kopyala',
26
+ labelCopied: 'Kopyalandı!',
27
+ };
28
+
29
+ const slug = 'finansal-ozgurluk-hesaplama-hayatta-kalma-suresi';
30
+ const title = 'Finansal Özgürlük ve Hayatta Kalma Süresi Hesaplayıcı';
31
+ const description = 'Tasarruflarınızın tam olarak ne kadar süreceğini hesaplayın. Aracımız finansal bağımsızlığınızı görselleştirmenize yardımcı olur.';
32
+
33
+ const faq = [
34
+ {
35
+ question: 'İyi bir hayatta kalma süresi nedir?',
36
+ answer: 'Uzmanlar en az 3 ila 6 aylık gideri önermektedir. Gerçek özgürlük için 2 yıl veya üzerini hedefleyin.',
37
+ },
38
+ {
39
+ question: 'Bu hesaplayıcı enflasyonu içeriyor mu?',
40
+ answer: 'Bu araç, mevcut giderlere karşı mevcut likit varlıkların anlık hesaplanması için tasarlanmıştır.',
41
+ },
42
+ {
43
+ question: 'Kişisel finansta "Burn Rate" nedir?',
44
+ answer: 'Burn rate (tüketim hızı), yaşam giderlerinizi karşılamak için tasarruflarınızı harcama hızınızdır.',
45
+ },
46
+ ];
47
+
48
+ const howTo = [
49
+ {
50
+ name: 'Toplam tasarrufunuzu girin',
51
+ text: 'Sahip olduğunuz toplam nakit veya likit varlıkları girin.',
52
+ },
53
+ {
54
+ name: 'Giderlerinizi belirleyin',
55
+ text: 'Aylık veya yıllık harcamalarınızı girin.',
56
+ },
57
+ {
58
+ name: 'Güvenlik bölgenizi analiz edin',
59
+ text: 'Kırmızı, Sarı veya Yeşil bölgede olup olmadığınızı kontrol edin.',
60
+ },
61
+ ];
62
+
63
+ export const content: ToolLocaleContent<FinancialFreedomUI> = {
64
+ slug,
65
+ title,
66
+ description,
67
+ ui,
68
+ seo: [
69
+ {
70
+ type: 'title',
71
+ text: 'Finansal Hayatta Kalma Süresi Nedir?',
72
+ level: 2,
73
+ },
74
+ {
75
+ type: 'paragraph',
76
+ html: '<strong>Hayatta kalma süresi</strong> (runway), yeni bir gelir olmadan yaşayabileceğiniz süredir. Finansal özgürlüğün temel ölçütüdür.',
77
+ },
78
+ ],
79
+ faq,
80
+ bibliography: [
81
+ {
82
+ name: 'FIRE Hareketi Prensipleri',
83
+ url: 'https://en.wikipedia.org/wiki/FIRE_movement',
84
+ },
85
+ ],
86
+ howTo,
87
+ schemas: [
88
+ {
89
+ '@context': 'https://schema.org',
90
+ '@type': 'FinancialProduct',
91
+ name: title,
92
+ description,
93
+ },
94
+ {
95
+ '@context': 'https://schema.org',
96
+ '@type': 'FAQPage',
97
+ mainEntity: faq.map((f) => ({
98
+ '@type': 'Question',
99
+ name: f.question,
100
+ acceptedAnswer: { '@type': 'Answer', text: f.answer },
101
+ })),
102
+ },
103
+ {
104
+ '@context': 'https://schema.org',
105
+ '@type': 'HowTo',
106
+ name: title,
107
+ step: howTo.map((h, i) => ({
108
+ '@type': 'HowToStep',
109
+ position: i + 1,
110
+ name: h.name,
111
+ text: h.text,
112
+ })),
113
+ },
114
+ {
115
+ '@context': 'https://schema.org',
116
+ '@type': 'SoftwareApplication',
117
+ name: title,
118
+ applicationCategory: 'FinanceApplication',
119
+ operatingSystem: 'All',
120
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
121
+ },
122
+ ],
123
+ };
@@ -0,0 +1,123 @@
1
+ import type { FinancialFreedomUI } from '../ui';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ export const ui: FinancialFreedomUI = {
5
+ labelSavings: '总储蓄额',
6
+ labelExpenses: '当前支出',
7
+ labelMonthly: '每月',
8
+ labelYearly: '每年',
9
+ labelTimeRemaining: '您的生存跑道',
10
+ labelYears: '年',
11
+ labelMonths: '个月',
12
+ labelDays: '天',
13
+ labelYearsShort: '年',
14
+ labelMonthsShort: '月',
15
+ labelDaysShort: '日',
16
+ labelStatus: '财务安全状态',
17
+ labelRedZone: '红区:高风险',
18
+ labelYellowZone: '黄区:稳定',
19
+ labelGreenZone: '绿区:财务自由',
20
+ labelBurnRateDaily: '每日支出率',
21
+ labelBurnRateMonthly: '每月支出率',
22
+ labelWhatIf: '10% 节约法则',
23
+ labelWhatIfDescription: '通过减少仅 10% 的支出,您可以显著延长生存跑道。',
24
+ labelGainTime: '额外生存时间',
25
+ labelCopyResult: '复制摘要',
26
+ labelCopied: '已复制!',
27
+ };
28
+
29
+ const slug = 'financial-freedom-calculator';
30
+ const title = '财务自由与生存跑道计算器';
31
+ const description = '精确计算您的储蓄能维持多久。我们的生存跑道工具可帮助您可视化财务独立。';
32
+
33
+ const faq = [
34
+ {
35
+ question: '多少生存跑道才算好?',
36
+ answer: '专家通常建议至少预留 3 到 6 个月的支出。为了真正的自由,目标应设定为 2 年或更长。',
37
+ },
38
+ {
39
+ question: '此计算器是否包含通货膨胀?',
40
+ answer: '此工具专为流动资产与当前支出的即时计算而设计。',
41
+ },
42
+ {
43
+ question: '个人财务中的“烧钱率”是什么?',
44
+ answer: '烧钱率是指您消耗储蓄以支付生活费用的速度。',
45
+ },
46
+ ];
47
+
48
+ const howTo = [
49
+ {
50
+ name: '输入总储蓄额',
51
+ text: '输入您拥有的现金或流动资产总额。',
52
+ },
53
+ {
54
+ name: '设置定期支出',
55
+ text: '输入您每月或每年的支出金额。',
56
+ },
57
+ {
58
+ name: '分析安全区域',
59
+ text: '检查您处于红区、黄区还是绿区。',
60
+ },
61
+ ];
62
+
63
+ export const content: ToolLocaleContent<FinancialFreedomUI> = {
64
+ slug,
65
+ title,
66
+ description,
67
+ ui,
68
+ seo: [
69
+ {
70
+ type: 'title',
71
+ text: '什么是财务生存跑道?',
72
+ level: 2,
73
+ },
74
+ {
75
+ type: 'paragraph',
76
+ html: '<strong>生存跑道</strong>(runway)是指在没有新收入的情况下您可以维持生活的时间。它是衡量财务自由的终极指标。',
77
+ },
78
+ ],
79
+ faq,
80
+ bibliography: [
81
+ {
82
+ name: 'FIRE 运动原则',
83
+ url: 'https://zh.wikipedia.org/wiki/FIRE_运动',
84
+ },
85
+ ],
86
+ howTo,
87
+ schemas: [
88
+ {
89
+ '@context': 'https://schema.org',
90
+ '@type': 'FinancialProduct',
91
+ name: title,
92
+ description,
93
+ },
94
+ {
95
+ '@context': 'https://schema.org',
96
+ '@type': 'FAQPage',
97
+ mainEntity: faq.map((f) => ({
98
+ '@type': 'Question',
99
+ name: f.question,
100
+ acceptedAnswer: { '@type': 'Answer', text: f.answer },
101
+ })),
102
+ },
103
+ {
104
+ '@context': 'https://schema.org',
105
+ '@type': 'HowTo',
106
+ name: title,
107
+ step: howTo.map((h, i) => ({
108
+ '@type': 'HowToStep',
109
+ position: i + 1,
110
+ name: h.name,
111
+ text: h.text,
112
+ })),
113
+ },
114
+ {
115
+ '@context': 'https://schema.org',
116
+ '@type': 'SoftwareApplication',
117
+ name: title,
118
+ applicationCategory: 'FinanceApplication',
119
+ operatingSystem: 'All',
120
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
121
+ },
122
+ ],
123
+ };
@@ -0,0 +1,10 @@
1
+ import { financialFreedom } from './entry';
2
+ import type { ToolDefinition } from '../../types';
3
+
4
+ export * from './entry';
5
+ export const FINANCIAL_FREEDOM_TOOL: ToolDefinition = {
6
+ entry: financialFreedom,
7
+ Component: () => import('./component.astro'),
8
+ SEOComponent: () => import('./seo.astro'),
9
+ BibliographyComponent: () => import('./bibliography.astro'),
10
+ };
@@ -0,0 +1,68 @@
1
+ export interface FinancialFreedomInput {
2
+ savings: number;
3
+ expenses: number;
4
+ expensePeriod: 'monthly' | 'yearly';
5
+ }
6
+
7
+ export interface HumanTime {
8
+ years: number;
9
+ months: number;
10
+ days: number;
11
+ }
12
+
13
+ export interface FinancialFreedomResult {
14
+ dailyBurn: number;
15
+ monthlyBurn: number;
16
+ totalDays: number;
17
+ humanTime: HumanTime;
18
+ status: 'red' | 'yellow' | 'green';
19
+ gainWithSavings: HumanTime;
20
+ }
21
+
22
+ export class FinancialFreedomCalculator {
23
+ static calculate(input: FinancialFreedomInput): FinancialFreedomResult {
24
+ const { savings, expenses, expensePeriod } = input;
25
+
26
+ const annualExpenses = expensePeriod === 'monthly' ? expenses * 12 : expenses;
27
+ const monthlyBurn = annualExpenses / 12;
28
+ const dailyBurn = annualExpenses / 365;
29
+
30
+ const totalDays = dailyBurn > 0 ? savings / dailyBurn : 0;
31
+
32
+ const humanTime = this.calculateHumanTime(totalDays);
33
+
34
+ let status: 'red' | 'yellow' | 'green' = 'red';
35
+ if (totalDays > 730) {
36
+ status = 'green';
37
+ } else if (totalDays > 180) {
38
+ status = 'yellow';
39
+ }
40
+
41
+ const potentialSavings = annualExpenses * 0.1;
42
+ const newAnnualExpenses = annualExpenses - potentialSavings;
43
+ const newDailyBurn = newAnnualExpenses / 365;
44
+ const newTotalDays = newDailyBurn > 0 ? savings / newDailyBurn : 0;
45
+
46
+ const gainWithSavings = this.calculateHumanTime(newTotalDays - totalDays);
47
+
48
+ return {
49
+ dailyBurn: Number(dailyBurn.toFixed(2)),
50
+ monthlyBurn: Number(monthlyBurn.toFixed(2)),
51
+ totalDays: Math.floor(totalDays),
52
+ humanTime,
53
+ status,
54
+ gainWithSavings
55
+ };
56
+ }
57
+
58
+ private static calculateHumanTime(totalDays: number): HumanTime {
59
+ if (totalDays <= 0) return { years: 0, months: 0, days: 0 };
60
+
61
+ const years = Math.floor(totalDays / 365);
62
+ const remainingDaysAfterYears = totalDays % 365;
63
+ const months = Math.floor(remainingDaysAfterYears / 30.44);
64
+ const days = Math.floor(remainingDaysAfterYears % 30.44);
65
+
66
+ return { years, months, days };
67
+ }
68
+ }
@@ -0,0 +1,13 @@
1
+ ---
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
3
+ import type { FinancialFreedomLocaleContent } from './entry';
4
+
5
+ interface Props {
6
+ content: FinancialFreedomLocaleContent;
7
+ locale: string;
8
+ }
9
+
10
+ const { content, locale } = Astro.props;
11
+ ---
12
+
13
+ {content.seo && content.seo.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -0,0 +1,26 @@
1
+ export interface FinancialFreedomUI extends Record<string, string> {
2
+ labelTitle: string;
3
+ labelSavings: string;
4
+ labelExpenses: string;
5
+ labelMonthly: string;
6
+ labelYearly: string;
7
+ labelCurrency: string;
8
+ labelDailyBurn: string;
9
+ labelTimeRemaining: string;
10
+ labelYears: string;
11
+ labelMonths: string;
12
+ labelDays: string;
13
+ labelYearsShort: string;
14
+ labelMonthsShort: string;
15
+ labelDaysShort: string;
16
+ labelStatus: string;
17
+ labelRedZone: string;
18
+ labelYellowZone: string;
19
+ labelGreenZone: string;
20
+ labelWhatIf: string;
21
+ labelWhatIfDescription: string;
22
+ labelGainTime: string;
23
+ labelBurnRateTitle: string;
24
+ labelBurnRateDaily: string;
25
+ labelBurnRateMonthly: string;
26
+ }
@@ -0,0 +1,14 @@
1
+ ---
2
+ import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
+ import { profitability } from './index';
4
+ import type { KnownLocale } from '../../types';
5
+
6
+ interface Props {
7
+ locale?: KnownLocale;
8
+ }
9
+
10
+ const { locale = 'en' } = Astro.props;
11
+ const content = await profitability.i18n[locale]?.();
12
+ ---
13
+
14
+ {content && <SharedBibliography links={content.bibliography} />}
@@ -0,0 +1,12 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'Return on Investment (ROI) - Investopedia',
6
+ url: 'https://www.investopedia.com/terms/r/returnoninvestment.asp',
7
+ },
8
+ {
9
+ name: 'Compound Annual Growth Rate (CAGR) - Investopedia',
10
+ url: 'https://www.investopedia.com/terms/c/cagr.asp',
11
+ }
12
+ ];