autopass 2.0.0 → 2.2.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/README.md CHANGED
@@ -6,6 +6,9 @@ Distributed notes/password manager
6
6
  npm install autopass
7
7
  ```
8
8
 
9
+ > [!NOTE]
10
+ > Autopass needs Corestore 7, our latest major version that is backed by RocksDB for storage and atomicity.
11
+
9
12
  ## Usage
10
13
 
11
14
  First choose if you wanna pair or make a new instance.
@@ -56,6 +59,10 @@ Triggered when it updates, ie something added/removed an entry
56
59
 
57
60
  Get an entry.
58
61
 
62
+ #### `value = await pass.getFile(name)`
63
+
64
+ Get a file.
65
+
59
66
  #### `stream = pass.list()`
60
67
 
61
68
  Get all entries.
@@ -64,6 +71,11 @@ Get all entries.
64
71
 
65
72
  Add new entry
66
73
 
74
+ #### `await pass.addFIle(name, buffer)`
75
+
76
+ Add new file
77
+
78
+
67
79
  #### `await pass.remove(key)`
68
80
 
69
81
  Remove an entry.
@@ -84,6 +96,10 @@ Get the local writer key.
84
96
 
85
97
  Get invite to add a writer.
86
98
 
99
+ #### `await deleteInvite()`
100
+
101
+ Delete the current invite.
102
+
87
103
  #### `await pass.ready()`
88
104
 
89
105
  Wait for the pass to load fully
package/example.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import Autopass from './index.js'
2
2
  import Corestore from 'corestore'
3
-
3
+ import process from 'process'
4
4
  const store = new Corestore('example/' + process.argv[2])
5
5
 
6
6
  let pass = null
@@ -17,7 +17,6 @@ if (pass.base.writable) {
17
17
  const inv = await pass.createInvite()
18
18
  console.log('invite', inv)
19
19
  }
20
-
21
20
  onupdate()
22
21
  pass.on('update', onupdate)
23
22
 
package/index.js CHANGED
@@ -135,6 +135,10 @@ class Autopass extends ReadyResource {
135
135
  await context.view.insert('@autopass/invite', data)
136
136
  })
137
137
 
138
+ this.router.add('@autopass/del-invite', async (data, context) => {
139
+ await context.view.delete('@autopass/invite', { id: data.id })
140
+ })
141
+
138
142
  this._boot(opts)
139
143
  this.ready().catch(noop)
140
144
  }
@@ -215,6 +219,14 @@ class Autopass extends ReadyResource {
215
219
  return z32.encode(record.invite)
216
220
  }
217
221
 
222
+ async deleteInvite () {
223
+ if (this.opened === false) await this.ready()
224
+ const existing = await this.base.view.findOne('@autopass/invite', {})
225
+ if (existing) {
226
+ await this.base.append(dispatch('@autopass/del-invite', existing))
227
+ }
228
+ }
229
+
218
230
  list (opts) {
219
231
  return this.base.view.find('@autopass/records', {})
220
232
  }
@@ -275,6 +287,18 @@ class Autopass extends ReadyResource {
275
287
  await this.base.append(dispatch('@autopass/put', { key, value }))
276
288
  }
277
289
 
290
+ async addFile (key, file) {
291
+ await this.base.append(dispatch('@autopass/put', { key, file }))
292
+ }
293
+
294
+ async getFile (key) {
295
+ const data = await this.base.view.get('@autopass/records', { key })
296
+ if (data === null) {
297
+ return null
298
+ }
299
+ return data.file
300
+ }
301
+
278
302
  async remove (key) {
279
303
  await this.base.append(dispatch('@autopass/del', { key }))
280
304
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "autopass",
3
- "version": "2.0.0",
3
+ "version": "2.2.0",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "standard && brittle test.js"
@@ -8,23 +8,35 @@
8
8
  "author": "Holepunch Inc",
9
9
  "license": "Apache-2.0",
10
10
  "description": "",
11
+ "imports": {
12
+ "fs": {
13
+ "bare": "bare-fs",
14
+ "default": "fs"
15
+ },
16
+ "process": {
17
+ "bare": "bare-process",
18
+ "default": "process"
19
+ }
20
+ },
11
21
  "devDependencies": {
12
22
  "brittle": "^3.7.0",
13
- "corestore": "^6.18.4",
14
23
  "hyperdht": "^6.20.1",
15
24
  "standard": "^17.1.2",
16
25
  "test-tmp": "^1.3.0"
17
26
  },
18
27
  "dependencies": {
19
- "autobase": "^6.5.12",
28
+ "autobase": "^7.0.34",
20
29
  "b4a": "^1.6.7",
30
+ "bare-fs": "^4.1.2",
31
+ "bare-process": "^4.2.1",
21
32
  "blind-pairing": "^2.3.1",
22
33
  "compact-encoding": "^2.16.0",
23
- "hyperbee": "^2.21.2",
24
- "hypercore": "^10.38.2",
25
- "hyperdb": "^4.8.0",
34
+ "corestore": "^7.0.7",
35
+ "hyperbee": "^2.22.2",
36
+ "hypercore": "^11.0.9",
37
+ "hyperdb": "^4.9.4",
26
38
  "hyperdispatch": "^1.0.2",
27
- "hyperschema": "^1.7.2",
39
+ "hyperschema": "^1.10.4",
28
40
  "hyperswarm": "^4.8.4",
29
41
  "ready-resource": "^1.1.1"
30
42
  }
package/schema.js CHANGED
@@ -17,6 +17,10 @@ template.register({
17
17
  name: 'value',
18
18
  type: 'string',
19
19
  required: false
20
+ }, {
21
+ name: 'file',
22
+ type: 'buffer',
23
+ required: false
20
24
  }
21
25
  ]
22
26
  })
@@ -65,6 +69,17 @@ template.register({
65
69
  }
66
70
  ]
67
71
  })
72
+
73
+ template.register({
74
+ name: 'del-invite',
75
+ compact: false,
76
+ fields: [{
77
+ name: 'id',
78
+ type: 'buffer',
79
+ required: true
80
+ }
81
+ ]
82
+ })
68
83
  Hyperschema.toDisk(autopass)
69
84
 
70
85
  const dbTemplate = HyperdbBuilder.from('./spec/schema', './spec/db')
@@ -91,6 +106,12 @@ blobs.collections.register({
91
106
  key: ['key']
92
107
  })
93
108
 
109
+ blobs.collections.register({
110
+ name: 'del-invite',
111
+ schema: '@autopass/del-invite',
112
+ key: ['id']
113
+ })
114
+
94
115
  HyperdbBuilder.toDisk(dbTemplate)
95
116
 
96
117
  const hyperdispatch = Hyperdispatch.from('./spec/schema', './spec/hyperdispatch')
@@ -115,4 +136,8 @@ namespace.register(({
115
136
  name: 'add-invite',
116
137
  requestType: '@autopass/invite'
117
138
  }))
139
+ namespace.register(({
140
+ name: 'del-invite',
141
+ requestType: '@autopass/del-invite'
142
+ }))
118
143
  Hyperdispatch.toDisk(hyperdispatch)
package/spec/db/db.json CHANGED
@@ -53,6 +53,19 @@
53
53
  "key"
54
54
  ],
55
55
  "trigger": null
56
+ },
57
+ {
58
+ "name": "del-invite",
59
+ "namespace": "autopass",
60
+ "id": 4,
61
+ "type": 1,
62
+ "indexes": [],
63
+ "schema": "@autopass/del-invite",
64
+ "derived": false,
65
+ "key": [
66
+ "id"
67
+ ],
68
+ "trigger": null
56
69
  }
57
70
  ]
58
71
  }
package/spec/db/index.js CHANGED
@@ -224,11 +224,67 @@ const collection3 = {
224
224
  indexes: []
225
225
  }
226
226
 
227
+ // '@autopass/del-invite' collection key
228
+ const collection4_key = new IndexEncoder([
229
+ IndexEncoder.BUFFER
230
+ ], { prefix: 4 })
231
+
232
+ function collection4_indexify (record) {
233
+ const a = record.id
234
+ return a === undefined ? [] : [a]
235
+ }
236
+
237
+ // '@autopass/del-invite' value encoding
238
+ const collection4_enc = getEncoding('@autopass/del-invite/hyperdb#4')
239
+
240
+ // '@autopass/del-invite' reconstruction function
241
+ function collection4_reconstruct (version, keyBuf, valueBuf) {
242
+ const key = collection4_key.decode(keyBuf)
243
+ setVersion(version)
244
+ const record = c.decode(collection4_enc, valueBuf)
245
+ record.id = key[0]
246
+ return record
247
+ }
248
+ // '@autopass/del-invite' key reconstruction function
249
+ function collection4_reconstruct_key (keyBuf) {
250
+ const key = collection4_key.decode(keyBuf)
251
+ return {
252
+ id: key[0]
253
+ }
254
+ }
255
+
256
+ // '@autopass/del-invite'
257
+ const collection4 = {
258
+ name: '@autopass/del-invite',
259
+ id: 4,
260
+ encodeKey (record) {
261
+ const key = [record.id]
262
+ return collection4_key.encode(key)
263
+ },
264
+ encodeKeyRange ({ gt, lt, gte, lte } = {}) {
265
+ return collection4_key.encodeRange({
266
+ gt: gt ? collection4_indexify(gt) : null,
267
+ lt: lt ? collection4_indexify(lt) : null,
268
+ gte: gte ? collection4_indexify(gte) : null,
269
+ lte: lte ? collection4_indexify(lte) : null
270
+ })
271
+ },
272
+ encodeValue (version, record) {
273
+ setVersion(version)
274
+ return c.encode(collection4_enc, record)
275
+ },
276
+ trigger: null,
277
+ reconstruct: collection4_reconstruct,
278
+ reconstructKey: collection4_reconstruct_key,
279
+ indexes: []
280
+ }
281
+
227
282
  const collections = [
228
283
  collection0,
229
284
  collection1,
230
285
  collection2,
231
- collection3
286
+ collection3,
287
+ collection4
232
288
  ]
233
289
 
234
290
  const indexes = [
@@ -242,6 +298,7 @@ function resolveCollection (name) {
242
298
  case '@autopass/invite': return collection1
243
299
  case '@autopass/writer': return collection2
244
300
  case '@autopass/delete': return collection3
301
+ case '@autopass/del-invite': return collection4
245
302
  default: return null
246
303
  }
247
304
  }
@@ -1,9 +1,9 @@
1
1
  // This file is autogenerated by the hyperschema compiler
2
- // Schema Version: 1
2
+ // Schema Version: 2
3
3
  /* eslint-disable camelcase */
4
4
  /* eslint-disable quotes */
5
5
 
6
- const VERSION = 1
6
+ const VERSION = 2
7
7
  const { c } = require('hyperschema/runtime')
8
8
 
9
9
  // eslint-disable-next-line no-unused-vars
@@ -13,17 +13,21 @@ let version = VERSION
13
13
  const encoding0 = {
14
14
  preencode (state, m) {
15
15
  c.string.preencode(state, m.key)
16
- state.end++ // max flag is 1 so always one byte
16
+ state.end++ // max flag is 2 so always one byte
17
17
 
18
18
  if (m.value) c.string.preencode(state, m.value)
19
+ if (version >= 2 && m.file) c.buffer.preencode(state, m.file)
19
20
  },
20
21
  encode (state, m) {
21
- const flags = m.value ? 1 : 0
22
+ const flags =
23
+ (m.value ? 1 : 0) |
24
+ ((version >= 2 && m.file) ? 2 : 0)
22
25
 
23
26
  c.string.encode(state, m.key)
24
27
  c.uint.encode(state, flags)
25
28
 
26
29
  if (m.value) c.string.encode(state, m.value)
30
+ if (version >= 2 && m.file) c.buffer.encode(state, m.file)
27
31
  },
28
32
  decode (state) {
29
33
  const r0 = c.string.decode(state)
@@ -31,7 +35,8 @@ const encoding0 = {
31
35
 
32
36
  return {
33
37
  key: r0,
34
- value: (flags & 1) !== 0 ? c.string.decode(state) : null
38
+ value: (flags & 1) !== 0 ? c.string.decode(state) : null,
39
+ file: (version >= 2 && (flags & 2) !== 0) ? c.buffer.decode(state) : null
35
40
  }
36
41
  }
37
42
  }
@@ -99,32 +104,54 @@ const encoding3 = {
99
104
  }
100
105
  }
101
106
 
102
- // @autopass/records/hyperdb#0
107
+ // @autopass/del-invite
103
108
  const encoding4 = {
104
109
  preencode (state, m) {
105
- state.end++ // max flag is 1 so always one byte
110
+ c.buffer.preencode(state, m.id)
111
+ },
112
+ encode (state, m) {
113
+ c.buffer.encode(state, m.id)
114
+ },
115
+ decode (state) {
116
+ const r0 = c.buffer.decode(state)
117
+
118
+ return {
119
+ id: r0
120
+ }
121
+ }
122
+ }
123
+
124
+ // @autopass/records/hyperdb#0
125
+ const encoding5 = {
126
+ preencode (state, m) {
127
+ state.end++ // max flag is 2 so always one byte
106
128
 
107
129
  if (m.value) c.string.preencode(state, m.value)
130
+ if (version >= 2 && m.file) c.buffer.preencode(state, m.file)
108
131
  },
109
132
  encode (state, m) {
110
- const flags = m.value ? 1 : 0
133
+ const flags =
134
+ (m.value ? 1 : 0) |
135
+ ((version >= 2 && m.file) ? 2 : 0)
111
136
 
112
137
  c.uint.encode(state, flags)
113
138
 
114
139
  if (m.value) c.string.encode(state, m.value)
140
+ if (version >= 2 && m.file) c.buffer.encode(state, m.file)
115
141
  },
116
142
  decode (state) {
117
143
  const flags = c.uint.decode(state)
118
144
 
119
145
  return {
120
146
  key: null,
121
- value: (flags & 1) !== 0 ? c.string.decode(state) : null
147
+ value: (flags & 1) !== 0 ? c.string.decode(state) : null,
148
+ file: (version >= 2 && (flags & 2) !== 0) ? c.buffer.decode(state) : null
122
149
  }
123
150
  }
124
151
  }
125
152
 
126
153
  // @autopass/invite/hyperdb#1
127
- const encoding5 = {
154
+ const encoding6 = {
128
155
  preencode (state, m) {
129
156
  c.buffer.preencode(state, m.invite)
130
157
  c.buffer.preencode(state, m.publicKey)
@@ -150,7 +177,7 @@ const encoding5 = {
150
177
  }
151
178
 
152
179
  // @autopass/writer/hyperdb#2
153
- const encoding6 = {
180
+ const encoding7 = {
154
181
  preencode (state, m) {
155
182
 
156
183
  },
@@ -165,7 +192,22 @@ const encoding6 = {
165
192
  }
166
193
 
167
194
  // @autopass/delete/hyperdb#3
168
- const encoding7 = encoding6
195
+ const encoding8 = encoding7
196
+
197
+ // @autopass/del-invite/hyperdb#4
198
+ const encoding9 = {
199
+ preencode (state, m) {
200
+
201
+ },
202
+ encode (state, m) {
203
+
204
+ },
205
+ decode (state) {
206
+ return {
207
+ id: null
208
+ }
209
+ }
210
+ }
169
211
 
170
212
  function setVersion (v) {
171
213
  version = v
@@ -193,10 +235,12 @@ function getEncoding (name) {
193
235
  case '@autopass/writer': return encoding1
194
236
  case '@autopass/delete': return encoding2
195
237
  case '@autopass/invite': return encoding3
196
- case '@autopass/records/hyperdb#0': return encoding4
197
- case '@autopass/invite/hyperdb#1': return encoding5
198
- case '@autopass/writer/hyperdb#2': return encoding6
199
- case '@autopass/delete/hyperdb#3': return encoding7
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
200
244
  default: throw new Error('Encoder not found ' + name)
201
245
  }
202
246
  }
@@ -30,6 +30,12 @@
30
30
  "name": "@autopass/add-invite",
31
31
  "requestType": "@autopass/invite",
32
32
  "version": 1
33
+ },
34
+ {
35
+ "id": 5,
36
+ "name": "@autopass/del-invite",
37
+ "requestType": "@autopass/del-invite",
38
+ "version": 1
33
39
  }
34
40
  ]
35
41
  }
@@ -13,8 +13,9 @@ class Router {
13
13
  this._handler2 = null
14
14
  this._handler3 = null
15
15
  this._handler4 = null
16
+ this._handler5 = null
16
17
 
17
- this._missing = 5
18
+ this._missing = 6
18
19
  }
19
20
 
20
21
  add (name, handler) {
@@ -34,6 +35,9 @@ class Router {
34
35
  case '@autopass/add-invite':
35
36
  this._handler4 = handler
36
37
  break
38
+ case '@autopass/del-invite':
39
+ this._handler5 = handler
40
+ break
37
41
  default:
38
42
  throw new Error('Cannot register a handler for a nonexistent route: ' + name)
39
43
  }
@@ -46,6 +50,7 @@ class Router {
46
50
  assert(this._handler2 !== null, 'Missing handler for "@autopass/put"')
47
51
  assert(this._handler3 !== null, 'Missing handler for "@autopass/del"')
48
52
  assert(this._handler4 !== null, 'Missing handler for "@autopass/add-invite"')
53
+ assert(this._handler5 !== null, 'Missing handler for "@autopass/del-invite"')
49
54
  }
50
55
 
51
56
  async dispatch (encoded, context) {
@@ -69,6 +74,8 @@ class Router {
69
74
  return this._handler3(route3.enc.decode(state), context)
70
75
  case 4:
71
76
  return this._handler4(route4.enc.decode(state), context)
77
+ case 5:
78
+ return this._handler5(route5.enc.decode(state), context)
72
79
  default:
73
80
  throw new Error('Handler not found for ID:' + id)
74
81
  }
@@ -116,6 +123,11 @@ const route4 = {
116
123
  enc: getEncoding('@autopass/invite')
117
124
  }
118
125
 
126
+ const route5 = {
127
+ id: 5,
128
+ enc: getEncoding('@autopass/del-invite')
129
+ }
130
+
119
131
  function getEncoderAndId (name) {
120
132
  switch (name) {
121
133
  case '@autopass/remove-writer':
@@ -128,6 +140,8 @@ function getEncoderAndId (name) {
128
140
  return route3
129
141
  case '@autopass/add-invite':
130
142
  return route4
143
+ case '@autopass/del-invite':
144
+ return route5
131
145
  default:
132
146
  throw new Error('Handler not found for name: ' + name)
133
147
  }
@@ -1,9 +1,9 @@
1
1
  // This file is autogenerated by the hyperschema compiler
2
- // Schema Version: 1
2
+ // Schema Version: 2
3
3
  /* eslint-disable camelcase */
4
4
  /* eslint-disable quotes */
5
5
 
6
- const VERSION = 1
6
+ const VERSION = 2
7
7
  const { c } = require('hyperschema/runtime')
8
8
 
9
9
  // eslint-disable-next-line no-unused-vars
@@ -13,17 +13,21 @@ let version = VERSION
13
13
  const encoding0 = {
14
14
  preencode (state, m) {
15
15
  c.string.preencode(state, m.key)
16
- state.end++ // max flag is 1 so always one byte
16
+ state.end++ // max flag is 2 so always one byte
17
17
 
18
18
  if (m.value) c.string.preencode(state, m.value)
19
+ if (version >= 2 && m.file) c.buffer.preencode(state, m.file)
19
20
  },
20
21
  encode (state, m) {
21
- const flags = m.value ? 1 : 0
22
+ const flags =
23
+ (m.value ? 1 : 0) |
24
+ ((version >= 2 && m.file) ? 2 : 0)
22
25
 
23
26
  c.string.encode(state, m.key)
24
27
  c.uint.encode(state, flags)
25
28
 
26
29
  if (m.value) c.string.encode(state, m.value)
30
+ if (version >= 2 && m.file) c.buffer.encode(state, m.file)
27
31
  },
28
32
  decode (state) {
29
33
  const r0 = c.string.decode(state)
@@ -31,7 +35,8 @@ const encoding0 = {
31
35
 
32
36
  return {
33
37
  key: r0,
34
- value: (flags & 1) !== 0 ? c.string.decode(state) : null
38
+ value: (flags & 1) !== 0 ? c.string.decode(state) : null,
39
+ file: (version >= 2 && (flags & 2) !== 0) ? c.buffer.decode(state) : null
35
40
  }
36
41
  }
37
42
  }
@@ -99,6 +104,23 @@ const encoding3 = {
99
104
  }
100
105
  }
101
106
 
107
+ // @autopass/del-invite
108
+ const encoding4 = {
109
+ preencode (state, m) {
110
+ c.buffer.preencode(state, m.id)
111
+ },
112
+ encode (state, m) {
113
+ c.buffer.encode(state, m.id)
114
+ },
115
+ decode (state) {
116
+ const r0 = c.buffer.decode(state)
117
+
118
+ return {
119
+ id: r0
120
+ }
121
+ }
122
+ }
123
+
102
124
  function setVersion (v) {
103
125
  version = v
104
126
  }
@@ -125,6 +147,7 @@ function getEncoding (name) {
125
147
  case '@autopass/writer': return encoding1
126
148
  case '@autopass/delete': return encoding2
127
149
  case '@autopass/invite': return encoding3
150
+ case '@autopass/del-invite': return encoding4
128
151
  default: throw new Error('Encoder not found ' + name)
129
152
  }
130
153
  }
@@ -1,9 +1,9 @@
1
1
  // This file is autogenerated by the hyperschema compiler
2
- // Schema Version: 1
2
+ // Schema Version: 2
3
3
  /* eslint-disable camelcase */
4
4
  /* eslint-disable quotes */
5
5
 
6
- const VERSION = 1
6
+ const VERSION = 2
7
7
  const { c } = require('hyperschema/runtime')
8
8
 
9
9
  // eslint-disable-next-line no-unused-vars
@@ -13,17 +13,21 @@ let version = VERSION
13
13
  const encoding0 = {
14
14
  preencode (state, m) {
15
15
  c.string.preencode(state, m.key)
16
- state.end++ // max flag is 1 so always one byte
16
+ state.end++ // max flag is 2 so always one byte
17
17
 
18
18
  if (m.value) c.string.preencode(state, m.value)
19
+ if (version >= 2 && m.file) c.buffer.preencode(state, m.file)
19
20
  },
20
21
  encode (state, m) {
21
- const flags = m.value ? 1 : 0
22
+ const flags =
23
+ (m.value ? 1 : 0) |
24
+ ((version >= 2 && m.file) ? 2 : 0)
22
25
 
23
26
  c.string.encode(state, m.key)
24
27
  c.uint.encode(state, flags)
25
28
 
26
29
  if (m.value) c.string.encode(state, m.value)
30
+ if (version >= 2 && m.file) c.buffer.encode(state, m.file)
27
31
  },
28
32
  decode (state) {
29
33
  const r0 = c.string.decode(state)
@@ -31,7 +35,8 @@ const encoding0 = {
31
35
 
32
36
  return {
33
37
  key: r0,
34
- value: (flags & 1) !== 0 ? c.string.decode(state) : null
38
+ value: (flags & 1) !== 0 ? c.string.decode(state) : null,
39
+ file: (version >= 2 && (flags & 2) !== 0) ? c.buffer.decode(state) : null
35
40
  }
36
41
  }
37
42
  }
@@ -99,6 +104,23 @@ const encoding3 = {
99
104
  }
100
105
  }
101
106
 
107
+ // @autopass/del-invite
108
+ const encoding4 = {
109
+ preencode (state, m) {
110
+ c.buffer.preencode(state, m.id)
111
+ },
112
+ encode (state, m) {
113
+ c.buffer.encode(state, m.id)
114
+ },
115
+ decode (state) {
116
+ const r0 = c.buffer.decode(state)
117
+
118
+ return {
119
+ id: r0
120
+ }
121
+ }
122
+ }
123
+
102
124
  function setVersion (v) {
103
125
  version = v
104
126
  }
@@ -125,6 +147,7 @@ function getEncoding (name) {
125
147
  case '@autopass/writer': return encoding1
126
148
  case '@autopass/delete': return encoding2
127
149
  case '@autopass/invite': return encoding3
150
+ case '@autopass/del-invite': return encoding4
128
151
  default: throw new Error('Encoder not found ' + name)
129
152
  }
130
153
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": 1,
2
+ "version": 2,
3
3
  "schema": [
4
4
  {
5
5
  "name": "records",
@@ -18,6 +18,12 @@
18
18
  "required": false,
19
19
  "type": "string",
20
20
  "version": 1
21
+ },
22
+ {
23
+ "name": "file",
24
+ "required": false,
25
+ "type": "buffer",
26
+ "version": 2
21
27
  }
22
28
  ]
23
29
  },
@@ -80,6 +86,20 @@
80
86
  "version": 1
81
87
  }
82
88
  ]
89
+ },
90
+ {
91
+ "name": "del-invite",
92
+ "namespace": "autopass",
93
+ "compact": false,
94
+ "flagsPosition": -1,
95
+ "fields": [
96
+ {
97
+ "name": "id",
98
+ "required": true,
99
+ "type": "buffer",
100
+ "version": 1
101
+ }
102
+ ]
83
103
  }
84
104
  ]
85
105
  }