6 Commits

6 changed files with 29 additions and 27 deletions

View File

@ -1,6 +1,6 @@
{
"name": "@hibas123/jrpcgen",
"version": "1.2.6",
"version": "1.2.16",
"main": "lib/index.js",
"license": "MIT",
"packageManager": "yarn@3.1.1",
@ -48,4 +48,4 @@
"dependencies": {
"fs-extra": "^10.0.0"
}
}
}

View File

@ -46,15 +46,22 @@ function indexToLineAndCol(src: string, index: number) {
return { line, col };
}
function resolve(base: string, ...parts: string[]) {
if (base.startsWith("http://") || base.startsWith("https://")) {
function resolve(base: string, sub?: string) {
if (sub && (sub.startsWith("http://") || sub.startsWith("https://"))) {
let u = new URL(sub);
return u.href;
} else if (base.startsWith("http://") || base.startsWith("https://")) {
let u = new URL(base);
for (const part of parts) {
u = new URL(part, u);
if (sub) {
if (!sub.endsWith(".jrpc")) {
sub += ".jrpc";
}
u = new URL(sub, u);
}
return u.href;
} else {
return Path.resolve(base, ...parts);
if (!sub) return Path.resolve(base);
else return Path.resolve(Path.dirname(base), sub + ".jrpc");
}
}
@ -151,13 +158,7 @@ async function processFile(
let resolved: Parsed = [];
for (const statement of parsed) {
if (statement.type == "import") {
let res: string;
if (file.startsWith("http://") || file.startsWith("https://")) {
res = resolve(file, statement.path + ".jrpc");
} else {
const base = Path.dirname(file);
res = resolve(base, statement.path + ".jrpc");
}
let res = resolve(file, statement.path);
resolved.push(...((await processFile(ctx, res)) || []));
} else {
resolved.push(statement);

View File

@ -33,7 +33,7 @@ export class TypescriptTarget extends CompileTarget {
}
private generateImport(imports: string, path: string) {
return `import ${imports} from "${path + (this.flavour === "esm" ? ".ts" : "")
return `import ${imports} from "${path + (this.flavour === "esm" ? ".js" : "")
}";\n`;
}
@ -207,7 +207,7 @@ export class TypescriptTarget extends CompileTarget {
this.writeFormattedFile(
"service_client.ts",
this.generateImport(
"{ RequestObject, ResponseObject, ErrorCodes, Logging }",
"{ type RequestObject, type ResponseObject, ErrorCodes, Logging }",
"./service_base"
) +
this.generateImport(" { VerificationError }", "./ts_base") +
@ -304,7 +304,7 @@ export class TypescriptTarget extends CompileTarget {
this.writeFormattedFile(
"service_server.ts",
this.generateImport(
"{ RequestObject, ResponseObject, ErrorCodes, Logging }",
"{ type RequestObject, type ResponseObject, ErrorCodes, Logging }",
"./service_base"
) +
this.generateImport(" { VerificationError }", "./ts_base") +

View File

@ -40,7 +40,7 @@ pub struct JRPCError {
pub struct JRPCResult {
pub jsonrpc: String,
pub id: String,
pub result: Value,
pub result: Option<Value>,
pub error: Option<JRPCError>,
}
@ -76,8 +76,11 @@ impl JRPCClient {
if let Some(result) = result {
if let Some(error) = result.error {
return Err(format!("Error while receiving result: {}", error.message).into());
} else if let Some(result) = result.result {
return Ok(result);
} else {
return Ok(result.result);
return Ok(Value::Null);
// return Err(format!("No result received").into());
}
} else {
return Err("Error while receiving result".into());
@ -133,7 +136,7 @@ impl JRPCSession {
let result = JRPCResult {
jsonrpc: "2.0".to_string(),
id: request_id,
result: Value::Null,
result: None,
error: Some(error),
};
@ -169,7 +172,7 @@ impl JRPCSession {
.send(JRPCResult {
jsonrpc: "2.0".to_string(),
id: request.id.unwrap(),
result,
result: Some(result),
error: None,
})
.await;

View File

@ -1,5 +1,3 @@
import { isGeneratorFunction } from "util/types";
function form_verficiation_error_message(type?: string, field?: string) {
let msg = "Parameter verification failed! ";
if (type && field) {

View File

@ -1,14 +1,14 @@
//@template-ignore
import { VerificationError } from "./ts_base";
//@template-ignore
import { RequestObject, ResponseObject, ErrorCodes, Logging } from "./ts_service_base";
import { type RequestObject, type ResponseObject, ErrorCodes, Logging } from "./ts_service_base";
export class Service<T> {
public name: string = null as any;
public functions = new Set<string>();
constructor() {}
constructor() { }
}
type ISendMessageCB = (data: any, catchedErr?: Error) => void;
@ -37,7 +37,7 @@ class Session<T> {
this.ctx = ctx || {};
}
send(data: any, catchedErr?:Error) {
send(data: any, catchedErr?: Error) {
Logging.log("SERVER: Sending Message", data)
this._send(data, catchedErr);
}
@ -95,7 +95,7 @@ class Session<T> {
}
let result = await (service as any)["_" + fncName](data.params, this.ctx);
if(data.id) { //Request
if (data.id) { //Request
this.send({
jsonrpc: "2.0",
id: data.id,