Merge pull request #2516 from gjunge/master

Updated to typeahead 0.10.4
This commit is contained in:
Masahiro Wakame
2014-08-29 17:20:40 +09:00
13 changed files with 2377 additions and 2482 deletions

60
history/history.d.ts vendored
View File

@@ -1,13 +1,13 @@
// Type definitions for History.js
// Project: https://github.com/balupton/History.js
// Definitions by: Boris Yankov <https://github.com/borisyankov/>
// Type definitions for History.js 1.8.0
// Project: https://github.com/browserstate/history.js
// Definitions by: Boris Yankov <https://github.com/borisyankov/>, Gidon Junge <https://github.com/gjunge/>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
interface HistoryAdapter {
bind(element, event, callback);
trigger(element, event);
onDomLoad(callback);
bind(element: any, event: string, callback: () => void);
trigger(element: any, event: string);
onDomLoad(callback: () => void);
}
// Since History is defined in lib.d.ts as well
@@ -17,15 +17,45 @@ interface HistoryAdapter {
// var Historyjs: Historyjs = <any>History;
interface Historyjs {
enabled: boolean;
pushState(data, title, url);
replaceState(data, title, url);
getState();
getHash();
pushState(data: any, title: string, url: string);
replaceState(data: any, title: string, url: string);
getState(): HistoryState;
getStateByIndex(index: number): HistoryState;
getCurrentIndex(): number;
getHash(): string;
Adapter: HistoryAdapter;
back();
forward();
go(X);
log(...messages: any[]);
debug(...messages: any[]);
back(): void;
forward(): void;
go(x: Number): void;
log(...messages: any[]): void;
debug(...messages: any[]): void;
options: HistoryOptions;
}
interface HistoryState {
data?: any;
title?: string;
url: string;
}
interface HistoryOptions {
hashChangeInterval?: number;
safariPollInterval?: number;
doubleCheckInterval?: number;
disableSuid?: boolean;
storeInterval?: number;
busyDelay?: number;
debug?: boolean;
initialTitle?: string;
html4Mode?: boolean;
delayInit?: number;
}

View File

@@ -1,35 +1,35 @@
/// <reference path="jquery.pjax.d.ts" />
/// <reference path="../jquery/jquery.d.ts" />
function test_pjax() {
$.pjax();
}
function test_pjax_selector() {
$('a').pjax();
}
function test_pjax_option() {
$.pjax({
area: 'body',
load: {
head: 'base, meta, link',
css: true,
script: true
},
cache: { click: true, submit: false, popstate: true },
server: { query: null }
});
}
function test_pjax_event() {
$.pjax({
wait: 1000
});
$(document).bind('pjax.request', function () {
$('div.loading').fadeIn(100);
});
$(document).bind('pjax.render', function () {
$('div.loading').fadeOut(500);
});
}
/// <reference path="jquery.pjax.d.ts" />
/// <reference path="../jquery/jquery.d.ts" />
function test_pjax() {
$.pjax();
}
function test_pjax_selector() {
$('a').pjax();
}
function test_pjax_option() {
$.pjax({
area: 'body',
load: {
head: 'base, meta, link',
css: true,
script: true
},
cache: { click: true, submit: false, popstate: true },
server: { query: null }
});
}
function test_pjax_event() {
$.pjax({
wait: 1000
});
$(document).bind('pjax.request', function () {
$('div.loading').fadeIn(100);
});
$(document).bind('pjax.render', function () {
$('div.loading').fadeOut(500);
});
}

View File

@@ -1,189 +1,189 @@
// Type definitions for jquery.pjax.ts by falsandtru
// Project: https://github.com/falsandtru/jquery.pjax.js/
// Definitions by: 新ゝ月 NewNotMoon <http://new.not-moon.net/>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
/// <reference path="../jquery/jquery.d.ts" />
interface PjaxSetting {
gns?: string;
ns?: string;
area?: any; // string, array, function( event, param, origUrl, destUrl )
link?: string;
filter?: any; // string, function()
form?: string;
scope?: Object;
state?: any; // any, function(event, param, origUrl, destUrl )
scrollTop?: any; // number, function( event, param, origUrl, destUrl ), null, false
scrollLeft?: any; // number, function( event, param, origUrl, destUrl ), null, false
scroll?: {
delay?: number;
record?: boolean //internal
queue?: number[] //internal
};
ajax?: JQueryAjaxSettings;
contentType?: string;
load?: {
head?: string;
css?: boolean;
script?: boolean;
execute?: boolean;
reload?: string;
ignore?: string;
sync?: boolean;
ajax?: JQueryAjaxSettings;
rewrite?: (element: any) => any;
redirect?: boolean;
};
interval?: number;
cache?: {
click?: boolean;
submit?: boolean;
popstate?: boolean;
get?: boolean;
post?: boolean;
page?: boolean;
size?: number;
mix?: number;
expires?: {
min?: number;
max?: number;
};
};
wait?: any; // number, function( event, param, origUrl, destUrl ): number
fallback?: any; // boolean, function( event, param, origUrl, destUrl ): boolean
fix?: {
location?: boolean;
history?: boolean;
scroll?: boolean;
reset?: boolean;
};
database?: boolean;
server?: {
query?: any; // string, object
header?: {
area?: boolean;
head?: boolean;
css?: boolean;
script?: boolean;
};
};
callback?: (event: JQueryEventObject, param: any) => any;
callbacks?: {
before?: (event: JQueryEventObject, param: any) => any;
after?: (event: JQueryEventObject, param: any) => any;
ajax?: {
xhr?: (event: JQueryEventObject, param: any) => any;
beforeSend?: (event: JQueryEventObject, param: any, data: any, ajaxSettings: any) => any;
dataFilter?: (event: JQueryEventObject, param: any, data: any, dataType: any) => any;
success?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
error?: (event: JQueryEventObject, param: any, XMLHttpRequest: XMLHttpRequest, textStatus: string, errorThrown: any) => any;
complete?: (event: JQueryEventObject, param: any, XMLHttpRequest: XMLHttpRequest, textStatus: string) => any;
done?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
fail?: (event: JQueryEventObject, param: any, XMLHttpRequest: XMLHttpRequest, textStatus: string, errorThrown: any) => any;
always?: (event: JQueryEventObject, param: any, XMLHttpRequest: XMLHttpRequest, textStatus: string) => any;
};
update?: {
before?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
after?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
cache?: {
before?: (event: JQueryEventObject, param: any, cache: any) => any;
after?: (event: JQueryEventObject, param: any, cache: any) => any;
};
redirect?: {
before?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
after?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
};
url?: {
before?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
after?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
};
title?: {
before?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
after?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
};
head?: {
before?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
after?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
};
content?: {
before?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
after?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
};
scroll?: {
before?: (event: JQueryEventObject, param: any) => any;
after?: (event: JQueryEventObject, param: any) => any;
};
css?: {
before?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
after?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
};
script?: {
before?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
after?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
};
render?: {
before?: (event: JQueryEventObject, param: any) => any;
after?: (event: JQueryEventObject, param: any) => any;
};
verify?: {
before?: (event: JQueryEventObject, param: any) => any;
after?: (event: JQueryEventObject, param: any) => any;
};
success?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
error?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
complete?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
};
param?: any;
// internal
uuid?: string;
nss?: {
name?: string;
event?: string[];
click?: string;
submit?: string;
popstate?: string;
scroll?: string;
data?: string;
class4html?: string;
requestHeader?: string;
};
origLocation?: HTMLAnchorElement;
destLocation?: HTMLAnchorElement;
retry?: boolean;
speedcheck?: boolean;
disable?: boolean;
option?: any;
};
}
interface JQueryStatic {
pjax: {
(setting?: PjaxSetting): any;
enable(): any;
disable(): any;
click(url: string, attr: { href?: string; }): any;
click(url: HTMLAnchorElement, attr: { href?: string; }): any;
click(url: JQuery, attr: { href?: string; }): any;
click(url: any, attr: { href?: string; }): any;
submit(url: string, attr: { action?: string; method?: string; }, data: any): any;
submit(url: HTMLFormElement, attr?: { action?: string; method?: string; }, data?: any): any;
submit(url: JQuery, attr?: { action?: string; method?: string; }, data?: any): any;
submit(url: any, attr?: { action?: string; method?: string; }, data?: any): any;
follow(event: JQueryEventObject, ajax: JQueryXHR, timeStamp?: number): boolean;
setCache(): any;
setCache(url: string): any;
setCache(url: string, data: string): any;
setCache(url: string, data: string, textStatus: string, XMLHttpRequest: XMLHttpRequest): any;
getCache(): any;
getCache(url: string): any;
removeCache(url: string): any;
removeCache(): any;
clearCache(): any;
};
}
interface JQuery {
pjax(setting?: PjaxSetting): any;
// Type definitions for jquery.pjax.ts by falsandtru
// Project: https://github.com/falsandtru/jquery.pjax.js/
// Definitions by: 新ゝ月 NewNotMoon <http://new.not-moon.net/>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
/// <reference path="../jquery/jquery.d.ts" />
interface PjaxSetting {
gns?: string;
ns?: string;
area?: any; // string, array, function( event, param, origUrl, destUrl )
link?: string;
filter?: any; // string, function()
form?: string;
scope?: Object;
state?: any; // any, function(event, param, origUrl, destUrl )
scrollTop?: any; // number, function( event, param, origUrl, destUrl ), null, false
scrollLeft?: any; // number, function( event, param, origUrl, destUrl ), null, false
scroll?: {
delay?: number;
record?: boolean //internal
queue?: number[] //internal
};
ajax?: JQueryAjaxSettings;
contentType?: string;
load?: {
head?: string;
css?: boolean;
script?: boolean;
execute?: boolean;
reload?: string;
ignore?: string;
sync?: boolean;
ajax?: JQueryAjaxSettings;
rewrite?: (element: any) => any;
redirect?: boolean;
};
interval?: number;
cache?: {
click?: boolean;
submit?: boolean;
popstate?: boolean;
get?: boolean;
post?: boolean;
page?: boolean;
size?: number;
mix?: number;
expires?: {
min?: number;
max?: number;
};
};
wait?: any; // number, function( event, param, origUrl, destUrl ): number
fallback?: any; // boolean, function( event, param, origUrl, destUrl ): boolean
fix?: {
location?: boolean;
history?: boolean;
scroll?: boolean;
reset?: boolean;
};
database?: boolean;
server?: {
query?: any; // string, object
header?: {
area?: boolean;
head?: boolean;
css?: boolean;
script?: boolean;
};
};
callback?: (event: JQueryEventObject, param: any) => any;
callbacks?: {
before?: (event: JQueryEventObject, param: any) => any;
after?: (event: JQueryEventObject, param: any) => any;
ajax?: {
xhr?: (event: JQueryEventObject, param: any) => any;
beforeSend?: (event: JQueryEventObject, param: any, data: any, ajaxSettings: any) => any;
dataFilter?: (event: JQueryEventObject, param: any, data: any, dataType: any) => any;
success?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
error?: (event: JQueryEventObject, param: any, XMLHttpRequest: XMLHttpRequest, textStatus: string, errorThrown: any) => any;
complete?: (event: JQueryEventObject, param: any, XMLHttpRequest: XMLHttpRequest, textStatus: string) => any;
done?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
fail?: (event: JQueryEventObject, param: any, XMLHttpRequest: XMLHttpRequest, textStatus: string, errorThrown: any) => any;
always?: (event: JQueryEventObject, param: any, XMLHttpRequest: XMLHttpRequest, textStatus: string) => any;
};
update?: {
before?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
after?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
cache?: {
before?: (event: JQueryEventObject, param: any, cache: any) => any;
after?: (event: JQueryEventObject, param: any, cache: any) => any;
};
redirect?: {
before?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
after?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
};
url?: {
before?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
after?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
};
title?: {
before?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
after?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
};
head?: {
before?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
after?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
};
content?: {
before?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
after?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
};
scroll?: {
before?: (event: JQueryEventObject, param: any) => any;
after?: (event: JQueryEventObject, param: any) => any;
};
css?: {
before?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
after?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
};
script?: {
before?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
after?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
};
render?: {
before?: (event: JQueryEventObject, param: any) => any;
after?: (event: JQueryEventObject, param: any) => any;
};
verify?: {
before?: (event: JQueryEventObject, param: any) => any;
after?: (event: JQueryEventObject, param: any) => any;
};
success?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
error?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
complete?: (event: JQueryEventObject, param: any, data: any, textStatus: string, XMLHttpRequest: XMLHttpRequest) => any;
};
param?: any;
// internal
uuid?: string;
nss?: {
name?: string;
event?: string[];
click?: string;
submit?: string;
popstate?: string;
scroll?: string;
data?: string;
class4html?: string;
requestHeader?: string;
};
origLocation?: HTMLAnchorElement;
destLocation?: HTMLAnchorElement;
retry?: boolean;
speedcheck?: boolean;
disable?: boolean;
option?: any;
};
}
interface JQueryStatic {
pjax: {
(setting?: PjaxSetting): any;
enable(): any;
disable(): any;
click(url: string, attr: { href?: string; }): any;
click(url: HTMLAnchorElement, attr: { href?: string; }): any;
click(url: JQuery, attr: { href?: string; }): any;
click(url: any, attr: { href?: string; }): any;
submit(url: string, attr: { action?: string; method?: string; }, data: any): any;
submit(url: HTMLFormElement, attr?: { action?: string; method?: string; }, data?: any): any;
submit(url: JQuery, attr?: { action?: string; method?: string; }, data?: any): any;
submit(url: any, attr?: { action?: string; method?: string; }, data?: any): any;
follow(event: JQueryEventObject, ajax: JQueryXHR, timeStamp?: number): boolean;
setCache(): any;
setCache(url: string): any;
setCache(url: string, data: string): any;
setCache(url: string, data: string, textStatus: string, XMLHttpRequest: XMLHttpRequest): any;
getCache(): any;
getCache(url: string): any;
removeCache(url: string): any;
removeCache(): any;
clearCache(): any;
};
}
interface JQuery {
pjax(setting?: PjaxSetting): any;
}

View File

@@ -1,9 +1,9 @@
/// <reference path="js-url.d.ts" />
url();
url('domain');
url(1);
url('domain', 'test.www.example.com/path/here');
url(-1, 'test.www.example.com/path/here');
/// <reference path="js-url.d.ts" />
url();
url('domain');
url(1);
url('domain', 'test.www.example.com/path/here');
url(-1, 'test.www.example.com/path/here');

View File

@@ -1,47 +1,47 @@
import Q = require('q');
import promisePool = require('promise-pool');
var pool = new promisePool.Pool<number>((taskDataId, index) => {
return Q.delay(Math.floor(Math.random() * 5000)).then(function () {
taskDataId == 0;
index == 0;
});
}, 20);
pool
.pause()
.delay(5000)
.then(function () {
pool.resume();
});
pool.retries == 0;
pool.retryInterval == 0;
pool.maxRetryInterval == 0;
pool.retryIntervalMultiplier == 0;
pool.add(0);
pool
.start(onProgress)
.then(result => {
result.total == 0;
return pool.reset();
})
.then(() => {
return pool.start(onProgress);
})
.then(result => {
result.total == 0;
return pool.reset();
})
.then(() => {
pool.endless == true;
});
function onProgress(progress: promisePool.IProgress) {
progress.success == true;
progress.fulfilled == 0;
progress.total == 0;
progress.index == 0;
import Q = require('q');
import promisePool = require('promise-pool');
var pool = new promisePool.Pool<number>((taskDataId, index) => {
return Q.delay(Math.floor(Math.random() * 5000)).then(function () {
taskDataId == 0;
index == 0;
});
}, 20);
pool
.pause()
.delay(5000)
.then(function () {
pool.resume();
});
pool.retries == 0;
pool.retryInterval == 0;
pool.maxRetryInterval == 0;
pool.retryIntervalMultiplier == 0;
pool.add(0);
pool
.start(onProgress)
.then(result => {
result.total == 0;
return pool.reset();
})
.then(() => {
return pool.start(onProgress);
})
.then(result => {
result.total == 0;
return pool.reset();
})
.then(() => {
pool.endless == true;
});
function onProgress(progress: promisePool.IProgress) {
progress.success == true;
progress.fulfilled == 0;
progress.total == 0;
progress.index == 0;
}

View File

@@ -1,124 +1,124 @@
// Type definitions for promise-pool
// Project: https://github.com/vilic/promise-pool
// Definitions by: VILIC VANE <https://github.com/vilic>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
/// <reference path="../q-retry/q-retry.d.ts" />
declare module "promise-pool" {
/**
* interface for the final result.
*/
export interface IResult {
fulfilled: number;
rejected: number;
total: number;
}
/**
* interface for progress data.
*/
export interface IProgress {
index: number;
success: boolean;
error: any;
retries: number;
fulfilled: number;
rejected: number;
pending: number;
total: number;
}
/**
* tasks pool that manages concurrency.
*/
export class Pool<T> {
/**
* (get/set) the max concurrency of this task pool.
*/
public concurrency: number;
private _tasksData;
/**
* (get/set) the processor function that handles tasks data.
*/
public processor: (data: T, index: number) => Q.IPromise<void>;
private _deferred;
private _pauseDeferred;
/**
* (get) the number of successful tasks.
*/
public fulfilled: number;
/**
* (get) the number of failed tasks.
*/
public rejected: number;
/**
* (get) the number of pending tasks.
*/
public pending: number;
/**
* (get) the number of completed tasks and pending tasks in total.
*/
public total: number;
/**
* (get/set) indicates whether this task pool is endless, if so, tasks can still be added even after all previous tasks have been fulfilled.
*/
public endless: boolean;
/**
* (get/set) defaults to 0, the number or retries that this task pool will take for every single task, could be Infinity.
*/
public retries: number;
/**
* (get/set) defaults to 0, interval (milliseconds) between each retries.
*/
public retryInterval: number;
/**
* (get/set) defaults to Infinity, max retry interval when retry interval multiplier applied.
*/
public maxRetryInterval: number;
/**
* (get/set) defaults to 1, the multiplier applies to interval after every retry.
*/
public retryIntervalMultiplier: number;
private _index;
private _currentConcurrency;
public onProgress: (progress: IProgress) => void;
/**
* initialize a task pool.
* @param processor a function takes the data and index as parameters and returns a promise.
* @param concurrency the concurrency of this task pool.
* @param endless defaults to false. indicates whether this task pool is endless, if so, tasks can still be added even after all previous tasks have been fulfilled.
* @param tasksData an initializing array of task data.
*/
constructor(processor: (data: T, index: number) => Q.IPromise<void>, concurrency: number, endless?: boolean, tasksData?: T[]);
/**
* add a data item.
* @param taskData task data to add.
*/
public add(taskData: T): void;
/**
* add data items.
* @param tasskData tasks data to add.
*/
public add(tasksData: T[]): void;
/**
* start tasks, return a promise that will be fulfilled after all tasks accomplish if endless is false.
* @param onProgress a callback that will be triggered every time when a single task is fulfilled.
*/
public start(onProgress?: (progress: IProgress) => void): Q.Promise<IResult>;
private _start();
private _process(data, index);
private _notifyProgress(index, success, err, retries);
private _next();
/**
* pause tasks and return a promise that will be fulfilled after the running tasks accomplish. this will wait for running tasks to complete instead of aborting them.
*/
public pause(): Q.Promise<void>;
/**
* resume tasks.
*/
public resume(): void;
/**
* pause tasks, then clear pending tasks data and reset counters. return a promise that will be fulfilled after resetting accomplish.
*/
public reset(): Q.Promise<void>;
}
// Type definitions for promise-pool
// Project: https://github.com/vilic/promise-pool
// Definitions by: VILIC VANE <https://github.com/vilic>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
/// <reference path="../q-retry/q-retry.d.ts" />
declare module "promise-pool" {
/**
* interface for the final result.
*/
export interface IResult {
fulfilled: number;
rejected: number;
total: number;
}
/**
* interface for progress data.
*/
export interface IProgress {
index: number;
success: boolean;
error: any;
retries: number;
fulfilled: number;
rejected: number;
pending: number;
total: number;
}
/**
* tasks pool that manages concurrency.
*/
export class Pool<T> {
/**
* (get/set) the max concurrency of this task pool.
*/
public concurrency: number;
private _tasksData;
/**
* (get/set) the processor function that handles tasks data.
*/
public processor: (data: T, index: number) => Q.IPromise<void>;
private _deferred;
private _pauseDeferred;
/**
* (get) the number of successful tasks.
*/
public fulfilled: number;
/**
* (get) the number of failed tasks.
*/
public rejected: number;
/**
* (get) the number of pending tasks.
*/
public pending: number;
/**
* (get) the number of completed tasks and pending tasks in total.
*/
public total: number;
/**
* (get/set) indicates whether this task pool is endless, if so, tasks can still be added even after all previous tasks have been fulfilled.
*/
public endless: boolean;
/**
* (get/set) defaults to 0, the number or retries that this task pool will take for every single task, could be Infinity.
*/
public retries: number;
/**
* (get/set) defaults to 0, interval (milliseconds) between each retries.
*/
public retryInterval: number;
/**
* (get/set) defaults to Infinity, max retry interval when retry interval multiplier applied.
*/
public maxRetryInterval: number;
/**
* (get/set) defaults to 1, the multiplier applies to interval after every retry.
*/
public retryIntervalMultiplier: number;
private _index;
private _currentConcurrency;
public onProgress: (progress: IProgress) => void;
/**
* initialize a task pool.
* @param processor a function takes the data and index as parameters and returns a promise.
* @param concurrency the concurrency of this task pool.
* @param endless defaults to false. indicates whether this task pool is endless, if so, tasks can still be added even after all previous tasks have been fulfilled.
* @param tasksData an initializing array of task data.
*/
constructor(processor: (data: T, index: number) => Q.IPromise<void>, concurrency: number, endless?: boolean, tasksData?: T[]);
/**
* add a data item.
* @param taskData task data to add.
*/
public add(taskData: T): void;
/**
* add data items.
* @param tasskData tasks data to add.
*/
public add(tasksData: T[]): void;
/**
* start tasks, return a promise that will be fulfilled after all tasks accomplish if endless is false.
* @param onProgress a callback that will be triggered every time when a single task is fulfilled.
*/
public start(onProgress?: (progress: IProgress) => void): Q.Promise<IResult>;
private _start();
private _process(data, index);
private _notifyProgress(index, success, err, retries);
private _next();
/**
* pause tasks and return a promise that will be fulfilled after the running tasks accomplish. this will wait for running tasks to complete instead of aborting them.
*/
public pause(): Q.Promise<void>;
/**
* resume tasks.
*/
public resume(): void;
/**
* pause tasks, then clear pending tasks data and reset counters. return a promise that will be fulfilled after resetting accomplish.
*/
public reset(): Q.Promise<void>;
}
}

View File

@@ -1,39 +1,39 @@
import Q = require('q-retry');
Q
.retry(() => {
return '';
})
.then(str => {
str.charAt;
return 0;
})
.retry(num => {
num.toFixed;
})
.retry(() => {
}, 5)
.retry(() => {
}, (reason, retries) => {
retries.toFixed;
})
.retry(() => {
}, (reason, retries) => {
retries.toFixed;
}, 10)
.retry(() => {
return '';
}, (reason, retries) => {
}, {
limit: 10,
interval: 1000,
maxInterval: 20000,
intervalMultiplier: 1.5
})
.then(str => {
str.charAt;
import Q = require('q-retry');
Q
.retry(() => {
return '';
})
.then(str => {
str.charAt;
return 0;
})
.retry(num => {
num.toFixed;
})
.retry(() => {
}, 5)
.retry(() => {
}, (reason, retries) => {
retries.toFixed;
})
.retry(() => {
}, (reason, retries) => {
retries.toFixed;
}, 10)
.retry(() => {
return '';
}, (reason, retries) => {
}, {
limit: 10,
interval: 1000,
maxInterval: 20000,
intervalMultiplier: 1.5
})
.then(str => {
str.charAt;
});

76
q-retry/q-retry.d.ts vendored
View File

@@ -1,39 +1,39 @@
// Type definitions for q-retry
// Project: https://github.com/vilic/q-retry
// Definitions by: VILIC VANE <https://github.com/vilic>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
/// <reference path="../q/Q.d.ts" />
declare module Q {
export interface IRetryOptions {
limit?: number;
interval?: number;
maxInterval?: number;
intervalMultiplier?: number;
}
export function retry<U>(process: () => IPromise<U>, onFail: (reason: any, retries: number) => void, limit: number): Promise<U>;
export function retry<U>(process: () => IPromise<U>, onFail: (reason: any, retries: number) => void, options?: IRetryOptions): Promise<U>;
export function retry<U>(process: () => IPromise<U>, limit: number): Promise<U>;
export function retry<U>(process: () => IPromise<U>, options?: IRetryOptions): Promise<U>;
export function retry<U>(process: () => U, onFail: (reason: any, retries: number) => void, limit: number): Promise<U>;
export function retry<U>(process: () => U, onFail: (reason: any, retries: number) => void, options?: IRetryOptions): Promise<U>;
export function retry<U>(process: () => U, limit: number): Promise<U>;
export function retry<U>(process: () => U, options?: IRetryOptions): Promise<U>;
interface Promise<T> {
retry<U>(process: (value: T) => IPromise<U>, onFail: (reason: any, retries: number) => void, limit: number): Promise<U>;
retry<U>(process: (value: T) => IPromise<U>, onFail: (reason: any, retries: number) => void, options?: IRetryOptions): Promise<U>;
retry<U>(process: (value: T) => IPromise<U>, limit: number): Promise<U>;
retry<U>(process: (value: T) => IPromise<U>, options?: IRetryOptions): Promise<U>;
retry<U>(process: (value: T) => U, onFail: (reason: any, retries: number) => void, limit: number): Promise<U>;
retry<U>(process: (value: T) => U, onFail: (reason: any, retries: number) => void, options?: IRetryOptions): Promise<U>;
retry<U>(process: (value: T) => U, limit: number): Promise<U>;
retry<U>(process: (value: T) => U, options?: IRetryOptions): Promise<U>;
}
}
declare module "q-retry" {
export = Q;
// Type definitions for q-retry
// Project: https://github.com/vilic/q-retry
// Definitions by: VILIC VANE <https://github.com/vilic>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
/// <reference path="../q/Q.d.ts" />
declare module Q {
export interface IRetryOptions {
limit?: number;
interval?: number;
maxInterval?: number;
intervalMultiplier?: number;
}
export function retry<U>(process: () => IPromise<U>, onFail: (reason: any, retries: number) => void, limit: number): Promise<U>;
export function retry<U>(process: () => IPromise<U>, onFail: (reason: any, retries: number) => void, options?: IRetryOptions): Promise<U>;
export function retry<U>(process: () => IPromise<U>, limit: number): Promise<U>;
export function retry<U>(process: () => IPromise<U>, options?: IRetryOptions): Promise<U>;
export function retry<U>(process: () => U, onFail: (reason: any, retries: number) => void, limit: number): Promise<U>;
export function retry<U>(process: () => U, onFail: (reason: any, retries: number) => void, options?: IRetryOptions): Promise<U>;
export function retry<U>(process: () => U, limit: number): Promise<U>;
export function retry<U>(process: () => U, options?: IRetryOptions): Promise<U>;
interface Promise<T> {
retry<U>(process: (value: T) => IPromise<U>, onFail: (reason: any, retries: number) => void, limit: number): Promise<U>;
retry<U>(process: (value: T) => IPromise<U>, onFail: (reason: any, retries: number) => void, options?: IRetryOptions): Promise<U>;
retry<U>(process: (value: T) => IPromise<U>, limit: number): Promise<U>;
retry<U>(process: (value: T) => IPromise<U>, options?: IRetryOptions): Promise<U>;
retry<U>(process: (value: T) => U, onFail: (reason: any, retries: number) => void, limit: number): Promise<U>;
retry<U>(process: (value: T) => U, onFail: (reason: any, retries: number) => void, options?: IRetryOptions): Promise<U>;
retry<U>(process: (value: T) => U, limit: number): Promise<U>;
retry<U>(process: (value: T) => U, options?: IRetryOptions): Promise<U>;
}
}
declare module "q-retry" {
export = Q;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,21 +1,21 @@
/// <reference path="tspromise.d.ts" />
import Promise = require('tspromise');
var MyFuncFunc = Promise.async((a: boolean, b: number) => {
console.log('[a] ' + a);
yield(Promise.waitAsync(1000));
console.log('[b]' + b);
});
MyFuncFunc(true, 10);
Promise.all([Promise.waitAsync(10), Promise.waitAsync(20)]).then(() => {
return new Promise<String>((resolve, reject) => {
resolve('test');
});
}).then(() => {
throw (new Error());
}).catch((e) => {
console.log(e.message);
/// <reference path="tspromise.d.ts" />
import Promise = require('tspromise');
var MyFuncFunc = Promise.async((a: boolean, b: number) => {
console.log('[a] ' + a);
yield(Promise.waitAsync(1000));
console.log('[b]' + b);
});
MyFuncFunc(true, 10);
Promise.all([Promise.waitAsync(10), Promise.waitAsync(20)]).then(() => {
return new Promise<String>((resolve, reject) => {
resolve('test');
});
}).then(() => {
throw (new Error());
}).catch((e) => {
console.log(e.message);
});

View File

@@ -6,84 +6,50 @@
//
declare var Hogan: string;
// Countries
// Prefetches data, stores it in localStorage, and searches it on the client
$('.example-countries .typeahead').typeahead({
name: 'countries',
prefetch: '../data/countries.json',
limit: 10
var substringMatcher = function (strs: any) {
return function findMatches(q: any, cb: any) {
var matches: any, substrRegex: any;
// an array that will be populated with substring matches
matches = [];
// regex used to determine if a string contains the substring `q`
substrRegex = new RegExp(q, 'i');
// iterate through the pool of strings and for any string that
// contains the substring `q`, add it to the `matches` array
$.each(strs, function (i, str) {
if (substrRegex.test(str)) {
// the typeahead jQuery plugin expects suggestions to a
// JavaScript object, refer to typeahead docs for more info
matches.push({ value: str });
}
});
// Open Source Projects by Twitter
// Defines a custom template and template engine for rendering suggestions
$('.example-twitter-oss .typeahead').typeahead({
name: 'twitter-oss',
prefetch: '../data/repos.json',
template: [
'<p class="repo-language">{{language}}</p>',
'<p class="repo-name">{{name}}</p>',
'<p class="repo-description">{{description}}</p>'
].join(''),
engine: Hogan
});
cb(matches);
};
};
// Arabic Phrases
// Hardcoded list showing Right - To - Left(RTL) support
$('.example-arabic .typeahead').typeahead({
name: 'arabic',
local: [
"الإنجليزية",
"نعم",
"لا",
"مرحبا",
"کيف الحال؟",
"أهلا",
"مع السلامة",
"لا أتكلم العربية",
"لا أفهم",
"أنا جائع"
]
});
var states = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California',
'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii',
'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana',
'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota',
'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire',
'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota',
'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island',
'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont',
'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'
];
// NBA and NHL Teams
// Two datasets that are prefetched, stored, and searched on the client
$('.example-sports .typeahead').typeahead([
{
name: 'nba-teams',
prefetch: '../data/nba.json',
header: '<h3 class="league-name">NBA Teams</h3>'
},
{
name: 'nhl-teams',
prefetch: '../data/nhl.json',
header: '<h3 class="league-name">NHL Teams</h3>'
}
]);
// Best Picture Winners
// Prefetches some data then relies on remote requests for suggestions when prefetched data is insufficient
$('.example-films .typeahead').typeahead([
{
name: 'best-picture-winners',
remote: '../data/films/queries/%QUERY.json',
prefetch: '../data/films/post_1960.json',
template: '<p><strong>{{value}}</strong> {{year}}</p>',
engine: Hogan
}
]);
// Countries - Modified the first test here to add options
// Specifies options to display hint with a highlight and adds a minimum length restriction for search
// Prefetches data, stores it in localStorage, and searches it on the client
$('.example-countries .typeahead').typeahead({
$('#the-basics .typeahead').typeahead({
hint: true,
highlight: true,
minLength: 2
minLength: 1
},
{
name: 'countries',
prefetch: '../data/countries.json',
limit: 10
name: 'states',
displayKey: 'value',
source: substringMatcher(states)
});
module valueTest {

View File

@@ -1,53 +1,71 @@
// Type definitions for typeahead.js 0.9.3
// Type definitions for typeahead.js 0.10.4
// Project: http://twitter.github.io/typeahead.js/
// Definitions by: Ivaylo Gochkov <https://github.com/igochkov/>
// Definitions by: Ivaylo Gochkov <https://github.com/igochkov/>, Gidon Junge <https://github.com/gjunge/>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
/// <reference path="../jquery/jquery.d.ts"/>
interface JQuery {
/**
* Turns an input[type="text"] element into a typeahead.
*
* @constructor
* @param dataset Single dataset
*/
typeahead(dataset: Twitter.Typeahead.Dataset): JQuery;
/**
* Turns an input[type="text"] element into a typeahead.
*
* @constructor
* @param dataset Array of datasets
*/
typeahead(datasets: Twitter.Typeahead.Dataset[]): JQuery;
/**
* Destroys previously initialized typeaheads. This entails reverting
* DOM modifications and removing event handlers.
*
* @constructor
*
* @constructor
* @param methodName Method 'destroy'
*/
*/
typeahead(methodName: 'destroy'): JQuery;
/**
* Sets the current query of the typeahead. This is always preferable to
* using $("input.typeahead").val(query), which will result in unexpected
* behavior. To clear the query, simply set it to an empty string.
* Opens the dropdown menu of typeahead. Note that being open does not mean that the menu is visible.
* The menu is only visible when it is open and has content.
*
* @constructor
* @param methodName Method 'setQuery'
* @param query The query to be set
* @param methodName Method 'open'
*/
typeahead(methodName: 'setQuery', query: string): JQuery;
typeahead(methodName: 'open'): JQuery;
/**
* Accommodates the destroy and setQuery overloads.
* Closes the dropdown menu of typeahead.
*
* @constructor
* @param methodName Method 'close'
*/
typeahead(methodName: 'close'): JQuery;
/**
* Returns the current value of the typeahead.
* The value is the text the user has entered into the input element.
*
* @constructor
* @param methodName Method name ('destroy' or 'setQuery')
* @param query The query to be set in case method 'setQuery' is used.
* @param methodName Method 'val'
*/
typeahead(methodName: 'val'): string;
/**
* Sets the value of the typeahead. This should be used in place of jQuery#val.
*
* @constructor
* @param methodName Method 'val'
* @param query The value to be set
*/
typeahead(methodName: 'val', val: string): JQuery;
/**
* Accommodates the val overload.
*
* @constructor
* @param methodName Method name ('val')
*/
typeahead(methodName: string): string;
/**
* Accommodates multiple overloads.
*
* @constructor
* @param methodName Method name
* @param query The query to be set in case method 'val' is used.
*/
typeahead(methodName: string, query: string): JQuery;
@@ -57,20 +75,19 @@ interface JQuery {
*
* @constructor
* @param options ('hint' or 'highlight' or 'minLength' all of which are optional)
* @param dataset Array of datasets
* @param datasets Array of datasets
*/
typeahead(options: Twitter.Typeahead.Options, dataset: Twitter.Typeahead.Dataset): JQuery;
typeahead(options: Twitter.Typeahead.Options, datasets: Twitter.Typeahead.Dataset[]): JQuery;
/**
* Returns the current value of the typeahead. The value is the text the user has entered into the input element.
* Accomodates specifying options such as hint and highlight.
* This is in correspondence to the examples mentioned in http://twitter.github.io/typeahead.js/examples/
*
* @constructor
* @param options ('hint' or 'highlight' or 'minLength' all of which are optional)
* @param datasets One or more datasets passed in as arguments.
*/
typeahead(methodName: 'val'): string;
typeahead(methodName: string): string;
/**
* Sets the value of the typeahead. This should be used in place of jQuery#val.
*/
typeahead(methodName: 'val', value: string): JQuery;
typeahead(options: Twitter.Typeahead.Options, ... datasets: Twitter.Typeahead.Dataset[]): JQuery;
}
declare module Twitter.Typeahead {
@@ -82,188 +99,70 @@ declare module Twitter.Typeahead {
*/
interface Dataset {
/**
* The string used to identify the dataset. Used by typeahead.js
* to cache intelligently.
* The backing data source for suggestions.
* Expected to be a function with the signature (query, cb).
* It is expected that the function will compute the suggestion set (i.e. an array of JavaScript objects) for query and then invoke cb with said set.
* cb can be invoked synchronously or asynchronously.
*
*/
name: string;
/**
* The key used to access the value of the datum in the datum object.
* Defaults to value.
*/
valueKey?: string;
/**
* The max number of suggestions from the dataset to display
* for a given query. Defaults to 5.
*/
limit?: number;
/**
* The template used to render suggestions. Can be a string or
* a precompiled template. If not provided, suggestions will render
* as their value contained in a <p> element (i.e. <p>value</p>).
*/
template?: any;
/**
* The template engine used to compile/render template if it is a
* string. Any engine can use used as long as it adheres to the
* expected API. Required if template is a string.
*/
engine?: string;
/**
* The header rendered before suggestions in the dropdown menu.
* Can be either a DOM element or HTML.
*/
header?: any;
/**
* The footer rendered after suggestions in the dropdown menu.
* Can be either a DOM element or HTML.
*/
footer?: any;
/**
* An array of datums or strings.
*/
local?: any[];
/**
* Can be a URL to a JSON file containing an array of datums or,
* if more configurability is needed, a prefetch options object.
*/
prefetch?: any;
/**
* Can be a URL to fetch suggestions from when the data provided by
* local and prefetch is insufficient or, if more configurability is
* needed, a remote options object.
*/
remote?: any;
}
source: (query: string, cb: (result: any) => void) => void;
/**
* Prefetched data is fetched and processed on initialization.
* If the browser supports localStorage, the processed data will be cached
* there to prevent additional network requests on subsequent page loads.
*/
interface PrefetchOptions {
/**
* A URL to a JSON file containing an array of datums. Required.
* The name of the dataset.
* This will be appended to tt-dataset- to form the class name of the containing DOM element.
* Must only consist of underscores, dashes, letters (a-z), and numbers.
* Defaults to a random number.
*/
url: string;
name?: string;
/**
* The time (in milliseconds) the prefetched data should be cached
* in localStorage. Defaults to 86400000 (1 day).
* For a given suggestion object, determines the string representation of it.
* This will be used when setting the value of the input control after a suggestion is selected. Can be either a key string or a function that transforms a suggestion object into a string.
* Defaults to value.
*/
ttl?: number;
displayKey?: string;
/**
* A function that transforms the response body into an array of datums.
*
* @param parsedResponse Response body
* A hash of templates to be used when rendering the dataset.
* Note a precompiled template is a function that takes a JavaScript object as its first argument and returns a HTML string.
*/
filter?: (parsedResponse: any) => Datum[];
templates?: Templates;
}
/**
* Remote data is only used when the data provided by local and prefetch
* is insufficient. In order to prevent an obscene number of requests
* being made to remote endpoint, typeahead.js rate-limits remote requests.
*/
interface RemoteOptions {
/**
* A URL to make requests to when the data provided by local and
* prefetch is insufficient. Required.
*/
url: string;
interface Templates {
/**
* The type of data you're expecting from the server. Defaults to json.
* @see http://api.jquery.com/jQuery.ajax/ for more info.
* Rendered when 0 suggestions are available for the given query.
* Can be either a HTML string or a precompiled template.
* If it's a precompiled template, the passed in context will contain query
*/
dataType?: string;
empty?: string;
/**
* Determines whether or not the browser will cache responses.
* @see http://api.jquery.com/jQuery.ajax/ for more info.
* Rendered at the bottom of the dataset.
* Can be either a HTML string or a precompiled template.
* If it's a precompiled template, the passed in context will contain query and isEmpty.
*/
cache?: boolean;
footer?: string;
/**
* Sets a timeout for requests.
* @see http://api.jquery.com/jQuery.ajax/ for more info.
* Rendered at the top of the dataset.
* Can be either a HTML string or a precompiled template.
* If it's a precompiled template, the passed in context will contain query and isEmpty.
*/
timeout?: number;
header?: string;
/**
* The pattern in url that will be replaced with the user's query
* when a request is made. Defaults to %QUERY.
* Used to render a single suggestion.
* If set, this has to be a precompiled template.
* The associated suggestion object will serve as the context.
* Defaults to the value of displayKey wrapped in a p tag i.e. <p>{{value}}</p>.
*/
wildcard?: string;
suggestion?: string;
/**
* Overrides the request URL. If set, no wildcard substitution will
* be performed on url.
*
* @param url Replacement URL
* @param uriEncodedQuery Encoded query
* @returns A valid URL
*/
replace?: (url: string, uriEncodedQuery: string) => string;
/**
* The function used for rate-limiting network requests.
* Can be either 'debounce' or 'throttle'. Defaults to 'debounce'.
*/
rateLimitFn?: string;
/**
* The time interval in milliseconds that will be used by rateLimitFn.
* Defaults to 300.
*/
rateLimitWait?: number;
/**
* The max number of parallel requests typeahead.js can have pending.
* Defaults to 6.
*/
maxParallelRequests?: number;
/**
* A pre-request callback. Can be used to set custom headers.
* @see http://api.jquery.com/jQuery.ajax/ for more info.
*/
beforeSend?: (jqXhr: JQueryXHR, settings: JQueryAjaxSettings) => void;
/**
* Transforms the response body into an array of datums.
*
* @param parsedResponse Response body
*/
filter?: (parsedResponse: any) => Datum[];
}
/**
* The individual units that compose datasets are called datums.
* The canonical form of a datum is an object with a value property and
* a tokens property.
*
* For ease of use, datums can also be represented as a string.
* Strings found in place of datum objects are implicitly converted
* to a datum object.
*
* When datums are rendered as suggestions, the datum object is the
* context passed to the template engine. This means if you include any
* arbitrary properties in datum objects, those properties will be
* available to the template used to render suggestions.
*/
interface Datum {
/**
* The string that represents the underlying value of the datum
*/
value: string;
/**
* A collection of single-word strings that aid typeahead.js in
* matching datums with a given query.
*/
tokens: string[];
}
/**
* When initializing a typeahead, there are a number of options you can configure.