@microzord/core 1.0.0-alpha.2 → 2.0.1
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 +10 -4
- package/esm2022/index.mjs +16 -0
- package/esm2022/lib/helpers/bootstrap-app.mjs +6 -0
- package/esm2022/lib/helpers/construct-and-bootstrap-app.mjs +7 -0
- package/esm2022/lib/helpers/construct-app.mjs +7 -0
- package/esm2022/lib/helpers/get-app.mjs +5 -0
- package/esm2022/lib/helpers/get-entity.mjs +6 -0
- package/esm2022/lib/helpers/load-app.mjs +11 -0
- package/esm2022/lib/helpers/load-entity.mjs +24 -0
- package/esm2022/lib/helpers/register-app.mjs +5 -0
- package/esm2022/lib/helpers/register-entity.mjs +5 -0
- package/esm2022/lib/helpers/replace-apps.mjs +9 -0
- package/esm2022/lib/models/application.mjs +60 -0
- package/esm2022/lib/models/entity.mjs +2 -0
- package/esm2022/lib/models/events.mjs +21 -0
- package/esm2022/lib/models/lifecycle.mjs +26 -0
- package/esm2022/lib/models/registration-options.mjs +2 -0
- package/esm2022/lib/registry.mjs +22 -0
- package/esm2022/microzord-core.mjs +5 -0
- package/{fesm2015/microzord-core.js → fesm2022/microzord-core.mjs} +17 -15
- package/fesm2022/microzord-core.mjs.map +1 -0
- package/index.d.ts +2 -0
- package/lib/helpers/bootstrap-app.d.ts +1 -1
- package/lib/helpers/construct-and-bootstrap-app.d.ts +3 -0
- package/lib/helpers/construct-app.d.ts +3 -0
- package/lib/models/application.d.ts +3 -3
- package/package.json +19 -12
- package/bundles/microzord-core-testing.umd.js +0 -339
- package/bundles/microzord-core-testing.umd.js.map +0 -1
- package/bundles/microzord-core.umd.js +0 -548
- package/bundles/microzord-core.umd.js.map +0 -1
- package/esm2015/index.js +0 -14
- package/esm2015/index.js.map +0 -1
- package/esm2015/index.metadata.json +0 -1
- package/esm2015/lib/helpers/bootstrap-app.js +0 -11
- package/esm2015/lib/helpers/bootstrap-app.js.map +0 -1
- package/esm2015/lib/helpers/bootstrap-app.metadata.json +0 -1
- package/esm2015/lib/helpers/get-app.js +0 -5
- package/esm2015/lib/helpers/get-app.js.map +0 -1
- package/esm2015/lib/helpers/get-app.metadata.json +0 -1
- package/esm2015/lib/helpers/get-entity.js +0 -6
- package/esm2015/lib/helpers/get-entity.js.map +0 -1
- package/esm2015/lib/helpers/get-entity.metadata.json +0 -1
- package/esm2015/lib/helpers/load-app.js +0 -11
- package/esm2015/lib/helpers/load-app.js.map +0 -1
- package/esm2015/lib/helpers/load-app.metadata.json +0 -1
- package/esm2015/lib/helpers/load-entity.js +0 -24
- package/esm2015/lib/helpers/load-entity.js.map +0 -1
- package/esm2015/lib/helpers/load-entity.metadata.json +0 -1
- package/esm2015/lib/helpers/register-app.js +0 -5
- package/esm2015/lib/helpers/register-app.js.map +0 -1
- package/esm2015/lib/helpers/register-app.metadata.json +0 -1
- package/esm2015/lib/helpers/register-entity.js +0 -5
- package/esm2015/lib/helpers/register-entity.js.map +0 -1
- package/esm2015/lib/helpers/register-entity.metadata.json +0 -1
- package/esm2015/lib/helpers/replace-apps.js +0 -9
- package/esm2015/lib/helpers/replace-apps.js.map +0 -1
- package/esm2015/lib/helpers/replace-apps.metadata.json +0 -1
- package/esm2015/lib/models/application.js +0 -63
- package/esm2015/lib/models/application.js.map +0 -1
- package/esm2015/lib/models/application.metadata.json +0 -1
- package/esm2015/lib/models/entity.js +0 -2
- package/esm2015/lib/models/entity.js.map +0 -1
- package/esm2015/lib/models/entity.metadata.json +0 -1
- package/esm2015/lib/models/events.js +0 -21
- package/esm2015/lib/models/events.js.map +0 -1
- package/esm2015/lib/models/events.metadata.json +0 -1
- package/esm2015/lib/models/lifecycle.js +0 -26
- package/esm2015/lib/models/lifecycle.js.map +0 -1
- package/esm2015/lib/models/lifecycle.metadata.json +0 -1
- package/esm2015/lib/models/registration-options.js +0 -2
- package/esm2015/lib/models/registration-options.js.map +0 -1
- package/esm2015/lib/models/registration-options.metadata.json +0 -1
- package/esm2015/lib/registry.js +0 -22
- package/esm2015/lib/registry.js.map +0 -1
- package/esm2015/lib/registry.metadata.json +0 -1
- package/esm2015/microzord-core.js +0 -6
- package/esm2015/microzord-core.js.map +0 -1
- package/esm2015/microzord-core.metadata.json +0 -1
- package/esm2015/testing/application.mock.js +0 -10
- package/esm2015/testing/application.mock.js.map +0 -1
- package/esm2015/testing/application.mock.metadata.json +0 -1
- package/esm2015/testing/microzord-core-testing.js +0 -5
- package/esm2015/testing/microzord-core-testing.js.map +0 -1
- package/esm2015/testing/microzord-core-testing.metadata.json +0 -1
- package/esm2015/testing/public_api.js +0 -2
- package/esm2015/testing/public_api.js.map +0 -1
- package/esm2015/testing/public_api.metadata.json +0 -1
- package/fesm2015/microzord-core-testing.js +0 -17
- package/fesm2015/microzord-core-testing.js.map +0 -1
- package/fesm2015/microzord-core.js.map +0 -1
- package/microzord-core.d.ts +0 -5
- package/microzord-core.metadata.json +0 -1
- package/testing/application.mock.d.ts +0 -5
- package/testing/microzord-core-testing.d.ts +0 -4
- package/testing/microzord-core-testing.metadata.json +0 -1
- package/testing/package.json +0 -11
- package/testing/public_api.d.ts +0 -1
package/README.md
CHANGED
|
@@ -6,6 +6,7 @@ It is a pre-alpha version of the library. Please, do not use it until official r
|
|
|
6
6
|
|
|
7
7
|
[](https://npmjs.com/package/@microzord/core)
|
|
8
8
|
[](https://bundlephobia.com/result?p=@microzord/core)
|
|
9
|
+
[](https://codecov.io/gh/taiga-family/microzord)
|
|
9
10
|
|
|
10
11
|
## What is it?
|
|
11
12
|
|
|
@@ -17,6 +18,13 @@ It is a small tool that allows you to add and render multiple apps on one page.
|
|
|
17
18
|
|
|
18
19
|
🐝 **Tiny as a bee and works as well**. No new code in the bundle of child application and a bit more than 1 KB library for host application to get all the benefits!
|
|
19
20
|
|
|
21
|
+
## Angular version support
|
|
22
|
+
|
|
23
|
+
| Microzord Version | Angular version |
|
|
24
|
+
| ----------------- | --------------- |
|
|
25
|
+
| v2.x | 16+ |
|
|
26
|
+
| v1.x | 12 - 15 |
|
|
27
|
+
|
|
20
28
|
## Installation and usage
|
|
21
29
|
|
|
22
30
|
An extensive demo is coming soon...
|
|
@@ -32,11 +40,9 @@ app.module.ts
|
|
|
32
40
|
apps: [
|
|
33
41
|
{
|
|
34
42
|
name: 'react-menu',
|
|
35
|
-
assetMap: '/react-menu/microzord.json',
|
|
36
43
|
},
|
|
37
44
|
{
|
|
38
45
|
name: 'vue-footer-app',
|
|
39
|
-
assetMap: '/vue-footer-app/microzord.json',
|
|
40
46
|
},
|
|
41
47
|
],
|
|
42
48
|
}),
|
|
@@ -48,11 +54,11 @@ export class AppModule {}
|
|
|
48
54
|
Usage in application:
|
|
49
55
|
|
|
50
56
|
```html
|
|
51
|
-
<header
|
|
57
|
+
<header microzordApp="react-menu"></header>
|
|
52
58
|
|
|
53
59
|
<div>Any content</div>
|
|
54
60
|
|
|
55
|
-
<footer
|
|
61
|
+
<footer microzordApp="vue-footer-app" (hook)="onFooterLifecycleEvent($event)"></footer>
|
|
56
62
|
```
|
|
57
63
|
|
|
58
64
|
## Core team
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from './lib/helpers/construct-and-bootstrap-app';
|
|
2
|
+
export * from './lib/helpers/bootstrap-app';
|
|
3
|
+
export * from './lib/helpers/construct-app';
|
|
4
|
+
export * from './lib/helpers/get-app';
|
|
5
|
+
export * from './lib/helpers/get-entity';
|
|
6
|
+
export * from './lib/helpers/load-app';
|
|
7
|
+
export * from './lib/helpers/load-entity';
|
|
8
|
+
export * from './lib/helpers/register-app';
|
|
9
|
+
export * from './lib/helpers/register-entity';
|
|
10
|
+
export * from './lib/helpers/replace-apps';
|
|
11
|
+
export * from './lib/models/application';
|
|
12
|
+
export * from './lib/models/entity';
|
|
13
|
+
export * from './lib/models/events';
|
|
14
|
+
export * from './lib/models/lifecycle';
|
|
15
|
+
export * from './lib/models/registration-options';
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvaGVscGVycy9jb25zdHJ1Y3QtYW5kLWJvb3RzdHJhcC1hcHAnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaGVscGVycy9ib290c3RyYXAtYXBwJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2hlbHBlcnMvY29uc3RydWN0LWFwcCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9oZWxwZXJzL2dldC1hcHAnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaGVscGVycy9nZXQtZW50aXR5JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2hlbHBlcnMvbG9hZC1hcHAnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaGVscGVycy9sb2FkLWVudGl0eSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9oZWxwZXJzL3JlZ2lzdGVyLWFwcCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9oZWxwZXJzL3JlZ2lzdGVyLWVudGl0eSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9oZWxwZXJzL3JlcGxhY2UtYXBwcyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9hcHBsaWNhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvZW50aXR5JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9ldmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2xpZmVjeWNsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvcmVnaXN0cmF0aW9uLW9wdGlvbnMnO1xuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { defer, of } from 'rxjs';
|
|
2
|
+
import { mapTo, switchMap } from 'rxjs/operators';
|
|
3
|
+
export function bootstrapApp(app, selector, props) {
|
|
4
|
+
return of(app).pipe(switchMap(app => defer(() => app.bootstrap(selector, props)).pipe(mapTo(app))));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLWFwcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2hlbHBlcnMvYm9vdHN0cmFwLWFwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsS0FBSyxFQUFjLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBR2hELE1BQU0sVUFBVSxZQUFZLENBQzFCLEdBQW1CLEVBQ25CLFFBQTBCLEVBQzFCLEtBQVM7SUFFVCxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ2pCLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUMvRSxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGVmZXIsIE9ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwVG8sIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtBcHBsaWNhdGlvbn0gZnJvbSAnLi4vbW9kZWxzL2FwcGxpY2F0aW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGJvb3RzdHJhcEFwcDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICBhcHA6IEFwcGxpY2F0aW9uPFQ+LFxuICBzZWxlY3Rvcjogc3RyaW5nIHwgRWxlbWVudCxcbiAgcHJvcHM/OiBULFxuKTogT2JzZXJ2YWJsZTxBcHBsaWNhdGlvbjxUPj4ge1xuICByZXR1cm4gb2YoYXBwKS5waXBlKFxuICAgIHN3aXRjaE1hcChhcHAgPT4gZGVmZXIoKCkgPT4gYXBwLmJvb3RzdHJhcChzZWxlY3RvciwgcHJvcHMpKS5waXBlKG1hcFRvKGFwcCkpKSxcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { switchMap } from 'rxjs/operators';
|
|
2
|
+
import { constructApp } from './construct-app';
|
|
3
|
+
import { bootstrapApp } from './bootstrap-app';
|
|
4
|
+
export function constructAndBootstrapApp(appName, selector, props) {
|
|
5
|
+
return constructApp(appName).pipe(switchMap(app => bootstrapApp(app, selector, props)));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0LWFuZC1ib290c3RyYXAtYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvaGVscGVycy9jb25zdHJ1Y3QtYW5kLWJvb3RzdHJhcC1hcHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsTUFBTSxVQUFVLHdCQUF3QixDQUV0QyxPQUFlLEVBQUUsUUFBMEIsRUFBRSxLQUFTO0lBQ3RELE9BQU8sWUFBWSxDQUFJLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDbEMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FDckQsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtzd2l0Y2hNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QXBwbGljYXRpb259IGZyb20gJy4uL21vZGVscy9hcHBsaWNhdGlvbic7XG5pbXBvcnQge2NvbnN0cnVjdEFwcH0gZnJvbSAnLi9jb25zdHJ1Y3QtYXBwJztcbmltcG9ydCB7Ym9vdHN0cmFwQXBwfSBmcm9tICcuL2Jvb3RzdHJhcC1hcHAnO1xuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0QW5kQm9vdHN0cmFwQXBwPFxuICBUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbj4oYXBwTmFtZTogc3RyaW5nLCBzZWxlY3Rvcjogc3RyaW5nIHwgRWxlbWVudCwgcHJvcHM/OiBUKTogT2JzZXJ2YWJsZTxBcHBsaWNhdGlvbjxUPj4ge1xuICByZXR1cm4gY29uc3RydWN0QXBwPFQ+KGFwcE5hbWUpLnBpcGUoXG4gICAgc3dpdGNoTWFwKGFwcCA9PiBib290c3RyYXBBcHAoYXBwLCBzZWxlY3RvciwgcHJvcHMpKSxcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { map } from 'rxjs/operators';
|
|
2
|
+
import { entityOptionsRegistry } from '../registry';
|
|
3
|
+
import { loadApp } from './load-app';
|
|
4
|
+
export function constructApp(appName) {
|
|
5
|
+
return loadApp(appName).pipe(map(AppConstructor => new AppConstructor(appName, entityOptionsRegistry.get(appName)?.props)));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0LWFwcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2hlbHBlcnMvY29uc3RydWN0LWFwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFHbkMsTUFBTSxVQUFVLFlBQVksQ0FDMUIsT0FBZTtJQUVmLE9BQU8sT0FBTyxDQUFJLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDN0IsR0FBRyxDQUNELGNBQWMsQ0FBQyxFQUFFLENBQ2YsSUFBSSxjQUFjLENBQ2hCLE9BQU8sRUFDUCxxQkFBcUIsQ0FBQyxHQUFHLENBQTRCLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FDckUsQ0FDSixDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0FwcGxpY2F0aW9ufSBmcm9tICcuLi9tb2RlbHMvYXBwbGljYXRpb24nO1xuaW1wb3J0IHtlbnRpdHlPcHRpb25zUmVnaXN0cnl9IGZyb20gJy4uL3JlZ2lzdHJ5JztcbmltcG9ydCB7bG9hZEFwcH0gZnJvbSAnLi9sb2FkLWFwcCc7XG5pbXBvcnQge0FwcFJlZ2lzdHJhdGlvbk9wdGlvbnN9IGZyb20gJy4uL21vZGVscy9yZWdpc3RyYXRpb24tb3B0aW9ucyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RBcHA8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgYXBwTmFtZTogc3RyaW5nLFxuKTogT2JzZXJ2YWJsZTxBcHBsaWNhdGlvbjxUPj4ge1xuICByZXR1cm4gbG9hZEFwcDxUPihhcHBOYW1lKS5waXBlKFxuICAgIG1hcChcbiAgICAgIEFwcENvbnN0cnVjdG9yID0+XG4gICAgICAgIG5ldyBBcHBDb25zdHJ1Y3RvcihcbiAgICAgICAgICBhcHBOYW1lLFxuICAgICAgICAgIGVudGl0eU9wdGlvbnNSZWdpc3RyeS5nZXQ8QXBwUmVnaXN0cmF0aW9uT3B0aW9uczxUPj4oYXBwTmFtZSk/LnByb3BzLFxuICAgICAgICApLFxuICAgICksXG4gICk7XG59XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { getEntity } from './get-entity';
|
|
2
|
+
export function getApp(appName) {
|
|
3
|
+
return getEntity(appName);
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWFwcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2hlbHBlcnMvZ2V0LWFwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXZDLE1BQU0sVUFBVSxNQUFNLENBQ3BCLE9BQWU7SUFFZixPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7QXBwbGljYXRpb25Db25zdHJ1Y3Rvcn0gZnJvbSAnLi4vbW9kZWxzL2FwcGxpY2F0aW9uJztcbmltcG9ydCB7Z2V0RW50aXR5fSBmcm9tICcuL2dldC1lbnRpdHknO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gUmVjb3JkPHN0cmluZywgYW55Pj4oXG4gIGFwcE5hbWU6IHN0cmluZyxcbik6IE9ic2VydmFibGU8QXBwbGljYXRpb25Db25zdHJ1Y3RvcjxUPiB8IG51bGw+IHtcbiAgcmV0dXJuIGdldEVudGl0eShhcHBOYW1lKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { of } from 'rxjs';
|
|
2
|
+
import { loadedEntityRegistry } from '../registry';
|
|
3
|
+
export function getEntity(entityName) {
|
|
4
|
+
return of(loadedEntityRegistry.get(entityName) || null);
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWVudGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2hlbHBlcnMvZ2V0LWVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUdqRCxNQUFNLFVBQVUsU0FBUyxDQUN2QixVQUFrQjtJQUVsQixPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7QUFDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtsb2FkZWRFbnRpdHlSZWdpc3RyeX0gZnJvbSAnLi4vcmVnaXN0cnknO1xuaW1wb3J0IHtFbnRpdHlDb25zdHJ1Y3Rvcn0gZnJvbSAnLi4vbW9kZWxzL2VudGl0eSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbnRpdHk8VCwgSz4oXG4gIGVudGl0eU5hbWU6IHN0cmluZyxcbik6IE9ic2VydmFibGU8RW50aXR5Q29uc3RydWN0b3I8VCwgSz4gfCBudWxsPiB7XG4gIHJldHVybiBvZihsb2FkZWRFbnRpdHlSZWdpc3RyeS5nZXQoZW50aXR5TmFtZSkgfHwgbnVsbCk7XG59XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { of } from 'rxjs';
|
|
2
|
+
import { switchMap, tap } from 'rxjs/operators';
|
|
3
|
+
import { loadedEntityRegistry } from '../registry';
|
|
4
|
+
import { getApp } from './get-app';
|
|
5
|
+
import { loadEntity } from './load-entity';
|
|
6
|
+
export function loadApp(appName) {
|
|
7
|
+
return getApp(appName).pipe(switchMap(appConstructor => appConstructor
|
|
8
|
+
? of(appConstructor).pipe(tap(applicationConstructor => loadedEntityRegistry.set(appName, applicationConstructor)))
|
|
9
|
+
: loadEntity(appName)));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1hcHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9oZWxwZXJzL2xvYWQtYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE1BQU0sVUFBVSxPQUFPLENBQ3JCLE9BQWU7SUFFZixPQUFPLE1BQU0sQ0FBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQzVCLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUN6QixjQUFjO1FBQ1osQ0FBQyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQ3JCLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQzNCLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLENBQUMsQ0FDMUQsQ0FDRjtRQUNILENBQUMsQ0FBQyxVQUFVLENBQW9CLE9BQU8sQ0FBQyxDQUMzQyxDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3N3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0FwcGxpY2F0aW9uLCBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yfSBmcm9tICcuLi9tb2RlbHMvYXBwbGljYXRpb24nO1xuaW1wb3J0IHtsb2FkZWRFbnRpdHlSZWdpc3RyeX0gZnJvbSAnLi4vcmVnaXN0cnknO1xuaW1wb3J0IHtnZXRBcHB9IGZyb20gJy4vZ2V0LWFwcCc7XG5pbXBvcnQge2xvYWRFbnRpdHl9IGZyb20gJy4vbG9hZC1lbnRpdHknO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFwcDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4+KFxuICBhcHBOYW1lOiBzdHJpbmcsXG4pOiBPYnNlcnZhYmxlPEFwcGxpY2F0aW9uQ29uc3RydWN0b3I8VD4+IHtcbiAgcmV0dXJuIGdldEFwcDxUPihhcHBOYW1lKS5waXBlKFxuICAgIHN3aXRjaE1hcChhcHBDb25zdHJ1Y3RvciA9PlxuICAgICAgYXBwQ29uc3RydWN0b3JcbiAgICAgICAgPyBvZihhcHBDb25zdHJ1Y3RvcikucGlwZShcbiAgICAgICAgICAgIHRhcChhcHBsaWNhdGlvbkNvbnN0cnVjdG9yID0+XG4gICAgICAgICAgICAgIGxvYWRlZEVudGl0eVJlZ2lzdHJ5LnNldChhcHBOYW1lLCBhcHBsaWNhdGlvbkNvbnN0cnVjdG9yKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICA6IGxvYWRFbnRpdHk8VCwgQXBwbGljYXRpb248VD4+KGFwcE5hbWUpLFxuICAgICksXG4gICk7XG59XG4iXX0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { defer, isObservable, of } from 'rxjs';
|
|
2
|
+
import { switchMap, tap } from 'rxjs/operators';
|
|
3
|
+
import { entityOptionsRegistry, loadedEntityRegistry } from '../registry';
|
|
4
|
+
import { getEntity } from './get-entity';
|
|
5
|
+
export function loadEntity(entityName) {
|
|
6
|
+
return getEntity(entityName).pipe(switchMap(entity => entity
|
|
7
|
+
? of(entity)
|
|
8
|
+
: defer(() => {
|
|
9
|
+
const options = entityOptionsRegistry.get(entityName);
|
|
10
|
+
if (!options) {
|
|
11
|
+
throw `Microzord entity "${entityName}" has not been registered. Check the spelling or register an app.`;
|
|
12
|
+
}
|
|
13
|
+
if (!options.load) {
|
|
14
|
+
throw `Microzord entity "${entityName}" is registered but it has no "load" function. Please, provide it`;
|
|
15
|
+
}
|
|
16
|
+
const result = options.load();
|
|
17
|
+
return result &&
|
|
18
|
+
(isObservable(result) ||
|
|
19
|
+
('then' in result && typeof result['then'] === 'function'))
|
|
20
|
+
? defer(() => result)
|
|
21
|
+
: of(result);
|
|
22
|
+
})), tap(entity => loadedEntityRegistry.set(entityName, entity)));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1lbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9oZWxwZXJzL2xvYWQtZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFjLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUMsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUd4RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXZDLE1BQU0sVUFBVSxVQUFVLENBQ3hCLFVBQWtCO0lBRWxCLE9BQU8sU0FBUyxDQUFPLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDckMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ2pCLE1BQU07UUFDSixDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNaLENBQUMsQ0FBQyxLQUFLLENBQXNDLEdBQUcsRUFBRTtZQUM5QyxNQUFNLE9BQU8sR0FDWCxxQkFBcUIsQ0FBQyxHQUFHLENBRXZCLFVBQVUsQ0FBQyxDQUFDO1lBRWhCLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ1osTUFBTSxxQkFBcUIsVUFBVSxtRUFBbUUsQ0FBQzthQUMxRztZQUVELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO2dCQUNqQixNQUFNLHFCQUFxQixVQUFVLG1FQUFtRSxDQUFDO2FBQzFHO1lBRUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBRTlCLE9BQU8sTUFBTTtnQkFDWCxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7b0JBQ25CLENBQUMsTUFBTSxJQUFJLE1BQU0sSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxVQUFVLENBQUMsQ0FBQztnQkFDN0QsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7Z0JBQ3JCLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBaUMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUNQLEVBQ0QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUM1RCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGVmZXIsIGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtlbnRpdHlPcHRpb25zUmVnaXN0cnksIGxvYWRlZEVudGl0eVJlZ2lzdHJ5fSBmcm9tICcuLi9yZWdpc3RyeSc7XG5pbXBvcnQge0VudGl0eUNvbnN0cnVjdG9yfSBmcm9tICcuLi9tb2RlbHMvZW50aXR5JztcbmltcG9ydCB7RW50aXR5UmVnaXN0cmF0aW9uT3B0aW9uc30gZnJvbSAnLi4vbW9kZWxzL3JlZ2lzdHJhdGlvbi1vcHRpb25zJztcbmltcG9ydCB7Z2V0RW50aXR5fSBmcm9tICcuL2dldC1lbnRpdHknO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9hZEVudGl0eTxULCBLPihcbiAgZW50aXR5TmFtZTogc3RyaW5nLFxuKTogT2JzZXJ2YWJsZTxFbnRpdHlDb25zdHJ1Y3RvcjxULCBLPj4ge1xuICByZXR1cm4gZ2V0RW50aXR5PFQsIEs+KGVudGl0eU5hbWUpLnBpcGUoXG4gICAgc3dpdGNoTWFwKGVudGl0eSA9PlxuICAgICAgZW50aXR5XG4gICAgICAgID8gb2YoZW50aXR5KVxuICAgICAgICA6IGRlZmVyPE9ic2VydmFibGU8RW50aXR5Q29uc3RydWN0b3I8VCwgSz4+PigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvcHRpb25zID1cbiAgICAgICAgICAgICAgZW50aXR5T3B0aW9uc1JlZ2lzdHJ5LmdldDxcbiAgICAgICAgICAgICAgICBFbnRpdHlSZWdpc3RyYXRpb25PcHRpb25zPEVudGl0eUNvbnN0cnVjdG9yPFQsIEs+PlxuICAgICAgICAgICAgICA+KGVudGl0eU5hbWUpO1xuXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgdGhyb3cgYE1pY3Jvem9yZCBlbnRpdHkgXCIke2VudGl0eU5hbWV9XCIgaGFzIG5vdCBiZWVuIHJlZ2lzdGVyZWQuIENoZWNrIHRoZSBzcGVsbGluZyBvciByZWdpc3RlciBhbiBhcHAuYDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFvcHRpb25zLmxvYWQpIHtcbiAgICAgICAgICAgICAgdGhyb3cgYE1pY3Jvem9yZCBlbnRpdHkgXCIke2VudGl0eU5hbWV9XCIgaXMgcmVnaXN0ZXJlZCBidXQgaXQgaGFzIG5vIFwibG9hZFwiIGZ1bmN0aW9uLiBQbGVhc2UsIHByb3ZpZGUgaXRgO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBvcHRpb25zLmxvYWQoKTtcblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCAmJlxuICAgICAgICAgICAgICAoaXNPYnNlcnZhYmxlKHJlc3VsdCkgfHxcbiAgICAgICAgICAgICAgICAoJ3RoZW4nIGluIHJlc3VsdCAmJiB0eXBlb2YgcmVzdWx0Wyd0aGVuJ10gPT09ICdmdW5jdGlvbicpKVxuICAgICAgICAgICAgICA/IGRlZmVyKCgpID0+IHJlc3VsdClcbiAgICAgICAgICAgICAgOiBvZihyZXN1bHQgYXMgRW50aXR5Q29uc3RydWN0b3I8VCwgSz4pO1xuICAgICAgICAgIH0pLFxuICAgICksXG4gICAgdGFwKGVudGl0eSA9PiBsb2FkZWRFbnRpdHlSZWdpc3RyeS5zZXQoZW50aXR5TmFtZSwgZW50aXR5KSksXG4gICk7XG59XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { registerEntity } from './register-entity';
|
|
2
|
+
export function registerApp(options) {
|
|
3
|
+
registerEntity(options);
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvaGVscGVycy9yZWdpc3Rlci1hcHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE1BQU0sVUFBVSxXQUFXLENBQ3pCLE9BQWtDO0lBRWxDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcHBSZWdpc3RyYXRpb25PcHRpb25zfSBmcm9tICcuLi9tb2RlbHMvcmVnaXN0cmF0aW9uLW9wdGlvbnMnO1xuaW1wb3J0IHtyZWdpc3RlckVudGl0eX0gZnJvbSAnLi9yZWdpc3Rlci1lbnRpdHknO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJBcHA8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PihcbiAgb3B0aW9uczogQXBwUmVnaXN0cmF0aW9uT3B0aW9uczxUPixcbikge1xuICByZWdpc3RlckVudGl0eShvcHRpb25zKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { entityOptionsRegistry } from '../registry';
|
|
2
|
+
export function registerEntity(options) {
|
|
3
|
+
entityOptionsRegistry.set(options.name, options);
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvaGVscGVycy9yZWdpc3Rlci1lbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sYUFBYSxDQUFDO0FBR2xELE1BQU0sVUFBVSxjQUFjLENBRzVCLE9BQVU7SUFDVixxQkFBcUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtlbnRpdHlPcHRpb25zUmVnaXN0cnl9IGZyb20gJy4uL3JlZ2lzdHJ5JztcbmltcG9ydCB7RW50aXR5UmVnaXN0cmF0aW9uT3B0aW9uc30gZnJvbSAnLi4vbW9kZWxzL3JlZ2lzdHJhdGlvbi1vcHRpb25zJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRW50aXR5PFxuICBULFxuICBLIGV4dGVuZHMgRW50aXR5UmVnaXN0cmF0aW9uT3B0aW9uczxUPiA9IEVudGl0eVJlZ2lzdHJhdGlvbk9wdGlvbnM8VD4sXG4+KG9wdGlvbnM6IEspOiB2b2lkIHtcbiAgZW50aXR5T3B0aW9uc1JlZ2lzdHJ5LnNldChvcHRpb25zLm5hbWUsIG9wdGlvbnMpO1xufVxuIl19
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { defer } from 'rxjs';
|
|
2
|
+
import { constructAndBootstrapApp } from './construct-and-bootstrap-app';
|
|
3
|
+
export function replaceApps(from, to, props) {
|
|
4
|
+
return defer(() => {
|
|
5
|
+
from.destroy();
|
|
6
|
+
return constructAndBootstrapApp(to, from.container, props);
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS1hcHBzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvaGVscGVycy9yZXBsYWNlLWFwcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUV2RSxNQUFNLFVBQVUsV0FBVyxDQUN6QixJQUFpQixFQUNqQixFQUFVLEVBQ1YsS0FBUztJQUVULE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRTtRQUNoQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFZixPQUFPLHdCQUF3QixDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGVmZXIsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBcHBsaWNhdGlvbn0gZnJvbSAnLi4vbW9kZWxzL2FwcGxpY2F0aW9uJztcbmltcG9ydCB7Y29uc3RydWN0QW5kQm9vdHN0cmFwQXBwfSBmcm9tICcuL2NvbnN0cnVjdC1hbmQtYm9vdHN0cmFwLWFwcCc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlQXBwczxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4+KFxuICBmcm9tOiBBcHBsaWNhdGlvbixcbiAgdG86IHN0cmluZyxcbiAgcHJvcHM/OiBULFxuKTogT2JzZXJ2YWJsZTxBcHBsaWNhdGlvbjxUPj4ge1xuICByZXR1cm4gZGVmZXIoKCkgPT4ge1xuICAgIGZyb20uZGVzdHJveSgpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdEFuZEJvb3RzdHJhcEFwcCh0bywgZnJvbS5jb250YWluZXIsIHByb3BzKTtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { MicrozordLifecycleEvent } from './lifecycle';
|
|
2
|
+
export class Application {
|
|
3
|
+
// todo: заспекать типы props
|
|
4
|
+
constructor(name, props) {
|
|
5
|
+
this.name = name;
|
|
6
|
+
this.props = props;
|
|
7
|
+
this.isBootstrapped = false;
|
|
8
|
+
this.isDestroyed = true;
|
|
9
|
+
this.container = '';
|
|
10
|
+
this.hook = new Set();
|
|
11
|
+
this.message = new Set();
|
|
12
|
+
this.navigationEvent = new Set();
|
|
13
|
+
}
|
|
14
|
+
onMessage(fn) {
|
|
15
|
+
this.message.add(fn);
|
|
16
|
+
return () => {
|
|
17
|
+
this.message.delete(fn);
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
emitMessage(event) {
|
|
21
|
+
this.callListeners(this.message, event);
|
|
22
|
+
}
|
|
23
|
+
onRouteChange(fn) {
|
|
24
|
+
this.navigationEvent.add(fn);
|
|
25
|
+
return () => {
|
|
26
|
+
this.navigationEvent.delete(fn);
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
emitRouteChange(event) {
|
|
30
|
+
this.callListeners(this.navigationEvent, event);
|
|
31
|
+
}
|
|
32
|
+
onHook(fn) {
|
|
33
|
+
this.hook.add(fn);
|
|
34
|
+
return () => {
|
|
35
|
+
this.hook.delete(fn);
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
emitHook(event) {
|
|
39
|
+
this.callListeners(this.hook, event);
|
|
40
|
+
}
|
|
41
|
+
destroy() {
|
|
42
|
+
this.emitHook(MicrozordLifecycleEvent.destroyed());
|
|
43
|
+
this.hook.clear(); // todo: в этот поток перед комплитом нужен евент дестроя
|
|
44
|
+
this.message.clear();
|
|
45
|
+
this.navigationEvent.clear();
|
|
46
|
+
this.isBootstrapped = false;
|
|
47
|
+
this.isDestroyed = true;
|
|
48
|
+
}
|
|
49
|
+
async bootstrap(container, _props) {
|
|
50
|
+
this.isBootstrapped = true;
|
|
51
|
+
this.container = container;
|
|
52
|
+
}
|
|
53
|
+
callListeners(listeners, event) {
|
|
54
|
+
event.target = this;
|
|
55
|
+
[...listeners].forEach(fn => {
|
|
56
|
+
fn(event);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9tb2RlbHMvYXBwbGljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sYUFBYSxDQUFDO0FBS3BELE1BQU0sT0FBZ0IsV0FBVztJQVcvQiw2QkFBNkI7SUFDN0IsWUFBNEIsSUFBWSxFQUFTLEtBQVM7UUFBOUIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFTLFVBQUssR0FBTCxLQUFLLENBQUk7UUFUMUQsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsY0FBUyxHQUFxQixFQUFFLENBQUM7UUFFZCxTQUFJLEdBQUcsSUFBSSxHQUFHLEVBQXFDLENBQUM7UUFDcEQsWUFBTyxHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFDO1FBQ3JELG9CQUFlLEdBQUcsSUFBSSxHQUFHLEVBQXNDLENBQUM7SUFHdEIsQ0FBQztJQUU5RCxTQUFTLENBQUMsRUFBbUM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFckIsT0FBTyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQTRCO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsYUFBYSxDQUFDLEVBQXNDO1FBQ2xELElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTdCLE9BQU8sR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUErQjtRQUM3QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFxQztRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVsQixPQUFPLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBOEI7UUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRW5ELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyx5REFBeUQ7UUFDNUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQTJCLEVBQUUsTUFBVTtRQUNyRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBT1MsYUFBYSxDQUNyQixTQUEyQixFQUMzQixLQUFRO1FBRVIsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFFcEIsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUMxQixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWljcm96b3JkRXZlbnQsIE1pY3Jvem9yZE1lc3NhZ2VFdmVudCwgTWljcm96b3JkTmF2aWdhdGlvbkV2ZW50fSBmcm9tICcuL2V2ZW50cyc7XG5pbXBvcnQge01pY3Jvem9yZExpZmVjeWNsZUV2ZW50fSBmcm9tICcuL2xpZmVjeWNsZSc7XG5pbXBvcnQge0VudGl0eUNvbnN0cnVjdG9yfSBmcm9tICcuL2VudGl0eSc7XG5cbmV4cG9ydCB0eXBlIExpc3RlbmVyPFQgZXh0ZW5kcyBNaWNyb3pvcmRFdmVudD4gPSAoZXZlbnQ6IFQpID0+IHZvaWQ7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBsaWNhdGlvbjxcbiAgVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4+IHtcbiAgaXNCb290c3RyYXBwZWQgPSBmYWxzZTtcbiAgaXNEZXN0cm95ZWQgPSB0cnVlO1xuICBjb250YWluZXI6IEVsZW1lbnQgfCBzdHJpbmcgPSAnJztcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaG9vayA9IG5ldyBTZXQ8TGlzdGVuZXI8TWljcm96b3JkTGlmZWN5Y2xlRXZlbnQ+PigpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWVzc2FnZSA9IG5ldyBTZXQ8TGlzdGVuZXI8TWljcm96b3JkTWVzc2FnZUV2ZW50Pj4oKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG5hdmlnYXRpb25FdmVudCA9IG5ldyBTZXQ8TGlzdGVuZXI8TWljcm96b3JkTmF2aWdhdGlvbkV2ZW50Pj4oKTtcblxuICAvLyB0b2RvOiDQt9Cw0YHQv9C10LrQsNGC0Ywg0YLQuNC/0YsgcHJvcHNcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZywgcHVibGljIHByb3BzPzogVCkge31cblxuICBvbk1lc3NhZ2UoZm46IExpc3RlbmVyPE1pY3Jvem9yZE1lc3NhZ2VFdmVudD4pOiAoKSA9PiB2b2lkIHtcbiAgICB0aGlzLm1lc3NhZ2UuYWRkKGZuKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB0aGlzLm1lc3NhZ2UuZGVsZXRlKGZuKTtcbiAgICB9O1xuICB9XG5cbiAgZW1pdE1lc3NhZ2UoZXZlbnQ6IE1pY3Jvem9yZE1lc3NhZ2VFdmVudCkge1xuICAgIHRoaXMuY2FsbExpc3RlbmVycyh0aGlzLm1lc3NhZ2UsIGV2ZW50KTtcbiAgfVxuXG4gIG9uUm91dGVDaGFuZ2UoZm46IExpc3RlbmVyPE1pY3Jvem9yZE5hdmlnYXRpb25FdmVudD4pOiAoKSA9PiB2b2lkIHtcbiAgICB0aGlzLm5hdmlnYXRpb25FdmVudC5hZGQoZm4pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRoaXMubmF2aWdhdGlvbkV2ZW50LmRlbGV0ZShmbik7XG4gICAgfTtcbiAgfVxuXG4gIGVtaXRSb3V0ZUNoYW5nZShldmVudDogTWljcm96b3JkTmF2aWdhdGlvbkV2ZW50KSB7XG4gICAgdGhpcy5jYWxsTGlzdGVuZXJzKHRoaXMubmF2aWdhdGlvbkV2ZW50LCBldmVudCk7XG4gIH1cblxuICBvbkhvb2soZm46IExpc3RlbmVyPE1pY3Jvem9yZExpZmVjeWNsZUV2ZW50Pik6ICgpID0+IHZvaWQge1xuICAgIHRoaXMuaG9vay5hZGQoZm4pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRoaXMuaG9vay5kZWxldGUoZm4pO1xuICAgIH07XG4gIH1cblxuICBlbWl0SG9vayhldmVudDogTWljcm96b3JkTGlmZWN5Y2xlRXZlbnQpIHtcbiAgICB0aGlzLmNhbGxMaXN0ZW5lcnModGhpcy5ob29rLCBldmVudCk7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuZW1pdEhvb2soTWljcm96b3JkTGlmZWN5Y2xlRXZlbnQuZGVzdHJveWVkKCkpO1xuXG4gICAgdGhpcy5ob29rLmNsZWFyKCk7IC8vIHRvZG86INCyINGN0YLQvtGCINC/0L7RgtC+0Log0L/QtdGA0LXQtCDQutC+0LzQv9C70LjRgtC+0Lwg0L3Rg9C20LXQvSDQtdCy0LXQvdGCINC00LXRgdGC0YDQvtGPXG4gICAgdGhpcy5tZXNzYWdlLmNsZWFyKCk7XG4gICAgdGhpcy5uYXZpZ2F0aW9uRXZlbnQuY2xlYXIoKTtcblxuICAgIHRoaXMuaXNCb290c3RyYXBwZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzRGVzdHJveWVkID0gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIGJvb3RzdHJhcChjb250YWluZXI6IHN0cmluZyB8IEVsZW1lbnQsIF9wcm9wcz86IFQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmlzQm9vdHN0cmFwcGVkID0gdHJ1ZTtcbiAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgfVxuXG4gIGFic3RyYWN0IHNlbmQobXNnOiBzdHJpbmcgfCBNaWNyb3pvcmRNZXNzYWdlRXZlbnQpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8vIHRvZG86INGI0L4g0LfQsCDQv9GA0L7Qv9GBPyDQndCw0LTQviDQv9GA0LjQtNGD0LzQsNGC0YxcbiAgYWJzdHJhY3QgbmF2aWdhdGUodXJsOiBzdHJpbmcsIHByb3BzPzogdW5rbm93bik6IFByb21pc2U8dm9pZD47XG5cbiAgcHJvdGVjdGVkIGNhbGxMaXN0ZW5lcnM8SyBleHRlbmRzIE1pY3Jvem9yZEV2ZW50PihcbiAgICBsaXN0ZW5lcnM6IFNldDxMaXN0ZW5lcjxLPj4sXG4gICAgZXZlbnQ6IEssXG4gICkge1xuICAgIGV2ZW50LnRhcmdldCA9IHRoaXM7XG5cbiAgICBbLi4ubGlzdGVuZXJzXS5mb3JFYWNoKGZuID0+IHtcbiAgICAgIGZuKGV2ZW50KTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yPFxuICBUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbj4gPSBFbnRpdHlDb25zdHJ1Y3RvcjxULCBBcHBsaWNhdGlvbjxUPj47XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbW9kZWxzL2VudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBFbnRpdHlDb25zdHJ1Y3RvcjxULCBLPiB7XG4gIG5ldyAobmFtZTogc3RyaW5nLCBwcm9wcz86IFQpOiBLO1xufVxuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export class MicrozordEvent {
|
|
2
|
+
constructor(type) {
|
|
3
|
+
this.type = type;
|
|
4
|
+
this.target = null;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
// todo: подумать над сообщениями
|
|
8
|
+
export class MicrozordMessageEvent extends MicrozordEvent {
|
|
9
|
+
static isMessageEvent(event) {
|
|
10
|
+
return (event && event.constructor && event.constructor.name === MicrozordMessageEvent.name);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
// todo: подумать над ивентами роутинга
|
|
14
|
+
export class MicrozordNavigationEvent extends MicrozordEvent {
|
|
15
|
+
static isNavigationEvent(event) {
|
|
16
|
+
return (event &&
|
|
17
|
+
event.constructor &&
|
|
18
|
+
event.constructor.name === MicrozordNavigationEvent.name);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbW9kZWxzL2V2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUE0QixJQUFZO1FBQVosU0FBSSxHQUFKLElBQUksQ0FBUTtRQUR4QyxXQUFNLEdBQTRCLElBQUksQ0FBQztJQUNJLENBQUM7Q0FDN0M7QUFFRCxpQ0FBaUM7QUFDakMsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGNBQWM7SUFDdkQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFxQjtRQUN6QyxPQUFPLENBQ0wsS0FBSyxJQUFJLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUsscUJBQXFCLENBQUMsSUFBSSxDQUNwRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBRUQsdUNBQXVDO0FBQ3ZDLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxjQUFjO0lBQzFELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFxQjtRQUM1QyxPQUFPLENBQ0wsS0FBSztZQUNMLEtBQUssQ0FBQyxXQUFXO1lBQ2pCLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLHdCQUF3QixDQUFDLElBQUksQ0FDekQsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXBwbGljYXRpb259IGZyb20gJy4vYXBwbGljYXRpb24nO1xuXG5leHBvcnQgY2xhc3MgTWljcm96b3JkRXZlbnQge1xuICB0YXJnZXQ6IEFwcGxpY2F0aW9uPGFueT4gfCBudWxsID0gbnVsbDtcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHR5cGU6IHN0cmluZykge31cbn1cblxuLy8gdG9kbzog0L/QvtC00YPQvNCw0YLRjCDQvdCw0LQg0YHQvtC+0LHRidC10L3QuNGP0LzQuFxuZXhwb3J0IGNsYXNzIE1pY3Jvem9yZE1lc3NhZ2VFdmVudCBleHRlbmRzIE1pY3Jvem9yZEV2ZW50IHtcbiAgc3RhdGljIGlzTWVzc2FnZUV2ZW50KGV2ZW50OiBNaWNyb3pvcmRFdmVudCk6IGV2ZW50IGlzIE1pY3Jvem9yZE1lc3NhZ2VFdmVudCB7XG4gICAgcmV0dXJuIChcbiAgICAgIGV2ZW50ICYmIGV2ZW50LmNvbnN0cnVjdG9yICYmIGV2ZW50LmNvbnN0cnVjdG9yLm5hbWUgPT09IE1pY3Jvem9yZE1lc3NhZ2VFdmVudC5uYW1lXG4gICAgKTtcbiAgfVxufVxuXG4vLyB0b2RvOiDQv9C+0LTRg9C80LDRgtGMINC90LDQtCDQuNCy0LXQvdGC0LDQvNC4INGA0L7Rg9GC0LjQvdCz0LBcbmV4cG9ydCBjbGFzcyBNaWNyb3pvcmROYXZpZ2F0aW9uRXZlbnQgZXh0ZW5kcyBNaWNyb3pvcmRFdmVudCB7XG4gIHN0YXRpYyBpc05hdmlnYXRpb25FdmVudChldmVudDogTWljcm96b3JkRXZlbnQpOiBldmVudCBpcyBNaWNyb3pvcmROYXZpZ2F0aW9uRXZlbnQge1xuICAgIHJldHVybiAoXG4gICAgICBldmVudCAmJlxuICAgICAgZXZlbnQuY29uc3RydWN0b3IgJiZcbiAgICAgIGV2ZW50LmNvbnN0cnVjdG9yLm5hbWUgPT09IE1pY3Jvem9yZE5hdmlnYXRpb25FdmVudC5uYW1lXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { MicrozordEvent } from './events';
|
|
2
|
+
export var LifecycleEventTypes;
|
|
3
|
+
(function (LifecycleEventTypes) {
|
|
4
|
+
LifecycleEventTypes["bootstrapped"] = "bootstrapped";
|
|
5
|
+
LifecycleEventTypes["destroyed"] = "destroyed";
|
|
6
|
+
})(LifecycleEventTypes || (LifecycleEventTypes = {}));
|
|
7
|
+
export class MicrozordLifecycleEvent extends MicrozordEvent {
|
|
8
|
+
static isLifecycleEvent(event) {
|
|
9
|
+
return (event &&
|
|
10
|
+
event.constructor &&
|
|
11
|
+
event.constructor.name === MicrozordLifecycleEvent.name);
|
|
12
|
+
}
|
|
13
|
+
static bootstrapped() {
|
|
14
|
+
return new MicrozordLifecycleEvent(LifecycleEventTypes.bootstrapped);
|
|
15
|
+
}
|
|
16
|
+
static isBootstrappedEvent(event) {
|
|
17
|
+
return event.type === LifecycleEventTypes.bootstrapped;
|
|
18
|
+
}
|
|
19
|
+
static destroyed() {
|
|
20
|
+
return new MicrozordLifecycleEvent(LifecycleEventTypes.destroyed);
|
|
21
|
+
}
|
|
22
|
+
static isDestroyedEvent(event) {
|
|
23
|
+
return event.type === LifecycleEventTypes.destroyed;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZWN5Y2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbW9kZWxzL2xpZmVjeWNsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRXhDLE1BQU0sQ0FBTixJQUFZLG1CQUdYO0FBSEQsV0FBWSxtQkFBbUI7SUFDN0Isb0RBQTZCLENBQUE7SUFDN0IsOENBQXVCLENBQUE7QUFDekIsQ0FBQyxFQUhXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFHOUI7QUFFRCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsY0FBYztJQUN6RCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBcUI7UUFDM0MsT0FBTyxDQUNMLEtBQUs7WUFDTCxLQUFLLENBQUMsV0FBVztZQUNqQixLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyx1QkFBdUIsQ0FBQyxJQUFJLENBQ3hELENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVk7UUFDakIsT0FBTyxJQUFJLHVCQUF1QixDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxNQUFNLENBQUMsbUJBQW1CLENBQUMsS0FBOEI7UUFDdkQsT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLG1CQUFtQixDQUFDLFlBQVksQ0FBQztJQUN6RCxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVM7UUFDZCxPQUFPLElBQUksdUJBQXVCLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUE4QjtRQUNwRCxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssbUJBQW1CLENBQUMsU0FBUyxDQUFDO0lBQ3RELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWljcm96b3JkRXZlbnR9IGZyb20gJy4vZXZlbnRzJztcblxuZXhwb3J0IGVudW0gTGlmZWN5Y2xlRXZlbnRUeXBlcyB7XG4gIGJvb3RzdHJhcHBlZCA9ICdib290c3RyYXBwZWQnLFxuICBkZXN0cm95ZWQgPSAnZGVzdHJveWVkJyxcbn1cblxuZXhwb3J0IGNsYXNzIE1pY3Jvem9yZExpZmVjeWNsZUV2ZW50IGV4dGVuZHMgTWljcm96b3JkRXZlbnQge1xuICBzdGF0aWMgaXNMaWZlY3ljbGVFdmVudChldmVudDogTWljcm96b3JkRXZlbnQpOiBldmVudCBpcyBNaWNyb3pvcmRMaWZlY3ljbGVFdmVudCB7XG4gICAgcmV0dXJuIChcbiAgICAgIGV2ZW50ICYmXG4gICAgICBldmVudC5jb25zdHJ1Y3RvciAmJlxuICAgICAgZXZlbnQuY29uc3RydWN0b3IubmFtZSA9PT0gTWljcm96b3JkTGlmZWN5Y2xlRXZlbnQubmFtZVxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgYm9vdHN0cmFwcGVkKCk6IE1pY3Jvem9yZExpZmVjeWNsZUV2ZW50IHtcbiAgICByZXR1cm4gbmV3IE1pY3Jvem9yZExpZmVjeWNsZUV2ZW50KExpZmVjeWNsZUV2ZW50VHlwZXMuYm9vdHN0cmFwcGVkKTtcbiAgfVxuXG4gIHN0YXRpYyBpc0Jvb3RzdHJhcHBlZEV2ZW50KGV2ZW50OiBNaWNyb3pvcmRMaWZlY3ljbGVFdmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBldmVudC50eXBlID09PSBMaWZlY3ljbGVFdmVudFR5cGVzLmJvb3RzdHJhcHBlZDtcbiAgfVxuXG4gIHN0YXRpYyBkZXN0cm95ZWQoKTogTWljcm96b3JkTGlmZWN5Y2xlRXZlbnQge1xuICAgIHJldHVybiBuZXcgTWljcm96b3JkTGlmZWN5Y2xlRXZlbnQoTGlmZWN5Y2xlRXZlbnRUeXBlcy5kZXN0cm95ZWQpO1xuICB9XG5cbiAgc3RhdGljIGlzRGVzdHJveWVkRXZlbnQoZXZlbnQ6IE1pY3Jvem9yZExpZmVjeWNsZUV2ZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGV2ZW50LnR5cGUgPT09IExpZmVjeWNsZUV2ZW50VHlwZXMuZGVzdHJveWVkO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cmF0aW9uLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9tb2RlbHMvcmVnaXN0cmF0aW9uLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0FwcGxpY2F0aW9uQ29uc3RydWN0b3J9IGZyb20gJy4vYXBwbGljYXRpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eVJlZ2lzdHJhdGlvbk9wdGlvbnM8VD4ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGxvYWQ6ICgpID0+IE9ic2VydmFibGU8VD4gfCBQcm9taXNlTGlrZTxUPiB8IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwUmVnaXN0cmF0aW9uT3B0aW9uczxcbiAgVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuPiBleHRlbmRzIEVudGl0eVJlZ2lzdHJhdGlvbk9wdGlvbnM8QXBwbGljYXRpb25Db25zdHJ1Y3RvcjxUPj4ge1xuICBwcm9wcz86IFQ7XG59XG4iXX0=
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export class MicrozordRegistry {
|
|
2
|
+
constructor() {
|
|
3
|
+
this._map = new Map();
|
|
4
|
+
}
|
|
5
|
+
getMap() {
|
|
6
|
+
return this._map;
|
|
7
|
+
}
|
|
8
|
+
clear() {
|
|
9
|
+
this._map.clear();
|
|
10
|
+
}
|
|
11
|
+
get(key) {
|
|
12
|
+
return this._map.get(key);
|
|
13
|
+
}
|
|
14
|
+
set(key, value) {
|
|
15
|
+
this._map.set(key, value);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
19
|
+
export const entityOptionsRegistry = new MicrozordRegistry();
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
21
|
+
export const loadedEntityRegistry = new MicrozordRegistry();
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8saUJBQWlCO0lBQTlCO1FBQ1UsU0FBSSxHQUFHLElBQUksR0FBRyxFQUFRLENBQUM7SUFpQmpDLENBQUM7SUFmQyxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsR0FBRyxDQUFrQixHQUFNO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFNLENBQUM7SUFDakMsQ0FBQztJQUVELEdBQUcsQ0FBa0IsR0FBTSxFQUFFLEtBQVE7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FDRjtBQUVELDhEQUE4RDtBQUM5RCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGlCQUFpQixFQUd2RCxDQUFDO0FBRUosOERBQThEO0FBQzlELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksaUJBQWlCLEVBR3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VudGl0eVJlZ2lzdHJhdGlvbk9wdGlvbnN9IGZyb20gJy4vbW9kZWxzL3JlZ2lzdHJhdGlvbi1vcHRpb25zJztcbmltcG9ydCB7RW50aXR5Q29uc3RydWN0b3J9IGZyb20gJy4vbW9kZWxzL2VudGl0eSc7XG5cbmV4cG9ydCBjbGFzcyBNaWNyb3pvcmRSZWdpc3RyeTxLLCBWPiB7XG4gIHByaXZhdGUgX21hcCA9IG5ldyBNYXA8SywgVj4oKTtcblxuICBnZXRNYXAoKTogUmVhZG9ubHlNYXA8SywgVj4ge1xuICAgIHJldHVybiB0aGlzLl9tYXA7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLl9tYXAuY2xlYXIoKTtcbiAgfVxuXG4gIGdldDxFIGV4dGVuZHMgViA9IFY+KGtleTogSyk6IEUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9tYXAuZ2V0KGtleSkgYXMgRTtcbiAgfVxuXG4gIHNldDxFIGV4dGVuZHMgViA9IFY+KGtleTogSywgdmFsdWU6IEUpOiB2b2lkIHtcbiAgICB0aGlzLl9tYXAuc2V0KGtleSwgdmFsdWUpO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgY29uc3QgZW50aXR5T3B0aW9uc1JlZ2lzdHJ5ID0gbmV3IE1pY3Jvem9yZFJlZ2lzdHJ5PFxuICBzdHJpbmcsXG4gIEVudGl0eVJlZ2lzdHJhdGlvbk9wdGlvbnM8YW55PlxuPigpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGNvbnN0IGxvYWRlZEVudGl0eVJlZ2lzdHJ5ID0gbmV3IE1pY3Jvem9yZFJlZ2lzdHJ5PFxuICBzdHJpbmcsXG4gIEVudGl0eUNvbnN0cnVjdG9yPGFueSwgYW55PlxuPigpO1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm96b3JkLWNvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL21pY3Jvem9yZC1jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { of, defer, isObservable } from 'rxjs';
|
|
2
1
|
import { switchMap, tap, map, mapTo } from 'rxjs/operators';
|
|
3
|
-
import {
|
|
2
|
+
import { of, defer, isObservable } from 'rxjs';
|
|
4
3
|
|
|
5
4
|
class MicrozordRegistry {
|
|
6
5
|
constructor() {
|
|
@@ -58,11 +57,16 @@ function loadApp(appName) {
|
|
|
58
57
|
: loadEntity(appName)));
|
|
59
58
|
}
|
|
60
59
|
|
|
61
|
-
function
|
|
62
|
-
return loadApp(appName).pipe(map(AppConstructor =>
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
60
|
+
function constructApp(appName) {
|
|
61
|
+
return loadApp(appName).pipe(map(AppConstructor => new AppConstructor(appName, entityOptionsRegistry.get(appName)?.props)));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function bootstrapApp(app, selector, props) {
|
|
65
|
+
return of(app).pipe(switchMap(app => defer(() => app.bootstrap(selector, props)).pipe(mapTo(app))));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function constructAndBootstrapApp(appName, selector, props) {
|
|
69
|
+
return constructApp(appName).pipe(switchMap(app => bootstrapApp(app, selector, props)));
|
|
66
70
|
}
|
|
67
71
|
|
|
68
72
|
function registerEntity(options) {
|
|
@@ -76,7 +80,7 @@ function registerApp(options) {
|
|
|
76
80
|
function replaceApps(from, to, props) {
|
|
77
81
|
return defer(() => {
|
|
78
82
|
from.destroy();
|
|
79
|
-
return
|
|
83
|
+
return constructAndBootstrapApp(to, from.container, props);
|
|
80
84
|
});
|
|
81
85
|
}
|
|
82
86
|
|
|
@@ -173,11 +177,9 @@ class Application {
|
|
|
173
177
|
this.isBootstrapped = false;
|
|
174
178
|
this.isDestroyed = true;
|
|
175
179
|
}
|
|
176
|
-
bootstrap(container, _props) {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
this.container = container;
|
|
180
|
-
});
|
|
180
|
+
async bootstrap(container, _props) {
|
|
181
|
+
this.isBootstrapped = true;
|
|
182
|
+
this.container = container;
|
|
181
183
|
}
|
|
182
184
|
callListeners(listeners, event) {
|
|
183
185
|
event.target = this;
|
|
@@ -191,5 +193,5 @@ class Application {
|
|
|
191
193
|
* Generated bundle index. Do not edit.
|
|
192
194
|
*/
|
|
193
195
|
|
|
194
|
-
export { Application, LifecycleEventTypes, MicrozordEvent, MicrozordLifecycleEvent, MicrozordMessageEvent, MicrozordNavigationEvent, bootstrapApp, getApp, getEntity, loadApp, loadEntity, registerApp, registerEntity, replaceApps
|
|
195
|
-
//# sourceMappingURL=microzord-core.
|
|
196
|
+
export { Application, LifecycleEventTypes, MicrozordEvent, MicrozordLifecycleEvent, MicrozordMessageEvent, MicrozordNavigationEvent, bootstrapApp, constructAndBootstrapApp, constructApp, getApp, getEntity, loadApp, loadEntity, registerApp, registerEntity, replaceApps };
|
|
197
|
+
//# sourceMappingURL=microzord-core.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"microzord-core.mjs","sources":["../../../../libs/core/src/lib/registry.ts","../../../../libs/core/src/lib/helpers/get-entity.ts","../../../../libs/core/src/lib/helpers/get-app.ts","../../../../libs/core/src/lib/helpers/load-entity.ts","../../../../libs/core/src/lib/helpers/load-app.ts","../../../../libs/core/src/lib/helpers/construct-app.ts","../../../../libs/core/src/lib/helpers/bootstrap-app.ts","../../../../libs/core/src/lib/helpers/construct-and-bootstrap-app.ts","../../../../libs/core/src/lib/helpers/register-entity.ts","../../../../libs/core/src/lib/helpers/register-app.ts","../../../../libs/core/src/lib/helpers/replace-apps.ts","../../../../libs/core/src/lib/models/events.ts","../../../../libs/core/src/lib/models/lifecycle.ts","../../../../libs/core/src/lib/models/application.ts","../../../../libs/core/src/microzord-core.ts"],"sourcesContent":["import {EntityRegistrationOptions} from './models/registration-options';\nimport {EntityConstructor} from './models/entity';\n\nexport class MicrozordRegistry<K, V> {\n private _map = new Map<K, V>();\n\n getMap(): ReadonlyMap<K, V> {\n return this._map;\n }\n\n clear(): void {\n this._map.clear();\n }\n\n get<E extends V = V>(key: K): E | undefined {\n return this._map.get(key) as E;\n }\n\n set<E extends V = V>(key: K, value: E): void {\n this._map.set(key, value);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const entityOptionsRegistry = new MicrozordRegistry<\n string,\n EntityRegistrationOptions<any>\n>();\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const loadedEntityRegistry = new MicrozordRegistry<\n string,\n EntityConstructor<any, any>\n>();\n","import {Observable, of} from 'rxjs';\nimport {loadedEntityRegistry} from '../registry';\nimport {EntityConstructor} from '../models/entity';\n\nexport function getEntity<T, K>(\n entityName: string,\n): Observable<EntityConstructor<T, K> | null> {\n return of(loadedEntityRegistry.get(entityName) || null);\n}\n","import {Observable} from 'rxjs';\nimport {ApplicationConstructor} from '../models/application';\nimport {getEntity} from './get-entity';\n\nexport function getApp<T extends Record<string, any> = Record<string, any>>(\n appName: string,\n): Observable<ApplicationConstructor<T> | null> {\n return getEntity(appName);\n}\n","import {defer, isObservable, Observable, of} from 'rxjs';\nimport {switchMap, tap} from 'rxjs/operators';\nimport {entityOptionsRegistry, loadedEntityRegistry} from '../registry';\nimport {EntityConstructor} from '../models/entity';\nimport {EntityRegistrationOptions} from '../models/registration-options';\nimport {getEntity} from './get-entity';\n\nexport function loadEntity<T, K>(\n entityName: string,\n): Observable<EntityConstructor<T, K>> {\n return getEntity<T, K>(entityName).pipe(\n switchMap(entity =>\n entity\n ? of(entity)\n : defer<Observable<EntityConstructor<T, K>>>(() => {\n const options =\n entityOptionsRegistry.get<\n EntityRegistrationOptions<EntityConstructor<T, K>>\n >(entityName);\n\n if (!options) {\n throw `Microzord entity \"${entityName}\" has not been registered. Check the spelling or register an app.`;\n }\n\n if (!options.load) {\n throw `Microzord entity \"${entityName}\" is registered but it has no \"load\" function. Please, provide it`;\n }\n\n const result = options.load();\n\n return result &&\n (isObservable(result) ||\n ('then' in result && typeof result['then'] === 'function'))\n ? defer(() => result)\n : of(result as EntityConstructor<T, K>);\n }),\n ),\n tap(entity => loadedEntityRegistry.set(entityName, entity)),\n );\n}\n","import {Observable, of} from 'rxjs';\nimport {switchMap, tap} from 'rxjs/operators';\nimport {Application, ApplicationConstructor} from '../models/application';\nimport {loadedEntityRegistry} from '../registry';\nimport {getApp} from './get-app';\nimport {loadEntity} from './load-entity';\n\nexport function loadApp<T extends Record<string, any> = Record<string, any>>(\n appName: string,\n): Observable<ApplicationConstructor<T>> {\n return getApp<T>(appName).pipe(\n switchMap(appConstructor =>\n appConstructor\n ? of(appConstructor).pipe(\n tap(applicationConstructor =>\n loadedEntityRegistry.set(appName, applicationConstructor),\n ),\n )\n : loadEntity<T, Application<T>>(appName),\n ),\n );\n}\n","import {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {Application} from '../models/application';\nimport {entityOptionsRegistry} from '../registry';\nimport {loadApp} from './load-app';\nimport {AppRegistrationOptions} from '../models/registration-options';\n\nexport function constructApp<T extends Record<string, unknown>>(\n appName: string,\n): Observable<Application<T>> {\n return loadApp<T>(appName).pipe(\n map(\n AppConstructor =>\n new AppConstructor(\n appName,\n entityOptionsRegistry.get<AppRegistrationOptions<T>>(appName)?.props,\n ),\n ),\n );\n}\n","import {defer, Observable, of} from 'rxjs';\nimport {mapTo, switchMap} from 'rxjs/operators';\nimport {Application} from '../models/application';\n\nexport function bootstrapApp<T extends Record<string, unknown>>(\n app: Application<T>,\n selector: string | Element,\n props?: T,\n): Observable<Application<T>> {\n return of(app).pipe(\n switchMap(app => defer(() => app.bootstrap(selector, props)).pipe(mapTo(app))),\n );\n}\n","import {Observable} from 'rxjs';\nimport {switchMap} from 'rxjs/operators';\nimport {Application} from '../models/application';\nimport {constructApp} from './construct-app';\nimport {bootstrapApp} from './bootstrap-app';\n\nexport function constructAndBootstrapApp<\n T extends Record<string, unknown> = Record<string, unknown>,\n>(appName: string, selector: string | Element, props?: T): Observable<Application<T>> {\n return constructApp<T>(appName).pipe(\n switchMap(app => bootstrapApp(app, selector, props)),\n );\n}\n","import {entityOptionsRegistry} from '../registry';\nimport {EntityRegistrationOptions} from '../models/registration-options';\n\nexport function registerEntity<\n T,\n K extends EntityRegistrationOptions<T> = EntityRegistrationOptions<T>,\n>(options: K): void {\n entityOptionsRegistry.set(options.name, options);\n}\n","import {AppRegistrationOptions} from '../models/registration-options';\nimport {registerEntity} from './register-entity';\n\nexport function registerApp<T extends Record<string, any> = Record<string, any>>(\n options: AppRegistrationOptions<T>,\n) {\n registerEntity(options);\n}\n","import {defer, Observable} from 'rxjs';\nimport {Application} from '../models/application';\nimport {constructAndBootstrapApp} from './construct-and-bootstrap-app';\n\nexport function replaceApps<T extends Record<string, any> = Record<string, any>>(\n from: Application,\n to: string,\n props?: T,\n): Observable<Application<T>> {\n return defer(() => {\n from.destroy();\n\n return constructAndBootstrapApp(to, from.container, props);\n });\n}\n","import {Application} from './application';\n\nexport class MicrozordEvent {\n target: Application<any> | null = null;\n constructor(public readonly type: string) {}\n}\n\n// todo: подумать над сообщениями\nexport class MicrozordMessageEvent extends MicrozordEvent {\n static isMessageEvent(event: MicrozordEvent): event is MicrozordMessageEvent {\n return (\n event && event.constructor && event.constructor.name === MicrozordMessageEvent.name\n );\n }\n}\n\n// todo: подумать над ивентами роутинга\nexport class MicrozordNavigationEvent extends MicrozordEvent {\n static isNavigationEvent(event: MicrozordEvent): event is MicrozordNavigationEvent {\n return (\n event &&\n event.constructor &&\n event.constructor.name === MicrozordNavigationEvent.name\n );\n }\n}\n","import {MicrozordEvent} from './events';\n\nexport enum LifecycleEventTypes {\n bootstrapped = 'bootstrapped',\n destroyed = 'destroyed',\n}\n\nexport class MicrozordLifecycleEvent extends MicrozordEvent {\n static isLifecycleEvent(event: MicrozordEvent): event is MicrozordLifecycleEvent {\n return (\n event &&\n event.constructor &&\n event.constructor.name === MicrozordLifecycleEvent.name\n );\n }\n\n static bootstrapped(): MicrozordLifecycleEvent {\n return new MicrozordLifecycleEvent(LifecycleEventTypes.bootstrapped);\n }\n\n static isBootstrappedEvent(event: MicrozordLifecycleEvent): boolean {\n return event.type === LifecycleEventTypes.bootstrapped;\n }\n\n static destroyed(): MicrozordLifecycleEvent {\n return new MicrozordLifecycleEvent(LifecycleEventTypes.destroyed);\n }\n\n static isDestroyedEvent(event: MicrozordLifecycleEvent): boolean {\n return event.type === LifecycleEventTypes.destroyed;\n }\n}\n","import {MicrozordEvent, MicrozordMessageEvent, MicrozordNavigationEvent} from './events';\nimport {MicrozordLifecycleEvent} from './lifecycle';\nimport {EntityConstructor} from './entity';\n\nexport type Listener<T extends MicrozordEvent> = (event: T) => void;\n\nexport abstract class Application<\n T extends Record<string, unknown> = Record<string, unknown>,\n> {\n isBootstrapped = false;\n isDestroyed = true;\n container: Element | string = '';\n\n protected readonly hook = new Set<Listener<MicrozordLifecycleEvent>>();\n protected readonly message = new Set<Listener<MicrozordMessageEvent>>();\n protected readonly navigationEvent = new Set<Listener<MicrozordNavigationEvent>>();\n\n // todo: заспекать типы props\n constructor(public readonly name: string, public props?: T) {}\n\n onMessage(fn: Listener<MicrozordMessageEvent>): () => void {\n this.message.add(fn);\n\n return () => {\n this.message.delete(fn);\n };\n }\n\n emitMessage(event: MicrozordMessageEvent) {\n this.callListeners(this.message, event);\n }\n\n onRouteChange(fn: Listener<MicrozordNavigationEvent>): () => void {\n this.navigationEvent.add(fn);\n\n return () => {\n this.navigationEvent.delete(fn);\n };\n }\n\n emitRouteChange(event: MicrozordNavigationEvent) {\n this.callListeners(this.navigationEvent, event);\n }\n\n onHook(fn: Listener<MicrozordLifecycleEvent>): () => void {\n this.hook.add(fn);\n\n return () => {\n this.hook.delete(fn);\n };\n }\n\n emitHook(event: MicrozordLifecycleEvent) {\n this.callListeners(this.hook, event);\n }\n\n destroy() {\n this.emitHook(MicrozordLifecycleEvent.destroyed());\n\n this.hook.clear(); // todo: в этот поток перед комплитом нужен евент дестроя\n this.message.clear();\n this.navigationEvent.clear();\n\n this.isBootstrapped = false;\n this.isDestroyed = true;\n }\n\n async bootstrap(container: string | Element, _props?: T): Promise<void> {\n this.isBootstrapped = true;\n this.container = container;\n }\n\n abstract send(msg: string | MicrozordMessageEvent): Promise<void>;\n\n // todo: шо за пропс? Надо придумать\n abstract navigate(url: string, props?: unknown): Promise<void>;\n\n protected callListeners<K extends MicrozordEvent>(\n listeners: Set<Listener<K>>,\n event: K,\n ) {\n event.target = this;\n\n [...listeners].forEach(fn => {\n fn(event);\n });\n }\n}\n\nexport type ApplicationConstructor<\n T extends Record<string, unknown> = Record<string, unknown>,\n> = EntityConstructor<T, Application<T>>;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
export * from './lib/helpers/construct-and-bootstrap-app';
|
|
1
2
|
export * from './lib/helpers/bootstrap-app';
|
|
3
|
+
export * from './lib/helpers/construct-app';
|
|
2
4
|
export * from './lib/helpers/get-app';
|
|
3
5
|
export * from './lib/helpers/get-entity';
|
|
4
6
|
export * from './lib/helpers/load-app';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
2
|
import { Application } from '../models/application';
|
|
3
|
-
export declare function bootstrapApp<T extends Record<string,
|
|
3
|
+
export declare function bootstrapApp<T extends Record<string, unknown>>(app: Application<T>, selector: string | Element, props?: T): Observable<Application<T>>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { Application } from '../models/application';
|
|
3
|
+
export declare function constructAndBootstrapApp<T extends Record<string, unknown> = Record<string, unknown>>(appName: string, selector: string | Element, props?: T): Observable<Application<T>>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { MicrozordEvent, MicrozordMessageEvent, MicrozordNavigationEvent } from './events';
|
|
2
2
|
import { MicrozordLifecycleEvent } from './lifecycle';
|
|
3
3
|
import { EntityConstructor } from './entity';
|
|
4
|
-
export
|
|
5
|
-
export declare abstract class Application<T extends Record<string,
|
|
4
|
+
export type Listener<T extends MicrozordEvent> = (event: T) => void;
|
|
5
|
+
export declare abstract class Application<T extends Record<string, unknown> = Record<string, unknown>> {
|
|
6
6
|
readonly name: string;
|
|
7
7
|
props?: T | undefined;
|
|
8
8
|
isBootstrapped: boolean;
|
|
@@ -24,4 +24,4 @@ export declare abstract class Application<T extends Record<string, any> = Record
|
|
|
24
24
|
abstract navigate(url: string, props?: unknown): Promise<void>;
|
|
25
25
|
protected callListeners<K extends MicrozordEvent>(listeners: Set<Listener<K>>, event: K): void;
|
|
26
26
|
}
|
|
27
|
-
export
|
|
27
|
+
export type ApplicationConstructor<T extends Record<string, unknown> = Record<string, unknown>> = EntityConstructor<T, Application<T>>;
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@microzord/core",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"tslib": "^2.
|
|
5
|
+
"tslib": "^2.6.2"
|
|
6
6
|
},
|
|
7
7
|
"peerDependencies": {
|
|
8
8
|
"rxjs": ">=6.5.0"
|
|
@@ -27,16 +27,23 @@
|
|
|
27
27
|
],
|
|
28
28
|
"contributors": [
|
|
29
29
|
"Igor Katsuba <katsuba.igor@gmail.ru>",
|
|
30
|
-
"Roman Sedov <79601794011@ya.ru>"
|
|
30
|
+
"Roman Sedov <79601794011@ya.ru>",
|
|
31
|
+
"Vsevolod Arutyunov <sevaru@inbox.ru>"
|
|
31
32
|
],
|
|
32
|
-
"repository": "https://github.com/
|
|
33
|
-
"homepage": "https://github.
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
33
|
+
"repository": "https://github.com/taiga-family/microzord",
|
|
34
|
+
"homepage": "https://taiga-family.github.io/microzord",
|
|
35
|
+
"module": "fesm2022/microzord-core.mjs",
|
|
36
|
+
"typings": "index.d.ts",
|
|
37
|
+
"exports": {
|
|
38
|
+
"./package.json": {
|
|
39
|
+
"default": "./package.json"
|
|
40
|
+
},
|
|
41
|
+
".": {
|
|
42
|
+
"types": "./index.d.ts",
|
|
43
|
+
"esm2022": "./esm2022/microzord-core.mjs",
|
|
44
|
+
"esm": "./esm2022/microzord-core.mjs",
|
|
45
|
+
"default": "./fesm2022/microzord-core.mjs"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
41
48
|
"sideEffects": false
|
|
42
49
|
}
|