ng2-rest 13.2.9 → 16.0.11
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/README.md +135 -135
- package/assets/shared/shared_folder_info.txt +1 -1
- package/browser/README.md +24 -24
- package/{client/esm2020 → browser/esm2022}/lib/cookie.mjs +3 -3
- package/browser/esm2022/lib/helpers.mjs +25 -0
- package/{websql/esm2020 → browser/esm2022}/lib/models.mjs +9 -9
- package/browser/esm2022/lib/other/simple-resource.mjs +119 -0
- package/browser/esm2022/lib/request-cache.mjs +102 -0
- package/browser/esm2022/lib/resource.service.mjs +221 -0
- package/browser/esm2022/lib/rest-headers.mjs +129 -0
- package/browser/esm2022/lib/rest-request.mjs +323 -0
- package/browser/esm2022/lib/rest.class.mjs +120 -0
- package/browser/{fesm2020 → fesm2022}/ng2-rest.mjs +73 -73
- package/browser/{fesm2020 → fesm2022}/ng2-rest.mjs.map +1 -1
- package/browser/lib/rest-headers.d.ts +1 -1
- package/browser/package.json +6 -12
- package/client/README.md +24 -24
- package/{browser/esm2020 → client/esm2022}/lib/cookie.mjs +3 -3
- package/client/esm2022/lib/helpers.mjs +25 -0
- package/client/esm2022/lib/models.mjs +160 -0
- package/client/esm2022/lib/other/simple-resource.mjs +119 -0
- package/client/esm2022/lib/request-cache.mjs +102 -0
- package/client/esm2022/lib/resource.service.mjs +221 -0
- package/client/esm2022/lib/rest-headers.mjs +129 -0
- package/client/esm2022/lib/rest-request.mjs +323 -0
- package/client/esm2022/lib/rest.class.mjs +120 -0
- package/client/{fesm2020 → fesm2022}/ng2-rest.mjs +73 -73
- package/client/{fesm2020 → fesm2022}/ng2-rest.mjs.map +1 -1
- package/client/lib/rest-headers.d.ts +1 -1
- package/client/package.json +84 -82
- package/index.js.map +1 -1
- package/lib/content-type.js.map +1 -1
- package/lib/cookie.js.map +1 -1
- package/lib/helpers.js +1 -2
- package/lib/helpers.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/mapping.js.map +1 -1
- package/lib/models.js.map +1 -1
- package/lib/other/simple-resource.js +1 -2
- package/lib/other/simple-resource.js.map +1 -1
- package/lib/params.js.map +1 -1
- package/lib/request-cache.js +1 -2
- package/lib/request-cache.js.map +1 -1
- package/lib/resource.service.js +1 -2
- package/lib/resource.service.js.map +1 -1
- package/lib/rest-headers.d.ts +1 -1
- package/lib/rest-headers.js.map +1 -1
- package/lib/rest-request.js +1 -2
- package/lib/rest-request.js.map +1 -1
- package/lib/rest.class.js.map +1 -1
- package/package.json +4 -4
- package/package.json_devDependencies.json +217 -217
- package/package.json_tnp.json5 +53 -53
- package/tmp-environment.json +89 -87
- package/websql/README.md +24 -24
- package/websql/{esm2020 → esm2022}/lib/cookie.mjs +3 -3
- package/websql/esm2022/lib/helpers.mjs +25 -0
- package/websql/esm2022/lib/models.mjs +160 -0
- package/websql/esm2022/lib/other/simple-resource.mjs +119 -0
- package/websql/esm2022/lib/request-cache.mjs +102 -0
- package/websql/esm2022/lib/resource.service.mjs +221 -0
- package/websql/esm2022/lib/rest-headers.mjs +129 -0
- package/websql/esm2022/lib/rest-request.mjs +323 -0
- package/websql/esm2022/lib/rest.class.mjs +120 -0
- package/websql/{fesm2020 → fesm2022}/ng2-rest.mjs +73 -73
- package/websql/{fesm2020 → fesm2022}/ng2-rest.mjs.map +1 -1
- package/websql/lib/rest-headers.d.ts +1 -1
- package/websql/package.json +6 -12
- package/browser/esm2020/lib/helpers.mjs +0 -24
- package/browser/esm2020/lib/models.mjs +0 -160
- package/browser/esm2020/lib/other/simple-resource.mjs +0 -118
- package/browser/esm2020/lib/request-cache.mjs +0 -101
- package/browser/esm2020/lib/resource.service.mjs +0 -220
- package/browser/esm2020/lib/rest-headers.mjs +0 -129
- package/browser/esm2020/lib/rest-request.mjs +0 -322
- package/browser/esm2020/lib/rest.class.mjs +0 -120
- package/browser/fesm2015/ng2-rest.mjs +0 -1739
- package/browser/fesm2015/ng2-rest.mjs.map +0 -1
- package/client/esm2020/lib/helpers.mjs +0 -24
- package/client/esm2020/lib/models.mjs +0 -160
- package/client/esm2020/lib/other/simple-resource.mjs +0 -118
- package/client/esm2020/lib/request-cache.mjs +0 -101
- package/client/esm2020/lib/resource.service.mjs +0 -220
- package/client/esm2020/lib/rest-headers.mjs +0 -129
- package/client/esm2020/lib/rest-request.mjs +0 -322
- package/client/esm2020/lib/rest.class.mjs +0 -120
- package/client/fesm2015/ng2-rest.mjs +0 -1739
- package/client/fesm2015/ng2-rest.mjs.map +0 -1
- package/websql/esm2020/lib/helpers.mjs +0 -24
- package/websql/esm2020/lib/other/simple-resource.mjs +0 -118
- package/websql/esm2020/lib/request-cache.mjs +0 -101
- package/websql/esm2020/lib/resource.service.mjs +0 -220
- package/websql/esm2020/lib/rest-headers.mjs +0 -129
- package/websql/esm2020/lib/rest-request.mjs +0 -322
- package/websql/esm2020/lib/rest.class.mjs +0 -120
- package/websql/fesm2015/ng2-rest.mjs +0 -1739
- package/websql/fesm2015/ng2-rest.mjs.map +0 -1
- /package/browser/{esm2020 → esm2022}/lib/content-type.mjs +0 -0
- /package/browser/{esm2020 → esm2022}/lib/index.mjs +0 -0
- /package/browser/{esm2020 → esm2022}/lib/mapping.mjs +0 -0
- /package/browser/{esm2020 → esm2022}/lib/params.mjs +0 -0
- /package/browser/{esm2020 → esm2022}/ng2-rest.mjs +0 -0
- /package/browser/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/browser/{ng2-rest.d.ts → index.d.ts} +0 -0
- /package/client/{esm2020 → esm2022}/lib/content-type.mjs +0 -0
- /package/client/{esm2020 → esm2022}/lib/index.mjs +0 -0
- /package/client/{esm2020 → esm2022}/lib/mapping.mjs +0 -0
- /package/client/{esm2020 → esm2022}/lib/params.mjs +0 -0
- /package/client/{esm2020 → esm2022}/ng2-rest.mjs +0 -0
- /package/client/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/client/{ng2-rest.d.ts → index.d.ts} +0 -0
- /package/websql/{esm2020 → esm2022}/lib/content-type.mjs +0 -0
- /package/websql/{esm2020 → esm2022}/lib/index.mjs +0 -0
- /package/websql/{esm2020 → esm2022}/lib/mapping.mjs +0 -0
- /package/websql/{esm2020 → esm2022}/lib/params.mjs +0 -0
- /package/websql/{esm2020 → esm2022}/ng2-rest.mjs +0 -0
- /package/websql/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/websql/{ng2-rest.d.ts → index.d.ts} +0 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { Cookie } from './cookie';
|
|
2
|
+
import { Mapping } from './mapping';
|
|
3
|
+
import { Models as HelpersModels } from 'typescript-class-helpers/websql';
|
|
4
|
+
import { JSON10 } from 'json10/websql';
|
|
5
|
+
import { RequestCache } from './request-cache';
|
|
6
|
+
import { _ } from 'tnp-core/websql';
|
|
7
|
+
import { Helpers } from 'tnp-core/websql';
|
|
8
|
+
export var Models;
|
|
9
|
+
(function (Models) {
|
|
10
|
+
Models.MethodConfig = HelpersModels.MethodConfig;
|
|
11
|
+
Models.ClassConfig = HelpersModels.ClassConfig;
|
|
12
|
+
Models.ParamConfig = HelpersModels.ParamConfig;
|
|
13
|
+
;
|
|
14
|
+
;
|
|
15
|
+
[];
|
|
16
|
+
class BaseBody {
|
|
17
|
+
toJSON(data, isJSONArray = false) {
|
|
18
|
+
let r = isJSONArray ? [] : {};
|
|
19
|
+
if (typeof data === 'string') {
|
|
20
|
+
try {
|
|
21
|
+
r = JSON.parse(data);
|
|
22
|
+
}
|
|
23
|
+
catch (e) { }
|
|
24
|
+
}
|
|
25
|
+
else if (typeof data === 'object') {
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
28
|
+
return r;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
Models.BaseBody = BaseBody;
|
|
32
|
+
class HttpBody extends BaseBody {
|
|
33
|
+
constructor(responseText, isArray = false, entity, circular) {
|
|
34
|
+
super();
|
|
35
|
+
this.responseText = responseText;
|
|
36
|
+
this.isArray = isArray;
|
|
37
|
+
this.entity = entity;
|
|
38
|
+
this.circular = circular;
|
|
39
|
+
}
|
|
40
|
+
get blob() {
|
|
41
|
+
return this.responseText;
|
|
42
|
+
}
|
|
43
|
+
get booleanValue() {
|
|
44
|
+
if (!Helpers.isBlob(this.responseText)) {
|
|
45
|
+
return ['ok', 'true'].includes(this.responseText.trim());
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
get rawJson() {
|
|
49
|
+
if (!Helpers.isBlob(this.responseText)) {
|
|
50
|
+
let res = this.toJSON(this.responseText, this.isArray);
|
|
51
|
+
if (this.circular && Array.isArray(this.circular)) {
|
|
52
|
+
res = JSON10.parse(JSON.stringify(res), this.circular);
|
|
53
|
+
}
|
|
54
|
+
return res;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
get json() {
|
|
58
|
+
if (!Helpers.isBlob(this.responseText)) {
|
|
59
|
+
if (this.entity && typeof this.entity === 'function') {
|
|
60
|
+
return this.entity(); // @LAST
|
|
61
|
+
}
|
|
62
|
+
if (this.entity && typeof this.entity === 'object') {
|
|
63
|
+
const json = this.toJSON(this.responseText, this.isArray);
|
|
64
|
+
return Mapping.encode(json, this.entity, this.circular);
|
|
65
|
+
}
|
|
66
|
+
let res = this.toJSON(this.responseText, this.isArray);
|
|
67
|
+
if (this.circular && Array.isArray(this.circular)) {
|
|
68
|
+
res = JSON10.parse(JSON.stringify(res), this.circular);
|
|
69
|
+
}
|
|
70
|
+
return res;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
get text() {
|
|
74
|
+
if (!Helpers.isBlob(this.responseText)) {
|
|
75
|
+
return this.responseText.replace(/^\"/, '').replace(/\"$/, '');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
Models.HttpBody = HttpBody;
|
|
80
|
+
class ErrorBody extends BaseBody {
|
|
81
|
+
constructor(data) {
|
|
82
|
+
super();
|
|
83
|
+
this.data = data;
|
|
84
|
+
}
|
|
85
|
+
get json() {
|
|
86
|
+
return this.toJSON(this.data);
|
|
87
|
+
}
|
|
88
|
+
get text() {
|
|
89
|
+
return this.data;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
Models.ErrorBody = ErrorBody;
|
|
93
|
+
class BaseResponse {
|
|
94
|
+
static { this.cookies = Cookie.Instance; }
|
|
95
|
+
get cookies() {
|
|
96
|
+
return BaseResponse.cookies;
|
|
97
|
+
}
|
|
98
|
+
constructor(responseText, headers, statusCode, isArray = false) {
|
|
99
|
+
this.responseText = responseText;
|
|
100
|
+
this.headers = headers;
|
|
101
|
+
this.statusCode = statusCode;
|
|
102
|
+
this.isArray = isArray;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
Models.BaseResponse = BaseResponse;
|
|
106
|
+
class HttpResponse extends BaseResponse {
|
|
107
|
+
constructor(sourceRequest, responseText, headers, statusCode, entity, circular, jobid, isArray = false) {
|
|
108
|
+
super(responseText, headers, statusCode, isArray);
|
|
109
|
+
this.sourceRequest = sourceRequest;
|
|
110
|
+
this.responseText = responseText;
|
|
111
|
+
this.headers = headers;
|
|
112
|
+
this.statusCode = statusCode;
|
|
113
|
+
this.entity = entity;
|
|
114
|
+
this.circular = circular;
|
|
115
|
+
this.jobid = jobid;
|
|
116
|
+
this.isArray = isArray;
|
|
117
|
+
this.init();
|
|
118
|
+
}
|
|
119
|
+
init() {
|
|
120
|
+
if (typeof this.entity === 'string') {
|
|
121
|
+
let entityJSON = this.headers.getAll(this.entity);
|
|
122
|
+
if (!!entityJSON) {
|
|
123
|
+
this.entity = JSON.parse(entityJSON.join());
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (typeof this.circular === 'string') {
|
|
127
|
+
let circuralJSON = this.headers.getAll(this.circular);
|
|
128
|
+
if (!!circuralJSON) {
|
|
129
|
+
this.circular = JSON.parse(circuralJSON.join());
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
this.body = new HttpBody(this.responseText, this.isArray, this.entity, this.circular);
|
|
133
|
+
}
|
|
134
|
+
get cache() {
|
|
135
|
+
if (_.isUndefined(this.rq)) {
|
|
136
|
+
this.rq = new RequestCache(this);
|
|
137
|
+
}
|
|
138
|
+
return new RequestCache(this);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
Models.HttpResponse = HttpResponse;
|
|
142
|
+
class HttpResponseError extends BaseResponse {
|
|
143
|
+
constructor(message, responseText, headers, statusCode, jobid) {
|
|
144
|
+
super(responseText, headers, statusCode);
|
|
145
|
+
this.message = message;
|
|
146
|
+
this.jobid = jobid;
|
|
147
|
+
this.body = new ErrorBody(responseText);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
Models.HttpResponseError = HttpResponseError;
|
|
151
|
+
/* */
|
|
152
|
+
/* */
|
|
153
|
+
/* */
|
|
154
|
+
/* */
|
|
155
|
+
/* */
|
|
156
|
+
/* */
|
|
157
|
+
})(Models || (Models = {}));
|
|
158
|
+
;
|
|
159
|
+
({}); // @--end-of-file-for-module=ng2-rest lib/models.ts
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS13ZWJzcWwvbmcyLXJlc3QvcHJvamVjdHMvbmcyLXJlc3Qvc3JjL2xpYi9tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sRUFBRSxNQUFNLElBQUksYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDekUsT0FBTyxFQUFFLE1BQU0sRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUcxQyxNQUFNLEtBQVcsTUFBTSxDQTZSdEI7QUE3UkQsV0FBaUIsTUFBTTtJQUtQLG1CQUFZLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQztJQUMxQyxrQkFBVyxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUM7SUFDeEMsa0JBQVcsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFBO0lBNEVwRCxDQUFDO0lBS0QsQ0FBQztJQVdELEVBQUUsQ0FBQztJQUVKLE1BQXNCLFFBQVE7UUFDbEIsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLEdBQUcsS0FBSztZQUN4QyxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlCLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO2dCQUM1QixJQUFJO29CQUNGLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN0Qjtn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LENBQUM7UUFFRCxJQUFJLEtBQUs7WUFDUCxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUMxQixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2xDO1lBQ0QsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxDQUFDO0tBRUY7SUFuRFksbUJBQVksZUFtRHhCLENBQUE7SUFFRCxNQUFhLGlCQUFrQixTQUFRLFlBQWlCO1FBS3RELFlBQ1MsT0FBZSxFQUN0QixZQUFxQixFQUNyQixPQUFxQixFQUNyQixVQUE4QixFQUN2QixLQUFjO1lBRXJCLEtBQUssQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBTmxDLFlBQU8sR0FBUCxPQUFPLENBQVE7WUFJZixVQUFLLEdBQUwsS0FBSyxDQUFTO1lBR3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDekMsQ0FBQztLQUNGO0lBZlksd0JBQWlCLG9CQWU3QixDQUFBO0lBWUgsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0FBRUwsQ0FBQyxFQTdSZ0IsTUFBTSxLQUFOLE1BQU0sUUE2UnRCO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxtREFBbUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb2csIExldmVsIH0gZnJvbSAnbmcyLWxvZ2dlci93ZWJzcWwnO1xuaW1wb3J0IHsgUmVzdEhlYWRlcnMgfSBmcm9tICcuL3Jlc3QtaGVhZGVycyc7XG5pbXBvcnQgeyBSZXN0IH0gZnJvbSAnLi9yZXN0LmNsYXNzJztcbmltcG9ydCB7IENvb2tpZSB9IGZyb20gJy4vY29va2llJztcbmltcG9ydCB7IE1hcHBpbmcgfSBmcm9tICcuL21hcHBpbmcnO1xuaW1wb3J0IHsgQXhpb3NSZXNwb25zZSB9IGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IE1vZGVscyBhcyBIZWxwZXJzTW9kZWxzIH0gZnJvbSAndHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3dlYnNxbCdcbmltcG9ydCB7IEpTT04xMCwgQ2lyYyB9IGZyb20gJ2pzb24xMC93ZWJzcWwnO1xuaW1wb3J0IHsgUmVxdWVzdENhY2hlIH0gZnJvbSAnLi9yZXF1ZXN0LWNhY2hlJztcbmltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHsgQ29uZmlnTW9kZWxzIH0gZnJvbSAndG5wLWNvbmZpZy93ZWJzcWwnO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5cblxuZXhwb3J0IG5hbWVzcGFjZSBNb2RlbHMge1xuXG4gIGV4cG9ydCBpbXBvcnQgSHR0cE1ldGhvZCA9IENvbmZpZ01vZGVscy5IdHRwTWV0aG9kO1xuICBleHBvcnQgaW1wb3J0IFBhcmFtVHlwZSA9IENvbmZpZ01vZGVscy5QYXJhbVR5cGU7XG5cbiAgZXhwb3J0IGltcG9ydCBNZXRob2RDb25maWcgPSBIZWxwZXJzTW9kZWxzLk1ldGhvZENvbmZpZztcbiAgZXhwb3J0IGltcG9ydCBDbGFzc0NvbmZpZyA9IEhlbHBlcnNNb2RlbHMuQ2xhc3NDb25maWc7XG4gIGV4cG9ydCBpbXBvcnQgUGFyYW1Db25maWcgPSBIZWxwZXJzTW9kZWxzLlBhcmFtQ29uZmlnXG5cblxuICBleHBvcnQgaW50ZXJmYWNlIEhhbmRsZVJlc3VsdE9wdGlvbnMge1xuICAgIHJlczogTW9kZWxzLk1vY2tSZXNwb25zZTtcbiAgICBtZXRob2Q6IE1vZGVscy5IdHRwTWV0aG9kO1xuICAgIGpvYmlkPzogbnVtYmVyO1xuICAgIGlzQXJyYXk/OiBib29sZWFuO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBIYW5kbGVSZXN1bHRTb3VyY2VSZXF1ZXN0T3B0aW9ucyB7XG4gICAgdXJsOiBzdHJpbmcsXG4gICAgbWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCxcblxuICAgIGJvZHk6IGFueSxcbiAgICBpc0FycmF5OiBib29sZWFuLFxuICB9XG5cbiAgZXhwb3J0IHR5cGUgQmFja2VuZEVycm9yID0ge1xuICAgIG1zZz86IHN0cmluZztcbiAgICBzdGFjaz86IHN0cmluZ1tdO1xuICAgIGRhdGE6IGFueTtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIE1ldGFSZXF1ZXN0ID0ge1xuICAgIHBhdGg6IHN0cmluZyxcbiAgICBlbmRwb2ludDogc3RyaW5nO1xuICAgIGVudGl0eTogTWFwcGluZy5NYXBwaW5nO1xuICAgIGNpcmN1bGFyOiBDaXJjW107XG4gIH1cbiAgZXhwb3J0IHR5cGUgSHR0cENvZGUgPSAyMDAgfCA0MDAgfCA0MDEgfCA0MDQgfCA1MDA7XG5cbiAgZXhwb3J0IHR5cGUgUHJvbWlzZU9ic2VydmFibGVNaXg8VD4gPSBQcm9taXNlPFQ+ICYge1xuICAgIGNhY2hlPzogUmVxdWVzdENhY2hlLFxuICAgIG9ic2VydmFibGU6IE9ic2VydmFibGU8VD47XG4gIH1cblxuICBleHBvcnQgdHlwZSBNZXRob2RXaXRob3V0Qm9keTxFLCBULCBSID0gUHJvbWlzZU9ic2VydmFibGVNaXg8RT4+ID0gKHBhcmFtcz86IFVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtcz86IGJvb2xlYW4pID0+IFJcbiAgZXhwb3J0IHR5cGUgTWV0aG9kV2l0aEJvZHk8RSwgVCwgUiA9IFByb21pc2VPYnNlcnZhYmxlTWl4PEU+PiA9IChpdGVtPzogVCwgcGFyYW1zPzogVXJsUGFyYW1zW10sIGRvTm90U2VyaWFsaXplUGFyYW1zPzogYm9vbGVhbikgPT4gUlxuICBleHBvcnQgdHlwZSBSZXBsYXlEYXRhID0ge1xuICAgIHN1YmplY3Q6IFN1YmplY3Q8YW55PixcbiAgICBkYXRhOiB7IHVybDogc3RyaW5nLCBib2R5OiBzdHJpbmcsIGhlYWRlcnM6IFJlc3RIZWFkZXJzLCBpc0FycmF5OiBib29sZWFuOyB9LFxuICAgIC8qKlxuICAgICAqIGpvYmlkXG4gICAgICovXG4gICAgaWQ6IG51bWJlcjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgUmVxUGFyYW1zID0geyB1cmw6IHN0cmluZywgbWV0aG9kOiBDb25maWdNb2RlbHMuSHR0cE1ldGhvZCwgaGVhZGVycz86IFJlc3RIZWFkZXJzLCBib2R5PzogYW55LCBqb2JpZDogbnVtYmVyLCBpc0FycmF5OiBib29sZWFuIH07XG5cbiAgZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZU1vZGVsPEEsIFRBPiB7XG4gICAgbW9kZWw6IChwYXRoTW9kZWxzPzogT2JqZWN0LCByZXNwb25zZU9iamVjdFR5cGU/OiBGdW5jdGlvbikgPT4gUmVzdDxBLCBUQT4sXG4gICAgcmVwbGF5OiAobWV0aG9kOiBDb25maWdNb2RlbHMuSHR0cE1ldGhvZCkgPT4gdm9pZDtcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTmcyUmVzdE1ldGhvZHM8RSwgVD4ge1xuICAgIGdldDogTWV0aG9kV2l0aG91dEJvZHk8RSwgVD47XG4gICAgcG9zdDogTWV0aG9kV2l0aEJvZHk8RSwgVD47XG4gICAgcHV0OiBNZXRob2RXaXRoQm9keTxFLCBUPjtcbiAgICBwYXRjaDogTWV0aG9kV2l0aEJvZHk8RSwgVD47XG4gICAgaGVhZDogTWV0aG9kV2l0aG91dEJvZHk8RSwgVD47XG4gICAgZGVsZXRlOiBNZXRob2RXaXRob3V0Qm9keTxFLCBUPjtcbiAgICBqc29ucDogTWV0aG9kV2l0aG91dEJvZHk8RSwgVD47XG4gIH1cblxuICBleHBvcnQgdHlwZSBNb2NrQ29udHJvbGxlciA9IChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBtZXRob2Q6IENvbmZpZ01vZGVscy5IdHRwTWV0aG9kLFxuICAgIGhlYWRlcnM/OiBSZXN0SGVhZGVycyxcbiAgICBib2R5PzogYW55XG4gICkgPT4gTW9ja1Jlc3BvbnNlO1xuXG4gIGV4cG9ydCB0eXBlIE1vY2tIdHRwID0gKE1vY2tSZXNwb25zZSB8IE1vY2tDb250cm9sbGVyKTtcblxuICBleHBvcnQgaW50ZXJmYWNlIEZuTWV0aG9kc0h0dHA8VCwgVEE+IGV4dGVuZHMgTmcyUmVzdE1ldGhvZHM8SHR0cFJlc3BvbnNlPFQ+LCBUPiB7XG4gICAgYXJyYXk6IE5nMlJlc3RNZXRob2RzPEh0dHBSZXNwb25zZTxUQT4sIFRBPjtcbiAgfTtcblxuICBleHBvcnQgaW50ZXJmYWNlIEZuTWV0aG9kc0h0dHBXaXRoTW9jazxULCBUQT4gZXh0ZW5kcyBOZzJSZXN0TWV0aG9kczxIdHRwUmVzcG9uc2U8VD4sIFQ+IHtcbiAgICBhcnJheTogTmcyUmVzdE1ldGhvZHM8SHR0cFJlc3BvbnNlPFRBPiwgVEE+O1xuICAgIG1vY2sobW9jazogTW9ja0h0dHAsIGNvZGU6IEh0dHBDb2RlKTogRm5NZXRob2RzSHR0cDxULCBUQT47XG4gIH07XG5cblxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTmVzdGVkUGFyYW1zIHtcbiAgICBbcGFyYW1zOiBzdHJpbmddOiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFVybFBhcmFtcyB7XG4gICAgW3VybE1vZGVsTmFtZTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlZ0V4cCB8IE9iamVjdDtcbiAgICByZWdleD86IFJlZ0V4cDtcbiAgfVtdO1xuXG4gIGV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQm9keSB7XG4gICAgcHJvdGVjdGVkIHRvSlNPTihkYXRhLCBpc0pTT05BcnJheSA9IGZhbHNlKSB7XG4gICAgICBsZXQgciA9IGlzSlNPTkFycmF5ID8gW10gOiB7fTtcbiAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByIGFzIGFueTtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgY2xhc3MgSHR0cEJvZHk8VD4gZXh0ZW5kcyBCYXNlQm9keSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc3BvbnNlVGV4dDogc3RyaW5nIHwgQmxvYiwgcHJpdmF0ZSBpc0FycmF5ID0gZmFsc2UsXG4gICAgICBwcml2YXRlIGVudGl0eTogTWFwcGluZy5NYXBwaW5nLFxuICAgICAgcHJpdmF0ZSBjaXJjdWxhcjogQ2lyY1tdXG4gICAgKSB7XG4gICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYmxvYigpOiBCbG9iIHtcbiAgICAgIHJldHVybiB0aGlzLnJlc3BvbnNlVGV4dCBhcyBCbG9iO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYm9vbGVhblZhbHVlKCkge1xuICAgICAgaWYgKCFIZWxwZXJzLmlzQmxvYih0aGlzLnJlc3BvbnNlVGV4dCkpIHtcbiAgICAgICAgcmV0dXJuIFsnb2snLCAndHJ1ZSddLmluY2x1ZGVzKCh0aGlzLnJlc3BvbnNlVGV4dCBhcyBzdHJpbmcpLnRyaW0oKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByYXdKc29uKCk6IFBhcnRpYWw8VD4ge1xuICAgICAgaWYgKCFIZWxwZXJzLmlzQmxvYih0aGlzLnJlc3BvbnNlVGV4dCkpIHtcbiAgICAgICAgbGV0IHJlcyA9IHRoaXMudG9KU09OKHRoaXMucmVzcG9uc2VUZXh0LCB0aGlzLmlzQXJyYXkpO1xuICAgICAgICBpZiAodGhpcy5jaXJjdWxhciAmJiBBcnJheS5pc0FycmF5KHRoaXMuY2lyY3VsYXIpKSB7XG4gICAgICAgICAgcmVzID0gSlNPTjEwLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlcyksIHRoaXMuY2lyY3VsYXIpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQganNvbigpOiBUIHtcbiAgICAgIGlmICghSGVscGVycy5pc0Jsb2IodGhpcy5yZXNwb25zZVRleHQpKSB7XG4gICAgICAgIGlmICh0aGlzLmVudGl0eSAmJiB0eXBlb2YgdGhpcy5lbnRpdHkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5lbnRpdHkoKTsgLy8gQExBU1RcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5lbnRpdHkgJiYgdHlwZW9mIHRoaXMuZW50aXR5ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGNvbnN0IGpzb24gPSB0aGlzLnRvSlNPTih0aGlzLnJlc3BvbnNlVGV4dCwgdGhpcy5pc0FycmF5KTtcbiAgICAgICAgICByZXR1cm4gTWFwcGluZy5lbmNvZGUoanNvbiwgdGhpcy5lbnRpdHksIHRoaXMuY2lyY3VsYXIpIGFzIGFueTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcmVzID0gdGhpcy50b0pTT04odGhpcy5yZXNwb25zZVRleHQsIHRoaXMuaXNBcnJheSk7XG4gICAgICAgIGlmICh0aGlzLmNpcmN1bGFyICYmIEFycmF5LmlzQXJyYXkodGhpcy5jaXJjdWxhcikpIHtcbiAgICAgICAgICByZXMgPSBKU09OMTAucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzKSwgdGhpcy5jaXJjdWxhcilcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgZ2V0IHRleHQoKSB7XG4gICAgICBpZiAoIUhlbHBlcnMuaXNCbG9iKHRoaXMucmVzcG9uc2VUZXh0KSkge1xuXG4gICAgICAgIHJldHVybiAodGhpcy5yZXNwb25zZVRleHQgYXMgc3RyaW5nKS5yZXBsYWNlKC9eXFxcIi8sICcnKS5yZXBsYWNlKC9cXFwiJC8sICcnKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBFcnJvckJvZHkgZXh0ZW5kcyBCYXNlQm9keSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhKSB7XG4gICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQganNvbigpOiBPYmplY3Qge1xuICAgICAgcmV0dXJuIHRoaXMudG9KU09OKHRoaXMuZGF0YSk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgdGV4dCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGFcbiAgICB9XG4gIH1cblxuXG4gIGV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlUmVzcG9uc2U8VD4ge1xuICAgIHByb3RlY3RlZCBzdGF0aWMgcmVhZG9ubHkgY29va2llcyA9IENvb2tpZS5JbnN0YW5jZTtcblxuICAgIHB1YmxpYyBnZXQgY29va2llcygpIHtcbiAgICAgIHJldHVybiBCYXNlUmVzcG9uc2UuY29va2llcztcbiAgICB9XG4gICAgY29uc3RydWN0b3IoXG4gICAgICBwdWJsaWMgcmVzcG9uc2VUZXh0Pzogc3RyaW5nIHwgQmxvYixcbiAgICAgIHB1YmxpYyByZWFkb25seSBoZWFkZXJzPzogUmVzdEhlYWRlcnMsXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzQ29kZT86IEh0dHBDb2RlIHwgbnVtYmVyLFxuICAgICAgcHVibGljIGlzQXJyYXkgPSBmYWxzZVxuICAgICkge1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBIdHRwUmVzcG9uc2U8VD4gZXh0ZW5kcyBCYXNlUmVzcG9uc2U8VD4ge1xuICAgIHB1YmxpYyBib2R5PzogSHR0cEJvZHk8VD47XG5cblxuXG5cbiAgICBycTogUmVxdWVzdENhY2hlO1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgcHVibGljIHNvdXJjZVJlcXVlc3Q6IE1vZGVscy5IYW5kbGVSZXN1bHRTb3VyY2VSZXF1ZXN0T3B0aW9ucyxcbiAgICAgIHB1YmxpYyByZXNwb25zZVRleHQ/OiBzdHJpbmcgfCBCbG9iLFxuICAgICAgcHVibGljIGhlYWRlcnM/OiBSZXN0SGVhZGVycyxcbiAgICAgIHB1YmxpYyBzdGF0dXNDb2RlPzogSHR0cENvZGUgfCBudW1iZXIsXG4gICAgICBwdWJsaWMgZW50aXR5PzogTWFwcGluZy5NYXBwaW5nIHwgRnVuY3Rpb24sXG4gICAgICBwdWJsaWMgY2lyY3VsYXI/OiBDaXJjW10sXG4gICAgICBwdWJsaWMgam9iaWQ/OiBudW1iZXIsXG4gICAgICBwdWJsaWMgaXNBcnJheSA9IGZhbHNlLFxuICAgICkge1xuXG5cblxuICAgICAgc3VwZXIocmVzcG9uc2VUZXh0LCBoZWFkZXJzLCBzdGF0dXNDb2RlLCBpc0FycmF5KTtcblxuICAgICAgdGhpcy5pbml0KClcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdCgpIHtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5lbnRpdHkgPT09ICdzdHJpbmcnKSB7XG5cbiAgICAgICAgbGV0IGVudGl0eUpTT04gPSB0aGlzLmhlYWRlcnMuZ2V0QWxsKHRoaXMuZW50aXR5KVxuICAgICAgICBpZiAoISFlbnRpdHlKU09OKSB7XG4gICAgICAgICAgdGhpcy5lbnRpdHkgPSBKU09OLnBhcnNlKGVudGl0eUpTT04uam9pbigpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNpcmN1bGFyID09PSAnc3RyaW5nJykge1xuXG4gICAgICAgIGxldCBjaXJjdXJhbEpTT04gPSB0aGlzLmhlYWRlcnMuZ2V0QWxsKHRoaXMuY2lyY3VsYXIpO1xuICAgICAgICBpZiAoISFjaXJjdXJhbEpTT04pIHtcbiAgICAgICAgICB0aGlzLmNpcmN1bGFyID0gSlNPTi5wYXJzZShjaXJjdXJhbEpTT04uam9pbigpKTtcbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgICB0aGlzLmJvZHkgPSBuZXcgSHR0cEJvZHkodGhpcy5yZXNwb25zZVRleHQsIHRoaXMuaXNBcnJheSwgdGhpcy5lbnRpdHksIHRoaXMuY2lyY3VsYXIpIGFzIGFueTtcbiAgICB9XG5cbiAgICBnZXQgY2FjaGUoKSB7XG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLnJxKSkge1xuICAgICAgICB0aGlzLnJxID0gbmV3IFJlcXVlc3RDYWNoZSh0aGlzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgUmVxdWVzdENhY2hlKHRoaXMpO1xuICAgIH1cblxuICB9XG5cbiAgZXhwb3J0IGNsYXNzIEh0dHBSZXNwb25zZUVycm9yIGV4dGVuZHMgQmFzZVJlc3BvbnNlPGFueT4ge1xuICAgIHByaXZhdGUgYm9keTogRXJyb3JCb2R5O1xuXG5cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgcHVibGljIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIHJlc3BvbnNlVGV4dD86IHN0cmluZyxcbiAgICAgIGhlYWRlcnM/OiBSZXN0SGVhZGVycyxcbiAgICAgIHN0YXR1c0NvZGU/OiBIdHRwQ29kZSB8IG51bWJlcixcbiAgICAgIHB1YmxpYyBqb2JpZD86IG51bWJlcixcbiAgICApIHtcbiAgICAgIHN1cGVyKHJlc3BvbnNlVGV4dCwgaGVhZGVycywgc3RhdHVzQ29kZSk7XG4gICAgICB0aGlzLmJvZHkgPSBuZXcgRXJyb3JCb2R5KHJlc3BvbnNlVGV4dClcbiAgICB9XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIE1vY2tSZXNwb25zZSB7XG4gICAgZGF0YT86IGFueTtcbiAgICBjb2RlPzogSHR0cENvZGU7XG4gICAgZXJyb3I/OiBzdHJpbmc7XG4gICAgaGVhZGVycz86IFJlc3RIZWFkZXJzO1xuICAgIGpvYmlkPzogbnVtYmVyO1xuICAgIGlzQXJyYXk6IGJvb2xlYW47XG4gIH1cblxuICBleHBvcnQgdHlwZSBSZXNwb25zZVR5cGVBeGlvcyA9ICdibG9iJyB8ICd0ZXh0J1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPW5nMi1yZXN0IGxpYi9tb2RlbHMudHMiXX0=
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { Resource } from '../resource.service';
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @export
|
|
6
|
+
* @abstract
|
|
7
|
+
* @class SimpleResource
|
|
8
|
+
* @extends {Resource<T, A, TA>}
|
|
9
|
+
* @template E Endpoint type
|
|
10
|
+
* @template A Single modle type
|
|
11
|
+
* @template TA Array Model Type
|
|
12
|
+
* @template RP rest url parameters type
|
|
13
|
+
* @template QP query parameter type
|
|
14
|
+
*/
|
|
15
|
+
class ExtendedResource {
|
|
16
|
+
static { this.doNotSerializeQueryParams = false; }
|
|
17
|
+
static { this.handlers = []; }
|
|
18
|
+
constructor(endpoint, path_model) {
|
|
19
|
+
this.endpoint = endpoint;
|
|
20
|
+
this.path_model = path_model;
|
|
21
|
+
/**
|
|
22
|
+
* Get model by rest params
|
|
23
|
+
*/
|
|
24
|
+
this.model = (restParams) => {
|
|
25
|
+
return {
|
|
26
|
+
get: (queryPrams) => {
|
|
27
|
+
return Observable.create((observer) => {
|
|
28
|
+
ExtendedResource.handlers.push(this.rest.model(restParams)
|
|
29
|
+
.get([queryPrams], ExtendedResource.doNotSerializeQueryParams)
|
|
30
|
+
.observable
|
|
31
|
+
.subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
patch: (item, queryParams) => {
|
|
35
|
+
return Observable.create((observer) => {
|
|
36
|
+
ExtendedResource.handlers.push(this.rest.model(restParams)
|
|
37
|
+
.put(item, [queryParams], ExtendedResource.doNotSerializeQueryParams)
|
|
38
|
+
.observable
|
|
39
|
+
.subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
|
|
40
|
+
});
|
|
41
|
+
},
|
|
42
|
+
head: (queryPrams) => {
|
|
43
|
+
return Observable.create((observer) => {
|
|
44
|
+
ExtendedResource.handlers.push(this.rest.model(restParams)
|
|
45
|
+
.head([queryPrams], ExtendedResource.doNotSerializeQueryParams)
|
|
46
|
+
.observable
|
|
47
|
+
.subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
|
|
48
|
+
});
|
|
49
|
+
},
|
|
50
|
+
query: (queryPrams) => {
|
|
51
|
+
return Observable.create((observer) => {
|
|
52
|
+
ExtendedResource.handlers.push(this.rest.model(restParams).
|
|
53
|
+
array
|
|
54
|
+
.get([queryPrams], ExtendedResource.doNotSerializeQueryParams)
|
|
55
|
+
.observable
|
|
56
|
+
.subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
|
|
57
|
+
});
|
|
58
|
+
},
|
|
59
|
+
post: (item, queryParams) => {
|
|
60
|
+
return Observable.create((observer) => {
|
|
61
|
+
ExtendedResource.handlers.push(this.rest.model(restParams)
|
|
62
|
+
.post(item, [queryParams], ExtendedResource.doNotSerializeQueryParams)
|
|
63
|
+
.observable
|
|
64
|
+
.subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
|
|
65
|
+
});
|
|
66
|
+
},
|
|
67
|
+
put: (item, queryParams) => {
|
|
68
|
+
return Observable.create((observer) => {
|
|
69
|
+
ExtendedResource.handlers.push(this.rest.model(restParams)
|
|
70
|
+
.put(item, [queryParams], ExtendedResource.doNotSerializeQueryParams)
|
|
71
|
+
.observable
|
|
72
|
+
.subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
|
|
73
|
+
});
|
|
74
|
+
},
|
|
75
|
+
delete: (queryPrams) => {
|
|
76
|
+
return Observable.create((observer) => {
|
|
77
|
+
ExtendedResource.handlers.push(this.rest.model(restParams)
|
|
78
|
+
.delete([queryPrams], ExtendedResource.doNotSerializeQueryParams)
|
|
79
|
+
.observable
|
|
80
|
+
.subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
this.rest = Resource.create(endpoint, path_model);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
*
|
|
90
|
+
* @export
|
|
91
|
+
* @class SimpleResource
|
|
92
|
+
* @template A single model type
|
|
93
|
+
* @template TA array model type
|
|
94
|
+
* @template RP rest parameters type
|
|
95
|
+
* @template QP query parameters type
|
|
96
|
+
*/
|
|
97
|
+
class SimpleResource {
|
|
98
|
+
static { this._isSetQueryParamsSerialization = false; }
|
|
99
|
+
static set doNotSerializeQueryParams(value) {
|
|
100
|
+
if (!SimpleResource._isSetQueryParamsSerialization) {
|
|
101
|
+
SimpleResource._isSetQueryParamsSerialization = true;
|
|
102
|
+
ExtendedResource.doNotSerializeQueryParams = value;
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
console.warn(`Query params serialization already set as
|
|
106
|
+
${ExtendedResource.doNotSerializeQueryParams},`);
|
|
107
|
+
}
|
|
108
|
+
static __destroy() {
|
|
109
|
+
ExtendedResource.handlers.forEach(h => h.unsubscribe());
|
|
110
|
+
}
|
|
111
|
+
constructor(endpoint, model) {
|
|
112
|
+
let rest = new ExtendedResource(endpoint, model);
|
|
113
|
+
this.model = rest.model;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
export { SimpleResource };
|
|
117
|
+
;
|
|
118
|
+
({}); // @--end-of-file-for-module=ng2-rest lib/other/simple-resource.ts
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXJlc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS13ZWJzcWwvbmcyLXJlc3QvcHJvamVjdHMvbmcyLXJlc3Qvc3JjL2xpYi9vdGhlci9zaW1wbGUtcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUtsQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFxQi9DOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxnQkFBZ0I7YUFDTiw4QkFBeUIsR0FBRyxLQUFLLEFBQVIsQ0FBUzthQUNsQyxhQUFRLEdBQW1CLEVBQUUsQUFBckIsQ0FBc0I7SUE2RzVDLFlBQTJCLFFBQW9CLEVBQVUsVUFBa0I7UUFBaEQsYUFBUSxHQUFSLFFBQVEsQ0FBWTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVE7UUF6RzNFOztVQUVFO1FBQ0YsVUFBSyxHQUF5QixDQUFDLFVBQWUsRUFBRSxFQUFFO1lBRWhELE9BQU87Z0JBRUwsR0FBRyxFQUFFLENBQUMsVUFBZSxFQUFFLEVBQUU7b0JBQ3ZCLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQXFCLEVBQUUsRUFBRTt3QkFDakQsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7NkJBQ3ZELEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDOzZCQUM3RCxVQUFVOzZCQUNWLFNBQVMsQ0FDUixJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDckMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdB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QUUsS0FBSyxDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQzFCLENBQUM7O1NBdEJVLGNBQWM7QUEwQjFCLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0VBQWtFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPYnNlcnZlciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICcuLi9yZXNvdXJjZS5zZXJ2aWNlJztcblxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdFByb21pc2VzPEEsIFRBLCBRUCBleHRlbmRzIE1vZGVscy5VcmxQYXJhbXM+IHtcbiAgZ2V0OiAocXVlcnlQYXJhbXM/OiBRUCkgPT4gT2JzZXJ2YWJsZTxNb2RlbHMuSHR0cFJlc3BvbnNlPEE+PjtcbiAgaGVhZDogKHF1ZXJ5UGFyYW1zPzogUVApID0+IE9ic2VydmFibGU8TW9kZWxzLkh0dHBSZXNwb25zZTxBPj47XG4gIHF1ZXJ5OiAocXVlcnlQYXJhbXM/OiBRUCkgPT4gT2JzZXJ2YWJsZTxNb2RlbHMuSHR0cFJlc3BvbnNlPFRBPj47XG4gIHB1dDogKGl0ZW0/OiBBLCBxdWVyeVBhcmFtcz86IFFQKSA9PiBPYnNlcnZhYmxlPE1vZGVscy5IdHRwUmVzcG9uc2U8QT4+O1xuICBwYXRjaDogKGl0ZW0/OiBBLCBxdWVyeVBhcmFtcz86IFFQKSA9PiBPYnNlcnZhYmxlPE1vZGVscy5IdHRwUmVzcG9uc2U8QT4+O1xuICBwb3N0OiAoaXRlbT86IEEsIHF1ZXJ5UGFyYW1zPzogUVApID0+IE9ic2VydmFibGU8TW9kZWxzLkh0dHBSZXNwb25zZTxBPj47XG4gIGRlbGV0ZTogKHF1ZXJ5UGFyYW1zPzogUVApID0+IE9ic2VydmFibGU8TW9kZWxzLkh0dHBSZXNwb25zZTxBPiB8IGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWw8QSwgVEEsIFJQIGV4dGVuZHMgT2JqZWN0LCBRUCBleHRlbmRzIE1vZGVscy5VcmxQYXJhbXM+IHtcbiAgKHJlc3RQYXJhbXM/OiBSUCk6IFJlc3RQcm9taXNlczxBLCBUQSwgUVA+O1xufVxuXG5cblxuXG4vKipcbiAqXG4gKiBAZXhwb3J0XG4gKiBAYWJzdHJhY3RcbiAqIEBjbGFzcyBTaW1wbGVSZXNvdXJjZVxuICogQGV4dGVuZHMge1Jlc291cmNlPFQsIEEsIFRBPn1cbiAqIEB0ZW1wbGF0ZSBFICBFbmRwb2ludCB0eXBlXG4gKiBAdGVtcGxhdGUgQSBTaW5nbGUgbW9kbGUgdHlwZVxuICogQHRlbXBsYXRlIFRBIEFycmF5IE1vZGVsIFR5cGVcbiAqIEB0ZW1wbGF0ZSBSUCByZXN0IHVybCBwYXJhbWV0ZXJzIHR5cGVcbiAqIEB0ZW1wbGF0ZSBRUCBxdWVyeSBwYXJhbWV0ZXIgdHlwZVxuICovXG5jbGFzcyBFeHRlbmRlZFJlc291cmNlPEUsIEEsIFRBLCBSUCBleHRlbmRzIE9iamVjdCwgUVAgZXh0ZW5kcyBNb2RlbHMuVXJsUGFyYW1zPiAge1xuICBwdWJsaWMgc3RhdGljIGRvTm90U2VyaWFsaXplUXVlcnlQYXJhbXMgPSBmYWxzZTtcbiAgcHVibGljIHN0YXRpYyBoYW5kbGVyczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICByZXN0OiBNb2RlbHMuUmVzb3VyY2VNb2RlbDxBLCBUQT47XG5cbiAgLyoqXG4gICAqIEdldCBtb2RlbCBieSByZXN0IHBhcmFtc1xuICAqL1xuICBtb2RlbDogTW9kZWw8QSwgVEEsIFJQLCBRUD4gPSAocmVzdFBhcmFtcz86IFJQKSA9PiB7XG5cbiAgICByZXR1cm4ge1xuXG4gICAgICBnZXQ6IChxdWVyeVByYW1zPzogUVApID0+IHtcbiAgICAgICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKChvYnNlcnZlcjogT2JzZXJ2ZXI8QT4pID0+IHtcbiAgICAgICAgICBFeHRlbmRlZFJlc291cmNlLmhhbmRsZXJzLnB1c2godGhpcy5yZXN0Lm1vZGVsKHJlc3RQYXJhbXMpXG4gICAgICAgICAgICAuZ2V0KFtxdWVyeVByYW1zXSwgRXh0ZW5kZWRSZXNvdXJjZS5kb05vdFNlcmlhbGl6ZVF1ZXJ5UGFyYW1zKVxuICAgICAgICAgICAgLm9ic2VydmFibGVcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgIGRhdGEgPT4gb2JzZXJ2ZXIubmV4dChkYXRhLmJvZHkuanNvbiksXG4gICAgICAgICAgICAgIGVyciA9PiBvYnNlcnZlci5lcnJvcihlcnIpLFxuICAgICAgICAgICAgICAoKSA9PiBvYnNlcnZlci5jb21wbGV0ZSgpKSlcbiAgICAgICAgfSlcbiAgICAgIH0sXG5cbiAgICAgIHBhdGNoOiAoaXRlbTogQSwgcXVlcnlQYXJhbXM/OiBRUCkgPT4ge1xuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUoKG9ic2VydmVyOiBPYnNlcnZlcjxBPikgPT4ge1xuICAgICAgICAgIEV4dGVuZGVkUmVzb3VyY2UuaGFuZGxlcnMucHVzaCh0aGlzLnJlc3QubW9kZWwocmVzdFBhcmFtcylcbiAgICAgICAgICAgIC5wdXQoaXRlbSwgW3F1ZXJ5UGFyYW1zXSwgRXh0ZW5kZWRSZXNvdXJjZS5kb05vdFNlcmlhbGl6ZVF1ZXJ5UGFyYW1zKVxuICAgICAgICAgICAgLm9ic2VydmFibGVcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgIGRhdGEgPT4gb2JzZXJ2ZXIubmV4dChkYXRhLmJvZHkuanNvbiksXG4gICAgICAgICAgICAgIGVyciA9PiBvYnNlcnZlci5lcnJvcihlcnIpLFxuICAgICAgICAgICAgICAoKSA9PiBvYnNlcnZlci5jb21wbGV0ZSgpKSlcbiAgICAgICAgfSlcblxuICAgICAgfSxcblxuICAgICAgaGVhZDogKHF1ZXJ5UHJhbXM/OiBRUCkgPT4ge1xuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUoKG9ic2VydmVyOiBPYnNlcnZlcjxBPikgPT4ge1xuICAgICAgICAgIEV4dGVuZGVkUmVzb3VyY2UuaGFuZGxlcnMucHVzaCh0aGlzLnJlc3QubW9kZWwocmVzdFBhcmFtcylcbiAgICAgICAgICAgIC5oZWFkKFtxdWVyeVByYW1zXSwgRXh0ZW5kZWRSZXNvdXJjZS5kb05vdFNlcmlhbGl6ZVF1ZXJ5UGFyYW1zKVxuICAgICAgICAgICAgLm9ic2VydmFibGVcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgIGRhdGEgPT4gb2JzZXJ2ZXIubmV4dChkYXRhLmJvZHkuanNvbiksXG4gICAgICAgICAgICAgIGVyciA9PiBvYnNlcnZlci5lcnJvcihlcnIpLFxuICAgICAgICAgICAgICAoKSA9PiBvYnNlcnZlci5jb21wbGV0ZSgpKSlcbiAgICAgICAgfSlcbiAgICAgIH0sXG5cbiAgICAgIHF1ZXJ5OiAocXVlcnlQcmFtcz86IFFQKSA9PiB7XG4gICAgICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZSgob2JzZXJ2ZXI6IE9ic2VydmVyPFRBPikgPT4ge1xuICAgICAgICAgIEV4dGVuZGVkUmVzb3VyY2UuaGFuZGxlcnMucHVzaCh0aGlzLnJlc3QubW9kZWwocmVzdFBhcmFtcykuXG4gICAgICAgICAgICBhcnJheVxuICAgICAgICAgICAgLmdldChbcXVlcnlQcmFtc10sIEV4dGVuZGVkUmVzb3VyY2UuZG9Ob3RTZXJpYWxpemVRdWVyeVBhcmFtcylcbiAgICAgICAgICAgIC5vYnNlcnZhYmxlXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICBkYXRhID0+IG9ic2VydmVyLm5leHQoZGF0YS5ib2R5Lmpzb24pLFxuICAgICAgICAgICAgICBlcnIgPT4gb2JzZXJ2ZXIuZXJyb3IoZXJyKSxcbiAgICAgICAgICAgICAgKCkgPT4gb2JzZXJ2ZXIuY29tcGxldGUoKSkpXG4gICAgICAgIH0pXG4gICAgICB9LFxuXG5cbiAgICAgIHBvc3Q6IChpdGVtOiBBLCBxdWVyeVBhcmFtcz86IFFQKSA9PiB7XG4gICAgICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZSgob2JzZXJ2ZXI6IE9ic2VydmVyPEE+KSA9PiB7XG4gICAgICAgICAgRXh0ZW5kZWRSZXNvdXJjZS5oYW5kbGVycy5wdXNoKHRoaXMucmVzdC5tb2RlbChyZXN0UGFyYW1zKVxuICAgICAgICAgICAgLnBvc3QoaXRlbSwgW3F1ZXJ5UGFyYW1zXSwgRXh0ZW5kZWRSZXNvdXJjZS5kb05vdFNlcmlhbGl6ZVF1ZXJ5UGFyYW1zKVxuICAgICAgICAgICAgLm9ic2VydmFibGVcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgIGRhdGEgPT4gb2JzZXJ2ZXIubmV4dChkYXRhLmJvZHkuanNvbiksXG4gICAgICAgICAgICAgIGVyciA9PiBvYnNlcnZlci5lcnJvcihlcnIpLFxuICAgICAgICAgICAgICAoKSA9PiBvYnNlcnZlci5jb21wbGV0ZSgpKSlcbiAgICAgICAgfSlcblxuICAgICAgfSxcblxuXG4gICAgICBwdXQ6IChpdGVtOiBBLCBxdWVyeVBhcmFtcz86IFFQKSA9PiB7XG4gICAgICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZSgob2JzZXJ2ZXI6IE9ic2VydmVyPEE+KSA9PiB7XG4gICAgICAgICAgRXh0ZW5kZWRSZXNvdXJjZS5oYW5kbGVycy5wdXNoKHRoaXMucmVzdC5tb2RlbChyZXN0UGFyYW1zKVxuICAgICAgICAgICAgLnB1dChpdGVtLCBbcXVlcnlQYXJhbXNdLCBFeHRlbmRlZFJlc291cmNlLmRvTm90U2VyaWFsaXplUXVlcnlQYXJhbXMpXG4gICAgICAgICAgICAub2JzZXJ2YWJsZVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgZGF0YSA9PiBvYnNlcnZlci5uZXh0KGRhdGEuYm9keS5qc29uKSxcbiAgICAgICAgICAgICAgZXJyID0+IG9ic2VydmVyLmVycm9yKGVyciksXG4gICAgICAgICAgICAgICgpID0+IG9ic2VydmVyLmNvbXBsZXRlKCkpKVxuICAgICAgICB9KVxuXG4gICAgICB9LFxuXG5cbiAgICAgIGRlbGV0ZTogKHF1ZXJ5UHJhbXM/OiBRUCkgPT4ge1xuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUoKG9ic2VydmVyOiBPYnNlcnZlcjxBPikgPT4ge1xuICAgICAgICAgIEV4dGVuZGVkUmVzb3VyY2UuaGFuZGxlcnMucHVzaCh0aGlzLnJlc3QubW9kZWwocmVzdFBhcmFtcylcbiAgICAgICAgICAgIC5kZWxldGUoW3F1ZXJ5UHJhbXNdLCBFeHRlbmRlZFJlc291cmNlLmRvTm90U2VyaWFsaXplUXVlcnlQYXJhbXMpXG4gICAgICAgICAgICAub2JzZXJ2YWJsZVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgZGF0YSA9PiBvYnNlcnZlci5uZXh0KGRhdGEuYm9keS5qc29uKSxcbiAgICAgICAgICAgICAgZXJyID0+IG9ic2VydmVyLmVycm9yKGVyciksXG4gICAgICAgICAgICAgICgpID0+IG9ic2VydmVyLmNvbXBsZXRlKCkpKVxuICAgICAgICB9KVxuICAgICAgfVxuXG5cbiAgICB9XG4gIH1cblxuXG5cblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBlbmRwb2ludDogRSB8IHN0cmluZywgcHJpdmF0ZSBwYXRoX21vZGVsOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc3QgPSA8YW55PlJlc291cmNlLmNyZWF0ZTxBLCBUQT4oPGFueT5lbmRwb2ludCwgcGF0aF9tb2RlbCk7XG5cbiAgfVxuXG59XG5cblxuXG4vKipcbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgU2ltcGxlUmVzb3VyY2VcbiAqIEB0ZW1wbGF0ZSBBIHNpbmdsZSBtb2RlbCB0eXBlXG4gKiBAdGVtcGxhdGUgVEEgYXJyYXkgbW9kZWwgdHlwZVxuICogQHRlbXBsYXRlIFJQIHJlc3QgcGFyYW1ldGVycyB0eXBlXG4gKiBAdGVtcGxhdGUgUVAgcXVlcnkgcGFyYW1ldGVycyB0eXBlXG4gKi9cbmV4cG9ydCBjbGFzcyBTaW1wbGVSZXNvdXJjZTxBLCBUQT4ge1xuICBtb2RlbDogTW9kZWw8QSwgVEEsIE9iamVjdCwgTW9kZWxzLlVybFBhcmFtcz47XG5cblxuICBwcml2YXRlIHN0YXRpYyBfaXNTZXRRdWVyeVBhcmFtc1NlcmlhbGl6YXRpb24gPSBmYWxzZTtcbiAgcHVibGljIHN0YXRpYyBzZXQgZG9Ob3RTZXJpYWxpemVRdWVyeVBhcmFtcyh2YWx1ZSkge1xuICAgIGlmICghU2ltcGxlUmVzb3VyY2UuX2lzU2V0UXVlcnlQYXJhbXNTZXJpYWxpemF0aW9uKSB7XG4gICAgICBTaW1wbGVSZXNvdXJjZS5faXNTZXRRdWVyeVBhcmFtc1NlcmlhbGl6YXRpb24gPSB0cnVlO1xuICAgICAgRXh0ZW5kZWRSZXNvdXJjZS5kb05vdFNlcmlhbGl6ZVF1ZXJ5UGFyYW1zID0gdmFsdWVcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc29sZS53YXJuKGBRdWVyeSBwYXJhbXMgc2VyaWFsaXphdGlvbiBhbHJlYWR5IHNldCBhc1xuICAgICAgICAke0V4dGVuZGVkUmVzb3VyY2UuZG9Ob3RTZXJpYWxpemVRdWVyeVBhcmFtc30sYCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIF9fZGVzdHJveSgpIHtcbiAgICBFeHRlbmRlZFJlc291cmNlLmhhbmRsZXJzLmZvckVhY2goaCA9PiBoLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZW5kcG9pbnQ6IHN0cmluZywgbW9kZWw6IHN0cmluZykge1xuICAgIGxldCByZXN0ID0gbmV3IEV4dGVuZGVkUmVzb3VyY2U8c3RyaW5nLCBBLCBUQSwgT2JqZWN0LCBNb2RlbHMuVXJsUGFyYW1zPihlbmRwb2ludCwgbW9kZWwpO1xuICAgIHRoaXMubW9kZWwgPSByZXN0Lm1vZGVsO1xuICB9XG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPW5nMi1yZXN0IGxpYi9vdGhlci9zaW1wbGUtcmVzb3VyY2UudHMiXX0=
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Models } from './models';
|
|
2
|
+
import { Log, Level } from 'ng2-logger/websql';
|
|
3
|
+
import { Helpers } from 'tnp-core/websql';
|
|
4
|
+
import { RestHeaders } from './rest-headers';
|
|
5
|
+
const log = Log.create('request-cache', Level.__NOTHING);
|
|
6
|
+
/**
|
|
7
|
+
* @deprecated
|
|
8
|
+
* there is Cache API for that
|
|
9
|
+
*/
|
|
10
|
+
class RequestCache {
|
|
11
|
+
static { this.LOCAL_STORAGE_KEY = 'ng2restrequestcache'; }
|
|
12
|
+
static { this.cached = []; }
|
|
13
|
+
static { this.isRestoredFromLocalStorage = false; }
|
|
14
|
+
static restoreFromLocalStorage() {
|
|
15
|
+
if (Helpers.isNode) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (!RequestCache.isRestoredFromLocalStorage) {
|
|
19
|
+
RequestCache.isRestoredFromLocalStorage = true;
|
|
20
|
+
const data = localStorage.getItem(RequestCache.LOCAL_STORAGE_KEY);
|
|
21
|
+
let requests = [];
|
|
22
|
+
if (data) {
|
|
23
|
+
try {
|
|
24
|
+
requests = JSON.parse(data);
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
}
|
|
28
|
+
const restored = requests.map(r => {
|
|
29
|
+
let { sourceRequest, responseText, body, headers, circular, entity, isArray, cookies, statusCode } = r.response;
|
|
30
|
+
r.response = new Models.HttpResponse(sourceRequest, responseText, RestHeaders.from(headers), statusCode, entity, circular, -1, // jobid from local storage TODO
|
|
31
|
+
isArray);
|
|
32
|
+
r = new RequestCache(r.response);
|
|
33
|
+
r.response.rq = r;
|
|
34
|
+
return r;
|
|
35
|
+
});
|
|
36
|
+
log.i('RESTORED FROM LOCAL STORAGE', restored);
|
|
37
|
+
RequestCache.cached = restored;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
static findBy(sourceRequest) {
|
|
42
|
+
log.i('findby', sourceRequest);
|
|
43
|
+
log.i('RequestCache.cached', RequestCache.cached);
|
|
44
|
+
RequestCache.restoreFromLocalStorage();
|
|
45
|
+
return RequestCache.cached.find(c => {
|
|
46
|
+
const a = c.response.sourceRequest;
|
|
47
|
+
const b = sourceRequest;
|
|
48
|
+
return (a.isArray === b.isArray &&
|
|
49
|
+
a.url === b.url &&
|
|
50
|
+
a.method === b.method &&
|
|
51
|
+
a.body === b.body);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
constructor(response) {
|
|
55
|
+
this.response = response;
|
|
56
|
+
}
|
|
57
|
+
get containsCache() {
|
|
58
|
+
RequestCache.restoreFromLocalStorage();
|
|
59
|
+
return RequestCache.cached.includes(this);
|
|
60
|
+
}
|
|
61
|
+
persistsInLocalStorage() {
|
|
62
|
+
localStorage.setItem(RequestCache.LOCAL_STORAGE_KEY, JSON.stringify(RequestCache.cached.map(r => {
|
|
63
|
+
return {
|
|
64
|
+
response: {
|
|
65
|
+
sourceRequest: r.response.sourceRequest,
|
|
66
|
+
responseText: r.response.responseText,
|
|
67
|
+
headers: r.response.headers,
|
|
68
|
+
statusCode: r.response.statusCode,
|
|
69
|
+
entity: r.response.entity,
|
|
70
|
+
circular: r.response.circular,
|
|
71
|
+
isArray: r.response.isArray,
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
})));
|
|
75
|
+
}
|
|
76
|
+
store() {
|
|
77
|
+
RequestCache.restoreFromLocalStorage();
|
|
78
|
+
if (!this.containsCache) {
|
|
79
|
+
RequestCache.cached.push(this);
|
|
80
|
+
this.persistsInLocalStorage();
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
console.log('already stored');
|
|
84
|
+
}
|
|
85
|
+
return this;
|
|
86
|
+
}
|
|
87
|
+
remove() {
|
|
88
|
+
RequestCache.restoreFromLocalStorage();
|
|
89
|
+
const index = RequestCache.cached.indexOf(this);
|
|
90
|
+
if (index !== -1) {
|
|
91
|
+
RequestCache.cached.splice(index, 1);
|
|
92
|
+
this.persistsInLocalStorage();
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
console.log('already removed');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
export { RequestCache };
|
|
100
|
+
;
|
|
101
|
+
({}); // @--end-of-file-for-module=ng2-rest lib/request-cache.ts
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUtd2Vic3FsL25nMi1yZXN0L3Byb2plY3RzL25nMi1yZXN0L3NyYy9saWIvcmVxdWVzdC1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7QUFFeEQ7OztHQUdHO0FBQ0gsTUFBYSxZQUFZO2FBRVAsc0JBQWlCLEdBQUcscUJBQXFCLENBQUM7YUFFM0MsV0FBTSxHQUFtQixFQUFFLENBQUM7YUFDNUIsK0JBQTBCLEdBQUcsS0FBSyxDQUFDO0lBRTFDLE1BQU0sQ0FBQyx1QkFBdUI7UUFDcEMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2xCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsMEJBQTBCLEVBQUU7WUFDNUMsWUFBWSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQztZQUMvQyxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2xFLElBQUksUUFBUSxHQUFtQixFQUFFLENBQUM7WUFDbEMsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsSUFBSTtvQkFDRixRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQW1CLENBQUM7aUJBQy9DO2dCQUFDLE9BQU8sS0FB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LENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRUQsS0FBSztRQUNILFlBQVksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQy9CO2FBQU07WUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDL0I7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNO1FBQ0osWUFBWSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDdkMsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDaEIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQy9CO2FBQU07WUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDOztTQWpIVSxZQUFZO0FBcUh4QixDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDBEQUEwRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgTG9nLCBMZXZlbCB9IGZyb20gJ25nMi1sb2dnZXIvd2Vic3FsJztcbmltcG9ydCB7IEhlbHBlcnMgfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHsgUmVzdEhlYWRlcnMgfSBmcm9tICcuL3Jlc3QtaGVhZGVycyc7XG5jb25zdCBsb2cgPSBMb2cuY3JlYXRlKCdyZXF1ZXN0LWNhY2hlJywgTGV2ZWwuX19OT1RISU5HKVxuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiB0aGVyZSBpcyBDYWNoZSBBUEkgZm9yIHRoYXRcbiAqL1xuZXhwb3J0IGNsYXNzIFJlcXVlc3RDYWNoZSB7XG5cbiAgc3RhdGljIHJlYWRvbmx5IExPQ0FMX1NUT1JBR0VfS0VZID0gJ25nMnJlc3RyZXF1ZXN0Y2FjaGUnO1xuXG4gIHByaXZhdGUgc3RhdGljIGNhY2hlZDogUmVxdWVzdENhY2hlW10gPSBbXTtcbiAgcHJpdmF0ZSBzdGF0aWMgaXNSZXN0b3JlZEZyb21Mb2NhbFN0b3JhZ2UgPSBmYWxzZTtcblxuICBwcml2YXRlIHN0YXRpYyByZXN0b3JlRnJvbUxvY2FsU3RvcmFnZSgpIHtcbiAgICBpZiAoSGVscGVycy5pc05vZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFSZXF1ZXN0Q2FjaGUuaXNSZXN0b3JlZEZyb21Mb2NhbFN0b3JhZ2UpIHtcbiAgICAgIFJlcXVlc3RDYWNoZS5pc1Jlc3RvcmVkRnJvbUxvY2FsU3RvcmFnZSA9IHRydWU7XG4gICAgICBjb25zdCBkYXRhID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oUmVxdWVzdENhY2hlLkxPQ0FMX1NUT1JBR0VfS0VZKTtcbiAgICAgIGxldCByZXF1ZXN0czogUmVxdWVzdENhY2hlW10gPSBbXTtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVxdWVzdHMgPSBKU09OLnBhcnNlKGRhdGEpIGFzIFJlcXVlc3RDYWNoZVtdO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdG9yZWQgPSByZXF1ZXN0cy5tYXAociA9PiB7XG4gICAgICAgICAgbGV0IHsgc291cmNlUmVxdWVzdCwgcmVzcG9uc2VUZXh0LCBib2R5LCBoZWFkZXJzLCBjaXJjdWxhcixcbiAgICAgICAgICAgIGVudGl0eSwgaXNBcnJheSwgY29va2llcywgc3RhdHVzQ29kZSB9ID0gci5yZXNwb25zZTtcbiAgICAgICAgICByLnJlc3BvbnNlID0gbmV3IE1vZGVscy5IdHRwUmVzcG9uc2UoXG4gICAgICAgICAgICBzb3VyY2VSZXF1ZXN0LFxuICAgICAgICAgICAgcmVzcG9uc2VUZXh0LFxuICAgICAgICAgICAgUmVzdEhlYWRlcnMuZnJvbShoZWFkZXJzKSxcbiAgICAgICAgICAgIHN0YXR1c0NvZGUsXG4gICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICBjaXJjdWxhcixcbiAgICAgICAgICAgIC0xLCAvLyBqb2JpZCBmcm9tIGxvY2FsIHN0b3JhZ2UgVE9ET1xuICAgICAgICAgICAgaXNBcnJheSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHIgPSBuZXcgUmVxdWVzdENhY2hlKHIucmVzcG9uc2UpO1xuICAgICAgICAgIHIucmVzcG9uc2UucnEgPSByO1xuXG4gICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0pO1xuICAgICAgICBsb2cuaSgnUkVTVE9SRUQgRlJPTSBMT0NBTCBTVE9SQUdFJywgcmVzdG9yZWQpO1xuICAgICAgICBSZXF1ZXN0Q2FjaGUuY2FjaGVkID0gcmVzdG9yZWQ7XG4gICAgICB9XG5cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZpbmRCeShzb3VyY2VSZXF1ZXN0OiBNb2RlbHMuSGFuZGxlUmVzdWx0U291cmNlUmVxdWVzdE9wdGlvbnMpIHtcbiAgICBsb2cuaSgnZmluZGJ5Jywgc291cmNlUmVxdWVzdClcbiAgICBsb2cuaSgnUmVxdWVzdENhY2hlLmNhY2hlZCcsIFJlcXVlc3RDYWNoZS5jYWNoZWQpXG4gICAgUmVxdWVzdENhY2hlLnJlc3RvcmVGcm9tTG9jYWxTdG9yYWdlKCk7XG4gICAgcmV0dXJuIFJlcXVlc3RDYWNoZS5jYWNoZWQuZmluZChjID0+IHtcbiAgICAgIGNvbnN0IGEgPSBjLnJlc3BvbnNlLnNvdXJjZVJlcXVlc3Q7XG4gICAgICBjb25zdCBiID0gc291cmNlUmVxdWVzdDtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGEuaXNBcnJheSA9PT0gYi5pc0FycmF5ICYmXG4gICAgICAgIGEudXJsID09PSBiLnVybCAmJlxuICAgICAgICBhLm1ldGhvZCA9PT0gYi5tZXRob2QgJiZcbiAgICAgICAgYS5ib2R5ID09PSBiLmJvZHlcbiAgICAgIClcbiAgICB9KTtcbiAgfVxuXG5cblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZXNwb25zZTogTW9kZWxzLkh0dHBSZXNwb25zZTxhbnk+XG4gICkge1xuXG4gIH1cblxuICBnZXQgY29udGFpbnNDYWNoZSgpIHtcbiAgICBSZXF1ZXN0Q2FjaGUucmVzdG9yZUZyb21Mb2NhbFN0b3JhZ2UoKTtcbiAgICByZXR1cm4gUmVxdWVzdENhY2hlLmNhY2hlZC5pbmNsdWRlcyh0aGlzKTtcbiAgfVxuXG4gIHByaXZhdGUgcGVyc2lzdHNJbkxvY2FsU3RvcmFnZSgpIHtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShSZXF1ZXN0Q2FjaGUuTE9DQUxfU1RPUkFHRV9LRVksXG4gICAgICBKU09OLnN0cmluZ2lmeShSZXF1ZXN0Q2FjaGUuY2FjaGVkLm1hcChyID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNwb25zZToge1xuICAgICAgICAgICAgc291cmNlUmVxdWVzdDogci5yZXNwb25zZS5zb3VyY2VSZXF1ZXN0LFxuICAgICAgICAgICAgcmVzcG9uc2VUZXh0OiByLnJlc3BvbnNlLnJlc3BvbnNlVGV4dCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHIucmVzcG9uc2UuaGVhZGVycyxcbiAgICAgICAgICAgIHN0YXR1c0NvZGU6IHIucmVzcG9uc2Uuc3RhdHVzQ29kZSxcbiAgICAgICAgICAgIGVudGl0eTogci5yZXNwb25zZS5lbnRpdHksXG4gICAgICAgICAgICBjaXJjdWxhcjogci5yZXNwb25zZS5jaXJjdWxhcixcbiAgICAgICAgICAgIGlzQXJyYXk6IHIucmVzcG9uc2UuaXNBcnJheSxcbiAgICAgICAgICB9IGFzIE1vZGVscy5IdHRwUmVzcG9uc2U8YW55PlxuICAgICAgICB9O1xuICAgICAgfSkpKTtcbiAgfVxuXG4gIHN0b3JlKCkge1xuICAgIFJlcXVlc3RDYWNoZS5yZXN0b3JlRnJvbUxvY2FsU3RvcmFnZSgpO1xuICAgIGlmICghdGhpcy5jb250YWluc0NhY2hlKSB7XG4gICAgICBSZXF1ZXN0Q2FjaGUuY2FjaGVkLnB1c2godGhpcyk7XG4gICAgICB0aGlzLnBlcnNpc3RzSW5Mb2NhbFN0b3JhZ2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coJ2FscmVhZHkgc3RvcmVkJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcmVtb3ZlKCkge1xuICAgIFJlcXVlc3RDYWNoZS5yZXN0b3JlRnJvbUxvY2FsU3RvcmFnZSgpO1xuICAgIGNvbnN0IGluZGV4ID0gUmVxdWVzdENhY2hlLmNhY2hlZC5pbmRleE9mKHRoaXMpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIFJlcXVlc3RDYWNoZS5jYWNoZWQuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHRoaXMucGVyc2lzdHNJbkxvY2FsU3RvcmFnZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnYWxyZWFkeSByZW1vdmVkJyk7XG4gICAgfVxuICB9XG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPW5nMi1yZXN0IGxpYi9yZXF1ZXN0LWNhY2hlLnRzIl19
|