value: getShouldFailOperation()

in libs/designer/src/lib/core/actions/bjsworkflow/settings.ts [232:433]


      value: getShouldFailOperation(operation),
    },
  };
};

/**
 * Checks whether the given option is part of the listed operationOptions.
 * @arg {string} operationOption - The operation option.
 * @arg {string} operationOptions  - The list of operation options.
 * @return {boolean}
 */
const isOperationOptionSet = (operationOption: string, operationOptions: string | undefined): boolean => {
  const deserializedOperationOptions = (operationOptions || '').split(',').map((option) => option.trim().toLowerCase());

  return deserializedOperationOptions.indexOf(operationOption.toLowerCase()) > -1;
};

const getAsynchronous = (definition?: LogicAppsV2.OperationDefinition): boolean => {
  const operationOptions = definition && definition.operationOptions;
  return isOperationOptionSet(Constants.SETTINGS.OPERATION_OPTIONS.ASYNCHRONOUS, operationOptions);
};

const getShouldFailOperation = (definition?: LogicAppsV2.OperationDefinition): boolean => {
  const operationOptions = definition && definition.operationOptions;
  return isOperationOptionSet(Constants.SETTINGS.OPERATION_OPTIONS.FAILWHENLIMITSREACHED, operationOptions);
};

const isAsynchronousSupported = (isTrigger: boolean, nodeType: string, manifest?: OperationManifest): boolean => {
  if (manifest) {
    const operationOptionSetting = getOperationSettingFromManifest(manifest, 'operationOptions') as OperationManifestSetting<
      OperationOptions[]
    >;

    return (
      isSettingSupportedFromOperationManifest(operationOptionSetting, isTrigger) &&
      !!operationOptionSetting.options &&
      operationOptionSetting.options.indexOf(OperationOptions.Asynchronous) > -1
    );
  }
  return equals(nodeType, Constants.NODE.TYPE.RESPONSE);
};

const isShouldFailOperationSupported = (isTrigger: boolean, nodeType: string, manifest?: OperationManifest): boolean => {
  if (manifest) {
    const operationOptionSetting = getOperationSettingFromManifest(manifest, 'operationOptions') as OperationManifestSetting<
      OperationOptions[]
    >;

    return (
      isSettingSupportedFromOperationManifest(operationOptionSetting, isTrigger) &&
      !!operationOptionSetting.options &&
      operationOptionSetting.options.indexOf(OperationOptions.FailWhenLimitsReached) > -1
    );
  }
  return false;
};

const getSplitOnConfiguration = (definition?: LogicAppsV2.TriggerDefinition): SplitOnConfiguration | undefined => {
  return definition ? definition.splitOnConfiguration : undefined;
};

const getCorrelationSettings = (definition?: LogicAppsV2.TriggerDefinition): CorrelationSettings | undefined => {
  return definition ? definition.correlation : undefined;
};

const isCorrelationSupported = (isTrigger: boolean, manifest?: OperationManifest): boolean => {
  if (manifest) {
    const correlationSetting = getOperationSettingFromManifest(manifest, 'correlation') as
      | OperationManifestSetting<CorrelationSettings>
      | undefined;
    return isSettingSupportedFromOperationManifest(correlationSetting, isTrigger);
  }
  return isTrigger;
};

const isDisableAsyncPatternSupported = (isTrigger: boolean, nodeType: string, manifest?: OperationManifest): boolean => {
  if (manifest && !equals(Constants.NODE.TYPE.OPEN_API_CONNECTION, nodeType)) {
    const operationOptionsSetting = getOperationSettingFromManifest(manifest, 'operationOptions') as
      | OperationManifestSetting<OperationOptions[]>
      | undefined;
    return isSettingSupportedFromOperationManifest(operationOptionsSetting, isTrigger) && operationOptionsSetting?.options
      ? operationOptionsSetting.options.indexOf(OperationOptions.DisableAsyncPattern) > -1
      : false;
  }
  const supportedTypes = [Constants.NODE.TYPE.API_CONNECTION, Constants.NODE.TYPE.HTTP];
  return !isTrigger && supportedTypes.indexOf(nodeType.toLowerCase()) > -1;
};

const getDisableAsyncPattern = (definition?: LogicAppsV2.OperationDefinition): boolean => {
  const operationOptions = definition && definition.operationOptions;
  return isOperationOptionSet(Constants.SETTINGS.OPERATION_OPTIONS.DISABLE_ASYNC, operationOptions);
};

const getDisableAutomaticDecompression = (
  isTrigger: boolean,
  nodeType: string,
  manifest?: OperationManifest,
  definition?: LogicAppsV2.OperationDefinition
): boolean | undefined => {
  const supported = isDisableAutomaticDecompressionSupported(isTrigger, nodeType, manifest);
  const operationOptions = definition && definition.operationOptions;
  return supported
    ? isOperationOptionSet(Constants.SETTINGS.OPERATION_OPTIONS.DISABLE_AUTOMATIC_DECOMPRESSION, operationOptions)
    : undefined;
};

const isDisableAutomaticDecompressionSupported = (isTrigger: boolean, nodeType: string, manifest?: OperationManifest): boolean => {
  if (manifest && !equals(Constants.NODE.TYPE.OPEN_API_CONNECTION, nodeType)) {
    const operationOptionsSetting = getOperationSettingFromManifest(manifest, 'operationOptions') as
      | OperationManifestSetting<OperationOptions[]>
      | undefined;
    return isSettingSupportedFromOperationManifest(operationOptionsSetting, isTrigger) && operationOptionsSetting?.options
      ? operationOptionsSetting.options.indexOf(OperationOptions.DisableAutomaticDecompression) > -1
      : false;
  }
  const supportedTypes = [Constants.NODE.TYPE.API_CONNECTION, Constants.NODE.TYPE.HTTP];

  return !isTrigger && supportedTypes.indexOf(nodeType.toLowerCase()) > -1;
};

const getSuppressWorkflowHeaders = (
  isTrigger: boolean,
  nodeType: string,
  manifest?: OperationManifest,
  definition?: LogicAppsV2.OperationDefinition
): boolean | undefined => {
  const supported = isSuppressWorkflowHeadersSupported(isTrigger, nodeType, manifest);
  const operationOptions = definition && definition.operationOptions;
  return supported ? isOperationOptionSet(Constants.SETTINGS.OPERATION_OPTIONS.SUPPRESS_WORKFLOW_HEADERS, operationOptions) : undefined;
};

const isSuppressWorkflowHeadersSupported = (isTrigger: boolean, nodeType: string, manifest?: OperationManifest): boolean => {
  if (manifest) {
    const operationOptionsSetting = getOperationSettingFromManifest(manifest, 'operationOptions') as
      | OperationManifestSetting<OperationOptions[]>
      | undefined;
    return isSettingSupportedFromOperationManifest(operationOptionsSetting, isTrigger) && operationOptionsSetting?.options
      ? operationOptionsSetting.options.indexOf(OperationOptions.SuppressWorkflowHeaders) > -1
      : false;
  }
  const supportedTypes = [Constants.NODE.TYPE.HTTP];

  return !isTrigger && supportedTypes.indexOf(nodeType.toLowerCase()) > -1;
};

const getSuppressWorkflowHeadersOnResponse = (definition?: LogicAppsV2.OperationDefinition): boolean | undefined => {
  const operationOptions = definition && definition.operationOptions;
  return isOperationOptionSet(Constants.SETTINGS.OPERATION_OPTIONS.SUPPRESS_WORKFLOW_HEADERS_ON_RESPONSE, operationOptions);
};

const isSuppressWorkflowHeadersOnResponseSupported = (isTrigger: boolean, manifest?: OperationManifest): boolean => {
  if (manifest) {
    const operationOptionsSetting = getOperationSettingFromManifest(manifest, 'operationOptions') as
      | OperationManifestSetting<OperationOptions[]>
      | undefined;
    return (
      isSettingSupportedFromOperationManifest(operationOptionsSetting, isTrigger) &&
      (operationOptionsSetting && operationOptionsSetting.options
        ? operationOptionsSetting.options.indexOf(OperationOptions.SuppressWorkflowHeadersOnResponse) > -1
        : false)
    );
  }
  return false;
};

const getRequestSchemaValidation = (definition?: LogicAppsV2.OperationDefinition): boolean | undefined => {
  const operationOptions = definition && definition.operationOptions;
  return definition !== undefined
    ? isOperationOptionSet(Constants.SETTINGS.OPERATION_OPTIONS.REQUEST_SCHEMA_VALIDATION, operationOptions)
    : undefined;
};

const isRequestSchemaValidationSupported = (isTrigger: boolean, manifest?: OperationManifest): boolean => {
  if (manifest) {
    const operationOptionsSetting = getOperationSettingFromManifest(manifest, 'operationOptions') as
      | OperationManifestSetting<OperationOptions[]>
      | undefined;
    return (
      isSettingSupportedFromOperationManifest(operationOptionsSetting, isTrigger) &&
      (operationOptionsSetting && operationOptionsSetting.options
        ? operationOptionsSetting.options.indexOf(OperationOptions.EnableSchemaValidation) > -1
        : false)
    );
  }

  return false;
};

const getConcurrency = (
  isTrigger: boolean,
  nodeType: string,
  manifest?: OperationManifest,
  definition?: LogicAppsV2.OperationDefinition
): ConcurrencySettings | undefined => {
  if (!isConcurrencySupported(isTrigger, nodeType, manifest)) {
    return undefined;
  }

  const operationOptions = definition && definition.operationOptions;

  if (!isTrigger) {
    if (isOperationOptionSet(Constants.SETTINGS.OPERATION_OPTIONS.SEQUENTIAL, operationOptions)) {