From 6d201b108f56f2858a32da36e91518e2b131fcc7 Mon Sep 17 00:00:00 2001 From: "swapnil.verma" Date: Mon, 6 May 2024 10:07:31 +0530 Subject: [PATCH] [ACS-6630] Revert move of ActionRef, RuleRef and RouteRef from extensions library to js-api library --- docs/extensions/services/extension.service.md | 12 ++--- docs/user-guide/app-extensions.md | 2 +- .../src/lib/config/action.extensions.ts | 6 +++ .../src/lib/config/extension.config.ts | 4 +- .../src/lib/config/routing.extensions.ts} | 0 .../src/lib/config/rule.extensions.ts | 12 +++++ .../lib/evaluators/core.evaluators.spec.ts | 3 +- .../src/lib/evaluators/core.evaluators.ts | 54 +++++++++---------- .../lib/services/extension-loader.service.ts | 5 +- .../lib/services/extension.service.spec.ts | 4 +- .../src/lib/services/extension.service.ts | 15 +++--- .../src/lib/services/rule.service.ts | 3 +- lib/extensions/src/public-api.ts | 1 + .../api/content-rest-api/model/actionRef.ts | 22 -------- .../src/api/content-rest-api/model/index.ts | 3 -- .../src/api/content-rest-api/model/ruleRef.ts | 28 ---------- 16 files changed, 70 insertions(+), 104 deletions(-) rename lib/{js-api/src/api/content-rest-api/model/routeRef.ts => extensions/src/lib/config/routing.extensions.ts} (100%) delete mode 100644 lib/js-api/src/api/content-rest-api/model/actionRef.ts delete mode 100644 lib/js-api/src/api/content-rest-api/model/ruleRef.ts diff --git a/docs/extensions/services/extension.service.md b/docs/extensions/services/extension.service.md index 4488a330de..3d1a5dc74a 100644 --- a/docs/extensions/services/extension.service.md +++ b/docs/extensions/services/extension.service.md @@ -18,10 +18,10 @@ Manages and runs basic extension functionality. - _ruleId:_ `string` - ID of the rule to evaluate - _context:_ [`RuleContext`](../../../lib/extensions/src/lib/config/rule.extensions.ts) - (Optional) Custom rule execution context. - **Returns** `boolean` - True if the rule passed, false otherwise -- **getActionById**(id: `string`): [`ActionRef`](../../../lib/js-api/src/api/content-rest-api/model/actionRef.ts)
+- **getActionById**(id: `string`): [`ActionRef`](../../../lib/extensions/src/lib/config/action.extensions.ts)
Retrieves an action using its ID value. - _id:_ `string` - The ID value to look for - - **Returns** [`ActionRef`](../../../lib/js-api/src/api/content-rest-api/model/actionRef.ts) - Action or null if not found + - **Returns** [`ActionRef`](../../../lib/extensions/src/lib/config/action.extensions.ts) - Action or null if not found - **getAuthGuards**(ids: `string[]`): `Array>`
Retrieves one or more auth guards using an array of ID values. - _ids:_ `string[]` - Array of ID value to look for @@ -44,14 +44,14 @@ Manages and runs basic extension functionality. Gets features by key. - _key:_ `string|string[]` - Key string using dot notation or array of strings - _defaultValue:_ `any` - Default value returned if feature is not found, default is empty array -- **getRouteById**(id: `string`): [`RouteRef`](../../../lib/js-api/src/api/content-rest-api/model/routeRef.ts)
+- **getRouteById**(id: `string`): [`RouteRef`](../../../lib/extensions/src/lib/config/routing.extensions.ts)
Retrieves a route using its ID value. - _id:_ `string` - The ID value to look for - - **Returns** [`RouteRef`](../../../lib/js-api/src/api/content-rest-api/model/routeRef.ts) - The route or null if not found -- **getRuleById**(id: `string`): [`RuleRef`](../../../lib/js-api/src/api/content-rest-api/model/ruleRef.ts)
+ - **Returns** [`RouteRef`](../../../lib/extensions/src/lib/config/routing.extensions.ts) - The route or null if not found +- **getRuleById**(id: `string`): [`RuleRef`](../../../lib/extensions/src/lib/config/rule.extensions.ts)
Retrieves a rule using its ID value. - _id:_ `string` - The ID value to look for - - **Returns** [`RuleRef`](../../../lib/js-api/src/api/content-rest-api/model/ruleRef.ts) - The rule or null if not found + - **Returns** [`RuleRef`](../../../lib/extensions/src/lib/config/rule.extensions.ts) - The rule or null if not found - **load**(): [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<`[`ExtensionConfig`](../../../lib/extensions/src/lib/config/extension.config.ts)`>`
Loads and registers an extension config file and plugins (specified by path properties). - **Returns** [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<`[`ExtensionConfig`](../../../lib/extensions/src/lib/config/extension.config.ts)`>` - The loaded config data diff --git a/docs/user-guide/app-extensions.md b/docs/user-guide/app-extensions.md index db7b7a3c69..42a9896fcf 100644 --- a/docs/user-guide/app-extensions.md +++ b/docs/user-guide/app-extensions.md @@ -215,7 +215,7 @@ following example: ``` You can access routes from the config using the `getRouteById` method of the -[Extension service,](../extensions/services/extension.service.md) which returns a [`RouteRef`](../../lib/js-api/src/api/content-rest-api/model/routeRef.ts) object. Note that the references +[Extension service,](../extensions/services/extension.service.md) which returns a [`RouteRef`](../../lib/extensions/src/lib/config/routing.extensions.ts) object. Note that the references to the component and auth guards are extension IDs, [as described above](#extension-points). diff --git a/lib/extensions/src/lib/config/action.extensions.ts b/lib/extensions/src/lib/config/action.extensions.ts index 6ffe0dd3cd..741d0c973a 100644 --- a/lib/extensions/src/lib/config/action.extensions.ts +++ b/lib/extensions/src/lib/config/action.extensions.ts @@ -47,3 +47,9 @@ export interface ContentActionRef extends ExtensionElement { visible?: string; }; } + +export interface ActionRef { + id: string; + type: string; + payload?: string; +} diff --git a/lib/extensions/src/lib/config/extension.config.ts b/lib/extensions/src/lib/config/extension.config.ts index ba8d0513ba..591ed470c2 100644 --- a/lib/extensions/src/lib/config/extension.config.ts +++ b/lib/extensions/src/lib/config/extension.config.ts @@ -15,7 +15,9 @@ * limitations under the License. */ -import { ActionRef, RouteRef, RuleRef } from '@alfresco/js-api'; +import { RouteRef } from './routing.extensions'; +import { RuleRef } from './rule.extensions'; +import { ActionRef } from './action.extensions'; export interface ExtensionRef { $id: string; diff --git a/lib/js-api/src/api/content-rest-api/model/routeRef.ts b/lib/extensions/src/lib/config/routing.extensions.ts similarity index 100% rename from lib/js-api/src/api/content-rest-api/model/routeRef.ts rename to lib/extensions/src/lib/config/routing.extensions.ts diff --git a/lib/extensions/src/lib/config/rule.extensions.ts b/lib/extensions/src/lib/config/rule.extensions.ts index f504f6eeb8..3f9483371c 100644 --- a/lib/extensions/src/lib/config/rule.extensions.ts +++ b/lib/extensions/src/lib/config/rule.extensions.ts @@ -33,3 +33,15 @@ export interface RuleContext { getEvaluator(key: string): RuleEvaluator; } + +export class RuleRef { + type: string; + id?: string; + parameters?: Array; +} + +export interface RuleParameter { + type: string; + value: any; + parameters?: Array; +} diff --git a/lib/extensions/src/lib/evaluators/core.evaluators.spec.ts b/lib/extensions/src/lib/evaluators/core.evaluators.spec.ts index 9579761592..51c5c19e8b 100644 --- a/lib/extensions/src/lib/evaluators/core.evaluators.spec.ts +++ b/lib/extensions/src/lib/evaluators/core.evaluators.spec.ts @@ -16,10 +16,9 @@ */ import { every, not, some } from './core.evaluators'; -import { RuleParameter } from '@alfresco/js-api'; +import { RuleParameter } from '../config/rule.extensions'; describe('Core Evaluators', () => { - const context: any = { getEvaluator: (key: string) => { switch (key) { diff --git a/lib/extensions/src/lib/evaluators/core.evaluators.ts b/lib/extensions/src/lib/evaluators/core.evaluators.ts index 60988d9b6e..d7d2757d8d 100644 --- a/lib/extensions/src/lib/evaluators/core.evaluators.ts +++ b/lib/extensions/src/lib/evaluators/core.evaluators.ts @@ -15,23 +15,21 @@ * limitations under the License. */ -import { RuleContext } from '../config/rule.extensions'; -import { RuleParameter } from '@alfresco/js-api'; +import { RuleContext, RuleParameter } from '../config/rule.extensions'; export const not = (context: RuleContext, ...args: RuleParameter[]): boolean => { if (!args || args.length === 0) { return false; } - return args - .every((arg) => { - const evaluator = context.getEvaluator(arg.value); - if (!evaluator) { - console.warn('evaluator not found: ' + arg.value); - return false; - } - return !evaluator(context, ...(arg.parameters || [])); - }); + return args.every((arg) => { + const evaluator = context.getEvaluator(arg.value); + if (!evaluator) { + console.warn('evaluator not found: ' + arg.value); + return false; + } + return !evaluator(context, ...(arg.parameters || [])); + }); }; export const every = (context: RuleContext, ...args: RuleParameter[]): boolean => { @@ -39,15 +37,14 @@ export const every = (context: RuleContext, ...args: RuleParameter[]): boolean = return false; } - return args - .every((arg) => { - const evaluator = context.getEvaluator(arg.value); - if (!evaluator) { - console.warn('evaluator not found: ' + arg.value); - return false; - } - return evaluator(context, ...(arg.parameters || [])); - }); + return args.every((arg) => { + const evaluator = context.getEvaluator(arg.value); + if (!evaluator) { + console.warn('evaluator not found: ' + arg.value); + return false; + } + return evaluator(context, ...(arg.parameters || [])); + }); }; export const some = (context: RuleContext, ...args: RuleParameter[]): boolean => { @@ -55,13 +52,12 @@ export const some = (context: RuleContext, ...args: RuleParameter[]): boolean => return false; } - return args - .some((arg) => { - const evaluator = context.getEvaluator(arg.value); - if (!evaluator) { - console.warn('evaluator not found: ' + arg.value); - return false; - } - return evaluator(context, ...(arg.parameters || [])); - }); + return args.some((arg) => { + const evaluator = context.getEvaluator(arg.value); + if (!evaluator) { + console.warn('evaluator not found: ' + arg.value); + return false; + } + return evaluator(context, ...(arg.parameters || [])); + }); }; diff --git a/lib/extensions/src/lib/services/extension-loader.service.ts b/lib/extensions/src/lib/services/extension-loader.service.ts index 89e5c38e2e..6a8c1f6dfd 100644 --- a/lib/extensions/src/lib/services/extension-loader.service.ts +++ b/lib/extensions/src/lib/services/extension-loader.service.ts @@ -17,11 +17,12 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; -import { ContentActionRef, ContentActionType } from '../config/action.extensions'; +import { ActionRef, ContentActionRef, ContentActionType } from '../config/action.extensions'; import { ExtensionElement } from '../config/extension-element'; import { filterEnabled, getValue, mergeObjects, sortByOrder } from '../config/extension-utils'; import { ExtensionConfig, ExtensionRef } from '../config/extension.config'; -import { ActionRef, RouteRef, RuleRef } from '@alfresco/js-api'; +import { RouteRef } from '../config/routing.extensions'; +import { RuleRef } from '../config/rule.extensions'; @Injectable({ providedIn: 'root' diff --git a/lib/extensions/src/lib/services/extension.service.spec.ts b/lib/extensions/src/lib/services/extension.service.spec.ts index d79d1d43f6..4e485885f8 100644 --- a/lib/extensions/src/lib/services/extension.service.spec.ts +++ b/lib/extensions/src/lib/services/extension.service.spec.ts @@ -18,9 +18,11 @@ import { ExtensionService } from './extension.service'; import { ExtensionLoaderService } from './extension-loader.service'; import { ExtensionConfig } from '../config/extension.config'; -import { ActionRef, RouteRef, RuleRef } from '@alfresco/js-api'; import { ComponentRegisterService } from './component-register.service'; import { RuleService } from './rule.service'; +import { RuleRef } from '../config/rule.extensions'; +import { RouteRef } from '../config/routing.extensions'; +import { ActionRef } from '../config/action.extensions'; describe('ExtensionService', () => { const blankConfig: ExtensionConfig = { diff --git a/lib/extensions/src/lib/services/extension.service.ts b/lib/extensions/src/lib/services/extension.service.ts index 18745c3693..3a0ff363bd 100644 --- a/lib/extensions/src/lib/services/extension.service.ts +++ b/lib/extensions/src/lib/services/extension.service.ts @@ -16,16 +16,18 @@ */ import { Injectable, Type, InjectionToken, Inject } from '@angular/core'; -import { RuleEvaluator, RuleContext } from '../config/rule.extensions'; +import { RuleEvaluator, RuleRef, RuleContext } from '../config/rule.extensions'; import { ExtensionConfig } from '../config/extension.config'; import { ExtensionLoaderService } from './extension-loader.service'; +import { RouteRef } from '../config/routing.extensions'; +import { ActionRef } from '../config/action.extensions'; import * as core from '../evaluators/core.evaluators'; import { ComponentRegisterService } from './component-register.service'; import { RuleService } from './rule.service'; import { ExtensionElement } from '../config/extension-element'; import { BehaviorSubject, Observable } from 'rxjs'; import { mergeArrays, mergeObjects } from '../config/extension-utils'; -import { ActionRef, ExtensionComposition, RouteRef, RuleRef } from '@alfresco/js-api'; +import { ExtensionComposition } from '@alfresco/js-api'; /** * The default extensions factory @@ -110,15 +112,14 @@ export class ExtensionService { } appendConfig(partialConfig: ExtensionComposition) { - this.config = { + this.setup({ ...this.config, rules: mergeArrays(this.config.rules, partialConfig.rules), - features: mergeObjects(this.config.features, partialConfig.features), + features: this.config.features ? mergeObjects(this.config.features, partialConfig.features) : partialConfig.features, routes: mergeArrays(this.config.routes, partialConfig.routes), actions: mergeArrays(this.config.actions, partialConfig.actions), - appConfig: mergeObjects(this.config.appConfig, partialConfig.appConfig) - }; - this.setup(this.config); + appConfig: this.config.appConfig ? mergeObjects(this.config.appConfig, partialConfig.appConfig) : partialConfig.appConfig + }); } /** diff --git a/lib/extensions/src/lib/services/rule.service.ts b/lib/extensions/src/lib/services/rule.service.ts index 8d46148568..bf9e8f9864 100644 --- a/lib/extensions/src/lib/services/rule.service.ts +++ b/lib/extensions/src/lib/services/rule.service.ts @@ -16,10 +16,9 @@ */ import { Injectable } from '@angular/core'; -import { RuleContext, RuleEvaluator } from '../config/rule.extensions'; +import { RuleRef, RuleContext, RuleEvaluator, RuleParameter } from '../config/rule.extensions'; import { ExtensionConfig } from '../config/extension.config'; import { ExtensionLoaderService } from './extension-loader.service'; -import { RuleParameter, RuleRef } from '@alfresco/js-api'; @Injectable({ providedIn: 'root' diff --git a/lib/extensions/src/public-api.ts b/lib/extensions/src/public-api.ts index d3fdc1cceb..9d5e2bdfc7 100644 --- a/lib/extensions/src/public-api.ts +++ b/lib/extensions/src/public-api.ts @@ -23,6 +23,7 @@ export * from './lib/config/extension.config'; export * from './lib/config/icon.extensions'; export * from './lib/config/navbar.extensions'; export * from './lib/config/permission.extensions'; +export * from './lib/config/routing.extensions'; export * from './lib/config/rule.extensions'; export * from './lib/config/sidebar.extensions'; export * from './lib/config/viewer.extensions'; diff --git a/lib/js-api/src/api/content-rest-api/model/actionRef.ts b/lib/js-api/src/api/content-rest-api/model/actionRef.ts deleted file mode 100644 index 8f55e50084..0000000000 --- a/lib/js-api/src/api/content-rest-api/model/actionRef.ts +++ /dev/null @@ -1,22 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export interface ActionRef { - id: string; - type: string; - payload?: string; -} diff --git a/lib/js-api/src/api/content-rest-api/model/index.ts b/lib/js-api/src/api/content-rest-api/model/index.ts index 882da16db4..184f3d9c49 100644 --- a/lib/js-api/src/api/content-rest-api/model/index.ts +++ b/lib/js-api/src/api/content-rest-api/model/index.ts @@ -23,7 +23,6 @@ export * from './actionDefinitionListList'; export * from './actionExecResult'; export * from './actionExecResultEntry'; export * from './actionParameterDefinition'; -export * from './actionRef'; export * from './activity'; export * from './activityEntry'; export * from './activityPaging'; @@ -160,8 +159,6 @@ export * from './renditionEntry'; export * from './renditionPaging'; export * from './renditionPagingList'; export * from './revertBody'; -export * from './routeRef'; -export * from './ruleRef'; export * from './sharedLink'; export * from './sharedLinkBodyCreate'; export * from './sharedLinkBodyEmail'; diff --git a/lib/js-api/src/api/content-rest-api/model/ruleRef.ts b/lib/js-api/src/api/content-rest-api/model/ruleRef.ts deleted file mode 100644 index da65090de5..0000000000 --- a/lib/js-api/src/api/content-rest-api/model/ruleRef.ts +++ /dev/null @@ -1,28 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export interface RuleParameter { - type: string; - value: string; - parameters?: Array; -} - -export class RuleRef { - type: string; - id?: string; - parameters?: Array; -}