@gavant/ember-validations
Version:
A form validator library using ember-changeset and ember-changeset-validations
23 lines (22 loc) • 1.34 kB
TypeScript
/// <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 };