remult 0.25.5-exp.2 → 0.25.5-exp.21

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 (46) hide show
  1. package/esm/graphql.js +87 -64
  2. package/esm/index.js +1 -0
  3. package/esm/package.json +1 -1
  4. package/esm/remult-fastify.js +3 -0
  5. package/esm/remult-hapi.js +3 -0
  6. package/esm/remult-knex/index.js +22 -5
  7. package/esm/remult-next.js +8 -0
  8. package/esm/remult-nuxt.js +3 -0
  9. package/esm/remult-sveltekit.js +63 -42
  10. package/esm/server/expressBridge.js +25 -0
  11. package/esm/server/get-remult-admin-html.js +3 -0
  12. package/esm/server/remult-admin.js +92 -0
  13. package/esm/src/remult-static.js +2 -1
  14. package/esm/src/remult3/Fields.js +7 -1
  15. package/esm/src/remult3/RepositoryImplementation.js +9 -5
  16. package/esm/src/remult3/remult3.js +47 -12
  17. package/esm/src/server-action.js +16 -11
  18. package/esm/src/sort.js +1 -1
  19. package/graphql.js +154 -99
  20. package/index.d.ts +1 -0
  21. package/index.js +3 -1
  22. package/internals.d.ts +1 -1
  23. package/package.json +1 -1
  24. package/remult-fastify.js +3 -0
  25. package/remult-hapi.js +3 -0
  26. package/remult-knex/index.js +73 -49
  27. package/remult-next.js +8 -0
  28. package/remult-nuxt.js +3 -0
  29. package/remult-sveltekit.d.ts +5 -1
  30. package/remult-sveltekit.js +85 -56
  31. package/server/expressBridge.d.ts +8 -0
  32. package/server/expressBridge.js +39 -0
  33. package/server/get-remult-admin-html.d.ts +1 -0
  34. package/server/get-remult-admin-html.js +7 -0
  35. package/server/remult-admin.d.ts +36 -0
  36. package/server/remult-admin.js +121 -0
  37. package/src/remult-static.js +2 -1
  38. package/src/remult3/Fields.d.ts +1 -0
  39. package/src/remult3/Fields.js +7 -1
  40. package/src/remult3/RepositoryImplementation.d.ts +9 -2
  41. package/src/remult3/RepositoryImplementation.js +9 -5
  42. package/src/remult3/remult3.js +47 -12
  43. package/src/remult3/repository-internals.d.ts +6 -0
  44. package/src/server-action.d.ts +2 -2
  45. package/src/server-action.js +16 -11
  46. package/src/sort.js +1 -1
@@ -23,11 +23,11 @@ var KnexDataProvider = /** @class */ (function () {
23
23
  return r.knex;
24
24
  };
25
25
  KnexDataProvider.prototype.getEntityDataProvider = function (entity) {
26
- var e_1, _a;
27
- if (!supportsJson(this.knex))
26
+ var e_1, _a, e_2, _b;
27
+ if (!supportsJsonLoadingAndSaving(this.knex))
28
28
  try {
29
- for (var _b = tslib_1.__values(entity.fields.toArray()), _c = _b.next(); !_c.done; _c = _b.next()) {
30
- var f = _c.value;
29
+ for (var _c = tslib_1.__values(entity.fields.toArray()), _d = _c.next(); !_d.done; _d = _c.next()) {
30
+ var f = _d.value;
31
31
  if (f.valueConverter.fieldTypeInDb === 'json') {
32
32
  //@ts-ignore
33
33
  f.valueConverter = tslib_1.__assign(tslib_1.__assign({}, f.valueConverter), { toDb: valueConverters_js_1.ValueConverters.JsonString.toDb, fromDb: valueConverters_js_1.ValueConverters.JsonString.fromDb });
@@ -37,10 +37,28 @@ var KnexDataProvider = /** @class */ (function () {
37
37
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
38
38
  finally {
39
39
  try {
40
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
40
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
41
41
  }
42
42
  finally { if (e_1) throw e_1.error; }
43
43
  }
44
+ else if (this.knex.client.config.client === 'mysql2') {
45
+ try {
46
+ for (var _e = tslib_1.__values(entity.fields.toArray()), _f = _e.next(); !_f.done; _f = _e.next()) {
47
+ var f = _f.value;
48
+ if (f.valueConverter.fieldTypeInDb === 'json') {
49
+ //@ts-ignore
50
+ f.valueConverter = tslib_1.__assign(tslib_1.__assign({}, f.valueConverter), { toDb: valueConverters_js_1.ValueConverters.JsonString.toDb });
51
+ }
52
+ }
53
+ }
54
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
55
+ finally {
56
+ try {
57
+ if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
58
+ }
59
+ finally { if (e_2) throw e_2.error; }
60
+ }
61
+ }
44
62
  return new KnexEntityDataProvider(entity, this.knex);
45
63
  };
46
64
  KnexDataProvider.prototype.transaction = function (action) {
@@ -160,7 +178,7 @@ var KnexEntityDataProvider = /** @class */ (function () {
160
178
  KnexEntityDataProvider.prototype.find = function (options) {
161
179
  return tslib_1.__awaiter(this, void 0, void 0, function () {
162
180
  var e, cols, colKeys, _a, _b, x, query, br, r_1, r;
163
- var e_2, _c;
181
+ var e_3, _c;
164
182
  return tslib_1.__generator(this, function (_d) {
165
183
  switch (_d.label) {
166
184
  case 0: return [4 /*yield*/, this.init()];
@@ -179,12 +197,12 @@ var KnexEntityDataProvider = /** @class */ (function () {
179
197
  }
180
198
  }
181
199
  }
182
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
200
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
183
201
  finally {
184
202
  try {
185
203
  if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
186
204
  }
187
- finally { if (e_2) throw e_2.error; }
205
+ finally { if (e_3) throw e_3.error; }
188
206
  }
189
207
  query = this.knex(e.$entityName).select(cols);
190
208
  if (!(options === null || options === void 0 ? void 0 : options.where)) return [3 /*break*/, 3];
@@ -255,8 +273,8 @@ var KnexEntityDataProvider = /** @class */ (function () {
255
273
  };
256
274
  KnexEntityDataProvider.prototype.update = function (id, data) {
257
275
  return tslib_1.__awaiter(this, void 0, void 0, function () {
258
- var e, f, resultFilter, updateObject, _a, _b, x, v, key, e_3_1, where;
259
- var e_3, _c;
276
+ var e, f, resultFilter, updateObject, _a, _b, x, v, key, e_4_1, where;
277
+ var e_4, _c;
260
278
  return tslib_1.__generator(this, function (_d) {
261
279
  switch (_d.label) {
262
280
  case 0: return [4 /*yield*/, this.init()];
@@ -292,14 +310,14 @@ var KnexEntityDataProvider = /** @class */ (function () {
292
310
  return [3 /*break*/, 3];
293
311
  case 7: return [3 /*break*/, 10];
294
312
  case 8:
295
- e_3_1 = _d.sent();
296
- e_3 = { error: e_3_1 };
313
+ e_4_1 = _d.sent();
314
+ e_4 = { error: e_4_1 };
297
315
  return [3 /*break*/, 10];
298
316
  case 9:
299
317
  try {
300
318
  if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
301
319
  }
302
- finally { if (e_3) throw e_3.error; }
320
+ finally { if (e_4) throw e_4.error; }
303
321
  return [7 /*endfinally*/];
304
322
  case 10: return [4 /*yield*/, f.resolveWhere()];
305
323
  case 11:
@@ -341,8 +359,8 @@ var KnexEntityDataProvider = /** @class */ (function () {
341
359
  };
342
360
  KnexEntityDataProvider.prototype.insert = function (data) {
343
361
  return tslib_1.__awaiter(this, void 0, void 0, function () {
344
- var e, resultFilter, insertObject, _a, _b, x, v, key, e_4_1, insert, newId_1, result, result;
345
- var e_4, _c;
362
+ var e, resultFilter, insertObject, _a, _b, x, v, key, e_5_1, insert, newId_1, result, result;
363
+ var e_5, _c;
346
364
  var _this = this;
347
365
  return tslib_1.__generator(this, function (_d) {
348
366
  switch (_d.label) {
@@ -377,14 +395,14 @@ var KnexEntityDataProvider = /** @class */ (function () {
377
395
  return [3 /*break*/, 3];
378
396
  case 7: return [3 /*break*/, 10];
379
397
  case 8:
380
- e_4_1 = _d.sent();
381
- e_4 = { error: e_4_1 };
398
+ e_5_1 = _d.sent();
399
+ e_5 = { error: e_5_1 };
382
400
  return [3 /*break*/, 10];
383
401
  case 9:
384
402
  try {
385
403
  if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
386
404
  }
387
- finally { if (e_4) throw e_4.error; }
405
+ finally { if (e_5) throw e_5.error; }
388
406
  return [7 /*endfinally*/];
389
407
  case 10:
390
408
  insert = this.knex(e.$entityName).insert(insertObject);
@@ -428,8 +446,8 @@ var FilterConsumerBridgeToKnexRequest = /** @class */ (function () {
428
446
  }
429
447
  FilterConsumerBridgeToKnexRequest.prototype.resolveWhere = function () {
430
448
  return tslib_1.__awaiter(this, void 0, void 0, function () {
431
- var p, p_1, p_1_1, pr, e_5_1;
432
- var e_5, _a;
449
+ var p, p_1, p_1_1, pr, e_6_1;
450
+ var e_6, _a;
433
451
  return tslib_1.__generator(this, function (_b) {
434
452
  switch (_b.label) {
435
453
  case 0:
@@ -439,7 +457,7 @@ var FilterConsumerBridgeToKnexRequest = /** @class */ (function () {
439
457
  _b.label = 1;
440
458
  case 1:
441
459
  _b.trys.push([1, 6, 7, 8]);
442
- p_1 = (e_5 = void 0, tslib_1.__values(p)), p_1_1 = p_1.next();
460
+ p_1 = (e_6 = void 0, tslib_1.__values(p)), p_1_1 = p_1.next();
443
461
  _b.label = 2;
444
462
  case 2:
445
463
  if (!!p_1_1.done) return [3 /*break*/, 5];
@@ -453,14 +471,14 @@ var FilterConsumerBridgeToKnexRequest = /** @class */ (function () {
453
471
  return [3 /*break*/, 2];
454
472
  case 5: return [3 /*break*/, 8];
455
473
  case 6:
456
- e_5_1 = _b.sent();
457
- e_5 = { error: e_5_1 };
474
+ e_6_1 = _b.sent();
475
+ e_6 = { error: e_6_1 };
458
476
  return [3 /*break*/, 8];
459
477
  case 7:
460
478
  try {
461
479
  if (p_1_1 && !p_1_1.done && (_a = p_1.return)) _a.call(p_1);
462
480
  }
463
- finally { if (e_5) throw e_5.error; }
481
+ finally { if (e_6) throw e_6.error; }
464
482
  return [7 /*endfinally*/];
465
483
  case 8: return [3 /*break*/, 0];
466
484
  case 9: return [2 /*return*/, this.result];
@@ -474,8 +492,8 @@ var FilterConsumerBridgeToKnexRequest = /** @class */ (function () {
474
492
  FilterConsumerBridgeToKnexRequest.prototype.or = function (orElements) {
475
493
  var _this = this;
476
494
  this.promises.push((function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
477
- var result, _loop_1, this_1, orElements_1, orElements_1_1, element, state_1, e_6_1;
478
- var e_6, _a;
495
+ var result, _loop_1, this_1, orElements_1, orElements_1_1, element, state_1, e_7_1;
496
+ var e_7, _a;
479
497
  return tslib_1.__generator(this, function (_b) {
480
498
  switch (_b.label) {
481
499
  case 0:
@@ -524,14 +542,14 @@ var FilterConsumerBridgeToKnexRequest = /** @class */ (function () {
524
542
  return [3 /*break*/, 2];
525
543
  case 5: return [3 /*break*/, 8];
526
544
  case 6:
527
- e_6_1 = _b.sent();
528
- e_6 = { error: e_6_1 };
545
+ e_7_1 = _b.sent();
546
+ e_7 = { error: e_7_1 };
529
547
  return [3 /*break*/, 8];
530
548
  case 7:
531
549
  try {
532
550
  if (orElements_1_1 && !orElements_1_1.done && (_a = orElements_1.return)) _a.call(orElements_1);
533
551
  }
534
- finally { if (e_6) throw e_6.error; }
552
+ finally { if (e_7) throw e_7.error; }
535
553
  return [7 /*endfinally*/];
536
554
  case 8:
537
555
  if (result.length > 0) {
@@ -650,8 +668,8 @@ var KnexSchemaBuilder = /** @class */ (function () {
650
668
  };
651
669
  KnexSchemaBuilder.prototype.ensureSchema = function (entities) {
652
670
  return tslib_1.__awaiter(this, void 0, void 0, function () {
653
- var entities_1, entities_1_1, entity, e, err_2, e_7_1;
654
- var e_7, _a;
671
+ var entities_1, entities_1_1, entity, e, err_2, e_8_1;
672
+ var e_8, _a;
655
673
  return tslib_1.__generator(this, function (_b) {
656
674
  switch (_b.label) {
657
675
  case 0:
@@ -686,14 +704,14 @@ var KnexSchemaBuilder = /** @class */ (function () {
686
704
  return [3 /*break*/, 1];
687
705
  case 9: return [3 /*break*/, 12];
688
706
  case 10:
689
- e_7_1 = _b.sent();
690
- e_7 = { error: e_7_1 };
707
+ e_8_1 = _b.sent();
708
+ e_8 = { error: e_8_1 };
691
709
  return [3 /*break*/, 12];
692
710
  case 11:
693
711
  try {
694
712
  if (entities_1_1 && !entities_1_1.done && (_a = entities_1.return)) _a.call(entities_1);
695
713
  }
696
- finally { if (e_7) throw e_7.error; }
714
+ finally { if (e_8) throw e_8.error; }
697
715
  return [7 /*endfinally*/];
698
716
  case 12: return [2 /*return*/];
699
717
  }
@@ -703,7 +721,7 @@ var KnexSchemaBuilder = /** @class */ (function () {
703
721
  KnexSchemaBuilder.prototype.createIfNotExist = function (entity) {
704
722
  return tslib_1.__awaiter(this, void 0, void 0, function () {
705
723
  var e, cols_1, _a, _b, f;
706
- var e_8, _c;
724
+ var e_9, _c;
707
725
  var _this = this;
708
726
  return tslib_1.__generator(this, function (_d) {
709
727
  switch (_d.label) {
@@ -723,15 +741,15 @@ var KnexSchemaBuilder = /** @class */ (function () {
723
741
  });
724
742
  }
725
743
  }
726
- catch (e_8_1) { e_8 = { error: e_8_1 }; }
744
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
727
745
  finally {
728
746
  try {
729
747
  if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
730
748
  }
731
- finally { if (e_8) throw e_8.error; }
749
+ finally { if (e_9) throw e_9.error; }
732
750
  }
733
751
  return [4 /*yield*/, logSql(this.knex.schema.createTable(e.$entityName, function (b) {
734
- var e_9, _a;
752
+ var e_10, _a;
735
753
  try {
736
754
  for (var _b = tslib_1.__values(entity.fields), _c = _b.next(); !_c.done; _c = _b.next()) {
737
755
  var x = _c.value;
@@ -739,19 +757,19 @@ var KnexSchemaBuilder = /** @class */ (function () {
739
757
  if ((0, RepositoryImplementation_js_1.isAutoIncrement)(x))
740
758
  b.increments(cols_1.get(x).name);
741
759
  else {
742
- buildColumn(x, cols_1.get(x).name, b, supportsJson(_this.knex));
760
+ buildColumn(x, cols_1.get(x).name, b, supportsJsonDataStorage(_this.knex));
743
761
  if (x == entity.idMetadata.field)
744
762
  b.primary([cols_1.get(x).name]);
745
763
  }
746
764
  }
747
765
  }
748
766
  }
749
- catch (e_9_1) { e_9 = { error: e_9_1 }; }
767
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
750
768
  finally {
751
769
  try {
752
770
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
753
771
  }
754
- finally { if (e_9) throw e_9.error; }
772
+ finally { if (e_10) throw e_10.error; }
755
773
  }
756
774
  }))];
757
775
  case 3:
@@ -779,7 +797,7 @@ var KnexSchemaBuilder = /** @class */ (function () {
779
797
  case 2:
780
798
  if (!!(_a.sent())) return [3 /*break*/, 4];
781
799
  return [4 /*yield*/, logSql(this.knex.schema.alterTable(e.$entityName, function (b) {
782
- buildColumn(col, colName, b, supportsJson(_this.knex));
800
+ buildColumn(col, colName, b, supportsJsonDataStorage(_this.knex));
783
801
  }))];
784
802
  case 3:
785
803
  _a.sent();
@@ -791,8 +809,8 @@ var KnexSchemaBuilder = /** @class */ (function () {
791
809
  };
792
810
  KnexSchemaBuilder.prototype.verifyAllColumns = function (entity) {
793
811
  return tslib_1.__awaiter(this, void 0, void 0, function () {
794
- var e, _loop_2, this_2, _a, _b, col, e_10_1, err_3;
795
- var e_10, _c;
812
+ var e, _loop_2, this_2, _a, _b, col, e_11_1, err_3;
813
+ var e_11, _c;
796
814
  return tslib_1.__generator(this, function (_d) {
797
815
  switch (_d.label) {
798
816
  case 0: return [4 /*yield*/, (0, filter_consumer_bridge_to_sql_request_js_1.dbNamesOf)(entity)];
@@ -832,14 +850,14 @@ var KnexSchemaBuilder = /** @class */ (function () {
832
850
  return [3 /*break*/, 4];
833
851
  case 7: return [3 /*break*/, 10];
834
852
  case 8:
835
- e_10_1 = _d.sent();
836
- e_10 = { error: e_10_1 };
853
+ e_11_1 = _d.sent();
854
+ e_11 = { error: e_11_1 };
837
855
  return [3 /*break*/, 10];
838
856
  case 9:
839
857
  try {
840
858
  if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
841
859
  }
842
- finally { if (e_10) throw e_10.error; }
860
+ finally { if (e_11) throw e_11.error; }
843
861
  return [7 /*endfinally*/];
844
862
  case 10: return [3 /*break*/, 12];
845
863
  case 11:
@@ -856,11 +874,17 @@ var KnexSchemaBuilder = /** @class */ (function () {
856
874
  return KnexSchemaBuilder;
857
875
  }());
858
876
  exports.KnexSchemaBuilder = KnexSchemaBuilder;
859
- function supportsJson(knex) {
877
+ function supportsJsonDataStorage(knex) {
878
+ var client = knex.client.config.client;
879
+ if ((client === null || client === void 0 ? void 0 : client.includes('sqlite3')) || (client === null || client === void 0 ? void 0 : client.includes('mssql')))
880
+ return false;
881
+ return true;
882
+ }
883
+ function supportsJsonLoadingAndSaving(knex) {
860
884
  var client = knex.client.config.client;
861
885
  if ((client === null || client === void 0 ? void 0 : client.includes('sqlite3')) ||
862
886
  (client === null || client === void 0 ? void 0 : client.includes('mssql')) ||
863
- (client === null || client === void 0 ? void 0 : client.includes('mysql')))
887
+ client == 'mysql')
864
888
  return false;
865
889
  return true;
866
890
  }
package/remult-next.js CHANGED
@@ -98,6 +98,7 @@ function remultNextApp(options) {
98
98
  response_1 = {
99
99
  end: function () { },
100
100
  json: function () { },
101
+ send: function () { },
101
102
  status: function () {
102
103
  return response_1;
103
104
  },
@@ -145,6 +146,13 @@ function remultNextApp(options) {
145
146
  return [2 /*return*/, sseResponse_1];
146
147
  }
147
148
  if (responseFromRemultHandler) {
149
+ if (responseFromRemultHandler.html)
150
+ return [2 /*return*/, new Response(responseFromRemultHandler.html, {
151
+ status: responseFromRemultHandler.statusCode,
152
+ headers: {
153
+ 'Content-Type': 'text/html',
154
+ },
155
+ })];
148
156
  return [2 /*return*/, new Response(JSON.stringify(responseFromRemultHandler.data), {
149
157
  status: responseFromRemultHandler.statusCode,
150
158
  })];
package/remult-nuxt.js CHANGED
@@ -33,6 +33,7 @@ function remultNuxt(options) {
33
33
  sse = false;
34
34
  response = {
35
35
  end: function () { },
36
+ send: function () { },
36
37
  json: function () { },
37
38
  status: function () {
38
39
  return response;
@@ -59,6 +60,8 @@ function remultNuxt(options) {
59
60
  if (r) {
60
61
  if (r.statusCode !== 200)
61
62
  (0, h3_1.setResponseStatus)(event, r.statusCode);
63
+ if (r.html)
64
+ return [2 /*return*/, r.html];
62
65
  return [2 /*return*/, r.data];
63
66
  }
64
67
  return [2 /*return*/];
@@ -1,6 +1,10 @@
1
- import type { Handle, RequestEvent } from '@sveltejs/kit';
1
+ import type { Handle, RequestEvent, RequestHandler } from '@sveltejs/kit';
2
2
  import type { RemultServerCore, RemultServerOptions, RemultServer } from './server/index.js';
3
3
  export declare function remultSveltekit(options?: RemultServerOptions<RequestEvent>): RemultSveltekitServer;
4
4
  export type RemultSveltekitServer = RemultServerCore<RequestEvent> & Handle & {
5
5
  withRemult: RemultServer<RequestEvent>['withRemultAsync'];
6
+ GET: RequestHandler;
7
+ PUT: RequestHandler;
8
+ POST: RequestHandler;
9
+ DELETE: RequestHandler;
6
10
  };
@@ -17,71 +17,96 @@ function remultSveltekit(options) {
17
17
  }); },
18
18
  getRequestBody: function (event) { return event.request.json(); },
19
19
  });
20
+ var serverHandler = function (event) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
21
+ var sseResponse, response, responseFromRemultHandler, res;
22
+ return tslib_1.__generator(this, function (_a) {
23
+ switch (_a.label) {
24
+ case 0:
25
+ sseResponse = undefined;
26
+ event.locals['_tempOnClose'] = function () { };
27
+ response = {
28
+ end: function () { },
29
+ json: function () { },
30
+ send: function () { },
31
+ status: function () {
32
+ return response;
33
+ },
34
+ write: function () { },
35
+ writeHead: function (status, headers) {
36
+ if (status === 200 && headers) {
37
+ var contentType = headers['Content-Type'];
38
+ if (contentType === 'text/event-stream') {
39
+ var messages_1 = [];
40
+ response.write = function (x) { return messages_1.push(x); };
41
+ var stream = new ReadableStream({
42
+ start: function (controller) {
43
+ var e_1, _a;
44
+ try {
45
+ 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()) {
46
+ var message = messages_2_1.value;
47
+ controller.enqueue(message);
48
+ }
49
+ }
50
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
51
+ finally {
52
+ try {
53
+ if (messages_2_1 && !messages_2_1.done && (_a = messages_2.return)) _a.call(messages_2);
54
+ }
55
+ finally { if (e_1) throw e_1.error; }
56
+ }
57
+ response.write = function (data) {
58
+ controller.enqueue(data);
59
+ };
60
+ },
61
+ cancel: function () {
62
+ response.write = function () { };
63
+ event.locals['_tempOnClose']();
64
+ },
65
+ });
66
+ sseResponse = new Response(stream, { headers: headers });
67
+ }
68
+ }
69
+ },
70
+ };
71
+ return [4 /*yield*/, result.handle(event, response)];
72
+ case 1:
73
+ responseFromRemultHandler = _a.sent();
74
+ if (sseResponse !== undefined) {
75
+ return [2 /*return*/, sseResponse];
76
+ }
77
+ if (responseFromRemultHandler) {
78
+ if (responseFromRemultHandler.html)
79
+ return [2 /*return*/, new Response(responseFromRemultHandler.html, {
80
+ status: responseFromRemultHandler.statusCode,
81
+ headers: {
82
+ 'Content-Type': 'text/html',
83
+ },
84
+ })];
85
+ res = new Response(JSON.stringify(responseFromRemultHandler.data), {
86
+ status: responseFromRemultHandler.statusCode,
87
+ });
88
+ return [2 /*return*/, res];
89
+ }
90
+ return [2 /*return*/, new Response('Not Found', {
91
+ status: 404,
92
+ })];
93
+ }
94
+ });
95
+ }); };
20
96
  var handler = function (_a) {
21
97
  var event = _a.event, resolve = _a.resolve;
22
98
  return tslib_1.__awaiter(_this, void 0, void 0, function () {
23
- var sseResponse_1, response_1, responseFromRemultHandler;
99
+ var result_1;
24
100
  var _this = this;
25
101
  return tslib_1.__generator(this, function (_b) {
26
102
  switch (_b.label) {
27
103
  case 0:
28
104
  if (!event.url.pathname.startsWith(options.rootPath)) return [3 /*break*/, 2];
29
- sseResponse_1 = undefined;
30
- event.locals['_tempOnClose'] = function () { };
31
- response_1 = {
32
- end: function () { },
33
- json: function () { },
34
- status: function () {
35
- return response_1;
36
- },
37
- write: function () { },
38
- writeHead: function (status, headers) {
39
- if (status === 200 && headers) {
40
- var contentType = headers['Content-Type'];
41
- if (contentType === 'text/event-stream') {
42
- var messages_1 = [];
43
- response_1.write = function (x) { return messages_1.push(x); };
44
- var stream = new ReadableStream({
45
- start: function (controller) {
46
- var e_1, _a;
47
- try {
48
- 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()) {
49
- var message = messages_2_1.value;
50
- controller.enqueue(message);
51
- }
52
- }
53
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
54
- finally {
55
- try {
56
- if (messages_2_1 && !messages_2_1.done && (_a = messages_2.return)) _a.call(messages_2);
57
- }
58
- finally { if (e_1) throw e_1.error; }
59
- }
60
- response_1.write = function (data) {
61
- controller.enqueue(data);
62
- };
63
- },
64
- cancel: function () {
65
- response_1.write = function () { };
66
- event.locals['_tempOnClose']();
67
- },
68
- });
69
- sseResponse_1 = new Response(stream, { headers: headers });
70
- }
71
- }
72
- },
73
- };
74
- return [4 /*yield*/, result.handle(event, response_1)];
105
+ return [4 /*yield*/, serverHandler(event)];
75
106
  case 1:
76
- responseFromRemultHandler = _b.sent();
77
- if (sseResponse_1 !== undefined) {
78
- return [2 /*return*/, sseResponse_1];
79
- }
80
- if (responseFromRemultHandler) {
81
- return [2 /*return*/, new Response(JSON.stringify(responseFromRemultHandler.data), {
82
- status: responseFromRemultHandler.statusCode,
83
- })];
84
- }
107
+ result_1 = _b.sent();
108
+ if (result_1 != null && (result_1 === null || result_1 === void 0 ? void 0 : result_1.status) != 404)
109
+ return [2 /*return*/, result_1];
85
110
  _b.label = 2;
86
111
  case 2: return [2 /*return*/, new Promise(function (res) {
87
112
  result.withRemult(event, undefined, function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
@@ -108,6 +133,10 @@ function remultSveltekit(options) {
108
133
  withRemult: function (request, what) {
109
134
  return result.withRemultAsync(request, what);
110
135
  },
136
+ GET: serverHandler,
137
+ PUT: serverHandler,
138
+ POST: serverHandler,
139
+ DELETE: serverHandler,
111
140
  });
112
141
  }
113
142
  exports.remultSveltekit = remultSveltekit;
@@ -47,6 +47,8 @@ export interface RemultServerOptions<RequestType> {
47
47
  serialize(remult: Remult): Promise<any>;
48
48
  deserialize(json: any, options: InitRequestOptions): Promise<void>;
49
49
  };
50
+ /** When set to true, will display an admin ui in the `/api/admin` url */
51
+ admin?: boolean;
50
52
  /** Storage to use for backend methods that use queue */
51
53
  queueStorage?: QueueStorage;
52
54
  }
@@ -58,6 +60,7 @@ export declare function createRemultServerCore<RequestType>(options: RemultServe
58
60
  export type GenericRequestHandler = (req: GenericRequestInfo, res: GenericResponse, next: VoidFunction) => void;
59
61
  export interface ServerHandleResponse {
60
62
  data?: any;
63
+ html?: string;
61
64
  statusCode: number;
62
65
  }
63
66
  export interface RemultServer<RequestType> extends RemultServerCore<RequestType> {
@@ -90,6 +93,7 @@ export interface GenericRequestInfo {
90
93
  }
91
94
  export interface GenericResponse {
92
95
  json(data: any): any;
96
+ send(html: string): any;
93
97
  status(statusCode: number): GenericResponse;
94
98
  end(): any;
95
99
  }
@@ -116,6 +120,10 @@ export declare class RouteImplementation<RequestType> {
116
120
  private coreOptions;
117
121
  constructor(coreOptions: ServerCoreOptions<RequestType>);
118
122
  map: Map<string, Map<string, GenericRequestHandler>>;
123
+ starRoutes: {
124
+ route: string;
125
+ handler: Map<string, GenericRequestHandler>;
126
+ }[];
119
127
  route(path: string): SpecificRoute;
120
128
  handle(req: RequestType, gRes?: GenericResponse): Promise<ServerHandleResponse | undefined>;
121
129
  middleware(origReq: RequestType, res: GenericResponse, next: VoidFunction): void;