@aws-amplify/core
Version:
Core category of aws-amplify
45 lines (41 loc) • 1.45 kB
text/typescript
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
/**
* Maps a per-context token provider object to its write-capable orchestrator.
*
* The public `TokenProvider` contract is read-only (`getTokens` only), so the
* write side of a per-context provider cannot be hung off the provider itself
* without expanding the public surface. This registry keeps that association
* Amplify-owned and out of any public type.
*
* Weak keys so entries are GC'd with the context/provider. Values are kept
* opaque (`unknown`) so core carries no dependency on auth's orchestrator type;
* the reader supplies the concrete type at the call site.
*
* @internal
*/
const contextTokenOrchestrators = new WeakMap<object, unknown>();
/**
* Associates a per-context token provider with its write-capable orchestrator.
*
* @internal
*/
export const registerContextTokenOrchestrator = (
provider: object,
orchestrator: object,
): void => {
contextTokenOrchestrators.set(provider, orchestrator);
};
/**
* Returns the orchestrator registered for the given token provider, or
* `undefined` when the provider is absent or was never registered (the global
* `Amplify.configure()` path).
*
* @internal
*/
export const getContextTokenOrchestrator = <T = unknown>(
provider?: object,
): T | undefined =>
provider
? (contextTokenOrchestrators.get(provider) as T | undefined)
: undefined;