[ACA-3877] Add the possibility to ADF Extension to be used in compila… (#6097)

* [ACA-3877] Add the possibility to ADF Extension to be used in compilation time

* Fix interface

* Fix cspell

* Fix unit tests

* Add tests
This commit is contained in:
Popovics András
2020-09-10 22:29:09 +02:00
committed by GitHub
parent 5305d65121
commit ed53a0204d
7 changed files with 27 additions and 9 deletions

View File

@@ -130,7 +130,8 @@
"processwithstarteventform", "processwithstarteventform",
"processstring", "processstring",
"typeahed", "typeahed",
"minmax" "minmax",
"jsons"
], ],
"dictionaries": [ "dictionaries": [
"html", "html",

View File

@@ -48,5 +48,5 @@ export interface ContentActionRef extends ExtensionElement {
export interface ActionRef { export interface ActionRef {
id: string; id: string;
type: string; type: string;
payload?: string; payload?: any;
} }

View File

@@ -25,7 +25,7 @@ export interface ExtensionRef {
$version: string; $version: string;
$vendor: string; $vendor: string;
$license: string; $license: string;
$runtime: string; $runtime?: string;
$description?: string; $description?: string;
$dependencies?: Array<string>; $dependencies?: Array<string>;

View File

@@ -43,7 +43,7 @@ describe('ExtensionService', () => {
loader = new ExtensionLoaderService(null); loader = new ExtensionLoaderService(null);
componentRegister = new ComponentRegisterService(); componentRegister = new ComponentRegisterService();
ruleService = new RuleService(loader); ruleService = new RuleService(loader);
service = new ExtensionService(loader, componentRegister, ruleService); service = new ExtensionService(loader, componentRegister, ruleService, []);
}); });
it('should load and setup a config', async () => { it('should load and setup a config', async () => {
@@ -56,6 +56,7 @@ describe('ExtensionService', () => {
await service.load(); await service.load();
expect(loader.load).toHaveBeenCalled(); expect(loader.load).toHaveBeenCalled();
expect(loader.load).toHaveBeenCalledWith('assets/app.extensions.json', 'assets/plugins', []);
expect(service.setup).toHaveBeenCalledWith(blankConfig); expect(service.setup).toHaveBeenCalledWith(blankConfig);
}); });

View File

@@ -15,9 +15,9 @@
* limitations under the License. * limitations under the License.
*/ */
import { Injectable, Type } from '@angular/core'; import { Injectable, Type, InjectionToken, Inject } from '@angular/core';
import { RuleEvaluator, RuleRef, RuleContext } from '../config/rule.extensions'; import { RuleEvaluator, RuleRef, RuleContext } from '../config/rule.extensions';
import { ExtensionConfig } from '../config/extension.config'; import { ExtensionConfig, ExtensionRef } from '../config/extension.config';
import { ExtensionLoaderService } from './extension-loader.service'; import { ExtensionLoaderService } from './extension-loader.service';
import { RouteRef } from '../config/routing.extensions'; import { RouteRef } from '../config/routing.extensions';
import { ActionRef } from '../config/action.extensions'; import { ActionRef } from '../config/action.extensions';
@@ -26,6 +26,19 @@ import { ComponentRegisterService } from './component-register.service';
import { RuleService } from './rule.service'; import { RuleService } from './rule.service';
import { ExtensionElement } from '../config/extension-element'; import { ExtensionElement } from '../config/extension-element';
const EXTENSION_JSONS = new InjectionToken<ExtensionRef[][]>('extension-jsons', {
providedIn: 'root',
factory: () => []
});
export function provideExtensionConfig(jsons: ExtensionRef[]) {
return {
provide: EXTENSION_JSONS,
useValue: jsons,
multi: true
};
}
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'
}) })
@@ -44,7 +57,8 @@ export class ExtensionService {
constructor( constructor(
protected loader: ExtensionLoaderService, protected loader: ExtensionLoaderService,
protected componentRegister: ComponentRegisterService, protected componentRegister: ComponentRegisterService,
protected ruleService: RuleService protected ruleService: RuleService,
@Inject(EXTENSION_JSONS) protected extensionJsons: ExtensionRef[]
) { ) {
} }
@@ -55,7 +69,8 @@ export class ExtensionService {
async load(): Promise<ExtensionConfig> { async load(): Promise<ExtensionConfig> {
const config = await this.loader.load( const config = await this.loader.load(
this.configPath, this.configPath,
this.pluginsPath this.pluginsPath,
this.extensionJsons.flat()
); );
this.setup(config); this.setup(config);
return config; return config;

View File

@@ -29,7 +29,7 @@
"@alfresco/adf-core": ["./core/"], "@alfresco/adf-core": ["./core/"],
"@alfresco/adf-insights": ["./analytics"] "@alfresco/adf-insights": ["./analytics"]
}, },
"lib": ["es2018", "dom"], "lib": ["es2018", "esnext.array", "dom"],
"suppressImplicitAnyIndexErrors": true "suppressImplicitAnyIndexErrors": true
}, },
"exclude": [ "exclude": [

View File

@@ -23,6 +23,7 @@
], ],
"lib": [ "lib": [
"es2018", "es2018",
"esnext.array",
"dom" "dom"
], ],
"paths": { "paths": {