{"version":3,"file":"parseAmplifyOutputs.mjs","sources":["../../src/parseAmplifyOutputs.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport function isAmplifyOutputs(config) {\n    // version format initially will be '1' but is expected to be something like x.y where x is major and y minor version\n    const { version } = config;\n    if (!version) {\n        return false;\n    }\n    return version.startsWith('1');\n}\nfunction parseStorage(amplifyOutputsStorageProperties) {\n    if (!amplifyOutputsStorageProperties) {\n        return undefined;\n    }\n    const { bucket_name, aws_region, buckets } = amplifyOutputsStorageProperties;\n    return {\n        S3: {\n            bucket: bucket_name,\n            region: aws_region,\n            buckets: buckets && createBucketInfoMap(buckets),\n        },\n    };\n}\nfunction parseAuth(amplifyOutputsAuthProperties) {\n    if (!amplifyOutputsAuthProperties) {\n        return undefined;\n    }\n    const { user_pool_id, user_pool_client_id, identity_pool_id, password_policy, mfa_configuration, mfa_methods, unauthenticated_identities_enabled, oauth, username_attributes, standard_required_attributes, groups, } = amplifyOutputsAuthProperties;\n    const authConfig = {\n        Cognito: {\n            userPoolId: user_pool_id,\n            userPoolClientId: user_pool_client_id,\n            groups,\n        },\n    };\n    if (identity_pool_id) {\n        authConfig.Cognito = {\n            ...authConfig.Cognito,\n            identityPoolId: identity_pool_id,\n        };\n    }\n    if (password_policy) {\n        authConfig.Cognito.passwordFormat = {\n            requireLowercase: password_policy.require_lowercase,\n            requireNumbers: password_policy.require_numbers,\n            requireUppercase: password_policy.require_uppercase,\n            requireSpecialCharacters: password_policy.require_symbols,\n            minLength: password_policy.min_length ?? 6,\n        };\n    }\n    if (mfa_configuration) {\n        authConfig.Cognito.mfa = {\n            status: getMfaStatus(mfa_configuration),\n            smsEnabled: mfa_methods?.includes('SMS'),\n            totpEnabled: mfa_methods?.includes('TOTP'),\n        };\n    }\n    if (unauthenticated_identities_enabled) {\n        authConfig.Cognito.allowGuestAccess = unauthenticated_identities_enabled;\n    }\n    if (oauth) {\n        authConfig.Cognito.loginWith = {\n            oauth: {\n                domain: oauth.domain,\n                redirectSignIn: oauth.redirect_sign_in_uri,\n                redirectSignOut: oauth.redirect_sign_out_uri,\n                responseType: oauth.response_type === 'token' ? 'token' : 'code',\n                scopes: oauth.scopes,\n                providers: getOAuthProviders(oauth.identity_providers),\n            },\n        };\n    }\n    if (username_attributes) {\n        authConfig.Cognito.loginWith = {\n            ...authConfig.Cognito.loginWith,\n            email: username_attributes.includes('email'),\n            phone: username_attributes.includes('phone_number'),\n            // Signing in with a username is not currently supported in Gen2, this should always evaluate to false\n            username: username_attributes.includes('username'),\n        };\n    }\n    if (standard_required_attributes) {\n        authConfig.Cognito.userAttributes = standard_required_attributes.reduce((acc, curr) => ({ ...acc, [curr]: { required: true } }), {});\n    }\n    return authConfig;\n}\nexport function parseAnalytics(amplifyOutputsAnalyticsProperties) {\n    if (!amplifyOutputsAnalyticsProperties?.amazon_pinpoint) {\n        return undefined;\n    }\n    const { amazon_pinpoint } = amplifyOutputsAnalyticsProperties;\n    return {\n        Pinpoint: {\n            appId: amazon_pinpoint.app_id,\n            region: amazon_pinpoint.aws_region,\n        },\n    };\n}\nfunction parseGeo(amplifyOutputsAnalyticsProperties) {\n    if (!amplifyOutputsAnalyticsProperties) {\n        return undefined;\n    }\n    const { aws_region, geofence_collections, maps, search_indices } = amplifyOutputsAnalyticsProperties;\n    return {\n        LocationService: {\n            region: aws_region,\n            searchIndices: search_indices,\n            geofenceCollections: geofence_collections,\n            maps,\n        },\n    };\n}\nfunction parseData(amplifyOutputsDataProperties) {\n    if (!amplifyOutputsDataProperties) {\n        return undefined;\n    }\n    const { aws_region, default_authorization_type, url, api_key, model_introspection, } = amplifyOutputsDataProperties;\n    const GraphQL = {\n        endpoint: url,\n        defaultAuthMode: getGraphQLAuthMode(default_authorization_type),\n        region: aws_region,\n        apiKey: api_key,\n        modelIntrospection: model_introspection,\n    };\n    return {\n        GraphQL,\n    };\n}\nfunction parseCustom(amplifyOutputsCustomProperties) {\n    if (!amplifyOutputsCustomProperties?.events) {\n        return undefined;\n    }\n    const { url, aws_region, api_key, default_authorization_type } = amplifyOutputsCustomProperties.events;\n    const Events = {\n        endpoint: url,\n        defaultAuthMode: getGraphQLAuthMode(default_authorization_type),\n        region: aws_region,\n        apiKey: api_key,\n    };\n    return {\n        Events,\n    };\n}\nfunction parseNotifications(amplifyOutputsNotificationsProperties) {\n    if (!amplifyOutputsNotificationsProperties) {\n        return undefined;\n    }\n    const { aws_region, channels, amazon_pinpoint_app_id } = amplifyOutputsNotificationsProperties;\n    const hasInAppMessaging = channels.includes('IN_APP_MESSAGING');\n    const hasPushNotification = channels.includes('APNS') || channels.includes('FCM');\n    if (!(hasInAppMessaging || hasPushNotification)) {\n        return undefined;\n    }\n    // At this point, we know the Amplify outputs contains at least one supported channel\n    const notificationsConfig = {};\n    if (hasInAppMessaging) {\n        notificationsConfig.InAppMessaging = {\n            Pinpoint: {\n                appId: amazon_pinpoint_app_id,\n                region: aws_region,\n            },\n        };\n    }\n    if (hasPushNotification) {\n        notificationsConfig.PushNotification = {\n            Pinpoint: {\n                appId: amazon_pinpoint_app_id,\n                region: aws_region,\n            },\n        };\n    }\n    return notificationsConfig;\n}\nexport function parseAmplifyOutputs(amplifyOutputs) {\n    const resourcesConfig = {};\n    if (amplifyOutputs.storage) {\n        resourcesConfig.Storage = parseStorage(amplifyOutputs.storage);\n    }\n    if (amplifyOutputs.auth) {\n        resourcesConfig.Auth = parseAuth(amplifyOutputs.auth);\n    }\n    if (amplifyOutputs.analytics) {\n        resourcesConfig.Analytics = parseAnalytics(amplifyOutputs.analytics);\n    }\n    if (amplifyOutputs.geo) {\n        resourcesConfig.Geo = parseGeo(amplifyOutputs.geo);\n    }\n    if (amplifyOutputs.data) {\n        resourcesConfig.API = parseData(amplifyOutputs.data);\n    }\n    if (amplifyOutputs.custom) {\n        const customConfig = parseCustom(amplifyOutputs.custom);\n        if (customConfig && 'Events' in customConfig) {\n            resourcesConfig.API = { ...resourcesConfig.API, ...customConfig };\n        }\n    }\n    if (amplifyOutputs.notifications) {\n        resourcesConfig.Notifications = parseNotifications(amplifyOutputs.notifications);\n    }\n    return resourcesConfig;\n}\nconst authModeNames = {\n    AMAZON_COGNITO_USER_POOLS: 'userPool',\n    API_KEY: 'apiKey',\n    AWS_IAM: 'iam',\n    AWS_LAMBDA: 'lambda',\n    OPENID_CONNECT: 'oidc',\n};\nfunction getGraphQLAuthMode(authType) {\n    return authModeNames[authType];\n}\nconst providerNames = {\n    GOOGLE: 'Google',\n    LOGIN_WITH_AMAZON: 'Amazon',\n    FACEBOOK: 'Facebook',\n    SIGN_IN_WITH_APPLE: 'Apple',\n};\nfunction getOAuthProviders(providers = []) {\n    return providers.reduce((oAuthProviders, provider) => {\n        if (providerNames[provider] !== undefined) {\n            oAuthProviders.push(providerNames[provider]);\n        }\n        return oAuthProviders;\n    }, []);\n}\nfunction getMfaStatus(mfaConfiguration) {\n    if (mfaConfiguration === 'OPTIONAL')\n        return 'optional';\n    if (mfaConfiguration === 'REQUIRED')\n        return 'on';\n    return 'off';\n}\nfunction createBucketInfoMap(buckets) {\n    const mappedBuckets = {};\n    buckets.forEach(({ name, bucket_name: bucketName, aws_region: region, paths }) => {\n        if (name in mappedBuckets) {\n            throw new Error(`Duplicate friendly name found: ${name}. Name must be unique.`);\n        }\n        const sanitizedPaths = paths\n            ? Object.entries(paths).reduce((acc, [key, value]) => {\n                if (value !== undefined) {\n                    acc[key] = value;\n                }\n                return acc;\n            }, {})\n            : undefined;\n        mappedBuckets[name] = {\n            bucketName,\n            region,\n            paths: sanitizedPaths,\n        };\n    });\n    return mappedBuckets;\n}\n"],"names":[],"mappings":"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"}