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
package/graphql.js CHANGED
@@ -5,13 +5,13 @@ var tslib_1 = require("tslib");
5
5
  var internals_js_1 = require("./internals.js");
6
6
  var index_js_1 = require("./index.js");
7
7
  var data_api_js_1 = require("./src/data-api.js");
8
+ var repository_internals_js_1 = require("./src/remult3/repository-internals.js");
8
9
  var v2ConnectionAndPagination = false;
9
10
  var andImplementation = false;
10
11
  var _removeComments = false;
11
12
  function remultGraphql(options) {
12
13
  var e_1, _a, e_2, _b, e_3, _c, e_4, _d, e_5, _e;
13
14
  var _this = this;
14
- var _f, _g;
15
15
  if (!options.getRemultFromRequest) {
16
16
  options.getRemultFromRequest = function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
17
17
  return [2 /*return*/, index_js_1.remult];
@@ -68,16 +68,16 @@ function remultGraphql(options) {
68
68
  }
69
69
  try {
70
70
  // Where - GraphQL primitives
71
- for (var _h = tslib_1.__values(['String', 'Int', 'Float', 'Boolean', 'ID']), _j = _h.next(); !_j.done; _j = _h.next()) {
72
- var whereType = _j.value;
71
+ for (var _f = tslib_1.__values(['String', 'Int', 'Float', 'Boolean', 'ID']), _g = _f.next(); !_g.done; _g = _f.next()) {
72
+ var whereType = _g.value;
73
73
  var currentWhere = upsertTypes("Where".concat(whereType), 'input', 20);
74
74
  var currentWhereNullable = upsertTypes("Where".concat(whereType, "Nullable"), 'input', 20);
75
75
  // For everyone
76
76
  var operatorType = ['eq', 'ne'];
77
77
  var operatorTypeArray = ['in', 'nin'];
78
78
  try {
79
- for (var _k = (e_2 = void 0, tslib_1.__values(tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(operatorType), false), tslib_1.__read(operatorTypeArray), false))), _l = _k.next(); !_l.done; _l = _k.next()) {
80
- var operator = _l.value;
79
+ for (var _h = (e_2 = void 0, tslib_1.__values(tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(operatorType), false), tslib_1.__read(operatorTypeArray), false))), _j = _h.next(); !_j.done; _j = _h.next()) {
80
+ var operator = _j.value;
81
81
  var field = {
82
82
  key: operator,
83
83
  value: operatorTypeArray.includes(operator)
@@ -91,7 +91,7 @@ function remultGraphql(options) {
91
91
  catch (e_2_1) { e_2 = { error: e_2_1 }; }
92
92
  finally {
93
93
  try {
94
- if (_l && !_l.done && (_b = _k.return)) _b.call(_k);
94
+ if (_j && !_j.done && (_b = _h.return)) _b.call(_h);
95
95
  }
96
96
  finally { if (e_2) throw e_2.error; }
97
97
  }
@@ -100,8 +100,8 @@ function remultGraphql(options) {
100
100
  whereType === 'Int' ||
101
101
  whereType === 'Float') {
102
102
  try {
103
- for (var _m = (e_3 = void 0, tslib_1.__values(['gt', 'gte', 'lt', 'lte'])), _o = _m.next(); !_o.done; _o = _m.next()) {
104
- var operator = _o.value;
103
+ for (var _k = (e_3 = void 0, tslib_1.__values(['gt', 'gte', 'lt', 'lte'])), _l = _k.next(); !_l.done; _l = _k.next()) {
104
+ var operator = _l.value;
105
105
  var field = {
106
106
  key: operator,
107
107
  value: whereType,
@@ -113,15 +113,15 @@ function remultGraphql(options) {
113
113
  catch (e_3_1) { e_3 = { error: e_3_1 }; }
114
114
  finally {
115
115
  try {
116
- if (_o && !_o.done && (_c = _m.return)) _c.call(_m);
116
+ if (_l && !_l.done && (_c = _k.return)) _c.call(_k);
117
117
  }
118
118
  finally { if (e_3) throw e_3.error; }
119
119
  }
120
120
  }
121
121
  if (whereType === 'String') {
122
122
  try {
123
- for (var _p = (e_4 = void 0, tslib_1.__values(['contains', 'notContains'])), _q = _p.next(); !_q.done; _q = _p.next()) {
124
- var operator = _q.value;
123
+ for (var _m = (e_4 = void 0, tslib_1.__values(['contains', 'notContains'])), _o = _m.next(); !_o.done; _o = _m.next()) {
124
+ var operator = _o.value;
125
125
  var field = {
126
126
  key: operator,
127
127
  value: whereType,
@@ -133,7 +133,7 @@ function remultGraphql(options) {
133
133
  catch (e_4_1) { e_4 = { error: e_4_1 }; }
134
134
  finally {
135
135
  try {
136
- if (_q && !_q.done && (_d = _p.return)) _d.call(_p);
136
+ if (_o && !_o.done && (_d = _m.return)) _d.call(_m);
137
137
  }
138
138
  finally { if (e_4) throw e_4.error; }
139
139
  }
@@ -148,7 +148,7 @@ function remultGraphql(options) {
148
148
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
149
149
  finally {
150
150
  try {
151
- if (_j && !_j.done && (_a = _h.return)) _a.call(_h);
151
+ if (_g && !_g.done && (_a = _f.return)) _a.call(_f);
152
152
  }
153
153
  finally { if (e_1) throw e_1.error; }
154
154
  }
@@ -164,7 +164,7 @@ function remultGraphql(options) {
164
164
  var argClientMutationId = { key: 'clientMutationId', value: "String" };
165
165
  var argErrorDetail = { key: 'error', value: "ErrorDetail" };
166
166
  var _loop_1 = function (meta) {
167
- var e_6, _r;
167
+ var e_6, _p;
168
168
  var orderByFields = [];
169
169
  var key = meta.key;
170
170
  var currentType = upsertTypes(getMetaType(meta), 'type_impl_node');
@@ -203,6 +203,21 @@ function remultGraphql(options) {
203
203
  });
204
204
  }); };
205
205
  };
206
+ var handleRequestWithDataApiContextBasedOnRepo_1 = function (repo, work) {
207
+ return createResultPromise_1(function (response, setResult, arg1, req) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
208
+ var dApi;
209
+ return tslib_1.__generator(this, function (_a) {
210
+ switch (_a.label) {
211
+ case 0:
212
+ dApi = new data_api_js_1.DataApi(repo, index_js_1.remult);
213
+ return [4 /*yield*/, work(dApi, response, setResult, arg1, repo.metadata)];
214
+ case 1:
215
+ _a.sent();
216
+ return [2 /*return*/];
217
+ }
218
+ });
219
+ }); });
220
+ };
206
221
  var handleRequestWithDataApiContext_1 = function (work) {
207
222
  return createResultPromise_1(function (response, setResult, arg1, req) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
208
223
  var remult, repo, dApi;
@@ -276,7 +291,8 @@ function remultGraphql(options) {
276
291
  return tslib_1.__generator(this, function (_a) {
277
292
  switch (_a.label) {
278
293
  case 0: return [4 /*yield*/, dApi.get(tslib_1.__assign(tslib_1.__assign({}, response), { success: function (y) {
279
- currentType.query.resultProcessors.forEach(function (z) { return z(y); });
294
+ var orig = tslib_1.__assign({}, y);
295
+ currentType.query.resultProcessors.forEach(function (z) { return z(y, orig); });
280
296
  setResult(y);
281
297
  } }), arg1.id)];
282
298
  case 1:
@@ -330,40 +346,8 @@ function remultGraphql(options) {
330
346
  });
331
347
  }
332
348
  root[key] = handleRequestWithDataApiContext_1(function (dApi, response, setResult, arg1, meta) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
333
- var _a;
334
- var _this = this;
335
- return tslib_1.__generator(this, function (_b) {
336
- setResult((_a = {},
337
- _a[itemsKey_1] = createResultPromise_1(function (response, setResult) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
338
- return tslib_1.__generator(this, function (_a) {
339
- switch (_a.label) {
340
- case 0: return [4 /*yield*/, dApi.getArray(tslib_1.__assign(tslib_1.__assign({}, response), { success: function (x) {
341
- setResult(x.map(function (y) {
342
- currentType.query.resultProcessors.forEach(function (z) { return z(y); });
343
- return y;
344
- }));
345
- } }), {
346
- get: bridgeQueryOptionsToDataApiGet(arg1),
347
- }, translateWhereToRestBody(meta.fields, arg1))];
348
- case 1:
349
- _a.sent();
350
- return [2 /*return*/];
351
- }
352
- });
353
- }); }),
354
- _a[totalCountKey_1] = createResultPromise_1(function (response, setResult) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
355
- return tslib_1.__generator(this, function (_a) {
356
- switch (_a.label) {
357
- case 0: return [4 /*yield*/, dApi.count(tslib_1.__assign(tslib_1.__assign({}, response), { success: function (x) { return setResult(x.count); } }), {
358
- get: bridgeQueryOptionsToDataApiGet(arg1),
359
- }, translateWhereToRestBody(meta.fields, arg1))];
360
- case 1:
361
- _a.sent();
362
- return [2 /*return*/];
363
- }
364
- });
365
- }); }),
366
- _a));
349
+ return tslib_1.__generator(this, function (_a) {
350
+ connectionImplementation(setResult, itemsKey_1, createResultPromise_1, dApi, currentType, arg1, meta, totalCountKey_1);
367
351
  return [2 /*return*/];
368
352
  });
369
353
  }); });
@@ -403,7 +387,8 @@ function remultGraphql(options) {
403
387
  switch (_a.label) {
404
388
  case 0: return [4 /*yield*/, dApi.post(tslib_1.__assign(tslib_1.__assign({}, response), { created: function (y) {
405
389
  var _a;
406
- currentType.query.resultProcessors.forEach(function (z) { return z(y); });
390
+ var orig = tslib_1.__assign({}, y);
391
+ currentType.query.resultProcessors.forEach(function (z) { return z(y, orig); });
407
392
  setResult((_a = {},
408
393
  _a[toCamelCase(getMetaType(meta))] = y,
409
394
  _a));
@@ -442,7 +427,8 @@ function remultGraphql(options) {
442
427
  switch (_a.label) {
443
428
  case 0: return [4 /*yield*/, dApi.put(tslib_1.__assign(tslib_1.__assign({}, response), { success: function (y) {
444
429
  var _a;
445
- currentType.query.resultProcessors.forEach(function (z) { return z(y); });
430
+ var orig = tslib_1.__assign({}, y);
431
+ currentType.query.resultProcessors.forEach(function (z) { return z(y, orig); });
446
432
  setResult((_a = {},
447
433
  _a[toCamelCase(getMetaType(meta))] = y,
448
434
  _a));
@@ -467,9 +453,12 @@ function remultGraphql(options) {
467
453
  });
468
454
  currentType.mutation.delete.payload = upsertTypes(deletePayload);
469
455
  var deletedResultKey_1 = "id";
456
+ var type = meta.idMetadata.field instanceof index_js_1.CompoundIdField
457
+ ? 'String'
458
+ : getGraphqlBaseType(meta.idMetadata.field);
470
459
  currentType.mutation.delete.payload.fields.push({
471
460
  key: deletedResultKey_1,
472
- value: 'ID',
461
+ value: "".concat(type),
473
462
  }, argErrorDetail, argClientMutationId);
474
463
  root[deleteResolverKey_1] = handleMutationWithErrors(function (dApi, response, setResult, arg1, req) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
475
464
  return tslib_1.__generator(this, function (_a) {
@@ -491,21 +480,7 @@ function remultGraphql(options) {
491
480
  var ri = (0, internals_js_1.getRelationFieldInfo)(f);
492
481
  if (f.options.includeInApi === false)
493
482
  return "continue";
494
- var type = 'String';
495
- switch (f.valueType) {
496
- case Boolean:
497
- type = 'Boolean';
498
- break;
499
- case Number:
500
- {
501
- if (((_f = f.valueConverter) === null || _f === void 0 ? void 0 : _f.fieldTypeInDb) === 'integer' ||
502
- ((_g = f.valueConverter) === null || _g === void 0 ? void 0 : _g.fieldTypeInDb) === 'autoincrement')
503
- type = 'Int';
504
- else
505
- type = 'Float';
506
- }
507
- break;
508
- }
483
+ var type = getGraphqlBaseType(f);
509
484
  currentType.query.resultProcessors.push(function (r) {
510
485
  r[nodeIdKey] = function () {
511
486
  return getMetaType(meta) + ':' + meta.idMetadata.getId(r);
@@ -518,8 +493,11 @@ function remultGraphql(options) {
518
493
  var refType_1 = ri.toEntity;
519
494
  ref = entities.find(function (i) { return i.entityType === refType_1; });
520
495
  }
496
+ if (!ref) {
497
+ throw new Error("Entity \"".concat(ri.toEntity.name, "\" that is used by the relation \"").concat(f.key, "\" in \"").concat(meta.entityType.name, "\" was not found in the 'entities' array."));
498
+ }
521
499
  notARealField = ri.type === 'toOne' || ri.type === 'toMany';
522
- var refKey_1 = ref.key;
500
+ var refKey = ref.key;
523
501
  switch (ri.type) {
524
502
  case 'reference':
525
503
  case 'toOne':
@@ -528,21 +506,34 @@ function remultGraphql(options) {
528
506
  value: "".concat(getMetaType(ref)).concat(f.allowNull ? '' : '!'),
529
507
  comment: f.caption,
530
508
  });
531
- currentType.query.resultProcessors.push(function (r) {
532
- var val = r[ri.type == 'reference' ? f.key : f.options.field]; //p1 - fix
533
- if (val === null || val === undefined)
534
- return null;
509
+ currentType.query.resultProcessors.push(function (r, orig) {
535
510
  r[f.key] = function (args, req, gqlInfo) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
536
- var queryResult;
537
- return tslib_1.__generator(this, function (_a) {
538
- switch (_a.label) {
539
- case 0: return [4 /*yield*/, root[refKey_1](tslib_1.__assign(tslib_1.__assign({}, args.where), { where: { id: { eq: val } }, options: { limit: 1 } }), req, gqlInfo)];
540
- case 1: return [4 /*yield*/, (_a.sent()).items()];
511
+ var remult, myRepo, item, _a, toRepo, returnNull, returnUndefined, result, resultItems;
512
+ var _this = this;
513
+ return tslib_1.__generator(this, function (_b) {
514
+ switch (_b.label) {
515
+ case 0: return [4 /*yield*/, options.getRemultFromRequest(req)];
516
+ case 1:
517
+ remult = _b.sent();
518
+ myRepo = remult.repo(meta.entityType);
519
+ item = myRepo.fromJson(orig);
520
+ _a = (0, repository_internals_js_1.getRepositoryInternals)(myRepo).getFocusedRelationRepo(myRepo.fields.find(f), item), toRepo = _a.toRepo, returnNull = _a.returnNull, returnUndefined = _a.returnUndefined;
521
+ if (returnNull || returnUndefined)
522
+ return [2 /*return*/, null];
523
+ return [4 /*yield*/, handleRequestWithDataApiContextBasedOnRepo_1(toRepo, function (dApi, response, setResult, arg1, meta) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
524
+ return tslib_1.__generator(this, function (_a) {
525
+ switch (_a.label) {
526
+ case 0: return [4 /*yield*/, connectionImplementation(setResult, itemsKey_1, createResultPromise_1, dApi, upsertTypes(getMetaType(ref)), arg1, meta, totalCountKey_1)];
527
+ case 1: return [2 /*return*/, _a.sent()];
528
+ }
529
+ });
530
+ }); })(tslib_1.__assign(tslib_1.__assign({}, args), { options: { limit: 1 } }), req)];
541
531
  case 2:
542
- queryResult = _a.sent();
543
- if (queryResult.length > 0)
544
- return [2 /*return*/, queryResult[0]];
545
- return [2 /*return*/, null];
532
+ result = _b.sent();
533
+ return [4 /*yield*/, result.items()];
534
+ case 3:
535
+ resultItems = _b.sent();
536
+ return [2 /*return*/, resultItems[0]];
546
537
  }
547
538
  });
548
539
  }); };
@@ -552,22 +543,31 @@ function remultGraphql(options) {
552
543
  // will do: Category.tasks (actually: Category.tasksOfcategory & tasksOfcategory2)
553
544
  currentType.fields.push({
554
545
  key: f.key,
555
- args: getQueryArgsConnection(refKey_1),
546
+ args: getQueryArgsConnection(refKey),
556
547
  value: "".concat(getMetaType(ref), "Connection"),
557
548
  order: 10,
558
- comment: "List all `".concat(getMetaType(meta), "` of `").concat(refKey_1, "`"),
549
+ comment: "List all `".concat(getMetaType(meta), "` of `").concat(refKey, "`"),
559
550
  });
560
- currentType.query.resultProcessors.push(function (r) {
561
- var val = r.id;
551
+ currentType.query.resultProcessors.push(function (r, y) {
562
552
  r[f.key] = function (args, req, gqlInfo) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
563
- var _a;
564
- return tslib_1.__generator(this, function (_b) {
565
- switch (_b.label) {
566
- case 0: return [4 /*yield*/, root[ref.key]({
567
- where: tslib_1.__assign(tslib_1.__assign({}, args.where), (_a = {}, _a[f.options.field /*//p1 to fix*/] = { eq: val }, _a)),
568
- options: tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, args.limit), args.page), args.orderBy),
569
- }, req, gqlInfo)];
570
- case 1: return [2 /*return*/, _b.sent()];
553
+ var remult, myRepo, item, relRepo;
554
+ var _this = this;
555
+ return tslib_1.__generator(this, function (_a) {
556
+ switch (_a.label) {
557
+ case 0: return [4 /*yield*/, options.getRemultFromRequest(req)];
558
+ case 1:
559
+ remult = _a.sent();
560
+ myRepo = remult.repo(meta.entityType);
561
+ item = myRepo.fromJson(y);
562
+ relRepo = myRepo.relations(item)[f.key];
563
+ return [2 /*return*/, handleRequestWithDataApiContextBasedOnRepo_1(relRepo, function (dApi, response, setResult, arg1, meta) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
564
+ return tslib_1.__generator(this, function (_a) {
565
+ switch (_a.label) {
566
+ case 0: return [4 /*yield*/, connectionImplementation(setResult, itemsKey_1, createResultPromise_1, dApi, upsertTypes(getMetaType(ref)), arg1, meta, totalCountKey_1)];
567
+ case 1: return [2 /*return*/, _a.sent()];
568
+ }
569
+ });
570
+ }); })(args, req)];
571
571
  }
572
572
  });
573
573
  }); };
@@ -581,7 +581,7 @@ function remultGraphql(options) {
581
581
  value: "".concat(getMetaType(ref)).concat(f.allowNull ? '' : '!'),
582
582
  comment: f.caption,
583
583
  });
584
- var refKey_2 = ref.key;
584
+ var refKey_1 = ref.key;
585
585
  currentType.query.resultProcessors.push(function (r) {
586
586
  var val = r[f.key];
587
587
  if (val === null || val === undefined)
@@ -590,7 +590,7 @@ function remultGraphql(options) {
590
590
  var queryResult;
591
591
  return tslib_1.__generator(this, function (_a) {
592
592
  switch (_a.label) {
593
- case 0: return [4 /*yield*/, root[refKey_2](tslib_1.__assign(tslib_1.__assign({}, args.where), { where: { id: { eq: val } }, options: { limit: 1 } }), req, gqlInfo)];
593
+ case 0: return [4 /*yield*/, root[refKey_1](tslib_1.__assign(tslib_1.__assign({}, args.where), { where: { id: { eq: val } }, options: { limit: 1 } }), req, gqlInfo)];
594
594
  case 1: return [4 /*yield*/, (_a.sent()).items()];
595
595
  case 2:
596
596
  queryResult = _a.sent();
@@ -609,7 +609,7 @@ function remultGraphql(options) {
609
609
  args: queryArgsConnection,
610
610
  value: connectionKey,
611
611
  order: 10,
612
- comment: "List all `".concat(getMetaType(meta), "` of `").concat(refKey_2, "`"),
612
+ comment: "List all `".concat(getMetaType(meta), "` of `").concat(refKey_1, "`"),
613
613
  });
614
614
  refT.query.resultProcessors.push(function (r) {
615
615
  var val = r.id;
@@ -661,15 +661,15 @@ function remultGraphql(options) {
661
661
  }
662
662
  };
663
663
  try {
664
- for (var _s = (e_6 = void 0, tslib_1.__values(meta.fields)), _t = _s.next(); !_t.done; _t = _s.next()) {
665
- var f = _t.value;
664
+ for (var _q = (e_6 = void 0, tslib_1.__values(meta.fields)), _r = _q.next(); !_r.done; _r = _q.next()) {
665
+ var f = _r.value;
666
666
  _loop_2(f);
667
667
  }
668
668
  }
669
669
  catch (e_6_1) { e_6 = { error: e_6_1 }; }
670
670
  finally {
671
671
  try {
672
- if (_t && !_t.done && (_r = _s.return)) _r.call(_s);
672
+ if (_r && !_r.done && (_p = _q.return)) _p.call(_q);
673
673
  }
674
674
  finally { if (e_6) throw e_6.error; }
675
675
  }
@@ -822,6 +822,42 @@ function remultGraphql(options) {
822
822
  })
823
823
  .join("\n\n"), "\n"),
824
824
  };
825
+ function connectionImplementation(setResult, itemsKey, createResultPromise, dApi, currentType, arg1, meta, totalCountKey) {
826
+ var _a;
827
+ var _this = this;
828
+ setResult((_a = {},
829
+ _a[itemsKey] = createResultPromise(function (response, setResult) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
830
+ return tslib_1.__generator(this, function (_a) {
831
+ switch (_a.label) {
832
+ case 0: return [4 /*yield*/, dApi.getArray(tslib_1.__assign(tslib_1.__assign({}, response), { success: function (x) {
833
+ setResult(x.map(function (y) {
834
+ var orig = tslib_1.__assign({}, y);
835
+ currentType.query.resultProcessors.forEach(function (z) { return z(y, orig); });
836
+ return y;
837
+ }));
838
+ } }), {
839
+ get: bridgeQueryOptionsToDataApiGet(arg1),
840
+ }, translateWhereToRestBody(meta.fields, arg1))];
841
+ case 1:
842
+ _a.sent();
843
+ return [2 /*return*/];
844
+ }
845
+ });
846
+ }); }),
847
+ _a[totalCountKey] = createResultPromise(function (response, setResult) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
848
+ return tslib_1.__generator(this, function (_a) {
849
+ switch (_a.label) {
850
+ case 0: return [4 /*yield*/, dApi.count(tslib_1.__assign(tslib_1.__assign({}, response), { success: function (x) { return setResult(x.count); } }), {
851
+ get: bridgeQueryOptionsToDataApiGet(arg1),
852
+ }, translateWhereToRestBody(meta.fields, arg1))];
853
+ case 1:
854
+ _a.sent();
855
+ return [2 /*return*/];
856
+ }
857
+ });
858
+ }); }),
859
+ _a));
860
+ }
825
861
  }
826
862
  exports.remultGraphql = remultGraphql;
827
863
  function getQueryArgsConnection(key) {
@@ -928,6 +964,25 @@ function fieldFormat(field) {
928
964
  }
929
965
  return "".concat(strComment, " ").concat(key_value);
930
966
  }
967
+ function getGraphqlBaseType(field) {
968
+ var _a, _b;
969
+ var type = 'String';
970
+ switch (field.valueType) {
971
+ case Boolean:
972
+ type = 'Boolean';
973
+ break;
974
+ case Number:
975
+ {
976
+ if (((_a = field.valueConverter) === null || _a === void 0 ? void 0 : _a.fieldTypeInDb) === 'integer' ||
977
+ ((_b = field.valueConverter) === null || _b === void 0 ? void 0 : _b.fieldTypeInDb) === 'autoincrement')
978
+ type = 'Int';
979
+ else
980
+ type = 'Float';
981
+ }
982
+ break;
983
+ }
984
+ return type;
985
+ }
931
986
  function getMetaType(entityMeta) {
932
987
  return entityMeta.entityType.name;
933
988
  }
package/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { ClassType } from './classType.js';
2
2
  import type { DataProvider } from './src/data-interfaces.js';
3
+ export { ArrayEntityDataProvider } from './src/data-providers/array-entity-data-provider.js';
3
4
  export type { ClassType } from './classType.js';
4
5
  export { ValidateFieldEvent, MembersOnly, FieldsMetadata, FieldRef, IdFieldRef, FieldsRef, EntityMetadata, EntityOrderBy, EntityFilter, FindOptions, FindOptionsBase, QueryResult, QueryOptions, Repository, FindFirstOptions, ComparisonValueFilter, ValueFilter, IdFilter, ContainsStringValueFilter, EntityRef, SortSegments, Paginator, LiveQuery, LiveQueryChangeInfo, Subscribable, RefSubscriber, RefSubscriberBase, RelationOptions, ObjectMembersOnly, MembersToInclude, RepositoryRelations, EntityIdFields, ClassFieldDecorator, ClassFieldDecoratorContextStub, //n1 consider removing in ts5
5
6
  LifecycleEvent, FieldsRefBase, FieldsRefForEntityBase, RepositoryRelationsForEntityBase, ControllerRefForControllerBase, ControllerRefBase, ControllerRef, EntityRefForEntityBase, IdMetadata, FindFirstOptionsBase, } from './src/remult3/remult3.js';
package/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.repo = exports.SubscriptionChannel = exports.InMemoryLiveQueryStorage = exports.remult = exports.ValueConverters = exports.createValueValidator = exports.createValueValidatorWithArgs = exports.createValidatorWithArgs = exports.createValidator = exports.valueValidator = exports.Validators = exports.UrlBuilder = exports.Filter = exports.CompoundIdField = exports.Sort = exports.EventSource = exports.isBackend = exports.withRemult = exports.Remult = exports.Allow = exports.ProgressListener = exports.BackendMethod = exports.Controller = exports.JsonEntityOpfsStorage = exports.JsonDataProvider = exports.dbNamesOf = exports.CustomSqlFilterBuilder = exports.SqlDatabase = exports.WebSqlDataProvider = exports.InMemoryDataProvider = exports.RestDataProvider = exports.describeClass = exports.IdEntity = exports.Relations = exports.Fields = exports.Field = exports.getEntityRef = exports.Entity = exports.CaptionTransformer = exports.ValueListInfo = exports.getValueList = exports.ValueListFieldType = exports.getFields = exports.FieldType = exports.ControllerBase = exports.EntityBase = void 0;
3
+ exports.repo = exports.SubscriptionChannel = exports.InMemoryLiveQueryStorage = exports.remult = exports.ValueConverters = exports.createValueValidator = exports.createValueValidatorWithArgs = exports.createValidatorWithArgs = exports.createValidator = exports.valueValidator = exports.Validators = exports.UrlBuilder = exports.Filter = exports.CompoundIdField = exports.Sort = exports.EventSource = exports.isBackend = exports.withRemult = exports.Remult = exports.Allow = exports.ProgressListener = exports.BackendMethod = exports.Controller = exports.JsonEntityOpfsStorage = exports.JsonDataProvider = exports.dbNamesOf = exports.CustomSqlFilterBuilder = exports.SqlDatabase = exports.WebSqlDataProvider = exports.InMemoryDataProvider = exports.RestDataProvider = exports.describeClass = exports.IdEntity = exports.Relations = exports.Fields = exports.Field = exports.getEntityRef = exports.Entity = exports.CaptionTransformer = exports.ValueListInfo = exports.getValueList = exports.ValueListFieldType = exports.getFields = exports.FieldType = exports.ControllerBase = exports.EntityBase = exports.ArrayEntityDataProvider = void 0;
4
+ var array_entity_data_provider_js_1 = require("./src/data-providers/array-entity-data-provider.js");
5
+ Object.defineProperty(exports, "ArrayEntityDataProvider", { enumerable: true, get: function () { return array_entity_data_provider_js_1.ArrayEntityDataProvider; } });
4
6
  var RepositoryImplementation_js_1 = require("./src/remult3/RepositoryImplementation.js");
5
7
  Object.defineProperty(exports, "EntityBase", { enumerable: true, get: function () { return RepositoryImplementation_js_1.EntityBase; } });
6
8
  Object.defineProperty(exports, "ControllerBase", { enumerable: true, get: function () { return RepositoryImplementation_js_1.ControllerBase; } });
package/internals.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { getRelationInfo, getRelationFieldInfo, RelationFieldInfo, RelationInfo, } from './src/remult3/relationInfoMember.js';
1
+ export { getRelationInfo, getRelationFieldInfo, RelationFieldInfo, RelationInfo, RelationFields, } from './src/remult3/relationInfoMember.js';
2
2
  export { decorateColumnSettings, controllerRefImpl, getControllerRef, } from './src/remult3/RepositoryImplementation.js';
3
3
  export { getEntitySettings } from './src/remult3/getEntityRef.js';
4
4
  export { __updateEntityBasedOnWhere } from './src/filter/filter-interfaces.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "remult",
3
- "version": "0.25.5-exp.2",
3
+ "version": "0.25.5-exp.21",
4
4
  "description": "A CRUD framework for full-stack TypeScript",
5
5
  "homepage": "https://remult.dev",
6
6
  "repository": {
package/remult-fastify.js CHANGED
@@ -15,6 +15,9 @@ function remultFastify(options) {
15
15
  end: function () {
16
16
  res.send();
17
17
  },
18
+ send: function (html) {
19
+ res.type('text/html').send(html);
20
+ },
18
21
  json: function (data) {
19
22
  res.send(data);
20
23
  },
package/remult-hapi.js CHANGED
@@ -36,6 +36,9 @@ function remultHapi(options) {
36
36
  end: function () {
37
37
  res(h.response().code(status));
38
38
  },
39
+ send: function (html) {
40
+ res(h.response(html).code(status));
41
+ },
39
42
  json: function (data) {
40
43
  res(h.response(data).code(status));
41
44
  },