@microzord/angular 1.0.0-alpha.1 → 1.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/bundles/microzord-angular.umd.js +506 -43
  2. package/bundles/microzord-angular.umd.js.map +1 -1
  3. package/esm2015/index.js +5 -2
  4. package/esm2015/index.js.map +1 -1
  5. package/esm2015/index.metadata.json +1 -1
  6. package/esm2015/lib/microzord-app/microzord-app.directive.js +47 -0
  7. package/esm2015/lib/microzord-app/microzord-app.directive.js.map +1 -0
  8. package/esm2015/lib/microzord-app/microzord-app.directive.metadata.json +1 -0
  9. package/esm2015/lib/microzord-app/microzord-app.module.js +11 -0
  10. package/esm2015/lib/microzord-app/microzord-app.module.js.map +1 -0
  11. package/esm2015/lib/microzord-app/microzord-app.module.metadata.json +1 -0
  12. package/esm2015/lib/microzord-host.module.js +25 -10
  13. package/esm2015/lib/microzord-host.module.js.map +1 -1
  14. package/esm2015/lib/microzord-host.module.metadata.json +1 -1
  15. package/esm2015/lib/microzord-module/microzord-ng-compiler.service.js +39 -0
  16. package/esm2015/lib/microzord-module/microzord-ng-compiler.service.js.map +1 -0
  17. package/esm2015/lib/microzord-module/microzord-ng-compiler.service.metadata.json +1 -0
  18. package/esm2015/lib/microzord-module/microzord-ng-module.directive.js +54 -0
  19. package/esm2015/lib/microzord-module/microzord-ng-module.directive.js.map +1 -0
  20. package/esm2015/lib/microzord-module/microzord-ng-module.directive.metadata.json +1 -0
  21. package/esm2015/lib/microzord-module/microzord-ng-module.module.js +11 -0
  22. package/esm2015/lib/microzord-module/microzord-ng-module.module.js.map +1 -0
  23. package/esm2015/lib/microzord-module/microzord-ng-module.module.metadata.json +1 -0
  24. package/esm2015/lib/operators/complete.js +6 -0
  25. package/esm2015/lib/operators/complete.js.map +1 -0
  26. package/esm2015/lib/operators/complete.metadata.json +1 -0
  27. package/esm2015/lib/services/registry.service.js +5 -9
  28. package/esm2015/lib/services/registry.service.js.map +1 -1
  29. package/esm2015/lib/services/registry.service.metadata.json +1 -1
  30. package/esm2015/lib/tokens/microzord-apps.js +6 -1
  31. package/esm2015/lib/tokens/microzord-apps.js.map +1 -1
  32. package/esm2015/lib/tokens/microzord-apps.metadata.json +1 -1
  33. package/esm2015/lib/types/ng-module.js +2 -0
  34. package/esm2015/lib/types/ng-module.js.map +1 -0
  35. package/esm2015/lib/types/ng-module.metadata.json +1 -0
  36. package/esm2015/microzord-angular.js +1 -0
  37. package/esm2015/microzord-angular.js.map +1 -1
  38. package/esm2015/microzord-angular.metadata.json +1 -1
  39. package/fesm2015/microzord-angular.js +159 -41
  40. package/fesm2015/microzord-angular.js.map +1 -1
  41. package/index.d.ts +6 -2
  42. package/lib/{microzord/microzord.directive.d.ts → microzord-app/microzord-app.directive.d.ts} +4 -3
  43. package/lib/microzord-app/microzord-app.module.d.ts +2 -0
  44. package/lib/microzord-host.module.d.ts +7 -5
  45. package/lib/microzord-module/microzord-ng-compiler.service.d.ts +12 -0
  46. package/lib/microzord-module/microzord-ng-module.directive.d.ts +17 -0
  47. package/lib/microzord-module/microzord-ng-module.module.d.ts +2 -0
  48. package/lib/operators/complete.d.ts +1 -0
  49. package/lib/services/registry.service.d.ts +4 -3
  50. package/lib/tokens/microzord-apps.d.ts +4 -3
  51. package/lib/types/ng-module.d.ts +8 -0
  52. package/microzord-angular.d.ts +1 -0
  53. package/microzord-angular.metadata.json +1 -1
  54. package/package.json +2 -2
  55. package/esm2015/lib/microzord/microzord.directive.js +0 -41
  56. package/esm2015/lib/microzord/microzord.directive.js.map +0 -1
  57. package/esm2015/lib/microzord/microzord.directive.metadata.json +0 -1
  58. package/esm2015/lib/microzord/microzord.module.js +0 -11
  59. package/esm2015/lib/microzord/microzord.module.js.map +0 -1
  60. package/esm2015/lib/microzord/microzord.module.metadata.json +0 -1
  61. package/lib/microzord/microzord.module.d.ts +0 -2
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{},"exports":[{"from":"./index"}]}]
1
+ [{"__symbolic":"module","version":4,"metadata":{},"exports":[{"from":"./index"},{"from":"./lib/microzord-module/microzord-ng-compiler.service","export":[{"name":"MicrozordNgCompilerService","as":"ɵa"}]}]}]
@@ -1,21 +1,30 @@
1
1
  import * as i0 from '@angular/core';
2
- import { NgZone, Directive, ElementRef, Output, Input, NgModule, InjectionToken, Injectable, Inject } from '@angular/core';
3
- import { bootstrapApp, registerApp } from '@microzord/core';
4
- import { Subject, NEVER, of, Observable } from 'rxjs';
5
- import { tap, switchMap, startWith, finalize, takeUntil, filter } from 'rxjs/operators';
2
+ import { NgZone, Directive, ElementRef, ErrorHandler, Output, Input, NgModule, Injectable, Compiler, ComponentFactoryResolver, Injector, Optional, ViewContainerRef, NgModuleRef, InjectionToken, Inject } from '@angular/core';
3
+ import { bootstrapApp, loadEntity, registerEntity } from '@microzord/core';
4
+ import { NEVER, Subject, of, Observable } from 'rxjs';
5
+ import { switchMap, startWith, finalize, tap, catchError, shareReplay, takeUntil, map } from 'rxjs/operators';
6
+ import { __awaiter } from 'tslib';
6
7
 
7
- class MicrozordDirective {
8
- constructor(elementRef, ngZone) {
8
+ const complete = (fn) => switchMap((value) => NEVER.pipe(startWith(value), finalize(() => {
9
+ fn(value);
10
+ })));
11
+
12
+ class MicrozordAppDirective {
13
+ constructor(elementRef, ngZone, errorHandler) {
9
14
  this.elementRef = elementRef;
10
15
  this.ngZone = ngZone;
16
+ this.errorHandler = errorHandler;
11
17
  this.destroy$ = new Subject();
12
18
  this.name$ = new Subject();
13
19
  this.application = this.name$.pipe(tap(() => NgZone.assertNotInAngularZone()), switchMap(name => name
14
- ? bootstrapApp(name, this.elementRef.nativeElement).pipe(switchMap(app => NEVER.pipe(startWith(app), finalize(() => {
15
- app.destroy();
16
- }))))
17
- : of(null)), takeUntil(this.destroy$));
18
- this.hook = this.application.pipe(filter((app => !!app)), switchMap(app => new Observable(subscriber => app.onHook(event => subscriber.next(event)))));
20
+ ? bootstrapApp(name, this.elementRef.nativeElement).pipe(complete(app => app.destroy()), catchError(error => {
21
+ this.errorHandler.handleError(error);
22
+ return of(null);
23
+ }))
24
+ : of(null)), shareReplay(1), takeUntil(this.destroy$));
25
+ this.hook = this.application.pipe(switchMap(app => app
26
+ ? new Observable(subscriber => app.onHook(event => subscriber.next(event)))
27
+ : NEVER));
19
28
  this.application.subscribe();
20
29
  }
21
30
  set name(appName) {
@@ -26,42 +35,138 @@ class MicrozordDirective {
26
35
  this.destroy$.complete();
27
36
  }
28
37
  }
29
- MicrozordDirective.decorators = [
38
+ MicrozordAppDirective.decorators = [
30
39
  { type: Directive, args: [{
31
- selector: '[microzord]:not(ng-container)',
40
+ selector: '[microzordApp]:not(ng-container)',
32
41
  },] }
33
42
  ];
34
- MicrozordDirective.ctorParameters = () => [
43
+ MicrozordAppDirective.ctorParameters = () => [
35
44
  { type: ElementRef },
36
- { type: NgZone }
45
+ { type: NgZone },
46
+ { type: ErrorHandler }
37
47
  ];
38
- MicrozordDirective.propDecorators = {
48
+ MicrozordAppDirective.propDecorators = {
39
49
  hook: [{ type: Output }],
40
50
  application: [{ type: Output }],
41
- name: [{ type: Input, args: ['microzord',] }]
51
+ name: [{ type: Input, args: ['microzordApp',] }]
42
52
  };
43
53
 
44
- class MicrozordModule {
54
+ class MicrozordAppModule {
45
55
  }
46
- MicrozordModule.decorators = [
56
+ MicrozordAppModule.decorators = [
47
57
  { type: NgModule, args: [{
48
- declarations: [MicrozordDirective],
49
- exports: [MicrozordDirective],
58
+ declarations: [MicrozordAppDirective],
59
+ exports: [MicrozordAppDirective],
50
60
  },] }
51
61
  ];
52
62
 
53
- const MICROZORD_APPS = new InjectionToken('Microzord apps');
63
+ class MicrozordNgCompilerService {
64
+ constructor(compiler, componentFactoryResolver, injector, viewContainerRef) {
65
+ this.compiler = compiler;
66
+ this.componentFactoryResolver = componentFactoryResolver;
67
+ this.injector = injector;
68
+ this.viewContainerRef = viewContainerRef;
69
+ }
70
+ createModule(Module, injector = this.injector) {
71
+ return __awaiter(this, void 0, void 0, function* () {
72
+ const moduleFactory = yield this.compiler.compileModuleAsync(Module);
73
+ return moduleFactory.create(injector);
74
+ });
75
+ }
76
+ createEntryPoint(moduleRef, injector = this.injector, viewContainerRef = this.viewContainerRef) {
77
+ return __awaiter(this, void 0, void 0, function* () {
78
+ const componentFactory = this.componentFactoryResolver.resolveComponentFactory(moduleRef.instance.getEntryPoint());
79
+ viewContainerRef.clear();
80
+ return viewContainerRef.createComponent(componentFactory, undefined, injector, [], moduleRef);
81
+ });
82
+ }
83
+ createEntryPointFromModule(Module, injector = this.injector, viewContainerRef = this.viewContainerRef) {
84
+ return __awaiter(this, void 0, void 0, function* () {
85
+ const moduleRef = yield this.createModule(Module, injector);
86
+ return this.createEntryPoint(moduleRef, injector, viewContainerRef);
87
+ });
88
+ }
89
+ }
90
+ MicrozordNgCompilerService.decorators = [
91
+ { type: Injectable }
92
+ ];
93
+ MicrozordNgCompilerService.ctorParameters = () => [
94
+ { type: Compiler },
95
+ { type: ComponentFactoryResolver },
96
+ { type: Injector, decorators: [{ type: Optional }] },
97
+ { type: ViewContainerRef, decorators: [{ type: Optional }] }
98
+ ];
99
+
100
+ class MicrozordNgModuleDirective {
101
+ constructor(ngZone, componentFactoryResolver, mzNgCompiler, errorHandler) {
102
+ this.ngZone = ngZone;
103
+ this.componentFactoryResolver = componentFactoryResolver;
104
+ this.mzNgCompiler = mzNgCompiler;
105
+ this.errorHandler = errorHandler;
106
+ this.name$ = new Subject();
107
+ this.destroy$ = new Subject();
108
+ this.module = this.name$.pipe(tap(() => NgZone.assertNotInAngularZone()), switchMap(name => name
109
+ ? this.loadModuleAndBootstrap(name).pipe(catchError(error => {
110
+ this.errorHandler.handleError(error);
111
+ return of(null);
112
+ }))
113
+ : of(null)), map(componentRef => { var _a; return (_a = componentRef === null || componentRef === void 0 ? void 0 : componentRef.injector.get(NgModuleRef)) !== null && _a !== void 0 ? _a : null; }), shareReplay(1), takeUntil(this.destroy$));
114
+ this.module.subscribe();
115
+ }
116
+ set name(moduleName) {
117
+ this.ngZone.runOutsideAngular(() => this.name$.next(moduleName));
118
+ }
119
+ loadModuleAndBootstrap(name) {
120
+ return loadEntity(name).pipe(switchMap(Module => this.mzNgCompiler.createEntryPointFromModule(Module)), complete(componentRef => this.destroyComponentAndModule(componentRef)));
121
+ }
122
+ destroyComponentAndModule(componentRef) {
123
+ componentRef.destroy();
124
+ componentRef.injector.get(NgModuleRef).destroy();
125
+ }
126
+ ngOnDestroy() {
127
+ this.destroy$.next();
128
+ this.destroy$.complete();
129
+ }
130
+ }
131
+ MicrozordNgModuleDirective.decorators = [
132
+ { type: Directive, args: [{
133
+ selector: '[microzordNgModule]',
134
+ providers: [MicrozordNgCompilerService],
135
+ },] }
136
+ ];
137
+ MicrozordNgModuleDirective.ctorParameters = () => [
138
+ { type: NgZone },
139
+ { type: ComponentFactoryResolver },
140
+ { type: MicrozordNgCompilerService },
141
+ { type: ErrorHandler }
142
+ ];
143
+ MicrozordNgModuleDirective.propDecorators = {
144
+ module: [{ type: Output }],
145
+ name: [{ type: Input, args: ['microzordNgModule',] }]
146
+ };
147
+
148
+ class MicrozordNgModuleModule {
149
+ }
150
+ MicrozordNgModuleModule.decorators = [
151
+ { type: NgModule, args: [{
152
+ declarations: [MicrozordNgModuleDirective],
153
+ exports: [MicrozordNgModuleDirective],
154
+ },] }
155
+ ];
156
+
157
+ const MICROZORD_APPS = new InjectionToken('Microzord apps', {
158
+ factory: () => [],
159
+ });
160
+ const MICROZORD_NG_MODULES = new InjectionToken('Microzord Angular modules', {
161
+ factory: () => [],
162
+ });
54
163
 
55
164
  class RegistryService {
56
- registerApps(apps) {
57
- apps.map(app => this.register(app));
58
- }
59
- register({ name, loadApp, props }) {
60
- registerApp({
61
- name,
62
- props,
63
- loadApp,
64
- });
165
+ registerMany(apps) {
166
+ apps.forEach(app => this.register(app));
167
+ }
168
+ register(options) {
169
+ registerEntity(options);
65
170
  }
66
171
  }
67
172
  RegistryService.ɵprov = i0.ɵɵdefineInjectable({ factory: function RegistryService_Factory() { return new RegistryService(); }, token: RegistryService, providedIn: "root" });
@@ -72,27 +177,40 @@ RegistryService.decorators = [
72
177
  ];
73
178
 
74
179
  class MicrozordHostModule {
75
- constructor(allApps, registry) {
76
- allApps.forEach(apps => registry.registerApps(apps));
180
+ constructor(allApps, allModules, registry) {
181
+ allApps.forEach(apps => registry.registerMany(apps));
182
+ allModules.forEach(modules => registry.registerMany(modules));
77
183
  }
78
- static register({ apps, }) {
184
+ static register({ apps, modules, }) {
79
185
  return {
80
186
  ngModule: MicrozordHostModule,
81
187
  providers: [
82
- {
83
- provide: MICROZORD_APPS,
84
- useValue: apps,
85
- multi: true,
86
- },
188
+ apps
189
+ ? {
190
+ provide: MICROZORD_APPS,
191
+ useValue: apps,
192
+ multi: true,
193
+ }
194
+ : [],
195
+ modules
196
+ ? {
197
+ provide: MICROZORD_NG_MODULES,
198
+ useValue: modules,
199
+ multi: true,
200
+ }
201
+ : [],
87
202
  ],
88
203
  };
89
204
  }
90
205
  }
91
206
  MicrozordHostModule.decorators = [
92
- { type: NgModule, args: [{},] }
207
+ { type: NgModule, args: [{
208
+ exports: [MicrozordAppModule, MicrozordNgModuleModule],
209
+ },] }
93
210
  ];
94
211
  MicrozordHostModule.ctorParameters = () => [
95
212
  { type: Array, decorators: [{ type: Inject, args: [MICROZORD_APPS,] }] },
213
+ { type: Array, decorators: [{ type: Inject, args: [MICROZORD_NG_MODULES,] }] },
96
214
  { type: RegistryService }
97
215
  ];
98
216
 
@@ -100,5 +218,5 @@ MicrozordHostModule.ctorParameters = () => [
100
218
  * Generated bundle index. Do not edit.
101
219
  */
102
220
 
103
- export { MICROZORD_APPS, MicrozordDirective, MicrozordHostModule, MicrozordModule, RegistryService };
221
+ export { MICROZORD_APPS, MICROZORD_NG_MODULES, MicrozordAppDirective, MicrozordAppModule, MicrozordHostModule, MicrozordNgModuleDirective, MicrozordNgModuleModule, RegistryService, MicrozordNgCompilerService as ɵa };
104
222
  //# sourceMappingURL=microzord-angular.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"microzord-angular.js","sources":["../../../../libs/angular/src/lib/microzord/microzord.directive.ts","../../../../libs/angular/src/lib/microzord/microzord.module.ts","../../../../libs/angular/src/lib/tokens/microzord-apps.ts","../../../../libs/angular/src/lib/services/registry.service.ts","../../../../libs/angular/src/lib/microzord-host.module.ts","../../../../libs/angular/src/microzord-angular.ts"],"sourcesContent":["import {Directive, ElementRef, Input, NgZone, OnDestroy, Output} from '@angular/core';\nimport {Application, bootstrapApp, MicrozordLifecycleEvent} from '@microzord/core';\nimport {NEVER, Observable, of, Subject} from 'rxjs';\nimport {filter, finalize, startWith, switchMap, takeUntil, tap} from 'rxjs/operators';\n\n@Directive({\n selector: '[microzord]:not(ng-container)',\n})\nexport class MicrozordDirective implements OnDestroy {\n @Output()\n hook: Observable<MicrozordLifecycleEvent>;\n\n @Output()\n application: Observable<Application | null>;\n\n private destroy$ = new Subject<string>();\n private name$ = new Subject<string>();\n\n @Input('microzord')\n set name(appName: string) {\n this.ngZone.runOutsideAngular(() => this.name$.next(appName));\n }\n\n constructor(private elementRef: ElementRef, private ngZone: NgZone) {\n this.application = this.name$.pipe(\n tap(() => NgZone.assertNotInAngularZone()),\n switchMap(name =>\n name\n ? bootstrapApp(name, this.elementRef.nativeElement).pipe(\n switchMap(app =>\n NEVER.pipe(\n startWith(app),\n finalize(() => {\n app.destroy();\n }),\n ),\n ),\n )\n : of(null),\n ),\n takeUntil(this.destroy$),\n );\n\n this.hook = this.application.pipe(\n filter((app => !!app) as (app: unknown) => app is Application),\n switchMap(\n app =>\n new Observable<MicrozordLifecycleEvent>(subscriber =>\n app.onHook(event => subscriber.next(event)),\n ),\n ),\n );\n\n this.application.subscribe();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import {NgModule} from '@angular/core';\nimport {MicrozordDirective} from './microzord.directive';\n\n@NgModule({\n declarations: [MicrozordDirective],\n exports: [MicrozordDirective],\n})\nexport class MicrozordModule {}\n","import {RegistrationOptions} from '@microzord/core';\nimport {InjectionToken} from '@angular/core';\n\nexport type AppRegistrationOptions = RegistrationOptions;\n\nexport const MICROZORD_APPS = new InjectionToken<AppRegistrationOptions[][]>(\n 'Microzord apps',\n);\n","import {Injectable} from '@angular/core';\nimport {AppRegistrationOptions} from '../tokens/microzord-apps';\nimport {registerApp} from '@microzord/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RegistryService {\n registerApps(apps: AppRegistrationOptions[]) {\n apps.map(app => this.register(app));\n }\n\n register({name, loadApp, props}: AppRegistrationOptions) {\n registerApp({\n name,\n props,\n loadApp,\n });\n }\n}\n","import {Inject, ModuleWithProviders, NgModule} from '@angular/core';\nimport {AppRegistrationOptions, MICROZORD_APPS} from './tokens/microzord-apps';\nimport {RegistryService} from './services/registry.service';\n\nexport interface MicrozordHostModuleOptions {\n apps: AppRegistrationOptions[];\n}\n\n@NgModule({})\nexport class MicrozordHostModule {\n constructor(\n @Inject(MICROZORD_APPS) allApps: AppRegistrationOptions[][],\n registry: RegistryService,\n ) {\n allApps.forEach(apps => registry.registerApps(apps));\n }\n\n static register({\n apps,\n }: MicrozordHostModuleOptions): ModuleWithProviders<MicrozordHostModule> {\n return {\n ngModule: MicrozordHostModule,\n providers: [\n {\n provide: MICROZORD_APPS,\n useValue: apps,\n multi: true,\n },\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAQa,kBAAkB;IAe7B,YAAoB,UAAsB,EAAU,MAAc;QAA9C,eAAU,GAAV,UAAU,CAAY;QAAU,WAAM,GAAN,MAAM,CAAQ;QAR1D,aAAQ,GAAG,IAAI,OAAO,EAAU,CAAC;QACjC,UAAK,GAAG,IAAI,OAAO,EAAU,CAAC;QAQpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAChC,GAAG,CAAC,MAAM,MAAM,CAAC,sBAAsB,EAAE,CAAC,EAC1C,SAAS,CAAC,IAAI,IACZ,IAAI;cACA,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,CACpD,SAAS,CAAC,GAAG,IACX,KAAK,CAAC,IAAI,CACR,SAAS,CAAC,GAAG,CAAC,EACd,QAAQ,CAAC;gBACP,GAAG,CAAC,OAAO,EAAE,CAAC;aACf,CAAC,CACH,CACF,CACF;cACD,EAAE,CAAC,IAAI,CAAC,CACb,EACD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB,CAAC;QAEF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,EAA0C,EAC9D,SAAS,CACP,GAAG,IACD,IAAI,UAAU,CAA0B,UAAU,IAChD,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAC5C,CACJ,CACF,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;KAC9B;IApCD,IACI,IAAI,CAAC,OAAe;QACtB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;KAC/D;IAmCD,WAAW;QACT,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC1B;;;YAtDF,SAAS,SAAC;gBACT,QAAQ,EAAE,+BAA+B;aAC1C;;;YAPkB,UAAU;YAAS,MAAM;;;mBASzC,MAAM;0BAGN,MAAM;mBAMN,KAAK,SAAC,WAAW;;;MCXP,eAAe;;;YAJ3B,QAAQ,SAAC;gBACR,YAAY,EAAE,CAAC,kBAAkB,CAAC;gBAClC,OAAO,EAAE,CAAC,kBAAkB,CAAC;aAC9B;;;MCDY,cAAc,GAAG,IAAI,cAAc,CAC9C,gBAAgB;;MCCL,eAAe;IAC1B,YAAY,CAAC,IAA8B;QACzC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;KACrC;IAED,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAyB;QACrD,WAAW,CAAC;YACV,IAAI;YACJ,KAAK;YACL,OAAO;SACR,CAAC,CAAC;KACJ;;;;YAdF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;MCGY,mBAAmB;IAC9B,YAC0B,OAAmC,EAC3D,QAAyB;QAEzB,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;KACtD;IAED,OAAO,QAAQ,CAAC,EACd,IAAI,GACuB;QAC3B,OAAO;YACL,QAAQ,EAAE,mBAAmB;YAC7B,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,cAAc;oBACvB,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,IAAI;iBACZ;aACF;SACF,CAAC;KACH;;;YAtBF,QAAQ,SAAC,EAAE;;;wCAGP,MAAM,SAAC,cAAc;YATlB,eAAe;;;ACFvB;;;;;;"}
1
+ {"version":3,"file":"microzord-angular.js","sources":["../../../../libs/angular/src/lib/operators/complete.ts","../../../../libs/angular/src/lib/microzord-app/microzord-app.directive.ts","../../../../libs/angular/src/lib/microzord-app/microzord-app.module.ts","../../../../libs/angular/src/lib/microzord-module/microzord-ng-compiler.service.ts","../../../../libs/angular/src/lib/microzord-module/microzord-ng-module.directive.ts","../../../../libs/angular/src/lib/microzord-module/microzord-ng-module.module.ts","../../../../libs/angular/src/lib/tokens/microzord-apps.ts","../../../../libs/angular/src/lib/services/registry.service.ts","../../../../libs/angular/src/lib/microzord-host.module.ts","../../../../libs/angular/src/microzord-angular.ts"],"sourcesContent":["import {NEVER} from 'rxjs';\nimport {finalize, startWith, switchMap} from 'rxjs/operators';\n\nexport const complete = <T>(fn: (value: T) => void) =>\n switchMap((value: T) =>\n NEVER.pipe(\n startWith(value),\n finalize(() => {\n fn(value);\n }),\n ),\n );\n","import {\n Directive,\n ElementRef,\n ErrorHandler,\n Input,\n NgZone,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport {Application, bootstrapApp, MicrozordLifecycleEvent} from '@microzord/core';\nimport {NEVER, Observable, of, Subject} from 'rxjs';\nimport {catchError, filter, shareReplay, switchMap, takeUntil, tap} from 'rxjs/operators';\nimport {complete} from '../operators/complete';\n\n@Directive({\n selector: '[microzordApp]:not(ng-container)',\n})\nexport class MicrozordAppDirective implements OnDestroy {\n @Output()\n hook: Observable<MicrozordLifecycleEvent>;\n\n @Output()\n application: Observable<Application | null>;\n\n private destroy$ = new Subject<void>();\n private name$ = new Subject<string>();\n\n constructor(\n private elementRef: ElementRef,\n private ngZone: NgZone,\n private errorHandler: ErrorHandler,\n ) {\n this.application = this.name$.pipe(\n tap(() => NgZone.assertNotInAngularZone()),\n switchMap(name =>\n name\n ? bootstrapApp(name, this.elementRef.nativeElement).pipe(\n complete(app => app.destroy()),\n catchError(error => {\n this.errorHandler.handleError(error);\n return of(null);\n }),\n )\n : of(null),\n ),\n shareReplay(1),\n takeUntil(this.destroy$),\n );\n\n this.hook = this.application.pipe(\n switchMap(app =>\n app\n ? new Observable<MicrozordLifecycleEvent>(subscriber =>\n app.onHook(event => subscriber.next(event)),\n )\n : NEVER,\n ),\n );\n\n this.application.subscribe();\n }\n\n @Input('microzordApp')\n set name(appName: string) {\n this.ngZone.runOutsideAngular(() => this.name$.next(appName));\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import {NgModule} from '@angular/core';\nimport {MicrozordAppDirective} from './microzord-app.directive';\n\n@NgModule({\n declarations: [MicrozordAppDirective],\n exports: [MicrozordAppDirective],\n})\nexport class MicrozordAppModule {}\n","import {\n Compiler,\n ComponentFactoryResolver,\n ComponentRef,\n Injectable,\n Injector,\n NgModuleRef,\n Optional,\n Type,\n ViewContainerRef,\n} from '@angular/core';\nimport {EntryPoint, MicrozordNgModule} from '../types/ng-module';\n\n@Injectable()\nexport class MicrozordNgCompilerService {\n constructor(\n private compiler: Compiler,\n private componentFactoryResolver: ComponentFactoryResolver,\n @Optional()\n private injector: Injector,\n @Optional()\n private viewContainerRef: ViewContainerRef,\n ) {}\n\n async createModule<\n T extends EntryPoint = EntryPoint,\n M extends MicrozordNgModule<T> = MicrozordNgModule<T>,\n >(Module: Type<M>, injector: Injector = this.injector): Promise<NgModuleRef<M>> {\n const moduleFactory = await this.compiler.compileModuleAsync(Module);\n return moduleFactory.create(injector);\n }\n\n async createEntryPoint<\n T extends EntryPoint = EntryPoint,\n M extends MicrozordNgModule<T> = MicrozordNgModule<T>,\n >(\n moduleRef: NgModuleRef<M>,\n injector: Injector = this.injector,\n viewContainerRef: ViewContainerRef = this.viewContainerRef,\n ): Promise<ComponentRef<T>> {\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(\n moduleRef.instance.getEntryPoint(),\n );\n\n viewContainerRef.clear();\n return viewContainerRef.createComponent(\n componentFactory,\n undefined,\n injector,\n [],\n moduleRef,\n );\n }\n\n async createEntryPointFromModule<\n T extends EntryPoint = EntryPoint,\n M extends MicrozordNgModule<T> = MicrozordNgModule<T>,\n >(\n Module: Type<M>,\n injector: Injector = this.injector,\n viewContainerRef: ViewContainerRef = this.viewContainerRef,\n ): Promise<ComponentRef<T>> {\n const moduleRef = await this.createModule(Module, injector);\n return this.createEntryPoint(moduleRef, injector, viewContainerRef);\n }\n}\n","import {\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n ErrorHandler,\n Input,\n NgModuleRef,\n NgZone,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport {Observable, of, Subject, throwError} from 'rxjs';\nimport {catchError, map, shareReplay, switchMap, takeUntil, tap} from 'rxjs/operators';\nimport {loadEntity} from '@microzord/core';\nimport {EntryPoint, MicrozordNgModule} from '../types/ng-module';\nimport {complete} from '../operators/complete';\nimport {MicrozordNgCompilerService} from './microzord-ng-compiler.service';\n\n@Directive({\n selector: '[microzordNgModule]',\n providers: [MicrozordNgCompilerService],\n})\nexport class MicrozordNgModuleDirective implements OnDestroy {\n private name$ = new Subject<string | null>();\n private destroy$ = new Subject<void>();\n @Output()\n module: Observable<NgModuleRef<any> | null>;\n\n constructor(\n private ngZone: NgZone,\n private componentFactoryResolver: ComponentFactoryResolver,\n private mzNgCompiler: MicrozordNgCompilerService,\n private errorHandler: ErrorHandler,\n ) {\n this.module = this.name$.pipe(\n tap(() => NgZone.assertNotInAngularZone()),\n switchMap(name =>\n name\n ? this.loadModuleAndBootstrap(name).pipe(\n catchError(error => {\n this.errorHandler.handleError(error);\n return of(null);\n }),\n )\n : of(null),\n ),\n map(componentRef => componentRef?.injector.get(NgModuleRef) ?? null),\n shareReplay(1),\n takeUntil(this.destroy$),\n );\n\n this.module.subscribe();\n }\n\n @Input('microzordNgModule')\n set name(moduleName: string | null) {\n this.ngZone.runOutsideAngular(() => this.name$.next(moduleName));\n }\n\n private loadModuleAndBootstrap(name: string): Observable<ComponentRef<EntryPoint>> {\n return loadEntity<any, MicrozordNgModule>(name).pipe(\n switchMap(Module => this.mzNgCompiler.createEntryPointFromModule(Module)),\n complete(componentRef => this.destroyComponentAndModule(componentRef)),\n );\n }\n\n private destroyComponentAndModule<T extends EntryPoint = EntryPoint>(\n componentRef: ComponentRef<T>,\n ) {\n componentRef.destroy();\n componentRef.injector.get(NgModuleRef).destroy();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import {NgModule} from '@angular/core';\nimport {MicrozordNgModuleDirective} from './microzord-ng-module.directive';\n\n@NgModule({\n declarations: [MicrozordNgModuleDirective],\n exports: [MicrozordNgModuleDirective],\n})\nexport class MicrozordNgModuleModule {}\n","import {AppRegistrationOptions} from '@microzord/core';\nimport {InjectionToken} from '@angular/core';\nimport {NgModuleRegistrationOptions} from '../types/ng-module';\n\nexport const MICROZORD_APPS = new InjectionToken<AppRegistrationOptions[][]>(\n 'Microzord apps',\n {\n factory: () => [],\n },\n);\n\nexport const MICROZORD_NG_MODULES = new InjectionToken<NgModuleRegistrationOptions[][]>(\n 'Microzord Angular modules',\n {\n factory: () => [],\n },\n);\n","import {Injectable} from '@angular/core';\nimport {AppRegistrationOptions, registerEntity} from '@microzord/core';\nimport {NgModuleRegistrationOptions} from '../types/ng-module';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RegistryService {\n registerMany(\n apps: ReadonlyArray<AppRegistrationOptions | NgModuleRegistrationOptions>,\n ) {\n apps.forEach(app => this.register(app));\n }\n\n register(options: AppRegistrationOptions | NgModuleRegistrationOptions) {\n registerEntity(options);\n }\n}\n","import {Inject, ModuleWithProviders, NgModule, Type} from '@angular/core';\nimport {AppRegistrationOptions, EntityRegistrationOptions} from '@microzord/core';\n\nimport {MICROZORD_APPS, MICROZORD_NG_MODULES} from './tokens/microzord-apps';\nimport {RegistryService} from './services/registry.service';\nimport {MicrozordAppModule} from './microzord-app/microzord-app.module';\nimport {MicrozordNgModuleModule} from './microzord-module/microzord-ng-module.module';\nimport {NgModuleRegistrationOptions} from './types/ng-module';\n\nexport interface MicrozordHostModuleOptions {\n apps?: AppRegistrationOptions[];\n modules?: EntityRegistrationOptions<Type<any>>[];\n}\n\n@NgModule({\n exports: [MicrozordAppModule, MicrozordNgModuleModule],\n})\nexport class MicrozordHostModule {\n constructor(\n @Inject(MICROZORD_APPS) allApps: AppRegistrationOptions[][],\n @Inject(MICROZORD_NG_MODULES) allModules: NgModuleRegistrationOptions[][],\n registry: RegistryService,\n ) {\n allApps.forEach(apps => registry.registerMany(apps));\n allModules.forEach(modules => registry.registerMany(modules));\n }\n\n static register({\n apps,\n modules,\n }: MicrozordHostModuleOptions): ModuleWithProviders<MicrozordHostModule> {\n return {\n ngModule: MicrozordHostModule,\n providers: [\n apps\n ? {\n provide: MICROZORD_APPS,\n useValue: apps,\n multi: true,\n }\n : [],\n modules\n ? {\n provide: MICROZORD_NG_MODULES,\n useValue: modules,\n multi: true,\n }\n : [],\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {MicrozordNgCompilerService as ɵa} from './lib/microzord-module/microzord-ng-compiler.service';"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,5 +1,9 @@
1
- export * from './lib/microzord/microzord.directive';
2
- export * from './lib/microzord/microzord.module';
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';
3
5
  export * from './lib/microzord-host.module';
4
6
  export * from './lib/services/registry.service';
5
7
  export * from './lib/tokens/microzord-apps';
8
+ export * from './lib/types/ng-module';
9
+ export { AppRegistrationOptions } from '@microzord/core';
@@ -1,14 +1,15 @@
1
- import { ElementRef, NgZone, OnDestroy } from '@angular/core';
1
+ import { ElementRef, ErrorHandler, NgZone, OnDestroy } from '@angular/core';
2
2
  import { Application, MicrozordLifecycleEvent } from '@microzord/core';
3
3
  import { Observable } from 'rxjs';
4
- export declare class MicrozordDirective implements OnDestroy {
4
+ export declare class MicrozordAppDirective implements OnDestroy {
5
5
  private elementRef;
6
6
  private ngZone;
7
+ private errorHandler;
7
8
  hook: Observable<MicrozordLifecycleEvent>;
8
9
  application: Observable<Application | null>;
9
10
  private destroy$;
10
11
  private name$;
12
+ constructor(elementRef: ElementRef, ngZone: NgZone, errorHandler: ErrorHandler);
11
13
  set name(appName: string);
12
- constructor(elementRef: ElementRef, ngZone: NgZone);
13
14
  ngOnDestroy(): void;
14
15
  }
@@ -0,0 +1,2 @@
1
+ export declare class MicrozordAppModule {
2
+ }
@@ -1,10 +1,12 @@
1
- import { ModuleWithProviders } from '@angular/core';
2
- import { AppRegistrationOptions } from './tokens/microzord-apps';
1
+ import { ModuleWithProviders, Type } from '@angular/core';
2
+ import { AppRegistrationOptions, EntityRegistrationOptions } from '@microzord/core';
3
3
  import { RegistryService } from './services/registry.service';
4
+ import { NgModuleRegistrationOptions } from './types/ng-module';
4
5
  export interface MicrozordHostModuleOptions {
5
- apps: AppRegistrationOptions[];
6
+ apps?: AppRegistrationOptions[];
7
+ modules?: EntityRegistrationOptions<Type<any>>[];
6
8
  }
7
9
  export declare class MicrozordHostModule {
8
- constructor(allApps: AppRegistrationOptions[][], registry: RegistryService);
9
- static register({ apps, }: MicrozordHostModuleOptions): ModuleWithProviders<MicrozordHostModule>;
10
+ constructor(allApps: AppRegistrationOptions[][], allModules: NgModuleRegistrationOptions[][], registry: RegistryService);
11
+ static register({ apps, modules, }: MicrozordHostModuleOptions): ModuleWithProviders<MicrozordHostModule>;
10
12
  }
@@ -0,0 +1,12 @@
1
+ import { Compiler, ComponentFactoryResolver, ComponentRef, Injector, NgModuleRef, Type, ViewContainerRef } from '@angular/core';
2
+ import { EntryPoint, MicrozordNgModule } from '../types/ng-module';
3
+ export declare class MicrozordNgCompilerService {
4
+ private compiler;
5
+ private componentFactoryResolver;
6
+ private injector;
7
+ private viewContainerRef;
8
+ constructor(compiler: Compiler, componentFactoryResolver: ComponentFactoryResolver, injector: Injector, viewContainerRef: ViewContainerRef);
9
+ createModule<T extends EntryPoint = EntryPoint, M extends MicrozordNgModule<T> = MicrozordNgModule<T>>(Module: Type<M>, injector?: Injector): Promise<NgModuleRef<M>>;
10
+ createEntryPoint<T extends EntryPoint = EntryPoint, M extends MicrozordNgModule<T> = MicrozordNgModule<T>>(moduleRef: NgModuleRef<M>, injector?: Injector, viewContainerRef?: ViewContainerRef): Promise<ComponentRef<T>>;
11
+ createEntryPointFromModule<T extends EntryPoint = EntryPoint, M extends MicrozordNgModule<T> = MicrozordNgModule<T>>(Module: Type<M>, injector?: Injector, viewContainerRef?: ViewContainerRef): Promise<ComponentRef<T>>;
12
+ }
@@ -0,0 +1,17 @@
1
+ import { ComponentFactoryResolver, ErrorHandler, NgModuleRef, NgZone, OnDestroy } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { MicrozordNgCompilerService } from './microzord-ng-compiler.service';
4
+ export declare class MicrozordNgModuleDirective implements OnDestroy {
5
+ private ngZone;
6
+ private componentFactoryResolver;
7
+ private mzNgCompiler;
8
+ private errorHandler;
9
+ private name$;
10
+ private destroy$;
11
+ module: Observable<NgModuleRef<any> | null>;
12
+ constructor(ngZone: NgZone, componentFactoryResolver: ComponentFactoryResolver, mzNgCompiler: MicrozordNgCompilerService, errorHandler: ErrorHandler);
13
+ set name(moduleName: string | null);
14
+ private loadModuleAndBootstrap;
15
+ private destroyComponentAndModule;
16
+ ngOnDestroy(): void;
17
+ }
@@ -0,0 +1,2 @@
1
+ export declare class MicrozordNgModuleModule {
2
+ }
@@ -0,0 +1 @@
1
+ export declare const complete: <T>(fn: (value: T) => void) => import("rxjs").OperatorFunction<T, T>;
@@ -1,5 +1,6 @@
1
- import { AppRegistrationOptions } from '../tokens/microzord-apps';
1
+ import { AppRegistrationOptions } from '@microzord/core';
2
+ import { NgModuleRegistrationOptions } from '../types/ng-module';
2
3
  export declare class RegistryService {
3
- registerApps(apps: AppRegistrationOptions[]): void;
4
- register({ name, loadApp, props }: AppRegistrationOptions): void;
4
+ registerMany(apps: ReadonlyArray<AppRegistrationOptions | NgModuleRegistrationOptions>): void;
5
+ register(options: AppRegistrationOptions | NgModuleRegistrationOptions): void;
5
6
  }
@@ -1,4 +1,5 @@
1
- import { RegistrationOptions } from '@microzord/core';
1
+ import { AppRegistrationOptions } from '@microzord/core';
2
2
  import { InjectionToken } from '@angular/core';
3
- export declare type AppRegistrationOptions = RegistrationOptions;
4
- export declare const MICROZORD_APPS: InjectionToken<AppRegistrationOptions[][]>;
3
+ import { NgModuleRegistrationOptions } from '../types/ng-module';
4
+ export declare const MICROZORD_APPS: InjectionToken<AppRegistrationOptions<Record<string, any>>[][]>;
5
+ export declare const MICROZORD_NG_MODULES: InjectionToken<NgModuleRegistrationOptions[][]>;
@@ -0,0 +1,8 @@
1
+ import { Type } from '@angular/core';
2
+ import { EntityRegistrationOptions } from '@microzord/core';
3
+ export interface EntryPoint {
4
+ }
5
+ export interface MicrozordNgModule<T extends EntryPoint = EntryPoint> {
6
+ getEntryPoint(): Type<T>;
7
+ }
8
+ export declare type NgModuleRegistrationOptions = EntityRegistrationOptions<Type<MicrozordNgModule>>;
@@ -2,3 +2,4 @@
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
4
  export * from './index';
5
+ export { MicrozordNgCompilerService as ɵa } from './lib/microzord-module/microzord-ng-compiler.service';
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"MicrozordDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":5,"character":1},"arguments":[{"selector":"[microzord]:not(ng-container)"}]}],"members":{"hook":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":9,"character":3}}]}],"application":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":12,"character":3}}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3},"arguments":["microzord"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":23,"character":34},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":23,"character":62}]}],"ngOnDestroy":[{"__symbolic":"method"}]}},"MicrozordModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":3,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"MicrozordDirective"}],"exports":[{"__symbolic":"reference","name":"MicrozordDirective"}]}]}],"members":{}},"MicrozordHostModuleOptions":{"__symbolic":"interface"},"MicrozordHostModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":11,"character":5},"arguments":[{"__symbolic":"reference","name":"MICROZORD_APPS"}]}],null],"parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"AppRegistrationOptions"}]}]},{"__symbolic":"reference","name":"RegistryService"}]}]},"statics":{"register":{"__symbolic":"function","parameters":["apps"],"value":{"ngModule":{"__symbolic":"reference","name":"MicrozordHostModule"},"providers":[{"provide":{"__symbolic":"reference","name":"MICROZORD_APPS"},"useValue":{"__symbolic":"reference","name":"apps"},"multi":true}]}}}},"RegistryService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"registerApps":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"AppRegistrationOptions":{"__symbolic":"interface"},"MICROZORD_APPS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":5,"character":34},"arguments":["Microzord apps"]}},"origins":{"MicrozordDirective":"./lib/microzord/microzord.directive","MicrozordModule":"./lib/microzord/microzord.module","MicrozordHostModuleOptions":"./lib/microzord-host.module","MicrozordHostModule":"./lib/microzord-host.module","RegistryService":"./lib/services/registry.service","AppRegistrationOptions":"./lib/tokens/microzord-apps","MICROZORD_APPS":"./lib/tokens/microzord-apps"},"importAs":"@microzord/angular"}
1
+ {"__symbolic":"module","version":4,"exports":[{"export":[{"name":"AppRegistrationOptions","as":"AppRegistrationOptions"}],"from":"@microzord/core"}],"metadata":{"MicrozordAppDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":14,"character":1},"arguments":[{"selector":"[microzordApp]:not(ng-container)"}]}],"members":{"hook":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":18,"character":3}}]}],"application":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":21,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":28,"character":24},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":29,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"ErrorHandler","line":30,"character":26}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3},"arguments":["microzordApp"]}]}],"ngOnDestroy":[{"__symbolic":"method"}]}},"MicrozordAppModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":3,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"MicrozordAppDirective"}],"exports":[{"__symbolic":"reference","name":"MicrozordAppDirective"}]}]}],"members":{}},"MicrozordNgModuleDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":18,"character":1},"arguments":[{"selector":"[microzordNgModule]","providers":[{"__symbolic":"reference","name":"ɵa"}]}]}],"members":{"module":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":25,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":29,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":30,"character":38},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","module":"@angular/core","name":"ErrorHandler","line":32,"character":26}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":54,"character":3},"arguments":["microzordNgModule"]}]}],"loadModuleAndBootstrap":[{"__symbolic":"method"}],"destroyComponentAndModule":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"MicrozordNgModuleModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":3,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"MicrozordNgModuleDirective"}],"exports":[{"__symbolic":"reference","name":"MicrozordNgModuleDirective"}]}]}],"members":{}},"MicrozordHostModuleOptions":{"__symbolic":"interface"},"MicrozordHostModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":14,"character":1},"arguments":[{"exports":[{"__symbolic":"reference","name":"MicrozordAppModule"},{"__symbolic":"reference","name":"MicrozordNgModuleModule"}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":19,"character":5},"arguments":[{"__symbolic":"reference","name":"MICROZORD_APPS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":20,"character":5},"arguments":[{"__symbolic":"reference","name":"MICROZORD_NG_MODULES"}]}],null],"parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","module":"@microzord/core","name":"AppRegistrationOptions","line":19,"character":37}]}]},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"NgModuleRegistrationOptions"}]}]},{"__symbolic":"reference","name":"RegistryService"}]}]},"statics":{"register":{"__symbolic":"function","parameters":["apps","modules"],"value":{"ngModule":{"__symbolic":"reference","name":"MicrozordHostModule"},"providers":[{"__symbolic":"if","condition":{"__symbolic":"reference","name":"apps"},"thenExpression":{"provide":{"__symbolic":"reference","name":"MICROZORD_APPS"},"useValue":{"__symbolic":"reference","name":"apps"},"multi":true},"elseExpression":[]},{"__symbolic":"if","condition":{"__symbolic":"reference","name":"modules"},"thenExpression":{"provide":{"__symbolic":"reference","name":"MICROZORD_NG_MODULES"},"useValue":{"__symbolic":"reference","name":"modules"},"multi":true},"elseExpression":[]}]}}}},"RegistryService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"registerMany":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"MICROZORD_APPS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":4,"character":34},"arguments":["Microzord apps",{"__symbolic":"error","message":"Lambda not supported","line":7,"character":13,"module":"./lib/tokens/microzord-apps"}]},"MICROZORD_NG_MODULES":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":11,"character":40},"arguments":["Microzord Angular modules",{"__symbolic":"error","message":"Lambda not supported","line":14,"character":13,"module":"./lib/tokens/microzord-apps"}]},"EntryPoint":{"__symbolic":"interface"},"MicrozordNgModule":{"__symbolic":"interface"},"NgModuleRegistrationOptions":{"__symbolic":"interface"},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":13,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":18,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":20,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Compiler","line":16,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":17,"character":38},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":19,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef","line":21,"character":30}]}],"createModule":[{"__symbolic":"method"}],"createEntryPoint":[{"__symbolic":"method"}],"createEntryPointFromModule":[{"__symbolic":"method"}]}}},"origins":{"MicrozordAppDirective":"./lib/microzord-app/microzord-app.directive","MicrozordAppModule":"./lib/microzord-app/microzord-app.module","MicrozordNgModuleDirective":"./lib/microzord-module/microzord-ng-module.directive","MicrozordNgModuleModule":"./lib/microzord-module/microzord-ng-module.module","MicrozordHostModuleOptions":"./lib/microzord-host.module","MicrozordHostModule":"./lib/microzord-host.module","RegistryService":"./lib/services/registry.service","MICROZORD_APPS":"./lib/tokens/microzord-apps","MICROZORD_NG_MODULES":"./lib/tokens/microzord-apps","EntryPoint":"./lib/types/ng-module","MicrozordNgModule":"./lib/types/ng-module","NgModuleRegistrationOptions":"./lib/types/ng-module","ɵa":"./lib/microzord-module/microzord-ng-compiler.service"},"importAs":"@microzord/angular"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@microzord/angular",
3
- "version": "1.0.0-alpha.1",
3
+ "version": "1.0.0-alpha.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^12.0.0",
6
6
  "@angular/core": "^12.0.0",
@@ -9,7 +9,7 @@
9
9
  },
10
10
  "dependencies": {
11
11
  "tslib": "^2.1.0",
12
- "@microzord/core": "1.0.0-alpha.1"
12
+ "@microzord/core": "1.0.0-alpha.2"
13
13
  },
14
14
  "publishConfig": {
15
15
  "access": "public"
@@ -1,41 +0,0 @@
1
- import { Directive, ElementRef, Input, NgZone, Output } from '@angular/core';
2
- import { bootstrapApp } from '@microzord/core';
3
- import { NEVER, Observable, of, Subject } from 'rxjs';
4
- import { filter, finalize, startWith, switchMap, takeUntil, tap } from 'rxjs/operators';
5
- export class MicrozordDirective {
6
- constructor(elementRef, ngZone) {
7
- this.elementRef = elementRef;
8
- this.ngZone = ngZone;
9
- this.destroy$ = new Subject();
10
- this.name$ = new Subject();
11
- this.application = this.name$.pipe(tap(() => NgZone.assertNotInAngularZone()), switchMap(name => name
12
- ? bootstrapApp(name, this.elementRef.nativeElement).pipe(switchMap(app => NEVER.pipe(startWith(app), finalize(() => {
13
- app.destroy();
14
- }))))
15
- : of(null)), takeUntil(this.destroy$));
16
- this.hook = this.application.pipe(filter((app => !!app)), switchMap(app => new Observable(subscriber => app.onHook(event => subscriber.next(event)))));
17
- this.application.subscribe();
18
- }
19
- set name(appName) {
20
- this.ngZone.runOutsideAngular(() => this.name$.next(appName));
21
- }
22
- ngOnDestroy() {
23
- this.destroy$.next();
24
- this.destroy$.complete();
25
- }
26
- }
27
- MicrozordDirective.decorators = [
28
- { type: Directive, args: [{
29
- selector: '[microzord]:not(ng-container)',
30
- },] }
31
- ];
32
- MicrozordDirective.ctorParameters = () => [
33
- { type: ElementRef },
34
- { type: NgZone }
35
- ];
36
- MicrozordDirective.propDecorators = {
37
- hook: [{ type: Output }],
38
- application: [{ type: Output }],
39
- name: [{ type: Input, args: ['microzord',] }]
40
- };
41
- //# sourceMappingURL=microzord.directive.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"microzord.directive.js","sourceRoot":"","sources":["../../../../../../libs/angular/src/lib/microzord/microzord.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAa,MAAM,EAAC,MAAM,eAAe,CAAC;AACtF,OAAO,EAAc,YAAY,EAA0B,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAC,MAAM,MAAM,CAAC;AACpD,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAC,MAAM,gBAAgB,CAAC;AAKtF,MAAM,OAAO,kBAAkB;IAe7B,YAAoB,UAAsB,EAAU,MAAc;QAA9C,eAAU,GAAV,UAAU,CAAY;QAAU,WAAM,GAAN,MAAM,CAAQ;QAR1D,aAAQ,GAAG,IAAI,OAAO,EAAU,CAAC;QACjC,UAAK,GAAG,IAAI,OAAO,EAAU,CAAC;QAQpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAChC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC,EAC1C,SAAS,CAAC,IAAI,CAAC,EAAE,CACf,IAAI;YACF,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,CACpD,SAAS,CAAC,GAAG,CAAC,EAAE,CACd,KAAK,CAAC,IAAI,CACR,SAAS,CAAC,GAAG,CAAC,EACd,QAAQ,CAAC,GAAG,EAAE;gBACZ,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,CAAC,CAAC,CACH,CACF,CACF;YACH,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CACb,EACD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB,CAAC;QAEF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAC/B,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAyC,CAAC,EAC9D,SAAS,CACP,GAAG,CAAC,EAAE,CACJ,IAAI,UAAU,CAA0B,UAAU,CAAC,EAAE,CACnD,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAC5C,CACJ,CACF,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;IAC/B,CAAC;IApCD,IACI,IAAI,CAAC,OAAe;QACtB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,CAAC;IAmCD,WAAW;QACT,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;;;YAtDF,SAAS,SAAC;gBACT,QAAQ,EAAE,+BAA+B;aAC1C;;;YAPkB,UAAU;YAAS,MAAM;;;mBASzC,MAAM;0BAGN,MAAM;mBAMN,KAAK,SAAC,WAAW","sourcesContent":["import {Directive, ElementRef, Input, NgZone, OnDestroy, Output} from '@angular/core';\nimport {Application, bootstrapApp, MicrozordLifecycleEvent} from '@microzord/core';\nimport {NEVER, Observable, of, Subject} from 'rxjs';\nimport {filter, finalize, startWith, switchMap, takeUntil, tap} from 'rxjs/operators';\n\n@Directive({\n selector: '[microzord]:not(ng-container)',\n})\nexport class MicrozordDirective implements OnDestroy {\n @Output()\n hook: Observable<MicrozordLifecycleEvent>;\n\n @Output()\n application: Observable<Application | null>;\n\n private destroy$ = new Subject<string>();\n private name$ = new Subject<string>();\n\n @Input('microzord')\n set name(appName: string) {\n this.ngZone.runOutsideAngular(() => this.name$.next(appName));\n }\n\n constructor(private elementRef: ElementRef, private ngZone: NgZone) {\n this.application = this.name$.pipe(\n tap(() => NgZone.assertNotInAngularZone()),\n switchMap(name =>\n name\n ? bootstrapApp(name, this.elementRef.nativeElement).pipe(\n switchMap(app =>\n NEVER.pipe(\n startWith(app),\n finalize(() => {\n app.destroy();\n }),\n ),\n ),\n )\n : of(null),\n ),\n takeUntil(this.destroy$),\n );\n\n this.hook = this.application.pipe(\n filter((app => !!app) as (app: unknown) => app is Application),\n switchMap(\n app =>\n new Observable<MicrozordLifecycleEvent>(subscriber =>\n app.onHook(event => subscriber.next(event)),\n ),\n ),\n );\n\n this.application.subscribe();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n"]}
@@ -1 +0,0 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"MicrozordDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":5,"character":1},"arguments":[{"selector":"[microzord]:not(ng-container)"}]}],"members":{"hook":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":9,"character":3}}]}],"application":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":12,"character":3}}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3},"arguments":["microzord"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":23,"character":34},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":23,"character":62}]}],"ngOnDestroy":[{"__symbolic":"method"}]}}}}]
@@ -1,11 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { MicrozordDirective } from './microzord.directive';
3
- export class MicrozordModule {
4
- }
5
- MicrozordModule.decorators = [
6
- { type: NgModule, args: [{
7
- declarations: [MicrozordDirective],
8
- exports: [MicrozordDirective],
9
- },] }
10
- ];
11
- //# sourceMappingURL=microzord.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"microzord.module.js","sourceRoot":"","sources":["../../../../../../libs/angular/src/lib/microzord/microzord.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AACvC,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AAMzD,MAAM,OAAO,eAAe;;;YAJ3B,QAAQ,SAAC;gBACR,YAAY,EAAE,CAAC,kBAAkB,CAAC;gBAClC,OAAO,EAAE,CAAC,kBAAkB,CAAC;aAC9B","sourcesContent":["import {NgModule} from '@angular/core';\nimport {MicrozordDirective} from './microzord.directive';\n\n@NgModule({\n declarations: [MicrozordDirective],\n exports: [MicrozordDirective],\n})\nexport class MicrozordModule {}\n"]}
@@ -1 +0,0 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"MicrozordModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":3,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","module":"./microzord.directive","name":"MicrozordDirective","line":4,"character":17}],"exports":[{"__symbolic":"reference","module":"./microzord.directive","name":"MicrozordDirective","line":5,"character":12}]}]}]}}}]
@@ -1,2 +0,0 @@
1
- export declare class MicrozordModule {
2
- }