autopass 2.2.1 → 3.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.
- package/.gitattributes +1 -0
- package/.github/workflows/test-node.yml +7 -7
- package/.prettierrc +1 -0
- package/README.md +26 -15
- package/example.mjs +1 -1
- package/index.js +97 -43
- package/package.json +23 -19
- package/schema.js +108 -52
- package/spec/db/db.json +31 -19
- package/spec/db/index.js +197 -83
- package/spec/db/messages.js +127 -82
- package/spec/hyperdispatch/dispatch.json +16 -3
- package/spec/hyperdispatch/index.js +128 -38
- package/spec/hyperdispatch/messages.js +84 -44
- package/spec/schema/index.js +84 -44
- package/spec/schema/schema.json +31 -3
- package/test.js +58 -7
package/spec/db/messages.js
CHANGED
|
@@ -1,55 +1,72 @@
|
|
|
1
1
|
// This file is autogenerated by the hyperschema compiler
|
|
2
|
-
// Schema Version:
|
|
2
|
+
// Schema Version: 1
|
|
3
3
|
/* eslint-disable camelcase */
|
|
4
4
|
/* eslint-disable quotes */
|
|
5
|
+
/* eslint-disable space-before-function-paren */
|
|
5
6
|
|
|
6
|
-
const VERSION = 2
|
|
7
7
|
const { c } = require('hyperschema/runtime')
|
|
8
8
|
|
|
9
|
+
const VERSION = 1
|
|
10
|
+
|
|
9
11
|
// eslint-disable-next-line no-unused-vars
|
|
10
12
|
let version = VERSION
|
|
11
13
|
|
|
12
14
|
// @autopass/records
|
|
13
15
|
const encoding0 = {
|
|
14
|
-
preencode
|
|
16
|
+
preencode(state, m) {
|
|
15
17
|
c.string.preencode(state, m.key)
|
|
16
18
|
state.end++ // max flag is 2 so always one byte
|
|
17
19
|
|
|
18
20
|
if (m.value) c.string.preencode(state, m.value)
|
|
19
|
-
if (
|
|
21
|
+
if (m.file) c.buffer.preencode(state, m.file)
|
|
20
22
|
},
|
|
21
|
-
encode
|
|
22
|
-
const flags =
|
|
23
|
-
(m.value ? 1 : 0) |
|
|
24
|
-
((version >= 2 && m.file) ? 2 : 0)
|
|
23
|
+
encode(state, m) {
|
|
24
|
+
const flags = (m.value ? 1 : 0) | (m.file ? 2 : 0)
|
|
25
25
|
|
|
26
26
|
c.string.encode(state, m.key)
|
|
27
27
|
c.uint.encode(state, flags)
|
|
28
28
|
|
|
29
29
|
if (m.value) c.string.encode(state, m.value)
|
|
30
|
-
if (
|
|
30
|
+
if (m.file) c.buffer.encode(state, m.file)
|
|
31
31
|
},
|
|
32
|
-
decode
|
|
32
|
+
decode(state) {
|
|
33
33
|
const r0 = c.string.decode(state)
|
|
34
34
|
const flags = c.uint.decode(state)
|
|
35
35
|
|
|
36
36
|
return {
|
|
37
37
|
key: r0,
|
|
38
38
|
value: (flags & 1) !== 0 ? c.string.decode(state) : null,
|
|
39
|
-
file: (
|
|
39
|
+
file: (flags & 2) !== 0 ? c.buffer.decode(state) : null
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
// @autopass/
|
|
44
|
+
// @autopass/mirrors
|
|
45
45
|
const encoding1 = {
|
|
46
|
-
preencode
|
|
46
|
+
preencode(state, m) {
|
|
47
|
+
c.fixed32.preencode(state, m.key)
|
|
48
|
+
},
|
|
49
|
+
encode(state, m) {
|
|
50
|
+
c.fixed32.encode(state, m.key)
|
|
51
|
+
},
|
|
52
|
+
decode(state) {
|
|
53
|
+
const r0 = c.fixed32.decode(state)
|
|
54
|
+
|
|
55
|
+
return {
|
|
56
|
+
key: r0
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// @autopass/writer
|
|
62
|
+
const encoding2 = {
|
|
63
|
+
preencode(state, m) {
|
|
47
64
|
c.buffer.preencode(state, m.key)
|
|
48
65
|
},
|
|
49
|
-
encode
|
|
66
|
+
encode(state, m) {
|
|
50
67
|
c.buffer.encode(state, m.key)
|
|
51
68
|
},
|
|
52
|
-
decode
|
|
69
|
+
decode(state) {
|
|
53
70
|
const r0 = c.buffer.decode(state)
|
|
54
71
|
|
|
55
72
|
return {
|
|
@@ -59,14 +76,14 @@ const encoding1 = {
|
|
|
59
76
|
}
|
|
60
77
|
|
|
61
78
|
// @autopass/delete
|
|
62
|
-
const
|
|
63
|
-
preencode
|
|
79
|
+
const encoding3 = {
|
|
80
|
+
preencode(state, m) {
|
|
64
81
|
c.string.preencode(state, m.key)
|
|
65
82
|
},
|
|
66
|
-
encode
|
|
83
|
+
encode(state, m) {
|
|
67
84
|
c.string.encode(state, m.key)
|
|
68
85
|
},
|
|
69
|
-
decode
|
|
86
|
+
decode(state) {
|
|
70
87
|
const r0 = c.string.decode(state)
|
|
71
88
|
|
|
72
89
|
return {
|
|
@@ -76,20 +93,20 @@ const encoding2 = {
|
|
|
76
93
|
}
|
|
77
94
|
|
|
78
95
|
// @autopass/invite
|
|
79
|
-
const
|
|
80
|
-
preencode
|
|
96
|
+
const encoding4 = {
|
|
97
|
+
preencode(state, m) {
|
|
81
98
|
c.buffer.preencode(state, m.id)
|
|
82
99
|
c.buffer.preencode(state, m.invite)
|
|
83
100
|
c.buffer.preencode(state, m.publicKey)
|
|
84
101
|
c.int.preencode(state, m.expires)
|
|
85
102
|
},
|
|
86
|
-
encode
|
|
103
|
+
encode(state, m) {
|
|
87
104
|
c.buffer.encode(state, m.id)
|
|
88
105
|
c.buffer.encode(state, m.invite)
|
|
89
106
|
c.buffer.encode(state, m.publicKey)
|
|
90
107
|
c.int.encode(state, m.expires)
|
|
91
108
|
},
|
|
92
|
-
decode
|
|
109
|
+
decode(state) {
|
|
93
110
|
const r0 = c.buffer.decode(state)
|
|
94
111
|
const r1 = c.buffer.decode(state)
|
|
95
112
|
const r2 = c.buffer.decode(state)
|
|
@@ -105,14 +122,14 @@ const encoding3 = {
|
|
|
105
122
|
}
|
|
106
123
|
|
|
107
124
|
// @autopass/del-invite
|
|
108
|
-
const
|
|
109
|
-
preencode
|
|
125
|
+
const encoding5 = {
|
|
126
|
+
preencode(state, m) {
|
|
110
127
|
c.buffer.preencode(state, m.id)
|
|
111
128
|
},
|
|
112
|
-
encode
|
|
129
|
+
encode(state, m) {
|
|
113
130
|
c.buffer.encode(state, m.id)
|
|
114
131
|
},
|
|
115
|
-
decode
|
|
132
|
+
decode(state) {
|
|
116
133
|
const r0 = c.buffer.decode(state)
|
|
117
134
|
|
|
118
135
|
return {
|
|
@@ -121,48 +138,49 @@ const encoding4 = {
|
|
|
121
138
|
}
|
|
122
139
|
}
|
|
123
140
|
|
|
141
|
+
// @autopass/del-mirror
|
|
142
|
+
const encoding6 = encoding1
|
|
143
|
+
|
|
124
144
|
// @autopass/records/hyperdb#0
|
|
125
|
-
const
|
|
126
|
-
preencode
|
|
145
|
+
const encoding7 = {
|
|
146
|
+
preencode(state, m) {
|
|
127
147
|
state.end++ // max flag is 2 so always one byte
|
|
128
148
|
|
|
129
149
|
if (m.value) c.string.preencode(state, m.value)
|
|
130
|
-
if (
|
|
150
|
+
if (m.file) c.buffer.preencode(state, m.file)
|
|
131
151
|
},
|
|
132
|
-
encode
|
|
133
|
-
const flags =
|
|
134
|
-
(m.value ? 1 : 0) |
|
|
135
|
-
((version >= 2 && m.file) ? 2 : 0)
|
|
152
|
+
encode(state, m) {
|
|
153
|
+
const flags = (m.value ? 1 : 0) | (m.file ? 2 : 0)
|
|
136
154
|
|
|
137
155
|
c.uint.encode(state, flags)
|
|
138
156
|
|
|
139
157
|
if (m.value) c.string.encode(state, m.value)
|
|
140
|
-
if (
|
|
158
|
+
if (m.file) c.buffer.encode(state, m.file)
|
|
141
159
|
},
|
|
142
|
-
decode
|
|
160
|
+
decode(state) {
|
|
143
161
|
const flags = c.uint.decode(state)
|
|
144
162
|
|
|
145
163
|
return {
|
|
146
164
|
key: null,
|
|
147
165
|
value: (flags & 1) !== 0 ? c.string.decode(state) : null,
|
|
148
|
-
file: (
|
|
166
|
+
file: (flags & 2) !== 0 ? c.buffer.decode(state) : null
|
|
149
167
|
}
|
|
150
168
|
}
|
|
151
169
|
}
|
|
152
170
|
|
|
153
171
|
// @autopass/invite/hyperdb#1
|
|
154
|
-
const
|
|
155
|
-
preencode
|
|
172
|
+
const encoding8 = {
|
|
173
|
+
preencode(state, m) {
|
|
156
174
|
c.buffer.preencode(state, m.invite)
|
|
157
175
|
c.buffer.preencode(state, m.publicKey)
|
|
158
176
|
c.int.preencode(state, m.expires)
|
|
159
177
|
},
|
|
160
|
-
encode
|
|
178
|
+
encode(state, m) {
|
|
161
179
|
c.buffer.encode(state, m.invite)
|
|
162
180
|
c.buffer.encode(state, m.publicKey)
|
|
163
181
|
c.int.encode(state, m.expires)
|
|
164
182
|
},
|
|
165
|
-
decode
|
|
183
|
+
decode(state) {
|
|
166
184
|
const r1 = c.buffer.decode(state)
|
|
167
185
|
const r2 = c.buffer.decode(state)
|
|
168
186
|
const r3 = c.int.decode(state)
|
|
@@ -176,87 +194,105 @@ const encoding6 = {
|
|
|
176
194
|
}
|
|
177
195
|
}
|
|
178
196
|
|
|
179
|
-
// @autopass/
|
|
180
|
-
const
|
|
181
|
-
preencode
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
encode (state, m) {
|
|
185
|
-
|
|
186
|
-
},
|
|
187
|
-
decode (state) {
|
|
197
|
+
// @autopass/mirrors/hyperdb#2
|
|
198
|
+
const encoding9 = {
|
|
199
|
+
preencode(state, m) {},
|
|
200
|
+
encode(state, m) {},
|
|
201
|
+
decode(state) {
|
|
188
202
|
return {
|
|
189
203
|
key: null
|
|
190
204
|
}
|
|
191
205
|
}
|
|
192
206
|
}
|
|
193
207
|
|
|
194
|
-
// @autopass/
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
// @autopass/del-invite/hyperdb#4
|
|
198
|
-
const encoding9 = {
|
|
199
|
-
preencode (state, m) {
|
|
208
|
+
// @autopass/writer/hyperdb#3
|
|
209
|
+
const encoding10 = encoding9
|
|
200
210
|
|
|
201
|
-
|
|
202
|
-
|
|
211
|
+
// @autopass/delete/hyperdb#4
|
|
212
|
+
const encoding11 = encoding9
|
|
203
213
|
|
|
204
|
-
|
|
205
|
-
|
|
214
|
+
// @autopass/del-invite/hyperdb#5
|
|
215
|
+
const encoding12 = {
|
|
216
|
+
preencode(state, m) {},
|
|
217
|
+
encode(state, m) {},
|
|
218
|
+
decode(state) {
|
|
206
219
|
return {
|
|
207
220
|
id: null
|
|
208
221
|
}
|
|
209
222
|
}
|
|
210
223
|
}
|
|
211
224
|
|
|
212
|
-
|
|
225
|
+
// @autopass/del-mirror/hyperdb#6
|
|
226
|
+
const encoding13 = encoding9
|
|
227
|
+
|
|
228
|
+
function setVersion(v) {
|
|
213
229
|
version = v
|
|
214
230
|
}
|
|
215
231
|
|
|
216
|
-
function encode
|
|
232
|
+
function encode(name, value, v = VERSION) {
|
|
217
233
|
version = v
|
|
218
234
|
return c.encode(getEncoding(name), value)
|
|
219
235
|
}
|
|
220
236
|
|
|
221
|
-
function decode
|
|
237
|
+
function decode(name, buffer, v = VERSION) {
|
|
222
238
|
version = v
|
|
223
239
|
return c.decode(getEncoding(name), buffer)
|
|
224
240
|
}
|
|
225
241
|
|
|
226
|
-
function getEnum
|
|
242
|
+
function getEnum(name) {
|
|
227
243
|
switch (name) {
|
|
228
|
-
default:
|
|
244
|
+
default:
|
|
245
|
+
throw new Error('Enum not found ' + name)
|
|
229
246
|
}
|
|
230
247
|
}
|
|
231
248
|
|
|
232
|
-
function getEncoding
|
|
249
|
+
function getEncoding(name) {
|
|
233
250
|
switch (name) {
|
|
234
|
-
case '@autopass/records':
|
|
235
|
-
|
|
236
|
-
case '@autopass/
|
|
237
|
-
|
|
238
|
-
case '@autopass/
|
|
239
|
-
|
|
240
|
-
case '@autopass/
|
|
241
|
-
|
|
242
|
-
case '@autopass/
|
|
243
|
-
|
|
244
|
-
|
|
251
|
+
case '@autopass/records':
|
|
252
|
+
return encoding0
|
|
253
|
+
case '@autopass/mirrors':
|
|
254
|
+
return encoding1
|
|
255
|
+
case '@autopass/writer':
|
|
256
|
+
return encoding2
|
|
257
|
+
case '@autopass/delete':
|
|
258
|
+
return encoding3
|
|
259
|
+
case '@autopass/invite':
|
|
260
|
+
return encoding4
|
|
261
|
+
case '@autopass/del-invite':
|
|
262
|
+
return encoding5
|
|
263
|
+
case '@autopass/del-mirror':
|
|
264
|
+
return encoding6
|
|
265
|
+
case '@autopass/records/hyperdb#0':
|
|
266
|
+
return encoding7
|
|
267
|
+
case '@autopass/invite/hyperdb#1':
|
|
268
|
+
return encoding8
|
|
269
|
+
case '@autopass/mirrors/hyperdb#2':
|
|
270
|
+
return encoding9
|
|
271
|
+
case '@autopass/writer/hyperdb#3':
|
|
272
|
+
return encoding10
|
|
273
|
+
case '@autopass/delete/hyperdb#4':
|
|
274
|
+
return encoding11
|
|
275
|
+
case '@autopass/del-invite/hyperdb#5':
|
|
276
|
+
return encoding12
|
|
277
|
+
case '@autopass/del-mirror/hyperdb#6':
|
|
278
|
+
return encoding13
|
|
279
|
+
default:
|
|
280
|
+
throw new Error('Encoder not found ' + name)
|
|
245
281
|
}
|
|
246
282
|
}
|
|
247
283
|
|
|
248
|
-
function getStruct
|
|
284
|
+
function getStruct(name, v = VERSION) {
|
|
249
285
|
const enc = getEncoding(name)
|
|
250
286
|
return {
|
|
251
|
-
preencode
|
|
287
|
+
preencode(state, m) {
|
|
252
288
|
version = v
|
|
253
289
|
enc.preencode(state, m)
|
|
254
290
|
},
|
|
255
|
-
encode
|
|
291
|
+
encode(state, m) {
|
|
256
292
|
version = v
|
|
257
293
|
enc.encode(state, m)
|
|
258
294
|
},
|
|
259
|
-
decode
|
|
295
|
+
decode(state) {
|
|
260
296
|
version = v
|
|
261
297
|
return enc.decode(state)
|
|
262
298
|
}
|
|
@@ -265,4 +301,13 @@ function getStruct (name, v = VERSION) {
|
|
|
265
301
|
|
|
266
302
|
const resolveStruct = getStruct // compat
|
|
267
303
|
|
|
268
|
-
module.exports = {
|
|
304
|
+
module.exports = {
|
|
305
|
+
resolveStruct,
|
|
306
|
+
getStruct,
|
|
307
|
+
getEnum,
|
|
308
|
+
getEncoding,
|
|
309
|
+
encode,
|
|
310
|
+
decode,
|
|
311
|
+
setVersion,
|
|
312
|
+
version
|
|
313
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 1,
|
|
3
|
+
"offset": 0,
|
|
3
4
|
"schema": [
|
|
4
5
|
{
|
|
5
6
|
"id": 0,
|
|
@@ -21,21 +22,33 @@
|
|
|
21
22
|
},
|
|
22
23
|
{
|
|
23
24
|
"id": 3,
|
|
25
|
+
"name": "@autopass/add-mirror",
|
|
26
|
+
"requestType": "@autopass/mirrors",
|
|
27
|
+
"version": 1
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": 4,
|
|
31
|
+
"name": "@autopass/del-mirror",
|
|
32
|
+
"requestType": "@autopass/del-mirror",
|
|
33
|
+
"version": 1
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"id": 5,
|
|
24
37
|
"name": "@autopass/del",
|
|
25
38
|
"requestType": "@autopass/delete",
|
|
26
39
|
"version": 1
|
|
27
40
|
},
|
|
28
41
|
{
|
|
29
|
-
"id":
|
|
42
|
+
"id": 6,
|
|
30
43
|
"name": "@autopass/add-invite",
|
|
31
44
|
"requestType": "@autopass/invite",
|
|
32
45
|
"version": 1
|
|
33
46
|
},
|
|
34
47
|
{
|
|
35
|
-
"id":
|
|
48
|
+
"id": 7,
|
|
36
49
|
"name": "@autopass/del-invite",
|
|
37
50
|
"requestType": "@autopass/del-invite",
|
|
38
51
|
"version": 1
|
|
39
52
|
}
|
|
40
53
|
]
|
|
41
|
-
}
|
|
54
|
+
}
|
|
@@ -7,18 +7,20 @@ const { version, getEncoding, setVersion } = require('./messages.js')
|
|
|
7
7
|
const defaultVersion = version
|
|
8
8
|
|
|
9
9
|
class Router {
|
|
10
|
-
constructor
|
|
10
|
+
constructor() {
|
|
11
11
|
this._handler0 = null
|
|
12
12
|
this._handler1 = null
|
|
13
13
|
this._handler2 = null
|
|
14
14
|
this._handler3 = null
|
|
15
15
|
this._handler4 = null
|
|
16
16
|
this._handler5 = null
|
|
17
|
+
this._handler6 = null
|
|
18
|
+
this._handler7 = null
|
|
17
19
|
|
|
18
|
-
this._missing =
|
|
20
|
+
this._missing = 8
|
|
19
21
|
}
|
|
20
22
|
|
|
21
|
-
add
|
|
23
|
+
add(name, handler) {
|
|
22
24
|
switch (name) {
|
|
23
25
|
case '@autopass/remove-writer':
|
|
24
26
|
this._handler0 = handler
|
|
@@ -29,106 +31,166 @@ class Router {
|
|
|
29
31
|
case '@autopass/put':
|
|
30
32
|
this._handler2 = handler
|
|
31
33
|
break
|
|
32
|
-
case '@autopass/
|
|
34
|
+
case '@autopass/add-mirror':
|
|
33
35
|
this._handler3 = handler
|
|
34
36
|
break
|
|
35
|
-
case '@autopass/
|
|
37
|
+
case '@autopass/del-mirror':
|
|
36
38
|
this._handler4 = handler
|
|
37
39
|
break
|
|
38
|
-
case '@autopass/del
|
|
40
|
+
case '@autopass/del':
|
|
39
41
|
this._handler5 = handler
|
|
40
42
|
break
|
|
43
|
+
case '@autopass/add-invite':
|
|
44
|
+
this._handler6 = handler
|
|
45
|
+
break
|
|
46
|
+
case '@autopass/del-invite':
|
|
47
|
+
this._handler7 = handler
|
|
48
|
+
break
|
|
41
49
|
default:
|
|
42
|
-
throw new Error(
|
|
50
|
+
throw new Error(
|
|
51
|
+
'Cannot register a handler for a nonexistent route: ' + name
|
|
52
|
+
)
|
|
43
53
|
}
|
|
44
54
|
this._missing--
|
|
45
55
|
}
|
|
46
56
|
|
|
47
|
-
_checkAll
|
|
48
|
-
assert(
|
|
49
|
-
|
|
57
|
+
_checkAll() {
|
|
58
|
+
assert(
|
|
59
|
+
this._handler0 !== null,
|
|
60
|
+
'Missing handler for "@autopass/remove-writer"'
|
|
61
|
+
)
|
|
62
|
+
assert(
|
|
63
|
+
this._handler1 !== null,
|
|
64
|
+
'Missing handler for "@autopass/add-writer"'
|
|
65
|
+
)
|
|
50
66
|
assert(this._handler2 !== null, 'Missing handler for "@autopass/put"')
|
|
51
|
-
assert(
|
|
52
|
-
|
|
53
|
-
|
|
67
|
+
assert(
|
|
68
|
+
this._handler3 !== null,
|
|
69
|
+
'Missing handler for "@autopass/add-mirror"'
|
|
70
|
+
)
|
|
71
|
+
assert(
|
|
72
|
+
this._handler4 !== null,
|
|
73
|
+
'Missing handler for "@autopass/del-mirror"'
|
|
74
|
+
)
|
|
75
|
+
assert(this._handler5 !== null, 'Missing handler for "@autopass/del"')
|
|
76
|
+
assert(
|
|
77
|
+
this._handler6 !== null,
|
|
78
|
+
'Missing handler for "@autopass/add-invite"'
|
|
79
|
+
)
|
|
80
|
+
assert(
|
|
81
|
+
this._handler7 !== null,
|
|
82
|
+
'Missing handler for "@autopass/del-invite"'
|
|
83
|
+
)
|
|
54
84
|
}
|
|
55
85
|
|
|
56
|
-
async dispatch
|
|
86
|
+
async dispatch(message, context) {
|
|
57
87
|
if (this._missing > 0) {
|
|
58
88
|
this._checkAll()
|
|
59
89
|
}
|
|
60
90
|
|
|
61
|
-
const state = { buffer: encoded, start: 0, end: encoded.byteLength }
|
|
62
|
-
const id = c.uint.decode(state)
|
|
63
|
-
|
|
64
91
|
setVersion(defaultVersion)
|
|
65
92
|
|
|
66
|
-
|
|
93
|
+
const op = b4a.isBuffer(message) ? decode(message) : message
|
|
94
|
+
|
|
95
|
+
switch (op.id) {
|
|
67
96
|
case 0:
|
|
68
|
-
return this._handler0(
|
|
97
|
+
return this._handler0(op.value, context)
|
|
69
98
|
case 1:
|
|
70
|
-
return this._handler1(
|
|
99
|
+
return this._handler1(op.value, context)
|
|
71
100
|
case 2:
|
|
72
|
-
return this._handler2(
|
|
101
|
+
return this._handler2(op.value, context)
|
|
73
102
|
case 3:
|
|
74
|
-
return this._handler3(
|
|
103
|
+
return this._handler3(op.value, context)
|
|
75
104
|
case 4:
|
|
76
|
-
return this._handler4(
|
|
105
|
+
return this._handler4(op.value, context)
|
|
77
106
|
case 5:
|
|
78
|
-
return this._handler5(
|
|
107
|
+
return this._handler5(op.value, context)
|
|
108
|
+
case 6:
|
|
109
|
+
return this._handler6(op.value, context)
|
|
110
|
+
case 7:
|
|
111
|
+
return this._handler7(op.value, context)
|
|
79
112
|
default:
|
|
80
|
-
throw new Error('Handler not found for ID:' + id)
|
|
113
|
+
throw new Error('Handler not found for ID:' + op.id)
|
|
81
114
|
}
|
|
82
115
|
}
|
|
83
116
|
}
|
|
84
117
|
|
|
85
|
-
function
|
|
118
|
+
function encode(name, message, { version = defaultVersion } = {}) {
|
|
86
119
|
const state = { buffer: null, start: 0, end: 0 }
|
|
87
120
|
|
|
88
|
-
const
|
|
121
|
+
const route = getRouteByName(name)
|
|
89
122
|
setVersion(version)
|
|
90
123
|
|
|
91
|
-
c.uint.preencode(state,
|
|
92
|
-
|
|
124
|
+
c.uint.preencode(state, route.id)
|
|
125
|
+
route.enc.preencode(state, message)
|
|
93
126
|
|
|
94
127
|
state.buffer = b4a.allocUnsafe(state.end)
|
|
95
|
-
c.uint.encode(state,
|
|
96
|
-
|
|
128
|
+
c.uint.encode(state, route.id)
|
|
129
|
+
route.enc.encode(state, message)
|
|
97
130
|
|
|
98
131
|
return state.buffer
|
|
99
132
|
}
|
|
100
133
|
|
|
134
|
+
function decode(buffer, { version = defaultVersion } = {}) {
|
|
135
|
+
const state = { buffer, start: 0, end: buffer.length }
|
|
136
|
+
|
|
137
|
+
const id = c.uint.decode(state)
|
|
138
|
+
const route = getRouteById(id)
|
|
139
|
+
setVersion(version)
|
|
140
|
+
|
|
141
|
+
const value = route.enc.decode(state)
|
|
142
|
+
return { id, name: route.name, value }
|
|
143
|
+
}
|
|
144
|
+
|
|
101
145
|
const route0 = {
|
|
146
|
+
name: '@autopass/remove-writer',
|
|
102
147
|
id: 0,
|
|
103
148
|
enc: getEncoding('@autopass/writer')
|
|
104
149
|
}
|
|
105
150
|
|
|
106
151
|
const route1 = {
|
|
152
|
+
name: '@autopass/add-writer',
|
|
107
153
|
id: 1,
|
|
108
154
|
enc: getEncoding('@autopass/writer')
|
|
109
155
|
}
|
|
110
156
|
|
|
111
157
|
const route2 = {
|
|
158
|
+
name: '@autopass/put',
|
|
112
159
|
id: 2,
|
|
113
160
|
enc: getEncoding('@autopass/records')
|
|
114
161
|
}
|
|
115
162
|
|
|
116
163
|
const route3 = {
|
|
164
|
+
name: '@autopass/add-mirror',
|
|
117
165
|
id: 3,
|
|
118
|
-
enc: getEncoding('@autopass/
|
|
166
|
+
enc: getEncoding('@autopass/mirrors')
|
|
119
167
|
}
|
|
120
168
|
|
|
121
169
|
const route4 = {
|
|
170
|
+
name: '@autopass/del-mirror',
|
|
122
171
|
id: 4,
|
|
123
|
-
enc: getEncoding('@autopass/
|
|
172
|
+
enc: getEncoding('@autopass/del-mirror')
|
|
124
173
|
}
|
|
125
174
|
|
|
126
175
|
const route5 = {
|
|
176
|
+
name: '@autopass/del',
|
|
127
177
|
id: 5,
|
|
178
|
+
enc: getEncoding('@autopass/delete')
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
const route6 = {
|
|
182
|
+
name: '@autopass/add-invite',
|
|
183
|
+
id: 6,
|
|
184
|
+
enc: getEncoding('@autopass/invite')
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
const route7 = {
|
|
188
|
+
name: '@autopass/del-invite',
|
|
189
|
+
id: 7,
|
|
128
190
|
enc: getEncoding('@autopass/del-invite')
|
|
129
191
|
}
|
|
130
192
|
|
|
131
|
-
function
|
|
193
|
+
function getRouteByName(name) {
|
|
132
194
|
switch (name) {
|
|
133
195
|
case '@autopass/remove-writer':
|
|
134
196
|
return route0
|
|
@@ -136,19 +198,47 @@ function getEncoderAndId (name) {
|
|
|
136
198
|
return route1
|
|
137
199
|
case '@autopass/put':
|
|
138
200
|
return route2
|
|
139
|
-
case '@autopass/
|
|
201
|
+
case '@autopass/add-mirror':
|
|
140
202
|
return route3
|
|
141
|
-
case '@autopass/
|
|
203
|
+
case '@autopass/del-mirror':
|
|
142
204
|
return route4
|
|
143
|
-
case '@autopass/del
|
|
205
|
+
case '@autopass/del':
|
|
144
206
|
return route5
|
|
207
|
+
case '@autopass/add-invite':
|
|
208
|
+
return route6
|
|
209
|
+
case '@autopass/del-invite':
|
|
210
|
+
return route7
|
|
145
211
|
default:
|
|
146
212
|
throw new Error('Handler not found for name: ' + name)
|
|
147
213
|
}
|
|
148
214
|
}
|
|
149
215
|
|
|
216
|
+
function getRouteById(id) {
|
|
217
|
+
switch (id) {
|
|
218
|
+
case 0:
|
|
219
|
+
return route0
|
|
220
|
+
case 1:
|
|
221
|
+
return route1
|
|
222
|
+
case 2:
|
|
223
|
+
return route2
|
|
224
|
+
case 3:
|
|
225
|
+
return route3
|
|
226
|
+
case 4:
|
|
227
|
+
return route4
|
|
228
|
+
case 5:
|
|
229
|
+
return route5
|
|
230
|
+
case 6:
|
|
231
|
+
return route6
|
|
232
|
+
case 7:
|
|
233
|
+
return route7
|
|
234
|
+
default:
|
|
235
|
+
throw new Error('Handler not found for ID: ' + id)
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
150
239
|
module.exports = {
|
|
151
240
|
version,
|
|
152
|
-
|
|
241
|
+
encode,
|
|
242
|
+
decode,
|
|
153
243
|
Router
|
|
154
244
|
}
|