moysklad-helpers
Version:
Вспомогательные функции для работы с библиотекой moysklad
22 lines (21 loc) • 1.94 kB
TypeScript
import { CompanyMetaType, DocumentPositionType, DocumentWithPositionsMetaType, DomineEntityMetaType, RemapApiHref } from 'moysklad-api-model';
import { getHelpers } from './index';
export interface Meta<T extends string = string> {
type: T;
href: string;
}
export interface EntityRef<T extends string = string> {
meta: Meta<T>;
}
export declare function isEntityRef(val: any): val is EntityRef;
export interface Entity<T extends string = string> extends EntityRef<T> {
id: string;
}
export interface EntityAttribute<T> extends Entity {
value: T;
}
export interface EntityWithAttributes<T> extends Entity {
attributes: EntityAttribute<T>[];
}
export type HrefMetaType<Ref extends string> = Ref extends RemapApiHref<infer Rest> ? HrefMetaType<Rest> : Ref extends `entity/${string}/${string}/${string}/${string}` ? Ref extends `entity/${string}/metadata/${string}/${string}` ? Ref extends `entity/${string}/metadata/attributes/${string}` ? 'attributemetadata' : Ref extends `entity/${string}/metadata/states/${string}` ? 'state' : never : Ref extends `entity/${string}/${string}/positions/${string}` ? Ref extends `entity/${infer M}/${string}/positions/${string}` ? M extends DocumentWithPositionsMetaType ? DocumentPositionType[M] : never : never : Ref extends `entity/${string}/${string}/accounts/${string}` ? Ref extends `entity/${infer M}/${string}/accounts/${string}` ? M extends CompanyMetaType ? 'account' : never : never : never : Ref extends `entity/${string}/${string}/${string}` ? never : Ref extends `entity/${string}/${string}` ? Ref extends `entity/${infer M}/${string}` ? M extends DomineEntityMetaType ? M : never : never : Ref extends `audit/${string}` ? 'audit' : Ref extends `context/companysettings/metadata/customEntities/${string}` ? 'customentitymetadata' : Ref extends `context/companysettings/pricetype/${string}` ? 'pricetype' : never;
export type Helpers = ReturnType<typeof getHelpers>;