@eflexsystems/ember-tracked-validations
Version:
Ember computed property based validation library
37 lines (30 loc) • 797 B
JavaScript
import { isArray } from '@ember/array';
import Model from '@ember-data/model';
import {
macroCondition,
dependencySatisfies,
importSync,
} from '@embroider/macros';
let DS;
if (macroCondition(dependencySatisfies('ember-data', '*'))) {
DS = importSync('ember-data').default;
}
export function isValidatable(value) {
return value && value instanceof Model ? !value.isDeleted : true;
}
export function isDSManyArray(o) {
return !!(
DS &&
o &&
(o instanceof DS.PromiseManyArray || o instanceof DS.ManyArray)
);
}
export function getValidatableValue(value) {
if (!value) {
return value;
}
if (value && isArray(value) && value && isDSManyArray(value)) {
return value.filter((v) => isValidatable(v));
}
return isValidatable(value) ? value : undefined;
}