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 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);
@@ -1,6 +1,9 @@
1
1
  import * as express from 'express';
2
- import { RemultServer, RemultServerOptions } from './server/expressBridge';
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
- }): express.RequestHandler & RemultServer<express.Request>;
6
+ }): RemultExpressServer;
7
+ export declare type RemultExpressServer = express.RequestHandler & RemultServerCore<express.Request> & {
8
+ withRemult: (req: express.Request, res: express.Response, next: VoidFunction) => void;
9
+ };
@@ -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
  }
@@ -1,3 +1,6 @@
1
1
  import type { FastifyPluginCallback, FastifyRequest } from 'fastify';
2
- import { RemultServer, RemultServerOptions } from './server/expressBridge';
3
- export declare function remultFastify(options: RemultServerOptions<FastifyRequest>): FastifyPluginCallback & RemultServer<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
+ };
@@ -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
- handle: (req, res) => api.handle(req, res),
65
- withRemult: (req, res, next) => api.withRemult(req, res, next)
64
+ withRemult: (req, what) => new Promise((resolve) => {
65
+ return api.withRemult(req, undefined, () => {
66
+ what().then(resolve);
67
+ });
68
+ })
66
69
  });
67
70
  }
@@ -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 {
@@ -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 { RemultServer, RemultServerOptions } from "./server";
5
- export declare function remultNext(options?: RemultServerOptions<NextApiRequest>): RemultServer<NextApiRequest> & NextApiHandler & {
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
+ };
@@ -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: (...args) => result.getRemult(...args),
9
- handle: (...args) => result.handle(...args),
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 { RemultServer, RemultServerOptions } from './server';
3
- export declare function remultSveltekit(options?: RemultServerOptions<RequestEvent>): RemultServer<RequestEvent> & Handle;
2
+ import { RemultServerOptions, RemultServerCore } from './server';
3
+ export declare function remultSveltekit(options?: RemultServerOptions<RequestEvent>): RemultSveltekitServer;
4
+ export declare type RemultSveltekitServer = RemultServerCore<RequestEvent> & Handle;
@@ -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, orig.params.id, orig.body)))
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)
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "remult",
3
- "version": "0.20.0-exp.14",
3
+ "version": "0.20.0-exp.16",
4
4
  "description": "A CRUD framework for full-stack TypeScript",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -1,6 +1,9 @@
1
1
  import * as express from 'express';
2
- import { RemultServer, RemultServerOptions } from './server/expressBridge';
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
- }): express.RequestHandler & RemultServer<express.Request>;
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++) {
@@ -1,3 +1,6 @@
1
1
  import type { FastifyPluginCallback, FastifyRequest } from 'fastify';
2
- import { RemultServer, RemultServerOptions } from './server/expressBridge';
3
- export declare function remultFastify(options: RemultServerOptions<FastifyRequest>): FastifyPluginCallback & RemultServer<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
- handle: function (req, res) { return api.handle(req, res); },
75
- withRemult: function (req, res, next) { return api.withRemult(req, res, next); }
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 { RemultServer, RemultServerOptions } from "./server";
5
- export declare function remultNext(options?: RemultServerOptions<NextApiRequest>): RemultServer<NextApiRequest> & NextApiHandler & {
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
- var args = [];
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;
@@ -1,3 +1,4 @@
1
1
  import type { RequestEvent, Handle } from '@sveltejs/kit';
2
- import { RemultServer, RemultServerOptions } from './server';
3
- export declare function remultSveltekit(options?: RemultServerOptions<RequestEvent>): RemultServer<RequestEvent> & Handle;
2
+ import { RemultServerOptions, RemultServerCore } from './server';
3
+ export declare function remultSveltekit(options?: RemultServerOptions<RequestEvent>): RemultSveltekitServer;
4
+ export declare type RemultSveltekitServer = RemultServerCore<RequestEvent> & Handle;
@@ -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;
@@ -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 (_a) {
457
- return [2 /*return*/, dataApiFactory(c).put(res, orig.params.id, orig.body)];
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 _a, user;
519
- return tslib_1.__generator(this, function (_b) {
520
- switch (_b.label) {
523
+ var user;
524
+ return tslib_1.__generator(this, function (_a) {
525
+ switch (_a.label) {
521
526
  case 0:
522
- remult.liveQueryPublisher = new SubscriptionServer_1.LiveQueryPublisher(function () { return remult.subscriptionServer; }, function () { return remult.liveQueryStorage; }, this.runWithSerializedJsonContextData);
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*/, 3];
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
- _b.label = 4;
541
- case 4:
538
+ _a.label = 3;
539
+ case 3:
542
540
  if (user)
543
541
  remult.user = (user);
544
- if (!this.options.initRequest) return [3 /*break*/, 6];
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 5:
555
- _b.sent();
556
- _b.label = 6;
557
- case 6: return [4 /*yield*/, what(remult, myReq, myRes, genReq, origRes, req)];
558
- case 7:
559
- _b.sent();
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';