Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 17 additions & 35 deletions Amplify/Core/Configuration/AmplifyOutputsData.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,15 @@ import Foundation

/// Represents Amplify's Gen2 configuration for all categories intended to be used in an application.
///
/// Currently supports schema version `1` of the `amplify_outputs.json` format.
///
/// See: [Amplify.configure](x-source-tag://Amplify.configure)
///
/// - Tag: AmplifyOutputs
///
@_spi(InternalAmplifyConfiguration)
public struct AmplifyOutputsData: Codable {
public let version: String
static let currentVersion = "1"
let version: String
Comment thread
harsh62 marked this conversation as resolved.
public let analytics: Analytics?
public let auth: Auth?
public let data: DataCategory?
Expand All @@ -29,7 +31,6 @@ public struct AmplifyOutputsData: Codable {
public let storage: Storage?
public let custom: CustomOutput?

@_spi(InternalAmplifyConfiguration)
public struct Analytics: Codable {
public let amazonPinpoint: AmazonPinpoint?

Expand All @@ -39,7 +40,6 @@ public struct AmplifyOutputsData: Codable {
}
}

@_spi(InternalAmplifyConfiguration)
public struct Auth: Codable {
public let awsRegion: AWSRegion
public let userPoolId: String
Expand All @@ -54,7 +54,6 @@ public struct AmplifyOutputsData: Codable {
public let mfaConfiguration: String?
public let mfaMethods: [String]?

@_spi(InternalAmplifyConfiguration)
public struct PasswordPolicy: Codable {
Comment thread
harsh62 marked this conversation as resolved.
public let minLength: UInt
public let requireNumbers: Bool
Expand All @@ -63,7 +62,6 @@ public struct AmplifyOutputsData: Codable {
public let requireSymbols: Bool
}

@_spi(InternalAmplifyConfiguration)
public struct OAuth: Codable {
public let identityProviders: [String]
public let domain: String
Expand All @@ -73,19 +71,17 @@ public struct AmplifyOutputsData: Codable {
public let responseType: String
}

@_spi(InternalAmplifyConfiguration)
public enum UsernameAttributes: String, Codable {
case email
case phoneNumber = "phone_number"
}

@_spi(InternalAmplifyConfiguration)
public enum UserVerificationType: String, Codable {
case email
case phoneNumber = "phone_number"
}

init(
public init(
awsRegion: AWSRegion,
userPoolId: String,
userPoolClientId: String,
Expand Down Expand Up @@ -115,7 +111,6 @@ public struct AmplifyOutputsData: Codable {

}

@_spi(InternalAmplifyConfiguration)
public struct DataCategory: Codable {
public let awsRegion: AWSRegion
public let url: String
Expand All @@ -125,38 +120,32 @@ public struct AmplifyOutputsData: Codable {
public let authorizationTypes: [AWSAppSyncAuthorizationType]
}

@_spi(InternalAmplifyConfiguration)
public struct Geo: Codable {
public let awsRegion: AWSRegion
public let maps: Maps?
public let searchIndices: SearchIndices?
public let geofenceCollections: GeofenceCollections?

@_spi(InternalAmplifyConfiguration)
public struct Maps: Codable {
public let items: [String: AmazonLocationServiceConfig]
public let `default`: String

@_spi(InternalAmplifyConfiguration)
public struct AmazonLocationServiceConfig: Codable {
public let style: String
}
}

@_spi(InternalAmplifyConfiguration)
public struct SearchIndices: Codable {
public let items: [String]
public let `default`: String
}

@_spi(InternalAmplifyConfiguration)
public struct GeofenceCollections: Codable {
public let items: [String]
public let `default`: String
}

// Internal init used for testing
init(
public init(
awsRegion: AWSRegion,
maps: Maps? = nil,
searchIndices: SearchIndices? = nil,
Expand All @@ -169,28 +158,30 @@ public struct AmplifyOutputsData: Codable {
}
}

@_spi(InternalAmplifyConfiguration)
public struct Notifications: Codable {
public let awsRegion: String
public let amazonPinpointAppId: String
public let channels: [AmazonPinpointChannelType]
}

@_spi(InternalAmplifyConfiguration)
public struct Storage: Codable {
public let awsRegion: AWSRegion
public let bucketName: String
public let buckets: [Bucket]?

@_spi(InternalAmplifyConfiguration)
public struct Bucket: Codable {
public let name: String
public let bucketName: String
public let awsRegion: AWSRegion

public init(name: String, bucketName: String, awsRegion: AWSRegion) {
self.name = name
self.bucketName = bucketName
self.awsRegion = awsRegion
}
}

// Internal init used for testing
init(
public init(
awsRegion: AWSRegion,
bucketName: String,
buckets: [Bucket]? = nil
Expand All @@ -201,13 +192,10 @@ public struct AmplifyOutputsData: Codable {
}
}

@_spi(InternalAmplifyConfiguration)
public struct CustomOutput: Codable {}

@_spi(InternalAmplifyConfiguration)
public typealias AWSRegion = String

@_spi(InternalAmplifyConfiguration)
public enum AmazonCognitoStandardAttributes: String, Codable, CodingKeyRepresentable {
case address
case birthdate
Expand All @@ -229,7 +217,6 @@ public struct AmplifyOutputsData: Codable {
case zoneinfo
}

@_spi(InternalAmplifyConfiguration)
public enum AWSAppSyncAuthorizationType: String, Codable {
case amazonCognitoUserPools = "AMAZON_COGNITO_USER_POOLS"
case apiKey = "API_KEY"
Expand All @@ -238,7 +225,6 @@ public struct AmplifyOutputsData: Codable {
case openIDConnect = "OPENID_CONNECT"
}

@_spi(InternalAmplifyConfiguration)
public enum AmazonPinpointChannelType: String, Codable {
case inAppMessaging = "IN_APP_MESSAGING"
case fcm = "FCM"
Expand All @@ -247,9 +233,7 @@ public struct AmplifyOutputsData: Codable {
case sms = "SMS"
}

// Internal init used for testing
init(
version: String = "",
public init(
analytics: Analytics? = nil,
auth: Auth? = nil,
data: DataCategory? = nil,
Expand All @@ -258,7 +242,7 @@ public struct AmplifyOutputsData: Codable {
storage: Storage? = nil,
custom: CustomOutput? = nil
) {
self.version = version
self.version = AmplifyOutputsData.currentVersion
self.analytics = analytics
self.auth = auth
self.data = data
Expand All @@ -276,13 +260,12 @@ public struct AmplifyOutputsData: Codable {
public struct AmplifyOutputs: @unchecked Sendable {

/// A closure that resolves the `AmplifyOutputsData` configuration
@_spi(InternalAmplifyConfiguration)
public let resolveConfiguration: () throws -> AmplifyOutputsData

/// Resolves configuration with `amplify_outputs.json` in the main bundle.
public static let amplifyOutputs: AmplifyOutputs = .init {
try AmplifyOutputsData(bundle: Bundle.main, resource: "amplify_outputs")
}
try AmplifyOutputsData(bundle: Bundle.main, resource: "amplify_outputs")
}

/// Resolves configuration with a data object, from the contents of an `amplify_outputs.json` file.
public static func data(_ data: Data) -> AmplifyOutputs {
Expand Down Expand Up @@ -336,7 +319,6 @@ public extension Amplify {
/// - Parameter configuration: The AmplifyOutputsData object
///
/// - Tag: Amplify.configure
@_spi(InternalAmplifyConfiguration)
static func configure(_ configuration: AmplifyOutputsData) throws {
// Always configure logging first since Auth dependings on logging
try configure(CategoryType.logging.category, using: configuration)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
// SPDX-License-Identifier: Apache-2.0
//

@_spi(InternalAmplifyConfiguration) import Amplify
import Amplify
import AwsCommonRuntimeKit
import AWSPluginsCore
import InternalAmplifyCredentials
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
// SPDX-License-Identifier: Apache-2.0
//

@_spi(InternalAmplifyConfiguration) import Amplify
import Amplify
import AWSPluginsCore
import Foundation

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
// SPDX-License-Identifier: Apache-2.0
//

@_spi(InternalAmplifyConfiguration) import Amplify
import Amplify
import AWSPluginsCore
import Foundation
import InternalAmplifyCredentials
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import XCTest
@testable import AWSAPIPlugin
@_spi(InternalAmplifyConfiguration) @testable import Amplify
@testable import Amplify
#if os(watchOS)
@testable import APIWatchApp
#else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import AWSCognitoAuthPlugin
import XCTest
@testable import AWSAPIPlugin
@_spi(InternalAmplifyConfiguration) @testable import Amplify
@testable import Amplify
@testable import APIHostApp
@testable import AWSPluginsCore

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
//

import Foundation
@_spi(InternalAmplifyConfiguration) @testable import Amplify
@testable import Amplify

class TestConfigHelper {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import XCTest

@_spi(InternalAmplifyConfiguration) @testable import Amplify
@testable import Amplify
@testable import AWSAPIPlugin

class AWSAPICategoryPluginConfigureTests: AWSAPICategoryPluginTestBase {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
// SPDX-License-Identifier: Apache-2.0
//

@_spi(InternalAmplifyConfiguration) import Amplify
import Amplify
import AWSPluginsCore
import Foundation
@_spi(InternalAWSPinpoint) import InternalAWSPinpoint
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
// SPDX-License-Identifier: Apache-2.0
//

@_spi(InternalAmplifyConfiguration) @preconcurrency import Amplify
@preconcurrency import Amplify
import AWSClientRuntime
import AWSPinpoint
import AWSPinpoint
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
//

import XCTest
@testable @_spi(InternalAmplifyConfiguration) import Amplify
@testable import Amplify
@testable import AmplifyTestCommon
@testable import AWSPinpointAnalyticsPlugin
@_spi(InternalAWSPinpoint) @testable import InternalAWSPinpoint
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
//

import XCTest
@testable @_spi(InternalAmplifyConfiguration) import Amplify
@testable import Amplify
@testable import AWSPinpointAnalyticsPlugin
@_spi(InternalAWSPinpoint) @testable import InternalAWSPinpoint

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
//

import Foundation
@_spi(InternalAmplifyConfiguration) import Amplify
import Amplify
import AWSClientRuntime
import AWSCognitoIdentity
import AWSCognitoIdentityProvider
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ public final class AWSCognitoAuthPlugin: AWSCognitoAuthPluginBehavior {
/// The user secure storage preferences for access group
let secureStoragePreferences: AWSCognitoSecureStoragePreferences?

@_spi(InternalAmplifyConfiguration)
public internal(set) var jsonConfiguration: JSONValue?

/// The unique key of the plugin within the auth category.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
//

import ClientRuntime
@_spi(InternalAmplifyConfiguration) import Amplify
import Amplify
import SmithyHTTPAPI

struct UserPoolConfigurationData: Equatable {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
//

import Foundation
@_spi(InternalAmplifyConfiguration) import Amplify
import Amplify

struct ConfigurationHelper {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
//

import XCTest
@_spi(InternalAmplifyConfiguration) @testable import Amplify
@testable import Amplify
@testable import AWSCognitoAuthPlugin

class AWSCognitoAuthPluginAmplifyOutputsConfigTests: XCTestCase {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
//

import XCTest
@_spi(InternalAmplifyConfiguration) @testable import Amplify
@testable import Amplify
@testable import AWSCognitoAuthPlugin

final class ConfigurationHelperTests: XCTestCase {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import AWSCognitoAuthPlugin
import XCTest
@_spi(InternalAmplifyConfiguration) @testable import Amplify
@testable import Amplify

private let internalTestDomain = "@amplify-swift-gamma.awsapps.com"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
//

import Foundation
@_spi(InternalAmplifyConfiguration) import Amplify
import Amplify


/// Hold necessary AWS AppSync configuration values to interact with the AppSync API
Expand Down
Loading
Loading