ng2-rest 13.2.9 → 16.0.10
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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Based on Headers from https://github.com/angular/angular/blob/master/packages/http/src/headers.ts
|
|
4
4
|
*/
|
|
5
|
-
export
|
|
5
|
+
export type RestHeadersOptions = RestHeaders | {
|
|
6
6
|
[name: string]: (string | string[]);
|
|
7
7
|
};
|
|
8
8
|
export declare class RestHeaders {
|
package/browser/package.json
CHANGED
|
@@ -8,23 +8,17 @@
|
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"tslib": "^2.3.0"
|
|
10
10
|
},
|
|
11
|
-
"module": "
|
|
12
|
-
"
|
|
13
|
-
"esm2020": "esm2020/ng2-rest.mjs",
|
|
14
|
-
"fesm2020": "fesm2020/ng2-rest.mjs",
|
|
15
|
-
"fesm2015": "fesm2015/ng2-rest.mjs",
|
|
16
|
-
"typings": "ng2-rest.d.ts",
|
|
11
|
+
"module": "fesm2022/ng2-rest.mjs",
|
|
12
|
+
"typings": "index.d.ts",
|
|
17
13
|
"exports": {
|
|
18
14
|
"./package.json": {
|
|
19
15
|
"default": "./package.json"
|
|
20
16
|
},
|
|
21
17
|
".": {
|
|
22
|
-
"types": "./
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"node": "./fesm2015/ng2-rest.mjs",
|
|
27
|
-
"default": "./fesm2020/ng2-rest.mjs"
|
|
18
|
+
"types": "./index.d.ts",
|
|
19
|
+
"esm2022": "./esm2022/ng2-rest.mjs",
|
|
20
|
+
"esm": "./esm2022/ng2-rest.mjs",
|
|
21
|
+
"default": "./fesm2022/ng2-rest.mjs"
|
|
28
22
|
}
|
|
29
23
|
},
|
|
30
24
|
"sideEffects": false
|
package/client/README.md
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
# MyLib
|
|
2
|
-
|
|
3
|
-
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
|
|
4
|
-
|
|
5
|
-
## Code scaffolding
|
|
6
|
-
|
|
7
|
-
Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
|
|
8
|
-
> Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
-
|
|
10
|
-
## Build
|
|
11
|
-
|
|
12
|
-
Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
-
|
|
14
|
-
## Publishing
|
|
15
|
-
|
|
16
|
-
After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
|
|
17
|
-
|
|
18
|
-
## Running unit tests
|
|
19
|
-
|
|
20
|
-
Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
-
|
|
22
|
-
## Further help
|
|
23
|
-
|
|
24
|
-
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
1
|
+
# MyLib
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
|
|
8
|
+
> Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export class Cookie {
|
|
2
|
-
constructor() {
|
|
3
|
-
}
|
|
4
2
|
static get Instance() {
|
|
5
3
|
if (!Cookie.__instance) {
|
|
6
4
|
Cookie.__instance = new Cookie();
|
|
7
5
|
}
|
|
8
6
|
return Cookie.__instance;
|
|
9
7
|
}
|
|
8
|
+
constructor() {
|
|
9
|
+
}
|
|
10
10
|
read(name) {
|
|
11
11
|
var result = new RegExp('(?:^|; )' + encodeURIComponent(name) + '=([^;]*)').exec(document.cookie);
|
|
12
12
|
return result ? result[1] : null;
|
|
@@ -26,4 +26,4 @@ export class Cookie {
|
|
|
26
26
|
}
|
|
27
27
|
;
|
|
28
28
|
({}); // @--end-of-file-for-module=ng2-rest lib/cookie.ts
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS9uZzItcmVzdC9wcm9qZWN0cy9uZzItcmVzdC9zcmMvbGliL2Nvb2tpZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sTUFBTTtJQUVSLE1BQU0sS0FBSyxRQUFRO1FBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQ3BCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztTQUNwQztRQUNELE9BQU8sTUFBTSxDQUFDLFVBQWlCLENBQUM7SUFDcEMsQ0FBQztJQUdEO0lBQ0EsQ0FBQztJQUVELElBQUksQ0FBQyxJQUFZO1FBQ2IsSUFBSSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsVUFBVSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEcsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBWSxFQUFFLEtBQWEsRUFBRSxJQUFhO1FBQzVDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDUCxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztTQUNuQjtRQUVELElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUU1RCxJQUFJLE9BQU8sR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWhELFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxLQUFLLEdBQUcsT0FBTyxHQUFHLFVBQVUsQ0FBQztJQUNoRSxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQVk7UUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0NBRUo7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG1EQUFtRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDb29raWUge1xuXG4gICAgcHVibGljIHN0YXRpYyBnZXQgSW5zdGFuY2UoKTogQ29va2llIHtcbiAgICAgICAgaWYgKCFDb29raWUuX19pbnN0YW5jZSkge1xuICAgICAgICAgICAgQ29va2llLl9faW5zdGFuY2UgPSBuZXcgQ29va2llKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIENvb2tpZS5fX2luc3RhbmNlIGFzIGFueTtcbiAgICB9XG4gICAgcHJpdmF0ZSBzdGF0aWMgX19pbnN0YW5jZTtcblxuICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgfVxuXG4gICAgcmVhZChuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBSZWdFeHAoJyg/Ol58OyApJyArIGVuY29kZVVSSUNvbXBvbmVudChuYW1lKSArICc9KFteO10qKScpLmV4ZWMoZG9jdW1lbnQuY29va2llKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdFsxXSA6IG51bGw7XG4gICAgfVxuXG4gICAgd3JpdGUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBkYXlzPzogbnVtYmVyKSB7XG4gICAgICAgIGlmICghZGF5cykge1xuICAgICAgICAgICAgZGF5cyA9IDM2NSAqIDIwO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBkYXRlLnNldFRpbWUoZGF0ZS5nZXRUaW1lKCkgKyAoZGF5cyAqIDI0ICogNjAgKiA2MCAqIDEwMDApKTtcblxuICAgICAgICB2YXIgZXhwaXJlcyA9IFwiOyBleHBpcmVzPVwiICsgZGF0ZS50b1VUQ1N0cmluZygpO1xuXG4gICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IG5hbWUgKyBcIj1cIiArIHZhbHVlICsgZXhwaXJlcyArIFwiOyBwYXRoPS9cIjtcbiAgICB9XG5cbiAgICByZW1vdmUobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMud3JpdGUobmFtZSwgXCJcIiwgLTEpO1xuICAgIH1cblxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9bmcyLXJlc3QgbGliL2Nvb2tpZS50cyJdfQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { CoreHelpers } from 'tnp-core/browser';
|
|
2
|
+
import { Mapping } from './mapping';
|
|
3
|
+
import { JSON10 } from 'json10/browser';
|
|
4
|
+
// @ts-ignore
|
|
5
|
+
class Helpers extends CoreHelpers {
|
|
6
|
+
static { this.JSON = JSON10; }
|
|
7
|
+
static get Mapping() {
|
|
8
|
+
return {
|
|
9
|
+
encode(json, mapping) {
|
|
10
|
+
return Mapping.encode(json, mapping);
|
|
11
|
+
},
|
|
12
|
+
decode(json, autodetect = false) {
|
|
13
|
+
return Mapping.decode(json, autodetect);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
static checkValidUrl(url) {
|
|
18
|
+
let regex = /(http|https):\/\/(\w+:{0,1}\w*)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%!\-\/]))?/;
|
|
19
|
+
return regex.test(url);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export { Helpers };
|
|
23
|
+
;
|
|
24
|
+
({}); // @--end-of-file-for-module=ng2-rest lib/helpers.ts
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvbmcyLXJlc3QvcHJvamVjdHMvbmcyLXJlc3Qvc3JjL2xpYi9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxhQUFhO0FBQ2IsTUFBYSxPQUFRLFNBQVEsV0FBVzthQUUvQixTQUFJLEdBQUcsTUFBTSxDQUFDO0lBRXJCLE1BQU0sS0FBSyxPQUFPO1FBQ2hCLE9BQU87WUFDTCxNQUFNLENBQWUsSUFBWSxFQUFFLE9BQXdCO2dCQUN6RCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFDRCxNQUFNLENBQUMsSUFBWSxFQUFFLFVBQVUsR0FBRyxLQUFLO2dCQUNyQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1lBQ3pDLENBQUM7U0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBVztRQUM5QixJQUFJLEtBQUssR0FBRyw2RUFBNkUsQ0FBQztRQUMxRixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekIsQ0FBQzs7U0FsQlUsT0FBTztBQXdCbkIsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvREFBb0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBDb3JlSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgTWFwcGluZyB9IGZyb20gJy4vbWFwcGluZyc7XG5pbXBvcnQgeyBKU09OMTAgfSBmcm9tICdqc29uMTAvYnJvd3Nlcic7XG5cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBjbGFzcyBIZWxwZXJzIGV4dGVuZHMgQ29yZUhlbHBlcnMge1xuXG4gIHN0YXRpYyBKU09OID0gSlNPTjEwO1xuXG4gIHN0YXRpYyBnZXQgTWFwcGluZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW5jb2RlPFQgPSBGdW5jdGlvbj4oanNvbjogT2JqZWN0LCBtYXBwaW5nOiBNYXBwaW5nLk1hcHBpbmcpOiBUIHtcbiAgICAgICAgcmV0dXJuIE1hcHBpbmcuZW5jb2RlKGpzb24sIG1hcHBpbmcpO1xuICAgICAgfSxcbiAgICAgIGRlY29kZShqc29uOiBPYmplY3QsIGF1dG9kZXRlY3QgPSBmYWxzZSApOiBNYXBwaW5nLk1hcHBpbmcge1xuICAgICAgICByZXR1cm4gTWFwcGluZy5kZWNvZGUoanNvbiwgYXV0b2RldGVjdClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY2hlY2tWYWxpZFVybCh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCByZWdleCA9IC8oaHR0cHxodHRwcyk6XFwvXFwvKFxcdys6ezAsMX1cXHcqKT8oXFxTKykoOlswLTldKyk/KFxcL3xcXC8oW1xcdyMhOi4/Kz0mJSFcXC1cXC9dKSk/LztcbiAgICByZXR1cm4gcmVnZXgudGVzdCh1cmwpO1xuICB9XG5cblxuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT1uZzItcmVzdCBsaWIvaGVscGVycy50cyJdfQ==
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { Cookie } from './cookie';
|
|
2
|
+
import { Mapping } from './mapping';
|
|
3
|
+
import { Models as HelpersModels } from 'typescript-class-helpers/browser';
|
|
4
|
+
import { JSON10 } from 'json10/browser';
|
|
5
|
+
import { RequestCache } from './request-cache';
|
|
6
|
+
import { _ } from 'tnp-core/browser';
|
|
7
|
+
import { Helpers } from 'tnp-core/browser';
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS9uZzItcmVzdC9wcm9qZWN0cy9uZzItcmVzdC9zcmMvbGliL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEMsT0FBTyxFQUFFLE1BQU0sSUFBSSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsTUFBTSxFQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHM0MsTUFBTSxLQUFXLE1BQU0sQ0E2UnRCO0FBN1JELFdBQWlCLE1BQU07SUFLUCxtQkFBWSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUM7SUFDMUMsa0JBQVcsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDO0lBQ3hDLGtCQUFXLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQTtJQTRFcEQsQ0FBQztJQUtELENBQUM7SUFXRCxFQUFFLENBQUM7SUFFSixNQUFzQixRQUFRO1FBQ2xCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxHQUFHLEtBQUs7WUFDeEMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDNUIsSUFBSTtvQkFDRixDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDdEI7Z0JBQUMs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O1FBRUQsSUFBSSxLQUFLO1lBQ1AsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNsQztZQUNELE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQztLQUVGO0lBbkRZLG1CQUFZLGVBbUR4QixDQUFBO0lBRUQsTUFBYSxpQkFBa0IsU0FBUSxZQUFpQjtRQUt0RCxZQUNTLE9BQWUsRUFDdEIsWUFBcUIsRUFDckIsT0FBcUIsRUFDckIsVUFBOEIsRUFDdkIsS0FBYztZQUVyQixLQUFLLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztZQU5sQyxZQUFPLEdBQVAsT0FBTyxDQUFRO1lBSWYsVUFBSyxHQUFMLEtBQUssQ0FBUztZQUdyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ3pDLENBQUM7S0FDRjtJQWZZLHdCQUFpQixvQkFlN0IsQ0FBQTtJQVlILEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztBQUVMLENBQUMsRUE3UmdCLE1BQU0sS0FBTixNQUFNLFFBNlJ0QjtBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsbURBQW1EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG9nLCBMZXZlbCB9IGZyb20gJ25nMi1sb2dnZXIvYnJvd3Nlcic7XG5pbXBvcnQgeyBSZXN0SGVhZGVycyB9IGZyb20gJy4vcmVzdC1oZWFkZXJzJztcbmltcG9ydCB7IFJlc3QgfSBmcm9tICcuL3Jlc3QuY2xhc3MnO1xuaW1wb3J0IHsgQ29va2llIH0gZnJvbSAnLi9jb29raWUnO1xuaW1wb3J0IHsgTWFwcGluZyB9IGZyb20gJy4vbWFwcGluZyc7XG5pbXBvcnQgeyBBeGlvc1Jlc3BvbnNlIH0gZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgTW9kZWxzIGFzIEhlbHBlcnNNb2RlbHMgfSBmcm9tICd0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvYnJvd3NlcidcbmltcG9ydCB7IEpTT04xMCwgQ2lyYyB9IGZyb20gJ2pzb24xMC9icm93c2VyJztcbmltcG9ydCB7IFJlcXVlc3RDYWNoZSB9IGZyb20gJy4vcmVxdWVzdC1jYWNoZSc7XG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBDb25maWdNb2RlbHMgfSBmcm9tICd0bnAtY29uZmlnL2Jyb3dzZXInO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuXG5cbmV4cG9ydCBuYW1lc3BhY2UgTW9kZWxzIHtcblxuICBleHBvcnQgaW1wb3J0IEh0dHBNZXRob2QgPSBDb25maWdNb2RlbHMuSHR0cE1ldGhvZDtcbiAgZXhwb3J0IGltcG9ydCBQYXJhbVR5cGUgPSBDb25maWdNb2RlbHMuUGFyYW1UeXBlO1xuXG4gIGV4cG9ydCBpbXBvcnQgTWV0aG9kQ29uZmlnID0gSGVscGVyc01vZGVscy5NZXRob2RDb25maWc7XG4gIGV4cG9ydCBpbXBvcnQgQ2xhc3NDb25maWcgPSBIZWxwZXJzTW9kZWxzLkNsYXNzQ29uZmlnO1xuICBleHBvcnQgaW1wb3J0IFBhcmFtQ29uZmlnID0gSGVscGVyc01vZGVscy5QYXJhbUNvbmZpZ1xuXG5cbiAgZXhwb3J0IGludGVyZmFjZSBIYW5kbGVSZXN1bHRPcHRpb25zIHtcbiAgICByZXM6IE1vZGVscy5Nb2NrUmVzcG9uc2U7XG4gICAgbWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZDtcbiAgICBqb2JpZD86IG51bWJlcjtcbiAgICBpc0FycmF5PzogYm9vbGVhbjtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgSGFuZGxlUmVzdWx0U291cmNlUmVxdWVzdE9wdGlvbnMge1xuICAgIHVybDogc3RyaW5nLFxuICAgIG1ldGhvZDogTW9kZWxzLkh0dHBNZXRob2QsXG5cbiAgICBib2R5OiBhbnksXG4gICAgaXNBcnJheTogYm9vbGVhbixcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIEJhY2tlbmRFcnJvciA9IHtcbiAgICBtc2c/OiBzdHJpbmc7XG4gICAgc3RhY2s/OiBzdHJpbmdbXTtcbiAgICBkYXRhOiBhbnk7XG4gIH1cblxuICBleHBvcnQgdHlwZSBNZXRhUmVxdWVzdCA9IHtcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgZW5kcG9pbnQ6IHN0cmluZztcbiAgICBlbnRpdHk6IE1hcHBpbmcuTWFwcGluZztcbiAgICBjaXJjdWxhcjogQ2lyY1tdO1xuICB9XG4gIGV4cG9ydCB0eXBlIEh0dHBDb2RlID0gMjAwIHwgNDAwIHwgNDAxIHwgNDA0IHwgNTAwO1xuXG4gIGV4cG9ydCB0eXBlIFByb21pc2VPYnNlcnZhYmxlTWl4PFQ+ID0gUHJvbWlzZTxUPiAmIHtcbiAgICBjYWNoZT86IFJlcXVlc3RDYWNoZSxcbiAgICBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPFQ+O1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgTWV0aG9kV2l0aG91dEJvZHk8RSwgVCwgUiA9IFByb21pc2VPYnNlcnZhYmxlTWl4PEU+PiA9IChwYXJhbXM/OiBVcmxQYXJhbXNbXSwgZG9Ob3RTZXJpYWxpemVQYXJhbXM/OiBib29sZWFuKSA9PiBSXG4gIGV4cG9ydCB0eXBlIE1ldGhvZFdpdGhCb2R5PEUsIFQsIFIgPSBQcm9taXNlT2JzZXJ2YWJsZU1peDxFPj4gPSAoaXRlbT86IFQsIHBhcmFtcz86IFVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtcz86IGJvb2xlYW4pID0+IFJcbiAgZXhwb3J0IHR5cGUgUmVwbGF5RGF0YSA9IHtcbiAgICBzdWJqZWN0OiBTdWJqZWN0PGFueT4sXG4gICAgZGF0YTogeyB1cmw6IHN0cmluZywgYm9keTogc3RyaW5nLCBoZWFkZXJzOiBSZXN0SGVhZGVycywgaXNBcnJheTogYm9vbGVhbjsgfSxcbiAgICAvKipcbiAgICAgKiBqb2JpZFxuICAgICAqL1xuICAgIGlkOiBudW1iZXI7XG4gIH07XG4gIGV4cG9ydCB0eXBlIFJlcVBhcmFtcyA9IHsgdXJsOiBzdHJpbmcsIG1ldGhvZDogQ29uZmlnTW9kZWxzLkh0dHBNZXRob2QsIGhlYWRlcnM/OiBSZXN0SGVhZGVycywgYm9keT86IGFueSwgam9iaWQ6IG51bWJlciwgaXNBcnJheTogYm9vbGVhbiB9O1xuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VNb2RlbDxBLCBUQT4ge1xuICAgIG1vZGVsOiAocGF0aE1vZGVscz86IE9iamVjdCwgcmVzcG9uc2VPYmplY3RUeXBlPzogRnVuY3Rpb24pID0+IFJlc3Q8QSwgVEE+LFxuICAgIHJlcGxheTogKG1ldGhvZDogQ29uZmlnTW9kZWxzLkh0dHBNZXRob2QpID0+IHZvaWQ7XG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnM7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIE5nMlJlc3RNZXRob2RzPEUsIFQ+IHtcbiAgICBnZXQ6IE1ldGhvZFdpdGhvdXRCb2R5PEUsIFQ+O1xuICAgIHBvc3Q6IE1ldGhvZFdpdGhCb2R5PEUsIFQ+O1xuICAgIHB1dDogTWV0aG9kV2l0aEJvZHk8RSwgVD47XG4gICAgcGF0Y2g6IE1ldGhvZFdpdGhCb2R5PEUsIFQ+O1xuICAgIGhlYWQ6IE1ldGhvZFdpdGhvdXRCb2R5PEUsIFQ+O1xuICAgIGRlbGV0ZTogTWV0aG9kV2l0aG91dEJvZHk8RSwgVD47XG4gICAganNvbnA6IE1ldGhvZFdpdGhvdXRCb2R5PEUsIFQ+O1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgTW9ja0NvbnRyb2xsZXIgPSAoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgbWV0aG9kOiBDb25maWdNb2RlbHMuSHR0cE1ldGhvZCxcbiAgICBoZWFkZXJzPzogUmVzdEhlYWRlcnMsXG4gICAgYm9keT86IGFueVxuICApID0+IE1vY2tSZXNwb25zZTtcblxuICBleHBvcnQgdHlwZSBNb2NrSHR0cCA9IChNb2NrUmVzcG9uc2UgfCBNb2NrQ29udHJvbGxlcik7XG5cbiAgZXhwb3J0IGludGVyZmFjZSBGbk1ldGhvZHNIdHRwPFQsIFRBPiBleHRlbmRzIE5nMlJlc3RNZXRob2RzPEh0dHBSZXNwb25zZTxUPiwgVD4ge1xuICAgIGFycmF5OiBOZzJSZXN0TWV0aG9kczxIdHRwUmVzcG9uc2U8VEE+LCBUQT47XG4gIH07XG5cbiAgZXhwb3J0IGludGVyZmFjZSBGbk1ldGhvZHNIdHRwV2l0aE1vY2s8VCwgVEE+IGV4dGVuZHMgTmcyUmVzdE1ldGhvZHM8SHR0cFJlc3BvbnNlPFQ+LCBUPiB7XG4gICAgYXJyYXk6IE5nMlJlc3RNZXRob2RzPEh0dHBSZXNwb25zZTxUQT4sIFRBPjtcbiAgICBtb2NrKG1vY2s6IE1vY2tIdHRwLCBjb2RlOiBIdHRwQ29kZSk6IEZuTWV0aG9kc0h0dHA8VCwgVEE+O1xuICB9O1xuXG5cblxuICBleHBvcnQgaW50ZXJmYWNlIE5lc3RlZFBhcmFtcyB7XG4gICAgW3BhcmFtczogc3RyaW5nXTogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBVcmxQYXJhbXMge1xuICAgIFt1cmxNb2RlbE5hbWU6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWdFeHAgfCBPYmplY3Q7XG4gICAgcmVnZXg/OiBSZWdFeHA7XG4gIH1bXTtcblxuICBleHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUJvZHkge1xuICAgIHByb3RlY3RlZCB0b0pTT04oZGF0YSwgaXNKU09OQXJyYXkgPSBmYWxzZSkge1xuICAgICAgbGV0IHIgPSBpc0pTT05BcnJheSA/IFtdIDoge307XG4gICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgciA9IEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICB9XG4gICAgICByZXR1cm4gciBhcyBhbnk7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGNsYXNzIEh0dHBCb2R5PFQ+IGV4dGVuZHMgQmFzZUJvZHkge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZXNwb25zZVRleHQ6IHN0cmluZyB8IEJsb2IsIHByaXZhdGUgaXNBcnJheSA9IGZhbHNlLFxuICAgICAgcHJpdmF0ZSBlbnRpdHk6IE1hcHBpbmcuTWFwcGluZyxcbiAgICAgIHByaXZhdGUgY2lyY3VsYXI6IENpcmNbXVxuICAgICkge1xuICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGJsb2IoKTogQmxvYiB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNwb25zZVRleHQgYXMgQmxvYjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGJvb2xlYW5WYWx1ZSgpIHtcbiAgICAgIGlmICghSGVscGVycy5pc0Jsb2IodGhpcy5yZXNwb25zZVRleHQpKSB7XG4gICAgICAgIHJldHVybiBbJ29rJywgJ3RydWUnXS5pbmNsdWRlcygodGhpcy5yZXNwb25zZVRleHQgYXMgc3RyaW5nKS50cmltKCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmF3SnNvbigpOiBQYXJ0aWFsPFQ+IHtcbiAgICAgIGlmICghSGVscGVycy5pc0Jsb2IodGhpcy5yZXNwb25zZVRleHQpKSB7XG4gICAgICAgIGxldCByZXMgPSB0aGlzLnRvSlNPTih0aGlzLnJlc3BvbnNlVGV4dCwgdGhpcy5pc0FycmF5KTtcbiAgICAgICAgaWYgKHRoaXMuY2lyY3VsYXIgJiYgQXJyYXkuaXNBcnJheSh0aGlzLmNpcmN1bGFyKSkge1xuICAgICAgICAgIHJlcyA9IEpTT04xMC5wYXJzZShKU09OLnN0cmluZ2lmeShyZXMpLCB0aGlzLmNpcmN1bGFyKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGpzb24oKTogVCB7XG4gICAgICBpZiAoIUhlbHBlcnMuaXNCbG9iKHRoaXMucmVzcG9uc2VUZXh0KSkge1xuICAgICAgICBpZiAodGhpcy5lbnRpdHkgJiYgdHlwZW9mIHRoaXMuZW50aXR5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZW50aXR5KCk7IC8vIEBMQVNUXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZW50aXR5ICYmIHR5cGVvZiB0aGlzLmVudGl0eSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBjb25zdCBqc29uID0gdGhpcy50b0pTT04odGhpcy5yZXNwb25zZVRleHQsIHRoaXMuaXNBcnJheSk7XG4gICAgICAgICAgcmV0dXJuIE1hcHBpbmcuZW5jb2RlKGpzb24sIHRoaXMuZW50aXR5LCB0aGlzLmNpcmN1bGFyKSBhcyBhbnk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlcyA9IHRoaXMudG9KU09OKHRoaXMucmVzcG9uc2VUZXh0LCB0aGlzLmlzQXJyYXkpO1xuICAgICAgICBpZiAodGhpcy5jaXJjdWxhciAmJiBBcnJheS5pc0FycmF5KHRoaXMuY2lyY3VsYXIpKSB7XG4gICAgICAgICAgcmVzID0gSlNPTjEwLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlcyksIHRoaXMuY2lyY3VsYXIpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH1cbiAgICB9XG4gICAgcHVibGljIGdldCB0ZXh0KCkge1xuICAgICAgaWYgKCFIZWxwZXJzLmlzQmxvYih0aGlzLnJlc3BvbnNlVGV4dCkpIHtcblxuICAgICAgICByZXR1cm4gKHRoaXMucmVzcG9uc2VUZXh0IGFzIHN0cmluZykucmVwbGFjZSgvXlxcXCIvLCAnJykucmVwbGFjZSgvXFxcIiQvLCAnJylcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBleHBvcnQgY2xhc3MgRXJyb3JCb2R5IGV4dGVuZHMgQmFzZUJvZHkge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YSkge1xuICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGpzb24oKTogT2JqZWN0IHtcbiAgICAgIHJldHVybiB0aGlzLnRvSlNPTih0aGlzLmRhdGEpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IHRleHQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhXG4gICAgfVxuICB9XG5cblxuICBleHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVJlc3BvbnNlPFQ+IHtcbiAgICBwcm90ZWN0ZWQgc3RhdGljIHJlYWRvbmx5IGNvb2tpZXMgPSBDb29raWUuSW5zdGFuY2U7XG5cbiAgICBwdWJsaWMgZ2V0IGNvb2tpZXMoKSB7XG4gICAgICByZXR1cm4gQmFzZVJlc3BvbnNlLmNvb2tpZXM7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgcHVibGljIHJlc3BvbnNlVGV4dD86IHN0cmluZyB8IEJsb2IsXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaGVhZGVycz86IFJlc3RIZWFkZXJzLFxuICAgICAgcHVibGljIHJlYWRvbmx5IHN0YXR1c0NvZGU/OiBIdHRwQ29kZSB8IG51bWJlcixcbiAgICAgIHB1YmxpYyBpc0FycmF5ID0gZmFsc2VcbiAgICApIHtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgY2xhc3MgSHR0cFJlc3BvbnNlPFQ+IGV4dGVuZHMgQmFzZVJlc3BvbnNlPFQ+IHtcbiAgICBwdWJsaWMgYm9keT86IEh0dHBCb2R5PFQ+O1xuXG5cblxuXG4gICAgcnE6IFJlcXVlc3RDYWNoZTtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgIHB1YmxpYyBzb3VyY2VSZXF1ZXN0OiBNb2RlbHMuSGFuZGxlUmVzdWx0U291cmNlUmVxdWVzdE9wdGlvbnMsXG4gICAgICBwdWJsaWMgcmVzcG9uc2VUZXh0Pzogc3RyaW5nIHwgQmxvYixcbiAgICAgIHB1YmxpYyBoZWFkZXJzPzogUmVzdEhlYWRlcnMsXG4gICAgICBwdWJsaWMgc3RhdHVzQ29kZT86IEh0dHBDb2RlIHwgbnVtYmVyLFxuICAgICAgcHVibGljIGVudGl0eT86IE1hcHBpbmcuTWFwcGluZyB8IEZ1bmN0aW9uLFxuICAgICAgcHVibGljIGNpcmN1bGFyPzogQ2lyY1tdLFxuICAgICAgcHVibGljIGpvYmlkPzogbnVtYmVyLFxuICAgICAgcHVibGljIGlzQXJyYXkgPSBmYWxzZSxcbiAgICApIHtcblxuXG5cbiAgICAgIHN1cGVyKHJlc3BvbnNlVGV4dCwgaGVhZGVycywgc3RhdHVzQ29kZSwgaXNBcnJheSk7XG5cbiAgICAgIHRoaXMuaW5pdCgpXG4gICAgfVxuXG4gICAgcHVibGljIGluaXQoKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuZW50aXR5ID09PSAnc3RyaW5nJykge1xuXG4gICAgICAgIGxldCBlbnRpdHlKU09OID0gdGhpcy5oZWFkZXJzLmdldEFsbCh0aGlzLmVudGl0eSlcbiAgICAgICAgaWYgKCEhZW50aXR5SlNPTikge1xuICAgICAgICAgIHRoaXMuZW50aXR5ID0gSlNPTi5wYXJzZShlbnRpdHlKU09OLmpvaW4oKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5jaXJjdWxhciA9PT0gJ3N0cmluZycpIHtcblxuICAgICAgICBsZXQgY2lyY3VyYWxKU09OID0gdGhpcy5oZWFkZXJzLmdldEFsbCh0aGlzLmNpcmN1bGFyKTtcbiAgICAgICAgaWYgKCEhY2lyY3VyYWxKU09OKSB7XG4gICAgICAgICAgdGhpcy5jaXJjdWxhciA9IEpTT04ucGFyc2UoY2lyY3VyYWxKU09OLmpvaW4oKSk7XG4gICAgICAgIH1cblxuICAgICAgfVxuICAgICAgdGhpcy5ib2R5ID0gbmV3IEh0dHBCb2R5KHRoaXMucmVzcG9uc2VUZXh0LCB0aGlzLmlzQXJyYXksIHRoaXMuZW50aXR5LCB0aGlzLmNpcmN1bGFyKSBhcyBhbnk7XG4gICAgfVxuXG4gICAgZ2V0IGNhY2hlKCkge1xuICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5ycSkpIHtcbiAgICAgICAgdGhpcy5ycSA9IG5ldyBSZXF1ZXN0Q2FjaGUodGhpcyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFJlcXVlc3RDYWNoZSh0aGlzKTtcbiAgICB9XG5cbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBIdHRwUmVzcG9uc2VFcnJvciBleHRlbmRzIEJhc2VSZXNwb25zZTxhbnk+IHtcbiAgICBwcml2YXRlIGJvZHk6IEVycm9yQm9keTtcblxuXG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICByZXNwb25zZVRleHQ/OiBzdHJpbmcsXG4gICAgICBoZWFkZXJzPzogUmVzdEhlYWRlcnMsXG4gICAgICBzdGF0dXNDb2RlPzogSHR0cENvZGUgfCBudW1iZXIsXG4gICAgICBwdWJsaWMgam9iaWQ/OiBudW1iZXIsXG4gICAgKSB7XG4gICAgICBzdXBlcihyZXNwb25zZVRleHQsIGhlYWRlcnMsIHN0YXR1c0NvZGUpO1xuICAgICAgdGhpcy5ib2R5ID0gbmV3IEVycm9yQm9keShyZXNwb25zZVRleHQpXG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBNb2NrUmVzcG9uc2Uge1xuICAgIGRhdGE/OiBhbnk7XG4gICAgY29kZT86IEh0dHBDb2RlO1xuICAgIGVycm9yPzogc3RyaW5nO1xuICAgIGhlYWRlcnM/OiBSZXN0SGVhZGVycztcbiAgICBqb2JpZD86IG51bWJlcjtcbiAgICBpc0FycmF5OiBib29sZWFuO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUmVzcG9uc2VUeXBlQXhpb3MgPSAnYmxvYicgfCAndGV4dCdcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT1uZzItcmVzdCBsaWIvbW9kZWxzLnRzIl19
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXJlc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS9uZzItcmVzdC9wcm9qZWN0cy9uZzItcmVzdC9zcmMvbGliL290aGVyL3NpbXBsZS1yZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBS2xDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQXFCL0M7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLGdCQUFnQjthQUNOLDhCQUF5QixHQUFHLEtBQUssQUFBUixDQUFTO2FBQ2xDLGFBQVEsR0FBbUIsRUFBRSxBQUFyQixDQUFzQjtJQTZHNUMsWUFBMkIsUUFBb0IsRUFBVSxVQUFrQjtRQUFoRCxhQUFRLEdBQVIsUUFBUSxDQUFZO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQXpHM0U7O1VBRUU7UUFDRixVQUFLLEdBQXlCLENBQUMsVUFBZSxFQUFFLEVBQUU7WUFFaEQsT0FBTztnQkFFTCxHQUFHLEVBQUUsQ0FBQyxVQUFlLEVBQUUsRUFBRTtvQkFDdkIsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBcUIsRUFBRSxFQUFFO3dCQUNqRCxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQzs2QkFDdkQsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMseUJBQXlCLENBQUM7NkJBQzdELFVBQVU7NkJBQ1YsU0FBUyxDQUNSLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUNyQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFD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LENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDMUIsQ0FBQzs7U0F0QlUsY0FBYztBQTBCMUIsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrRUFBa0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9ic2VydmVyIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJy4uL3Jlc291cmNlLnNlcnZpY2UnO1xuXG5cblxuZXhwb3J0IGludGVyZmFjZSBSZXN0UHJvbWlzZXM8QSwgVEEsIFFQIGV4dGVuZHMgTW9kZWxzLlVybFBhcmFtcz4ge1xuICBnZXQ6IChxdWVyeVBhcmFtcz86IFFQKSA9PiBPYnNlcnZhYmxlPE1vZGVscy5IdHRwUmVzcG9uc2U8QT4+O1xuICBoZWFkOiAocXVlcnlQYXJhbXM/OiBRUCkgPT4gT2JzZXJ2YWJsZTxNb2RlbHMuSHR0cFJlc3BvbnNlPEE+PjtcbiAgcXVlcnk6IChxdWVyeVBhcmFtcz86IFFQKSA9PiBPYnNlcnZhYmxlPE1vZGVscy5IdHRwUmVzcG9uc2U8VEE+PjtcbiAgcHV0OiAoaXRlbT86IEEsIHF1ZXJ5UGFyYW1zPzogUVApID0+IE9ic2VydmFibGU8TW9kZWxzLkh0dHBSZXNwb25zZTxBPj47XG4gIHBhdGNoOiAoaXRlbT86IEEsIHF1ZXJ5UGFyYW1zPzogUVApID0+IE9ic2VydmFibGU8TW9kZWxzLkh0dHBSZXNwb25zZTxBPj47XG4gIHBvc3Q6IChpdGVtPzogQSwgcXVlcnlQYXJhbXM/OiBRUCkgPT4gT2JzZXJ2YWJsZTxNb2RlbHMuSHR0cFJlc3BvbnNlPEE+PjtcbiAgZGVsZXRlOiAocXVlcnlQYXJhbXM/OiBRUCkgPT4gT2JzZXJ2YWJsZTxNb2RlbHMuSHR0cFJlc3BvbnNlPEE+IHwgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb2RlbDxBLCBUQSwgUlAgZXh0ZW5kcyBPYmplY3QsIFFQIGV4dGVuZHMgTW9kZWxzLlVybFBhcmFtcz4ge1xuICAocmVzdFBhcmFtcz86IFJQKTogUmVzdFByb21pc2VzPEEsIFRBLCBRUD47XG59XG5cblxuXG5cbi8qKlxuICpcbiAqIEBleHBvcnRcbiAqIEBhYnN0cmFjdFxuICogQGNsYXNzIFNpbXBsZVJlc291cmNlXG4gKiBAZXh0ZW5kcyB7UmVzb3VyY2U8VCwgQSwgVEE+fVxuICogQHRlbXBsYXRlIEUgIEVuZHBvaW50IHR5cGVcbiAqIEB0ZW1wbGF0ZSBBIFNpbmdsZSBtb2RsZSB0eXBlXG4gKiBAdGVtcGxhdGUgVEEgQXJyYXkgTW9kZWwgVHlwZVxuICogQHRlbXBsYXRlIFJQIHJlc3QgdXJsIHBhcmFtZXRlcnMgdHlwZVxuICogQHRlbXBsYXRlIFFQIHF1ZXJ5IHBhcmFtZXRlciB0eXBlXG4gKi9cbmNsYXNzIEV4dGVuZGVkUmVzb3VyY2U8RSwgQSwgVEEsIFJQIGV4dGVuZHMgT2JqZWN0LCBRUCBleHRlbmRzIE1vZGVscy5VcmxQYXJhbXM+ICB7XG4gIHB1YmxpYyBzdGF0aWMgZG9Ob3RTZXJpYWxpemVRdWVyeVBhcmFtcyA9IGZhbHNlO1xuICBwdWJsaWMgc3RhdGljIGhhbmRsZXJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIHJlc3Q6IE1vZGVscy5SZXNvdXJjZU1vZGVsPEEsIFRBPjtcblxuICAvKipcbiAgICogR2V0IG1vZGVsIGJ5IHJlc3QgcGFyYW1zXG4gICovXG4gIG1vZGVsOiBNb2RlbDxBLCBUQSwgUlAsIFFQPiA9IChyZXN0UGFyYW1zPzogUlApID0+IHtcblxuICAgIHJldHVybiB7XG5cbiAgICAgIGdldDogKHF1ZXJ5UHJhbXM/OiBRUCkgPT4ge1xuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUoKG9ic2VydmVyOiBPYnNlcnZlcjxBPikgPT4ge1xuICAgICAgICAgIEV4dGVuZGVkUmVzb3VyY2UuaGFuZGxlcnMucHVzaCh0aGlzLnJlc3QubW9kZWwocmVzdFBhcmFtcylcbiAgICAgICAgICAgIC5nZXQoW3F1ZXJ5UHJhbXNdLCBFeHRlbmRlZFJlc291cmNlLmRvTm90U2VyaWFsaXplUXVlcnlQYXJhbXMpXG4gICAgICAgICAgICAub2JzZXJ2YWJsZVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgZGF0YSA9PiBvYnNlcnZlci5uZXh0KGRhdGEuYm9keS5qc29uKSxcbiAgICAgICAgICAgICAgZXJyID0+IG9ic2VydmVyLmVycm9yKGVyciksXG4gICAgICAgICAgICAgICgpID0+IG9ic2VydmVyLmNvbXBsZXRlKCkpKVxuICAgICAgICB9KVxuICAgICAgfSxcblxuICAgICAgcGF0Y2g6IChpdGVtOiBBLCBxdWVyeVBhcmFtcz86IFFQKSA9PiB7XG4gICAgICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZSgob2JzZXJ2ZXI6IE9ic2VydmVyPEE+KSA9PiB7XG4gICAgICAgICAgRXh0ZW5kZWRSZXNvdXJjZS5oYW5kbGVycy5wdXNoKHRoaXMucmVzdC5tb2RlbChyZXN0UGFyYW1zKVxuICAgICAgICAgICAgLnB1dChpdGVtLCBbcXVlcnlQYXJhbXNdLCBFeHRlbmRlZFJlc291cmNlLmRvTm90U2VyaWFsaXplUXVlcnlQYXJhbXMpXG4gICAgICAgICAgICAub2JzZXJ2YWJsZVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgZGF0YSA9PiBvYnNlcnZlci5uZXh0KGRhdGEuYm9keS5qc29uKSxcbiAgICAgICAgICAgICAgZXJyID0+IG9ic2VydmVyLmVycm9yKGVyciksXG4gICAgICAgICAgICAgICgpID0+IG9ic2VydmVyLmNvbXBsZXRlKCkpKVxuICAgICAgICB9KVxuXG4gICAgICB9LFxuXG4gICAgICBoZWFkOiAocXVlcnlQcmFtcz86IFFQKSA9PiB7XG4gICAgICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZSgob2JzZXJ2ZXI6IE9ic2VydmVyPEE+KSA9PiB7XG4gICAgICAgICAgRXh0ZW5kZWRSZXNvdXJjZS5oYW5kbGVycy5wdXNoKHRoaXMucmVzdC5tb2RlbChyZXN0UGFyYW1zKVxuICAgICAgICAgICAgLmhlYWQoW3F1ZXJ5UHJhbXNdLCBFeHRlbmRlZFJlc291cmNlLmRvTm90U2VyaWFsaXplUXVlcnlQYXJhbXMpXG4gICAgICAgICAgICAub2JzZXJ2YWJsZVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgZGF0YSA9PiBvYnNlcnZlci5uZXh0KGRhdGEuYm9keS5qc29uKSxcbiAgICAgICAgICAgICAgZXJyID0+IG9ic2VydmVyLmVycm9yKGVyciksXG4gICAgICAgICAgICAgICgpID0+IG9ic2VydmVyLmNvbXBsZXRlKCkpKVxuICAgICAgICB9KVxuICAgICAgfSxcblxuICAgICAgcXVlcnk6IChxdWVyeVByYW1zPzogUVApID0+IHtcbiAgICAgICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKChvYnNlcnZlcjogT2JzZXJ2ZXI8VEE+KSA9PiB7XG4gICAgICAgICAgRXh0ZW5kZWRSZXNvdXJjZS5oYW5kbGVycy5wdXNoKHRoaXMucmVzdC5tb2RlbChyZXN0UGFyYW1zKS5cbiAgICAgICAgICAgIGFycmF5XG4gICAgICAgICAgICAuZ2V0KFtxdWVyeVByYW1zXSwgRXh0ZW5kZWRSZXNvdXJjZS5kb05vdFNlcmlhbGl6ZVF1ZXJ5UGFyYW1zKVxuICAgICAgICAgICAgLm9ic2VydmFibGVcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgIGRhdGEgPT4gb2JzZXJ2ZXIubmV4dChkYXRhLmJvZHkuanNvbiksXG4gICAgICAgICAgICAgIGVyciA9PiBvYnNlcnZlci5lcnJvcihlcnIpLFxuICAgICAgICAgICAgICAoKSA9PiBvYnNlcnZlci5jb21wbGV0ZSgpKSlcbiAgICAgICAgfSlcbiAgICAgIH0sXG5cblxuICAgICAgcG9zdDogKGl0ZW06IEEsIHF1ZXJ5UGFyYW1zPzogUVApID0+IHtcbiAgICAgICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKChvYnNlcnZlcjogT2JzZXJ2ZXI8QT4pID0+IHtcbiAgICAgICAgICBFeHRlbmRlZFJlc291cmNlLmhhbmRsZXJzLnB1c2godGhpcy5yZXN0Lm1vZGVsKHJlc3RQYXJhbXMpXG4gICAgICAgICAgICAucG9zdChpdGVtLCBbcXVlcnlQYXJhbXNdLCBFeHRlbmRlZFJlc291cmNlLmRvTm90U2VyaWFsaXplUXVlcnlQYXJhbXMpXG4gICAgICAgICAgICAub2JzZXJ2YWJsZVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgZGF0YSA9PiBvYnNlcnZlci5uZXh0KGRhdGEuYm9keS5qc29uKSxcbiAgICAgICAgICAgICAgZXJyID0+IG9ic2VydmVyLmVycm9yKGVyciksXG4gICAgICAgICAgICAgICgpID0+IG9ic2VydmVyLmNvbXBsZXRlKCkpKVxuICAgICAgICB9KVxuXG4gICAgICB9LFxuXG5cbiAgICAgIHB1dDogKGl0ZW06IEEsIHF1ZXJ5UGFyYW1zPzogUVApID0+IHtcbiAgICAgICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKChvYnNlcnZlcjogT2JzZXJ2ZXI8QT4pID0+IHtcbiAgICAgICAgICBFeHRlbmRlZFJlc291cmNlLmhhbmRsZXJzLnB1c2godGhpcy5yZXN0Lm1vZGVsKHJlc3RQYXJhbXMpXG4gICAgICAgICAgICAucHV0KGl0ZW0sIFtxdWVyeVBhcmFtc10sIEV4dGVuZGVkUmVzb3VyY2UuZG9Ob3RTZXJpYWxpemVRdWVyeVBhcmFtcylcbiAgICAgICAgICAgIC5vYnNlcnZhYmxlXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICBkYXRhID0+IG9ic2VydmVyLm5leHQoZGF0YS5ib2R5Lmpzb24pLFxuICAgICAgICAgICAgICBlcnIgPT4gb2JzZXJ2ZXIuZXJyb3IoZXJyKSxcbiAgICAgICAgICAgICAgKCkgPT4gb2JzZXJ2ZXIuY29tcGxldGUoKSkpXG4gICAgICAgIH0pXG5cbiAgICAgIH0sXG5cblxuICAgICAgZGVsZXRlOiAocXVlcnlQcmFtcz86IFFQKSA9PiB7XG4gICAgICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZSgob2JzZXJ2ZXI6IE9ic2VydmVyPEE+KSA9PiB7XG4gICAgICAgICAgRXh0ZW5kZWRSZXNvdXJjZS5oYW5kbGVycy5wdXNoKHRoaXMucmVzdC5tb2RlbChyZXN0UGFyYW1zKVxuICAgICAgICAgICAgLmRlbGV0ZShbcXVlcnlQcmFtc10sIEV4dGVuZGVkUmVzb3VyY2UuZG9Ob3RTZXJpYWxpemVRdWVyeVBhcmFtcylcbiAgICAgICAgICAgIC5vYnNlcnZhYmxlXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICBkYXRhID0+IG9ic2VydmVyLm5leHQoZGF0YS5ib2R5Lmpzb24pLFxuICAgICAgICAgICAgICBlcnIgPT4gb2JzZXJ2ZXIuZXJyb3IoZXJyKSxcbiAgICAgICAgICAgICAgKCkgPT4gb2JzZXJ2ZXIuY29tcGxldGUoKSkpXG4gICAgICAgIH0pXG4gICAgICB9XG5cblxuICAgIH1cbiAgfVxuXG5cblxuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIGVuZHBvaW50OiBFIHwgc3RyaW5nLCBwcml2YXRlIHBhdGhfbW9kZWw6IHN0cmluZykge1xuICAgIHRoaXMucmVzdCA9IDxhbnk+UmVzb3VyY2UuY3JlYXRlPEEsIFRBPig8YW55PmVuZHBvaW50LCBwYXRoX21vZGVsKTtcblxuICB9XG5cbn1cblxuXG5cbi8qKlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBTaW1wbGVSZXNvdXJjZVxuICogQHRlbXBsYXRlIEEgc2luZ2xlIG1vZGVsIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUQSBhcnJheSBtb2RlbCB0eXBlXG4gKiBAdGVtcGxhdGUgUlAgcmVzdCBwYXJhbWV0ZXJzIHR5cGVcbiAqIEB0ZW1wbGF0ZSBRUCBxdWVyeSBwYXJhbWV0ZXJzIHR5cGVcbiAqL1xuZXhwb3J0IGNsYXNzIFNpbXBsZVJlc291cmNlPEEsIFRBPiB7XG4gIG1vZGVsOiBNb2RlbDxBLCBUQSwgT2JqZWN0LCBNb2RlbHMuVXJsUGFyYW1zPjtcblxuXG4gIHByaXZhdGUgc3RhdGljIF9pc1NldFF1ZXJ5UGFyYW1zU2VyaWFsaXphdGlvbiA9IGZhbHNlO1xuICBwdWJsaWMgc3RhdGljIHNldCBkb05vdFNlcmlhbGl6ZVF1ZXJ5UGFyYW1zKHZhbHVlKSB7XG4gICAgaWYgKCFTaW1wbGVSZXNvdXJjZS5faXNTZXRRdWVyeVBhcmFtc1NlcmlhbGl6YXRpb24pIHtcbiAgICAgIFNpbXBsZVJlc291cmNlLl9pc1NldFF1ZXJ5UGFyYW1zU2VyaWFsaXphdGlvbiA9IHRydWU7XG4gICAgICBFeHRlbmRlZFJlc291cmNlLmRvTm90U2VyaWFsaXplUXVlcnlQYXJhbXMgPSB2YWx1ZVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zb2xlLndhcm4oYFF1ZXJ5IHBhcmFtcyBzZXJpYWxpemF0aW9uIGFscmVhZHkgc2V0IGFzXG4gICAgICAgICR7RXh0ZW5kZWRSZXNvdXJjZS5kb05vdFNlcmlhbGl6ZVF1ZXJ5UGFyYW1zfSxgKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgX19kZXN0cm95KCkge1xuICAgIEV4dGVuZGVkUmVzb3VyY2UuaGFuZGxlcnMuZm9yRWFjaChoID0+IGgudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihlbmRwb2ludDogc3RyaW5nLCBtb2RlbDogc3RyaW5nKSB7XG4gICAgbGV0IHJlc3QgPSBuZXcgRXh0ZW5kZWRSZXNvdXJjZTxzdHJpbmcsIEEsIFRBLCBPYmplY3QsIE1vZGVscy5VcmxQYXJhbXM+KGVuZHBvaW50LCBtb2RlbCk7XG4gICAgdGhpcy5tb2RlbCA9IHJlc3QubW9kZWw7XG4gIH1cblxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9bmcyLXJlc3QgbGliL290aGVyL3NpbXBsZS1yZXNvdXJjZS50cyJdfQ==
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Models } from './models';
|
|
2
|
+
import { Log, Level } from 'ng2-logger/browser';
|
|
3
|
+
import { Helpers } from 'tnp-core/browser';
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvbmcyLXJlc3QvcHJvamVjdHMvbmcyLXJlc3Qvc3JjL2xpYi9yZXF1ZXN0LWNhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUV4RDs7O0dBR0c7QUFDSCxNQUFhLFlBQVk7YUFFUCxzQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQzthQUUzQyxXQUFNLEdBQW1CLEVBQUUsQ0FBQzthQUM1QiwrQkFBMEIsR0FBRyxLQUFLLENBQUM7SUFFMUMsTUFBTSxDQUFDLHVCQUF1QjtRQUNwQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDbEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQywwQkFBMEIsRUFBRTtZQUM1QyxZQUFZLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDO1lBQy9DLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDbEUsSUFBSSxRQUFRLEdBQW1CLEVBQUUsQ0FBQztZQUNsQyxJQUFJLElBQUksRUFBRTtnQkFDUixJQUFJO29CQUNGLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBbUIsQ0FBQztpQkFDL0M7Z0JBQUMsT0FBTyxLQUFLLEVBQUU7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QUNKLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRCxLQUFLO1FBQ0gsWUFBWSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdkIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDL0I7YUFBTTtZQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUMvQjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU07UUFDSixZQUFZLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUN2QyxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRCxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNoQixZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDL0I7YUFBTTtZQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7O1NBakhVLFlBQVk7QUFxSHhCLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsMERBQTBEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgTG9nLCBMZXZlbCB9IGZyb20gJ25nMi1sb2dnZXIvYnJvd3Nlcic7XG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBSZXN0SGVhZGVycyB9IGZyb20gJy4vcmVzdC1oZWFkZXJzJztcbmNvbnN0IGxvZyA9IExvZy5jcmVhdGUoJ3JlcXVlc3QtY2FjaGUnLCBMZXZlbC5fX05PVEhJTkcpXG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIHRoZXJlIGlzIENhY2hlIEFQSSBmb3IgdGhhdFxuICovXG5leHBvcnQgY2xhc3MgUmVxdWVzdENhY2hlIHtcblxuICBzdGF0aWMgcmVhZG9ubHkgTE9DQUxfU1RPUkFHRV9LRVkgPSAnbmcycmVzdHJlcXVlc3RjYWNoZSc7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY2FjaGVkOiBSZXF1ZXN0Q2FjaGVbXSA9IFtdO1xuICBwcml2YXRlIHN0YXRpYyBpc1Jlc3RvcmVkRnJvbUxvY2FsU3RvcmFnZSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlc3RvcmVGcm9tTG9jYWxTdG9yYWdlKCkge1xuICAgIGlmIChIZWxwZXJzLmlzTm9kZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIVJlcXVlc3RDYWNoZS5pc1Jlc3RvcmVkRnJvbUxvY2FsU3RvcmFnZSkge1xuICAgICAgUmVxdWVzdENhY2hlLmlzUmVzdG9yZWRGcm9tTG9jYWxTdG9yYWdlID0gdHJ1ZTtcbiAgICAgIGNvbnN0IGRhdGEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShSZXF1ZXN0Q2FjaGUuTE9DQUxfU1RPUkFHRV9LRVkpO1xuICAgICAgbGV0IHJlcXVlc3RzOiBSZXF1ZXN0Q2FjaGVbXSA9IFtdO1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXF1ZXN0cyA9IEpTT04ucGFyc2UoZGF0YSkgYXMgUmVxdWVzdENhY2hlW107XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG5cbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN0b3JlZCA9IHJlcXVlc3RzLm1hcChyID0+IHtcbiAgICAgICAgICBsZXQgeyBzb3VyY2VSZXF1ZXN0LCByZXNwb25zZVRleHQsIGJvZHksIGhlYWRlcnMsIGNpcmN1bGFyLFxuICAgICAgICAgICAgZW50aXR5LCBpc0FycmF5LCBjb29raWVzLCBzdGF0dXNDb2RlIH0gPSByLnJlc3BvbnNlO1xuICAgICAgICAgIHIucmVzcG9uc2UgPSBuZXcgTW9kZWxzLkh0dHBSZXNwb25zZShcbiAgICAgICAgICAgIHNvdXJjZVJlcXVlc3QsXG4gICAgICAgICAgICByZXNwb25zZVRleHQsXG4gICAgICAgICAgICBSZXN0SGVhZGVycy5mcm9tKGhlYWRlcnMpLFxuICAgICAgICAgICAgc3RhdHVzQ29kZSxcbiAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgIGNpcmN1bGFyLFxuICAgICAgICAgICAgLTEsIC8vIGpvYmlkIGZyb20gbG9jYWwgc3RvcmFnZSBUT0RPXG4gICAgICAgICAgICBpc0FycmF5LFxuICAgICAgICAgICk7XG4gICAgICAgICAgciA9IG5ldyBSZXF1ZXN0Q2FjaGUoci5yZXNwb25zZSk7XG4gICAgICAgICAgci5yZXNwb25zZS5ycSA9IHI7XG5cbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgfSk7XG4gICAgICAgIGxvZy5pKCdSRVNUT1JFRCBGUk9NIExPQ0FMIFNUT1JBR0UnLCByZXN0b3JlZCk7XG4gICAgICAgIFJlcXVlc3RDYWNoZS5jYWNoZWQgPSByZXN0b3JlZDtcbiAgICAgIH1cblxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZmluZEJ5KHNvdXJjZVJlcXVlc3Q6IE1vZGVscy5IYW5kbGVSZXN1bHRTb3VyY2VSZXF1ZXN0T3B0aW9ucykge1xuICAgIGxvZy5pKCdmaW5kYnknLCBzb3VyY2VSZXF1ZXN0KVxuICAgIGxvZy5pKCdSZXF1ZXN0Q2FjaGUuY2FjaGVkJywgUmVxdWVzdENhY2hlLmNhY2hlZClcbiAgICBSZXF1ZXN0Q2FjaGUucmVzdG9yZUZyb21Mb2NhbFN0b3JhZ2UoKTtcbiAgICByZXR1cm4gUmVxdWVzdENhY2hlLmNhY2hlZC5maW5kKGMgPT4ge1xuICAgICAgY29uc3QgYSA9IGMucmVzcG9uc2Uuc291cmNlUmVxdWVzdDtcbiAgICAgIGNvbnN0IGIgPSBzb3VyY2VSZXF1ZXN0O1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgYS5pc0FycmF5ID09PSBiLmlzQXJyYXkgJiZcbiAgICAgICAgYS51cmwgPT09IGIudXJsICYmXG4gICAgICAgIGEubWV0aG9kID09PSBiLm1ldGhvZCAmJlxuICAgICAgICBhLmJvZHkgPT09IGIuYm9keVxuICAgICAgKVxuICAgIH0pO1xuICB9XG5cblxuXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlc3BvbnNlOiBNb2RlbHMuSHR0cFJlc3BvbnNlPGFueT5cbiAgKSB7XG5cbiAgfVxuXG4gIGdldCBjb250YWluc0NhY2hlKCkge1xuICAgIFJlcXVlc3RDYWNoZS5yZXN0b3JlRnJvbUxvY2FsU3RvcmFnZSgpO1xuICAgIHJldHVybiBSZXF1ZXN0Q2FjaGUuY2FjaGVkLmluY2x1ZGVzKHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBwZXJzaXN0c0luTG9jYWxTdG9yYWdlKCkge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFJlcXVlc3RDYWNoZS5MT0NBTF9TVE9SQUdFX0tFWSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KFJlcXVlc3RDYWNoZS5jYWNoZWQubWFwKHIgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc3BvbnNlOiB7XG4gICAgICAgICAgICBzb3VyY2VSZXF1ZXN0OiByLnJlc3BvbnNlLnNvdXJjZVJlcXVlc3QsXG4gICAgICAgICAgICByZXNwb25zZVRleHQ6IHIucmVzcG9uc2UucmVzcG9uc2VUZXh0LFxuICAgICAgICAgICAgaGVhZGVyczogci5yZXNwb25zZS5oZWFkZXJzLFxuICAgICAgICAgICAgc3RhdHVzQ29kZTogci5yZXNwb25zZS5zdGF0dXNDb2RlLFxuICAgICAgICAgICAgZW50aXR5OiByLnJlc3BvbnNlLmVudGl0eSxcbiAgICAgICAgICAgIGNpcmN1bGFyOiByLnJlc3BvbnNlLmNpcmN1bGFyLFxuICAgICAgICAgICAgaXNBcnJheTogci5yZXNwb25zZS5pc0FycmF5LFxuICAgICAgICAgIH0gYXMgTW9kZWxzLkh0dHBSZXNwb25zZTxhbnk+XG4gICAgICAgIH07XG4gICAgICB9KSkpO1xuICB9XG5cbiAgc3RvcmUoKSB7XG4gICAgUmVxdWVzdENhY2hlLnJlc3RvcmVGcm9tTG9jYWxTdG9yYWdlKCk7XG4gICAgaWYgKCF0aGlzLmNvbnRhaW5zQ2FjaGUpIHtcbiAgICAgIFJlcXVlc3RDYWNoZS5jYWNoZWQucHVzaCh0aGlzKTtcbiAgICAgIHRoaXMucGVyc2lzdHNJbkxvY2FsU3RvcmFnZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnYWxyZWFkeSBzdG9yZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICByZW1vdmUoKSB7XG4gICAgUmVxdWVzdENhY2hlLnJlc3RvcmVGcm9tTG9jYWxTdG9yYWdlKCk7XG4gICAgY29uc3QgaW5kZXggPSBSZXF1ZXN0Q2FjaGUuY2FjaGVkLmluZGV4T2YodGhpcyk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgUmVxdWVzdENhY2hlLmNhY2hlZC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgdGhpcy5wZXJzaXN0c0luTG9jYWxTdG9yYWdlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKCdhbHJlYWR5IHJlbW92ZWQnKTtcbiAgICB9XG4gIH1cblxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9bmcyLXJlc3QgbGliL3JlcXVlc3QtY2FjaGUudHMiXX0=
|