_detectDataTypes(data) {
        const supportedTypes = [
            'email',
            'name',
            'note',
            'subscribed_to_emails',
            'complimentary_plan',
            'stripe_customer_id',
            'labels',
            'created_at'
        ];

        if (this.feature.importMemberTier) {
            supportedTypes.push('import_tier');
        }

        const autoDetectedTypes = [
            'email'
        ];

        let mapping = {};
        let i = 0;
        // looping through all sampled data until needed data types are detected
        while (i <= (data.length - 1)) {
            if (mapping.email && mapping.stripe_customer_id) {
                break;
            }

            let entry = data[i];
            for (const [key, value] of Object.entries(entry)) {
                if (!mapping.email && validator.isEmail(value)) {
                    mapping.email = key;
                    continue;
                }

                if (!mapping.name && /name/.test(key)) {
                    mapping.name = key;
                    continue;
                }

                if (!mapping[key] && supportedTypes.includes(key) && !(autoDetectedTypes.includes(key))) {
                    mapping[key] = key;
                }
            }

            i += 1;
        }

        return mapping;
    }
Detects supported data types and auto-detects following needed for validation: email

Returned "mapping" object contains mappings that could be accepted by the API
to map validated types.
@param {Array} data sampled data containing non empty values