UNPKG

@dossierhq/core

Version:

The core Dossier library used by clients and server alike, used to interact with schema and entities directly, as well as remotely through a client.

71 lines (70 loc) 8.86 kB
import { ErrorType, type ErrorFromResult, type OkFromResult, type PromiseResult, type Result } from '../ErrorResult.js'; import type { PublishedSchemaSpecification } from '../schema/SchemaSpecification.js'; import type { Component, Connection, Edge, EntityReference, EntitySamplingOptions, EntitySamplingPayload, Paging, PublishedEntity, PublishedEntityQuery, PublishedEntitySharedQuery, UniqueIndexReference } from '../Types.js'; import type { LooseAutocomplete } from '../utils/TypeUtils.js'; import { type ClientContext, type ContextProvider, type Middleware, type Operation } from './SharedClient.js'; export interface PublishedDossierClient<TEntity extends PublishedEntity<string, object> = PublishedEntity, TComponent extends Component<string, object> = Component, TUniqueIndex extends string = string, TExceptionClient extends PublishedDossierExceptionClient<TEntity, TComponent, TUniqueIndex> = PublishedDossierExceptionClient<TEntity, TComponent, TUniqueIndex>> { getSchemaSpecification(): PromiseResult<PublishedSchemaSpecification, typeof ErrorType.Generic>; getEntity(reference: EntityReference | UniqueIndexReference<TUniqueIndex>): PromiseResult<TEntity, typeof ErrorType.BadRequest | typeof ErrorType.NotFound | typeof ErrorType.NotAuthorized | typeof ErrorType.Generic>; getEntityList(references: EntityReference[]): PromiseResult<Result<TEntity, typeof ErrorType.BadRequest | typeof ErrorType.NotFound | typeof ErrorType.NotAuthorized | typeof ErrorType.Generic>[], typeof ErrorType.Generic>; getEntities(query?: PublishedEntityQuery<TEntity['info']['type'], TComponent['type'], TEntity['info']['authKey']>, paging?: Paging): PromiseResult<Connection<Edge<TEntity, ErrorType>> | null, typeof ErrorType.BadRequest | typeof ErrorType.NotAuthorized | typeof ErrorType.Generic>; getEntitiesTotalCount(query?: PublishedEntitySharedQuery<TEntity['info']['type'], TComponent['type'], TEntity['info']['authKey']>): PromiseResult<number, typeof ErrorType.BadRequest | typeof ErrorType.NotAuthorized | typeof ErrorType.Generic>; getEntitiesSample(query?: PublishedEntitySharedQuery<TEntity['info']['type'], TComponent['type'], TEntity['info']['authKey']>, options?: EntitySamplingOptions): PromiseResult<EntitySamplingPayload<TEntity>, typeof ErrorType.BadRequest | typeof ErrorType.NotAuthorized | typeof ErrorType.Generic>; toExceptionClient(): TExceptionClient; } export interface PublishedDossierExceptionClient<TPublishedEntity extends PublishedEntity<string, object> = PublishedEntity, TPublishedComponent extends Component<string, object> = Component, TUniqueIndex extends string = string> { client: Readonly<PublishedDossierClient<TPublishedEntity, TPublishedComponent, TUniqueIndex>>; getSchemaSpecification(): Promise<PublishedSchemaSpecification>; getEntity(reference: EntityReference | UniqueIndexReference<TUniqueIndex>): Promise<TPublishedEntity>; getEntityList(references: EntityReference[]): Promise<Result<TPublishedEntity, typeof ErrorType.BadRequest | typeof ErrorType.NotFound | typeof ErrorType.NotAuthorized | typeof ErrorType.Generic>[]>; getEntities(query?: PublishedEntityQuery<TPublishedEntity['info']['type'], TPublishedComponent['type'], TPublishedEntity['info']['authKey']>, paging?: Paging): Promise<Connection<Edge<TPublishedEntity, ErrorType>> | null>; getEntitiesTotalCount(query?: PublishedEntitySharedQuery<TPublishedEntity['info']['type'], TPublishedComponent['type'], TPublishedEntity['info']['authKey']>): Promise<number>; getEntitiesSample(query?: PublishedEntitySharedQuery<TPublishedEntity['info']['type'], TPublishedComponent['type'], TPublishedEntity['info']['authKey']>, options?: EntitySamplingOptions): Promise<EntitySamplingPayload<TPublishedEntity>>; } export declare const PublishedDossierClientOperationName: { readonly getEntities: "getEntities"; readonly getEntitiesSample: "getEntitiesSample"; readonly getEntitiesTotalCount: "getEntitiesTotalCount"; readonly getEntity: "getEntity"; readonly getEntityList: "getEntityList"; readonly getSchemaSpecification: "getSchemaSpecification"; }; type PublishedDossierClientOperationName = keyof typeof PublishedDossierClientOperationName; type MethodParameters<TName extends keyof PublishedDossierClient, TClient extends PublishedDossierClient<PublishedEntity<string, object>, Component<string, object>> = PublishedDossierClient> = Parameters<TClient[TName]>; type MethodReturnTypeWithoutPromise<TName extends keyof PublishedDossierClient, TClient extends PublishedDossierClient<PublishedEntity<string, object>, Component<string, object>> = PublishedDossierClient> = Awaited<PromiseResult<MethodReturnTypeOk<TName, TClient>, MethodReturnTypeError<TName, TClient>>>; type MethodReturnTypeOk<TName extends keyof PublishedDossierClient, TClient extends PublishedDossierClient<PublishedEntity<string, object>, Component<string, object>> = PublishedDossierClient> = OkFromResult<ReturnType<TClient[TName]>>; type MethodReturnTypeError<TName extends keyof PublishedDossierClient, TClient extends PublishedDossierClient<PublishedEntity<string, object>, Component<string, object>> = PublishedDossierClient> = ErrorFromResult<ReturnType<TClient[TName]>>; interface PublishedDossierClientOperationArguments { [PublishedDossierClientOperationName.getEntities]: MethodParameters<'getEntities'>; [PublishedDossierClientOperationName.getEntitiesSample]: MethodParameters<'getEntitiesSample'>; [PublishedDossierClientOperationName.getEntitiesTotalCount]: MethodParameters<'getEntitiesTotalCount'>; [PublishedDossierClientOperationName.getEntity]: MethodParameters<'getEntity'>; [PublishedDossierClientOperationName.getEntityList]: MethodParameters<'getEntityList'>; [PublishedDossierClientOperationName.getSchemaSpecification]: MethodParameters<'getSchemaSpecification'>; } interface PublishedDossierClientOperationReturnOk { [PublishedDossierClientOperationName.getEntities]: MethodReturnTypeOk<'getEntities'>; [PublishedDossierClientOperationName.getEntitiesSample]: MethodReturnTypeOk<'getEntitiesSample'>; [PublishedDossierClientOperationName.getEntitiesTotalCount]: MethodReturnTypeOk<'getEntitiesTotalCount'>; [PublishedDossierClientOperationName.getEntity]: MethodReturnTypeOk<'getEntity'>; [PublishedDossierClientOperationName.getEntityList]: MethodReturnTypeOk<'getEntityList'>; [PublishedDossierClientOperationName.getSchemaSpecification]: MethodReturnTypeOk<'getSchemaSpecification'>; } interface PublishedDossierClientOperationReturnError { [PublishedDossierClientOperationName.getEntities]: MethodReturnTypeError<'getEntities'>; [PublishedDossierClientOperationName.getEntitiesSample]: MethodReturnTypeError<'getEntitiesSample'>; [PublishedDossierClientOperationName.getEntitiesTotalCount]: MethodReturnTypeError<'getEntitiesTotalCount'>; [PublishedDossierClientOperationName.getEntity]: MethodReturnTypeError<'getEntity'>; [PublishedDossierClientOperationName.getEntityList]: MethodReturnTypeError<'getEntityList'>; [PublishedDossierClientOperationName.getSchemaSpecification]: MethodReturnTypeError<'getSchemaSpecification'>; } export type PublishedDossierClientOperation<TName extends PublishedDossierClientOperationName = PublishedDossierClientOperationName> = Operation<TName, PublishedDossierClientOperationArguments[TName], PublishedDossierClientOperationReturnOk[TName], PublishedDossierClientOperationReturnError[TName], false>; export type PublishedDossierClientMiddleware<TContext extends ClientContext> = Middleware<TContext, PublishedDossierClientOperation>; export type JsonPublishedDossierClientOperationArgs<TName extends PublishedDossierClientOperationName = PublishedDossierClientOperationName> = PublishedDossierClientOperationArguments[TName]; export declare function createBasePublishedDossierClient<TContext extends ClientContext, TClient extends PublishedDossierClient<PublishedEntity<string, object>, Component<string, object>> = PublishedDossierClient>(option: { context: TContext | ContextProvider<TContext>; pipeline: PublishedDossierClientMiddleware<TContext>[]; }): TClient; export declare function executeJsonPublishedDossierClientOperation(publishedClient: PublishedDossierClient<PublishedEntity<string, object>, Component<string, object>>, operationName: LooseAutocomplete<PublishedDossierClientOperationName>, operationArgs: JsonPublishedDossierClientOperationArgs): PromiseResult<unknown, ErrorType>; export declare function convertJsonPublishedDossierClientResult<TName extends PublishedDossierClientOperationName, TClient extends PublishedDossierClient<PublishedEntity<string, object>, Component<string, object>> = PublishedDossierClient>(operationName: TName, jsonResult: Result<unknown, ErrorType>): MethodReturnTypeWithoutPromise<TName, TClient>; export {};