ng2-rest 11.0.42 → 13.0.4

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.
Files changed (204) hide show
  1. package/README.md +1 -1
  2. package/app.js +2 -47
  3. package/app.js.map +1 -1
  4. package/browser/README.md +24 -0
  5. package/browser/esm2020/lib/cookie.mjs +27 -0
  6. package/browser/esm2020/lib/helpers.mjs +22 -0
  7. package/browser/esm2020/lib/index.mjs +10 -0
  8. package/browser/esm2020/lib/mapping.mjs +271 -0
  9. package/browser/esm2020/lib/models.mjs +135 -0
  10. package/browser/esm2020/lib/params.mjs +305 -0
  11. package/browser/esm2020/lib/request-cache.mjs +95 -0
  12. package/browser/esm2020/lib/resource.service.mjs +255 -0
  13. package/browser/esm2020/lib/rest-headers.mjs +129 -0
  14. package/browser/esm2020/lib/rest-request.mjs +310 -0
  15. package/browser/esm2020/lib/rest.class.mjs +114 -0
  16. package/browser/esm2020/lib/simple-resource.mjs +117 -0
  17. package/browser/esm2020/ng2-rest.mjs +5 -0
  18. package/browser/esm2020/public-api.mjs +2 -0
  19. package/browser/fesm2015/ng2-rest.mjs +1754 -0
  20. package/browser/fesm2015/ng2-rest.mjs.map +1 -0
  21. package/browser/fesm2020/ng2-rest.mjs +1751 -0
  22. package/browser/fesm2020/ng2-rest.mjs.map +1 -0
  23. package/browser/{cookie.d.ts → lib/cookie.d.ts} +0 -0
  24. package/browser/{helpers.d.ts → lib/helpers.d.ts} +0 -0
  25. package/browser/{index.d.ts → lib/index.d.ts} +0 -0
  26. package/browser/{mapping.d.ts → lib/mapping.d.ts} +0 -0
  27. package/{client → browser/lib}/models.d.ts +2 -3
  28. package/browser/{params.d.ts → lib/params.d.ts} +0 -0
  29. package/browser/{request-cache.d.ts → lib/request-cache.d.ts} +0 -0
  30. package/browser/{resource.service.d.ts → lib/resource.service.d.ts} +1 -5
  31. package/browser/{rest-headers.d.ts → lib/rest-headers.d.ts} +0 -0
  32. package/{rest-request.d.ts → browser/lib/rest-request.d.ts} +0 -3
  33. package/{rest.class.d.ts → browser/lib/rest.class.d.ts} +0 -1
  34. package/browser/{simple-resource.d.ts → lib/simple-resource.d.ts} +1 -5
  35. package/browser/ng2-rest.d.ts +5 -0
  36. package/browser/package.json +31 -0
  37. package/browser/public-api.d.ts +1 -0
  38. package/client/README.md +24 -0
  39. package/client/esm2020/lib/cookie.mjs +27 -0
  40. package/client/esm2020/lib/helpers.mjs +22 -0
  41. package/client/esm2020/lib/index.mjs +10 -0
  42. package/client/esm2020/lib/mapping.mjs +271 -0
  43. package/client/esm2020/lib/models.mjs +135 -0
  44. package/client/esm2020/lib/params.mjs +305 -0
  45. package/client/esm2020/lib/request-cache.mjs +95 -0
  46. package/client/esm2020/lib/resource.service.mjs +255 -0
  47. package/client/esm2020/lib/rest-headers.mjs +129 -0
  48. package/client/esm2020/lib/rest-request.mjs +310 -0
  49. package/client/esm2020/lib/rest.class.mjs +114 -0
  50. package/client/esm2020/lib/simple-resource.mjs +117 -0
  51. package/client/esm2020/ng2-rest.mjs +5 -0
  52. package/client/esm2020/public-api.mjs +2 -0
  53. package/client/fesm2015/ng2-rest.mjs +1754 -0
  54. package/client/fesm2015/ng2-rest.mjs.map +1 -0
  55. package/client/fesm2020/ng2-rest.mjs +1751 -0
  56. package/client/fesm2020/ng2-rest.mjs.map +1 -0
  57. package/client/{cookie.d.ts → lib/cookie.d.ts} +0 -0
  58. package/client/{helpers.d.ts → lib/helpers.d.ts} +0 -0
  59. package/client/{index.d.ts → lib/index.d.ts} +0 -0
  60. package/client/{mapping.d.ts → lib/mapping.d.ts} +0 -0
  61. package/{browser → client/lib}/models.d.ts +2 -3
  62. package/client/{params.d.ts → lib/params.d.ts} +0 -0
  63. package/client/{request-cache.d.ts → lib/request-cache.d.ts} +0 -0
  64. package/client/{resource.service.d.ts → lib/resource.service.d.ts} +1 -5
  65. package/client/{rest-headers.d.ts → lib/rest-headers.d.ts} +0 -0
  66. package/client/{rest-request.d.ts → lib/rest-request.d.ts} +0 -3
  67. package/client/{rest.class.d.ts → lib/rest.class.d.ts} +0 -1
  68. package/{simple-resource.d.ts → client/lib/simple-resource.d.ts} +1 -5
  69. package/client/ng2-rest.d.ts +5 -0
  70. package/client/package.json +25 -31
  71. package/client/public-api.d.ts +1 -0
  72. package/index.d.ts +1 -9
  73. package/index.js +3 -13
  74. package/index.js.map +1 -1
  75. package/{cookie.d.ts → lib/cookie.d.ts} +0 -0
  76. package/{cookie.js → lib/cookie.js} +2 -1
  77. package/lib/cookie.js.map +1 -0
  78. package/{helpers.d.ts → lib/helpers.d.ts} +0 -0
  79. package/{helpers.js → lib/helpers.js} +3 -2
  80. package/lib/helpers.js.map +1 -0
  81. package/{browser/index.js → lib/index.d.ts} +0 -1
  82. package/lib/index.js +17 -0
  83. package/lib/index.js.map +1 -0
  84. package/{mapping.d.ts → lib/mapping.d.ts} +0 -0
  85. package/{mapping.js → lib/mapping.js} +5 -4
  86. package/lib/mapping.js.map +1 -0
  87. package/{models.d.ts → lib/models.d.ts} +2 -3
  88. package/{models.js → lib/models.js} +6 -6
  89. package/lib/models.js.map +1 -0
  90. package/{params.d.ts → lib/params.d.ts} +0 -0
  91. package/{params.js → lib/params.js} +17 -16
  92. package/lib/params.js.map +1 -0
  93. package/{request-cache.d.ts → lib/request-cache.d.ts} +0 -0
  94. package/{request-cache.js → lib/request-cache.js} +2 -1
  95. package/lib/request-cache.js.map +1 -0
  96. package/{resource.service.d.ts → lib/resource.service.d.ts} +1 -5
  97. package/{resource.service.js → lib/resource.service.js} +33 -26
  98. package/lib/resource.service.js.map +1 -0
  99. package/{rest-headers.d.ts → lib/rest-headers.d.ts} +0 -0
  100. package/{rest-headers.js → lib/rest-headers.js} +2 -1
  101. package/lib/rest-headers.js.map +1 -0
  102. package/{browser → lib}/rest-request.d.ts +0 -3
  103. package/{rest-request.js → lib/rest-request.js} +19 -20
  104. package/lib/rest-request.js.map +1 -0
  105. package/{browser → lib}/rest.class.d.ts +0 -1
  106. package/{rest.class.js → lib/rest.class.js} +4 -5
  107. package/lib/rest.class.js.map +1 -0
  108. package/{client → lib}/simple-resource.d.ts +1 -5
  109. package/{simple-resource.js → lib/simple-resource.js} +11 -14
  110. package/lib/simple-resource.js.map +1 -0
  111. package/package.json +10 -10
  112. package/package.json_tnp.json5 +39 -0
  113. package/tmp-environment.json +119 -123
  114. package/browser/app.d.ts +0 -0
  115. package/browser/app.js +0 -31
  116. package/browser/app.js.map +0 -1
  117. package/browser/cookie.js +0 -27
  118. package/browser/cookie.js.map +0 -1
  119. package/browser/es5/app.js +0 -32
  120. package/browser/es5/cookie.js +0 -50
  121. package/browser/es5/helpers.js +0 -58
  122. package/browser/es5/index.js +0 -107
  123. package/browser/es5/mapping.js +0 -287
  124. package/browser/es5/models.js +0 -249
  125. package/browser/es5/params.js +0 -310
  126. package/browser/es5/request-cache.js +0 -133
  127. package/browser/es5/resource.service.js +0 -288
  128. package/browser/es5/rest-headers.js +0 -200
  129. package/browser/es5/rest-request.js +0 -423
  130. package/browser/es5/rest.class.js +0 -191
  131. package/browser/es5/simple-resource.js +0 -175
  132. package/browser/helpers.js +0 -22
  133. package/browser/helpers.js.map +0 -1
  134. package/browser/index.js.map +0 -1
  135. package/browser/mapping.js +0 -271
  136. package/browser/mapping.js.map +0 -1
  137. package/browser/models.js +0 -136
  138. package/browser/models.js.map +0 -1
  139. package/browser/params.js +0 -305
  140. package/browser/params.js.map +0 -1
  141. package/browser/request-cache.js +0 -95
  142. package/browser/request-cache.js.map +0 -1
  143. package/browser/resource.service.js +0 -249
  144. package/browser/resource.service.js.map +0 -1
  145. package/browser/rest-headers.js +0 -129
  146. package/browser/rest-headers.js.map +0 -1
  147. package/browser/rest-request.js +0 -316
  148. package/browser/rest-request.js.map +0 -1
  149. package/browser/rest.class.js +0 -116
  150. package/browser/rest.class.js.map +0 -1
  151. package/browser/simple-resource.js +0 -121
  152. package/browser/simple-resource.js.map +0 -1
  153. package/client/app.d.ts +0 -0
  154. package/client/app.js +0 -31
  155. package/client/app.js.map +0 -1
  156. package/client/cookie.js +0 -27
  157. package/client/cookie.js.map +0 -1
  158. package/client/es5/app.js +0 -32
  159. package/client/es5/cookie.js +0 -50
  160. package/client/es5/helpers.js +0 -58
  161. package/client/es5/index.js +0 -107
  162. package/client/es5/mapping.js +0 -287
  163. package/client/es5/models.js +0 -249
  164. package/client/es5/params.js +0 -310
  165. package/client/es5/request-cache.js +0 -133
  166. package/client/es5/resource.service.js +0 -288
  167. package/client/es5/rest-headers.js +0 -200
  168. package/client/es5/rest-request.js +0 -423
  169. package/client/es5/rest.class.js +0 -191
  170. package/client/es5/simple-resource.js +0 -175
  171. package/client/helpers.js +0 -22
  172. package/client/helpers.js.map +0 -1
  173. package/client/index.js +0 -10
  174. package/client/index.js.map +0 -1
  175. package/client/mapping.js +0 -271
  176. package/client/mapping.js.map +0 -1
  177. package/client/models.js +0 -136
  178. package/client/models.js.map +0 -1
  179. package/client/params.js +0 -305
  180. package/client/params.js.map +0 -1
  181. package/client/request-cache.js +0 -95
  182. package/client/request-cache.js.map +0 -1
  183. package/client/resource.service.js +0 -249
  184. package/client/resource.service.js.map +0 -1
  185. package/client/rest-headers.js +0 -129
  186. package/client/rest-headers.js.map +0 -1
  187. package/client/rest-request.js +0 -316
  188. package/client/rest-request.js.map +0 -1
  189. package/client/rest.class.js +0 -116
  190. package/client/rest.class.js.map +0 -1
  191. package/client/simple-resource.js +0 -121
  192. package/client/simple-resource.js.map +0 -1
  193. package/cookie.js.map +0 -1
  194. package/helpers.js.map +0 -1
  195. package/mapping.js.map +0 -1
  196. package/models.js.map +0 -1
  197. package/package.json_tnp.json +0 -47
  198. package/params.js.map +0 -1
  199. package/request-cache.js.map +0 -1
  200. package/resource.service.js.map +0 -1
  201. package/rest-headers.js.map +0 -1
  202. package/rest-request.js.map +0 -1
  203. package/rest.class.js.map +0 -1
  204. package/simple-resource.js.map +0 -1
package/client/params.js DELETED
@@ -1,305 +0,0 @@
1
- import { diffChars } from 'diff';
2
- import { _ } from 'tnp-core/browser';
3
- import { Log, Level } from 'ng2-logger/browser';
4
- import { Helpers } from './helpers';
5
- const log = Log.create('[ng2-rest] params', Level.__NOTHING);
6
- /** check if string is a valid pattern */
7
- export function isValid(pattern) {
8
- return (new RegExp('\/:[a-zA-Z]*', 'g')).test(pattern.replace('://', ''));
9
- }
10
- export function check(url, pattern) {
11
- if (!Helpers.checkValidUrl(url)) {
12
- log.error(`Incorrect url: ${url}`);
13
- return false;
14
- }
15
- if (url.charAt(url.length - 1) === '/')
16
- url = url.slice(0, url.length - 2);
17
- if (pattern.charAt(pattern.length - 1) === '/')
18
- pattern = pattern.slice(0, url.length - 2);
19
- pattern = pattern.replace(/\//g, '\/');
20
- pattern = pattern.replace(new RegExp('\/:[a-zA-Z]*', 'g'), '.+');
21
- let reg = new RegExp(pattern, 'g');
22
- return reg.test(url);
23
- }
24
- export function getModels(pattern) {
25
- let m = pattern.match(new RegExp('[a-z-A-Z]*\/:', 'g'));
26
- return m.map(p => p.replace('/:', ''));
27
- }
28
- export function getRestPramsNames(pattern) {
29
- if (pattern.charAt(pattern.length - 1) !== '/')
30
- pattern = `${pattern}/`;
31
- let m = pattern.match(new RegExp(':[a-zA-Z]*\/', 'g'));
32
- let res = m.map(p => p.replace(':', '').replace('/', ''));
33
- return res.filter(p => p.trim() !== '');
34
- }
35
- export function containsModels(url, models) {
36
- if (url.charAt(0) !== '/')
37
- url = '/' + url;
38
- // url = url.replace(new RegExp('\/', 'g'), '');
39
- let res = models.filter(m => {
40
- let word = '/' + m;
41
- // log.d('word', word)
42
- let iii = url.indexOf(word);
43
- // log.d('iii', iii)
44
- if (iii + word.length < url.length && url.charAt(iii + word.length) !== '/') {
45
- return false;
46
- }
47
- if (iii !== -1) {
48
- url = url.replace(new RegExp('\/' + m, 'g'), '');
49
- return true;
50
- }
51
- return false;
52
- }).length;
53
- // log.d('containsModels', res);
54
- return res === models.length;
55
- }
56
- export function stars(n) {
57
- let res = '';
58
- for (let i = 0; i < n; i++)
59
- res += '*';
60
- return res;
61
- }
62
- export function getRestParams(url, pattern) {
63
- let res = {};
64
- let models = getRestPramsNames(pattern);
65
- // log.d('models', models);
66
- models.forEach(m => {
67
- pattern = pattern.replace(`:${m}`, stars(m.length));
68
- });
69
- let currentModel = void 0;
70
- diffChars(pattern, url).forEach(d => {
71
- // log.d('d', d);
72
- if (d.added) {
73
- if (!isNaN(Number(d.value)))
74
- res[currentModel] = Number(d.value);
75
- else if (d.value.trim() === 'true')
76
- res[currentModel] = true;
77
- else if (d.value.trim() === 'false')
78
- res[currentModel] = false;
79
- else
80
- res[currentModel] = decodeURIComponent(d.value);
81
- currentModel = void 0;
82
- }
83
- let m = d.value.replace(':', "");
84
- // log.d('model m', m)
85
- if (d.removed) {
86
- currentModel = models.shift();
87
- }
88
- });
89
- return res;
90
- }
91
- export const regexisPath = /[^\..]+(\.[^\..]+)+/g;
92
- /**
93
- * Models like books/:id
94
- */
95
- function cutUrlModel(params, models, output) {
96
- if (models.length === 0)
97
- return output.join('\/');
98
- let m = models.pop();
99
- let param = m.match(/:[a-zA-Z0-9\.]+/)[0].replace(':', '');
100
- const paramIsPath = regexisPath.test(param);
101
- // log.i('cut param', param)
102
- let model = m.match(/[a-zA-Z0-9]+\//)[0].replace('\/', '');
103
- if (params === void 0 ||
104
- (paramIsPath ? _.get(params, param) === void 0 : params[param] === void 0) ||
105
- param === 'undefined') {
106
- output.length = 0;
107
- output.unshift(model);
108
- return cutUrlModel(params, models, output);
109
- }
110
- else {
111
- if (paramIsPath) {
112
- // log.i('param is path', param)
113
- let mrep = m.replace(new RegExp(`:${param}`, 'g'), `${_.get(params, param)}`);
114
- output.unshift(mrep);
115
- return cutUrlModel(params, models, output);
116
- }
117
- else {
118
- // log.i('param is normal', param)
119
- let mrep = m.replace(new RegExp(`:${param}`, 'g'), `${params[param]}`);
120
- output.unshift(mrep);
121
- return cutUrlModel(params, models, output);
122
- }
123
- }
124
- }
125
- export function interpolateParamsToUrl(params, url) {
126
- const regexInt = /\[\[([^\..]+\.[^\..]+)+\]\]/g;
127
- url = url.split('/').map(p => {
128
- // log.d('url parts', p)
129
- let isParam = p.startsWith(':');
130
- if (isParam) {
131
- let part = p.slice(1);
132
- // log.d('url param part', p)
133
- if (regexInt.test(part)) {
134
- // let level = (url.split('.').length - 1)
135
- part = part.replace('[[', '');
136
- part = part.replace(']]', '');
137
- }
138
- return `:${part}`;
139
- }
140
- return p;
141
- }).join('/');
142
- // log.i('URL TO EXPOSE', url)
143
- // log.i('params', params)
144
- let slash = {
145
- start: url.charAt(0) === '\/',
146
- end: url.charAt(url.length - 1) === '\/'
147
- };
148
- let morePramsOnEnd = url.match(/(\/:[a-zA-Z0-9\.]+){2,10}/g);
149
- if (morePramsOnEnd && (Array.isArray(morePramsOnEnd) && morePramsOnEnd.length === 1)) {
150
- // log.i('morePramsOnEnd', morePramsOnEnd)
151
- let m = morePramsOnEnd[0];
152
- let match = m.match(/\/:[a-zA-Z0-9\.]+/g);
153
- // log.i('match', match)
154
- match.forEach(e => {
155
- let c = e.replace('\/:', '');
156
- // log.i('c', c)
157
- if (regexisPath.test(c)) {
158
- url = url.replace(e, `/${_.get(params, c)}`);
159
- }
160
- else {
161
- url = url.replace(e, `/${params[c]}`);
162
- }
163
- // log.i('prog url', url)
164
- });
165
- return url;
166
- }
167
- let nestedParams = url.match(/[a-zA-Z0-9]+\/:[a-zA-Z0-9\.]+/g);
168
- if (!nestedParams || (Array.isArray(nestedParams) && nestedParams.length === 0))
169
- return url;
170
- // check alone params
171
- if (!slash.end)
172
- url = `${url}/`;
173
- let addUndefinedForAlone = (!/:[a-zA-Z0-9\.]+\/$/g.test(url) && /[a-zA-Z0-9]+\/$/g.test(url));
174
- let replace = (nestedParams.length > 1 ? nestedParams.join('\/') : nestedParams[0]) +
175
- (addUndefinedForAlone ? '\/' + url.match(/[a-zA-Z0-9]+\/$/g)[0] : '\/');
176
- let beginHref = url.replace(replace, '');
177
- if (addUndefinedForAlone) {
178
- url = url.replace(/\/$/g, '/:undefined');
179
- nestedParams = url.match(/[a-zA-Z0-9]+\/:[a-zA-Z0-9\.]+/g);
180
- url = cutUrlModel(params, nestedParams, []);
181
- }
182
- else {
183
- url = cutUrlModel(params, nestedParams, []);
184
- }
185
- url = beginHref + url;
186
- if (url.charAt(url.length - 1) !== '/' && slash.end)
187
- url = `${url}/`;
188
- if (url.charAt(0) !== '\/' && slash.start)
189
- url = `/${url}`;
190
- return url;
191
- }
192
- /**
193
- * Get query params from url, like 'ex' in /api/books?ex=value
194
- */
195
- export function decodeUrl(url) {
196
- let regex = /[?&]([^=#]+)=([^&#]*)/g, params = {}, match;
197
- while (match = regex.exec(url)) {
198
- params[decodeURIComponent(match[1])] = decodeURIComponent(match[2]);
199
- }
200
- let paramsObject = params;
201
- for (let p in paramsObject) {
202
- if (paramsObject[p] === void 0) {
203
- delete paramsObject[p];
204
- continue;
205
- }
206
- if (paramsObject.hasOwnProperty(p)) {
207
- // chcek if property is number
208
- let n = Number(params[p]);
209
- if (!isNaN(n)) {
210
- params[p] = n;
211
- continue;
212
- }
213
- if (typeof params[p] === 'string') {
214
- // check if property is object
215
- let json;
216
- try {
217
- json = JSON.parse(params[p]);
218
- }
219
- catch (error) { }
220
- if (json !== void 0) {
221
- params[p] = json;
222
- continue;
223
- }
224
- // chcek if property value is like regular rexpression
225
- // let regexExpression;
226
- // try {
227
- // regexExpression = new RegExp(params[p]);
228
- // } catch (e) { }
229
- // if (regexExpression !== undefined) params[p] = regexExpression;
230
- }
231
- }
232
- }
233
- return params;
234
- }
235
- /**
236
- * Create query params string for url
237
- *
238
- * @export
239
- * @param {UrlParams[]} params
240
- * @returns {string}
241
- */
242
- export function getParamsUrl(params, doNotSerialize = false) {
243
- let urlparts = [];
244
- if (!params)
245
- return '';
246
- if (!(params instanceof Array))
247
- return '';
248
- if (params.length === 0)
249
- return '';
250
- params.forEach(urlparam => {
251
- if (JSON.stringify(urlparam) !== '{}') {
252
- let parameters = [];
253
- let paramObject = urlparam;
254
- for (let p in paramObject) {
255
- if (paramObject[p] === void 0)
256
- delete paramObject[p];
257
- if (paramObject.hasOwnProperty(p) && typeof p === 'string' && p !== 'regex' && !(paramObject[p] instanceof RegExp)) {
258
- if (p.length > 0 && p[0] === '/') {
259
- let newName = p.slice(1, p.length - 1);
260
- urlparam[newName] = urlparam[p];
261
- urlparam[p] = void 0;
262
- p = newName;
263
- }
264
- if (p.length > 0 && p[p.length - 1] === '/') {
265
- let newName = p.slice(0, p.length - 2);
266
- urlparam[newName] = urlparam[p];
267
- urlparam[p] = void 0;
268
- p = newName;
269
- }
270
- let v = urlparam[p];
271
- if (v instanceof Object) {
272
- urlparam[p] = JSON.stringify(urlparam[p]);
273
- }
274
- urlparam[p] = doNotSerialize ? urlparam[p] : encodeURIComponent(urlparam[p]);
275
- if (urlparam.regex !== void 0 && urlparam.regex instanceof RegExp) {
276
- if (!urlparam.regex.test(urlparam[p])) {
277
- console.warn(`Data: ${urlparam[p]} incostistent with regex ${urlparam.regex.source}`);
278
- }
279
- }
280
- parameters.push(`${p}=${urlparam[p]}`);
281
- }
282
- }
283
- urlparts.push(parameters.join('&'));
284
- }
285
- });
286
- let join = urlparts.join().trim();
287
- if (join.trim() === '')
288
- return '';
289
- return `?${urlparts.join('&')}`;
290
- }
291
- function transform(o) {
292
- if (typeof o === 'object') {
293
- return encodeURIComponent(JSON.stringify(o));
294
- }
295
- return o;
296
- }
297
- export function prepareUrlOldWay(params) {
298
- if (!params)
299
- return this.endpoint;
300
- if (typeof params === 'object') {
301
- params = transform(params);
302
- }
303
- return this.endpoint + '/' + params;
304
- }
305
- //# sourceMappingURL=params.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"params.js","sourceRoot":"","sources":["../../tmp-src-bundle/params.ts"],"names":[],"mappings":"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"}
@@ -1,95 +0,0 @@
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
- export class RequestCache {
7
- constructor(response) {
8
- this.response = response;
9
- }
10
- static restoreFromLocalStorage() {
11
- if (Helpers.isNode) {
12
- return;
13
- }
14
- if (!RequestCache.isRestoredFromLocalStorage) {
15
- RequestCache.isRestoredFromLocalStorage = true;
16
- const data = localStorage.getItem(RequestCache.LOCAL_STORAGE_KEY);
17
- let requests = [];
18
- if (data) {
19
- try {
20
- requests = JSON.parse(data);
21
- }
22
- catch (error) {
23
- }
24
- const restored = requests.map(r => {
25
- let { sourceRequest, responseText, body, headers, circular, entity, isArray, cookies, statusCode } = r.response;
26
- r.response = new Models.HttpResponse(sourceRequest, responseText, RestHeaders.from(headers), statusCode, entity, circular, -1, // jobid from local storage TODO
27
- isArray);
28
- r = new RequestCache(r.response);
29
- r.response.rq = r;
30
- return r;
31
- });
32
- log.i('RESTORED FROM LOCAL STORAGE', restored);
33
- RequestCache.cached = restored;
34
- }
35
- }
36
- }
37
- static findBy(sourceRequest) {
38
- log.i('findby', sourceRequest);
39
- log.i('RequestCache.cached', RequestCache.cached);
40
- RequestCache.restoreFromLocalStorage();
41
- return RequestCache.cached.find(c => {
42
- const a = c.response.sourceRequest;
43
- const b = sourceRequest;
44
- return (a.isArray === b.isArray &&
45
- a.url === b.url &&
46
- a.method === b.method &&
47
- a.body === b.body);
48
- });
49
- }
50
- get containsCache() {
51
- RequestCache.restoreFromLocalStorage();
52
- return RequestCache.cached.includes(this);
53
- }
54
- persistsInLocalStorage() {
55
- localStorage.setItem(RequestCache.LOCAL_STORAGE_KEY, JSON.stringify(RequestCache.cached.map(r => {
56
- return {
57
- response: {
58
- sourceRequest: r.response.sourceRequest,
59
- responseText: r.response.responseText,
60
- headers: r.response.headers,
61
- statusCode: r.response.statusCode,
62
- entity: r.response.entity,
63
- circular: r.response.circular,
64
- isArray: r.response.isArray,
65
- }
66
- };
67
- })));
68
- }
69
- store() {
70
- RequestCache.restoreFromLocalStorage();
71
- if (!this.containsCache) {
72
- RequestCache.cached.push(this);
73
- this.persistsInLocalStorage();
74
- }
75
- else {
76
- console.log('already stored');
77
- }
78
- return this;
79
- }
80
- remove() {
81
- RequestCache.restoreFromLocalStorage();
82
- const index = RequestCache.cached.indexOf(this);
83
- if (index !== -1) {
84
- RequestCache.cached.splice(index, 1);
85
- this.persistsInLocalStorage();
86
- }
87
- else {
88
- console.log('already removed');
89
- }
90
- }
91
- }
92
- RequestCache.LOCAL_STORAGE_KEY = 'ng2restrequestcache';
93
- RequestCache.cached = [];
94
- RequestCache.isRestoredFromLocalStorage = false;
95
- //# sourceMappingURL=request-cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request-cache.js","sourceRoot":"","sources":["../../tmp-src-bundle/request-cache.ts"],"names":[],"mappings":"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"}
@@ -1,249 +0,0 @@
1
- import { Subject } from 'rxjs/Subject';
2
- import 'rxjs/add/operator/map';
3
- import 'rxjs/add/operator/takeUntil';
4
- import 'rxjs/add/operator/take';
5
- import 'rxjs/add/operator/toPromise';
6
- import { Log, Level } from 'ng2-logger/browser';
7
- const log = Log.create('resouce-service', Level.__NOTHING);
8
- import { Rest } from './rest.class';
9
- import { RestRequest } from './rest-request';
10
- import { RestHeaders } from './rest-headers';
11
- import { Cookie } from './cookie';
12
- import { interpolateParamsToUrl, isValid, containsModels, getModels } from './params';
13
- export class Resource {
14
- //#endregion
15
- //#region constructor
16
- constructor() {
17
- setTimeout(() => {
18
- const zone = this.getZone();
19
- if (!RestRequest.zone)
20
- RestRequest.zone = zone;
21
- });
22
- }
23
- static get listenErrors() {
24
- return this._listenErrors.asObservable();
25
- }
26
- //#region private mthods and fields
27
- getZone() {
28
- const isNode = (typeof window === 'undefined');
29
- if (isNode)
30
- return;
31
- const ng = window['ng'];
32
- const getAllAngularRootElements = window['getAllAngularRootElements'];
33
- if (!ng || !getAllAngularRootElements)
34
- return;
35
- const probe = ng.probe;
36
- const coreTokens = ng.coreTokens;
37
- if (!coreTokens.NgZone)
38
- return;
39
- const zoneClass = coreTokens.NgZone;
40
- if (!probe || typeof probe !== 'function' || !getAllAngularRootElements)
41
- return;
42
- const angularElements = getAllAngularRootElements();
43
- if (!Array.isArray(angularElements) || angularElements.length === 0)
44
- return;
45
- const rootElement = ng.probe(angularElements[0]);
46
- if (!rootElement)
47
- return;
48
- const injector = rootElement.injector;
49
- if (!injector || !injector.get || typeof injector.get !== 'function')
50
- return;
51
- const zone = injector.get(zoneClass);
52
- return zone;
53
- }
54
- static initAngularNgZone(zone) {
55
- RestRequest.zone = zone;
56
- }
57
- checkNestedModels(model, allModels) {
58
- // if (model.indexOf('/') !== -1) { //TODO make this better, becouse now I unecesary checking shit
59
- for (let p in allModels) {
60
- if (allModels.hasOwnProperty(p)) {
61
- let m = allModels[p];
62
- if (isValid(p)) {
63
- let urlModels = getModels(p);
64
- if (containsModels(model, urlModels)) {
65
- model = p;
66
- break;
67
- }
68
- }
69
- }
70
- }
71
- // }
72
- return model;
73
- }
74
- static getModel(endpoint, model) {
75
- model = Resource.prepareModel(model);
76
- const e = Resource.endpoints[endpoint];
77
- if (!e) {
78
- return void 0;
79
- }
80
- const r = Resource.endpoints[endpoint].models[model];
81
- return Resource.endpoints[endpoint].models[model];
82
- }
83
- //#endregion
84
- //#region create
85
- static create(e, model, entityMapping, circular) {
86
- const badRestRegEX = new RegExp('((\/:)[a-z]+)+', 'g');
87
- const matchArr = model.match(badRestRegEX) || [];
88
- const badModelsNextToEachOther = matchArr.join();
89
- const atleas2DoubleDots = ((badModelsNextToEachOther.match(new RegExp(':', 'g')) || []).length >= 2);
90
- if (atleas2DoubleDots && model.search(badModelsNextToEachOther) !== -1) {
91
- throw new Error(`
92
-
93
- Bad rest model: ${model}
94
-
95
- Do not create rest models like this: /book/author/:bookid/:authorid
96
- Instead use nested approach: /book/:bookid/author/:authorid
97
- `);
98
- }
99
- ;
100
- Resource.map(e, e);
101
- Resource.instance.add(e, model ? model : '', entityMapping, circular);
102
- // if (model.charAt(model.length - 1) !== '/') model = `${model}/`;
103
- return {
104
- model: (params) => Resource.instance.api(e, interpolateParamsToUrl(params, model)),
105
- replay: (method) => {
106
- Resource.getModel(e, model).replay(method);
107
- },
108
- get headers() {
109
- return Resource.getModel(e, model).headers;
110
- }
111
- };
112
- }
113
- //#endregion
114
- //#region reset
115
- static reset() {
116
- Resource.endpoints = {};
117
- }
118
- //#region map
119
- static map(endpoint, url) {
120
- log.i('url', url);
121
- let regex = /(http|https):\/\/(\w+:{0,1}\w*)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%!\-\/]))?/;
122
- let e = endpoint;
123
- if (!regex.test(url)) {
124
- throw `Url address is not correct: ${url}`;
125
- }
126
- if (url.charAt(url.length - 1) === '/')
127
- url = url.slice(0, url.length - 1);
128
- log.i('url after', url);
129
- if (Resource.endpoints[e] !== void 0) {
130
- !global.hideLog && console.warn('Cannot use map function at the same API endpoint again ('
131
- + Resource.endpoints[e].url + ')');
132
- return false;
133
- }
134
- Resource.endpoints[e] = {
135
- url: url,
136
- models: {},
137
- entity: null
138
- };
139
- log.i('enpoints', Resource.endpoints);
140
- return true;
141
- }
142
- //#endregion
143
- static prepareModel(model) {
144
- if (model.charAt(model.length - 1) === '/')
145
- model = model.slice(0, model.length - 1);
146
- if (model.charAt(0) === '/')
147
- model = model.slice(1, model.length);
148
- return model;
149
- }
150
- //#region add
151
- /**
152
- * And enipoint to application
153
- *
154
- * @param {E} endpoint
155
- * @param {string} model
156
- * @returns {boolean}
157
- */
158
- add(endpoint, model, entity, circular) {
159
- log.i(`I am maping ${model} on ${endpoint}`);
160
- model = Resource.prepareModel(model);
161
- let e;
162
- e = (endpoint).toString();
163
- if (Resource.endpoints[e] === void 0) {
164
- console.error('Endpoint is not mapped ! Cannot add model ' + model);
165
- return;
166
- }
167
- if (Resource.endpoints[e].models[model] !== void 0) {
168
- if (Resource.enableWarnings)
169
- console.warn(`Model '${model}' is already defined in endpoint: `
170
- + Resource.endpoints[e].url);
171
- return;
172
- }
173
- Resource.endpoints[e].models[model] =
174
- new Rest(Resource.endpoints[e].url
175
- + '/' + model, Resource.request, {
176
- endpoint: e,
177
- path: model,
178
- entity,
179
- circular
180
- });
181
- return;
182
- }
183
- //#endregion
184
- //#region api
185
- /**
186
- * Access api throught endpoint
187
- *
188
- * @param {E} endpoint
189
- * @param {string} model
190
- * @returns {Rest<T, TA>}
191
- */
192
- api(endpoint, model) {
193
- // log.i(`[api]
194
- // creating for endpoint: "${endpoint}"
195
- // model: "${model}"
196
- // `)
197
- if (model.charAt(0) === '/')
198
- model = model.slice(1, model.length);
199
- let e = (endpoint).toString();
200
- if (Resource.endpoints[e] === void 0) {
201
- throw `Endpoint: ${endpoint} is not mapped ! Cannot add model: ${model}`;
202
- }
203
- let allModels = Resource.endpoints[e].models;
204
- let orgModel = model;
205
- model = this.checkNestedModels(model, allModels);
206
- if (Resource.endpoints[e].models[model] === void 0) {
207
- // log.d('Resource.endpoints', Resource.endpoints);
208
- throw `Model '${model}' is undefined in endpoint: ${Resource.endpoints[e].url} `;
209
- }
210
- let res = Resource.endpoints[(endpoint).toString()].models[model];
211
- // log.d(`
212
- // orgModel: ${orgModel}
213
- // model: ${model}
214
- // `)
215
- if (orgModel !== model) {
216
- let baseUrl = Resource.endpoints[(endpoint).toString()].url;
217
- // log.d('base', Resource.endpoints[<string>(endpoint).toString()])
218
- // log.d('baseUrl', baseUrl)
219
- // log.d('orgModel', orgModel)
220
- res.__rest_endpoint = `${baseUrl}/${orgModel}`;
221
- }
222
- else {
223
- res.__rest_endpoint = void 0;
224
- }
225
- ;
226
- // log.i(`Resource.endpoints`, Resource.endpoints)
227
- return res;
228
- }
229
- }
230
- Resource.DEFAULT_HEADERS = RestHeaders.from({
231
- 'Content-Type': 'application/json',
232
- 'Accept': 'application/json'
233
- });
234
- Resource._listenErrors = new Subject();
235
- Resource.enableWarnings = true;
236
- Resource.instance = new Resource();
237
- Resource.endpoints = {};
238
- Resource.request = new RestRequest();
239
- //#endregion
240
- Resource.Cookies = Cookie.Instance;
241
- // const res = Resource.create('')
242
- // res.model()
243
- // .mock({
244
- // code: 500,
245
- // data: {},
246
- // isArray: true
247
- // })
248
- // .array.
249
- //# sourceMappingURL=resource.service.js.map