@dxos/codec-protobuf 2.33.9-dev.7d11f506 → 2.33.9-dev.845d4f3e

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,4 @@
1
+ import * as protobuf from 'protobufjs';
2
+ export declare const encodeProtobuf: (root: protobuf.Root) => string;
3
+ export declare const decodeProtobuf: (json: string) => protobuf.Root;
4
+ //# sourceMappingURL=encoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/encoding.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AAEvC,eAAO,MAAM,cAAc,SAAU,SAAS,IAAI,KAAG,MAAuC,CAAC;AAE7F,eAAO,MAAM,cAAc,SAAU,MAAM,KAAG,SAAS,IAAgD,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2021 DXOS.org
4
+ //
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || function (mod) {
22
+ if (mod && mod.__esModule) return mod;
23
+ var result = {};
24
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
+ __setModuleDefault(result, mod);
26
+ return result;
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.decodeProtobuf = exports.encodeProtobuf = void 0;
30
+ const protobuf = __importStar(require("protobufjs"));
31
+ const encodeProtobuf = (root) => JSON.stringify(root.toJSON());
32
+ exports.encodeProtobuf = encodeProtobuf;
33
+ const decodeProtobuf = (json) => protobuf.Root.fromJSON(JSON.parse(json));
34
+ exports.decodeProtobuf = decodeProtobuf;
35
+ //# sourceMappingURL=encoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.js","sourceRoot":"","sources":["../../src/encoding.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,qDAAuC;AAEhC,MAAM,cAAc,GAAG,CAAC,IAAmB,EAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAAhF,QAAA,cAAc,kBAAkE;AAEtF,MAAM,cAAc,GAAG,CAAC,IAAY,EAAiB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAA3F,QAAA,cAAc,kBAA6E"}
@@ -1,7 +1,9 @@
1
1
  export * from './buffer-patch';
2
2
  export * from './codec';
3
3
  export * from './common';
4
+ export * from './encoding';
4
5
  export * from './interface';
6
+ export * from './mapping';
5
7
  export * from './sanitizer';
6
8
  export * from './schema';
7
9
  export * from './service';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC"}
package/dist/src/index.js CHANGED
@@ -20,7 +20,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
20
20
  __exportStar(require("./buffer-patch"), exports);
21
21
  __exportStar(require("./codec"), exports);
22
22
  __exportStar(require("./common"), exports);
23
+ __exportStar(require("./encoding"), exports);
23
24
  __exportStar(require("./interface"), exports);
25
+ __exportStar(require("./mapping"), exports);
24
26
  __exportStar(require("./sanitizer"), exports);
25
27
  __exportStar(require("./schema"), exports);
26
28
  __exportStar(require("./service"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;AAEF,iDAA+B;AAC/B,0CAAwB;AACxB,2CAAyB;AACzB,8CAA4B;AAC5B,8CAA4B;AAC5B,2CAAyB;AACzB,4CAA0B;AAC1B,2CAAyB;AACzB,kDAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;AAEF,iDAA+B;AAC/B,0CAAwB;AACxB,2CAAyB;AACzB,6CAA2B;AAC3B,8CAA4B;AAC5B,4CAA0B;AAC1B,8CAA4B;AAC5B,2CAAyB;AACzB,4CAA0B;AAC1B,2CAAyB;AACzB,kDAAgC"}
@@ -1,3 +1,4 @@
1
+ import protobufjs from 'protobufjs';
1
2
  import { Substitutions } from './common';
2
3
  export declare type MapingDescriptors = Partial<Record<string, (value: any, ...extraArgs: any) => any>>;
3
4
  export interface BidirectionalMapingDescriptors {
@@ -5,4 +6,6 @@ export interface BidirectionalMapingDescriptors {
5
6
  decode: MapingDescriptors;
6
7
  }
7
8
  export declare const createMappingDescriptors: (substitutions: Substitutions) => BidirectionalMapingDescriptors;
9
+ export declare type FieldMapper = (value: any, typeName: string) => Promise<any>;
10
+ export declare const mapMessage: (type: protobufjs.Type, mapper: FieldMapper, obj: any) => Promise<any>;
8
11
  //# sourceMappingURL=mapping.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../src/mapping.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,oBAAY,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAA;AAE/F,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED,eAAO,MAAM,wBAAwB,kBAAmB,aAAa,KAAG,8BAWvE,CAAC"}
1
+ {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../src/mapping.ts"],"names":[],"mappings":"AAKA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,oBAAY,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAA;AAE/F,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED,eAAO,MAAM,wBAAwB,kBAAmB,aAAa,KAAG,8BAWvE,CAAC;AAEF,oBAAY,WAAW,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAEzE,eAAO,MAAM,UAAU,SAAgB,WAAW,IAAI,UAAU,WAAW,OAAO,GAAG,iBAUpF,CAAC"}
@@ -2,8 +2,13 @@
2
2
  //
3
3
  // Copyright 2020 DXOS.org
4
4
  //
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
5
8
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createMappingDescriptors = void 0;
9
+ exports.mapMessage = exports.createMappingDescriptors = void 0;
10
+ const node_assert_1 = __importDefault(require("node:assert"));
11
+ const protobufjs_1 = __importDefault(require("protobufjs"));
7
12
  const createMappingDescriptors = (substitutions) => {
8
13
  const encode = {};
9
14
  const decode = {};
@@ -17,4 +22,51 @@ const createMappingDescriptors = (substitutions) => {
17
22
  };
18
23
  };
19
24
  exports.createMappingDescriptors = createMappingDescriptors;
25
+ const mapMessage = async (type, mapper, obj) => {
26
+ const res = {};
27
+ for (const field of type.fieldsArray) {
28
+ if (!(field.name in obj)) {
29
+ continue;
30
+ }
31
+ res[field.name] = await mapField(field, mapper, obj[field.name]);
32
+ }
33
+ return res;
34
+ };
35
+ exports.mapMessage = mapMessage;
36
+ const mapField = async (field, mapper, value) => {
37
+ if (!field.required && (value === null || value === undefined)) {
38
+ return value;
39
+ }
40
+ else if (field.repeated) {
41
+ return await Promise.all(value.map((value) => mapScalarField(field, mapper, value)));
42
+ }
43
+ else if (field.map) {
44
+ (0, node_assert_1.default)(field instanceof protobufjs_1.default.MapField);
45
+ return await asyncObjectMap((value) => mapScalarField(field, mapper, value), value);
46
+ }
47
+ else {
48
+ return mapScalarField(field, mapper, value);
49
+ }
50
+ };
51
+ const mapScalarField = async (field, mapper, value) => {
52
+ var _a;
53
+ if (!field.resolved) {
54
+ field.resolve();
55
+ }
56
+ const typeName = (_a = field.resolvedType) === null || _a === void 0 ? void 0 : _a.fullName.slice(1); // Name of the protobuf message type if the field type is not primitive.
57
+ if (typeName) {
58
+ return await mapper(value, typeName);
59
+ }
60
+ if (field.resolvedType && field.resolvedType instanceof protobufjs_1.default.Type) {
61
+ return await (0, exports.mapMessage)(field.resolvedType, mapper, value);
62
+ }
63
+ return value;
64
+ };
65
+ const asyncObjectMap = async (map, record) => {
66
+ const res = {};
67
+ await Promise.all(Object.entries(record).map(async ([key, value]) => {
68
+ res[key] = await map(value, key);
69
+ }));
70
+ return res;
71
+ };
20
72
  //# sourceMappingURL=mapping.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapping.js","sourceRoot":"","sources":["../../src/mapping.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAWK,MAAM,wBAAwB,GAAG,CAAC,aAA4B,EAAkC,EAAE;IACvG,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;QAC7C,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;KAC3C;IACD,OAAO;QACL,MAAM;QACN,MAAM;KACP,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,wBAAwB,4BAWnC"}
1
+ {"version":3,"file":"mapping.js","sourceRoot":"","sources":["../../src/mapping.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
30
30
  };
31
31
  Object.defineProperty(exports, "__esModule", { value: true });
32
32
  exports.createMessageMapper = void 0;
33
- const assert_1 = __importDefault(require("assert"));
33
+ const node_assert_1 = __importDefault(require("node:assert"));
34
34
  const pb = __importStar(require("protobufjs"));
35
35
  const codegen_1 = require("./codegen");
36
36
  const createMessageMapper = (type, substitutions) => createMessageMapperCached(type, substitutions, {}).map;
@@ -42,10 +42,10 @@ const createMessageMapperCached = (type, substitutions, cache) => {
42
42
  cache[type.fullName].map = (0, codegen_1.codegen)(`${type.name}$map`, ['obj', 'extraArgs'], c => {
43
43
  c `const res = {};`;
44
44
  for (const field of type.fieldsArray) {
45
+ field.resolve();
45
46
  c `if(obj.${field.name} !== undefined && obj.${field.name} !== null) {`;
46
47
  {
47
48
  const genMapScalar = (value) => {
48
- field.resolve();
49
49
  const substitution = field.resolvedType && substitutions[field.resolvedType.fullName.slice(1)];
50
50
  if (substitution) {
51
51
  c `${(0, codegen_1.ref)(substitution)}(${value}, ...extraArgs)`;
@@ -58,14 +58,13 @@ const createMessageMapperCached = (type, substitutions, cache) => {
58
58
  c `${value}`;
59
59
  }
60
60
  };
61
- // TODO(dmaretskyi): Support maps.
62
61
  if (field.repeated) {
63
62
  c `res.${field.name} = obj.${field.name}.map(item => `;
64
63
  genMapScalar('item');
65
64
  c `);`;
66
65
  }
67
66
  else if (field.map) {
68
- (0, assert_1.default)(field instanceof pb.MapField);
67
+ (0, node_assert_1.default)(field instanceof pb.MapField);
69
68
  c `res.${field.name} = {};`;
70
69
  c `for(const key of Object.keys(obj.${field.name})) {`;
71
70
  {
@@ -82,10 +81,52 @@ const createMessageMapperCached = (type, substitutions, cache) => {
82
81
  }
83
82
  }
84
83
  c `}`;
84
+ if (!field.getOption('proto3_optional') && !field.repeated && !field.map && !field.partOf) {
85
+ c `else {`;
86
+ {
87
+ if (field.resolvedType instanceof pb.Type) {
88
+ const mapper = createMessageMapperCached(field.resolvedType, substitutions, cache);
89
+ c `res.${field.name} = ${(0, codegen_1.ref)(mapper)}.map({}, extraArgs);`;
90
+ }
91
+ else if (field.resolvedType instanceof pb.Enum) {
92
+ `res.${field.name} = 0;`;
93
+ }
94
+ else {
95
+ c `res.${field.name} = ${getDefaultValue(field.type)};`;
96
+ }
97
+ }
98
+ c `}`;
99
+ }
85
100
  }
86
101
  c `return res;`;
87
102
  });
88
103
  }
89
104
  return cache[type.fullName];
90
105
  };
106
+ const getDefaultValue = (type) => {
107
+ switch (type) {
108
+ case 'double':
109
+ case 'float':
110
+ case 'int32':
111
+ case 'sfixed32':
112
+ case 'uint32':
113
+ case 'sint32':
114
+ case 'fixed32':
115
+ return '0';
116
+ case 'sint64':
117
+ case 'int64':
118
+ case 'uint64':
119
+ case 'fixed64':
120
+ case 'sfixed64':
121
+ return '"0"';
122
+ case 'bool':
123
+ return 'false';
124
+ case 'string':
125
+ return '""';
126
+ case 'bytes':
127
+ return 'new Uint8Array()';
128
+ default:
129
+ throw new Error(`Unknown type: ${type}`);
130
+ }
131
+ };
91
132
  //# sourceMappingURL=create-message-mapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-message-mapper.js","sourceRoot":"","sources":["../../../src/precompiled-mapping/create-message-mapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-message-mapper.js","sourceRoot":"","sources":["../../../src/precompiled-mapping/create-message-mapper.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,8 @@ import pb from 'protobufjs';
2
2
  import type { Schema } from './schema';
3
3
  import { Stream } from './stream';
4
4
  export interface Any {
5
- 'type_url'?: string;
6
- value?: Uint8Array;
5
+ 'type_url': string;
6
+ value: Uint8Array;
7
7
  }
8
8
  export interface ServiceBackend {
9
9
  call(method: string, request: Any): Promise<Any>;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,WAAW,GAAG;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAClD,UAAU,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;CACxD;AAED,qBAAa,iBAAiB,CAAC,CAAC;IAE5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,QAAQ,EAAE,EAAE,CAAC,OAAO,EACpB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC;IAGvC,IAAI,YAAY,IAAK,EAAE,CAAC,OAAO,CAE9B;IAED,YAAY,CAAE,OAAO,EAAE,cAAc,GAAG,OAAO,GAAG,CAAC;IAInD,YAAY,CAAE,QAAQ,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;CAG9C;AAED,qBAAa,OAAO;gBAEhB,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,EAAE,CAAC,OAAO,EACnB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC;CAyCtB;AAED,qBAAa,cAAc,CAAC,CAAC,GAAG,EAAE,CAAE,YAAW,cAAc;IAEzD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAFT,QAAQ,EAAE,EAAE,CAAC,OAAO,EACpB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EACpB,SAAS,EAAE,CAAC;IAGzB,IAAI,CAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAoB3D,UAAU,CAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IAqB1D,OAAO,CAAC,cAAc;CAavB"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,WAAW,GAAG;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAClD,UAAU,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;CACxD;AAED,qBAAa,iBAAiB,CAAC,CAAC;IAE5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,QAAQ,EAAE,EAAE,CAAC,OAAO,EACpB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC;IAGvC,IAAI,YAAY,IAAK,EAAE,CAAC,OAAO,CAE9B;IAED,YAAY,CAAE,OAAO,EAAE,cAAc,GAAG,OAAO,GAAG,CAAC;IAInD,YAAY,CAAE,QAAQ,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;CAG9C;AAED,qBAAa,OAAO;gBAEhB,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,EAAE,CAAC,OAAO,EACnB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC;CAqCtB;AAED,qBAAa,cAAc,CAAC,CAAC,GAAG,EAAE,CAAE,YAAW,cAAc;IAEzD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAFT,QAAQ,EAAE,EAAE,CAAC,OAAO,EACpB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EACpB,SAAS,EAAE,CAAC;IAGzB,IAAI,CAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAoB3D,UAAU,CAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IAkB1D,OAAO,CAAC,cAAc;CAavB"}
@@ -7,7 +7,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.ServiceHandler = exports.Service = exports.ServiceDescriptor = void 0;
10
- const assert_1 = __importDefault(require("assert"));
10
+ const node_assert_1 = __importDefault(require("node:assert"));
11
11
  const stream_1 = require("./stream");
12
12
  class ServiceDescriptor {
13
13
  constructor(_service, _schema) {
@@ -29,9 +29,9 @@ class Service {
29
29
  constructor(backend, service, schema) {
30
30
  for (const method of service.methodsArray) {
31
31
  method.resolve();
32
- (0, assert_1.default)(method.resolvedRequestType);
33
- (0, assert_1.default)(method.resolvedResponseType);
34
- (0, assert_1.default)(!method.requestStream, 'Streaming RPC requests are not supported.');
32
+ (0, node_assert_1.default)(method.resolvedRequestType);
33
+ (0, node_assert_1.default)(method.resolvedResponseType);
34
+ (0, node_assert_1.default)(!method.requestStream, 'Streaming RPC requests are not supported.');
35
35
  // TODO(marik-d): What about primitive types.
36
36
  const requestCodec = schema.tryGetCodecForType(method.resolvedRequestType.fullName);
37
37
  const responseCodec = schema.tryGetCodecForType(method.resolvedResponseType.fullName);
@@ -49,14 +49,11 @@ class Service {
49
49
  else {
50
50
  this[methodName] = (request) => {
51
51
  const encoded = requestCodec.encode(request);
52
- return new stream_1.Stream(({ next, close }) => {
53
- const stream = backend.callStream(method.name, {
54
- value: encoded,
55
- type_url: method.resolvedRequestType.fullName
56
- });
57
- stream.subscribe(data => next(responseCodec.decode(data.value)), close);
58
- return () => stream.close();
52
+ const stream = backend.callStream(method.name, {
53
+ value: encoded,
54
+ type_url: method.resolvedRequestType.fullName
59
55
  });
56
+ return stream_1.Stream.map(stream, data => responseCodec.decode(data.value));
60
57
  };
61
58
  }
62
59
  // Set function name so that is properly named in stack traces.
@@ -73,11 +70,11 @@ class ServiceHandler {
73
70
  }
74
71
  async call(methodName, request) {
75
72
  const { method, requestCodec, responseCodec } = this._getMethodInfo(methodName);
76
- (0, assert_1.default)(!method.requestStream, 'Invalid RPC method call: request streaming mismatch.');
77
- (0, assert_1.default)(!method.responseStream, `Invalid RPC method call: response streaming mismatch. ${methodName}`);
73
+ (0, node_assert_1.default)(!method.requestStream, 'Invalid RPC method call: request streaming mismatch.');
74
+ (0, node_assert_1.default)(!method.responseStream, `Invalid RPC method call: response streaming mismatch. ${methodName}`);
78
75
  const mappedMethodName = mapRpcMethodName(methodName);
79
76
  const handler = this._handlers[mappedMethodName];
80
- (0, assert_1.default)(handler, `Handler is missing: ${mappedMethodName}`);
77
+ (0, node_assert_1.default)(handler, `Handler is missing: ${mappedMethodName}`);
81
78
  const requestDecoded = requestCodec.decode(request.value);
82
79
  const response = await handler.bind(this._handlers)(requestDecoded);
83
80
  const responseEncoded = responseCodec.encode(response);
@@ -88,27 +85,24 @@ class ServiceHandler {
88
85
  }
89
86
  callStream(methodName, request) {
90
87
  const { method, requestCodec, responseCodec } = this._getMethodInfo(methodName);
91
- (0, assert_1.default)(!method.requestStream, 'Invalid RPC method call: request streaming mismatch.');
92
- (0, assert_1.default)(method.responseStream, `Invalid RPC method call: response streaming mismatch., ${methodName}`);
88
+ (0, node_assert_1.default)(!method.requestStream, 'Invalid RPC method call: request streaming mismatch.');
89
+ (0, node_assert_1.default)(method.responseStream, `Invalid RPC method call: response streaming mismatch., ${methodName}`);
93
90
  const mappedMethodName = mapRpcMethodName(methodName);
94
91
  const handler = this._handlers[mappedMethodName];
95
- (0, assert_1.default)(handler, `Handler is missing: ${mappedMethodName}`);
92
+ (0, node_assert_1.default)(handler, `Handler is missing: ${mappedMethodName}`);
96
93
  const requestDecoded = requestCodec.decode(request.value);
97
94
  const responseStream = handler.bind(this._handlers)(requestDecoded);
98
- return new stream_1.Stream(({ next, close }) => {
99
- responseStream.subscribe(data => next({
100
- value: responseCodec.encode(data),
101
- type_url: method.resolvedResponseType.fullName
102
- }), close);
103
- return () => responseStream.close();
104
- });
95
+ return stream_1.Stream.map(responseStream, (data) => ({
96
+ value: responseCodec.encode(data),
97
+ type_url: method.resolvedResponseType.fullName
98
+ }));
105
99
  }
106
100
  _getMethodInfo(methodName) {
107
101
  const method = this._service.methods[methodName];
108
- (0, assert_1.default)(!!method, `Method not found: ${methodName}`);
102
+ (0, node_assert_1.default)(!!method, `Method not found: ${methodName}`);
109
103
  method.resolve();
110
- (0, assert_1.default)(method.resolvedRequestType);
111
- (0, assert_1.default)(method.resolvedResponseType);
104
+ (0, node_assert_1.default)(method.resolvedRequestType);
105
+ (0, node_assert_1.default)(method.resolvedResponseType);
112
106
  const requestCodec = this._schema.tryGetCodecForType(method.resolvedRequestType.fullName);
113
107
  const responseCodec = this._schema.tryGetCodecForType(method.resolvedResponseType.fullName);
114
108
  return { method, requestCodec, responseCodec };
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/service.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,22 @@
1
1
  declare type Producer<T> = (callbacks: {
2
+ /**
3
+ * Advises that the producer is ready to stream the data.
4
+ * Called automatically with the first call to `next`.
5
+ */
6
+ ready: () => void;
7
+ /**
8
+ * Sends a message into the stream.
9
+ */
2
10
  next: (message: T) => void;
11
+ /**
12
+ * Closes the stream.
13
+ * Optional error can be provided.
14
+ */
3
15
  close: (error?: Error) => void;
4
16
  }) => (() => void) | void;
5
17
  export declare type StreamItem<T> = {
18
+ ready: true;
19
+ } | {
6
20
  data: T;
7
21
  } | {
8
22
  closed: true;
@@ -20,17 +34,34 @@ export declare class Stream<T> {
20
34
  * Consumes the entire stream to the end until it closes and returns a promise with the resulting items.
21
35
  */
22
36
  static consume<T>(stream: Stream<T>): Promise<StreamItem<T>[]>;
37
+ /**
38
+ * Maps all data coming through the stream.
39
+ */
40
+ static map<T, U>(source: Stream<T>, map: (data: T) => U): Stream<U>;
23
41
  private _messageHandler?;
24
42
  private _closeHandler?;
43
+ private _readyHandler?;
25
44
  private _isClosed;
26
45
  private _closeError;
27
46
  private _dispose;
47
+ private _readyPromise;
48
+ private _resolveReadyPromise;
49
+ private _isReady;
28
50
  /**
29
51
  * Buffer messages before subscription. Set to null when buffer is no longer needed.
30
52
  */
31
53
  private _buffer;
32
54
  constructor(producer: Producer<T>);
55
+ private _markAsReady;
33
56
  subscribe(onMessage: (msg: T) => void, onClose?: (error?: Error) => void): void;
57
+ /**
58
+ * Resolves when stream is ready.
59
+ */
60
+ waitUntilReady(): Promise<void>;
61
+ /**
62
+ * Registers a callback to be called when stream is ready.
63
+ */
64
+ onReady(onReady: () => void): void;
34
65
  /**
35
66
  * Close the stream and dispose of any resources.
36
67
  */
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AASA,aAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;IAC7B,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAA;IAC1B,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;CAC/B,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAA;AAEzB,oBAAY,UAAU,CAAC,CAAC,IACpB;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,GACX;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAA;AAEnC;;;;;;GAMG;AACH,qBAAa,MAAM,CAAC,CAAC;IACnB;;OAEG;IACH,MAAM,CAAC,OAAO,CAAE,CAAC,EAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAoBhE,OAAO,CAAC,eAAe,CAAC,CAAmB;IAC3C,OAAO,CAAC,aAAa,CAAC,CAA0B;IAEhD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAA2B;IAE3C;;OAEG;IACH,OAAO,CAAC,OAAO,CAAkB;gBAEpB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IA2ClC,SAAS,CAAE,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI;IA0BzE;;OAEG;IACH,KAAK;CAcN"}
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AASA,aAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;IAC7B;;;OAGG;IACH,KAAK,EAAE,MAAM,IAAI,CAAA;IAEjB;;OAEG;IACH,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAA;IAE1B;;;OAGG;IACH,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;CAC/B,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAA;AAEzB,oBAAY,UAAU,CAAC,CAAC,IACpB;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,GACX;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAA;AAEnC;;;;;;GAMG;AACH,qBAAa,MAAM,CAAC,CAAC;IACnB;;OAEG;IACH,MAAM,CAAC,OAAO,CAAE,CAAC,EAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAuBhE;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IASpE,OAAO,CAAC,eAAe,CAAC,CAAmB;IAC3C,OAAO,CAAC,aAAa,CAAC,CAA0B;IAChD,OAAO,CAAC,aAAa,CAAC,CAAa;IAEnC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,oBAAoB,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAS;IAEzB;;OAEG;IACH,OAAO,CAAC,OAAO,CAAkB;gBAEpB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAqDlC,OAAO,CAAC,YAAY;IAQpB,SAAS,CAAE,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI;IA0BzE;;OAEG;IACH,cAAc,IAAK,OAAO,CAAC,IAAI,CAAC;IAIhC;;OAEG;IACH,OAAO,CAAE,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IASnC;;OAEG;IACH,KAAK;CAcN"}
@@ -7,8 +7,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.Stream = void 0;
10
- const assert_1 = __importDefault(require("assert"));
11
10
  const debug_1 = __importDefault(require("debug"));
11
+ const node_assert_1 = __importDefault(require("node:assert"));
12
12
  const log = (0, debug_1.default)('dxos:codec-protobuf:stream');
13
13
  /**
14
14
  * Represents a typed stream of data.
@@ -20,16 +20,24 @@ const log = (0, debug_1.default)('dxos:codec-protobuf:stream');
20
20
  class Stream {
21
21
  constructor(producer) {
22
22
  this._isClosed = false;
23
+ this._isReady = false;
23
24
  /**
24
25
  * Buffer messages before subscription. Set to null when buffer is no longer needed.
25
26
  */
26
27
  this._buffer = [];
28
+ this._readyPromise = new Promise(resolve => {
29
+ this._resolveReadyPromise = resolve;
30
+ });
27
31
  const disposeCallback = producer({
32
+ ready: () => {
33
+ this._markAsReady();
34
+ },
28
35
  next: msg => {
29
36
  if (this._isClosed) {
30
37
  log('Stream is closed, dropping message.');
31
38
  return;
32
39
  }
40
+ this._markAsReady();
33
41
  if (this._messageHandler) {
34
42
  try {
35
43
  this._messageHandler(msg);
@@ -40,7 +48,7 @@ class Stream {
40
48
  }
41
49
  }
42
50
  else {
43
- (0, assert_1.default)(this._buffer);
51
+ (0, node_assert_1.default)(this._buffer);
44
52
  this._buffer.push(msg);
45
53
  }
46
54
  },
@@ -71,6 +79,9 @@ class Stream {
71
79
  static consume(stream) {
72
80
  return new Promise(resolve => {
73
81
  const items = [];
82
+ stream.onReady(() => {
83
+ items.push({ ready: true });
84
+ });
74
85
  stream.subscribe(data => {
75
86
  items.push({ data });
76
87
  }, error => {
@@ -84,10 +95,28 @@ class Stream {
84
95
  });
85
96
  });
86
97
  }
98
+ /**
99
+ * Maps all data coming through the stream.
100
+ */
101
+ static map(source, map) {
102
+ return new Stream(({ ready, next, close }) => {
103
+ source.onReady(ready);
104
+ source.subscribe(data => next(map(data)), close);
105
+ return () => source.close();
106
+ });
107
+ }
108
+ _markAsReady() {
109
+ var _a;
110
+ if (!this._isReady) {
111
+ this._isReady = true;
112
+ (_a = this._readyHandler) === null || _a === void 0 ? void 0 : _a.call(this);
113
+ this._resolveReadyPromise();
114
+ }
115
+ }
87
116
  subscribe(onMessage, onClose) {
88
- (0, assert_1.default)(!this._messageHandler, 'Stream is already subscribed to.');
89
- (0, assert_1.default)(!this._closeHandler, 'Stream is already subscribed to.');
90
- (0, assert_1.default)(this._buffer); // Must be not-null.
117
+ (0, node_assert_1.default)(!this._messageHandler, 'Stream is already subscribed to.');
118
+ (0, node_assert_1.default)(!this._closeHandler, 'Stream is already subscribed to.');
119
+ (0, node_assert_1.default)(this._buffer); // Must be not-null.
91
120
  for (const message of this._buffer) {
92
121
  try {
93
122
  onMessage(message);
@@ -106,6 +135,22 @@ class Stream {
106
135
  this._messageHandler = onMessage;
107
136
  this._closeHandler = onClose;
108
137
  }
138
+ /**
139
+ * Resolves when stream is ready.
140
+ */
141
+ waitUntilReady() {
142
+ return this._readyPromise;
143
+ }
144
+ /**
145
+ * Registers a callback to be called when stream is ready.
146
+ */
147
+ onReady(onReady) {
148
+ (0, node_assert_1.default)(!this._readyHandler, 'Stream already has a handler for the ready event.');
149
+ this._readyHandler = onReady;
150
+ if (this._isReady) {
151
+ onReady();
152
+ }
153
+ }
109
154
  /**
110
155
  * Close the stream and dispose of any resources.
111
156
  */
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}