mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[PRODENG-211] integrate JS-API with monorepo (part 1) (#9081)
* integrate JS-API with monorepo * [ci:force] fix token issue [ci:force] migrate docs folder [ci:force] clean personal tokens * [ci:force] gha workflow support * [ci:force] npm publish target * fix js-api test linting * [ci:force] fix test linting, mocks, https scheme * [ci:force] fix https scheme * [ci:force] typescript mappings * [ci:force] update scripts * lint fixes * linting fixes * fix linting * [ci:force] linting fixes * linting fixes * [ci:force] remove js-api upstream and corresponding scripts * [ci:force] jsdoc fixes * fix jsdoc linting * [ci:force] jsdoc fixes * [ci:force] jsdoc fixes * jsdoc fixes * jsdoc fixes * jsdoc fixes * [ci:force] fix jsdoc * [ci:force] reduce code duplication * replace 'chai' expect with node.js assert * replace 'chai' expect with node.js assert * [ci:force] remove chai and chai-spies for js-api testing * [ci:force] cleanup and fix imports * [ci:force] fix linting * [ci:force] fix unit test * [ci:force] fix sonar linting findings * [ci:force] switch activiti api models to interfaces (-2.5% reduction of bundle) * [ci:force] switch activiti api models to interfaces * [ci:force] switch AGS api models to interfaces * [ci:force] switch AGS api models to interfaces * [ci:force] switch search api models to interfaces * [ci:force] switch content api models to interfaces where applicable
This commit is contained in:
59
lib/js-api/src/api-clients/api-client.ts
Normal file
59
lib/js-api/src/api-clients/api-client.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
/*!
|
||||
* @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.
|
||||
*/
|
||||
|
||||
import { AlfrescoApiType } from '../to-deprecate/alfresco-api-type';
|
||||
import { LegacyHttpClient, RequestOptions } from './http-client.interface';
|
||||
|
||||
export abstract class ApiClient {
|
||||
protected alfrescoApi: AlfrescoApiType;
|
||||
protected httpClient: LegacyHttpClient;
|
||||
|
||||
get apiClient(): LegacyHttpClient {
|
||||
return this.httpClient;
|
||||
}
|
||||
|
||||
constructor(legacyApi?: AlfrescoApiType);
|
||||
constructor(httpClient: LegacyHttpClient);
|
||||
constructor(httpClient?: AlfrescoApiType & LegacyHttpClient) {
|
||||
if (httpClient?.__type === 'legacy-client') {
|
||||
// TODO: remove legacyApi?: AlfrescoApi option and clean up this code. BREAKING CHANGE!
|
||||
this.alfrescoApi = httpClient;
|
||||
} else {
|
||||
this.httpClient = httpClient;
|
||||
}
|
||||
}
|
||||
|
||||
post<T = any>(options: RequestOptions): Promise<T> {
|
||||
return this.apiClient.post<T>(options);
|
||||
}
|
||||
|
||||
put<T = any>(options: RequestOptions): Promise<T> {
|
||||
return this.apiClient.put<T>(options);
|
||||
}
|
||||
|
||||
get<T = any>(options: RequestOptions): Promise<T> {
|
||||
return this.apiClient.get<T>(options);
|
||||
}
|
||||
|
||||
delete<T = void>(options: RequestOptions): Promise<T> {
|
||||
return this.apiClient.delete(options);
|
||||
}
|
||||
|
||||
errorMessage(param: string, methodName: string) {
|
||||
return `Missing param ${param} in ${methodName}`;
|
||||
}
|
||||
}
|
106
lib/js-api/src/api-clients/http-client.interface.ts
Normal file
106
lib/js-api/src/api-clients/http-client.interface.ts
Normal file
@@ -0,0 +1,106 @@
|
||||
/*!
|
||||
* @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.
|
||||
*/
|
||||
|
||||
import { Authentication } from '../authentication/authentication';
|
||||
import { Emitter } from 'event-emitter';
|
||||
|
||||
export interface RequestOptions {
|
||||
path: string;
|
||||
httpMethod?: string;
|
||||
pathParams?: any;
|
||||
queryParams?: any;
|
||||
headerParams?: any;
|
||||
formParams?: any;
|
||||
bodyParam?: any;
|
||||
contentTypes?: string[];
|
||||
accepts?: string[];
|
||||
returnType?: any;
|
||||
contextRoot?: string;
|
||||
responseType?: string;
|
||||
url?: string;
|
||||
readonly accept?: string;
|
||||
readonly contentType?: string;
|
||||
}
|
||||
|
||||
export interface HttpClientConfig {
|
||||
contextRoot?: string;
|
||||
host?: string; // Should be mandatory but can't make it because of AlfrescoApiConfig incompatibility 😕
|
||||
servicePath?: string; // Should be mandatory but can't make it because of AlfrescoApiConfig incompatibility 😕
|
||||
}
|
||||
|
||||
export interface LegacyHttpClient {
|
||||
basePath: string;
|
||||
config: HttpClientConfig;
|
||||
|
||||
request<T = any>(options: RequestOptions): Promise<T>;
|
||||
post<T = any>(options: RequestOptions): Promise<T>;
|
||||
put<T = any>(options: RequestOptions): Promise<T>;
|
||||
get<T = any>(options: RequestOptions): Promise<T>;
|
||||
delete<T = void>(options: RequestOptions): Promise<T>;
|
||||
/** @deprecated */
|
||||
callApi(
|
||||
path: string,
|
||||
httpMethod: string,
|
||||
pathParams?: any,
|
||||
queryParams?: any,
|
||||
headerParams?: any,
|
||||
formParams?: any,
|
||||
bodyParam?: any,
|
||||
contentTypes?: string[],
|
||||
accepts?: string[],
|
||||
returnType?: any,
|
||||
contextRoot?: string,
|
||||
responseType?: string,
|
||||
url?: string
|
||||
): Promise<any>;
|
||||
/** @deprecated */
|
||||
callCustomApi(
|
||||
path: string,
|
||||
httpMethod: string,
|
||||
pathParams?: any,
|
||||
queryParams?: any,
|
||||
headerParams?: any,
|
||||
formParams?: any,
|
||||
bodyParam?: any,
|
||||
contentTypes?: string[],
|
||||
accepts?: string[],
|
||||
returnType?: any,
|
||||
contextRoot?: string,
|
||||
responseType?: string
|
||||
): Promise<any>;
|
||||
}
|
||||
|
||||
export interface SecurityOptions {
|
||||
readonly isBpmRequest: boolean;
|
||||
readonly enableCsrf?: boolean;
|
||||
readonly withCredentials?: boolean;
|
||||
readonly authentications: Authentication;
|
||||
readonly defaultHeaders: Record<string, string>;
|
||||
}
|
||||
|
||||
export interface Emitters {
|
||||
readonly eventEmitter: Emitter;
|
||||
readonly apiClientEmitter: Emitter;
|
||||
}
|
||||
|
||||
export interface HttpClient {
|
||||
request<T = any>(url: string, options: RequestOptions, security: SecurityOptions, emitters: Emitters): Promise<T>;
|
||||
post<T = any>(url: string, options: RequestOptions, security: SecurityOptions, emitters: Emitters): Promise<T>;
|
||||
put<T = any>(url: string, options: RequestOptions, security: SecurityOptions, emitters: Emitters): Promise<T>;
|
||||
get<T = any>(url: string, options: RequestOptions, security: SecurityOptions, emitters: Emitters): Promise<T>;
|
||||
delete<T = void>(url: string, options: RequestOptions, security: SecurityOptions, emitters: Emitters): Promise<T>;
|
||||
}
|
Reference in New Issue
Block a user