Files
directus/packages/sdk/src/directus.ts
José Varela 23f6baa4db SDK: refactor constructors (#9080)
* refactor: more intuitive interfaces

* refactor: simpler refresh
before: on every request we were debouncing a refresh request
after: call refresh only once before now() + 'expires'

* refactor: prefix on base storage

* fixup! refactor: simpler refresh before: on every request we were debouncing a refresh request after: call refresh only once before now() + 'expires'

* refactor: simpler axios transport
before: handle auth headers
after: auth headers are handled on directus instance

* refactor: simpler usage of Directus constructor

* fixup! refactor: simpler refresh before: on every request we were debouncing a refresh request after: call refresh only once before now() + 'expires'

* refactor: fix tests based on previous changes

* refactor: better auth constructor
before: depends on SDK instance
after: depends on Transport and Storage instance

* accept staticToken from auth

* make transport and storage as optional on options

* fix type auth refresh

* simplify transport

* fix test for previous changes

* improve auth class

* revert some IAuth props because tests

* allow to force memory of localstorage on storage

* add tests for previous change

* document everything and simplify some things

* fix override headers on request

* better name typing

* fix private axios

* removed boolean from CLI auth.refresh()

* fix missing url in some examples

* soem grammar updates

Co-authored-by: Jay Cammarano <jay.cammarano@gmail.com>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2021-11-04 13:30:30 -04:00

68 lines
2.1 KiB
TypeScript

import { IAuth } from './auth';
import {
ActivityHandler,
CollectionsHandler,
FieldsHandler,
FilesHandler,
FoldersHandler,
PermissionsHandler,
PresetsHandler,
RelationsHandler,
RevisionsHandler,
RolesHandler,
ServerHandler,
SettingsHandler,
UsersHandler,
} from './handlers';
import { IItems } from './items';
import { ITransport } from './transport';
import { UtilsHandler } from './handlers/utils';
import { IStorage } from './storage';
import { TypeMap, TypeOf } from './types';
import { GraphQLHandler } from './handlers/graphql';
import { ISingleton } from './singleton';
export type DirectusTypes = {
activity: undefined;
collections: undefined;
fields: undefined;
files: undefined;
folders: undefined;
permissions: undefined;
presets: undefined;
relations: undefined;
revisions: undefined;
roles: undefined;
settings: undefined;
users: undefined;
};
export interface IDirectusBase {
readonly url: string;
readonly auth: IAuth;
readonly storage: IStorage;
readonly transport: ITransport;
readonly server: ServerHandler;
readonly utils: UtilsHandler;
readonly graphql: GraphQLHandler;
}
export interface IDirectus<T extends TypeMap> extends IDirectusBase {
readonly activity: ActivityHandler<TypeOf<T, 'directus_activity'>>;
readonly collections: CollectionsHandler<TypeOf<T, 'directus_collections'>>;
readonly files: FilesHandler<TypeOf<T, 'directus_files'>>;
readonly fields: FieldsHandler<TypeOf<T, 'directus_fields'>>;
readonly folders: FoldersHandler<TypeOf<T, 'directus_folders'>>;
readonly permissions: PermissionsHandler<TypeOf<T, 'directus_permissions'>>;
readonly presets: PresetsHandler<TypeOf<T, 'directus_presets'>>;
readonly revisions: RevisionsHandler<TypeOf<T, 'directus_revisions'>>;
readonly relations: RelationsHandler<TypeOf<T, 'directus_relations'>>;
readonly roles: RolesHandler<TypeOf<T, 'directus_roles'>>;
readonly users: UsersHandler<TypeOf<T, 'directus_users'>>;
readonly settings: SettingsHandler<TypeOf<T, 'directus_settings'>>;
items<C extends string, I = TypeOf<T, C>>(collection: C): IItems<I>;
singleton<C extends string, I = TypeOf<T, C>>(collection: C): ISingleton<I>;
}