@mblaney/holster 1.0.35 → 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.
Files changed (72) hide show
  1. package/build/holster.js +3 -3
  2. package/build/holster.js.map +3 -3
  3. package/dist/holster.js +4 -0
  4. package/dist/holster.js.map +7 -0
  5. package/package.json +22 -5
  6. package/src/dup.js +4 -5
  7. package/src/get.js +10 -19
  8. package/src/ham.js +22 -49
  9. package/src/holster.js +172 -58
  10. package/src/index.js +1 -1
  11. package/src/radisk.js +89 -86
  12. package/src/sea-utils.js +1 -1
  13. package/src/sea.js +0 -52
  14. package/src/store.js +8 -8
  15. package/src/user.js +0 -4
  16. package/src/wire.js +209 -79
  17. package/ts/src/array.ts +78 -0
  18. package/ts/src/buffer.ts +441 -0
  19. package/ts/src/dup.ts +38 -0
  20. package/ts/src/get.ts +83 -0
  21. package/ts/src/ham.ts +258 -0
  22. package/ts/src/holster.ts +968 -0
  23. package/ts/src/index.ts +35 -0
  24. package/ts/src/radisk.ts +591 -0
  25. package/ts/src/radix.ts +157 -0
  26. package/ts/src/schemas.ts +515 -0
  27. package/ts/src/sea-utils.ts +103 -0
  28. package/ts/src/sea.ts +388 -0
  29. package/ts/src/store.ts +321 -0
  30. package/ts/src/user.ts +377 -0
  31. package/ts/src/utils.ts +232 -0
  32. package/ts/src/wire.ts +961 -0
  33. package/.dockerignore +0 -9
  34. package/.github/workflows/node.js.yml +0 -31
  35. package/.github/workflows/npm-publish.yml +0 -33
  36. package/Dockerfile +0 -20
  37. package/examples/index.html +0 -33
  38. package/examples/index.js +0 -49
  39. package/examples/user.html +0 -31
  40. package/examples/user.js +0 -93
  41. package/examples/wire.html +0 -27
  42. package/examples/wire.js +0 -55
  43. package/test/holster.get.test.js +0 -94
  44. package/test/holster.lex.test.js +0 -196
  45. package/test/holster.off.test.js +0 -53
  46. package/test/holster.on.test.js +0 -264
  47. package/test/holster.put.test.js +0 -358
  48. package/test/holster.secure.test.js +0 -202
  49. package/test/holster.user.get.test.js +0 -114
  50. package/test/holster.user.lex.test.js +0 -149
  51. package/test/holster.user.off.test.js +0 -73
  52. package/test/holster.user.on.test.js +0 -300
  53. package/test/holster.user.put.test.js +0 -463
  54. package/test/kitty/! +0 -9
  55. package/test/names.js +0 -225
  56. package/test/radisk.cache.test.js +0 -213
  57. package/test/radisk.test.js +0 -331
  58. package/test/radix.test.js +0 -117
  59. package/test/sea.test.js +0 -284
  60. package/test/split.test.js +0 -317
  61. package/test/store.test.js +0 -316
  62. package/test/system/basic.test.js +0 -29
  63. package/test/system/chained-on.test.js +0 -41
  64. package/test/system/concurrent-listeners.test.js +0 -125
  65. package/test/system/immediate-read.test.js +0 -30
  66. package/test/system/listener-before-data.test.js +0 -51
  67. package/test/system/promise-wrapper.test.js +0 -47
  68. package/test/system/user-chained-on.test.js +0 -60
  69. package/test/system/user-concurrent-listeners.test.js +0 -142
  70. package/test/system/user-listener-before-data.test.js +0 -66
  71. package/test/user.test.js +0 -173
  72. package/test/wire.test.js +0 -158
@@ -1,463 +0,0 @@
1
- import fs from "fs"
2
- import {Server} from "mock-socket"
3
- import {describe, test} from "node:test"
4
- import assert from "node:assert/strict"
5
- import Holster from "../src/holster.js"
6
-
7
- describe("holster.user.put", () => {
8
- const wss = new Server("ws://localhost:1234")
9
- const holster = Holster({
10
- file: "test/holster.user.put",
11
- wss: wss,
12
- maxAge: 100,
13
- wait: 500,
14
- })
15
- const user = holster.user()
16
- let alice = ""
17
-
18
- test("user create", (t, done) => {
19
- user.create("alice", "password", err => {
20
- assert.equal(err, null)
21
- done()
22
- })
23
- })
24
-
25
- test("user auth", (t, done) => {
26
- user.auth("alice", "password", err => {
27
- assert.equal(err, null)
28
- assert.equal(user.is.username, "alice")
29
- alice = user.is.pub
30
- done()
31
- })
32
- })
33
-
34
- test("put and get string", (t, done) => {
35
- user.get("key").put("value", err => {
36
- assert.equal(err, null)
37
-
38
- user.get("key", data => {
39
- assert.equal(data, "value")
40
- done()
41
- })
42
- })
43
- })
44
-
45
- test("put value to null", (t, done) => {
46
- user.get("key").put(null, err => {
47
- assert.equal(err, null)
48
-
49
- user.get("key", data => {
50
- assert.equal(data, null)
51
- done()
52
- })
53
- })
54
- })
55
-
56
- test("put and get true", (t, done) => {
57
- user.get("true").put(true, err => {
58
- assert.equal(err, null)
59
-
60
- user.get("true", data => {
61
- assert.equal(data, true)
62
- done()
63
- })
64
- })
65
- })
66
-
67
- test("put and get false", (t, done) => {
68
- user.get("false").put(false, err => {
69
- assert.equal(err, null)
70
-
71
- user.get("false", data => {
72
- assert.equal(data, false)
73
- done()
74
- })
75
- })
76
- })
77
-
78
- test("put and get number", (t, done) => {
79
- user.get("pi").put(3.14159, err => {
80
- assert.equal(err, null)
81
-
82
- user.get("pi", data => {
83
- assert.equal(data, 3.14159)
84
- done()
85
- })
86
- })
87
- })
88
-
89
- test("put and get values in for loop", (t, done) => {
90
- ;(async () => {
91
- for (let i = 0; i < 5; i++) {
92
- user.get("for" + i).put(i, err => {
93
- assert.equal(err, null)
94
- })
95
- }
96
- })()
97
-
98
- setTimeout(async () => {
99
- let count = 0
100
- for (let i = 0; i < 5; i++) {
101
- user.get("for" + i, data => {
102
- assert.equal(data, i)
103
- count++
104
- })
105
- }
106
- setTimeout(() => {
107
- if (count === 5) done()
108
- }, 200)
109
- }, 500)
110
- })
111
-
112
- test("chained get before put", (t, done) => {
113
- user
114
- .get("hello")
115
- .next("world!")
116
- .put("ok", err => {
117
- assert.equal(err, null)
118
-
119
- user.get("hello").next("world!", data => {
120
- assert.equal(data, "ok")
121
- done()
122
- })
123
- })
124
- })
125
-
126
- test("more chained gets before put", (t, done) => {
127
- user
128
- .get("1")
129
- .next("2")
130
- .next("3")
131
- .put("4", err => {
132
- assert.equal(err, null)
133
-
134
- user
135
- .get("1")
136
- .next("2")
137
- .next("3", data => {
138
- assert.equal(data, "4")
139
- done()
140
- })
141
- })
142
- })
143
-
144
- test("put and get object in graph format", (t, done) => {
145
- const plain = {
146
- key: "plain value",
147
- true: true,
148
- false: false,
149
- number: 42,
150
- }
151
- user.get("plain").put(plain, err => {
152
- assert.equal(err, null)
153
-
154
- user.get("plain", data => {
155
- assert.deepEqual(data, plain)
156
- done()
157
- })
158
- })
159
- })
160
-
161
- test("put object to null", (t, done) => {
162
- user.get("plain").put(null, err => {
163
- assert.equal(err, null)
164
-
165
- user.get("plain", data => {
166
- assert.equal(data, null)
167
- done()
168
- })
169
- })
170
- })
171
-
172
- test("chained get before put object in graph format", (t, done) => {
173
- const plain = {
174
- key: "hello plain value",
175
- }
176
- user
177
- .get("hello")
178
- .next("plain")
179
- .put(plain, err => {
180
- assert.equal(err, null)
181
-
182
- user.get("hello").next("plain", data => {
183
- assert.deepEqual(data, plain)
184
- done()
185
- })
186
- })
187
- })
188
-
189
- test("put and get nested object", (t, done) => {
190
- const nested = {
191
- key: "nested value",
192
- child: {
193
- has: "child value",
194
- },
195
- }
196
- user.get("nested").put(nested, err => {
197
- assert.equal(err, null)
198
-
199
- // Getting a nested object requires waiting for radisk to write to disk,
200
- // as it will batch the writes. (Default wait is 1 millisecond.)
201
- setTimeout(() => {
202
- user.get("nested", data => {
203
- assert.deepEqual(data, nested)
204
-
205
- user.get("nested").next("key", data => {
206
- assert.equal(data, "nested value")
207
-
208
- user.get("nested").next("child", data => {
209
- assert.deepEqual(data, {has: "child value"})
210
- done()
211
- })
212
- })
213
- })
214
- }, 2)
215
- })
216
- })
217
-
218
- test("chained get before put nested object", (t, done) => {
219
- const nested = {
220
- key: "hello nested value",
221
- child: {
222
- has: "hello child value",
223
- },
224
- }
225
- user
226
- .get("hello")
227
- .next("nested")
228
- .put(nested, err => {
229
- assert.equal(err, null)
230
-
231
- setTimeout(() => {
232
- user.get("hello").next("nested", data => {
233
- assert.deepEqual(data, nested)
234
-
235
- user
236
- .get("hello")
237
- .next("nested")
238
- .next("key", data => {
239
- assert.equal(data, "hello nested value")
240
-
241
- user
242
- .get("hello")
243
- .next("nested")
244
- .next("child", data => {
245
- assert.deepEqual(data, {has: "hello child value"})
246
- done()
247
- })
248
- })
249
- })
250
- }, 2)
251
- })
252
- })
253
-
254
- test("put and get two nested objects", (t, done) => {
255
- const two = {
256
- key: "two nested values",
257
- child1: {
258
- has: "child value 1",
259
- },
260
- child2: {
261
- has: "child value 2",
262
- },
263
- }
264
- user.get("two").put(two, err => {
265
- assert.equal(err, null)
266
-
267
- setTimeout(() => {
268
- user.get("two", data => {
269
- assert.deepEqual(data, two)
270
-
271
- user.get("two").next("child1", data => {
272
- assert.deepEqual(data, {has: "child value 1"})
273
-
274
- user.get("two").next("child2", data => {
275
- assert.deepEqual(data, {has: "child value 2"})
276
- done()
277
- })
278
- })
279
- })
280
- }, 2)
281
- })
282
- })
283
-
284
- test("put and get multiple nested object", (t, done) => {
285
- const multiple = {
286
- key: "multiple nested values",
287
- child: {
288
- has: "child value",
289
- grandchild: {
290
- has: "grandchild value",
291
- other: "(not returned in lex query)",
292
- },
293
- },
294
- }
295
- user.get("multiple").put(multiple, err => {
296
- assert.equal(err, null)
297
-
298
- setTimeout(() => {
299
- user.get("multiple", data => {
300
- assert.deepEqual(data, multiple)
301
-
302
- user.get("multiple").next("child", {".": "has"}, data => {
303
- assert.deepEqual(data, {has: "child value"})
304
-
305
- user
306
- .get("multiple")
307
- .next("child")
308
- .next("grandchild", {".": "has"}, data => {
309
- assert.deepEqual(data, {has: "grandchild value"})
310
- done()
311
- })
312
- })
313
- })
314
- }, 2)
315
- })
316
- })
317
-
318
- test("put string with set", (t, done) => {
319
- user.get("set").put("first", true, err => {
320
- assert.equal(err, null)
321
-
322
- setTimeout(() => {
323
- user.get("set", data => {
324
- assert.equal(Object.values(data)[0], "first")
325
-
326
- user.get("set").put("second", true, err => {
327
- assert.equal(err, null)
328
-
329
- setTimeout(() => {
330
- user.get("set", data => {
331
- for (const value of Object.values(data)) {
332
- assert.ok(value === "first" || value === "second")
333
- }
334
- done()
335
- })
336
- }, 2)
337
- })
338
- })
339
- }, 2)
340
- })
341
- })
342
-
343
- test("put object with set", (t, done) => {
344
- const set1 = {
345
- key: "value 1",
346
- child: "child value 1",
347
- }
348
- const set2 = {
349
- key: "value 2",
350
- child: "child value 2",
351
- }
352
- user.get("set2").put(set1, true, err => {
353
- assert.equal(err, null)
354
-
355
- setTimeout(() => {
356
- user.get("set2", data => {
357
- assert.deepEqual(Object.values(data)[0], set1)
358
-
359
- user.get("set2").put(set2, true, err => {
360
- assert.equal(err, null)
361
-
362
- setTimeout(() => {
363
- user.get("set2", data => {
364
- for (const value of Object.values(data)) {
365
- if (value.key === "value 1") {
366
- assert.deepEqual(value, set1)
367
- }
368
- if (value.key === "value 2") {
369
- assert.deepEqual(value, set2)
370
- }
371
- }
372
- done()
373
- })
374
- }, 100)
375
- })
376
- })
377
- }, 100)
378
- })
379
- })
380
-
381
- test("get number using public key - logged in", (t, done) => {
382
- user.get([alice, "pi"], data => {
383
- assert.equal(data, 3.14159)
384
- done()
385
- })
386
- })
387
-
388
- test("get number using public key - logged out", (t, done) => {
389
- user.leave()
390
-
391
- user.get([alice, "pi"], data => {
392
- assert.equal(data, 3.14159)
393
- done()
394
- })
395
- })
396
-
397
- test("chained get in graph format using public key", (t, done) => {
398
- const plain = {
399
- key: "hello plain value",
400
- }
401
- user.get([alice, "hello"]).next("plain", data => {
402
- assert.deepEqual(data, plain)
403
- done()
404
- })
405
- })
406
-
407
- test("get nested object using public key", (t, done) => {
408
- const nested = {
409
- key: "nested value",
410
- child: {
411
- has: "child value",
412
- },
413
- }
414
- user.get([alice, "nested"], data => {
415
- assert.deepEqual(data, nested)
416
-
417
- user.get([alice, "nested"]).next("key", data => {
418
- assert.equal(data, "nested value")
419
-
420
- user.get([alice, "nested"]).next("child", data => {
421
- assert.deepEqual(data, {has: "child value"})
422
- done()
423
- })
424
- })
425
- })
426
- })
427
-
428
- test("chained get nested object using public key", (t, done) => {
429
- const nested = {
430
- key: "hello nested value",
431
- child: {
432
- has: "hello child value",
433
- },
434
- }
435
- user.get([alice, "hello"]).next("nested", data => {
436
- assert.deepEqual(data, nested)
437
-
438
- user
439
- .get([alice, "hello"])
440
- .next("nested")
441
- .next("key", data => {
442
- assert.equal(data, "hello nested value")
443
-
444
- user
445
- .get([alice, "hello"])
446
- .next("nested")
447
- .next("child", data => {
448
- assert.deepEqual(data, {has: "hello child value"})
449
- done()
450
- })
451
- })
452
- })
453
- })
454
-
455
- test("cleanup", (t, done) => {
456
- setTimeout(() => {
457
- fs.rm("test/holster.user.put", {recursive: true, force: true}, err => {
458
- assert.equal(err, null)
459
- done()
460
- })
461
- }, 100)
462
- })
463
- })
package/test/kitty/! DELETED
@@ -1,9 +0,0 @@
1
- +0#"ASDF
2
- +1#"boss=#FDSA2
3
- +1#"name="Mark Nadal2
4
- +0#"FDSA
5
- +1#"color="ginger3
6
- +1#"name="Fluffy2
7
- +1#"s
8
- +2#"lave=#ASDF2
9
- +2#"pecies="felis silvestris2
package/test/names.js DELETED
@@ -1,225 +0,0 @@
1
- const Names = () => {
2
- return [
3
- "Adalard",
4
- "Adora",
5
- "Aia",
6
- "Albertina",
7
- "Alfie",
8
- "Allyn",
9
- "Amabil",
10
- "Ammamaria",
11
- "Andy",
12
- "Anselme",
13
- "Ardeen",
14
- "Armand",
15
- "Ashelman",
16
- "Aube",
17
- "Averyl",
18
- "Baker",
19
- "Barger",
20
- "Baten",
21
- "Bee",
22
- "Benia",
23
- "Bernat",
24
- "Bevers",
25
- "Bittner",
26
- "Bobbe",
27
- "Bonny",
28
- "Boyce",
29
- "Breech",
30
- "Brittaney",
31
- "Bryn",
32
- "Burkitt",
33
- "Cadmann",
34
- "Campagna",
35
- "Carlee",
36
- "Carver",
37
- "Cavallaro",
38
- "Chainey",
39
- "Chaunce",
40
- "Ching",
41
- "Cianca",
42
- "Claudina",
43
- "Clyve",
44
- "Colon",
45
- "Cooke",
46
- "Corrina",
47
- "Crawley",
48
- "Cullie",
49
- "Dacy",
50
- "Daniela",
51
- "Daryn",
52
- "Deedee",
53
- "Denie",
54
- "Devland",
55
- "Dimitri",
56
- "Dolphin",
57
- "Dorinda",
58
- "Dream",
59
- "Dunham",
60
- "Eachelle",
61
- "Edina",
62
- "Eisenstark",
63
- "Elish",
64
- "Elvis",
65
- "Eng",
66
- "Erland",
67
- "Ethan",
68
- "Evelyn",
69
- "Fairman",
70
- "Faus",
71
- "Fenner",
72
- "Fillander",
73
- "Flip",
74
- "Foskett",
75
- "Fredette",
76
- "Fullerton",
77
- "Gamali",
78
- "Gaspar",
79
- "Gemina",
80
- "Germana",
81
- "Gilberto",
82
- "Giuditta",
83
- "Goer",
84
- "Gotcher",
85
- "Greenstein",
86
- "Grosvenor",
87
- "Guthrey",
88
- "Haldane",
89
- "Hankins",
90
- "Harriette",
91
- "Hayman",
92
- "Heise",
93
- "Hepsiba",
94
- "Hewie",
95
- "Hiroshi",
96
- "Holtorf",
97
- "Howlond",
98
- "Hurless",
99
- "Ieso",
100
- "Ingold",
101
- "Isidora",
102
- "Jacoba",
103
- "Janelle",
104
- "Jaye",
105
- "Jennee",
106
- "Jillana",
107
- "Johnson",
108
- "Josy",
109
- "Justinian",
110
- "Kannan",
111
- "Kast",
112
- "Keeley",
113
- "Kennett",
114
- "Kho",
115
- "Kiran",
116
- "Knowles",
117
- "Koser",
118
- "Kroll",
119
- "LaMori",
120
- "Lanctot",
121
- "Lasky",
122
- "Laverna",
123
- "Leff",
124
- "Leonanie",
125
- "Lewert",
126
- "Lilybel",
127
- "Lissak",
128
- "Longerich",
129
- "Lou",
130
- "Ludeman",
131
- "Lyman",
132
- "Madai",
133
- "Maia",
134
- "Malvina",
135
- "Marcy",
136
- "Maris",
137
- "Martens",
138
- "Mathilda",
139
- "Maye",
140
- "McLain",
141
- "Melamie",
142
- "Meras",
143
- "Micco",
144
- "Millburn",
145
- "Mittel",
146
- "Montfort",
147
- "Moth",
148
- "Mutz",
149
- "Nananne",
150
- "Nazler",
151
- "Nesta",
152
- "Nicolina",
153
- "Noellyn",
154
- "Nuli",
155
- "Ody",
156
- "Olympie",
157
- "Orlena",
158
- "Other",
159
- "Pain",
160
- "Parry",
161
- "Paynter",
162
- "Pentheas",
163
- "Pettifer",
164
- "Phyllida",
165
- "Plath",
166
- "Posehn",
167
- "Proulx",
168
- "Quinlan",
169
- "Raimes",
170
- "Ras",
171
- "Redmer",
172
- "Renelle",
173
- "Ricard",
174
- "Rior",
175
- "Rocky",
176
- "Ron",
177
- "Rosetta",
178
- "Rubia",
179
- "Ruttger",
180
- "Salbu",
181
- "Sandy",
182
- "Saw",
183
- "Scholz",
184
- "Secor",
185
- "September",
186
- "Shanleigh",
187
- "Shenan",
188
- "Sholes",
189
- "Sig",
190
- "Sisely",
191
- "Soble",
192
- "Spanos",
193
- "Stanwinn",
194
- "Stevie",
195
- "Stu",
196
- "Suzanne",
197
- "Tacy",
198
- "Tanney",
199
- "Tekla",
200
- "Thackeray",
201
- "Thomasin",
202
- "Tilla",
203
- "Tomas",
204
- "Tracay",
205
- "Tristis",
206
- "Ty",
207
- "Urana",
208
- "Valdis",
209
- "Vasta",
210
- "Vezza",
211
- "Vitoria",
212
- "Wait",
213
- "Warring",
214
- "Weissmann",
215
- "Whetstone",
216
- "Williamson",
217
- "Wittenburg",
218
- "Wymore",
219
- "Yoho",
220
- "Zamir",
221
- "Zimmermann",
222
- ]
223
- }
224
-
225
- export default Names