Skip to content

Commit

Permalink
feat(Template): add Template utility
Browse files Browse the repository at this point in the history
  • Loading branch information
wmakeev committed Jul 4, 2021
1 parent 70790f3 commit cb45690
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 1 deletion.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "moysklad-api-model",
"version": "0.1.8",
"version": "0.1.9",
"description": "Объектная модель API МойСклад для TypeScript проектов",
"main": "build/src/index.js",
"types": "build/src/index.d.ts",
Expand Down
1 change: 1 addition & 0 deletions src/model/EntityRef.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@ import type { MetaType } from './MetaType'

export interface EntityRef<T extends MetaType = MetaType>
extends MoyskladObject {
/** Метаданные сущности */
readonly meta: Meta<T>
}
18 changes: 18 additions & 0 deletions src/model/utils/Template.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import type { Document, DocumentMetaType } from '../Document'

// TODO Указать конкретные типы документов которые можно создавать этим методом

// TODO API гибок и позволяет отправлять при создании объекта не обязательные
// и лишние поля. В типах нельзя позволять такую вольность, хотя на практике
// подобное может быть удобно.

// Другими словами, при получении шаблона его необходимо будет деструктурировать
// в случае, когда шаблон ынужно обогащать доп. данными

/**
* Шаблон нового документа `/entity/{type}/new`
*/
export type Template<T extends Document<DocumentMetaType>> = Omit<
T,
'meta' | 'id' | 'accountId' | 'updated'
>
1 change: 1 addition & 0 deletions src/model/utils/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
export * from './Expand'
export * from './Patch'
export * from './Template'

// https://stackoverflow.com/questions/49579094/typescript-conditional-types-filter-out-readonly-properties-pick-only-requir

Expand Down
8 changes: 8 additions & 0 deletions test/model/utils/Template.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import type { CustomerOrder, Template } from '../../../src'

const t1 = {} as Template<CustomerOrder>

// @ts-expect-error
t1.id

t1.agent.meta

0 comments on commit cb45690

Please sign in to comment.