remult 0.19.2 → 0.20.0-exp.1

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.
Files changed (45) hide show
  1. package/esm/graphql.d.ts +1 -1
  2. package/esm/remult-express.d.ts +1 -1
  3. package/esm/remult-express.js +3 -1
  4. package/esm/remult-fastify.d.ts +1 -1
  5. package/esm/remult-fastify.js +3 -1
  6. package/esm/remult-fresh.d.ts +3 -3
  7. package/esm/remult-fresh.js +4 -2
  8. package/esm/remult-next.d.ts +1 -1
  9. package/esm/remult-next.js +3 -1
  10. package/esm/remult-svletekit.d.ts +3 -0
  11. package/esm/remult-svletekit.js +83 -0
  12. package/esm/server/expressBridge.d.ts +13 -10
  13. package/esm/server/expressBridge.js +57 -52
  14. package/esm/server/index.d.ts +2 -2
  15. package/esm/server/index.js +2 -2
  16. package/esm/src/data-api.d.ts +2 -2
  17. package/esm/src/live-query/SubscriptionServer.js +3 -3
  18. package/esm/src/remult3/RepositoryImplementation.js +2 -5
  19. package/esm/src/shared-tests/db-tests.db-tests.js +8 -0
  20. package/esm/src/tests/testHelper.spec.js +2 -2
  21. package/esm/src/valueConverters.d.ts +1 -0
  22. package/esm/src/valueConverters.js +15 -0
  23. package/graphql.d.ts +1 -1
  24. package/package.json +9 -1
  25. package/remult-express.d.ts +1 -1
  26. package/remult-express.js +3 -1
  27. package/remult-fastify.d.ts +1 -1
  28. package/remult-fastify.js +3 -1
  29. package/remult-fresh.d.ts +3 -3
  30. package/remult-fresh.js +4 -2
  31. package/remult-next.d.ts +1 -1
  32. package/remult-next.js +3 -1
  33. package/remult-svletekit.d.ts +3 -0
  34. package/remult-svletekit.js +136 -0
  35. package/server/expressBridge.d.ts +13 -10
  36. package/server/expressBridge.js +145 -113
  37. package/server/index.d.ts +2 -2
  38. package/server/index.js +2 -2
  39. package/src/data-api.d.ts +2 -2
  40. package/src/live-query/SubscriptionServer.js +3 -3
  41. package/src/remult3/RepositoryImplementation.js +2 -5
  42. package/src/shared-tests/db-tests.db-tests.js +20 -0
  43. package/src/tests/testHelper.spec.js +8 -2
  44. package/src/valueConverters.d.ts +1 -0
  45. package/src/valueConverters.js +15 -0
package/remult-fastify.js CHANGED
@@ -34,7 +34,9 @@ function remultFastify(options) {
34
34
  };
35
35
  return response;
36
36
  }
37
- var api = index_1.createRemultServer(options);
37
+ var api = index_1.createRemultServer(options, {
38
+ buildGenericRequest: function (req) { return req; }
39
+ });
38
40
  var pluginFunction = function (instance, op) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
39
41
  var fastifyRouter;
40
42
  return tslib_1.__generator(this, function (_a) {
package/remult-fresh.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { RemultServerOptions, GenericRequest } from "./server/expressBridge";
1
+ import { RemultServerOptions } from "./server/expressBridge";
2
2
  import { Remult } from "./src/context";
3
- export declare function remultFresh<RequestType extends GenericRequest>(options: RemultServerOptions<RequestType>, response: FreshResponse): RemultFresh;
3
+ export declare function remultFresh(options: RemultServerOptions<FreshRequest>, response: FreshResponse): RemultFresh;
4
4
  export interface RemultFresh {
5
- getRemult(req: GenericRequest): Promise<Remult>;
5
+ getRemult(req: FreshRequest): Promise<Remult>;
6
6
  openApiDoc(options: {
7
7
  title: string;
8
8
  }): any;
package/remult-fresh.js CHANGED
@@ -5,7 +5,9 @@ var tslib_1 = require("tslib");
5
5
  var expressBridge_1 = require("./server/expressBridge");
6
6
  function remultFresh(options, response) {
7
7
  var _this = this;
8
- var server = expressBridge_1.createRemultServerCore(options);
8
+ var server = expressBridge_1.createRemultServerCore(options, {
9
+ buildGenericRequest: function (r) { return r; }
10
+ });
9
11
  return {
10
12
  getRemult: function (r) { return server.getRemult(r); },
11
13
  openApiDoc: function (x) { return server.openApiDoc(x); },
@@ -33,7 +35,7 @@ function remultFresh(options, response) {
33
35
  return [3 /*break*/, 3];
34
36
  case 3:
35
37
  init = {};
36
- return [4 /*yield*/, server.handle(theReq)];
38
+ return [4 /*yield*/, server.handle(req)];
37
39
  case 4:
38
40
  res = _c.sent();
39
41
  if (res) {
package/remult-next.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  import type { GetServerSideProps, NextApiRequest, PreviewData, NextApiHandler } from "next";
3
3
  import type { ParsedUrlQuery } from "querystring";
4
4
  import { RemultServer, RemultServerOptions } from "./server";
5
- export declare function remultNext(options?: RemultServerOptions<NextApiRequest>): RemultServer & NextApiHandler & {
5
+ export declare function remultNext(options?: RemultServerOptions<NextApiRequest>): RemultServer<NextApiRequest> & NextApiHandler & {
6
6
  getServerSideProps<P extends {
7
7
  [key: string]: any;
8
8
  } = {
package/remult-next.js CHANGED
@@ -5,7 +5,9 @@ var tslib_1 = require("tslib");
5
5
  var server_1 = require("./server");
6
6
  function remultNext(options) {
7
7
  var _this = this;
8
- var result = server_1.createRemultServer(options);
8
+ var result = server_1.createRemultServer(options, {
9
+ buildGenericRequest: function (req) { return req; }
10
+ });
9
11
  return Object.assign(function (req, res) { return result.handle(req, res); }, result, {
10
12
  getRemult: function () {
11
13
  var args = [];
@@ -0,0 +1,3 @@
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;
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.remultSveltekit = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var server_1 = require("./server");
6
+ function remultSveltekit(options) {
7
+ var _this = this;
8
+ var result = server_1.createRemultServer(options, {
9
+ buildGenericRequest: function (event) {
10
+ return ({
11
+ url: event.request.url,
12
+ method: event.request.method,
13
+ body: event.locals["_tempJson"],
14
+ on: function (e, do1) {
15
+ if (e === 'close') {
16
+ event.locals["_tempOnClose"] = do1;
17
+ }
18
+ }
19
+ });
20
+ }
21
+ });
22
+ var handler = function (_a) {
23
+ var event = _a.event, resolve = _a.resolve;
24
+ return tslib_1.__awaiter(_this, void 0, void 0, function () {
25
+ var json, error_1, sseResponse_1, response_1, responseFromRemultHandler;
26
+ var _this = this;
27
+ return tslib_1.__generator(this, function (_b) {
28
+ switch (_b.label) {
29
+ case 0:
30
+ if (!event.url.pathname.startsWith(options.rootPath)) return [3 /*break*/, 7];
31
+ json = {};
32
+ _b.label = 1;
33
+ case 1:
34
+ _b.trys.push([1, 4, , 5]);
35
+ if (!(event.request.method == 'POST' || event.request.method == 'PUT')) return [3 /*break*/, 3];
36
+ return [4 /*yield*/, event.request.json()];
37
+ case 2:
38
+ json = _b.sent();
39
+ _b.label = 3;
40
+ case 3: return [3 /*break*/, 5];
41
+ case 4:
42
+ error_1 = _b.sent();
43
+ console.log(error_1);
44
+ return [3 /*break*/, 5];
45
+ case 5:
46
+ sseResponse_1 = undefined;
47
+ event.locals["_tempOnClose"] = function () { };
48
+ response_1 = {
49
+ end: function () { },
50
+ json: function () { },
51
+ status: function () {
52
+ return response_1;
53
+ },
54
+ write: function () { },
55
+ writeHead: function (status, headers) {
56
+ if (status === 200 && headers) {
57
+ var contentType = headers['Content-Type'];
58
+ if (contentType === 'text/event-stream') {
59
+ var messages_1 = [];
60
+ response_1.write = function (x) { return messages_1.push(x); };
61
+ var stream = new ReadableStream({
62
+ start: function (controller) {
63
+ var e_1, _a;
64
+ try {
65
+ 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()) {
66
+ var message = messages_2_1.value;
67
+ controller.enqueue(message);
68
+ }
69
+ }
70
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
71
+ finally {
72
+ try {
73
+ if (messages_2_1 && !messages_2_1.done && (_a = messages_2.return)) _a.call(messages_2);
74
+ }
75
+ finally { if (e_1) throw e_1.error; }
76
+ }
77
+ response_1.write = function (data) {
78
+ controller.enqueue(data);
79
+ };
80
+ },
81
+ cancel: function () {
82
+ response_1.write = function () { };
83
+ event.locals["_tempOnClose"]();
84
+ }
85
+ });
86
+ sseResponse_1 = new Response(stream, { headers: headers });
87
+ }
88
+ }
89
+ }
90
+ };
91
+ event.locals["_tempJson"] = json;
92
+ return [4 /*yield*/, result.handle(event, response_1)];
93
+ case 6:
94
+ responseFromRemultHandler = _b.sent();
95
+ if (sseResponse_1 !== undefined) {
96
+ return [2 /*return*/, sseResponse_1];
97
+ }
98
+ if (responseFromRemultHandler) {
99
+ return [2 /*return*/, new Response(JSON.stringify(responseFromRemultHandler.data), {
100
+ status: responseFromRemultHandler.statusCode
101
+ })];
102
+ }
103
+ _b.label = 7;
104
+ case 7: return [2 /*return*/, new Promise(function (res) {
105
+ result.withRemult(event, undefined, function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
106
+ var _a;
107
+ return tslib_1.__generator(this, function (_b) {
108
+ switch (_b.label) {
109
+ case 0:
110
+ _a = res;
111
+ return [4 /*yield*/, resolve(event)];
112
+ case 1:
113
+ _a.apply(void 0, [_b.sent()]);
114
+ return [2 /*return*/];
115
+ }
116
+ });
117
+ }); });
118
+ })];
119
+ }
120
+ });
121
+ });
122
+ };
123
+ return Object.assign(handler, {
124
+ getRemult: function (req) { return result.getRemult(req); },
125
+ openApiDoc: function (options) { return result.openApiDoc(options); },
126
+ registerRouter: function (x) { return result.registerRouter(x); },
127
+ withRemult: function () {
128
+ var args = [];
129
+ for (var _i = 0; _i < arguments.length; _i++) {
130
+ args[_i] = arguments[_i];
131
+ }
132
+ return result.withRemult.apply(result, tslib_1.__spread(args));
133
+ }
134
+ });
135
+ }
136
+ exports.remultSveltekit = remultSveltekit;
@@ -5,7 +5,7 @@ import { ClassType } from '../classType';
5
5
  import { Repository } from '../src/remult3';
6
6
  import { IdEntity } from '../src/id-entity';
7
7
  import { LiveQueryStorage, SubscriptionServer } from '../src/live-query/SubscriptionServer';
8
- export interface RemultServerOptions<RequestType extends GenericRequest> {
8
+ export interface RemultServerOptions<RequestType> {
9
9
  /**Entities to use for the api */
10
10
  entities?: ClassType<any>[];
11
11
  /**Controller to use for the api */
@@ -41,10 +41,10 @@ export interface RemultServerOptions<RequestType extends GenericRequest> {
41
41
  subscriptionServer?: SubscriptionServer;
42
42
  /** A storage to use to store live queries, relevant mostly for serverless scenarios or larger scales */
43
43
  liveQueryStorage?: LiveQueryStorage;
44
- /** Used to store the relevent request info for re running a live query */
45
- requestSerializer?: {
46
- toJson: (request: RequestType) => any;
47
- fromJson: (request: any) => RequestType;
44
+ /** Used to store the context relevant info for re running a live query */
45
+ contextSerializer?: {
46
+ serialize(remult: Remult): Promise<any>;
47
+ deserialize(json: any, remult: Remult): Promise<void>;
48
48
  };
49
49
  /** Storage to use for backend methods that use queue */
50
50
  queueStorage?: QueueStorage;
@@ -53,21 +53,21 @@ export interface InitRequestOptions {
53
53
  liveQueryStorage: LiveQueryStorage;
54
54
  readonly remult: Remult;
55
55
  }
56
- export declare function createRemultServerCore<RequestType extends GenericRequest = GenericRequest>(options?: RemultServerOptions<RequestType>): RemultServer;
56
+ export declare function createRemultServerCore<RequestType>(options: RemultServerOptions<RequestType>, serverCoreOptions: ServerCoreOptions<RequestType>): RemultServer<RequestType>;
57
57
  export declare type GenericRequestHandler = (req: GenericRequest, res: GenericResponse, next: VoidFunction) => void;
58
58
  export interface ServerHandleResponse {
59
59
  data?: any;
60
60
  statusCode: number;
61
61
  }
62
- export interface RemultServer {
63
- getRemult(req: GenericRequest): Promise<Remult>;
62
+ export interface RemultServer<RequestType> {
63
+ getRemult(req: RequestType): Promise<Remult>;
64
64
  openApiDoc(options: {
65
65
  title: string;
66
66
  version?: string;
67
67
  }): any;
68
68
  registerRouter(r: GenericRouter): void;
69
- handle(req: GenericRequest, gRes?: GenericResponse): Promise<ServerHandleResponse | undefined>;
70
- withRemult(req: GenericRequest, res: GenericResponse, next: VoidFunction): any;
69
+ handle(req: RequestType, gRes?: GenericResponse): Promise<ServerHandleResponse | undefined>;
70
+ withRemult(req: RequestType, res: GenericResponse, next: VoidFunction): any;
71
71
  }
72
72
  export declare type GenericRouter = {
73
73
  route(path: string): SpecificRoute;
@@ -128,3 +128,6 @@ export declare class JobsInQueueEntity extends IdEntity {
128
128
  error: boolean;
129
129
  progress: number;
130
130
  }
131
+ export interface ServerCoreOptions<RequestType> {
132
+ buildGenericRequest(req: RequestType): GenericRequest;
133
+ }