remult 0.14.4 → 0.14.5
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 +1 -5
- package/classType.js +1 -2
- package/graphql.js +84 -146
- package/index.js +25 -73
- package/inputTypes.js +9 -16
- package/package.json +2 -1
- package/postgres/index.js +1 -4
- package/postgres/postgres-data-provider.js +165 -364
- package/postgres/postgresColumnSyntax.js +4 -8
- package/remult-express.js +6 -10
- package/remult-knex/index.js +300 -720
- package/remult-middleware.js +24 -30
- package/remult-mongo.js +172 -406
- package/server/JsonEntityFileStorage.js +10 -15
- package/server/expressBridge.js +383 -569
- package/server/index.js +4 -11
- package/server/register-actions-on-server.js +12 -38
- package/server/register-entities-on-server.js +9 -13
- package/src/__EntityValueProvider.js +1 -2
- package/src/__RowsOfDataForTesting.js +1 -2
- package/src/backend-tests/backend-database-test-setup.backend-spec.js +72 -190
- package/src/backend-tests/my-test.backend-spec.js +45 -114
- package/src/column-interfaces.js +2 -6
- package/src/column.js +71 -113
- package/src/context.js +174 -330
- package/src/data-api.js +162 -326
- package/src/data-interfaces.js +7 -11
- package/src/data-providers/array-entity-data-provider.js +171 -286
- package/src/data-providers/in-memory-database.js +12 -27
- package/src/data-providers/json-data-provider.js +41 -77
- package/src/data-providers/rest-data-provider.js +102 -189
- package/src/data-providers/sql-database.js +223 -403
- package/src/data-providers/web-sql-data-provider.js +78 -139
- package/src/entity.js +1 -2
- package/src/filter/filter-consumer-bridge-to-sql-request.js +106 -248
- package/src/filter/filter-consumer-bridge-to-url-builder.js +1 -2
- package/src/filter/filter-interfaces.js +277 -440
- package/src/id-entity.js +8 -17
- package/src/remult3/RepositoryImplementation.js +1191 -2367
- package/src/remult3/index.js +2 -5
- package/src/remult3/remult3.js +1 -2
- package/src/server-action.js +294 -528
- package/src/shared-tests/db-tests-setup.js +49 -153
- package/src/shared-tests/db-tests.db-tests.js +660 -1566
- package/src/shared-tests/deleteAll.js +3 -20
- package/src/shared-tests/entityWithValidations.js +52 -79
- package/src/shared-tests/index.js +4 -6
- package/src/shared-tests/test-custom-id-column.spec.js +37 -85
- package/src/shared-tests/test-special-value.spec.js +64 -104
- package/src/shared-tests/test-update-with-null.spec.js +28 -49
- package/src/sort.js +38 -95
- package/src/sql-command.js +1 -2
- package/src/tests/Done.js +7 -13
- package/src/tests/TestDataApiResponse.js +15 -22
- package/src/tests/c.js +21 -27
- package/src/tests/createData.js +20 -48
- package/src/tests/d.js +19 -27
- package/src/tests/dWithPrefilter.js +31 -44
- package/src/tests/entityForCustomFilter.js +42 -66
- package/src/tests/entityWithValidationsOnColumn.js +21 -29
- package/src/tests/frontend-database-tests-setup.spec.js +35 -98
- package/src/tests/h.js +35 -44
- package/src/tests/remult-3-entities.js +71 -80
- package/src/tests/tasks.js +23 -29
- package/src/tests/testHelper.spec.js +170 -322
- package/src/tests/testModel/models.js +25 -33
- package/src/validators.js +32 -59
- package/urlBuilder.js +8 -14
- package/valueConverters.js +161 -160
|
@@ -1,88 +1,52 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var tslib_1 = require("tslib");
|
|
5
|
-
var array_entity_data_provider_1 = require("./array-entity-data-provider");
|
|
6
|
-
var JsonDataProvider = /** @class */ (function () {
|
|
7
|
-
function JsonDataProvider(storage) {
|
|
1
|
+
import { ArrayEntityDataProvider } from './array-entity-data-provider';
|
|
2
|
+
export class JsonDataProvider {
|
|
3
|
+
constructor(storage) {
|
|
8
4
|
this.storage = storage;
|
|
9
5
|
}
|
|
10
|
-
|
|
6
|
+
getEntityDataProvider(entity) {
|
|
11
7
|
return new JsonEntityDataProvider(entity, this.storage);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
_a.sent();
|
|
20
|
-
return [2 /*return*/];
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
|
-
return JsonDataProvider;
|
|
26
|
-
}());
|
|
27
|
-
exports.JsonDataProvider = JsonDataProvider;
|
|
28
|
-
var JsonEntityDataProvider = /** @class */ (function () {
|
|
29
|
-
function JsonEntityDataProvider(entity, helper) {
|
|
8
|
+
}
|
|
9
|
+
async transaction(action) {
|
|
10
|
+
await action(this);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
class JsonEntityDataProvider {
|
|
14
|
+
constructor(entity, helper) {
|
|
30
15
|
this.entity = entity;
|
|
31
16
|
this.helper = helper;
|
|
32
17
|
this.p = Promise.resolve();
|
|
33
18
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
};
|
|
54
|
-
JsonEntityDataProvider.prototype.find = function (options) {
|
|
55
|
-
var _this = this;
|
|
56
|
-
return this.p = this.p.then(function () { return _this.loadEntityData(function (dp, save) { return dp.find(options); }); });
|
|
57
|
-
};
|
|
58
|
-
JsonEntityDataProvider.prototype.count = function (where) {
|
|
59
|
-
var _this = this;
|
|
60
|
-
return this.p = this.p.then(function () { return _this.loadEntityData(function (dp, save) { return dp.count(where); }); });
|
|
61
|
-
};
|
|
62
|
-
JsonEntityDataProvider.prototype.update = function (id, data) {
|
|
63
|
-
var _this = this;
|
|
64
|
-
return this.p = this.p.then(function () { return _this.loadEntityData(function (dp, save) { return dp.update(id, data).then(function (x) {
|
|
19
|
+
async loadEntityData(what) {
|
|
20
|
+
let data = [];
|
|
21
|
+
let dbName = await this.entity.getDbName();
|
|
22
|
+
let s = this.helper.getItem(dbName);
|
|
23
|
+
if (s)
|
|
24
|
+
data = JSON.parse(s);
|
|
25
|
+
let dp = new ArrayEntityDataProvider(this.entity, data);
|
|
26
|
+
return what(dp, () => this.helper.setItem(dbName, JSON.stringify(data, undefined, 2)));
|
|
27
|
+
}
|
|
28
|
+
find(options) {
|
|
29
|
+
return this.p = this.p.then(() => this.loadEntityData((dp, save) => dp.find(options)));
|
|
30
|
+
}
|
|
31
|
+
count(where) {
|
|
32
|
+
return this.p = this.p.then(() => this.loadEntityData((dp, save) => dp.count(where)));
|
|
33
|
+
}
|
|
34
|
+
update(id, data) {
|
|
35
|
+
return this.p = this.p.then(() => this.loadEntityData((dp, save) => dp.update(id, data).then(x => {
|
|
65
36
|
save();
|
|
66
37
|
return x;
|
|
67
|
-
})
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
return this.p = this.p.then(function () { return _this.loadEntityData(function (dp, save) { return dp.delete(id).then(function (x) {
|
|
38
|
+
})));
|
|
39
|
+
}
|
|
40
|
+
delete(id) {
|
|
41
|
+
return this.p = this.p.then(() => this.loadEntityData((dp, save) => dp.delete(id).then(x => {
|
|
72
42
|
save();
|
|
73
43
|
return x;
|
|
74
|
-
})
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return
|
|
78
|
-
|
|
79
|
-
return
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}); }); })];
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
};
|
|
87
|
-
return JsonEntityDataProvider;
|
|
88
|
-
}());
|
|
44
|
+
})));
|
|
45
|
+
}
|
|
46
|
+
async insert(data) {
|
|
47
|
+
return this.p = this.p.then(() => this.loadEntityData((dp, save) => dp.insert(data).then(x => {
|
|
48
|
+
save();
|
|
49
|
+
return x;
|
|
50
|
+
})));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -1,94 +1,56 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var filter_interfaces_1 = require("../filter/filter-interfaces");
|
|
7
|
-
var context_1 = require("../context");
|
|
8
|
-
var RestDataProvider = /** @class */ (function () {
|
|
9
|
-
function RestDataProvider(url, http) {
|
|
1
|
+
import { UrlBuilder } from '../../urlBuilder';
|
|
2
|
+
import { customUrlToken } from '../filter/filter-interfaces';
|
|
3
|
+
import { retry } from '../context';
|
|
4
|
+
export class RestDataProvider {
|
|
5
|
+
constructor(url, http) {
|
|
10
6
|
this.url = url;
|
|
11
7
|
this.http = http;
|
|
12
8
|
this.supportsCustomFilter = true;
|
|
13
9
|
}
|
|
14
|
-
|
|
10
|
+
getEntityDataProvider(entity) {
|
|
15
11
|
return new RestEntityDataProvider(this.url + '/' + entity.key, this.http, entity);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
};
|
|
24
|
-
return RestDataProvider;
|
|
25
|
-
}());
|
|
26
|
-
exports.RestDataProvider = RestDataProvider;
|
|
27
|
-
var RestEntityDataProvider = /** @class */ (function () {
|
|
28
|
-
function RestEntityDataProvider(url, http, entity) {
|
|
12
|
+
}
|
|
13
|
+
async transaction(action) {
|
|
14
|
+
throw new Error("Method not implemented.");
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export class RestEntityDataProvider {
|
|
18
|
+
constructor(url, http, entity) {
|
|
29
19
|
this.url = url;
|
|
30
20
|
this.http = http;
|
|
31
21
|
this.entity = entity;
|
|
32
22
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
for (var _b = tslib_1.__values(this.entity.fields), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
38
|
-
var col = _c.value;
|
|
39
|
-
result[col.key] = col.valueConverter.fromJson(row[col.key]);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
43
|
-
finally {
|
|
44
|
-
try {
|
|
45
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
46
|
-
}
|
|
47
|
-
finally { if (e_1) throw e_1.error; }
|
|
23
|
+
translateFromJson(row) {
|
|
24
|
+
let result = {};
|
|
25
|
+
for (const col of this.entity.fields) {
|
|
26
|
+
result[col.key] = col.valueConverter.fromJson(row[col.key]);
|
|
48
27
|
}
|
|
49
28
|
return result;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
for (var _b = tslib_1.__values(this.entity.fields), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
56
|
-
var col = _c.value;
|
|
57
|
-
result[col.key] = col.valueConverter.toJson(row[col.key]);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
61
|
-
finally {
|
|
62
|
-
try {
|
|
63
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
64
|
-
}
|
|
65
|
-
finally { if (e_2) throw e_2.error; }
|
|
29
|
+
}
|
|
30
|
+
translateToJson(row) {
|
|
31
|
+
let result = {};
|
|
32
|
+
for (const col of this.entity.fields) {
|
|
33
|
+
result[col.key] = col.valueConverter.toJson(row[col.key]);
|
|
66
34
|
}
|
|
67
35
|
return result;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
});
|
|
87
|
-
};
|
|
88
|
-
RestEntityDataProvider.prototype.find = function (options) {
|
|
89
|
-
var _this = this;
|
|
90
|
-
var url = new urlBuilder_1.UrlBuilder(this.url);
|
|
91
|
-
var filterObject;
|
|
36
|
+
}
|
|
37
|
+
async count(where) {
|
|
38
|
+
let url = new UrlBuilder(this.url);
|
|
39
|
+
url.add("__action", "count");
|
|
40
|
+
let filterObject;
|
|
41
|
+
if (where) {
|
|
42
|
+
filterObject = where.toJson();
|
|
43
|
+
if (addFilterToUrlAndReturnTrueIfSuccessful(filterObject, url))
|
|
44
|
+
filterObject = undefined;
|
|
45
|
+
}
|
|
46
|
+
if (filterObject)
|
|
47
|
+
return this.http.post(url.url, filterObject).then(r => +(r.count));
|
|
48
|
+
else
|
|
49
|
+
return this.http.get(url.url).then(r => +(r.count));
|
|
50
|
+
}
|
|
51
|
+
find(options) {
|
|
52
|
+
let url = new UrlBuilder(this.url);
|
|
53
|
+
let filterObject;
|
|
92
54
|
if (options) {
|
|
93
55
|
if (options.where) {
|
|
94
56
|
filterObject = options.where.toJson(); // options.where.__applyToConsumer(new FilterConsumnerBridgeToUrlBuilder(url));
|
|
@@ -96,18 +58,18 @@ var RestEntityDataProvider = /** @class */ (function () {
|
|
|
96
58
|
filterObject = undefined;
|
|
97
59
|
}
|
|
98
60
|
if (options.orderBy && options.orderBy.Segments) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
options.orderBy.Segments.forEach(
|
|
102
|
-
if (
|
|
103
|
-
|
|
104
|
-
|
|
61
|
+
let sort = '';
|
|
62
|
+
let order = '';
|
|
63
|
+
options.orderBy.Segments.forEach(c => {
|
|
64
|
+
if (sort.length > 0) {
|
|
65
|
+
sort += ",";
|
|
66
|
+
order += ",";
|
|
105
67
|
}
|
|
106
|
-
|
|
107
|
-
|
|
68
|
+
sort += c.field.key;
|
|
69
|
+
order += c.isDescending ? "desc" : "asc";
|
|
108
70
|
});
|
|
109
|
-
url.add('_sort',
|
|
110
|
-
url.add('_order',
|
|
71
|
+
url.add('_sort', sort);
|
|
72
|
+
url.add('_order', order);
|
|
111
73
|
}
|
|
112
74
|
if (options.limit)
|
|
113
75
|
url.add('_limit', options.limit);
|
|
@@ -116,89 +78,53 @@ var RestEntityDataProvider = /** @class */ (function () {
|
|
|
116
78
|
}
|
|
117
79
|
if (filterObject) {
|
|
118
80
|
url.add("__action", "get");
|
|
119
|
-
return this.http.post(url.url, filterObject).then(
|
|
81
|
+
return this.http.post(url.url, filterObject).then(x => x.map(y => this.translateFromJson(y)));
|
|
120
82
|
}
|
|
121
83
|
else
|
|
122
|
-
return this.http.get(url.url).then(
|
|
84
|
+
return this.http.get(url.url).then(x => x.map(y => this.translateFromJson(y)));
|
|
123
85
|
;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
for (var _b = tslib_1.__values(this.entity.fields), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
132
|
-
var col = _c.value;
|
|
133
|
-
if (keys.includes(col.key))
|
|
134
|
-
result[col.key] = col.valueConverter.toJson(data[col.key]);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
138
|
-
finally {
|
|
139
|
-
try {
|
|
140
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
141
|
-
}
|
|
142
|
-
finally { if (e_3) throw e_3.error; }
|
|
86
|
+
}
|
|
87
|
+
update(id, data) {
|
|
88
|
+
let result = {};
|
|
89
|
+
let keys = Object.keys(data);
|
|
90
|
+
for (const col of this.entity.fields) {
|
|
91
|
+
if (keys.includes(col.key))
|
|
92
|
+
result[col.key] = col.valueConverter.toJson(data[col.key]);
|
|
143
93
|
}
|
|
144
|
-
return this.http.put(this.url + '/' + encodeURIComponent(id), result).then(
|
|
145
|
-
}
|
|
146
|
-
|
|
94
|
+
return this.http.put(this.url + '/' + encodeURIComponent(id), result).then(y => this.translateFromJson(y));
|
|
95
|
+
}
|
|
96
|
+
delete(id) {
|
|
147
97
|
return this.http.delete(this.url + '/' + encodeURIComponent(id));
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
exports.RestEntityDataProvider = RestEntityDataProvider;
|
|
156
|
-
var RestDataProviderHttpProviderUsingFetch = /** @class */ (function () {
|
|
157
|
-
function RestDataProviderHttpProviderUsingFetch(fetch) {
|
|
98
|
+
}
|
|
99
|
+
insert(data) {
|
|
100
|
+
return this.http.post(this.url, this.translateToJson(data)).then(y => this.translateFromJson(y));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
export class RestDataProviderHttpProviderUsingFetch {
|
|
104
|
+
constructor(fetch) {
|
|
158
105
|
this.fetch = fetch;
|
|
159
106
|
}
|
|
160
|
-
|
|
161
|
-
return
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
return tslib_1.__generator(this, function (_a) {
|
|
167
|
-
return [2 /*return*/, this.myFetch(url).then(function (r) {
|
|
168
|
-
return r;
|
|
169
|
-
})];
|
|
170
|
-
});
|
|
171
|
-
}); })];
|
|
172
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
};
|
|
177
|
-
RestDataProviderHttpProviderUsingFetch.prototype.put = function (url, data) {
|
|
107
|
+
async get(url) {
|
|
108
|
+
return await retry(async () => this.myFetch(url).then(r => {
|
|
109
|
+
return r;
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
put(url, data) {
|
|
178
113
|
return this.myFetch(url, {
|
|
179
114
|
method: 'put',
|
|
180
115
|
body: JSON.stringify(data)
|
|
181
116
|
});
|
|
182
|
-
}
|
|
183
|
-
|
|
117
|
+
}
|
|
118
|
+
delete(url) {
|
|
184
119
|
return this.myFetch(url, { method: 'delete', credentials: 'include' });
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
return
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
body: JSON.stringify(data)
|
|
194
|
-
}); })];
|
|
195
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
196
|
-
}
|
|
197
|
-
});
|
|
198
|
-
});
|
|
199
|
-
};
|
|
200
|
-
RestDataProviderHttpProviderUsingFetch.prototype.myFetch = function (url, init) {
|
|
201
|
-
var _this = this;
|
|
120
|
+
}
|
|
121
|
+
async post(url, data) {
|
|
122
|
+
return await retry(() => this.myFetch(url, {
|
|
123
|
+
method: 'post',
|
|
124
|
+
body: JSON.stringify(data)
|
|
125
|
+
}));
|
|
126
|
+
}
|
|
127
|
+
myFetch(url, init) {
|
|
202
128
|
if (!init)
|
|
203
129
|
init = {};
|
|
204
130
|
if (!init.headers)
|
|
@@ -206,32 +132,23 @@ var RestDataProviderHttpProviderUsingFetch = /** @class */ (function () {
|
|
|
206
132
|
var h = init.headers;
|
|
207
133
|
h.append('Content-type', "application/json");
|
|
208
134
|
init.credentials = 'include';
|
|
209
|
-
return (this.fetch || fetch)(url, init).then(
|
|
135
|
+
return (this.fetch || fetch)(url, init).then(response => {
|
|
210
136
|
return onSuccess(response);
|
|
211
|
-
}).catch(
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
r = _a.sent();
|
|
218
|
-
throw r;
|
|
219
|
-
}
|
|
220
|
-
});
|
|
221
|
-
}); });
|
|
222
|
-
};
|
|
223
|
-
return RestDataProviderHttpProviderUsingFetch;
|
|
224
|
-
}());
|
|
225
|
-
exports.RestDataProviderHttpProviderUsingFetch = RestDataProviderHttpProviderUsingFetch;
|
|
137
|
+
}).catch(async (error) => {
|
|
138
|
+
let r = await error;
|
|
139
|
+
throw r;
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
226
143
|
function onSuccess(response) {
|
|
227
144
|
if (response.status == 204)
|
|
228
145
|
return;
|
|
229
146
|
if (response.status >= 200 && response.status < 300)
|
|
230
147
|
return response.json();
|
|
231
148
|
else {
|
|
232
|
-
throw response.json().then(
|
|
233
|
-
return
|
|
234
|
-
}).catch(
|
|
149
|
+
throw response.json().then(x => {
|
|
150
|
+
return { ...x, message: x.message || response.statusText, url: response.url, status: response.status };
|
|
151
|
+
}).catch(() => {
|
|
235
152
|
throw {
|
|
236
153
|
message: response.statusText,
|
|
237
154
|
url: response.url,
|
|
@@ -240,10 +157,10 @@ function onSuccess(response) {
|
|
|
240
157
|
});
|
|
241
158
|
}
|
|
242
159
|
}
|
|
243
|
-
function addFilterToUrlAndReturnTrueIfSuccessful(filter, url) {
|
|
244
|
-
for (
|
|
160
|
+
export function addFilterToUrlAndReturnTrueIfSuccessful(filter, url) {
|
|
161
|
+
for (const key in filter) {
|
|
245
162
|
if (Object.prototype.hasOwnProperty.call(filter, key)) {
|
|
246
|
-
|
|
163
|
+
const element = filter[key];
|
|
247
164
|
if (Array.isArray(element)) {
|
|
248
165
|
if (element.length > 0 && typeof element[0] === 'object')
|
|
249
166
|
return false;
|
|
@@ -252,24 +169,20 @@ function addFilterToUrlAndReturnTrueIfSuccessful(filter, url) {
|
|
|
252
169
|
}
|
|
253
170
|
}
|
|
254
171
|
}
|
|
255
|
-
|
|
172
|
+
for (const key in filter) {
|
|
256
173
|
if (Object.prototype.hasOwnProperty.call(filter, key)) {
|
|
257
|
-
|
|
174
|
+
const element = filter[key];
|
|
258
175
|
if (Array.isArray(element)) {
|
|
259
176
|
if (key.endsWith("_in"))
|
|
260
177
|
url.add(key, JSON.stringify(element));
|
|
261
178
|
else
|
|
262
|
-
element.forEach(
|
|
179
|
+
element.forEach(e => url.add(key, e));
|
|
263
180
|
}
|
|
264
|
-
else if (key.startsWith(
|
|
181
|
+
else if (key.startsWith(customUrlToken))
|
|
265
182
|
url.add(key, JSON.stringify(element));
|
|
266
183
|
else
|
|
267
184
|
url.add(key, element);
|
|
268
185
|
}
|
|
269
|
-
};
|
|
270
|
-
for (var key in filter) {
|
|
271
|
-
_loop_1(key);
|
|
272
186
|
}
|
|
273
187
|
return true;
|
|
274
188
|
}
|
|
275
|
-
exports.addFilterToUrlAndReturnTrueIfSuccessful = addFilterToUrlAndReturnTrueIfSuccessful;
|