remult 0.23.3 → 0.23.4

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.
@@ -31,43 +31,6 @@ export function createRemultServerCore(options, serverCoreOptions) {
31
31
  if (options.ensureSchema === undefined)
32
32
  options.ensureSchema = true;
33
33
  RemultAsyncLocalStorage.enable();
34
- const entitiesMetaData = [];
35
- dataProvider = dataProvider.then(async (dp) => {
36
- var remult = new Remult(dp);
37
- await new Promise((res) => {
38
- RemultAsyncLocalStorage.instance.run(remult, async () => {
39
- if (options.ensureSchema) {
40
- let started = false;
41
- const startConsoleLog = () => {
42
- if (started)
43
- return;
44
- started = true;
45
- console.time('Schema ensured');
46
- };
47
- entitiesMetaData.push(...options.entities.map((e) => remult.repo(e).metadata));
48
- if (dp.ensureSchema) {
49
- startConsoleLog();
50
- await dp.ensureSchema(entitiesMetaData);
51
- }
52
- for (const item of [
53
- options.liveQueryStorage,
54
- options.queueStorage,
55
- ]) {
56
- if (item?.ensureSchema) {
57
- startConsoleLog();
58
- await item.ensureSchema();
59
- }
60
- }
61
- if (started)
62
- console.timeEnd('Schema ensured');
63
- }
64
- if (options.initApi)
65
- await options.initApi(remult);
66
- res({});
67
- });
68
- });
69
- return dp;
70
- });
71
34
  {
72
35
  let allControllers = [];
73
36
  if (!options.entities)
@@ -81,7 +44,7 @@ export function createRemultServerCore(options, serverCoreOptions) {
81
44
  if (options.rootPath === undefined)
82
45
  options.rootPath = '/api';
83
46
  actionInfo.runningOnServer = true;
84
- let bridge = new RemultServerImplementation(new inProcessQueueHandler(options.queueStorage), options, dataProvider, serverCoreOptions, entitiesMetaData);
47
+ let bridge = new RemultServerImplementation(new inProcessQueueHandler(options.queueStorage), options, dataProvider, serverCoreOptions);
85
48
  return bridge;
86
49
  }
87
50
  /* @internal*/
@@ -90,18 +53,50 @@ export class RemultServerImplementation {
90
53
  options;
91
54
  dataProvider;
92
55
  coreOptions;
93
- entitiesMetaData;
94
56
  liveQueryStorage = new InMemoryLiveQueryStorage();
95
- constructor(queue, options, dataProvider, coreOptions, entitiesMetaData) {
57
+ constructor(queue, options, dataProvider, coreOptions) {
96
58
  this.queue = queue;
97
59
  this.options = options;
98
60
  this.dataProvider = dataProvider;
99
61
  this.coreOptions = coreOptions;
100
- this.entitiesMetaData = entitiesMetaData;
101
62
  if (options.liveQueryStorage)
102
63
  this.liveQueryStorage = options.liveQueryStorage;
103
64
  if (options.subscriptionServer)
104
65
  this.subscriptionServer = options.subscriptionServer;
66
+ const entitiesMetaData = [];
67
+ this.dataProvider = dataProvider.then(async (dp) => {
68
+ await this.runWithRemult(async (remult) => {
69
+ remult.dataProvider = dp;
70
+ if (options.ensureSchema) {
71
+ let started = false;
72
+ const startConsoleLog = () => {
73
+ if (started)
74
+ return;
75
+ started = true;
76
+ console.time('Schema ensured');
77
+ };
78
+ entitiesMetaData.push(...options.entities.map((e) => remult.repo(e).metadata));
79
+ if (dp.ensureSchema) {
80
+ startConsoleLog();
81
+ await dp.ensureSchema(entitiesMetaData);
82
+ }
83
+ for (const item of [
84
+ options.liveQueryStorage,
85
+ options.queueStorage,
86
+ ]) {
87
+ if (item?.ensureSchema) {
88
+ startConsoleLog();
89
+ await item.ensureSchema();
90
+ }
91
+ }
92
+ if (started)
93
+ console.timeEnd('Schema ensured');
94
+ }
95
+ if (options.initApi)
96
+ await options.initApi(remult);
97
+ }, { skipDataProvider: true });
98
+ return dp;
99
+ });
105
100
  }
106
101
  withRemultPromise(request, what) {
107
102
  return new Promise((resolve, error) => {
@@ -250,10 +245,11 @@ export class RemultServerImplementation {
250
245
  .delete(this.process(async (c, req, res, orig) => dataApiFactory(c).delete(res, orig.params.id)));
251
246
  }
252
247
  //runs with remult but without init request
253
- async runWithRemult(what) {
248
+ async runWithRemult(what, options) {
254
249
  let remult = new Remult();
255
250
  remult.liveQueryPublisher = new LiveQueryPublisher(() => remult.subscriptionServer, () => remult.liveQueryStorage, this.runWithSerializedJsonContextData);
256
- remult.dataProvider = await this.dataProvider;
251
+ if (!options?.skipDataProvider)
252
+ remult.dataProvider = await this.dataProvider;
257
253
  remult.subscriptionServer = this.subscriptionServer;
258
254
  remult.liveQueryStorage = this.liveQueryStorage;
259
255
  await new Promise((res) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "remult",
3
- "version": "0.23.3",
3
+ "version": "0.23.4",
4
4
  "description": "A CRUD framework for full-stack TypeScript",
5
5
  "types": "index.d.ts",
6
6
  "module": "esm/index.js",
@@ -15,7 +15,6 @@ var server_action_1 = require("../src/server-action");
15
15
  var server_action_info_1 = require("../src/server-action-info");
16
16
  var initDataProvider_1 = require("./initDataProvider");
17
17
  function createRemultServerCore(options, serverCoreOptions) {
18
- var _this = this;
19
18
  if (!options) {
20
19
  options = {};
21
20
  }
@@ -35,89 +34,6 @@ function createRemultServerCore(options, serverCoreOptions) {
35
34
  if (options.ensureSchema === undefined)
36
35
  options.ensureSchema = true;
37
36
  context_1.RemultAsyncLocalStorage.enable();
38
- var entitiesMetaData = [];
39
- dataProvider = dataProvider.then(function (dp) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
40
- var remult;
41
- var _this = this;
42
- return tslib_1.__generator(this, function (_a) {
43
- switch (_a.label) {
44
- case 0:
45
- remult = new context_1.Remult(dp);
46
- return [4 /*yield*/, new Promise(function (res) {
47
- context_1.RemultAsyncLocalStorage.instance.run(remult, function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
48
- var started_1, startConsoleLog, _a, _b, item, e_1_1;
49
- var e_1, _c;
50
- return tslib_1.__generator(this, function (_d) {
51
- switch (_d.label) {
52
- case 0:
53
- if (!options.ensureSchema) return [3 /*break*/, 10];
54
- started_1 = false;
55
- startConsoleLog = function () {
56
- if (started_1)
57
- return;
58
- started_1 = true;
59
- console.time('Schema ensured');
60
- };
61
- entitiesMetaData.push.apply(entitiesMetaData, tslib_1.__spreadArray([], tslib_1.__read(options.entities.map(function (e) { return remult.repo(e).metadata; })), false));
62
- if (!dp.ensureSchema) return [3 /*break*/, 2];
63
- startConsoleLog();
64
- return [4 /*yield*/, dp.ensureSchema(entitiesMetaData)];
65
- case 1:
66
- _d.sent();
67
- _d.label = 2;
68
- case 2:
69
- _d.trys.push([2, 7, 8, 9]);
70
- _a = tslib_1.__values([
71
- options.liveQueryStorage,
72
- options.queueStorage,
73
- ]), _b = _a.next();
74
- _d.label = 3;
75
- case 3:
76
- if (!!_b.done) return [3 /*break*/, 6];
77
- item = _b.value;
78
- if (!(item === null || item === void 0 ? void 0 : item.ensureSchema)) return [3 /*break*/, 5];
79
- startConsoleLog();
80
- return [4 /*yield*/, item.ensureSchema()];
81
- case 4:
82
- _d.sent();
83
- _d.label = 5;
84
- case 5:
85
- _b = _a.next();
86
- return [3 /*break*/, 3];
87
- case 6: return [3 /*break*/, 9];
88
- case 7:
89
- e_1_1 = _d.sent();
90
- e_1 = { error: e_1_1 };
91
- return [3 /*break*/, 9];
92
- case 8:
93
- try {
94
- if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
95
- }
96
- finally { if (e_1) throw e_1.error; }
97
- return [7 /*endfinally*/];
98
- case 9:
99
- if (started_1)
100
- console.timeEnd('Schema ensured');
101
- _d.label = 10;
102
- case 10:
103
- if (!options.initApi) return [3 /*break*/, 12];
104
- return [4 /*yield*/, options.initApi(remult)];
105
- case 11:
106
- _d.sent();
107
- _d.label = 12;
108
- case 12:
109
- res({});
110
- return [2 /*return*/];
111
- }
112
- });
113
- }); });
114
- })];
115
- case 1:
116
- _a.sent();
117
- return [2 /*return*/, dp];
118
- }
119
- });
120
- }); });
121
37
  {
122
38
  var allControllers = [];
123
39
  if (!options.entities)
@@ -131,23 +47,22 @@ function createRemultServerCore(options, serverCoreOptions) {
131
47
  if (options.rootPath === undefined)
132
48
  options.rootPath = '/api';
133
49
  server_action_info_1.actionInfo.runningOnServer = true;
134
- var bridge = new RemultServerImplementation(new inProcessQueueHandler(options.queueStorage), options, dataProvider, serverCoreOptions, entitiesMetaData);
50
+ var bridge = new RemultServerImplementation(new inProcessQueueHandler(options.queueStorage), options, dataProvider, serverCoreOptions);
135
51
  return bridge;
136
52
  }
137
53
  exports.createRemultServerCore = createRemultServerCore;
138
54
  /* @internal*/
139
55
  var RemultServerImplementation = /** @class */ (function () {
140
- function RemultServerImplementation(queue, options, dataProvider, coreOptions, entitiesMetaData) {
56
+ function RemultServerImplementation(queue, options, dataProvider, coreOptions) {
141
57
  var _this = this;
142
58
  this.queue = queue;
143
59
  this.options = options;
144
60
  this.dataProvider = dataProvider;
145
61
  this.coreOptions = coreOptions;
146
- this.entitiesMetaData = entitiesMetaData;
147
62
  this.liveQueryStorage = new SubscriptionServer_1.InMemoryLiveQueryStorage();
148
63
  this.runWithSerializedJsonContextData = function (jsonContextData, entityKey, what) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
149
- var _loop_1, this_1, _a, _b, e, state_1, e_2_1;
150
- var e_2, _c;
64
+ var _loop_1, this_1, _a, _b, e, state_1, e_1_1;
65
+ var e_1, _c;
151
66
  var _this = this;
152
67
  return tslib_1.__generator(this, function (_d) {
153
68
  switch (_d.label) {
@@ -211,14 +126,14 @@ var RemultServerImplementation = /** @class */ (function () {
211
126
  return [3 /*break*/, 2];
212
127
  case 5: return [3 /*break*/, 8];
213
128
  case 6:
214
- e_2_1 = _d.sent();
215
- e_2 = { error: e_2_1 };
129
+ e_1_1 = _d.sent();
130
+ e_1 = { error: e_1_1 };
216
131
  return [3 /*break*/, 8];
217
132
  case 7:
218
133
  try {
219
134
  if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
220
135
  }
221
- finally { if (e_2) throw e_2.error; }
136
+ finally { if (e_1) throw e_1.error; }
222
137
  return [7 /*endfinally*/];
223
138
  case 8: throw new Error("Couldn't find entity " + entityKey);
224
139
  }
@@ -240,6 +155,83 @@ var RemultServerImplementation = /** @class */ (function () {
240
155
  this.liveQueryStorage = options.liveQueryStorage;
241
156
  if (options.subscriptionServer)
242
157
  this.subscriptionServer = options.subscriptionServer;
158
+ var entitiesMetaData = [];
159
+ this.dataProvider = dataProvider.then(function (dp) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
160
+ var _this = this;
161
+ return tslib_1.__generator(this, function (_a) {
162
+ switch (_a.label) {
163
+ case 0: return [4 /*yield*/, this.runWithRemult(function (remult) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
164
+ var started_1, startConsoleLog, _a, _b, item, e_2_1;
165
+ var e_2, _c;
166
+ return tslib_1.__generator(this, function (_d) {
167
+ switch (_d.label) {
168
+ case 0:
169
+ remult.dataProvider = dp;
170
+ if (!options.ensureSchema) return [3 /*break*/, 10];
171
+ started_1 = false;
172
+ startConsoleLog = function () {
173
+ if (started_1)
174
+ return;
175
+ started_1 = true;
176
+ console.time('Schema ensured');
177
+ };
178
+ entitiesMetaData.push.apply(entitiesMetaData, tslib_1.__spreadArray([], tslib_1.__read(options.entities.map(function (e) { return remult.repo(e).metadata; })), false));
179
+ if (!dp.ensureSchema) return [3 /*break*/, 2];
180
+ startConsoleLog();
181
+ return [4 /*yield*/, dp.ensureSchema(entitiesMetaData)];
182
+ case 1:
183
+ _d.sent();
184
+ _d.label = 2;
185
+ case 2:
186
+ _d.trys.push([2, 7, 8, 9]);
187
+ _a = tslib_1.__values([
188
+ options.liveQueryStorage,
189
+ options.queueStorage,
190
+ ]), _b = _a.next();
191
+ _d.label = 3;
192
+ case 3:
193
+ if (!!_b.done) return [3 /*break*/, 6];
194
+ item = _b.value;
195
+ if (!(item === null || item === void 0 ? void 0 : item.ensureSchema)) return [3 /*break*/, 5];
196
+ startConsoleLog();
197
+ return [4 /*yield*/, item.ensureSchema()];
198
+ case 4:
199
+ _d.sent();
200
+ _d.label = 5;
201
+ case 5:
202
+ _b = _a.next();
203
+ return [3 /*break*/, 3];
204
+ case 6: return [3 /*break*/, 9];
205
+ case 7:
206
+ e_2_1 = _d.sent();
207
+ e_2 = { error: e_2_1 };
208
+ return [3 /*break*/, 9];
209
+ case 8:
210
+ try {
211
+ if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
212
+ }
213
+ finally { if (e_2) throw e_2.error; }
214
+ return [7 /*endfinally*/];
215
+ case 9:
216
+ if (started_1)
217
+ console.timeEnd('Schema ensured');
218
+ _d.label = 10;
219
+ case 10:
220
+ if (!options.initApi) return [3 /*break*/, 12];
221
+ return [4 /*yield*/, options.initApi(remult)];
222
+ case 11:
223
+ _d.sent();
224
+ _d.label = 12;
225
+ case 12: return [2 /*return*/];
226
+ }
227
+ });
228
+ }); }, { skipDataProvider: true })];
229
+ case 1:
230
+ _a.sent();
231
+ return [2 /*return*/, dp];
232
+ }
233
+ });
234
+ }); });
243
235
  }
244
236
  RemultServerImplementation.prototype.withRemultPromise = function (request, what) {
245
237
  var _this = this;
@@ -482,7 +474,7 @@ var RemultServerImplementation = /** @class */ (function () {
482
474
  }); }); }));
483
475
  };
484
476
  //runs with remult but without init request
485
- RemultServerImplementation.prototype.runWithRemult = function (what) {
477
+ RemultServerImplementation.prototype.runWithRemult = function (what, options) {
486
478
  return tslib_1.__awaiter(this, void 0, void 0, function () {
487
479
  var remult, _a;
488
480
  var _this = this;
@@ -491,10 +483,13 @@ var RemultServerImplementation = /** @class */ (function () {
491
483
  case 0:
492
484
  remult = new context_1.Remult();
493
485
  remult.liveQueryPublisher = new SubscriptionServer_1.LiveQueryPublisher(function () { return remult.subscriptionServer; }, function () { return remult.liveQueryStorage; }, this.runWithSerializedJsonContextData);
486
+ if (!!(options === null || options === void 0 ? void 0 : options.skipDataProvider)) return [3 /*break*/, 2];
494
487
  _a = remult;
495
488
  return [4 /*yield*/, this.dataProvider];
496
489
  case 1:
497
490
  _a.dataProvider = _b.sent();
491
+ _b.label = 2;
492
+ case 2:
498
493
  remult.subscriptionServer = this.subscriptionServer;
499
494
  remult.liveQueryStorage = this.liveQueryStorage;
500
495
  return [4 /*yield*/, new Promise(function (res) {
@@ -512,7 +507,7 @@ var RemultServerImplementation = /** @class */ (function () {
512
507
  });
513
508
  }); });
514
509
  })];
515
- case 2:
510
+ case 3:
516
511
  _b.sent();
517
512
  return [2 /*return*/];
518
513
  }