@microzord/angular 1.0.0-alpha.2 → 2.0.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 (92) hide show
  1. package/README.md +10 -4
  2. package/child/src/create-app.d.ts +2 -2
  3. package/esm2022/child/index.mjs +3 -0
  4. package/esm2022/child/microzord-angular-child.mjs +5 -0
  5. package/esm2022/child/src/create-app.mjs +47 -0
  6. package/esm2022/child/src/enable-prod-mode.mjs +13 -0
  7. package/esm2022/index.mjs +9 -0
  8. package/esm2022/lib/microzord-app/microzord-app.directive.mjs +52 -0
  9. package/esm2022/lib/microzord-app/microzord-app.module.mjs +16 -0
  10. package/esm2022/lib/microzord-host.module.mjs +50 -0
  11. package/esm2022/lib/microzord-module/microzord-ng-compiler.service.mjs +33 -0
  12. package/esm2022/lib/microzord-module/microzord-ng-module.directive.mjs +53 -0
  13. package/esm2022/lib/microzord-module/microzord-ng-module.module.mjs +16 -0
  14. package/esm2022/lib/operators/complete.mjs +6 -0
  15. package/esm2022/lib/services/registry.service.mjs +20 -0
  16. package/esm2022/lib/tokens/microzord-apps.mjs +8 -0
  17. package/esm2022/lib/types/ng-module.mjs +2 -0
  18. package/esm2022/microzord-angular.mjs +5 -0
  19. package/fesm2022/microzord-angular-child.mjs +65 -0
  20. package/fesm2022/microzord-angular-child.mjs.map +1 -0
  21. package/fesm2022/microzord-angular.mjs +231 -0
  22. package/fesm2022/microzord-angular.mjs.map +1 -0
  23. package/lib/microzord-app/microzord-app.directive.d.ts +5 -1
  24. package/lib/microzord-app/microzord-app.module.d.ts +5 -0
  25. package/lib/microzord-host.module.d.ts +6 -0
  26. package/lib/microzord-module/microzord-ng-compiler.service.d.ts +3 -0
  27. package/lib/microzord-module/microzord-ng-module.directive.d.ts +5 -3
  28. package/lib/microzord-module/microzord-ng-module.module.d.ts +5 -0
  29. package/lib/services/registry.service.d.ts +3 -0
  30. package/lib/types/ng-module.d.ts +1 -1
  31. package/package.json +29 -17
  32. package/bundles/microzord-angular-child.umd.js +0 -417
  33. package/bundles/microzord-angular-child.umd.js.map +0 -1
  34. package/bundles/microzord-angular.umd.js +0 -612
  35. package/bundles/microzord-angular.umd.js.map +0 -1
  36. package/child/microzord-angular-child.d.ts +0 -4
  37. package/child/microzord-angular-child.metadata.json +0 -1
  38. package/child/package.json +0 -11
  39. package/esm2015/child/index.js +0 -3
  40. package/esm2015/child/index.js.map +0 -1
  41. package/esm2015/child/index.metadata.json +0 -1
  42. package/esm2015/child/microzord-angular-child.js +0 -5
  43. package/esm2015/child/microzord-angular-child.js.map +0 -1
  44. package/esm2015/child/microzord-angular-child.metadata.json +0 -1
  45. package/esm2015/child/src/create-app.js +0 -57
  46. package/esm2015/child/src/create-app.js.map +0 -1
  47. package/esm2015/child/src/create-app.metadata.json +0 -1
  48. package/esm2015/child/src/enable-prod-mode.js +0 -13
  49. package/esm2015/child/src/enable-prod-mode.js.map +0 -1
  50. package/esm2015/child/src/enable-prod-mode.metadata.json +0 -1
  51. package/esm2015/index.js +0 -9
  52. package/esm2015/index.js.map +0 -1
  53. package/esm2015/index.metadata.json +0 -1
  54. package/esm2015/lib/microzord-app/microzord-app.directive.js +0 -47
  55. package/esm2015/lib/microzord-app/microzord-app.directive.js.map +0 -1
  56. package/esm2015/lib/microzord-app/microzord-app.directive.metadata.json +0 -1
  57. package/esm2015/lib/microzord-app/microzord-app.module.js +0 -11
  58. package/esm2015/lib/microzord-app/microzord-app.module.js.map +0 -1
  59. package/esm2015/lib/microzord-app/microzord-app.module.metadata.json +0 -1
  60. package/esm2015/lib/microzord-host.module.js +0 -43
  61. package/esm2015/lib/microzord-host.module.js.map +0 -1
  62. package/esm2015/lib/microzord-host.module.metadata.json +0 -1
  63. package/esm2015/lib/microzord-module/microzord-ng-compiler.service.js +0 -39
  64. package/esm2015/lib/microzord-module/microzord-ng-compiler.service.js.map +0 -1
  65. package/esm2015/lib/microzord-module/microzord-ng-compiler.service.metadata.json +0 -1
  66. package/esm2015/lib/microzord-module/microzord-ng-module.directive.js +0 -54
  67. package/esm2015/lib/microzord-module/microzord-ng-module.directive.js.map +0 -1
  68. package/esm2015/lib/microzord-module/microzord-ng-module.directive.metadata.json +0 -1
  69. package/esm2015/lib/microzord-module/microzord-ng-module.module.js +0 -11
  70. package/esm2015/lib/microzord-module/microzord-ng-module.module.js.map +0 -1
  71. package/esm2015/lib/microzord-module/microzord-ng-module.module.metadata.json +0 -1
  72. package/esm2015/lib/operators/complete.js +0 -6
  73. package/esm2015/lib/operators/complete.js.map +0 -1
  74. package/esm2015/lib/operators/complete.metadata.json +0 -1
  75. package/esm2015/lib/services/registry.service.js +0 -18
  76. package/esm2015/lib/services/registry.service.js.map +0 -1
  77. package/esm2015/lib/services/registry.service.metadata.json +0 -1
  78. package/esm2015/lib/tokens/microzord-apps.js +0 -8
  79. package/esm2015/lib/tokens/microzord-apps.js.map +0 -1
  80. package/esm2015/lib/tokens/microzord-apps.metadata.json +0 -1
  81. package/esm2015/lib/types/ng-module.js +0 -2
  82. package/esm2015/lib/types/ng-module.js.map +0 -1
  83. package/esm2015/lib/types/ng-module.metadata.json +0 -1
  84. package/esm2015/microzord-angular.js +0 -6
  85. package/esm2015/microzord-angular.js.map +0 -1
  86. package/esm2015/microzord-angular.metadata.json +0 -1
  87. package/fesm2015/microzord-angular-child.js +0 -75
  88. package/fesm2015/microzord-angular-child.js.map +0 -1
  89. package/fesm2015/microzord-angular.js +0 -222
  90. package/fesm2015/microzord-angular.js.map +0 -1
  91. package/microzord-angular.d.ts +0 -5
  92. package/microzord-angular.metadata.json +0 -1
package/README.md CHANGED
@@ -6,6 +6,7 @@ It is a pre-alpha version of the library. Please, do not use it until official r
6
6
 
7
7
  [![npm version](https://img.shields.io/npm/v/@microzord/core.svg)](https://npmjs.com/package/@microzord/core)
8
8
  [![npm bundle size](https://img.shields.io/bundlephobia/minzip/@microzord/core)](https://bundlephobia.com/result?p=@microzord/core)
9
+ [![codecov](https://codecov.io/gh/taiga-family/microzord/branch/alpha/graph/badge.svg?token=MPSKF8YX7H)](https://codecov.io/gh/taiga-family/microzord)
9
10
 
10
11
  ## What is it?
11
12
 
@@ -17,6 +18,13 @@ It is a small tool that allows you to add and render multiple apps on one page.
17
18
 
18
19
  🐝 **Tiny as a bee and works as well**. No new code in the bundle of child application and a bit more than 1 KB library for host application to get all the benefits!
19
20
 
21
+ ## Angular version support
22
+
23
+ | Microzord Version | Angular version |
24
+ | ----------------- | --------------- |
25
+ | v2.x | 16+ |
26
+ | v1.x | 12 - 15 |
27
+
20
28
  ## Installation and usage
21
29
 
22
30
  An extensive demo is coming soon...
@@ -32,11 +40,9 @@ app.module.ts
32
40
  apps: [
33
41
  {
34
42
  name: 'react-menu',
35
- assetMap: '/react-menu/microzord.json',
36
43
  },
37
44
  {
38
45
  name: 'vue-footer-app',
39
- assetMap: '/vue-footer-app/microzord.json',
40
46
  },
41
47
  ],
42
48
  }),
@@ -48,11 +54,11 @@ export class AppModule {}
48
54
  Usage in application:
49
55
 
50
56
  ```html
51
- <header microzord="react-menu"></header>
57
+ <header microzordApp="react-menu"></header>
52
58
 
53
59
  <div>Any content</div>
54
60
 
55
- <footer microzord="vue-footer-app" (hook)="onFooterLifecycleEvent($event)"></footer>
61
+ <footer microzordApp="vue-footer-app" (hook)="onFooterLifecycleEvent($event)"></footer>
56
62
  ```
57
63
 
58
64
  ## Core team
@@ -1,5 +1,5 @@
1
- import { InjectionToken, NgModuleRef } from '@angular/core';
1
+ import { CompilerOptions, InjectionToken, NgModuleRef } from '@angular/core';
2
2
  import { ApplicationConstructor } from '@microzord/core';
3
3
  export declare const APP_NAME: InjectionToken<string>;
4
4
  export declare const ROOT_SELECTOR: InjectionToken<string>;
5
- export declare function createApp<M, Props extends Record<string, any> = Record<string, any>>(bootstrapFn: (props?: any) => Promise<NgModuleRef<M>>, rootSelector: string): ApplicationConstructor;
5
+ export declare function createApp<TModule, Props extends Record<string, unknown> = Record<string, unknown>>(bootstrapFn: (props?: CompilerOptions) => Promise<NgModuleRef<TModule>>, rootSelector: string): ApplicationConstructor;
@@ -0,0 +1,3 @@
1
+ export * from './src/enable-prod-mode';
2
+ export * from './src/create-app';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY2hpbGQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvZW5hYmxlLXByb2QtbW9kZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9jcmVhdGUtYXBwJztcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm96b3JkLWFuZ3VsYXItY2hpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY2hpbGQvbWljcm96b3JkLWFuZ3VsYXItY2hpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,47 @@
1
+ import { InjectFlags, InjectionToken } from '@angular/core';
2
+ import { Application } from '@microzord/core';
3
+ import { Router } from '@angular/router';
4
+ import { MicrozordLifecycleEvent } from '@microzord/core';
5
+ export const APP_NAME = new InjectionToken('App name');
6
+ export const ROOT_SELECTOR = new InjectionToken('Root selector');
7
+ // todo: очень грубая имплементация
8
+ export function createApp(bootstrapFn, rootSelector) {
9
+ // todo: не хватает имплементации хуков, сообщений и навигации
10
+ class AngularApp extends Application {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.router = null;
14
+ this.ngModule = null;
15
+ }
16
+ destroy() {
17
+ super.destroy();
18
+ if (this.ngModule) {
19
+ this.ngModule.destroy();
20
+ this.ngModule = null;
21
+ }
22
+ this.emitHook(MicrozordLifecycleEvent.destroyed());
23
+ }
24
+ async bootstrap(container, props) {
25
+ const containerElement = typeof container === 'string' ? document.querySelector(container) : container;
26
+ if (!containerElement) {
27
+ throw new Error(`No container found for ${container}`);
28
+ }
29
+ const rootElement = document.createElement(rootSelector);
30
+ containerElement.appendChild(rootElement);
31
+ this.ngModule = await bootstrapFn(props);
32
+ this.router = this.ngModule.injector.get(Router, null, InjectFlags.Optional);
33
+ await super.bootstrap(container, props);
34
+ this.emitHook(MicrozordLifecycleEvent.bootstrapped());
35
+ }
36
+ async navigate(url, _props) {
37
+ if (this.router) {
38
+ await this.router.navigateByUrl(url);
39
+ }
40
+ }
41
+ async send(_msg) {
42
+ //
43
+ }
44
+ }
45
+ return AngularApp;
46
+ }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWFwcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jaGlsZC9zcmMvY3JlYXRlLWFwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLFdBQVcsRUFBRSxjQUFjLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFDLFdBQVcsRUFBeUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFDLHVCQUF1QixFQUF3QixNQUFNLGlCQUFpQixDQUFDO0FBRS9FLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGNBQWMsQ0FBUyxVQUFVLENBQUMsQ0FBQztBQUMvRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQVMsZUFBZSxDQUFDLENBQUM7QUFFekUsbUNBQW1DO0FBQ25DLE1BQU0sVUFBVSxTQUFTLENBSXZCLFdBQXVFLEVBQ3ZFLFlBQW9CO0lBRXBCLDhEQUE4RDtJQUM5RCxNQUFNLFVBQXNELFNBQVEsV0FBYztRQUFsRjs7WUFDVSxXQUFNLEdBQWtCLElBQUksQ0FBQztZQUM3QixhQUFRLEdBQWdDLElBQUksQ0FBQztRQTBDdkQsQ0FBQztRQXhDQyxPQUFPO1lBQ0wsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRWhCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7YUFDdEI7WUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBMkIsRUFBRSxLQUFTO1lBQ3BELE1BQU0sZ0JBQWdCLEdBQ3BCLE9BQU8sU0FBUyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBRWhGLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsU0FBUyxFQUFFLENBQUMsQ0FBQzthQUN4RDtZQUVELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFekQsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRTFDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFN0UsTUFBTSxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUV4QyxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBVyxFQUFFLE1BQTJCO1lBQ3JELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDZixNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3RDO1FBQ0gsQ0FBQztRQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBb0M7WUFDN0MsRUFBRTtRQUNKLENBQUM7S0FDRjtJQUVELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBpbGVyT3B0aW9ucywgSW5qZWN0RmxhZ3MsIEluamVjdGlvblRva2VuLCBOZ01vZHVsZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FwcGxpY2F0aW9uLCBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yfSBmcm9tICdAbWljcm96b3JkL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge01pY3Jvem9yZExpZmVjeWNsZUV2ZW50LCBNaWNyb3pvcmRNZXNzYWdlRXZlbnR9IGZyb20gJ0BtaWNyb3pvcmQvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBBUFBfTkFNRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdBcHAgbmFtZScpO1xuZXhwb3J0IGNvbnN0IFJPT1RfU0VMRUNUT1IgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignUm9vdCBzZWxlY3RvcicpO1xuXG4vLyB0b2RvOiDQvtGH0LXQvdGMINCz0YDRg9Cx0LDRjyDQuNC80L/Qu9C10LzQtdC90YLQsNGG0LjRj1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFwcDxcbiAgVE1vZHVsZSxcbiAgUHJvcHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuPihcbiAgYm9vdHN0cmFwRm46IChwcm9wcz86IENvbXBpbGVyT3B0aW9ucykgPT4gUHJvbWlzZTxOZ01vZHVsZVJlZjxUTW9kdWxlPj4sXG4gIHJvb3RTZWxlY3Rvcjogc3RyaW5nLFxuKTogQXBwbGljYXRpb25Db25zdHJ1Y3RvciB7XG4gIC8vIHRvZG86INC90LUg0YXQstCw0YLQsNC10YIg0LjQvNC/0LvQtdC80LXQvdGC0LDRhtC40Lgg0YXRg9C60L7Qsiwg0YHQvtC+0LHRidC10L3QuNC5INC4INC90LDQstC40LPQsNGG0LjQuFxuICBjbGFzcyBBbmd1bGFyQXBwPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFByb3BzPiBleHRlbmRzIEFwcGxpY2F0aW9uPFQ+IHtcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBuZ01vZHVsZTogTmdNb2R1bGVSZWY8VE1vZHVsZT4gfCBudWxsID0gbnVsbDtcblxuICAgIGRlc3Ryb3koKSB7XG4gICAgICBzdXBlci5kZXN0cm95KCk7XG5cbiAgICAgIGlmICh0aGlzLm5nTW9kdWxlKSB7XG4gICAgICAgIHRoaXMubmdNb2R1bGUuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLm5nTW9kdWxlID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5lbWl0SG9vayhNaWNyb3pvcmRMaWZlY3ljbGVFdmVudC5kZXN0cm95ZWQoKSk7XG4gICAgfVxuXG4gICAgYXN5bmMgYm9vdHN0cmFwKGNvbnRhaW5lcjogc3RyaW5nIHwgRWxlbWVudCwgcHJvcHM/OiBUKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICBjb25zdCBjb250YWluZXJFbGVtZW50ID1cbiAgICAgICAgdHlwZW9mIGNvbnRhaW5lciA9PT0gJ3N0cmluZycgPyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGNvbnRhaW5lcikgOiBjb250YWluZXI7XG5cbiAgICAgIGlmICghY29udGFpbmVyRWxlbWVudCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGNvbnRhaW5lciBmb3VuZCBmb3IgJHtjb250YWluZXJ9YCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChyb290U2VsZWN0b3IpO1xuXG4gICAgICBjb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHJvb3RFbGVtZW50KTtcblxuICAgICAgdGhpcy5uZ01vZHVsZSA9IGF3YWl0IGJvb3RzdHJhcEZuKHByb3BzKTtcbiAgICAgIHRoaXMucm91dGVyID0gdGhpcy5uZ01vZHVsZS5pbmplY3Rvci5nZXQoUm91dGVyLCBudWxsLCBJbmplY3RGbGFncy5PcHRpb25hbCk7XG5cbiAgICAgIGF3YWl0IHN1cGVyLmJvb3RzdHJhcChjb250YWluZXIsIHByb3BzKTtcblxuICAgICAgdGhpcy5lbWl0SG9vayhNaWNyb3pvcmRMaWZlY3ljbGVFdmVudC5ib290c3RyYXBwZWQoKSk7XG4gICAgfVxuXG4gICAgYXN5bmMgbmF2aWdhdGUodXJsOiBzdHJpbmcsIF9wcm9wczogdW5rbm93biB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgaWYgKHRoaXMucm91dGVyKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBzZW5kKF9tc2c6IHN0cmluZyB8IE1pY3Jvem9yZE1lc3NhZ2VFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgLy9cbiAgICB9XG4gIH1cblxuICByZXR1cm4gQW5ndWxhckFwcDtcbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import { enableProdMode as angularEnableProdMode } from '@angular/core';
2
+ /**
3
+ * Disable Angular's development mode safely
4
+ */
5
+ export function enableProdMode() {
6
+ try {
7
+ angularEnableProdMode();
8
+ }
9
+ catch (e) {
10
+ //
11
+ }
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5hYmxlLXByb2QtbW9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jaGlsZC9zcmMvZW5hYmxlLXByb2QtbW9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsY0FBYyxJQUFJLHFCQUFxQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXRFOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGNBQWM7SUFDNUIsSUFBSTtRQUNGLHFCQUFxQixFQUFFLENBQUM7S0FDekI7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLEVBQUU7S0FDSDtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2VuYWJsZVByb2RNb2RlIGFzIGFuZ3VsYXJFbmFibGVQcm9kTW9kZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogRGlzYWJsZSBBbmd1bGFyJ3MgZGV2ZWxvcG1lbnQgbW9kZSBzYWZlbHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuYWJsZVByb2RNb2RlKCkge1xuICB0cnkge1xuICAgIGFuZ3VsYXJFbmFibGVQcm9kTW9kZSgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy9cbiAgfVxufVxuIl19
@@ -0,0 +1,9 @@
1
+ export * from './lib/microzord-app/microzord-app.directive';
2
+ export * from './lib/microzord-app/microzord-app.module';
3
+ export * from './lib/microzord-module/microzord-ng-module.directive';
4
+ export * from './lib/microzord-module/microzord-ng-module.module';
5
+ export * from './lib/microzord-host.module';
6
+ export * from './lib/services/registry.service';
7
+ export * from './lib/tokens/microzord-apps';
8
+ export * from './lib/types/ng-module';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLGNBQWMsbURBQW1ELENBQUM7QUFFbEUsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QyxjQUFjLGlDQUFpQyxDQUFDO0FBRWhELGNBQWMsNkJBQTZCLENBQUM7QUFFNUMsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL21pY3Jvem9yZC1hcHAvbWljcm96b3JkLWFwcC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWljcm96b3JkLWFwcC9taWNyb3pvcmQtYXBwLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9taWNyb3pvcmQtbW9kdWxlL21pY3Jvem9yZC1uZy1tb2R1bGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21pY3Jvem9yZC1tb2R1bGUvbWljcm96b3JkLW5nLW1vZHVsZS5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9taWNyb3pvcmQtaG9zdC5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9yZWdpc3RyeS5zZXJ2aWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9rZW5zL21pY3Jvem9yZC1hcHBzJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdHlwZXMvbmctbW9kdWxlJztcblxuZXhwb3J0IHtBcHBSZWdpc3RyYXRpb25PcHRpb25zfSBmcm9tICdAbWljcm96b3JkL2NvcmUnO1xuIl19
@@ -0,0 +1,52 @@
1
+ import { Directive, ElementRef, ErrorHandler, Input, NgZone, Output, } from '@angular/core';
2
+ import { bootstrapApp, constructApp, } from '@microzord/core';
3
+ import { NEVER, Observable, Subject, of } from 'rxjs';
4
+ import { catchError, shareReplay, switchMap, takeUntil, tap } from 'rxjs/operators';
5
+ import { complete } from '../operators/complete';
6
+ import * as i0 from "@angular/core";
7
+ export class MicrozordAppDirective {
8
+ set name(appName) {
9
+ this.ngZone.runOutsideAngular(() => this.name$.next(appName));
10
+ }
11
+ constructor(elementRef, ngZone, errorHandler) {
12
+ this.elementRef = elementRef;
13
+ this.ngZone = ngZone;
14
+ this.errorHandler = errorHandler;
15
+ this.destroy$ = new Subject();
16
+ this.name$ = new Subject();
17
+ const app$ = this.name$.pipe(tap(() => NgZone.assertNotInAngularZone()), switchMap(name => (name ? constructApp(name) : of(null))), catchError(error => this.handleError(error)), takeUntil(this.destroy$), shareReplay(1));
18
+ this.application = app$.pipe(complete(app => {
19
+ app?.destroy();
20
+ }), switchMap(name => name
21
+ ? bootstrapApp(name, this.elementRef.nativeElement).pipe(catchError(error => this.handleError(error)))
22
+ : of(null)), takeUntil(this.destroy$), shareReplay(1));
23
+ this.hook = app$.pipe(switchMap(app => app
24
+ ? new Observable(subscriber => app.onHook(event => subscriber.next(event)))
25
+ : NEVER));
26
+ this.application.subscribe();
27
+ }
28
+ ngOnDestroy() {
29
+ this.destroy$.next();
30
+ this.destroy$.complete();
31
+ }
32
+ handleError(error) {
33
+ this.errorHandler.handleError(error);
34
+ return of(null);
35
+ }
36
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: MicrozordAppDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ErrorHandler }], target: i0.ɵɵFactoryTarget.Directive }); }
37
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.8", type: MicrozordAppDirective, selector: "[microzordApp]:not(ng-container)", inputs: { name: ["microzordApp", "name"] }, outputs: { hook: "hook", application: "application" }, ngImport: i0 }); }
38
+ }
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: MicrozordAppDirective, decorators: [{
40
+ type: Directive,
41
+ args: [{
42
+ selector: '[microzordApp]:not(ng-container)',
43
+ }]
44
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ErrorHandler }]; }, propDecorators: { hook: [{
45
+ type: Output
46
+ }], application: [{
47
+ type: Output
48
+ }], name: [{
49
+ type: Input,
50
+ args: ['microzordApp']
51
+ }] } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm96b3JkLWFwcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9taWNyb3pvcmQtYXBwL21pY3Jvem9yZC1hcHAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsWUFBWSxFQUNaLFlBQVksR0FDYixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7O0FBSy9DLE1BQU0sT0FBTyxxQkFBcUI7SUFPaEMsSUFDSSxJQUFJLENBQUMsT0FBZTtRQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUtELFlBQ1UsVUFBc0IsRUFDdEIsTUFBYyxFQUNkLFlBQTBCO1FBRjFCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBTjVCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQy9CLFVBQUssR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBT3BDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUMxQixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLENBQUMsRUFDMUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDekQsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUM1QyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUN4QixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FDMUIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2IsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNmLElBQUk7WUFDRixDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FDcEQsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUM3QztZQUNILENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ2IsRUFDRCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUN4QixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUVGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FDbkIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQ2QsR0FBRztZQUNELENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBMEIsVUFBVSxDQUFDLEVBQUUsQ0FDbkQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDNUM7WUFDSCxDQUFDLENBQUMsS0FBSyxDQUNWLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFjO1FBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUM7OEdBaEVVLHFCQUFxQjtrR0FBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUhqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQ0FBa0M7aUJBQzdDO2lKQUdDLElBQUk7c0JBREgsTUFBTTtnQkFJUCxXQUFXO3NCQURWLE1BQU07Z0JBSUgsSUFBSTtzQkFEUCxLQUFLO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEVycm9ySGFuZGxlcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb24sXG4gIE1pY3Jvem9yZExpZmVjeWNsZUV2ZW50LFxuICBib290c3RyYXBBcHAsXG4gIGNvbnN0cnVjdEFwcCxcbn0gZnJvbSAnQG1pY3Jvem9yZC9jb3JlJztcbmltcG9ydCB7TkVWRVIsIE9ic2VydmFibGUsIFN1YmplY3QsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Y29tcGxldGV9IGZyb20gJy4uL29wZXJhdG9ycy9jb21wbGV0ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttaWNyb3pvcmRBcHBdOm5vdChuZy1jb250YWluZXIpJyxcbn0pXG5leHBvcnQgY2xhc3MgTWljcm96b3JkQXBwRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQE91dHB1dCgpXG4gIGhvb2s6IE9ic2VydmFibGU8TWljcm96b3JkTGlmZWN5Y2xlRXZlbnQ+O1xuXG4gIEBPdXRwdXQoKVxuICBhcHBsaWNhdGlvbjogT2JzZXJ2YWJsZTxBcHBsaWNhdGlvbiB8IG51bGw+O1xuXG4gIEBJbnB1dCgnbWljcm96b3JkQXBwJylcbiAgc2V0IG5hbWUoYXBwTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gdGhpcy5uYW1lJC5uZXh0KGFwcE5hbWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIG5hbWUkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXIsXG4gICkge1xuICAgIGNvbnN0IGFwcCQgPSB0aGlzLm5hbWUkLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gTmdab25lLmFzc2VydE5vdEluQW5ndWxhclpvbmUoKSksXG4gICAgICBzd2l0Y2hNYXAobmFtZSA9PiAobmFtZSA/IGNvbnN0cnVjdEFwcChuYW1lKSA6IG9mKG51bGwpKSksXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgICk7XG5cbiAgICB0aGlzLmFwcGxpY2F0aW9uID0gYXBwJC5waXBlKFxuICAgICAgY29tcGxldGUoYXBwID0+IHtcbiAgICAgICAgYXBwPy5kZXN0cm95KCk7XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcChuYW1lID0+XG4gICAgICAgIG5hbWVcbiAgICAgICAgICA/IGJvb3RzdHJhcEFwcChuYW1lLCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkucGlwZShcbiAgICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBvZihudWxsKSxcbiAgICAgICksXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICApO1xuXG4gICAgdGhpcy5ob29rID0gYXBwJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKGFwcCA9PlxuICAgICAgICBhcHBcbiAgICAgICAgICA/IG5ldyBPYnNlcnZhYmxlPE1pY3Jvem9yZExpZmVjeWNsZUV2ZW50PihzdWJzY3JpYmVyID0+XG4gICAgICAgICAgICAgIGFwcC5vbkhvb2soZXZlbnQgPT4gc3Vic2NyaWJlci5uZXh0KGV2ZW50KSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBORVZFUixcbiAgICAgICksXG4gICAgKTtcblxuICAgIHRoaXMuYXBwbGljYXRpb24uc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiB1bmtub3duKTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiBvZihudWxsKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,16 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { MicrozordAppDirective } from './microzord-app.directive';
3
+ import * as i0 from "@angular/core";
4
+ export class MicrozordAppModule {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: MicrozordAppModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.8", ngImport: i0, type: MicrozordAppModule, declarations: [MicrozordAppDirective], exports: [MicrozordAppDirective] }); }
7
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: MicrozordAppModule }); }
8
+ }
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: MicrozordAppModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ declarations: [MicrozordAppDirective],
13
+ exports: [MicrozordAppDirective],
14
+ }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm96b3JkLWFwcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9taWNyb3pvcmQtYXBwL21pY3Jvem9yZC1hcHAubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7O0FBTWhFLE1BQU0sT0FBTyxrQkFBa0I7OEdBQWxCLGtCQUFrQjsrR0FBbEIsa0JBQWtCLGlCQUhkLHFCQUFxQixhQUMxQixxQkFBcUI7K0dBRXBCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFKOUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01pY3Jvem9yZEFwcERpcmVjdGl2ZX0gZnJvbSAnLi9taWNyb3pvcmQtYXBwLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW01pY3Jvem9yZEFwcERpcmVjdGl2ZV0sXG4gIGV4cG9ydHM6IFtNaWNyb3pvcmRBcHBEaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBNaWNyb3pvcmRBcHBNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,50 @@
1
+ import { Inject, NgModule } from '@angular/core';
2
+ import { MICROZORD_APPS, MICROZORD_NG_MODULES } from './tokens/microzord-apps';
3
+ import { RegistryService } from './services/registry.service';
4
+ import { MicrozordAppModule } from './microzord-app/microzord-app.module';
5
+ import { MicrozordNgModuleModule } from './microzord-module/microzord-ng-module.module';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "./services/registry.service";
8
+ export class MicrozordHostModule {
9
+ constructor(allApps, allModules, registry) {
10
+ allApps.forEach(apps => registry.registerMany(apps));
11
+ allModules.forEach(modules => registry.registerMany(modules));
12
+ }
13
+ static register({ apps, modules, }) {
14
+ return {
15
+ ngModule: MicrozordHostModule,
16
+ providers: [
17
+ apps
18
+ ? {
19
+ provide: MICROZORD_APPS,
20
+ useValue: apps,
21
+ multi: true,
22
+ }
23
+ : [],
24
+ modules
25
+ ? {
26
+ provide: MICROZORD_NG_MODULES,
27
+ useValue: modules,
28
+ multi: true,
29
+ }
30
+ : [],
31
+ ],
32
+ };
33
+ }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: MicrozordHostModule, deps: [{ token: MICROZORD_APPS }, { token: MICROZORD_NG_MODULES }, { token: i1.RegistryService }], target: i0.ɵɵFactoryTarget.NgModule }); }
35
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.8", ngImport: i0, type: MicrozordHostModule, exports: [MicrozordAppModule, MicrozordNgModuleModule] }); }
36
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: MicrozordHostModule, imports: [MicrozordAppModule, MicrozordNgModuleModule] }); }
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: MicrozordHostModule, decorators: [{
39
+ type: NgModule,
40
+ args: [{
41
+ exports: [MicrozordAppModule, MicrozordNgModuleModule],
42
+ }]
43
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
44
+ type: Inject,
45
+ args: [MICROZORD_APPS]
46
+ }] }, { type: undefined, decorators: [{
47
+ type: Inject,
48
+ args: [MICROZORD_NG_MODULES]
49
+ }] }, { type: i1.RegistryService }]; } });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm96b3JkLWhvc3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvbWljcm96b3JkLWhvc3QubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQXVCLFFBQVEsRUFBTyxNQUFNLGVBQWUsQ0FBQztBQUcxRSxPQUFPLEVBQUMsY0FBYyxFQUFFLG9CQUFvQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDN0UsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLCtDQUErQyxDQUFDOzs7QUFXdEYsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUMwQixPQUFtQyxFQUM3QixVQUEyQyxFQUN6RSxRQUF5QjtRQUV6QixPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JELFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFDZCxJQUFJLEVBQ0osT0FBTyxHQUNvQjtRQUMzQixPQUFPO1lBQ0wsUUFBUSxFQUFFLG1CQUFtQjtZQUM3QixTQUFTLEVBQUU7Z0JBQ1QsSUFBSTtvQkFDRixDQUFDLENBQUM7d0JBQ0UsT0FBTyxFQUFFLGNBQWM7d0JBQ3ZCLFFBQVEsRUFBRSxJQUFJO3dCQUNkLEtBQUssRUFBRSxJQUFJO3FCQUNaO29CQUNILENBQUMsQ0FBQyxFQUFFO2dCQUNOLE9BQU87b0JBQ0wsQ0FBQyxDQUFDO3dCQUNFLE9BQU8sRUFBRSxvQkFBb0I7d0JBQzdCLFFBQVEsRUFBRSxPQUFPO3dCQUNqQixLQUFLLEVBQUUsSUFBSTtxQkFDWjtvQkFDSCxDQUFDLENBQUMsRUFBRTthQUNQO1NBQ0YsQ0FBQztJQUNKLENBQUM7OEdBakNVLG1CQUFtQixrQkFFcEIsY0FBYyxhQUNkLG9CQUFvQjsrR0FIbkIsbUJBQW1CLFlBRnBCLGtCQUFrQixFQUFFLHVCQUF1QjsrR0FFMUMsbUJBQW1CLFlBRnBCLGtCQUFrQixFQUFFLHVCQUF1Qjs7MkZBRTFDLG1CQUFtQjtrQkFIL0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSx1QkFBdUIsQ0FBQztpQkFDdkQ7OzBCQUdJLE1BQU07MkJBQUMsY0FBYzs7MEJBQ3JCLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QXBwUmVnaXN0cmF0aW9uT3B0aW9ucywgRW50aXR5UmVnaXN0cmF0aW9uT3B0aW9uc30gZnJvbSAnQG1pY3Jvem9yZC9jb3JlJztcblxuaW1wb3J0IHtNSUNST1pPUkRfQVBQUywgTUlDUk9aT1JEX05HX01PRFVMRVN9IGZyb20gJy4vdG9rZW5zL21pY3Jvem9yZC1hcHBzJztcbmltcG9ydCB7UmVnaXN0cnlTZXJ2aWNlfSBmcm9tICcuL3NlcnZpY2VzL3JlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHtNaWNyb3pvcmRBcHBNb2R1bGV9IGZyb20gJy4vbWljcm96b3JkLWFwcC9taWNyb3pvcmQtYXBwLm1vZHVsZSc7XG5pbXBvcnQge01pY3Jvem9yZE5nTW9kdWxlTW9kdWxlfSBmcm9tICcuL21pY3Jvem9yZC1tb2R1bGUvbWljcm96b3JkLW5nLW1vZHVsZS5tb2R1bGUnO1xuaW1wb3J0IHtOZ01vZHVsZVJlZ2lzdHJhdGlvbk9wdGlvbnN9IGZyb20gJy4vdHlwZXMvbmctbW9kdWxlJztcblxuZXhwb3J0IGludGVyZmFjZSBNaWNyb3pvcmRIb3N0TW9kdWxlT3B0aW9ucyB7XG4gIGFwcHM/OiBBcHBSZWdpc3RyYXRpb25PcHRpb25zW107XG4gIG1vZHVsZXM/OiBFbnRpdHlSZWdpc3RyYXRpb25PcHRpb25zPFR5cGU8YW55Pj5bXTtcbn1cblxuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogW01pY3Jvem9yZEFwcE1vZHVsZSwgTWljcm96b3JkTmdNb2R1bGVNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBNaWNyb3pvcmRIb3N0TW9kdWxlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChNSUNST1pPUkRfQVBQUykgYWxsQXBwczogQXBwUmVnaXN0cmF0aW9uT3B0aW9uc1tdW10sXG4gICAgQEluamVjdChNSUNST1pPUkRfTkdfTU9EVUxFUykgYWxsTW9kdWxlczogTmdNb2R1bGVSZWdpc3RyYXRpb25PcHRpb25zW11bXSxcbiAgICByZWdpc3RyeTogUmVnaXN0cnlTZXJ2aWNlLFxuICApIHtcbiAgICBhbGxBcHBzLmZvckVhY2goYXBwcyA9PiByZWdpc3RyeS5yZWdpc3Rlck1hbnkoYXBwcykpO1xuICAgIGFsbE1vZHVsZXMuZm9yRWFjaChtb2R1bGVzID0+IHJlZ2lzdHJ5LnJlZ2lzdGVyTWFueShtb2R1bGVzKSk7XG4gIH1cblxuICBzdGF0aWMgcmVnaXN0ZXIoe1xuICAgIGFwcHMsXG4gICAgbW9kdWxlcyxcbiAgfTogTWljcm96b3JkSG9zdE1vZHVsZU9wdGlvbnMpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE1pY3Jvem9yZEhvc3RNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IE1pY3Jvem9yZEhvc3RNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgYXBwc1xuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBwcm92aWRlOiBNSUNST1pPUkRfQVBQUyxcbiAgICAgICAgICAgICAgdXNlVmFsdWU6IGFwcHMsXG4gICAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogW10sXG4gICAgICAgIG1vZHVsZXNcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgcHJvdmlkZTogTUlDUk9aT1JEX05HX01PRFVMRVMsXG4gICAgICAgICAgICAgIHVzZVZhbHVlOiBtb2R1bGVzLFxuICAgICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IFtdLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,33 @@
1
+ import { Compiler, ComponentFactoryResolver, Injectable, Injector, Optional, ViewContainerRef, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class MicrozordNgCompilerService {
4
+ constructor(compiler, componentFactoryResolver, injector, viewContainerRef) {
5
+ this.compiler = compiler;
6
+ this.componentFactoryResolver = componentFactoryResolver;
7
+ this.injector = injector;
8
+ this.viewContainerRef = viewContainerRef;
9
+ }
10
+ async createModule(Module, injector = this.injector) {
11
+ const moduleFactory = await this.compiler.compileModuleAsync(Module);
12
+ return moduleFactory.create(injector);
13
+ }
14
+ async createEntryPoint(moduleRef, injector = this.injector, viewContainerRef = this.viewContainerRef) {
15
+ const componentFactory = this.componentFactoryResolver.resolveComponentFactory(moduleRef.instance.getEntryPoint());
16
+ viewContainerRef.clear();
17
+ return viewContainerRef.createComponent(componentFactory, undefined, injector, [], moduleRef);
18
+ }
19
+ async createEntryPointFromModule(Module, injector = this.injector, viewContainerRef = this.viewContainerRef) {
20
+ const moduleRef = await this.createModule(Module, injector);
21
+ return this.createEntryPoint(moduleRef, injector, viewContainerRef);
22
+ }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: MicrozordNgCompilerService, deps: [{ token: i0.Compiler }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector, optional: true }, { token: i0.ViewContainerRef, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
24
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: MicrozordNgCompilerService }); }
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: MicrozordNgCompilerService, decorators: [{
27
+ type: Injectable
28
+ }], ctorParameters: function () { return [{ type: i0.Compiler }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector, decorators: [{
29
+ type: Optional
30
+ }] }, { type: i0.ViewContainerRef, decorators: [{
31
+ type: Optional
32
+ }] }]; } });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm96b3JkLW5nLWNvbXBpbGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9taWNyb3pvcmQtbW9kdWxlL21pY3Jvem9yZC1uZy1jb21waWxlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxRQUFRLEVBQ1Isd0JBQXdCLEVBRXhCLFVBQVUsRUFDVixRQUFRLEVBRVIsUUFBUSxFQUVSLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQzs7QUFJdkIsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUNVLFFBQWtCLEVBQ2xCLHdCQUFrRCxFQUVsRCxRQUFrQixFQUVsQixnQkFBa0M7UUFMbEMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBRWxELGFBQVEsR0FBUixRQUFRLENBQVU7UUFFbEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUN6QyxDQUFDO0lBRUosS0FBSyxDQUFDLFlBQVksQ0FHaEIsTUFBZSxFQUFFLFdBQXFCLElBQUksQ0FBQyxRQUFRO1FBQ25ELE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRSxPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0IsQ0FJcEIsU0FBeUIsRUFDekIsV0FBcUIsSUFBSSxDQUFDLFFBQVEsRUFDbEMsbUJBQXFDLElBQUksQ0FBQyxnQkFBZ0I7UUFFMUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsdUJBQXVCLENBQzVFLFNBQVMsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQ25DLENBQUM7UUFFRixnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixPQUFPLGdCQUFnQixDQUFDLGVBQWUsQ0FDckMsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsRUFBRSxFQUNGLFNBQVMsQ0FDVixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQywwQkFBMEIsQ0FJOUIsTUFBZSxFQUNmLFdBQXFCLElBQUksQ0FBQyxRQUFRLEVBQ2xDLG1CQUFxQyxJQUFJLENBQUMsZ0JBQWdCO1FBRTFELE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDNUQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7OEdBbERVLDBCQUEwQjtrSEFBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVOzswQkFLTixRQUFROzswQkFFUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcGlsZXIsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29tcG9uZW50UmVmLFxuICBJbmplY3RhYmxlLFxuICBJbmplY3RvcixcbiAgTmdNb2R1bGVSZWYsXG4gIE9wdGlvbmFsLFxuICBUeXBlLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RW50cnlQb2ludCwgTWljcm96b3JkTmdNb2R1bGV9IGZyb20gJy4uL3R5cGVzL25nLW1vZHVsZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNaWNyb3pvcmROZ0NvbXBpbGVyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29tcGlsZXI6IENvbXBpbGVyLFxuICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgQE9wdGlvbmFsKClcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBAT3B0aW9uYWwoKVxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgKSB7fVxuXG4gIGFzeW5jIGNyZWF0ZU1vZHVsZTxcbiAgICBUIGV4dGVuZHMgRW50cnlQb2ludCA9IEVudHJ5UG9pbnQsXG4gICAgTSBleHRlbmRzIE1pY3Jvem9yZE5nTW9kdWxlPFQ+ID0gTWljcm96b3JkTmdNb2R1bGU8VD4sXG4gID4oTW9kdWxlOiBUeXBlPE0+LCBpbmplY3RvcjogSW5qZWN0b3IgPSB0aGlzLmluamVjdG9yKTogUHJvbWlzZTxOZ01vZHVsZVJlZjxNPj4ge1xuICAgIGNvbnN0IG1vZHVsZUZhY3RvcnkgPSBhd2FpdCB0aGlzLmNvbXBpbGVyLmNvbXBpbGVNb2R1bGVBc3luYyhNb2R1bGUpO1xuICAgIHJldHVybiBtb2R1bGVGYWN0b3J5LmNyZWF0ZShpbmplY3Rvcik7XG4gIH1cblxuICBhc3luYyBjcmVhdGVFbnRyeVBvaW50PFxuICAgIFQgZXh0ZW5kcyBFbnRyeVBvaW50ID0gRW50cnlQb2ludCxcbiAgICBNIGV4dGVuZHMgTWljcm96b3JkTmdNb2R1bGU8VD4gPSBNaWNyb3pvcmROZ01vZHVsZTxUPixcbiAgPihcbiAgICBtb2R1bGVSZWY6IE5nTW9kdWxlUmVmPE0+LFxuICAgIGluamVjdG9yOiBJbmplY3RvciA9IHRoaXMuaW5qZWN0b3IsXG4gICAgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgKTogUHJvbWlzZTxDb21wb25lbnRSZWY8VD4+IHtcbiAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoXG4gICAgICBtb2R1bGVSZWYuaW5zdGFuY2UuZ2V0RW50cnlQb2ludCgpLFxuICAgICk7XG5cbiAgICB2aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgcmV0dXJuIHZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgY29tcG9uZW50RmFjdG9yeSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGluamVjdG9yLFxuICAgICAgW10sXG4gICAgICBtb2R1bGVSZWYsXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUVudHJ5UG9pbnRGcm9tTW9kdWxlPFxuICAgIFQgZXh0ZW5kcyBFbnRyeVBvaW50ID0gRW50cnlQb2ludCxcbiAgICBNIGV4dGVuZHMgTWljcm96b3JkTmdNb2R1bGU8VD4gPSBNaWNyb3pvcmROZ01vZHVsZTxUPixcbiAgPihcbiAgICBNb2R1bGU6IFR5cGU8TT4sXG4gICAgaW5qZWN0b3I6IEluamVjdG9yID0gdGhpcy5pbmplY3RvcixcbiAgICB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLFxuICApOiBQcm9taXNlPENvbXBvbmVudFJlZjxUPj4ge1xuICAgIGNvbnN0IG1vZHVsZVJlZiA9IGF3YWl0IHRoaXMuY3JlYXRlTW9kdWxlKE1vZHVsZSwgaW5qZWN0b3IpO1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZUVudHJ5UG9pbnQobW9kdWxlUmVmLCBpbmplY3Rvciwgdmlld0NvbnRhaW5lclJlZik7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,53 @@
1
+ import { Directive, ErrorHandler, Input, NgModuleRef, NgZone, Output, } from '@angular/core';
2
+ import { Observable, of, Subject } from 'rxjs';
3
+ import { catchError, map, shareReplay, switchMap, takeUntil, tap } from 'rxjs/operators';
4
+ import { loadEntity } from '@microzord/core';
5
+ import { complete } from '../operators/complete';
6
+ import { MicrozordNgCompilerService } from './microzord-ng-compiler.service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "./microzord-ng-compiler.service";
9
+ export class MicrozordNgModuleDirective {
10
+ set name(moduleName) {
11
+ this.ngZone.runOutsideAngular(() => this.name$.next(moduleName));
12
+ }
13
+ constructor(ngZone, mzNgCompiler, errorHandler) {
14
+ this.ngZone = ngZone;
15
+ this.mzNgCompiler = mzNgCompiler;
16
+ this.errorHandler = errorHandler;
17
+ this.name$ = new Subject();
18
+ this.destroy$ = new Subject();
19
+ this.module = this.name$.pipe(tap(() => NgZone.assertNotInAngularZone()), switchMap(name => name
20
+ ? this.loadModuleAndBootstrap(name).pipe(catchError(error => {
21
+ this.errorHandler.handleError(error);
22
+ return of(null);
23
+ }))
24
+ : of(null)), map(componentRef => componentRef?.injector.get(NgModuleRef) ?? null), shareReplay(1), takeUntil(this.destroy$));
25
+ this.module.subscribe();
26
+ }
27
+ loadModuleAndBootstrap(name) {
28
+ return loadEntity(name).pipe(switchMap(Module => this.mzNgCompiler.createEntryPointFromModule(Module)), complete(componentRef => this.destroyComponentAndModule(componentRef)));
29
+ }
30
+ destroyComponentAndModule(componentRef) {
31
+ componentRef.destroy();
32
+ componentRef.injector.get(NgModuleRef).destroy();
33
+ }
34
+ ngOnDestroy() {
35
+ this.destroy$.next();
36
+ this.destroy$.complete();
37
+ }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: MicrozordNgModuleDirective, deps: [{ token: i0.NgZone }, { token: i1.MicrozordNgCompilerService }, { token: i0.ErrorHandler }], target: i0.ɵɵFactoryTarget.Directive }); }
39
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.8", type: MicrozordNgModuleDirective, selector: "[microzordNgModule]", inputs: { name: ["microzordNgModule", "name"] }, outputs: { module: "module" }, providers: [MicrozordNgCompilerService], ngImport: i0 }); }
40
+ }
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: MicrozordNgModuleDirective, decorators: [{
42
+ type: Directive,
43
+ args: [{
44
+ selector: '[microzordNgModule]',
45
+ providers: [MicrozordNgCompilerService],
46
+ }]
47
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.MicrozordNgCompilerService }, { type: i0.ErrorHandler }]; }, propDecorators: { module: [{
48
+ type: Output
49
+ }], name: [{
50
+ type: Input,
51
+ args: ['microzordNgModule']
52
+ }] } });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm96b3JkLW5nLW1vZHVsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9taWNyb3pvcmQtbW9kdWxlL21pY3Jvem9yZC1uZy1tb2R1bGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxXQUFXLEVBQ1gsTUFBTSxFQUVOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBTTNFLE1BQU0sT0FBTywwQkFBMEI7SUFPckMsSUFDSSxJQUFJLENBQUMsVUFBeUI7UUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxZQUNVLE1BQWMsRUFDZCxZQUF3QyxFQUN4QyxZQUEwQjtRQUYxQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsaUJBQVksR0FBWixZQUFZLENBQTRCO1FBQ3hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBZDVCLFVBQUssR0FBRyxJQUFJLE9BQU8sRUFBaUIsQ0FBQztRQUNyQyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQWVyQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUMzQixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLENBQUMsRUFDMUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ2YsSUFBSTtZQUNGLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNwQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQixDQUFDLENBQUMsQ0FDSDtZQUNILENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ2IsRUFDRCxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsRUFDcEUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ3pCLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxJQUFZO1FBQ3pDLE9BQU8sVUFBVSxDQUF5QixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ2xELFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsMEJBQTBCLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDekUsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQ3ZFLENBQUM7SUFDSixDQUFDO0lBRU8seUJBQXlCLENBQy9CLFlBQTZCO1FBRTdCLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN2QixZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOzhHQXREVSwwQkFBMEI7a0dBQTFCLDBCQUEwQiw4SEFGMUIsQ0FBQywwQkFBMEIsQ0FBQzs7MkZBRTVCLDBCQUEwQjtrQkFKdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixTQUFTLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztpQkFDeEM7aUtBTUMsTUFBTTtzQkFETCxNQUFNO2dCQUlILElBQUk7c0JBRFAsS0FBSzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRXJyb3JIYW5kbGVyLFxuICBJbnB1dCxcbiAgTmdNb2R1bGVSZWYsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZiwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIG1hcCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7bG9hZEVudGl0eX0gZnJvbSAnQG1pY3Jvem9yZC9jb3JlJztcbmltcG9ydCB7RW50cnlQb2ludCwgTWljcm96b3JkTmdNb2R1bGV9IGZyb20gJy4uL3R5cGVzL25nLW1vZHVsZSc7XG5pbXBvcnQge2NvbXBsZXRlfSBmcm9tICcuLi9vcGVyYXRvcnMvY29tcGxldGUnO1xuaW1wb3J0IHtNaWNyb3pvcmROZ0NvbXBpbGVyU2VydmljZX0gZnJvbSAnLi9taWNyb3pvcmQtbmctY29tcGlsZXIuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttaWNyb3pvcmROZ01vZHVsZV0nLFxuICBwcm92aWRlcnM6IFtNaWNyb3pvcmROZ0NvbXBpbGVyU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIE1pY3Jvem9yZE5nTW9kdWxlRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBuYW1lJCA9IG5ldyBTdWJqZWN0PHN0cmluZyB8IG51bGw+KCk7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIEBPdXRwdXQoKVxuICBtb2R1bGU6IE9ic2VydmFibGU8TmdNb2R1bGVSZWY8YW55PiB8IG51bGw+O1xuXG4gIEBJbnB1dCgnbWljcm96b3JkTmdNb2R1bGUnKVxuICBzZXQgbmFtZShtb2R1bGVOYW1lOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gdGhpcy5uYW1lJC5uZXh0KG1vZHVsZU5hbWUpKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBtek5nQ29tcGlsZXI6IE1pY3Jvem9yZE5nQ29tcGlsZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXIsXG4gICkge1xuICAgIHRoaXMubW9kdWxlID0gdGhpcy5uYW1lJC5waXBlKFxuICAgICAgdGFwKCgpID0+IE5nWm9uZS5hc3NlcnROb3RJbkFuZ3VsYXJab25lKCkpLFxuICAgICAgc3dpdGNoTWFwKG5hbWUgPT5cbiAgICAgICAgbmFtZVxuICAgICAgICAgID8gdGhpcy5sb2FkTW9kdWxlQW5kQm9vdHN0cmFwKG5hbWUpLnBpcGUoXG4gICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogb2YobnVsbCksXG4gICAgICApLFxuICAgICAgbWFwKGNvbXBvbmVudFJlZiA9PiBjb21wb25lbnRSZWY/LmluamVjdG9yLmdldChOZ01vZHVsZVJlZikgPz8gbnVsbCksXG4gICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICApO1xuXG4gICAgdGhpcy5tb2R1bGUuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRNb2R1bGVBbmRCb290c3RyYXAobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxDb21wb25lbnRSZWY8RW50cnlQb2ludD4+IHtcbiAgICByZXR1cm4gbG9hZEVudGl0eTxhbnksIE1pY3Jvem9yZE5nTW9kdWxlPihuYW1lKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKE1vZHVsZSA9PiB0aGlzLm16TmdDb21waWxlci5jcmVhdGVFbnRyeVBvaW50RnJvbU1vZHVsZShNb2R1bGUpKSxcbiAgICAgIGNvbXBsZXRlKGNvbXBvbmVudFJlZiA9PiB0aGlzLmRlc3Ryb3lDb21wb25lbnRBbmRNb2R1bGUoY29tcG9uZW50UmVmKSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveUNvbXBvbmVudEFuZE1vZHVsZTxUIGV4dGVuZHMgRW50cnlQb2ludCA9IEVudHJ5UG9pbnQ+KFxuICAgIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFQ+LFxuICApIHtcbiAgICBjb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgIGNvbXBvbmVudFJlZi5pbmplY3Rvci5nZXQoTmdNb2R1bGVSZWYpLmRlc3Ryb3koKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,16 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { MicrozordNgModuleDirective } from './microzord-ng-module.directive';
3
+ import * as i0 from "@angular/core";
4
+ export class MicrozordNgModuleModule {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: MicrozordNgModuleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.8", ngImport: i0, type: MicrozordNgModuleModule, declarations: [MicrozordNgModuleDirective], exports: [MicrozordNgModuleDirective] }); }
7
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: MicrozordNgModuleModule }); }
8
+ }
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: MicrozordNgModuleModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ declarations: [MicrozordNgModuleDirective],
13
+ exports: [MicrozordNgModuleDirective],
14
+ }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm96b3JkLW5nLW1vZHVsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9taWNyb3pvcmQtbW9kdWxlL21pY3Jvem9yZC1uZy1tb2R1bGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0saUNBQWlDLENBQUM7O0FBTTNFLE1BQU0sT0FBTyx1QkFBdUI7OEdBQXZCLHVCQUF1QjsrR0FBdkIsdUJBQXVCLGlCQUhuQiwwQkFBMEIsYUFDL0IsMEJBQTBCOytHQUV6Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBSm5DLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQzFDLE9BQU8sRUFBRSxDQUFDLDBCQUEwQixDQUFDO2lCQUN0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNaWNyb3pvcmROZ01vZHVsZURpcmVjdGl2ZX0gZnJvbSAnLi9taWNyb3pvcmQtbmctbW9kdWxlLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW01pY3Jvem9yZE5nTW9kdWxlRGlyZWN0aXZlXSxcbiAgZXhwb3J0czogW01pY3Jvem9yZE5nTW9kdWxlRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgTWljcm96b3JkTmdNb2R1bGVNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ import { NEVER } from 'rxjs';
2
+ import { finalize, startWith, switchMap } from 'rxjs/operators';
3
+ export const complete = (fn) => switchMap((value) => NEVER.pipe(startWith(value), finalize(() => {
4
+ fn(value);
5
+ })));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxldGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9vcGVyYXRvcnMvY29tcGxldGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBSSxFQUFzQixFQUFFLEVBQUUsQ0FDcEQsU0FBUyxDQUFDLENBQUMsS0FBUSxFQUFFLEVBQUUsQ0FDckIsS0FBSyxDQUFDLElBQUksQ0FDUixTQUFTLENBQUMsS0FBSyxDQUFDLEVBQ2hCLFFBQVEsQ0FBQyxHQUFHLEVBQUU7SUFDWixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDWixDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05FVkVSfSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmluYWxpemUsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBjb25zdCBjb21wbGV0ZSA9IDxUPihmbjogKHZhbHVlOiBUKSA9PiB2b2lkKSA9PlxuICBzd2l0Y2hNYXAoKHZhbHVlOiBUKSA9PlxuICAgIE5FVkVSLnBpcGUoXG4gICAgICBzdGFydFdpdGgodmFsdWUpLFxuICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICBmbih2YWx1ZSk7XG4gICAgICB9KSxcbiAgICApLFxuICApO1xuIl19
@@ -0,0 +1,20 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { registerEntity } from '@microzord/core';
3
+ import * as i0 from "@angular/core";
4
+ export class RegistryService {
5
+ registerMany(apps) {
6
+ apps.forEach(app => this.register(app));
7
+ }
8
+ register(options) {
9
+ registerEntity(options);
10
+ }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
12
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RegistryService, providedIn: 'root' }); }
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RegistryService, decorators: [{
15
+ type: Injectable,
16
+ args: [{
17
+ providedIn: 'root',
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL3NlcnZpY2VzL3JlZ2lzdHJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQXlCLGNBQWMsRUFBQyxNQUFNLGlCQUFpQixDQUFDOztBQU12RSxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFZLENBQ1YsSUFBeUU7UUFFekUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQTZEO1FBQ3BFLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQixDQUFDOzhHQVRVLGVBQWU7a0hBQWYsZUFBZSxjQUZkLE1BQU07OzJGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QXBwUmVnaXN0cmF0aW9uT3B0aW9ucywgcmVnaXN0ZXJFbnRpdHl9IGZyb20gJ0BtaWNyb3pvcmQvY29yZSc7XG5pbXBvcnQge05nTW9kdWxlUmVnaXN0cmF0aW9uT3B0aW9uc30gZnJvbSAnLi4vdHlwZXMvbmctbW9kdWxlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFJlZ2lzdHJ5U2VydmljZSB7XG4gIHJlZ2lzdGVyTWFueShcbiAgICBhcHBzOiBSZWFkb25seUFycmF5PEFwcFJlZ2lzdHJhdGlvbk9wdGlvbnMgfCBOZ01vZHVsZVJlZ2lzdHJhdGlvbk9wdGlvbnM+LFxuICApIHtcbiAgICBhcHBzLmZvckVhY2goYXBwID0+IHRoaXMucmVnaXN0ZXIoYXBwKSk7XG4gIH1cblxuICByZWdpc3RlcihvcHRpb25zOiBBcHBSZWdpc3RyYXRpb25PcHRpb25zIHwgTmdNb2R1bGVSZWdpc3RyYXRpb25PcHRpb25zKSB7XG4gICAgcmVnaXN0ZXJFbnRpdHkob3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,8 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const MICROZORD_APPS = new InjectionToken('Microzord apps', {
3
+ factory: () => [],
4
+ });
5
+ export const MICROZORD_NG_MODULES = new InjectionToken('Microzord Angular modules', {
6
+ factory: () => [],
7
+ });
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm96b3JkLWFwcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi90b2tlbnMvbWljcm96b3JkLWFwcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUc3QyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQzlDLGdCQUFnQixFQUNoQjtJQUNFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO0NBQ2xCLENBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUNwRCwyQkFBMkIsRUFDM0I7SUFDRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtDQUNsQixDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FwcFJlZ2lzdHJhdGlvbk9wdGlvbnN9IGZyb20gJ0BtaWNyb3pvcmQvY29yZSc7XG5pbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdNb2R1bGVSZWdpc3RyYXRpb25PcHRpb25zfSBmcm9tICcuLi90eXBlcy9uZy1tb2R1bGUnO1xuXG5leHBvcnQgY29uc3QgTUlDUk9aT1JEX0FQUFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48QXBwUmVnaXN0cmF0aW9uT3B0aW9uc1tdW10+KFxuICAnTWljcm96b3JkIGFwcHMnLFxuICB7XG4gICAgZmFjdG9yeTogKCkgPT4gW10sXG4gIH0sXG4pO1xuXG5leHBvcnQgY29uc3QgTUlDUk9aT1JEX05HX01PRFVMRVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48TmdNb2R1bGVSZWdpc3RyYXRpb25PcHRpb25zW11bXT4oXG4gICdNaWNyb3pvcmQgQW5ndWxhciBtb2R1bGVzJyxcbiAge1xuICAgIGZhY3Rvcnk6ICgpID0+IFtdLFxuICB9LFxuKTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvdHlwZXMvbmctbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtFbnRpdHlSZWdpc3RyYXRpb25PcHRpb25zfSBmcm9tICdAbWljcm96b3JkL2NvcmUnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBFbnRyeVBvaW50IHtcbiAgLy9cbn1cblxuZXhwb3J0IGludGVyZmFjZSBNaWNyb3pvcmROZ01vZHVsZTxUIGV4dGVuZHMgRW50cnlQb2ludCA9IEVudHJ5UG9pbnQ+IHtcbiAgZ2V0RW50cnlQb2ludCgpOiBUeXBlPFQ+O1xufVxuXG5leHBvcnQgdHlwZSBOZ01vZHVsZVJlZ2lzdHJhdGlvbk9wdGlvbnMgPSBFbnRpdHlSZWdpc3RyYXRpb25PcHRpb25zPFxuICBUeXBlPE1pY3Jvem9yZE5nTW9kdWxlPlxuPjtcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm96b3JkLWFuZ3VsYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL21pY3Jvem9yZC1hbmd1bGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,65 @@
1
+ import { enableProdMode as enableProdMode$1, InjectionToken, InjectFlags } from '@angular/core';
2
+ import { Application, MicrozordLifecycleEvent } from '@microzord/core';
3
+ import { Router } from '@angular/router';
4
+
5
+ /**
6
+ * Disable Angular's development mode safely
7
+ */
8
+ function enableProdMode() {
9
+ try {
10
+ enableProdMode$1();
11
+ }
12
+ catch (e) {
13
+ //
14
+ }
15
+ }
16
+
17
+ const APP_NAME = new InjectionToken('App name');
18
+ const ROOT_SELECTOR = new InjectionToken('Root selector');
19
+ // todo: очень грубая имплементация
20
+ function createApp(bootstrapFn, rootSelector) {
21
+ // todo: не хватает имплементации хуков, сообщений и навигации
22
+ class AngularApp extends Application {
23
+ constructor() {
24
+ super(...arguments);
25
+ this.router = null;
26
+ this.ngModule = null;
27
+ }
28
+ destroy() {
29
+ super.destroy();
30
+ if (this.ngModule) {
31
+ this.ngModule.destroy();
32
+ this.ngModule = null;
33
+ }
34
+ this.emitHook(MicrozordLifecycleEvent.destroyed());
35
+ }
36
+ async bootstrap(container, props) {
37
+ const containerElement = typeof container === 'string' ? document.querySelector(container) : container;
38
+ if (!containerElement) {
39
+ throw new Error(`No container found for ${container}`);
40
+ }
41
+ const rootElement = document.createElement(rootSelector);
42
+ containerElement.appendChild(rootElement);
43
+ this.ngModule = await bootstrapFn(props);
44
+ this.router = this.ngModule.injector.get(Router, null, InjectFlags.Optional);
45
+ await super.bootstrap(container, props);
46
+ this.emitHook(MicrozordLifecycleEvent.bootstrapped());
47
+ }
48
+ async navigate(url, _props) {
49
+ if (this.router) {
50
+ await this.router.navigateByUrl(url);
51
+ }
52
+ }
53
+ async send(_msg) {
54
+ //
55
+ }
56
+ }
57
+ return AngularApp;
58
+ }
59
+
60
+ /**
61
+ * Generated bundle index. Do not edit.
62
+ */
63
+
64
+ export { APP_NAME, ROOT_SELECTOR, createApp, enableProdMode };
65
+ //# sourceMappingURL=microzord-angular-child.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"microzord-angular-child.mjs","sources":["../../../../libs/angular/child/src/enable-prod-mode.ts","../../../../libs/angular/child/src/create-app.ts","../../../../libs/angular/child/microzord-angular-child.ts"],"sourcesContent":["import {enableProdMode as angularEnableProdMode} from '@angular/core';\n\n/**\n * Disable Angular's development mode safely\n */\nexport function enableProdMode() {\n try {\n angularEnableProdMode();\n } catch (e) {\n //\n }\n}\n","import {CompilerOptions, InjectFlags, InjectionToken, NgModuleRef} from '@angular/core';\nimport {Application, ApplicationConstructor} from '@microzord/core';\nimport {Router} from '@angular/router';\nimport {MicrozordLifecycleEvent, MicrozordMessageEvent} from '@microzord/core';\n\nexport const APP_NAME = new InjectionToken<string>('App name');\nexport const ROOT_SELECTOR = new InjectionToken<string>('Root selector');\n\n// todo: очень грубая имплементация\nexport function createApp<\n TModule,\n Props extends Record<string, unknown> = Record<string, unknown>,\n>(\n bootstrapFn: (props?: CompilerOptions) => Promise<NgModuleRef<TModule>>,\n rootSelector: string,\n): ApplicationConstructor {\n // todo: не хватает имплементации хуков, сообщений и навигации\n class AngularApp<T extends Record<string, unknown> = Props> extends Application<T> {\n private router: Router | null = null;\n private ngModule: NgModuleRef<TModule> | null = null;\n\n destroy() {\n super.destroy();\n\n if (this.ngModule) {\n this.ngModule.destroy();\n this.ngModule = null;\n }\n\n this.emitHook(MicrozordLifecycleEvent.destroyed());\n }\n\n async bootstrap(container: string | Element, props?: T): Promise<void> {\n const containerElement =\n typeof container === 'string' ? document.querySelector(container) : container;\n\n if (!containerElement) {\n throw new Error(`No container found for ${container}`);\n }\n\n const rootElement = document.createElement(rootSelector);\n\n containerElement.appendChild(rootElement);\n\n this.ngModule = await bootstrapFn(props);\n this.router = this.ngModule.injector.get(Router, null, InjectFlags.Optional);\n\n await super.bootstrap(container, props);\n\n this.emitHook(MicrozordLifecycleEvent.bootstrapped());\n }\n\n async navigate(url: string, _props: unknown | undefined): Promise<void> {\n if (this.router) {\n await this.router.navigateByUrl(url);\n }\n }\n\n async send(_msg: string | MicrozordMessageEvent): Promise<void> {\n //\n }\n }\n\n return AngularApp;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["angularEnableProdMode"],"mappings":";;;;AAEA;;AAEG;SACa,cAAc,GAAA;IAC5B,IAAI;AACF,QAAAA,gBAAqB,EAAE,CAAC;AACzB,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;;AAEX,KAAA;AACH;;MCNa,QAAQ,GAAG,IAAI,cAAc,CAAS,UAAU,EAAE;MAClD,aAAa,GAAG,IAAI,cAAc,CAAS,eAAe,EAAE;AAEzE;AACgB,SAAA,SAAS,CAIvB,WAAuE,EACvE,YAAoB,EAAA;;IAGpB,MAAM,UAAsD,SAAQ,WAAc,CAAA;AAAlF,QAAA,WAAA,GAAA;;YACU,IAAM,CAAA,MAAA,GAAkB,IAAI,CAAC;YAC7B,IAAQ,CAAA,QAAA,GAAgC,IAAI,CAAC;SA0CtD;QAxCC,OAAO,GAAA;YACL,KAAK,CAAC,OAAO,EAAE,CAAC;YAEhB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AACxB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACtB,aAAA;YAED,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,SAAS,EAAE,CAAC,CAAC;SACpD;AAED,QAAA,MAAM,SAAS,CAAC,SAA2B,EAAE,KAAS,EAAA;AACpD,YAAA,MAAM,gBAAgB,GACpB,OAAO,SAAS,KAAK,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;YAEhF,IAAI,CAAC,gBAAgB,EAAE;AACrB,gBAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,SAAS,CAAA,CAAE,CAAC,CAAC;AACxD,aAAA;YAED,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AAEzD,YAAA,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAE1C,IAAI,CAAC,QAAQ,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;AACzC,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;YAE7E,MAAM,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAExC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,YAAY,EAAE,CAAC,CAAC;SACvD;AAED,QAAA,MAAM,QAAQ,CAAC,GAAW,EAAE,MAA2B,EAAA;YACrD,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACtC,aAAA;SACF;QAED,MAAM,IAAI,CAAC,IAAoC,EAAA;;SAE9C;AACF,KAAA;AAED,IAAA,OAAO,UAAU,CAAC;AACpB;;AChEA;;AAEG;;;;"}