remult 0.14.6 → 0.14.7
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/assign.js +5 -1
- package/classType.js +2 -1
- package/graphql.js +146 -84
- package/index.js +73 -25
- package/inputTypes.js +16 -9
- package/package.json +1 -2
- package/postgres/index.js +4 -1
- package/postgres/postgres-data-provider.d.ts +4 -1
- package/postgres/postgres-data-provider.js +364 -165
- package/postgres/postgresColumnSyntax.d.ts +1 -1
- package/postgres/postgresColumnSyntax.js +8 -4
- package/remult-express.js +10 -6
- package/remult-knex/index.d.ts +5 -2
- package/remult-knex/index.js +720 -300
- package/remult-middleware.js +29 -24
- package/remult-mongo.js +406 -172
- package/server/JsonEntityFileStorage.js +15 -10
- package/server/expressBridge.d.ts +4 -2
- package/server/expressBridge.js +570 -383
- package/server/index.js +11 -4
- package/server/register-actions-on-server.js +38 -12
- package/server/register-entities-on-server.js +13 -9
- package/src/__EntityValueProvider.js +2 -1
- package/src/__RowsOfDataForTesting.js +2 -1
- package/src/backend-tests/backend-database-test-setup.backend-spec.js +190 -72
- package/src/backend-tests/my-test.backend-spec.js +114 -45
- package/src/column-interfaces.js +6 -2
- package/src/column.js +113 -71
- package/src/context.js +330 -174
- package/src/data-api.js +326 -162
- package/src/data-interfaces.js +11 -7
- package/src/data-providers/array-entity-data-provider.js +286 -171
- package/src/data-providers/in-memory-database.js +27 -12
- package/src/data-providers/json-data-provider.js +77 -41
- package/src/data-providers/rest-data-provider.js +189 -102
- package/src/data-providers/sql-database.js +403 -223
- package/src/data-providers/web-sql-data-provider.js +139 -78
- package/src/entity.js +2 -1
- package/src/filter/filter-consumer-bridge-to-sql-request.d.ts +1 -1
- package/src/filter/filter-consumer-bridge-to-sql-request.js +248 -106
- package/src/filter/filter-consumer-bridge-to-url-builder.js +2 -1
- package/src/filter/filter-interfaces.js +440 -277
- package/src/id-entity.js +17 -8
- package/src/remult3/RepositoryImplementation.js +2367 -1191
- package/src/remult3/index.js +5 -2
- package/src/remult3/remult3.js +2 -1
- package/src/server-action.js +528 -294
- package/src/shared-tests/db-tests-setup.js +153 -49
- package/src/shared-tests/db-tests.db-tests.js +1566 -660
- package/src/shared-tests/deleteAll.js +20 -3
- package/src/shared-tests/entityWithValidations.js +79 -52
- package/src/shared-tests/index.js +6 -4
- package/src/shared-tests/test-custom-id-column.spec.js +85 -37
- package/src/shared-tests/test-special-value.spec.js +104 -64
- package/src/shared-tests/test-update-with-null.spec.js +49 -28
- package/src/sort.js +95 -38
- package/src/sql-command.js +2 -1
- package/src/tests/Done.js +13 -7
- package/src/tests/TestDataApiResponse.js +22 -15
- package/src/tests/c.js +27 -21
- package/src/tests/createData.js +48 -20
- package/src/tests/d.js +27 -19
- package/src/tests/dWithPrefilter.js +44 -31
- package/src/tests/entityForCustomFilter.js +66 -42
- package/src/tests/entityWithValidationsOnColumn.js +29 -21
- package/src/tests/frontend-database-tests-setup.spec.js +98 -35
- package/src/tests/h.js +44 -35
- package/src/tests/remult-3-entities.js +80 -71
- package/src/tests/tasks.js +29 -23
- package/src/tests/testHelper.spec.js +322 -170
- package/src/tests/testModel/models.js +33 -25
- package/src/validators.js +59 -32
- package/urlBuilder.js +14 -8
- package/valueConverters.js +160 -161
package/src/context.js
CHANGED
|
@@ -1,119 +1,170 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EventSource = exports.queryConfig = exports.Allow = exports.setControllerSettings = exports.MethodHelper = exports.ClassHelper = exports.classHelpers = exports.allEntities = exports.Remult = exports.isBackend = exports.processHttpException = exports.toPromise = exports.retry = exports.HttpProviderBridgeToRestDataProviderHttpProvider = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var server_action_1 = require("./server-action");
|
|
6
|
+
var rest_data_provider_1 = require("./data-providers/rest-data-provider");
|
|
7
|
+
var RepositoryImplementation_1 = require("./remult3/RepositoryImplementation");
|
|
8
|
+
var HttpProviderBridgeToRestDataProviderHttpProvider = /** @class */ (function () {
|
|
9
|
+
function HttpProviderBridgeToRestDataProviderHttpProvider(http) {
|
|
6
10
|
this.http = http;
|
|
7
11
|
}
|
|
8
|
-
|
|
9
|
-
return
|
|
10
|
-
|
|
11
|
-
|
|
12
|
+
HttpProviderBridgeToRestDataProviderHttpProvider.prototype.post = function (url, data) {
|
|
13
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
14
|
+
var _this = this;
|
|
15
|
+
return tslib_1.__generator(this, function (_a) {
|
|
16
|
+
switch (_a.label) {
|
|
17
|
+
case 0: return [4 /*yield*/, retry(function () { return toPromise(_this.http.post(url, data)); })];
|
|
18
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
HttpProviderBridgeToRestDataProviderHttpProvider.prototype.delete = function (url) {
|
|
12
24
|
return toPromise(this.http.delete(url));
|
|
13
|
-
}
|
|
14
|
-
put(url, data) {
|
|
25
|
+
};
|
|
26
|
+
HttpProviderBridgeToRestDataProviderHttpProvider.prototype.put = function (url, data) {
|
|
15
27
|
return toPromise(this.http.put(url, data));
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
return
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
28
|
+
};
|
|
29
|
+
HttpProviderBridgeToRestDataProviderHttpProvider.prototype.get = function (url) {
|
|
30
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
31
|
+
var _this = this;
|
|
32
|
+
return tslib_1.__generator(this, function (_a) {
|
|
33
|
+
switch (_a.label) {
|
|
34
|
+
case 0: return [4 /*yield*/, retry(function () { return toPromise(_this.http.get(url)); })];
|
|
35
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
return HttpProviderBridgeToRestDataProviderHttpProvider;
|
|
41
|
+
}());
|
|
42
|
+
exports.HttpProviderBridgeToRestDataProviderHttpProvider = HttpProviderBridgeToRestDataProviderHttpProvider;
|
|
43
|
+
function retry(what) {
|
|
44
|
+
var _a, _b, _c, _d;
|
|
45
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
46
|
+
var err_1;
|
|
47
|
+
return tslib_1.__generator(this, function (_e) {
|
|
48
|
+
switch (_e.label) {
|
|
49
|
+
case 0:
|
|
50
|
+
if (!true) return [3 /*break*/, 7];
|
|
51
|
+
_e.label = 1;
|
|
52
|
+
case 1:
|
|
53
|
+
_e.trys.push([1, 3, , 6]);
|
|
54
|
+
return [4 /*yield*/, what()];
|
|
55
|
+
case 2: return [2 /*return*/, _e.sent()];
|
|
56
|
+
case 3:
|
|
57
|
+
err_1 = _e.sent();
|
|
58
|
+
if (!(((_a = err_1.message) === null || _a === void 0 ? void 0 : _a.startsWith("Error occurred while trying to proxy")) || ((_b = err_1.message) === null || _b === void 0 ? void 0 : _b.startsWith("Error occured while trying to proxy")) || ((_c = err_1.message) === null || _c === void 0 ? void 0 : _c.includes("http proxy error")) || ((_d = err_1.message) === null || _d === void 0 ? void 0 : _d.startsWith("Gateway Timeout")))) return [3 /*break*/, 5];
|
|
59
|
+
return [4 /*yield*/, new Promise(function (res, req) {
|
|
60
|
+
setTimeout(function () {
|
|
61
|
+
res({});
|
|
62
|
+
}, 250);
|
|
63
|
+
})];
|
|
64
|
+
case 4:
|
|
65
|
+
_e.sent();
|
|
66
|
+
return [3 /*break*/, 0];
|
|
67
|
+
case 5: throw err_1;
|
|
68
|
+
case 6: return [3 /*break*/, 0];
|
|
69
|
+
case 7: return [2 /*return*/];
|
|
37
70
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
71
|
+
});
|
|
72
|
+
});
|
|
41
73
|
}
|
|
42
|
-
|
|
43
|
-
|
|
74
|
+
exports.retry = retry;
|
|
75
|
+
function toPromise(p) {
|
|
76
|
+
var _this = this;
|
|
77
|
+
var r;
|
|
44
78
|
if (p["toPromise"] !== undefined) {
|
|
45
79
|
r = p["toPromise"]();
|
|
46
80
|
}
|
|
47
81
|
//@ts-ignore
|
|
48
82
|
else
|
|
49
83
|
r = p;
|
|
50
|
-
return r.then((x)
|
|
84
|
+
return r.then(function (x) {
|
|
51
85
|
if (x && (x.status == 200 || x.status == 201) && x.headers && x.request && x.data) //for axios
|
|
52
86
|
return x.data;
|
|
53
87
|
return x;
|
|
54
|
-
}).catch(
|
|
55
|
-
|
|
56
|
-
|
|
88
|
+
}).catch(function (ex) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
89
|
+
return tslib_1.__generator(this, function (_a) {
|
|
90
|
+
switch (_a.label) {
|
|
91
|
+
case 0: return [4 /*yield*/, processHttpException(ex)];
|
|
92
|
+
case 1: throw _a.sent();
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}); });
|
|
57
96
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
var
|
|
61
|
-
|
|
62
|
-
error
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
97
|
+
exports.toPromise = toPromise;
|
|
98
|
+
function processHttpException(ex) {
|
|
99
|
+
var _a, _b, _c;
|
|
100
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
101
|
+
var z, error, httpStatusCode, result;
|
|
102
|
+
return tslib_1.__generator(this, function (_d) {
|
|
103
|
+
switch (_d.label) {
|
|
104
|
+
case 0: return [4 /*yield*/, ex];
|
|
105
|
+
case 1:
|
|
106
|
+
z = _d.sent();
|
|
107
|
+
if (z.error)
|
|
108
|
+
error = z.error;
|
|
109
|
+
else if (z.isAxiosError) {
|
|
110
|
+
if (typeof ((_a = z.response) === null || _a === void 0 ? void 0 : _a.data) === "string")
|
|
111
|
+
error = z.response.data;
|
|
112
|
+
else
|
|
113
|
+
error = (_b = z === null || z === void 0 ? void 0 : z.response) === null || _b === void 0 ? void 0 : _b.data;
|
|
114
|
+
}
|
|
115
|
+
if (!error)
|
|
116
|
+
error = z.message;
|
|
117
|
+
if (z.status == 0 && z.error.isTrusted)
|
|
118
|
+
error = "Network Error";
|
|
119
|
+
if (typeof error === 'string') {
|
|
120
|
+
error = {
|
|
121
|
+
message: error,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
httpStatusCode = z.status;
|
|
125
|
+
if (httpStatusCode === undefined)
|
|
126
|
+
httpStatusCode = (_c = z.response) === null || _c === void 0 ? void 0 : _c.status;
|
|
127
|
+
if (httpStatusCode !== undefined && httpStatusCode !== null) {
|
|
128
|
+
error.httpStatusCode = httpStatusCode;
|
|
129
|
+
}
|
|
130
|
+
result = Object.assign(error, {
|
|
131
|
+
// exception: ex disabled for now because JSON.stringify crashed with this
|
|
132
|
+
});
|
|
133
|
+
return [2 /*return*/, result];
|
|
134
|
+
}
|
|
135
|
+
});
|
|
86
136
|
});
|
|
87
|
-
return result;
|
|
88
137
|
}
|
|
89
|
-
|
|
90
|
-
|
|
138
|
+
exports.processHttpException = processHttpException;
|
|
139
|
+
function isBackend() {
|
|
140
|
+
return server_action_1.actionInfo.runningOnServer;
|
|
91
141
|
}
|
|
92
|
-
|
|
142
|
+
exports.isBackend = isBackend;
|
|
143
|
+
var Remult = /** @class */ (function () {
|
|
93
144
|
/** Creates a new instance of the `remult` object.
|
|
94
145
|
*
|
|
95
146
|
* Can receive either an HttpProvider or a DataProvider as a parameter - which will be used to fetch data from.
|
|
96
147
|
*
|
|
97
148
|
* If no provider is specified, `fetch` will be used as an http provider
|
|
98
149
|
*/
|
|
99
|
-
|
|
150
|
+
function Remult(provider) {
|
|
100
151
|
this._userChangeEvent = new EventSource();
|
|
101
152
|
this.repCache = new Map();
|
|
102
153
|
if (provider && provider.getEntityDataProvider) {
|
|
103
154
|
this._dataSource = provider;
|
|
104
155
|
return;
|
|
105
156
|
}
|
|
106
|
-
|
|
107
|
-
|
|
157
|
+
var http = provider;
|
|
158
|
+
var dataProvider;
|
|
108
159
|
if (http) {
|
|
109
160
|
dataProvider = new HttpProviderBridgeToRestDataProviderHttpProvider(http);
|
|
110
161
|
}
|
|
111
162
|
if (!dataProvider) {
|
|
112
|
-
dataProvider = new RestDataProviderHttpProviderUsingFetch();
|
|
163
|
+
dataProvider = new rest_data_provider_1.RestDataProviderHttpProviderUsingFetch();
|
|
113
164
|
}
|
|
114
|
-
this._dataSource = new RestDataProvider(Remult.apiBaseUrl, dataProvider);
|
|
115
|
-
if (!Action.provider)
|
|
116
|
-
Action.provider = dataProvider;
|
|
165
|
+
this._dataSource = new rest_data_provider_1.RestDataProvider(Remult.apiBaseUrl, dataProvider);
|
|
166
|
+
if (!server_action_1.Action.provider)
|
|
167
|
+
server_action_1.Action.provider = dataProvider;
|
|
117
168
|
}
|
|
118
169
|
/**Return's a `Repository` of the specific entity type
|
|
119
170
|
* @example
|
|
@@ -121,64 +172,90 @@ export class Remult {
|
|
|
121
172
|
* @see [Repository](https://remult.dev/docs/ref_repository.html)
|
|
122
173
|
*
|
|
123
174
|
*/
|
|
124
|
-
repo(entity, dataProvider) {
|
|
175
|
+
Remult.prototype.repo = function (entity, dataProvider) {
|
|
125
176
|
if (dataProvider === undefined)
|
|
126
177
|
dataProvider = this._dataSource;
|
|
127
|
-
|
|
178
|
+
var dpCache = this.repCache.get(dataProvider);
|
|
128
179
|
if (!dpCache)
|
|
129
180
|
this.repCache.set(dataProvider, dpCache = new Map());
|
|
130
|
-
|
|
181
|
+
var r = dpCache.get(entity);
|
|
131
182
|
if (!r) {
|
|
132
|
-
dpCache.set(entity, r = new RepositoryImplementation(entity, this, dataProvider));
|
|
183
|
+
dpCache.set(entity, r = new RepositoryImplementation_1.RepositoryImplementation(entity, this, dataProvider));
|
|
133
184
|
}
|
|
134
185
|
return r;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
return this._user;
|
|
146
|
-
}
|
|
147
|
-
/** Set's the current user info */
|
|
148
|
-
async setUser(info) {
|
|
149
|
-
this._user = info;
|
|
150
|
-
let auth = info;
|
|
151
|
-
if (auth) {
|
|
152
|
-
if (!this._user.id && auth.sub)
|
|
153
|
-
this._user.id = auth.sub;
|
|
154
|
-
if (!this._user.roles && auth.permissions) {
|
|
155
|
-
this._user.roles = auth.permissions;
|
|
186
|
+
};
|
|
187
|
+
Object.defineProperty(Remult.prototype, "user", {
|
|
188
|
+
/** Returns the current user's info */
|
|
189
|
+
get: function () {
|
|
190
|
+
if (this._user === undefined) {
|
|
191
|
+
return {
|
|
192
|
+
id: undefined,
|
|
193
|
+
name: '',
|
|
194
|
+
roles: []
|
|
195
|
+
};
|
|
156
196
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
197
|
+
return this._user;
|
|
198
|
+
},
|
|
199
|
+
enumerable: false,
|
|
200
|
+
configurable: true
|
|
201
|
+
});
|
|
202
|
+
/** Set's the current user info */
|
|
203
|
+
Remult.prototype.setUser = function (info) {
|
|
204
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
205
|
+
var auth;
|
|
206
|
+
return tslib_1.__generator(this, function (_a) {
|
|
207
|
+
switch (_a.label) {
|
|
208
|
+
case 0:
|
|
209
|
+
this._user = info;
|
|
210
|
+
auth = info;
|
|
211
|
+
if (auth) {
|
|
212
|
+
if (!this._user.id && auth.sub)
|
|
213
|
+
this._user.id = auth.sub;
|
|
214
|
+
if (!this._user.roles && auth.permissions) {
|
|
215
|
+
this._user.roles = auth.permissions;
|
|
216
|
+
}
|
|
217
|
+
if (!this._user.name)
|
|
218
|
+
this._user.name = auth.username;
|
|
219
|
+
}
|
|
220
|
+
if (this._user && !this._user.roles)
|
|
221
|
+
this._user.roles = [];
|
|
222
|
+
return [4 /*yield*/, this._userChangeEvent.fire()];
|
|
223
|
+
case 1:
|
|
224
|
+
_a.sent();
|
|
225
|
+
return [2 /*return*/];
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
};
|
|
164
230
|
/** Checks if a user was authenticated */
|
|
165
|
-
authenticated() {
|
|
231
|
+
Remult.prototype.authenticated = function () {
|
|
166
232
|
return this.user.id !== undefined;
|
|
167
|
-
}
|
|
233
|
+
};
|
|
168
234
|
/** checks if the user has any of the roles specified in the parameters
|
|
169
235
|
* @example
|
|
170
236
|
* remult.isAllowed("admin")
|
|
171
237
|
* @see
|
|
172
238
|
* [Allowed](https://remult.dev/docs/allowed.html)
|
|
173
239
|
*/
|
|
174
|
-
isAllowed(roles) {
|
|
240
|
+
Remult.prototype.isAllowed = function (roles) {
|
|
241
|
+
var e_1, _a;
|
|
175
242
|
if (roles == undefined)
|
|
176
243
|
return undefined;
|
|
177
244
|
if (roles instanceof Array) {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
245
|
+
try {
|
|
246
|
+
for (var roles_1 = tslib_1.__values(roles), roles_1_1 = roles_1.next(); !roles_1_1.done; roles_1_1 = roles_1.next()) {
|
|
247
|
+
var role = roles_1_1.value;
|
|
248
|
+
if (this.isAllowed(role) === true) {
|
|
249
|
+
return true;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
254
|
+
finally {
|
|
255
|
+
try {
|
|
256
|
+
if (roles_1_1 && !roles_1_1.done && (_a = roles_1.return)) _a.call(roles_1);
|
|
181
257
|
}
|
|
258
|
+
finally { if (e_1) throw e_1.error; }
|
|
182
259
|
}
|
|
183
260
|
return false;
|
|
184
261
|
}
|
|
@@ -191,17 +268,28 @@ export class Remult {
|
|
|
191
268
|
if (this.user.roles.indexOf(roles.toString()) >= 0)
|
|
192
269
|
return true;
|
|
193
270
|
return false;
|
|
194
|
-
}
|
|
271
|
+
};
|
|
195
272
|
/** checks if the user matches the allowedForInstance callback
|
|
196
273
|
* @see
|
|
197
274
|
* [Allowed](https://remult.dev/docs/allowed.html)
|
|
198
275
|
*/
|
|
199
|
-
isAllowedForInstance(instance, allowed) {
|
|
276
|
+
Remult.prototype.isAllowedForInstance = function (instance, allowed) {
|
|
277
|
+
var e_2, _a;
|
|
200
278
|
if (Array.isArray(allowed)) {
|
|
201
279
|
{
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
280
|
+
try {
|
|
281
|
+
for (var allowed_1 = tslib_1.__values(allowed), allowed_1_1 = allowed_1.next(); !allowed_1_1.done; allowed_1_1 = allowed_1.next()) {
|
|
282
|
+
var item = allowed_1_1.value;
|
|
283
|
+
if (this.isAllowedForInstance(instance, item))
|
|
284
|
+
return true;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
288
|
+
finally {
|
|
289
|
+
try {
|
|
290
|
+
if (allowed_1_1 && !allowed_1_1.done && (_a = allowed_1.return)) _a.call(allowed_1);
|
|
291
|
+
}
|
|
292
|
+
finally { if (e_2) throw e_2.error; }
|
|
205
293
|
}
|
|
206
294
|
}
|
|
207
295
|
}
|
|
@@ -210,76 +298,144 @@ export class Remult {
|
|
|
210
298
|
}
|
|
211
299
|
else
|
|
212
300
|
return this.isAllowed(allowed);
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
301
|
+
};
|
|
302
|
+
Object.defineProperty(Remult.prototype, "userChange", {
|
|
303
|
+
/** returns a dispatcher object that fires once a user has changed*/
|
|
304
|
+
get: function () {
|
|
305
|
+
return this._userChangeEvent.dispatcher;
|
|
306
|
+
},
|
|
307
|
+
enumerable: false,
|
|
308
|
+
configurable: true
|
|
309
|
+
});
|
|
218
310
|
/** sets the current data provider */
|
|
219
|
-
setDataProvider(dataProvider) {
|
|
311
|
+
Remult.prototype.setDataProvider = function (dataProvider) {
|
|
220
312
|
this._dataSource = dataProvider;
|
|
221
|
-
}
|
|
222
|
-
clearAllCache() {
|
|
313
|
+
};
|
|
314
|
+
Remult.prototype.clearAllCache = function () {
|
|
223
315
|
this.repCache.clear();
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
Remult
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
316
|
+
};
|
|
317
|
+
/** The api Base Url to be used in all remult calls. by default it's set to `/api`.
|
|
318
|
+
*
|
|
319
|
+
* Set this property in case you want to determine a non relative api url
|
|
320
|
+
*/
|
|
321
|
+
Remult.apiBaseUrl = '/api';
|
|
322
|
+
/** A helper callback that can be used to debug and trace all find operations. Useful in debugging scenarios */
|
|
323
|
+
Remult.onFind = function (metadata, options) { };
|
|
324
|
+
return Remult;
|
|
325
|
+
}());
|
|
326
|
+
exports.Remult = Remult;
|
|
327
|
+
exports.allEntities = [];
|
|
328
|
+
exports.classHelpers = new Map();
|
|
329
|
+
var ClassHelper = /** @class */ (function () {
|
|
330
|
+
function ClassHelper() {
|
|
237
331
|
this.methods = [];
|
|
238
332
|
}
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
333
|
+
return ClassHelper;
|
|
334
|
+
}());
|
|
335
|
+
exports.ClassHelper = ClassHelper;
|
|
336
|
+
var MethodHelper = /** @class */ (function () {
|
|
337
|
+
function MethodHelper() {
|
|
242
338
|
this.classes = new Map();
|
|
243
339
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
340
|
+
return MethodHelper;
|
|
341
|
+
}());
|
|
342
|
+
exports.MethodHelper = MethodHelper;
|
|
343
|
+
function setControllerSettings(target, options) {
|
|
344
|
+
var e_3, _a;
|
|
345
|
+
var r = target;
|
|
247
346
|
while (true) {
|
|
248
|
-
|
|
347
|
+
var helper = exports.classHelpers.get(r);
|
|
249
348
|
if (helper) {
|
|
250
|
-
|
|
251
|
-
|
|
349
|
+
try {
|
|
350
|
+
for (var _b = (e_3 = void 0, tslib_1.__values(helper.methods)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
351
|
+
var m = _c.value;
|
|
352
|
+
m.classes.set(target, options);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
356
|
+
finally {
|
|
357
|
+
try {
|
|
358
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
359
|
+
}
|
|
360
|
+
finally { if (e_3) throw e_3.error; }
|
|
252
361
|
}
|
|
253
362
|
}
|
|
254
|
-
|
|
363
|
+
var p = Object.getPrototypeOf(r.prototype);
|
|
255
364
|
if (p == null)
|
|
256
365
|
break;
|
|
257
366
|
r = p.constructor;
|
|
258
367
|
}
|
|
259
368
|
}
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
Allow
|
|
263
|
-
|
|
264
|
-
|
|
369
|
+
exports.setControllerSettings = setControllerSettings;
|
|
370
|
+
var Allow = /** @class */ (function () {
|
|
371
|
+
function Allow() {
|
|
372
|
+
}
|
|
373
|
+
Allow.everyone = function () { return true; };
|
|
374
|
+
Allow.authenticated = function (remult) { return remult.authenticated(); };
|
|
375
|
+
return Allow;
|
|
376
|
+
}());
|
|
377
|
+
exports.Allow = Allow;
|
|
378
|
+
exports.queryConfig = {
|
|
265
379
|
defaultPageSize: 200
|
|
266
380
|
};
|
|
267
|
-
|
|
268
|
-
|
|
381
|
+
var EventSource = /** @class */ (function () {
|
|
382
|
+
function EventSource() {
|
|
383
|
+
var _this = this;
|
|
269
384
|
this.listeners = [];
|
|
270
385
|
this.dispatcher = {
|
|
271
|
-
observe:
|
|
272
|
-
this
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
386
|
+
observe: function (what) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
387
|
+
var _this = this;
|
|
388
|
+
return tslib_1.__generator(this, function (_a) {
|
|
389
|
+
switch (_a.label) {
|
|
390
|
+
case 0:
|
|
391
|
+
this.listeners.push(what);
|
|
392
|
+
return [4 /*yield*/, what()];
|
|
393
|
+
case 1:
|
|
394
|
+
_a.sent();
|
|
395
|
+
return [2 /*return*/, function () {
|
|
396
|
+
_this.listeners = _this.listeners.filter(function (x) { return x != what; });
|
|
397
|
+
}];
|
|
398
|
+
}
|
|
399
|
+
});
|
|
400
|
+
}); }
|
|
278
401
|
};
|
|
279
402
|
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
403
|
+
EventSource.prototype.fire = function () {
|
|
404
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
405
|
+
var _a, _b, l, e_4_1;
|
|
406
|
+
var e_4, _c;
|
|
407
|
+
return tslib_1.__generator(this, function (_d) {
|
|
408
|
+
switch (_d.label) {
|
|
409
|
+
case 0:
|
|
410
|
+
_d.trys.push([0, 5, 6, 7]);
|
|
411
|
+
_a = tslib_1.__values(this.listeners), _b = _a.next();
|
|
412
|
+
_d.label = 1;
|
|
413
|
+
case 1:
|
|
414
|
+
if (!!_b.done) return [3 /*break*/, 4];
|
|
415
|
+
l = _b.value;
|
|
416
|
+
return [4 /*yield*/, l()];
|
|
417
|
+
case 2:
|
|
418
|
+
_d.sent();
|
|
419
|
+
_d.label = 3;
|
|
420
|
+
case 3:
|
|
421
|
+
_b = _a.next();
|
|
422
|
+
return [3 /*break*/, 1];
|
|
423
|
+
case 4: return [3 /*break*/, 7];
|
|
424
|
+
case 5:
|
|
425
|
+
e_4_1 = _d.sent();
|
|
426
|
+
e_4 = { error: e_4_1 };
|
|
427
|
+
return [3 /*break*/, 7];
|
|
428
|
+
case 6:
|
|
429
|
+
try {
|
|
430
|
+
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
|
|
431
|
+
}
|
|
432
|
+
finally { if (e_4) throw e_4.error; }
|
|
433
|
+
return [7 /*endfinally*/];
|
|
434
|
+
case 7: return [2 /*return*/];
|
|
435
|
+
}
|
|
436
|
+
});
|
|
437
|
+
});
|
|
438
|
+
};
|
|
439
|
+
return EventSource;
|
|
440
|
+
}());
|
|
441
|
+
exports.EventSource = EventSource;
|