Add MessagePack support to Typescript. C# Is still unsupported
This commit is contained in:
25
lib/jrpc.js
25
lib/jrpc.js
@ -9876,7 +9876,7 @@ function parse(tokens, file) {
|
||||
// src/ir.ts
|
||||
var import_debug = __toESM(require_src());
|
||||
var log = (0, import_debug.default)("app");
|
||||
var builtin = ["number", "string", "boolean"];
|
||||
var BUILTIN = ["number", "string", "boolean"];
|
||||
var IRError = class extends Error {
|
||||
constructor(statement, message) {
|
||||
super("Error building IR: " + message);
|
||||
@ -9885,6 +9885,7 @@ var IRError = class extends Error {
|
||||
};
|
||||
function get_ir(parsed) {
|
||||
log("Generatie IR from parse output");
|
||||
let builtin = [...BUILTIN];
|
||||
let defined = [];
|
||||
let types = [];
|
||||
let enums = [];
|
||||
@ -9936,18 +9937,18 @@ function get_ir(parsed) {
|
||||
throw new IRError(statement, `Type ${statement.name} already defined!`);
|
||||
}
|
||||
let last = -1;
|
||||
let values = statement.values.map((valueS) => {
|
||||
let values = statement.values.map((values2) => {
|
||||
let value = last + 1;
|
||||
if (valueS.value) {
|
||||
if (valueS.value <= last) {
|
||||
if (values2.value) {
|
||||
if (values2.value <= last) {
|
||||
throw new IRError(statement, "Enum value must be larger than the previous one!");
|
||||
} else {
|
||||
value = valueS.value;
|
||||
value = values2.value;
|
||||
}
|
||||
}
|
||||
last = value;
|
||||
return {
|
||||
name: valueS.name,
|
||||
name: values2.name,
|
||||
value
|
||||
};
|
||||
});
|
||||
@ -10045,6 +10046,9 @@ function get_ir(parsed) {
|
||||
]);
|
||||
} else if (statement.type == "define") {
|
||||
options[statement.key] = statement.value;
|
||||
if (statement.key == "use_messagepack" && statement.value == "true") {
|
||||
builtin.push("bytes");
|
||||
}
|
||||
} else {
|
||||
throw new IRError(statement, "Invalid statement!");
|
||||
}
|
||||
@ -10118,7 +10122,8 @@ var conversion = {
|
||||
boolean: "boolean",
|
||||
number: "number",
|
||||
string: "string",
|
||||
void: "void"
|
||||
void: "void",
|
||||
bytes: "Uint8Array"
|
||||
};
|
||||
function toJSType(type) {
|
||||
return conversion[type] || type;
|
||||
@ -10435,7 +10440,8 @@ var conversion2 = {
|
||||
boolean: "bool",
|
||||
number: "double",
|
||||
string: "string",
|
||||
void: "void"
|
||||
void: "void",
|
||||
bytes: ""
|
||||
};
|
||||
function toCSharpType(type) {
|
||||
return conversion2[type] || type;
|
||||
@ -10446,6 +10452,9 @@ var CSharpTarget = class extends CompileTarget {
|
||||
return this.options.csharp_namespace || "JRPC";
|
||||
}
|
||||
start() {
|
||||
if (this.options.use_messagepack == true) {
|
||||
throw new Error("C# has no support for MessagePack yet!");
|
||||
}
|
||||
this.writeFile(this.namespace + ".csproj", this.getTemplate("CSharp/CSharp.csproj"));
|
||||
const fixNS = (input) => input.replace("__NAMESPACE__", this.namespace);
|
||||
const copyClass = (name) => this.writeFile(name + ".cs", fixNS(this.getTemplate(`CSharp/${name}.cs`)));
|
||||
|
Reference in New Issue
Block a user