import { CHANNEL } from '@allianz/taly-core';
import { BuildingBlockConfiguration, PluginConfiguration } from '@allianz/taly-core/schemas';
import { JourneyInsights } from '@allianz/taly-core/showroom';
import { JourneyTargetType } from '@allianz/taly-sdk';
import { EnvOptionObject } from '../env-parsing/env';
export interface ApplicationInput {
name: string;
storeExpression: string;
}
export interface ScaffoldCoreOptions {
/**
* The path to the root tsconfig that should be extended
*/
baseTsConfigPath?: string;
/**
* The path to the workspace node_modules folder
*/
nodeModulesPath?: string;
/**
* The path where the journey should be generated
*/
destinationDirectory: string;
/**
* Show the acl inspector
*/
aclInspector?: boolean;
/**
* List of inputs that will be added to the app.component. The values of these input will be
* made available in the PFE store.
*/
applicationInputs?: ApplicationInput[];
/**
* The name of the application. Will be used as the technical name in the workspace.
*/
applicationName: string;
/**
* The title of the application. Will be used for the browser title.
*/
applicationTitle?: string;
/**
* The description of the application. Will be used for the meta description tag.
*/
applicationDescription?: string;
/**
* Whether to hide header and footer.
*/
chromeless?: boolean;
/**
* Only for web components: The url at which the web component will be served.
*/
deployUrl?: string;
/**
* Pass an object of environment key/value pairs to be stored in the environment.ts
*/
env?: EnvOptionObject;
/**
* List of Building Block configurations to be used as header actions
*/
headerActions?: BuildingBlockConfiguration[];
/**
* Provide a value of 'expert' to specify that this journey is meant for internal usage (Experts, insurance agents)
* or a value of 'retail' for user-facing journeys. It will be 'retail' by default.
*/
aquilaChannel?: CHANNEL;
/**
* Provide a path to a css file for a custom Aquila theme.
* When `--aquila-theme` is used together with `--aquila-channel=expert`,
* the default expert theme from NDBX will NOT be imported.
* To avoid any potential style issues, it is important to extend your custom theme from the default "expert" theme.
*/
aquilaTheme?: string;
/**
* Should this journey be generated with the Allianz NDBX theme?
*/
useNdbx?: boolean;
/**
* Show the pfe debugger
*/
pfeDebugger?: boolean;
/**
* Plugins configuration
*/
pluginsConfig?: PluginConfiguration[];
/**
* Whether to enable or disable the default spinner provided by TALY Frame
*/
spinner?: boolean;
/**
* Whether the frame content should be centered in the available space.
* Only applies to Expert journeys.
*/
frameContentIsCentered?: boolean;
offerCodeStateKey?: string;
/**
* Target type for generators. Allowed values 'app' | 'module' | 'webcomponent'
*/
target?: JourneyTargetType;
/**
* Whether to use a noop location strategy. Only has an effect when the target is
* 'webcomponent'.
*/
useNoopLocationStrategy?: boolean;
/**
* Whether to use a hash location strategy.
* Only has an effect when the target is 'app' (standalone journey).
* Recommended only for special cases where the app server does not support the default path location strategy.
*/
useHashLocationStrategy?: boolean;
/**
* Set to `true` to show the `WORK IN PROGRESS` text on top of the application.
*/
workInProgressIndicator?: boolean;
/**
* Custom scripts to be embedded in the application. This is not supported for the module or web component integration.
*/
scripts?: string | string[];
/**
* Whether the generated app should use TypeScript's strict mode for compilation.
*/
tsStrictMode: boolean;
/**
* Generate the journey in showroom mode
*/
showroom?: boolean;
/**
* Data to be displayed in the journey insights dashboard
*/
journeyInsights?: JourneyInsights;
/**
* Whether the dev tools toggle button should be displayed in a showroom journey
*/
debugToolsToggleVisible: boolean;
/**
* Whether a journey should be generated with the ACL hierarchial inspector
*/
displayExperimentalAclInspector?: boolean;
/**
* Whether a journey should be generated with the new vertical spacing system
*/
useNewVerticalSpacing?: boolean;
/**
* Whether the generated app has some overarching notifications configured.
*/
hasNotifications: boolean;
}