@aws-amplify/core
Version:
Core category of aws-amplify
1 lines • 16.4 kB
Source Map (JSON)
{"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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"}