@sefinek/google-tts-api 2.1.4 → 2.1.6
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 +2 -2
- package/dist/assertInputTypes.js +1 -2
- package/dist/getAudioBase64.d.ts +0 -28
- package/dist/getAudioBase64.d.ts.map +1 -1
- package/dist/getAudioBase64.js +54 -150
- package/dist/getAudioUrl.d.ts +0 -28
- package/dist/getAudioUrl.d.ts.map +1 -1
- package/dist/getAudioUrl.js +10 -39
- package/dist/index.js +2 -3
- package/dist/splitLongText.d.ts +0 -10
- package/dist/splitLongText.d.ts.map +1 -1
- package/dist/splitLongText.js +15 -33
- package/eslint.config.mjs +56 -0
- package/example/british.js +3 -3
- package/example/chinese.js +3 -3
- package/example/download-by-audio-url.js +4 -4
- package/example/english.js +3 -3
- package/example/long-chinese-text.js +4 -5
- package/example/long-english-text.js +4 -4
- package/package.json +9 -6
- package/test/basic.test.js +2 -2
- package/test/param.test.js +2 -2
- package/test/split-long-text.test.js +2 -2
- package/coverage/assertInputTypes.ts.html +0 -142
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/favicon.png +0 -0
- package/coverage/getAudioBase64.ts.html +0 -481
- package/coverage/getAudioUrl.ts.html +0 -361
- package/coverage/index.html +0 -176
- package/coverage/index.ts.html +0 -97
- package/coverage/lcov-report/assertInputTypes.ts.html +0 -142
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/getAudioBase64.ts.html +0 -481
- package/coverage/lcov-report/getAudioUrl.ts.html +0 -361
- package/coverage/lcov-report/index.html +0 -176
- package/coverage/lcov-report/index.ts.html +0 -97
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/splitLongText.ts.html +0 -319
- package/coverage/lcov.info +0 -257
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -196
- package/coverage/splitLongText.ts.html +0 -319
- package/dist/assertInputTypes.js.map +0 -1
- package/dist/getAudioBase64.js.map +0 -1
- package/dist/getAudioUrl.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/splitLongText.js.map +0 -1
- package/tsconfig.json +0 -73
|
@@ -1,481 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for getAudioBase64.ts</title>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="base.css" />
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
|
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
-
<style type='text/css'>
|
|
13
|
-
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(sort-arrow-sprite.png);
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
17
|
-
</head>
|
|
18
|
-
|
|
19
|
-
<body>
|
|
20
|
-
<div class='wrapper'>
|
|
21
|
-
<div class='pad1'>
|
|
22
|
-
<h1><a href="index.html">All files</a> getAudioBase64.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">100% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>58/58</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">96.96% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>32/33</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">100% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>3/3</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">100% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>41/41</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
<template id="filterTemplate">
|
|
58
|
-
<div class="quiet">
|
|
59
|
-
Filter:
|
|
60
|
-
<input oninput="onInput()" type="search" id="fileSearch">
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
</div>
|
|
64
|
-
<div class='status-line high'></div>
|
|
65
|
-
<pre><table class="coverage">
|
|
66
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">3x</span>
|
|
199
|
-
<span class="cline-any cline-yes">3x</span>
|
|
200
|
-
<span class="cline-any cline-yes">3x</span>
|
|
201
|
-
<span class="cline-any cline-neutral"> </span>
|
|
202
|
-
<span class="cline-any cline-neutral"> </span>
|
|
203
|
-
<span class="cline-any cline-neutral"> </span>
|
|
204
|
-
<span class="cline-any cline-neutral"> </span>
|
|
205
|
-
<span class="cline-any cline-neutral"> </span>
|
|
206
|
-
<span class="cline-any cline-neutral"> </span>
|
|
207
|
-
<span class="cline-any cline-neutral"> </span>
|
|
208
|
-
<span class="cline-any cline-neutral"> </span>
|
|
209
|
-
<span class="cline-any cline-neutral"> </span>
|
|
210
|
-
<span class="cline-any cline-neutral"> </span>
|
|
211
|
-
<span class="cline-any cline-neutral"> </span>
|
|
212
|
-
<span class="cline-any cline-neutral"> </span>
|
|
213
|
-
<span class="cline-any cline-neutral"> </span>
|
|
214
|
-
<span class="cline-any cline-neutral"> </span>
|
|
215
|
-
<span class="cline-any cline-neutral"> </span>
|
|
216
|
-
<span class="cline-any cline-neutral"> </span>
|
|
217
|
-
<span class="cline-any cline-neutral"> </span>
|
|
218
|
-
<span class="cline-any cline-neutral"> </span>
|
|
219
|
-
<span class="cline-any cline-neutral"> </span>
|
|
220
|
-
<span class="cline-any cline-yes">3x</span>
|
|
221
|
-
<span class="cline-any cline-neutral"> </span>
|
|
222
|
-
<span class="cline-any cline-yes">34x</span>
|
|
223
|
-
<span class="cline-any cline-neutral"> </span>
|
|
224
|
-
<span class="cline-any cline-yes">34x</span>
|
|
225
|
-
<span class="cline-any cline-neutral"> </span>
|
|
226
|
-
<span class="cline-any cline-yes">24x</span>
|
|
227
|
-
<span class="cline-any cline-yes">2x</span>
|
|
228
|
-
<span class="cline-any cline-neutral"> </span>
|
|
229
|
-
<span class="cline-any cline-neutral"> </span>
|
|
230
|
-
<span class="cline-any cline-yes">22x</span>
|
|
231
|
-
<span class="cline-any cline-yes">2x</span>
|
|
232
|
-
<span class="cline-any cline-neutral"> </span>
|
|
233
|
-
<span class="cline-any cline-neutral"> </span>
|
|
234
|
-
<span class="cline-any cline-neutral"> </span>
|
|
235
|
-
<span class="cline-any cline-neutral"> </span>
|
|
236
|
-
<span class="cline-any cline-yes">20x</span>
|
|
237
|
-
<span class="cline-any cline-neutral"> </span>
|
|
238
|
-
<span class="cline-any cline-neutral"> </span>
|
|
239
|
-
<span class="cline-any cline-neutral"> </span>
|
|
240
|
-
<span class="cline-any cline-neutral"> </span>
|
|
241
|
-
<span class="cline-any cline-neutral"> </span>
|
|
242
|
-
<span class="cline-any cline-neutral"> </span>
|
|
243
|
-
<span class="cline-any cline-neutral"> </span>
|
|
244
|
-
<span class="cline-any cline-neutral"> </span>
|
|
245
|
-
<span class="cline-any cline-neutral"> </span>
|
|
246
|
-
<span class="cline-any cline-neutral"> </span>
|
|
247
|
-
<span class="cline-any cline-neutral"> </span>
|
|
248
|
-
<span class="cline-any cline-neutral"> </span>
|
|
249
|
-
<span class="cline-any cline-neutral"> </span>
|
|
250
|
-
<span class="cline-any cline-neutral"> </span>
|
|
251
|
-
<span class="cline-any cline-neutral"> </span>
|
|
252
|
-
<span class="cline-any cline-yes">17x</span>
|
|
253
|
-
<span class="cline-any cline-yes">17x</span>
|
|
254
|
-
<span class="cline-any cline-neutral"> </span>
|
|
255
|
-
<span class="cline-any cline-yes">1x</span>
|
|
256
|
-
<span class="cline-any cline-neutral"> </span>
|
|
257
|
-
<span class="cline-any cline-neutral"> </span>
|
|
258
|
-
<span class="cline-any cline-neutral"> </span>
|
|
259
|
-
<span class="cline-any cline-yes">16x</span>
|
|
260
|
-
<span class="cline-any cline-yes">3x</span>
|
|
261
|
-
<span class="cline-any cline-neutral"> </span>
|
|
262
|
-
<span class="cline-any cline-neutral"> </span>
|
|
263
|
-
<span class="cline-any cline-neutral"> </span>
|
|
264
|
-
<span class="cline-any cline-yes">13x</span>
|
|
265
|
-
<span class="cline-any cline-yes">13x</span>
|
|
266
|
-
<span class="cline-any cline-neutral"> </span>
|
|
267
|
-
<span class="cline-any cline-yes">1x</span>
|
|
268
|
-
<span class="cline-any cline-neutral"> </span>
|
|
269
|
-
<span class="cline-any cline-neutral"> </span>
|
|
270
|
-
<span class="cline-any cline-yes">12x</span>
|
|
271
|
-
<span class="cline-any cline-neutral"> </span>
|
|
272
|
-
<span class="cline-any cline-neutral"> </span>
|
|
273
|
-
<span class="cline-any cline-neutral"> </span>
|
|
274
|
-
<span class="cline-any cline-neutral"> </span>
|
|
275
|
-
<span class="cline-any cline-neutral"> </span>
|
|
276
|
-
<span class="cline-any cline-neutral"> </span>
|
|
277
|
-
<span class="cline-any cline-neutral"> </span>
|
|
278
|
-
<span class="cline-any cline-neutral"> </span>
|
|
279
|
-
<span class="cline-any cline-neutral"> </span>
|
|
280
|
-
<span class="cline-any cline-neutral"> </span>
|
|
281
|
-
<span class="cline-any cline-neutral"> </span>
|
|
282
|
-
<span class="cline-any cline-neutral"> </span>
|
|
283
|
-
<span class="cline-any cline-neutral"> </span>
|
|
284
|
-
<span class="cline-any cline-neutral"> </span>
|
|
285
|
-
<span class="cline-any cline-neutral"> </span>
|
|
286
|
-
<span class="cline-any cline-neutral"> </span>
|
|
287
|
-
<span class="cline-any cline-neutral"> </span>
|
|
288
|
-
<span class="cline-any cline-neutral"> </span>
|
|
289
|
-
<span class="cline-any cline-neutral"> </span>
|
|
290
|
-
<span class="cline-any cline-neutral"> </span>
|
|
291
|
-
<span class="cline-any cline-neutral"> </span>
|
|
292
|
-
<span class="cline-any cline-neutral"> </span>
|
|
293
|
-
<span class="cline-any cline-neutral"> </span>
|
|
294
|
-
<span class="cline-any cline-neutral"> </span>
|
|
295
|
-
<span class="cline-any cline-yes">3x</span>
|
|
296
|
-
<span class="cline-any cline-neutral"> </span>
|
|
297
|
-
<span class="cline-any cline-yes">21x</span>
|
|
298
|
-
<span class="cline-any cline-yes">21x</span>
|
|
299
|
-
<span class="cline-any cline-yes">21x</span>
|
|
300
|
-
<span class="cline-any cline-yes">21x</span>
|
|
301
|
-
<span class="cline-any cline-yes">21x</span>
|
|
302
|
-
<span class="cline-any cline-yes">21x</span>
|
|
303
|
-
<span class="cline-any cline-neutral"> </span>
|
|
304
|
-
<span class="cline-any cline-neutral"> </span>
|
|
305
|
-
<span class="cline-any cline-yes">21x</span>
|
|
306
|
-
<span class="cline-any cline-neutral"> </span>
|
|
307
|
-
<span class="cline-any cline-yes">11x</span>
|
|
308
|
-
<span class="cline-any cline-yes">1x</span>
|
|
309
|
-
<span class="cline-any cline-neutral"> </span>
|
|
310
|
-
<span class="cline-any cline-neutral"> </span>
|
|
311
|
-
<span class="cline-any cline-yes">10x</span>
|
|
312
|
-
<span class="cline-any cline-yes">2x</span>
|
|
313
|
-
<span class="cline-any cline-neutral"> </span>
|
|
314
|
-
<span class="cline-any cline-neutral"> </span>
|
|
315
|
-
<span class="cline-any cline-yes">8x</span>
|
|
316
|
-
<span class="cline-any cline-yes">8x</span>
|
|
317
|
-
<span class="cline-any cline-yes">10x</span>
|
|
318
|
-
<span class="cline-any cline-neutral"> </span>
|
|
319
|
-
<span class="cline-any cline-neutral"> </span>
|
|
320
|
-
<span class="cline-any cline-neutral"> </span>
|
|
321
|
-
<span class="cline-any cline-yes">6x</span>
|
|
322
|
-
<span class="cline-any cline-yes">6x</span>
|
|
323
|
-
<span class="cline-any cline-yes">8x</span>
|
|
324
|
-
<span class="cline-any cline-yes">8x</span>
|
|
325
|
-
<span class="cline-any cline-yes">8x</span>
|
|
326
|
-
<span class="cline-any cline-neutral"> </span>
|
|
327
|
-
<span class="cline-any cline-neutral"> </span>
|
|
328
|
-
<span class="cline-any cline-yes">6x</span>
|
|
329
|
-
<span class="cline-any cline-neutral"> </span>
|
|
330
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import assertInputTypes from './assertInputTypes';
|
|
331
|
-
import axios from 'axios';
|
|
332
|
-
import splitLongText from './splitLongText';
|
|
333
|
-
|
|
334
|
-
interface Option {
|
|
335
|
-
lang?: string;
|
|
336
|
-
slow?: boolean;
|
|
337
|
-
host?: string;
|
|
338
|
-
timeout?: number;
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
/**
|
|
342
|
-
* Get "Google TTS" audio base64 text
|
|
343
|
-
*
|
|
344
|
-
* @param {string} text length should be less than 200 characters
|
|
345
|
-
* @param {object?} option
|
|
346
|
-
* @param {string?} option.lang default is "en"
|
|
347
|
-
* @param {boolean?} option.slow default is false
|
|
348
|
-
* @param {string?} option.host default is "https://translate.google.com"
|
|
349
|
-
* @param {number?} option.timeout default is 10000 (ms)
|
|
350
|
-
* @returns {Promise<string>} url
|
|
351
|
-
*/
|
|
352
|
-
export const getAudioBase64 = async (
|
|
353
|
-
text: string,
|
|
354
|
-
{ lang = 'en', slow = false, host = 'https://translate.google.com', timeout = 10000 }: Option = {}
|
|
355
|
-
): Promise<string> => {
|
|
356
|
-
assertInputTypes(text, lang, slow, host);
|
|
357
|
-
|
|
358
|
-
if (typeof timeout !== 'number' || timeout <= 0) {
|
|
359
|
-
throw new TypeError('timeout should be a positive number');
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
if (text.length > 200) {
|
|
363
|
-
throw new RangeError(
|
|
364
|
-
`text length (${text.length}) should be less than 200 characters. Try "getAllAudioBase64(text, [option])" for long text.`
|
|
365
|
-
);
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
const res = await axios({
|
|
369
|
-
method: 'post',
|
|
370
|
-
baseURL: host,
|
|
371
|
-
url: '/_/TranslateWebserverUi/data/batchexecute',
|
|
372
|
-
timeout,
|
|
373
|
-
data:
|
|
374
|
-
'f.req=' +
|
|
375
|
-
encodeURIComponent(
|
|
376
|
-
JSON.stringify([
|
|
377
|
-
[['jQ1olc', JSON.stringify([text, lang, slow ? <span class="branch-0 cbranch-no" title="branch not covered" >true </span>: null, 'null']), null, 'generic']],
|
|
378
|
-
])
|
|
379
|
-
),
|
|
380
|
-
});
|
|
381
|
-
|
|
382
|
-
// 1. parse audio base64 string
|
|
383
|
-
let result;
|
|
384
|
-
try {
|
|
385
|
-
result = eval(res.data.slice(5))[0][2];
|
|
386
|
-
} catch (e) {
|
|
387
|
-
throw new Error(`parse response failed:\n${res.data}`);
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
// Check the result. The result will be null if given the lang doesn't exist
|
|
391
|
-
if (!result) {
|
|
392
|
-
throw new Error(`lang "${lang}" might not exist`);
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
// 2. continue to parse audio base64 string
|
|
396
|
-
try {
|
|
397
|
-
result = eval(result)[0];
|
|
398
|
-
} catch (e) {
|
|
399
|
-
throw new Error(`parse response failed:\n${res.data}`);
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
return result;
|
|
403
|
-
};
|
|
404
|
-
|
|
405
|
-
interface LongTextOption extends Option {
|
|
406
|
-
splitPunct?: string;
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
/**
|
|
410
|
-
* @typedef {object} Result
|
|
411
|
-
* @property {string} shortText
|
|
412
|
-
* @property {string} base64
|
|
413
|
-
*/
|
|
414
|
-
|
|
415
|
-
/**
|
|
416
|
-
* Split the long text into multiple short text and generate audio base64 list
|
|
417
|
-
*
|
|
418
|
-
* @param {string} text
|
|
419
|
-
* @param {object?} option
|
|
420
|
-
* @param {string?} option.lang default is "en"
|
|
421
|
-
* @param {boolean?} option.slow default is false
|
|
422
|
-
* @param {string?} option.host default is "https://translate.google.com"
|
|
423
|
-
* @param {string?} option.splitPunct split punctuation
|
|
424
|
-
* @param {number?} option.timeout default is 10000 (ms)
|
|
425
|
-
* @return {Result[]} the list with short text and audio base64
|
|
426
|
-
*/
|
|
427
|
-
export const getAllAudioBase64 = async (
|
|
428
|
-
text: string,
|
|
429
|
-
{
|
|
430
|
-
lang = 'en',
|
|
431
|
-
slow = false,
|
|
432
|
-
host = 'https://translate.google.com',
|
|
433
|
-
splitPunct = '',
|
|
434
|
-
timeout = 10000,
|
|
435
|
-
}: LongTextOption = {}
|
|
436
|
-
): Promise<{ shortText: string; base64: string }[]> => {
|
|
437
|
-
assertInputTypes(text, lang, slow, host);
|
|
438
|
-
|
|
439
|
-
if (typeof splitPunct !== 'string') {
|
|
440
|
-
throw new TypeError('splitPunct should be a string');
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
if (typeof timeout !== 'number' || timeout <= 0) {
|
|
444
|
-
throw new TypeError('timeout should be a positive number');
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
const shortTextList = splitLongText(text, { splitPunct });
|
|
448
|
-
const base64List = await Promise.all(
|
|
449
|
-
shortTextList.map((shortText) => getAudioBase64(shortText, { lang, slow, host, timeout }))
|
|
450
|
-
);
|
|
451
|
-
|
|
452
|
-
// put short text and base64 text in a list
|
|
453
|
-
const result: { shortText: string; base64: string }[] = [];
|
|
454
|
-
for (let i = 0; i < shortTextList.length; i++) {
|
|
455
|
-
const shortText = shortTextList[i];
|
|
456
|
-
const base64 = base64List[i];
|
|
457
|
-
result.push({ shortText, base64 });
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
return result;
|
|
461
|
-
};
|
|
462
|
-
</pre></td></tr></table></pre>
|
|
463
|
-
|
|
464
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
465
|
-
</div><!-- /wrapper -->
|
|
466
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
467
|
-
Code coverage generated by
|
|
468
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
469
|
-
at 2023-12-17T14:13:22.804Z
|
|
470
|
-
</div>
|
|
471
|
-
<script src="prettify.js"></script>
|
|
472
|
-
<script>
|
|
473
|
-
window.onload = function () {
|
|
474
|
-
prettyPrint();
|
|
475
|
-
};
|
|
476
|
-
</script>
|
|
477
|
-
<script src="sorter.js"></script>
|
|
478
|
-
<script src="block-navigation.js"></script>
|
|
479
|
-
</body>
|
|
480
|
-
</html>
|
|
481
|
-
|