aws-amplify
Version:
AWS Amplify is a JavaScript library for Frontend and mobile developers building cloud-enabled applications.
43 lines (42 loc) • 2.17 kB
TypeScript
import { AmplifyContext, LibraryOptions, ResourcesConfig } from '@aws-amplify/core';
import { AmplifyOutputsUnknown, LegacyConfig } from '@aws-amplify/core/internals/utils';
/**
* Creates a local, branded {@link AmplifyContext} from the given resource
* configuration.
*
* Unlike `Amplify.configure()`, the returned context is **not** set as the
* global context and no Hub events are dispatched. Category APIs that receive
* this context (as their first positional argument) will use it instead of the
* global one, enabling per-request context injection in server-side /
* multi-tenant scenarios.
*
* This is the `aws-amplify`-level wrapper around
* {@link createCoreAmplifyContext | `@aws-amplify/core`'s `createAmplifyContext`}.
* The core factory intentionally does **not** inject default Cognito providers
* (it sits below `@aws-amplify/auth` in the dependency graph); this wrapper
* closes that gap by resolving and injecting **factory-style, per-context**
* Cognito token/credentials providers when the caller does not supply their own.
* Because each call builds fresh provider instances, contexts created here do
* **not** share the process-wide singleton providers used by
* `Amplify.configure()` — two contexts remain isolated from one another.
*
* Storage behaviour mirrors `Amplify.configure()`: tokens are persisted to
* `localStorage` by default, or to cookies when `{ ssr: true }` is set.
*
* @param resourceConfig - Back-end resource configuration (typed config,
* legacy `aws-exports`, or Gen2 `amplify_outputs`).
* @param libraryOptions - Optional library options (e.g. Auth token/credentials
* providers, `ssr`).
* @returns A branded, frozen {@link AmplifyContext}.
*
* @example
* ```ts
* import { createAmplifyContext } from 'aws-amplify';
* import outputs from './amplify_outputs.json';
*
* const ctx = createAmplifyContext(outputs);
* // Pass ctx explicitly to category APIs:
* await signIn(ctx, { username, password });
* ```
*/
export declare function createAmplifyContext(resourceConfig: ResourcesConfig | LegacyConfig | AmplifyOutputsUnknown, libraryOptions?: LibraryOptions): AmplifyContext;