@smythos/sdk
Version:
43 lines (34 loc) • 1.66 kB
text/typescript
//!!! DO NOT EDIT THIS FILE, IT IS AUTO-GENERATED !!!//
import { LocalStorageConfig } from '@smythos/sre';
import { S3Config } from '@smythos/sre';
import { AccessCandidate } from '@smythos/sre';
import { StorageInstance } from '../../Storage/StorageInstance.class';
import { Scope } from '../SDKTypes';
// Define storage provider settings mapping
export type TStorageProviderSettings = {
default: {} // Empty config for default provider
LocalStorage: LocalStorageConfig & {scope?: Scope | AccessCandidate}
S3: S3Config & {scope?: Scope | AccessCandidate}
};
// #region [ Handle extendable Storage Providers ] ================================================
// Base provider type derived from settings
export type TBuiltinStorageProvider = keyof TStorageProviderSettings;
// Extensible interface for custom providers
export interface IStorageProviders {}
// Combined provider type that can be extended
export type TStorageProvider = TBuiltinStorageProvider | keyof IStorageProviders;
// For backward compatibility, export the built-in providers as enum-like object
export const TStorageProvider: Record<TBuiltinStorageProvider, TBuiltinStorageProvider> = {
default: 'default',
LocalStorage: 'LocalStorage',
S3: 'S3',
} as const;
// #endregion
// Generic type to get settings for a specific provider
export type TStorageSettingsFor<T extends keyof TStorageProviderSettings> = TStorageProviderSettings[T];
export type TStorageProviderInstances = {
[K in TStorageProvider]: (
settings?: TStorageSettingsFor<K>,
scope?: Scope | AccessCandidate
) => StorageInstance;
};