@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
TypeScript
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 {};