@microzord/angular 1.0.0-alpha.1 → 1.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.
- package/README.md +3 -4
- package/bundles/microzord-angular-child.umd.js +173 -18
- package/bundles/microzord-angular-child.umd.js.map +1 -1
- package/bundles/microzord-angular.umd.js +664 -44
- package/bundles/microzord-angular.umd.js.map +1 -1
- package/child/src/create-app.d.ts +2 -2
- package/esm2015/child/src/create-app.js.map +1 -1
- package/esm2015/index.js +5 -2
- package/esm2015/index.js.map +1 -1
- package/esm2015/index.metadata.json +1 -1
- package/esm2015/lib/microzord-app/microzord-app.directive.js +51 -0
- package/esm2015/lib/microzord-app/microzord-app.directive.js.map +1 -0
- package/esm2015/lib/microzord-app/microzord-app.directive.metadata.json +1 -0
- package/esm2015/lib/microzord-app/microzord-app.module.js +11 -0
- package/esm2015/lib/microzord-app/microzord-app.module.js.map +1 -0
- package/esm2015/lib/microzord-app/microzord-app.module.metadata.json +1 -0
- package/esm2015/lib/microzord-host.module.js +25 -10
- package/esm2015/lib/microzord-host.module.js.map +1 -1
- package/esm2015/lib/microzord-host.module.metadata.json +1 -1
- package/esm2015/lib/microzord-module/microzord-ng-compiler.service.js +39 -0
- package/esm2015/lib/microzord-module/microzord-ng-compiler.service.js.map +1 -0
- package/esm2015/lib/microzord-module/microzord-ng-compiler.service.metadata.json +1 -0
- package/esm2015/lib/microzord-module/microzord-ng-module.directive.js +52 -0
- package/esm2015/lib/microzord-module/microzord-ng-module.directive.js.map +1 -0
- package/esm2015/lib/microzord-module/microzord-ng-module.directive.metadata.json +1 -0
- package/esm2015/lib/microzord-module/microzord-ng-module.module.js +11 -0
- package/esm2015/lib/microzord-module/microzord-ng-module.module.js.map +1 -0
- package/esm2015/lib/microzord-module/microzord-ng-module.module.metadata.json +1 -0
- package/esm2015/lib/operators/complete.js +6 -0
- package/esm2015/lib/operators/complete.js.map +1 -0
- package/esm2015/lib/operators/complete.metadata.json +1 -0
- package/esm2015/lib/services/registry.service.js +5 -9
- package/esm2015/lib/services/registry.service.js.map +1 -1
- package/esm2015/lib/services/registry.service.metadata.json +1 -1
- package/esm2015/lib/tokens/microzord-apps.js +6 -1
- package/esm2015/lib/tokens/microzord-apps.js.map +1 -1
- package/esm2015/lib/tokens/microzord-apps.metadata.json +1 -1
- package/esm2015/lib/types/ng-module.js +2 -0
- package/esm2015/lib/types/ng-module.js.map +1 -0
- package/esm2015/lib/types/ng-module.metadata.json +1 -0
- package/esm2015/microzord-angular.js +1 -0
- package/esm2015/microzord-angular.js.map +1 -1
- package/esm2015/microzord-angular.metadata.json +1 -1
- package/fesm2015/microzord-angular-child.js.map +1 -1
- package/fesm2015/microzord-angular.js +162 -42
- package/fesm2015/microzord-angular.js.map +1 -1
- package/index.d.ts +6 -2
- package/lib/{microzord/microzord.directive.d.ts → microzord-app/microzord-app.directive.d.ts} +6 -4
- package/lib/microzord-app/microzord-app.module.d.ts +2 -0
- package/lib/microzord-host.module.d.ts +7 -5
- package/lib/microzord-module/microzord-ng-compiler.service.d.ts +12 -0
- package/lib/microzord-module/microzord-ng-module.directive.d.ts +16 -0
- package/lib/microzord-module/microzord-ng-module.module.d.ts +2 -0
- package/lib/operators/complete.d.ts +1 -0
- package/lib/services/registry.service.d.ts +4 -3
- package/lib/tokens/microzord-apps.d.ts +4 -3
- package/lib/types/ng-module.d.ts +8 -0
- package/microzord-angular.d.ts +1 -0
- package/microzord-angular.metadata.json +1 -1
- package/package.json +6 -6
- package/esm2015/lib/microzord/microzord.directive.js +0 -41
- package/esm2015/lib/microzord/microzord.directive.js.map +0 -1
- package/esm2015/lib/microzord/microzord.directive.metadata.json +0 -1
- package/esm2015/lib/microzord/microzord.module.js +0 -11
- package/esm2015/lib/microzord/microzord.module.js.map +0 -1
- package/esm2015/lib/microzord/microzord.module.metadata.json +0 -1
- package/lib/microzord/microzord.module.d.ts +0 -2
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { registerEntity } from '@microzord/core';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class RegistryService {
|
|
5
|
-
|
|
6
|
-
apps.
|
|
5
|
+
registerMany(apps) {
|
|
6
|
+
apps.forEach(app => this.register(app));
|
|
7
7
|
}
|
|
8
|
-
register(
|
|
9
|
-
|
|
10
|
-
name,
|
|
11
|
-
props,
|
|
12
|
-
loadApp,
|
|
13
|
-
});
|
|
8
|
+
register(options) {
|
|
9
|
+
registerEntity(options);
|
|
14
10
|
}
|
|
15
11
|
}
|
|
16
12
|
RegistryService.ɵprov = i0.ɵɵdefineInjectable({ factory: function RegistryService_Factory() { return new RegistryService(); }, token: RegistryService, providedIn: "root" });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.service.js","sourceRoot":"","sources":["../../../../../../libs/angular/src/lib/services/registry.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.service.js","sourceRoot":"","sources":["../../../../../../libs/angular/src/lib/services/registry.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AACzC,OAAO,EAAyB,cAAc,EAAC,MAAM,iBAAiB,CAAC;;AAMvE,MAAM,OAAO,eAAe;IAC1B,YAAY,CACV,IAAyE;QAEzE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,QAAQ,CAAC,OAA6D;QACpE,cAAc,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;;;;YAZF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB","sourcesContent":["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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"RegistryService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"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":{}}}}}]
|
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export const MICROZORD_APPS = new InjectionToken('Microzord apps'
|
|
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
|
+
});
|
|
3
8
|
//# sourceMappingURL=microzord-apps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"microzord-apps.js","sourceRoot":"","sources":["../../../../../../libs/angular/src/lib/tokens/microzord-apps.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"microzord-apps.js","sourceRoot":"","sources":["../../../../../../libs/angular/src/lib/tokens/microzord-apps.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAG7C,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,CAC9C,gBAAgB,EAChB;IACE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;CAClB,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,cAAc,CACpD,2BAA2B,EAC3B;IACE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;CAClB,CACF,CAAC","sourcesContent":["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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"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}]},"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}]}}}]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ng-module.js","sourceRoot":"","sources":["../../../../../../libs/angular/src/lib/types/ng-module.ts"],"names":[],"mappings":"","sourcesContent":["import {Type} from '@angular/core';\nimport {EntityRegistrationOptions} from '@microzord/core';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface EntryPoint {\n //\n}\n\nexport interface MicrozordNgModule<T extends EntryPoint = EntryPoint> {\n getEntryPoint(): Type<T>;\n}\n\nexport type NgModuleRegistrationOptions = EntityRegistrationOptions<\n Type<MicrozordNgModule>\n>;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"EntryPoint":{"__symbolic":"interface"},"MicrozordNgModule":{"__symbolic":"interface"},"NgModuleRegistrationOptions":{"__symbolic":"interface"}}}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"microzord-angular.js","sourceRoot":"","sources":["../../../../libs/angular/src/microzord-angular.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC","sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"]}
|
|
1
|
+
{"version":3,"file":"microzord-angular.js","sourceRoot":"","sources":["../../../../libs/angular/src/microzord-angular.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC;AAExB,OAAO,EAAC,0BAA0B,IAAI,EAAE,EAAC,MAAM,sDAAsD,CAAC","sourcesContent":["/**\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';"]}
|
|
@@ -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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"microzord-angular-child.js","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 {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
|
|
1
|
+
{"version":3,"file":"microzord-angular-child.js","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;QAEK,SAAS,CAAC,SAA2B,EAAE,KAAS,EAAA;;;;;AACpD,gBAAA,MAAM,gBAAgB,GACpB,OAAO,SAAS,KAAK,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;gBAEhF,IAAI,CAAC,gBAAgB,EAAE;AACrB,oBAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,SAAS,CAAA,CAAE,CAAC,CAAC;AACxD,iBAAA;gBAED,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AAEzD,gBAAA,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;gBAE1C,IAAI,CAAC,QAAQ,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;AACzC,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AAE7E,gBAAA,MAAM,OAAM,SAAS,CAAA,IAAA,CAAA,IAAA,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAExC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,YAAY,EAAE,CAAC,CAAC;aACvD,CAAA,CAAA;AAAA,SAAA;QAEK,QAAQ,CAAC,GAAW,EAAE,MAA2B,EAAA;;gBACrD,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACtC,iBAAA;aACF,CAAA,CAAA;AAAA,SAAA;AAEK,QAAA,IAAI,CAAC,IAAoC,EAAA;;;aAE9C,CAAA,CAAA;AAAA,SAAA;AACF,KAAA;AAED,IAAA,OAAO,UAAU,CAAC;AACpB;;AChEA;;AAEG;;;;"}
|
|
@@ -1,21 +1,30 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { NgZone, Directive, ElementRef, Output, Input, NgModule,
|
|
3
|
-
import { bootstrapApp,
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { NgZone, Directive, ElementRef, ErrorHandler, Output, Input, NgModule, Injectable, Compiler, ComponentFactoryResolver, Injector, Optional, ViewContainerRef, NgModuleRef, InjectionToken, Inject } from '@angular/core';
|
|
3
|
+
import { constructApp, bootstrapApp, loadEntity, registerEntity } from '@microzord/core';
|
|
4
|
+
import { NEVER, Subject, of, Observable } from 'rxjs';
|
|
5
|
+
import { switchMap, startWith, finalize, tap, catchError, takeUntil, shareReplay, map } from 'rxjs/operators';
|
|
6
|
+
import { __awaiter } from 'tslib';
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
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));
|
|
20
|
+
this.application = app$.pipe(complete(app => {
|
|
21
|
+
app === null || app === void 0 ? void 0 : app.destroy();
|
|
22
|
+
}), switchMap(name => name
|
|
23
|
+
? bootstrapApp(name, this.elementRef.nativeElement).pipe(catchError(error => this.handleError(error)))
|
|
24
|
+
: of(null)), takeUntil(this.destroy$), shareReplay(1));
|
|
25
|
+
this.hook = app$.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) {
|
|
@@ -25,43 +34,141 @@ class MicrozordDirective {
|
|
|
25
34
|
this.destroy$.next();
|
|
26
35
|
this.destroy$.complete();
|
|
27
36
|
}
|
|
37
|
+
handleError(error) {
|
|
38
|
+
this.errorHandler.handleError(error);
|
|
39
|
+
return of(null);
|
|
40
|
+
}
|
|
28
41
|
}
|
|
29
|
-
|
|
42
|
+
MicrozordAppDirective.decorators = [
|
|
30
43
|
{ type: Directive, args: [{
|
|
31
|
-
selector: '[
|
|
44
|
+
selector: '[microzordApp]:not(ng-container)',
|
|
32
45
|
},] }
|
|
33
46
|
];
|
|
34
|
-
|
|
47
|
+
MicrozordAppDirective.ctorParameters = () => [
|
|
35
48
|
{ type: ElementRef },
|
|
36
|
-
{ type: NgZone }
|
|
49
|
+
{ type: NgZone },
|
|
50
|
+
{ type: ErrorHandler }
|
|
37
51
|
];
|
|
38
|
-
|
|
52
|
+
MicrozordAppDirective.propDecorators = {
|
|
39
53
|
hook: [{ type: Output }],
|
|
40
54
|
application: [{ type: Output }],
|
|
41
|
-
name: [{ type: Input, args: ['
|
|
55
|
+
name: [{ type: Input, args: ['microzordApp',] }]
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
class MicrozordAppModule {
|
|
59
|
+
}
|
|
60
|
+
MicrozordAppModule.decorators = [
|
|
61
|
+
{ type: NgModule, args: [{
|
|
62
|
+
declarations: [MicrozordAppDirective],
|
|
63
|
+
exports: [MicrozordAppDirective],
|
|
64
|
+
},] }
|
|
65
|
+
];
|
|
66
|
+
|
|
67
|
+
class MicrozordNgCompilerService {
|
|
68
|
+
constructor(compiler, componentFactoryResolver, injector, viewContainerRef) {
|
|
69
|
+
this.compiler = compiler;
|
|
70
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
71
|
+
this.injector = injector;
|
|
72
|
+
this.viewContainerRef = viewContainerRef;
|
|
73
|
+
}
|
|
74
|
+
createModule(Module, injector = this.injector) {
|
|
75
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
const moduleFactory = yield this.compiler.compileModuleAsync(Module);
|
|
77
|
+
return moduleFactory.create(injector);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
createEntryPoint(moduleRef, injector = this.injector, viewContainerRef = this.viewContainerRef) {
|
|
81
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
+
const componentFactory = this.componentFactoryResolver.resolveComponentFactory(moduleRef.instance.getEntryPoint());
|
|
83
|
+
viewContainerRef.clear();
|
|
84
|
+
return viewContainerRef.createComponent(componentFactory, undefined, injector, [], moduleRef);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
createEntryPointFromModule(Module, injector = this.injector, viewContainerRef = this.viewContainerRef) {
|
|
88
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
89
|
+
const moduleRef = yield this.createModule(Module, injector);
|
|
90
|
+
return this.createEntryPoint(moduleRef, injector, viewContainerRef);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
MicrozordNgCompilerService.decorators = [
|
|
95
|
+
{ type: Injectable }
|
|
96
|
+
];
|
|
97
|
+
MicrozordNgCompilerService.ctorParameters = () => [
|
|
98
|
+
{ type: Compiler },
|
|
99
|
+
{ type: ComponentFactoryResolver },
|
|
100
|
+
{ type: Injector, decorators: [{ type: Optional }] },
|
|
101
|
+
{ type: ViewContainerRef, decorators: [{ type: Optional }] }
|
|
102
|
+
];
|
|
103
|
+
|
|
104
|
+
class MicrozordNgModuleDirective {
|
|
105
|
+
constructor(ngZone, mzNgCompiler, errorHandler) {
|
|
106
|
+
this.ngZone = ngZone;
|
|
107
|
+
this.mzNgCompiler = mzNgCompiler;
|
|
108
|
+
this.errorHandler = errorHandler;
|
|
109
|
+
this.name$ = new Subject();
|
|
110
|
+
this.destroy$ = new Subject();
|
|
111
|
+
this.module = this.name$.pipe(tap(() => NgZone.assertNotInAngularZone()), switchMap(name => name
|
|
112
|
+
? this.loadModuleAndBootstrap(name).pipe(catchError(error => {
|
|
113
|
+
this.errorHandler.handleError(error);
|
|
114
|
+
return of(null);
|
|
115
|
+
}))
|
|
116
|
+
: 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$));
|
|
117
|
+
this.module.subscribe();
|
|
118
|
+
}
|
|
119
|
+
set name(moduleName) {
|
|
120
|
+
this.ngZone.runOutsideAngular(() => this.name$.next(moduleName));
|
|
121
|
+
}
|
|
122
|
+
loadModuleAndBootstrap(name) {
|
|
123
|
+
return loadEntity(name).pipe(switchMap(Module => this.mzNgCompiler.createEntryPointFromModule(Module)), complete(componentRef => this.destroyComponentAndModule(componentRef)));
|
|
124
|
+
}
|
|
125
|
+
destroyComponentAndModule(componentRef) {
|
|
126
|
+
componentRef.destroy();
|
|
127
|
+
componentRef.injector.get(NgModuleRef).destroy();
|
|
128
|
+
}
|
|
129
|
+
ngOnDestroy() {
|
|
130
|
+
this.destroy$.next();
|
|
131
|
+
this.destroy$.complete();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
MicrozordNgModuleDirective.decorators = [
|
|
135
|
+
{ type: Directive, args: [{
|
|
136
|
+
selector: '[microzordNgModule]',
|
|
137
|
+
providers: [MicrozordNgCompilerService],
|
|
138
|
+
},] }
|
|
139
|
+
];
|
|
140
|
+
MicrozordNgModuleDirective.ctorParameters = () => [
|
|
141
|
+
{ type: NgZone },
|
|
142
|
+
{ type: MicrozordNgCompilerService },
|
|
143
|
+
{ type: ErrorHandler }
|
|
144
|
+
];
|
|
145
|
+
MicrozordNgModuleDirective.propDecorators = {
|
|
146
|
+
module: [{ type: Output }],
|
|
147
|
+
name: [{ type: Input, args: ['microzordNgModule',] }]
|
|
42
148
|
};
|
|
43
149
|
|
|
44
|
-
class
|
|
150
|
+
class MicrozordNgModuleModule {
|
|
45
151
|
}
|
|
46
|
-
|
|
152
|
+
MicrozordNgModuleModule.decorators = [
|
|
47
153
|
{ type: NgModule, args: [{
|
|
48
|
-
declarations: [
|
|
49
|
-
exports: [
|
|
154
|
+
declarations: [MicrozordNgModuleDirective],
|
|
155
|
+
exports: [MicrozordNgModuleDirective],
|
|
50
156
|
},] }
|
|
51
157
|
];
|
|
52
158
|
|
|
53
|
-
const MICROZORD_APPS = new InjectionToken('Microzord apps'
|
|
159
|
+
const MICROZORD_APPS = new InjectionToken('Microzord apps', {
|
|
160
|
+
factory: () => [],
|
|
161
|
+
});
|
|
162
|
+
const MICROZORD_NG_MODULES = new InjectionToken('Microzord Angular modules', {
|
|
163
|
+
factory: () => [],
|
|
164
|
+
});
|
|
54
165
|
|
|
55
166
|
class RegistryService {
|
|
56
|
-
|
|
57
|
-
apps.
|
|
58
|
-
}
|
|
59
|
-
register(
|
|
60
|
-
|
|
61
|
-
name,
|
|
62
|
-
props,
|
|
63
|
-
loadApp,
|
|
64
|
-
});
|
|
167
|
+
registerMany(apps) {
|
|
168
|
+
apps.forEach(app => this.register(app));
|
|
169
|
+
}
|
|
170
|
+
register(options) {
|
|
171
|
+
registerEntity(options);
|
|
65
172
|
}
|
|
66
173
|
}
|
|
67
174
|
RegistryService.ɵprov = i0.ɵɵdefineInjectable({ factory: function RegistryService_Factory() { return new RegistryService(); }, token: RegistryService, providedIn: "root" });
|
|
@@ -72,27 +179,40 @@ RegistryService.decorators = [
|
|
|
72
179
|
];
|
|
73
180
|
|
|
74
181
|
class MicrozordHostModule {
|
|
75
|
-
constructor(allApps, registry) {
|
|
76
|
-
allApps.forEach(apps => registry.
|
|
182
|
+
constructor(allApps, allModules, registry) {
|
|
183
|
+
allApps.forEach(apps => registry.registerMany(apps));
|
|
184
|
+
allModules.forEach(modules => registry.registerMany(modules));
|
|
77
185
|
}
|
|
78
|
-
static register({ apps, }) {
|
|
186
|
+
static register({ apps, modules, }) {
|
|
79
187
|
return {
|
|
80
188
|
ngModule: MicrozordHostModule,
|
|
81
189
|
providers: [
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
190
|
+
apps
|
|
191
|
+
? {
|
|
192
|
+
provide: MICROZORD_APPS,
|
|
193
|
+
useValue: apps,
|
|
194
|
+
multi: true,
|
|
195
|
+
}
|
|
196
|
+
: [],
|
|
197
|
+
modules
|
|
198
|
+
? {
|
|
199
|
+
provide: MICROZORD_NG_MODULES,
|
|
200
|
+
useValue: modules,
|
|
201
|
+
multi: true,
|
|
202
|
+
}
|
|
203
|
+
: [],
|
|
87
204
|
],
|
|
88
205
|
};
|
|
89
206
|
}
|
|
90
207
|
}
|
|
91
208
|
MicrozordHostModule.decorators = [
|
|
92
|
-
{ type: NgModule, args: [{
|
|
209
|
+
{ type: NgModule, args: [{
|
|
210
|
+
exports: [MicrozordAppModule, MicrozordNgModuleModule],
|
|
211
|
+
},] }
|
|
93
212
|
];
|
|
94
213
|
MicrozordHostModule.ctorParameters = () => [
|
|
95
214
|
{ type: Array, decorators: [{ type: Inject, args: [MICROZORD_APPS,] }] },
|
|
215
|
+
{ type: Array, decorators: [{ type: Inject, args: [MICROZORD_NG_MODULES,] }] },
|
|
96
216
|
{ type: RegistryService }
|
|
97
217
|
];
|
|
98
218
|
|
|
@@ -100,5 +220,5 @@ MicrozordHostModule.ctorParameters = () => [
|
|
|
100
220
|
* Generated bundle index. Do not edit.
|
|
101
221
|
*/
|
|
102
222
|
|
|
103
|
-
export { MICROZORD_APPS,
|
|
223
|
+
export { MICROZORD_APPS, MICROZORD_NG_MODULES, MicrozordAppDirective, MicrozordAppModule, MicrozordHostModule, MicrozordNgModuleDirective, MicrozordNgModuleModule, RegistryService, MicrozordNgCompilerService as ɵa };
|
|
104
224
|
//# 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 {\n Application,\n MicrozordLifecycleEvent,\n bootstrapApp,\n constructApp,\n} from '@microzord/core';\nimport {NEVER, Observable, Subject, of} from 'rxjs';\nimport {catchError, 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 @Input('microzordApp')\n set name(appName: string) {\n this.ngZone.runOutsideAngular(() => this.name$.next(appName));\n }\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 const app$ = this.name$.pipe(\n tap(() => NgZone.assertNotInAngularZone()),\n switchMap(name => (name ? constructApp(name) : of(null))),\n catchError(error => this.handleError(error)),\n takeUntil(this.destroy$),\n shareReplay(1),\n );\n\n this.application = app$.pipe(\n complete(app => {\n app?.destroy();\n }),\n switchMap(name =>\n name\n ? bootstrapApp(name, this.elementRef.nativeElement).pipe(\n catchError(error => this.handleError(error)),\n )\n : of(null),\n ),\n takeUntil(this.destroy$),\n shareReplay(1),\n );\n\n this.hook = app$.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 ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private handleError(error: unknown): Observable<null> {\n this.errorHandler.handleError(error);\n return of(null);\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 ComponentRef,\n Directive,\n ErrorHandler,\n Input,\n NgModuleRef,\n NgZone,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport {Observable, of, Subject} 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\n @Output()\n module: Observable<NgModuleRef<any> | null>;\n\n @Input('microzordNgModule')\n set name(moduleName: string | null) {\n this.ngZone.runOutsideAngular(() => this.name$.next(moduleName));\n }\n\n constructor(\n private ngZone: NgZone,\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 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';
|
package/lib/{microzord/microzord.directive.d.ts → microzord-app/microzord-app.directive.d.ts}
RENAMED
|
@@ -1,14 +1,16 @@
|
|
|
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
|
|
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>;
|
|
10
|
+
set name(appName: string);
|
|
9
11
|
private destroy$;
|
|
10
12
|
private name$;
|
|
11
|
-
|
|
12
|
-
constructor(elementRef: ElementRef, ngZone: NgZone);
|
|
13
|
+
constructor(elementRef: ElementRef, ngZone: NgZone, errorHandler: ErrorHandler);
|
|
13
14
|
ngOnDestroy(): void;
|
|
15
|
+
private handleError;
|
|
14
16
|
}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { ModuleWithProviders } from '@angular/core';
|
|
2
|
-
import { AppRegistrationOptions } from '
|
|
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
|
|
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,16 @@
|
|
|
1
|
+
import { 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 mzNgCompiler;
|
|
7
|
+
private errorHandler;
|
|
8
|
+
private name$;
|
|
9
|
+
private destroy$;
|
|
10
|
+
module: Observable<NgModuleRef<any> | null>;
|
|
11
|
+
set name(moduleName: string | null);
|
|
12
|
+
constructor(ngZone: NgZone, mzNgCompiler: MicrozordNgCompilerService, errorHandler: ErrorHandler);
|
|
13
|
+
private loadModuleAndBootstrap;
|
|
14
|
+
private destroyComponentAndModule;
|
|
15
|
+
ngOnDestroy(): void;
|
|
16
|
+
}
|
|
@@ -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 '
|
|
1
|
+
import { AppRegistrationOptions } from '@microzord/core';
|
|
2
|
+
import { NgModuleRegistrationOptions } from '../types/ng-module';
|
|
2
3
|
export declare class RegistryService {
|
|
3
|
-
|
|
4
|
-
register(
|
|
4
|
+
registerMany(apps: ReadonlyArray<AppRegistrationOptions | NgModuleRegistrationOptions>): void;
|
|
5
|
+
register(options: AppRegistrationOptions | NgModuleRegistrationOptions): void;
|
|
5
6
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AppRegistrationOptions } from '@microzord/core';
|
|
2
2
|
import { InjectionToken } from '@angular/core';
|
|
3
|
-
|
|
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>>;
|
package/microzord-angular.d.ts
CHANGED