"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.CfnUsageProfilePropsMixin = exports.CfnTableOptimizerPropsMixin = exports.CfnIntegrationResourcePropertyPropsMixin = exports.CfnIntegrationPropsMixin = exports.CfnIdentityCenterConfigurationPropsMixin = exports.CfnCustomEntityTypePropsMixin = exports.CfnCatalogPropsMixin = exports.CfnWorkflowPropsMixin = exports.CfnTriggerPropsMixin = exports.CfnTablePropsMixin = exports.CfnSecurityConfigurationPropsMixin = exports.CfnSchemaVersionMetadataPropsMixin = exports.CfnSchemaVersionPropsMixin = exports.CfnSchemaPropsMixin = exports.CfnRegistryPropsMixin = exports.CfnPartitionPropsMixin = exports.CfnMLTransformPropsMixin = exports.CfnJobPropsMixin = exports.CfnDevEndpointPropsMixin = exports.CfnDatabasePropsMixin = exports.CfnDataQualityRulesetPropsMixin = exports.CfnDataCatalogEncryptionSettingsPropsMixin = exports.CfnCrawlerPropsMixin = exports.CfnConnectionPropsMixin = exports.CfnClassifierPropsMixin = void 0;
const jsiiDeprecationWarnings = require("../../../.warnings.jsii.js");
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
/* eslint-disable @stylistic/max-len, eol-last */
const cdk = __importStar(require("aws-cdk-lib/core"));
const service = __importStar(require("aws-cdk-lib/aws-glue"));
/**
 * The `AWS::Glue::Classifier` resource creates an AWS Glue classifier that categorizes data sources and specifies schemas.
 *
 * For more information, see [Adding Classifiers to a Crawler](https://docs.aws.amazon.com/glue/latest/dg/add-classifier.html) and [Classifier Structure](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-classifiers.html#aws-glue-api-crawler-classifiers-Classifier) in the *AWS Glue Developer Guide* .
 *
 * @cloudformationResource AWS::Glue::Classifier
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-classifier.html
 */
class CfnClassifierPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnClassifierPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["csvClassifier", "grokClassifier", "jsonClassifier", "xmlClassifier"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::Classifier`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnClassifierMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnClassifierPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnClassifier.isCfnClassifier(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnClassifierPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnClassifierPropsMixin = CfnClassifierPropsMixin;
/**
 * The `AWS::Glue::Connection` resource specifies an AWS Glue connection to a data source.
 *
 * For more information, see [Adding a Connection to Your Data Store](https://docs.aws.amazon.com/glue/latest/dg/populate-add-connection.html) and [Connection Structure](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-connections.html#aws-glue-api-catalog-connections-Connection) in the *AWS Glue Developer Guide* .
 *
 * @cloudformationResource AWS::Glue::Connection
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-connection.html
 */
class CfnConnectionPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnConnectionPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["catalogId", "connectionInput"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::Connection`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnConnectionMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnConnectionPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnConnection.isCfnConnection(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnConnectionPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnConnectionPropsMixin = CfnConnectionPropsMixin;
/**
 * The `AWS::Glue::Crawler` resource specifies an AWS Glue crawler.
 *
 * For more information, see [Cataloging Tables with a Crawler](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) and [Crawler Structure](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-crawling.html#aws-glue-api-crawler-crawling-Crawler) in the *AWS Glue Developer Guide* .
 *
 * @cloudformationResource AWS::Glue::Crawler
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html
 */
class CfnCrawlerPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnCrawlerPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["classifiers", "configuration", "crawlerSecurityConfiguration", "databaseName", "description", "lakeFormationConfiguration", "name", "recrawlPolicy", "role", "schedule", "schemaChangePolicy", "tablePrefix", "tags", "targets"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::Crawler`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnCrawlerMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnCrawlerPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnCrawlerMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnCrawler.isCfnCrawler(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnCrawlerPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnCrawlerPropsMixin = CfnCrawlerPropsMixin;
// @ts-ignore TS6133
function flattenCfnCrawlerPropsMixinS3TargetProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        connectionName: (!props.connectionName ? undefined : props.connectionName),
        dlqEventQueueArn: (!props.dlqEventQueueArn ? undefined : cdk.getRefProperty(props.dlqEventQueueArn?.queueRef, 'queueArn') ?? cdk.ensureStringOrUndefined(props.dlqEventQueueArn, "dlqEventQueueArn", "sqs.IQueueRef | string")),
        eventQueueArn: (!props.eventQueueArn ? undefined : cdk.getRefProperty(props.eventQueueArn?.queueRef, 'queueArn') ?? cdk.ensureStringOrUndefined(props.eventQueueArn, "eventQueueArn", "sqs.IQueueRef | string")),
        exclusions: (!props.exclusions ? undefined : props.exclusions),
        path: (!props.path ? undefined : cdk.getRefProperty(props.path?.bucketRef, 'bucketName') ?? cdk.ensureStringOrUndefined(props.path, "path", "s3.IBucketRef | string")),
        sampleSize: (!props.sampleSize ? undefined : props.sampleSize)
    };
}
// @ts-ignore TS6133
function flattenCfnCrawlerPropsMixinDynamoDBTargetProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        path: (!props.path ? undefined : cdk.getRefProperty(props.path?.tableRef, 'tableName') ?? cdk.ensureStringOrUndefined(props.path, "path", "dynamodb.ITableRef | string")),
        scanAll: (!props.scanAll ? undefined : props.scanAll),
        scanRate: (!props.scanRate ? undefined : props.scanRate)
    };
}
// @ts-ignore TS6133
function flattenCfnCrawlerPropsMixinTargetsProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        catalogTargets: (!props.catalogTargets ? undefined : props.catalogTargets),
        deltaTargets: (!props.deltaTargets ? undefined : props.deltaTargets),
        dynamoDbTargets: (!props.dynamoDbTargets ? undefined : (cdk.isResolvableObject(props.dynamoDbTargets) ? props.dynamoDbTargets : (!props.dynamoDbTargets ? undefined : cdk.mapArrayInPlace(props.dynamoDbTargets, (item) => flattenCfnCrawlerPropsMixinDynamoDBTargetProperty(item))))),
        hudiTargets: (!props.hudiTargets ? undefined : props.hudiTargets),
        icebergTargets: (!props.icebergTargets ? undefined : props.icebergTargets),
        jdbcTargets: (!props.jdbcTargets ? undefined : props.jdbcTargets),
        mongoDbTargets: (!props.mongoDbTargets ? undefined : props.mongoDbTargets),
        s3Targets: (!props.s3Targets ? undefined : (cdk.isResolvableObject(props.s3Targets) ? props.s3Targets : (!props.s3Targets ? undefined : cdk.mapArrayInPlace(props.s3Targets, (item) => flattenCfnCrawlerPropsMixinS3TargetProperty(item)))))
    };
}
// @ts-ignore TS6133
function flattenCfnCrawlerMixinProps(props) {
    const ret = {};
    if ((props.databaseName !== undefined))
        ret.databaseName = cdk.getRefProperty(props.databaseName?.bucketRef, 'bucketName') ?? cdk.ensureStringOrUndefined(props.databaseName, "databaseName", "s3.IBucketRef | string");
    if ((props.role !== undefined))
        ret.role = cdk.getRefProperty(props.role?.roleRef, 'roleArn') ?? cdk.getRefProperty(props.role?.roleRef, 'roleName') ?? cdk.ensureStringOrUndefined(props.role, "role", "iam.IRoleRef | string");
    if ((props.targets !== undefined))
        ret.targets = flattenCfnCrawlerPropsMixinTargetsProperty(props.targets);
    return ret;
}
/**
 * Sets the security configuration for a specified catalog.
 *
 * After the configuration has been set, the specified encryption is applied to every catalog write thereafter.
 *
 * @cloudformationResource AWS::Glue::DataCatalogEncryptionSettings
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-datacatalogencryptionsettings.html
 */
class CfnDataCatalogEncryptionSettingsPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnDataCatalogEncryptionSettingsPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["catalogId", "dataCatalogEncryptionSettings"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::DataCatalogEncryptionSettings`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnDataCatalogEncryptionSettingsMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnDataCatalogEncryptionSettingsPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnDataCatalogEncryptionSettings.isCfnDataCatalogEncryptionSettings(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnDataCatalogEncryptionSettingsPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnDataCatalogEncryptionSettingsPropsMixin = CfnDataCatalogEncryptionSettingsPropsMixin;
/**
 * The `AWS::Glue::DataQualityRuleset` resource specifies a data quality ruleset with DQDL rules applied to a specified AWS Glue table.
 *
 * For more information, see AWS Glue Data Quality in the AWS Glue Developer Guide.
 *
 * @cloudformationResource AWS::Glue::DataQualityRuleset
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-dataqualityruleset.html
 */
class CfnDataQualityRulesetPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnDataQualityRulesetPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["clientToken", "description", "name", "ruleset", "tags", "targetTable"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::DataQualityRuleset`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnDataQualityRulesetMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnDataQualityRulesetPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnDataQualityRuleset.isCfnDataQualityRuleset(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnDataQualityRulesetPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnDataQualityRulesetPropsMixin = CfnDataQualityRulesetPropsMixin;
/**
 * The `AWS::Glue::Database` resource specifies a logical grouping of tables in AWS Glue .
 *
 * For more information, see [Defining a Database in Your Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/define-database.html) and [Database Structure](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-databases.html#aws-glue-api-catalog-databases-Database) in the *AWS Glue Developer Guide* .
 *
 * @cloudformationResource AWS::Glue::Database
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-database.html
 */
class CfnDatabasePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnDatabasePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["catalogId", "databaseInput", "databaseName"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::Database`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnDatabaseMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnDatabasePropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnDatabaseMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnDatabase.isCfnDatabase(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnDatabasePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnDatabasePropsMixin = CfnDatabasePropsMixin;
// @ts-ignore TS6133
function flattenCfnDatabasePropsMixinDatabaseInputProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        createTableDefaultPermissions: (!props.createTableDefaultPermissions ? undefined : props.createTableDefaultPermissions),
        description: (!props.description ? undefined : props.description),
        federatedDatabase: (!props.federatedDatabase ? undefined : props.federatedDatabase),
        locationUri: (!props.locationUri ? undefined : props.locationUri),
        name: (!props.name ? undefined : cdk.getRefProperty(props.name?.bucketRef, 'bucketName') ?? cdk.ensureStringOrUndefined(props.name, "name", "s3.IBucketRef | string")),
        parameters: (!props.parameters ? undefined : props.parameters),
        targetDatabase: (!props.targetDatabase ? undefined : props.targetDatabase)
    };
}
// @ts-ignore TS6133
function flattenCfnDatabaseMixinProps(props) {
    const ret = {};
    if ((props.databaseInput !== undefined))
        ret.databaseInput = flattenCfnDatabasePropsMixinDatabaseInputProperty(props.databaseInput);
    return ret;
}
/**
 * The `AWS::Glue::DevEndpoint` resource specifies a development endpoint where a developer can remotely debug ETL scripts for AWS Glue .
 *
 * For more information, see [DevEndpoint Structure](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-dev-endpoint.html#aws-glue-api-jobs-dev-endpoint-DevEndpoint) in the AWS Glue Developer Guide.
 *
 * @cloudformationResource AWS::Glue::DevEndpoint
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-devendpoint.html
 */
class CfnDevEndpointPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnDevEndpointPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["arguments", "endpointName", "extraJarsS3Path", "extraPythonLibsS3Path", "glueVersion", "numberOfNodes", "numberOfWorkers", "publicKey", "publicKeys", "roleArn", "securityConfiguration", "securityGroupIds", "subnetId", "tags", "workerType"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::DevEndpoint`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnDevEndpointMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnDevEndpointPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnDevEndpoint.isCfnDevEndpoint(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnDevEndpointPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnDevEndpointPropsMixin = CfnDevEndpointPropsMixin;
/**
 * The `AWS::Glue::Job` resource specifies an AWS Glue job in the data catalog.
 *
 * For more information, see [Adding Jobs in AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-job.html) and [Job Structure](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-Job) in the *AWS Glue Developer Guide.*
 *
 * @cloudformationResource AWS::Glue::Job
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-job.html
 */
class CfnJobPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnJobPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["allocatedCapacity", "command", "connections", "defaultArguments", "description", "executionClass", "executionProperty", "glueVersion", "jobMode", "jobRunQueuingEnabled", "logUri", "maintenanceWindow", "maxCapacity", "maxRetries", "name", "nonOverridableArguments", "notificationProperty", "numberOfWorkers", "role", "securityConfiguration", "tags", "timeout", "workerType"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::Job`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnJobMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnJobPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnJobMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnJob.isCfnJob(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnJobPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnJobPropsMixin = CfnJobPropsMixin;
// @ts-ignore TS6133
function flattenCfnJobMixinProps(props) {
    const ret = {};
    if ((props.role !== undefined))
        ret.role = cdk.getRefProperty(props.role?.roleRef, 'roleArn') ?? cdk.getRefProperty(props.role?.roleRef, 'roleName') ?? cdk.ensureStringOrUndefined(props.role, "role", "iam.IRoleRef | string");
    return ret;
}
/**
 * The AWS::Glue::MLTransform is an AWS Glue resource type that manages machine learning transforms.
 *
 * @cloudformationResource AWS::Glue::MLTransform
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-mltransform.html
 */
class CfnMLTransformPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnMLTransformPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["description", "glueVersion", "inputRecordTables", "maxCapacity", "maxRetries", "name", "numberOfWorkers", "role", "tags", "timeout", "transformEncryption", "transformParameters", "workerType"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::MLTransform`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnMLTransformMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnMLTransformPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnMLTransform.isCfnMLTransform(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnMLTransformPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnMLTransformPropsMixin = CfnMLTransformPropsMixin;
/**
 * The `AWS::Glue::Partition` resource creates an AWS Glue partition, which represents a slice of table data.
 *
 * For more information, see [CreatePartition Action](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-partitions.html#aws-glue-api-catalog-partitions-CreatePartition) and [Partition Structure](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-partitions.html#aws-glue-api-catalog-partitions-Partition) in the *AWS Glue Developer Guide* .
 *
 * @cloudformationResource AWS::Glue::Partition
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-partition.html
 */
class CfnPartitionPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnPartitionPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["catalogId", "databaseName", "partitionInput", "tableName"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::Partition`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnPartitionMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnPartitionPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnPartition.isCfnPartition(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnPartitionPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnPartitionPropsMixin = CfnPartitionPropsMixin;
/**
 * The AWS::Glue::Registry is an AWS Glue resource type that manages registries of schemas in the AWS Glue Schema Registry.
 *
 * @cloudformationResource AWS::Glue::Registry
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-registry.html
 */
class CfnRegistryPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnRegistryPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["description", "name", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::Registry`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnRegistryMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnRegistryPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnRegistry.isCfnRegistry(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnRegistryPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnRegistryPropsMixin = CfnRegistryPropsMixin;
/**
 * The `AWS::Glue::Schema` is an AWS Glue resource type that manages schemas in the AWS Glue Schema Registry.
 *
 * @cloudformationResource AWS::Glue::Schema
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schema.html
 */
class CfnSchemaPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnSchemaPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["checkpointVersion", "compatibility", "dataFormat", "description", "name", "registry", "schemaDefinition", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::Schema`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnSchemaMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnSchemaPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnSchemaMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnSchema.isCfnSchema(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnSchemaPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnSchemaPropsMixin = CfnSchemaPropsMixin;
// @ts-ignore TS6133
function flattenCfnSchemaPropsMixinRegistryProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        arn: (!props.arn ? undefined : cdk.getRefProperty(props.arn?.registryRef, 'registryArn') ?? cdk.ensureStringOrUndefined(props.arn, "arn", "glue.IRegistryRef | string")),
        name: (!props.name ? undefined : props.name)
    };
}
// @ts-ignore TS6133
function flattenCfnSchemaMixinProps(props) {
    const ret = {};
    if ((props.registry !== undefined))
        ret.registry = flattenCfnSchemaPropsMixinRegistryProperty(props.registry);
    return ret;
}
/**
 * The `AWS::Glue::SchemaVersion` is an AWS Glue resource type that manages schema versions of schemas in the AWS Glue Schema Registry.
 *
 * @cloudformationResource AWS::Glue::SchemaVersion
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schemaversion.html
 */
class CfnSchemaVersionPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnSchemaVersionPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["schema", "schemaDefinition"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::SchemaVersion`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnSchemaVersionMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnSchemaVersionPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnSchemaVersionMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnSchemaVersion.isCfnSchemaVersion(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnSchemaVersionPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnSchemaVersionPropsMixin = CfnSchemaVersionPropsMixin;
// @ts-ignore TS6133
function flattenCfnSchemaVersionPropsMixinSchemaProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        registryName: (!props.registryName ? undefined : props.registryName),
        schemaArn: (!props.schemaArn ? undefined : cdk.getRefProperty(props.schemaArn?.schemaRef, 'schemaArn') ?? cdk.ensureStringOrUndefined(props.schemaArn, "schemaArn", "glue.ISchemaRef | string")),
        schemaName: (!props.schemaName ? undefined : props.schemaName)
    };
}
// @ts-ignore TS6133
function flattenCfnSchemaVersionMixinProps(props) {
    const ret = {};
    if ((props.schema !== undefined))
        ret.schema = flattenCfnSchemaVersionPropsMixinSchemaProperty(props.schema);
    return ret;
}
/**
 * The `AWS::Glue::SchemaVersionMetadata` is an AWS Glue resource type that defines the metadata key-value pairs for a schema version in AWS Glue Schema Registry.
 *
 * @cloudformationResource AWS::Glue::SchemaVersionMetadata
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schemaversionmetadata.html
 */
class CfnSchemaVersionMetadataPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnSchemaVersionMetadataPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["key", "schemaVersionId", "value"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::SchemaVersionMetadata`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnSchemaVersionMetadataMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnSchemaVersionMetadataPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnSchemaVersionMetadataMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnSchemaVersionMetadata.isCfnSchemaVersionMetadata(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnSchemaVersionMetadataPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnSchemaVersionMetadataPropsMixin = CfnSchemaVersionMetadataPropsMixin;
// @ts-ignore TS6133
function flattenCfnSchemaVersionMetadataMixinProps(props) {
    const ret = {};
    if ((props.schemaVersionId !== undefined))
        ret.schemaVersionId = cdk.getRefProperty(props.schemaVersionId?.schemaVersionRef, 'versionId') ?? cdk.ensureStringOrUndefined(props.schemaVersionId, "schemaVersionId", "glue.ISchemaVersionRef | string");
    return ret;
}
/**
 * Creates a new security configuration.
 *
 * A security configuration is a set of security properties that can be used by AWS Glue . You can use a security configuration to encrypt data at rest. For information about using security configurations in AWS Glue , see [Encrypting Data Written by Crawlers, Jobs, and Development Endpoints](https://docs.aws.amazon.com/glue/latest/dg/encryption-security-configuration.html) .
 *
 * @cloudformationResource AWS::Glue::SecurityConfiguration
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-securityconfiguration.html
 */
class CfnSecurityConfigurationPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnSecurityConfigurationPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["encryptionConfiguration", "name"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::SecurityConfiguration`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnSecurityConfigurationMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnSecurityConfigurationPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnSecurityConfiguration.isCfnSecurityConfiguration(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnSecurityConfigurationPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnSecurityConfigurationPropsMixin = CfnSecurityConfigurationPropsMixin;
/**
 * The `AWS::Glue::Table` resource specifies tabular data in the AWS Glue data catalog.
 *
 * For more information, see [Defining Tables in the AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html) and [Table Structure](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-Table) in the *AWS Glue Developer Guide* .
 *
 * @cloudformationResource AWS::Glue::Table
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-table.html
 */
class CfnTablePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnTablePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["catalogId", "databaseName", "name", "openTableFormatInput", "tableInput"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::Table`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnTableMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnTablePropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnTable.isCfnTable(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnTablePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnTablePropsMixin = CfnTablePropsMixin;
/**
 * The `AWS::Glue::Trigger` resource specifies triggers that run AWS Glue jobs.
 *
 * For more information, see [Triggering Jobs in AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/trigger-job.html) and [Trigger Structure](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-trigger.html#aws-glue-api-jobs-trigger-Trigger) in the *AWS Glue Developer Guide* .
 *
 * @cloudformationResource AWS::Glue::Trigger
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-trigger.html
 */
class CfnTriggerPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnTriggerPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["actions", "description", "eventBatchingCondition", "name", "predicate", "schedule", "startOnCreation", "tags", "type", "workflowName"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::Trigger`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnTriggerMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnTriggerPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnTrigger.isCfnTrigger(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnTriggerPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnTriggerPropsMixin = CfnTriggerPropsMixin;
/**
 * The `AWS::Glue::Workflow` is an AWS Glue resource type that manages AWS Glue workflows.
 *
 * A workflow is a container for a set of related jobs, crawlers, and triggers in AWS Glue . Using a workflow, you can design a complex multi-job extract, transform, and load (ETL) activity that AWS Glue can execute and track as single entity.
 *
 * @cloudformationResource AWS::Glue::Workflow
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-workflow.html
 */
class CfnWorkflowPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnWorkflowPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["defaultRunProperties", "description", "maxConcurrentRuns", "name", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::Workflow`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnWorkflowMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnWorkflowPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnWorkflow.isCfnWorkflow(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnWorkflowPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnWorkflowPropsMixin = CfnWorkflowPropsMixin;
/**
 * Creates a catalog in the Glue Data Catalog.
 *
 * @cloudformationResource AWS::Glue::Catalog
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-catalog.html
 */
class CfnCatalogPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnCatalogPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["allowFullTableExternalDataAccess", "catalogProperties", "createDatabaseDefaultPermissions", "createTableDefaultPermissions", "description", "federatedCatalog", "name", "overwriteChildResourcePermissionsWithDefault", "parameters", "tags", "targetRedshiftCatalog"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::Catalog`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnCatalogMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnCatalogPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnCatalog.isCfnCatalog(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnCatalogPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnCatalogPropsMixin = CfnCatalogPropsMixin;
/**
 * Creates a custom pattern that is used to detect sensitive data across the columns and rows of your structured data.
 *
 * Each custom pattern you create specifies a regular expression and an optional list of context words. If no context words are passed only a regular expression is checked.
 *
 * @cloudformationResource AWS::Glue::CustomEntityType
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-customentitytype.html
 */
class CfnCustomEntityTypePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnCustomEntityTypePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["contextWords", "name", "regexString", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::CustomEntityType`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnCustomEntityTypeMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnCustomEntityTypePropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnCustomEntityType.isCfnCustomEntityType(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnCustomEntityTypePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnCustomEntityTypePropsMixin = CfnCustomEntityTypePropsMixin;
/**
 * Creates a new AWS Glue Identity Center configuration to enable integration between AWS Glue and AWS IAM Identity Center for authentication and authorization.
 *
 * @cloudformationResource AWS::Glue::IdentityCenterConfiguration
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-identitycenterconfiguration.html
 */
class CfnIdentityCenterConfigurationPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnIdentityCenterConfigurationPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["instanceArn", "scopes", "userBackgroundSessionsEnabled"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::IdentityCenterConfiguration`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnIdentityCenterConfigurationMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnIdentityCenterConfigurationPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnIdentityCenterConfiguration.isCfnIdentityCenterConfiguration(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnIdentityCenterConfigurationPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnIdentityCenterConfigurationPropsMixin = CfnIdentityCenterConfigurationPropsMixin;
/**
 * The `AWS::Glue::Integration` resource specifies an AWS Glue zero-ETL integration from a data source to a target.
 *
 * For more information, see [zero-ETL integration supported by AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/zero-etl-using.html) and [integration structure](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-integrations.html) in the AWS Glue developer guide.
 *
 * @cloudformationResource AWS::Glue::Integration
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-integration.html
 */
class CfnIntegrationPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnIntegrationPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["additionalEncryptionContext", "dataFilter", "description", "integrationConfig", "integrationName", "kmsKeyId", "sourceArn", "tags", "targetArn"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::Integration`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnIntegrationMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnIntegrationPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnIntegration.isCfnIntegration(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnIntegrationPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnIntegrationPropsMixin = CfnIntegrationPropsMixin;
/**
 * The `AWS::Glue::IntegrationResourceProperty` resource type can be used to setup `ResourceProperty` of the AWS Glue connection (for the SaaS source), DynamoDB Database (for DynamoDB source), or AWS Glue database ARN (for the target).
 *
 * ResourceProperty is used to define the properties requires to setup the integration, including the role to access the connection or database, KMS keys, event bus for event notifications and VPC connection. To set both source and target properties the same API needs to be invoked twice, once with the AWS Glue connection ARN as ResourceArn with SourceProcessingProperties and next, with the AWS Glue database ARN as ResourceArn with TargetProcessingProperties respectively.
 *
 * @cloudformationResource AWS::Glue::IntegrationResourceProperty
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-integrationresourceproperty.html
 */
class CfnIntegrationResourcePropertyPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnIntegrationResourcePropertyPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["resourceArn", "sourceProcessingProperties", "tags", "targetProcessingProperties"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::IntegrationResourceProperty`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnIntegrationResourcePropertyMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnIntegrationResourcePropertyPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnIntegrationResourceProperty.isCfnIntegrationResourceProperty(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnIntegrationResourcePropertyPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnIntegrationResourcePropertyPropsMixin = CfnIntegrationResourcePropertyPropsMixin;
/**
 * An AWS Glue resource for enabling table optimizers to improve read performance for open table formats.
 *
 * @cloudformationResource AWS::Glue::TableOptimizer
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-tableoptimizer.html
 */
class CfnTableOptimizerPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnTableOptimizerPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["catalogId", "databaseName", "tableName", "tableOptimizerConfiguration", "type"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::TableOptimizer`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnTableOptimizerMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnTableOptimizerPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnTableOptimizer.isCfnTableOptimizer(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnTableOptimizerPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnTableOptimizerPropsMixin = CfnTableOptimizerPropsMixin;
/**
 * Creates an AWS Glue usage profile.
 *
 * @cloudformationResource AWS::Glue::UsageProfile
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-usageprofile.html
 */
class CfnUsageProfilePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_glue.CfnUsageProfilePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["configuration", "description", "name", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Glue::UsageProfile`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_glue_CfnUsageProfileMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnUsageProfilePropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnUsageProfile.isCfnUsageProfile(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnUsageProfilePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnUsageProfilePropsMixin = CfnUsageProfilePropsMixin;
