@picgo/store 1.0.1 → 2.0.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/CHANGELOG.md +36 -0
- package/README.md +50 -5
- package/coverage/clover.xml +164 -105
- package/coverage/coverage-final.json +6 -5
- package/coverage/lcov-report/index.html +20 -20
- package/coverage/lcov-report/src/DBStore.ts.html +227 -62
- package/coverage/lcov-report/src/JSONStore.ts.html +58 -28
- package/coverage/lcov-report/src/adapters/JSONAdapter.ts.html +148 -0
- package/coverage/lcov-report/src/adapters/ZlibAdapter.ts.html +89 -47
- package/coverage/lcov-report/src/adapters/index.html +23 -8
- package/coverage/lcov-report/src/index.html +14 -14
- package/coverage/lcov-report/src/types/index.html +5 -5
- package/coverage/lcov-report/src/types/index.ts.html +73 -4
- package/coverage/lcov-report/src/utils/index.html +7 -7
- package/coverage/lcov-report/src/utils/metaInfoHelper.ts.html +22 -34
- package/coverage/lcov.info +314 -196
- package/dist/DBStore.d.ts +15 -7
- package/dist/JSONStore.d.ts +3 -2
- package/dist/adapters/JSONAdapter.d.ts +7 -0
- package/dist/adapters/ZlibAdapter.d.ts +3 -1
- package/dist/index.js +2 -2
- package/dist/types/index.d.ts +21 -2
- package/package.json +12 -6
- package/rollup.config.js +7 -3
|
@@ -24,28 +24,28 @@
|
|
|
24
24
|
<div class='fl pad1y space-right2'>
|
|
25
25
|
<span class="strong">100% </span>
|
|
26
26
|
<span class="quiet">Statements</span>
|
|
27
|
-
<span class='fraction'>
|
|
27
|
+
<span class='fraction'>75/75</span>
|
|
28
28
|
</div>
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
<div class='fl pad1y space-right2'>
|
|
32
|
-
<span class="strong">
|
|
32
|
+
<span class="strong">92.11% </span>
|
|
33
33
|
<span class="quiet">Branches</span>
|
|
34
|
-
<span class='fraction'>
|
|
34
|
+
<span class='fraction'>35/38</span>
|
|
35
35
|
</div>
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
<div class='fl pad1y space-right2'>
|
|
39
39
|
<span class="strong">100% </span>
|
|
40
40
|
<span class="quiet">Functions</span>
|
|
41
|
-
<span class='fraction'>
|
|
41
|
+
<span class='fraction'>17/17</span>
|
|
42
42
|
</div>
|
|
43
43
|
|
|
44
44
|
|
|
45
45
|
<div class='fl pad1y space-right2'>
|
|
46
46
|
<span class="strong">100% </span>
|
|
47
47
|
<span class="quiet">Lines</span>
|
|
48
|
-
<span class='fraction'>
|
|
48
|
+
<span class='fraction'>72/72</span>
|
|
49
49
|
</div>
|
|
50
50
|
|
|
51
51
|
|
|
@@ -144,60 +144,162 @@
|
|
|
144
144
|
<a name='L86'></a><a href='#L86'>86</a>
|
|
145
145
|
<a name='L87'></a><a href='#L87'>87</a>
|
|
146
146
|
<a name='L88'></a><a href='#L88'>88</a>
|
|
147
|
-
<a name='L89'></a><a href='#L89'>89</a
|
|
147
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
148
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
149
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
150
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
151
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
152
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
153
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
154
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
155
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
156
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
157
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
158
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
159
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
160
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
161
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
162
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
163
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
164
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
165
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
166
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
167
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
168
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
169
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
170
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
171
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
172
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
173
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
174
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
175
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
176
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
177
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
178
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
179
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
180
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
181
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
182
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
183
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
184
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
185
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
186
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
187
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
188
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
189
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
190
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
191
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
192
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
193
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
194
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
195
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
196
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
197
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
198
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
199
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
200
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
201
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
202
|
+
<a name='L144'></a><a href='#L144'>144</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
203
|
+
<span class="cline-any cline-neutral"> </span>
|
|
204
|
+
<span class="cline-any cline-neutral"> </span>
|
|
148
205
|
<span class="cline-any cline-yes">1x</span>
|
|
149
206
|
<span class="cline-any cline-yes">1x</span>
|
|
150
207
|
<span class="cline-any cline-yes">1x</span>
|
|
208
|
+
<span class="cline-any cline-yes">1x</span>
|
|
209
|
+
<span class="cline-any cline-neutral"> </span>
|
|
210
|
+
<span class="cline-any cline-neutral"> </span>
|
|
151
211
|
<span class="cline-any cline-neutral"> </span>
|
|
152
212
|
<span class="cline-any cline-neutral"> </span>
|
|
153
213
|
<span class="cline-any cline-neutral"> </span>
|
|
214
|
+
<span class="cline-any cline-yes">18x</span>
|
|
215
|
+
<span class="cline-any cline-yes">18x</span>
|
|
154
216
|
<span class="cline-any cline-neutral"> </span>
|
|
155
|
-
<span class="cline-any cline-yes">10x</span>
|
|
156
217
|
<span class="cline-any cline-neutral"> </span>
|
|
157
218
|
<span class="cline-any cline-neutral"> </span>
|
|
158
|
-
<span class="cline-any cline-yes">
|
|
219
|
+
<span class="cline-any cline-yes">18x</span>
|
|
159
220
|
<span class="cline-any cline-yes">2x</span>
|
|
160
221
|
<span class="cline-any cline-neutral"> </span>
|
|
161
|
-
<span class="cline-any cline-yes">
|
|
162
|
-
<span class="cline-any cline-yes">
|
|
163
|
-
<span class="cline-any cline-yes">
|
|
164
|
-
<span class="cline-any cline-yes">
|
|
222
|
+
<span class="cline-any cline-yes">16x</span>
|
|
223
|
+
<span class="cline-any cline-yes">16x</span>
|
|
224
|
+
<span class="cline-any cline-yes">16x</span>
|
|
225
|
+
<span class="cline-any cline-yes">16x</span>
|
|
165
226
|
<span class="cline-any cline-neutral"> </span>
|
|
166
227
|
<span class="cline-any cline-neutral"> </span>
|
|
167
228
|
<span class="cline-any cline-neutral"> </span>
|
|
168
|
-
<span class="cline-any cline-yes">
|
|
169
|
-
<span class="cline-any cline-yes">8x</span>
|
|
229
|
+
<span class="cline-any cline-yes">1x</span>
|
|
170
230
|
<span class="cline-any cline-neutral"> </span>
|
|
171
|
-
<span class="cline-any cline-yes">30x</span>
|
|
172
231
|
<span class="cline-any cline-neutral"> </span>
|
|
173
232
|
<span class="cline-any cline-neutral"> </span>
|
|
233
|
+
<span class="cline-any cline-yes">56x</span>
|
|
234
|
+
<span class="cline-any cline-yes">16x</span>
|
|
235
|
+
<span class="cline-any cline-yes">16x</span>
|
|
174
236
|
<span class="cline-any cline-neutral"> </span>
|
|
175
|
-
<span class="cline-any cline-yes">
|
|
237
|
+
<span class="cline-any cline-yes">56x</span>
|
|
176
238
|
<span class="cline-any cline-neutral"> </span>
|
|
177
239
|
<span class="cline-any cline-neutral"> </span>
|
|
178
240
|
<span class="cline-any cline-neutral"> </span>
|
|
179
|
-
<span class="cline-any cline-yes">
|
|
241
|
+
<span class="cline-any cline-yes">18x</span>
|
|
242
|
+
<span class="cline-any cline-yes">18x</span>
|
|
243
|
+
<span class="cline-any cline-yes">18x</span>
|
|
180
244
|
<span class="cline-any cline-yes">6x</span>
|
|
245
|
+
<span class="cline-any cline-yes">1x</span>
|
|
181
246
|
<span class="cline-any cline-neutral"> </span>
|
|
182
247
|
<span class="cline-any cline-yes">6x</span>
|
|
248
|
+
<span class="cline-any cline-yes">1x</span>
|
|
183
249
|
<span class="cline-any cline-neutral"> </span>
|
|
184
250
|
<span class="cline-any cline-yes">6x</span>
|
|
185
251
|
<span class="cline-any cline-yes">1x</span>
|
|
186
|
-
<span class="cline-any cline-yes">1x</span>
|
|
187
252
|
<span class="cline-any cline-neutral"> </span>
|
|
188
|
-
<span class="cline-any cline-yes">5x</span>
|
|
189
253
|
<span class="cline-any cline-neutral"> </span>
|
|
190
|
-
<span class="cline-any cline-yes">
|
|
191
|
-
<span class="cline-any cline-
|
|
192
|
-
<span class="cline-any cline-
|
|
254
|
+
<span class="cline-any cline-yes">18x</span>
|
|
255
|
+
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
260
|
+
<span class="cline-any cline-neutral"> </span>
|
|
261
|
+
<span class="cline-any cline-yes">33x</span>
|
|
262
|
+
<span class="cline-any cline-neutral"> </span>
|
|
263
|
+
<span class="cline-any cline-neutral"> </span>
|
|
264
|
+
<span class="cline-any cline-neutral"> </span>
|
|
265
|
+
<span class="cline-any cline-yes">12x</span>
|
|
266
|
+
<span class="cline-any cline-neutral"> </span>
|
|
267
|
+
<span class="cline-any cline-neutral"> </span>
|
|
268
|
+
<span class="cline-any cline-neutral"> </span>
|
|
269
|
+
<span class="cline-any cline-yes">13x</span>
|
|
270
|
+
<span class="cline-any cline-neutral"> </span>
|
|
271
|
+
<span class="cline-any cline-neutral"> </span>
|
|
272
|
+
<span class="cline-any cline-neutral"> </span>
|
|
273
|
+
<span class="cline-any cline-yes">8x</span>
|
|
274
|
+
<span class="cline-any cline-yes">8x</span>
|
|
275
|
+
<span class="cline-any cline-yes">8x</span>
|
|
276
|
+
<span class="cline-any cline-yes">8x</span>
|
|
193
277
|
<span class="cline-any cline-neutral"> </span>
|
|
194
278
|
<span class="cline-any cline-neutral"> </span>
|
|
195
279
|
<span class="cline-any cline-neutral"> </span>
|
|
196
280
|
<span class="cline-any cline-yes">1x</span>
|
|
281
|
+
<span class="cline-any cline-yes">9x</span>
|
|
282
|
+
<span class="cline-any cline-yes">9x</span>
|
|
283
|
+
<span class="cline-any cline-neutral"> </span>
|
|
284
|
+
<span class="cline-any cline-yes">9x</span>
|
|
197
285
|
<span class="cline-any cline-yes">1x</span>
|
|
198
|
-
<span class="cline-any cline-yes">
|
|
286
|
+
<span class="cline-any cline-yes">1x</span>
|
|
287
|
+
<span class="cline-any cline-neutral"> </span>
|
|
288
|
+
<span class="cline-any cline-yes">8x</span>
|
|
289
|
+
<span class="cline-any cline-yes">8x</span>
|
|
290
|
+
<span class="cline-any cline-yes">8x</span>
|
|
291
|
+
<span class="cline-any cline-yes">3x</span>
|
|
292
|
+
<span class="cline-any cline-neutral"> </span>
|
|
293
|
+
<span class="cline-any cline-yes">8x</span>
|
|
294
|
+
<span class="cline-any cline-neutral"> </span>
|
|
295
|
+
<span class="cline-any cline-neutral"> </span>
|
|
199
296
|
<span class="cline-any cline-neutral"> </span>
|
|
200
297
|
<span class="cline-any cline-yes">1x</span>
|
|
298
|
+
<span class="cline-any cline-yes">2x</span>
|
|
299
|
+
<span class="cline-any cline-yes">5x</span>
|
|
300
|
+
<span class="cline-any cline-neutral"> </span>
|
|
301
|
+
<span class="cline-any cline-yes">2x</span>
|
|
302
|
+
<span class="cline-any cline-yes">2x</span>
|
|
201
303
|
<span class="cline-any cline-neutral"> </span>
|
|
202
304
|
<span class="cline-any cline-neutral"> </span>
|
|
203
305
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -205,7 +307,8 @@
|
|
|
205
307
|
<span class="cline-any cline-yes">3x</span>
|
|
206
308
|
<span class="cline-any cline-yes">3x</span>
|
|
207
309
|
<span class="cline-any cline-yes">3x</span>
|
|
208
|
-
<span class="cline-any cline-
|
|
310
|
+
<span class="cline-any cline-yes">5x</span>
|
|
311
|
+
<span class="cline-any cline-yes">2x</span>
|
|
209
312
|
<span class="cline-any cline-yes">2x</span>
|
|
210
313
|
<span class="cline-any cline-yes">2x</span>
|
|
211
314
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -214,16 +317,23 @@
|
|
|
214
317
|
<span class="cline-any cline-neutral"> </span>
|
|
215
318
|
<span class="cline-any cline-neutral"> </span>
|
|
216
319
|
<span class="cline-any cline-neutral"> </span>
|
|
217
|
-
<span class="cline-any cline-yes">
|
|
320
|
+
<span class="cline-any cline-yes">4x</span>
|
|
218
321
|
<span class="cline-any cline-neutral"> </span>
|
|
219
322
|
<span class="cline-any cline-neutral"> </span>
|
|
220
323
|
<span class="cline-any cline-neutral"> </span>
|
|
324
|
+
<span class="cline-any cline-yes">1x</span>
|
|
325
|
+
<span class="cline-any cline-yes">1x</span>
|
|
326
|
+
<span class="cline-any cline-yes">1x</span>
|
|
327
|
+
<span class="cline-any cline-yes">1x</span>
|
|
328
|
+
<span class="cline-any cline-yes">1x</span>
|
|
329
|
+
<span class="cline-any cline-yes">1x</span>
|
|
330
|
+
<span class="cline-any cline-yes">1x</span>
|
|
221
331
|
<span class="cline-any cline-neutral"> </span>
|
|
222
332
|
<span class="cline-any cline-neutral"> </span>
|
|
223
333
|
<span class="cline-any cline-neutral"> </span>
|
|
224
334
|
<span class="cline-any cline-neutral"> </span>
|
|
225
335
|
<span class="cline-any cline-yes">1x</span>
|
|
226
|
-
<span class="cline-any cline-
|
|
336
|
+
<span class="cline-any cline-yes">1x</span>
|
|
227
337
|
<span class="cline-any cline-yes">1x</span>
|
|
228
338
|
<span class="cline-any cline-yes">1x</span>
|
|
229
339
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -232,15 +342,21 @@
|
|
|
232
342
|
<span class="cline-any cline-neutral"> </span>
|
|
233
343
|
<span class="cline-any cline-yes">1x</span>
|
|
234
344
|
<span class="cline-any cline-neutral"> </span>
|
|
235
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"
|
|
345
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/* eslint-disable @typescript-eslint/no-floating-promises */
|
|
346
|
+
/* eslint-disable no-unused-expressions */
|
|
347
|
+
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
348
|
+
import { Low } from '@commonify/lowdb'
|
|
236
349
|
import { ZlibAdapter } from './adapters/ZlibAdapter'
|
|
237
350
|
import { metaInfoHelper } from './utils/metaInfoHelper'
|
|
238
|
-
import { IMetaInfoMode, IObject, IResult } from './types'
|
|
351
|
+
import { IMetaInfoMode, IObject, IResult, IGetResult, IFilter, ILowData, ILowDataKeyMap } from './types'
|
|
352
|
+
|
|
239
353
|
class DBStore {
|
|
240
|
-
private readonly db:
|
|
354
|
+
private readonly db: Low<ILowData>
|
|
241
355
|
private readonly collectionName: string
|
|
242
356
|
private readonly collectionKey: string
|
|
243
|
-
private
|
|
357
|
+
private hasRead = false
|
|
358
|
+
public errorList: Array<Error | string> = []
|
|
359
|
+
private readonly adapter: ZlibAdapter
|
|
244
360
|
constructor (dbPath: string, collectionName: string) {
|
|
245
361
|
// eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
|
|
246
362
|
if (!dbPath || !collectionName) {
|
|
@@ -248,72 +364,121 @@ class DBStore {
|
|
|
248
364
|
}
|
|
249
365
|
this.collectionName = collectionName
|
|
250
366
|
this.collectionKey = `__${collectionName}_KEY__`
|
|
251
|
-
|
|
252
|
-
this.db =
|
|
367
|
+
this.adapter = new ZlibAdapter(dbPath, collectionName, this.errorList)
|
|
368
|
+
this.db = new Low<ILowData>(this.adapter)
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
getAdapter (): ZlibAdapter {
|
|
372
|
+
return this.adapter
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
async read (flush = false): Promise<ILowData | null> {
|
|
376
|
+
if (flush || !this.hasRead) {
|
|
377
|
+
this.hasRead = true
|
|
378
|
+
await this.db.read()
|
|
379
|
+
}
|
|
380
|
+
return this.db.data
|
|
253
381
|
}
|
|
254
382
|
|
|
255
|
-
async
|
|
256
|
-
|
|
257
|
-
|
|
383
|
+
async get (filter?: IFilter): Promise<IGetResult<IObject>> {
|
|
384
|
+
let data: Array<IResult<IObject>> = (await this.getCollection()).slice()
|
|
385
|
+
const total = data.length
|
|
386
|
+
if (filter !== undefined) {
|
|
387
|
+
if (filter.orderBy === 'desc') {
|
|
388
|
+
data = data.reverse()
|
|
389
|
+
}
|
|
390
|
+
if (typeof filter.offset === 'number' && filter.offset >= 0) {
|
|
391
|
+
data = data.slice(filter.offset)
|
|
392
|
+
}
|
|
393
|
+
if (typeof filter.limit === 'number' && filter.limit > 0) {
|
|
394
|
+
data = data.slice(0, filter.limit)
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
return {
|
|
398
|
+
total,
|
|
399
|
+
data
|
|
258
400
|
}
|
|
259
|
-
return this.reading
|
|
260
401
|
}
|
|
261
402
|
|
|
262
|
-
async
|
|
263
|
-
return (await this.read()).
|
|
403
|
+
private async getCollection (): Promise<Array<IResult<IObject>>> {
|
|
404
|
+
return ((await this.read())<span class="branch-0 cbranch-no" title="branch not covered" >?.[t</span>his.collectionName]) as Array<IResult<IObject>>
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
private async getCollectionKey (id: string): Promise<1 | null> {
|
|
408
|
+
return (await this.getCollectionKeyMap())[id]
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
private async getCollectionKeyMap (): Promise<ILowDataKeyMap> {
|
|
412
|
+
return (((await this.read())<span class="branch-0 cbranch-no" title="branch not covered" >?.[t</span>his.collectionKey]) as ILowDataKeyMap)
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
private async setCollectionKey (id: string): Promise<void> {
|
|
416
|
+
await this.read()
|
|
417
|
+
const data = this.db.data!
|
|
418
|
+
const collectionKeyMap = data[this.collectionKey] as ILowDataKeyMap
|
|
419
|
+
collectionKeyMap[id] = 1
|
|
264
420
|
}
|
|
265
421
|
|
|
266
422
|
@metaInfoHelper(IMetaInfoMode.create)
|
|
267
|
-
async insert<T> (value: T): Promise<IResult<T>> {
|
|
423
|
+
async insert<T> (value: T, writable = true): Promise<IResult<T>> {
|
|
268
424
|
const id = (value as IResult<T>).id
|
|
269
|
-
|
|
270
|
-
const result = (await this.read()).get(`${this.collectionKey}.${id}`).value()
|
|
425
|
+
const result = await this.getCollectionKey(id)
|
|
271
426
|
// @ts-ignore
|
|
272
427
|
if (result) {
|
|
273
428
|
await this.updateById(id, value)
|
|
274
429
|
return (value as IResult<T>)
|
|
275
430
|
}
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
431
|
+
(await this.getCollection()).push(value as IResult<T>)
|
|
432
|
+
await this.setCollectionKey(id)
|
|
433
|
+
if (writable) {
|
|
434
|
+
await this.db.write()
|
|
435
|
+
}
|
|
280
436
|
return (value as IResult<T>)
|
|
281
437
|
}
|
|
282
438
|
|
|
283
|
-
@metaInfoHelper(IMetaInfoMode.
|
|
439
|
+
@metaInfoHelper(IMetaInfoMode.createMany)
|
|
284
440
|
async insertMany<T> (value: T[]): Promise<Array<IResult<T>>> {
|
|
285
441
|
for (const item of value) {
|
|
286
|
-
await this.insert(item)
|
|
442
|
+
await this.insert(item, false)
|
|
287
443
|
}
|
|
444
|
+
await this.db.write()
|
|
288
445
|
return (value as Array<IResult<T>>)
|
|
289
446
|
}
|
|
290
447
|
|
|
291
448
|
@metaInfoHelper(IMetaInfoMode.update)
|
|
292
449
|
async updateById (id: string, value: IObject): Promise<boolean> {
|
|
293
|
-
const collection =
|
|
294
|
-
const result =
|
|
450
|
+
const collection = await this.getCollection()
|
|
451
|
+
const result = await this.getCollectionKey(id)
|
|
295
452
|
if (result) {
|
|
296
|
-
|
|
297
|
-
|
|
453
|
+
const item = collection.find(item => item.id === id)
|
|
454
|
+
Object.assign(item, value)
|
|
455
|
+
await this.db.write()
|
|
298
456
|
return true
|
|
299
457
|
} else {
|
|
300
458
|
return false
|
|
301
459
|
}
|
|
302
460
|
}
|
|
303
461
|
|
|
304
|
-
async getById<T> (id: string): Promise<T | undefined> {
|
|
305
|
-
return (await this.
|
|
306
|
-
.get(this.collectionName)
|
|
307
|
-
// @ts-ignore
|
|
308
|
-
.find({ id })
|
|
309
|
-
.value()
|
|
462
|
+
async getById<T> (id: string): Promise<IResult<T> | undefined> {
|
|
463
|
+
return (await this.getCollection()).find(item => item.id === id) as IResult<T>
|
|
310
464
|
}
|
|
311
465
|
|
|
312
466
|
async removeById (id: string): Promise<void> {
|
|
313
|
-
const collection =
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
467
|
+
const collection = await this.getCollection()
|
|
468
|
+
const collectionKeyMap = await this.getCollectionKeyMap()
|
|
469
|
+
const index = collection.findIndex(item => item.id === id)
|
|
470
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (index !== -1) {
|
|
471
|
+
collection.splice(index, 1)
|
|
472
|
+
delete collectionKeyMap[id]
|
|
473
|
+
await this.db.write()
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
async overwrite<T> (value: T[]): Promise<Array<IResult<T>>> {
|
|
478
|
+
await this.read();
|
|
479
|
+
(this.db.data as ILowData)[this.collectionName] = [];
|
|
480
|
+
(this.db.data as ILowData)[this.collectionKey] = {}
|
|
481
|
+
return await this.insertMany<T>(value)
|
|
317
482
|
}
|
|
318
483
|
}
|
|
319
484
|
|
|
@@ -327,7 +492,7 @@ export {
|
|
|
327
492
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
328
493
|
Code coverage generated by
|
|
329
494
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
330
|
-
at
|
|
495
|
+
at Sun Jun 12 2022 02:11:39 GMT+0000 (Coordinated Universal Time)
|
|
331
496
|
</div>
|
|
332
497
|
</div>
|
|
333
498
|
<script src="../prettify.js"></script>
|
|
@@ -24,14 +24,14 @@
|
|
|
24
24
|
<div class='fl pad1y space-right2'>
|
|
25
25
|
<span class="strong">100% </span>
|
|
26
26
|
<span class="quiet">Statements</span>
|
|
27
|
-
<span class='fraction'>
|
|
27
|
+
<span class='fraction'>22/22</span>
|
|
28
28
|
</div>
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
<div class='fl pad1y space-right2'>
|
|
32
32
|
<span class="strong">100% </span>
|
|
33
33
|
<span class="quiet">Branches</span>
|
|
34
|
-
<span class='fraction'>
|
|
34
|
+
<span class='fraction'>7/7</span>
|
|
35
35
|
</div>
|
|
36
36
|
|
|
37
37
|
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
<div class='fl pad1y space-right2'>
|
|
46
46
|
<span class="strong">100% </span>
|
|
47
47
|
<span class="quiet">Lines</span>
|
|
48
|
-
<span class='fraction'>
|
|
48
|
+
<span class='fraction'>22/22</span>
|
|
49
49
|
</div>
|
|
50
50
|
|
|
51
51
|
|
|
@@ -98,34 +98,52 @@
|
|
|
98
98
|
<a name='L40'></a><a href='#L40'>40</a>
|
|
99
99
|
<a name='L41'></a><a href='#L41'>41</a>
|
|
100
100
|
<a name='L42'></a><a href='#L42'>42</a>
|
|
101
|
-
<a name='L43'></a><a href='#L43'>43</a
|
|
101
|
+
<a name='L43'></a><a href='#L43'>43</a>
|
|
102
|
+
<a name='L44'></a><a href='#L44'>44</a>
|
|
103
|
+
<a name='L45'></a><a href='#L45'>45</a>
|
|
104
|
+
<a name='L46'></a><a href='#L46'>46</a>
|
|
105
|
+
<a name='L47'></a><a href='#L47'>47</a>
|
|
106
|
+
<a name='L48'></a><a href='#L48'>48</a>
|
|
107
|
+
<a name='L49'></a><a href='#L49'>49</a>
|
|
108
|
+
<a name='L50'></a><a href='#L50'>50</a>
|
|
109
|
+
<a name='L51'></a><a href='#L51'>51</a>
|
|
110
|
+
<a name='L52'></a><a href='#L52'>52</a>
|
|
111
|
+
<a name='L53'></a><a href='#L53'>53</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
102
112
|
<span class="cline-any cline-yes">1x</span>
|
|
103
113
|
<span class="cline-any cline-yes">1x</span>
|
|
104
114
|
<span class="cline-any cline-neutral"> </span>
|
|
105
115
|
<span class="cline-any cline-neutral"> </span>
|
|
106
116
|
<span class="cline-any cline-neutral"> </span>
|
|
107
117
|
<span class="cline-any cline-yes">5x</span>
|
|
108
|
-
<span class="cline-any cline-yes">1x</span>
|
|
109
118
|
<span class="cline-any cline-neutral"> </span>
|
|
110
|
-
<span class="cline-any cline-yes">4x</span>
|
|
111
119
|
<span class="cline-any cline-neutral"> </span>
|
|
112
|
-
<span class="cline-any cline-yes">3x</span>
|
|
113
120
|
<span class="cline-any cline-neutral"> </span>
|
|
121
|
+
<span class="cline-any cline-yes">6x</span>
|
|
114
122
|
<span class="cline-any cline-neutral"> </span>
|
|
123
|
+
<span class="cline-any cline-yes">6x</span>
|
|
124
|
+
<span class="cline-any cline-yes">1x</span>
|
|
125
|
+
<span class="cline-any cline-neutral"> </span>
|
|
126
|
+
<span class="cline-any cline-yes">5x</span>
|
|
127
|
+
<span class="cline-any cline-yes">5x</span>
|
|
128
|
+
<span class="cline-any cline-yes">5x</span>
|
|
115
129
|
<span class="cline-any cline-neutral"> </span>
|
|
116
|
-
<span class="cline-any cline-yes">4x</span>
|
|
117
130
|
<span class="cline-any cline-neutral"> </span>
|
|
118
131
|
<span class="cline-any cline-neutral"> </span>
|
|
119
132
|
<span class="cline-any cline-neutral"> </span>
|
|
120
133
|
<span class="cline-any cline-yes">6x</span>
|
|
134
|
+
<span class="cline-any cline-yes">6x</span>
|
|
135
|
+
<span class="cline-any cline-yes">6x</span>
|
|
136
|
+
<span class="cline-any cline-neutral"> </span>
|
|
137
|
+
<span class="cline-any cline-yes">6x</span>
|
|
121
138
|
<span class="cline-any cline-neutral"> </span>
|
|
122
139
|
<span class="cline-any cline-neutral"> </span>
|
|
123
140
|
<span class="cline-any cline-neutral"> </span>
|
|
124
|
-
<span class="cline-any cline-yes">
|
|
141
|
+
<span class="cline-any cline-yes">4x</span>
|
|
125
142
|
<span class="cline-any cline-neutral"> </span>
|
|
126
143
|
<span class="cline-any cline-neutral"> </span>
|
|
127
144
|
<span class="cline-any cline-neutral"> </span>
|
|
128
|
-
<span class="cline-any cline-yes">
|
|
145
|
+
<span class="cline-any cline-yes">2x</span>
|
|
146
|
+
<span class="cline-any cline-yes">2x</span>
|
|
129
147
|
<span class="cline-any cline-neutral"> </span>
|
|
130
148
|
<span class="cline-any cline-neutral"> </span>
|
|
131
149
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -134,48 +152,60 @@
|
|
|
134
152
|
<span class="cline-any cline-neutral"> </span>
|
|
135
153
|
<span class="cline-any cline-neutral"> </span>
|
|
136
154
|
<span class="cline-any cline-yes">1x</span>
|
|
155
|
+
<span class="cline-any cline-yes">1x</span>
|
|
156
|
+
<span class="cline-any cline-yes">1x</span>
|
|
137
157
|
<span class="cline-any cline-neutral"> </span>
|
|
138
158
|
<span class="cline-any cline-neutral"> </span>
|
|
139
159
|
<span class="cline-any cline-neutral"> </span>
|
|
140
160
|
<span class="cline-any cline-neutral"> </span>
|
|
141
161
|
<span class="cline-any cline-yes">1x</span>
|
|
142
162
|
<span class="cline-any cline-neutral"> </span>
|
|
143
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import
|
|
144
|
-
import
|
|
145
|
-
import
|
|
163
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { LowSync } from '@commonify/lowdb'
|
|
164
|
+
import { JSONAdapter } from './adapters/JSONAdapter'
|
|
165
|
+
import lodash from 'lodash'
|
|
166
|
+
import { IJSON } from './types'
|
|
167
|
+
|
|
168
|
+
class LowWithLodash<T> extends LowSync<T> {
|
|
169
|
+
chain: lodash.ExpChain<this['data']> = lodash.chain(this).get('data')
|
|
170
|
+
}
|
|
146
171
|
class JSONStore {
|
|
147
|
-
private readonly db:
|
|
172
|
+
private readonly db: LowWithLodash<IJSON>
|
|
173
|
+
private hasRead: boolean = false
|
|
148
174
|
constructor (dbPath: string) {
|
|
149
175
|
if (!dbPath) {
|
|
150
176
|
throw Error('Please provide valid dbPath')
|
|
151
177
|
}
|
|
152
|
-
const adapter = new
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
},
|
|
156
|
-
deserialize: json.parse
|
|
157
|
-
})
|
|
158
|
-
this.db = Lowdb(adapter)
|
|
178
|
+
const adapter = new JSONAdapter(dbPath)
|
|
179
|
+
this.db = new LowWithLodash(adapter)
|
|
180
|
+
this.read()
|
|
159
181
|
}
|
|
160
182
|
|
|
161
|
-
read ():
|
|
162
|
-
|
|
183
|
+
read (flush = false): IJSON {
|
|
184
|
+
/* istanbul ignore else */
|
|
185
|
+
if (flush || !this.hasRead) {
|
|
186
|
+
this.hasRead = true
|
|
187
|
+
this.db.read()
|
|
188
|
+
}
|
|
189
|
+
return this.db.data as IJSON
|
|
163
190
|
}
|
|
164
191
|
|
|
165
192
|
get (key = ''): any {
|
|
166
|
-
return this.
|
|
193
|
+
return this.db.chain.get(key).value()
|
|
167
194
|
}
|
|
168
195
|
|
|
169
196
|
set (key: string, value: any): void {
|
|
170
|
-
|
|
197
|
+
this.db.chain.set(key, value).value()
|
|
198
|
+
this.db.write()
|
|
171
199
|
}
|
|
172
200
|
|
|
173
201
|
has (key: string): boolean {
|
|
174
|
-
return this.
|
|
202
|
+
return this.db.chain.has(key).value()
|
|
175
203
|
}
|
|
176
204
|
|
|
177
205
|
unset (key: string, value: any): boolean {
|
|
178
|
-
|
|
206
|
+
const res = this.db.chain.get(key).unset(value).value()
|
|
207
|
+
this.db.write()
|
|
208
|
+
return res
|
|
179
209
|
}
|
|
180
210
|
}
|
|
181
211
|
|
|
@@ -189,7 +219,7 @@ export {
|
|
|
189
219
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
190
220
|
Code coverage generated by
|
|
191
221
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
192
|
-
at
|
|
222
|
+
at Sun Jun 12 2022 02:11:39 GMT+0000 (Coordinated Universal Time)
|
|
193
223
|
</div>
|
|
194
224
|
</div>
|
|
195
225
|
<script src="../prettify.js"></script>
|