@formily/path
Version:
> Path System
89 lines (88 loc) • 3.52 kB
TypeScript
import { Path } from './index';
interface INode {
type?: string;
after?: Node;
depth?: number;
}
export declare type Node = IdentifierNode | WildcardOperatorNode | GroupExpressionNode | RangeExpressionNode | DestructorExpressionNode | ObjectPatternNode | ArrayPatternNode | DotOperatorNode | ExpandOperatorNode | INode;
export declare type IdentifierNode = {
type: 'Identifier';
value: string;
arrayIndex?: boolean;
} & INode;
export declare type IgnoreExpressionNode = {
type: 'IgnoreExpression';
value: string;
} & INode;
export declare type DotOperatorNode = {
type: 'DotOperator';
} & INode;
export declare type WildcardOperatorNode = {
type: 'WildcardOperator';
filter?: GroupExpressionNode | RangeExpressionNode;
optional?: boolean;
} & INode;
export declare type ExpandOperatorNode = {
type: 'ExpandOperator';
} & INode;
export declare type GroupExpressionNode = {
type: 'GroupExpression';
value: Node[];
isExclude?: boolean;
} & INode;
export declare type RangeExpressionNode = {
type: 'RangeExpression';
start?: IdentifierNode;
end?: IdentifierNode;
} & INode;
export declare type DestructorExpressionNode = {
type: 'DestructorExpression';
value?: ObjectPatternNode | ArrayPatternNode;
source?: string;
} & INode;
export declare type ObjectPatternNode = {
type: 'ObjectPattern';
properties: ObjectPatternPropertyNode[];
} & INode;
export declare type ObjectPatternPropertyNode = {
type: 'ObjectPatternProperty';
key: IdentifierNode;
value?: ObjectPatternNode[] | ArrayPatternNode[] | IdentifierNode;
} & INode;
export declare type ArrayPatternNode = {
type: 'ArrayPattern';
elements: ObjectPatternNode[] | ArrayPatternNode[] | IdentifierNode[];
} & INode;
export declare type DestructorRule = {
key?: string | number;
path?: Array<number | string>;
};
export declare type MatcherFunction = ((path: Segments) => boolean) & {
path: Path;
};
export declare type Pattern = string | number | Path | Segments | MatcherFunction | RegExp;
export declare type DestructorRules = DestructorRule[];
export declare type Segments = Array<string | number>;
export declare const isType: <T>(type: string) => (obj: any) => obj is T;
export declare const isIdentifier: (obj: any) => obj is IdentifierNode;
export declare const isIgnoreExpression: (obj: any) => obj is IgnoreExpressionNode;
export declare const isDotOperator: (obj: any) => obj is DotOperatorNode;
export declare const isWildcardOperator: (obj: any) => obj is WildcardOperatorNode;
export declare const isExpandOperator: (obj: any) => obj is ExpandOperatorNode;
export declare const isGroupExpression: (obj: any) => obj is GroupExpressionNode;
export declare const isRangeExpression: (obj: any) => obj is RangeExpressionNode;
export declare const isDestructorExpression: (obj: any) => obj is DestructorExpressionNode;
export declare const isObjectPattern: (obj: any) => obj is ObjectPatternNode;
export declare const isObjectPatternProperty: (obj: any) => obj is ObjectPatternPropertyNode;
export declare const isArrayPattern: (obj: any) => obj is ArrayPatternNode;
export declare type KeyType = string | number | symbol;
export declare type IAccessors = {
get?: (source: any, key: KeyType) => any;
set?: (source: any, key: KeyType, value: any) => any;
has?: (source: any, key: KeyType) => boolean;
delete?: (source: any, key: KeyType) => any;
};
export declare type IRegistry = {
accessors?: IAccessors;
};
export {};