| $localize |
Type : LocalizeFn
|
| TURNSTILE_REQUIRED_ERROR_KEY |
Type : string
|
Default value : 'turnstileRequiredError'
|
| $localize |
Type : LocalizeFn
|
| $localize |
Type : LocalizeFn
|
| $localize |
Type : LocalizeFn
|
| BASE_VALIDATIONS |
Type : ValidationDefinitions
|
Default value : {
...STATIC_VALIDATIONS,
...DYNAMIC_VALIDATIONS
}
|
| DYNAMIC_VALIDATIONS |
Type : ValidationDefinitions
|
Default value : {
DYNAMIC_MIN: (item: ValidationConfigItem) => {
const minValue = item.min as Observable<number>;
const errorMessage =
item.errorMessage ||
minValue.pipe(
map((value) => TRANSLATIONS.min(value)),
// this delay(0) avoids an ExpressionChangedAfterItHasBeenCheckedError
// like a `setTimeout(..., 0)` would in a non-rxjs context
delay(0)
);
const validator = (control: AbstractControl): Observable<ValidationErrors | null> => {
return minValue.pipe(
// take(1) is required here since the Angular asyncValidator only works with a complete observable.
take(1),
map((min) => {
// Min values provided by user input come as strings, and Angular validators
// internally convert them to numbers. However, we still need to handle the case
// where the min value is '' (or any other falsy value except 0) because even if it
// is a valid threshold for Angular, since it converts '' to 0, we don't want to
// show validation errors in this case.
if (!min && min !== 0) {
return null;
}
return Validators.min(min)(control);
})
);
};
return {
min: minValue,
validator: validator,
async: true,
validatorName: 'min',
errorMessage: errorMessage
};
},
DYNAMIC_MAX: (item: ValidationConfigItem) => {
const maxValue = item.max as Observable<number>;
const errorMessage =
item.errorMessage ||
maxValue.pipe(
map((value) => TRANSLATIONS.max(value)),
// this delay(0) avoids an ExpressionChangedAfterItHasBeenCheckedError
// like a `setTimeout(..., 0)` would in a non-rxjs context
delay(0)
);
const validator = (control: AbstractControl): Observable<ValidationErrors | null> => {
return maxValue.pipe(
// take(1) is required here since the Angular asyncValidator only works with a complete observable.
take(1),
map((max) => {
// Max values provided by user input come as strings, and Angular validators
// internally convert them to numbers. However, we still need to handle the case
// where the max value is '' (or any other falsy value except 0) because even if it
// is a valid threshold for Angular, since it converts '' to 0, we don't want to
// show validation errors in this case.
if (!max && max !== 0) {
return null;
}
return Validators.max(max)(control);
})
);
};
return {
max: maxValue,
validator: validator,
async: true,
validatorName: 'max',
errorMessage: errorMessage
};
},
DYNAMIC_MIN_DATE: (item: ValidationConfigItem) => {
let currentMinDate: string | undefined;
const minDate = (item.minDate as Observable<string>).pipe(
map((minDateValue) => parseDateString(minDateValue)),
tap((minDateValue) => (currentMinDate = minDateValue))
);
const validator = (control: AbstractControl): ValidationErrors | null => {
if (!currentMinDate) return null;
return minDateValidator(currentMinDate)(control);
};
return {
minDate,
validator,
async: false,
validatorName: 'mindate',
errorMessage: item.errorMessage || TRANSLATIONS.minDate
};
},
DYNAMIC_MAX_DATE: (item: ValidationConfigItem) => {
let currentMaxDate: string | undefined;
const maxDate = (item.maxDate as Observable<string>).pipe(
map((maxDateValue) => parseDateString(maxDateValue)),
tap((maxDateValue) => (currentMaxDate = maxDateValue))
);
const validator = (control: AbstractControl): ValidationErrors | null => {
if (!currentMaxDate) return null;
return maxDateValidator(currentMaxDate)(control);
};
return {
maxDate,
validator,
async: false,
validatorName: 'maxdate',
errorMessage: item.errorMessage || TRANSLATIONS.maxDate
};
},
DYNAMIC_MIN_LENGTH: (item: ValidationConfigItem) => {
const minLength = item.minLength as Observable<number>;
const errorMessage =
item.errorMessage ||
minLength.pipe(
map((value) => TRANSLATIONS.minLength(value)),
delay(0)
);
const validator = (control: AbstractControl): Observable<ValidationErrors | null> => {
return minLength.pipe(
take(1),
map((min) => {
// Min values provided by user input come as strings, and Angular validators
// internally convert them to numbers. However, we still need to handle the case
// where the min value is '' (or any other falsy value except 0) because even if it
// is a valid threshold for Angular, since it converts '' to 0, we don't want to
// show validation errors in this case.
if (!min && min !== 0) {
return null;
}
return Validators.minLength(min)(control);
})
);
};
return {
minLength,
validator: validator,
async: true,
validatorName: 'minlength',
errorMessage: errorMessage
};
},
DYNAMIC_MAX_LENGTH: (item: ValidationConfigItem) => {
const maxLength = item.maxLength as Observable<number>;
const errorMessage =
item.errorMessage ||
maxLength.pipe(
map((value) => TRANSLATIONS.maxLength(value)),
delay(0)
);
const validator = (control: AbstractControl): Observable<ValidationErrors | null> => {
return maxLength.pipe(
take(1),
map((max) => {
// Max values provided by user input come as strings, and Angular validators
// internally convert them to numbers. However, we still need to handle the case
// where the max value is '' (or any other falsy value except 0) because even if it
// is a valid threshold for Angular, since it converts '' to 0, we don't want to
// show validation errors in this case.
if (!max && max !== 0) {
return null;
}
return Validators.maxLength(max)(control);
})
);
};
return {
maxLength,
validator: validator,
async: true,
validatorName: 'maxlength',
errorMessage: errorMessage
};
},
DYNAMIC_PATTERN: (item: ValidationConfigItem) => {
const pattern = item.pattern as Observable<string>;
const validator = (control: AbstractControl): Observable<ValidationErrors | null> => {
return pattern.pipe(
take(1),
map((patternValue) => Validators.pattern(patternValue)(control))
);
};
return {
pattern,
validator: validator,
async: true,
validatorName: 'pattern',
errorMessage: item.errorMessage || TRANSLATIONS.pattern
};
}
}
|
| STATIC_VALIDATIONS |
Type : ValidationDefinitions
|
Default value : {
REQUIRED: (item: ValidationConfigItem) => {
return {
validator: Validators.required,
validatorName: 'required',
errorMessage: item.errorMessage || TRANSLATIONS.required
};
},
REQUIRED_TRUE: (item: ValidationConfigItem) => {
return {
validator: Validators.requiredTrue,
validatorName: 'required',
errorMessage: item.errorMessage || TRANSLATIONS.requiredTrue
};
},
MIN: (item: ValidationConfigItem) => {
const minValue = item.min as number;
return {
min: minValue,
validator: Validators.min(minValue),
validatorName: 'min',
errorMessage: item.errorMessage || TRANSLATIONS.min(minValue)
};
},
MAX: (item: ValidationConfigItem) => {
const maxValue = item.max as number;
return {
max: maxValue,
validator: Validators.max(maxValue),
validatorName: 'max',
errorMessage: item.errorMessage || TRANSLATIONS.max(maxValue)
};
},
MIN_LENGTH: (item: ValidationConfigItem) => {
const minLength = item.minLength as number;
return {
minLength,
validator: Validators.minLength(minLength),
validatorName: 'minlength',
errorMessage: item.errorMessage || TRANSLATIONS.minLength(minLength)
};
},
MAX_LENGTH: (item: ValidationConfigItem) => {
const maxLength = item.maxLength as number;
return {
maxLength,
validator: Validators.maxLength(maxLength),
validatorName: 'maxlength',
errorMessage: item.errorMessage || TRANSLATIONS.maxLength(maxLength)
};
},
MIN_DATE: (item: ValidationConfigItem) => {
const minDate = parseDateString(item.minDate as string);
if (minDate === undefined) {
throw createDateStringFormatError(item, 'minDate');
}
return {
minDate,
validator: minDateValidator(minDate),
validatorName: 'mindate',
errorMessage: item.errorMessage || TRANSLATIONS.minDate
};
},
MAX_DATE: (item: ValidationConfigItem) => {
const maxDate = parseDateString(item.maxDate as string);
if (maxDate === undefined) {
throw createDateStringFormatError(item, 'maxDate');
}
return {
maxDate,
validator: maxDateValidator(maxDate),
validatorName: 'maxdate',
errorMessage: item.errorMessage || TRANSLATIONS.maxDate
};
},
EMAIL: (item: ValidationConfigItem) => {
const topLevelDomainValidator = (control: AbstractControl) => {
if (!control.value || !control.value.includes('@')) {
return null;
}
const emailParts = (control.value as string).split('@');
const domainPart = emailParts[emailParts.length - 1];
if (domainPart.includes('.')) {
return null;
}
return { email: true };
};
// Validators.compose() possibly returns null, but only if we provide an
// empty array. In this case we definitely know that the array is not
// empty so we can safely disable the no-non-null-assertion rule
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const resultingValidator = Validators.compose([Validators.email, topLevelDomainValidator])!;
return {
validator: resultingValidator,
validatorName: 'email',
errorMessage: item.errorMessage || TRANSLATIONS.email
};
},
PATTERN: (item: ValidationConfigItem) => {
return {
pattern: item.pattern,
validator: Validators.pattern(item.pattern as string),
validatorName: 'pattern',
errorMessage: item.errorMessage || TRANSLATIONS.pattern
};
}
}
|
| TRANSLATIONS |
Type : object
|
Default value : {
required: $localize`:@@validation.error.required:This field is required!`,
requiredTrue: $localize`:@@validation.error.requiredtrue:This field is required to be true!`,
min: (min: number) =>
// TODO: fix typo
$localize`:@@validaton.error.min: This field needs to have a minimum value of ${min}:min:.`,
max: (max: number) =>
// TODO: fix typo
$localize`:@@validaton.error.max: This field needs to have a maximum value of ${max}:max:.`,
minLength: (minLength: number) =>
$localize`:@@validation.error.minlength:This field can only have a min length of ${minLength}:minlength: characters.`,
maxLength: (maxLength: number) =>
$localize`:@@validation.error.maxlength:This field can only have a max length of ${maxLength}:maxlength: characters.`,
minDate: $localize`:@@validation.error.mindate:This field requires a more recent date`,
maxDate: $localize`:@@validation.error.maxdate:This field requires a older date`,
email: $localize`:@@validation.error.email:This field requires a valid email`,
pattern: $localize`:@@validation.error.pattern:This field has invalid format.`
}
|
| $localize |
Type : LocalizeFn
|
| INTERNAL_VALIDATOR_MESSAGES |
Type : InternalValidatorMessage[]
|
Default value : [
{
validatorId: ValidatorId.nxDatefieldParse,
validatorName: 'nxDatefieldParse',
errorMessage: $localize`:@@validation.error.nxDatefieldParse:This field has an invalid format!`,
ignoreValidators: ['required']
},
{
validatorId: ValidatorId.nxDatefieldParseYears,
validatorName: 'nxDatefieldParse',
errorMessage: $localize`:@@validation.error.nxDatefieldParse.years:Please use the format YYYY using only numbers.`,
ignoreValidators: ['required']
}
]
|
|
NDBX datefield adds a validation error Eg. when We can use |
| $localize |
Type : LocalizeFn
|
| $localize |
Type : LocalizeFn
|
| $localize |
Type : LocalizeFn
|
| $localize |
Type : LocalizeFn
|
| $localize |
Type : LocalizeFn
|
| ACL_DEFAULTS_HEADER |
Default value : `# ACL DEFAULTS - AUTO GENERATED BY TALY GENERATOR
# DO NOT EDIT MANUALLY`
|
| ACL_POLICY_CONTENT_TOKEN |
Default value : new InjectionToken('ACL Policy for Building Blocks')
|
| jest |
| ACL_STORE_ADAPTER_TOKEN |
Type : InjectionToken<ExpressionStoreAdapter>
|
Default value : new InjectionToken<ExpressionStoreAdapter>(
'ACL_STORE_ADAPTER_TOKEN - Token to provide ExpressionStoreAdapter'
)
|
| ACL_TAG_NAME_ASYNC_TOKEN |
Default value : new InjectionToken<BehaviorSubject<string>>(
'async acl tag name behaviour subject'
)
|
| ACL_TAG_TOKEN |
Default value : new InjectionToken<AclTag>('acl tag injection token')
|
| ACL_TAG_TRANSIENT |
Default value : new InjectionToken<BehaviorSubject<string>>(
'acl transient behaviour subject'
)
|
| aclMock |
Default value : createAclMock()
|
| aclResetStates |
Default value : ['visible', 'editable'] as const
|
| aclResourceStates |
Default value : ['hidden', 'readonly', 'disabled'] as const
|
| aclRuleStates |
Default value : [...aclResetStates, ...aclResourceStates] as const
|
| ajv |
Default value : new Ajv()
|
| validateAclSchema |
Type : ValidateFunction
|
Default value : ajv.compile(aclYamlSchema)
|
| ajv |
Default value : new Ajv({
strict: false
})
|
| validateApplicationJsonSchema |
Type : ValidateFunction
|
Default value : ajv.compile(defaultApplicationJsonSchema)
|
| TALY_EXECUTORS |
Type : []
|
Default value : ['@allianz/taly-nx:generate', '@allianz/taly-nx:generate-and-serve']
|
| ZONE_JS_SCRIPT_PATTERN |
Default value : /node_modules\/zone\.js\/fesm2015\/zone\.min\.js$/
|
| ANGULAR_CORE_MODULE |
Type : string
|
Default value : '@angular/core'
|
| TOKEN_NAME |
Type : string
|
Default value : 'BFF_BASE_URL_TOKEN'
|
| WRITABLE_SIGNAL_TYPE |
Type : string
|
Default value : 'WritableSignal<string>'
|
| TALY_EXECUTORS |
Type : []
|
Default value : ['@allianz/taly-nx:generate', '@allianz/taly-nx:generate-and-serve']
|
| TALY_EXECUTORS |
Type : []
|
Default value : ['@allianz/taly-nx:generate', '@allianz/taly-nx:generate-and-serve']
|
| APP_ROOT_ELEMENT_REF |
Default value : new InjectionToken<AppRootElementRef>('APP_ROOT_ELEMENT_REF')
|
| BFF_BASE_URL_TOKEN |
Default value : new InjectionToken<WritableSignal<string>>('BFF_BASE_URL_TOKEN')
|
| BUILDING_BLOCK_META_DATA |
Default value : new InjectionToken('Building Block Meta Data')
|
| CHANNEL_TOKEN |
Default value : new InjectionToken<CHANNEL>('Channel (retail/expert)', {
factory: () => CHANNEL.RETAIL
})
|
| IS_NDBX |
Default value : new InjectionToken<boolean>('IS_NDBX', {
factory: () => false
})
|
| JOURNEY_USAGE_TARGET |
Default value : new InjectionToken<JourneyTarget>('JOURNEY_USAGE_TARGET')
|
| LOCALE_RUNTIME_TOKEN |
Default value : new InjectionToken<WritableSignal<string>>(
'LOCALE_RUNTIME_TOKEN'
)
|
| NO_MARGIN |
Default value : new InjectionToken<boolean>('NO_MARGIN')
|
| PAGES_CONFIGURATION |
Default value : new InjectionToken('Pages Configuration')
|
| PLUGIN_VALIDATORS |
Default value : new InjectionToken<PluginValidatorUnion[]>('PLUGIN_VALIDATORS', {
factory: () => []
})
|
| TALY_APP_TITLE |
Default value : new InjectionToken<string>('TALY_APP_TITLE')
|
| USE_ENHANCED_VERTICAL_SPACING |
Default value : new InjectionToken<boolean>(
'USE_ENHANCED_VERTICAL_SPACING',
{
factory: () => false
}
)
|
| appsFolder |
Type : string
|
Default value : 'apps'
|
| configFolder |
Type : string
|
Default value : 'config'
|
| isLocalPath |
Default value : (path: string) => !path.startsWith('~')
|
| COLON |
Type : string
|
Default value : ':'
|
| define |
Default value : (target: unknown, key: PropertyKey, value: any) =>
Object.defineProperty(target, key, {
value,
writable: true,
configurable: true
})
|
| NON_PROP_SYMBOL_KEYS |
Default value : [PREFIX_BEFORE, PREFIX_BEFORE_ALL, PREFIX_AFTER_ALL].map(Symbol.for)
|
| PREFIX_AFTER |
Type : string
|
Default value : 'after'
|
| PREFIX_AFTER_ALL |
Type : string
|
Default value : 'after-all'
|
| PREFIX_AFTER_COLON |
Type : string
|
Default value : 'after-colon'
|
| PREFIX_AFTER_PROP |
Type : string
|
Default value : 'after-prop'
|
| PREFIX_AFTER_VALUE |
Type : string
|
Default value : 'after-value'
|
| PREFIX_BEFORE |
Type : string
|
Default value : 'before'
|
|
The following code is taken from the comment-json package: |
| PREFIX_BEFORE_ALL |
Type : string
|
Default value : 'before-all'
|
| symbol |
Default value : (prefix: unknown, key: string) => Symbol.for(prefix + COLON + key)
|
| SYMBOL_PREFIXES |
Type : []
|
Default value : [
PREFIX_BEFORE,
PREFIX_AFTER_PROP,
PREFIX_AFTER_COLON,
PREFIX_AFTER_VALUE,
PREFIX_AFTER
]
|
| BASE_CONFIG_DIRECTORY_PROP |
Type : string
|
Default value : 'baseConfigDirectory'
|
| RELEVANT_EXECUTORS |
Type : []
|
Default value : ['@allianz/taly-nx:generate-and-serve', '@allianz/taly-nx:generate']
|
| CC_FOOTNOTE_MODULE_NAME |
Type : string
|
Default value : 'CcFootnoteModule'
|
| CC_VALIDATION_ERRORS_MODULE_NAME |
Type : string
|
Default value : 'CcValidationErrorsModule'
|
| CHANNEL |
Default value : {
EXPERT: 'expert',
RETAIL: 'retail'
} as const
|
| CheckboxLabelSize |
Default value : {
Small: 'small',
Large: 'large'
} as const
|
| DfCheckboxGroupTypeName |
Type : string
|
Default value : 'CHECKBOX_GROUP'
|
|
The value to use for the |
| DfCheckboxTypeName |
Type : string
|
Default value : 'CHECKBOX'
|
|
The value to use for the |
| cli |
Default value : new Command().name('npx taly').description(`CLI for the TALY SDK (v${version})`)
|
| COMMENT_MARKER |
Type : string
|
Default value : '#'
|
| INACTIVE_MARKER |
Type : string
|
Default value : '##'
|
| RULE_PART_SEPARATOR |
Default value : /,(?![^(]*\))(?=(?:[^"]*"[^"]*")*[^"]*$)/g
|
| COMMON_PACKAGE |
Type : string
|
Default value : '@allianz/taly-common'
|
| CORE_PACKAGE |
Type : string
|
Default value : '@allianz/taly-core'
|
| DEPENDENCY_SECTIONS |
Type : []
|
Default value : ['dependencies', 'devDependencies', 'peerDependencies']
|
| DF_FORM_COMPONENT |
Type : string
|
Default value : 'DfFormComponent'
|
| DYNAMIC_FORM_PACKAGE |
Default value : `${CORE_PACKAGE}/dynamic-form`
|
| INTERNAL_DF_FORM_COMPONENT |
Type : string
|
Default value : 'InternalDfFormComponent'
|
| NEW_BUILDING_BLOCKS_PACKAGE |
Default value : `${CORE_PACKAGE}/building-blocks`
|
| NEW_DEVTOOLS_PACKAGE |
Default value : `${CORE_PACKAGE}/devtools`
|
| NEW_FRAME_PACKAGE |
Default value : `${CORE_PACKAGE}/frame`
|
| NEW_STANDALONE_FORM_PACKAGE |
Default value : `${CORE_PACKAGE}/dynamic-form/standalone`
|
| NEW_UI_PACKAGE |
Default value : `${CORE_PACKAGE}/ui`
|
| SYMBOL_MIGRATIONS |
Type : PackageMigration[]
|
Default value : [
{
targetPackage: CORE_PACKAGE,
symbols: ['NormalizeUrlPipe', 'NormalizeUrlModule', 'DEPLOY_URL', 'Deferred']
},
{
targetPackage: NEW_STANDALONE_FORM_PACKAGE,
symbols: [
'provideDynamicFormNativeComponents',
'TalyDynamicFormComponent',
'provideTalyStandaloneDynamicForm'
]
},
{
targetPackage: NEW_BUILDING_BLOCKS_PACKAGE,
symbols: [
// abstract-building-block.ts
'AbstractBuildingBlock',
'RecordObjectLike',
'NoArray',
// building-block-interface.ts
'BuildingBlockInterface',
'BusinessEvent',
// navigation.ts
'BUILDING_BLOCK_NAVIGATION_TYPE',
'BuildingBlockNavigationEvent',
'isImplicitNavigation',
// create-building-block-provider.ts
'createBuildingBlockProvider',
// facade
'AbstractBuildingBlockFacade',
'NoopFacade',
// page
'AbstractBuildingBlockPage',
'ChunkLoadingErrorPageComponent',
'ChunkLoadingErrorPageModule',
// taly-placeholder-bb
'PlaceholderComponent',
'PlaceholderModule',
'PlaceHolderResources',
'PlaceholderComponentState',
'placeholderExampleData',
// services
'BuildingBlockMetaData',
'BuildingBlockPageMetaData',
'BuildingBlockMetaServiceInterface',
'BuildingBlockMetaService',
'TalyResourcesService',
// dynamic-form-bb
'DynamicFormBuildingBlock',
'DynamicFormBuildingBlockModule',
'DynamicFormBbResources',
'DynamicFormBbState',
'dynamicFormBuildingBlockExampleData'
]
},
{
targetPackage: NEW_DEVTOOLS_PACKAGE,
symbols: [
'BuildingBlockDebuggerModule',
'BuildingBlockDebugger',
'DynamicFormDebuggerService',
'DynamicFormDebugger',
'DynamicFormDebuggerAction',
'ShowroomHeaderComponent',
'ShowroomHeaderModule',
'JourneyInsightsModule',
'JourneyInsightsComponent',
'JourneyInsights',
'DebugToolsService'
]
},
{
targetPackage: NEW_UI_PACKAGE,
symbols: ['MarkdownToHtmlComponent', 'TalyMarkdownToHtmlService']
},
{
targetPackage: NEW_FRAME_PACKAGE,
symbols: ['TalyFootnoteComponent']
}
]
|
| conditionFunctionCache |
Default value : new Map<string, (obj: any) => any>()
|
| configWithAcrValues |
Type : OauthConfig
|
Default value : {
name: 'Mock config with acrValues',
authorizeUrl: 'https://idp-non-default.com/authorize',
clientId: 'ClientIdNonDefault',
tokenUrl: 'https://token-non-default',
appTokenUrl: 'https://my-app-non-default/token',
scope: 'scope',
bffBaseUrl: 'https://bff-non-default',
refreshBeforeExpiryThreshold: 1000,
acrValues: ['aus-xx-test', 'aus-xx-hotfix']
}
|
| configWithLogoutSupport |
Type : OauthConfig
|
Default value : {
default: false,
name: 'Mock config with logout support',
authorizeUrl: 'https://idp.com/authorize',
clientId: 'ClientId',
tokenUrl: 'https://token',
appTokenUrl: 'https://my-app/token',
scope: 'scope',
bffBaseUrl: 'https://bff',
refreshBeforeExpiryThreshold: 1000,
revokeUrl: 'https://idp.com/revoke',
endSessionUrl: 'https://idp.com/end_session'
}
|
| defaultMockConfig |
Type : OauthConfig
|
Default value : {
default: true,
name: 'My Default Mock Config',
authorizeUrl: 'https://idp.com/authorize',
clientId: 'ClientId',
tokenUrl: 'https://token',
appTokenUrl: 'https://my-app/token',
scope: 'scope',
bffBaseUrl: 'https://bff',
refreshBeforeExpiryThreshold: 1000
}
|
| mockConfigurations |
Type : OauthConfig[]
|
Default value : [
defaultMockConfig,
namedNonDefaultMockConfig,
configWithLogoutSupport,
configWithAcrValues
]
|
| namedNonDefaultMockConfig |
Type : OauthConfig
|
Default value : {
name: 'My Non-Default Mock Config',
authorizeUrl: 'https://idp-non-default.com/authorize',
clientId: 'ClientIdNonDefault',
tokenUrl: 'https://token-non-default',
appTokenUrl: 'https://my-app-non-default/token',
scope: 'scope',
bffBaseUrl: 'https://bff-non-default',
refreshBeforeExpiryThreshold: 1000
}
|
| ContainerLayout |
Default value : {
SingleColumn: 'single-column',
MultiColumn: 'multi-column',
CustomColumn: 'custom-column'
} as const
|
| COPYRIGHT_HOLDER_KEY |
Type : string
|
Default value : 'copyrightHolder'
|
| COPYRIGHT_KEY |
Type : string
|
Default value : 'copyright'
|
| CORE_FORMS_BACKEND_INTEGRATION_ACTION_TYPE |
Type : string
|
Default value : 'CORE_FORMS_BACKEND_INTEGRATION'
|
| CORE_FORMS_BACKEND_INTEGRATION_PLUGIN_OPTIONS |
Default value : new InjectionToken<
Signal<CoreFormsBackendIntegrationPluginOptions>
>('CORE_FORMS_BACKEND_INTEGRATION_PLUGIN_OPTIONS')
|
| CORE_FORMS_HIDDEN_FIELD_COMPONENT_PLUGIN_OPTIONS |
Default value : new InjectionToken<
Signal<CoreFormsHiddenFieldComponentPluginOptions>
>('CORE_FORMS_HIDDEN_FIELD_COMPONENT_PLUGIN_OPTIONS')
|
| CORE_FORMS_JOURNEY_PREVIEW_PLUGIN_OPTIONS |
Default value : new InjectionToken<
Signal<CoreFormsJourneyPreviewPluginOptions>
>('CORE_FORMS_JOURNEY_PREVIEW_PLUGIN_OPTIONS')
|
| CORE_FORMS_TRACKING_PLUGIN_OPTIONS |
Default value : new InjectionToken<Signal<TrackingPluginOptions>>(
'CORE_FORMS_TRACKING_PLUGIN_OPTIONS'
)
|
| createBreakpointFactory |
Default value : (container: Element, service: ContainerViewService) => (breakpoint: NxBreakpoints) =>
service.max(container, breakpoint).pipe(distinctUntilChanged())
|
| CUSTOM_COMPONENT_TYPE |
Type : string
|
Default value : 'CUSTOM_COMPONENT'
|
| CUSTOM_DYNAMIC_FORM_COMPONENT |
Default value : new InjectionToken<DfComponentConfig[]>(
'CUSTOM_DYNAMIC_FORM_COMPONENT'
)
|
| DEFAULT_OPTIONS |
Type : TalyI18nConfig
|
Default value : {}
|
| I18N_PLUGIN_OPTIONS |
Default value : new InjectionToken<Signal<TalyI18nConfig>>(
'I18N_PLUGIN_OPTIONS'
)
|
| dateUnitAlias |
Type : object
|
Default value : {
d: 'd',
day: 'd',
days: 'd',
w: 'w',
week: 'w',
weeks: 'w',
m: 'm',
month: 'm',
months: 'm',
y: 'y',
year: 'y',
years: 'y'
}
|
| DEBOUNCE_STORE_UPDATES_TIME |
Type : number
|
Default value : 300
|
| VERBOSE |
Default value : false
|
| DEFAULT_CONFIGURATION_NAME |
Type : string
|
Default value : 'webcomponent'
|
| DEFAULT_INDEX |
Type : number
|
Default value : 0
|
| DEFAULT_OPTIONS |
Type : EscapedMaxLengthValidatorPluginOptions
|
Default value : {
escapedMaxLength: 30
}
|
| DEFAULT_THROTTLE_TIME |
Type : number
|
Default value : 200
|
| DEFAULT_TRANSLATION_FILE_FORMAT |
Type : string
|
Default value : 'xlf'
|
| DEPLOY_URL |
Default value : new InjectionToken<string>('DEPLOY_URL')
|
| Df_DATE_PICKER_PARSE_FORMAT |
Type : InjectionToken<string>
|
Default value : new InjectionToken<string>(
'Df_DATE_PICKER_PARSE_FORMAT'
)
|
| ISO_STRING_FORMAT |
Type : string
|
Default value : 'YYYY-MM-DD'
|
| DF_EDITOR_SERVER_DEFAULT_PORT |
Type : number
|
Default value : 4300
|
| DF_EDITOR_SERVER_PORT |
Default value : new InjectionToken<number>('DF_EDITOR_SERVER_PORT')
|
| Df_ISO_DATE_FORMAT |
Type : NxDateFormats
|
Default value : {
parse: {
dateInput: 'L'
},
display: {
dateInput: 'L',
monthYearLabel: 'MMM YYYY',
dateA11yLabel: 'LL',
monthYearA11yLabel: 'MMMM YYYY'
}
}
|
| DfCircleToggleGroupTypeName |
Type : string
|
Default value : 'CIRCLE_TOGGLE_GROUP'
|
|
Definition of the type - dynamic circle toggles |
| DfDateDefaultValues |
Default value : {
Yesterday: 'YESTERDAY',
Today: 'TODAY',
Tomorrow: 'TOMORROW'
} as const
|
|
Default values for the DATE |
| DfDateFullDateMode |
Type : string
|
Default value : 'fullDate'
|
| DfDateMonthYearOnlyMode |
Type : string
|
Default value : 'monthYearOnly'
|
|
The value options to use for the |
| DfDateStartViewTypeMonthYearOnly |
Default value : {
Year: 'year',
MultiYear: 'multi-year'
} as const
|
| DfDateTypeName |
Type : string
|
Default value : 'DATE'
|
|
The value to use for the |
| DfDateYearOnlyMode |
Type : string
|
Default value : 'yearOnly'
|
| DfDropdownTypeName |
Type : string
|
Default value : 'DROPDOWN'
|
|
The value to use for the |
| DfFormfieldSpacing |
Default value : {
none: 'NONE',
xs: 'XS',
s: 'S',
m: 'M',
l: 'L',
xl: 'XL',
xxl: 'XXL'
} as const
|
| DfFormLayoutClassName |
Type : string
|
Default value : {
ONE_COLUMN: 'single-column',
TWO_COLUMN: 'two-column-element',
THREE_COLUMN: 'three-column-element',
FOUR_COLUMN: 'four-column-element',
CUSTOM_COLUMN: ''
}
|
| DfFormLayoutType |
Default value : {
OneColumn: 'ONE_COLUMN',
TwoColumn: 'TWO_COLUMN',
ThreeColumn: 'THREE_COLUMN',
FourColumn: 'FOUR_COLUMN',
CustomColumn: 'CUSTOM_COLUMN'
} as const
|
| DfHeadlineTypeName |
Type : string
|
Default value : 'HEADLINE'
|
|
The value to use for the |
| HeaderType |
Default value : {
h1: 'h1',
h2: 'h2',
h3: 'h3'
} as const
|
| DfInputTypeName |
Type : string
|
Default value : 'INPUT'
|
|
The value to use for the |
| DfLineBreakTypeName |
Type : string
|
Default value : 'LINE_BREAK'
|
|
The value to use for the |
| DfNotificationTypeName |
Type : string
|
Default value : 'NOTIFICATION'
|
|
The value to use for the |
| DfParagraphTypeName |
Type : string
|
Default value : 'PARAGRAPH'
|
|
The value to use for the |
| DfPhoneInputTypeName |
Type : string
|
Default value : 'PHONE_INPUT'
|
| DfRadioTypeName |
Type : string
|
Default value : 'RADIO'
|
|
The value to use for the |
| DfRatingTypeName |
Type : string
|
Default value : 'RATING'
|
|
The value to use for the |
| DfSwitcherTypeName |
Type : string
|
Default value : 'SWITCHER'
|
|
The value to use for the |
| SwitcherLabelPosition |
Default value : {
Left: 'left',
Right: 'right'
} as const
|
| SwitcherSize |
Default value : {
Small: 'small',
Large: 'large'
} as const
|
| DfTextAreaTypeName |
Type : string
|
Default value : 'TEXT_AREA'
|
|
Definition of the type - dynamic text area |
| DfTileTypeName |
Type : string
|
Default value : 'TILE'
|
|
Definition of the type - dynamic tile |
| TileLayoutDirection |
Default value : {
Auto: 'auto',
Horizontal: 'horizontal',
Vertical: 'vertical'
} as const
|
|
Tile layout direction options |
| TileWidth |
Default value : {
Small: 'small',
Medium: 'medium',
Large: 'large'
} as const
|
|
Tile width options for fixed-width layout mode |
| DfToggleButtonSize |
Default value : {
Small: 'small',
Large: 'large'
} as const
|
| DfToggleButtonTypeName |
Type : string
|
Default value : 'TOGGLE_BUTTON'
|
|
The value to use for the |
| DYNAMIC_VALIDATIONS_PASCAL_CASE |
Default value : DYNAMIC_VALIDATION_KEYS.map(toPascalCase)
|
Default value : require('lodash-es')
|
| dynamicFormConfigSchema |
Default value : schema
|
| dynamicFormFieldDfBasicComponentsConfig |
Default value : dynamicFormConfigSchema.definitions.DfBasicComponentsConfig
|
| getDynamicFormConfig |
Type : object
|
Default value : {
name: 'get-dynamic-form-config',
title: 'Get Dynamic Form Config',
description:
'Get the JSON schema validation for a specific dynamic form field type. Use this tool when you need to understand the configuration structure for a particular dynamic form field type (e.g., SWITCHER, RADIO, INPUT, DROPDOWN).',
inputSchema: {
dynamicFormFieldType: inputSchema.shape.dynamicFormFieldType,
includeAcl: inputSchema.shape.includeAcl,
includeValidation: inputSchema.shape.includeValidation,
includePfeIntegration: inputSchema.shape.includePfeIntegration
},
cb: async ({
dynamicFormFieldType,
includeAcl,
includeValidation,
includePfeIntegration
}: z.infer<typeof inputSchema>): Promise<{
content: Array<{
type: 'text';
text: string;
}>;
}> => {
// 1. Get the sub-schema depending on the field type
const fieldSchemaProperty = resolveDfBasicComponentSubSchema(
dynamicFormFieldDfBasicComponentsConfig,
dynamicFormFieldType
);
if (!fieldSchemaProperty) {
return {
content: [
{
type: 'text',
text: `Field type "${dynamicFormFieldType}" not found in the schema.`
}
]
};
}
const filterOptions: FilterOptions = {
includeAcl: includeAcl === true,
includeValidation: includeValidation === true,
includePfeIntegration: includePfeIntegration === true
};
// 2. Add the sub-schema references and apply filtering
const resolvedSchema = resolveSchemaReferences(
fieldSchemaProperty,
dynamicFormConfigSchema,
filterOptions
);
const aclHint = includeAcl
? `\n\n**Important:** The schema above shows the ACL structure, but writing correct ACL conditions requires specific syntax knowledge (filtrex expressions, \`s()\` state accessors, etc.). Use the \`get-acl-context\` tool to get the full ACL syntax documentation and examples before writing ACL rules.`
: '';
return {
content: [
{
type: 'text',
text: `**${dynamicFormFieldType} Field Validation Configuration Schema:**\n\`\`\`json\n${JSON.stringify(
resolvedSchema,
null,
0
)}\n\`\`\`${aclHint}`
}
]
};
}
}
|
| EDITOR_INFO |
Type : DfInfoIconConfig
|
Default value : {
popoverText:
'**Welcome to the Dynamic Form Editor!**<br>' +
'The **Dynamic Form Editor** allows you to modify dynamic form configurations. ' +
'You can add, remove, and rearrange form fields, change the layout and edit the JSON configuration directly.<br>' +
'The configuration editor support **JSON schema** assistance, which can be triggered using _Ctrl_/_Cmd_ + _Space_ or _Ctrl_/_Cmd_ + _i_. ' +
'You can check your changes in the **Diff** tab and the state status in the **State** tab.<br>' +
'Feel free to take a look at our documentation about the dynamic form and its components [here](https://taly.frameworks.allianz.io/additional-documentation/dynamic-form.html)',
popoverDirection: 'bottom'
}
|
| ELEMENT_BUILDER_PATH |
Type : string
|
Default value : 'generated/tools/scripts/element-builder.js'
|
| ensurePosixPathSeparators |
Default value : (origPath: string) =>
origPath.split(path.sep).join(path.posix.sep)
|
|
Converts Windows paths that use \ as separator to / |
| ensurePosixPathSeparators |
Default value : (origPath: string) =>
origPath.split(path.sep).join(path.posix.sep)
|
|
Converts Windows paths that use \ as separator to / |
| ensurePosixPathSeparators |
Default value : (origPath: string) =>
origPath.split(path.sep).join(path.posix.sep)
|
|
Converts Windows paths that use \ as separator to / |
| ENV_VAR_MARKER |
Type : string
|
Default value : '@environment.'
|
| isEnvVarPlaceholder |
Default value : (value: unknown): value is string => {
return typeof value === 'string' && value.startsWith(ENV_VAR_MARKER);
}
|
| ESCAPED_MAX_LENGTH_PLUGIN_OPTIONS |
Default value : new InjectionToken<
Signal<EscapedMaxLengthValidatorPluginOptions>
>('ESCAPED_MAX_LENGTH_PLUGIN_OPTIONS')
|
| ESCAPED_MAX_LENGTH_PLUGIN_OPTIONS |
Default value : new InjectionToken<EscapedMaxLengthValidatorPluginOptions>('ESCAPED_MAX_LENGTH_PLUGIN_OPTIONS')
|
| EXCLUDED_CUSTOM_COMPONENTS |
Type : []
|
Default value : ['TurnstileComponent', 'HiddenFieldComponent']
|
| execAsync |
Default value : promisify(exec)
|
| TALY_EXECUTORS |
Type : []
|
Default value : ['@allianz/taly-nx:generate', '@allianz/taly-nx:generate-and-serve']
|
| formFieldConfigurations |
Type : DfComponentsConfigMap
|
Default value : {
CHECKBOX: {
id: 'checkbox',
type: 'CHECKBOX',
label: 'Checkbox'
},
CHECKBOX_GROUP: {
id: 'checkboxGroup',
type: 'CHECKBOX_GROUP',
label: 'Checkbox Group',
options: [
{ label: 'Option 1', value: 'option1' },
{ label: 'Option 2', value: 'option2' },
{ label: 'Option 3', value: 'option3' }
]
},
DATE: {
id: 'datePicker',
label: 'Date Picker',
type: 'DATE',
mode: 'fullDate'
},
INPUT: {
id: 'inputField',
type: 'INPUT',
label: 'Input Field',
inputType: 'text'
},
PHONE_INPUT: {
id: 'phoneInput',
type: 'PHONE_INPUT',
label: 'Phone Input',
countryCode: 'TH'
},
DROPDOWN: {
id: 'dropdown',
type: 'DROPDOWN',
label: 'Dropdown',
hint: 'This is a hint',
options: [
{ label: 'First Option', value: 'first' },
{ label: 'Second Option', value: 'second' }
]
},
SWITCHER: {
id: 'switcher',
type: 'SWITCHER',
label: 'Switcher'
},
RADIO: {
id: 'radioButtons',
type: 'RADIO',
label: 'Radio Buttons',
options: [
{ label: 'First Option', value: 'first' },
{ label: 'Second Option', value: 'second' }
]
},
PARAGRAPH: {
id: 'paragraph',
type: 'PARAGRAPH',
label: 'Paragraph'
},
HEADLINE: {
id: 'headline',
type: 'HEADLINE',
label: 'Headline',
headerType: 'h2'
},
TEXT_AREA: {
id: 'textArea',
type: 'TEXT_AREA',
label: 'Text Area',
hint: 'This is a hint'
},
CIRCLE_TOGGLE_GROUP: {
id: 'circleToggles',
type: 'CIRCLE_TOGGLE_GROUP',
label: 'Circle Buttons',
options: [
{ value: 'first', label: 'First Option', icon: 'product-car' },
{ value: 'second', label: 'Second Option', icon: 'product-plane' }
]
},
RATING: {
type: 'RATING',
id: 'ratingStars',
label: 'Rating Stars'
},
TOGGLE_BUTTON: {
id: 'toggleButton',
type: 'TOGGLE_BUTTON',
label: 'Toggle Button',
options: [
{ label: 'First Option', value: 'first' },
{ label: 'Second Option', value: 'second' }
]
},
CUSTOM_COMPONENT: null,
LINE_BREAK: null,
NOTIFICATION: {
id: 'notification',
type: 'NOTIFICATION',
label: 'Notification',
title: 'Information',
message: 'This is an **info** notification with [link](https://example.com)',
context: 'info',
closable: true
},
TILE: {
id: 'tile',
type: 'TILE',
label: 'Tile',
options: [
{ value: 'first', label: 'First Option', icon: 'product-car' },
{ value: 'second', label: 'Second Option', icon: 'product-plane' }
]
}
}
|
| fullExampleConfig |
Type : DfBasicComponentsConfig[]
|
Default value : [
{
id: 'headline',
type: 'HEADLINE',
label: 'The Following Form Shows All Currently Available Components',
headerType: 'h2'
},
{
id: 'paragraph',
type: 'PARAGRAPH',
label: 'This configuration can be changed in the editor below.'
},
{
id: 'paragraph-live-value',
type: 'PARAGRAPH',
label:
"This paragraph can show data from the state. For example the value of the field below: {$['my-dynamic-form']['input-{talyFieldId}']}"
},
{
id: 'input',
type: 'INPUT',
inputType: 'text',
label: 'Input Field',
note: 'This is a note',
hint: 'This is a hint',
acl: [
{
state: 'hidden',
condition: "s(\"$['my-dynamic-form']['mySwitcher-{talyFieldId}']\")"
}
]
},
{
id: 'mySwitcher',
type: 'SWITCHER',
label: 'Conditionally hide the input field above',
labelPosition: 'right'
},
{
id: 'checkbox',
type: 'CHECKBOX',
label: 'This is a checkbox with a validator',
validators: [{ type: 'REQUIRED_TRUE' }]
},
{
id: 'checkboxGroup',
type: 'CHECKBOX_GROUP',
label: 'Checkbox Group',
options: [
{ label: 'Option 1', value: 'option1' },
{ label: 'Option 2', value: 'option2' },
{ label: 'Option 3', value: 'option3' }
]
},
{
id: 'circleButtons',
type: 'CIRCLE_TOGGLE_GROUP',
label: 'Circle Buttons',
options: [
{
value: 'first',
label: 'First Option',
icon: 'product-car'
},
{
value: 'second',
label: 'Second Option',
icon: 'product-plane'
}
]
},
{
id: 'date',
type: 'DATE',
label: 'Date',
hint: 'This is a hint',
mode: 'fullDate',
infoIcon: {
popoverText: 'The info icon supports **Markdown**'
}
},
{
id: 'dropdown',
type: 'DROPDOWN',
label: 'Dropdown',
hint: 'This is a hint',
options: [
{
label: 'First Option',
value: 'first'
},
{
label: 'Second Option',
value: 'second'
}
]
},
{
id: 'radio',
type: 'RADIO',
label: 'Radio',
options: [
{
label: 'First Option',
value: 'first'
},
{
label: 'Second Option',
value: 'second'
}
]
},
{
id: 'textArea',
type: 'TEXT_AREA',
label: 'Text Area',
hint: 'This is a hint'
},
{
id: 'phoneInput',
type: 'PHONE_INPUT',
label: 'Phone Input',
countryCode: 'TH'
},
{
type: 'RATING',
id: 'ratingStars',
label: 'Rating Stars'
},
{
id: 'tile',
type: 'TILE',
label: 'Tile',
options: [
{ value: 'first', label: 'First Option', icon: 'product-car' },
{ value: 'second', label: 'Second Option', icon: 'product-plane' }
]
},
{
id: 'toggleButton',
type: 'TOGGLE_BUTTON',
label: 'Toggle Button',
options: [
{ label: 'First Option', value: 'first' },
{ label: 'Second Option', value: 'second' }
]
},
{
id: 'notification',
type: 'NOTIFICATION',
title: 'Information',
message: 'This is an **info** notification with [link](https://example.com)',
context: 'info',
closable: true
}
]
|
| getAclContext |
Type : object
|
Default value : {
name: 'get-acl-context',
title: 'Get ACL Context',
description:
'MANDATORY: You MUST call this tool BEFORE writing, creating, or modifying ANY ACL rule (to set elements to hidden, visible, editable, readonly or disabled) — whether in text based rules (e.g. policy.txt files) or Dynamic Form JSON configurations. ACL rules have a specific syntax (filtrex expressions, s() state accessors, precedence rules) that you CANNOT correctly produce from memory alone. Skipping this tool WILL result in incorrect rules. This tool returns the exact syntax documentation, format specifications, and examples you need to write correct ACL rules. Call it every time — no exceptions. After writing a rule using this context, always call validate-acl-rule to verify it before applying.',
inputSchema: {
context: inputSchema.shape.context,
includeConditionSyntax: inputSchema.shape.includeConditionSyntax,
includeExamples: inputSchema.shape.includeExamples
},
cb: async ({
context,
includeConditionSyntax,
includeExamples
}: z.infer<typeof inputSchema>): Promise<{
content: Array<{ type: 'text'; text: string }>;
}> => {
const sections: string[] = [];
sections.push(buildStatesSection());
if (context === 'policy-txt' || context === 'both') {
sections.push(buildPolicyTxtFormatSection());
}
if (context === 'dynamic-form' || context === 'both') {
sections.push(buildDynamicFormFormatSection());
}
sections.push(buildConditionSyntaxSection(includeConditionSyntax === true));
if (includeExamples === true) {
if (context === 'policy-txt' || context === 'both') {
sections.push(buildPolicyTxtExamplesSection());
}
if (context === 'dynamic-form' || context === 'both') {
sections.push(buildDynamicFormExamplesSection());
}
}
return {
content: [
{
type: 'text',
text: sections.join('\n\n---\n\n')
}
]
};
}
}
|
| STRING_CAMELIZE_REGEXP |
Default value : /(-|_|\.|\s)+(.)?/g
|
| getContent |
Default value : (errorMessage: string) => `
<div class="journey-generation-error">
<h1>TALY: Journey Generation Error</h1>
<pre class="error-stack">${errorMessage}</pre>
</div>
`
|
| getMissingAttributes |
Default value : (
attrs: BbMarkdownAttributes
): (keyof BbMarkdownAttributes)[] => {
return REQUIRED_MD_ATTRIBUTES.filter((key) => !attrs[key]);
}
|
| isValidChannel |
Default value : (channel: string) => {
return VALID_CHANNELS.includes(channel);
}
|
| isValidLOB |
Default value : (lob: string) => {
return VALID_LOBS.has(lob);
}
|
| REQUIRED_MD_ATTRIBUTES |
Type : []
|
Default value : ['title', 'channel', 'lob']
|
| VALID_CHANNELS |
Type : []
|
Default value : ['expert', 'retail']
|
| getMissingAttributes |
Default value : (attrs: MarkdownAttributes) => {
return REQUIRED_MD_ATTRIBUTES.filter((key) => !attrs[key]);
}
|
| REQUIRED_MD_ATTRIBUTES |
Type : []
|
Default value : ['type', 'title', 'description']
|
| globMatchCache |
Default value : new Map<string, boolean>()
|
| hasFlag |
Default value : (data: AnalyzedImport, flag: ImportState) => (data.state & flag) !== 0
|
|
Checks whether an analyzed import has the given import flag set. |
| hasFlag |
Default value : (data: AnalyzedImport, flag: ImportState) => (data.state & flag) !== 0
|
|
Checks whether an analyzed import has the given import flag set. |
| I18N_NOTIFICATION_CONTEXT |
Type : Record<NotificationContext, string>
|
Default value : {
info: $localize`:Context of an info notification:info`,
success: $localize`:Context of a success notification:success`,
warning: $localize`:Context of a warning notification:warning`,
error: $localize`:Context of an error notification:error`
}
|
| IMPORT_KEYWORD |
Type : string
|
Default value : '@import'
|
| KEBAB_CASE_SEGMENT |
Default value : /^[a-z0-9]+(-[a-z0-9]+)*$/
|
| RULE_PART_SEPARATOR |
Default value : /,(?![^(]*\))(?=(?:[^"]*"[^"]*")*[^"]*$)/g
|
| VALID_STATES |
Default value : ['hidden', 'readonly', 'disabled', 'visible', 'editable'] as const
|
| validateAclRule |
Type : object
|
Default value : {
name: 'validate-acl-rule',
title: 'Validate ACL Rule',
description:
'Validate the syntax of a TALY ACL rule. Use this tool before writing an ACL rule to verify it is syntactically correct. Checks rule structure, state validity, and filtrex condition syntax.',
inputSchema: {
rule: inputSchema.shape.rule,
format: inputSchema.shape.format
},
cb: async ({
rule,
format
}: z.infer<typeof inputSchema>): Promise<{
content: Array<{ type: 'text'; text: string }>;
}> => {
const errors: string[] =
format === 'policy-txt' ? validatePolicyTxtRule(rule) : validateDynamicFormRule(rule);
if (errors.length === 0) {
return {
content: [
{
type: 'text',
text: `**Validation result: VALID**\n\nThe ACL rule is syntactically correct.`
}
]
};
}
return {
content: [
{
type: 'text',
text: `**Validation result: INVALID**\n\nThe ACL rule has the following errors:\n${errors
.map((e) => `- ${e}`)
.join('\n')}`
}
]
};
}
}
|
| INTERACTION_EVENTS |
Default value : ['focusin', 'input', 'click', 'blur'] as const
|
| NON_INTERACTIVE_FIELD_TYPES |
Default value : new Set([
'LINE_BREAK',
'HEADLINE',
'PARAGRAPH',
'NOTIFICATION'
])
|
| NEW_IMPORT |
Type : string
|
Default value : '@allianz/taly-core'
|
| OLD_IMPORT |
Type : string
|
Default value : '@allianz/taly-core/schemas'
|
| INTERFACES |
Type : []
|
Default value : ['ValidationErrorsModule', 'ValidationErrorsComponent']
|
| NEW_IMPORT |
Type : string
|
Default value : '@allianz/taly-core/validation-errors'
|
| OLD_IMPORT |
Type : string
|
Default value : '@allianz/taly-common/validation-errors'
|
| ISO_REGEX |
Default value : /^([0-9]{4})(-?)(1[0-2]|0[1-9])\2(3[01]|0[1-9]|[12][0-9])$/
|
| ISO_STRING_FORMAT |
Type : string
|
Default value : 'YYYY-MM-DD'
|
| JOURNAL_FORMAT_VERSION |
Type : string
|
Default value : '1'
|
| VALID_LOBS |
Default value : new Map([
['motor', 'KB'],
['household', 'HH'],
['life', 'LE'],
['health', 'KV'],
['commercial lines', 'GS'],
['any', 'ANY']
])
|
|
Available LOB values. |
| LANGUAGE_INTERCEPTOR_PLUGIN_OPTIONS |
Default value : new InjectionToken<LanguageInterceptorPluginOptions>('LANGUAGE_INTERCEPTOR_PLUGIN_OPTIONS')
|
| LANGUAGE_INTERCEPTOR_PLUGIN_OPTIONS |
Default value : new InjectionToken<LanguageInterceptorPluginOptions>('LANGUAGE_INTERCEPTOR_PLUGIN_OPTIONS')
|
| LANGUAGE_INTERCEPTOR_PLUGIN_OPTIONS |
Default value : new InjectionToken<LanguageInterceptorPluginOptions>('LANGUAGE_INTERCEPTOR_PLUGIN_OPTIONS')
|
| LANGUAGE_INTERCEPTOR_PLUGIN_OPTIONS |
Default value : new InjectionToken<LanguageInterceptorPluginOptions>('LANGUAGE_INTERCEPTOR_PLUGIN_OPTIONS')
|
| LANGUAGE_INTERCEPTOR_PLUGIN_OPTIONS |
Default value : new InjectionToken<LanguageInterceptorPluginOptions>('LANGUAGE_INTERCEPTOR_PLUGIN_OPTIONS')
|
| LANGUAGE_INTERCEPTOR_PLUGIN_OPTIONS |
Default value : new InjectionToken<LanguageInterceptorPluginOptions>('LANGUAGE_INTERCEPTOR_PLUGIN_OPTIONS')
|
| loadedMonaco |
Default value : false
|
| loadPromise |
Type : Promise<void>
|
| LOCATION |
Default value : new InjectionToken<Location>('LOCATION', {
providedIn: 'root',
factory: () => window.location
})
|
| OAUTH_CONFIGURATIONS |
Default value : new InjectionToken<OauthConfig>('OAUTH_CONFIGURATIONS')
|
| STORAGE |
Default value : new InjectionToken<Storage>('STORAGE', {
providedIn: 'root',
factory: () => sessionStorage
})
|
| MOBILE_STEP_LABEL_KEY |
Type : string
|
Default value : 'mobileStepLabel'
|
| MOBILE_STEP_LABEL_KEY |
Type : string
|
Default value : 'mobileStepLabel'
|
| MOCK_ANY_RESOURCE |
Type : string
|
Default value : '*'
|
| monaco |
Type : any
|
| monaco |
Type : any
|
| monacoConfig |
Type : NgxMonacoEditorConfig
|
Default value : {
baseUrl: window.location.origin + '/assets/monaco/min/vs',
defaultOptions: { scrollBeyondLastLine: false },
onMonacoLoad: monacoLoaded
}
|
| nameRegex |
Default value : /^[a-z][0-9a-z]*([- ][0-9a-z]+)*$/i
|
| NGX_MONACO_EDITOR_CONFIG |
Default value : new InjectionToken('NGX_MONACO_EDITOR_CONFIG')
|
| OauthAuthorizeActionType |
Type : string
|
Default value : 'OAUTH_AUTHORIZE'
|
| OauthDecodeClientStateActionType |
Type : string
|
Default value : 'OAUTH_DECODE_CLIENT_STATE'
|
| OauthGetTokenActionType |
Type : string
|
Default value : 'OAUTH_GET_TOKEN'
|
| OauthLogoutActionType |
Type : string
|
Default value : 'OAUTH_LOGOUT'
|
| PFE_FACADE_FACTORY |
Default value : new InjectionToken<PFEFacadeFactory>('PFE_FACADE_FACTORY')
|
| PFE_HISTORY_KEY |
Type : string
|
Default value : 'pfeHistory'
|
| PFE_INITIAL_CONFIGURATION |
Default value : new InjectionToken<NgxPfeConfig>(
'PFE Initial Configuration used in the TALY runtime mode'
)
|
| pfeDynamicPageRoute |
Type : object
|
Default value : {
loadChildren: () => PfeDynamicPageModule
}
|
| pgrModalBuildingBlockExampleData |
Type : BuildingBlockExampleData<undefined, undefined>
|
Default value : {
default: {}
}
|
| playgroundContactUsExampleData |
Type : BuildingBlockExampleData<undefined, ContactUsResources>
|
Default value : {
default: {
resources: {
label: 'Contact us'
}
}
}
|
| playgroundDynamicFormWithConfigEditorExampleData |
Type : BuildingBlockExampleData<PlaygroundDynamicFormWithConfigEditorState, PlaygroundDynamicFormWithConfigEditorResources>
|
Default value : {
default: {
state: {},
resources: {}
}
}
|
| PLUGIN_LIB_METADATA_FORMAT_VERSION |
Type : string
|
Default value : '1'
|
| writeFile |
Default value : util.promisify(fs.writeFile)
|
| POLICY |
Default value : `# some custom rules here
path,, disabled`
|
| PRESETS |
Type : PolicyPreset[]
|
Default value : [
{
name: 'Allow All',
content: `
*,,view,allow
*,,edit,allow
`
},
{
name: 'Read Only',
content: `
*,,view,allow
*,,edit,deny
`
},
{
name: 'Deny All',
content: `
*,,view,deny
*,,edit,deny
`
}
]
|
| readFile |
Default value : util.promisify(fs.readFile)
|
| readFile |
Default value : util.promisify(fs.readFile)
|
| REQUIRED_WEB_COMPONENT_OPTIMIZATION |
Default value : {
scripts: true,
styles: {
minify: true,
inlineCritical: false
},
fonts: false
} as const
|
| TALY_GENERATE_EXECUTOR |
Type : string
|
Default value : '@allianz/taly-nx:generate'
|
| WEB_COMPONENT_TARGET_EXECUTORS |
Default value : new Set([
'@nx/angular:browser-esbuild',
'@angular-devkit/build-angular:browser-esbuild',
'@nx/angular:application'
])
|
| SAMPLE_PAGE |
Type : Page
|
Default value : {
pagesConfig: {
blocks: [
{
id: 'some-building-block',
module: 'SomeBuildingBlockModule',
package: 'my-library',
selector: 'bb-some-building-block'
}
],
id: 'my-test-page'
},
pfeConfig: {
pageId: 'my-test-page'
}
}
|
| SAMPLE_PAGE_INCOHERENT_ID |
Type : Page
|
Default value : {
...SAMPLE_PAGE,
pfeConfig: {
pageId: SAMPLE_PAGE.pfeConfig.pageId + '-suffix'
}
}
|
| SCHEMA_PATHS |
Type : object
|
Default value : {
GLOBAL_ACTION: 'schemas/global-actions-json.schema.json',
GLOBAL_SERVICE_ACTIVATOR: 'schemas/global-service-activators-json.schema.json',
PAGE: 'schemas/page-json.schema.json',
NAVIGATION: 'schemas/navigation-json.schema.json',
APPLICATION: 'schemas/application-json.schema.json'
}
|
| server |
Default value : new McpServer({
name: 'taly-mcp',
version: '1.0.0'
})
|
| spinner |
Default value : ora()
|
| STRING_CAMELIZE_REGEXP |
Default value : /(-|_|\.|\s)+(.)?/g
|
| STRING_DASHERIZE_REGEXP |
Default value : /[ _]/g
|
|
Cherry picked from Angular Sources to have a dasherize function at hands. |
| STRING_DECAMELIZE_REGEXP |
Default value : /([a-z\d])([A-Z])/g
|
| STRING_DASHERIZE_REGEXP |
Default value : /[ _]/g
|
|
Cherry picked from Angular Sources to have a dasherize function at hands. |
| STRING_DECAMELIZE_REGEXP |
Default value : /([a-z\d])([A-Z])/g
|
| STRING_DASHERIZE_REGEXP |
Default value : /[ _.]/g
|
|
dasherize & decamelize are cherry-picked from '@nx/devkit/src/utils/string-utils' to have a dasherize function at hands. |
| STRING_DECAMELIZE_REGEXP |
Default value : /([a-z\d])([A-Z])/g
|
| TALY_FRAME_ELEMENT |
Default value : new InjectionToken<HTMLElement>(
`TALY_FRAME_ELEMENT - Reference to the TALY Frame container element`
)
|
| TALY_FRAME_FOOTER_CONFIG |
Default value : new InjectionToken<FooterConfiguration>(
`TALY_FRAME_FOOTER_CONFIG - Configuration for TALY Frame Footer`
)
|
| TALY_FRAME_NAVIGATION_CONFIG |
Default value : new InjectionToken<WritableSignal<NavigationConfig>>(
`TALY_FRAME_NAVIGATION_CONFIG - Configuration for TALY Frame Navigation`
)
|
| TALY_FRAME_STAGE_CONFIG |
Default value : new InjectionToken<StageConfiguration>(
`TALY_FRAME_STAGE_CONFIG - Configuration for TALY Frame Stage`
)
|
| TARGET_SYMBOLS |
Type : []
|
Default value : [
'StorageType.PfeStoreQuery',
'StorageType.Other',
'CHANNEL.EXPERT',
'CHANNEL.RETAIL'
]
|
| THEME_STORE_FOLDER |
Type : string
|
Default value : 'assets'
|
| writeFile |
Default value : util.promisify(fs.writeFile)
|
| writeFile |
Default value : util.promisify(fs.writeFile)
|
| VARIABLE_IDENTIFIER_SUFFIX |
Type : string
|
Default value : 'ExampleState'
|
| WEB_COMPONENT_ID |
Default value : new InjectionToken<string>('WEB_COMPONENT_ID')
|
| WEB_COMPONENT_ROUTE_COMBINER |
Type : string
|
Default value : ':'
|
| WEB_COMPONENT_ROUTE_REGEX |
Default value : /\((.*?)\)/
|
| WEB_COMPONENT_ROUTE_SEPARATOR |
Type : string
|
Default value : ','
|