UNPKG

@gavant/ember-validations

Version:

A form validator library using ember-changeset and ember-changeset-validations

23 lines (22 loc) 1.34 kB
/// <reference types="ember__object" /> /// <reference types="ember-data" /> import ComputedProperty from '@ember/object/computed'; import Model from '@ember-data/model'; import { BufferedChangeset, ValidatorMap } from 'ember-changeset/types'; type UnwrapComputedProperties<T> = { [Property in keyof T]: T[Property] extends ComputedProperty<infer U, any> ? U : T[Property]; }; type UserModelAttributes<T extends Model> = Pick<T, Exclude<keyof T, keyof Model>>; type EmberModelAttributes<T extends Model> = Readonly<UnwrapComputedProperties<Pick<T, Exclude<keyof T, keyof UserModelAttributes<T>>>>>; type ChangesetAttributes<T> = T extends Model ? UserModelAttributes<T> & EmberModelAttributes<T> : T; type GenericChangeset<T> = BufferedChangeset & ChangesetAttributes<T> & { data: T; }; /** * Creates a changeset * @param {Model | object} target The target object you want to create a changeset of. Generally a ED Model or POJO * @param {ValidatorMap} validation The validation for the object your creating a changeset for * @returns {GenericChangeset<T>} */ declare function createChangeset<T extends Model | object>(target: T, validations: ValidatorMap): GenericChangeset<T>; export { UnwrapComputedProperties, UserModelAttributes, EmberModelAttributes, ChangesetAttributes, GenericChangeset, createChangeset as default };