Skip to content

Commit

Permalink
closer to the solution, just need to solve the refreshing when model …
Browse files Browse the repository at this point in the history
…schema changes without arrays.
  • Loading branch information
grofit committed Jun 9, 2016
1 parent e66a521 commit b967aa6
Show file tree
Hide file tree
Showing 44 changed files with 10,571 additions and 26 deletions.
4 changes: 4 additions & 0 deletions dist/definitions/events/model-state-changed-event.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export declare class ModelStateChangedEvent {
isValid: boolean;
constructor(isValid: boolean);
}
6 changes: 6 additions & 0 deletions dist/definitions/events/property-changed-event.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export declare class PropertyChangedEvent {
propertyPath: string;
newValue: any;
oldValue: any;
constructor(propertyPath: string, newValue: any, oldValue: any);
}
6 changes: 6 additions & 0 deletions dist/definitions/events/property-state-changed-event.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export declare class PropertyStateChangedEvent {
property: string;
isValid: boolean;
error: string;
constructor(property: string, isValid: boolean, error?: string);
}
8 changes: 8 additions & 0 deletions dist/definitions/exposer.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { RuleRegistry } from "./rules/rule-registry";
import { Ruleset } from "./rulesets/ruleset";
import { RulesetBuilder } from "./rulesets/ruleset-builder";
import { ValidationGroup } from "./validation-group";
export declare var ruleRegistry: RuleRegistry;
export declare function createRuleset(): RulesetBuilder;
export declare function createGroupWithRules(model: any, rulesCreator: (rulesetBuilder: RulesetBuilder) => Ruleset): ValidationGroup;
export declare function createGroup(model: any, ruleset: Ruleset): ValidationGroup;
13 changes: 13 additions & 0 deletions dist/definitions/factories/validation-group-factory.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { ValidationGroup } from "../validation-group";
import { Ruleset } from "../rulesets/ruleset";
import { IModelWatcher } from "../watcher/imodel-watcher";
import { IRuleResolver } from "../rulesets/irule-resolver";
import { IFieldErrorProcessor } from "../processors/ifield-error-processor";
export declare class ValidationGroupFactory {
private fieldErrorProcessor;
private modelWatcher;
private propertyResolver;
private ruleResolver;
constructor(fieldErrorProcessor: IFieldErrorProcessor, modelWatcher: IModelWatcher, propertyResolver: any, ruleResolver: IRuleResolver);
createValidationGroup: (model: any, ruleset: Ruleset) => ValidationGroup;
}
4 changes: 4 additions & 0 deletions dist/definitions/helpers/comparer-helper.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export declare class ComparerHelper {
static simpleTypeComparer(value1: (string | number), value2: (string | number), isWeak: any): boolean;
static dateTimeCompararer(value1: Date, value2: Date): boolean;
}
5 changes: 5 additions & 0 deletions dist/definitions/helpers/type-helper.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export declare class TypeHelper {
static isDateType(value: any): boolean;
static isSimpleType(value: any): boolean;
static isArrayType(value: any): boolean;
}
38 changes: 38 additions & 0 deletions dist/definitions/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
export * from "./exposer";
export * from "./ivalidation-group";
export * from "./validation-group";
export * from "./events/model-state-changed-event";
export * from "./events/property-changed-event";
export * from "./events/property-state-changed-event";
export * from "./factories/validation-group-factory";
export * from "./helpers/comparer-helper";
export * from "./helpers/type-helper";
export * from "./processors/field-error-processor";
export * from "./processors/field-has-error";
export * from "./processors/ifield-error-processor";
export * from "./processors/validation-error";
export * from "./rules/date-validation-rule";
export * from "./rules/decimal-validation-rule";
export * from "./rules/email-validation-rule";
export * from "./rules/equal-validation-rule";
export * from "./rules/iso-date-validation-rule";
export * from "./rules/ivalidation-rule";
export * from "./rules/max-length-validation-rule";
export * from "./rules/max-value-validation-rule";
export * from "./rules/min-length-validation-rule";
export * from "./rules/min-value-validation-rule";
export * from "./rules/not-equal-validation-rule";
export * from "./rules/number-validation-rule";
export * from "./rules/regex-validation-rule";
export * from "./rules/required-validation-rule";
export * from "./rules/rule-registry";
export * from "./rules/step-validation-rule";
export * from "./rulesets/for-each-rule";
export * from "./rulesets/irule-resolver";
export * from "./rulesets/rule-link";
export * from "./rulesets/rule-resolver";
export * from "./rulesets/ruleset-builder";
export * from "./rulesets/ruleset";
export * from "./watcher/imodel-watcher";
export * from "./watcher/model-watcher";
export * from "./watcher/property-watcher";
10 changes: 10 additions & 0 deletions dist/definitions/ivalidation-group.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { EventHandler } from "event-js";
export interface IValidationGroup {
propertyStateChangedEvent: EventHandler;
modelStateChangedEvent: EventHandler;
isValid(): Promise<boolean>;
getModelErrors(): Promise<any>;
getPropertyError(propertyRoute: string): Promise<any>;
changeValidationTarget(model: any): any;
release(): void;
}
10 changes: 10 additions & 0 deletions dist/definitions/processors/field-error-processor.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import * as Promise from "bluebird";
import { RuleRegistry } from "../rules/rule-registry";
import { RuleLink } from "../rulesets/rule-link";
import { IFieldErrorProcessor } from "./ifield-error-processor";
export declare class FieldErrorProcessor implements IFieldErrorProcessor {
ruleRegistry: RuleRegistry;
constructor(ruleRegistry: RuleRegistry);
processRuleLink(fieldValue: any, ruleLink: RuleLink): Promise<any>;
checkFieldForErrors(fieldValue: any, rules: any): Promise<string>;
}
3 changes: 3 additions & 0 deletions dist/definitions/processors/field-has-error.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export declare class FieldHasError extends Error {
constructor(message: any);
}
6 changes: 6 additions & 0 deletions dist/definitions/processors/ifield-error-processor.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import * as Promise from "bluebird";
import { RuleLink } from "../rulesets/rule-link";
export interface IFieldErrorProcessor {
processRuleLink(fieldValue: any, ruleLink: RuleLink): Promise<any>;
checkFieldForErrors(fieldValue: any, rules: any): Promise<string>;
}
5 changes: 5 additions & 0 deletions dist/definitions/processors/validation-error.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export declare class ValidationError {
propertyName: string;
message: string;
constructor(propertyName: string, message: string);
}
8 changes: 8 additions & 0 deletions dist/definitions/rules/date-validation-rule.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import * as Promise from "bluebird";
import { IValidationRule } from "./ivalidation-rule";
export declare class DateValidationRule implements IValidationRule {
ruleName: string;
private invalidObjectRegex;
validate(value: any): Promise<boolean>;
getMessage(value: any): string;
}
8 changes: 8 additions & 0 deletions dist/definitions/rules/decimal-validation-rule.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import * as Promise from "bluebird";
import { IValidationRule } from "./ivalidation-rule";
export declare class DecimalValidationRule implements IValidationRule {
ruleName: string;
private decimalRegex;
validate(value: any): Promise<boolean>;
getMessage(value: any): string;
}
8 changes: 8 additions & 0 deletions dist/definitions/rules/email-validation-rule.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import * as Promise from "bluebird";
import { IValidationRule } from "./ivalidation-rule";
export declare class EmailValidationRule implements IValidationRule {
ruleName: string;
private emailRegex;
validate(value: any): Promise<boolean>;
getMessage(value: any): string;
}
7 changes: 7 additions & 0 deletions dist/definitions/rules/equal-validation-rule.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import * as Promise from "bluebird";
import { IValidationRule } from "./ivalidation-rule";
export declare class EqualValidationRule implements IValidationRule {
ruleName: string;
validate(value: any, optionsOrValue: any): Promise<boolean>;
getMessage(value: any, optionsOrValue: any): string;
}
8 changes: 8 additions & 0 deletions dist/definitions/rules/iso-date-validation-rule.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import * as Promise from "bluebird";
import { IValidationRule } from "./ivalidation-rule";
export declare class ISODateValidationRule implements IValidationRule {
ruleName: string;
private isoDateRegex;
validate(value: any): Promise<boolean>;
getMessage(value: any): string;
}
6 changes: 6 additions & 0 deletions dist/definitions/rules/ivalidation-rule.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import * as Promise from "bluebird";
export interface IValidationRule {
ruleName: string;
validate(value: any, options?: any): Promise<boolean>;
getMessage(value: any, options?: any): any;
}
7 changes: 7 additions & 0 deletions dist/definitions/rules/max-length-validation-rule.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import * as Promise from "bluebird";
import { IValidationRule } from "./ivalidation-rule";
export declare class MaxLengthValidationRule implements IValidationRule {
ruleName: string;
validate(value: any, maxLength: number): Promise<boolean>;
getMessage(value: any, maxLength: any): string;
}
7 changes: 7 additions & 0 deletions dist/definitions/rules/max-value-validation-rule.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import * as Promise from "bluebird";
import { IValidationRule } from "./ivalidation-rule";
export declare class MaxValueValidationRule implements IValidationRule {
ruleName: string;
validate(value: any, maxValue: number): Promise<boolean>;
getMessage(value: any, maxValue: any): string;
}
7 changes: 7 additions & 0 deletions dist/definitions/rules/min-length-validation-rule.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import * as Promise from "bluebird";
import { IValidationRule } from "./ivalidation-rule";
export declare class MinLengthValidationRule implements IValidationRule {
ruleName: string;
validate(value: any, minLength: number): Promise<boolean>;
getMessage(value: any, minLength: number): string;
}
7 changes: 7 additions & 0 deletions dist/definitions/rules/min-value-validation-rule.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import * as Promise from "bluebird";
import { IValidationRule } from "./ivalidation-rule";
export declare class MinValueValidationRule implements IValidationRule {
ruleName: string;
validate(value: any, minValue: number): Promise<boolean>;
getMessage(value: any, minValue: number): string;
}
7 changes: 7 additions & 0 deletions dist/definitions/rules/not-equal-validation-rule.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import * as Promise from "bluebird";
import { IValidationRule } from "./ivalidation-rule";
export declare class NotEqualValidationRule implements IValidationRule {
ruleName: string;
validate(value: any, optionsOrValue: any): Promise<boolean>;
getMessage(value: any, optionsOrValue: any): string;
}
8 changes: 8 additions & 0 deletions dist/definitions/rules/number-validation-rule.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import * as Promise from "bluebird";
import { IValidationRule } from "./ivalidation-rule";
export declare class NumberValidationRule implements IValidationRule {
ruleName: string;
private numberRegex;
validate(value: any): Promise<boolean>;
getMessage(value: any): string;
}
7 changes: 7 additions & 0 deletions dist/definitions/rules/regex-validation-rule.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import * as Promise from "bluebird";
import { IValidationRule } from "./ivalidation-rule";
export declare class RegexValidationRule implements IValidationRule {
ruleName: string;
validate(value: any, regexPattern: RegExp): Promise<boolean>;
getMessage(value: any, regexPattern: any): string;
}
7 changes: 7 additions & 0 deletions dist/definitions/rules/required-validation-rule.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import * as Promise from "bluebird";
import { IValidationRule } from "./ivalidation-rule";
export declare class RequiredValidaitonRule implements IValidationRule {
ruleName: string;
validate(value: any, isRequired?: boolean): Promise<boolean>;
getMessage(value: any, isRequired: any): string;
}
7 changes: 7 additions & 0 deletions dist/definitions/rules/rule-registry.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { IValidationRule } from "./ivalidation-rule";
export declare class RuleRegistry {
rules: {};
registerRule: (validationRule: IValidationRule) => void;
unregisterRule: (validationRule: IValidationRule) => void;
getRuleNamed: (ruleName: string) => IValidationRule;
}
7 changes: 7 additions & 0 deletions dist/definitions/rules/step-validation-rule.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import * as Promise from "bluebird";
import { IValidationRule } from "./ivalidation-rule";
export declare class StepValidationRule implements IValidationRule {
ruleName: string;
validate(value: any, step: number): Promise<boolean>;
getMessage(value: any, step: any): string;
}
5 changes: 5 additions & 0 deletions dist/definitions/rulesets/for-each-rule.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export declare class ForEachRule<RuleType> {
internalRule: RuleType;
isForEach: boolean;
constructor(internalRule: RuleType);
}
4 changes: 4 additions & 0 deletions dist/definitions/rulesets/irule-resolver.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { Ruleset } from "./ruleset";
export interface IRuleResolver {
resolvePropertyRules(propertyRoute: string, ruleset: Ruleset): any;
}
6 changes: 6 additions & 0 deletions dist/definitions/rulesets/rule-link.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export declare class RuleLink {
ruleName: string;
ruleOptions: any;
constructor(ruleName: string, ruleOptions?: any);
messageOverride: ((value: any, ruleOptions?: any) => string) | string;
}
12 changes: 12 additions & 0 deletions dist/definitions/rulesets/rule-resolver.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { IRuleResolver } from "./irule-resolver";
import { PropertyResolver } from "property-resolver";
import { Ruleset } from "./ruleset";
export declare class RuleResolver implements IRuleResolver {
private propertyResolver;
constructor(propertyResolver?: PropertyResolver);
isPropertyRoute: (possiblePropertyRoute: string) => boolean;
private isIndexRoute;
resolvePropertyRules: (propertyRoute: string, ruleset: Ruleset) => any;
private getMatchingRuleForProperty;
private traverseRulesForRoutes;
}
15 changes: 15 additions & 0 deletions dist/definitions/rulesets/ruleset-builder.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { Ruleset } from "./ruleset";
import { RuleLink } from "./rule-link";
export declare class RulesetBuilder {
private internalRuleset;
currentProperty: string;
currentRule: RuleLink;
create: () => RulesetBuilder;
forProperty: (propertyName: string) => RulesetBuilder;
addRule: (rule: string, ruleOptions?: any) => RulesetBuilder;
withMessage: (messageOverride: ((value: any, ruleOptions?: any) => string) | string) => RulesetBuilder;
addRuleForEach: (rule: string, ruleOptions?: any) => RulesetBuilder;
addRuleset: (ruleset: Ruleset) => RulesetBuilder;
addRulesetForEach: (ruleset: Ruleset) => RulesetBuilder;
build: () => Ruleset;
}
9 changes: 9 additions & 0 deletions dist/definitions/rulesets/ruleset.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { RuleLink } from "./rule-link";
import { ForEachRule } from "./for-each-rule";
export declare class Ruleset {
rules: {};
private createPropertyEntryIfNeeded;
addRule: (property: string, ruleLink: RuleLink | ForEachRule<RuleLink>) => void;
addRuleset: (property: string, ruleset: Ruleset | ForEachRule<Ruleset>) => void;
getRulesForProperty: (property: string) => any[];
}
37 changes: 37 additions & 0 deletions dist/definitions/validation-group.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import * as Promise from "bluebird";
import { PropertyResolver } from "property-resolver";
import { EventHandler } from "event-js";
import { Ruleset } from "./rulesets/ruleset";
import { IModelWatcher } from "./watcher/imodel-watcher";
import { IValidationGroup } from "./ivalidation-group";
import { IFieldErrorProcessor } from "./processors/ifield-error-processor";
import { IRuleResolver } from "./rulesets/irule-resolver";
export declare class ValidationGroup implements IValidationGroup {
private fieldErrorProcessor;
private modelWatcher;
private propertyResolver;
private ruleResolver;
private ruleset;
private model;
refreshRate: number;
private propertyErrors;
private activePromiseChain;
propertyStateChangedEvent: EventHandler;
modelStateChangedEvent: EventHandler;
constructor(fieldErrorProcessor: IFieldErrorProcessor, modelWatcher: IModelWatcher, propertyResolver: PropertyResolver, ruleResolver: IRuleResolver, ruleset: Ruleset, model: any, refreshRate?: number);
private isRuleset(possibleRuleset);
private isForEach(possibleForEach);
private onModelChanged;
private validatePropertyWithRuleLinks;
private validatePropertyWithRuleSet;
private validatePropertyWithRules;
private validateProperty;
private validateModel;
private hasErrors;
changeValidationTarget: (model: any) => void;
isValid: () => Promise<boolean>;
getModelErrors: () => Promise<any>;
getPropertyError: (propertyRoute: string) => Promise<any>;
release: () => void;
private waitForValidatorsToFinish;
}
10 changes: 10 additions & 0 deletions dist/definitions/watcher/imodel-watcher.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { EventHandler } from "event-js";
import { Ruleset } from "../rulesets/ruleset";
export interface IModelWatcher {
scanInterval: any;
onPropertyChanged: EventHandler;
setupWatcher: (model: any, ruleset: Ruleset, scanInterval) => void;
changeWatcherTarget: (model: any) => void;
startWatching: () => void;
stopWatching: () => void;
}
23 changes: 23 additions & 0 deletions dist/definitions/watcher/model-watcher.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { PropertyResolver } from "property-resolver";
import { EventHandler } from "event-js";
import { Ruleset } from "../rulesets/ruleset";
import { IModelWatcher } from "./imodel-watcher";
export declare class ModelWatcher implements IModelWatcher {
private propertyResolver;
private watchCache;
private watchCacheKeys;
private watcherInterval;
private model;
private ruleset;
scanInterval: any;
onPropertyChanged: EventHandler;
constructor(propertyResolver?: PropertyResolver);
setupWatcher: (model: any, ruleset: Ruleset, scanInterval?: number) => void;
changeWatcherTarget: (model: any) => void;
startWatching: () => void;
stopWatching: () => void;
private updateAndNotifyDifferences;
private watchProperty;
private cacheWatchTargets;
private scanProperties;
}
5 changes: 5 additions & 0 deletions dist/definitions/watcher/property-watcher.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export declare class PropertyWatcher {
propertyPath: string;
previousValue: any;
constructor(propertyPath: string, previousValue: any);
}
Loading

0 comments on commit b967aa6

Please sign in to comment.