@finos/legend-application
Version:
Legend application core
81 lines • 4.74 kB
TypeScript
/**
* Copyright (c) 2020-present, Goldman Sachs
*
* 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 type { LegendApplicationConfig, LegendApplicationConfigurationData, LegendApplicationVersionData } from './LegendApplicationConfig.js';
import { type AbstractPlugin, type AbstractPreset, LogEvent, type ExtensionsConfigurationData } from '@finos/legend-shared';
import type { LegendApplicationPluginManager } from './LegendApplicationPluginManager.js';
import { type DocumentationEntryData } from '../stores/DocumentationService.js';
import type { LegendApplicationPlugin } from '../stores/LegendApplicationPlugin.js';
import { ApplicationStore, type GenericLegendApplicationStore } from '../stores/ApplicationStore.js';
import type { VersionReleaseNotes } from '../stores/ReleaseNotesService.js';
export declare abstract class LegendApplicationLogger {
abstract debug(event: LogEvent, ...data: unknown[]): void;
abstract info(event: LogEvent, ...data: unknown[]): void;
abstract warn(event: LogEvent, ...data: unknown[]): void;
abstract error(event: LogEvent, ...data: unknown[]): void;
}
export declare class LegendApplicationWebConsole extends LegendApplicationLogger {
debug(event: LogEvent, ...data: unknown[]): void;
info(event: LogEvent, ...data: unknown[]): void;
warn(event: LogEvent, ...data: unknown[]): void;
error(event: LogEvent, ...data: unknown[]): void;
}
export interface LegendApplicationConfigurationInput<T extends LegendApplicationConfigurationData> {
baseAddress?: string;
configData: T;
versionData: LegendApplicationVersionData;
docEntries?: Record<string, DocumentationEntryData>;
}
export declare abstract class LegendApplication {
protected config: LegendApplicationConfig;
protected logger: LegendApplicationLogger;
protected pluginManager: LegendApplicationPluginManager<LegendApplicationPlugin>;
protected basePresets: AbstractPreset[];
protected basePlugins: AbstractPlugin[];
protected baseAddress: string;
protected pluginRegister?: ((pluginManager: LegendApplicationPluginManager<LegendApplicationPlugin>, config: LegendApplicationConfig) => void) | undefined;
protected _isConfigured: boolean;
protected downloadHelperServiceWorkerPath: string | undefined;
protected downloadHelper: boolean;
protected releaseNotes: VersionReleaseNotes[] | undefined;
protected constructor(pluginManager: LegendApplicationPluginManager<LegendApplicationPlugin>);
setup(options: {
/** Base URL of the application. e.g. /studio/, /query/ */
baseAddress: string;
/**
* Provide an alternative mechanism to register and configure plugins and presets
* which is more flexible by allowing configuring specific plugin or preset.
*/
pluginRegister?: (pluginManager: LegendApplicationPluginManager<LegendApplicationPlugin>, config: LegendApplicationConfig) => void;
}): LegendApplication;
protected withBasePresets(presets: AbstractPreset[]): LegendApplication;
protected withBasePlugins(plugins: AbstractPlugin[]): LegendApplication;
withPresets(presets: AbstractPreset[]): LegendApplication;
withPlugins(plugins: AbstractPlugin[]): LegendApplication;
withDownloadHelper(path?: string | undefined): LegendApplication;
withReleaseNotes(releaseNotes: VersionReleaseNotes[]): LegendApplication;
setupApplicationStore(store: GenericLegendApplicationStore): void;
fetchApplicationConfiguration(): Promise<[
LegendApplicationConfig,
ExtensionsConfigurationData
]>;
loadDocumentationRegistryData(config: LegendApplicationConfig): Promise<void>;
protected abstract configureApplication(input: LegendApplicationConfigurationInput<LegendApplicationConfigurationData>): Promise<LegendApplicationConfig>;
protected abstract loadApplication(applicationStore: ApplicationStore<LegendApplicationConfig, LegendApplicationPluginManager<LegendApplicationPlugin>>): Promise<void>;
start(): Promise<void>;
}
export declare const LEGEND_APPLICATION_ROOT_ELEMENT_TAG = "legend-application-root";
export declare const getApplicationRootElement: () => Element;
//# sourceMappingURL=LegendApplication.d.ts.map