@dxos/codec-protobuf 2.33.9-dev.7d11f506 → 2.33.9-dev.9bbef4e2
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 +39 -0
- package/dist/{index.js → browser.js} +3983 -197
- package/dist/src/encoding.d.ts +4 -0
- package/dist/src/encoding.d.ts.map +1 -0
- package/dist/src/encoding.js +35 -0
- package/dist/src/encoding.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mapping.d.ts +3 -0
- package/dist/src/mapping.d.ts.map +1 -1
- package/dist/src/mapping.js +53 -1
- package/dist/src/mapping.js.map +1 -1
- package/dist/src/precompiled-mapping/create-message-mapper.js +45 -4
- package/dist/src/precompiled-mapping/create-message-mapper.js.map +1 -1
- package/dist/src/service.d.ts +2 -2
- package/dist/src/service.d.ts.map +1 -1
- package/dist/src/service.js +21 -27
- package/dist/src/service.js.map +1 -1
- package/dist/src/stream.d.ts +31 -0
- package/dist/src/stream.d.ts.map +1 -1
- package/dist/src/stream.js +50 -5
- package/dist/src/stream.js.map +1 -1
- package/dist/src/stream.test.js +3 -1
- package/dist/src/stream.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -7
- package/src/encoding.ts +9 -0
- package/src/index.ts +2 -0
- package/src/mapping.ts +60 -0
- package/src/precompiled-mapping/create-message-mapper.ts +41 -3
- package/src/service.ts +12 -19
- package/src/stream.test.ts +3 -1
- package/src/stream.ts +72 -1
|
@@ -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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -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';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -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);
|
package/dist/src/index.js.map
CHANGED
|
@@ -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"}
|
package/dist/src/mapping.d.ts
CHANGED
|
@@ -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":"
|
|
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"}
|
package/dist/src/mapping.js
CHANGED
|
@@ -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
|
package/dist/src/mapping.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapping.js","sourceRoot":"","sources":["../../src/mapping.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE
|
|
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
|
|
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,
|
|
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":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,
|
|
1
|
+
{"version":3,"file":"create-message-mapper.js","sourceRoot":"","sources":["../../../src/precompiled-mapping/create-message-mapper.ts"],"names":[],"mappings":"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"}
|
package/dist/src/service.d.ts
CHANGED
|
@@ -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'
|
|
6
|
-
value
|
|
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,
|
|
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"}
|
package/dist/src/service.js
CHANGED
|
@@ -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
|
|
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,
|
|
33
|
-
(0,
|
|
34
|
-
(0,
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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,
|
|
77
|
-
(0,
|
|
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,
|
|
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,
|
|
92
|
-
(0,
|
|
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,
|
|
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
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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,
|
|
102
|
+
(0, node_assert_1.default)(!!method, `Method not found: ${methodName}`);
|
|
109
103
|
method.resolve();
|
|
110
|
-
(0,
|
|
111
|
-
(0,
|
|
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 };
|
package/dist/src/service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/service.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/service.ts"],"names":[],"mappings":"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"}
|
package/dist/src/stream.d.ts
CHANGED
|
@@ -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
|
*/
|
package/dist/src/stream.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/src/stream.js
CHANGED
|
@@ -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,
|
|
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,
|
|
89
|
-
(0,
|
|
90
|
-
(0,
|
|
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
|
*/
|
package/dist/src/stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}
|