turkiyem 1.5.0 → 1.6.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.
- package/README.md +166 -83
- package/package.json +2 -2
- package/src/commands/doviz.js +26 -0
- package/src/index.js +9 -0
- package/src/services/tcmbService.js +47 -0
- package/src/utils/banner.js +1 -0
- package/src/utils/display.js +25 -0
package/README.md
CHANGED
|
@@ -1,17 +1,59 @@
|
|
|
1
1
|
# turkiyem
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
AFAD deprem verileri, EGO (Ankara)
|
|
6
|
-
|
|
3
|
+
Türkiye için modern, terminal tabanlı bir **toplu taşıma + deprem + hava durumu** CLI aracı.
|
|
4
|
+
|
|
5
|
+
`turkiyem`; AFAD deprem verileri, EGO (Ankara) hat saatleri, IETT (İstanbul) hat bilgileri / planlanan sefer saatleri / canlı konum akışları ve Open-Meteo hava verilerini tek komutta toplar.
|
|
6
|
+
|
|
7
|
+
## İçindekiler
|
|
8
|
+
|
|
9
|
+
- [Özellikler](#özellikler)
|
|
10
|
+
- [Kurulum](#kurulum)
|
|
11
|
+
- [Hızlı Başlangıç](#hızlı-başlangıç)
|
|
12
|
+
- [Komut Referansı](#komut-referansı)
|
|
13
|
+
- [Veri Kaynakları](#veri-kaynakları)
|
|
14
|
+
- [Mimari ve Proje Yapısı](#mimari-ve-proje-yapısı)
|
|
15
|
+
- [Yapılandırma ve Cache](#yapılandırma-ve-cache)
|
|
16
|
+
- [Hata Yönetimi](#hata-yönetimi)
|
|
17
|
+
- [Geliştirme](#geliştirme)
|
|
18
|
+
- [Yayınlama (npm)](#yayınlama-npm)
|
|
19
|
+
- [Sık Karşılaşılan Sorunlar](#sık-karşılaşılan-sorunlar)
|
|
20
|
+
- [Lisans](#lisans)
|
|
21
|
+
|
|
22
|
+
## Özellikler
|
|
23
|
+
|
|
24
|
+
- **Deprem (AFAD):**
|
|
25
|
+
- Son 24 saat / son 7 gün deprem listesi
|
|
26
|
+
- Büyüklüğe göre filtreleme
|
|
27
|
+
- `>= 4.0` depremler için renkli vurgu
|
|
28
|
+
- **Toplu taşıma (Ankara / EGO):**
|
|
29
|
+
- Hat bilgileri
|
|
30
|
+
- Gün tipine göre sefer saatleri (Hafta içi / Cumartesi / Pazar)
|
|
31
|
+
- **Toplu taşıma (İstanbul / IETT):**
|
|
32
|
+
- GTFS tabanlı hat özeti
|
|
33
|
+
- SOAP tabanlı planlanan sefer saatleri
|
|
34
|
+
- SOAP başarısız olduğunda GTFS özete otomatik fallback
|
|
35
|
+
- `hat canli` ile canlı araç konumu (servis erişimine bağlı)
|
|
36
|
+
- **Hava durumu (Open-Meteo):**
|
|
37
|
+
- API key gerektirmeden güncel hava
|
|
38
|
+
- Saatlik tahmin (1-7 gün)
|
|
39
|
+
- Hava kalitesi (PM10, PM2.5, CO, NO2)
|
|
40
|
+
- **Ekonomi:**
|
|
41
|
+
- TCMB güncel döviz kurları listesi
|
|
42
|
+
- **CLI UX:**
|
|
43
|
+
- Komut bazlı spinner
|
|
44
|
+
- Tablo tabanlı okunabilir terminal çıktısı
|
|
45
|
+
- Global şehir ayarı (`~/.turkiyem/config.json`)
|
|
46
|
+
- Bellek içi cache ile performans optimizasyonu
|
|
7
47
|
|
|
8
48
|
## Kurulum
|
|
9
49
|
|
|
50
|
+
### Global (önerilen)
|
|
51
|
+
|
|
10
52
|
```bash
|
|
11
53
|
npm install -g turkiyem
|
|
12
54
|
```
|
|
13
55
|
|
|
14
|
-
|
|
56
|
+
### Yerel geliştirme
|
|
15
57
|
|
|
16
58
|
```bash
|
|
17
59
|
git clone <repo-url>
|
|
@@ -20,156 +62,197 @@ npm install
|
|
|
20
62
|
npm link
|
|
21
63
|
```
|
|
22
64
|
|
|
23
|
-
|
|
65
|
+
### Gereksinim
|
|
66
|
+
|
|
67
|
+
- Node.js `20+`
|
|
24
68
|
|
|
25
|
-
|
|
69
|
+
## Hızlı Başlangıç
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
turkiyem
|
|
73
|
+
turkiyem sehir istanbul
|
|
74
|
+
turkiyem hat 34AS
|
|
75
|
+
turkiyem deprem son24
|
|
76
|
+
turkiyem hava guncel
|
|
77
|
+
turkiyem doviz
|
|
78
|
+
```
|
|
26
79
|
|
|
27
|
-
##
|
|
80
|
+
## Komut Referansı
|
|
28
81
|
|
|
29
|
-
###
|
|
82
|
+
### Genel
|
|
30
83
|
|
|
31
84
|
```bash
|
|
32
85
|
turkiyem
|
|
33
86
|
turkiyem help
|
|
87
|
+
turkiyem --version
|
|
88
|
+
turkiyem temizle
|
|
34
89
|
```
|
|
35
90
|
|
|
36
|
-
###
|
|
37
|
-
|
|
38
|
-
Hat sorgulama icin once sehir secmelisiniz:
|
|
91
|
+
### Şehir seçimi
|
|
39
92
|
|
|
40
93
|
```bash
|
|
41
94
|
turkiyem sehir ankara
|
|
42
95
|
turkiyem sehir istanbul
|
|
43
96
|
```
|
|
44
97
|
|
|
45
|
-
|
|
98
|
+
> `hat` komutları seçili şehre göre çalışır.
|
|
46
99
|
|
|
47
|
-
|
|
100
|
+
### Hat sorgulama
|
|
48
101
|
|
|
49
102
|
```bash
|
|
50
103
|
# Ankara (EGO)
|
|
51
104
|
turkiyem sehir ankara
|
|
52
105
|
turkiyem hat 340
|
|
53
106
|
|
|
54
|
-
#
|
|
107
|
+
# İstanbul (IETT)
|
|
55
108
|
turkiyem sehir istanbul
|
|
56
109
|
turkiyem hat 34AS
|
|
110
|
+
```
|
|
57
111
|
|
|
58
|
-
|
|
112
|
+
İstanbul akışı:
|
|
113
|
+
- 1) GTFS hat özeti
|
|
114
|
+
- 2) SOAP planlanan sefer saatleri
|
|
115
|
+
- 3) SOAP erişilemezse GTFS özeti + bilgilendirme mesajı
|
|
116
|
+
|
|
117
|
+
### IETT canlı konum
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Özet çıktı
|
|
59
121
|
turkiyem hat canli 34AS
|
|
60
122
|
|
|
61
|
-
#
|
|
123
|
+
# Detay çıktı
|
|
62
124
|
turkiyem hat canli 34AS --detay
|
|
63
125
|
```
|
|
64
126
|
|
|
65
|
-
|
|
66
|
-
Istanbul icin once IETT SOAP Planlanan Sefer Saati servisi ile kalkis saatleri getirilir.
|
|
67
|
-
SOAP servisi gecici olarak erisilemezse otomatik olarak GTFS ozet verisine dusulur.
|
|
127
|
+
> Not: Canlı konum sadece `istanbul` şehir seçiliyken anlamlıdır ve servis erişimine bağlıdır.
|
|
68
128
|
|
|
69
|
-
|
|
70
|
-
- Hat bilgileri (GTFS)
|
|
71
|
-
- Planlanan sefer saatleri (SOAP)
|
|
72
|
-
- SOAP hatasinda: yalnizca GTFS ozet + uyari
|
|
73
|
-
|
|
74
|
-
Canli konum ozelligi:
|
|
75
|
-
- `turkiyem hat canli <numara>` varsayilan olarak ozet verir
|
|
76
|
-
- `--detay` ile arac bazli konum tablosu acilir
|
|
77
|
-
- Sadece `istanbul` seciliyken kullanilir
|
|
78
|
-
|
|
79
|
-
### Deprem Sorgulama
|
|
80
|
-
|
|
81
|
-
AFAD API uzerinden gercek zamanli deprem verileri:
|
|
129
|
+
### Deprem (AFAD)
|
|
82
130
|
|
|
83
131
|
```bash
|
|
84
|
-
# Son 24 saat
|
|
85
132
|
turkiyem deprem son24
|
|
86
|
-
|
|
87
|
-
# Son 7 gun
|
|
88
133
|
turkiyem deprem 7gun
|
|
89
|
-
|
|
90
|
-
# Buyukluge gore filtrele (ornegin >= 4.0)
|
|
91
134
|
turkiyem deprem buyukluk 4.0
|
|
92
135
|
```
|
|
93
136
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
### Hava Durumu ve Hava Kalitesi
|
|
97
|
-
|
|
98
|
-
Open-Meteo uzerinden API key gerektirmeden sorgu yapar:
|
|
137
|
+
### Hava durumu ve hava kalitesi (Open-Meteo)
|
|
99
138
|
|
|
100
139
|
```bash
|
|
101
|
-
#
|
|
140
|
+
# Seçili şehir
|
|
102
141
|
turkiyem hava guncel
|
|
103
142
|
|
|
104
|
-
#
|
|
143
|
+
# Şehir adıyla
|
|
105
144
|
turkiyem hava guncel istanbul
|
|
145
|
+
turkiyem hava saatlik ankara --gun 3
|
|
146
|
+
turkiyem hava kalite izmir
|
|
106
147
|
|
|
107
|
-
#
|
|
148
|
+
# Koordinatla
|
|
108
149
|
turkiyem hava guncel 41.0082,28.9784
|
|
150
|
+
```
|
|
109
151
|
|
|
110
|
-
|
|
111
|
-
turkiyem hava saatlik istanbul
|
|
152
|
+
### Ekonomi (TCMB)
|
|
112
153
|
|
|
113
|
-
|
|
114
|
-
|
|
154
|
+
```bash
|
|
155
|
+
# Sık kullanılan kurlar (USD, EUR vb.)
|
|
156
|
+
turkiyem doviz
|
|
115
157
|
|
|
116
|
-
#
|
|
117
|
-
turkiyem
|
|
158
|
+
# Tüm kurlar listesi
|
|
159
|
+
turkiyem doviz --tum
|
|
118
160
|
```
|
|
119
161
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
162
|
+
## Veri Kaynakları
|
|
163
|
+
|
|
164
|
+
| Kaynak | Kullanım |
|
|
165
|
+
|---|---|
|
|
166
|
+
| AFAD | Deprem verileri |
|
|
167
|
+
| EGO | Ankara hat/sefer saatleri |
|
|
168
|
+
| IETT GTFS | İstanbul hat özeti |
|
|
169
|
+
| IETT SOAP (PlanlananSeferSaati) | İstanbul planlanan sefer saatleri |
|
|
170
|
+
| IETT SOAP (SeferGerceklesme) | İstanbul canlı araç konumu |
|
|
171
|
+
| Open-Meteo Forecast | Güncel hava + saatlik tahmin |
|
|
172
|
+
| Open-Meteo Air Quality | Hava kalitesi |
|
|
173
|
+
| TCMB | Döviz kurları |
|
|
174
|
+
|
|
175
|
+
## Mimari ve Proje Yapısı
|
|
176
|
+
|
|
177
|
+
```text
|
|
178
|
+
src/
|
|
179
|
+
commands/ # CLI komut handler'ları
|
|
180
|
+
services/ # Dış API / scraping / SOAP katmanı
|
|
181
|
+
utils/ # Tablo, cache, config, banner yardımcıları
|
|
182
|
+
index.js # Commander giriş noktası
|
|
126
183
|
```
|
|
127
184
|
|
|
128
|
-
|
|
185
|
+
Mimari prensipleri:
|
|
186
|
+
- Komut katmanı ile servis katmanı ayrımı
|
|
187
|
+
- API bağımlılıklarının servis içinde izole edilmesi
|
|
188
|
+
- Tekrarlanan işlerin util katmanına alınması
|
|
189
|
+
- Tüm dış isteklerde timeout + anlamlı hata mesajı
|
|
129
190
|
|
|
130
|
-
|
|
131
|
-
turkiyem --version
|
|
132
|
-
```
|
|
191
|
+
## Yapılandırma ve Cache
|
|
133
192
|
|
|
134
|
-
|
|
193
|
+
- Seçili şehir dosyası:
|
|
194
|
+
- `~/.turkiyem/config.json`
|
|
195
|
+
- Varsayılan cache:
|
|
196
|
+
- Bellek içi (`node-cache`)
|
|
197
|
+
- Kaynak bazlı TTL (ör. IETT SOAP, hava durumu vb.)
|
|
135
198
|
|
|
136
|
-
|
|
199
|
+
Temizleme:
|
|
137
200
|
|
|
138
|
-
|
|
201
|
+
```bash
|
|
202
|
+
turkiyem temizle
|
|
203
|
+
```
|
|
139
204
|
|
|
140
|
-
|
|
141
|
-
|--------|----------|
|
|
142
|
-
| AFAD | Deprem verileri (deprem.afad.gov.tr) |
|
|
143
|
-
| EGO | Ankara otobus sefer saatleri (ego.gov.tr) |
|
|
144
|
-
| IETT | Istanbul GTFS hat verileri (data.ibb.gov.tr) |
|
|
145
|
-
| IETT SOAP | Planlanan sefer saatleri (api.ibb.gov.tr) |
|
|
146
|
-
| IETT Live SOAP | Hat bazli canli arac konumu (api.ibb.gov.tr) |
|
|
147
|
-
| Open-Meteo | Guncel hava ve saatlik tahmin (api.open-meteo.com) |
|
|
148
|
-
| Open-Meteo AQ | Hava kalitesi (air-quality-api.open-meteo.com) |
|
|
205
|
+
## Hata Yönetimi
|
|
149
206
|
|
|
150
|
-
|
|
207
|
+
Projede:
|
|
208
|
+
- `unhandledRejection` ve `uncaughtException` yakalanır
|
|
209
|
+
- API hataları kullanıcı dostu mesajlara çevrilir
|
|
210
|
+
- Ağ timeout / bağlantı sorunları için özel açıklamalar verilir
|
|
211
|
+
- Erişilemeyen kaynaklarda mümkün olan yerlerde fallback uygulanır
|
|
151
212
|
|
|
152
|
-
|
|
213
|
+
## Geliştirme
|
|
153
214
|
|
|
154
215
|
```bash
|
|
155
|
-
npm
|
|
216
|
+
npm install
|
|
217
|
+
npm start
|
|
156
218
|
```
|
|
157
219
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
3. Yayinlayin:
|
|
220
|
+
Örnek geliştirme doğrulama komutları:
|
|
161
221
|
|
|
162
222
|
```bash
|
|
163
|
-
|
|
223
|
+
node src/index.js help
|
|
224
|
+
node src/index.js deprem son24
|
|
225
|
+
node src/index.js hava guncel istanbul
|
|
226
|
+
node src/index.js hat 34AS
|
|
164
227
|
```
|
|
165
228
|
|
|
166
|
-
|
|
229
|
+
## Yayınlama (npm)
|
|
167
230
|
|
|
168
231
|
```bash
|
|
232
|
+
# 1) sürüm artır
|
|
169
233
|
npm version patch
|
|
170
|
-
|
|
234
|
+
|
|
235
|
+
# 2) publish
|
|
236
|
+
npm publish --access public
|
|
237
|
+
|
|
238
|
+
# 3) kontrol
|
|
239
|
+
npm view turkiyem version
|
|
171
240
|
```
|
|
172
241
|
|
|
242
|
+
## Sık Karşılaşılan Sorunlar
|
|
243
|
+
|
|
244
|
+
### `npm publish` 403 (aynı sürüm)
|
|
245
|
+
Önceden yayınlanmış bir sürüm numarasını tekrar gönderemezsiniz.
|
|
246
|
+
Çözüm: `npm version patch|minor|major` sonrası tekrar publish.
|
|
247
|
+
|
|
248
|
+
### `npm publish` 403 (2FA / token)
|
|
249
|
+
NPM hesabınız için 2FA veya granular token gereksinimi olabilir.
|
|
250
|
+
Çözüm: NPM hesabında token/2FA ayarlarını tamamlayın.
|
|
251
|
+
|
|
252
|
+
### IETT canlı konum 500
|
|
253
|
+
SOAP servis tarafı geçici olarak hata döndürebilir.
|
|
254
|
+
Bu durumda kısa süre sonra tekrar deneyin.
|
|
255
|
+
|
|
173
256
|
## Lisans
|
|
174
257
|
|
|
175
258
|
MIT
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "turkiyem",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "Türkiye Toplu Taşıma ve Deprem CLI aracı - AFAD deprem verileri, EGO hat saatleri ve IETT SOAP/GTFS bilgileri",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./src/index.js",
|
|
7
7
|
"bin": {
|
|
8
|
-
"turkiyem": "
|
|
8
|
+
"turkiyem": "src/index.js"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
11
|
"start": "node src/index.js",
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import { fetchExchangeRates } from '../services/tcmbService.js';
|
|
4
|
+
import { createDovizTable } from '../utils/display.js';
|
|
5
|
+
|
|
6
|
+
export async function dovizKurlari(options) {
|
|
7
|
+
const spinner = ora('TCMB döviz kurları alınıyor...').start();
|
|
8
|
+
|
|
9
|
+
try {
|
|
10
|
+
const result = await fetchExchangeRates();
|
|
11
|
+
spinner.succeed(`TCMB kurları alındı (Tarih: ${result.date || '-'})`);
|
|
12
|
+
|
|
13
|
+
const popular = ['USD', 'EUR', 'GBP', 'CHF', 'JPY', 'CAD', 'AUD', 'DKK', 'SEK', 'NOK'];
|
|
14
|
+
const kurlar = options.tum ? result.currencies : result.currencies.filter(c => popular.includes(c.kodu));
|
|
15
|
+
|
|
16
|
+
console.log('');
|
|
17
|
+
console.log(createDovizTable({ ...result, currencies: kurlar }));
|
|
18
|
+
|
|
19
|
+
if (!options.tum) {
|
|
20
|
+
console.log('');
|
|
21
|
+
console.log(chalk.gray(' Tüm kurları görmek için: turkiyem doviz --tum'));
|
|
22
|
+
}
|
|
23
|
+
} catch (err) {
|
|
24
|
+
spinner.fail(chalk.red(err.message));
|
|
25
|
+
}
|
|
26
|
+
}
|
package/src/index.js
CHANGED
|
@@ -9,6 +9,7 @@ import { hatCanliSorgula, hatSorgula } from './commands/hat.js';
|
|
|
9
9
|
import { depremSon24, deprem7Gun, depremBuyukluk } from './commands/deprem.js';
|
|
10
10
|
import { havaGuncel, havaKalitesi, havaSaatlik } from './commands/hava.js';
|
|
11
11
|
import { temizle } from './commands/temizle.js';
|
|
12
|
+
import { dovizKurlari } from './commands/doviz.js';
|
|
12
13
|
|
|
13
14
|
const require = createRequire(import.meta.url);
|
|
14
15
|
const pkg = require('../package.json');
|
|
@@ -113,6 +114,14 @@ program
|
|
|
113
114
|
temizle();
|
|
114
115
|
});
|
|
115
116
|
|
|
117
|
+
program
|
|
118
|
+
.command('doviz')
|
|
119
|
+
.description('TCMB güncel döviz kurlarını sorgula')
|
|
120
|
+
.option('--tum', 'Tüm kurları göster')
|
|
121
|
+
.action(async (options) => {
|
|
122
|
+
await dovizKurlari(options);
|
|
123
|
+
});
|
|
124
|
+
|
|
116
125
|
program
|
|
117
126
|
.command('help')
|
|
118
127
|
.description('Yardım göster')
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import * as cheerio from 'cheerio';
|
|
3
|
+
import { getCached, setCached } from '../utils/cache.js';
|
|
4
|
+
|
|
5
|
+
const CACHE_KEY = 'tcmb_kur';
|
|
6
|
+
const CACHE_TTL = 3600; // 1 saat
|
|
7
|
+
const URL = 'https://www.tcmb.gov.tr/kurlar/today.xml';
|
|
8
|
+
|
|
9
|
+
export async function fetchExchangeRates() {
|
|
10
|
+
const cached = getCached(CACHE_KEY);
|
|
11
|
+
if (cached) return cached;
|
|
12
|
+
|
|
13
|
+
try {
|
|
14
|
+
const response = await axios.get(URL, { timeout: 10000 });
|
|
15
|
+
const $ = cheerio.load(response.data, { xmlMode: true });
|
|
16
|
+
|
|
17
|
+
const date = $('Tarih_Date').attr('Tarih');
|
|
18
|
+
const bultenNo = $('Tarih_Date').attr('Bulten_No');
|
|
19
|
+
|
|
20
|
+
const currencies = [];
|
|
21
|
+
|
|
22
|
+
$('Currency').each((_, el) => {
|
|
23
|
+
const isim = $(el).find('Isim').text().trim();
|
|
24
|
+
const code = $(el).attr('CurrencyCode');
|
|
25
|
+
const alis = $(el).find('ForexBuying').text().trim();
|
|
26
|
+
const satis = $(el).find('ForexSelling').text().trim();
|
|
27
|
+
|
|
28
|
+
if (isim && code) {
|
|
29
|
+
currencies.push({
|
|
30
|
+
isim,
|
|
31
|
+
kodu: code,
|
|
32
|
+
alis,
|
|
33
|
+
satis
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
const result = { date, bultenNo, currencies };
|
|
39
|
+
setCached(CACHE_KEY, result, CACHE_TTL);
|
|
40
|
+
return result;
|
|
41
|
+
} catch (error) {
|
|
42
|
+
if (error.code === 'ECONNABORTED' || error.message.includes('timeout')) {
|
|
43
|
+
throw new Error('TCMB servisine erişilemedi (Zaman aşımı).');
|
|
44
|
+
}
|
|
45
|
+
throw new Error(`TCMB veri hatası: ${error.message}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
package/src/utils/banner.js
CHANGED
|
@@ -29,6 +29,7 @@ export function printHelp() {
|
|
|
29
29
|
console.log(chalk.cyan(' turkiyem deprem son24') + chalk.gray(' Son 24 saat depremler'));
|
|
30
30
|
console.log(chalk.cyan(' turkiyem deprem 7gun') + chalk.gray(' Son 7 gün depremler'));
|
|
31
31
|
console.log(chalk.cyan(' turkiyem deprem buyukluk <deger>') + chalk.gray(' Büyüklüğe göre filtrele'));
|
|
32
|
+
console.log(chalk.cyan(' turkiyem doviz [--tum]') + chalk.gray(' TCMB Döviz kurları'));
|
|
32
33
|
console.log(chalk.cyan(' turkiyem temizle') + chalk.gray(' Cache ve config temizle'));
|
|
33
34
|
console.log(chalk.cyan(' turkiyem --version') + chalk.gray(' Versiyon göster'));
|
|
34
35
|
console.log('');
|
package/src/utils/display.js
CHANGED
|
@@ -247,3 +247,28 @@ export function createIettLiveDetailTable(liveData) {
|
|
|
247
247
|
|
|
248
248
|
return table.toString();
|
|
249
249
|
}
|
|
250
|
+
|
|
251
|
+
export function createDovizTable(result) {
|
|
252
|
+
const table = new Table({
|
|
253
|
+
head: [
|
|
254
|
+
chalk.white.bold('Kod'),
|
|
255
|
+
chalk.white.bold('Döviz Cinsi'),
|
|
256
|
+
chalk.white.bold('Alış (TL)'),
|
|
257
|
+
chalk.white.bold('Satış (TL)'),
|
|
258
|
+
],
|
|
259
|
+
colWidths: [8, 30, 15, 15],
|
|
260
|
+
style: { head: [], border: ['gray'] },
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
for (const c of result.currencies) {
|
|
264
|
+
if (!c.alis && !c.satis) continue;
|
|
265
|
+
table.push([
|
|
266
|
+
chalk.cyan(c.kodu),
|
|
267
|
+
c.isim,
|
|
268
|
+
c.alis || '-',
|
|
269
|
+
c.satis || '-'
|
|
270
|
+
]);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
return table.toString();
|
|
274
|
+
}
|