remult 0.20.0-exp.14 → 0.20.0-exp.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/graphql.js +1 -0
- package/esm/remult-express.d.ts +5 -2
- package/esm/remult-express.js +0 -1
- package/esm/remult-fastify.d.ts +5 -2
- package/esm/remult-fastify.js +5 -2
- package/esm/remult-fresh.d.ts +2 -7
- package/esm/remult-next.d.ts +11 -2
- package/esm/remult-next.js +79 -5
- package/esm/remult-sveltekit.d.ts +3 -2
- package/esm/remult-sveltekit.js +0 -2
- package/esm/server/expressBridge.d.ts +6 -4
- package/esm/server/expressBridge.js +4 -8
- package/esm/server/index.d.ts +1 -1
- package/graphql.js +1 -0
- package/package.json +1 -1
- package/remult-express.d.ts +5 -2
- package/remult-express.js +0 -1
- package/remult-fastify.d.ts +5 -2
- package/remult-fastify.js +5 -2
- package/remult-fresh.d.ts +2 -7
- package/remult-next.d.ts +11 -2
- package/remult-next.js +100 -36
- package/remult-sveltekit.d.ts +3 -2
- package/remult-sveltekit.js +0 -8
- package/server/expressBridge.d.ts +6 -4
- package/server/expressBridge.js +31 -33
- package/server/index.d.ts +1 -1
package/esm/graphql.js
CHANGED
|
@@ -79,6 +79,7 @@ export function remultGraphql(api) {
|
|
|
79
79
|
query += q;
|
|
80
80
|
root[key] = async ({ options, filter }, req, a) => {
|
|
81
81
|
return new Promise(async (res, error) => {
|
|
82
|
+
//TODO - consider this with remult usage
|
|
82
83
|
api.withRemult(req, undefined, async () => {
|
|
83
84
|
let remult = await api.getRemult(req);
|
|
84
85
|
let repo = remult.repo(e);
|
package/esm/remult-express.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import * as express from 'express';
|
|
2
|
-
import {
|
|
2
|
+
import { RemultServerCore, RemultServerOptions } from './server/expressBridge';
|
|
3
3
|
export declare function remultExpress(options?: RemultServerOptions<express.Request> & {
|
|
4
4
|
bodyParser?: boolean;
|
|
5
5
|
bodySizeLimit?: string;
|
|
6
|
-
}):
|
|
6
|
+
}): RemultExpressServer;
|
|
7
|
+
export declare type RemultExpressServer = express.RequestHandler & RemultServerCore<express.Request> & {
|
|
8
|
+
withRemult: (req: express.Request, res: express.Response, next: VoidFunction) => void;
|
|
9
|
+
};
|
package/esm/remult-express.js
CHANGED
|
@@ -20,7 +20,6 @@ export function remultExpress(options) {
|
|
|
20
20
|
return Object.assign(app, {
|
|
21
21
|
getRemult: (req) => server.getRemult(req),
|
|
22
22
|
openApiDoc: (options) => server.openApiDoc(options),
|
|
23
|
-
registerRouter: x => server.registerRouter(x),
|
|
24
23
|
withRemult: (...args) => server.withRemult(...args)
|
|
25
24
|
});
|
|
26
25
|
}
|
package/esm/remult-fastify.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import type { FastifyPluginCallback, FastifyRequest } from 'fastify';
|
|
2
|
-
import {
|
|
3
|
-
export declare function remultFastify(options: RemultServerOptions<FastifyRequest>):
|
|
2
|
+
import { RemultServerOptions, RemultServerCore } from './server/expressBridge';
|
|
3
|
+
export declare function remultFastify(options: RemultServerOptions<FastifyRequest>): RemultFastifyServer;
|
|
4
|
+
export declare type RemultFastifyServer = FastifyPluginCallback & RemultServerCore<FastifyRequest> & {
|
|
5
|
+
withRemult<T>(req: FastifyRequest, what: () => Promise<T>): Promise<T>;
|
|
6
|
+
};
|
package/esm/remult-fastify.js
CHANGED
|
@@ -61,7 +61,10 @@ export function remultFastify(options) {
|
|
|
61
61
|
return Object.assign(pluginFunction, {
|
|
62
62
|
getRemult: x => api.getRemult(x),
|
|
63
63
|
openApiDoc: x => api.openApiDoc(x),
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
withRemult: (req, what) => new Promise((resolve) => {
|
|
65
|
+
return api.withRemult(req, undefined, () => {
|
|
66
|
+
what().then(resolve);
|
|
67
|
+
});
|
|
68
|
+
})
|
|
66
69
|
});
|
|
67
70
|
}
|
package/esm/remult-fresh.d.ts
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
import { RemultServerOptions } from "./server/expressBridge";
|
|
2
|
-
import { Remult } from "./src/context";
|
|
1
|
+
import { RemultServerOptions, RemultServerCore } from "./server/expressBridge";
|
|
3
2
|
export declare function remultFresh(options: RemultServerOptions<FreshRequest>, response: FreshResponse): RemultFresh;
|
|
4
|
-
export interface RemultFresh {
|
|
5
|
-
getRemult(req: FreshRequest): Promise<Remult>;
|
|
6
|
-
openApiDoc(options: {
|
|
7
|
-
title: string;
|
|
8
|
-
}): any;
|
|
3
|
+
export interface RemultFresh extends RemultServerCore<FreshRequest> {
|
|
9
4
|
handle(req: FreshRequest, ctx: FreshContext): Promise<any>;
|
|
10
5
|
}
|
|
11
6
|
export interface FreshRequest {
|
package/esm/remult-next.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import type { GetServerSideProps, NextApiRequest, PreviewData, NextApiHandler } from "next";
|
|
3
3
|
import type { ParsedUrlQuery } from "querystring";
|
|
4
|
-
import {
|
|
5
|
-
export declare function remultNext(options?: RemultServerOptions<NextApiRequest>):
|
|
4
|
+
import { RemultServerCore, RemultServerOptions } from "./server";
|
|
5
|
+
export declare function remultNext(options?: RemultServerOptions<NextApiRequest>): RemultNextServer;
|
|
6
|
+
export declare type RemultNextServer = RemultServerCore<NextApiRequest> & NextApiHandler & {
|
|
6
7
|
getServerSideProps<P extends {
|
|
7
8
|
[key: string]: any;
|
|
8
9
|
} = {
|
|
@@ -14,3 +15,11 @@ export declare function remultNext(options?: RemultServerOptions<NextApiRequest>
|
|
|
14
15
|
*/
|
|
15
16
|
handle<T>(handler: NextApiHandler<T>): NextApiHandler<T>;
|
|
16
17
|
};
|
|
18
|
+
export declare function remultNextApp(options?: RemultServerOptions<Request>): RemultNextAppServer;
|
|
19
|
+
export declare type RemultNextAppServer = RemultServerCore<Request> & {
|
|
20
|
+
GET: (req: Request) => Promise<Response>;
|
|
21
|
+
PUT: (req: Request) => Promise<Response>;
|
|
22
|
+
POST: (req: Request) => Promise<Response>;
|
|
23
|
+
DELETE: (req: Request) => Promise<Response>;
|
|
24
|
+
withRemult<T>(what: () => Promise<T>): Promise<T>;
|
|
25
|
+
};
|
package/esm/remult-next.js
CHANGED
|
@@ -5,11 +5,8 @@ export function remultNext(options) {
|
|
|
5
5
|
getRequestBody: async (req) => req.body
|
|
6
6
|
});
|
|
7
7
|
return Object.assign((req, res) => result.handle(req, res).then(() => { }), result, {
|
|
8
|
-
getRemult: (
|
|
9
|
-
|
|
10
|
-
openApiDoc: (...args) => result.openApiDoc(...args),
|
|
11
|
-
registerRouter: (...args) => result.registerRouter(...args),
|
|
12
|
-
withRemult: (...args) => result.withRemult(...args),
|
|
8
|
+
getRemult: (req) => result.getRemult(req),
|
|
9
|
+
openApiDoc: (arg) => result.openApiDoc(arg),
|
|
13
10
|
}, {
|
|
14
11
|
getServerSideProps: (getServerPropsFunction) => {
|
|
15
12
|
return (context) => {
|
|
@@ -38,3 +35,80 @@ export function remultNext(options) {
|
|
|
38
35
|
}
|
|
39
36
|
});
|
|
40
37
|
}
|
|
38
|
+
const encoder = new TextEncoder();
|
|
39
|
+
export function remultNextApp(options) {
|
|
40
|
+
let result = createRemultServer(options, {
|
|
41
|
+
getRequestBody: req => req.json(),
|
|
42
|
+
buildGenericRequestInfo: (req) => ({
|
|
43
|
+
url: req.url,
|
|
44
|
+
method: req.method,
|
|
45
|
+
on: (e, do1) => {
|
|
46
|
+
if (e === "close") {
|
|
47
|
+
req["_tempOnClose"] = do1;
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
}),
|
|
51
|
+
});
|
|
52
|
+
const handler = async (req) => {
|
|
53
|
+
{
|
|
54
|
+
let sseResponse = undefined;
|
|
55
|
+
req["_tempOnClose"] = () => { };
|
|
56
|
+
const response = {
|
|
57
|
+
end: () => { },
|
|
58
|
+
json: () => { },
|
|
59
|
+
status: () => {
|
|
60
|
+
return response;
|
|
61
|
+
},
|
|
62
|
+
write: () => { },
|
|
63
|
+
writeHead: (status, headers) => {
|
|
64
|
+
if (status === 200 && headers) {
|
|
65
|
+
const contentType = headers["Content-Type"];
|
|
66
|
+
if (contentType === "text/event-stream") {
|
|
67
|
+
const messages = [];
|
|
68
|
+
response.write = (x) => messages.push(x);
|
|
69
|
+
const stream = new ReadableStream({
|
|
70
|
+
start: (controller) => {
|
|
71
|
+
for (const message of messages) {
|
|
72
|
+
controller.enqueue(encoder.encode(message));
|
|
73
|
+
}
|
|
74
|
+
response.write = (data) => {
|
|
75
|
+
controller.enqueue(encoder.encode(data));
|
|
76
|
+
};
|
|
77
|
+
},
|
|
78
|
+
cancel: () => {
|
|
79
|
+
response.write = () => { };
|
|
80
|
+
req["_tempOnClose"]();
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
sseResponse = new Response(stream, { headers });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
const responseFromRemultHandler = await result.handle(req, response);
|
|
89
|
+
if (sseResponse !== undefined) {
|
|
90
|
+
return sseResponse;
|
|
91
|
+
}
|
|
92
|
+
if (responseFromRemultHandler) {
|
|
93
|
+
return new Response(JSON.stringify(responseFromRemultHandler.data), {
|
|
94
|
+
status: responseFromRemultHandler.statusCode,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
return {
|
|
100
|
+
getRemult: (req) => result.getRemult(req),
|
|
101
|
+
openApiDoc: (options) => result.openApiDoc(options),
|
|
102
|
+
GET: handler,
|
|
103
|
+
POST: handler,
|
|
104
|
+
PUT: handler,
|
|
105
|
+
DELETE: handler,
|
|
106
|
+
withRemult: (what) => {
|
|
107
|
+
return new Promise((resolve) => {
|
|
108
|
+
return result.withRemult({}, undefined, () => {
|
|
109
|
+
what().then(resolve);
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { RequestEvent, Handle } from '@sveltejs/kit';
|
|
2
|
-
import {
|
|
3
|
-
export declare function remultSveltekit(options?: RemultServerOptions<RequestEvent>):
|
|
2
|
+
import { RemultServerOptions, RemultServerCore } from './server';
|
|
3
|
+
export declare function remultSveltekit(options?: RemultServerOptions<RequestEvent>): RemultSveltekitServer;
|
|
4
|
+
export declare type RemultSveltekitServer = RemultServerCore<RequestEvent> & Handle;
|
package/esm/remult-sveltekit.js
CHANGED
|
@@ -67,7 +67,5 @@ export function remultSveltekit(options) {
|
|
|
67
67
|
return Object.assign(handler, {
|
|
68
68
|
getRemult: (req) => result.getRemult(req),
|
|
69
69
|
openApiDoc: (options) => result.openApiDoc(options),
|
|
70
|
-
registerRouter: x => result.registerRouter(x),
|
|
71
|
-
withRemult: (...args) => result.withRemult(...args)
|
|
72
70
|
});
|
|
73
71
|
}
|
|
@@ -59,15 +59,17 @@ export interface ServerHandleResponse {
|
|
|
59
59
|
data?: any;
|
|
60
60
|
statusCode: number;
|
|
61
61
|
}
|
|
62
|
-
export interface RemultServer<RequestType> {
|
|
63
|
-
getRemult(req: RequestType): Promise<Remult>;
|
|
62
|
+
export interface RemultServer<RequestType> extends RemultServerCore<RequestType> {
|
|
64
63
|
withRemult(req: RequestType, res: GenericResponse, next: VoidFunction): any;
|
|
64
|
+
registerRouter(r: GenericRouter): void;
|
|
65
|
+
handle(req: RequestType, gRes?: GenericResponse): Promise<ServerHandleResponse | undefined>;
|
|
66
|
+
}
|
|
67
|
+
export interface RemultServerCore<RequestType> {
|
|
68
|
+
getRemult(req: RequestType): Promise<Remult>;
|
|
65
69
|
openApiDoc(options: {
|
|
66
70
|
title: string;
|
|
67
71
|
version?: string;
|
|
68
72
|
}): any;
|
|
69
|
-
registerRouter(r: GenericRouter): void;
|
|
70
|
-
handle(req: RequestType, gRes?: GenericResponse): Promise<ServerHandleResponse | undefined>;
|
|
71
73
|
}
|
|
72
74
|
export declare type GenericRouter = {
|
|
73
75
|
route(path: string): SpecificRoute;
|
|
@@ -134,6 +134,9 @@ export class RemultServerImplementation {
|
|
|
134
134
|
}
|
|
135
135
|
throw new Error("Couldn't find entity " + entityKey);
|
|
136
136
|
};
|
|
137
|
+
this.withRemult = (req, res, next) => {
|
|
138
|
+
this.process(async () => { next(); })(req, res);
|
|
139
|
+
};
|
|
137
140
|
this.registeredRouter = false;
|
|
138
141
|
this.hasQueue = false;
|
|
139
142
|
/* internal */
|
|
@@ -144,9 +147,6 @@ export class RemultServerImplementation {
|
|
|
144
147
|
this.subscriptionServer = options.subscriptionServer;
|
|
145
148
|
}
|
|
146
149
|
;
|
|
147
|
-
withRemult(req, res, next) {
|
|
148
|
-
this.process(async () => { next(); })(req, res);
|
|
149
|
-
}
|
|
150
150
|
getRouteImpl() {
|
|
151
151
|
if (!this.routeImpl) {
|
|
152
152
|
this.routeImpl = new RouteImplementation(this.coreOptions);
|
|
@@ -237,7 +237,7 @@ export class RemultServerImplementation {
|
|
|
237
237
|
//@ts-ignore
|
|
238
238
|
.get(this.process(async (c, req, res, orig) => dataApiFactory(c).get(res, orig.params.id)))
|
|
239
239
|
//@ts-ignore
|
|
240
|
-
.put(this.process(async (c, req, res, orig) => dataApiFactory(c).put(res,
|
|
240
|
+
.put(this.process(async (c, req, res, reqInfo, _, orig) => dataApiFactory(c).put(res, reqInfo.params.id, await this.coreOptions.getRequestBody(orig))))
|
|
241
241
|
//@ts-ignore
|
|
242
242
|
.delete(this.process(async (c, req, res, orig) => dataApiFactory(c).delete(res, orig.params.id)));
|
|
243
243
|
}
|
|
@@ -264,10 +264,6 @@ export class RemultServerImplementation {
|
|
|
264
264
|
let myReq = new ExpressRequestBridgeToDataApiRequest(genReq);
|
|
265
265
|
let myRes = new ExpressResponseBridgeToDataApiResponse(origRes, req);
|
|
266
266
|
await this.runWithRemult(async (remult) => {
|
|
267
|
-
remult.liveQueryPublisher = new LiveQueryPublisher(() => remult.subscriptionServer, () => remult.liveQueryStorage, this.runWithSerializedJsonContextData);
|
|
268
|
-
remult.dataProvider = (await this.dataProvider);
|
|
269
|
-
remult.subscriptionServer = this.subscriptionServer;
|
|
270
|
-
remult.liveQueryStorage = this.liveQueryStorage;
|
|
271
267
|
if (req) {
|
|
272
268
|
let user;
|
|
273
269
|
if (this.options.getUser)
|
package/esm/server/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RemultServer, RemultServerOptions, ServerCoreOptions } from './expressBridge';
|
|
2
|
-
export { queuedJobInfo, QueueStorage, GenericRequestInfo, GenericRequestHandler, GenericResponse, GenericRouter, RemultServerOptions, SpecificRoute, RemultServer, InitRequestOptions } from './expressBridge';
|
|
2
|
+
export { queuedJobInfo, QueueStorage, GenericRequestInfo, GenericRequestHandler, RemultServerCore, GenericResponse, GenericRouter, RemultServerOptions, SpecificRoute, RemultServer, InitRequestOptions } from './expressBridge';
|
|
3
3
|
export { JsonEntityFileStorage, JsonFileDataProvider } from './JsonEntityFileStorage';
|
|
4
4
|
export { DataProviderLiveQueryStorage } from '../live-query/data-provider-live-query-storage';
|
|
5
5
|
export { SseSubscriptionServer } from '../SseSubscriptionServer';
|
package/graphql.js
CHANGED
|
@@ -150,6 +150,7 @@ function remultGraphql(api) {
|
|
|
150
150
|
return [2 /*return*/, new Promise(function (res, error) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
151
151
|
var _this = this;
|
|
152
152
|
return tslib_1.__generator(this, function (_a) {
|
|
153
|
+
//TODO - consider this with remult usage
|
|
153
154
|
api.withRemult(req, undefined, function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
154
155
|
var remult, repo, dApi, result, err;
|
|
155
156
|
return tslib_1.__generator(this, function (_a) {
|
package/package.json
CHANGED
package/remult-express.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import * as express from 'express';
|
|
2
|
-
import {
|
|
2
|
+
import { RemultServerCore, RemultServerOptions } from './server/expressBridge';
|
|
3
3
|
export declare function remultExpress(options?: RemultServerOptions<express.Request> & {
|
|
4
4
|
bodyParser?: boolean;
|
|
5
5
|
bodySizeLimit?: string;
|
|
6
|
-
}):
|
|
6
|
+
}): RemultExpressServer;
|
|
7
|
+
export declare type RemultExpressServer = express.RequestHandler & RemultServerCore<express.Request> & {
|
|
8
|
+
withRemult: (req: express.Request, res: express.Response, next: VoidFunction) => void;
|
|
9
|
+
};
|
package/remult-express.js
CHANGED
|
@@ -27,7 +27,6 @@ function remultExpress(options) {
|
|
|
27
27
|
return Object.assign(app, {
|
|
28
28
|
getRemult: function (req) { return server.getRemult(req); },
|
|
29
29
|
openApiDoc: function (options) { return server.openApiDoc(options); },
|
|
30
|
-
registerRouter: function (x) { return server.registerRouter(x); },
|
|
31
30
|
withRemult: function () {
|
|
32
31
|
var args = [];
|
|
33
32
|
for (var _i = 0; _i < arguments.length; _i++) {
|
package/remult-fastify.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import type { FastifyPluginCallback, FastifyRequest } from 'fastify';
|
|
2
|
-
import {
|
|
3
|
-
export declare function remultFastify(options: RemultServerOptions<FastifyRequest>):
|
|
2
|
+
import { RemultServerOptions, RemultServerCore } from './server/expressBridge';
|
|
3
|
+
export declare function remultFastify(options: RemultServerOptions<FastifyRequest>): RemultFastifyServer;
|
|
4
|
+
export declare type RemultFastifyServer = FastifyPluginCallback & RemultServerCore<FastifyRequest> & {
|
|
5
|
+
withRemult<T>(req: FastifyRequest, what: () => Promise<T>): Promise<T>;
|
|
6
|
+
};
|
package/remult-fastify.js
CHANGED
|
@@ -71,8 +71,11 @@ function remultFastify(options) {
|
|
|
71
71
|
return Object.assign(pluginFunction, {
|
|
72
72
|
getRemult: function (x) { return api.getRemult(x); },
|
|
73
73
|
openApiDoc: function (x) { return api.openApiDoc(x); },
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
withRemult: function (req, what) { return new Promise(function (resolve) {
|
|
75
|
+
return api.withRemult(req, undefined, function () {
|
|
76
|
+
what().then(resolve);
|
|
77
|
+
});
|
|
78
|
+
}); }
|
|
76
79
|
});
|
|
77
80
|
}
|
|
78
81
|
exports.remultFastify = remultFastify;
|
package/remult-fresh.d.ts
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
import { RemultServerOptions } from "./server/expressBridge";
|
|
2
|
-
import { Remult } from "./src/context";
|
|
1
|
+
import { RemultServerOptions, RemultServerCore } from "./server/expressBridge";
|
|
3
2
|
export declare function remultFresh(options: RemultServerOptions<FreshRequest>, response: FreshResponse): RemultFresh;
|
|
4
|
-
export interface RemultFresh {
|
|
5
|
-
getRemult(req: FreshRequest): Promise<Remult>;
|
|
6
|
-
openApiDoc(options: {
|
|
7
|
-
title: string;
|
|
8
|
-
}): any;
|
|
3
|
+
export interface RemultFresh extends RemultServerCore<FreshRequest> {
|
|
9
4
|
handle(req: FreshRequest, ctx: FreshContext): Promise<any>;
|
|
10
5
|
}
|
|
11
6
|
export interface FreshRequest {
|
package/remult-next.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import type { GetServerSideProps, NextApiRequest, PreviewData, NextApiHandler } from "next";
|
|
3
3
|
import type { ParsedUrlQuery } from "querystring";
|
|
4
|
-
import {
|
|
5
|
-
export declare function remultNext(options?: RemultServerOptions<NextApiRequest>):
|
|
4
|
+
import { RemultServerCore, RemultServerOptions } from "./server";
|
|
5
|
+
export declare function remultNext(options?: RemultServerOptions<NextApiRequest>): RemultNextServer;
|
|
6
|
+
export declare type RemultNextServer = RemultServerCore<NextApiRequest> & NextApiHandler & {
|
|
6
7
|
getServerSideProps<P extends {
|
|
7
8
|
[key: string]: any;
|
|
8
9
|
} = {
|
|
@@ -14,3 +15,11 @@ export declare function remultNext(options?: RemultServerOptions<NextApiRequest>
|
|
|
14
15
|
*/
|
|
15
16
|
handle<T>(handler: NextApiHandler<T>): NextApiHandler<T>;
|
|
16
17
|
};
|
|
18
|
+
export declare function remultNextApp(options?: RemultServerOptions<Request>): RemultNextAppServer;
|
|
19
|
+
export declare type RemultNextAppServer = RemultServerCore<Request> & {
|
|
20
|
+
GET: (req: Request) => Promise<Response>;
|
|
21
|
+
PUT: (req: Request) => Promise<Response>;
|
|
22
|
+
POST: (req: Request) => Promise<Response>;
|
|
23
|
+
DELETE: (req: Request) => Promise<Response>;
|
|
24
|
+
withRemult<T>(what: () => Promise<T>): Promise<T>;
|
|
25
|
+
};
|
package/remult-next.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.remultNext = void 0;
|
|
3
|
+
exports.remultNextApp = exports.remultNext = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var server_1 = require("./server");
|
|
6
6
|
function remultNext(options) {
|
|
@@ -12,41 +12,8 @@ function remultNext(options) {
|
|
|
12
12
|
}); }); }
|
|
13
13
|
});
|
|
14
14
|
return Object.assign(function (req, res) { return result.handle(req, res).then(function () { }); }, result, {
|
|
15
|
-
getRemult: function () {
|
|
16
|
-
|
|
17
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
18
|
-
args[_i] = arguments[_i];
|
|
19
|
-
}
|
|
20
|
-
return result.getRemult.apply(result, tslib_1.__spread(args));
|
|
21
|
-
},
|
|
22
|
-
handle: function () {
|
|
23
|
-
var args = [];
|
|
24
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
25
|
-
args[_i] = arguments[_i];
|
|
26
|
-
}
|
|
27
|
-
return result.handle.apply(result, tslib_1.__spread(args));
|
|
28
|
-
},
|
|
29
|
-
openApiDoc: function () {
|
|
30
|
-
var args = [];
|
|
31
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
32
|
-
args[_i] = arguments[_i];
|
|
33
|
-
}
|
|
34
|
-
return result.openApiDoc.apply(result, tslib_1.__spread(args));
|
|
35
|
-
},
|
|
36
|
-
registerRouter: function () {
|
|
37
|
-
var args = [];
|
|
38
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
39
|
-
args[_i] = arguments[_i];
|
|
40
|
-
}
|
|
41
|
-
return result.registerRouter.apply(result, tslib_1.__spread(args));
|
|
42
|
-
},
|
|
43
|
-
withRemult: function () {
|
|
44
|
-
var args = [];
|
|
45
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
46
|
-
args[_i] = arguments[_i];
|
|
47
|
-
}
|
|
48
|
-
return result.withRemult.apply(result, tslib_1.__spread(args));
|
|
49
|
-
},
|
|
15
|
+
getRemult: function (req) { return result.getRemult(req); },
|
|
16
|
+
openApiDoc: function (arg) { return result.openApiDoc(arg); },
|
|
50
17
|
}, {
|
|
51
18
|
getServerSideProps: function (getServerPropsFunction) {
|
|
52
19
|
return function (context) {
|
|
@@ -105,3 +72,100 @@ function remultNext(options) {
|
|
|
105
72
|
});
|
|
106
73
|
}
|
|
107
74
|
exports.remultNext = remultNext;
|
|
75
|
+
var encoder = new TextEncoder();
|
|
76
|
+
function remultNextApp(options) {
|
|
77
|
+
var _this = this;
|
|
78
|
+
var result = server_1.createRemultServer(options, {
|
|
79
|
+
getRequestBody: function (req) { return req.json(); },
|
|
80
|
+
buildGenericRequestInfo: function (req) { return ({
|
|
81
|
+
url: req.url,
|
|
82
|
+
method: req.method,
|
|
83
|
+
on: function (e, do1) {
|
|
84
|
+
if (e === "close") {
|
|
85
|
+
req["_tempOnClose"] = do1;
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
}); },
|
|
89
|
+
});
|
|
90
|
+
var handler = function (req) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
91
|
+
var sseResponse_1, response_1, responseFromRemultHandler;
|
|
92
|
+
return tslib_1.__generator(this, function (_a) {
|
|
93
|
+
switch (_a.label) {
|
|
94
|
+
case 0:
|
|
95
|
+
sseResponse_1 = undefined;
|
|
96
|
+
req["_tempOnClose"] = function () { };
|
|
97
|
+
response_1 = {
|
|
98
|
+
end: function () { },
|
|
99
|
+
json: function () { },
|
|
100
|
+
status: function () {
|
|
101
|
+
return response_1;
|
|
102
|
+
},
|
|
103
|
+
write: function () { },
|
|
104
|
+
writeHead: function (status, headers) {
|
|
105
|
+
if (status === 200 && headers) {
|
|
106
|
+
var contentType = headers["Content-Type"];
|
|
107
|
+
if (contentType === "text/event-stream") {
|
|
108
|
+
var messages_1 = [];
|
|
109
|
+
response_1.write = function (x) { return messages_1.push(x); };
|
|
110
|
+
var stream = new ReadableStream({
|
|
111
|
+
start: function (controller) {
|
|
112
|
+
var e_2, _a;
|
|
113
|
+
try {
|
|
114
|
+
for (var messages_2 = tslib_1.__values(messages_1), messages_2_1 = messages_2.next(); !messages_2_1.done; messages_2_1 = messages_2.next()) {
|
|
115
|
+
var message = messages_2_1.value;
|
|
116
|
+
controller.enqueue(encoder.encode(message));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
120
|
+
finally {
|
|
121
|
+
try {
|
|
122
|
+
if (messages_2_1 && !messages_2_1.done && (_a = messages_2.return)) _a.call(messages_2);
|
|
123
|
+
}
|
|
124
|
+
finally { if (e_2) throw e_2.error; }
|
|
125
|
+
}
|
|
126
|
+
response_1.write = function (data) {
|
|
127
|
+
controller.enqueue(encoder.encode(data));
|
|
128
|
+
};
|
|
129
|
+
},
|
|
130
|
+
cancel: function () {
|
|
131
|
+
response_1.write = function () { };
|
|
132
|
+
req["_tempOnClose"]();
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
sseResponse_1 = new Response(stream, { headers: headers });
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
return [4 /*yield*/, result.handle(req, response_1)];
|
|
141
|
+
case 1:
|
|
142
|
+
responseFromRemultHandler = _a.sent();
|
|
143
|
+
if (sseResponse_1 !== undefined) {
|
|
144
|
+
return [2 /*return*/, sseResponse_1];
|
|
145
|
+
}
|
|
146
|
+
if (responseFromRemultHandler) {
|
|
147
|
+
return [2 /*return*/, new Response(JSON.stringify(responseFromRemultHandler.data), {
|
|
148
|
+
status: responseFromRemultHandler.statusCode,
|
|
149
|
+
})];
|
|
150
|
+
}
|
|
151
|
+
return [2 /*return*/];
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}); };
|
|
155
|
+
return {
|
|
156
|
+
getRemult: function (req) { return result.getRemult(req); },
|
|
157
|
+
openApiDoc: function (options) { return result.openApiDoc(options); },
|
|
158
|
+
GET: handler,
|
|
159
|
+
POST: handler,
|
|
160
|
+
PUT: handler,
|
|
161
|
+
DELETE: handler,
|
|
162
|
+
withRemult: function (what) {
|
|
163
|
+
return new Promise(function (resolve) {
|
|
164
|
+
return result.withRemult({}, undefined, function () {
|
|
165
|
+
what().then(resolve);
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
exports.remultNextApp = remultNextApp;
|
package/remult-sveltekit.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { RequestEvent, Handle } from '@sveltejs/kit';
|
|
2
|
-
import {
|
|
3
|
-
export declare function remultSveltekit(options?: RemultServerOptions<RequestEvent>):
|
|
2
|
+
import { RemultServerOptions, RemultServerCore } from './server';
|
|
3
|
+
export declare function remultSveltekit(options?: RemultServerOptions<RequestEvent>): RemultSveltekitServer;
|
|
4
|
+
export declare type RemultSveltekitServer = RemultServerCore<RequestEvent> & Handle;
|
package/remult-sveltekit.js
CHANGED
|
@@ -106,14 +106,6 @@ function remultSveltekit(options) {
|
|
|
106
106
|
return Object.assign(handler, {
|
|
107
107
|
getRemult: function (req) { return result.getRemult(req); },
|
|
108
108
|
openApiDoc: function (options) { return result.openApiDoc(options); },
|
|
109
|
-
registerRouter: function (x) { return result.registerRouter(x); },
|
|
110
|
-
withRemult: function () {
|
|
111
|
-
var args = [];
|
|
112
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
113
|
-
args[_i] = arguments[_i];
|
|
114
|
-
}
|
|
115
|
-
return result.withRemult.apply(result, tslib_1.__spread(args));
|
|
116
|
-
}
|
|
117
109
|
});
|
|
118
110
|
}
|
|
119
111
|
exports.remultSveltekit = remultSveltekit;
|
|
@@ -59,15 +59,17 @@ export interface ServerHandleResponse {
|
|
|
59
59
|
data?: any;
|
|
60
60
|
statusCode: number;
|
|
61
61
|
}
|
|
62
|
-
export interface RemultServer<RequestType> {
|
|
63
|
-
getRemult(req: RequestType): Promise<Remult>;
|
|
62
|
+
export interface RemultServer<RequestType> extends RemultServerCore<RequestType> {
|
|
64
63
|
withRemult(req: RequestType, res: GenericResponse, next: VoidFunction): any;
|
|
64
|
+
registerRouter(r: GenericRouter): void;
|
|
65
|
+
handle(req: RequestType, gRes?: GenericResponse): Promise<ServerHandleResponse | undefined>;
|
|
66
|
+
}
|
|
67
|
+
export interface RemultServerCore<RequestType> {
|
|
68
|
+
getRemult(req: RequestType): Promise<Remult>;
|
|
65
69
|
openApiDoc(options: {
|
|
66
70
|
title: string;
|
|
67
71
|
version?: string;
|
|
68
72
|
}): any;
|
|
69
|
-
registerRouter(r: GenericRouter): void;
|
|
70
|
-
handle(req: RequestType, gRes?: GenericResponse): Promise<ServerHandleResponse | undefined>;
|
|
71
73
|
}
|
|
72
74
|
export declare type GenericRouter = {
|
|
73
75
|
route(path: string): SpecificRoute;
|
package/server/expressBridge.js
CHANGED
|
@@ -243,6 +243,12 @@ var RemultServerImplementation = /** @class */ (function () {
|
|
|
243
243
|
}
|
|
244
244
|
});
|
|
245
245
|
}); };
|
|
246
|
+
this.withRemult = function (req, res, next) {
|
|
247
|
+
_this.process(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
|
|
248
|
+
next();
|
|
249
|
+
return [2 /*return*/];
|
|
250
|
+
}); }); })(req, res);
|
|
251
|
+
};
|
|
246
252
|
this.registeredRouter = false;
|
|
247
253
|
this.hasQueue = false;
|
|
248
254
|
/* internal */
|
|
@@ -253,13 +259,6 @@ var RemultServerImplementation = /** @class */ (function () {
|
|
|
253
259
|
this.subscriptionServer = options.subscriptionServer;
|
|
254
260
|
}
|
|
255
261
|
;
|
|
256
|
-
RemultServerImplementation.prototype.withRemult = function (req, res, next) {
|
|
257
|
-
var _this = this;
|
|
258
|
-
this.process(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
|
|
259
|
-
next();
|
|
260
|
-
return [2 /*return*/];
|
|
261
|
-
}); }); })(req, res);
|
|
262
|
-
};
|
|
263
262
|
RemultServerImplementation.prototype.getRouteImpl = function () {
|
|
264
263
|
if (!this.routeImpl) {
|
|
265
264
|
this.routeImpl = new RouteImplementation(this.coreOptions);
|
|
@@ -453,8 +452,14 @@ var RemultServerImplementation = /** @class */ (function () {
|
|
|
453
452
|
return [2 /*return*/, dataApiFactory(c).get(res, orig.params.id)];
|
|
454
453
|
}); }); }))
|
|
455
454
|
//@ts-ignore
|
|
456
|
-
.put(this.process(function (c, req, res, orig) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (
|
|
457
|
-
|
|
455
|
+
.put(this.process(function (c, req, res, reqInfo, _, orig) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var _a, _b, _c; return tslib_1.__generator(this, function (_d) {
|
|
456
|
+
switch (_d.label) {
|
|
457
|
+
case 0:
|
|
458
|
+
_b = (_a = dataApiFactory(c)).put;
|
|
459
|
+
_c = [res, reqInfo.params.id];
|
|
460
|
+
return [4 /*yield*/, this.coreOptions.getRequestBody(orig)];
|
|
461
|
+
case 1: return [2 /*return*/, _b.apply(_a, _c.concat([_d.sent()]))];
|
|
462
|
+
}
|
|
458
463
|
}); }); }))
|
|
459
464
|
//@ts-ignore
|
|
460
465
|
.delete(this.process(function (c, req, res, orig) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
|
|
@@ -515,33 +520,26 @@ var RemultServerImplementation = /** @class */ (function () {
|
|
|
515
520
|
myReq = new ExpressRequestBridgeToDataApiRequest(genReq);
|
|
516
521
|
myRes = new ExpressResponseBridgeToDataApiResponse(origRes, req);
|
|
517
522
|
return [4 /*yield*/, this.runWithRemult(function (remult) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
518
|
-
var
|
|
519
|
-
return tslib_1.__generator(this, function (
|
|
520
|
-
switch (
|
|
523
|
+
var user;
|
|
524
|
+
return tslib_1.__generator(this, function (_a) {
|
|
525
|
+
switch (_a.label) {
|
|
521
526
|
case 0:
|
|
522
|
-
|
|
523
|
-
_a = remult;
|
|
524
|
-
return [4 /*yield*/, this.dataProvider];
|
|
525
|
-
case 1:
|
|
526
|
-
_a.dataProvider = (_b.sent());
|
|
527
|
-
remult.subscriptionServer = this.subscriptionServer;
|
|
528
|
-
remult.liveQueryStorage = this.liveQueryStorage;
|
|
529
|
-
if (!req) return [3 /*break*/, 6];
|
|
527
|
+
if (!req) return [3 /*break*/, 5];
|
|
530
528
|
user = void 0;
|
|
531
|
-
if (!this.options.getUser) return [3 /*break*/,
|
|
529
|
+
if (!this.options.getUser) return [3 /*break*/, 2];
|
|
532
530
|
return [4 /*yield*/, this.options.getUser(req)];
|
|
531
|
+
case 1:
|
|
532
|
+
user = _a.sent();
|
|
533
|
+
return [3 /*break*/, 3];
|
|
533
534
|
case 2:
|
|
534
|
-
user = _b.sent();
|
|
535
|
-
return [3 /*break*/, 4];
|
|
536
|
-
case 3:
|
|
537
535
|
user = req['user'];
|
|
538
536
|
if (!user)
|
|
539
537
|
user = req['auth'];
|
|
540
|
-
|
|
541
|
-
case
|
|
538
|
+
_a.label = 3;
|
|
539
|
+
case 3:
|
|
542
540
|
if (user)
|
|
543
541
|
remult.user = (user);
|
|
544
|
-
if (!this.options.initRequest) return [3 /*break*/,
|
|
542
|
+
if (!this.options.initRequest) return [3 /*break*/, 5];
|
|
545
543
|
return [4 /*yield*/, this.options.initRequest(req, {
|
|
546
544
|
remult: remult,
|
|
547
545
|
get liveQueryStorage() {
|
|
@@ -551,12 +549,12 @@ var RemultServerImplementation = /** @class */ (function () {
|
|
|
551
549
|
remult.liveQueryStorage = value;
|
|
552
550
|
}
|
|
553
551
|
})];
|
|
554
|
-
case
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
case
|
|
558
|
-
case
|
|
559
|
-
|
|
552
|
+
case 4:
|
|
553
|
+
_a.sent();
|
|
554
|
+
_a.label = 5;
|
|
555
|
+
case 5: return [4 /*yield*/, what(remult, myReq, myRes, genReq, origRes, req)];
|
|
556
|
+
case 6:
|
|
557
|
+
_a.sent();
|
|
560
558
|
return [2 /*return*/];
|
|
561
559
|
}
|
|
562
560
|
});
|
package/server/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RemultServer, RemultServerOptions, ServerCoreOptions } from './expressBridge';
|
|
2
|
-
export { queuedJobInfo, QueueStorage, GenericRequestInfo, GenericRequestHandler, GenericResponse, GenericRouter, RemultServerOptions, SpecificRoute, RemultServer, InitRequestOptions } from './expressBridge';
|
|
2
|
+
export { queuedJobInfo, QueueStorage, GenericRequestInfo, GenericRequestHandler, RemultServerCore, GenericResponse, GenericRouter, RemultServerOptions, SpecificRoute, RemultServer, InitRequestOptions } from './expressBridge';
|
|
3
3
|
export { JsonEntityFileStorage, JsonFileDataProvider } from './JsonEntityFileStorage';
|
|
4
4
|
export { DataProviderLiveQueryStorage } from '../live-query/data-provider-live-query-storage';
|
|
5
5
|
export { SseSubscriptionServer } from '../SseSubscriptionServer';
|