@k3000/store 1.4.0 → 1.4.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/README.md +6 -0
- package/architect.mjs +50 -0
- package/package.json +1 -1
- package/test/1/data +0 -0
- package/test/1/index +0 -0
- package/test/2/data +0 -0
- package/test/2/index +0 -0
- package/test/3/data +0 -0
- package/test/3/index +0 -0
- package/test/4/data +0 -0
- package/test/4/index +0 -0
- package/test/5/data +0 -0
- package/test/5/index +0 -0
- package/test/6/data +0 -0
- package/test/6/index +0 -0
- package/test/7/data +0 -0
- package/test/7/index +0 -0
- package/test/7/index.mjs +6 -1
- package/test/7/type.ts +1 -0
- package/test/8/data +0 -0
- package/test/8/index +0 -0
- package/test/8/index.mjs +373 -0
- package/test/8/type.ts +172 -0
- package/test/index.mjs +3 -3
- package/test.mjs +35 -2
package/README.md
CHANGED
package/architect.mjs
CHANGED
|
@@ -811,6 +811,56 @@ export class Entities extends Array {
|
|
|
811
811
|
|
|
812
812
|
return s2b(value, this.#lengthSet[name])
|
|
813
813
|
}
|
|
814
|
+
|
|
815
|
+
intToBuffer(value, name) {
|
|
816
|
+
|
|
817
|
+
const size = this.#lengthSet[name]
|
|
818
|
+
|
|
819
|
+
const buffer = Buffer.alloc(size)
|
|
820
|
+
|
|
821
|
+
switch (size) {
|
|
822
|
+
|
|
823
|
+
case 1:
|
|
824
|
+
buffer.writeInt8(value)
|
|
825
|
+
break
|
|
826
|
+
case 2:
|
|
827
|
+
buffer.writeInt16BE(value)
|
|
828
|
+
break
|
|
829
|
+
case 3:
|
|
830
|
+
writeInt24BE(buffer, value)
|
|
831
|
+
break
|
|
832
|
+
case 4:
|
|
833
|
+
buffer.writeInt32BE(value)
|
|
834
|
+
break
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
return buffer
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
uintToBuffer(value, name) {
|
|
841
|
+
|
|
842
|
+
const size = this.#lengthSet[name]
|
|
843
|
+
|
|
844
|
+
const buffer = Buffer.alloc(size)
|
|
845
|
+
|
|
846
|
+
switch (size) {
|
|
847
|
+
|
|
848
|
+
case 1:
|
|
849
|
+
buffer.writeUint8(value)
|
|
850
|
+
break
|
|
851
|
+
case 2:
|
|
852
|
+
buffer.writeUint16BE(value)
|
|
853
|
+
break
|
|
854
|
+
case 3:
|
|
855
|
+
writeUint24BE(buffer, value)
|
|
856
|
+
break
|
|
857
|
+
case 4:
|
|
858
|
+
buffer.writeUint32BE(value)
|
|
859
|
+
break
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
return buffer
|
|
863
|
+
}
|
|
814
864
|
}
|
|
815
865
|
|
|
816
866
|
const u2o = (url = '') => {
|
package/package.json
CHANGED
package/test/1/data
CHANGED
|
Binary file
|
package/test/1/index
CHANGED
|
Binary file
|
package/test/2/data
CHANGED
|
Binary file
|
package/test/2/index
CHANGED
|
Binary file
|
package/test/3/data
CHANGED
|
Binary file
|
package/test/3/index
CHANGED
|
Binary file
|
package/test/4/data
CHANGED
|
Binary file
|
package/test/4/index
CHANGED
|
Binary file
|
package/test/5/data
CHANGED
|
Binary file
|
package/test/5/index
CHANGED
|
Binary file
|
package/test/6/data
CHANGED
|
Binary file
|
package/test/6/index
CHANGED
|
Binary file
|
package/test/7/data
CHANGED
|
Binary file
|
package/test/7/index
CHANGED
|
Binary file
|
package/test/7/index.mjs
CHANGED
|
@@ -132,7 +132,7 @@ class Log extends Entity {
|
|
|
132
132
|
enumerable: true,
|
|
133
133
|
configurable: false,
|
|
134
134
|
get: () => super.get($type).readUint16BE(0),
|
|
135
|
-
set: value => super.
|
|
135
|
+
set: value => super.set2($type, super.uintToBuffer(value, $type)),
|
|
136
136
|
},
|
|
137
137
|
uid: {
|
|
138
138
|
enumerable: true,
|
|
@@ -301,6 +301,11 @@ class LogSet extends Entities {
|
|
|
301
301
|
return super.findByValue($uid, super.s2b(uid, $uid))
|
|
302
302
|
}
|
|
303
303
|
|
|
304
|
+
indexByType(type) {
|
|
305
|
+
|
|
306
|
+
return super.findByValue($type, super.uintToBuffer(type, $type))
|
|
307
|
+
}
|
|
308
|
+
|
|
304
309
|
indexByTime({after, before} = {}) {
|
|
305
310
|
|
|
306
311
|
return super.findByTime($time, {after, before})
|
package/test/7/type.ts
CHANGED
package/test/8/data
ADDED
|
Binary file
|
package/test/8/index
ADDED
|
Binary file
|
package/test/8/index.mjs
ADDED
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
|
|
2
|
+
import {Entities, Entity, Storage, b2d, d2b, b2s, position, uInt32BEToBuffer, int32BEToBuffer,
|
|
3
|
+
doubleBEToBuffer, bigint32BEToBuffer, bigUint32BEToBuffer, readInt24BE, readUint24BE, Store} from '../../architect.mjs'
|
|
4
|
+
import {struct} from '../../generator.mjs'
|
|
5
|
+
|
|
6
|
+
const storage = new Storage(import.meta.url)
|
|
7
|
+
|
|
8
|
+
const $id = 'id'
|
|
9
|
+
const $uid = 'uid'
|
|
10
|
+
const $pwd = 'pwd'
|
|
11
|
+
const $valid = 'valid'
|
|
12
|
+
const $time = 'time'
|
|
13
|
+
const $type = 'type'
|
|
14
|
+
const $content = 'content'
|
|
15
|
+
const $test = 'test'
|
|
16
|
+
const $str = 'str'
|
|
17
|
+
const $test2 = 'test2'
|
|
18
|
+
|
|
19
|
+
class Admin extends Entity {
|
|
20
|
+
|
|
21
|
+
static name = 'admin'
|
|
22
|
+
|
|
23
|
+
static create(_) {
|
|
24
|
+
_.id = storage.updateValue(_.id, Admin.name, $id)
|
|
25
|
+
_.pwd = _.pwd || '123456'
|
|
26
|
+
_.time = _.time || new Date()
|
|
27
|
+
_.valid = _.valid || 0
|
|
28
|
+
return _
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
constructor(...arg) {
|
|
32
|
+
|
|
33
|
+
super(storage, ...arg)
|
|
34
|
+
|
|
35
|
+
return Object.defineProperties({}, {
|
|
36
|
+
[position]: {
|
|
37
|
+
enumerable: false,
|
|
38
|
+
configurable: false,
|
|
39
|
+
get: () => this[position],
|
|
40
|
+
},
|
|
41
|
+
id: {
|
|
42
|
+
enumerable: true,
|
|
43
|
+
configurable: false,
|
|
44
|
+
get: () => super.get($id).readUInt32BE(0),
|
|
45
|
+
set: value => {
|
|
46
|
+
super.set2($id, uInt32BEToBuffer(value))
|
|
47
|
+
this.#update()
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
pwd: {
|
|
51
|
+
enumerable: true,
|
|
52
|
+
configurable: false,
|
|
53
|
+
get: () => b2s(super.get($pwd)),
|
|
54
|
+
set: value => {
|
|
55
|
+
super.set($pwd, super.s2b(value, $pwd))
|
|
56
|
+
this.#update()
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
time: {
|
|
60
|
+
enumerable: true,
|
|
61
|
+
configurable: false,
|
|
62
|
+
get: () => b2d(super.get($time)),
|
|
63
|
+
set: value => super.set2($time, d2b(value)),
|
|
64
|
+
},
|
|
65
|
+
uid: {
|
|
66
|
+
enumerable: true,
|
|
67
|
+
configurable: false,
|
|
68
|
+
get: () => b2s(super.get($uid)),
|
|
69
|
+
set: value => {
|
|
70
|
+
super.set2($uid, super.s2b(value, $uid))
|
|
71
|
+
this.#update()
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
valid: {
|
|
75
|
+
enumerable: true,
|
|
76
|
+
configurable: false,
|
|
77
|
+
get: () => super.get($valid).readUint8(0),
|
|
78
|
+
set: value => {
|
|
79
|
+
super.set2($valid, super.uintToBuffer(value, $valid))
|
|
80
|
+
this.#update()
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
})
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
#update() {
|
|
88
|
+
|
|
89
|
+
this.time = Date.now()
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
class Log extends Entity {
|
|
94
|
+
|
|
95
|
+
static name = 'log'
|
|
96
|
+
|
|
97
|
+
static create(_) {
|
|
98
|
+
_.id = storage.updateValue(_.id, Log.name, $id)
|
|
99
|
+
_.time = _.time || new Date()
|
|
100
|
+
return _
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
constructor(...arg) {
|
|
104
|
+
|
|
105
|
+
super(storage, ...arg)
|
|
106
|
+
|
|
107
|
+
return Object.defineProperties({}, {
|
|
108
|
+
[position]: {
|
|
109
|
+
enumerable: false,
|
|
110
|
+
configurable: false,
|
|
111
|
+
get: () => this[position],
|
|
112
|
+
},
|
|
113
|
+
content: {
|
|
114
|
+
enumerable: true,
|
|
115
|
+
configurable: false,
|
|
116
|
+
get: () => b2s(super.get($content)),
|
|
117
|
+
set: value => super.set($content, super.s2b(value, $content)),
|
|
118
|
+
},
|
|
119
|
+
id: {
|
|
120
|
+
enumerable: true,
|
|
121
|
+
configurable: false,
|
|
122
|
+
get: () => super.get($id).readUInt32BE(0),
|
|
123
|
+
set: value => super.set2($id, uInt32BEToBuffer(value)),
|
|
124
|
+
},
|
|
125
|
+
time: {
|
|
126
|
+
enumerable: true,
|
|
127
|
+
configurable: false,
|
|
128
|
+
get: () => b2d(super.get($time)),
|
|
129
|
+
set: value => super.set2($time, d2b(value)),
|
|
130
|
+
},
|
|
131
|
+
type: {
|
|
132
|
+
enumerable: true,
|
|
133
|
+
configurable: false,
|
|
134
|
+
get: () => super.get($type).readUint16BE(0),
|
|
135
|
+
set: value => super.set2($type, super.uintToBuffer(value, $type)),
|
|
136
|
+
},
|
|
137
|
+
uid: {
|
|
138
|
+
enumerable: true,
|
|
139
|
+
configurable: false,
|
|
140
|
+
get: () => b2s(super.get($uid)),
|
|
141
|
+
set: value => super.set2($uid, super.s2b(value, $uid)),
|
|
142
|
+
},
|
|
143
|
+
})
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
class Test3 extends Entity {
|
|
149
|
+
|
|
150
|
+
static name = 'test3'
|
|
151
|
+
|
|
152
|
+
static create(_) {
|
|
153
|
+
|
|
154
|
+
return _
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
constructor(...arg) {
|
|
158
|
+
|
|
159
|
+
super(storage, ...arg)
|
|
160
|
+
|
|
161
|
+
return Object.defineProperties({}, {
|
|
162
|
+
[position]: {
|
|
163
|
+
enumerable: false,
|
|
164
|
+
configurable: false,
|
|
165
|
+
get: () => this[position],
|
|
166
|
+
},
|
|
167
|
+
pwd: {
|
|
168
|
+
enumerable: true,
|
|
169
|
+
configurable: false,
|
|
170
|
+
get: () => b2s(super.get($pwd)),
|
|
171
|
+
set: value => super.set($pwd, super.s2b(value, $pwd)),
|
|
172
|
+
},
|
|
173
|
+
str: {
|
|
174
|
+
enumerable: true,
|
|
175
|
+
configurable: false,
|
|
176
|
+
get: () => b2s(super.get($str)),
|
|
177
|
+
set: value => super.set($str, super.s2b(value, $str)),
|
|
178
|
+
},
|
|
179
|
+
test: {
|
|
180
|
+
enumerable: true,
|
|
181
|
+
configurable: false,
|
|
182
|
+
get: () => b2s(super.get($test)),
|
|
183
|
+
set: value => super.set($test, super.s2b(value, $test)),
|
|
184
|
+
},
|
|
185
|
+
test2: {
|
|
186
|
+
enumerable: true,
|
|
187
|
+
configurable: false,
|
|
188
|
+
get: () => b2s(super.get($test2)),
|
|
189
|
+
set: value => super.set($test2, super.s2b(value, $test2)),
|
|
190
|
+
},
|
|
191
|
+
uid: {
|
|
192
|
+
enumerable: true,
|
|
193
|
+
configurable: false,
|
|
194
|
+
get: () => b2s(super.get($uid)),
|
|
195
|
+
set: value => super.set($uid, super.s2b(value, $uid)),
|
|
196
|
+
},
|
|
197
|
+
})
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
class AdminSet extends Entities {
|
|
204
|
+
|
|
205
|
+
constructor() {
|
|
206
|
+
|
|
207
|
+
super(storage, Admin)
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* 内部方法
|
|
211
|
+
*/
|
|
212
|
+
s2b() {
|
|
213
|
+
|
|
214
|
+
throw new TypeError('s2b is not a function')
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* 内部方法
|
|
218
|
+
*/
|
|
219
|
+
findByValue() {
|
|
220
|
+
|
|
221
|
+
throw new TypeError('findByValue is not a function')
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* 内部方法
|
|
225
|
+
*/
|
|
226
|
+
findByTime() {
|
|
227
|
+
|
|
228
|
+
throw new TypeError('findByTime is not a function')
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* 内部方法
|
|
232
|
+
*/
|
|
233
|
+
stringToBuffer() {
|
|
234
|
+
|
|
235
|
+
throw new TypeError('stringToBuffer is not a function')
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
indexById(id) {
|
|
239
|
+
|
|
240
|
+
return super.findByValue($id, uInt32BEToBuffer(id, $id))
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
indexByUid(uid) {
|
|
244
|
+
|
|
245
|
+
return super.findByValue($uid, super.s2b(uid, $uid))
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
indexByValid(valid) {
|
|
249
|
+
|
|
250
|
+
return super.findByValue($valid, super.uintToBuffer(valid, $valid))
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
indexByTime({after, before} = {}) {
|
|
254
|
+
|
|
255
|
+
return super.findByTime($time, {after, before})
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
class LogSet extends Entities {
|
|
260
|
+
|
|
261
|
+
constructor() {
|
|
262
|
+
|
|
263
|
+
super(storage, Log)
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* 内部方法
|
|
267
|
+
*/
|
|
268
|
+
s2b() {
|
|
269
|
+
|
|
270
|
+
throw new TypeError('s2b is not a function')
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* 内部方法
|
|
274
|
+
*/
|
|
275
|
+
findByValue() {
|
|
276
|
+
|
|
277
|
+
throw new TypeError('findByValue is not a function')
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* 内部方法
|
|
281
|
+
*/
|
|
282
|
+
findByTime() {
|
|
283
|
+
|
|
284
|
+
throw new TypeError('findByTime is not a function')
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* 内部方法
|
|
288
|
+
*/
|
|
289
|
+
stringToBuffer() {
|
|
290
|
+
|
|
291
|
+
throw new TypeError('stringToBuffer is not a function')
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
indexById(id) {
|
|
295
|
+
|
|
296
|
+
return super.findByValue($id, uInt32BEToBuffer(id, $id))
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
indexByUid(uid) {
|
|
300
|
+
|
|
301
|
+
return super.findByValue($uid, super.s2b(uid, $uid))
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
indexByType(type) {
|
|
305
|
+
|
|
306
|
+
return super.findByValue($type, super.uintToBuffer(type, $type))
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
indexByTime({after, before} = {}) {
|
|
310
|
+
|
|
311
|
+
return super.findByTime($time, {after, before})
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
class Test3Set extends Entities {
|
|
316
|
+
|
|
317
|
+
constructor() {
|
|
318
|
+
|
|
319
|
+
super(storage, Test3)
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* 内部方法
|
|
323
|
+
*/
|
|
324
|
+
s2b() {
|
|
325
|
+
|
|
326
|
+
throw new TypeError('s2b is not a function')
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* 内部方法
|
|
330
|
+
*/
|
|
331
|
+
findByValue() {
|
|
332
|
+
|
|
333
|
+
throw new TypeError('findByValue is not a function')
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* 内部方法
|
|
337
|
+
*/
|
|
338
|
+
findByTime() {
|
|
339
|
+
|
|
340
|
+
throw new TypeError('findByTime is not a function')
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* 内部方法
|
|
344
|
+
*/
|
|
345
|
+
stringToBuffer() {
|
|
346
|
+
|
|
347
|
+
throw new TypeError('stringToBuffer is not a function')
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
export const remark = Symbol('remark')
|
|
353
|
+
|
|
354
|
+
export const close = () => storage.close()
|
|
355
|
+
|
|
356
|
+
export const getStruct = name => struct(storage, remark, name)
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* @type {import('./type').Storage}
|
|
360
|
+
*/
|
|
361
|
+
const store = Object.freeze({
|
|
362
|
+
admin: new Proxy([], {
|
|
363
|
+
get: new AdminSet()
|
|
364
|
+
}),
|
|
365
|
+
log: new Proxy([], {
|
|
366
|
+
get: new LogSet()
|
|
367
|
+
}),
|
|
368
|
+
test3: new Proxy([], {
|
|
369
|
+
get: new Test3Set()
|
|
370
|
+
}),
|
|
371
|
+
})
|
|
372
|
+
|
|
373
|
+
export default store
|
package/test/8/type.ts
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
|
|
2
|
+
interface Admin {
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
id: Number
|
|
8
|
+
/**
|
|
9
|
+
* 账号
|
|
10
|
+
*/
|
|
11
|
+
uid: String
|
|
12
|
+
/**
|
|
13
|
+
* 密码
|
|
14
|
+
*/
|
|
15
|
+
pwd: String
|
|
16
|
+
/**
|
|
17
|
+
* 是否有效
|
|
18
|
+
*/
|
|
19
|
+
valid: Number
|
|
20
|
+
/**
|
|
21
|
+
* 登录时间
|
|
22
|
+
*/
|
|
23
|
+
time: Number | Date
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
interface AdminSet extends Array<Admin> {
|
|
27
|
+
|
|
28
|
+
indexById(id: Number): Array<Admin>
|
|
29
|
+
indexByUid(uid: String): Array<Admin>
|
|
30
|
+
indexByValid(valid: Number): Array<Admin>
|
|
31
|
+
indexByTime({after, before}): Array<Admin>
|
|
32
|
+
/**
|
|
33
|
+
* 重写push方法
|
|
34
|
+
*/
|
|
35
|
+
push(...item: Array<Admin>): Array<Admin>
|
|
36
|
+
/**
|
|
37
|
+
* 重写unshift方法
|
|
38
|
+
*/
|
|
39
|
+
unshift(...item: Array<Admin>): Array<Admin>
|
|
40
|
+
/**
|
|
41
|
+
* 分页查询
|
|
42
|
+
*/
|
|
43
|
+
page(predicate: Function, index: Number | String, size: Number | String, params: Object): Array<Admin>
|
|
44
|
+
/**
|
|
45
|
+
* 移除数据
|
|
46
|
+
*/
|
|
47
|
+
remove(...items: Array<Admin>): void
|
|
48
|
+
/**
|
|
49
|
+
* 联合查询,类似LEFT JOIN
|
|
50
|
+
*/
|
|
51
|
+
eachFlat(array: Array<Object>, predicate: Function | String): Array<Object>
|
|
52
|
+
/**
|
|
53
|
+
* 联合查询,类似INNER JOIN
|
|
54
|
+
*/
|
|
55
|
+
filterFlat(array: Array<Object>, predicate: Function | String): Array<Object>
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
interface Log {
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
*
|
|
62
|
+
*/
|
|
63
|
+
id: Number
|
|
64
|
+
/**
|
|
65
|
+
* 账号
|
|
66
|
+
*/
|
|
67
|
+
uid: String
|
|
68
|
+
/**
|
|
69
|
+
* 类型
|
|
70
|
+
*/
|
|
71
|
+
type: Number
|
|
72
|
+
/**
|
|
73
|
+
* 创建时间
|
|
74
|
+
*/
|
|
75
|
+
time: Number | Date
|
|
76
|
+
/**
|
|
77
|
+
* 内容
|
|
78
|
+
*/
|
|
79
|
+
content: String
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
interface LogSet extends Array<Log> {
|
|
83
|
+
|
|
84
|
+
indexById(id: Number): Array<Log>
|
|
85
|
+
indexByUid(uid: String): Array<Log>
|
|
86
|
+
indexByType(type: Number): Array<Log>
|
|
87
|
+
indexByTime({after, before}): Array<Log>
|
|
88
|
+
/**
|
|
89
|
+
* 重写push方法
|
|
90
|
+
*/
|
|
91
|
+
push(...item: Array<Log>): Array<Log>
|
|
92
|
+
/**
|
|
93
|
+
* 重写unshift方法
|
|
94
|
+
*/
|
|
95
|
+
unshift(...item: Array<Log>): Array<Log>
|
|
96
|
+
/**
|
|
97
|
+
* 分页查询
|
|
98
|
+
*/
|
|
99
|
+
page(predicate: Function, index: Number | String, size: Number | String, params: Object): Array<Log>
|
|
100
|
+
/**
|
|
101
|
+
* 移除数据
|
|
102
|
+
*/
|
|
103
|
+
remove(...items: Array<Log>): void
|
|
104
|
+
/**
|
|
105
|
+
* 联合查询,类似LEFT JOIN
|
|
106
|
+
*/
|
|
107
|
+
eachFlat(array: Array<Object>, predicate: Function | String): Array<Object>
|
|
108
|
+
/**
|
|
109
|
+
* 联合查询,类似INNER JOIN
|
|
110
|
+
*/
|
|
111
|
+
filterFlat(array: Array<Object>, predicate: Function | String): Array<Object>
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
interface Test3 {
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* 账
|
|
118
|
+
* 户
|
|
119
|
+
*/
|
|
120
|
+
uid: String
|
|
121
|
+
/**
|
|
122
|
+
*
|
|
123
|
+
*/
|
|
124
|
+
pwd: String
|
|
125
|
+
/**
|
|
126
|
+
*
|
|
127
|
+
*/
|
|
128
|
+
test: String
|
|
129
|
+
/**
|
|
130
|
+
*
|
|
131
|
+
*/
|
|
132
|
+
str: String
|
|
133
|
+
/**
|
|
134
|
+
*
|
|
135
|
+
*/
|
|
136
|
+
test2: String
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
interface Test3Set extends Array<Test3> {
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* 重写push方法
|
|
143
|
+
*/
|
|
144
|
+
push(...item: Array<Test3>): Array<Test3>
|
|
145
|
+
/**
|
|
146
|
+
* 重写unshift方法
|
|
147
|
+
*/
|
|
148
|
+
unshift(...item: Array<Test3>): Array<Test3>
|
|
149
|
+
/**
|
|
150
|
+
* 分页查询
|
|
151
|
+
*/
|
|
152
|
+
page(predicate: Function, index: Number | String, size: Number | String, params: Object): Array<Test3>
|
|
153
|
+
/**
|
|
154
|
+
* 移除数据
|
|
155
|
+
*/
|
|
156
|
+
remove(...items: Array<Test3>): void
|
|
157
|
+
/**
|
|
158
|
+
* 联合查询,类似LEFT JOIN
|
|
159
|
+
*/
|
|
160
|
+
eachFlat(array: Array<Object>, predicate: Function | String): Array<Object>
|
|
161
|
+
/**
|
|
162
|
+
* 联合查询,类似INNER JOIN
|
|
163
|
+
*/
|
|
164
|
+
filterFlat(array: Array<Object>, predicate: Function | String): Array<Object>
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
export interface Storage {
|
|
169
|
+
admin: AdminSet,
|
|
170
|
+
log: LogSet,
|
|
171
|
+
test3: Test3Set
|
|
172
|
+
}
|
package/test/index.mjs
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
|
|
2
2
|
const index = import.meta.url.indexOf('?')
|
|
3
3
|
|
|
4
|
-
export const modules = await import(`./
|
|
4
|
+
export const modules = await import(`./8/index.mjs${index > -1 ? import.meta.url.substring(index) : ''}`)
|
|
5
5
|
|
|
6
6
|
export const close = modules.close
|
|
7
7
|
export const remark = modules.remark
|
|
8
|
-
export const version =
|
|
8
|
+
export const version = 8
|
|
9
9
|
export const getStruct = modules.getStruct
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* @type {import('./
|
|
12
|
+
* @type {import('./8/type').Storage}
|
|
13
13
|
*/
|
|
14
14
|
export const storage = modules.default
|
|
15
15
|
|
package/test.mjs
CHANGED
|
@@ -594,6 +594,11 @@ test('测试结构操作', async t => {
|
|
|
594
594
|
deleteDir('test/7')
|
|
595
595
|
}
|
|
596
596
|
|
|
597
|
+
if (existsSync('test/8')) {
|
|
598
|
+
|
|
599
|
+
deleteDir('test/8')
|
|
600
|
+
}
|
|
601
|
+
|
|
597
602
|
await new Promise(resolve => {
|
|
598
603
|
|
|
599
604
|
t.test('测试添加操作(appendSet)', _ => {
|
|
@@ -743,18 +748,46 @@ test('测试结构操作', async t => {
|
|
|
743
748
|
})
|
|
744
749
|
})
|
|
745
750
|
|
|
751
|
+
await new Promise(resolve => {
|
|
752
|
+
|
|
753
|
+
t.test('测试更新索引操作(updateIndex)', _ => {
|
|
754
|
+
|
|
755
|
+
const {updateIndex, submit} = upgrade('test', {version: 7, password: '123123'})
|
|
756
|
+
|
|
757
|
+
updateIndex('log', {
|
|
758
|
+
type: true,
|
|
759
|
+
})
|
|
760
|
+
|
|
761
|
+
submit().then(() => import('./test/7/index.mjs?password=123123')).then(m => {
|
|
762
|
+
|
|
763
|
+
const storage = m.default
|
|
764
|
+
|
|
765
|
+
const result = storage.log.indexByType(0)
|
|
766
|
+
|
|
767
|
+
assert.strictEqual(
|
|
768
|
+
JSON.stringify(result),
|
|
769
|
+
'[{"content":"login","id":2,"time":1640966400000,"type":0,"uid":"test"},{"content":"test","id":1,"time":1641052800000,"type":0,"uid":"test"}]')
|
|
770
|
+
|
|
771
|
+
m.close()
|
|
772
|
+
|
|
773
|
+
resolve()
|
|
774
|
+
|
|
775
|
+
}).catch(e => console.error(e))
|
|
776
|
+
})
|
|
777
|
+
})
|
|
778
|
+
|
|
746
779
|
await new Promise(resolve => {
|
|
747
780
|
|
|
748
781
|
t.test('测试压缩操作', _ => {
|
|
749
782
|
|
|
750
783
|
const {submit} = upgrade('test', {
|
|
751
|
-
version:
|
|
784
|
+
version: 8,
|
|
752
785
|
prod: true,
|
|
753
786
|
password: '123123',
|
|
754
787
|
newPwd: '111111'
|
|
755
788
|
})
|
|
756
789
|
|
|
757
|
-
submit().then(() => import('./test/
|
|
790
|
+
submit().then(() => import('./test/8/index.mjs?password=111111')).then(m => {
|
|
758
791
|
|
|
759
792
|
const storage = m.default
|
|
760
793
|
|