w-orm-lowdb 1.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.
Files changed (53) hide show
  1. package/.editorconfig +9 -0
  2. package/.eslintignore +3 -0
  3. package/.eslintrc.js +55 -0
  4. package/.jsdoc +25 -0
  5. package/LICENSE +21 -0
  6. package/README.md +162 -0
  7. package/SECURITY.md +5 -0
  8. package/babel.config.js +15 -0
  9. package/db.json +14 -0
  10. package/dist/w-orm-lowdb.umd.js +7 -0
  11. package/dist/w-orm-lowdb.umd.js.map +1 -0
  12. package/docs/WOrmLowdb.html +1406 -0
  13. package/docs/WOrmLowdb.mjs.html +644 -0
  14. package/docs/fonts/Montserrat/Montserrat-Bold.eot +0 -0
  15. package/docs/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
  16. package/docs/fonts/Montserrat/Montserrat-Bold.woff +0 -0
  17. package/docs/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
  18. package/docs/fonts/Montserrat/Montserrat-Regular.eot +0 -0
  19. package/docs/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
  20. package/docs/fonts/Montserrat/Montserrat-Regular.woff +0 -0
  21. package/docs/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
  22. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
  23. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +978 -0
  24. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
  25. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
  26. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
  27. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
  28. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1049 -0
  29. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
  30. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
  31. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
  32. package/docs/index.html +84 -0
  33. package/docs/scripts/collapse.js +39 -0
  34. package/docs/scripts/commonNav.js +28 -0
  35. package/docs/scripts/linenumber.js +25 -0
  36. package/docs/scripts/nav.js +12 -0
  37. package/docs/scripts/polyfill.js +4 -0
  38. package/docs/scripts/prettify/Apache-License-2.0.txt +202 -0
  39. package/docs/scripts/prettify/lang-css.js +2 -0
  40. package/docs/scripts/prettify/prettify.js +28 -0
  41. package/docs/scripts/search.js +99 -0
  42. package/docs/styles/jsdoc.css +776 -0
  43. package/docs/styles/prettify.css +80 -0
  44. package/g-basic.mjs +178 -0
  45. package/g.mjs +24 -0
  46. package/package.json +32 -0
  47. package/script.txt +18 -0
  48. package/src/WOrmLowdb.mjs +572 -0
  49. package/test/basic.test.mjs +376 -0
  50. package/toolg/addVersion.mjs +4 -0
  51. package/toolg/cleanFolder.mjs +4 -0
  52. package/toolg/gDistRollup.mjs +23 -0
  53. package/toolg/modifyReadme.mjs +4 -0
@@ -0,0 +1,376 @@
1
+ import assert from 'assert'
2
+ import wo from '../src/WOrmLowdb.mjs'
3
+
4
+
5
+ function isWindows() {
6
+ return process.platform === 'win32'
7
+ }
8
+
9
+
10
+ if (isWindows()) {
11
+ describe('basic', function() {
12
+ let rt = null
13
+ let vans = {}
14
+ let vget = {}
15
+
16
+
17
+ before(async function () {
18
+
19
+
20
+ let opt = {
21
+ url: './db.json',
22
+ db: 'worm',
23
+ cl: 'users',
24
+ }
25
+
26
+
27
+ let rs = [
28
+ {
29
+ id: 'id-peter',
30
+ name: 'peter',
31
+ value: 123,
32
+ },
33
+ {
34
+ id: 'id-rosemary',
35
+ name: 'rosemary',
36
+ value: 123.456,
37
+ },
38
+ {
39
+ id: '',
40
+ name: 'kettle',
41
+ value: 456,
42
+ },
43
+ ]
44
+
45
+
46
+ let rsm = [
47
+ {
48
+ id: 'id-peter',
49
+ name: 'peter(modify)'
50
+ },
51
+ {
52
+ id: 'id-rosemary',
53
+ name: 'rosemary(modify)'
54
+ },
55
+ {
56
+ id: '',
57
+ name: 'kettle(modify)'
58
+ },
59
+ ]
60
+
61
+
62
+ //w
63
+ let w = wo(opt)
64
+
65
+
66
+ //on
67
+ w.on('change', function(mode, data, res) {
68
+ // console.log('change', mode)
69
+ })
70
+
71
+
72
+ //delAll
73
+ rt = null
74
+ vans[1] = {
75
+ nDeleted: 2,
76
+ ok: 1,
77
+ }
78
+ await w.delAll()
79
+ .then(function(msg) {
80
+ // console.log('delAll then', msg)
81
+ //考慮可能有不同初始測試數據
82
+ // delAll then { n: 2, nDeleted: 2, ok: 1 }
83
+ // delAll then { n: 3, nDeleted: 2, ok: 1 }
84
+ //僅針對nDeleted與ok欄位比對
85
+ rt = {
86
+ nDeleted: msg.nDeleted,
87
+ ok: msg.ok,
88
+ }
89
+ })
90
+ .catch(function(msg) {
91
+ // console.log('delAll catch', msg)
92
+ rt = msg.toString()
93
+ })
94
+ vget[1] = rt
95
+
96
+
97
+ //insert
98
+ rt = null
99
+ vans[2] = { n: 3, nInserted: 3, ok: 1 }
100
+ await w.insert(rs)
101
+ .then(function(msg) {
102
+ // console.log('insert then', msg)
103
+ // insert then { n: 3, nInserted: 3, ok: 1 }
104
+ rt = msg
105
+ })
106
+ .catch(function(msg) {
107
+ // console.log('insert catch', msg)
108
+ rt = msg.toString()
109
+ })
110
+ vget[2] = rt
111
+
112
+
113
+ //save
114
+ rt = null
115
+ vans[3] = [
116
+ { n: 1, nModified: 1, ok: 1 },
117
+ { n: 1, nModified: 1, ok: 1 },
118
+ { n: 0, nModified: 0, ok: 1 }
119
+ ]
120
+ await w.save(rsm, { autoInsert: false })
121
+ .then(function(msg) {
122
+ // console.log('save then', msg)
123
+ // save then [
124
+ // { n: 1, nModified: 1, ok: 1 },
125
+ // { n: 1, nModified: 1, ok: 1 },
126
+ // { n: 0, nModified: 0, ok: 1 }
127
+ // ]
128
+ rt = msg
129
+ })
130
+ .catch(function(msg) {
131
+ // console.log('save catch', msg)
132
+ rt = msg.toString()
133
+ })
134
+ vget[3] = rt
135
+
136
+
137
+ //select all
138
+ rt = null
139
+ vans[4] = [
140
+ { id: 'id-peter', name: 'peter(modify)', value: 123 },
141
+ { id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 },
142
+ {
143
+ // id: {random id},
144
+ name: 'kettle',
145
+ value: 456
146
+ }
147
+ ]
148
+ await w.select()
149
+ .then(function(msg) {
150
+ // console.log('select all then', msg)
151
+ // select all [
152
+ // { id: 'id-peter', name: 'peter(modify)', value: 123 },
153
+ // { id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 },
154
+ // {
155
+ // id: {random id},
156
+ // name: 'kettle',
157
+ // value: 456
158
+ // }
159
+ // ]
160
+ rt = [
161
+ msg[0],
162
+ msg[1],
163
+ {
164
+ name: msg[2].name,
165
+ value: msg[2].value,
166
+ },
167
+ ]
168
+ })
169
+ .catch(function(msg) {
170
+ // console.log('select all catch', msg)
171
+ rt = msg.toString()
172
+ })
173
+ vget[4] = rt
174
+
175
+
176
+ //select
177
+ rt = null
178
+ vans[5] = [{ id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 }]
179
+ await w.select({ id: 'id-rosemary' })
180
+ .then(function(msg) {
181
+ // console.log('select then', msg)
182
+ // select [ { id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 } ]
183
+ rt = msg
184
+ })
185
+ .catch(function(msg) {
186
+ // console.log('select catch', msg)
187
+ rt = msg.toString()
188
+ })
189
+ vget[5] = rt
190
+
191
+
192
+ //select by $and, $gt, $lt
193
+ rt = null
194
+ vans[6] = [{ id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 }]
195
+ await w.select({ '$and': [{ value: { '$gt': 123 } }, { value: { '$lt': 200 } }] })
196
+ .then(function(msg) {
197
+ // console.log('select by $and, $gt, $lt then', msg)
198
+ // select by $and, $gt, $lt [ { id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 } ]
199
+ rt = msg
200
+ })
201
+ .catch(function(msg) {
202
+ // console.log('select by $and, $gt, $lt catch', msg)
203
+ rt = msg.toString()
204
+ })
205
+ vget[6] = rt
206
+
207
+
208
+ //select by $or, $gte, $lte
209
+ rt = null
210
+ vans[7] = [
211
+ {
212
+ // id: {random id},
213
+ name: 'kettle',
214
+ value: 456
215
+ }
216
+ ]
217
+ await w.select({ '$or': [{ value: { '$lte': -1 } }, { value: { '$gte': 200 } }] })
218
+ .then(function(msg) {
219
+ // console.log('select by $or, $gte, $lte then', msg)
220
+ // select by $or, $gte, $lte [
221
+ // {
222
+ // id: {random id},
223
+ // name: 'kettle',
224
+ // value: 456
225
+ // }
226
+ // ]
227
+ rt = [
228
+ {
229
+ name: msg[0].name,
230
+ value: msg[0].value,
231
+ },
232
+ ]
233
+ })
234
+ .catch(function(msg) {
235
+ // console.log('select by $or, $gte, $lte catch', msg)
236
+ rt = msg.toString()
237
+ })
238
+ vget[7] = rt
239
+
240
+
241
+ //select by $or, $and, $ne, $in, $nin
242
+ rt = null
243
+ vans[8] = [
244
+ {
245
+ id: 'id-rosemary',
246
+ name: 'rosemary(modify)',
247
+ value: 123.456
248
+ },
249
+ {
250
+ // id: {random id},
251
+ name: 'kettle',
252
+ value: 456
253
+ }
254
+ ]
255
+ await w.select({ '$or': [{ '$and': [{ value: { '$ne': 123 } }, { value: { '$in': [123, 321, 123.456, 456] } }, { value: { '$nin': [456, 654] } }] }, { '$or': [{ value: { '$lte': -1 } }, { value: { '$gte': 400 } }] }] })
256
+ .then(function(msg) {
257
+ // console.log('select by $or, $and, $ne, $in, $nin then', msg)
258
+ // select by $or, $and, $ne, $in, $nin [
259
+ // {
260
+ // id: 'id-rosemary',
261
+ // name: 'rosemary(modify)',
262
+ // value: 123.456
263
+ // },
264
+ // {
265
+ // id: {random id},
266
+ // name: 'kettle',
267
+ // value: 456
268
+ // }
269
+ // ]
270
+ rt = [
271
+ msg[0],
272
+ {
273
+ name: msg[1].name,
274
+ value: msg[1].value,
275
+ },
276
+ ]
277
+ })
278
+ .catch(function(msg) {
279
+ // console.log('select by $or, $and, $ne, $in, $nin catch', msg)
280
+ rt = msg.toString()
281
+ })
282
+ vget[8] = rt
283
+
284
+
285
+ // //select by regex
286
+ // rt = null
287
+ // vans[9] = [{ id: 'id-peter', name: 'peter(modify)', value: 123 }]
288
+ // await w.select({ name: { $regex: 'PeT', $options: '$i' } })
289
+ // .then(function(msg) {
290
+ // // console.log('select by regex then', msg)
291
+ // // selectReg [ { id: 'id-peter', name: 'peter(modify)', value: 123 } ]
292
+ // rt = msg
293
+ // })
294
+ // .catch(function(msg) {
295
+ // // console.log('select by regex catch', msg)
296
+ // rt = msg.toString()
297
+ // })
298
+ // vget[9] = rt
299
+
300
+
301
+ //del
302
+ rt = null
303
+ vans[10] = [{ n: 1, nDeleted: 1, ok: 1 }]
304
+ let ss = await w.select()
305
+ let d = ss.filter(function(v) {
306
+ return v.name === 'kettle'
307
+ })
308
+ await w.del(d)
309
+ .then(function(msg) {
310
+ // console.log('del then', msg)
311
+ // del then [ { n: 1, nDeleted: 1, ok: 1 } ]
312
+ rt = msg
313
+ })
314
+ .catch(function(msg) {
315
+ // console.log('del catch', msg)
316
+ rt = msg.toString()
317
+ })
318
+ vget[10] = rt
319
+
320
+
321
+ })
322
+
323
+
324
+ it(`should get ${JSON.stringify(vans[1])} for delAll`, async function() {
325
+ assert.strict.deepStrictEqual(vget[1], vans[1])
326
+ })
327
+
328
+
329
+ it(`should get ${JSON.stringify(vans[2])} for insert`, async function() {
330
+ assert.strict.deepStrictEqual(vget[2], vans[2])
331
+ })
332
+
333
+
334
+ it(`should get ${JSON.stringify(vans[3])} for save`, async function() {
335
+ assert.strict.deepStrictEqual(vget[3], vans[3])
336
+ })
337
+
338
+
339
+ it(`should get ${JSON.stringify(vans[4])} for select all`, async function() {
340
+ assert.strict.deepStrictEqual(vget[4], vans[4])
341
+ })
342
+
343
+
344
+ it(`should get ${JSON.stringify(vans[5])} for select`, async function() {
345
+ assert.strict.deepStrictEqual(vget[5], vans[5])
346
+ })
347
+
348
+
349
+ it(`should get ${JSON.stringify(vans[6])} for select by $and, $gt, $lt`, async function() {
350
+ assert.strict.deepStrictEqual(vget[6], vans[6])
351
+ })
352
+
353
+
354
+ it(`should get ${JSON.stringify(vans[7])} for select by $or, $gte, $lte`, async function() {
355
+ assert.strict.deepStrictEqual(vget[7], vans[7])
356
+ })
357
+
358
+
359
+ it(`should get ${JSON.stringify(vans[8])} for select by $or, $and, $ne, $in, $nin`, async function() {
360
+ assert.strict.deepStrictEqual(vget[8], vans[8])
361
+ })
362
+
363
+
364
+ // it(`should get ${JSON.stringify(vans[9])} for select by regex`, async function() {
365
+ // assert.strict.deepStrictEqual(vget[9], vans[9])
366
+ // })
367
+
368
+
369
+ it(`should get ${JSON.stringify(vans[10])} for del`, async function() {
370
+ assert.strict.deepStrictEqual(vget[10], vans[10])
371
+ })
372
+
373
+
374
+ })
375
+ }
376
+
@@ -0,0 +1,4 @@
1
+ import addVersion from 'w-package-tools/src/addVersion.mjs'
2
+
3
+
4
+ addVersion()
@@ -0,0 +1,4 @@
1
+ import cleanFolder from 'w-package-tools/src/cleanFolder.mjs'
2
+
3
+
4
+ cleanFolder('docs')
@@ -0,0 +1,23 @@
1
+ import rollupFiles from 'w-package-tools/src/rollupFiles.mjs'
2
+ import getFiles from 'w-package-tools/src/getFiles.mjs'
3
+
4
+
5
+ let fdSrc = './src'
6
+ let fdTar = './dist'
7
+
8
+
9
+ rollupFiles({
10
+ fns: getFiles(fdSrc),
11
+ fdSrc,
12
+ fdTar,
13
+ nameDistType: 'kebabCase',
14
+ globals: {
15
+ 'events': 'events',
16
+ 'mingo': 'mingo',
17
+ },
18
+ external: [
19
+ 'events',
20
+ 'mingo',
21
+ ],
22
+ })
23
+
@@ -0,0 +1,4 @@
1
+ import modifyReadme from 'w-package-tools/src/modifyReadme.mjs'
2
+
3
+
4
+ modifyReadme()