w-dwdata-hub 1.0.13 → 1.0.15
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/dist/w-dwdata-hub.umd.js +2 -2
- package/dist/w-dwdata-hub.umd.js.map +1 -1
- package/docs/WDwdataHub.mjs.html +1 -1
- package/docs/decodeEntities.mjs.html +1 -1
- package/docs/extractDivContent.mjs.html +1 -1
- package/docs/fetchAiNewsAggregator.mjs.html +2 -2
- package/docs/fetchAisixiang.mjs.html +13 -13
- package/docs/fetchCnyes.mjs.html +8 -8
- package/docs/fetchGuancha.mjs.html +15 -15
- package/docs/fetchHackerNews.mjs.html +2 -2
- package/docs/fetchMoneydj.mjs.html +4 -4
- package/docs/fetchMops.mjs.html +14 -14
- package/docs/fetchRSS.mjs.html +2 -2
- package/docs/fetchStatementdog.mjs.html +6 -6
- package/docs/fetchTaifex.mjs.html +14 -14
- package/docs/fetchTpex3insti.mjs.html +5 -5
- package/docs/fetchTpexMargin.mjs.html +5 -5
- package/docs/fetchTpexStock.mjs.html +4 -4
- package/docs/fetchTwDataHoliday.mjs.html +2 -2
- package/docs/fetchTwseMargin.mjs.html +5 -5
- package/docs/fetchTwseStock.mjs.html +4 -4
- package/docs/fetchTwseT86.mjs.html +5 -5
- package/docs/fetchWithRetry.mjs.html +7 -7
- package/docs/getOptFetch.mjs.html +9 -9
- package/docs/global.html +29 -29
- package/docs/htmlToMarkdown.mjs.html +1 -1
- package/docs/index.html +1 -1
- package/docs/isYmd.mjs.html +1 -1
- package/docs/parseIntComma.mjs.html +1 -1
- package/docs/safeFilename.mjs.html +1 -1
- package/docs/stripHtml.mjs.html +1 -1
- package/docs/toDatetimeUTC8.mjs.html +1 -1
- package/docs/toRocDate.mjs.html +1 -1
- package/g.mjs +13 -13
- package/package.json +5 -5
- package/src/fetchAiNewsAggregator.mjs +1 -1
- package/src/fetchAisixiang.mjs +12 -12
- package/src/fetchCnyes.mjs +7 -7
- package/src/fetchGuancha.mjs +14 -14
- package/src/fetchHackerNews.mjs +1 -1
- package/src/fetchMoneydj.mjs +3 -3
- package/src/fetchMops.mjs +13 -13
- package/src/fetchRSS.mjs +1 -1
- package/src/fetchStatementdog.mjs +5 -5
- package/src/fetchTaifex.mjs +13 -13
- package/src/fetchTpex3insti.mjs +4 -4
- package/src/fetchTpexMargin.mjs +4 -4
- package/src/fetchTpexStock.mjs +3 -3
- package/src/fetchTwDataHoliday.mjs +1 -1
- package/src/fetchTwseMargin.mjs +4 -4
- package/src/fetchTwseStock.mjs +3 -3
- package/src/fetchTwseT86.mjs +4 -4
- package/src/fetchWithRetry.mjs +6 -6
- package/src/getOptFetch.mjs +8 -8
- package/test/fetchAiNewsAggregator.test.mjs +5 -5
- package/test/fetchAisixiang.test.mjs +1 -1
- package/test/fetchCnyes.test.mjs +5 -5
- package/test/fetchGuancha.test.mjs +1 -1
- package/test/fetchHackerNews.test.mjs +5 -5
- package/test/fetchMoneydj.test.mjs +1 -1
- package/test/fetchMops.test.mjs +2 -2
- package/test/fetchRSS.test.mjs +11 -11
- package/test/fetchStatementdog.test.mjs +1 -1
- package/test/fetchTaifex.test.mjs +1 -1
- package/test/fetchTpex3insti.test.mjs +1 -1
- package/test/fetchTpexMargin.test.mjs +1 -1
- package/test/fetchTpexStock.test.mjs +1 -1
- package/test/fetchTwDataHoliday.test.mjs +1 -1
- package/test/fetchTwseMargin.test.mjs +1 -1
- package/test/fetchTwseStock.test.mjs +1 -1
- package/test/fetchTwseT86.test.mjs +1 -1
- package/test/fetchWithRetry.test.mjs +1 -1
package/test/fetchRSS.test.mjs
CHANGED
|
@@ -40,7 +40,7 @@ describe('fetchRSS', function() {
|
|
|
40
40
|
})
|
|
41
41
|
|
|
42
42
|
it('解析RSS並轉為統一格式, from優先取creator否則退回訂閱源標題', async function() {
|
|
43
|
-
let r = await fetchRSS(svr.url('/rss/feed.xml'), {
|
|
43
|
+
let r = await fetchRSS(svr.url('/rss/feed.xml'), { useShowLog: false })
|
|
44
44
|
let rr = [
|
|
45
45
|
{
|
|
46
46
|
url: 'https://rss.example/1',
|
|
@@ -62,7 +62,7 @@ describe('fetchRSS', function() {
|
|
|
62
62
|
|
|
63
63
|
it('HTTP 404納入重試範圍, 含初始共執行maxRetries+1次', async function() {
|
|
64
64
|
let c0 = svr.getCount('/status/404')
|
|
65
|
-
await fetchRSS(svr.url('/status/404'), { maxRetries: 2, baseDelayMs: 10, maxDelayMs: 10,
|
|
65
|
+
await fetchRSS(svr.url('/status/404'), { maxRetries: 2, baseDelayMs: 10, maxDelayMs: 10, useShowLog: false })
|
|
66
66
|
.catch(() => {})
|
|
67
67
|
let r = svr.getCount('/status/404') - c0
|
|
68
68
|
let rr = 3
|
|
@@ -71,7 +71,7 @@ describe('fetchRSS', function() {
|
|
|
71
71
|
|
|
72
72
|
it('內容非XML時reject', async function() {
|
|
73
73
|
let r = null
|
|
74
|
-
await fetchRSS(svr.url('/json/ok'), { maxRetries: 0,
|
|
74
|
+
await fetchRSS(svr.url('/json/ok'), { maxRetries: 0, useShowLog: false })
|
|
75
75
|
.then(() => {
|
|
76
76
|
r = 'resolved'
|
|
77
77
|
})
|
|
@@ -83,14 +83,14 @@ describe('fetchRSS', function() {
|
|
|
83
83
|
})
|
|
84
84
|
|
|
85
85
|
it('預設不附content欄, 回傳形狀維持五欄不變', async function() {
|
|
86
|
-
let t = await fetchRSS(svr.url('/rss/feed-content.xml'), {
|
|
86
|
+
let t = await fetchRSS(svr.url('/rss/feed-content.xml'), { useShowLog: false })
|
|
87
87
|
let r = Object.keys(t[0])
|
|
88
88
|
let rr = ['url', 'time', 'title', 'description', 'from']
|
|
89
89
|
assert.strict.deepEqual(r, rr)
|
|
90
90
|
})
|
|
91
91
|
|
|
92
92
|
it('withContent為true時附content欄, 取content:encoded去標籤與實體且顯著長於description', async function() {
|
|
93
|
-
let t = await fetchRSS(svr.url('/rss/feed-content.xml'), { withContent: true,
|
|
93
|
+
let t = await fetchRSS(svr.url('/rss/feed-content.xml'), { withContent: true, useShowLog: false })
|
|
94
94
|
let r = [
|
|
95
95
|
Object.keys(t[0]),
|
|
96
96
|
t[0].description,
|
|
@@ -111,14 +111,14 @@ describe('fetchRSS', function() {
|
|
|
111
111
|
})
|
|
112
112
|
|
|
113
113
|
it('withContent對無content:encoded之feed(arXiv系)退取content, 全文與description一致', async function() {
|
|
114
|
-
let t = await fetchRSS(svr.url('/rss/feed-desc.xml'), { withContent: true,
|
|
114
|
+
let t = await fetchRSS(svr.url('/rss/feed-desc.xml'), { withContent: true, useShowLog: false })
|
|
115
115
|
let r = [t[0].content, t[0].content === t[0].description]
|
|
116
116
|
let rr = ['arXiv:2608.01234 Announce Type: new Abstract: 這是一段完整摘要,不含HTML標籤,長度足以代表全文內容本體。', true]
|
|
117
117
|
assert.strict.deepEqual(r, rr)
|
|
118
118
|
})
|
|
119
119
|
|
|
120
120
|
it('method為curl時走系統curl抓取, 解析結果與fetch相同', async function() {
|
|
121
|
-
let t = await fetchRSS(svr.url('/rss/feed.xml'), { method: 'curl', maxRetries: 0,
|
|
121
|
+
let t = await fetchRSS(svr.url('/rss/feed.xml'), { method: 'curl', maxRetries: 0, useShowLog: false })
|
|
122
122
|
let r = [t.length, t[0].title, t[0].from, t[1].from]
|
|
123
123
|
let rr = [2, 'RSS標題一', '作者甲', '測試訂閱源']
|
|
124
124
|
assert.strict.deepEqual(r, rr)
|
|
@@ -127,7 +127,7 @@ describe('fetchRSS', function() {
|
|
|
127
127
|
it('curl模式對極短feed判empty-response而reject, 證明分派確實走curl路徑', async function() {
|
|
128
128
|
//同一網址fetch模式可正常解析(見下一測試), 故此reject即為curl路徑之行為證據
|
|
129
129
|
let r = null
|
|
130
|
-
await fetchRSS(svr.url('/rss/feed-tiny.xml'), { method: 'curl', maxRetries: 0,
|
|
130
|
+
await fetchRSS(svr.url('/rss/feed-tiny.xml'), { method: 'curl', maxRetries: 0, useShowLog: false })
|
|
131
131
|
.then(() => {
|
|
132
132
|
r = 'resolved'
|
|
133
133
|
})
|
|
@@ -139,13 +139,13 @@ describe('fetchRSS', function() {
|
|
|
139
139
|
})
|
|
140
140
|
|
|
141
141
|
it('fetch模式對極短feed正常解析為0項, 與curl模式行為對照', async function() {
|
|
142
|
-
let r = await fetchRSS(svr.url('/rss/feed-tiny.xml'), { maxRetries: 0,
|
|
142
|
+
let r = await fetchRSS(svr.url('/rss/feed-tiny.xml'), { maxRetries: 0, useShowLog: false })
|
|
143
143
|
let rr = []
|
|
144
144
|
assert.strict.deepEqual(r, rr)
|
|
145
145
|
})
|
|
146
146
|
|
|
147
147
|
it('auto模式於curl失敗時退回fetch, 極短feed不reject而回0項', async function() {
|
|
148
|
-
let r = await fetchRSS(svr.url('/rss/feed-tiny.xml'), { method: 'auto', maxRetries: 0,
|
|
148
|
+
let r = await fetchRSS(svr.url('/rss/feed-tiny.xml'), { method: 'auto', maxRetries: 0, useShowLog: false })
|
|
149
149
|
let rr = []
|
|
150
150
|
assert.strict.deepEqual(r, rr)
|
|
151
151
|
})
|
|
@@ -153,7 +153,7 @@ describe('fetchRSS', function() {
|
|
|
153
153
|
it('method非法值一律退回預設fetch行為', async function() {
|
|
154
154
|
let r = []
|
|
155
155
|
for (let method of ['FETCH', 'wget', 123, null, {}]) {
|
|
156
|
-
let t = await fetchRSS(svr.url('/rss/feed.xml'), { method,
|
|
156
|
+
let t = await fetchRSS(svr.url('/rss/feed.xml'), { method, useShowLog: false })
|
|
157
157
|
r.push(t.length)
|
|
158
158
|
}
|
|
159
159
|
let rr = [2, 2, 2, 2, 2]
|
|
@@ -8,7 +8,7 @@ describe('fetchStatementdog', function() {
|
|
|
8
8
|
let svr = null
|
|
9
9
|
|
|
10
10
|
//optFast, 令重試等待縮至10毫秒, 避免測試耗時
|
|
11
|
-
let optFast = { baseDelayMs: 10, maxDelayMs: 10,
|
|
11
|
+
let optFast = { baseDelayMs: 10, maxDelayMs: 10, useShowLog: false }
|
|
12
12
|
|
|
13
13
|
before(async function() {
|
|
14
14
|
svr = await serverForTest()
|
|
@@ -10,7 +10,7 @@ describe('fetchTaifex', function() {
|
|
|
10
10
|
|
|
11
11
|
before(async function() {
|
|
12
12
|
svr = await serverForTest()
|
|
13
|
-
optFast = { baseUrl: svr.url(''), baseDelayMs: 10, maxDelayMs: 10, interRequestDelayMs: 0,
|
|
13
|
+
optFast = { baseUrl: svr.url(''), baseDelayMs: 10, maxDelayMs: 10, interRequestDelayMs: 0, useShowLog: false }
|
|
14
14
|
})
|
|
15
15
|
|
|
16
16
|
after(async function() {
|
|
@@ -10,7 +10,7 @@ describe('fetchTpex3insti', function() {
|
|
|
10
10
|
|
|
11
11
|
before(async function() {
|
|
12
12
|
svr = await serverForTest()
|
|
13
|
-
optFast = { baseUrl: svr.url(''), baseDelayMs: 10, maxDelayMs: 10,
|
|
13
|
+
optFast = { baseUrl: svr.url(''), baseDelayMs: 10, maxDelayMs: 10, useShowLog: false }
|
|
14
14
|
})
|
|
15
15
|
|
|
16
16
|
after(async function() {
|
|
@@ -10,7 +10,7 @@ describe('fetchTpexMargin', function() {
|
|
|
10
10
|
|
|
11
11
|
before(async function() {
|
|
12
12
|
svr = await serverForTest()
|
|
13
|
-
optFast = { baseUrl: svr.url(''), baseDelayMs: 10, maxDelayMs: 10,
|
|
13
|
+
optFast = { baseUrl: svr.url(''), baseDelayMs: 10, maxDelayMs: 10, useShowLog: false }
|
|
14
14
|
})
|
|
15
15
|
|
|
16
16
|
after(async function() {
|
|
@@ -10,7 +10,7 @@ describe('fetchTpexStock', function() {
|
|
|
10
10
|
|
|
11
11
|
before(async function() {
|
|
12
12
|
svr = await serverForTest()
|
|
13
|
-
optFast = { baseUrl: svr.url(''), baseDelayMs: 10, maxDelayMs: 10,
|
|
13
|
+
optFast = { baseUrl: svr.url(''), baseDelayMs: 10, maxDelayMs: 10, useShowLog: false }
|
|
14
14
|
})
|
|
15
15
|
|
|
16
16
|
after(async function() {
|
|
@@ -10,7 +10,7 @@ describe('fetchTwDataHoliday', function() {
|
|
|
10
10
|
|
|
11
11
|
before(async function() {
|
|
12
12
|
svr = await serverForTest()
|
|
13
|
-
optFast = { url: svr.url('/v1/holidaySchedule/holidaySchedule'), baseDelayMs: 10, maxDelayMs: 10,
|
|
13
|
+
optFast = { url: svr.url('/v1/holidaySchedule/holidaySchedule'), baseDelayMs: 10, maxDelayMs: 10, useShowLog: false }
|
|
14
14
|
})
|
|
15
15
|
|
|
16
16
|
after(async function() {
|
|
@@ -10,7 +10,7 @@ describe('fetchTwseMargin', function() {
|
|
|
10
10
|
|
|
11
11
|
before(async function() {
|
|
12
12
|
svr = await serverForTest()
|
|
13
|
-
optFast = { baseUrl: svr.url(''), baseDelayMs: 10, maxDelayMs: 10,
|
|
13
|
+
optFast = { baseUrl: svr.url(''), baseDelayMs: 10, maxDelayMs: 10, useShowLog: false }
|
|
14
14
|
})
|
|
15
15
|
|
|
16
16
|
after(async function() {
|
|
@@ -10,7 +10,7 @@ describe('fetchTwseStock', function() {
|
|
|
10
10
|
|
|
11
11
|
before(async function() {
|
|
12
12
|
svr = await serverForTest()
|
|
13
|
-
optFast = { baseUrl: svr.url(''), baseDelayMs: 10, maxDelayMs: 10,
|
|
13
|
+
optFast = { baseUrl: svr.url(''), baseDelayMs: 10, maxDelayMs: 10, useShowLog: false }
|
|
14
14
|
})
|
|
15
15
|
|
|
16
16
|
after(async function() {
|
|
@@ -10,7 +10,7 @@ describe('fetchTwseT86', function() {
|
|
|
10
10
|
|
|
11
11
|
before(async function() {
|
|
12
12
|
svr = await serverForTest()
|
|
13
|
-
optFast = { baseUrl: svr.url(''), baseDelayMs: 10, maxDelayMs: 10,
|
|
13
|
+
optFast = { baseUrl: svr.url(''), baseDelayMs: 10, maxDelayMs: 10, useShowLog: false }
|
|
14
14
|
})
|
|
15
15
|
|
|
16
16
|
after(async function() {
|
|
@@ -8,7 +8,7 @@ describe('fetchWithRetry', function() {
|
|
|
8
8
|
let svr = null
|
|
9
9
|
|
|
10
10
|
//optFast, 令重試等待縮至10毫秒, 避免測試耗時
|
|
11
|
-
let optFast = { baseDelayMs: 10, maxDelayMs: 10,
|
|
11
|
+
let optFast = { baseDelayMs: 10, maxDelayMs: 10, useShowLog: false }
|
|
12
12
|
|
|
13
13
|
before(async function() {
|
|
14
14
|
svr = await serverForTest()
|