w-orm-lmdb 1.0.1

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