remult 3.0.5 → 3.0.6-next.0
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/server/index.js +1 -0
- package/esm/server/module.js +38 -0
- package/esm/server/remult-api-server.js +43 -19
- package/package.json +1 -1
- package/server/index.d.ts +2 -0
- package/server/index.js +3 -1
- package/server/module.d.ts +26 -0
- package/server/module.js +40 -0
- package/server/remult-api-server.d.ts +19 -0
- package/server/remult-api-server.js +65 -32
package/esm/server/index.js
CHANGED
|
@@ -5,6 +5,7 @@ export { SseSubscriptionServer } from '../SseSubscriptionServer.js';
|
|
|
5
5
|
export { DataProviderLiveQueryStorage } from '../live-query/data-provider-live-query-storage.js';
|
|
6
6
|
export { JsonEntityFileStorage, JsonFileDataProvider, } from './JsonEntityFileStorage.js';
|
|
7
7
|
export { TestApiDataProvider } from './test-api-data-provider.js';
|
|
8
|
+
export { Module } from './module.js';
|
|
8
9
|
export function createRemultServer(options, serverCoreOptions) {
|
|
9
10
|
initAsyncHooks();
|
|
10
11
|
return createRemultServerCore(options, serverCoreOptions || {
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export class Module {
|
|
2
|
+
key;
|
|
3
|
+
priority;
|
|
4
|
+
entities;
|
|
5
|
+
controllers;
|
|
6
|
+
initApi;
|
|
7
|
+
initRequest;
|
|
8
|
+
modules;
|
|
9
|
+
constructor(options) {
|
|
10
|
+
this.key = options.key;
|
|
11
|
+
this.priority = options.priority ?? 0;
|
|
12
|
+
this.entities = options.entities;
|
|
13
|
+
this.controllers = options.controllers;
|
|
14
|
+
this.initRequest = options.initRequest;
|
|
15
|
+
this.initApi = options.initApi;
|
|
16
|
+
this.modules = options.modules;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Full flat and ordered list by index and concatenaining the modules name
|
|
21
|
+
*/
|
|
22
|
+
export const modulesFlatAndOrdered = (modules) => {
|
|
23
|
+
const flattenModules = (modules, parentName = '') => {
|
|
24
|
+
return modules.reduce((acc, module) => {
|
|
25
|
+
const fullKey = parentName ? `${parentName}-${module.key}` : module.key;
|
|
26
|
+
// Create a new module object without the 'modules' property
|
|
27
|
+
const { modules: _, ...flatModule } = module;
|
|
28
|
+
const newModule = { ...flatModule, key: fullKey };
|
|
29
|
+
const subModules = module.modules
|
|
30
|
+
? flattenModules(module.modules, fullKey)
|
|
31
|
+
: [];
|
|
32
|
+
return [...acc, newModule, ...subModules];
|
|
33
|
+
}, []);
|
|
34
|
+
};
|
|
35
|
+
const flatModules = flattenModules(modules);
|
|
36
|
+
flatModules.sort((a, b) => a.priority - b.priority);
|
|
37
|
+
return flatModules;
|
|
38
|
+
};
|
|
@@ -14,6 +14,7 @@ import { remultStatic } from '../src/remult-static.js';
|
|
|
14
14
|
import remultAdminHtml, { buildEntityInfo } from './remult-admin.js';
|
|
15
15
|
import { isOfType } from '../src/isOfType.js';
|
|
16
16
|
import { initDataProviderOrJson } from './initDataProviderOrJson.js';
|
|
17
|
+
import { modulesFlatAndOrdered } from './module.js';
|
|
17
18
|
export function createRemultServerCore(options, serverCoreOptions) {
|
|
18
19
|
const safeOptions = options ?? {};
|
|
19
20
|
if (!safeOptions.entities)
|
|
@@ -57,6 +58,9 @@ export class RemultServerImplementation {
|
|
|
57
58
|
dataProvider;
|
|
58
59
|
coreOptions;
|
|
59
60
|
liveQueryStorage = new InMemoryLiveQueryStorage();
|
|
61
|
+
modulesSorted = [];
|
|
62
|
+
entities = [];
|
|
63
|
+
controllers = [];
|
|
60
64
|
constructor(queue, options, dataProvider, coreOptions) {
|
|
61
65
|
this.queue = queue;
|
|
62
66
|
this.options = options;
|
|
@@ -67,6 +71,19 @@ export class RemultServerImplementation {
|
|
|
67
71
|
if (options.subscriptionServer)
|
|
68
72
|
this.subscriptionServer = options.subscriptionServer;
|
|
69
73
|
const entitiesMetaData = [];
|
|
74
|
+
const modules = options.modules ?? [];
|
|
75
|
+
modules.push({
|
|
76
|
+
key: 'default',
|
|
77
|
+
priority: 0,
|
|
78
|
+
entities: options.entities ?? [],
|
|
79
|
+
controllers: options.controllers ?? [],
|
|
80
|
+
initApi: options.initApi,
|
|
81
|
+
initRequest: options.initRequest,
|
|
82
|
+
modules: [],
|
|
83
|
+
});
|
|
84
|
+
this.modulesSorted = modulesFlatAndOrdered(modules);
|
|
85
|
+
this.entities = this.modulesSorted.flatMap((m) => m.entities ?? []);
|
|
86
|
+
this.controllers = this.modulesSorted.flatMap((m) => m.controllers ?? []);
|
|
70
87
|
this.dataProvider = dataProvider.then(async (dp) => {
|
|
71
88
|
await this.runWithRemult(async (remult) => {
|
|
72
89
|
remult.dataProvider = dp;
|
|
@@ -78,8 +95,8 @@ export class RemultServerImplementation {
|
|
|
78
95
|
started = true;
|
|
79
96
|
console.time('Schema ensured');
|
|
80
97
|
};
|
|
81
|
-
if (
|
|
82
|
-
entitiesMetaData.push(...
|
|
98
|
+
if (this.entities)
|
|
99
|
+
entitiesMetaData.push(...this.entities.map((e) => remult.repo(e).metadata));
|
|
83
100
|
if (dp.ensureSchema) {
|
|
84
101
|
startConsoleLog();
|
|
85
102
|
await dp.ensureSchema(entitiesMetaData);
|
|
@@ -96,8 +113,12 @@ export class RemultServerImplementation {
|
|
|
96
113
|
if (started)
|
|
97
114
|
console.timeEnd('Schema ensured');
|
|
98
115
|
}
|
|
99
|
-
|
|
100
|
-
|
|
116
|
+
for (let i = 0; i < this.modulesSorted.length; i++) {
|
|
117
|
+
const _initApi = this.modulesSorted[i].initApi;
|
|
118
|
+
if (_initApi) {
|
|
119
|
+
await _initApi(remult);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
101
122
|
}, { skipDataProvider: true });
|
|
102
123
|
return dp;
|
|
103
124
|
});
|
|
@@ -124,10 +145,10 @@ export class RemultServerImplementation {
|
|
|
124
145
|
getEntities() {
|
|
125
146
|
//TODO V2 - consider using entitiesMetaData - but it may require making it all awaitable
|
|
126
147
|
var r = new Remult();
|
|
127
|
-
return this.
|
|
148
|
+
return this.entities.map((x) => r.repo(x).metadata);
|
|
128
149
|
}
|
|
129
150
|
runWithSerializedJsonContextData = async (jsonContextData, entityKey, what) => {
|
|
130
|
-
for (const e of this.
|
|
151
|
+
for (const e of this.entities) {
|
|
131
152
|
let key = getEntityKey(e);
|
|
132
153
|
if (key === entityKey) {
|
|
133
154
|
await this.runWithRemult(async (remult) => {
|
|
@@ -173,7 +194,7 @@ export class RemultServerImplementation {
|
|
|
173
194
|
throw 'Router already registered';
|
|
174
195
|
this.registeredRouter = true;
|
|
175
196
|
{
|
|
176
|
-
for (const c of this.
|
|
197
|
+
for (const c of this.controllers) {
|
|
177
198
|
let z = c[classBackendMethodsArray];
|
|
178
199
|
if (z)
|
|
179
200
|
for (const a of z) {
|
|
@@ -211,7 +232,7 @@ export class RemultServerImplementation {
|
|
|
211
232
|
if (orig?.params?.id === '__entities-metadata') {
|
|
212
233
|
res.success(buildEntityInfo({
|
|
213
234
|
remult,
|
|
214
|
-
entities: this.
|
|
235
|
+
entities: this.entities,
|
|
215
236
|
}));
|
|
216
237
|
}
|
|
217
238
|
else {
|
|
@@ -259,7 +280,7 @@ export class RemultServerImplementation {
|
|
|
259
280
|
res.success(await remult.liveQueryStorage.keepAliveAndReturnUnknownQueryIds(await this.coreOptions.getRequestBody(origReq)));
|
|
260
281
|
}));
|
|
261
282
|
}
|
|
262
|
-
this.
|
|
283
|
+
this.entities.forEach((e) => {
|
|
263
284
|
this.addEntity(e, getEntityKey(e), r);
|
|
264
285
|
});
|
|
265
286
|
}
|
|
@@ -351,16 +372,19 @@ export class RemultServerImplementation {
|
|
|
351
372
|
}
|
|
352
373
|
if (user)
|
|
353
374
|
remult.user = user;
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
375
|
+
for (let i = 0; i < this.modulesSorted.length; i++) {
|
|
376
|
+
const _initRequest = this.modulesSorted[i].initRequest;
|
|
377
|
+
if (_initRequest) {
|
|
378
|
+
await _initRequest(req, {
|
|
379
|
+
remult,
|
|
380
|
+
get liveQueryStorage() {
|
|
381
|
+
return remult.liveQueryStorage;
|
|
382
|
+
},
|
|
383
|
+
set liveQueryStorage(value) {
|
|
384
|
+
remult.liveQueryStorage = value;
|
|
385
|
+
},
|
|
386
|
+
});
|
|
387
|
+
}
|
|
364
388
|
}
|
|
365
389
|
await what(remult, myReq, myRes, genReq, origRes, req);
|
|
366
390
|
}
|
package/package.json
CHANGED
package/server/index.d.ts
CHANGED
|
@@ -4,4 +4,6 @@ export { DataProviderLiveQueryStorage } from '../live-query/data-provider-live-q
|
|
|
4
4
|
export { JsonEntityFileStorage, JsonFileDataProvider, } from './JsonEntityFileStorage.js';
|
|
5
5
|
export { TestApiDataProvider } from './test-api-data-provider.js';
|
|
6
6
|
export { GenericRequestHandler, GenericRequestInfo, GenericResponse, GenericRouter, InitRequestOptions, QueueStorage, RemultServer, RemultServerCore, RemultServerOptions, SpecificRoute, queuedJobInfo, } from './remult-api-server.js';
|
|
7
|
+
export { Module } from './module.js';
|
|
8
|
+
export type { ModuleInput } from './module.js';
|
|
7
9
|
export declare function createRemultServer<RequestType>(options: RemultServerOptions<RequestType>, serverCoreOptions?: ServerCoreOptions<RequestType>): RemultServer<RequestType>;
|
package/server/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TestApiDataProvider = exports.JsonFileDataProvider = exports.JsonEntityFileStorage = exports.DataProviderLiveQueryStorage = exports.SseSubscriptionServer = void 0;
|
|
3
|
+
exports.Module = exports.TestApiDataProvider = exports.JsonFileDataProvider = exports.JsonEntityFileStorage = exports.DataProviderLiveQueryStorage = exports.SseSubscriptionServer = void 0;
|
|
4
4
|
exports.createRemultServer = createRemultServer;
|
|
5
5
|
var tslib_1 = require("tslib");
|
|
6
6
|
var remult_api_server_js_1 = require("./remult-api-server.js");
|
|
@@ -15,6 +15,8 @@ Object.defineProperty(exports, "JsonEntityFileStorage", { enumerable: true, get:
|
|
|
15
15
|
Object.defineProperty(exports, "JsonFileDataProvider", { enumerable: true, get: function () { return JsonEntityFileStorage_js_1.JsonFileDataProvider; } });
|
|
16
16
|
var test_api_data_provider_js_1 = require("./test-api-data-provider.js");
|
|
17
17
|
Object.defineProperty(exports, "TestApiDataProvider", { enumerable: true, get: function () { return test_api_data_provider_js_1.TestApiDataProvider; } });
|
|
18
|
+
var module_js_1 = require("./module.js");
|
|
19
|
+
Object.defineProperty(exports, "Module", { enumerable: true, get: function () { return module_js_1.Module; } });
|
|
18
20
|
function createRemultServer(options, serverCoreOptions) {
|
|
19
21
|
var _this = this;
|
|
20
22
|
(0, initAsyncHooks_js_1.initAsyncHooks)();
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ClassType } from '../classType.js';
|
|
2
|
+
import type { RemultServerOptions } from './remult-api-server.js';
|
|
3
|
+
export interface ModuleInput<RequestType> {
|
|
4
|
+
key: string;
|
|
5
|
+
/** @default 0 */
|
|
6
|
+
priority?: number;
|
|
7
|
+
entities?: ClassType<unknown>[];
|
|
8
|
+
controllers?: ClassType<unknown>[];
|
|
9
|
+
initApi?: RemultServerOptions<RequestType>['initApi'];
|
|
10
|
+
initRequest?: RemultServerOptions<RequestType>['initRequest'];
|
|
11
|
+
modules?: Module<RequestType>[];
|
|
12
|
+
}
|
|
13
|
+
export declare class Module<RequestType> {
|
|
14
|
+
key: string;
|
|
15
|
+
priority: number;
|
|
16
|
+
entities?: ClassType<unknown>[];
|
|
17
|
+
controllers?: ClassType<unknown>[];
|
|
18
|
+
initApi?: RemultServerOptions<RequestType>['initApi'];
|
|
19
|
+
initRequest?: RemultServerOptions<RequestType>['initRequest'];
|
|
20
|
+
modules?: Module<RequestType>[];
|
|
21
|
+
constructor(options: ModuleInput<RequestType>);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Full flat and ordered list by index and concatenaining the modules name
|
|
25
|
+
*/
|
|
26
|
+
export declare const modulesFlatAndOrdered: <RequestType>(modules: Module<RequestType>[]) => Module<RequestType>[];
|
package/server/module.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.modulesFlatAndOrdered = exports.Module = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var Module = /** @class */ (function () {
|
|
6
|
+
function Module(options) {
|
|
7
|
+
var _a;
|
|
8
|
+
this.key = options.key;
|
|
9
|
+
this.priority = (_a = options.priority) !== null && _a !== void 0 ? _a : 0;
|
|
10
|
+
this.entities = options.entities;
|
|
11
|
+
this.controllers = options.controllers;
|
|
12
|
+
this.initRequest = options.initRequest;
|
|
13
|
+
this.initApi = options.initApi;
|
|
14
|
+
this.modules = options.modules;
|
|
15
|
+
}
|
|
16
|
+
return Module;
|
|
17
|
+
}());
|
|
18
|
+
exports.Module = Module;
|
|
19
|
+
/**
|
|
20
|
+
* Full flat and ordered list by index and concatenaining the modules name
|
|
21
|
+
*/
|
|
22
|
+
var modulesFlatAndOrdered = function (modules) {
|
|
23
|
+
var flattenModules = function (modules, parentName) {
|
|
24
|
+
if (parentName === void 0) { parentName = ''; }
|
|
25
|
+
return modules.reduce(function (acc, module) {
|
|
26
|
+
var fullKey = parentName ? "".concat(parentName, "-").concat(module.key) : module.key;
|
|
27
|
+
// Create a new module object without the 'modules' property
|
|
28
|
+
var _ = module.modules, flatModule = tslib_1.__rest(module, ["modules"]);
|
|
29
|
+
var newModule = tslib_1.__assign(tslib_1.__assign({}, flatModule), { key: fullKey });
|
|
30
|
+
var subModules = module.modules
|
|
31
|
+
? flattenModules(module.modules, fullKey)
|
|
32
|
+
: [];
|
|
33
|
+
return tslib_1.__spreadArray(tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(acc), false), [newModule], false), tslib_1.__read(subModules), false);
|
|
34
|
+
}, []);
|
|
35
|
+
};
|
|
36
|
+
var flatModules = flattenModules(modules);
|
|
37
|
+
flatModules.sort(function (a, b) { return a.priority - b.priority; });
|
|
38
|
+
return flatModules;
|
|
39
|
+
};
|
|
40
|
+
exports.modulesFlatAndOrdered = modulesFlatAndOrdered;
|
|
@@ -6,6 +6,7 @@ import type { LiveQueryStorage, SubscriptionServer } from '../src/live-query/Sub
|
|
|
6
6
|
import { IdEntity } from '../src/remult3/IdEntity.js';
|
|
7
7
|
import type { EntityMetadata, Repository } from '../src/remult3/remult3.js';
|
|
8
8
|
import type { queuedJobInfoResponse } from '../src/server-action.js';
|
|
9
|
+
import { type Module } from './module.js';
|
|
9
10
|
export interface RemultServerOptions<RequestType> {
|
|
10
11
|
/**Entities to use for the api */
|
|
11
12
|
entities?: ClassType<any>[];
|
|
@@ -92,6 +93,24 @@ export interface RemultServerOptions<RequestType> {
|
|
|
92
93
|
responseBody: any;
|
|
93
94
|
sendError: (httpStatusCode: number, body: any) => void;
|
|
94
95
|
}) => Promise<void> | undefined;
|
|
96
|
+
/**
|
|
97
|
+
* Modules are here to group code by feature.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* import { Module } from 'remult/server'
|
|
101
|
+
*
|
|
102
|
+
* modules: [
|
|
103
|
+
* new Module({
|
|
104
|
+
* key: 'analytics',
|
|
105
|
+
* entities: [AnalyticsEvent],
|
|
106
|
+
* controllers: [AnalyticsController],
|
|
107
|
+
* initApi: () => {
|
|
108
|
+
* console.log('analytics module initialized')
|
|
109
|
+
* },
|
|
110
|
+
* }),
|
|
111
|
+
* ]
|
|
112
|
+
*/
|
|
113
|
+
modules?: Module<RequestType>[];
|
|
95
114
|
}
|
|
96
115
|
export interface InitRequestOptions {
|
|
97
116
|
liveQueryStorage: LiveQueryStorage;
|
|
@@ -18,6 +18,7 @@ var remult_static_js_1 = require("../src/remult-static.js");
|
|
|
18
18
|
var remult_admin_js_1 = tslib_1.__importStar(require("./remult-admin.js"));
|
|
19
19
|
var isOfType_js_1 = require("../src/isOfType.js");
|
|
20
20
|
var initDataProviderOrJson_js_1 = require("./initDataProviderOrJson.js");
|
|
21
|
+
var module_js_1 = require("./module.js");
|
|
21
22
|
function createRemultServerCore(options, serverCoreOptions) {
|
|
22
23
|
var safeOptions = options !== null && options !== void 0 ? options : {};
|
|
23
24
|
if (!safeOptions.entities)
|
|
@@ -58,11 +59,15 @@ function createRemultServerCore(options, serverCoreOptions) {
|
|
|
58
59
|
var RemultServerImplementation = /** @class */ (function () {
|
|
59
60
|
function RemultServerImplementation(queue, options, dataProvider, coreOptions) {
|
|
60
61
|
var _this = this;
|
|
62
|
+
var _a, _b, _c;
|
|
61
63
|
this.queue = queue;
|
|
62
64
|
this.options = options;
|
|
63
65
|
this.dataProvider = dataProvider;
|
|
64
66
|
this.coreOptions = coreOptions;
|
|
65
67
|
this.liveQueryStorage = new SubscriptionServer_js_1.InMemoryLiveQueryStorage();
|
|
68
|
+
this.modulesSorted = [];
|
|
69
|
+
this.entities = [];
|
|
70
|
+
this.controllers = [];
|
|
66
71
|
this.runWithSerializedJsonContextData = function (jsonContextData, entityKey, what) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
67
72
|
var _loop_1, this_1, _a, _b, e, state_1, e_1_1;
|
|
68
73
|
var e_1, _c;
|
|
@@ -113,7 +118,7 @@ var RemultServerImplementation = /** @class */ (function () {
|
|
|
113
118
|
_d.label = 1;
|
|
114
119
|
case 1:
|
|
115
120
|
_d.trys.push([1, 6, 7, 8]);
|
|
116
|
-
_a = tslib_1.__values(this.
|
|
121
|
+
_a = tslib_1.__values(this.entities), _b = _a.next();
|
|
117
122
|
_d.label = 2;
|
|
118
123
|
case 2:
|
|
119
124
|
if (!!_b.done) return [3 /*break*/, 5];
|
|
@@ -171,12 +176,25 @@ var RemultServerImplementation = /** @class */ (function () {
|
|
|
171
176
|
if (options.subscriptionServer)
|
|
172
177
|
this.subscriptionServer = options.subscriptionServer;
|
|
173
178
|
var entitiesMetaData = [];
|
|
179
|
+
var modules = (_a = options.modules) !== null && _a !== void 0 ? _a : [];
|
|
180
|
+
modules.push({
|
|
181
|
+
key: 'default',
|
|
182
|
+
priority: 0,
|
|
183
|
+
entities: (_b = options.entities) !== null && _b !== void 0 ? _b : [],
|
|
184
|
+
controllers: (_c = options.controllers) !== null && _c !== void 0 ? _c : [],
|
|
185
|
+
initApi: options.initApi,
|
|
186
|
+
initRequest: options.initRequest,
|
|
187
|
+
modules: [],
|
|
188
|
+
});
|
|
189
|
+
this.modulesSorted = (0, module_js_1.modulesFlatAndOrdered)(modules);
|
|
190
|
+
this.entities = this.modulesSorted.flatMap(function (m) { var _a; return (_a = m.entities) !== null && _a !== void 0 ? _a : []; });
|
|
191
|
+
this.controllers = this.modulesSorted.flatMap(function (m) { var _a; return (_a = m.controllers) !== null && _a !== void 0 ? _a : []; });
|
|
174
192
|
this.dataProvider = dataProvider.then(function (dp) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
175
193
|
var _this = this;
|
|
176
194
|
return tslib_1.__generator(this, function (_a) {
|
|
177
195
|
switch (_a.label) {
|
|
178
196
|
case 0: return [4 /*yield*/, this.runWithRemult(function (remult) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
179
|
-
var started_1, startConsoleLog, _a, _b, item, e_2_1;
|
|
197
|
+
var started_1, startConsoleLog, _a, _b, item, e_2_1, i, _initApi;
|
|
180
198
|
var e_2, _c;
|
|
181
199
|
return tslib_1.__generator(this, function (_d) {
|
|
182
200
|
switch (_d.label) {
|
|
@@ -190,8 +208,8 @@ var RemultServerImplementation = /** @class */ (function () {
|
|
|
190
208
|
started_1 = true;
|
|
191
209
|
console.time('Schema ensured');
|
|
192
210
|
};
|
|
193
|
-
if (
|
|
194
|
-
entitiesMetaData.push.apply(entitiesMetaData, tslib_1.__spreadArray([], tslib_1.__read(
|
|
211
|
+
if (this.entities)
|
|
212
|
+
entitiesMetaData.push.apply(entitiesMetaData, tslib_1.__spreadArray([], tslib_1.__read(this.entities.map(function (e) { return remult.repo(e).metadata; })), false));
|
|
195
213
|
if (!dp.ensureSchema) return [3 /*break*/, 2];
|
|
196
214
|
startConsoleLog();
|
|
197
215
|
return [4 /*yield*/, dp.ensureSchema(entitiesMetaData)];
|
|
@@ -233,12 +251,20 @@ var RemultServerImplementation = /** @class */ (function () {
|
|
|
233
251
|
console.timeEnd('Schema ensured');
|
|
234
252
|
_d.label = 10;
|
|
235
253
|
case 10:
|
|
236
|
-
|
|
237
|
-
|
|
254
|
+
i = 0;
|
|
255
|
+
_d.label = 11;
|
|
238
256
|
case 11:
|
|
257
|
+
if (!(i < this.modulesSorted.length)) return [3 /*break*/, 14];
|
|
258
|
+
_initApi = this.modulesSorted[i].initApi;
|
|
259
|
+
if (!_initApi) return [3 /*break*/, 13];
|
|
260
|
+
return [4 /*yield*/, _initApi(remult)];
|
|
261
|
+
case 12:
|
|
239
262
|
_d.sent();
|
|
240
|
-
_d.label =
|
|
241
|
-
case
|
|
263
|
+
_d.label = 13;
|
|
264
|
+
case 13:
|
|
265
|
+
i++;
|
|
266
|
+
return [3 /*break*/, 11];
|
|
267
|
+
case 14: return [2 /*return*/];
|
|
242
268
|
}
|
|
243
269
|
});
|
|
244
270
|
}); }, { skipDataProvider: true })];
|
|
@@ -284,7 +310,7 @@ var RemultServerImplementation = /** @class */ (function () {
|
|
|
284
310
|
RemultServerImplementation.prototype.getEntities = function () {
|
|
285
311
|
//TODO V2 - consider using entitiesMetaData - but it may require making it all awaitable
|
|
286
312
|
var r = new context_js_1.Remult();
|
|
287
|
-
return this.
|
|
313
|
+
return this.entities.map(function (x) { return r.repo(x).metadata; });
|
|
288
314
|
};
|
|
289
315
|
RemultServerImplementation.prototype.getRouteImpl = function () {
|
|
290
316
|
if (!this.routeImpl) {
|
|
@@ -299,14 +325,13 @@ var RemultServerImplementation = /** @class */ (function () {
|
|
|
299
325
|
RemultServerImplementation.prototype.registerRouter = function (r) {
|
|
300
326
|
var e_3, _a, e_4, _b;
|
|
301
327
|
var _this = this;
|
|
302
|
-
var _c;
|
|
303
328
|
if (this.registeredRouter)
|
|
304
329
|
throw 'Router already registered';
|
|
305
330
|
this.registeredRouter = true;
|
|
306
331
|
{
|
|
307
332
|
try {
|
|
308
|
-
for (var
|
|
309
|
-
var c =
|
|
333
|
+
for (var _c = tslib_1.__values(this.controllers), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
334
|
+
var c = _d.value;
|
|
310
335
|
var z = c[server_action_js_1.classBackendMethodsArray];
|
|
311
336
|
if (z)
|
|
312
337
|
try {
|
|
@@ -331,7 +356,7 @@ var RemultServerImplementation = /** @class */ (function () {
|
|
|
331
356
|
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
332
357
|
finally {
|
|
333
358
|
try {
|
|
334
|
-
if (
|
|
359
|
+
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
|
|
335
360
|
}
|
|
336
361
|
finally { if (e_3) throw e_3.error; }
|
|
337
362
|
}
|
|
@@ -365,8 +390,8 @@ var RemultServerImplementation = /** @class */ (function () {
|
|
|
365
390
|
var admin = function () {
|
|
366
391
|
return _this.process(function (remult, req, res, orig, origResponse) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
367
392
|
var allowed, head, requireAuthToken, disableLiveQuery;
|
|
368
|
-
var _a, _b, _c, _d, _e, _f, _g
|
|
369
|
-
return tslib_1.__generator(this, function (
|
|
393
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
394
|
+
return tslib_1.__generator(this, function (_h) {
|
|
370
395
|
allowed = (0, isOfType_js_1.isOfType)(this.options.admin, 'allow')
|
|
371
396
|
? this.options.admin.allow
|
|
372
397
|
: this.options.admin;
|
|
@@ -374,7 +399,7 @@ var RemultServerImplementation = /** @class */ (function () {
|
|
|
374
399
|
if (((_a = orig === null || orig === void 0 ? void 0 : orig.params) === null || _a === void 0 ? void 0 : _a.id) === '__entities-metadata') {
|
|
375
400
|
res.success((0, remult_admin_js_1.buildEntityInfo)({
|
|
376
401
|
remult: remult,
|
|
377
|
-
entities:
|
|
402
|
+
entities: this.entities,
|
|
378
403
|
}));
|
|
379
404
|
}
|
|
380
405
|
else {
|
|
@@ -382,14 +407,14 @@ var RemultServerImplementation = /** @class */ (function () {
|
|
|
382
407
|
requireAuthToken = false;
|
|
383
408
|
disableLiveQuery = false;
|
|
384
409
|
if ((0, isOfType_js_1.isOfType)(this.options.admin, 'allow')) {
|
|
385
|
-
head = (
|
|
410
|
+
head = (_d = (_c = (_b = this.options.admin).customHtmlHead) === null || _c === void 0 ? void 0 : _c.call(_b, remult)) !== null && _d !== void 0 ? _d : head;
|
|
386
411
|
requireAuthToken =
|
|
387
|
-
(
|
|
412
|
+
(_e = this.options.admin.requireAuthToken) !== null && _e !== void 0 ? _e : requireAuthToken;
|
|
388
413
|
disableLiveQuery =
|
|
389
|
-
(
|
|
414
|
+
(_f = this.options.admin.disableLiveQuery) !== null && _f !== void 0 ? _f : disableLiveQuery;
|
|
390
415
|
}
|
|
391
416
|
origResponse.send((0, remult_admin_js_1.default)({
|
|
392
|
-
rootPath: (
|
|
417
|
+
rootPath: (_g = this.options.rootPath) !== null && _g !== void 0 ? _g : '/api',
|
|
393
418
|
head: head,
|
|
394
419
|
requireAuthToken: requireAuthToken,
|
|
395
420
|
disableLiveQuery: disableLiveQuery,
|
|
@@ -465,7 +490,7 @@ var RemultServerImplementation = /** @class */ (function () {
|
|
|
465
490
|
});
|
|
466
491
|
}); }));
|
|
467
492
|
}
|
|
468
|
-
|
|
493
|
+
this.entities.forEach(function (e) {
|
|
469
494
|
_this.addEntity(e, (0, getEntityRef_js_1.getEntityKey)(e), r);
|
|
470
495
|
});
|
|
471
496
|
};
|
|
@@ -627,17 +652,17 @@ var RemultServerImplementation = /** @class */ (function () {
|
|
|
627
652
|
return [4 /*yield*/, what(remult_static_js_1.remultStatic.asyncContext.getStore().remult, myReq, myRes, genReq, origRes, req)];
|
|
628
653
|
case 2: return [2 /*return*/, _a.sent()];
|
|
629
654
|
case 3: return [4 /*yield*/, this.runWithRemult(function (remult) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
630
|
-
var user;
|
|
655
|
+
var user, i, _initRequest;
|
|
631
656
|
return tslib_1.__generator(this, function (_a) {
|
|
632
657
|
switch (_a.label) {
|
|
633
658
|
case 0:
|
|
634
|
-
if (!req) return [3 /*break*/,
|
|
659
|
+
if (!req) return [3 /*break*/, 11];
|
|
635
660
|
;
|
|
636
661
|
remult.context.request = req;
|
|
637
662
|
remult_static_js_1.remultStatic.asyncContext.setInInitRequest(true);
|
|
638
663
|
_a.label = 1;
|
|
639
664
|
case 1:
|
|
640
|
-
_a.trys.push([1, ,
|
|
665
|
+
_a.trys.push([1, , 10, 11]);
|
|
641
666
|
user = void 0;
|
|
642
667
|
if (!this.options.getUser) return [3 /*break*/, 3];
|
|
643
668
|
return [4 /*yield*/, this.options.getUser(req)];
|
|
@@ -654,8 +679,13 @@ var RemultServerImplementation = /** @class */ (function () {
|
|
|
654
679
|
case 4:
|
|
655
680
|
if (user)
|
|
656
681
|
remult.user = user;
|
|
657
|
-
|
|
658
|
-
|
|
682
|
+
i = 0;
|
|
683
|
+
_a.label = 5;
|
|
684
|
+
case 5:
|
|
685
|
+
if (!(i < this.modulesSorted.length)) return [3 /*break*/, 8];
|
|
686
|
+
_initRequest = this.modulesSorted[i].initRequest;
|
|
687
|
+
if (!_initRequest) return [3 /*break*/, 7];
|
|
688
|
+
return [4 /*yield*/, _initRequest(req, {
|
|
659
689
|
remult: remult,
|
|
660
690
|
get liveQueryStorage() {
|
|
661
691
|
return remult.liveQueryStorage;
|
|
@@ -664,17 +694,20 @@ var RemultServerImplementation = /** @class */ (function () {
|
|
|
664
694
|
remult.liveQueryStorage = value;
|
|
665
695
|
},
|
|
666
696
|
})];
|
|
667
|
-
case
|
|
697
|
+
case 6:
|
|
668
698
|
_a.sent();
|
|
669
|
-
_a.label =
|
|
670
|
-
case 6: return [4 /*yield*/, what(remult, myReq, myRes, genReq, origRes, req)];
|
|
699
|
+
_a.label = 7;
|
|
671
700
|
case 7:
|
|
701
|
+
i++;
|
|
702
|
+
return [3 /*break*/, 5];
|
|
703
|
+
case 8: return [4 /*yield*/, what(remult, myReq, myRes, genReq, origRes, req)];
|
|
704
|
+
case 9:
|
|
672
705
|
_a.sent();
|
|
673
|
-
return [3 /*break*/,
|
|
674
|
-
case
|
|
706
|
+
return [3 /*break*/, 11];
|
|
707
|
+
case 10:
|
|
675
708
|
remult_static_js_1.remultStatic.asyncContext.setInInitRequest(false);
|
|
676
709
|
return [7 /*endfinally*/];
|
|
677
|
-
case
|
|
710
|
+
case 11: return [2 /*return*/];
|
|
678
711
|
}
|
|
679
712
|
});
|
|
680
713
|
}); })];
|