ngrx-entity-crud 12.0.6-beta.2

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 (184) hide show
  1. package/README.md +259 -0
  2. package/bundles/ngrx-entity-crud.umd.js +1829 -0
  3. package/bundles/ngrx-entity-crud.umd.js.map +1 -0
  4. package/esm2015/lib/actions.js +88 -0
  5. package/esm2015/lib/base-crud-gql.service.js +71 -0
  6. package/esm2015/lib/base-crud.service.js +136 -0
  7. package/esm2015/lib/create_adapter.js +14 -0
  8. package/esm2015/lib/effect.js +467 -0
  9. package/esm2015/lib/entity_state.js +23 -0
  10. package/esm2015/lib/ibase-crud-service.js +2 -0
  11. package/esm2015/lib/j-ngrx-filter.js +133 -0
  12. package/esm2015/lib/models.js +17 -0
  13. package/esm2015/lib/reducer.js +353 -0
  14. package/esm2015/lib/state_selectors.js +56 -0
  15. package/esm2015/lib/utils.js +19 -0
  16. package/esm2015/ngrx-entity-crud.js +5 -0
  17. package/esm2015/public-api.js +7 -0
  18. package/fesm2015/ngrx-entity-crud.js +1367 -0
  19. package/fesm2015/ngrx-entity-crud.js.map +1 -0
  20. package/lib/actions.d.ts +5 -0
  21. package/lib/actions.d.ts.map +1 -0
  22. package/lib/base-crud-gql.service.d.ts +19 -0
  23. package/lib/base-crud-gql.service.d.ts.map +1 -0
  24. package/lib/base-crud.service.d.ts +34 -0
  25. package/lib/base-crud.service.d.ts.map +1 -0
  26. package/lib/create_adapter.d.ts +6 -0
  27. package/lib/create_adapter.d.ts.map +1 -0
  28. package/lib/effect.d.ts +132 -0
  29. package/lib/effect.d.ts.map +1 -0
  30. package/lib/entity_state.d.ts +9 -0
  31. package/lib/entity_state.d.ts.map +1 -0
  32. package/lib/ibase-crud-service.d.ts +13 -0
  33. package/lib/ibase-crud-service.d.ts.map +1 -0
  34. package/lib/j-ngrx-filter.d.ts +14 -0
  35. package/lib/j-ngrx-filter.d.ts.map +1 -0
  36. package/lib/models.d.ts +494 -0
  37. package/lib/models.d.ts.map +1 -0
  38. package/lib/reducer.d.ts +11 -0
  39. package/lib/reducer.d.ts.map +1 -0
  40. package/lib/state_selectors.d.ts +5 -0
  41. package/lib/state_selectors.d.ts.map +1 -0
  42. package/lib/utils.d.ts +8 -0
  43. package/lib/utils.d.ts.map +1 -0
  44. package/ngrx-entity-crud.d.ts +5 -0
  45. package/ngrx-entity-crud.d.ts.map +1 -0
  46. package/ngrx-entity-crud.metadata.json +1 -0
  47. package/package.json +41 -0
  48. package/public-api.d.ts +7 -0
  49. package/public-api.d.ts.map +1 -0
  50. package/schematics/auth/files/model/auth.ts +17 -0
  51. package/schematics/auth/files/store/auth-store/actions.ts +30 -0
  52. package/schematics/auth/files/store/auth-store/auth-mock.service.ts +95 -0
  53. package/schematics/auth/files/store/auth-store/auth-store.module.ts +34 -0
  54. package/schematics/auth/files/store/auth-store/auth.guard.ts +44 -0
  55. package/schematics/auth/files/store/auth-store/auth.service.ts +28 -0
  56. package/schematics/auth/files/store/auth-store/conf.ts +2 -0
  57. package/schematics/auth/files/store/auth-store/effects.ts +53 -0
  58. package/schematics/auth/files/store/auth-store/index.d.ts +13 -0
  59. package/schematics/auth/files/store/auth-store/index.ts +13 -0
  60. package/schematics/auth/files/store/auth-store/names.ts +3 -0
  61. package/schematics/auth/files/store/auth-store/reducer.ts +16 -0
  62. package/schematics/auth/files/store/auth-store/selectors.ts +51 -0
  63. package/schematics/auth/files/store/auth-store/state.ts +16 -0
  64. package/schematics/auth/files/views/login/components/logout-button/logout-button.component.ts +49 -0
  65. package/schematics/auth/files/views/login/login-main/login-main.component.html +25 -0
  66. package/schematics/auth/files/views/login/login-main/login-main.component.ts +57 -0
  67. package/schematics/auth/files/views/login/login-routing.module.ts +30 -0
  68. package/schematics/auth/files/views/login/login.module.ts +30 -0
  69. package/schematics/auth/index.d.ts +2 -0
  70. package/schematics/auth/index.js +77 -0
  71. package/schematics/auth/index.js.map +1 -0
  72. package/schematics/auth/schema.json +21 -0
  73. package/schematics/auth0/files/store/auth-store/actions.ts +21 -0
  74. package/schematics/auth0/files/store/auth-store/auth-store.module.ts +32 -0
  75. package/schematics/auth0/files/store/auth-store/auth.guard.ts +44 -0
  76. package/schematics/auth0/files/store/auth-store/authentication.service.ts +32 -0
  77. package/schematics/auth0/files/store/auth-store/conf.ts +2 -0
  78. package/schematics/auth0/files/store/auth-store/effects.ts +59 -0
  79. package/schematics/auth0/files/store/auth-store/index.d.ts +13 -0
  80. package/schematics/auth0/files/store/auth-store/index.ts +13 -0
  81. package/schematics/auth0/files/store/auth-store/login.component.ts +75 -0
  82. package/schematics/auth0/files/store/auth-store/names.ts +3 -0
  83. package/schematics/auth0/files/store/auth-store/profile.ts +12 -0
  84. package/schematics/auth0/files/store/auth-store/reducer.ts +23 -0
  85. package/schematics/auth0/files/store/auth-store/selectors.ts +24 -0
  86. package/schematics/auth0/files/store/auth-store/state.ts +11 -0
  87. package/schematics/auth0/index.d.ts +2 -0
  88. package/schematics/auth0/index.js +67 -0
  89. package/schematics/auth0/index.js.map +1 -0
  90. package/schematics/auth0/schema.json +21 -0
  91. package/schematics/collection.json +30 -0
  92. package/schematics/my-utility.d.ts +58 -0
  93. package/schematics/my-utility.js +257 -0
  94. package/schematics/my-utility.js.map +1 -0
  95. package/schematics/ng-add/files/root-store/index.d.ts +8 -0
  96. package/schematics/ng-add/files/root-store/index.ts +8 -0
  97. package/schematics/ng-add/files/root-store/root-reducer.ts +11 -0
  98. package/schematics/ng-add/files/root-store/root-store.module.ts +29 -0
  99. package/schematics/ng-add/files/root-store/router-store/actions.ts +27 -0
  100. package/schematics/ng-add/files/root-store/router-store/effects.ts +65 -0
  101. package/schematics/ng-add/files/root-store/router-store/index.d.ts +11 -0
  102. package/schematics/ng-add/files/root-store/router-store/index.ts +11 -0
  103. package/schematics/ng-add/files/root-store/router-store/pop-up-base.component.ts +83 -0
  104. package/schematics/ng-add/files/root-store/router-store/pop-up-base.module.ts +24 -0
  105. package/schematics/ng-add/files/root-store/router-store/reducer.ts +31 -0
  106. package/schematics/ng-add/files/root-store/router-store/router-store.module.ts +30 -0
  107. package/schematics/ng-add/files/root-store/router-store/selectors.ts +63 -0
  108. package/schematics/ng-add/files/root-store/router-store/state.ts +18 -0
  109. package/schematics/ng-add/files/root-store/selectors.ts +20 -0
  110. package/schematics/ng-add/files/root-store/slide-menu-store/actions.ts +11 -0
  111. package/schematics/ng-add/files/root-store/slide-menu-store/effects.ts +10 -0
  112. package/schematics/ng-add/files/root-store/slide-menu-store/index.d.ts +13 -0
  113. package/schematics/ng-add/files/root-store/slide-menu-store/index.ts +13 -0
  114. package/schematics/ng-add/files/root-store/slide-menu-store/names.ts +3 -0
  115. package/schematics/ng-add/files/root-store/slide-menu-store/operators.ts +24 -0
  116. package/schematics/ng-add/files/root-store/slide-menu-store/reducer.ts +8 -0
  117. package/schematics/ng-add/files/root-store/slide-menu-store/selectors.ts +41 -0
  118. package/schematics/ng-add/files/root-store/slide-menu-store/slide-menu-store.module.ts +27 -0
  119. package/schematics/ng-add/files/root-store/slide-menu-store/state.ts +14 -0
  120. package/schematics/ng-add/files/root-store/state.ts +5 -0
  121. package/schematics/ng-add/index.d.ts +2 -0
  122. package/schematics/ng-add/index.js +78 -0
  123. package/schematics/ng-add/index.js.map +1 -0
  124. package/schematics/ng-add/schema.json +22 -0
  125. package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-edit/__clazz@dasherize__-edit.component.html +52 -0
  126. package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-edit/__clazz@dasherize__-edit.component.ts +57 -0
  127. package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-list/__clazz@dasherize__-list.component.html +7 -0
  128. package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-list/__clazz@dasherize__-list.component.ts +50 -0
  129. package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-main/__clazz@dasherize__-main.component.html +15 -0
  130. package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-main/__clazz@dasherize__-main.component.ts +23 -0
  131. package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-routing.module.ts +36 -0
  132. package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__.module.ts +33 -0
  133. package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-edit/__clazz@dasherize__-edit.component.html +1 -0
  134. package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-edit/__clazz@dasherize__-edit.component.ts +16 -0
  135. package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-list/__clazz@dasherize__-list.component.html +1 -0
  136. package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-list/__clazz@dasherize__-list.component.ts +27 -0
  137. package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-main/__clazz@dasherize__-main.component.html +1 -0
  138. package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-main/__clazz@dasherize__-main.component.ts +18 -0
  139. package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-routing.module.ts +36 -0
  140. package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__.module.ts +26 -0
  141. package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-edit/__clazz@dasherize__-edit.component.html +38 -0
  142. package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-edit/__clazz@dasherize__-edit.component.ts +50 -0
  143. package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-list/__clazz@dasherize__-list.component.html +30 -0
  144. package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-list/__clazz@dasherize__-list.component.ts +101 -0
  145. package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-main/__clazz@dasherize__-main.component.html +12 -0
  146. package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-main/__clazz@dasherize__-main.component.ts +21 -0
  147. package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-routing.module.ts +37 -0
  148. package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__.module.ts +49 -0
  149. package/schematics/section/files/primeng/__clazz@dasherize__/components/button-create-many-test-__clazz@dasherize__.component.ts +46 -0
  150. package/schematics/section/files/primeng/__clazz@dasherize__/components/button-delete-__clazz@dasherize__.component.ts +35 -0
  151. package/schematics/section/files/primeng/__clazz@dasherize__/components/button-edit-many-test-__clazz@dasherize__.component.ts +45 -0
  152. package/schematics/section/files/primeng/__clazz@dasherize__/components/button-new-__clazz@dasherize__.component.ts +45 -0
  153. package/schematics/section/index.d.ts +2 -0
  154. package/schematics/section/index.js +56 -0
  155. package/schematics/section/index.js.map +1 -0
  156. package/schematics/section/schema.json +39 -0
  157. package/schematics/store/files/base-model/__clazz@dasherize__.ts +8 -0
  158. package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__-store.module.ts +26 -0
  159. package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__.actions.ts +9 -0
  160. package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__.effects.ts +11 -0
  161. package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__.names.ts +3 -0
  162. package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__.reducer.ts +8 -0
  163. package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__.selectors.ts +18 -0
  164. package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__.state.ts +6 -0
  165. package/schematics/store/files/base-store/__clazz@dasherize__-store/index.d.ts +13 -0
  166. package/schematics/store/files/base-store/__clazz@dasherize__-store/index.ts +13 -0
  167. package/schematics/store/files/crud-graphql/__clazz@dasherize__-store/__clazz@dasherize__.criteria.ts +39 -0
  168. package/schematics/store/files/crud-graphql/__clazz@dasherize__-store/__clazz@dasherize__.graphql +34 -0
  169. package/schematics/store/files/crud-model/__clazz@dasherize__.ts +8 -0
  170. package/schematics/store/files/crud-service/__clazz@dasherize__.service.ts +11 -0
  171. package/schematics/store/files/crud-service-graphql/__clazz@dasherize__.service.ts +16 -0
  172. package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__-store.module.ts +26 -0
  173. package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__.actions.ts +55 -0
  174. package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__.effects.ts +90 -0
  175. package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__.names.ts +3 -0
  176. package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__.reducer.ts +103 -0
  177. package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__.selectors.ts +26 -0
  178. package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__.state.ts +11 -0
  179. package/schematics/store/files/crud-store/__clazz@dasherize__-store/index.d.ts +15 -0
  180. package/schematics/store/files/crud-store/__clazz@dasherize__-store/index.ts +15 -0
  181. package/schematics/store/index.d.ts +2 -0
  182. package/schematics/store/index.js +100 -0
  183. package/schematics/store/index.js.map +1 -0
  184. package/schematics/store/schema.json +45 -0
@@ -0,0 +1,136 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { HttpClient, HttpHeaders } from '@angular/common/http';
3
+ import { map, mergeMap } from 'rxjs/operators';
4
+ import { of } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common/http";
7
+ export class BaseCrudService {
8
+ constructor(http) {
9
+ this.http = http;
10
+ this.service = '';
11
+ this.id = 'id';
12
+ this.debug = false;
13
+ this.httpOptions = () => {
14
+ return {
15
+ headers: new HttpHeaders({ 'Content-Type': 'application/json' })
16
+ };
17
+ };
18
+ this.searchMap = res => res;
19
+ this.getId = (value) => value[this.id];
20
+ }
21
+ debugMode() {
22
+ this.debug = true;
23
+ }
24
+ create(opt) {
25
+ if (typeof (console) !== 'undefined' && this.debug) {
26
+ console.log('%c BaseCrudService.create()', 'color: #777777');
27
+ console.log('%c Extended from: ' + this.constructor.name, 'color: #777777');
28
+ }
29
+ const path = !!opt && !!opt.path ? opt.path : null;
30
+ return this.http.post(`${this.getUrl(path)}`, opt.mutationParams, this.httpOptions());
31
+ }
32
+ createMany(opt) {
33
+ this.checkOptRequest(opt);
34
+ const result = opt.mutationParams.map(mutationParams => {
35
+ const optB = Object.assign(Object.assign({}, opt), { mutationParams });
36
+ return this.create(optB).pipe(map(value => (Object.assign(Object.assign({}, value), { data: [value.data] }))) // trasformo la singola risposta da {data:T} in {data:T[]}
37
+ );
38
+ });
39
+ return of(...result).pipe(mergeMap(value => value));
40
+ }
41
+ /**
42
+ * metodo introdotto per la verifica di OptRequest
43
+ * nella nuova versione è stato sostituito opt.item e opt.items con opt.mutationParams
44
+ * in modo da renderlo compatibile come nomenclatura a graphql
45
+ * @param opt
46
+ */
47
+ checkOptRequest(opt) {
48
+ if (opt && opt.hasOwnProperty('item') && !!opt.item) {
49
+ throw new Error('Error, in new versions of the library the "items" or "item" attribute have been replaced by "mutationParams". all project attributes must be renamed.');
50
+ }
51
+ if (opt && opt.hasOwnProperty('items') && !!opt.items) {
52
+ throw new Error('Error, in new versions of the library the "items" or "item" attribute have been replaced by "mutationParams". all project attributes must be renamed.');
53
+ }
54
+ return true;
55
+ }
56
+ search(value) {
57
+ if (typeof (console) !== 'undefined' && this.debug) {
58
+ console.log('BaseCrudService.search()');
59
+ console.log('Extended from: ' + this.constructor.name);
60
+ }
61
+ const url = value && value.hasOwnProperty('path') && !!value.path ? value.path.join('/') : '';
62
+ let httpOptions = this.httpOptions();
63
+ if (value && value.hasOwnProperty('queryParams') && !!value.queryParams) {
64
+ httpOptions = (Object.assign(Object.assign({}, httpOptions), { params: value.queryParams }));
65
+ }
66
+ return this.http.get(this.getUrl() + url, httpOptions).pipe(map(this.searchMap));
67
+ }
68
+ select(opt) {
69
+ if (typeof (console) !== 'undefined' && this.debug) {
70
+ console.log('%c BaseCrudService.select()', 'color: #777777');
71
+ console.log('%c Extended from: ' + this.constructor.name, 'color: #777777');
72
+ }
73
+ const id = this.getId(opt.queryParams);
74
+ const path = !!opt && !!opt.path ? opt.path : null;
75
+ return this
76
+ .http
77
+ .get(`${this.getUrl(path)}/${id}`, this.httpOptions());
78
+ }
79
+ update(opt) {
80
+ this.checkOptRequest(opt);
81
+ if (typeof (console) !== 'undefined' && this.debug) {
82
+ console.log('%c BaseCrudService.update()', 'color: #777777');
83
+ console.log('%c Extended from: ' + this.constructor.name, 'color: #777777');
84
+ }
85
+ const id = this.getId(opt.mutationParams);
86
+ const path = !!opt && !!opt.path ? opt.path : null;
87
+ return this.http.put(`${this.getUrl(path)}/${id}`, opt.mutationParams, this.httpOptions());
88
+ }
89
+ updateMany(opt) {
90
+ this.checkOptRequest(opt);
91
+ const result = opt.mutationParams.map(mutationParams => {
92
+ const optB = Object.assign(Object.assign({}, opt), { mutationParams });
93
+ return this.update(optB).pipe(map(value => (Object.assign(Object.assign({}, value), { data: [value.data] }))) // trasformo la singola risposta da {data:T} in {data:T[]}
94
+ );
95
+ });
96
+ return of(...result).pipe(mergeMap(value => value));
97
+ }
98
+ delete(opt) {
99
+ this.checkOptRequest(opt);
100
+ if (typeof (console) !== 'undefined' && this.debug) {
101
+ console.log('%c BaseCrudService.delete()', 'color: #777777');
102
+ console.log('%c Extended from: ' + this.constructor.name, 'color: #777777');
103
+ }
104
+ const id = this.getId(opt.mutationParams);
105
+ const path = !!opt && !!opt.path ? opt.path : null;
106
+ return this.http.delete(`${this.getUrl(path)}/${id}`, this.httpOptions());
107
+ }
108
+ deleteMany(opt) {
109
+ this.checkOptRequest(opt);
110
+ const result = opt.mutationParams.map(mutationParams => {
111
+ const optB = Object.assign(Object.assign({}, opt), { mutationParams });
112
+ return this.delete(optB);
113
+ });
114
+ return of(...result).pipe(mergeMap(value => value));
115
+ }
116
+ getUrl(path) {
117
+ const result = !!path ? `${this.service}/${path.join('/')}` : this.service;
118
+ if (typeof (console) !== 'undefined' && this.debug) {
119
+ console.log('%c BaseCrudService.getUrl(path?:string[]): string', 'color: #777777');
120
+ console.log('%c path: ' + path, 'color: #777777');
121
+ console.log('%c Extended from: ' + this.constructor.name, 'color: #777777');
122
+ console.log('%c result: ' + result, 'color: #777777');
123
+ }
124
+ return result;
125
+ }
126
+ }
127
+ BaseCrudService.ɵprov = i0.ɵɵdefineInjectable({ factory: function BaseCrudService_Factory() { return new BaseCrudService(i0.ɵɵinject(i1.HttpClient)); }, token: BaseCrudService, providedIn: "root" });
128
+ BaseCrudService.decorators = [
129
+ { type: Injectable, args: [{
130
+ providedIn: 'root'
131
+ },] }
132
+ ];
133
+ BaseCrudService.ctorParameters = () => [
134
+ { type: HttpClient }
135
+ ];
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jcnVkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3J4LWVudGl0eS1jcnVkL3NyYy9saWIvYmFzZS1jcnVkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBQyxHQUFHLEVBQUUsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFhLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7O0FBTXBDLE1BQU0sT0FBTyxlQUFlO0lBVTFCLFlBQW1CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFSbkMsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLE9BQUUsR0FBRyxJQUFJLENBQUM7UUFDVixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBU2QsZ0JBQVcsR0FBRyxHQUFHLEVBQUU7WUFDakIsT0FBTztnQkFDTCxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBQyxjQUFjLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQzthQUMvRCxDQUFDO1FBQ0osQ0FBQyxDQUFBO1FBeURELGNBQVMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztRQTZEdkIsVUFBSyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBNUhsQyxDQUFDO0lBTEQsU0FBUztRQUNQLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFXRCxNQUFNLENBQUMsR0FBa0I7UUFDdkIsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzdELE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUM3RTtRQUNELE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNuRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUF3QjtRQUNqQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sTUFBTSxHQUFJLEdBQUcsQ0FBQyxjQUFzQixDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUM5RCxNQUFNLElBQUksbUNBQXNCLEdBQUcsS0FBRSxjQUFjLEdBQUMsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUMzQixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxpQ0FBSyxLQUFLLEtBQUUsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFFLENBQUMsQ0FBQywwREFBMEQ7YUFDMUcsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ3ZCLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUN6QixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZUFBZSxDQUFDLEdBQVE7UUFDdEIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRTtZQUNuRCxNQUFNLElBQUksS0FBSyxDQUFDLHVKQUF1SixDQUFDLENBQUE7U0FDeks7UUFDRCxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFO1lBQ3JELE1BQU0sSUFBSSxLQUFLLENBQUMsdUpBQXVKLENBQUMsQ0FBQTtTQUN6SztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFpQjtRQUN0QixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7WUFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hEO1FBQ0QsTUFBTSxHQUFHLEdBQUcsS0FBSyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDOUYsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXJDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFDdkUsV0FBVyxHQUFHLGlDQUFLLFdBQVcsR0FBSyxFQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFDLEVBQUUsQ0FBQztTQUNsRTtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ3pELEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQ1MsQ0FBQztJQUVqQyxDQUFDO0lBSUQsTUFBTSxDQUFDLEdBQWM7UUFDbkIsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzdELE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUM3RTtRQUVELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNuRCxPQUFPLElBQUk7YUFDUixJQUFJO2FBQ0osR0FBRyxDQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQWtCO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzdELE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUM3RTtRQUNELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNuRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBd0I7UUFDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixNQUFNLE1BQU0sR0FBSSxHQUFHLENBQUMsY0FBc0IsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDOUQsTUFBTSxJQUFJLG1DQUFzQixHQUFHLEtBQUUsY0FBYyxHQUFDLENBQUM7WUFDckQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDM0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsaUNBQUssS0FBSyxLQUFFLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBRSxDQUFDLENBQUMsMERBQTBEO2FBQzFHLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUN2QixRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FDekIsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBa0I7UUFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLDZCQUE2QixFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFDN0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzdFO1FBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ25ELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQW1CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQXdCO1FBQ2pDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsTUFBTSxNQUFNLEdBQUksR0FBRyxDQUFDLGNBQXNCLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQzlELE1BQU0sSUFBSSxtQ0FBc0IsR0FBRyxLQUFFLGNBQWMsR0FBQyxDQUFDO1lBQ3JELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUN2QixRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FDekIsQ0FBQztJQUNKLENBQUM7SUFJRCxNQUFNLENBQUMsSUFBZTtRQUNwQixNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzNFLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2xELE9BQU8sQ0FBQyxHQUFHLENBQUMsbURBQW1ELEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUNuRixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsR0FBRyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFDNUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7U0FDdkQ7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzs7O1lBckpGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBUk8sVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0h0dHBDbGllbnQsIEh0dHBIZWFkZXJzfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge21hcCwgbWVyZ2VNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SUNyaXRlcmlhLCBPcHRSZXF1ZXN0LCBSZXNwb25zZX0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0lCYXNlQ3J1ZFNlcnZpY2V9IGZyb20gJy4vaWJhc2UtY3J1ZC1zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmFzZUNydWRTZXJ2aWNlPFQ+IGltcGxlbWVudHMgSUJhc2VDcnVkU2VydmljZTxUPiB7XG5cbiAgc2VydmljZSA9ICcnO1xuICBpZCA9ICdpZCc7XG4gIGRlYnVnID0gZmFsc2U7XG5cbiAgZGVidWdNb2RlKCkge1xuICAgIHRoaXMuZGVidWcgPSB0cnVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgfVxuXG4gIGh0dHBPcHRpb25zID0gKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbid9KVxuICAgIH07XG4gIH1cblxuICBjcmVhdGUob3B0OiBPcHRSZXF1ZXN0PFQ+KTogT2JzZXJ2YWJsZTxSZXNwb25zZTxUPj4ge1xuICAgIGlmICh0eXBlb2YgKGNvbnNvbGUpICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZygnJWMgQmFzZUNydWRTZXJ2aWNlLmNyZWF0ZSgpJywgJ2NvbG9yOiAjNzc3Nzc3Jyk7XG4gICAgICBjb25zb2xlLmxvZygnJWMgRXh0ZW5kZWQgZnJvbTogJyArIHRoaXMuY29uc3RydWN0b3IubmFtZSwgJ2NvbG9yOiAjNzc3Nzc3Jyk7XG4gICAgfVxuICAgIGNvbnN0IHBhdGggPSAhIW9wdCAmJiAhIW9wdC5wYXRoID8gb3B0LnBhdGggOiBudWxsO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxSZXNwb25zZTxUPj4oYCR7dGhpcy5nZXRVcmwocGF0aCl9YCwgb3B0Lm11dGF0aW9uUGFyYW1zLCB0aGlzLmh0dHBPcHRpb25zKCkpO1xuICB9XG5cbiAgY3JlYXRlTWFueShvcHQ6IE9wdFJlcXVlc3Q8VFtdIHwgVD4pOiBPYnNlcnZhYmxlPFJlc3BvbnNlPFRbXT4+IHtcbiAgICB0aGlzLmNoZWNrT3B0UmVxdWVzdChvcHQpO1xuICAgIGNvbnN0IHJlc3VsdCA9IChvcHQubXV0YXRpb25QYXJhbXMgYXMgVFtdKS5tYXAobXV0YXRpb25QYXJhbXMgPT4ge1xuICAgICAgY29uc3Qgb3B0QjogT3B0UmVxdWVzdDxUPiA9IHsuLi5vcHQsIG11dGF0aW9uUGFyYW1zfTtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZShvcHRCKS5waXBlKFxuICAgICAgICBtYXAodmFsdWUgPT4gKHsuLi52YWx1ZSwgZGF0YTogW3ZhbHVlLmRhdGFdfSkpIC8vIHRyYXNmb3JtbyBsYSBzaW5nb2xhIHJpc3Bvc3RhIGRhIHtkYXRhOlR9IGluIHtkYXRhOlRbXX1cbiAgICAgICk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG9mKC4uLnJlc3VsdCkucGlwZShcbiAgICAgIG1lcmdlTWFwKHZhbHVlID0+IHZhbHVlKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogbWV0b2RvIGludHJvZG90dG8gcGVyIGxhIHZlcmlmaWNhIGRpIE9wdFJlcXVlc3RcbiAgICogbmVsbGEgbnVvdmEgdmVyc2lvbmUgw6ggc3RhdG8gc29zdGl0dWl0byBvcHQuaXRlbSBlIG9wdC5pdGVtcyBjb24gb3B0Lm11dGF0aW9uUGFyYW1zXG4gICAqIGluIG1vZG8gZGEgcmVuZGVybG8gY29tcGF0aWJpbGUgY29tZSBub21lbmNsYXR1cmEgYSBncmFwaHFsXG4gICAqIEBwYXJhbSBvcHRcbiAgICovXG4gIGNoZWNrT3B0UmVxdWVzdChvcHQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmIChvcHQgJiYgb3B0Lmhhc093blByb3BlcnR5KCdpdGVtJykgJiYgISFvcHQuaXRlbSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciwgaW4gbmV3IHZlcnNpb25zIG9mIHRoZSBsaWJyYXJ5IHRoZSBcIml0ZW1zXCIgb3IgXCJpdGVtXCIgYXR0cmlidXRlIGhhdmUgYmVlbiByZXBsYWNlZCBieSBcIm11dGF0aW9uUGFyYW1zXCIuIGFsbCBwcm9qZWN0IGF0dHJpYnV0ZXMgbXVzdCBiZSByZW5hbWVkLicpXG4gICAgfVxuICAgIGlmIChvcHQgJiYgb3B0Lmhhc093blByb3BlcnR5KCdpdGVtcycpICYmICEhb3B0Lml0ZW1zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yLCBpbiBuZXcgdmVyc2lvbnMgb2YgdGhlIGxpYnJhcnkgdGhlIFwiaXRlbXNcIiBvciBcIml0ZW1cIiBhdHRyaWJ1dGUgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5IFwibXV0YXRpb25QYXJhbXNcIi4gYWxsIHByb2plY3QgYXR0cmlidXRlcyBtdXN0IGJlIHJlbmFtZWQuJylcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzZWFyY2godmFsdWU/OiBJQ3JpdGVyaWEpOiBPYnNlcnZhYmxlPFJlc3BvbnNlPFRbXT4+IHtcbiAgICBpZiAodHlwZW9mIChjb25zb2xlKSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5kZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coJ0Jhc2VDcnVkU2VydmljZS5zZWFyY2goKScpO1xuICAgICAgY29uc29sZS5sb2coJ0V4dGVuZGVkIGZyb206ICcgKyB0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSB2YWx1ZSAmJiB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgncGF0aCcpICYmICEhdmFsdWUucGF0aCA/IHZhbHVlLnBhdGguam9pbignLycpIDogJyc7XG4gICAgbGV0IGh0dHBPcHRpb25zID0gdGhpcy5odHRwT3B0aW9ucygpO1xuXG4gICAgaWYgKHZhbHVlICYmIHZhbHVlLmhhc093blByb3BlcnR5KCdxdWVyeVBhcmFtcycpICYmICEhdmFsdWUucXVlcnlQYXJhbXMpIHtcbiAgICAgIGh0dHBPcHRpb25zID0gKHsuLi5odHRwT3B0aW9ucywgLi4ue3BhcmFtczogdmFsdWUucXVlcnlQYXJhbXN9fSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuZ2V0VXJsKCkgKyB1cmwsIGh0dHBPcHRpb25zKS5waXBlKFxuICAgICAgbWFwKHRoaXMuc2VhcmNoTWFwKSxcbiAgICApIGFzIE9ic2VydmFibGU8UmVzcG9uc2U8VFtdPj47XG5cbiAgfVxuXG4gIHNlYXJjaE1hcCA9IHJlcyA9PiByZXM7XG5cbiAgc2VsZWN0KG9wdDogSUNyaXRlcmlhKTogT2JzZXJ2YWJsZTxSZXNwb25zZTxUPj4ge1xuICAgIGlmICh0eXBlb2YgKGNvbnNvbGUpICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZygnJWMgQmFzZUNydWRTZXJ2aWNlLnNlbGVjdCgpJywgJ2NvbG9yOiAjNzc3Nzc3Jyk7XG4gICAgICBjb25zb2xlLmxvZygnJWMgRXh0ZW5kZWQgZnJvbTogJyArIHRoaXMuY29uc3RydWN0b3IubmFtZSwgJ2NvbG9yOiAjNzc3Nzc3Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgaWQgPSB0aGlzLmdldElkKG9wdC5xdWVyeVBhcmFtcyk7XG4gICAgY29uc3QgcGF0aCA9ICEhb3B0ICYmICEhb3B0LnBhdGggPyBvcHQucGF0aCA6IG51bGw7XG4gICAgcmV0dXJuIHRoaXNcbiAgICAgIC5odHRwXG4gICAgICAuZ2V0PFJlc3BvbnNlPFQ+PihgJHt0aGlzLmdldFVybChwYXRoKX0vJHtpZH1gLCB0aGlzLmh0dHBPcHRpb25zKCkpO1xuICB9XG5cbiAgdXBkYXRlKG9wdDogT3B0UmVxdWVzdDxUPik6IE9ic2VydmFibGU8UmVzcG9uc2U8VD4+IHtcbiAgICB0aGlzLmNoZWNrT3B0UmVxdWVzdChvcHQpO1xuICAgIGlmICh0eXBlb2YgKGNvbnNvbGUpICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZygnJWMgQmFzZUNydWRTZXJ2aWNlLnVwZGF0ZSgpJywgJ2NvbG9yOiAjNzc3Nzc3Jyk7XG4gICAgICBjb25zb2xlLmxvZygnJWMgRXh0ZW5kZWQgZnJvbTogJyArIHRoaXMuY29uc3RydWN0b3IubmFtZSwgJ2NvbG9yOiAjNzc3Nzc3Jyk7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gdGhpcy5nZXRJZChvcHQubXV0YXRpb25QYXJhbXMpO1xuICAgIGNvbnN0IHBhdGggPSAhIW9wdCAmJiAhIW9wdC5wYXRoID8gb3B0LnBhdGggOiBudWxsO1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PFJlc3BvbnNlPFQ+PihgJHt0aGlzLmdldFVybChwYXRoKX0vJHtpZH1gLCBvcHQubXV0YXRpb25QYXJhbXMsIHRoaXMuaHR0cE9wdGlvbnMoKSk7XG4gIH1cblxuICB1cGRhdGVNYW55KG9wdDogT3B0UmVxdWVzdDxUW10gfCBUPik6IE9ic2VydmFibGU8UmVzcG9uc2U8VFtdPj4ge1xuICAgIHRoaXMuY2hlY2tPcHRSZXF1ZXN0KG9wdCk7XG4gICAgY29uc3QgcmVzdWx0ID0gKG9wdC5tdXRhdGlvblBhcmFtcyBhcyBUW10pLm1hcChtdXRhdGlvblBhcmFtcyA9PiB7XG4gICAgICBjb25zdCBvcHRCOiBPcHRSZXF1ZXN0PFQ+ID0gey4uLm9wdCwgbXV0YXRpb25QYXJhbXN9O1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKG9wdEIpLnBpcGUoXG4gICAgICAgIG1hcCh2YWx1ZSA9PiAoey4uLnZhbHVlLCBkYXRhOiBbdmFsdWUuZGF0YV19KSkgLy8gdHJhc2Zvcm1vIGxhIHNpbmdvbGEgcmlzcG9zdGEgZGEge2RhdGE6VH0gaW4ge2RhdGE6VFtdfVxuICAgICAgKTtcbiAgICB9KTtcbiAgICByZXR1cm4gb2YoLi4ucmVzdWx0KS5waXBlKFxuICAgICAgbWVyZ2VNYXAodmFsdWUgPT4gdmFsdWUpXG4gICAgKTtcbiAgfVxuXG4gIGRlbGV0ZShvcHQ6IE9wdFJlcXVlc3Q8VD4pOiBPYnNlcnZhYmxlPFJlc3BvbnNlPHN0cmluZz4+IHtcbiAgICB0aGlzLmNoZWNrT3B0UmVxdWVzdChvcHQpO1xuICAgIGlmICh0eXBlb2YgKGNvbnNvbGUpICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZygnJWMgQmFzZUNydWRTZXJ2aWNlLmRlbGV0ZSgpJywgJ2NvbG9yOiAjNzc3Nzc3Jyk7XG4gICAgICBjb25zb2xlLmxvZygnJWMgRXh0ZW5kZWQgZnJvbTogJyArIHRoaXMuY29uc3RydWN0b3IubmFtZSwgJ2NvbG9yOiAjNzc3Nzc3Jyk7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gdGhpcy5nZXRJZChvcHQubXV0YXRpb25QYXJhbXMpO1xuICAgIGNvbnN0IHBhdGggPSAhIW9wdCAmJiAhIW9wdC5wYXRoID8gb3B0LnBhdGggOiBudWxsO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPFJlc3BvbnNlPHN0cmluZz4+KGAke3RoaXMuZ2V0VXJsKHBhdGgpfS8ke2lkfWAsIHRoaXMuaHR0cE9wdGlvbnMoKSk7XG4gIH1cblxuICBkZWxldGVNYW55KG9wdDogT3B0UmVxdWVzdDxUW10gfCBUPik6IE9ic2VydmFibGU8UmVzcG9uc2U8c3RyaW5nW10+PiB7XG4gICAgdGhpcy5jaGVja09wdFJlcXVlc3Qob3B0KTtcbiAgICBjb25zdCByZXN1bHQgPSAob3B0Lm11dGF0aW9uUGFyYW1zIGFzIFRbXSkubWFwKG11dGF0aW9uUGFyYW1zID0+IHtcbiAgICAgIGNvbnN0IG9wdEI6IE9wdFJlcXVlc3Q8VD4gPSB7Li4ub3B0LCBtdXRhdGlvblBhcmFtc307XG4gICAgICByZXR1cm4gdGhpcy5kZWxldGUob3B0Qik7XG4gICAgfSk7XG4gICAgcmV0dXJuIG9mKC4uLnJlc3VsdCkucGlwZShcbiAgICAgIG1lcmdlTWFwKHZhbHVlID0+IHZhbHVlKVxuICAgICk7XG4gIH1cblxuICBnZXRJZCA9ICh2YWx1ZSkgPT4gdmFsdWVbdGhpcy5pZF07XG5cbiAgZ2V0VXJsKHBhdGg/OiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVzdWx0ID0gISFwYXRoID8gYCR7dGhpcy5zZXJ2aWNlfS8ke3BhdGguam9pbignLycpfWAgOiB0aGlzLnNlcnZpY2U7XG4gICAgaWYgKHR5cGVvZiAoY29uc29sZSkgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZGVidWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKCclYyBCYXNlQ3J1ZFNlcnZpY2UuZ2V0VXJsKHBhdGg/OnN0cmluZ1tdKTogc3RyaW5nJywgJ2NvbG9yOiAjNzc3Nzc3Jyk7XG4gICAgICBjb25zb2xlLmxvZygnJWMgcGF0aDogJyArIHBhdGgsICdjb2xvcjogIzc3Nzc3NycpO1xuICAgICAgY29uc29sZS5sb2coJyVjIEV4dGVuZGVkIGZyb206ICcgKyB0aGlzLmNvbnN0cnVjdG9yLm5hbWUsICdjb2xvcjogIzc3Nzc3NycpO1xuICAgICAgY29uc29sZS5sb2coJyVjIHJlc3VsdDogJyArIHJlc3VsdCwgJ2NvbG9yOiAjNzc3Nzc3Jyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxufVxuIl19
@@ -0,0 +1,14 @@
1
+ import { createEntityAdapter } from '@ngrx/entity';
2
+ import { createInitialCrudStateFactory } from './entity_state';
3
+ import { createCrudSelectorsFactory } from './state_selectors';
4
+ import { createCrudActionsFactory } from './actions';
5
+ import { createCrudReducerFactory } from './reducer';
6
+ export function createCrudEntityAdapter(options) {
7
+ const adapter = createEntityAdapter(options);
8
+ const stateFactory = createInitialCrudStateFactory();
9
+ const selectorsFactory = createCrudSelectorsFactory(adapter);
10
+ const actionsFactory = createCrudActionsFactory();
11
+ const reducerFactory = createCrudReducerFactory(adapter);
12
+ return Object.assign({}, adapter, stateFactory, selectorsFactory, actionsFactory, reducerFactory);
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlX2FkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3J4LWVudGl0eS1jcnVkL3NyYy9saWIvY3JlYXRlX2FkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ2pELE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzdELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNuRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFPbkQsTUFBTSxVQUFVLHVCQUF1QixDQUFJLE9BRzFDO0lBRUMsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUksT0FBTyxDQUFDLENBQUM7SUFDaEQsTUFBTSxZQUFZLEdBQUcsNkJBQTZCLEVBQUssQ0FBQztJQUN4RCxNQUFNLGdCQUFnQixHQUFHLDBCQUEwQixDQUFJLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sY0FBYyxHQUFHLHdCQUF3QixFQUFLLENBQUM7SUFDckQsTUFBTSxjQUFjLEdBQUcsd0JBQXdCLENBQUksT0FBTyxDQUFDLENBQUM7SUFFNUQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUNsQixFQUFFLEVBQ0YsT0FBTyxFQUNQLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGNBQWMsQ0FDZixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcGFyZXIsIEVudGl0eUNydWRBZGFwdGVyLCBJZFNlbGVjdG9yfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQge2NyZWF0ZUVudGl0eUFkYXB0ZXJ9IGZyb20gJ0BuZ3J4L2VudGl0eSc7XG5pbXBvcnQge2NyZWF0ZUluaXRpYWxDcnVkU3RhdGVGYWN0b3J5fSBmcm9tICcuL2VudGl0eV9zdGF0ZSc7XG5pbXBvcnQge2NyZWF0ZUNydWRTZWxlY3RvcnNGYWN0b3J5fSBmcm9tICcuL3N0YXRlX3NlbGVjdG9ycyc7XG5pbXBvcnQge2NyZWF0ZUNydWRBY3Rpb25zRmFjdG9yeX0gZnJvbSAnLi9hY3Rpb25zJztcbmltcG9ydCB7Y3JlYXRlQ3J1ZFJlZHVjZXJGYWN0b3J5fSBmcm9tICcuL3JlZHVjZXInO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ3J1ZEVudGl0eUFkYXB0ZXI8VD4ob3B0aW9ucz86IHtcbiAgc2VsZWN0SWQ/OiBJZFNlbGVjdG9yPFQ+O1xuICBzb3J0Q29tcGFyZXI/OiBmYWxzZSB8IENvbXBhcmVyPFQ+O1xufSk6IEVudGl0eUNydWRBZGFwdGVyPFQ+O1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ3J1ZEVudGl0eUFkYXB0ZXI8VD4ob3B0aW9ucz86IHtcbiAgc2VsZWN0SWQ/OiBJZFNlbGVjdG9yPFQ+O1xuICBzb3J0Q29tcGFyZXI/OiBmYWxzZSB8IENvbXBhcmVyPFQ+O1xufSk6IEVudGl0eUNydWRBZGFwdGVyPFQ+IHtcblxuICBjb25zdCBhZGFwdGVyID0gY3JlYXRlRW50aXR5QWRhcHRlcjxUPihvcHRpb25zKTtcbiAgY29uc3Qgc3RhdGVGYWN0b3J5ID0gY3JlYXRlSW5pdGlhbENydWRTdGF0ZUZhY3Rvcnk8VD4oKTtcbiAgY29uc3Qgc2VsZWN0b3JzRmFjdG9yeSA9IGNyZWF0ZUNydWRTZWxlY3RvcnNGYWN0b3J5PFQ+KGFkYXB0ZXIpO1xuICBjb25zdCBhY3Rpb25zRmFjdG9yeSA9IGNyZWF0ZUNydWRBY3Rpb25zRmFjdG9yeTxUPigpO1xuICBjb25zdCByZWR1Y2VyRmFjdG9yeSA9IGNyZWF0ZUNydWRSZWR1Y2VyRmFjdG9yeTxUPihhZGFwdGVyKTtcblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbihcbiAgICB7fSxcbiAgICBhZGFwdGVyLFxuICAgIHN0YXRlRmFjdG9yeSxcbiAgICBzZWxlY3RvcnNGYWN0b3J5LFxuICAgIGFjdGlvbnNGYWN0b3J5LFxuICAgIHJlZHVjZXJGYWN0b3J5XG4gICk7XG59XG4iXX0=