@ngxs/hmr-plugin 3.7.4 → 3.7.5

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 (51) hide show
  1. package/README.md +3 -3
  2. package/bundles/ngxs-hmr-plugin.umd.js +665 -665
  3. package/bundles/ngxs-hmr-plugin.umd.js.map +1 -1
  4. package/bundles/ngxs-hmr-plugin.umd.min.js.map +1 -1
  5. package/esm2015/index.js +9 -9
  6. package/esm2015/ngxs-hmr-plugin.js +8 -8
  7. package/esm2015/src/actions/hmr-before-destroy.action.js +24 -24
  8. package/esm2015/src/actions/hmr-init.action.js +24 -24
  9. package/esm2015/src/hmr-bootstrap.js +58 -58
  10. package/esm2015/src/hmr-manager.js +175 -175
  11. package/esm2015/src/internal/hmr-lifecycle.js +160 -160
  12. package/esm2015/src/internal/hmr-options-builder.js +28 -28
  13. package/esm2015/src/internal/hmr-state-context-factory.js +70 -70
  14. package/esm2015/src/internal/hmr-storage.js +35 -35
  15. package/esm2015/src/public_api.js +9 -9
  16. package/esm2015/src/symbols.js +62 -62
  17. package/esm2015/src/utils/externals.js +11 -11
  18. package/esm2015/src/utils/internals.js +22 -22
  19. package/esm5/index.js +9 -9
  20. package/esm5/ngxs-hmr-plugin.js +8 -8
  21. package/esm5/src/actions/hmr-before-destroy.action.js +27 -27
  22. package/esm5/src/actions/hmr-init.action.js +27 -27
  23. package/esm5/src/hmr-bootstrap.js +63 -63
  24. package/esm5/src/hmr-manager.js +222 -222
  25. package/esm5/src/internal/hmr-lifecycle.js +182 -182
  26. package/esm5/src/internal/hmr-options-builder.js +31 -31
  27. package/esm5/src/internal/hmr-state-context-factory.js +86 -86
  28. package/esm5/src/internal/hmr-storage.js +48 -48
  29. package/esm5/src/public_api.js +9 -9
  30. package/esm5/src/symbols.js +62 -62
  31. package/esm5/src/utils/externals.js +11 -11
  32. package/esm5/src/utils/internals.js +22 -22
  33. package/fesm2015/ngxs-hmr-plugin.js +582 -582
  34. package/fesm2015/ngxs-hmr-plugin.js.map +1 -1
  35. package/fesm5/ngxs-hmr-plugin.js +674 -674
  36. package/fesm5/ngxs-hmr-plugin.js.map +1 -1
  37. package/index.d.ts +4 -4
  38. package/ngxs-hmr-plugin.d.ts +4 -4
  39. package/package.json +1 -1
  40. package/src/actions/hmr-before-destroy.action.d.ts +6 -6
  41. package/src/actions/hmr-init.action.d.ts +6 -6
  42. package/src/hmr-bootstrap.d.ts +8 -8
  43. package/src/hmr-manager.d.ts +23 -23
  44. package/src/internal/hmr-lifecycle.d.ts +18 -18
  45. package/src/internal/hmr-options-builder.d.ts +7 -7
  46. package/src/internal/hmr-state-context-factory.d.ts +11 -11
  47. package/src/internal/hmr-storage.d.ts +6 -6
  48. package/src/public_api.d.ts +5 -5
  49. package/src/symbols.d.ts +54 -54
  50. package/src/utils/externals.d.ts +1 -1
  51. package/src/utils/internals.d.ts +2 -2
@@ -1,222 +1,222 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import * as tslib_1 from "tslib";
6
- import { ApplicationRef } from '@angular/core';
7
- import { InitialState, NgxsBootstrapper } from '@ngxs/store/internals';
8
- import { HmrStateContextFactory } from './internal/hmr-state-context-factory';
9
- import { HmrOptionBuilder } from './internal/hmr-options-builder';
10
- import { HmrInitAction } from './actions/hmr-init.action';
11
- import { HmrLifecycle } from './internal/hmr-lifecycle';
12
- /**
13
- * @template T, S
14
- */
15
- var /**
16
- * @template T, S
17
- */
18
- HmrManager = /** @class */ (function () {
19
- function HmrManager(options, storage) {
20
- this.storage = storage;
21
- this.optionsBuilder = new HmrOptionBuilder(options);
22
- }
23
- Object.defineProperty(HmrManager.prototype, "applicationRef", {
24
- get: /**
25
- * @private
26
- * @return {?}
27
- */
28
- function () {
29
- return this.ngModule.injector.get(ApplicationRef);
30
- },
31
- enumerable: true,
32
- configurable: true
33
- });
34
- Object.defineProperty(HmrManager.prototype, "bootstrap", {
35
- get: /**
36
- * @private
37
- * @return {?}
38
- */
39
- function () {
40
- return this.ngModule.injector.get(NgxsBootstrapper);
41
- },
42
- enumerable: true,
43
- configurable: true
44
- });
45
- /**
46
- * @param {?} bootstrapFn
47
- * @param {?} tick
48
- * @return {?}
49
- */
50
- HmrManager.prototype.hmrModule = /**
51
- * @param {?} bootstrapFn
52
- * @param {?} tick
53
- * @return {?}
54
- */
55
- function (bootstrapFn, tick) {
56
- return tslib_1.__awaiter(this, void 0, void 0, function () {
57
- var _a;
58
- return tslib_1.__generator(this, function (_b) {
59
- switch (_b.label) {
60
- case 0:
61
- InitialState.set(this.storage.snapshot);
62
- _a = this;
63
- return [4 /*yield*/, bootstrapFn()];
64
- case 1:
65
- _a.ngModule = _b.sent();
66
- this.context = new HmrStateContextFactory(this.ngModule);
67
- this.lifecycle = this.createLifecycle();
68
- tick();
69
- InitialState.pop();
70
- return [2 /*return*/, this.ngModule];
71
- }
72
- });
73
- });
74
- };
75
- /**
76
- * @return {?}
77
- */
78
- HmrManager.prototype.beforeModuleBootstrap = /**
79
- * @return {?}
80
- */
81
- function () {
82
- this.lifecycle.hmrNgxsStoreOnInit((/**
83
- * @param {?} ctx
84
- * @param {?} state
85
- * @return {?}
86
- */
87
- function (ctx, state) {
88
- ctx.dispatch(new HmrInitAction(state));
89
- }));
90
- };
91
- /**
92
- * @return {?}
93
- */
94
- HmrManager.prototype.beforeModuleOnDestroy = /**
95
- * @return {?}
96
- */
97
- function () {
98
- this.optionsBuilder.clearLogs();
99
- return this.lifecycle.hmrNgxsStoreBeforeOnDestroy();
100
- };
101
- /**
102
- * @return {?}
103
- */
104
- HmrManager.prototype.createNewModule = /**
105
- * @return {?}
106
- */
107
- function () {
108
- /** @type {?} */
109
- var removeOldHosts = this.cloneHostsBeforeDestroy();
110
- this.removeNgStyles();
111
- this.ngModule.destroy();
112
- removeOldHosts();
113
- };
114
- /**
115
- * @private
116
- * @return {?}
117
- */
118
- HmrManager.prototype.createLifecycle = /**
119
- * @private
120
- * @return {?}
121
- */
122
- function () {
123
- return new HmrLifecycle(this.ngModule.instance, this.bootstrap, this.storage, this.context, this.optionsBuilder);
124
- };
125
- /**
126
- * @private
127
- * @return {?}
128
- */
129
- HmrManager.prototype.cloneHostsBeforeDestroy = /**
130
- * @private
131
- * @return {?}
132
- */
133
- function () {
134
- /** @type {?} */
135
- var elements = this.applicationRef.components.map((/**
136
- * @param {?} component
137
- * @return {?}
138
- */
139
- function (component) { return component.location.nativeElement; }));
140
- /** @type {?} */
141
- var removableList = elements.map((/**
142
- * @param {?} componentNode
143
- * @return {?}
144
- */
145
- function (componentNode) {
146
- /** @type {?} */
147
- var newNode = document.createElement(componentNode.tagName);
148
- /** @type {?} */
149
- var parentNode = (/** @type {?} */ (componentNode.parentNode));
150
- /** @type {?} */
151
- var currentDisplay = newNode.style.display;
152
- newNode.style.display = 'none';
153
- parentNode.insertBefore(newNode, componentNode);
154
- return (/**
155
- * @return {?}
156
- */
157
- function () {
158
- newNode.style.display = currentDisplay;
159
- try {
160
- parentNode.removeChild(componentNode);
161
- }
162
- catch (_a) { }
163
- });
164
- }));
165
- return (/**
166
- * @return {?}
167
- */
168
- function removeOldHosts() {
169
- removableList.forEach((/**
170
- * @param {?} removeOldHost
171
- * @return {?}
172
- */
173
- function (removeOldHost) { return removeOldHost(); }));
174
- });
175
- };
176
- /**
177
- * @private
178
- * @return {?}
179
- */
180
- HmrManager.prototype.removeNgStyles = /**
181
- * @private
182
- * @return {?}
183
- */
184
- function () {
185
- /** @type {?} */
186
- var head = (/** @type {?} */ (document.head));
187
- /** @type {?} */
188
- var styles = Array.from((/** @type {?} */ (head)).querySelectorAll('style'));
189
- styles
190
- .filter((/**
191
- * @param {?} style
192
- * @return {?}
193
- */
194
- function (style) { return style.innerText.includes('_ng'); }))
195
- .map((/**
196
- * @param {?} style
197
- * @return {?}
198
- */
199
- function (style) { return (/** @type {?} */ (head)).removeChild(style); }));
200
- };
201
- return HmrManager;
202
- }());
203
- /**
204
- * @template T, S
205
- */
206
- export { HmrManager };
207
- if (false) {
208
- /** @type {?} */
209
- HmrManager.prototype.storage;
210
- /** @type {?} */
211
- HmrManager.prototype.context;
212
- /** @type {?} */
213
- HmrManager.prototype.lifecycle;
214
- /** @type {?} */
215
- HmrManager.prototype.optionsBuilder;
216
- /**
217
- * @type {?}
218
- * @private
219
- */
220
- HmrManager.prototype.ngModule;
221
- }
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG1yLW1hbmFnZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy9obXItcGx1Z2luLyIsInNvdXJjZXMiOlsic3JjL2htci1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBNkIsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBU3ZFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFJeEQ7Ozs7SUFPRSxvQkFBWSxPQUF1QixFQUFFLE9BQXNCO1FBQ3pELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsc0JBQVksc0NBQWM7Ozs7O1FBQTFCO1lBQ0UsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEQsQ0FBQzs7O09BQUE7SUFFRCxzQkFBWSxpQ0FBUzs7Ozs7UUFBckI7WUFDRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RELENBQUM7OztPQUFBOzs7Ozs7SUFFWSw4QkFBUzs7Ozs7SUFBdEIsVUFDRSxXQUFpQyxFQUNqQyxJQUFnQjs7Ozs7O3dCQUVoQixZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQ3hDLEtBQUEsSUFBSSxDQUFBO3dCQUFZLHFCQUFNLFdBQVcsRUFBRSxFQUFBOzt3QkFBbkMsR0FBSyxRQUFRLEdBQUcsU0FBbUIsQ0FBQzt3QkFDcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDekQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7d0JBRXhDLElBQUksRUFBRSxDQUFDO3dCQUVQLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDbkIsc0JBQU8sSUFBSSxDQUFDLFFBQVEsRUFBQzs7OztLQUN0Qjs7OztJQUVNLDBDQUFxQjs7O0lBQTVCO1FBQ0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0I7Ozs7O1FBQUMsVUFBQyxHQUFHLEVBQUUsS0FBSztZQUMzQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDekMsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7O0lBRU0sMENBQXFCOzs7SUFBNUI7UUFDRSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsRUFBRSxDQUFDO0lBQ3RELENBQUM7Ozs7SUFFTSxvQ0FBZTs7O0lBQXRCOztZQUNRLGNBQWMsR0FBZSxJQUFJLENBQUMsdUJBQXVCLEVBQUU7UUFDakUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEIsY0FBYyxFQUFFLENBQUM7SUFDbkIsQ0FBQzs7Ozs7SUFFTyxvQ0FBZTs7OztJQUF2QjtRQUNFLE9BQU8sSUFBSSxZQUFZLENBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUN0QixJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsY0FBYyxDQUNwQixDQUFDO0lBQ0osQ0FBQzs7Ozs7SUFFTyw0Q0FBdUI7Ozs7SUFBL0I7O1lBQ1EsUUFBUSxHQUFjLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUc7Ozs7UUFDNUQsVUFBQyxTQUFnQyxJQUFLLE9BQUEsU0FBUyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQWhDLENBQWdDLEVBQ3ZFOztZQUVLLGFBQWEsR0FBdUIsUUFBUSxDQUFDLEdBQUc7Ozs7UUFBQyxVQUFDLGFBQXNCOztnQkFDdEUsT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQzs7Z0JBQ3ZELFVBQVUsR0FBUyxtQkFBQSxhQUFhLENBQUMsVUFBVSxFQUFROztnQkFDbkQsY0FBYyxHQUFrQixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU87WUFFM0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1lBQy9CLFVBQVUsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBRWhEOzs7WUFBTztnQkFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUM7Z0JBQ3ZDLElBQUk7b0JBQ0YsVUFBVSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztpQkFDdkM7Z0JBQUMsV0FBTSxHQUFFO1lBQ1osQ0FBQyxFQUFDO1FBQ0osQ0FBQyxFQUFDO1FBRUY7OztRQUFPLFNBQVMsY0FBYztZQUM1QixhQUFhLENBQUMsT0FBTzs7OztZQUFDLFVBQUMsYUFBK0IsSUFBSyxPQUFBLGFBQWEsRUFBRSxFQUFmLENBQWUsRUFBQyxDQUFDO1FBQzlFLENBQUMsRUFBQztJQUNKLENBQUM7Ozs7O0lBRU8sbUNBQWM7Ozs7SUFBdEI7O1lBQ1EsSUFBSSxHQUFvQixtQkFBQSxRQUFRLENBQUMsSUFBSSxFQUFDOztZQUN0QyxNQUFNLEdBQXVCLEtBQUssQ0FBQyxJQUFJLENBQUMsbUJBQUEsSUFBSSxFQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFOUUsTUFBTTthQUNILE1BQU07Ozs7UUFBQyxVQUFDLEtBQXVCLElBQUssT0FBQSxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBL0IsQ0FBK0IsRUFBQzthQUNwRSxHQUFHOzs7O1FBQUMsVUFBQyxLQUF1QixJQUFLLE9BQUEsbUJBQUEsSUFBSSxFQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUF4QixDQUF3QixFQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNILGlCQUFDO0FBQUQsQ0FBQyxBQWpHRCxJQWlHQzs7Ozs7OztJQWhHQyw2QkFBOEI7O0lBQzlCLDZCQUE2Qzs7SUFDN0MsK0JBQXFDOztJQUNyQyxvQ0FBd0M7Ozs7O0lBQ3hDLDhCQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBDb21wb25lbnRSZWYsIE5nTW9kdWxlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEluaXRpYWxTdGF0ZSwgTmd4c0Jvb3RzdHJhcHBlciB9IGZyb20gJ0BuZ3hzL3N0b3JlL2ludGVybmFscyc7XHJcblxyXG5pbXBvcnQgeyBIbXJTdG9yYWdlIH0gZnJvbSAnLi9pbnRlcm5hbC9obXItc3RvcmFnZSc7XHJcbmltcG9ydCB7XHJcbiAgQm9vdHN0cmFwTW9kdWxlRm4sXHJcbiAgTmd4c0htckxpZmVDeWNsZSxcclxuICBOZ3hzSG1yT3B0aW9ucyxcclxuICBOZ3hzSG1yU25hcHNob3RcclxufSBmcm9tICcuL3N5bWJvbHMnO1xyXG5pbXBvcnQgeyBIbXJTdGF0ZUNvbnRleHRGYWN0b3J5IH0gZnJvbSAnLi9pbnRlcm5hbC9obXItc3RhdGUtY29udGV4dC1mYWN0b3J5JztcclxuaW1wb3J0IHsgSG1yT3B0aW9uQnVpbGRlciB9IGZyb20gJy4vaW50ZXJuYWwvaG1yLW9wdGlvbnMtYnVpbGRlcic7XHJcbmltcG9ydCB7IEhtckluaXRBY3Rpb24gfSBmcm9tICcuL2FjdGlvbnMvaG1yLWluaXQuYWN0aW9uJztcclxuaW1wb3J0IHsgSG1yTGlmZWN5Y2xlIH0gZnJvbSAnLi9pbnRlcm5hbC9obXItbGlmZWN5Y2xlJztcclxuXHJcbnR5cGUgT2xkSG9zdFJlbW92ZXJGbiA9ICgpID0+IHZvaWQ7XHJcblxyXG5leHBvcnQgY2xhc3MgSG1yTWFuYWdlcjxUIGV4dGVuZHMgUGFydGlhbDxOZ3hzSG1yTGlmZUN5Y2xlPFM+PiwgUyA9IE5neHNIbXJTbmFwc2hvdD4ge1xyXG4gIHB1YmxpYyBzdG9yYWdlOiBIbXJTdG9yYWdlPFM+O1xyXG4gIHB1YmxpYyBjb250ZXh0OiBIbXJTdGF0ZUNvbnRleHRGYWN0b3J5PFQsIFM+O1xyXG4gIHB1YmxpYyBsaWZlY3ljbGU6IEhtckxpZmVjeWNsZTxULCBTPjtcclxuICBwdWJsaWMgb3B0aW9uc0J1aWxkZXI6IEhtck9wdGlvbkJ1aWxkZXI7XHJcbiAgcHJpdmF0ZSBuZ01vZHVsZTogTmdNb2R1bGVSZWY8VD47XHJcblxyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE5neHNIbXJPcHRpb25zLCBzdG9yYWdlOiBIbXJTdG9yYWdlPFM+KSB7XHJcbiAgICB0aGlzLnN0b3JhZ2UgPSBzdG9yYWdlO1xyXG4gICAgdGhpcy5vcHRpb25zQnVpbGRlciA9IG5ldyBIbXJPcHRpb25CdWlsZGVyKG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgYXBwbGljYXRpb25SZWYoKTogQXBwbGljYXRpb25SZWYge1xyXG4gICAgcmV0dXJuIHRoaXMubmdNb2R1bGUuaW5qZWN0b3IuZ2V0KEFwcGxpY2F0aW9uUmVmKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGJvb3RzdHJhcCgpOiBOZ3hzQm9vdHN0cmFwcGVyIHtcclxuICAgIHJldHVybiB0aGlzLm5nTW9kdWxlLmluamVjdG9yLmdldChOZ3hzQm9vdHN0cmFwcGVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBobXJNb2R1bGUoXHJcbiAgICBib290c3RyYXBGbjogQm9vdHN0cmFwTW9kdWxlRm48VD4sXHJcbiAgICB0aWNrOiAoKSA9PiB2b2lkXHJcbiAgKTogUHJvbWlzZTxOZ01vZHVsZVJlZjxUPj4ge1xyXG4gICAgSW5pdGlhbFN0YXRlLnNldCh0aGlzLnN0b3JhZ2Uuc25hcHNob3QpO1xyXG4gICAgdGhpcy5uZ01vZHVsZSA9IGF3YWl0IGJvb3RzdHJhcEZuKCk7XHJcbiAgICB0aGlzLmNvbnRleHQgPSBuZXcgSG1yU3RhdGVDb250ZXh0RmFjdG9yeSh0aGlzLm5nTW9kdWxlKTtcclxuICAgIHRoaXMubGlmZWN5Y2xlID0gdGhpcy5jcmVhdGVMaWZlY3ljbGUoKTtcclxuXHJcbiAgICB0aWNrKCk7XHJcblxyXG4gICAgSW5pdGlhbFN0YXRlLnBvcCgpO1xyXG4gICAgcmV0dXJuIHRoaXMubmdNb2R1bGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYmVmb3JlTW9kdWxlQm9vdHN0cmFwKCk6IHZvaWQge1xyXG4gICAgdGhpcy5saWZlY3ljbGUuaG1yTmd4c1N0b3JlT25Jbml0KChjdHgsIHN0YXRlKSA9PiB7XHJcbiAgICAgIGN0eC5kaXNwYXRjaChuZXcgSG1ySW5pdEFjdGlvbihzdGF0ZSkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYmVmb3JlTW9kdWxlT25EZXN0cm95KCk6IFBhcnRpYWw8Uz4ge1xyXG4gICAgdGhpcy5vcHRpb25zQnVpbGRlci5jbGVhckxvZ3MoKTtcclxuICAgIHJldHVybiB0aGlzLmxpZmVjeWNsZS5obXJOZ3hzU3RvcmVCZWZvcmVPbkRlc3Ryb3koKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjcmVhdGVOZXdNb2R1bGUoKTogdm9pZCB7XHJcbiAgICBjb25zdCByZW1vdmVPbGRIb3N0czogKCkgPT4gdm9pZCA9IHRoaXMuY2xvbmVIb3N0c0JlZm9yZURlc3Ryb3koKTtcclxuICAgIHRoaXMucmVtb3ZlTmdTdHlsZXMoKTtcclxuICAgIHRoaXMubmdNb2R1bGUuZGVzdHJveSgpO1xyXG4gICAgcmVtb3ZlT2xkSG9zdHMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlTGlmZWN5Y2xlKCk6IEhtckxpZmVjeWNsZTxULCBTPiB7XHJcbiAgICByZXR1cm4gbmV3IEhtckxpZmVjeWNsZShcclxuICAgICAgdGhpcy5uZ01vZHVsZS5pbnN0YW5jZSxcclxuICAgICAgdGhpcy5ib290c3RyYXAsXHJcbiAgICAgIHRoaXMuc3RvcmFnZSxcclxuICAgICAgdGhpcy5jb250ZXh0LFxyXG4gICAgICB0aGlzLm9wdGlvbnNCdWlsZGVyXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbG9uZUhvc3RzQmVmb3JlRGVzdHJveSgpOiAoKSA9PiB2b2lkIHtcclxuICAgIGNvbnN0IGVsZW1lbnRzOiBFbGVtZW50W10gPSB0aGlzLmFwcGxpY2F0aW9uUmVmLmNvbXBvbmVudHMubWFwKFxyXG4gICAgICAoY29tcG9uZW50OiBDb21wb25lbnRSZWY8RWxlbWVudD4pID0+IGNvbXBvbmVudC5sb2NhdGlvbi5uYXRpdmVFbGVtZW50XHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IHJlbW92YWJsZUxpc3Q6IE9sZEhvc3RSZW1vdmVyRm5bXSA9IGVsZW1lbnRzLm1hcCgoY29tcG9uZW50Tm9kZTogRWxlbWVudCkgPT4ge1xyXG4gICAgICBjb25zdCBuZXdOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChjb21wb25lbnROb2RlLnRhZ05hbWUpO1xyXG4gICAgICBjb25zdCBwYXJlbnROb2RlOiBOb2RlID0gY29tcG9uZW50Tm9kZS5wYXJlbnROb2RlIGFzIE5vZGU7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnREaXNwbGF5OiBzdHJpbmcgfCBudWxsID0gbmV3Tm9kZS5zdHlsZS5kaXNwbGF5O1xyXG5cclxuICAgICAgbmV3Tm9kZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICBwYXJlbnROb2RlLmluc2VydEJlZm9yZShuZXdOb2RlLCBjb21wb25lbnROb2RlKTtcclxuXHJcbiAgICAgIHJldHVybiAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgbmV3Tm9kZS5zdHlsZS5kaXNwbGF5ID0gY3VycmVudERpc3BsYXk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY29tcG9uZW50Tm9kZSk7XHJcbiAgICAgICAgfSBjYXRjaCB7fVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIHJlbW92ZU9sZEhvc3RzKCk6IHZvaWQge1xyXG4gICAgICByZW1vdmFibGVMaXN0LmZvckVhY2goKHJlbW92ZU9sZEhvc3Q6IE9sZEhvc3RSZW1vdmVyRm4pID0+IHJlbW92ZU9sZEhvc3QoKSk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVOZ1N0eWxlcygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGhlYWQ6IEhUTUxIZWFkRWxlbWVudCA9IGRvY3VtZW50LmhlYWQhO1xyXG4gICAgY29uc3Qgc3R5bGVzOiBIVE1MU3R5bGVFbGVtZW50W10gPSBBcnJheS5mcm9tKGhlYWQhLnF1ZXJ5U2VsZWN0b3JBbGwoJ3N0eWxlJykpO1xyXG5cclxuICAgIHN0eWxlc1xyXG4gICAgICAuZmlsdGVyKChzdHlsZTogSFRNTFN0eWxlRWxlbWVudCkgPT4gc3R5bGUuaW5uZXJUZXh0LmluY2x1ZGVzKCdfbmcnKSlcclxuICAgICAgLm1hcCgoc3R5bGU6IEhUTUxTdHlsZUVsZW1lbnQpID0+IGhlYWQhLnJlbW92ZUNoaWxkKHN0eWxlKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import * as tslib_1 from "tslib";
6
+ import { ApplicationRef } from '@angular/core';
7
+ import { InitialState, NgxsBootstrapper } from '@ngxs/store/internals';
8
+ import { HmrStateContextFactory } from './internal/hmr-state-context-factory';
9
+ import { HmrOptionBuilder } from './internal/hmr-options-builder';
10
+ import { HmrInitAction } from './actions/hmr-init.action';
11
+ import { HmrLifecycle } from './internal/hmr-lifecycle';
12
+ /**
13
+ * @template T, S
14
+ */
15
+ var /**
16
+ * @template T, S
17
+ */
18
+ HmrManager = /** @class */ (function () {
19
+ function HmrManager(options, storage) {
20
+ this.storage = storage;
21
+ this.optionsBuilder = new HmrOptionBuilder(options);
22
+ }
23
+ Object.defineProperty(HmrManager.prototype, "applicationRef", {
24
+ get: /**
25
+ * @private
26
+ * @return {?}
27
+ */
28
+ function () {
29
+ return this.ngModule.injector.get(ApplicationRef);
30
+ },
31
+ enumerable: true,
32
+ configurable: true
33
+ });
34
+ Object.defineProperty(HmrManager.prototype, "bootstrap", {
35
+ get: /**
36
+ * @private
37
+ * @return {?}
38
+ */
39
+ function () {
40
+ return this.ngModule.injector.get(NgxsBootstrapper);
41
+ },
42
+ enumerable: true,
43
+ configurable: true
44
+ });
45
+ /**
46
+ * @param {?} bootstrapFn
47
+ * @param {?} tick
48
+ * @return {?}
49
+ */
50
+ HmrManager.prototype.hmrModule = /**
51
+ * @param {?} bootstrapFn
52
+ * @param {?} tick
53
+ * @return {?}
54
+ */
55
+ function (bootstrapFn, tick) {
56
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
57
+ var _a;
58
+ return tslib_1.__generator(this, function (_b) {
59
+ switch (_b.label) {
60
+ case 0:
61
+ InitialState.set(this.storage.snapshot);
62
+ _a = this;
63
+ return [4 /*yield*/, bootstrapFn()];
64
+ case 1:
65
+ _a.ngModule = _b.sent();
66
+ this.context = new HmrStateContextFactory(this.ngModule);
67
+ this.lifecycle = this.createLifecycle();
68
+ tick();
69
+ InitialState.pop();
70
+ return [2 /*return*/, this.ngModule];
71
+ }
72
+ });
73
+ });
74
+ };
75
+ /**
76
+ * @return {?}
77
+ */
78
+ HmrManager.prototype.beforeModuleBootstrap = /**
79
+ * @return {?}
80
+ */
81
+ function () {
82
+ this.lifecycle.hmrNgxsStoreOnInit((/**
83
+ * @param {?} ctx
84
+ * @param {?} state
85
+ * @return {?}
86
+ */
87
+ function (ctx, state) {
88
+ ctx.dispatch(new HmrInitAction(state));
89
+ }));
90
+ };
91
+ /**
92
+ * @return {?}
93
+ */
94
+ HmrManager.prototype.beforeModuleOnDestroy = /**
95
+ * @return {?}
96
+ */
97
+ function () {
98
+ this.optionsBuilder.clearLogs();
99
+ return this.lifecycle.hmrNgxsStoreBeforeOnDestroy();
100
+ };
101
+ /**
102
+ * @return {?}
103
+ */
104
+ HmrManager.prototype.createNewModule = /**
105
+ * @return {?}
106
+ */
107
+ function () {
108
+ /** @type {?} */
109
+ var removeOldHosts = this.cloneHostsBeforeDestroy();
110
+ this.removeNgStyles();
111
+ this.ngModule.destroy();
112
+ removeOldHosts();
113
+ };
114
+ /**
115
+ * @private
116
+ * @return {?}
117
+ */
118
+ HmrManager.prototype.createLifecycle = /**
119
+ * @private
120
+ * @return {?}
121
+ */
122
+ function () {
123
+ return new HmrLifecycle(this.ngModule.instance, this.bootstrap, this.storage, this.context, this.optionsBuilder);
124
+ };
125
+ /**
126
+ * @private
127
+ * @return {?}
128
+ */
129
+ HmrManager.prototype.cloneHostsBeforeDestroy = /**
130
+ * @private
131
+ * @return {?}
132
+ */
133
+ function () {
134
+ /** @type {?} */
135
+ var elements = this.applicationRef.components.map((/**
136
+ * @param {?} component
137
+ * @return {?}
138
+ */
139
+ function (component) { return component.location.nativeElement; }));
140
+ /** @type {?} */
141
+ var removableList = elements.map((/**
142
+ * @param {?} componentNode
143
+ * @return {?}
144
+ */
145
+ function (componentNode) {
146
+ /** @type {?} */
147
+ var newNode = document.createElement(componentNode.tagName);
148
+ /** @type {?} */
149
+ var parentNode = (/** @type {?} */ (componentNode.parentNode));
150
+ /** @type {?} */
151
+ var currentDisplay = newNode.style.display;
152
+ newNode.style.display = 'none';
153
+ parentNode.insertBefore(newNode, componentNode);
154
+ return (/**
155
+ * @return {?}
156
+ */
157
+ function () {
158
+ newNode.style.display = currentDisplay;
159
+ try {
160
+ parentNode.removeChild(componentNode);
161
+ }
162
+ catch (_a) { }
163
+ });
164
+ }));
165
+ return (/**
166
+ * @return {?}
167
+ */
168
+ function removeOldHosts() {
169
+ removableList.forEach((/**
170
+ * @param {?} removeOldHost
171
+ * @return {?}
172
+ */
173
+ function (removeOldHost) { return removeOldHost(); }));
174
+ });
175
+ };
176
+ /**
177
+ * @private
178
+ * @return {?}
179
+ */
180
+ HmrManager.prototype.removeNgStyles = /**
181
+ * @private
182
+ * @return {?}
183
+ */
184
+ function () {
185
+ /** @type {?} */
186
+ var head = (/** @type {?} */ (document.head));
187
+ /** @type {?} */
188
+ var styles = Array.from((/** @type {?} */ (head)).querySelectorAll('style'));
189
+ styles
190
+ .filter((/**
191
+ * @param {?} style
192
+ * @return {?}
193
+ */
194
+ function (style) { return style.innerText.includes('_ng'); }))
195
+ .map((/**
196
+ * @param {?} style
197
+ * @return {?}
198
+ */
199
+ function (style) { return (/** @type {?} */ (head)).removeChild(style); }));
200
+ };
201
+ return HmrManager;
202
+ }());
203
+ /**
204
+ * @template T, S
205
+ */
206
+ export { HmrManager };
207
+ if (false) {
208
+ /** @type {?} */
209
+ HmrManager.prototype.storage;
210
+ /** @type {?} */
211
+ HmrManager.prototype.context;
212
+ /** @type {?} */
213
+ HmrManager.prototype.lifecycle;
214
+ /** @type {?} */
215
+ HmrManager.prototype.optionsBuilder;
216
+ /**
217
+ * @type {?}
218
+ * @private
219
+ */
220
+ HmrManager.prototype.ngModule;
221
+ }
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG1yLW1hbmFnZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy9obXItcGx1Z2luLyIsInNvdXJjZXMiOlsic3JjL2htci1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBNkIsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBU3ZFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFJeEQ7Ozs7SUFPRSxvQkFBWSxPQUF1QixFQUFFLE9BQXNCO1FBQ3pELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsc0JBQVksc0NBQWM7Ozs7O1FBQTFCO1lBQ0UsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEQsQ0FBQzs7O09BQUE7SUFFRCxzQkFBWSxpQ0FBUzs7Ozs7UUFBckI7WUFDRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RELENBQUM7OztPQUFBOzs7Ozs7SUFFWSw4QkFBUzs7Ozs7SUFBdEIsVUFDRSxXQUFpQyxFQUNqQyxJQUFnQjs7Ozs7O3dCQUVoQixZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQ3hDLEtB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QUMsT0FBTyxDQUFDLENBQUM7UUFFOUUsTUFBTTthQUNILE1BQU07Ozs7UUFBQyxVQUFDLEtBQXVCLElBQUssT0FBQSxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBL0IsQ0FBK0IsRUFBQzthQUNwRSxHQUFHOzs7O1FBQUMsVUFBQyxLQUF1QixJQUFLLE9BQUEsbUJBQUEsSUFBSSxFQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUF4QixDQUF3QixFQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNILGlCQUFDO0FBQUQsQ0FBQyxBQWpHRCxJQWlHQzs7Ozs7OztJQWhHQyw2QkFBOEI7O0lBQzlCLDZCQUE2Qzs7SUFDN0MsK0JBQXFDOztJQUNyQyxvQ0FBd0M7Ozs7O0lBQ3hDLDhCQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBDb21wb25lbnRSZWYsIE5nTW9kdWxlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbml0aWFsU3RhdGUsIE5neHNCb290c3RyYXBwZXIgfSBmcm9tICdAbmd4cy9zdG9yZS9pbnRlcm5hbHMnO1xuXG5pbXBvcnQgeyBIbXJTdG9yYWdlIH0gZnJvbSAnLi9pbnRlcm5hbC9obXItc3RvcmFnZSc7XG5pbXBvcnQge1xuICBCb290c3RyYXBNb2R1bGVGbixcbiAgTmd4c0htckxpZmVDeWNsZSxcbiAgTmd4c0htck9wdGlvbnMsXG4gIE5neHNIbXJTbmFwc2hvdFxufSBmcm9tICcuL3N5bWJvbHMnO1xuaW1wb3J0IHsgSG1yU3RhdGVDb250ZXh0RmFjdG9yeSB9IGZyb20gJy4vaW50ZXJuYWwvaG1yLXN0YXRlLWNvbnRleHQtZmFjdG9yeSc7XG5pbXBvcnQgeyBIbXJPcHRpb25CdWlsZGVyIH0gZnJvbSAnLi9pbnRlcm5hbC9obXItb3B0aW9ucy1idWlsZGVyJztcbmltcG9ydCB7IEhtckluaXRBY3Rpb24gfSBmcm9tICcuL2FjdGlvbnMvaG1yLWluaXQuYWN0aW9uJztcbmltcG9ydCB7IEhtckxpZmVjeWNsZSB9IGZyb20gJy4vaW50ZXJuYWwvaG1yLWxpZmVjeWNsZSc7XG5cbnR5cGUgT2xkSG9zdFJlbW92ZXJGbiA9ICgpID0+IHZvaWQ7XG5cbmV4cG9ydCBjbGFzcyBIbXJNYW5hZ2VyPFQgZXh0ZW5kcyBQYXJ0aWFsPE5neHNIbXJMaWZlQ3ljbGU8Uz4+LCBTID0gTmd4c0htclNuYXBzaG90PiB7XG4gIHB1YmxpYyBzdG9yYWdlOiBIbXJTdG9yYWdlPFM+O1xuICBwdWJsaWMgY29udGV4dDogSG1yU3RhdGVDb250ZXh0RmFjdG9yeTxULCBTPjtcbiAgcHVibGljIGxpZmVjeWNsZTogSG1yTGlmZWN5Y2xlPFQsIFM+O1xuICBwdWJsaWMgb3B0aW9uc0J1aWxkZXI6IEhtck9wdGlvbkJ1aWxkZXI7XG4gIHByaXZhdGUgbmdNb2R1bGU6IE5nTW9kdWxlUmVmPFQ+O1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE5neHNIbXJPcHRpb25zLCBzdG9yYWdlOiBIbXJTdG9yYWdlPFM+KSB7XG4gICAgdGhpcy5zdG9yYWdlID0gc3RvcmFnZTtcbiAgICB0aGlzLm9wdGlvbnNCdWlsZGVyID0gbmV3IEhtck9wdGlvbkJ1aWxkZXIob3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGdldCBhcHBsaWNhdGlvblJlZigpOiBBcHBsaWNhdGlvblJlZiB7XG4gICAgcmV0dXJuIHRoaXMubmdNb2R1bGUuaW5qZWN0b3IuZ2V0KEFwcGxpY2F0aW9uUmVmKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGJvb3RzdHJhcCgpOiBOZ3hzQm9vdHN0cmFwcGVyIHtcbiAgICByZXR1cm4gdGhpcy5uZ01vZHVsZS5pbmplY3Rvci5nZXQoTmd4c0Jvb3RzdHJhcHBlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaG1yTW9kdWxlKFxuICAgIGJvb3RzdHJhcEZuOiBCb290c3RyYXBNb2R1bGVGbjxUPixcbiAgICB0aWNrOiAoKSA9PiB2b2lkXG4gICk6IFByb21pc2U8TmdNb2R1bGVSZWY8VD4+IHtcbiAgICBJbml0aWFsU3RhdGUuc2V0KHRoaXMuc3RvcmFnZS5zbmFwc2hvdCk7XG4gICAgdGhpcy5uZ01vZHVsZSA9IGF3YWl0IGJvb3RzdHJhcEZuKCk7XG4gICAgdGhpcy5jb250ZXh0ID0gbmV3IEhtclN0YXRlQ29udGV4dEZhY3RvcnkodGhpcy5uZ01vZHVsZSk7XG4gICAgdGhpcy5saWZlY3ljbGUgPSB0aGlzLmNyZWF0ZUxpZmVjeWNsZSgpO1xuXG4gICAgdGljaygpO1xuXG4gICAgSW5pdGlhbFN0YXRlLnBvcCgpO1xuICAgIHJldHVybiB0aGlzLm5nTW9kdWxlO1xuICB9XG5cbiAgcHVibGljIGJlZm9yZU1vZHVsZUJvb3RzdHJhcCgpOiB2b2lkIHtcbiAgICB0aGlzLmxpZmVjeWNsZS5obXJOZ3hzU3RvcmVPbkluaXQoKGN0eCwgc3RhdGUpID0+IHtcbiAgICAgIGN0eC5kaXNwYXRjaChuZXcgSG1ySW5pdEFjdGlvbihzdGF0ZSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGJlZm9yZU1vZHVsZU9uRGVzdHJveSgpOiBQYXJ0aWFsPFM+IHtcbiAgICB0aGlzLm9wdGlvbnNCdWlsZGVyLmNsZWFyTG9ncygpO1xuICAgIHJldHVybiB0aGlzLmxpZmVjeWNsZS5obXJOZ3hzU3RvcmVCZWZvcmVPbkRlc3Ryb3koKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVOZXdNb2R1bGUoKTogdm9pZCB7XG4gICAgY29uc3QgcmVtb3ZlT2xkSG9zdHM6ICgpID0+IHZvaWQgPSB0aGlzLmNsb25lSG9zdHNCZWZvcmVEZXN0cm95KCk7XG4gICAgdGhpcy5yZW1vdmVOZ1N0eWxlcygpO1xuICAgIHRoaXMubmdNb2R1bGUuZGVzdHJveSgpO1xuICAgIHJlbW92ZU9sZEhvc3RzKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUxpZmVjeWNsZSgpOiBIbXJMaWZlY3ljbGU8VCwgUz4ge1xuICAgIHJldHVybiBuZXcgSG1yTGlmZWN5Y2xlKFxuICAgICAgdGhpcy5uZ01vZHVsZS5pbnN0YW5jZSxcbiAgICAgIHRoaXMuYm9vdHN0cmFwLFxuICAgICAgdGhpcy5zdG9yYWdlLFxuICAgICAgdGhpcy5jb250ZXh0LFxuICAgICAgdGhpcy5vcHRpb25zQnVpbGRlclxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNsb25lSG9zdHNCZWZvcmVEZXN0cm95KCk6ICgpID0+IHZvaWQge1xuICAgIGNvbnN0IGVsZW1lbnRzOiBFbGVtZW50W10gPSB0aGlzLmFwcGxpY2F0aW9uUmVmLmNvbXBvbmVudHMubWFwKFxuICAgICAgKGNvbXBvbmVudDogQ29tcG9uZW50UmVmPEVsZW1lbnQ+KSA9PiBjb21wb25lbnQubG9jYXRpb24ubmF0aXZlRWxlbWVudFxuICAgICk7XG5cbiAgICBjb25zdCByZW1vdmFibGVMaXN0OiBPbGRIb3N0UmVtb3ZlckZuW10gPSBlbGVtZW50cy5tYXAoKGNvbXBvbmVudE5vZGU6IEVsZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IG5ld05vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGNvbXBvbmVudE5vZGUudGFnTmFtZSk7XG4gICAgICBjb25zdCBwYXJlbnROb2RlOiBOb2RlID0gY29tcG9uZW50Tm9kZS5wYXJlbnROb2RlIGFzIE5vZGU7XG4gICAgICBjb25zdCBjdXJyZW50RGlzcGxheTogc3RyaW5nIHwgbnVsbCA9IG5ld05vZGUuc3R5bGUuZGlzcGxheTtcblxuICAgICAgbmV3Tm9kZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobmV3Tm9kZSwgY29tcG9uZW50Tm9kZSk7XG5cbiAgICAgIHJldHVybiAoKTogdm9pZCA9PiB7XG4gICAgICAgIG5ld05vZGUuc3R5bGUuZGlzcGxheSA9IGN1cnJlbnREaXNwbGF5O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY29tcG9uZW50Tm9kZSk7XG4gICAgICAgIH0gY2F0Y2gge31cbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gcmVtb3ZlT2xkSG9zdHMoKTogdm9pZCB7XG4gICAgICByZW1vdmFibGVMaXN0LmZvckVhY2goKHJlbW92ZU9sZEhvc3Q6IE9sZEhvc3RSZW1vdmVyRm4pID0+IHJlbW92ZU9sZEhvc3QoKSk7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlTmdTdHlsZXMoKTogdm9pZCB7XG4gICAgY29uc3QgaGVhZDogSFRNTEhlYWRFbGVtZW50ID0gZG9jdW1lbnQuaGVhZCE7XG4gICAgY29uc3Qgc3R5bGVzOiBIVE1MU3R5bGVFbGVtZW50W10gPSBBcnJheS5mcm9tKGhlYWQhLnF1ZXJ5U2VsZWN0b3JBbGwoJ3N0eWxlJykpO1xuXG4gICAgc3R5bGVzXG4gICAgICAuZmlsdGVyKChzdHlsZTogSFRNTFN0eWxlRWxlbWVudCkgPT4gc3R5bGUuaW5uZXJUZXh0LmluY2x1ZGVzKCdfbmcnKSlcbiAgICAgIC5tYXAoKHN0eWxlOiBIVE1MU3R5bGVFbGVtZW50KSA9PiBoZWFkIS5yZW1vdmVDaGlsZChzdHlsZSkpO1xuICB9XG59XG4iXX0=