-
Notifications
You must be signed in to change notification settings - Fork 1.4k
/
comp_typescript.js
122 lines (122 loc) · 4.84 KB
/
comp_typescript.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
"use strict";
// test currently consists only of not throwing
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
exports.__esModule = true;
exports.AwesomeMessage = exports.AwesomeSubMessage = exports.AwesomeEnum = exports.Hello = void 0;
var __1 = require("..");
// Reflection
var root = __1.Root.fromJSON({
nested: {
Hello: {
fields: {
value: {
rule: "required",
type: "string",
id: 1
}
}
}
}
});
var HelloReflected = root.lookupType("Hello");
HelloReflected.create({ value: "hi" });
// Custom classes
var Hello = /** @class */ (function (_super) {
__extends(Hello, _super);
function Hello() {
return _super !== null && _super.apply(this, arguments) || this;
}
Hello.prototype.foo = function () {
this.value = "hi";
return this;
};
return Hello;
}(__1.Message));
exports.Hello = Hello;
root.lookupType("Hello").ctor = Hello;
Hello.create({ value: "hi" });
var helloMessage = new Hello({ value: "hi" });
var helloBuffer = Hello.encode(helloMessage.foo()).finish();
var helloDecoded = Hello.decode(helloBuffer);
// Decorators
require("reflect-metadata");
var AwesomeEnum;
(function (AwesomeEnum) {
AwesomeEnum[AwesomeEnum["ONE"] = 1] = "ONE";
AwesomeEnum[AwesomeEnum["TWO"] = 2] = "TWO";
})(AwesomeEnum = exports.AwesomeEnum || (exports.AwesomeEnum = {}));
var AwesomeSubMessage = /** @class */ (function (_super) {
__extends(AwesomeSubMessage, _super);
function AwesomeSubMessage() {
return _super !== null && _super.apply(this, arguments) || this;
}
__decorate([
__1.Field.d(1, "string"),
__metadata("design:type", String)
], AwesomeSubMessage.prototype, "awesomeString");
__decorate([
__1.MapField.d(2, "string", "string"),
__metadata("design:type", Object)
], AwesomeSubMessage.prototype, "awesomeMapString");
__decorate([
__1.MapField.d(3, "string", AwesomeEnum),
__metadata("design:type", Object)
], AwesomeSubMessage.prototype, "awesomeMapEnum");
__decorate([
__1.MapField.d(4, "string", AwesomeSubMessage),
__metadata("design:type", Object)
], AwesomeSubMessage.prototype, "awesomeMapMessage");
return AwesomeSubMessage;
}(__1.Message));
exports.AwesomeSubMessage = AwesomeSubMessage;
var AwesomeMessage = /** @class */ (function (_super) {
__extends(AwesomeMessage, _super);
function AwesomeMessage() {
return _super !== null && _super.apply(this, arguments) || this;
}
__decorate([
__1.Field.d(1, "string", "optional", "awesome default string"),
__metadata("design:type", String)
], AwesomeMessage.prototype, "awesomeField");
__decorate([
__1.Field.d(2, AwesomeSubMessage),
__metadata("design:type", AwesomeSubMessage)
], AwesomeMessage.prototype, "awesomeSubMessage");
__decorate([
__1.Field.d(3, AwesomeEnum, "optional", AwesomeEnum.ONE),
__metadata("design:type", Number)
], AwesomeMessage.prototype, "awesomeEnum");
__decorate([
__1.OneOf.d("awesomeSubMessage", "awesomeEnum"),
__metadata("design:type", String)
], AwesomeMessage.prototype, "which");
AwesomeMessage = __decorate([
__1.Type.d("SuperAwesomeMessage")
], AwesomeMessage);
return AwesomeMessage;
}(__1.Message));
exports.AwesomeMessage = AwesomeMessage;
var awesomeMessage = new AwesomeMessage({ awesomeField: "hi" });
var awesomeBuffer = AwesomeMessage.encode(awesomeMessage).finish();
var awesomeDecoded = AwesomeMessage.decode(awesomeBuffer);