@dxos/protocols 0.5.3-main.e76d664 → 0.5.3-main.eb56347

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 (36) hide show
  1. package/dist/cjs/src/indexing.d.ts +19 -3
  2. package/dist/cjs/src/indexing.d.ts.map +1 -1
  3. package/dist/cjs/src/indexing.js +42 -5
  4. package/dist/cjs/src/indexing.js.map +1 -1
  5. package/dist/cjs/src/indexing.test.d.ts +2 -0
  6. package/dist/cjs/src/indexing.test.d.ts.map +1 -0
  7. package/dist/cjs/src/indexing.test.js +31 -0
  8. package/dist/cjs/src/indexing.test.js.map +1 -0
  9. package/dist/cjs/src/proto/gen/dxos/agent/functions.d.ts +11 -2
  10. package/dist/cjs/src/proto/gen/dxos/agent/functions.d.ts.map +1 -1
  11. package/dist/cjs/src/proto/gen/index.d.ts +1 -0
  12. package/dist/cjs/src/proto/gen/index.d.ts.map +1 -1
  13. package/dist/cjs/src/proto/gen/index.js +1 -1
  14. package/dist/cjs/src/proto/gen/index.js.map +1 -1
  15. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  16. package/dist/esm/src/indexing.d.ts +19 -3
  17. package/dist/esm/src/indexing.d.ts.map +1 -1
  18. package/dist/esm/src/indexing.js +41 -4
  19. package/dist/esm/src/indexing.js.map +1 -1
  20. package/dist/esm/src/indexing.test.d.ts +2 -0
  21. package/dist/esm/src/indexing.test.d.ts.map +1 -0
  22. package/dist/esm/src/indexing.test.js +29 -0
  23. package/dist/esm/src/indexing.test.js.map +1 -0
  24. package/dist/esm/src/proto/gen/dxos/agent/functions.d.ts +11 -2
  25. package/dist/esm/src/proto/gen/dxos/agent/functions.d.ts.map +1 -1
  26. package/dist/esm/src/proto/gen/index.d.ts +1 -0
  27. package/dist/esm/src/proto/gen/index.d.ts.map +1 -1
  28. package/dist/esm/src/proto/gen/index.js +1 -1
  29. package/dist/esm/src/proto/gen/index.js.map +1 -1
  30. package/package.json +5 -5
  31. package/src/indexing.test.ts +36 -0
  32. package/src/indexing.ts +44 -5
  33. package/src/proto/dxos/agent/functions.proto +8 -3
  34. package/src/proto/dxos/halo/credentials.proto +2 -2
  35. package/src/proto/gen/dxos/agent/functions.ts +11 -2
  36. package/src/proto/gen/index.ts +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/proto/gen/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA+DhE,OAAO,aAAa,MAAM,kBAAkB,CAAC;AA0iB7C,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,y/zGAAy/zG,CAAC,CAAC,CAAC;AAClj0G,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAkB,UAAU,EAAE,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/proto/gen/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA+DhE,OAAO,aAAa,MAAM,kBAAkB,CAAC;AA2iB7C,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,4o0GAA4o0G,CAAC,CAAC,CAAC;AACrs0G,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAkB,UAAU,EAAE,aAAa,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/protocols",
3
- "version": "0.5.3-main.e76d664",
3
+ "version": "0.5.3-main.eb56347",
4
4
  "description": "Protobuf definitions for DXOS protocols.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -33,10 +33,10 @@
33
33
  "src"
34
34
  ],
35
35
  "dependencies": {
36
- "@dxos/codec-protobuf": "0.5.3-main.e76d664",
37
- "@dxos/invariant": "0.5.3-main.e76d664",
38
- "@dxos/keys": "0.5.3-main.e76d664",
39
- "@dxos/timeframe": "0.5.3-main.e76d664"
36
+ "@dxos/codec-protobuf": "0.5.3-main.eb56347",
37
+ "@dxos/invariant": "0.5.3-main.eb56347",
38
+ "@dxos/keys": "0.5.3-main.eb56347",
39
+ "@dxos/timeframe": "0.5.3-main.eb56347"
40
40
  },
41
41
  "devDependencies": {
42
42
  "glob": "~7.1.6"
@@ -0,0 +1,36 @@
1
+ //
2
+ // Copyright 2022 DXOS.org
3
+ //
4
+
5
+ import { expect } from 'chai';
6
+
7
+ import { describe, test } from '@dxos/test';
8
+
9
+ import { ObjectPointerVersion, objectPointerCodec } from './indexing';
10
+
11
+ describe('Indexing object pointer codec', () => {
12
+ test('getVersion', async () => {
13
+ expect(objectPointerCodec.getVersion('aaaa|bbbb')).to.eq(ObjectPointerVersion.V0);
14
+ expect(objectPointerCodec.getVersion('#01|ssss|aaaa|bbbb')).to.eq(ObjectPointerVersion.V1);
15
+ });
16
+
17
+ test('v0', async () => {
18
+ expect(objectPointerCodec.encode({ spaceKey: undefined, documentId: 'aaaa', objectId: 'bbbb' })).to.eq('aaaa|bbbb');
19
+ expect(objectPointerCodec.decode('aaaa|bbbb')).to.eql({
20
+ spaceKey: undefined,
21
+ documentId: 'aaaa',
22
+ objectId: 'bbbb',
23
+ });
24
+ });
25
+
26
+ test('v1', async () => {
27
+ expect(objectPointerCodec.encode({ spaceKey: 'ssss', documentId: 'aaaa', objectId: 'bbbb' })).to.eq(
28
+ '#01|ssss|aaaa|bbbb',
29
+ );
30
+ expect(objectPointerCodec.decode('#01|ssss|aaaa|bbbb')).to.eql({
31
+ spaceKey: 'ssss',
32
+ documentId: 'aaaa',
33
+ objectId: 'bbbb',
34
+ });
35
+ });
36
+ });
package/src/indexing.ts CHANGED
@@ -3,19 +3,58 @@
3
3
  //
4
4
 
5
5
  export type ObjectPointerDecoded = {
6
+ spaceKey: string | undefined;
6
7
  documentId: string;
7
8
  objectId: string;
8
9
  };
9
10
 
10
11
  /**
11
- * Encoded object pointer: `${documentId}|${objectId}`.
12
+ * Encoded object pointer: `#01|${spaceKey}|${documentId}|${objectId}`.
13
+ * Old format without spaceKey: `${documentId}|${objectId}`.
14
+ * The spaceKey is optional and was added in the later version.
15
+ * Space key is encoded in the front to allow prefix iteration.
12
16
  */
13
17
  export type ObjectPointerEncoded = string;
14
18
 
15
- export const idCodec = {
16
- encode: ({ documentId, objectId }: ObjectPointerDecoded): ObjectPointerEncoded => `${documentId}|${objectId}`,
19
+ const V1_PREFIX = '#01';
20
+
21
+ export enum ObjectPointerVersion {
22
+ /**
23
+ * `${documentId}|${objectId}`
24
+ */
25
+ V0 = 0,
26
+ /**
27
+ * `#01|${spaceKey}|${documentId}|${objectId}`
28
+ */
29
+ V1 = 1,
30
+ }
31
+
32
+ export const objectPointerCodec = {
33
+ encode: ({ spaceKey, documentId, objectId }: ObjectPointerDecoded): ObjectPointerEncoded => {
34
+ if (spaceKey === undefined) {
35
+ return `${documentId}|${objectId}`;
36
+ } else {
37
+ return `${V1_PREFIX}|${spaceKey}|${documentId}|${objectId}`;
38
+ }
39
+ },
17
40
  decode: (id: ObjectPointerEncoded): ObjectPointerDecoded => {
18
- const [documentId, objectId] = id.split('|');
19
- return { documentId, objectId };
41
+ if (id.startsWith(V1_PREFIX)) {
42
+ const [_, spaceKey, documentId, objectId] = id.split('|');
43
+ return { spaceKey, documentId, objectId };
44
+ } else {
45
+ const [documentId, objectId] = id.split('|');
46
+ return { spaceKey: undefined, documentId, objectId };
47
+ }
48
+ },
49
+ getVersion: (id: ObjectPointerEncoded): ObjectPointerVersion => {
50
+ if (id.startsWith(V1_PREFIX)) {
51
+ return ObjectPointerVersion.V1;
52
+ } else {
53
+ return ObjectPointerVersion.V0;
54
+ }
55
+ },
56
+ convertV1ToV0: (id: ObjectPointerEncoded): ObjectPointerEncoded => {
57
+ const { documentId, objectId } = objectPointerCodec.decode(id);
58
+ return objectPointerCodec.encode({ documentId, objectId, spaceKey: undefined });
20
59
  },
21
60
  };
@@ -14,14 +14,13 @@ message FunctionsConfig {
14
14
  optional string manifest = 2;
15
15
  }
16
16
 
17
- // TODO(burdon): Reconcile with typedefs.
18
17
  message Function {
19
- string name = 1;
18
+ string id = 1;
19
+ string route = 2;
20
20
  }
21
21
 
22
22
  message RegisterRequest {
23
23
  string endpoint = 1;
24
- repeated Function functions = 2;
25
24
  }
26
25
 
27
26
  message RegisterResponse {
@@ -29,11 +28,17 @@ message RegisterResponse {
29
28
  string endpoint = 2;
30
29
  }
31
30
 
31
+ message UpdateRegistrationRequest {
32
+ string registration_id = 1;
33
+ repeated Function functions = 2;
34
+ }
35
+
32
36
  message UnregisterRequest {
33
37
  string registration_id = 1;
34
38
  }
35
39
 
36
40
  service FunctionRegistryService {
37
41
  rpc Register(RegisterRequest) returns (RegisterResponse) {}
42
+ rpc UpdateRegistration(UpdateRegistrationRequest) returns (google.protobuf.Empty) {}
38
43
  rpc Unregister(UnregisterRequest) returns (google.protobuf.Empty) {}
39
44
  }
@@ -170,13 +170,13 @@ message DeviceProfileDocument {
170
170
 
171
171
  optional string platform = 2;
172
172
  optional string platform_version = 3;
173
- optional string architecture = 4;
173
+ optional string architecture = 4;
174
174
  optional string os = 5;
175
175
  optional string os_version = 6;
176
176
  optional DeviceType type = 7;
177
177
  }
178
178
 
179
- /// [ASSERTION]: Sets device profile information.
179
+ /// [ASSERTION]: Sets device profile information.
180
180
  message DeviceProfile {
181
181
  DeviceProfileDocument profile = 1;
182
182
  }
@@ -82,7 +82,8 @@ export interface FunctionsConfig {
82
82
  * {@link file://./../../../dxos/agent/functions.proto}
83
83
  */
84
84
  export interface Function {
85
- name: string;
85
+ id: string;
86
+ route: string;
86
87
  }
87
88
  /**
88
89
  * Defined in:
@@ -90,7 +91,6 @@ export interface Function {
90
91
  */
91
92
  export interface RegisterRequest {
92
93
  endpoint: string;
93
- functions?: Function[];
94
94
  }
95
95
  /**
96
96
  * Defined in:
@@ -100,6 +100,14 @@ export interface RegisterResponse {
100
100
  registrationId: string;
101
101
  endpoint: string;
102
102
  }
103
+ /**
104
+ * Defined in:
105
+ * {@link file://./../../../dxos/agent/functions.proto}
106
+ */
107
+ export interface UpdateRegistrationRequest {
108
+ registrationId: string;
109
+ functions?: Function[];
110
+ }
103
111
  /**
104
112
  * Defined in:
105
113
  * {@link file://./../../../dxos/agent/functions.proto}
@@ -113,5 +121,6 @@ export interface UnregisterRequest {
113
121
  */
114
122
  export interface FunctionRegistryService {
115
123
  register: (request: RegisterRequest, options?: RequestOptions) => Promise<RegisterResponse>;
124
+ updateRegistration: (request: UpdateRegistrationRequest, options?: RequestOptions) => Promise<void>;
116
125
  unregister: (request: UnregisterRequest, options?: RequestOptions) => Promise<void>;
117
126
  }