@bigtest/effection-express
Advanced tools
Comparing version 0.4.1-c637833 to 0.4.1-d0c4ea8
/// <reference types="node" /> | ||
import { Operation } from 'effection'; | ||
import * as actualExpress from 'express'; | ||
import { RequestHandler } from 'express'; | ||
import * as ws from 'ws'; | ||
import * as ews from 'express-ws'; | ||
import { Express as ActualExpress, RequestHandler } from 'express'; | ||
import { Server } from 'http'; | ||
declare type OperationRequestHandler = (req: actualExpress.Request, res: actualExpress.Response) => Operation<void>; | ||
declare type WsOperationRequestHandler = (ws: ws, req: actualExpress.Request) => Operation<void>; | ||
export declare class Express { | ||
private inner; | ||
private server?; | ||
constructor(inner: ews.Application); | ||
constructor(inner: ActualExpress); | ||
use(...handlers: RequestHandler[]): void; | ||
useOperation(handler: OperationRequestHandler): Operation<void>; | ||
ws(path: string, handler: WsOperationRequestHandler): Operation<void>; | ||
listen(port: number): Operation<Server>; | ||
@@ -21,2 +14,1 @@ join(): Operation<void>; | ||
export declare function express(): Express; | ||
export {}; |
@@ -5,3 +5,2 @@ "use strict"; | ||
const actualExpress = require("express"); | ||
const ews = require("express-ws"); | ||
const events_1 = require("@effection/events"); | ||
@@ -16,23 +15,2 @@ const effection_2 = require("@bigtest/effection"); | ||
} | ||
*useOperation(handler) { | ||
yield (controls) => { | ||
this.inner.use((req, res) => { | ||
controls.spawn(handler(req, res)); | ||
}); | ||
}; | ||
} | ||
*ws(path, handler) { | ||
yield (controls) => { | ||
this.inner.ws(path, (socket, req) => { | ||
controls.spawn(function* () { | ||
yield effection_2.ensure(() => socket.close()); | ||
yield effection_1.spawn(handler(socket, req)); | ||
let [{ reason, code }] = yield events_1.once(socket, 'close'); | ||
if (code !== 1000) { | ||
throw new Error(`websocket client closed connection unexpectedly: [${code}] ${reason}`); | ||
} | ||
}); | ||
}); | ||
}; | ||
} | ||
*listen(port) { | ||
@@ -56,5 +34,5 @@ let server = this.server = this.inner.listen(port); | ||
function express() { | ||
return new Express(ews(actualExpress()).app); | ||
return new Express(actualExpress()); | ||
} | ||
exports.express = express; | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "@bigtest/effection-express", | ||
"version": "0.4.1-c637833", | ||
"version": "0.4.1-d0c4ea8", | ||
"description": "Makes it easy to use Express from Effection", | ||
@@ -34,6 +34,4 @@ "main": "dist/index.js", | ||
"@effection/events": "^0.6.1", | ||
"@types/express-ws": "^3.0.0", | ||
"@types/node": "^13.13.4", | ||
"express": "^4.17.1", | ||
"express-ws": "^4.0.0" | ||
"express": "^4.17.1" | ||
}, | ||
@@ -40,0 +38,0 @@ "volta": { |
Sorry, the diff of this file is not supported yet
4
3609
47
- Removed@types/express-ws@^3.0.0
- Removedexpress-ws@^4.0.0
- Removed@types/body-parser@1.19.5(transitive)
- Removed@types/connect@3.4.38(transitive)
- Removed@types/express@5.0.0(transitive)
- Removed@types/express-serve-static-core@5.0.6(transitive)
- Removed@types/express-ws@3.0.5(transitive)
- Removed@types/http-errors@2.0.4(transitive)
- Removed@types/mime@1.3.5(transitive)
- Removed@types/qs@6.9.18(transitive)
- Removed@types/range-parser@1.2.7(transitive)
- Removed@types/send@0.17.4(transitive)
- Removed@types/serve-static@1.15.7(transitive)
- Removed@types/ws@8.5.14(transitive)
- Removedasync-limiter@1.0.1(transitive)
- Removedexpress-ws@4.0.0(transitive)
- Removedws@5.2.4(transitive)