data-context
Version:
Watch data changes in the browser and node.js
177 lines (149 loc) • 7.78 kB
TypeScript
declare module 'data-context' {
/** Creates a new data context. */
export function CreateDataContext(
/** The value to wrap. */
value: any,
/** The name of the property that this data context represents. */
propertyName: string,
/** The parent data context. */
parent: DataContext
): DataContext;
export interface createDataContext {
/** If true, the metadata is ignored. */
IgnoreMetadata: boolean;
}
/**
* The parse() static method parses a JSON string,
* constructing the JavaScript value or object described by the string.
* An optional reviver function can be provided to perform a transformation on the resulting object before it is returned.
*/
export function Parse(
/** The string to parse as JSON. See the JSON object for a description of JSON syntax. */
text: string,
/** If a function, this prescribes how each value originally produced by parsing is transformed before being returned.
* Non-callable values are ignored. */
reviver: object | { (key: string, value: any): any }
): any;
/** Parse a string to an object, asynchronously. */
export function ParsePromise(
/** The string to parse as JSON. See the JSON object for a description of JSON syntax. */
text: string,
/** If a function, this prescribes how each value originally produced by parsing is transformed before being returned.
* Non-callable values are ignored. */
reviver: object | { (key: string, value: any): any }
): Promise<any>;
/**
* The method converts a JavaScript value to a JSON string,
* optionally replacing values if a replacer function is specified or optionally
* including only the specified properties if a replacer array is specified.
*/
export function Stringify(
/** The value to convert to a JSON string. */
value: any,
/** A function that alters the behavior of the stringification process,
* or an array of strings and numbers that specifies properties of value to be included in the output.
* If replacer is an array, all elements in this array that are not strings or numbers (either primitives or wrapper objects),
* including Symbol values, are completely ignored.
* If replacer is anything other than a function or an array (e.g. null or not provided),
* all string-keyed properties of the object are included in the resulting JSON string. */
replacer: object | { (key: string, value: any): any },
/** A string or number that's used to insert white space (including indentation, line break characters, etc.)
* into the output JSON string for readability purposes.
*
* If this is a number, it indicates the number of space characters to be used as indentation,
* clamped to 10 (that is, any number greater than 10 is treated as if it were 10).
* Values less than 1 indicate that no space should be used. */
space: string | number
): string;
export interface DataContext {
/** The value of the data context. (self-use) */
_isDataContext: boolean;
/** The value is modified. (self-use) */
_isModified: boolean;
/** The modified properties. (self-use) */
_modified: Array<string>;
/** The value property name. (self-use) */
_propertyName: string;
/** The parent data context. (self-use) */
_parent: DataContext;
/** The Events object. (self-use) */
_events: object;
once(
/** The event name. */
/** Data context events: 'new', 'set', 'delete', 'change', 'reposition'. */
eventName: string,
/** The event handler. */
handler: { (event: EventObject): boolean }
): DataContext;
/** Add data to the context listener */
on(
/** The event name. */
/** Data context events: 'new', 'set', 'delete', 'change', 'reposition'. */
eventName: string,
/** The event handler.
* Returning true means that the listening function is alive and will not be deleted. */
handler: { (event: EventObject | any): boolean }
): DataContext;
/** Emits the event. Return true means that the listening is handled. */
emit(
/** The event name. */
/** Data context events: 'new', 'set', 'delete', 'change', 'reposition'. */
eventName: string,
/** The event object. */
event: EventObject | any
): boolean;
/** Emits the event to parent. Return true means that the listening is handled. */
emitToParent(
/** The event name. */
/** Data context events: 'new', 'set', 'delete', 'change', 'reposition'. */
eventName: string,
/** The event object. */
event: EventObject | any
): boolean;
/** The value to stringify. */
toString(): string;
/** The overwriting data */
overwritingData(
/** The string to parse as JSON. See the JSON object for a description of JSON syntax. */
text: string,
/** If a function, this prescribes how each value originally produced by parsing is transformed before being returned.
* Non-callable values are ignored. */
reviver: object | { (key: string, value: any): any }
): void;
stringifyChanges(
/** A function that alters the behavior of the stringification process,
* or an array of strings and numbers that specifies properties of value to be included in the output.
* If replacer is an array, all elements in this array that are not strings or numbers (either primitives or wrapper objects),
* including Symbol values, are completely ignored.
* If replacer is anything other than a function or an array (e.g. null or not provided),
* all string-keyed properties of the object are included in the resulting JSON string. */
replacer: object | { (key: string, value: any): any },
/** A string or number that's used to insert white space (including indentation, line break characters, etc.)
* into the output JSON string for readability purposes.
*
* If this is a number, it indicates the number of space characters to be used as indentation,
* clamped to 10 (that is, any number greater than 10 is treated as if it were 10).
* Values less than 1 indicate that no space should be used. */
space: string | number,
/** If true, get the modified data. Default is true. */
modifiedData: boolean,
/** If true, set the modified data to unmodified. Default is true. */
setUnmodified: boolean
): string
}
export interface EventObject {
/** The event name. */
eventName: string; // 'new' | 'set' | 'delete' | 'change' | 'reposition'
/** The event target. */
target: DataContext;
/** The property path. */
propertyPath: string[];
/** The parent data context. */
parent: DataContext;
/** The old value. */
oldValue: any;
/** The new value. */
newValue: any;
}
export default CreateDataContext;
}