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.
@@ -1,55 +1,72 @@
1
1
  // This file is autogenerated by the hyperschema compiler
2
- // Schema Version: 2
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 (state, m) {
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 (version >= 2 && m.file) c.buffer.preencode(state, m.file)
21
+ if (m.file) c.buffer.preencode(state, m.file)
20
22
  },
21
- encode (state, m) {
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 (version >= 2 && m.file) c.buffer.encode(state, m.file)
30
+ if (m.file) c.buffer.encode(state, m.file)
31
31
  },
32
- decode (state) {
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: (version >= 2 && (flags & 2) !== 0) ? c.buffer.decode(state) : null
39
+ file: (flags & 2) !== 0 ? c.buffer.decode(state) : null
40
40
  }
41
41
  }
42
42
  }
43
43
 
44
- // @autopass/writer
44
+ // @autopass/mirrors
45
45
  const encoding1 = {
46
- preencode (state, m) {
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 (state, m) {
66
+ encode(state, m) {
50
67
  c.buffer.encode(state, m.key)
51
68
  },
52
- decode (state) {
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 encoding2 = {
63
- preencode (state, m) {
79
+ const encoding3 = {
80
+ preencode(state, m) {
64
81
  c.string.preencode(state, m.key)
65
82
  },
66
- encode (state, m) {
83
+ encode(state, m) {
67
84
  c.string.encode(state, m.key)
68
85
  },
69
- decode (state) {
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 encoding3 = {
80
- preencode (state, m) {
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 (state, m) {
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 (state) {
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 encoding4 = {
109
- preencode (state, m) {
125
+ const encoding5 = {
126
+ preencode(state, m) {
110
127
  c.buffer.preencode(state, m.id)
111
128
  },
112
- encode (state, m) {
129
+ encode(state, m) {
113
130
  c.buffer.encode(state, m.id)
114
131
  },
115
- decode (state) {
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 encoding5 = {
126
- preencode (state, m) {
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 (version >= 2 && m.file) c.buffer.preencode(state, m.file)
150
+ if (m.file) c.buffer.preencode(state, m.file)
131
151
  },
132
- encode (state, m) {
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 (version >= 2 && m.file) c.buffer.encode(state, m.file)
158
+ if (m.file) c.buffer.encode(state, m.file)
141
159
  },
142
- decode (state) {
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: (version >= 2 && (flags & 2) !== 0) ? c.buffer.decode(state) : null
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 encoding6 = {
155
- preencode (state, m) {
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 (state, m) {
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 (state) {
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/writer/hyperdb#2
180
- const encoding7 = {
181
- preencode (state, m) {
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/delete/hyperdb#3
195
- const encoding8 = encoding7
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
- encode (state, m) {
211
+ // @autopass/delete/hyperdb#4
212
+ const encoding11 = encoding9
203
213
 
204
- },
205
- decode (state) {
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
- function setVersion (v) {
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 (name, value, v = VERSION) {
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 (name, buffer, v = VERSION) {
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 (name) {
242
+ function getEnum(name) {
227
243
  switch (name) {
228
- default: throw new Error('Enum not found ' + name)
244
+ default:
245
+ throw new Error('Enum not found ' + name)
229
246
  }
230
247
  }
231
248
 
232
- function getEncoding (name) {
249
+ function getEncoding(name) {
233
250
  switch (name) {
234
- case '@autopass/records': return encoding0
235
- case '@autopass/writer': return encoding1
236
- case '@autopass/delete': return encoding2
237
- case '@autopass/invite': return encoding3
238
- case '@autopass/del-invite': return encoding4
239
- case '@autopass/records/hyperdb#0': return encoding5
240
- case '@autopass/invite/hyperdb#1': return encoding6
241
- case '@autopass/writer/hyperdb#2': return encoding7
242
- case '@autopass/delete/hyperdb#3': return encoding8
243
- case '@autopass/del-invite/hyperdb#4': return encoding9
244
- default: throw new Error('Encoder not found ' + name)
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 (name, v = VERSION) {
284
+ function getStruct(name, v = VERSION) {
249
285
  const enc = getEncoding(name)
250
286
  return {
251
- preencode (state, m) {
287
+ preencode(state, m) {
252
288
  version = v
253
289
  enc.preencode(state, m)
254
290
  },
255
- encode (state, m) {
291
+ encode(state, m) {
256
292
  version = v
257
293
  enc.encode(state, m)
258
294
  },
259
- decode (state) {
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 = { resolveStruct, getStruct, getEnum, getEncoding, encode, decode, setVersion, version }
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": 4,
42
+ "id": 6,
30
43
  "name": "@autopass/add-invite",
31
44
  "requestType": "@autopass/invite",
32
45
  "version": 1
33
46
  },
34
47
  {
35
- "id": 5,
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 = 6
20
+ this._missing = 8
19
21
  }
20
22
 
21
- add (name, handler) {
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/del':
34
+ case '@autopass/add-mirror':
33
35
  this._handler3 = handler
34
36
  break
35
- case '@autopass/add-invite':
37
+ case '@autopass/del-mirror':
36
38
  this._handler4 = handler
37
39
  break
38
- case '@autopass/del-invite':
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('Cannot register a handler for a nonexistent route: ' + name)
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(this._handler0 !== null, 'Missing handler for "@autopass/remove-writer"')
49
- assert(this._handler1 !== null, 'Missing handler for "@autopass/add-writer"')
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(this._handler3 !== null, 'Missing handler for "@autopass/del"')
52
- assert(this._handler4 !== null, 'Missing handler for "@autopass/add-invite"')
53
- assert(this._handler5 !== null, 'Missing handler for "@autopass/del-invite"')
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 (encoded, context) {
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
- switch (id) {
93
+ const op = b4a.isBuffer(message) ? decode(message) : message
94
+
95
+ switch (op.id) {
67
96
  case 0:
68
- return this._handler0(route0.enc.decode(state), context)
97
+ return this._handler0(op.value, context)
69
98
  case 1:
70
- return this._handler1(route1.enc.decode(state), context)
99
+ return this._handler1(op.value, context)
71
100
  case 2:
72
- return this._handler2(route2.enc.decode(state), context)
101
+ return this._handler2(op.value, context)
73
102
  case 3:
74
- return this._handler3(route3.enc.decode(state), context)
103
+ return this._handler3(op.value, context)
75
104
  case 4:
76
- return this._handler4(route4.enc.decode(state), context)
105
+ return this._handler4(op.value, context)
77
106
  case 5:
78
- return this._handler5(route5.enc.decode(state), context)
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 dispatch (name, message, { version = defaultVersion } = {}) {
118
+ function encode(name, message, { version = defaultVersion } = {}) {
86
119
  const state = { buffer: null, start: 0, end: 0 }
87
120
 
88
- const o = getEncoderAndId(name)
121
+ const route = getRouteByName(name)
89
122
  setVersion(version)
90
123
 
91
- c.uint.preencode(state, o.id)
92
- o.enc.preencode(state, message)
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, o.id)
96
- o.enc.encode(state, message)
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/delete')
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/invite')
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 getEncoderAndId (name) {
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/del':
201
+ case '@autopass/add-mirror':
140
202
  return route3
141
- case '@autopass/add-invite':
203
+ case '@autopass/del-mirror':
142
204
  return route4
143
- case '@autopass/del-invite':
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
- dispatch,
241
+ encode,
242
+ decode,
153
243
  Router
154
244
  }