@cero-base/cero 0.5.2 → 0.6.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.
@@ -0,0 +1,153 @@
1
+ export const main: {
2
+ 'del-by-id': {
3
+ id: import("@cero-base/core/schema").Prim;
4
+ };
5
+ writer: {
6
+ master: import("@cero-base/core/schema").Prim;
7
+ writer: import("@cero-base/core/schema").Prim;
8
+ sig: import("@cero-base/core/schema").Prim;
9
+ isIndexer: import("@cero-base/core/schema").Prim;
10
+ };
11
+ counter: {
12
+ name: import("@cero-base/core/schema").Prim;
13
+ value: import("@cero-base/core/schema").Prim;
14
+ };
15
+ member: {
16
+ id: import("@cero-base/core/schema").Prim;
17
+ key: import("@cero-base/core/schema").Prim;
18
+ role: import("@cero-base/core/schema").Prim;
19
+ name: import("@cero-base/core/schema").Prim;
20
+ createdAt: import("@cero-base/core/schema").Prim;
21
+ updatedAt: import("@cero-base/core/schema").Prim;
22
+ sig: import("@cero-base/core/schema").Prim;
23
+ index: import("@cero-base/core/schema").Prim;
24
+ };
25
+ device: {
26
+ id: import("@cero-base/core/schema").Prim;
27
+ memberId: import("@cero-base/core/schema").Prim;
28
+ name: import("@cero-base/core/schema").Prim;
29
+ isMobile: import("@cero-base/core/schema").Prim;
30
+ createdAt: import("@cero-base/core/schema").Prim;
31
+ updatedAt: import("@cero-base/core/schema").Prim;
32
+ index: import("@cero-base/core/schema").Prim;
33
+ };
34
+ invite: {
35
+ id: import("@cero-base/core/schema").Prim;
36
+ invite: import("@cero-base/core/schema").Prim;
37
+ publicKey: import("@cero-base/core/schema").Prim;
38
+ data: import("@cero-base/core/schema").Prim;
39
+ sig: import("@cero-base/core/schema").Prim;
40
+ role: import("@cero-base/core/schema").Prim;
41
+ expires: import("@cero-base/core/schema").Prim;
42
+ createdAt: import("@cero-base/core/schema").Prim;
43
+ index: import("@cero-base/core/schema").Prim;
44
+ };
45
+ handle: {
46
+ id: import("@cero-base/core/schema").Prim;
47
+ type: import("@cero-base/core/schema").Prim;
48
+ key: import("@cero-base/core/schema").Prim;
49
+ encryptionKey: import("@cero-base/core/schema").Prim;
50
+ name: import("@cero-base/core/schema").Prim;
51
+ createdAt: import("@cero-base/core/schema").Prim;
52
+ updatedAt: import("@cero-base/core/schema").Prim;
53
+ index: import("@cero-base/core/schema").Prim;
54
+ };
55
+ claim: {
56
+ identity: import("@cero-base/core/schema").Prim;
57
+ writer: import("@cero-base/core/schema").Prim;
58
+ sig: import("@cero-base/core/schema").Prim;
59
+ };
60
+ };
61
+ export const local: {
62
+ master: {
63
+ seed: import("@cero-base/core/schema").Prim;
64
+ };
65
+ keypair: {
66
+ publicKey: import("@cero-base/core/schema").Prim;
67
+ secretKey: import("@cero-base/core/schema").Prim;
68
+ };
69
+ 'handle-keypair': {
70
+ id: import("@cero-base/core/schema").Prim;
71
+ publicKey: import("@cero-base/core/schema").Prim;
72
+ secretKey: import("@cero-base/core/schema").Prim;
73
+ encryptionKey: import("@cero-base/core/schema").Prim;
74
+ };
75
+ };
76
+ export const rpc: {
77
+ 'req-empty': {
78
+ ok: import("@cero-base/core/schema").Prim;
79
+ };
80
+ 'req-restore': {
81
+ phrase: import("@cero-base/core/schema").Prim;
82
+ };
83
+ 'req-row': {
84
+ handle: import("@cero-base/core/schema").Prim;
85
+ ref: import("@cero-base/core/schema").Prim;
86
+ data: import("@cero-base/core/schema").Prim;
87
+ local: import("@cero-base/core/schema").Prim;
88
+ };
89
+ 'req-id': {
90
+ handle: import("@cero-base/core/schema").Prim;
91
+ ref: import("@cero-base/core/schema").Prim;
92
+ id: import("@cero-base/core/schema").Prim;
93
+ local: import("@cero-base/core/schema").Prim;
94
+ };
95
+ 'req-query': {
96
+ handle: import("@cero-base/core/schema").Prim;
97
+ ref: import("@cero-base/core/schema").Prim;
98
+ query: import("@cero-base/core/schema").Prim;
99
+ local: import("@cero-base/core/schema").Prim;
100
+ };
101
+ 'req-call': {
102
+ handle: import("@cero-base/core/schema").Prim;
103
+ op: import("@cero-base/core/schema").Prim;
104
+ data: import("@cero-base/core/schema").Prim;
105
+ };
106
+ 'req-invite': {
107
+ handle: import("@cero-base/core/schema").Prim;
108
+ role: import("@cero-base/core/schema").Prim;
109
+ };
110
+ 'req-revoke': {
111
+ handle: import("@cero-base/core/schema").Prim;
112
+ invite: import("@cero-base/core/schema").Prim;
113
+ };
114
+ 'req-join': {
115
+ parent: import("@cero-base/core/schema").Prim;
116
+ ref: import("@cero-base/core/schema").Prim;
117
+ invite: import("@cero-base/core/schema").Prim;
118
+ };
119
+ 'req-open': {
120
+ parent: import("@cero-base/core/schema").Prim;
121
+ row: import("@cero-base/core/schema").Prim;
122
+ };
123
+ 'req-handle': {
124
+ handle: import("@cero-base/core/schema").Prim;
125
+ };
126
+ 'res-data': {
127
+ data: import("@cero-base/core/schema").Prim;
128
+ };
129
+ 'res-rows': {
130
+ data: import("@cero-base/core/schema").Prim;
131
+ total: import("@cero-base/core/schema").Prim;
132
+ size: import("@cero-base/core/schema").Prim;
133
+ };
134
+ 'res-count': {
135
+ count: import("@cero-base/core/schema").Prim;
136
+ };
137
+ 'res-invite': {
138
+ invite: import("@cero-base/core/schema").Prim;
139
+ };
140
+ 'res-handle': {
141
+ id: import("@cero-base/core/schema").Prim;
142
+ type: import("@cero-base/core/schema").Prim;
143
+ name: import("@cero-base/core/schema").Prim;
144
+ };
145
+ 'res-identity': {
146
+ id: import("@cero-base/core/schema").Prim;
147
+ deviceId: import("@cero-base/core/schema").Prim;
148
+ phrase: import("@cero-base/core/schema").Prim;
149
+ };
150
+ 'res-ok': {
151
+ ok: import("@cero-base/core/schema").Prim;
152
+ };
153
+ };
@@ -48,8 +48,6 @@ export { Ref } from "../lib/utils.js";
48
48
  *
49
49
  * @typedef {object} RecoverOpts
50
50
  * @property {number} [timeout]
51
- * @property {string | null} [name]
52
- * @property {boolean} [isMobile]
53
51
  *
54
52
  * @typedef {object} HandleExtra
55
53
  * @property {string | null} [name] Display name; set on child handles by the owner flow.
@@ -126,7 +124,7 @@ export class Handle extends ReadyResource {
126
124
  * @param {RecoverOpts} [opts]
127
125
  * @returns {Promise<void>}
128
126
  */
129
- recover({ timeout, name, isMobile }?: RecoverOpts): Promise<void>;
127
+ recover({ timeout }?: RecoverOpts): Promise<void>;
130
128
  /**
131
129
  * Mint a pairing invite for this handle.
132
130
  *
@@ -326,8 +324,6 @@ export type AcceptOpts = {
326
324
  };
327
325
  export type RecoverOpts = {
328
326
  timeout?: number;
329
- name?: string | null;
330
- isMobile?: boolean;
331
327
  };
332
328
  export type HandleExtra = {
333
329
  /**
@@ -0,0 +1,14 @@
1
+ export const NS: "cero";
2
+ export const COUNTERS: "counters";
3
+ export const TIMEOUT: 30000;
4
+ export const FLUSH: 500;
5
+ export namespace DB_TYPE {
6
+ let string: string;
7
+ let uint: string;
8
+ let int: string;
9
+ let bool: string;
10
+ let bytes: string;
11
+ let json: string;
12
+ let fixed32: string;
13
+ let fixed64: string;
14
+ }
@@ -1,413 +0,0 @@
1
- /**
2
- * Builtin type/collection/dispatch/rpc definitions used by the builder.
3
- * Every cero schema includes these; user-defined refs are added on top.
4
- *
5
- * @typedef {{ name: string, type: string, verb?: string, kind?: string }} BuiltinRef
6
- * @typedef {{ name: string, type: string, required: boolean }} FieldDesc
7
- * @typedef {{ name: string, compact: boolean, fields: FieldDesc[] }} TypeDesc
8
- * @typedef {{ name: string, schema: string, key: string[] }} CollectionDesc
9
- * @typedef {{ name: string, requestType: string }} DispatchDesc
10
- * @typedef {{
11
- * name: string,
12
- * request: { name: string },
13
- * response: { name: string, stream?: boolean }
14
- * }} CommandDesc
15
- */
16
-
17
- /**
18
- * Refs that exist on every main (Handle) schema.
19
- *
20
- * @type {BuiltinRef[]}
21
- */
22
- export const BUILTINS = [
23
- { name: 'members', type: 'member', verb: 'member' },
24
- { name: 'devices', type: 'device', verb: 'device' },
25
- { name: 'invites', type: 'invite', verb: 'invite' },
26
- { name: 'handles', type: 'handle', verb: 'handle' }
27
- ]
28
-
29
- /**
30
- * Refs that exist on every local schema.
31
- *
32
- * @type {BuiltinRef[]}
33
- */
34
- export const LOCAL_BUILTINS = [
35
- { name: 'master', type: 'master', kind: 'single' },
36
- { name: 'keypair', type: 'keypair', kind: 'single' },
37
- { name: 'handle-keypairs', type: 'handle-keypair', kind: 'collection' }
38
- ]
39
-
40
- const HYPERDB_TYPE = {
41
- string: 'string',
42
- uint: 'uint',
43
- int: 'int',
44
- bool: 'bool',
45
- bytes: 'buffer',
46
- json: 'json',
47
- fixed32: 'fixed32',
48
- fixed64: 'fixed64'
49
- }
50
-
51
- /**
52
- * Map a schema-DSL primitive name to its HyperDB type name.
53
- *
54
- * @param {string} prim
55
- * @returns {string}
56
- */
57
- export function hyperdbType(prim) {
58
- return HYPERDB_TYPE[prim] || 'string'
59
- }
60
-
61
- /**
62
- * Type descriptors registered into every main schema.
63
- *
64
- * @returns {TypeDesc[]}
65
- */
66
- export function builtinTypes() {
67
- return [
68
- { name: 'del-by-id', compact: false, fields: [{ name: 'id', type: 'string', required: true }] },
69
- {
70
- name: 'writer',
71
- compact: false,
72
- fields: [
73
- { name: 'master', type: 'buffer', required: true },
74
- { name: 'writer', type: 'buffer', required: true },
75
- { name: 'sig', type: 'buffer', required: true },
76
- { name: 'name', type: 'string', required: false },
77
- { name: 'isMobile', type: 'bool', required: false },
78
- { name: 'isIndexer', type: 'bool', required: false }
79
- ]
80
- },
81
- {
82
- name: 'counter',
83
- compact: false,
84
- fields: [
85
- { name: 'name', type: 'string', required: true },
86
- { name: 'value', type: 'uint', required: true }
87
- ]
88
- },
89
- {
90
- name: 'member',
91
- compact: false,
92
- fields: [
93
- { name: 'id', type: 'string', required: true },
94
- { name: 'key', type: 'buffer', required: true },
95
- { name: 'role', type: 'string', required: true },
96
- { name: 'name', type: 'string', required: false },
97
- { name: 'createdAt', type: 'int', required: false },
98
- { name: 'updatedAt', type: 'int', required: false },
99
- { name: 'sig', type: 'buffer', required: false },
100
- { name: 'index', type: 'uint', required: false }
101
- ]
102
- },
103
- {
104
- name: 'device',
105
- compact: false,
106
- fields: [
107
- { name: 'id', type: 'string', required: true },
108
- { name: 'memberId', type: 'string', required: false },
109
- { name: 'name', type: 'string', required: false },
110
- { name: 'isMobile', type: 'bool', required: false },
111
- { name: 'createdAt', type: 'int', required: false },
112
- { name: 'updatedAt', type: 'int', required: false },
113
- { name: 'index', type: 'uint', required: false }
114
- ]
115
- },
116
- {
117
- name: 'invite',
118
- compact: false,
119
- fields: [
120
- { name: 'id', type: 'string', required: true },
121
- { name: 'invite', type: 'buffer', required: true },
122
- { name: 'publicKey', type: 'buffer', required: true },
123
- { name: 'data', type: 'buffer', required: false },
124
- { name: 'sig', type: 'buffer', required: false },
125
- { name: 'role', type: 'string', required: true },
126
- { name: 'expires', type: 'int', required: false },
127
- { name: 'createdAt', type: 'int', required: false },
128
- { name: 'index', type: 'uint', required: false }
129
- ]
130
- },
131
- {
132
- name: 'handle',
133
- compact: false,
134
- fields: [
135
- { name: 'id', type: 'string', required: true },
136
- { name: 'type', type: 'string', required: true },
137
- { name: 'key', type: 'buffer', required: true },
138
- { name: 'encryptionKey', type: 'buffer', required: false },
139
- { name: 'name', type: 'string', required: false },
140
- { name: 'createdAt', type: 'int', required: false },
141
- { name: 'updatedAt', type: 'int', required: false },
142
- { name: 'index', type: 'uint', required: false }
143
- ]
144
- },
145
- {
146
- name: 'claim',
147
- compact: false,
148
- fields: [
149
- { name: 'identity', type: 'buffer', required: true },
150
- { name: 'writer', type: 'buffer', required: true },
151
- { name: 'sig', type: 'buffer', required: true },
152
- { name: 'name', type: 'string', required: false },
153
- { name: 'isMobile', type: 'bool', required: false }
154
- ]
155
- }
156
- ]
157
- }
158
-
159
- /** Collection name for the internal counters table. */
160
- export const COUNTERS = 'counters'
161
-
162
- /**
163
- * Collection descriptors for every main schema, namespaced under `ns`.
164
- *
165
- * @param {string} ns
166
- * @returns {CollectionDesc[]}
167
- */
168
- export function builtinCollections(ns) {
169
- const out = BUILTINS.map((b) => ({ name: b.name, schema: `@${ns}/${b.type}`, key: ['id'] }))
170
- out.push({ name: COUNTERS, schema: `@${ns}/counter`, key: ['name'] })
171
- return out
172
- }
173
-
174
- /**
175
- * Dispatch (mutation) descriptors for every main schema, namespaced under `ns`.
176
- *
177
- * @param {string} ns
178
- * @returns {DispatchDesc[]}
179
- */
180
- export function builtinDispatches(ns) {
181
- const at = (n) => `@${ns}/${n}`
182
- const out = [
183
- { name: 'add-writer', requestType: at('writer') },
184
- { name: 'del-writer', requestType: at('writer') },
185
- { name: 'claim-writer', requestType: at('claim') }
186
- ]
187
- for (const b of BUILTINS) {
188
- out.push({ name: `add-${b.verb}`, requestType: at(b.type) })
189
- out.push({ name: `set-${b.verb}`, requestType: at(b.type) })
190
- out.push({ name: `del-${b.verb}`, requestType: at('del-by-id') })
191
- }
192
- return out
193
- }
194
-
195
- /**
196
- * Type descriptors registered into every local schema.
197
- *
198
- * @returns {TypeDesc[]}
199
- */
200
- export function localBuiltinTypes() {
201
- return [
202
- { name: 'master', compact: false, fields: [{ name: 'seed', type: 'buffer', required: true }] },
203
- {
204
- name: 'keypair',
205
- compact: false,
206
- fields: [
207
- { name: 'publicKey', type: 'buffer', required: true },
208
- { name: 'secretKey', type: 'buffer', required: true }
209
- ]
210
- },
211
- {
212
- name: 'handle-keypair',
213
- compact: false,
214
- fields: [
215
- { name: 'id', type: 'string', required: true },
216
- { name: 'publicKey', type: 'buffer', required: true },
217
- { name: 'secretKey', type: 'buffer', required: true },
218
- { name: 'encryptionKey', type: 'buffer', required: false }
219
- ]
220
- }
221
- ]
222
- }
223
-
224
- /**
225
- * Collection descriptors for every local schema, namespaced under `ns`.
226
- *
227
- * @param {string} ns
228
- * @returns {CollectionDesc[]}
229
- */
230
- export function localBuiltinCollections(ns) {
231
- return [
232
- { name: 'master', schema: `@${ns}/master`, key: [] },
233
- { name: 'keypair', schema: `@${ns}/keypair`, key: [] },
234
- { name: 'handle-keypairs', schema: `@${ns}/handle-keypair`, key: ['id'] }
235
- ]
236
- }
237
-
238
- /**
239
- * Request/response type descriptors for the RPC facade.
240
- *
241
- * @returns {TypeDesc[]}
242
- */
243
- export function rpcTypes() {
244
- return [
245
- { name: 'req-empty', compact: false, fields: [{ name: 'ok', type: 'bool', required: false }] },
246
- {
247
- name: 'req-restore',
248
- compact: false,
249
- fields: [{ name: 'phrase', type: 'string', required: true }]
250
- },
251
- {
252
- name: 'req-row',
253
- compact: false,
254
- fields: [
255
- { name: 'handle', type: 'string', required: true },
256
- { name: 'ref', type: 'string', required: true },
257
- { name: 'data', type: 'buffer', required: true },
258
- { name: 'local', type: 'bool', required: false }
259
- ]
260
- },
261
- {
262
- name: 'req-id',
263
- compact: false,
264
- fields: [
265
- { name: 'handle', type: 'string', required: true },
266
- { name: 'ref', type: 'string', required: true },
267
- { name: 'id', type: 'string', required: true },
268
- { name: 'local', type: 'bool', required: false }
269
- ]
270
- },
271
- {
272
- name: 'req-query',
273
- compact: false,
274
- fields: [
275
- { name: 'handle', type: 'string', required: true },
276
- { name: 'ref', type: 'string', required: true },
277
- { name: 'query', type: 'buffer', required: false },
278
- { name: 'local', type: 'bool', required: false }
279
- ]
280
- },
281
- {
282
- name: 'req-call',
283
- compact: false,
284
- fields: [
285
- { name: 'handle', type: 'string', required: true },
286
- { name: 'op', type: 'string', required: true },
287
- { name: 'data', type: 'buffer', required: false }
288
- ]
289
- },
290
- {
291
- name: 'req-invite',
292
- compact: false,
293
- fields: [
294
- { name: 'handle', type: 'string', required: true },
295
- { name: 'role', type: 'string', required: false }
296
- ]
297
- },
298
- {
299
- name: 'req-revoke',
300
- compact: false,
301
- fields: [
302
- { name: 'handle', type: 'string', required: true },
303
- { name: 'invite', type: 'string', required: true }
304
- ]
305
- },
306
- {
307
- name: 'req-join',
308
- compact: false,
309
- fields: [
310
- { name: 'parent', type: 'string', required: true },
311
- { name: 'ref', type: 'string', required: true },
312
- { name: 'invite', type: 'string', required: true }
313
- ]
314
- },
315
- {
316
- name: 'req-open',
317
- compact: false,
318
- fields: [
319
- { name: 'parent', type: 'string', required: true },
320
- { name: 'row', type: 'string', required: true }
321
- ]
322
- },
323
- {
324
- name: 'req-handle',
325
- compact: false,
326
- fields: [{ name: 'handle', type: 'string', required: true }]
327
- },
328
- {
329
- name: 'res-data',
330
- compact: false,
331
- fields: [{ name: 'data', type: 'buffer', required: false }]
332
- },
333
- {
334
- name: 'res-rows',
335
- compact: false,
336
- fields: [
337
- { name: 'data', type: 'buffer', required: true },
338
- { name: 'total', type: 'int', required: true },
339
- { name: 'size', type: 'int', required: true }
340
- ]
341
- },
342
- { name: 'res-count', compact: false, fields: [{ name: 'count', type: 'int', required: true }] },
343
- {
344
- name: 'res-invite',
345
- compact: false,
346
- fields: [{ name: 'invite', type: 'string', required: true }]
347
- },
348
- {
349
- name: 'res-handle',
350
- compact: false,
351
- fields: [
352
- { name: 'id', type: 'string', required: true },
353
- { name: 'type', type: 'string', required: true },
354
- { name: 'name', type: 'string', required: false }
355
- ]
356
- },
357
- {
358
- name: 'res-identity',
359
- compact: false,
360
- fields: [
361
- { name: 'id', type: 'string', required: true },
362
- { name: 'deviceId', type: 'string', required: false },
363
- { name: 'phrase', type: 'string', required: false }
364
- ]
365
- },
366
- { name: 'res-ok', compact: false, fields: [{ name: 'ok', type: 'bool', required: false }] }
367
- ]
368
- }
369
-
370
- /**
371
- * RPC command (verb) descriptors for the cero server, namespaced under `ns`.
372
- *
373
- * @param {string} ns
374
- * @returns {CommandDesc[]}
375
- */
376
- export function rpcCommands(ns) {
377
- const at = (n) => `@${ns}/${n}`
378
- return [
379
- {
380
- name: 'init',
381
- request: { name: at('req-empty') },
382
- response: { name: at('res-identity') }
383
- },
384
- {
385
- name: 'restore',
386
- request: { name: at('req-restore') },
387
- response: { name: at('res-identity') }
388
- },
389
- { name: 'add-row', request: { name: at('req-row') }, response: { name: at('res-data') } },
390
- { name: 'add-handle', request: { name: at('req-row') }, response: { name: at('res-handle') } },
391
- { name: 'set', request: { name: at('req-row') }, response: { name: at('res-data') } },
392
- { name: 'get', request: { name: at('req-query') }, response: { name: at('res-rows') } },
393
- { name: 'get-one', request: { name: at('req-id') }, response: { name: at('res-data') } },
394
- { name: 'del', request: { name: at('req-id') }, response: { name: at('res-ok') } },
395
- { name: 'count', request: { name: at('req-query') }, response: { name: at('res-count') } },
396
- {
397
- name: 'watch',
398
- request: { name: at('req-query') },
399
- response: { name: at('res-rows'), stream: true }
400
- },
401
- { name: 'call', request: { name: at('req-call') }, response: { name: at('res-data') } },
402
- { name: 'invite', request: { name: at('req-invite') }, response: { name: at('res-invite') } },
403
- { name: 'revoke', request: { name: at('req-revoke') }, response: { name: at('res-ok') } },
404
- { name: 'join', request: { name: at('req-join') }, response: { name: at('res-handle') } },
405
- {
406
- name: 'open-handle',
407
- request: { name: at('req-open') },
408
- response: { name: at('res-handle') }
409
- },
410
- { name: 'close-handle', request: { name: at('req-handle') }, response: { name: at('res-ok') } },
411
- { name: 'leave', request: { name: at('req-handle') }, response: { name: at('res-ok') } }
412
- ]
413
- }