UNPKG

moysklad-helpers

Version:

Вспомогательные функции для работы с библиотекой moysklad

22 lines (21 loc) 1.94 kB
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>;