Compare commits
6 Commits
137a3659b7
...
1.2.16
Author | SHA1 | Date | |
---|---|---|---|
e15ce1f0a0 | |||
f93755604a | |||
f401d58f07 | |||
132390fa35 | |||
04f82b655b | |||
5106424a32 |
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
|
@ -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") +
|
||||
|
@ -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;
|
||||
|
@ -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) {
|
||||
|
@ -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,
|
||||
|
Reference in New Issue
Block a user