@alauda-fe/plugin-sdk 0.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.
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhdWRhLWZlLXBsdWdpbi1zZGsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3BsdWdpbi1zZGsvc3JjL2FsYXVkYS1mZS1wbHVnaW4tc2RrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,7 @@
1
+ export * from './lib/app-extensions';
2
+ export * from './lib/components';
3
+ export * from './lib/extensions-loader';
4
+ export * from './lib/navigation';
5
+ export * from './lib/route';
6
+ export * from './lib/utils';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3BsdWdpbi1zZGsvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9hcHAtZXh0ZW5zaW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4dGVuc2lvbnMtbG9hZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL25hdmlnYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcm91dGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMnO1xuIl19
@@ -0,0 +1,18 @@
1
+ import { loadExtensions } from './extensions-loader';
2
+ let extensions;
3
+ export function getAppExtensions(type, cluster) {
4
+ if (!extensions) {
5
+ throw new Error('Extensions not loaded');
6
+ }
7
+ return extensions.filter(ext => {
8
+ if (ext.cluster && cluster && ext.cluster !== cluster) {
9
+ return false;
10
+ }
11
+ return ext.type === type;
12
+ });
13
+ }
14
+ export async function setupAppExtensions() {
15
+ extensions = await loadExtensions({ types: ['service'] });
16
+ return extensions;
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWV4dGVuc2lvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsdWdpbi1zZGsvc3JjL2xpYi9hcHAtZXh0ZW5zaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFaEUsSUFBSSxVQUF1QixDQUFDO0FBRTVCLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsT0FBZ0I7SUFDN0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQzdCLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLElBQUksR0FBRyxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN0RCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsa0JBQWtCO0lBQ3RDLFVBQVUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUUxRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXh0ZW5zaW9uLCBsb2FkRXh0ZW5zaW9ucyB9IGZyb20gJy4vZXh0ZW5zaW9ucy1sb2FkZXInO1xuXG5sZXQgZXh0ZW5zaW9uczogRXh0ZW5zaW9uW107XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBcHBFeHRlbnNpb25zKHR5cGU6IHN0cmluZywgY2x1c3Rlcj86IHN0cmluZykge1xuICBpZiAoIWV4dGVuc2lvbnMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4dGVuc2lvbnMgbm90IGxvYWRlZCcpO1xuICB9XG4gIHJldHVybiBleHRlbnNpb25zLmZpbHRlcihleHQgPT4ge1xuICAgIGlmIChleHQuY2x1c3RlciAmJiBjbHVzdGVyICYmIGV4dC5jbHVzdGVyICE9PSBjbHVzdGVyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4dC50eXBlID09PSB0eXBlO1xuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNldHVwQXBwRXh0ZW5zaW9ucygpIHtcbiAgZXh0ZW5zaW9ucyA9IGF3YWl0IGxvYWRFeHRlbnNpb25zKHsgdHlwZXM6IFsnc2VydmljZSddIH0pO1xuXG4gIHJldHVybiBleHRlbnNpb25zO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './remote-component-outlet/component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsdWdpbi1zZGsvc3JjL2xpYi9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUNBQXFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3JlbW90ZS1jb21wb25lbnQtb3V0bGV0L2NvbXBvbmVudCc7XG4iXX0=
@@ -0,0 +1,47 @@
1
+ import { NgComponentOutlet } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, computed, effect, input, signal, } from '@angular/core';
3
+ import { loadRemote } from '../../utils';
4
+ import * as i0 from "@angular/core";
5
+ const _c0 = ["*"];
6
+ function RemoteComponentOutletComponent_Conditional_0_ng_container_0_Template(rf, ctx) { if (rf & 1) {
7
+ i0.ɵɵelementContainer(0);
8
+ } }
9
+ function RemoteComponentOutletComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
10
+ i0.ɵɵtemplate(0, RemoteComponentOutletComponent_Conditional_0_ng_container_0_Template, 1, 0, "ng-container", 0);
11
+ } if (rf & 2) {
12
+ const ctx_r0 = i0.ɵɵnextContext();
13
+ i0.ɵɵproperty("ngComponentOutlet", ctx_r0.component())("ngComponentOutletInputs", ctx_r0.inputs())("ngComponentOutletInjector", ctx_r0.injector())("ngComponentOutletContent", ctx_r0.content());
14
+ } }
15
+ function RemoteComponentOutletComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
16
+ i0.ɵɵprojection(0);
17
+ } }
18
+ export class RemoteComponentOutletComponent {
19
+ constructor() {
20
+ this.remoteComponents = signal({});
21
+ this.name = input.required();
22
+ this.entrypoint = input.required();
23
+ this.expose = input('./Components');
24
+ this.inputs = input();
25
+ this.injector = input();
26
+ this.content = input();
27
+ this.component = computed(() => this.remoteComponents()[this.name()]);
28
+ effect(async () => {
29
+ if (this.entrypoint()) {
30
+ this.remoteComponents.set((await loadRemote(this.entrypoint(), this.expose())).default);
31
+ }
32
+ }, { allowSignalWrites: true });
33
+ }
34
+ static { this.ɵfac = function RemoteComponentOutletComponent_Factory(t) { return new (t || RemoteComponentOutletComponent)(); }; }
35
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: RemoteComponentOutletComponent, selectors: [["acl-remote-component-outlet"]], inputs: { name: [1, "name"], entrypoint: [1, "entrypoint"], expose: [1, "expose"], inputs: [1, "inputs"], injector: [1, "injector"], content: [1, "content"] }, standalone: true, features: [i0.ɵɵStandaloneFeature], ngContentSelectors: _c0, decls: 2, vars: 1, consts: [[4, "ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent"]], template: function RemoteComponentOutletComponent_Template(rf, ctx) { if (rf & 1) {
36
+ i0.ɵɵprojectionDef();
37
+ i0.ɵɵtemplate(0, RemoteComponentOutletComponent_Conditional_0_Template, 1, 4, "ng-container")(1, RemoteComponentOutletComponent_Conditional_1_Template, 1, 0);
38
+ } if (rf & 2) {
39
+ i0.ɵɵconditional(ctx.component() ? 0 : 1);
40
+ } }, dependencies: [NgComponentOutlet], encapsulation: 2, changeDetection: 0 }); }
41
+ }
42
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RemoteComponentOutletComponent, [{
43
+ type: Component,
44
+ args: [{ selector: 'acl-remote-component-outlet', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgComponentOutlet], template: "@if (component()) {\n <ng-container\n *ngComponentOutlet=\"\n component();\n inputs: inputs();\n injector: injector();\n content: content()\n \"\n ></ng-container>\n} @else {\n <ng-content></ng-content>\n}\n" }]
45
+ }], () => [], null); })();
46
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RemoteComponentOutletComponent, { className: "RemoteComponentOutletComponent", filePath: "lib/components/remote-component-outlet/component.ts", lineNumber: 21 }); })();
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbHVnaW4tc2RrL3NyYy9saWIvY29tcG9uZW50cy9yZW1vdGUtY29tcG9uZW50LW91dGxldC9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsdWdpbi1zZGsvc3JjL2xpYi9jb21wb25lbnRzL3JlbW90ZS1jb21wb25lbnQtb3V0bGV0L3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7SUNWdkMsd0JBT2dCOzs7SUFQaEIsK0dBT0M7OztJQUZVLEFBREEsQUFEQSxBQUZSLHNEQUVRLDRDQUNBLGdEQUNBLDhDQUViOzs7SUFFRSxrQkFBeUI7O0FEVTNCLE1BQU0sT0FBTyw4QkFBOEI7SUFpQnpDO1FBaEJRLHFCQUFnQixHQUFHLE1BQU0sQ0FBa0MsRUFBRSxDQUFDLENBQUM7UUFFdkUsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUVoQyxlQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBRXRDLFdBQU0sR0FBRyxLQUFLLENBQVMsY0FBYyxDQUFDLENBQUM7UUFFdkMsV0FBTSxHQUFHLEtBQUssRUFBZ0QsQ0FBQztRQUUvRCxhQUFRLEdBQUcsS0FBSyxFQUFrRCxDQUFDO1FBRW5FLFlBQU8sR0FBRyxLQUFLLEVBQWlELENBQUM7UUFFakUsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRy9ELE1BQU0sQ0FDSixLQUFLLElBQUksRUFBRTtZQUNULElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQ3ZCLENBQUMsTUFBTSxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUM3RCxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUM1QixDQUFDO0lBQ0osQ0FBQzsrRkE1QlUsOEJBQThCO29FQUE5Qiw4QkFBOEI7O1lDWHpDLEFBVEYsNkZBQW1CLGdFQVNWOztZQVRULHlDQVdDOzRCRE9XLGlCQUFpQjs7aUZBRWhCLDhCQUE4QjtjQVAxQyxTQUFTOzJCQUNFLDZCQUE2QixtQkFFdEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxpQkFBaUIsQ0FBQzs7a0ZBRWpCLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ29tcG9uZW50T3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGlucHV0LFxuICBzaWduYWwsXG4gIFR5cGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBsb2FkUmVtb3RlIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtcmVtb3RlLWNvbXBvbmVudC1vdXRsZXQnLFxuICB0ZW1wbGF0ZVVybDogJ3RlbXBsYXRlLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nQ29tcG9uZW50T3V0bGV0XSxcbn0pXG5leHBvcnQgY2xhc3MgUmVtb3RlQ29tcG9uZW50T3V0bGV0Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZW1vdGVDb21wb25lbnRzID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIFR5cGU8Q29tcG9uZW50Pj4+KHt9KTtcblxuICBuYW1lID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuXG4gIGVudHJ5cG9pbnQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG5cbiAgZXhwb3NlID0gaW5wdXQ8c3RyaW5nPignLi9Db21wb25lbnRzJyk7XG5cbiAgaW5wdXRzID0gaW5wdXQ8TmdDb21wb25lbnRPdXRsZXRbJ25nQ29tcG9uZW50T3V0bGV0SW5wdXRzJ10+KCk7XG5cbiAgaW5qZWN0b3IgPSBpbnB1dDxOZ0NvbXBvbmVudE91dGxldFsnbmdDb21wb25lbnRPdXRsZXRJbmplY3RvciddPigpO1xuXG4gIGNvbnRlbnQgPSBpbnB1dDxOZ0NvbXBvbmVudE91dGxldFsnbmdDb21wb25lbnRPdXRsZXRDb250ZW50J10+KCk7XG5cbiAgY29tcG9uZW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZW1vdGVDb21wb25lbnRzKClbdGhpcy5uYW1lKCldKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoXG4gICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmVudHJ5cG9pbnQoKSkge1xuICAgICAgICAgIHRoaXMucmVtb3RlQ29tcG9uZW50cy5zZXQoXG4gICAgICAgICAgICAoYXdhaXQgbG9hZFJlbW90ZSh0aGlzLmVudHJ5cG9pbnQoKSwgdGhpcy5leHBvc2UoKSkpLmRlZmF1bHQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgICApO1xuICB9XG59XG4iLCJAaWYgKGNvbXBvbmVudCgpKSB7XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdDb21wb25lbnRPdXRsZXQ9XCJcbiAgICAgIGNvbXBvbmVudCgpO1xuICAgICAgaW5wdXRzOiBpbnB1dHMoKTtcbiAgICAgIGluamVjdG9yOiBpbmplY3RvcigpO1xuICAgICAgY29udGVudDogY29udGVudCgpXG4gICAgXCJcbiAgPjwvbmctY29udGFpbmVyPlxufSBAZWxzZSB7XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbn1cbiJdfQ==
@@ -0,0 +1,51 @@
1
+ import { attachAuthorizationHeader } from '@alauda-fe/common';
2
+ import { isLocalEnv } from './utils';
3
+ export async function loadExtensions(query = {}) {
4
+ return isLocalEnv()
5
+ ? await loadDevExtensions(query)
6
+ : await loadProdExtensions(query);
7
+ }
8
+ async function loadDevExtensions(query = {}) {
9
+ return await fetch(`/dev-plugin/console-plugin.json`)
10
+ .then(res => {
11
+ if (!res.ok) {
12
+ throw new Error('Failed to fetch local dev extensions');
13
+ }
14
+ return res.json();
15
+ })
16
+ .then((plugin) => plugin.extensions.map(ext => ({
17
+ ...ext,
18
+ entrypoint: 'http://localhost:5000',
19
+ })))
20
+ .catch(() => {
21
+ console.warn('Failed to fetch local dev extensions, loading prod extensions');
22
+ return loadProdExtensions(query);
23
+ });
24
+ }
25
+ async function loadProdExtensions(query = {}) {
26
+ const reqPrefix = isLocalEnv() ? '/api-gateway' : '';
27
+ const queryString = Object.entries(query)
28
+ .map(([key, value]) => `${key}=${value.join(',')}`)
29
+ .join(';');
30
+ return await fetch(`${reqPrefix}/frontend-plugins/clusters/console-plugins${queryString && '?filter=' + encodeURIComponent(queryString)}`, {
31
+ headers: attachAuthorizationHeader(),
32
+ })
33
+ .then(res => {
34
+ if (!res.ok) {
35
+ throw new Error('Failed to fetch extensions');
36
+ }
37
+ return res.json();
38
+ })
39
+ .then((rawPlugins) => Object.entries(rawPlugins).reduce((acc, [cluster, plugins]) => acc.concat(plugins.flatMap(plugin => JSON.parse(plugin['console-plugin.json']).extensions.map(ext => ({
40
+ ...ext,
41
+ cluster,
42
+ operator: plugin.operator,
43
+ version: plugin.version,
44
+ entrypoint: `${reqPrefix}/clusters-rewrite/${cluster}${plugin.path}`,
45
+ })))), []))
46
+ .catch(err => {
47
+ console.error(err);
48
+ return [];
49
+ });
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsdWdpbi1zZGsvc3JjL2xpYi9leHRlbnNpb25zLWxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXJDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUFDLFFBQXlCLEVBQUU7SUFDOUQsT0FBTyxVQUFVLEVBQUU7UUFDakIsQ0FBQyxDQUFDLE1BQU0saUJBQWlCLENBQUMsS0FBSyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxNQUFNLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRCxLQUFLLFVBQVUsaUJBQWlCLENBQzlCLFFBQXlCLEVBQUU7SUFFM0IsT0FBTyxNQUFNLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQztTQUNsRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDVixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDLENBQUM7U0FDRCxJQUFJLENBQUMsQ0FBQyxNQUFrQixFQUFFLEVBQUUsQ0FDM0IsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLEdBQUcsR0FBRztRQUNOLFVBQVUsRUFBRSx1QkFBdUI7S0FDcEMsQ0FBQyxDQUFDLENBQ0o7U0FDQSxLQUFLLENBQUMsR0FBRyxFQUFFO1FBQ1YsT0FBTyxDQUFDLElBQUksQ0FDViwrREFBK0QsQ0FDaEUsQ0FBQztRQUNGLE9BQU8sa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsS0FBSyxVQUFVLGtCQUFrQixDQUMvQixRQUF5QixFQUFFO0lBRTNCLE1BQU0sU0FBUyxHQUFHLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNyRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUN0QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1NBQ2xELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUViLE9BQU8sTUFBTSxLQUFLLENBQ2hCLEdBQUcsU0FBUyw2Q0FBNkMsV0FBVyxJQUFJLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUN0SDtRQUNFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRTtLQUNyQyxDQUNGO1NBQ0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQyxDQUFDO1NBQ0QsSUFBSSxDQUFDLENBQUMsVUFBc0IsRUFBRSxFQUFFLENBQy9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUMvQixDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQzFCLEdBQUcsQ0FBQyxNQUFNLENBQ1IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUVyQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUN6QyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZCLEdBQUcsR0FBRztRQUNOLE9BQU87UUFDUCxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7UUFDekIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQ3ZCLFVBQVUsRUFBRSxHQUFHLFNBQVMscUJBQXFCLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFO0tBQ3JFLENBQUMsQ0FBQyxDQUNKLENBQ0YsRUFDSCxFQUFpQixDQUNsQixDQUNGO1NBQ0EsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF0dGFjaEF1dGhvcml6YXRpb25IZWFkZXIgfSBmcm9tICdAYWxhdWRhLWZlL2NvbW1vbic7XG5cbmltcG9ydCB7IGlzTG9jYWxFbnYgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRFeHRlbnNpb25zKHF1ZXJ5OiBFeHRlbnNpb25zUXVlcnkgPSB7fSkge1xuICByZXR1cm4gaXNMb2NhbEVudigpXG4gICAgPyBhd2FpdCBsb2FkRGV2RXh0ZW5zaW9ucyhxdWVyeSlcbiAgICA6IGF3YWl0IGxvYWRQcm9kRXh0ZW5zaW9ucyhxdWVyeSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxvYWREZXZFeHRlbnNpb25zKFxuICBxdWVyeTogRXh0ZW5zaW9uc1F1ZXJ5ID0ge30sXG4pOiBQcm9taXNlPEV4dGVuc2lvbltdPiB7XG4gIHJldHVybiBhd2FpdCBmZXRjaChgL2Rldi1wbHVnaW4vY29uc29sZS1wbHVnaW4uanNvbmApXG4gICAgLnRoZW4ocmVzID0+IHtcbiAgICAgIGlmICghcmVzLm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGZldGNoIGxvY2FsIGRldiBleHRlbnNpb25zJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzLmpzb24oKTtcbiAgICB9KVxuICAgIC50aGVuKChwbHVnaW46IFBsdWdpbkpTT04pID0+XG4gICAgICBwbHVnaW4uZXh0ZW5zaW9ucy5tYXAoZXh0ID0+ICh7XG4gICAgICAgIC4uLmV4dCxcbiAgICAgICAgZW50cnlwb2ludDogJ2h0dHA6Ly9sb2NhbGhvc3Q6NTAwMCcsXG4gICAgICB9KSksXG4gICAgKVxuICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdGYWlsZWQgdG8gZmV0Y2ggbG9jYWwgZGV2IGV4dGVuc2lvbnMsIGxvYWRpbmcgcHJvZCBleHRlbnNpb25zJyxcbiAgICAgICk7XG4gICAgICByZXR1cm4gbG9hZFByb2RFeHRlbnNpb25zKHF1ZXJ5KTtcbiAgICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbG9hZFByb2RFeHRlbnNpb25zKFxuICBxdWVyeTogRXh0ZW5zaW9uc1F1ZXJ5ID0ge30sXG4pOiBQcm9taXNlPEV4dGVuc2lvbltdPiB7XG4gIGNvbnN0IHJlcVByZWZpeCA9IGlzTG9jYWxFbnYoKSA/ICcvYXBpLWdhdGV3YXknIDogJyc7XG4gIGNvbnN0IHF1ZXJ5U3RyaW5nID0gT2JqZWN0LmVudHJpZXMocXVlcnkpXG4gICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9PSR7dmFsdWUuam9pbignLCcpfWApXG4gICAgLmpvaW4oJzsnKTtcblxuICByZXR1cm4gYXdhaXQgZmV0Y2goXG4gICAgYCR7cmVxUHJlZml4fS9mcm9udGVuZC1wbHVnaW5zL2NsdXN0ZXJzL2NvbnNvbGUtcGx1Z2lucyR7cXVlcnlTdHJpbmcgJiYgJz9maWx0ZXI9JyArIGVuY29kZVVSSUNvbXBvbmVudChxdWVyeVN0cmluZyl9YCxcbiAgICB7XG4gICAgICBoZWFkZXJzOiBhdHRhY2hBdXRob3JpemF0aW9uSGVhZGVyKCksXG4gICAgfSxcbiAgKVxuICAgIC50aGVuKHJlcyA9PiB7XG4gICAgICBpZiAoIXJlcy5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBleHRlbnNpb25zJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzLmpzb24oKTtcbiAgICB9KVxuICAgIC50aGVuKChyYXdQbHVnaW5zOiBSYXdQbHVnaW5zKSA9PlxuICAgICAgT2JqZWN0LmVudHJpZXMocmF3UGx1Z2lucykucmVkdWNlKFxuICAgICAgICAoYWNjLCBbY2x1c3RlciwgcGx1Z2luc10pID0+XG4gICAgICAgICAgYWNjLmNvbmNhdChcbiAgICAgICAgICAgIHBsdWdpbnMuZmxhdE1hcChwbHVnaW4gPT5cbiAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgIEpTT04ucGFyc2UocGx1Z2luWydjb25zb2xlLXBsdWdpbi5qc29uJ10pIGFzIFBsdWdpbkpTT05cbiAgICAgICAgICAgICAgKS5leHRlbnNpb25zLm1hcChleHQgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5leHQsXG4gICAgICAgICAgICAgICAgY2x1c3RlcixcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogcGx1Z2luLm9wZXJhdG9yLFxuICAgICAgICAgICAgICAgIHZlcnNpb246IHBsdWdpbi52ZXJzaW9uLFxuICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQ6IGAke3JlcVByZWZpeH0vY2x1c3RlcnMtcmV3cml0ZS8ke2NsdXN0ZXJ9JHtwbHVnaW4ucGF0aH1gLFxuICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgIFtdIGFzIEV4dGVuc2lvbltdLFxuICAgICAgKSxcbiAgICApXG4gICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICByZXR1cm4gW107XG4gICAgfSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9uc1F1ZXJ5IHtcbiAgdHlwZXM/OiBzdHJpbmdbXTtcbiAgY2x1c3RlcnM/OiBzdHJpbmdbXTtcbiAgb3BlcmF0b3JzPzogc3RyaW5nW107XG4gIGNoYW5uZWxzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9uPFQgPSBhbnk+IGV4dGVuZHMgUmF3RXh0ZW5zaW9uPFQ+IHtcbiAgY2x1c3Rlcj86IHN0cmluZztcbiAgb3BlcmF0b3I/OiBzdHJpbmc7XG4gIHZlcnNpb24/OiBzdHJpbmc7XG4gIGVudHJ5cG9pbnQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFJhd1BsdWdpbnMge1xuICBbY2x1c3Rlcjogc3RyaW5nXTogQXJyYXk8e1xuICAgIG9wZXJhdG9yOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIHBhdGg6IHN0cmluZztcbiAgICAnY29uc29sZS1wbHVnaW4uanNvbic6IHN0cmluZztcbiAgfT47XG59XG5cbmludGVyZmFjZSBQbHVnaW5KU09OIHtcbiAgZXh0ZW5zaW9uczogUmF3RXh0ZW5zaW9uW107XG59XG5cbmludGVyZmFjZSBSYXdFeHRlbnNpb248VCA9IGFueT4ge1xuICB0eXBlOiBzdHJpbmc7XG4gIG9wdGlvbnM6IFQ7XG59XG4iXX0=
@@ -0,0 +1,103 @@
1
+ import { getAppExtensions } from './app-extensions';
2
+ import { filterLatestVersion } from './utils';
3
+ export function getRemoteNavigations(scope, locale) {
4
+ if (!scope) {
5
+ return [];
6
+ }
7
+ const exts = getAppExtensions(scope + '/navigation');
8
+ return filterLatestVersion((options) => options.name)(exts)
9
+ .map(ext => ext.options)
10
+ .map(options => translateLabel(locale, options));
11
+ }
12
+ export function getRemoteNavigationGroups(scope, locale) {
13
+ if (!scope) {
14
+ return [];
15
+ }
16
+ const exts = getAppExtensions(scope + '/navigation/group');
17
+ return filterLatestVersion((options) => options.name)(exts)
18
+ .map(ext => ext.options)
19
+ .map(options => translateLabel(locale, options));
20
+ }
21
+ export function insertNavItem(source, remotes) {
22
+ remotes.forEach(remote => {
23
+ if (remote.insertAfter) {
24
+ const r = insert('after', remote.insertAfter, [], source, remote);
25
+ if (r.matched) {
26
+ source = r.result;
27
+ return;
28
+ }
29
+ }
30
+ if (remote.insertBefore) {
31
+ const r = insert('before', remote.insertBefore, [], source, remote);
32
+ if (r.matched) {
33
+ source = r.result;
34
+ return;
35
+ }
36
+ }
37
+ source = source.concat({
38
+ ...remote,
39
+ key: remote.key ?? remote.name,
40
+ children: remote.children
41
+ ? remote.children.map(child => ({
42
+ ...child,
43
+ key: child.key ?? child.name,
44
+ }))
45
+ : null,
46
+ });
47
+ });
48
+ return source;
49
+ }
50
+ export function insertNavGroupItem(source, remotes) {
51
+ return source.map(group => {
52
+ const groupRemotes = remotes.filter(remote => remote.group === group.name);
53
+ return { ...group, items: insertNavItem(group.items, groupRemotes) };
54
+ });
55
+ }
56
+ function translateLabel(locale, item) {
57
+ return {
58
+ ...item,
59
+ children: item.children
60
+ ? item.children.map(c => translateLabel(locale, c))
61
+ : null,
62
+ label: typeof item.displayName === 'string'
63
+ ? item.displayName
64
+ : item.displayName[locale] || item.displayName['en'],
65
+ };
66
+ }
67
+ function insert(position, anchor, namePath, target, item) {
68
+ const offset = position === 'before' ? 0 : 1;
69
+ anchor = Array.isArray(anchor) ? anchor : [anchor];
70
+ for (const currentAnchor of anchor) {
71
+ for (let i = 0; i < target.length; i++) {
72
+ if (target[i].name === currentAnchor) {
73
+ return {
74
+ result: [
75
+ ...target.slice(0, i + offset),
76
+ { ...item, key: namePath.join('/') + item.name },
77
+ ...target.slice(i + offset),
78
+ ],
79
+ matched: true,
80
+ };
81
+ }
82
+ if (target[i].children) {
83
+ const { result, matched } = insert(position, currentAnchor, namePath.concat(target[i].name), target[i].children, item);
84
+ if (matched) {
85
+ return {
86
+ result: target.map((item, index) => index === i
87
+ ? {
88
+ ...item,
89
+ children: result,
90
+ }
91
+ : item),
92
+ matched: true,
93
+ };
94
+ }
95
+ }
96
+ }
97
+ }
98
+ return {
99
+ result: target,
100
+ matched: false,
101
+ };
102
+ }
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGx1Z2luLXNkay9zcmMvbGliL25hdmlnYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTlDLE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsS0FBYSxFQUNiLE1BQWM7SUFFZCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLENBQUM7SUFFckQsT0FBTyxtQkFBbUIsQ0FBQyxDQUFDLE9BQXlCLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDMUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQW1DLENBQUM7U0FDbkQsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBQ3ZDLEtBQWEsRUFDYixNQUFjO0lBRWQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLG1CQUFtQixDQUFDLENBQUM7SUFFM0QsT0FBTyxtQkFBbUIsQ0FBQyxDQUFDLE9BQXlCLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDMUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMs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QUFJLENBQ0wsQ0FBQztnQkFDRixJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLE9BQU87d0JBQ0wsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDakMsS0FBSyxLQUFLLENBQUM7NEJBQ1QsQ0FBQyxDQUFDO2dDQUNFLEdBQUcsSUFBSTtnQ0FDUCxRQUFRLEVBQUUsTUFBTTs2QkFDakI7NEJBQ0gsQ0FBQyxDQUFDLElBQUksQ0FDVDt3QkFDRCxPQUFPLEVBQUUsSUFBSTtxQkFDZCxDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTSxFQUFFLE1BQU07UUFDZCxPQUFPLEVBQUUsS0FBSztLQUNmLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBOYXZHcm91cENvbmZpZywgTmF2SXRlbUNvbmZpZyB9IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcblxuaW1wb3J0IHsgZ2V0QXBwRXh0ZW5zaW9ucyB9IGZyb20gJy4vYXBwLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgZmlsdGVyTGF0ZXN0VmVyc2lvbiB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVtb3RlTmF2aWdhdGlvbnMoXG4gIHNjb3BlOiBzdHJpbmcsXG4gIGxvY2FsZTogc3RyaW5nLFxuKTogUmVtb3RlTmF2aWdhdGlvbkl0ZW1Sb290W10ge1xuICBpZiAoIXNjb3BlKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgZXh0cyA9IGdldEFwcEV4dGVuc2lvbnMoc2NvcGUgKyAnL25hdmlnYXRpb24nKTtcblxuICByZXR1cm4gZmlsdGVyTGF0ZXN0VmVyc2lvbigob3B0aW9uczogeyBuYW1lOiBzdHJpbmcgfSkgPT4gb3B0aW9ucy5uYW1lKShleHRzKVxuICAgIC5tYXAoZXh0ID0+IGV4dC5vcHRpb25zIGFzIFJlbW90ZU5hdmlnYXRpb25JdGVtUm9vdClcbiAgICAubWFwKG9wdGlvbnMgPT4gdHJhbnNsYXRlTGFiZWwobG9jYWxlLCBvcHRpb25zKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZW1vdGVOYXZpZ2F0aW9uR3JvdXBzKFxuICBzY29wZTogc3RyaW5nLFxuICBsb2NhbGU6IHN0cmluZyxcbik6IFJlbW90ZU5hdmlnYXRpb25JdGVtUm9vdFtdIHtcbiAgaWYgKCFzY29wZSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IGV4dHMgPSBnZXRBcHBFeHRlbnNpb25zKHNjb3BlICsgJy9uYXZpZ2F0aW9uL2dyb3VwJyk7XG5cbiAgcmV0dXJuIGZpbHRlckxhdGVzdFZlcnNpb24oKG9wdGlvbnM6IHsgbmFtZTogc3RyaW5nIH0pID0+IG9wdGlvbnMubmFtZSkoZXh0cylcbiAgICAubWFwKGV4dCA9PiBleHQub3B0aW9ucyBhcyBSZW1vdGVOYXZpZ2F0aW9uSXRlbVJvb3QpXG4gICAgLm1hcChvcHRpb25zID0+IHRyYW5zbGF0ZUxhYmVsKGxvY2FsZSwgb3B0aW9ucykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0TmF2SXRlbShcbiAgc291cmNlOiBOYXZJdGVtQ29uZmlnW10sXG4gIHJlbW90ZXM6IFJlbW90ZU5hdmlnYXRpb25JdGVtUm9vdFtdLFxuKTogTmF2SXRlbUNvbmZpZ1tdIHtcbiAgcmVtb3Rlcy5mb3JFYWNoKHJlbW90ZSA9PiB7XG4gICAgaWYgKHJlbW90ZS5pbnNlcnRBZnRlcikge1xuICAgICAgY29uc3QgciA9IGluc2VydCgnYWZ0ZXInLCByZW1vdGUuaW5zZXJ0QWZ0ZXIsIFtdLCBzb3VyY2UsIHJlbW90ZSk7XG4gICAgICBpZiAoci5tYXRjaGVkKSB7XG4gICAgICAgIHNvdXJjZSA9IHIucmVzdWx0O1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlbW90ZS5pbnNlcnRCZWZvcmUpIHtcbiAgICAgIGNvbnN0IHIgPSBpbnNlcnQoJ2JlZm9yZScsIHJlbW90ZS5pbnNlcnRCZWZvcmUsIFtdLCBzb3VyY2UsIHJlbW90ZSk7XG4gICAgICBpZiAoci5tYXRjaGVkKSB7XG4gICAgICAgIHNvdXJjZSA9IHIucmVzdWx0O1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgc291cmNlID0gc291cmNlLmNvbmNhdCh7XG4gICAgICAuLi5yZW1vdGUsXG4gICAgICBrZXk6IHJlbW90ZS5rZXkgPz8gcmVtb3RlLm5hbWUsXG4gICAgICBjaGlsZHJlbjogcmVtb3RlLmNoaWxkcmVuXG4gICAgICAgID8gcmVtb3RlLmNoaWxkcmVuLm1hcChjaGlsZCA9PiAoe1xuICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICBrZXk6IGNoaWxkLmtleSA/PyBjaGlsZC5uYW1lLFxuICAgICAgICAgIH0pKVxuICAgICAgICA6IG51bGwsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBzb3VyY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnROYXZHcm91cEl0ZW0oXG4gIHNvdXJjZTogTmF2R3JvdXBDb25maWdbXSxcbiAgcmVtb3RlczogUmVtb3RlTmF2aWdhdGlvbkl0ZW1Sb290W10sXG4pOiBOYXZHcm91cENvbmZpZ1tdIHtcbiAgcmV0dXJuIHNvdXJjZS5tYXAoZ3JvdXAgPT4ge1xuICAgIGNvbnN0IGdyb3VwUmVtb3RlcyA9IHJlbW90ZXMuZmlsdGVyKHJlbW90ZSA9PiByZW1vdGUuZ3JvdXAgPT09IGdyb3VwLm5hbWUpO1xuICAgIHJldHVybiB7IC4uLmdyb3VwLCBpdGVtczogaW5zZXJ0TmF2SXRlbShncm91cC5pdGVtcywgZ3JvdXBSZW1vdGVzKSB9O1xuICB9KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW1vdGVOYXZpZ2F0aW9uSXRlbSBleHRlbmRzIE5hdkl0ZW1Db25maWcge1xuICBncm91cD86IHN0cmluZztcbiAgZGlzcGxheU5hbWU6IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGNoaWxkcmVuPzogUmVtb3RlTmF2aWdhdGlvbkl0ZW1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW1vdGVOYXZpZ2F0aW9uSXRlbVJvb3QgZXh0ZW5kcyBSZW1vdGVOYXZpZ2F0aW9uSXRlbSB7XG4gIGluc2VydEFmdGVyPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIGluc2VydEJlZm9yZT86IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuXG5mdW5jdGlvbiB0cmFuc2xhdGVMYWJlbChcbiAgbG9jYWxlOiBzdHJpbmcsXG4gIGl0ZW06IFJlbW90ZU5hdmlnYXRpb25JdGVtLFxuKTogUmVtb3RlTmF2aWdhdGlvbkl0ZW0ge1xuICByZXR1cm4ge1xuICAgIC4uLml0ZW0sXG4gICAgY2hpbGRyZW46IGl0ZW0uY2hpbGRyZW5cbiAgICAgID8gaXRlbS5jaGlsZHJlbi5tYXAoYyA9PiB0cmFuc2xhdGVMYWJlbChsb2NhbGUsIGMpKVxuICAgICAgOiBudWxsLFxuICAgIGxhYmVsOlxuICAgICAgdHlwZW9mIGl0ZW0uZGlzcGxheU5hbWUgPT09ICdzdHJpbmcnXG4gICAgICAgID8gaXRlbS5kaXNwbGF5TmFtZVxuICAgICAgICA6IGl0ZW0uZGlzcGxheU5hbWVbbG9jYWxlXSB8fCBpdGVtLmRpc3BsYXlOYW1lWydlbiddLFxuICB9O1xufVxuXG5mdW5jdGlvbiBpbnNlcnQoXG4gIHBvc2l0aW9uOiAnYmVmb3JlJyB8ICdhZnRlcicsXG4gIGFuY2hvcjogc3RyaW5nIHwgc3RyaW5nW10sXG4gIG5hbWVQYXRoOiBzdHJpbmdbXSxcbiAgdGFyZ2V0OiBOYXZJdGVtQ29uZmlnW10sXG4gIGl0ZW06IFJlbW90ZU5hdmlnYXRpb25JdGVtUm9vdCxcbik6IHsgcmVzdWx0OiBOYXZJdGVtQ29uZmlnW107IG1hdGNoZWQ6IGJvb2xlYW4gfSB7XG4gIGNvbnN0IG9mZnNldCA9IHBvc2l0aW9uID09PSAnYmVmb3JlJyA/IDAgOiAxO1xuICBhbmNob3IgPSBBcnJheS5pc0FycmF5KGFuY2hvcikgPyBhbmNob3IgOiBbYW5jaG9yXTtcblxuICBmb3IgKGNvbnN0IGN1cnJlbnRBbmNob3Igb2YgYW5jaG9yKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YXJnZXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0YXJnZXRbaV0ubmFtZSA9PT0gY3VycmVudEFuY2hvcikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc3VsdDogW1xuICAgICAgICAgICAgLi4udGFyZ2V0LnNsaWNlKDAsIGkgKyBvZmZzZXQpLFxuICAgICAgICAgICAgeyAuLi5pdGVtLCBrZXk6IG5hbWVQYXRoLmpvaW4oJy8nKSArIGl0ZW0ubmFtZSB9LFxuICAgICAgICAgICAgLi4udGFyZ2V0LnNsaWNlKGkgKyBvZmZzZXQpLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgbWF0Y2hlZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRhcmdldFtpXS5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCB7IHJlc3VsdCwgbWF0Y2hlZCB9ID0gaW5zZXJ0KFxuICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgIGN1cnJlbnRBbmNob3IsXG4gICAgICAgICAgbmFtZVBhdGguY29uY2F0KHRhcmdldFtpXS5uYW1lKSxcbiAgICAgICAgICB0YXJnZXRbaV0uY2hpbGRyZW4sXG4gICAgICAgICAgaXRlbSxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKG1hdGNoZWQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzdWx0OiB0YXJnZXQubWFwKChpdGVtLCBpbmRleCkgPT5cbiAgICAgICAgICAgICAgaW5kZXggPT09IGlcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IHJlc3VsdCxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IGl0ZW0sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbWF0Y2hlZDogdHJ1ZSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICByZXN1bHQ6IHRhcmdldCxcbiAgICBtYXRjaGVkOiBmYWxzZSxcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { getAppExtensions } from './app-extensions';
2
+ import { filterLatestVersion, loadRemote } from './utils';
3
+ export function mapToRoute(ext, addition = {}) {
4
+ return {
5
+ path: ext.options.path,
6
+ loadChildren: () => loadRemote(ext.entrypoint, ext.options.expose ?? './Routes').then(m => m.default),
7
+ ...addition,
8
+ };
9
+ }
10
+ export function getRootRoutes(scope) {
11
+ const exts = getAppExtensions(scope + '/routes/root');
12
+ return filterLatestVersion((options) => options.path)(exts).map(ext => mapToRoute(ext));
13
+ }
14
+ export function getFeatureRoutes(scope) {
15
+ const exts = getAppExtensions(scope + '/routes/feature');
16
+ return filterLatestVersion((options) => options.path)(exts).map(ext => mapToRoute(ext));
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsdWdpbi1zZGsvc3JjL2xpYi9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTFELE1BQU0sVUFBVSxVQUFVLENBQ3hCLEdBQTRCLEVBQzVCLFdBQTJCLEVBQUU7SUFFN0IsT0FBTztRQUNMLElBQUksRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUk7UUFDdEIsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUNqQixVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQy9ELENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDZjtRQUNILEdBQUcsUUFBUTtLQUNaLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFhO0lBQ3pDLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsQ0FBQztJQUN0RCxPQUFPLG1CQUFtQixDQUFDLENBQUMsT0FBcUIsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FDM0UsR0FBRyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQ3ZCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQWE7SUFDNUMsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLGlCQUFpQixDQUFDLENBQUM7SUFDekQsT0FBTyxtQkFBbUIsQ0FBQyxDQUFDLE9BQXFCLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQzNFLEdBQUcsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUN2QixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgZ2V0QXBwRXh0ZW5zaW9ucyB9IGZyb20gJy4vYXBwLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgRXh0ZW5zaW9uIH0gZnJvbSAnLi9leHRlbnNpb25zLWxvYWRlcic7XG5pbXBvcnQgeyBmaWx0ZXJMYXRlc3RWZXJzaW9uLCBsb2FkUmVtb3RlIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb1JvdXRlKFxuICBleHQ6IEV4dGVuc2lvbjxSb3V0ZU9wdGlvbnM+LFxuICBhZGRpdGlvbjogUGFydGlhbDxSb3V0ZT4gPSB7fSxcbik6IFJvdXRlIHtcbiAgcmV0dXJuIHtcbiAgICBwYXRoOiBleHQub3B0aW9ucy5wYXRoLFxuICAgIGxvYWRDaGlsZHJlbjogKCkgPT5cbiAgICAgIGxvYWRSZW1vdGUoZXh0LmVudHJ5cG9pbnQsIGV4dC5vcHRpb25zLmV4cG9zZSA/PyAnLi9Sb3V0ZXMnKS50aGVuKFxuICAgICAgICBtID0+IG0uZGVmYXVsdCxcbiAgICAgICksXG4gICAgLi4uYWRkaXRpb24sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290Um91dGVzKHNjb3BlOiBzdHJpbmcpIHtcbiAgY29uc3QgZXh0cyA9IGdldEFwcEV4dGVuc2lvbnMoc2NvcGUgKyAnL3JvdXRlcy9yb290Jyk7XG4gIHJldHVybiBmaWx0ZXJMYXRlc3RWZXJzaW9uKChvcHRpb25zOiBSb3V0ZU9wdGlvbnMpID0+IG9wdGlvbnMucGF0aCkoZXh0cykubWFwKFxuICAgIGV4dCA9PiBtYXBUb1JvdXRlKGV4dCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGZWF0dXJlUm91dGVzKHNjb3BlOiBzdHJpbmcpIHtcbiAgY29uc3QgZXh0cyA9IGdldEFwcEV4dGVuc2lvbnMoc2NvcGUgKyAnL3JvdXRlcy9mZWF0dXJlJyk7XG4gIHJldHVybiBmaWx0ZXJMYXRlc3RWZXJzaW9uKChvcHRpb25zOiBSb3V0ZU9wdGlvbnMpID0+IG9wdGlvbnMucGF0aCkoZXh0cykubWFwKFxuICAgIGV4dCA9PiBtYXBUb1JvdXRlKGV4dCksXG4gICk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVPcHRpb25zIHtcbiAgcGF0aDogc3RyaW5nO1xuICBleHBvc2U/OiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,34 @@
1
+ import { loadRemoteModule, setRemoteDefinitions } from '@nx/angular/mf';
2
+ import { compare } from 'compare-versions';
3
+ const remoteRecord = new Set();
4
+ export function isLocalEnv() {
5
+ return location.hostname === 'localhost';
6
+ }
7
+ export function loadRemote(remote, module) {
8
+ if (!remoteRecord.has(remote)) {
9
+ remoteRecord.add(remote);
10
+ setRemoteDefinitions({ [remote]: remote });
11
+ }
12
+ return loadRemoteModule(remote, module);
13
+ }
14
+ export function filterLatestVersion(identity) {
15
+ return (exts) => exts.reduce((acc, ext) => {
16
+ const existedIndex = acc.findIndex(a => a.operator === ext.operator &&
17
+ identity(a.options) === identity(ext.options));
18
+ if (existedIndex === -1) {
19
+ acc.push(ext);
20
+ }
21
+ else {
22
+ try {
23
+ acc[existedIndex] = compare(acc[existedIndex].version, ext.version, '>=')
24
+ ? acc[existedIndex]
25
+ : ext;
26
+ }
27
+ catch {
28
+ console.error(`Error when comparing operator (${acc[existedIndex].operator}) versions (${acc[existedIndex].version}, ${ext.version}). Using ${acc[existedIndex].version} from cluster ${acc[existedIndex].cluster}`);
29
+ }
30
+ }
31
+ return acc;
32
+ }, []);
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsdWdpbi1zZGsvc3JjL2xpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJM0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztBQUV2QyxNQUFNLFVBQVUsVUFBVTtJQUN4QixPQUFPLFFBQVEsQ0FBQyxRQUFRLEtBQUssV0FBVyxDQUFDO0FBQzNDLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLE1BQWMsRUFBRSxNQUFjO0lBQ3ZELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDOUIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QixvQkFBb0IsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsUUFBNkI7SUFFN0IsT0FBTyxDQUFDLElBQXlCLEVBQUUsRUFBRSxDQUNuQyxJQUFJLENBQUMsTUFBTSxDQUNULENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ1gsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FDaEMsQ0FBQyxDQUFDLEVBQUUsQ0FDRixDQUFDLENBQUMsUUFBUSxLQUFLLEdBQUcsQ0FBQyxRQUFRO1lBQzNCLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FDaEQsQ0FBQztRQUNGLElBQUksWUFBWSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDeEIsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQztnQkFDSCxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsT0FBTyxDQUN6QixHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUN6QixHQUFHLENBQUMsT0FBTyxFQUNYLElBQUksQ0FDTDtvQkFDQyxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQztvQkFDbkIsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNWLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsT0FBTyxDQUFDLEtBQUssQ0FDWCxrQ0FBa0MsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsZUFBZSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxLQUFLLEdBQUcsQ0FBQyxPQUFPLFlBQVksR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8saUJBQWlCLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FDdE0sQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLEVBQ0QsRUFBeUIsQ0FDMUIsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2FkUmVtb3RlTW9kdWxlLCBzZXRSZW1vdGVEZWZpbml0aW9ucyB9IGZyb20gJ0BueC9hbmd1bGFyL21mJztcbmltcG9ydCB7IGNvbXBhcmUgfSBmcm9tICdjb21wYXJlLXZlcnNpb25zJztcblxuaW1wb3J0IHsgRXh0ZW5zaW9uIH0gZnJvbSAnLi9leHRlbnNpb25zLWxvYWRlcic7XG5cbmNvbnN0IHJlbW90ZVJlY29yZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNMb2NhbEVudigpIHtcbiAgcmV0dXJuIGxvY2F0aW9uLmhvc3RuYW1lID09PSAnbG9jYWxob3N0Jztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRSZW1vdGUocmVtb3RlOiBzdHJpbmcsIG1vZHVsZTogc3RyaW5nKSB7XG4gIGlmICghcmVtb3RlUmVjb3JkLmhhcyhyZW1vdGUpKSB7XG4gICAgcmVtb3RlUmVjb3JkLmFkZChyZW1vdGUpO1xuICAgIHNldFJlbW90ZURlZmluaXRpb25zKHsgW3JlbW90ZV06IHJlbW90ZSB9KTtcbiAgfVxuXG4gIHJldHVybiBsb2FkUmVtb3RlTW9kdWxlKHJlbW90ZSwgbW9kdWxlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckxhdGVzdFZlcnNpb248TyA9IGFueT4oXG4gIGlkZW50aXR5OiAoZXh0OiBPKSA9PiB1bmtub3duLFxuKTogKGV4dHM6IEFycmF5PEV4dGVuc2lvbjxPPj4pID0+IEFycmF5PEV4dGVuc2lvbjxPPj4ge1xuICByZXR1cm4gKGV4dHM6IEFycmF5PEV4dGVuc2lvbjxPPj4pID0+XG4gICAgZXh0cy5yZWR1Y2UoXG4gICAgICAoYWNjLCBleHQpID0+IHtcbiAgICAgICAgY29uc3QgZXhpc3RlZEluZGV4ID0gYWNjLmZpbmRJbmRleChcbiAgICAgICAgICBhID0+XG4gICAgICAgICAgICBhLm9wZXJhdG9yID09PSBleHQub3BlcmF0b3IgJiZcbiAgICAgICAgICAgIGlkZW50aXR5KGEub3B0aW9ucykgPT09IGlkZW50aXR5KGV4dC5vcHRpb25zKSxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGV4aXN0ZWRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICBhY2MucHVzaChleHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhY2NbZXhpc3RlZEluZGV4XSA9IGNvbXBhcmUoXG4gICAgICAgICAgICAgIGFjY1tleGlzdGVkSW5kZXhdLnZlcnNpb24sXG4gICAgICAgICAgICAgIGV4dC52ZXJzaW9uLFxuICAgICAgICAgICAgICAnPj0nLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA/IGFjY1tleGlzdGVkSW5kZXhdXG4gICAgICAgICAgICAgIDogZXh0O1xuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgYEVycm9yIHdoZW4gY29tcGFyaW5nIG9wZXJhdG9yICgke2FjY1tleGlzdGVkSW5kZXhdLm9wZXJhdG9yfSkgdmVyc2lvbnMgKCR7YWNjW2V4aXN0ZWRJbmRleF0udmVyc2lvbn0sICR7ZXh0LnZlcnNpb259KS4gVXNpbmcgJHthY2NbZXhpc3RlZEluZGV4XS52ZXJzaW9ufSBmcm9tIGNsdXN0ZXIgJHthY2NbZXhpc3RlZEluZGV4XS5jbHVzdGVyfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIFtdIGFzIEFycmF5PEV4dGVuc2lvbjxPPj4sXG4gICAgKTtcbn1cbiJdfQ==
package/index.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export * from './lib/app-extensions';
2
+ export * from './lib/components';
3
+ export * from './lib/extensions-loader';
4
+ export * from './lib/navigation';
5
+ export * from './lib/route';
6
+ export * from './lib/utils';
@@ -0,0 +1,3 @@
1
+ import { Extension } from './extensions-loader';
2
+ export declare function getAppExtensions(type: string, cluster?: string): Extension<any>[];
3
+ export declare function setupAppExtensions(): Promise<Extension<any>[]>;
@@ -0,0 +1 @@
1
+ export * from './remote-component-outlet/component';
@@ -0,0 +1,15 @@
1
+ import { Component, Type } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class RemoteComponentOutletComponent {
4
+ private remoteComponents;
5
+ name: import("@angular/core").InputSignal<string>;
6
+ entrypoint: import("@angular/core").InputSignal<string>;
7
+ expose: import("@angular/core").InputSignal<string>;
8
+ inputs: import("@angular/core").InputSignal<Record<string, unknown>>;
9
+ injector: import("@angular/core").InputSignal<import("@angular/core").Injector>;
10
+ content: import("@angular/core").InputSignal<any[][]>;
11
+ component: import("@angular/core").Signal<Type<Component>>;
12
+ constructor();
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<RemoteComponentOutletComponent, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<RemoteComponentOutletComponent, "acl-remote-component-outlet", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "entrypoint": { "alias": "entrypoint"; "required": true; "isSignal": true; }; "expose": { "alias": "expose"; "required": false; "isSignal": true; }; "inputs": { "alias": "inputs"; "required": false; "isSignal": true; }; "injector": { "alias": "injector"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
15
+ }
@@ -0,0 +1,18 @@
1
+ export declare function loadExtensions(query?: ExtensionsQuery): Promise<Extension<any>[]>;
2
+ export interface ExtensionsQuery {
3
+ types?: string[];
4
+ clusters?: string[];
5
+ operators?: string[];
6
+ channels?: string[];
7
+ }
8
+ export interface Extension<T = any> extends RawExtension<T> {
9
+ cluster?: string;
10
+ operator?: string;
11
+ version?: string;
12
+ entrypoint: string;
13
+ }
14
+ interface RawExtension<T = any> {
15
+ type: string;
16
+ options: T;
17
+ }
18
+ export {};
@@ -0,0 +1,14 @@
1
+ import type { NavGroupConfig, NavItemConfig } from '@alauda-fe/common';
2
+ export declare function getRemoteNavigations(scope: string, locale: string): RemoteNavigationItemRoot[];
3
+ export declare function getRemoteNavigationGroups(scope: string, locale: string): RemoteNavigationItemRoot[];
4
+ export declare function insertNavItem(source: NavItemConfig[], remotes: RemoteNavigationItemRoot[]): NavItemConfig[];
5
+ export declare function insertNavGroupItem(source: NavGroupConfig[], remotes: RemoteNavigationItemRoot[]): NavGroupConfig[];
6
+ export interface RemoteNavigationItem extends NavItemConfig {
7
+ group?: string;
8
+ displayName: string | Record<string, string>;
9
+ children?: RemoteNavigationItem[];
10
+ }
11
+ export interface RemoteNavigationItemRoot extends RemoteNavigationItem {
12
+ insertAfter?: string | string[];
13
+ insertBefore?: string | string[];
14
+ }
package/lib/route.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ import { Route } from '@angular/router';
2
+ import { Extension } from './extensions-loader';
3
+ export declare function mapToRoute(ext: Extension<RouteOptions>, addition?: Partial<Route>): Route;
4
+ export declare function getRootRoutes(scope: string): Route[];
5
+ export declare function getFeatureRoutes(scope: string): Route[];
6
+ export interface RouteOptions {
7
+ path: string;
8
+ expose?: string;
9
+ }
package/lib/utils.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import { Extension } from './extensions-loader';
2
+ export declare function isLocalEnv(): boolean;
3
+ export declare function loadRemote(remote: string, module: string): Promise<any>;
4
+ export declare function filterLatestVersion<O = any>(identity: (ext: O) => unknown): (exts: Array<Extension<O>>) => Array<Extension<O>>;
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@alauda-fe/plugin-sdk",
3
+ "version": "0.0.1",
4
+ "peerDependencies": {
5
+ "@nx/angular": "^16.10.0"
6
+ },
7
+ "dependencies": {
8
+ "compare-versions": "^6.1.0",
9
+ "tslib": "^2.3.0"
10
+ },
11
+ "sideEffects": false,
12
+ "private": false,
13
+ "publishConfig": {
14
+ "access": "public"
15
+ },
16
+ "module": "esm2022/alauda-fe-plugin-sdk.mjs",
17
+ "typings": "index.d.ts",
18
+ "exports": {
19
+ "./package.json": {
20
+ "default": "./package.json"
21
+ },
22
+ ".": {
23
+ "types": "./index.d.ts",
24
+ "esm2022": "./esm2022/alauda-fe-plugin-sdk.mjs",
25
+ "esm": "./esm2022/alauda-fe-plugin-sdk.mjs",
26
+ "default": "./esm2022/alauda-fe-plugin-sdk.mjs"
27
+ }
28
+ }
29
+ }