@microzord/core 1.0.0 → 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.
Files changed (100) hide show
  1. package/README.md +7 -0
  2. package/esm2022/index.mjs +16 -0
  3. package/esm2022/lib/helpers/bootstrap-app.mjs +6 -0
  4. package/esm2022/lib/helpers/construct-and-bootstrap-app.mjs +7 -0
  5. package/esm2022/lib/helpers/construct-app.mjs +7 -0
  6. package/esm2022/lib/helpers/get-app.mjs +5 -0
  7. package/esm2022/lib/helpers/get-entity.mjs +6 -0
  8. package/esm2022/lib/helpers/load-app.mjs +11 -0
  9. package/esm2022/lib/helpers/load-entity.mjs +24 -0
  10. package/esm2022/lib/helpers/register-app.mjs +5 -0
  11. package/esm2022/lib/helpers/register-entity.mjs +5 -0
  12. package/esm2022/lib/helpers/replace-apps.mjs +9 -0
  13. package/esm2022/lib/models/application.mjs +60 -0
  14. package/esm2022/lib/models/entity.mjs +2 -0
  15. package/esm2022/lib/models/events.mjs +21 -0
  16. package/esm2022/lib/models/lifecycle.mjs +26 -0
  17. package/esm2022/lib/models/registration-options.mjs +2 -0
  18. package/esm2022/lib/registry.mjs +22 -0
  19. package/esm2022/microzord-core.mjs +5 -0
  20. package/{fesm2015/microzord-core.js → fesm2022/microzord-core.mjs} +6 -12
  21. package/fesm2022/microzord-core.mjs.map +1 -0
  22. package/lib/models/application.d.ts +2 -2
  23. package/package.json +17 -10
  24. package/bundles/microzord-core-testing.umd.js +0 -494
  25. package/bundles/microzord-core-testing.umd.js.map +0 -1
  26. package/bundles/microzord-core.umd.js +0 -713
  27. package/bundles/microzord-core.umd.js.map +0 -1
  28. package/esm2015/index.js +0 -16
  29. package/esm2015/index.js.map +0 -1
  30. package/esm2015/index.metadata.json +0 -1
  31. package/esm2015/lib/helpers/bootstrap-app.js +0 -6
  32. package/esm2015/lib/helpers/bootstrap-app.js.map +0 -1
  33. package/esm2015/lib/helpers/bootstrap-app.metadata.json +0 -1
  34. package/esm2015/lib/helpers/construct-and-bootstrap-app.js +0 -7
  35. package/esm2015/lib/helpers/construct-and-bootstrap-app.js.map +0 -1
  36. package/esm2015/lib/helpers/construct-and-bootstrap-app.metadata.json +0 -1
  37. package/esm2015/lib/helpers/construct-app.js +0 -10
  38. package/esm2015/lib/helpers/construct-app.js.map +0 -1
  39. package/esm2015/lib/helpers/construct-app.metadata.json +0 -1
  40. package/esm2015/lib/helpers/get-app.js +0 -5
  41. package/esm2015/lib/helpers/get-app.js.map +0 -1
  42. package/esm2015/lib/helpers/get-app.metadata.json +0 -1
  43. package/esm2015/lib/helpers/get-entity.js +0 -6
  44. package/esm2015/lib/helpers/get-entity.js.map +0 -1
  45. package/esm2015/lib/helpers/get-entity.metadata.json +0 -1
  46. package/esm2015/lib/helpers/load-app.js +0 -11
  47. package/esm2015/lib/helpers/load-app.js.map +0 -1
  48. package/esm2015/lib/helpers/load-app.metadata.json +0 -1
  49. package/esm2015/lib/helpers/load-entity.js +0 -24
  50. package/esm2015/lib/helpers/load-entity.js.map +0 -1
  51. package/esm2015/lib/helpers/load-entity.metadata.json +0 -1
  52. package/esm2015/lib/helpers/register-app.js +0 -5
  53. package/esm2015/lib/helpers/register-app.js.map +0 -1
  54. package/esm2015/lib/helpers/register-app.metadata.json +0 -1
  55. package/esm2015/lib/helpers/register-entity.js +0 -5
  56. package/esm2015/lib/helpers/register-entity.js.map +0 -1
  57. package/esm2015/lib/helpers/register-entity.metadata.json +0 -1
  58. package/esm2015/lib/helpers/replace-apps.js +0 -9
  59. package/esm2015/lib/helpers/replace-apps.js.map +0 -1
  60. package/esm2015/lib/helpers/replace-apps.metadata.json +0 -1
  61. package/esm2015/lib/models/application.js +0 -63
  62. package/esm2015/lib/models/application.js.map +0 -1
  63. package/esm2015/lib/models/application.metadata.json +0 -1
  64. package/esm2015/lib/models/entity.js +0 -2
  65. package/esm2015/lib/models/entity.js.map +0 -1
  66. package/esm2015/lib/models/entity.metadata.json +0 -1
  67. package/esm2015/lib/models/events.js +0 -21
  68. package/esm2015/lib/models/events.js.map +0 -1
  69. package/esm2015/lib/models/events.metadata.json +0 -1
  70. package/esm2015/lib/models/lifecycle.js +0 -26
  71. package/esm2015/lib/models/lifecycle.js.map +0 -1
  72. package/esm2015/lib/models/lifecycle.metadata.json +0 -1
  73. package/esm2015/lib/models/registration-options.js +0 -2
  74. package/esm2015/lib/models/registration-options.js.map +0 -1
  75. package/esm2015/lib/models/registration-options.metadata.json +0 -1
  76. package/esm2015/lib/registry.js +0 -22
  77. package/esm2015/lib/registry.js.map +0 -1
  78. package/esm2015/lib/registry.metadata.json +0 -1
  79. package/esm2015/microzord-core.js +0 -6
  80. package/esm2015/microzord-core.js.map +0 -1
  81. package/esm2015/microzord-core.metadata.json +0 -1
  82. package/esm2015/testing/application.mock.js +0 -10
  83. package/esm2015/testing/application.mock.js.map +0 -1
  84. package/esm2015/testing/application.mock.metadata.json +0 -1
  85. package/esm2015/testing/microzord-core-testing.js +0 -5
  86. package/esm2015/testing/microzord-core-testing.js.map +0 -1
  87. package/esm2015/testing/microzord-core-testing.metadata.json +0 -1
  88. package/esm2015/testing/public_api.js +0 -2
  89. package/esm2015/testing/public_api.js.map +0 -1
  90. package/esm2015/testing/public_api.metadata.json +0 -1
  91. package/fesm2015/microzord-core-testing.js +0 -17
  92. package/fesm2015/microzord-core-testing.js.map +0 -1
  93. package/fesm2015/microzord-core.js.map +0 -1
  94. package/microzord-core.d.ts +0 -5
  95. package/microzord-core.metadata.json +0 -1
  96. package/testing/application.mock.d.ts +0 -5
  97. package/testing/microzord-core-testing.d.ts +0 -4
  98. package/testing/microzord-core-testing.metadata.json +0 -1
  99. package/testing/package.json +0 -11
  100. package/testing/public_api.d.ts +0 -1
package/README.md CHANGED
@@ -18,6 +18,13 @@ It is a small tool that allows you to add and render multiple apps on one page.
18
18
 
19
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!
20
20
 
21
+ ## Angular version support
22
+
23
+ | Microzord Version | Angular version |
24
+ | ----------------- | --------------- |
25
+ | v2.x | 16+ |
26
+ | v1.x | 12 - 15 |
27
+
21
28
  ## Installation and usage
22
29
 
23
30
  An extensive demo is coming soon...
@@ -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
1
  import { switchMap, tap, map, mapTo } from 'rxjs/operators';
2
2
  import { of, defer, isObservable } from 'rxjs';
3
- import { __awaiter } from 'tslib';
4
3
 
5
4
  class MicrozordRegistry {
6
5
  constructor() {
@@ -59,10 +58,7 @@ function loadApp(appName) {
59
58
  }
60
59
 
61
60
  function constructApp(appName) {
62
- return loadApp(appName).pipe(map(AppConstructor => {
63
- var _a;
64
- return new AppConstructor(appName, (_a = entityOptionsRegistry.get(appName)) === null || _a === void 0 ? void 0 : _a.props);
65
- }));
61
+ return loadApp(appName).pipe(map(AppConstructor => new AppConstructor(appName, entityOptionsRegistry.get(appName)?.props)));
66
62
  }
67
63
 
68
64
  function bootstrapApp(app, selector, props) {
@@ -181,11 +177,9 @@ class Application {
181
177
  this.isBootstrapped = false;
182
178
  this.isDestroyed = true;
183
179
  }
184
- bootstrap(container, _props) {
185
- return __awaiter(this, void 0, void 0, function* () {
186
- this.isBootstrapped = true;
187
- this.container = container;
188
- });
180
+ async bootstrap(container, _props) {
181
+ this.isBootstrapped = true;
182
+ this.container = container;
189
183
  }
190
184
  callListeners(listeners, event) {
191
185
  event.target = this;
@@ -199,5 +193,5 @@ class Application {
199
193
  * Generated bundle index. Do not edit.
200
194
  */
201
195
 
202
- export { Application, LifecycleEventTypes, MicrozordEvent, MicrozordLifecycleEvent, MicrozordMessageEvent, MicrozordNavigationEvent, bootstrapApp, constructAndBootstrapApp, constructApp, getApp, getEntity, loadApp, loadEntity, registerApp, registerEntity, replaceApps, MicrozordRegistry as ɵa, loadedEntityRegistry as ɵb };
203
- //# sourceMappingURL=microzord-core.js.map
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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"}
@@ -1,7 +1,7 @@
1
1
  import { MicrozordEvent, MicrozordMessageEvent, MicrozordNavigationEvent } from './events';
2
2
  import { MicrozordLifecycleEvent } from './lifecycle';
3
3
  import { EntityConstructor } from './entity';
4
- export declare type Listener<T extends MicrozordEvent> = (event: T) => void;
4
+ export type Listener<T extends MicrozordEvent> = (event: T) => void;
5
5
  export declare abstract class Application<T extends Record<string, unknown> = Record<string, unknown>> {
6
6
  readonly name: string;
7
7
  props?: T | undefined;
@@ -24,4 +24,4 @@ export declare abstract class Application<T extends Record<string, unknown> = Re
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 declare type ApplicationConstructor<T extends Record<string, unknown> = Record<string, unknown>> = EntityConstructor<T, Application<T>>;
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": "1.0.0",
3
+ "version": "2.0.1",
4
4
  "dependencies": {
5
- "tslib": "2.6.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
33
  "repository": "https://github.com/taiga-family/microzord",
33
34
  "homepage": "https://taiga-family.github.io/microzord",
34
- "main": "bundles/microzord-core.umd.js",
35
- "module": "fesm2015/microzord-core.js",
36
- "es2015": "fesm2015/microzord-core.js",
37
- "esm2015": "esm2015/microzord-core.js",
38
- "fesm2015": "fesm2015/microzord-core.js",
39
- "typings": "microzord-core.d.ts",
40
- "metadata": "microzord-core.metadata.json",
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
  }