@sphereon/ssi-sdk.resource-resolver
Version:
122 lines (117 loc) • 3.93 kB
TypeScript
import { IPluginMethodMap, IAgentContext, IAgentPlugin } from '@veramo/core';
import { IKeyValueStore, ValueStoreType } from '@sphereon/ssi-sdk.kv-store-temp';
import { IAnomalyDetection } from '@sphereon/ssi-sdk.anomaly-detection';
interface IResourceResolver extends IPluginMethodMap {
resourceResolve(args: ResolveArgs, context: RequiredContext): Promise<Response>;
resourceClearAllResources(args: ClearAllResourcesArgs, context: RequiredContext): Promise<boolean>;
resourceDefaultStoreId(context: RequiredContext): Promise<string>;
resourceDefaultNamespace(context: RequiredContext): Promise<string>;
resourceDefaultTtl(context: RequiredContext): Promise<number>;
}
type ResourceResolverOptions = {
defaultStore?: string;
defaultNamespace?: string;
resourceStores?: Map<string, IKeyValueStore<Resource>> | IKeyValueStore<Resource>;
ttl?: number;
detectLocation?: boolean;
};
type ResolveArgs = {
input: RequestInfo | URL;
init?: RequestInit;
resourceType: ResourceType;
partyCorrelationId?: string;
storeId?: string;
namespace?: string;
resolveOpts?: ResolveOptions;
};
type ResolveOptions = {
ttl?: number;
maxAgeMs?: number;
onlyCache?: boolean;
skipPersistence?: boolean;
};
type ResourceType = 'credential_branding_image' | 'issuer_branding_image' | 'oid4vci_metadata' | string;
type ClearAllResourcesArgs = {
storeId?: string;
};
type PersistResourceArgs = {
resource: Resource;
resourceIdentifier: string;
ttl?: number;
storeId?: string;
namespace?: string;
};
type GetResourceArgs = {
resourceIdentifier: string;
storeId?: string;
namespace?: string;
};
type StoreIdStrArgs = {
storeId?: string;
};
type NamespaceStrArgs = {
namespace?: string;
};
type PrefixArgs = {
namespace?: string;
resourceIdentifier: string;
};
type StoreArgs<T extends ValueStoreType> = {
stores: Map<string, IKeyValueStore<T>>;
storeId?: string;
};
type Location = {
continent?: string;
country?: string;
};
type Resource = {
location?: Location | null;
response: SerializedResponse;
resourceType: ResourceType;
insertedAt: number;
partyCorrelationId?: string;
};
type SerializedResponse = {
status: number;
statusText: string;
headers: {
[x: string]: string;
};
body: string;
};
type RequiredContext = IAgentContext<IAnomalyDetection>;
/**
* {@inheritDoc IResourceResolver}
*/
declare class ResourceResolver implements IAgentPlugin {
readonly schema: any;
readonly methods: IResourceResolver;
private readonly defaultStoreId;
private readonly defaultNamespace;
private readonly defaultTtl;
private readonly detectLocation;
private readonly _resourceStores;
constructor(options?: ResourceResolverOptions);
/** {@inheritDoc IResourceResolver.resourceResolve} */
private resourceResolve;
private retrieveLocation;
/** {@inheritDoc IResourceResolver.resourceClearAllResources} */
private resourceClearAllResources;
/** {@inheritDoc IResourceResolver.resourceDefaultStoreId} */
private resourceDefaultStoreId;
/** {@inheritDoc IResourceResolver.resourceDefaultNamespace} */
private resourceDefaultNamespace;
/** {@inheritDoc IResourceResolver.resourceDefaultTtl} */
private resourceDefaultTtl;
private getResource;
private persistResource;
private store;
private storeIdStr;
private namespaceStr;
private prefix;
}
/**
* @public
*/
declare const schema: any;
export { type ClearAllResourcesArgs, type GetResourceArgs, type IResourceResolver, type Location, type NamespaceStrArgs, type PersistResourceArgs, type PrefixArgs, type RequiredContext, type ResolveArgs, type ResolveOptions, type Resource, ResourceResolver, type ResourceResolverOptions, type ResourceType, type SerializedResponse, type StoreArgs, type StoreIdStrArgs, schema };