@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,58 +1,58 @@
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 { HmrManager } from './hmr-manager';
7
- import { HmrStorage } from './internal/hmr-storage';
8
- import { markApplicationAsHmrReloaded, setHmrReloadedTo } from './utils/internals';
9
- /**
10
- * Hot Module Replacement plugin for NGXS
11
- * @deprecated As of Angular v10, HMR is no longer supported and will be deprecated.
12
- * More information [here](https://www.ngxs.io/plugins/hmr).
13
- * @template T
14
- * @param {?} webpackModule
15
- * @param {?} bootstrapFn
16
- * @param {?=} options
17
- * @return {?}
18
- */
19
- export function hmr(webpackModule, bootstrapFn, options = {}) {
20
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
21
- if (!webpackModule.hot) {
22
- console.error('Are you using the --hmr flag for ng serve?');
23
- throw new Error('HMR is not enabled for webpack-dev-server!');
24
- }
25
- markApplicationAsHmrReloaded();
26
- webpackModule.hot.accept();
27
- /**
28
- * @record
29
- */
30
- function HmrDataTransfer() { }
31
- if (false) {
32
- /** @type {?|undefined} */
33
- HmrDataTransfer.prototype.snapshot;
34
- }
35
- /** @type {?} */
36
- const dataTransfer = webpackModule.hot.data || {};
37
- /** @type {?} */
38
- const storage = new HmrStorage(dataTransfer.snapshot || {});
39
- /** @type {?} */
40
- const manager = new HmrManager(options, storage);
41
- return yield manager.hmrModule(bootstrapFn, (/**
42
- * @return {?}
43
- */
44
- () => {
45
- manager.beforeModuleBootstrap();
46
- (/** @type {?} */ (webpackModule.hot)).dispose((/**
47
- * @param {?} data
48
- * @return {?}
49
- */
50
- (data) => {
51
- setHmrReloadedTo(true);
52
- data.snapshot = manager.beforeModuleOnDestroy();
53
- manager.createNewModule();
54
- }));
55
- }));
56
- });
57
- }
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG1yLWJvb3RzdHJhcC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL2htci1wbHVnaW4vIiwic291cmNlcyI6WyJzcmMvaG1yLWJvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7Ozs7OztBQU9uRixNQUFNLFVBQWdCLEdBQUcsQ0FDdkIsYUFBNEIsRUFDNUIsV0FBaUMsRUFDakMsVUFBMEIsRUFBRTs7UUFFNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUU7WUFDdEIsT0FBTyxDQUFDLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1lBQzVELE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztTQUMvRDtRQUVELDRCQUE0QixFQUFFLENBQUM7UUFFL0IsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQzs7OztRQUUzQiw4QkFFQzs7O1lBREMsbUNBQWU7OztjQUVYLFlBQVksR0FBb0IsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRTs7Y0FFNUQsT0FBTyxHQUFHLElBQUksVUFBVSxDQUFNLFlBQVksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDOztjQUMxRCxPQUFPLEdBQUcsSUFBSSxVQUFVLENBQUksT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUVuRCxPQUFPLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXOzs7UUFBRSxHQUFHLEVBQUU7WUFDL0MsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFFaEMsbUJBQUEsYUFBYSxDQUFDLEdBQUcsRUFBQyxDQUFDLE9BQU87Ozs7WUFBQyxDQUFDLElBQXFCLEVBQUUsRUFBRTtnQkFDbkQsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQ2hELE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM1QixDQUFDLEVBQUMsQ0FBQztRQUNMLENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSG1yTWFuYWdlciB9IGZyb20gJy4vaG1yLW1hbmFnZXInO1xyXG5pbXBvcnQgeyBCb290c3RyYXBNb2R1bGVGbiwgTmd4c0htck9wdGlvbnMsIFdlYnBhY2tNb2R1bGUgfSBmcm9tICcuL3N5bWJvbHMnO1xyXG5pbXBvcnQgeyBIbXJTdG9yYWdlIH0gZnJvbSAnLi9pbnRlcm5hbC9obXItc3RvcmFnZSc7XHJcbmltcG9ydCB7IG1hcmtBcHBsaWNhdGlvbkFzSG1yUmVsb2FkZWQsIHNldEhtclJlbG9hZGVkVG8gfSBmcm9tICcuL3V0aWxzL2ludGVybmFscyc7XHJcblxyXG4vKipcclxuICogSG90IE1vZHVsZSBSZXBsYWNlbWVudCBwbHVnaW4gZm9yIE5HWFNcclxuICogQGRlcHJlY2F0ZWQgQXMgb2YgQW5ndWxhciB2MTAsIEhNUiBpcyBubyBsb25nZXIgc3VwcG9ydGVkIGFuZCB3aWxsIGJlIGRlcHJlY2F0ZWQuXHJcbiAqIE1vcmUgaW5mb3JtYXRpb24gW2hlcmVdKGh0dHBzOi8vd3d3Lm5neHMuaW8vcGx1Z2lucy9obXIpLlxyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhtcjxUPihcclxuICB3ZWJwYWNrTW9kdWxlOiBXZWJwYWNrTW9kdWxlLFxyXG4gIGJvb3RzdHJhcEZuOiBCb290c3RyYXBNb2R1bGVGbjxUPixcclxuICBvcHRpb25zOiBOZ3hzSG1yT3B0aW9ucyA9IHt9XHJcbik6IFByb21pc2U8TmdNb2R1bGVSZWY8VD4+IHtcclxuICBpZiAoIXdlYnBhY2tNb2R1bGUuaG90KSB7XHJcbiAgICBjb25zb2xlLmVycm9yKCdBcmUgeW91IHVzaW5nIHRoZSAtLWhtciBmbGFnIGZvciBuZyBzZXJ2ZT8nKTtcclxuICAgIHRocm93IG5ldyBFcnJvcignSE1SIGlzIG5vdCBlbmFibGVkIGZvciB3ZWJwYWNrLWRldi1zZXJ2ZXIhJyk7XHJcbiAgfVxyXG5cclxuICBtYXJrQXBwbGljYXRpb25Bc0htclJlbG9hZGVkKCk7XHJcblxyXG4gIHdlYnBhY2tNb2R1bGUuaG90LmFjY2VwdCgpO1xyXG5cclxuICBpbnRlcmZhY2UgSG1yRGF0YVRyYW5zZmVyIHtcclxuICAgIHNuYXBzaG90PzogYW55O1xyXG4gIH1cclxuICBjb25zdCBkYXRhVHJhbnNmZXI6IEhtckRhdGFUcmFuc2ZlciA9IHdlYnBhY2tNb2R1bGUuaG90LmRhdGEgfHwge307XHJcblxyXG4gIGNvbnN0IHN0b3JhZ2UgPSBuZXcgSG1yU3RvcmFnZTxhbnk+KGRhdGFUcmFuc2Zlci5zbmFwc2hvdCB8fCB7fSk7XHJcbiAgY29uc3QgbWFuYWdlciA9IG5ldyBIbXJNYW5hZ2VyPFQ+KG9wdGlvbnMsIHN0b3JhZ2UpO1xyXG5cclxuICByZXR1cm4gYXdhaXQgbWFuYWdlci5obXJNb2R1bGUoYm9vdHN0cmFwRm4sICgpID0+IHtcclxuICAgIG1hbmFnZXIuYmVmb3JlTW9kdWxlQm9vdHN0cmFwKCk7XHJcblxyXG4gICAgd2VicGFja01vZHVsZS5ob3QhLmRpc3Bvc2UoKGRhdGE6IEhtckRhdGFUcmFuc2ZlcikgPT4ge1xyXG4gICAgICBzZXRIbXJSZWxvYWRlZFRvKHRydWUpO1xyXG4gICAgICBkYXRhLnNuYXBzaG90ID0gbWFuYWdlci5iZWZvcmVNb2R1bGVPbkRlc3Ryb3koKTtcclxuICAgICAgbWFuYWdlci5jcmVhdGVOZXdNb2R1bGUoKTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG59XHJcbiJdfQ==
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 { HmrManager } from './hmr-manager';
7
+ import { HmrStorage } from './internal/hmr-storage';
8
+ import { markApplicationAsHmrReloaded, setHmrReloadedTo } from './utils/internals';
9
+ /**
10
+ * Hot Module Replacement plugin for NGXS
11
+ * @deprecated As of Angular v10, HMR is no longer supported and will be deprecated.
12
+ * More information [here](https://www.ngxs.io/plugins/hmr).
13
+ * @template T
14
+ * @param {?} webpackModule
15
+ * @param {?} bootstrapFn
16
+ * @param {?=} options
17
+ * @return {?}
18
+ */
19
+ export function hmr(webpackModule, bootstrapFn, options = {}) {
20
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
21
+ if (!webpackModule.hot) {
22
+ console.error('Are you using the --hmr flag for ng serve?');
23
+ throw new Error('HMR is not enabled for webpack-dev-server!');
24
+ }
25
+ markApplicationAsHmrReloaded();
26
+ webpackModule.hot.accept();
27
+ /**
28
+ * @record
29
+ */
30
+ function HmrDataTransfer() { }
31
+ if (false) {
32
+ /** @type {?|undefined} */
33
+ HmrDataTransfer.prototype.snapshot;
34
+ }
35
+ /** @type {?} */
36
+ const dataTransfer = webpackModule.hot.data || {};
37
+ /** @type {?} */
38
+ const storage = new HmrStorage(dataTransfer.snapshot || {});
39
+ /** @type {?} */
40
+ const manager = new HmrManager(options, storage);
41
+ return yield manager.hmrModule(bootstrapFn, (/**
42
+ * @return {?}
43
+ */
44
+ () => {
45
+ manager.beforeModuleBootstrap();
46
+ (/** @type {?} */ (webpackModule.hot)).dispose((/**
47
+ * @param {?} data
48
+ * @return {?}
49
+ */
50
+ (data) => {
51
+ setHmrReloadedTo(true);
52
+ data.snapshot = manager.beforeModuleOnDestroy();
53
+ manager.createNewModule();
54
+ }));
55
+ }));
56
+ });
57
+ }
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG1yLWJvb3RzdHJhcC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL2htci1wbHVnaW4vIiwic291cmNlcyI6WyJzcmMvaG1yLWJvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7Ozs7OztBQU9uRixNQUFNLFVBQWdCLEdBQUcsQ0FDdkIsYUFBNEIsRUFDNUIsV0FBaUMsRUFDakMsVUFBMEIsRUFBRTs7UUFFNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUU7WUFDdEIsT0FBTyxDQUFDLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1lBQzVELE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztTQUMvRDtRQUVELDRCQUE0QixFQUFFLENBQUM7UUFFL0IsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQzs7OztRQUUzQiw4QkFFQzs7O1lBREMsbUNBQWU7OztjQUVYLFlBQVksR0FBb0IsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRTs7Y0FFNUQsT0FBTyxHQUFHLElBQUksVUFBVSxDQUFNLFlBQVksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDOztjQUMxRCxPQUFPLEdBQUcsSUFBSSxVQUFVLENBQUksT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUVuRCxPQUFPLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXOzs7UUFBRSxHQUFHLEVBQUU7WUFDL0MsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFFaEMsbUJBQUEsYUFBYSxDQUFDLEdBQUcsRUFBQyxDQUFDLE9BQU87Ozs7WUFBQyxDQUFDLElBQXFCLEVBQUUsRUFBRTtnQkFDbkQsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQ2hELE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM1QixDQUFDLEVBQUMsQ0FBQztRQUNMLENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEhtck1hbmFnZXIgfSBmcm9tICcuL2htci1tYW5hZ2VyJztcbmltcG9ydCB7IEJvb3RzdHJhcE1vZHVsZUZuLCBOZ3hzSG1yT3B0aW9ucywgV2VicGFja01vZHVsZSB9IGZyb20gJy4vc3ltYm9scyc7XG5pbXBvcnQgeyBIbXJTdG9yYWdlIH0gZnJvbSAnLi9pbnRlcm5hbC9obXItc3RvcmFnZSc7XG5pbXBvcnQgeyBtYXJrQXBwbGljYXRpb25Bc0htclJlbG9hZGVkLCBzZXRIbXJSZWxvYWRlZFRvIH0gZnJvbSAnLi91dGlscy9pbnRlcm5hbHMnO1xuXG4vKipcbiAqIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnQgcGx1Z2luIGZvciBOR1hTXG4gKiBAZGVwcmVjYXRlZCBBcyBvZiBBbmd1bGFyIHYxMCwgSE1SIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQgYW5kIHdpbGwgYmUgZGVwcmVjYXRlZC5cbiAqIE1vcmUgaW5mb3JtYXRpb24gW2hlcmVdKGh0dHBzOi8vd3d3Lm5neHMuaW8vcGx1Z2lucy9obXIpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaG1yPFQ+KFxuICB3ZWJwYWNrTW9kdWxlOiBXZWJwYWNrTW9kdWxlLFxuICBib290c3RyYXBGbjogQm9vdHN0cmFwTW9kdWxlRm48VD4sXG4gIG9wdGlvbnM6IE5neHNIbXJPcHRpb25zID0ge31cbik6IFByb21pc2U8TmdNb2R1bGVSZWY8VD4+IHtcbiAgaWYgKCF3ZWJwYWNrTW9kdWxlLmhvdCkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0FyZSB5b3UgdXNpbmcgdGhlIC0taG1yIGZsYWcgZm9yIG5nIHNlcnZlPycpO1xuICAgIHRocm93IG5ldyBFcnJvcignSE1SIGlzIG5vdCBlbmFibGVkIGZvciB3ZWJwYWNrLWRldi1zZXJ2ZXIhJyk7XG4gIH1cblxuICBtYXJrQXBwbGljYXRpb25Bc0htclJlbG9hZGVkKCk7XG5cbiAgd2VicGFja01vZHVsZS5ob3QuYWNjZXB0KCk7XG5cbiAgaW50ZXJmYWNlIEhtckRhdGFUcmFuc2ZlciB7XG4gICAgc25hcHNob3Q/OiBhbnk7XG4gIH1cbiAgY29uc3QgZGF0YVRyYW5zZmVyOiBIbXJEYXRhVHJhbnNmZXIgPSB3ZWJwYWNrTW9kdWxlLmhvdC5kYXRhIHx8IHt9O1xuXG4gIGNvbnN0IHN0b3JhZ2UgPSBuZXcgSG1yU3RvcmFnZTxhbnk+KGRhdGFUcmFuc2Zlci5zbmFwc2hvdCB8fCB7fSk7XG4gIGNvbnN0IG1hbmFnZXIgPSBuZXcgSG1yTWFuYWdlcjxUPihvcHRpb25zLCBzdG9yYWdlKTtcblxuICByZXR1cm4gYXdhaXQgbWFuYWdlci5obXJNb2R1bGUoYm9vdHN0cmFwRm4sICgpID0+IHtcbiAgICBtYW5hZ2VyLmJlZm9yZU1vZHVsZUJvb3RzdHJhcCgpO1xuXG4gICAgd2VicGFja01vZHVsZS5ob3QhLmRpc3Bvc2UoKGRhdGE6IEhtckRhdGFUcmFuc2ZlcikgPT4ge1xuICAgICAgc2V0SG1yUmVsb2FkZWRUbyh0cnVlKTtcbiAgICAgIGRhdGEuc25hcHNob3QgPSBtYW5hZ2VyLmJlZm9yZU1vZHVsZU9uRGVzdHJveSgpO1xuICAgICAgbWFuYWdlci5jcmVhdGVOZXdNb2R1bGUoKTtcbiAgICB9KTtcbiAgfSk7XG59XG4iXX0=
@@ -1,175 +1,175 @@
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
- export class HmrManager {
16
- /**
17
- * @param {?} options
18
- * @param {?} storage
19
- */
20
- constructor(options, storage) {
21
- this.storage = storage;
22
- this.optionsBuilder = new HmrOptionBuilder(options);
23
- }
24
- /**
25
- * @private
26
- * @return {?}
27
- */
28
- get applicationRef() {
29
- return this.ngModule.injector.get(ApplicationRef);
30
- }
31
- /**
32
- * @private
33
- * @return {?}
34
- */
35
- get bootstrap() {
36
- return this.ngModule.injector.get(NgxsBootstrapper);
37
- }
38
- /**
39
- * @param {?} bootstrapFn
40
- * @param {?} tick
41
- * @return {?}
42
- */
43
- hmrModule(bootstrapFn, tick) {
44
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
45
- InitialState.set(this.storage.snapshot);
46
- this.ngModule = yield bootstrapFn();
47
- this.context = new HmrStateContextFactory(this.ngModule);
48
- this.lifecycle = this.createLifecycle();
49
- tick();
50
- InitialState.pop();
51
- return this.ngModule;
52
- });
53
- }
54
- /**
55
- * @return {?}
56
- */
57
- beforeModuleBootstrap() {
58
- this.lifecycle.hmrNgxsStoreOnInit((/**
59
- * @param {?} ctx
60
- * @param {?} state
61
- * @return {?}
62
- */
63
- (ctx, state) => {
64
- ctx.dispatch(new HmrInitAction(state));
65
- }));
66
- }
67
- /**
68
- * @return {?}
69
- */
70
- beforeModuleOnDestroy() {
71
- this.optionsBuilder.clearLogs();
72
- return this.lifecycle.hmrNgxsStoreBeforeOnDestroy();
73
- }
74
- /**
75
- * @return {?}
76
- */
77
- createNewModule() {
78
- /** @type {?} */
79
- const removeOldHosts = this.cloneHostsBeforeDestroy();
80
- this.removeNgStyles();
81
- this.ngModule.destroy();
82
- removeOldHosts();
83
- }
84
- /**
85
- * @private
86
- * @return {?}
87
- */
88
- createLifecycle() {
89
- return new HmrLifecycle(this.ngModule.instance, this.bootstrap, this.storage, this.context, this.optionsBuilder);
90
- }
91
- /**
92
- * @private
93
- * @return {?}
94
- */
95
- cloneHostsBeforeDestroy() {
96
- /** @type {?} */
97
- const elements = this.applicationRef.components.map((/**
98
- * @param {?} component
99
- * @return {?}
100
- */
101
- (component) => component.location.nativeElement));
102
- /** @type {?} */
103
- const removableList = elements.map((/**
104
- * @param {?} componentNode
105
- * @return {?}
106
- */
107
- (componentNode) => {
108
- /** @type {?} */
109
- const newNode = document.createElement(componentNode.tagName);
110
- /** @type {?} */
111
- const parentNode = (/** @type {?} */ (componentNode.parentNode));
112
- /** @type {?} */
113
- const currentDisplay = newNode.style.display;
114
- newNode.style.display = 'none';
115
- parentNode.insertBefore(newNode, componentNode);
116
- return (/**
117
- * @return {?}
118
- */
119
- () => {
120
- newNode.style.display = currentDisplay;
121
- try {
122
- parentNode.removeChild(componentNode);
123
- }
124
- catch (_a) { }
125
- });
126
- }));
127
- return (/**
128
- * @return {?}
129
- */
130
- function removeOldHosts() {
131
- removableList.forEach((/**
132
- * @param {?} removeOldHost
133
- * @return {?}
134
- */
135
- (removeOldHost) => removeOldHost()));
136
- });
137
- }
138
- /**
139
- * @private
140
- * @return {?}
141
- */
142
- removeNgStyles() {
143
- /** @type {?} */
144
- const head = (/** @type {?} */ (document.head));
145
- /** @type {?} */
146
- const styles = Array.from((/** @type {?} */ (head)).querySelectorAll('style'));
147
- styles
148
- .filter((/**
149
- * @param {?} style
150
- * @return {?}
151
- */
152
- (style) => style.innerText.includes('_ng')))
153
- .map((/**
154
- * @param {?} style
155
- * @return {?}
156
- */
157
- (style) => (/** @type {?} */ (head)).removeChild(style)));
158
- }
159
- }
160
- if (false) {
161
- /** @type {?} */
162
- HmrManager.prototype.storage;
163
- /** @type {?} */
164
- HmrManager.prototype.context;
165
- /** @type {?} */
166
- HmrManager.prototype.lifecycle;
167
- /** @type {?} */
168
- HmrManager.prototype.optionsBuilder;
169
- /**
170
- * @type {?}
171
- * @private
172
- */
173
- HmrManager.prototype.ngModule;
174
- }
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG1yLW1hbmFnZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy9obXItcGx1Z2luLyIsInNvdXJjZXMiOlsic3JjL2htci1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBNkIsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBU3ZFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFJeEQsTUFBTSxPQUFPLFVBQVU7Ozs7O0lBT3JCLFlBQVksT0FBdUIsRUFBRSxPQUFzQjtRQUN6RCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7Ozs7SUFFRCxJQUFZLGNBQWM7UUFDeEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7Ozs7SUFFRCxJQUFZLFNBQVM7UUFDbkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7Ozs7SUFFWSxTQUFTLENBQ3BCLFdBQWlDLEVBQ2pDLElBQWdCOztZQUVoQixZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLFdBQVcs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QUFRLENBQUMsS0FBSyxDQUFDLEVBQUM7YUFDcEUsR0FBRzs7OztRQUFDLENBQUMsS0FBdUIsRUFBRSxFQUFFLENBQUMsbUJBQUEsSUFBSSxFQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNGOzs7SUFoR0MsNkJBQThCOztJQUM5Qiw2QkFBNkM7O0lBQzdDLCtCQUFxQzs7SUFDckMsb0NBQXdDOzs7OztJQUN4Qyw4QkFBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgQ29tcG9uZW50UmVmLCBOZ01vZHVsZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbml0aWFsU3RhdGUsIE5neHNCb290c3RyYXBwZXIgfSBmcm9tICdAbmd4cy9zdG9yZS9pbnRlcm5hbHMnO1xyXG5cclxuaW1wb3J0IHsgSG1yU3RvcmFnZSB9IGZyb20gJy4vaW50ZXJuYWwvaG1yLXN0b3JhZ2UnO1xyXG5pbXBvcnQge1xyXG4gIEJvb3RzdHJhcE1vZHVsZUZuLFxyXG4gIE5neHNIbXJMaWZlQ3ljbGUsXHJcbiAgTmd4c0htck9wdGlvbnMsXHJcbiAgTmd4c0htclNuYXBzaG90XHJcbn0gZnJvbSAnLi9zeW1ib2xzJztcclxuaW1wb3J0IHsgSG1yU3RhdGVDb250ZXh0RmFjdG9yeSB9IGZyb20gJy4vaW50ZXJuYWwvaG1yLXN0YXRlLWNvbnRleHQtZmFjdG9yeSc7XHJcbmltcG9ydCB7IEhtck9wdGlvbkJ1aWxkZXIgfSBmcm9tICcuL2ludGVybmFsL2htci1vcHRpb25zLWJ1aWxkZXInO1xyXG5pbXBvcnQgeyBIbXJJbml0QWN0aW9uIH0gZnJvbSAnLi9hY3Rpb25zL2htci1pbml0LmFjdGlvbic7XHJcbmltcG9ydCB7IEhtckxpZmVjeWNsZSB9IGZyb20gJy4vaW50ZXJuYWwvaG1yLWxpZmVjeWNsZSc7XHJcblxyXG50eXBlIE9sZEhvc3RSZW1vdmVyRm4gPSAoKSA9PiB2b2lkO1xyXG5cclxuZXhwb3J0IGNsYXNzIEhtck1hbmFnZXI8VCBleHRlbmRzIFBhcnRpYWw8Tmd4c0htckxpZmVDeWNsZTxTPj4sIFMgPSBOZ3hzSG1yU25hcHNob3Q+IHtcclxuICBwdWJsaWMgc3RvcmFnZTogSG1yU3RvcmFnZTxTPjtcclxuICBwdWJsaWMgY29udGV4dDogSG1yU3RhdGVDb250ZXh0RmFjdG9yeTxULCBTPjtcclxuICBwdWJsaWMgbGlmZWN5Y2xlOiBIbXJMaWZlY3ljbGU8VCwgUz47XHJcbiAgcHVibGljIG9wdGlvbnNCdWlsZGVyOiBIbXJPcHRpb25CdWlsZGVyO1xyXG4gIHByaXZhdGUgbmdNb2R1bGU6IE5nTW9kdWxlUmVmPFQ+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBOZ3hzSG1yT3B0aW9ucywgc3RvcmFnZTogSG1yU3RvcmFnZTxTPikge1xyXG4gICAgdGhpcy5zdG9yYWdlID0gc3RvcmFnZTtcclxuICAgIHRoaXMub3B0aW9uc0J1aWxkZXIgPSBuZXcgSG1yT3B0aW9uQnVpbGRlcihvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGFwcGxpY2F0aW9uUmVmKCk6IEFwcGxpY2F0aW9uUmVmIHtcclxuICAgIHJldHVybiB0aGlzLm5nTW9kdWxlLmluamVjdG9yLmdldChBcHBsaWNhdGlvblJlZik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBib290c3RyYXAoKTogTmd4c0Jvb3RzdHJhcHBlciB7XHJcbiAgICByZXR1cm4gdGhpcy5uZ01vZHVsZS5pbmplY3Rvci5nZXQoTmd4c0Jvb3RzdHJhcHBlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaG1yTW9kdWxlKFxyXG4gICAgYm9vdHN0cmFwRm46IEJvb3RzdHJhcE1vZHVsZUZuPFQ+LFxyXG4gICAgdGljazogKCkgPT4gdm9pZFxyXG4gICk6IFByb21pc2U8TmdNb2R1bGVSZWY8VD4+IHtcclxuICAgIEluaXRpYWxTdGF0ZS5zZXQodGhpcy5zdG9yYWdlLnNuYXBzaG90KTtcclxuICAgIHRoaXMubmdNb2R1bGUgPSBhd2FpdCBib290c3RyYXBGbigpO1xyXG4gICAgdGhpcy5jb250ZXh0ID0gbmV3IEhtclN0YXRlQ29udGV4dEZhY3RvcnkodGhpcy5uZ01vZHVsZSk7XHJcbiAgICB0aGlzLmxpZmVjeWNsZSA9IHRoaXMuY3JlYXRlTGlmZWN5Y2xlKCk7XHJcblxyXG4gICAgdGljaygpO1xyXG5cclxuICAgIEluaXRpYWxTdGF0ZS5wb3AoKTtcclxuICAgIHJldHVybiB0aGlzLm5nTW9kdWxlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGJlZm9yZU1vZHVsZUJvb3RzdHJhcCgpOiB2b2lkIHtcclxuICAgIHRoaXMubGlmZWN5Y2xlLmhtck5neHNTdG9yZU9uSW5pdCgoY3R4LCBzdGF0ZSkgPT4ge1xyXG4gICAgICBjdHguZGlzcGF0Y2gobmV3IEhtckluaXRBY3Rpb24oc3RhdGUpKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGJlZm9yZU1vZHVsZU9uRGVzdHJveSgpOiBQYXJ0aWFsPFM+IHtcclxuICAgIHRoaXMub3B0aW9uc0J1aWxkZXIuY2xlYXJMb2dzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5saWZlY3ljbGUuaG1yTmd4c1N0b3JlQmVmb3JlT25EZXN0cm95KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY3JlYXRlTmV3TW9kdWxlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgcmVtb3ZlT2xkSG9zdHM6ICgpID0+IHZvaWQgPSB0aGlzLmNsb25lSG9zdHNCZWZvcmVEZXN0cm95KCk7XHJcbiAgICB0aGlzLnJlbW92ZU5nU3R5bGVzKCk7XHJcbiAgICB0aGlzLm5nTW9kdWxlLmRlc3Ryb3koKTtcclxuICAgIHJlbW92ZU9sZEhvc3RzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUxpZmVjeWNsZSgpOiBIbXJMaWZlY3ljbGU8VCwgUz4ge1xyXG4gICAgcmV0dXJuIG5ldyBIbXJMaWZlY3ljbGUoXHJcbiAgICAgIHRoaXMubmdNb2R1bGUuaW5zdGFuY2UsXHJcbiAgICAgIHRoaXMuYm9vdHN0cmFwLFxyXG4gICAgICB0aGlzLnN0b3JhZ2UsXHJcbiAgICAgIHRoaXMuY29udGV4dCxcclxuICAgICAgdGhpcy5vcHRpb25zQnVpbGRlclxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xvbmVIb3N0c0JlZm9yZURlc3Ryb3koKTogKCkgPT4gdm9pZCB7XHJcbiAgICBjb25zdCBlbGVtZW50czogRWxlbWVudFtdID0gdGhpcy5hcHBsaWNhdGlvblJlZi5jb21wb25lbnRzLm1hcChcclxuICAgICAgKGNvbXBvbmVudDogQ29tcG9uZW50UmVmPEVsZW1lbnQ+KSA9PiBjb21wb25lbnQubG9jYXRpb24ubmF0aXZlRWxlbWVudFxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCByZW1vdmFibGVMaXN0OiBPbGRIb3N0UmVtb3ZlckZuW10gPSBlbGVtZW50cy5tYXAoKGNvbXBvbmVudE5vZGU6IEVsZW1lbnQpID0+IHtcclxuICAgICAgY29uc3QgbmV3Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoY29tcG9uZW50Tm9kZS50YWdOYW1lKTtcclxuICAgICAgY29uc3QgcGFyZW50Tm9kZTogTm9kZSA9IGNvbXBvbmVudE5vZGUucGFyZW50Tm9kZSBhcyBOb2RlO1xyXG4gICAgICBjb25zdCBjdXJyZW50RGlzcGxheTogc3RyaW5nIHwgbnVsbCA9IG5ld05vZGUuc3R5bGUuZGlzcGxheTtcclxuXHJcbiAgICAgIG5ld05vZGUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobmV3Tm9kZSwgY29tcG9uZW50Tm9kZSk7XHJcblxyXG4gICAgICByZXR1cm4gKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgIG5ld05vZGUuc3R5bGUuZGlzcGxheSA9IGN1cnJlbnREaXNwbGF5O1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNvbXBvbmVudE5vZGUpO1xyXG4gICAgICAgIH0gY2F0Y2gge31cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmdW5jdGlvbiByZW1vdmVPbGRIb3N0cygpOiB2b2lkIHtcclxuICAgICAgcmVtb3ZhYmxlTGlzdC5mb3JFYWNoKChyZW1vdmVPbGRIb3N0OiBPbGRIb3N0UmVtb3ZlckZuKSA9PiByZW1vdmVPbGRIb3N0KCkpO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlTmdTdHlsZXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBoZWFkOiBIVE1MSGVhZEVsZW1lbnQgPSBkb2N1bWVudC5oZWFkITtcclxuICAgIGNvbnN0IHN0eWxlczogSFRNTFN0eWxlRWxlbWVudFtdID0gQXJyYXkuZnJvbShoZWFkIS5xdWVyeVNlbGVjdG9yQWxsKCdzdHlsZScpKTtcclxuXHJcbiAgICBzdHlsZXNcclxuICAgICAgLmZpbHRlcigoc3R5bGU6IEhUTUxTdHlsZUVsZW1lbnQpID0+IHN0eWxlLmlubmVyVGV4dC5pbmNsdWRlcygnX25nJykpXHJcbiAgICAgIC5tYXAoKHN0eWxlOiBIVE1MU3R5bGVFbGVtZW50KSA9PiBoZWFkIS5yZW1vdmVDaGlsZChzdHlsZSkpO1xyXG4gIH1cclxufVxyXG4iXX0=
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
+ export class HmrManager {
16
+ /**
17
+ * @param {?} options
18
+ * @param {?} storage
19
+ */
20
+ constructor(options, storage) {
21
+ this.storage = storage;
22
+ this.optionsBuilder = new HmrOptionBuilder(options);
23
+ }
24
+ /**
25
+ * @private
26
+ * @return {?}
27
+ */
28
+ get applicationRef() {
29
+ return this.ngModule.injector.get(ApplicationRef);
30
+ }
31
+ /**
32
+ * @private
33
+ * @return {?}
34
+ */
35
+ get bootstrap() {
36
+ return this.ngModule.injector.get(NgxsBootstrapper);
37
+ }
38
+ /**
39
+ * @param {?} bootstrapFn
40
+ * @param {?} tick
41
+ * @return {?}
42
+ */
43
+ hmrModule(bootstrapFn, tick) {
44
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
45
+ InitialState.set(this.storage.snapshot);
46
+ this.ngModule = yield bootstrapFn();
47
+ this.context = new HmrStateContextFactory(this.ngModule);
48
+ this.lifecycle = this.createLifecycle();
49
+ tick();
50
+ InitialState.pop();
51
+ return this.ngModule;
52
+ });
53
+ }
54
+ /**
55
+ * @return {?}
56
+ */
57
+ beforeModuleBootstrap() {
58
+ this.lifecycle.hmrNgxsStoreOnInit((/**
59
+ * @param {?} ctx
60
+ * @param {?} state
61
+ * @return {?}
62
+ */
63
+ (ctx, state) => {
64
+ ctx.dispatch(new HmrInitAction(state));
65
+ }));
66
+ }
67
+ /**
68
+ * @return {?}
69
+ */
70
+ beforeModuleOnDestroy() {
71
+ this.optionsBuilder.clearLogs();
72
+ return this.lifecycle.hmrNgxsStoreBeforeOnDestroy();
73
+ }
74
+ /**
75
+ * @return {?}
76
+ */
77
+ createNewModule() {
78
+ /** @type {?} */
79
+ const removeOldHosts = this.cloneHostsBeforeDestroy();
80
+ this.removeNgStyles();
81
+ this.ngModule.destroy();
82
+ removeOldHosts();
83
+ }
84
+ /**
85
+ * @private
86
+ * @return {?}
87
+ */
88
+ createLifecycle() {
89
+ return new HmrLifecycle(this.ngModule.instance, this.bootstrap, this.storage, this.context, this.optionsBuilder);
90
+ }
91
+ /**
92
+ * @private
93
+ * @return {?}
94
+ */
95
+ cloneHostsBeforeDestroy() {
96
+ /** @type {?} */
97
+ const elements = this.applicationRef.components.map((/**
98
+ * @param {?} component
99
+ * @return {?}
100
+ */
101
+ (component) => component.location.nativeElement));
102
+ /** @type {?} */
103
+ const removableList = elements.map((/**
104
+ * @param {?} componentNode
105
+ * @return {?}
106
+ */
107
+ (componentNode) => {
108
+ /** @type {?} */
109
+ const newNode = document.createElement(componentNode.tagName);
110
+ /** @type {?} */
111
+ const parentNode = (/** @type {?} */ (componentNode.parentNode));
112
+ /** @type {?} */
113
+ const currentDisplay = newNode.style.display;
114
+ newNode.style.display = 'none';
115
+ parentNode.insertBefore(newNode, componentNode);
116
+ return (/**
117
+ * @return {?}
118
+ */
119
+ () => {
120
+ newNode.style.display = currentDisplay;
121
+ try {
122
+ parentNode.removeChild(componentNode);
123
+ }
124
+ catch (_a) { }
125
+ });
126
+ }));
127
+ return (/**
128
+ * @return {?}
129
+ */
130
+ function removeOldHosts() {
131
+ removableList.forEach((/**
132
+ * @param {?} removeOldHost
133
+ * @return {?}
134
+ */
135
+ (removeOldHost) => removeOldHost()));
136
+ });
137
+ }
138
+ /**
139
+ * @private
140
+ * @return {?}
141
+ */
142
+ removeNgStyles() {
143
+ /** @type {?} */
144
+ const head = (/** @type {?} */ (document.head));
145
+ /** @type {?} */
146
+ const styles = Array.from((/** @type {?} */ (head)).querySelectorAll('style'));
147
+ styles
148
+ .filter((/**
149
+ * @param {?} style
150
+ * @return {?}
151
+ */
152
+ (style) => style.innerText.includes('_ng')))
153
+ .map((/**
154
+ * @param {?} style
155
+ * @return {?}
156
+ */
157
+ (style) => (/** @type {?} */ (head)).removeChild(style)));
158
+ }
159
+ }
160
+ if (false) {
161
+ /** @type {?} */
162
+ HmrManager.prototype.storage;
163
+ /** @type {?} */
164
+ HmrManager.prototype.context;
165
+ /** @type {?} */
166
+ HmrManager.prototype.lifecycle;
167
+ /** @type {?} */
168
+ HmrManager.prototype.optionsBuilder;
169
+ /**
170
+ * @type {?}
171
+ * @private
172
+ */
173
+ HmrManager.prototype.ngModule;
174
+ }
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG1yLW1hbmFnZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy9obXItcGx1Z2luLyIsInNvdXJjZXMiOlsic3JjL2htci1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBNkIsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBU3ZFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFJeEQsTUFBTSxPQUFPLFVBQVU7Ozs7O0lBT3JCLFlBQVksT0FBdUIsRUFBRSxPQUFzQjtRQUN6RCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7Ozs7SUFFRCxJQUFZLGNBQWM7UUFDeEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7Ozs7SUFFRCxJQUFZLFNBQVM7UUFDbkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7Ozs7SUFFWSxTQUFTLENBQ3BCLFdBQWlDLEVBQ2pDLElBQWdCOztZQUVoQixZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLFdBQVcs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QUFRLENBQUMsS0FBSyxDQUFDLEVBQUM7YUFDcEUsR0FBRzs7OztRQUFDLENBQUMsS0FBdUIsRUFBRSxFQUFFLENBQUMsbUJBQUEsSUFBSSxFQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNGOzs7SUFoR0MsNkJBQThCOztJQUM5Qiw2QkFBNkM7O0lBQzdDLCtCQUFxQzs7SUFDckMsb0NBQXdDOzs7OztJQUN4Qyw4QkFBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgQ29tcG9uZW50UmVmLCBOZ01vZHVsZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5pdGlhbFN0YXRlLCBOZ3hzQm9vdHN0cmFwcGVyIH0gZnJvbSAnQG5neHMvc3RvcmUvaW50ZXJuYWxzJztcblxuaW1wb3J0IHsgSG1yU3RvcmFnZSB9IGZyb20gJy4vaW50ZXJuYWwvaG1yLXN0b3JhZ2UnO1xuaW1wb3J0IHtcbiAgQm9vdHN0cmFwTW9kdWxlRm4sXG4gIE5neHNIbXJMaWZlQ3ljbGUsXG4gIE5neHNIbXJPcHRpb25zLFxuICBOZ3hzSG1yU25hcHNob3Rcbn0gZnJvbSAnLi9zeW1ib2xzJztcbmltcG9ydCB7IEhtclN0YXRlQ29udGV4dEZhY3RvcnkgfSBmcm9tICcuL2ludGVybmFsL2htci1zdGF0ZS1jb250ZXh0LWZhY3RvcnknO1xuaW1wb3J0IHsgSG1yT3B0aW9uQnVpbGRlciB9IGZyb20gJy4vaW50ZXJuYWwvaG1yLW9wdGlvbnMtYnVpbGRlcic7XG5pbXBvcnQgeyBIbXJJbml0QWN0aW9uIH0gZnJvbSAnLi9hY3Rpb25zL2htci1pbml0LmFjdGlvbic7XG5pbXBvcnQgeyBIbXJMaWZlY3ljbGUgfSBmcm9tICcuL2ludGVybmFsL2htci1saWZlY3ljbGUnO1xuXG50eXBlIE9sZEhvc3RSZW1vdmVyRm4gPSAoKSA9PiB2b2lkO1xuXG5leHBvcnQgY2xhc3MgSG1yTWFuYWdlcjxUIGV4dGVuZHMgUGFydGlhbDxOZ3hzSG1yTGlmZUN5Y2xlPFM+PiwgUyA9IE5neHNIbXJTbmFwc2hvdD4ge1xuICBwdWJsaWMgc3RvcmFnZTogSG1yU3RvcmFnZTxTPjtcbiAgcHVibGljIGNvbnRleHQ6IEhtclN0YXRlQ29udGV4dEZhY3Rvcnk8VCwgUz47XG4gIHB1YmxpYyBsaWZlY3ljbGU6IEhtckxpZmVjeWNsZTxULCBTPjtcbiAgcHVibGljIG9wdGlvbnNCdWlsZGVyOiBIbXJPcHRpb25CdWlsZGVyO1xuICBwcml2YXRlIG5nTW9kdWxlOiBOZ01vZHVsZVJlZjxUPjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBOZ3hzSG1yT3B0aW9ucywgc3RvcmFnZTogSG1yU3RvcmFnZTxTPikge1xuICAgIHRoaXMuc3RvcmFnZSA9IHN0b3JhZ2U7XG4gICAgdGhpcy5vcHRpb25zQnVpbGRlciA9IG5ldyBIbXJPcHRpb25CdWlsZGVyKG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgYXBwbGljYXRpb25SZWYoKTogQXBwbGljYXRpb25SZWYge1xuICAgIHJldHVybiB0aGlzLm5nTW9kdWxlLmluamVjdG9yLmdldChBcHBsaWNhdGlvblJlZik7XG4gIH1cblxuICBwcml2YXRlIGdldCBib290c3RyYXAoKTogTmd4c0Jvb3RzdHJhcHBlciB7XG4gICAgcmV0dXJuIHRoaXMubmdNb2R1bGUuaW5qZWN0b3IuZ2V0KE5neHNCb290c3RyYXBwZXIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGhtck1vZHVsZShcbiAgICBib290c3RyYXBGbjogQm9vdHN0cmFwTW9kdWxlRm48VD4sXG4gICAgdGljazogKCkgPT4gdm9pZFxuICApOiBQcm9taXNlPE5nTW9kdWxlUmVmPFQ+PiB7XG4gICAgSW5pdGlhbFN0YXRlLnNldCh0aGlzLnN0b3JhZ2Uuc25hcHNob3QpO1xuICAgIHRoaXMubmdNb2R1bGUgPSBhd2FpdCBib290c3RyYXBGbigpO1xuICAgIHRoaXMuY29udGV4dCA9IG5ldyBIbXJTdGF0ZUNvbnRleHRGYWN0b3J5KHRoaXMubmdNb2R1bGUpO1xuICAgIHRoaXMubGlmZWN5Y2xlID0gdGhpcy5jcmVhdGVMaWZlY3ljbGUoKTtcblxuICAgIHRpY2soKTtcblxuICAgIEluaXRpYWxTdGF0ZS5wb3AoKTtcbiAgICByZXR1cm4gdGhpcy5uZ01vZHVsZTtcbiAgfVxuXG4gIHB1YmxpYyBiZWZvcmVNb2R1bGVCb290c3RyYXAoKTogdm9pZCB7XG4gICAgdGhpcy5saWZlY3ljbGUuaG1yTmd4c1N0b3JlT25Jbml0KChjdHgsIHN0YXRlKSA9PiB7XG4gICAgICBjdHguZGlzcGF0Y2gobmV3IEhtckluaXRBY3Rpb24oc3RhdGUpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBiZWZvcmVNb2R1bGVPbkRlc3Ryb3koKTogUGFydGlhbDxTPiB7XG4gICAgdGhpcy5vcHRpb25zQnVpbGRlci5jbGVhckxvZ3MoKTtcbiAgICByZXR1cm4gdGhpcy5saWZlY3ljbGUuaG1yTmd4c1N0b3JlQmVmb3JlT25EZXN0cm95KCk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlTmV3TW9kdWxlKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlbW92ZU9sZEhvc3RzOiAoKSA9PiB2b2lkID0gdGhpcy5jbG9uZUhvc3RzQmVmb3JlRGVzdHJveSgpO1xuICAgIHRoaXMucmVtb3ZlTmdTdHlsZXMoKTtcbiAgICB0aGlzLm5nTW9kdWxlLmRlc3Ryb3koKTtcbiAgICByZW1vdmVPbGRIb3N0cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVMaWZlY3ljbGUoKTogSG1yTGlmZWN5Y2xlPFQsIFM+IHtcbiAgICByZXR1cm4gbmV3IEhtckxpZmVjeWNsZShcbiAgICAgIHRoaXMubmdNb2R1bGUuaW5zdGFuY2UsXG4gICAgICB0aGlzLmJvb3RzdHJhcCxcbiAgICAgIHRoaXMuc3RvcmFnZSxcbiAgICAgIHRoaXMuY29udGV4dCxcbiAgICAgIHRoaXMub3B0aW9uc0J1aWxkZXJcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9uZUhvc3RzQmVmb3JlRGVzdHJveSgpOiAoKSA9PiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50czogRWxlbWVudFtdID0gdGhpcy5hcHBsaWNhdGlvblJlZi5jb21wb25lbnRzLm1hcChcbiAgICAgIChjb21wb25lbnQ6IENvbXBvbmVudFJlZjxFbGVtZW50PikgPT4gY29tcG9uZW50LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnRcbiAgICApO1xuXG4gICAgY29uc3QgcmVtb3ZhYmxlTGlzdDogT2xkSG9zdFJlbW92ZXJGbltdID0gZWxlbWVudHMubWFwKChjb21wb25lbnROb2RlOiBFbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBuZXdOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChjb21wb25lbnROb2RlLnRhZ05hbWUpO1xuICAgICAgY29uc3QgcGFyZW50Tm9kZTogTm9kZSA9IGNvbXBvbmVudE5vZGUucGFyZW50Tm9kZSBhcyBOb2RlO1xuICAgICAgY29uc3QgY3VycmVudERpc3BsYXk6IHN0cmluZyB8IG51bGwgPSBuZXdOb2RlLnN0eWxlLmRpc3BsYXk7XG5cbiAgICAgIG5ld05vZGUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5ld05vZGUsIGNvbXBvbmVudE5vZGUpO1xuXG4gICAgICByZXR1cm4gKCk6IHZvaWQgPT4ge1xuICAgICAgICBuZXdOb2RlLnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50RGlzcGxheTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNvbXBvbmVudE5vZGUpO1xuICAgICAgICB9IGNhdGNoIHt9XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIHJlbW92ZU9sZEhvc3RzKCk6IHZvaWQge1xuICAgICAgcmVtb3ZhYmxlTGlzdC5mb3JFYWNoKChyZW1vdmVPbGRIb3N0OiBPbGRIb3N0UmVtb3ZlckZuKSA9PiByZW1vdmVPbGRIb3N0KCkpO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZU5nU3R5bGVzKCk6IHZvaWQge1xuICAgIGNvbnN0IGhlYWQ6IEhUTUxIZWFkRWxlbWVudCA9IGRvY3VtZW50LmhlYWQhO1xuICAgIGNvbnN0IHN0eWxlczogSFRNTFN0eWxlRWxlbWVudFtdID0gQXJyYXkuZnJvbShoZWFkIS5xdWVyeVNlbGVjdG9yQWxsKCdzdHlsZScpKTtcblxuICAgIHN0eWxlc1xuICAgICAgLmZpbHRlcigoc3R5bGU6IEhUTUxTdHlsZUVsZW1lbnQpID0+IHN0eWxlLmlubmVyVGV4dC5pbmNsdWRlcygnX25nJykpXG4gICAgICAubWFwKChzdHlsZTogSFRNTFN0eWxlRWxlbWVudCkgPT4gaGVhZCEucmVtb3ZlQ2hpbGQoc3R5bGUpKTtcbiAgfVxufVxuIl19