@solidev/data 0.0.8 → 0.1.0

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 (158) hide show
  1. package/esm2022/lib/auth/auth-interceptor.service.mjs +92 -0
  2. package/{esm2020 → esm2022}/lib/auth/auth.service.mjs +1 -1
  3. package/esm2022/lib/data/data-backend.mjs +135 -0
  4. package/esm2022/lib/data/data-model.mjs +292 -0
  5. package/esm2022/lib/dispedit/choice.pipe.mjs +81 -0
  6. package/{esm2020 → esm2022}/lib/dispedit/dispedit/dispedit.component.mjs +10 -5
  7. package/esm2022/lib/dispedit/factor.pipe.mjs +83 -0
  8. package/esm2022/lib/dispedit/factorc.pipe.mjs +101 -0
  9. package/esm2022/lib/dispedit/fkselect/fkselect.component.mjs +143 -0
  10. package/esm2022/lib/dispedit/flags/flags.component.mjs +141 -0
  11. package/esm2022/lib/dispedit/m2mselect/m2mselect.component.mjs +319 -0
  12. package/esm2022/lib/dispedit/richedit/richedit.component.mjs +127 -0
  13. package/esm2022/lib/dispedit/sdelete/sdelete.component.mjs +94 -0
  14. package/esm2022/lib/messages/message-zone/message-zone.component.mjs +58 -0
  15. package/esm2022/lib/messages/message.service.mjs +152 -0
  16. package/esm2022/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.mjs +66 -0
  17. package/esm2022/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.mjs +65 -0
  18. package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.mjs +113 -0
  19. package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.mjs +30 -0
  20. package/esm2022/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.mjs +41 -0
  21. package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.mjs +41 -0
  22. package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.mjs +22 -0
  23. package/esm2022/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.mjs +50 -0
  24. package/esm2022/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.mjs +64 -0
  25. package/esm2022/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.mjs +47 -0
  26. package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.mjs +57 -0
  27. package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.mjs +52 -0
  28. package/esm2022/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.mjs +41 -0
  29. package/esm2022/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +175 -0
  30. package/esm2022/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs +51 -0
  31. package/esm2022/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.mjs +31 -0
  32. package/esm2022/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.mjs +71 -0
  33. package/esm2022/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs +50 -0
  34. package/esm2022/lib/modellist/model-list.service.mjs +158 -0
  35. package/esm2022/lib/routing/breadcrumb/breadcrumb.component.mjs +143 -0
  36. package/esm2022/lib/updates/update/update.component.mjs +18 -0
  37. package/esm2022/lib/updates/update.service.mjs +59 -0
  38. package/esm2022/lib/uploader/ng-file-drop.directive.mjs +82 -0
  39. package/esm2022/lib/uploader/ng-file-select.directive.mjs +52 -0
  40. package/esm2022/lib/uploader/ngx-uploader.module.mjs +18 -0
  41. package/esm2022/lib/utils/tab-memory.service.mjs +81 -0
  42. package/{fesm2020 → fesm2022}/solidev-data.mjs +153 -149
  43. package/fesm2022/solidev-data.mjs.map +1 -0
  44. package/lib/dispedit/dispedit/dispedit.component.d.ts +1 -1
  45. package/lib/dispedit/fkselect/fkselect.component.d.ts +1 -1
  46. package/lib/dispedit/flags/flags.component.d.ts +1 -1
  47. package/lib/dispedit/m2mselect/m2mselect.component.d.ts +1 -1
  48. package/lib/dispedit/richedit/richedit.component.d.ts +1 -1
  49. package/lib/dispedit/sdelete/sdelete.component.d.ts +1 -1
  50. package/lib/messages/message-zone/message-zone.component.d.ts +1 -1
  51. package/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.d.ts +1 -1
  52. package/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.d.ts +1 -1
  53. package/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.d.ts +1 -1
  54. package/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.d.ts +1 -1
  55. package/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.d.ts +1 -1
  56. package/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.d.ts +1 -1
  57. package/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.d.ts +1 -1
  58. package/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.d.ts +1 -1
  59. package/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.d.ts +1 -1
  60. package/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.d.ts +1 -1
  61. package/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.d.ts +1 -1
  62. package/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.d.ts +1 -1
  63. package/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.d.ts +1 -1
  64. package/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.d.ts +1 -1
  65. package/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.d.ts +1 -1
  66. package/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.d.ts +1 -1
  67. package/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.d.ts +1 -1
  68. package/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.d.ts +1 -1
  69. package/lib/routing/breadcrumb/breadcrumb.component.d.ts +1 -1
  70. package/lib/uploader/ng-file-drop.directive.d.ts +1 -1
  71. package/lib/uploader/ng-file-select.directive.d.ts +1 -1
  72. package/package.json +7 -13
  73. package/esm2020/lib/auth/auth-interceptor.service.mjs +0 -91
  74. package/esm2020/lib/data/data-backend.mjs +0 -134
  75. package/esm2020/lib/data/data-model.mjs +0 -291
  76. package/esm2020/lib/dispedit/choice.pipe.mjs +0 -79
  77. package/esm2020/lib/dispedit/factor.pipe.mjs +0 -81
  78. package/esm2020/lib/dispedit/factorc.pipe.mjs +0 -99
  79. package/esm2020/lib/dispedit/fkselect/fkselect.component.mjs +0 -142
  80. package/esm2020/lib/dispedit/flags/flags.component.mjs +0 -140
  81. package/esm2020/lib/dispedit/m2mselect/m2mselect.component.mjs +0 -318
  82. package/esm2020/lib/dispedit/richedit/richedit.component.mjs +0 -126
  83. package/esm2020/lib/dispedit/sdelete/sdelete.component.mjs +0 -93
  84. package/esm2020/lib/messages/message-zone/message-zone.component.mjs +0 -57
  85. package/esm2020/lib/messages/message.service.mjs +0 -151
  86. package/esm2020/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.mjs +0 -65
  87. package/esm2020/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.mjs +0 -64
  88. package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.mjs +0 -112
  89. package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.mjs +0 -29
  90. package/esm2020/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.mjs +0 -40
  91. package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.mjs +0 -40
  92. package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.mjs +0 -21
  93. package/esm2020/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.mjs +0 -49
  94. package/esm2020/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.mjs +0 -63
  95. package/esm2020/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.mjs +0 -46
  96. package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.mjs +0 -56
  97. package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.mjs +0 -51
  98. package/esm2020/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.mjs +0 -40
  99. package/esm2020/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +0 -174
  100. package/esm2020/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs +0 -50
  101. package/esm2020/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.mjs +0 -30
  102. package/esm2020/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.mjs +0 -70
  103. package/esm2020/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs +0 -49
  104. package/esm2020/lib/modellist/model-list.service.mjs +0 -157
  105. package/esm2020/lib/routing/breadcrumb/breadcrumb.component.mjs +0 -142
  106. package/esm2020/lib/updates/update/update.component.mjs +0 -17
  107. package/esm2020/lib/updates/update.service.mjs +0 -58
  108. package/esm2020/lib/uploader/ng-file-drop.directive.mjs +0 -81
  109. package/esm2020/lib/uploader/ng-file-select.directive.mjs +0 -51
  110. package/esm2020/lib/uploader/ngx-uploader.module.mjs +0 -17
  111. package/esm2020/lib/utils/tab-memory.service.mjs +0 -80
  112. package/fesm2015/solidev-data.mjs +0 -6224
  113. package/fesm2015/solidev-data.mjs.map +0 -1
  114. package/fesm2020/solidev-data.mjs.map +0 -1
  115. /package/{esm2020 → esm2022}/lib/auth/jwt.mjs +0 -0
  116. /package/{esm2020 → esm2022}/lib/data/data-collection.mjs +0 -0
  117. /package/{esm2020 → esm2022}/lib/data/data-collection.mock.mjs +0 -0
  118. /package/{esm2020 → esm2022}/lib/data/data-parameters.mjs +0 -0
  119. /package/{esm2020 → esm2022}/lib/data/data-query.mjs +0 -0
  120. /package/{esm2020 → esm2022}/lib/data/data-query.mock.mjs +0 -0
  121. /package/{esm2020 → esm2022}/lib/data/fields/base.mjs +0 -0
  122. /package/{esm2020 → esm2022}/lib/data/fields/boolean.mjs +0 -0
  123. /package/{esm2020 → esm2022}/lib/data/fields/computed.mjs +0 -0
  124. /package/{esm2020 → esm2022}/lib/data/fields/datetime.mjs +0 -0
  125. /package/{esm2020 → esm2022}/lib/data/fields/index.mjs +0 -0
  126. /package/{esm2020 → esm2022}/lib/data/fields/numbers.mjs +0 -0
  127. /package/{esm2020 → esm2022}/lib/data/fields/primaryfield.mjs +0 -0
  128. /package/{esm2020 → esm2022}/lib/data/fields/relations.mjs +0 -0
  129. /package/{esm2020 → esm2022}/lib/data/fields/stringfields.mjs +0 -0
  130. /package/{esm2020 → esm2022}/lib/dispedit/dispedit/dispedit.constants.mjs +0 -0
  131. /package/{esm2020 → esm2022}/lib/modellist/model-list-fields/model-list-field-header/messages.mjs +0 -0
  132. /package/{esm2020 → esm2022}/lib/modellist/model-list-fields/model-list-fields.mjs +0 -0
  133. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/filtertypes.mjs +0 -0
  134. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.mjs +0 -0
  135. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.mjs +0 -0
  136. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.mjs +0 -0
  137. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.mjs +0 -0
  138. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetimerange-filter.mjs +0 -0
  139. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.mjs +0 -0
  140. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/adapters/ban.mjs +0 -0
  141. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.mjs +0 -0
  142. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.mjs +0 -0
  143. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.mjs +0 -0
  144. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.mjs +0 -0
  145. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.mjs +0 -0
  146. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.mjs +0 -0
  147. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/model-list-filter.mjs +0 -0
  148. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/model-list-filters.mjs +0 -0
  149. /package/{esm2020 → esm2022}/lib/modellist/model-list-paginator/model-list-paginator.mjs +0 -0
  150. /package/{esm2020 → esm2022}/lib/modellist/model-list-sorter/model-list-sorter.mjs +0 -0
  151. /package/{esm2020 → esm2022}/lib/routing/routing.mjs +0 -0
  152. /package/{esm2020 → esm2022}/lib/uploader/index.mjs +0 -0
  153. /package/{esm2020 → esm2022}/lib/uploader/interfaces.mjs +0 -0
  154. /package/{esm2020 → esm2022}/lib/uploader/ngx-uploader.class.mjs +0 -0
  155. /package/{esm2020 → esm2022}/lib/utils/slugify.mjs +0 -0
  156. /package/{esm2020 → esm2022}/lib/utils/template.mjs +0 -0
  157. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  158. /package/{esm2020 → esm2022}/solidev-data.mjs +0 -0
@@ -178,5 +178,5 @@ export declare class DispeditComponent<FT, T extends DataModel, R extends DataMo
178
178
  private _getDisplayValue;
179
179
  private _setDisplayClasses;
180
180
  static ɵfac: i0.ɵɵFactoryDeclaration<DispeditComponent<any, any, any>, [{ optional: true; }, null]>;
181
- static ɵcmp: i0.ɵɵComponentDeclaration<DispeditComponent<any, any, any>, "data-dispedit", never, { "model": "model"; "field": "field"; "form": "form"; "edit": "edit"; "editable": "editable"; "mode": "mode"; "choices": "choices"; "inputClasses": "inputClasses"; "editor": "editor"; "viewer": "viewer"; "default": "default"; "placeholder": "placeholder"; "help": "help"; "hideLabel": "hideLabel"; "queryset": "queryset"; "collection": "collection"; "display": "display"; "filter": "filter"; }, { "changed": "changed"; }, never, ["*"], true, never>;
181
+ static ɵcmp: i0.ɵɵComponentDeclaration<DispeditComponent<any, any, any>, "data-dispedit", never, { "model": { "alias": "model"; "required": false; }; "field": { "alias": "field"; "required": false; }; "form": { "alias": "form"; "required": false; }; "edit": { "alias": "edit"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "choices": { "alias": "choices"; "required": false; }; "inputClasses": { "alias": "inputClasses"; "required": false; }; "editor": { "alias": "editor"; "required": false; }; "viewer": { "alias": "viewer"; "required": false; }; "default": { "alias": "default"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "help": { "alias": "help"; "required": false; }; "hideLabel": { "alias": "hideLabel"; "required": false; }; "queryset": { "alias": "queryset"; "required": false; }; "collection": { "alias": "collection"; "required": false; }; "display": { "alias": "display"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; }, { "changed": "changed"; }, never, ["*"], true, never>;
182
182
  }
@@ -39,5 +39,5 @@ export declare class FkselectComponent<T extends DataModel, R extends DataModel>
39
39
  private _display;
40
40
  private _search;
41
41
  static ɵfac: i0.ɵɵFactoryDeclaration<FkselectComponent<any, any>, never>;
42
- static ɵcmp: i0.ɵɵComponentDeclaration<FkselectComponent<any, any>, "data-fkselect", never, { "model": "model"; "field": "field"; "edit": "edit"; "value": "value"; "queryset": "queryset"; "collection": "collection"; "update": "update"; "filter": "filter"; "mode": "mode"; "display": "display"; "search": "search"; "label": "label"; "placeholder": "placeholder"; "inputClasses": "inputClasses"; }, { "selected": "selected"; "cancelled": "cancelled"; "cleared": "cleared"; }, never, never, true, never>;
42
+ static ɵcmp: i0.ɵɵComponentDeclaration<FkselectComponent<any, any>, "data-fkselect", never, { "model": { "alias": "model"; "required": false; }; "field": { "alias": "field"; "required": false; }; "edit": { "alias": "edit"; "required": false; }; "value": { "alias": "value"; "required": false; }; "queryset": { "alias": "queryset"; "required": false; }; "collection": { "alias": "collection"; "required": false; }; "update": { "alias": "update"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "display": { "alias": "display"; "required": false; }; "search": { "alias": "search"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "inputClasses": { "alias": "inputClasses"; "required": false; }; }, { "selected": "selected"; "cancelled": "cancelled"; "cleared": "cleared"; }, never, never, true, never>;
43
43
  }
@@ -36,5 +36,5 @@ export declare class FlagsComponent<T extends DataModel> implements OnInit, OnDe
36
36
  removeFlag(flag: string): Promise<any>;
37
37
  toggleEdit(): Promise<void>;
38
38
  static ɵfac: i0.ɵɵFactoryDeclaration<FlagsComponent<any>, never>;
39
- static ɵcmp: i0.ɵɵComponentDeclaration<FlagsComponent<any>, "data-flags", never, { "model": "model"; "field": "field"; "get_flags_endpoint": "get_flags_endpoint"; "edit": "edit"; "editable": "editable"; "flags": "flags"; "free": "free"; "create": "create"; "action": "action"; }, {}, never, ["*"], true, never>;
39
+ static ɵcmp: i0.ɵɵComponentDeclaration<FlagsComponent<any>, "data-flags", never, { "model": { "alias": "model"; "required": false; }; "field": { "alias": "field"; "required": false; }; "get_flags_endpoint": { "alias": "get_flags_endpoint"; "required": false; }; "edit": { "alias": "edit"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "flags": { "alias": "flags"; "required": false; }; "free": { "alias": "free"; "required": false; }; "create": { "alias": "create"; "required": false; }; "action": { "alias": "action"; "required": false; }; }, {}, never, ["*"], true, never>;
40
40
  }
@@ -116,5 +116,5 @@ export declare class M2mselectComponent<T extends DataModel, R extends DataModel
116
116
  */
117
117
  private _search;
118
118
  static ɵfac: i0.ɵɵFactoryDeclaration<M2mselectComponent<any, any>, never>;
119
- static ɵcmp: i0.ɵɵComponentDeclaration<M2mselectComponent<any, any>, "data-m2mselect", never, { "model": "model"; "field": "field"; "edit": "edit"; "values": "values"; "queryset": "queryset"; "collection": "collection"; "filter": "filter"; "mode": "mode"; "display": "display"; "search": "search"; "label": "label"; "placeholder": "placeholder"; "emptyLabel": "emptyLabel"; "inputClasses": "inputClasses"; }, { "added": "added"; "removed": "removed"; "cancelled": "cancelled"; "cleared": "cleared"; "detailsChanged": "detailsChanged"; "changed": "changed"; }, never, never, true, never>;
119
+ static ɵcmp: i0.ɵɵComponentDeclaration<M2mselectComponent<any, any>, "data-m2mselect", never, { "model": { "alias": "model"; "required": false; }; "field": { "alias": "field"; "required": false; }; "edit": { "alias": "edit"; "required": false; }; "values": { "alias": "values"; "required": false; }; "queryset": { "alias": "queryset"; "required": false; }; "collection": { "alias": "collection"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "display": { "alias": "display"; "required": false; }; "search": { "alias": "search"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; }; "inputClasses": { "alias": "inputClasses"; "required": false; }; }, { "added": "added"; "removed": "removed"; "cancelled": "cancelled"; "cleared": "cleared"; "detailsChanged": "detailsChanged"; "changed": "changed"; }, never, never, true, never>;
120
120
  }
@@ -34,5 +34,5 @@ export declare class RicheditComponent<FT, T extends DataModel> implements OnIni
34
34
  toggleEdit(): void;
35
35
  save(): Promise<void>;
36
36
  static ɵfac: i0.ɵɵFactoryDeclaration<RicheditComponent<any, any>, never>;
37
- static ɵcmp: i0.ɵɵComponentDeclaration<RicheditComponent<any, any>, "data-richedit", never, { "model": "model"; "field": "field"; "editable": "editable"; "edit": "edit"; "mode": "mode"; "hideLabel": "hideLabel"; "hideButton": "hideButton"; "fc": "fc"; "toolbar": "toolbar"; }, { "changed": "changed"; }, never, ["*"], true, never>;
37
+ static ɵcmp: i0.ɵɵComponentDeclaration<RicheditComponent<any, any>, "data-richedit", never, { "model": { "alias": "model"; "required": false; }; "field": { "alias": "field"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "edit": { "alias": "edit"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "hideLabel": { "alias": "hideLabel"; "required": false; }; "hideButton": { "alias": "hideButton"; "required": false; }; "fc": { "alias": "fc"; "required": false; }; "toolbar": { "alias": "toolbar"; "required": false; }; }, { "changed": "changed"; }, never, ["*"], true, never>;
38
38
  }
@@ -32,5 +32,5 @@ export declare class SafeDeleteComponent<T extends DataModel> {
32
32
  checkDelete(model: DataModel): Promise<void>;
33
33
  reallyDelete(): Promise<void>;
34
34
  static ɵfac: i0.ɵɵFactoryDeclaration<SafeDeleteComponent<any>, never>;
35
- static ɵcmp: i0.ɵɵComponentDeclaration<SafeDeleteComponent<any>, "data-safe-delete", never, { "model": "model"; "service": "service"; "actionFn": "actionFn"; "checks": "checks"; "messages": "messages"; "display": "display"; }, { "deleted": "deleted"; }, never, ["*"], true, never>;
35
+ static ɵcmp: i0.ɵɵComponentDeclaration<SafeDeleteComponent<any>, "data-safe-delete", never, { "model": { "alias": "model"; "required": false; }; "service": { "alias": "service"; "required": false; }; "actionFn": { "alias": "actionFn"; "required": false; }; "checks": { "alias": "checks"; "required": false; }; "messages": { "alias": "messages"; "required": false; }; "display": { "alias": "display"; "required": false; }; }, { "deleted": "deleted"; }, never, ["*"], true, never>;
36
36
  }
@@ -10,5 +10,5 @@ export declare class MessageZoneComponent implements OnInit, OnDestroy {
10
10
  ngOnInit(): void;
11
11
  ngOnDestroy(): void;
12
12
  static ɵfac: i0.ɵɵFactoryDeclaration<MessageZoneComponent, never>;
13
- static ɵcmp: i0.ɵɵComponentDeclaration<MessageZoneComponent, "data-message-zone", never, { "filter": "filter"; }, {}, never, never, true, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<MessageZoneComponent, "data-message-zone", never, { "filter": { "alias": "filter"; "required": false; }; }, {}, never, never, true, never>;
14
14
  }
@@ -22,5 +22,5 @@ export declare class ModelListFieldHeaderComponent<T extends DataModel> implemen
22
22
  disable(): void;
23
23
  enable(f: ModelListField): void;
24
24
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelListFieldHeaderComponent<any>, never>;
25
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelListFieldHeaderComponent<any>, "data-model-list-field-header", never, { "list": "list"; "field": "field"; "sort": "sort"; "sortField": "sortField"; "menuMode": "menuMode"; "sortMode": "sortMode"; "display": "display"; }, {}, never, ["*"], true, never>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelListFieldHeaderComponent<any>, "data-model-list-field-header", never, { "list": { "alias": "list"; "required": false; }; "field": { "alias": "field"; "required": false; }; "sort": { "alias": "sort"; "required": false; }; "sortField": { "alias": "sortField"; "required": false; }; "menuMode": { "alias": "menuMode"; "required": false; }; "sortMode": { "alias": "sortMode"; "required": false; }; "display": { "alias": "display"; "required": false; }; }, {}, never, ["*"], true, never>;
26
26
  }
@@ -16,5 +16,5 @@ export declare class ModelListFieldsSelectorComponent<T extends DataModel> imple
16
16
  drop($event: CdkDragDrop<T, any>): void;
17
17
  toggle(f: ModelListField): void;
18
18
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelListFieldsSelectorComponent<any>, never>;
19
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelListFieldsSelectorComponent<any>, "data-model-list-fields-selector", never, { "list": "list"; }, {}, never, never, true, never>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelListFieldsSelectorComponent<any>, "data-model-list-fields-selector", never, { "list": { "alias": "list"; "required": false; }; }, {}, never, never, true, never>;
20
20
  }
@@ -27,5 +27,5 @@ export declare class ModelListAutocompleteFilterComponent<T extends DataModel> i
27
27
  private _display;
28
28
  private _search;
29
29
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelListAutocompleteFilterComponent<any>, never>;
30
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelListAutocompleteFilterComponent<any>, "data-model-list-autocomplete-filter", never, { "list": "list"; "filter": "filter"; "classes": "classes"; }, {}, never, never, true, never>;
30
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelListAutocompleteFilterComponent<any>, "data-model-list-autocomplete-filter", never, { "list": { "alias": "list"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "classes": { "alias": "classes"; "required": false; }; }, {}, never, never, true, never>;
31
31
  }
@@ -7,5 +7,5 @@ export declare class ModelListAutocompleteMultiFilterComponent<T extends DataMod
7
7
  protected _resetAfterSet: boolean;
8
8
  unset(value: any, desc: string): void;
9
9
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelListAutocompleteMultiFilterComponent<any>, never>;
10
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelListAutocompleteMultiFilterComponent<any>, "data-model-list-autocomplete-multi-filter", never, { "filter": "filter"; }, {}, never, never, true, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelListAutocompleteMultiFilterComponent<any>, "data-model-list-autocomplete-multi-filter", never, { "filter": { "alias": "filter"; "required": false; }; }, {}, never, never, true, never>;
11
11
  }
@@ -11,5 +11,5 @@ export declare class ModelListDateFilterComponent {
11
11
  ngOnInit(): void;
12
12
  disable(): void;
13
13
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelListDateFilterComponent, never>;
14
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelListDateFilterComponent, "data-model-list-date-filter", never, { "list": "list"; "filter": "filter"; "classes": "classes"; }, {}, never, never, true, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelListDateFilterComponent, "data-model-list-date-filter", never, { "list": { "alias": "list"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "classes": { "alias": "classes"; "required": false; }; }, {}, never, never, true, never>;
15
15
  }
@@ -11,5 +11,5 @@ export declare class ModelListDatetimeFilterComponent {
11
11
  ngOnInit(): void;
12
12
  disable(): void;
13
13
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelListDatetimeFilterComponent, never>;
14
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelListDatetimeFilterComponent, "data-model-list-datetime-filter", never, { "list": "list"; "filter": "filter"; "classes": "classes"; }, {}, never, never, true, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelListDatetimeFilterComponent, "data-model-list-datetime-filter", never, { "list": { "alias": "list"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "classes": { "alias": "classes"; "required": false; }; }, {}, never, never, true, never>;
15
15
  }
@@ -7,5 +7,5 @@ export declare class ModelListDatetimeRangeFilterComponent {
7
7
  classes: string[] | string;
8
8
  constructor();
9
9
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelListDatetimeRangeFilterComponent, never>;
10
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelListDatetimeRangeFilterComponent, "data-model-list-datetime-range-filter", never, { "list": "list"; "filter": "filter"; "classes": "classes"; }, {}, never, never, true, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelListDatetimeRangeFilterComponent, "data-model-list-datetime-range-filter", never, { "list": { "alias": "list"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "classes": { "alias": "classes"; "required": false; }; }, {}, never, never, true, never>;
11
11
  }
@@ -16,5 +16,5 @@ export declare class ModelListFlagsFilterComponent<T extends DataModel> implemen
16
16
  unset(value: any, desc: string): void;
17
17
  disable(): void;
18
18
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelListFlagsFilterComponent<any>, never>;
19
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelListFlagsFilterComponent<any>, "data-model-list-flags-filter", never, { "list": "list"; "filter": "filter"; "classes": "classes"; }, {}, never, never, true, never>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelListFlagsFilterComponent<any>, "data-model-list-flags-filter", never, { "list": { "alias": "list"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "classes": { "alias": "classes"; "required": false; }; }, {}, never, never, true, never>;
20
20
  }
@@ -21,5 +21,5 @@ export declare class ModelListGeodistanceFilterComponent implements OnInit, OnDe
21
21
  private _search;
22
22
  scrollAction($event: any): void;
23
23
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelListGeodistanceFilterComponent, never>;
24
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelListGeodistanceFilterComponent, "data-model-list-geodistance-filter", never, { "list": "list"; "filter": "filter"; "classes": "classes"; }, {}, never, never, true, never>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelListGeodistanceFilterComponent, "data-model-list-geodistance-filter", never, { "list": { "alias": "list"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "classes": { "alias": "classes"; "required": false; }; }, {}, never, never, true, never>;
25
25
  }
@@ -13,5 +13,5 @@ export declare class ModelListNumberFilterComponent implements OnInit {
13
13
  disable(): void;
14
14
  selectOp(eq: string): void;
15
15
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelListNumberFilterComponent, never>;
16
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelListNumberFilterComponent, "data-model-list-number-filter", never, { "list": "list"; "filter": "filter"; "classes": "classes"; }, {}, never, never, true, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelListNumberFilterComponent, "data-model-list-number-filter", never, { "list": { "alias": "list"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "classes": { "alias": "classes"; "required": false; }; }, {}, never, never, true, never>;
17
17
  }
@@ -13,5 +13,5 @@ export declare class ModelListSelectFilterComponent<T extends DataModel> impleme
13
13
  ngOnInit(): void;
14
14
  disable(): void;
15
15
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelListSelectFilterComponent<any>, never>;
16
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelListSelectFilterComponent<any>, "data-model-list-select-filter", never, { "list": "list"; "filter": "filter"; "classes": "classes"; }, {}, never, never, true, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelListSelectFilterComponent<any>, "data-model-list-select-filter", never, { "list": { "alias": "list"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "classes": { "alias": "classes"; "required": false; }; }, {}, never, never, true, never>;
17
17
  }
@@ -14,5 +14,5 @@ export declare class ModelListSelectMultiFilterComponent<T extends DataModel> im
14
14
  unset(value: any, desc: string): void;
15
15
  disable(): void;
16
16
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelListSelectMultiFilterComponent<any>, never>;
17
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelListSelectMultiFilterComponent<any>, "data-model-list-select-multi-filter", never, { "list": "list"; "filter": "filter"; "classes": "classes"; }, {}, never, never, true, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelListSelectMultiFilterComponent<any>, "data-model-list-select-multi-filter", never, { "list": { "alias": "list"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "classes": { "alias": "classes"; "required": false; }; }, {}, never, never, true, never>;
18
18
  }
@@ -12,5 +12,5 @@ export declare class ModelListTextFilterComponent implements OnInit {
12
12
  ngOnInit(): void;
13
13
  disable(): void;
14
14
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelListTextFilterComponent, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelListTextFilterComponent, "data-model-list-text-filter", never, { "list": "list"; "filter": "filter"; "classes": "classes"; }, {}, never, never, true, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelListTextFilterComponent, "data-model-list-text-filter", never, { "list": { "alias": "list"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "classes": { "alias": "classes"; "required": false; }; }, {}, never, never, true, never>;
16
16
  }
@@ -50,6 +50,6 @@ export declare class ModelListTreeFilterComponent<T extends DataModel> implement
50
50
  ngOnInit(): Promise<void>;
51
51
  disable(): void;
52
52
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelListTreeFilterComponent<any>, never>;
53
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelListTreeFilterComponent<any>, "data-model-list-tree-filter", never, { "list": "list"; "filter": "filter"; "classes": "classes"; }, {}, never, never, true, never>;
53
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelListTreeFilterComponent<any>, "data-model-list-tree-filter", never, { "list": { "alias": "list"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "classes": { "alias": "classes"; "required": false; }; }, {}, never, never, true, never>;
54
54
  }
55
55
  export {};
@@ -5,5 +5,5 @@ export declare class ModelListFiltersComponent {
5
5
  containerClasses: string[] | string;
6
6
  itemClasses: string[] | string;
7
7
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelListFiltersComponent, never>;
8
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelListFiltersComponent, "data-model-list-filters", never, { "list": "list"; "containerClasses": "containerClasses"; "itemClasses": "itemClasses"; }, {}, never, never, true, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelListFiltersComponent, "data-model-list-filters", never, { "list": { "alias": "list"; "required": false; }; "containerClasses": { "alias": "containerClasses"; "required": false; }; "itemClasses": { "alias": "itemClasses"; "required": false; }; }, {}, never, never, true, never>;
9
9
  }
@@ -9,5 +9,5 @@ export declare class ModelListFiltersSelectComponent {
9
9
  constructor();
10
10
  toggle(f: ModelListFilter): void;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelListFiltersSelectComponent, never>;
12
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelListFiltersSelectComponent, "data-model-list-filters-select", never, { "list": "list"; "containerClasses": "containerClasses"; "itemActiveClasses": "itemActiveClasses"; "itemInactiveClasses": "itemInactiveClasses"; }, {}, never, never, true, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelListFiltersSelectComponent, "data-model-list-filters-select", never, { "list": { "alias": "list"; "required": false; }; "containerClasses": { "alias": "containerClasses"; "required": false; }; "itemActiveClasses": { "alias": "itemActiveClasses"; "required": false; }; "itemInactiveClasses": { "alias": "itemInactiveClasses"; "required": false; }; }, {}, never, never, true, never>;
13
13
  }
@@ -19,5 +19,5 @@ export declare class ModelListPaginatorComponent<T extends DataModel> implements
19
19
  ngOnDestroy(): void;
20
20
  ngOnChanges(): void;
21
21
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelListPaginatorComponent<any>, never>;
22
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelListPaginatorComponent<any>, "data-model-list-paginator", never, { "list": "list"; "maxPages": "maxPages"; "hide": "hide"; }, {}, never, never, true, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelListPaginatorComponent<any>, "data-model-list-paginator", never, { "list": { "alias": "list"; "required": false; }; "maxPages": { "alias": "maxPages"; "required": false; }; "hide": { "alias": "hide"; "required": false; }; }, {}, never, never, true, never>;
23
23
  }
@@ -18,5 +18,5 @@ export declare class ModelListSorterComponent {
18
18
  getOrder(): number;
19
19
  cancel(): void;
20
20
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelListSorterComponent, never>;
21
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelListSorterComponent, "data-model-list-sorter", never, { "list": "list"; "field": "field"; }, {}, never, ["*"], true, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelListSorterComponent, "data-model-list-sorter", never, { "list": { "alias": "list"; "required": false; }; "field": { "alias": "field"; "required": false; }; }, {}, never, ["*"], true, never>;
22
22
  }
@@ -38,5 +38,5 @@ export declare class BreadcrumbComponent implements OnChanges, OnInit, OnDestroy
38
38
  getTitle(rdata: Partial<BaseRouteParams>, data: BaseRouteParams, u?: UrlSegment): string;
39
39
  getIcon(rdata: Partial<BaseRouteParams>, data: BaseRouteParams): string;
40
40
  static ɵfac: i0.ɵɵFactoryDeclaration<BreadcrumbComponent, never>;
41
- static ɵcmp: i0.ɵɵComponentDeclaration<BreadcrumbComponent, "data-breadcrumb", never, { "data": "data"; "icons": "icons"; }, {}, never, never, true, never>;
41
+ static ɵcmp: i0.ɵɵComponentDeclaration<BreadcrumbComponent, "data-breadcrumb", never, { "data": { "alias": "data"; "required": false; }; "icons": { "alias": "icons"; "required": false; }; }, {}, never, never, true, never>;
42
42
  }
@@ -18,5 +18,5 @@ export declare class NgFileDropDirective implements OnInit, OnDestroy {
18
18
  onDragOver(e: Event): void;
19
19
  onDragLeave(e: Event): void;
20
20
  static ɵfac: i0.ɵɵFactoryDeclaration<NgFileDropDirective, never>;
21
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgFileDropDirective, "[dataFileDrop]", never, { "options": "options"; "uploadInput": "uploadInput"; }, { "uploadOutput": "uploadOutput"; }, never, never, false, never>;
21
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgFileDropDirective, "[dataFileDrop]", never, { "options": { "alias": "options"; "required": false; }; "uploadInput": { "alias": "uploadInput"; "required": false; }; }, { "uploadOutput": "uploadOutput"; }, never, never, false, never>;
22
22
  }
@@ -15,5 +15,5 @@ export declare class NgFileSelectDirective implements OnInit, OnDestroy {
15
15
  ngOnDestroy(): void;
16
16
  fileListener: () => void;
17
17
  static ɵfac: i0.ɵɵFactoryDeclaration<NgFileSelectDirective, never>;
18
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgFileSelectDirective, "[dataFileSelect]", never, { "options": "options"; "uploadInput": "uploadInput"; }, { "uploadOutput": "uploadOutput"; }, never, never, false, never>;
18
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgFileSelectDirective, "[dataFileSelect]", never, { "options": { "alias": "options"; "required": false; }; "uploadInput": { "alias": "uploadInput"; "required": false; }; }, { "uploadOutput": "uploadOutput"; }, never, never, false, never>;
19
19
  }
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@solidev/data",
3
- "version": "0.0.8",
3
+ "version": "0.1.0",
4
4
  "peerDependencies": {
5
- "@angular/common": "^15",
6
- "@angular/core": "^15",
5
+ "@angular/common": "^16",
6
+ "@angular/core": "^16",
7
7
  "@ng-bootstrap/ng-bootstrap": "^14",
8
8
  "jwt-decode": "^3",
9
9
  "ngx-editor": "^15"
@@ -12,11 +12,7 @@
12
12
  "tslib": "^2.5"
13
13
  },
14
14
  "private": false,
15
- "module": "fesm2015/solidev-data.mjs",
16
- "es2020": "fesm2020/solidev-data.mjs",
17
- "esm2020": "esm2020/solidev-data.mjs",
18
- "fesm2020": "fesm2020/solidev-data.mjs",
19
- "fesm2015": "fesm2015/solidev-data.mjs",
15
+ "module": "fesm2022/solidev-data.mjs",
20
16
  "typings": "index.d.ts",
21
17
  "exports": {
22
18
  "./package.json": {
@@ -24,11 +20,9 @@
24
20
  },
25
21
  ".": {
26
22
  "types": "./index.d.ts",
27
- "esm2020": "./esm2020/solidev-data.mjs",
28
- "es2020": "./fesm2020/solidev-data.mjs",
29
- "es2015": "./fesm2015/solidev-data.mjs",
30
- "node": "./fesm2015/solidev-data.mjs",
31
- "default": "./fesm2020/solidev-data.mjs"
23
+ "esm2022": "./esm2022/solidev-data.mjs",
24
+ "esm": "./esm2022/solidev-data.mjs",
25
+ "default": "./fesm2022/solidev-data.mjs"
32
26
  }
33
27
  },
34
28
  "sideEffects": false
@@ -1,91 +0,0 @@
1
- import { Inject, Injectable, InjectionToken } from '@angular/core';
2
- import { HttpErrorResponse, } from '@angular/common/http';
3
- import { catchError, filter, switchMap, take, tap } from 'rxjs/operators';
4
- import { BehaviorSubject, throwError } from 'rxjs';
5
- import { DATA_API_URL } from '../data/data-parameters';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "./auth.service";
8
- export const DATA_AUTH_SERVICE = new InjectionToken('data.auth.service');
9
- export class AuthInterceptor {
10
- constructor(_auth, _apiUrl) {
11
- this._auth = _auth;
12
- this._apiUrl = _apiUrl;
13
- this._isRefreshing = false;
14
- this._refreshTokenSubject = new BehaviorSubject(null);
15
- }
16
- intercept(req, next) {
17
- if (this._auth.isAnonymous) {
18
- return next.handle(req);
19
- }
20
- if (!req.url.startsWith(this._apiUrl)) {
21
- return next.handle(req);
22
- }
23
- if (req.url.startsWith(this._auth.refreshUrl) ||
24
- req.url.startsWith(this._auth.loginUrl)) {
25
- return next.handle(req);
26
- }
27
- if (!this._auth.isAnonymous) {
28
- req = this._addToken(req, this._auth.accessToken);
29
- }
30
- return next.handle(req).pipe(catchError((error) => {
31
- console.log('Catched http error', error);
32
- if (error instanceof HttpErrorResponse && error.status === 401) {
33
- console.log('Passing to handle 401');
34
- return this._handle401Error(req, next);
35
- }
36
- else {
37
- console.log('throwing error');
38
- return throwError(error);
39
- }
40
- }));
41
- }
42
- _handle401Error(request, next) {
43
- if (!this._isRefreshing) {
44
- this._isRefreshing = true;
45
- this._refreshTokenSubject.next(null);
46
- console.log('refreshing token');
47
- return this._auth.refresh().pipe(tap((token) => console.log('Refreshed token result', token)), switchMap((token) => {
48
- if (token === null) {
49
- this._isRefreshing = false;
50
- return throwError(() => new HttpErrorResponse({
51
- error: 'Forbidden, please log in',
52
- status: 403,
53
- statusText: 'Warning',
54
- url: request.url,
55
- }));
56
- }
57
- else {
58
- this._isRefreshing = false;
59
- this._refreshTokenSubject.next(token);
60
- return next.handle(this._addToken(request, token.access));
61
- }
62
- }));
63
- }
64
- else {
65
- console.log('piping to refresh token subject');
66
- return this._refreshTokenSubject.pipe(filter((token) => token != null), take(1), switchMap((token) => next.handle(this._addToken(request, token.access))));
67
- }
68
- }
69
- _addToken(request, token) {
70
- return request.clone({
71
- setHeaders: {
72
- authorization: `Bearer ${token}`,
73
- },
74
- });
75
- }
76
- }
77
- AuthInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AuthInterceptor, deps: [{ token: DATA_AUTH_SERVICE }, { token: DATA_API_URL }], target: i0.ɵɵFactoryTarget.Injectable });
78
- AuthInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AuthInterceptor, providedIn: 'root' });
79
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AuthInterceptor, decorators: [{
80
- type: Injectable,
81
- args: [{
82
- providedIn: 'root',
83
- }]
84
- }], ctorParameters: function () { return [{ type: i1.AuthServiceBase, decorators: [{
85
- type: Inject,
86
- args: [DATA_AUTH_SERVICE]
87
- }] }, { type: undefined, decorators: [{
88
- type: Inject,
89
- args: [DATA_API_URL]
90
- }] }]; } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1pbnRlcmNlcHRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2F1dGgvYXV0aC1pbnRlcmNlcHRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsaUJBQWlCLEdBSWxCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUV2RCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FFakQsbUJBQW1CLENBQUMsQ0FBQztBQUt2QixNQUFNLE9BQU8sZUFBZTtJQUsxQixZQUNxQyxLQUFxQyxFQUMxQyxPQUFlO1FBRFYsVUFBSyxHQUFMLEtBQUssQ0FBZ0M7UUFDMUMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQU52QyxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0Qix5QkFBb0IsR0FDMUIsSUFBSSxlQUFlLENBQWlDLElBQUksQ0FBQyxDQUFDO0lBS3pELENBQUM7SUFFSixTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUNoRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsSUFDRSxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztZQUN6QyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUN2QztZQUNBLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUMzQixHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFxQixDQUFDLENBQUM7U0FDN0Q7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUMxQixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLElBQUksS0FBSyxZQUFZLGlCQUFpQixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO2dCQUM5RCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBQ3JDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDeEM7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUM5QixPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMxQjtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU8sZUFBZSxDQUFDLE9BQXlCLEVBQUUsSUFBaUI7UUFDbEUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDaEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FDOUIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQzVELFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNsQixJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO29CQUMzQixPQUFPLFVBQVUsQ0FDZixHQUFHLEVBQUUsQ0FDSCxJQUFJLGlCQUFpQixDQUFDO3dCQUNwQixLQUFLLEVBQUUsMEJBQTBCO3dCQUNqQyxNQUFNLEVBQUUsR0FBRzt3QkFDWCxVQUFVLEVBQUUsU0FBUzt3QkFDckIsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHO3FCQUNqQixDQUFDLENBQ0wsQ0FBQztpQkFDSDtxQkFBTTtvQkFDTCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztvQkFDM0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDdEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2lCQUMzRDtZQUNILENBQUMsQ0FBQyxDQUNILENBQUM7U0FDSDthQUFNO1lBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1lBQy9DLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FDbkMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEVBQ2hDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNsQixJQUFJLENBQUMsTUFBTSxDQUNULElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFHLEtBQWlDLENBQUMsTUFBTSxDQUFDLENBQ25FLENBQ0YsQ0FDRixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRU8sU0FBUyxDQUFDLE9BQXlCLEVBQUUsS0FBYTtRQUN4RCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDbkIsVUFBVSxFQUFFO2dCQUNWLGFBQWEsRUFBRSxVQUFVLEtBQUssRUFBRTthQUNqQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7OzRHQXRGVSxlQUFlLGtCQU1oQixpQkFBaUIsYUFDakIsWUFBWTtnSEFQWCxlQUFlLGNBRmQsTUFBTTsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBT0ksTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBIdHRwRXJyb3JSZXNwb25zZSxcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBJbnRlcmNlcHRvcixcbiAgSHR0cFJlcXVlc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlQmFzZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElKd3RSZWZyZXNoUmVzcG9uc2VKc29uIH0gZnJvbSAnLi9qd3QnO1xuaW1wb3J0IHsgREFUQV9BUElfVVJMIH0gZnJvbSAnLi4vZGF0YS9kYXRhLXBhcmFtZXRlcnMnO1xuXG5leHBvcnQgY29uc3QgREFUQV9BVVRIX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48XG4gIEF1dGhTZXJ2aWNlQmFzZTxhbnksIGFueSwgYW55PlxuPignZGF0YS5hdXRoLnNlcnZpY2UnKTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gIHByaXZhdGUgX2lzUmVmcmVzaGluZyA9IGZhbHNlO1xuICBwcml2YXRlIF9yZWZyZXNoVG9rZW5TdWJqZWN0ID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PElKd3RSZWZyZXNoUmVzcG9uc2VKc29uIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChEQVRBX0FVVEhfU0VSVklDRSkgcHJpdmF0ZSBfYXV0aDogQXV0aFNlcnZpY2VCYXNlPGFueSwgYW55LCBhbnk+LFxuICAgIEBJbmplY3QoREFUQV9BUElfVVJMKSBwcml2YXRlIF9hcGlVcmw6IHN0cmluZ1xuICApIHt9XG5cbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpIHtcbiAgICBpZiAodGhpcy5fYXV0aC5pc0Fub255bW91cykge1xuICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XG4gICAgfVxuICAgIGlmICghcmVxLnVybC5zdGFydHNXaXRoKHRoaXMuX2FwaVVybCkpIHtcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICByZXEudXJsLnN0YXJ0c1dpdGgodGhpcy5fYXV0aC5yZWZyZXNoVXJsKSB8fFxuICAgICAgcmVxLnVybC5zdGFydHNXaXRoKHRoaXMuX2F1dGgubG9naW5VcmwpXG4gICAgKSB7XG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9hdXRoLmlzQW5vbnltb3VzKSB7XG4gICAgICByZXEgPSB0aGlzLl9hZGRUb2tlbihyZXEsIHRoaXMuX2F1dGguYWNjZXNzVG9rZW4gYXMgc3RyaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdDYXRjaGVkIGh0dHAgZXJyb3InLCBlcnJvcik7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlICYmIGVycm9yLnN0YXR1cyA9PT0gNDAxKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ1Bhc3NpbmcgdG8gaGFuZGxlIDQwMScpO1xuICAgICAgICAgIHJldHVybiB0aGlzLl9oYW5kbGU0MDFFcnJvcihyZXEsIG5leHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCd0aHJvd2luZyBlcnJvcicpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlNDAxRXJyb3IocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpIHtcbiAgICBpZiAoIXRoaXMuX2lzUmVmcmVzaGluZykge1xuICAgICAgdGhpcy5faXNSZWZyZXNoaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3JlZnJlc2hUb2tlblN1YmplY3QubmV4dChudWxsKTtcbiAgICAgIGNvbnNvbGUubG9nKCdyZWZyZXNoaW5nIHRva2VuJyk7XG4gICAgICByZXR1cm4gdGhpcy5fYXV0aC5yZWZyZXNoKCkucGlwZShcbiAgICAgICAgdGFwKCh0b2tlbikgPT4gY29uc29sZS5sb2coJ1JlZnJlc2hlZCB0b2tlbiByZXN1bHQnLCB0b2tlbikpLFxuICAgICAgICBzd2l0Y2hNYXAoKHRva2VuKSA9PiB7XG4gICAgICAgICAgaWYgKHRva2VuID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9pc1JlZnJlc2hpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFxuICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgIG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7XG4gICAgICAgICAgICAgICAgICBlcnJvcjogJ0ZvcmJpZGRlbiwgcGxlYXNlIGxvZyBpbicsXG4gICAgICAgICAgICAgICAgICBzdGF0dXM6IDQwMyxcbiAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6ICdXYXJuaW5nJyxcbiAgICAgICAgICAgICAgICAgIHVybDogcmVxdWVzdC51cmwsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2lzUmVmcmVzaGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFRva2VuU3ViamVjdC5uZXh0KHRva2VuKTtcbiAgICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZSh0aGlzLl9hZGRUb2tlbihyZXF1ZXN0LCB0b2tlbi5hY2Nlc3MpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygncGlwaW5nIHRvIHJlZnJlc2ggdG9rZW4gc3ViamVjdCcpO1xuICAgICAgcmV0dXJuIHRoaXMuX3JlZnJlc2hUb2tlblN1YmplY3QucGlwZShcbiAgICAgICAgZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4gIT0gbnVsbCksXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHN3aXRjaE1hcCgodG9rZW4pID0+XG4gICAgICAgICAgbmV4dC5oYW5kbGUoXG4gICAgICAgICAgICB0aGlzLl9hZGRUb2tlbihyZXF1ZXN0LCAodG9rZW4gYXMgSUp3dFJlZnJlc2hSZXNwb25zZUpzb24pLmFjY2VzcylcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfYWRkVG9rZW4ocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgdG9rZW46IHN0cmluZykge1xuICAgIHJldHVybiByZXF1ZXN0LmNsb25lKHtcbiAgICAgIHNldEhlYWRlcnM6IHtcbiAgICAgICAgYXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,134 +0,0 @@
1
- import { makeStateKey } from '@angular/platform-browser';
2
- import { of } from 'rxjs';
3
- import { tap } from 'rxjs/operators';
4
- import { Inject, Injectable, Optional, PLATFORM_ID } from '@angular/core';
5
- import { isPlatformServer } from '@angular/common';
6
- import { DATA_API_URL, DATA_MAX_TRANSFERSTATE_TIME } from './data-parameters';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/common/http";
9
- import * as i2 from "@angular/platform-browser";
10
- /**
11
- * DataBackend provides CRUD operations to a REST api.
12
- * TransferState can be used if DATA_MAX_TRANSFERSTATE_TIME is set and > 0
13
- */
14
- export class DataBackend {
15
- constructor(_http, _transferState, _platform, _apiUrl, _maxTransferstateTime = 0) {
16
- this._http = _http;
17
- this._transferState = _transferState;
18
- this._platform = _platform;
19
- this._apiUrl = _apiUrl;
20
- this._maxTransferstateTime = _maxTransferstateTime;
21
- this._created = new Date();
22
- }
23
- /**
24
- * Return api url for this backend.
25
- */
26
- get apiUrl() {
27
- return this._apiUrl;
28
- }
29
- /**
30
- * Launch an action on collection.
31
- * If method is GET and collection.useTranserState & transferState are enabled,
32
- * result is stored / retrieved from transferState.
33
- *
34
- * @param collection Collection reference
35
- * @param method HTTP method
36
- * @param url full URL for action
37
- * @param body JSON body
38
- * @param params query parameters
39
- * @param headers query headers
40
- * @param responseType response type
41
- *
42
- * @return an observable of response body
43
- */
44
- action(collection, method, url, { body = undefined, params = {}, headers = {} } = {}) {
45
- if (method === 'GET') {
46
- return this._cachedGet(collection, url, { headers, params });
47
- }
48
- else {
49
- // @ts-ignore
50
- return this._http.request(method, url, {
51
- body,
52
- params,
53
- headers,
54
- });
55
- }
56
- }
57
- /**
58
- * Launch an action on collection, receiving a blob.
59
- *
60
- * @param collection Collection reference
61
- * @param method HTTP method
62
- * @param url full URL for action
63
- * @param body JSON body
64
- * @param params query parameters
65
- * @param headers query headers
66
- * @param responseType response type
67
- *
68
- * @return an observable of response body
69
- */
70
- blob(collection, method, url, { body = undefined, params = {}, headers = {} } = {}) {
71
- // @ts-ignore
72
- return this._http.request(method, url, {
73
- body,
74
- params,
75
- headers,
76
- responseType: 'blob',
77
- });
78
- }
79
- put(collection, url, { body = undefined, params = {}, headers = {} } = {}) {
80
- return this._http.put(url, body, { params, headers });
81
- }
82
- post(collection, url, { body = undefined, params = {}, headers = {} } = {}) {
83
- return this._http.post(url, body, { params, headers });
84
- }
85
- patch(collection, url, { body = undefined, params = {}, headers = {} } = {}) {
86
- return this._http.patch(url, body, { params, headers });
87
- }
88
- delete(collection, url, { params = {}, headers = {} } = {}) {
89
- return this._http.delete(url, { params, headers });
90
- }
91
- _cachedGet(collection, url, { params = {}, headers = {} } = {}) {
92
- const key = makeStateKey(url + '|' + JSON.stringify(params) + '|' + JSON.stringify(headers));
93
- if (collection.useTransferState &&
94
- this._maxTransferstateTime > 0 &&
95
- this._transferState.hasKey(key) &&
96
- new Date().getTime() - this._created.getTime() <
97
- this._maxTransferstateTime) {
98
- return of(this._transferState.get(key, null));
99
- }
100
- return this._http.get(url, { headers, params }).pipe(tap((result) => {
101
- if (collection.useTransferState &&
102
- isPlatformServer(this._platform) &&
103
- this._maxTransferstateTime > 0) {
104
- this._transferState.set(key, result);
105
- }
106
- }));
107
- }
108
- get(collection, url, { params = {}, headers = {} } = {}) {
109
- return this._cachedGet(collection, url, { headers, params });
110
- }
111
- list(collection, url, { params = {}, headers = {} } = {}) {
112
- return this._cachedGet(collection, url, { headers, params });
113
- }
114
- }
115
- DataBackend.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataBackend, deps: [{ token: i1.HttpClient }, { token: i2.TransferState }, { token: PLATFORM_ID }, { token: DATA_API_URL }, { token: DATA_MAX_TRANSFERSTATE_TIME, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
116
- DataBackend.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataBackend, providedIn: 'root' });
117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataBackend, decorators: [{
118
- type: Injectable,
119
- args: [{
120
- providedIn: 'root',
121
- }]
122
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.TransferState }, { type: undefined, decorators: [{
123
- type: Inject,
124
- args: [PLATFORM_ID]
125
- }] }, { type: undefined, decorators: [{
126
- type: Inject,
127
- args: [DATA_API_URL]
128
- }] }, { type: undefined, decorators: [{
129
- type: Optional
130
- }, {
131
- type: Inject,
132
- args: [DATA_MAX_TRANSFERSTATE_TIME]
133
- }] }]; } });
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1iYWNrZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2RhdGEvZGF0YS1iYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxZQUFZLEVBQWdCLE1BQU0sMkJBQTJCLENBQUM7QUFDdEUsT0FBTyxFQUFhLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkMsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUdqRCxPQUFPLEVBQUMsWUFBWSxFQUFFLDJCQUEyQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFFNUU7OztHQUdHO0FBSUgsTUFBTSxPQUFPLFdBQVc7SUFHdEIsWUFDVSxLQUFpQixFQUNqQixjQUE2QixFQUNSLFNBQWMsRUFDYixPQUFlLEVBR3JDLHdCQUFnQyxDQUFDO1FBTmpDLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDUixjQUFTLEdBQVQsU0FBUyxDQUFLO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUdyQywwQkFBcUIsR0FBckIscUJBQXFCLENBQVk7UUFUbkMsYUFBUSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFVM0IsQ0FBQztJQUVKOztPQUVHO0lBQ0gsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNJLE1BQU0sQ0FDWCxVQUF5QixFQUN6QixNQUFtRCxFQUNuRCxHQUFXLEVBQ1gsRUFBRSxJQUFJLEdBQUcsU0FBUyxFQUFFLE1BQU0s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V0FBVyxjQUZWLE1BQU07MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQU9JLE1BQU07MkJBQUMsV0FBVzs7MEJBQ2xCLE1BQU07MkJBQUMsWUFBWTs7MEJBQ25CLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge21ha2VTdGF0ZUtleSwgVHJhbnNmZXJTdGF0ZX0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7dGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIFBMQVRGT1JNX0lEfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7aXNQbGF0Zm9ybVNlcnZlcn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q29sbGVjdGlvbiwgSUFjdGlvblBhcmFtc30gZnJvbSAnLi9kYXRhLWNvbGxlY3Rpb24nO1xuaW1wb3J0IHtEYXRhTW9kZWx9IGZyb20gJy4vZGF0YS1tb2RlbCc7XG5pbXBvcnQge0RBVEFfQVBJX1VSTCwgREFUQV9NQVhfVFJBTlNGRVJTVEFURV9USU1FfSBmcm9tICcuL2RhdGEtcGFyYW1ldGVycyc7XG5cbi8qKlxuICogRGF0YUJhY2tlbmQgcHJvdmlkZXMgQ1JVRCBvcGVyYXRpb25zIHRvIGEgUkVTVCBhcGkuXG4gKiBUcmFuc2ZlclN0YXRlIGNhbiBiZSB1c2VkIGlmIERBVEFfTUFYX1RSQU5TRkVSU1RBVEVfVElNRSBpcyBzZXQgYW5kID4gMFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YUJhY2tlbmQge1xuICBwcml2YXRlIF9jcmVhdGVkID0gbmV3IERhdGUoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgX3RyYW5zZmVyU3RhdGU6IFRyYW5zZmVyU3RhdGUsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBfcGxhdGZvcm06IGFueSxcbiAgICBASW5qZWN0KERBVEFfQVBJX1VSTCkgcHJpdmF0ZSBfYXBpVXJsOiBzdHJpbmcsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KERBVEFfTUFYX1RSQU5TRkVSU1RBVEVfVElNRSlcbiAgICBwcml2YXRlIF9tYXhUcmFuc2ZlcnN0YXRlVGltZTogbnVtYmVyID0gMFxuICApIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhcGkgdXJsIGZvciB0aGlzIGJhY2tlbmQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFwaVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcGlVcmw7XG4gIH1cblxuICAvKipcbiAgICogTGF1bmNoIGFuIGFjdGlvbiBvbiBjb2xsZWN0aW9uLlxuICAgKiBJZiBtZXRob2QgaXMgR0VUIGFuZCBjb2xsZWN0aW9uLnVzZVRyYW5zZXJTdGF0ZSAmIHRyYW5zZmVyU3RhdGUgYXJlIGVuYWJsZWQsXG4gICAqIHJlc3VsdCBpcyBzdG9yZWQgLyByZXRyaWV2ZWQgZnJvbSB0cmFuc2ZlclN0YXRlLlxuICAgKlxuICAgKiBAcGFyYW0gY29sbGVjdGlvbiBDb2xsZWN0aW9uIHJlZmVyZW5jZVxuICAgKiBAcGFyYW0gbWV0aG9kIEhUVFAgbWV0aG9kXG4gICAqIEBwYXJhbSB1cmwgZnVsbCBVUkwgZm9yIGFjdGlvblxuICAgKiBAcGFyYW0gYm9keSBKU09OIGJvZHlcbiAgICogQHBhcmFtIHBhcmFtcyBxdWVyeSBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSBoZWFkZXJzIHF1ZXJ5IGhlYWRlcnNcbiAgICogQHBhcmFtIHJlc3BvbnNlVHlwZSByZXNwb25zZSB0eXBlXG4gICAqXG4gICAqIEByZXR1cm4gYW4gb2JzZXJ2YWJsZSBvZiByZXNwb25zZSBib2R5XG4gICAqL1xuICBwdWJsaWMgYWN0aW9uPFQgZXh0ZW5kcyBEYXRhTW9kZWwsIFJUPihcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPFQ+LFxuICAgIG1ldGhvZDogJ0dFVCcgfCAnUE9TVCcgfCAnUFVUJyB8ICdQQVRDSCcgfCAnREVMRVRFJyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICB7IGJvZHkgPSB1bmRlZmluZWQsIHBhcmFtcyA9IHt9LCBoZWFkZXJzID0ge30gfTogSUFjdGlvblBhcmFtcyA9IHt9XG4gICk6IE9ic2VydmFibGU8UlQ+IHtcbiAgICBpZiAobWV0aG9kID09PSAnR0VUJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlZEdldChjb2xsZWN0aW9uLCB1cmwsIHsgaGVhZGVycywgcGFyYW1zIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5yZXF1ZXN0PFJUPihtZXRob2QsIHVybCwge1xuICAgICAgICBib2R5LFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTGF1bmNoIGFuIGFjdGlvbiBvbiBjb2xsZWN0aW9uLCByZWNlaXZpbmcgYSBibG9iLlxuICAgKlxuICAgKiBAcGFyYW0gY29sbGVjdGlvbiBDb2xsZWN0aW9uIHJlZmVyZW5jZVxuICAgKiBAcGFyYW0gbWV0aG9kIEhUVFAgbWV0aG9kXG4gICAqIEBwYXJhbSB1cmwgZnVsbCBVUkwgZm9yIGFjdGlvblxuICAgKiBAcGFyYW0gYm9keSBKU09OIGJvZHlcbiAgICogQHBhcmFtIHBhcmFtcyBxdWVyeSBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSBoZWFkZXJzIHF1ZXJ5IGhlYWRlcnNcbiAgICogQHBhcmFtIHJlc3BvbnNlVHlwZSByZXNwb25zZSB0eXBlXG4gICAqXG4gICAqIEByZXR1cm4gYW4gb2JzZXJ2YWJsZSBvZiByZXNwb25zZSBib2R5XG4gICAqL1xuICBwdWJsaWMgYmxvYjxUIGV4dGVuZHMgRGF0YU1vZGVsPihcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPFQ+LFxuICAgIG1ldGhvZDogJ0dFVCcgfCAnUE9TVCcgfCAnUFVUJyB8ICdQQVRDSCcgfCAnREVMRVRFJyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICB7IGJvZHkgPSB1bmRlZmluZWQsIHBhcmFtcyA9IHt9LCBoZWFkZXJzID0ge30gfTogSUFjdGlvblBhcmFtcyA9IHt9XG4gICk6IE9ic2VydmFibGU8QmxvYj4ge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gdGhpcy5faHR0cC5yZXF1ZXN0KG1ldGhvZCwgdXJsLCB7XG4gICAgICBib2R5LFxuICAgICAgcGFyYW1zLFxuICAgICAgaGVhZGVycyxcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHB1dDxUIGV4dGVuZHMgRGF0YU1vZGVsPihcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPFQ+LFxuICAgIHVybDogc3RyaW5nLFxuICAgIHsgYm9keSA9IHVuZGVmaW5lZCwgcGFyYW1zID0ge30sIGhlYWRlcnMgPSB7fSB9OiBJQWN0aW9uUGFyYW1zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0PFQ+KHVybCwgYm9keSwgeyBwYXJhbXMsIGhlYWRlcnMgfSk7XG4gIH1cblxuICBwdWJsaWMgcG9zdDxUIGV4dGVuZHMgRGF0YU1vZGVsPihcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPFQ+LFxuICAgIHVybDogc3RyaW5nLFxuICAgIHsgYm9keSA9IHVuZGVmaW5lZCwgcGFyYW1zID0ge30sIGhlYWRlcnMgPSB7fSB9OiBJQWN0aW9uUGFyYW1zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxQYXJ0aWFsPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxQYXJ0aWFsPFQ+Pih1cmwsIGJvZHksIHsgcGFyYW1zLCBoZWFkZXJzIH0pO1xuICB9XG5cbiAgcHVibGljIHBhdGNoPFQgZXh0ZW5kcyBEYXRhTW9kZWw+KFxuICAgIGNvbGxlY3Rpb246IENvbGxlY3Rpb248VD4sXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgeyBib2R5ID0gdW5kZWZpbmVkLCBwYXJhbXMgPSB7fSwgaGVhZGVycyA9IHt9IH06IElBY3Rpb25QYXJhbXMgPSB7fVxuICApOiBPYnNlcnZhYmxlPFBhcnRpYWw8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wYXRjaDxQYXJ0aWFsPFQ+Pih1cmwsIGJvZHksIHsgcGFyYW1zLCBoZWFkZXJzIH0pO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZTxUIGV4dGVuZHMgRGF0YU1vZGVsLCBSPihcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPFQ+LFxuICAgIHVybDogc3RyaW5nLFxuICAgIHsgcGFyYW1zID0ge30sIGhlYWRlcnMgPSB7fSB9OiBJQWN0aW9uUGFyYW1zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxSPiB7XG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlPFI+KHVybCwgeyBwYXJhbXMsIGhlYWRlcnMgfSk7XG4gIH1cblxuICBwdWJsaWMgX2NhY2hlZEdldDxUIGV4dGVuZHMgRGF0YU1vZGVsLCBSVD4oXG4gICAgY29sbGVjdGlvbjogQ29sbGVjdGlvbjxUPixcbiAgICB1cmw6IHN0cmluZyxcbiAgICB7IHBhcmFtcyA9IHt9LCBoZWFkZXJzID0ge30gfTogSUFjdGlvblBhcmFtcyA9IHt9XG4gICk6IE9ic2VydmFibGU8UlQ+IHtcbiAgICBjb25zdCBrZXkgPSBtYWtlU3RhdGVLZXk8UlQ+KFxuICAgICAgdXJsICsgJ3wnICsgSlNPTi5zdHJpbmdpZnkocGFyYW1zKSArICd8JyArIEpTT04uc3RyaW5naWZ5KGhlYWRlcnMpXG4gICAgKTtcbiAgICBpZiAoXG4gICAgICBjb2xsZWN0aW9uLnVzZVRyYW5zZmVyU3RhdGUgJiZcbiAgICAgIHRoaXMuX21heFRyYW5zZmVyc3RhdGVUaW1lID4gMCAmJlxuICAgICAgdGhpcy5fdHJhbnNmZXJTdGF0ZS5oYXNLZXkoa2V5KSAmJlxuICAgICAgbmV3IERhdGUoKS5nZXRUaW1lKCkgLSB0aGlzLl9jcmVhdGVkLmdldFRpbWUoKSA8XG4gICAgICAgIHRoaXMuX21heFRyYW5zZmVyc3RhdGVUaW1lXG4gICAgKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy5fdHJhbnNmZXJTdGF0ZS5nZXQ8UlQgfCBudWxsPihrZXksIG51bGwpIGFzIFJUKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJUPih1cmwsIHsgaGVhZGVycywgcGFyYW1zIH0pLnBpcGUoXG4gICAgICB0YXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgY29sbGVjdGlvbi51c2VUcmFuc2ZlclN0YXRlICYmXG4gICAgICAgICAgaXNQbGF0Zm9ybVNlcnZlcih0aGlzLl9wbGF0Zm9ybSkgJiZcbiAgICAgICAgICB0aGlzLl9tYXhUcmFuc2ZlcnN0YXRlVGltZSA+IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5fdHJhbnNmZXJTdGF0ZS5zZXQ8UlQ+KGtleSwgcmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldDxUIGV4dGVuZHMgRGF0YU1vZGVsPihcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPFQ+LFxuICAgIHVybDogc3RyaW5nLFxuICAgIHsgcGFyYW1zID0ge30sIGhlYWRlcnMgPSB7fSB9OiBJQWN0aW9uUGFyYW1zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxQYXJ0aWFsPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlZEdldDxULCBQYXJ0aWFsPFQ+Pihjb2xsZWN0aW9uLCB1cmwsIHsgaGVhZGVycywgcGFyYW1zIH0pO1xuICB9XG5cbiAgcHVibGljIGxpc3Q8VCBleHRlbmRzIERhdGFNb2RlbD4oXG4gICAgY29sbGVjdGlvbjogQ29sbGVjdGlvbjxUPixcbiAgICB1cmw6IHN0cmluZyxcbiAgICB7IHBhcmFtcyA9IHt9LCBoZWFkZXJzID0ge30gfTogSUFjdGlvblBhcmFtcyA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlZEdldDxULCBQYXJ0aWFsPFQ+Pihjb2xsZWN0aW9uLCB1cmwsIHsgaGVhZGVycywgcGFyYW1zIH0pO1xuICB9XG59XG4iXX0=