mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2025-10-16 12:05:41 +00:00
736 lines
21 KiB
TypeScript
736 lines
21 KiB
TypeScript
// Type definitions for jsblocks v0.3.0
|
|
// Project: http://jsblocks.com/
|
|
// Definitions by: Krzysztof Śmigiel <https://github.com/ksmigiel>
|
|
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
|
|
|
/////////////////////////////////////////
|
|
// blocks methods
|
|
/////////////////////////////////////////
|
|
|
|
interface BlocksStatic {
|
|
(obj: any): any;
|
|
|
|
/**
|
|
* Performs a query operation on the DOM. Executes all data-query attributes
|
|
* and renders the html result to the specified HTMLElement if not specified
|
|
* uses document.body by default.
|
|
*
|
|
* @param model The model that will be used to query the DOM.
|
|
*/
|
|
query(model: any): void;
|
|
/**
|
|
* @param model The model that will be used to query the DOM.
|
|
* @param element Optional element on which to execute the query.
|
|
*/
|
|
query(model: any, element: HTMLElement): void;
|
|
|
|
/**
|
|
* Copies properties from all provided objects into the first object parameter
|
|
*/
|
|
extend(obj: Object, ...objects: any[]): void;
|
|
|
|
/**
|
|
* Iterates over the collection
|
|
*
|
|
* @param collection The array or object to iterate over
|
|
* @param callback The callback that will be executed for each element in the collection
|
|
* @param thisArg Optional this context for the callback
|
|
*/
|
|
each(collection: any, callback: (value: any, index: any, collection: any) => void, thisArg?: any): void;
|
|
|
|
/**
|
|
* Iterates over the collection from end to start
|
|
*
|
|
* @param collection The array or object to iterate over
|
|
* @param callback The callback that will be executed for each element in the collection
|
|
* @param thisArg Optional this context for the callback
|
|
*/
|
|
eachRight(collection: any, callback: (value: any, index: any, collection: any) => void, thisArg?: any): void;
|
|
|
|
/**
|
|
* Determines if a value is an array.
|
|
* Returns false for array like objects (for example arguments object).
|
|
*
|
|
* @param value The value to check if it is an array
|
|
*/
|
|
isArray(value: any): boolean;
|
|
|
|
/**
|
|
* Represents a dummy empty function
|
|
*/
|
|
noop(): Function;
|
|
|
|
/**
|
|
* Determines the true type of an object.
|
|
* Returns the type of the value as a string.
|
|
*
|
|
* @param value The value for which to determine its type
|
|
*/
|
|
type(value: any): string;
|
|
|
|
/**
|
|
* Determines if a specific value is the specified type
|
|
*
|
|
* @param value The value
|
|
* @param type The type
|
|
*/
|
|
is(value: any, type: string): boolean;
|
|
|
|
/**
|
|
* Checks if a variable has the specified property. Uses hasOwnProperty internally
|
|
*
|
|
* @param obj The object to call hasOwnPrototype for
|
|
* @param key The key to check if exists in the object
|
|
*/
|
|
has(obj: any, key: string): boolean;
|
|
|
|
/**
|
|
* Unwraps a jsblocks value to its raw representation.
|
|
* Unwraps blocks.observable() and blocks() values
|
|
*
|
|
* @param value The value that will be unwrapped
|
|
*/
|
|
unwrap(value: any): any;
|
|
|
|
/**
|
|
* Converts a value to an array. Arguments object is converted to array and primitive values
|
|
* are wrapped in an array.
|
|
* Does nothing when value is already an array
|
|
*
|
|
* @param value The value to be converted to an array
|
|
*/
|
|
toArray(value: any): any[];
|
|
|
|
/**
|
|
* Converts an integer or string to a unit. If the value could not be parsed to a number it is not converted
|
|
*
|
|
* @param value The value to be converted to the specified unit
|
|
*/
|
|
toUnit(value: any): any;
|
|
/**
|
|
* @param value The value to be converted to the specified unit
|
|
* @param unit Optionally provide a unit to convert to. Default value is 'px'
|
|
*/
|
|
toUnit(value: any, unit: string): any;
|
|
|
|
/**
|
|
* Clones value. If deepClone is set to true the value will be cloned recursively
|
|
*
|
|
* @param value Value/object to be cloned
|
|
*/
|
|
clone(value: any): any;
|
|
/**
|
|
* @param value Value/object to be cloned
|
|
* @param deepClone By default false
|
|
*/
|
|
clone(value: any, deepClone: boolean): any;
|
|
|
|
/**
|
|
* Determines if the specified value is a HTML elements collection.
|
|
* Returns whether the value is elements collection.
|
|
*
|
|
* @param value The value to check if it is elements collection
|
|
*/
|
|
isElements(value: any): boolean;
|
|
|
|
/**
|
|
* Determines if the specified value is a HTML element.
|
|
* Returns whether the value is a HTML element.
|
|
*
|
|
* @param value The value to check if it is a HTML element
|
|
*/
|
|
isElement(value: any): boolean;
|
|
|
|
/**
|
|
* Determines if a the specified value is a boolean.
|
|
* Whether the value is a boolean or not.
|
|
*
|
|
* @param value The value to be checked if it is a boolean
|
|
*/
|
|
isBoolean(value: any): boolean;
|
|
|
|
/**
|
|
* Determines if the specified value is an object.
|
|
* Returns whether the value is an object.
|
|
*
|
|
* @param obj The value to check for if it is an object
|
|
*/
|
|
isObject(obj: any): boolean;
|
|
|
|
/**
|
|
* Determines if a value is a object created using {} or new Object.
|
|
* Whether the value is a plain object or not.
|
|
*
|
|
* @param obj The value that will be checked
|
|
*/
|
|
isPlainObject(obj: any): boolean;
|
|
|
|
/**
|
|
* Changes the this binding to a function and optionally passes additional parameters to the function.
|
|
* Returns the newly created function having the new this binding and optional arguments.
|
|
*
|
|
* @param func The function for which to change the this binding and optionally add arguments
|
|
* @param thisArg The new this binding context value
|
|
* @param args Optional arguments that will be passed to the function
|
|
*/
|
|
bind(func: Function, thisArg: any, ...args: any[]): Function;
|
|
|
|
/**
|
|
* Determines if two values are deeply equal. Set deepEqual to false to stop recusively equality checking
|
|
*
|
|
* @param a The first object to be campared
|
|
* @param b The second object to be compared
|
|
*/
|
|
equals(a: any, b: any): boolean;
|
|
/**
|
|
* @param a The first object to be campared
|
|
* @param b The second object to be compared
|
|
* @param deepEqual Determines if the equality check will recursively check all child properties
|
|
*/
|
|
equals(a: any, b: any, deepEqual: boolean): boolean;
|
|
|
|
/**
|
|
* Gets the context for a particular element. Searches all parents until it finds the context.
|
|
*
|
|
* @param element The element from which to search for a context
|
|
*
|
|
*/
|
|
context(element: any): any;
|
|
|
|
/**
|
|
* Gets the associated dataItem for a particlar element. Searches all parents until it finds the context
|
|
*
|
|
* @param element The element from which to search for a dataItem
|
|
*/
|
|
dataItem(element: any): any;
|
|
|
|
/**
|
|
* Determines if particular value is an blocks.observable
|
|
*
|
|
* @param value The value to check if the value is observable
|
|
*/
|
|
isObservable(value: any): boolean;
|
|
|
|
/**
|
|
* Gets the raw value of an observable or returns the value if the specified object is not an observable
|
|
*
|
|
* @param value The value that could be any object observable or not
|
|
*/
|
|
unwrapObservable(value: any): any;
|
|
|
|
route(route: string): BlocksStatic;
|
|
|
|
optional(param: string): BlocksStatic;
|
|
optional(param: string, defaultValue: any): BlocksStatic;
|
|
|
|
range(start: number, end: number): BlocksStatic;
|
|
|
|
/**
|
|
* Creates the server which will automatically handle server-side rendering.
|
|
*/
|
|
server(): { express(): any };
|
|
/**
|
|
* @param options Overrides default jsblocks options
|
|
*/
|
|
server(options: Server): { express(): any };
|
|
|
|
/**
|
|
* Make observable property. You can specify initial value in parentheses.
|
|
*/
|
|
observable(): BlocksObservable;
|
|
observable(value: any[]): BlocksArray;
|
|
observable(value: any): BlocksObservable;
|
|
|
|
/**
|
|
* Use blocks.Application and its MVC(Model-View-Collection) structure to create better architecture and maintainability for your application.
|
|
*/
|
|
Application(): App;
|
|
Application(options: { history: string }): App;
|
|
}
|
|
|
|
/////////////////////////////////////////
|
|
// blocks observable
|
|
/////////////////////////////////////////
|
|
|
|
interface BlocksObservable extends Extendable<BlocksObservable> {
|
|
(arg: any): BlocksObservable;
|
|
|
|
/**
|
|
* Updates all elements, expressions and dependencies where the observable is used
|
|
*/
|
|
update(): BlocksObservable;
|
|
|
|
/**
|
|
* If event in prototype is not defined use this function instead.
|
|
*
|
|
* @param event Name of the event to raise
|
|
* @param trigger Function to be called when event is fired
|
|
*/
|
|
on(event: string, trigger: Function): BlocksObservable;
|
|
}
|
|
|
|
/////////////////////////////////////////
|
|
// blocks array
|
|
/////////////////////////////////////////
|
|
|
|
interface BlocksArray extends BlocksObservable {
|
|
|
|
/**
|
|
* Updates all elements, expressions and dependencies where the observable is used
|
|
*/
|
|
update(): BlocksArray;
|
|
|
|
/**
|
|
* Extends the current observable with particular functionality depending on the parameters specified.
|
|
* If the method is called without arguments and jsvalue framework is included the observable will be
|
|
* extended with the methods available in jsvalue for the current type.
|
|
*
|
|
* @param options Optional options
|
|
*/
|
|
extend(...options: any[]): BlocksArray;
|
|
/**
|
|
* @param name Name of the extender
|
|
* @param options Optional options
|
|
*/
|
|
extend(name: string, ...options: any[]): BlocksArray;
|
|
|
|
/**
|
|
* Removes all items from the collection and replaces them with the new value provided.
|
|
* The value could be Array, observable array or jsvalue.Array
|
|
*
|
|
* @param value The new value that will be populated
|
|
*/
|
|
reset(value: any[]): BlocksArray;
|
|
|
|
/**
|
|
* Adds values to the end of the observable array
|
|
*
|
|
* @param value The values that will be added to the end of the array
|
|
*/
|
|
add(value: any): BlocksArray;
|
|
/**
|
|
* @param value The values that will be added to the end of the array
|
|
* @param index Optional index specifying where to insert the value
|
|
*/
|
|
add(value: any, index: number): BlocksArray;
|
|
|
|
/**
|
|
* Adds the values from the provided array(s) to the end of the collection
|
|
*
|
|
* @param value The array that will be added to the end of the array
|
|
*/
|
|
addMany(value: any[]): BlocksArray;
|
|
/**
|
|
* @param value The array that will be added to the end of the array
|
|
* @param index Optional position where the array of values to be inserted
|
|
*/
|
|
addMany(value: any[], index: number): BlocksArray;
|
|
|
|
/**
|
|
* Swaps two values in the observable array. Note: Faster than removing the items and adding them at the locations
|
|
*
|
|
* @param indexA The first index that points to the index in the array that will be swapped
|
|
* @param indexB The second index that points to the index in the array that will be swapped
|
|
*/
|
|
swap(indexA: number, indexB: number): BlocksArray;
|
|
|
|
/**
|
|
* Moves an item from one location to another in the array. Note: Faster than removing the item and adding it at the location
|
|
*
|
|
* @param sourceIndex The index pointing to the item that will be moved
|
|
* @param targetIndex The index where the item will be moved to
|
|
*/
|
|
move(sourceIndex: number, targetIndex: number): BlocksArray;
|
|
|
|
/**
|
|
* Removes an item from the observable array
|
|
*
|
|
* @param value The value that will be removed or a callback function which returns true or false to determine if the value should be removed
|
|
*/
|
|
remove(value: any): BlocksArray;
|
|
/**
|
|
* @param value The value that will be removed or a callback function which returns true or false to determine if the value should be removed
|
|
* @param thisArg Optional this context for the callback
|
|
*/
|
|
remove(value: any, thisArg: Function): BlocksArray;
|
|
|
|
/**
|
|
* Removes an item at the specified index
|
|
*
|
|
* @param index The index location of the item that will be removed
|
|
*/
|
|
removeAt(index: number): BlocksArray;
|
|
/**
|
|
* @param index The index location of the item that will be removed
|
|
* @param count Optional parameter that if specified will remove the next items starting from the specified index
|
|
*/
|
|
removeAt(index: number, count: number): BlocksArray;
|
|
|
|
/**
|
|
* Removes all items from the observable array and optionally filter which items to be removed by providing a callback
|
|
*/
|
|
removeAll(): BlocksArray;
|
|
/**
|
|
* @param callback Optional callback function which filters which items to be removed. Returning a truthy value will remove the item and vice versa
|
|
*/
|
|
removeAll(callback: Function): BlocksArray;
|
|
/**
|
|
* @param callback Optional callback function which filters which items to be removed. Returning a truthy value will remove the item and vice versa
|
|
* @param thisArg Optional this context for the callback function
|
|
*/
|
|
removeAll(callback: Function, thisArg: any): BlocksArray;
|
|
|
|
/**
|
|
* The concat() method is used to join two or more arrays
|
|
*
|
|
* @param arrays The arrays to be joined
|
|
*/
|
|
concat(...arrays: any[]): any[]
|
|
|
|
/**
|
|
* The slice() method returns the selected elements in an array, as a new array object
|
|
*
|
|
* @param start An integer that specifies where to start the selection (The first element has an index of 0)
|
|
*/
|
|
slice(start: number): any[];
|
|
/**
|
|
* @param start An integer that specifies where to start the selection (The first element has an index of 0)
|
|
* @param end An integer that specifies where to end the selection. If omitted, all elements from the start position and to the end of the array will be selected.
|
|
* Use negative numbers to select from the end of an array
|
|
*/
|
|
slice(start: number, end: number): any[];
|
|
|
|
/**
|
|
* The join() method joins the elements of an array into a string, and returns the string
|
|
*/
|
|
join(): string;
|
|
/**
|
|
* @param separator The separator to be used. If omitted, the elements are separated with a comma
|
|
*/
|
|
join(seperator: string): string;
|
|
|
|
/**
|
|
* The pop() method removes the last element of a observable array, and returns that element
|
|
*/
|
|
pop(): any;
|
|
|
|
/**
|
|
* The push() method adds new items to the end of the observable array, and returns the new length
|
|
*
|
|
* @param values The item(s) to add to the observable array
|
|
*/
|
|
push(...values: any[]): number;
|
|
|
|
/**
|
|
* Reverses the order of the elements in the observable array
|
|
*/
|
|
reverse(): any[];
|
|
|
|
/**
|
|
* Removes the first element of a observable array, and returns that element
|
|
*/
|
|
shift(): any
|
|
|
|
/**
|
|
* Sorts the elements of an array
|
|
*/
|
|
sort(): any[];
|
|
/**
|
|
* @param sortfunction A function that defines the sort order
|
|
*/
|
|
sort(sortfunction: Function): any[];
|
|
|
|
/**
|
|
* Adds and/or removes elements from the observable array
|
|
* Returns A new array containing the removed items, if any.
|
|
*
|
|
* @param index An integer that specifies at what position to add/remove items. Use negative values to specify the position from the end of the array.
|
|
* @param howMany The number of items to be removed. If set to 0, no items will be removed.
|
|
* @param items The new item(s) to be added to the array.
|
|
*/
|
|
splice(index: number, howMany: number, ...items: any[]): any[];
|
|
|
|
/**
|
|
* The unshift() method adds new items to the beginning of an array, and returns the new length.
|
|
*
|
|
* @param items
|
|
*/
|
|
unshift(...items: any[]): number;
|
|
}
|
|
|
|
/////////////////////////////////////////
|
|
// blocks MVC App
|
|
/////////////////////////////////////////
|
|
|
|
interface App extends Extendable<App> {
|
|
|
|
/**
|
|
* Creates an application property for a Model.
|
|
*/
|
|
Property(): any;
|
|
/**
|
|
* @param options Configuration options for property
|
|
*/
|
|
Property(options: PropertyPrototype): any;
|
|
|
|
/**
|
|
* Defines a view that will be part of the Application.
|
|
*
|
|
* @param name The name of the View you are creating
|
|
* @param prototype The object that will represent the View
|
|
*/
|
|
View(name: string, prototype: ViewPrototype): any;
|
|
/**
|
|
* Defines a view that will be part of the Application.
|
|
*
|
|
* @param parentViewName Provide this parameter only if you are creating nested views. This is the name of the parent View
|
|
* @param name The name of the View you are creating
|
|
* @param prototype The object that will represent the View
|
|
*/
|
|
View(parentViewName: string, name: string, prototype: ViewPrototype): any;
|
|
|
|
/**
|
|
* Creates a new Model
|
|
*
|
|
* @param prototype The Model object properties that will be created
|
|
*/
|
|
Model(prototype: ModelPrototype): Model;
|
|
|
|
/**
|
|
* Creates a new Collection
|
|
*
|
|
* @param prototype The Collection object properties that will be created.
|
|
*/
|
|
Collection(prototype: CollectionPrototype): Collection;
|
|
Collection(model: Model, prototype: CollectionPrototype): Collection;
|
|
}
|
|
|
|
/////////////////////////////////////////
|
|
// App.Property
|
|
/////////////////////////////////////////
|
|
|
|
interface PropertyPrototype {
|
|
defaultValue?: any;
|
|
isObservable?: boolean;
|
|
field?: string;
|
|
value?: any;
|
|
validateOnChange?: boolean;
|
|
maxErrors?: number;
|
|
validateInitially?: boolean
|
|
|
|
// Validators
|
|
required?: Validator;
|
|
minlength?: Validator;
|
|
maxlength?: Validator;
|
|
min?: Validator;
|
|
max?: Validator;
|
|
email?: Validator;
|
|
url?: Validator;
|
|
date?: Validator;
|
|
creditcard?: Validator;
|
|
regexp?: Validator;
|
|
number?: Validator;
|
|
digits?: Validator;
|
|
letters?: Validator;
|
|
equals?: Validator;
|
|
}
|
|
|
|
interface Validator { }
|
|
|
|
/////////////////////////////////////////
|
|
// App.View
|
|
/////////////////////////////////////////
|
|
|
|
interface ViewPrototype {
|
|
parentView?: any;
|
|
|
|
/**
|
|
* Routes to a specific URL and actives the appropriate views associated with the URL
|
|
*
|
|
* @param name Name of the route
|
|
*/
|
|
route?(name: string): ViewPrototype;
|
|
|
|
|
|
/**
|
|
* Determines if the view is visible
|
|
*/
|
|
isActive?(): boolean;
|
|
|
|
/**
|
|
* Override the init method to perform actions when the View is first created and shown on the page
|
|
*/
|
|
init?: Function;
|
|
|
|
/**
|
|
* Override the routed method to perform actions when the View have routing and routing mechanism actives it.
|
|
*/
|
|
routed?: Function;
|
|
|
|
navigateTo?: Function;
|
|
|
|
/**
|
|
* Override the ready method to perform actions when the DOM is ready and
|
|
* all data-query have been executed.
|
|
*/
|
|
ready?: Function;
|
|
|
|
options?: {
|
|
route?: any;
|
|
url?: string
|
|
};
|
|
|
|
[propertyName: string]: any;
|
|
}
|
|
|
|
/////////////////////////////////////////
|
|
// App.Model
|
|
/////////////////////////////////////////
|
|
|
|
interface Model {
|
|
(): Model;
|
|
(props: Object): Model;
|
|
|
|
/**
|
|
* Fires a request to the server to populate the Model based on the read URL specified
|
|
*/
|
|
read(): Model;
|
|
/**
|
|
* @param params The parameters Object that will be used to populate the Model from the specified options.read URL. If the URL does not contain parameters
|
|
*/
|
|
read(params: Object): Model;
|
|
|
|
/**
|
|
* Synchronizes the changes with the server by sending requests to the provided URL's
|
|
*/
|
|
sync(): Model;
|
|
}
|
|
|
|
interface ModelPrototype {
|
|
|
|
/**
|
|
* Override the init method to perform actions on creation for each Model instance
|
|
*/
|
|
init?: Function;
|
|
|
|
/**
|
|
* Validates all observable properties that have validation and returns true if all values are valid otherwise returns false
|
|
*/
|
|
validate?(): boolean;
|
|
|
|
/**
|
|
* Extracts the raw(non observable) dataItem object values from the Model
|
|
*/
|
|
dataItem?(): Object;
|
|
|
|
/**
|
|
* Applies new properties to the Model by providing an Object
|
|
*
|
|
* @param dataItem The object from which the new values will be applied
|
|
*/
|
|
reset?(dataItem: ModelPrototype): ModelPrototype;
|
|
|
|
/**
|
|
* Determines whether the instance is new. If true when syncing the item will send for insertion instead of updating it.
|
|
* The check is determined by the idAttr value specified in the options. If idAttr is not specified the item will always be considered new.
|
|
*
|
|
*/
|
|
isNew?(): boolean;
|
|
|
|
options?: {
|
|
idAttr?: string;
|
|
baseUrl?: string;
|
|
read?: { url?: string };
|
|
create?: { url?: string };
|
|
destroy?: { url?: string };
|
|
update?: { url?: string };
|
|
};
|
|
|
|
[propertyName: string]: string | boolean | Object | Validator;
|
|
}
|
|
|
|
/////////////////////////////////////////
|
|
// App.Collection
|
|
/////////////////////////////////////////
|
|
|
|
interface Collection extends Extendable<Collection> {
|
|
(): Collection;
|
|
(props: Object[]): Collection;
|
|
|
|
/**
|
|
* Fires a request to the server to populate the Model based on the read URL specified
|
|
*/
|
|
read(): Collection;
|
|
/**
|
|
* @param params The parameters Object that will be used to populate the Collection from the specified options.read URL. If the URL does not contain parameters
|
|
*/
|
|
read(params: Object): Collection;
|
|
|
|
/**
|
|
* Clear all changes made to the collection
|
|
*/
|
|
clearChanges(): Collection;
|
|
|
|
/**
|
|
* Performs an ajax request for all create, update and delete operations in order to sync them with a database.
|
|
*/
|
|
sync(): Collection;
|
|
|
|
update(id: number, newValues: Object): Collection;
|
|
}
|
|
|
|
interface CollectionPrototype {
|
|
options?: {
|
|
read?: { url?: string };
|
|
create?: { url?: string };
|
|
destroy?: { url?: string };
|
|
update?: { url?: string };
|
|
};
|
|
[propertyName: string]: any;
|
|
}
|
|
|
|
interface Extendable<T> {
|
|
|
|
/**
|
|
* Extends the current observable with particular functionality depending on the parameters specified.
|
|
* If the method is called without arguments and jsvalue framework is included the observable will be
|
|
* extended with the methods available in jsvalue for the current type.
|
|
*
|
|
* @param name Name of the extender
|
|
* @param options Optional options
|
|
*/
|
|
extend(name?: string, ...options: any[]): T;
|
|
extend(arg: any): T;
|
|
}
|
|
|
|
interface Server {
|
|
|
|
/**
|
|
* The port at which your application will be run
|
|
*/
|
|
port?: number;
|
|
|
|
/**
|
|
* The folder where your application files like .html; .js and .css are going to be.
|
|
* The value is passed to express.static() middleware.
|
|
*/
|
|
static?: string;
|
|
|
|
/**
|
|
* Caches pages result instead of executing them each time.
|
|
* Disabling cache could impact performance.
|
|
*/
|
|
cache?: boolean;
|
|
|
|
/**
|
|
* Provide an express middleware function or an array of middleware functions.
|
|
* Use: [compression(); bodyParser()]
|
|
*/
|
|
use?: any;
|
|
}
|
|
|
|
declare var blocks: BlocksStatic;
|
|
|
|
declare module "blocks" {
|
|
export = blocks;
|
|
} |