UNPKG

@aws-amplify/core

Version:

Core category of aws-amplify

80 lines (78 loc) • 2.41 kB
'use strict'; // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 Object.defineProperty(exports, "__esModule", { value: true }); exports.createConfigurationBuilder = createConfigurationBuilder; const parseAmplifyConfig_1 = require("../utils/parseAmplifyConfig"); const deepMerge_1 = require("../utils/deepMerge"); /** * Creates a configuration builder for constructing `ResourcesConfig` objects * programmatically. * * @example * ```ts * import outputs from './amplify_outputs.json'; * * const config = createConfiguration({ from: outputs }) * .add('Storage', { S3: { bucket: 'my-bucket', region: 'us-east-1' } }) * .build(); * * Amplify.configure(config); * ``` */ function createConfigurationBuilder(options) { const config = {}; function mergeFrom(seed) { const resolved = 'build' in seed && typeof seed.build === 'function' ? seed.build() : (0, parseAmplifyConfig_1.parseAmplifyConfig)(seed); Object.assign(config, resolved); } if (options?.from) { mergeFrom(options.from); } const builder = { from(existing) { mergeFrom(existing); return builder; }, add(category, value) { config[category] = value; return builder; }, patch(category, value) { const existing = config[category]; config[category] = (0, deepMerge_1.deepMerge)(existing ?? {}, value); return builder; }, auth(value) { return builder.add('Auth', value); }, storage(value) { return builder.add('Storage', value); }, api(value) { return builder.add('API', value); }, analytics(value) { return builder.add('Analytics', value); }, geo(value) { return builder.add('Geo', value); }, notifications(value) { return builder.add('Notifications', value); }, interactions(value) { return builder.add('Interactions', value); }, predictions(value) { return builder.add('Predictions', value); }, build() { return Object.freeze({ ...config }); }, }; return builder; } //# sourceMappingURL=configurationBuilder.js.map