Comparing version 1.7.0 to 1.7.1
/*eslint-disable block-scoped-var, no-redeclare, no-control-regex, no-prototype-builtins*/ | ||
"use strict"; | ||
/// == when build for npm | ||
//var $protobuf = require("protobufjs/minimal"); | ||
/// == when build for web | ||
//var $protobuf = typeof window != "undefined" && window.protobuf; | ||
/// == both? | ||
var $protobuf = | ||
(typeof window != "undefined" && window.protobuf) || | ||
_require("protobufjs/minimal"); | ||
(typeof global != "undefined" && global.protobuf); | ||
function _require(m) { | ||
return require(m); | ||
} | ||
//in react project add this to main.js file: | ||
@@ -18,0 +9,0 @@ //require("protobufjs/src/util/minimal").Long = null; |
@@ -72,3 +72,7 @@ "use strict"; | ||
case 0: | ||
data = meta.requestType.encode(request); | ||
data = meta.requestType.encode(request).finish(); | ||
if (typeof window != "undefined" && window.wx) { | ||
// weixin mini game | ||
data = data.buffer.slice(data.byteOffset, data.byteOffset + data.length); | ||
} | ||
url = "" + this._prefix + meta.path; | ||
@@ -89,3 +93,4 @@ return [4 /*yield*/, fetch(url, { | ||
data2 = _a.sent(); | ||
response = meta.responseType.decode(data2); | ||
response = meta.responseType.decode(new Uint8Array(data2)); | ||
// console.log("response", response); | ||
return [2 /*return*/, response]; | ||
@@ -111,5 +116,4 @@ } | ||
e_1 = _a.sent(); | ||
//log | ||
this._listerner && this._listerner.onError(e_1); | ||
return [3 /*break*/, 3]; | ||
throw e_1; | ||
case 3: return [2 /*return*/]; | ||
@@ -116,0 +120,0 @@ } |
/// <reference types="node" /> | ||
import { ServiceDescriptor, ServiceMeta, ServiceFactory, IProtocolListener } from "../types"; | ||
import { ServiceDescriptor, ServiceMeta, ServiceFactory } from "../types"; | ||
import http = require("http"); | ||
interface ICallListener { | ||
onCallSuccess(path: string, res: any): void; | ||
onCallError(path: string, err: any): void; | ||
} | ||
export declare class HttpServer { | ||
private listener?; | ||
private descriptors; | ||
constructor(listener?: IProtocolListener); | ||
constructor(listener?: ICallListener); | ||
addService<T>(name: string, meta: ServiceMeta, factory: ServiceFactory<T>): void; | ||
@@ -12,3 +16,4 @@ expressHandler: (req: any, res: any) => void; | ||
httpHandler: (req: http.ServerRequest, res: http.ServerResponse) => Promise<void>; | ||
_handle(req: http.ServerRequest, sdescriptor: ServiceDescriptor<any>, serviceName: string, methodName: string): Promise<any>; | ||
_handle(req: http.ServerRequest, sdescriptor: ServiceDescriptor<any>, serviceName: string, methodName: string): Promise<Buffer>; | ||
} | ||
export {}; |
@@ -39,3 +39,3 @@ "use strict"; | ||
function _corsOptions(req, res) { | ||
var requestOrigin = req.headers["Origin"]; | ||
var requestOrigin = req.headers["origin"]; | ||
if (!requestOrigin) { | ||
@@ -46,3 +46,3 @@ res.writeHead(400); | ||
} | ||
if (!req.headers["Access-Control-Request-Method"]) { | ||
if (!req.headers["access-control-request-method"]) { | ||
res.writeHead(400); | ||
@@ -52,3 +52,3 @@ res.end("no header: Access-Control-Request-Method"); | ||
} | ||
var allowHeaders = req.headers["Access-Control-Request-Headers"]; | ||
var allowHeaders = req.headers["access-control-request-headers"]; | ||
if (!allowHeaders) { | ||
@@ -63,6 +63,7 @@ allowHeaders = ["Authentication"]; | ||
}); | ||
res.end(); | ||
} | ||
function _readBody(req) { | ||
return new Promise(function (resolve, reject) { | ||
var buffer; | ||
var buffer = new Buffer(0); | ||
req.on("data", function (chunk) { | ||
@@ -101,3 +102,3 @@ if (!buffer) { | ||
this.httpHandler = function (req, res) { return __awaiter(_this, void 0, void 0, function () { | ||
var sm, serviceName, methodName, sdescriptor, resData, e_1; | ||
var sm, methodName, serviceName, sdescriptor, resData, e_1; | ||
return __generator(this, function (_a) { | ||
@@ -120,2 +121,3 @@ switch (_a.label) { | ||
} | ||
console.log("grpc req.url: ", req.url); | ||
sm = req.url.split("/").filter(function (p) { return p.length > 0; }); | ||
@@ -127,3 +129,4 @@ if (sm.length < 2) { | ||
} | ||
serviceName = sm[0], methodName = sm[1]; | ||
methodName = sm.pop(); | ||
serviceName = sm.pop(); | ||
if (!this.descriptors.has(serviceName)) { | ||
@@ -135,2 +138,3 @@ res.writeHead(404); | ||
sdescriptor = this.descriptors.get(serviceName); | ||
console.log("will handle grpc:", serviceName, methodName); | ||
_a.label = 1; | ||
@@ -142,3 +146,7 @@ case 1: | ||
resData = _a.sent(); | ||
res.writeHead(200, { "Content-Type": "application/grpc+proto" }); | ||
res.writeHead(200, { | ||
"Content-Type": "application/grpc+proto", | ||
"Access-Control-Allow-Origin": req.headers["origin"], | ||
"Access-Control-Allow-Credentials": "true" | ||
}); | ||
res.end(resData); | ||
@@ -148,6 +156,7 @@ return [3 /*break*/, 4]; | ||
e_1 = _a.sent(); | ||
//TODO: log error | ||
this.listener && | ||
this.listener.onCallError(serviceName + "/" + methodName, e_1); | ||
res.writeHead(500); | ||
res.end("grpc error: " + serviceName + "/" + methodName + "\n" + e_1.messsage); | ||
return [2 /*return*/]; | ||
res.end("grpc error: " + serviceName + "/" + methodName + ": " + e_1.messsage); | ||
return [3 /*break*/, 4]; | ||
case 4: return [2 /*return*/]; | ||
@@ -191,4 +200,5 @@ } | ||
grpcRes = _a.sent(); | ||
resData = mdescriptor.responseType.encode(grpcRes); | ||
//TODO: log response | ||
resData = mdescriptor.responseType.encode(grpcRes).finish(); | ||
this.listener && | ||
this.listener.onCallSuccess(serviceName + "/" + methodName, grpcRes); | ||
return [2 /*return*/, resData]; | ||
@@ -195,0 +205,0 @@ } |
@@ -7,2 +7,4 @@ "use strict"; | ||
global.fetch = require("node-fetch"); | ||
// @ts-ignore | ||
global.protobuf = require("protobufjs/minimal"); | ||
var ChannelNode_1 = require("./ChannelNode"); | ||
@@ -9,0 +11,0 @@ exports.Channel = ChannelNode_1.Channel; |
@@ -8,2 +8,4 @@ "use strict"; | ||
global.fetch = require("node-fetch"); | ||
// @ts-ignore | ||
global.protobuf = require("protobufjs/minimal"); | ||
} | ||
@@ -10,0 +12,0 @@ var ChannelWeb_1 = require("./ChannelWeb"); |
{ | ||
"name": "wsgrpc", | ||
"version": "1.7.0", | ||
"version": "1.7.1", | ||
"description": "Using WebSocket as gRPC transport", | ||
@@ -5,0 +5,0 @@ "author": "tsangpo", |
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
301485
7427
10