@picgo/store 1.0.3 → 2.0.2
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 +41 -0
- package/README.md +33 -1
- package/coverage/clover.xml +164 -113
- package/coverage/coverage-final.json +6 -5
- package/coverage/lcov-report/index.html +20 -20
- package/coverage/lcov-report/src/DBStore.ts.html +183 -66
- package/coverage/lcov-report/src/JSONStore.ts.html +60 -30
- package/coverage/lcov-report/src/adapters/JSONAdapter.ts.html +157 -0
- package/coverage/lcov-report/src/adapters/ZlibAdapter.ts.html +94 -52
- package/coverage/lcov-report/src/adapters/index.html +24 -9
- 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 +43 -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 +317 -218
- package/dist/DBStore.d.ts +14 -6
- package/dist/JSONStore.d.ts +3 -2
- package/dist/adapters/JSONAdapter.d.ts +8 -0
- package/dist/adapters/ZlibAdapter.d.ts +3 -1
- package/dist/index.js +2 -2
- package/dist/types/index.d.ts +12 -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
|
|
|
@@ -160,37 +160,87 @@
|
|
|
160
160
|
<a name='L102'></a><a href='#L102'>102</a>
|
|
161
161
|
<a name='L103'></a><a href='#L103'>103</a>
|
|
162
162
|
<a name='L104'></a><a href='#L104'>104</a>
|
|
163
|
-
<a name='L105'></a><a href='#L105'>105</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>
|
|
164
205
|
<span class="cline-any cline-yes">1x</span>
|
|
165
206
|
<span class="cline-any cline-yes">1x</span>
|
|
166
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>
|
|
167
210
|
<span class="cline-any cline-neutral"> </span>
|
|
168
211
|
<span class="cline-any cline-neutral"> </span>
|
|
169
212
|
<span class="cline-any cline-neutral"> </span>
|
|
170
213
|
<span class="cline-any cline-neutral"> </span>
|
|
171
|
-
<span class="cline-any cline-yes">
|
|
214
|
+
<span class="cline-any cline-yes">18x</span>
|
|
215
|
+
<span class="cline-any cline-yes">18x</span>
|
|
172
216
|
<span class="cline-any cline-neutral"> </span>
|
|
173
217
|
<span class="cline-any cline-neutral"> </span>
|
|
174
|
-
<span class="cline-any cline-
|
|
218
|
+
<span class="cline-any cline-neutral"> </span>
|
|
219
|
+
<span class="cline-any cline-yes">18x</span>
|
|
175
220
|
<span class="cline-any cline-yes">2x</span>
|
|
176
221
|
<span class="cline-any cline-neutral"> </span>
|
|
177
|
-
<span class="cline-any cline-yes">
|
|
178
|
-
<span class="cline-any cline-yes">
|
|
179
|
-
<span class="cline-any cline-yes">
|
|
180
|
-
<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>
|
|
181
226
|
<span class="cline-any cline-neutral"> </span>
|
|
182
227
|
<span class="cline-any cline-neutral"> </span>
|
|
183
228
|
<span class="cline-any cline-neutral"> </span>
|
|
184
|
-
<span class="cline-any cline-yes">
|
|
185
|
-
<span class="cline-any cline-yes">12x</span>
|
|
229
|
+
<span class="cline-any cline-yes">1x</span>
|
|
186
230
|
<span class="cline-any cline-neutral"> </span>
|
|
187
|
-
<span class="cline-any cline-yes">40x</span>
|
|
188
231
|
<span class="cline-any cline-neutral"> </span>
|
|
189
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>
|
|
190
236
|
<span class="cline-any cline-neutral"> </span>
|
|
191
|
-
<span class="cline-any cline-yes">
|
|
192
|
-
<span class="cline-any cline-
|
|
193
|
-
<span class="cline-any cline-
|
|
237
|
+
<span class="cline-any cline-yes">56x</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-yes">18x</span>
|
|
242
|
+
<span class="cline-any cline-yes">18x</span>
|
|
243
|
+
<span class="cline-any cline-yes">18x</span>
|
|
194
244
|
<span class="cline-any cline-yes">6x</span>
|
|
195
245
|
<span class="cline-any cline-yes">1x</span>
|
|
196
246
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -201,35 +251,55 @@
|
|
|
201
251
|
<span class="cline-any cline-yes">1x</span>
|
|
202
252
|
<span class="cline-any cline-neutral"> </span>
|
|
203
253
|
<span class="cline-any cline-neutral"> </span>
|
|
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>
|
|
204
265
|
<span class="cline-any cline-yes">12x</span>
|
|
205
266
|
<span class="cline-any cline-neutral"> </span>
|
|
206
267
|
<span class="cline-any cline-neutral"> </span>
|
|
207
268
|
<span class="cline-any cline-neutral"> </span>
|
|
269
|
+
<span class="cline-any cline-yes">13x</span>
|
|
208
270
|
<span class="cline-any cline-neutral"> </span>
|
|
209
271
|
<span class="cline-any cline-neutral"> </span>
|
|
210
272
|
<span class="cline-any cline-neutral"> </span>
|
|
211
|
-
<span class="cline-any cline-yes">
|
|
212
|
-
<span class="cline-any cline-yes">
|
|
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>
|
|
277
|
+
<span class="cline-any cline-neutral"> </span>
|
|
213
278
|
<span class="cline-any cline-neutral"> </span>
|
|
214
|
-
<span class="cline-any cline-yes">6x</span>
|
|
215
279
|
<span class="cline-any cline-neutral"> </span>
|
|
216
|
-
<span class="cline-any cline-yes">
|
|
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>
|
|
217
285
|
<span class="cline-any cline-yes">1x</span>
|
|
218
286
|
<span class="cline-any cline-yes">1x</span>
|
|
219
287
|
<span class="cline-any cline-neutral"> </span>
|
|
220
|
-
<span class="cline-any cline-yes">
|
|
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>
|
|
221
292
|
<span class="cline-any cline-neutral"> </span>
|
|
222
|
-
<span class="cline-any cline-yes">
|
|
223
|
-
<span class="cline-any cline-yes">5x</span>
|
|
224
|
-
<span class="cline-any cline-yes">5x</span>
|
|
293
|
+
<span class="cline-any cline-yes">8x</span>
|
|
225
294
|
<span class="cline-any cline-neutral"> </span>
|
|
226
295
|
<span class="cline-any cline-neutral"> </span>
|
|
227
296
|
<span class="cline-any cline-neutral"> </span>
|
|
228
297
|
<span class="cline-any cline-yes">1x</span>
|
|
229
|
-
<span class="cline-any cline-yes">1x</span>
|
|
230
298
|
<span class="cline-any cline-yes">2x</span>
|
|
299
|
+
<span class="cline-any cline-yes">5x</span>
|
|
231
300
|
<span class="cline-any cline-neutral"> </span>
|
|
232
|
-
<span class="cline-any cline-yes">
|
|
301
|
+
<span class="cline-any cline-yes">2x</span>
|
|
302
|
+
<span class="cline-any cline-yes">2x</span>
|
|
233
303
|
<span class="cline-any cline-neutral"> </span>
|
|
234
304
|
<span class="cline-any cline-neutral"> </span>
|
|
235
305
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -237,7 +307,8 @@
|
|
|
237
307
|
<span class="cline-any cline-yes">3x</span>
|
|
238
308
|
<span class="cline-any cline-yes">3x</span>
|
|
239
309
|
<span class="cline-any cline-yes">3x</span>
|
|
240
|
-
<span class="cline-any cline-
|
|
310
|
+
<span class="cline-any cline-yes">5x</span>
|
|
311
|
+
<span class="cline-any cline-yes">2x</span>
|
|
241
312
|
<span class="cline-any cline-yes">2x</span>
|
|
242
313
|
<span class="cline-any cline-yes">2x</span>
|
|
243
314
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -246,16 +317,23 @@
|
|
|
246
317
|
<span class="cline-any cline-neutral"> </span>
|
|
247
318
|
<span class="cline-any cline-neutral"> </span>
|
|
248
319
|
<span class="cline-any cline-neutral"> </span>
|
|
249
|
-
<span class="cline-any cline-yes">
|
|
320
|
+
<span class="cline-any cline-yes">4x</span>
|
|
250
321
|
<span class="cline-any cline-neutral"> </span>
|
|
251
322
|
<span class="cline-any cline-neutral"> </span>
|
|
252
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>
|
|
253
331
|
<span class="cline-any cline-neutral"> </span>
|
|
254
332
|
<span class="cline-any cline-neutral"> </span>
|
|
255
333
|
<span class="cline-any cline-neutral"> </span>
|
|
256
334
|
<span class="cline-any cline-neutral"> </span>
|
|
257
335
|
<span class="cline-any cline-yes">1x</span>
|
|
258
|
-
<span class="cline-any cline-
|
|
336
|
+
<span class="cline-any cline-yes">1x</span>
|
|
259
337
|
<span class="cline-any cline-yes">1x</span>
|
|
260
338
|
<span class="cline-any cline-yes">1x</span>
|
|
261
339
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -264,15 +342,21 @@
|
|
|
264
342
|
<span class="cline-any cline-neutral"> </span>
|
|
265
343
|
<span class="cline-any cline-yes">1x</span>
|
|
266
344
|
<span class="cline-any cline-neutral"> </span>
|
|
267
|
-
<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'
|
|
268
349
|
import { ZlibAdapter } from './adapters/ZlibAdapter'
|
|
269
350
|
import { metaInfoHelper } from './utils/metaInfoHelper'
|
|
270
|
-
import { IMetaInfoMode, IObject, IResult, IGetResult, IFilter } from './types'
|
|
351
|
+
import { IMetaInfoMode, IObject, IResult, IGetResult, IFilter, ILowData, ILowDataKeyMap } from './types'
|
|
352
|
+
|
|
271
353
|
class DBStore {
|
|
272
|
-
private readonly db:
|
|
354
|
+
private readonly db: Low<ILowData>
|
|
273
355
|
private readonly collectionName: string
|
|
274
356
|
private readonly collectionKey: string
|
|
275
|
-
private
|
|
357
|
+
private hasRead = false
|
|
358
|
+
public errorList: Array<Error | string> = []
|
|
359
|
+
private readonly adapter: ZlibAdapter
|
|
276
360
|
constructor (dbPath: string, collectionName: string) {
|
|
277
361
|
// eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
|
|
278
362
|
if (!dbPath || !collectionName) {
|
|
@@ -280,19 +364,24 @@ class DBStore {
|
|
|
280
364
|
}
|
|
281
365
|
this.collectionName = collectionName
|
|
282
366
|
this.collectionKey = `__${collectionName}_KEY__`
|
|
283
|
-
|
|
284
|
-
this.db =
|
|
367
|
+
this.adapter = new ZlibAdapter(dbPath, collectionName, this.errorList)
|
|
368
|
+
this.db = new Low<ILowData>(this.adapter)
|
|
285
369
|
}
|
|
286
370
|
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
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()
|
|
290
379
|
}
|
|
291
|
-
return this.
|
|
380
|
+
return this.db.data
|
|
292
381
|
}
|
|
293
382
|
|
|
294
383
|
async get (filter?: IFilter): Promise<IGetResult<IObject>> {
|
|
295
|
-
let data: Array<IResult<IObject>> = (await this.
|
|
384
|
+
let data: Array<IResult<IObject>> = (await this.getCollection()).slice()
|
|
296
385
|
const total = data.length
|
|
297
386
|
if (filter !== undefined) {
|
|
298
387
|
if (filter.orderBy === 'desc') {
|
|
@@ -310,58 +399,86 @@ class DBStore {
|
|
|
310
399
|
data
|
|
311
400
|
}
|
|
312
401
|
}
|
|
402
|
+
|
|
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
|
|
420
|
+
}
|
|
313
421
|
|
|
314
422
|
@metaInfoHelper(IMetaInfoMode.create)
|
|
315
|
-
async insert<T> (value: T): Promise<IResult<T>> {
|
|
423
|
+
async insert<T> (value: T, writable = true): Promise<IResult<T>> {
|
|
316
424
|
const id = (value as IResult<T>).id
|
|
317
|
-
|
|
318
|
-
const result = (await this.read()).get(`${this.collectionKey}.${id}`).value()
|
|
425
|
+
const result = await this.getCollectionKey(id)
|
|
319
426
|
// @ts-ignore
|
|
320
427
|
if (result) {
|
|
321
428
|
await this.updateById(id, value)
|
|
322
429
|
return (value as IResult<T>)
|
|
323
430
|
}
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
431
|
+
(await this.getCollection()).push(value as IResult<T>)
|
|
432
|
+
await this.setCollectionKey(id)
|
|
433
|
+
if (writable) {
|
|
434
|
+
await this.db.write()
|
|
435
|
+
}
|
|
328
436
|
return (value as IResult<T>)
|
|
329
437
|
}
|
|
330
438
|
|
|
331
|
-
@metaInfoHelper(IMetaInfoMode.
|
|
439
|
+
@metaInfoHelper(IMetaInfoMode.createMany)
|
|
332
440
|
async insertMany<T> (value: T[]): Promise<Array<IResult<T>>> {
|
|
333
441
|
for (const item of value) {
|
|
334
|
-
await this.insert(item)
|
|
442
|
+
await this.insert(item, false)
|
|
335
443
|
}
|
|
444
|
+
await this.db.write()
|
|
336
445
|
return (value as Array<IResult<T>>)
|
|
337
446
|
}
|
|
338
447
|
|
|
339
448
|
@metaInfoHelper(IMetaInfoMode.update)
|
|
340
449
|
async updateById (id: string, value: IObject): Promise<boolean> {
|
|
341
|
-
const collection =
|
|
342
|
-
const result =
|
|
450
|
+
const collection = await this.getCollection()
|
|
451
|
+
const result = await this.getCollectionKey(id)
|
|
343
452
|
if (result) {
|
|
344
|
-
|
|
345
|
-
|
|
453
|
+
const item = collection.find(item => item.id === id)
|
|
454
|
+
Object.assign(item, value)
|
|
455
|
+
await this.db.write()
|
|
346
456
|
return true
|
|
347
457
|
} else {
|
|
348
458
|
return false
|
|
349
459
|
}
|
|
350
460
|
}
|
|
351
461
|
|
|
352
|
-
async getById<T> (id: string): Promise<T | undefined> {
|
|
353
|
-
return (await this.
|
|
354
|
-
.get(this.collectionName)
|
|
355
|
-
// @ts-ignore
|
|
356
|
-
.find({ id })
|
|
357
|
-
.value()
|
|
462
|
+
async getById<T> (id: string): Promise<IResult<T> | undefined> {
|
|
463
|
+
return (await this.getCollection()).find(item => item.id === id) as IResult<T>
|
|
358
464
|
}
|
|
359
465
|
|
|
360
466
|
async removeById (id: string): Promise<void> {
|
|
361
|
-
const collection =
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
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)
|
|
365
482
|
}
|
|
366
483
|
}
|
|
367
484
|
|
|
@@ -375,7 +492,7 @@ export {
|
|
|
375
492
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
376
493
|
Code coverage generated by
|
|
377
494
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
378
|
-
at Sun
|
|
495
|
+
at Sun Jul 31 2022 08:03:19 GMT+0000 (Coordinated Universal Time)
|
|
379
496
|
</div>
|
|
380
497
|
</div>
|
|
381
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
|
-
<span class="cline-any cline-yes">
|
|
108
|
-
<span class="cline-any cline-yes">1x</span>
|
|
117
|
+
<span class="cline-any cline-yes">6x</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">7x</span>
|
|
114
122
|
<span class="cline-any cline-neutral"> </span>
|
|
123
|
+
<span class="cline-any cline-yes">7x</span>
|
|
124
|
+
<span class="cline-any cline-yes">1x</span>
|
|
115
125
|
<span class="cline-any cline-neutral"> </span>
|
|
116
|
-
<span class="cline-any cline-yes">
|
|
126
|
+
<span class="cline-any cline-yes">6x</span>
|
|
127
|
+
<span class="cline-any cline-yes">6x</span>
|
|
128
|
+
<span class="cline-any cline-yes">6x</span>
|
|
117
129
|
<span class="cline-any cline-neutral"> </span>
|
|
118
130
|
<span class="cline-any cline-neutral"> </span>
|
|
119
131
|
<span class="cline-any cline-neutral"> </span>
|
|
120
|
-
<span class="cline-any cline-yes">6x</span>
|
|
121
132
|
<span class="cline-any cline-neutral"> </span>
|
|
133
|
+
<span class="cline-any cline-yes">8x</span>
|
|
134
|
+
<span class="cline-any cline-yes">8x</span>
|
|
135
|
+
<span class="cline-any cline-yes">8x</span>
|
|
122
136
|
<span class="cline-any cline-neutral"> </span>
|
|
137
|
+
<span class="cline-any cline-yes">8x</span>
|
|
123
138
|
<span class="cline-any cline-neutral"> </span>
|
|
124
|
-
<span class="cline-any cline-yes">3x</span>
|
|
125
139
|
<span class="cline-any cline-neutral"> </span>
|
|
126
140
|
<span class="cline-any cline-neutral"> </span>
|
|
141
|
+
<span class="cline-any cline-yes">4x</span>
|
|
142
|
+
<span class="cline-any cline-neutral"> </span>
|
|
127
143
|
<span class="cline-any cline-neutral"> </span>
|
|
128
|
-
<span class="cline-any cline-
|
|
144
|
+
<span class="cline-any cline-neutral"> </span>
|
|
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 Sun
|
|
222
|
+
at Sun Jul 31 2022 08:03:19 GMT+0000 (Coordinated Universal Time)
|
|
193
223
|
</div>
|
|
194
224
|
</div>
|
|
195
225
|
<script src="../prettify.js"></script>
|