mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-10-03 22:37:03 +00:00
Merge pull request #10708 from DefinitelyTyped/types-2.0-20160818
Types 2.0 20160818
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
/// <reference types="auth0-js" />
|
||||
|
||||
var auth0 = new Auth0({
|
||||
domain: 'mine.auth0.com',
|
||||
clientID: 'dsa7d77dsa7d7',
|
||||
callbackURL: 'http://my-app.com/callback',
|
||||
callbackOnLocationHash: true
|
||||
});
|
||||
|
||||
auth0.login({
|
||||
connection: 'google-oauth2',
|
||||
popup: true,
|
||||
popupOptions: {
|
||||
width: 450,
|
||||
height: 800
|
||||
}
|
||||
}, (err, profile, idToken, accessToken, state) => {
|
||||
if (err) {
|
||||
alert("something went wrong: " + err.message);
|
||||
return;
|
||||
}
|
||||
alert('hello ' + profile.name);
|
||||
});
|
||||
Vendored
+132
@@ -0,0 +1,132 @@
|
||||
// Type definitions for Auth0.js
|
||||
// Project: https://github.com/auth0/auth0.js
|
||||
// Definitions by: Robert McLaws <https://github.com/advancedrei>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
/** Extensions to the browser Window object. */
|
||||
interface Window {
|
||||
/** Allows you to pass the id_token to other APIs, as specified in https://docs.auth0.com/apps-apis */
|
||||
token: string;
|
||||
}
|
||||
|
||||
/** This is the interface for the main Auth0 client. */
|
||||
interface Auth0Static {
|
||||
|
||||
new(options: Auth0ClientOptions): Auth0Static;
|
||||
changePassword(options: any, callback?: Function): void;
|
||||
decodeJwt(jwt: string): any;
|
||||
login(options: any, callback: (error?: Auth0Error, profile?: Auth0UserProfile, id_token?: string, access_token?: string, state?: string) => any): void;
|
||||
loginWithPopup(options: Auth0LoginOptions, callback: (error?: Auth0Error, profile?: Auth0UserProfile, id_token?: string, access_token?: string, state?: string) => any): void;
|
||||
loginWithResourceOwner(options: Auth0LoginOptions, callback: (error?: Auth0Error, profile?: Auth0UserProfile, id_token?: string, access_token?: string, state?: any) => any): void;
|
||||
loginWithUsernamePassword(options: Auth0LoginOptions, callback: (error?: Auth0Error, profile?: Auth0UserProfile, id_token?: string, access_token?: string, state?: string) => any): void;
|
||||
logout(query: string): void;
|
||||
getConnections(callback?: Function): void;
|
||||
refreshToken(refreshToken: string, callback: (error?: Auth0Error, delegationResult?: Auth0DelegationToken) => any): void;
|
||||
getDelegationToken(targetClientId: string, id_token: string, options: any, callback: (error?: Auth0Error, delegationResult?: Auth0DelegationToken) => any): void;
|
||||
getProfile(id_token: string, callback?: Function): Auth0UserProfile;
|
||||
getSSOData(withActiveDirectories: any, callback?: Function): void;
|
||||
parseHash(hash: string): Auth0DecodedHash;
|
||||
signup(options: Auth0SignupOptions, callback: Function): void;
|
||||
validateUser(options: any, callback: (error?: Auth0Error, valid?: any) => any): void;
|
||||
}
|
||||
|
||||
/** Represents constructor options for the Auth0 client. */
|
||||
interface Auth0ClientOptions {
|
||||
clientID: string;
|
||||
callbackURL: string;
|
||||
callbackOnLocationHash?: boolean;
|
||||
domain: string;
|
||||
forceJSONP?: boolean;
|
||||
}
|
||||
|
||||
/** Represents a normalized UserProfile. */
|
||||
interface Auth0UserProfile {
|
||||
email: string;
|
||||
family_name: string;
|
||||
gender: string;
|
||||
given_name: string;
|
||||
locale: string;
|
||||
name: string;
|
||||
nickname: string;
|
||||
picture: string;
|
||||
user_id: string;
|
||||
/** Represents one or more Identities that may be associated with the User. */
|
||||
identities: Auth0Identity[];
|
||||
user_metadata?: any;
|
||||
app_metadata?: any;
|
||||
}
|
||||
|
||||
/** Represents an Auth0UserProfile that has a Microsoft Account as the primary identity. */
|
||||
interface MicrosoftUserProfile extends Auth0UserProfile {
|
||||
emails: string[];
|
||||
}
|
||||
|
||||
/** Represents an Auth0UserProfile that has an Office365 account as the primary identity. */
|
||||
interface Office365UserProfile extends Auth0UserProfile {
|
||||
tenantid: string;
|
||||
upn: string;
|
||||
}
|
||||
|
||||
/** Represents an Auth0UserProfile that has an Active Directory account as the primary identity. */
|
||||
interface AdfsUserProfile extends Auth0UserProfile {
|
||||
issuer: string;
|
||||
}
|
||||
|
||||
/** Represents multiple identities assigned to a user. */
|
||||
interface Auth0Identity {
|
||||
access_token: string;
|
||||
connection: string;
|
||||
isSocial: boolean;
|
||||
provider: string;
|
||||
user_id: string;
|
||||
}
|
||||
|
||||
interface Auth0DecodedHash {
|
||||
access_token: string;
|
||||
id_token: string;
|
||||
profile: Auth0UserProfile;
|
||||
state: any;
|
||||
}
|
||||
|
||||
interface Auth0PopupOptions {
|
||||
width: number;
|
||||
height: number;
|
||||
}
|
||||
|
||||
interface Auth0LoginOptions {
|
||||
auto_login?: boolean;
|
||||
connection?: string;
|
||||
email?: string;
|
||||
username?: string;
|
||||
password?: string;
|
||||
popup?: boolean;
|
||||
popupOptions?: Auth0PopupOptions;
|
||||
}
|
||||
|
||||
interface Auth0SignupOptions extends Auth0LoginOptions {
|
||||
auto_login: boolean;
|
||||
}
|
||||
|
||||
interface Auth0Error {
|
||||
code: any;
|
||||
details: any;
|
||||
name: string;
|
||||
message: string;
|
||||
status: any;
|
||||
}
|
||||
|
||||
/** Represents the response from an API Token Delegation request. */
|
||||
interface Auth0DelegationToken {
|
||||
/** The length of time in seconds the token is valid for. */
|
||||
expires_in: string;
|
||||
/** The JWT for delegated access. */
|
||||
id_token: string;
|
||||
/** The type of token being returned. Possible values: "Bearer" */
|
||||
token_type: string;
|
||||
}
|
||||
|
||||
declare const Auth0: Auth0Static;
|
||||
|
||||
declare module "auth0" {
|
||||
export = Auth0
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"target": "es6",
|
||||
"noImplicitAny": true,
|
||||
"strictNullChecks": false,
|
||||
"baseUrl": "../",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
],
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"auth0-js-tests.ts"
|
||||
]
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
/// <reference types="auth0" />
|
||||
/// <reference types="auth0-js" />
|
||||
|
||||
|
||||
const CLIENT_ID = "YOUR_AUTH0_APP_CLIENTID";
|
||||
|
||||
Vendored
+1
-1
@@ -3,7 +3,7 @@
|
||||
// Definitions by: Brian Caruso <https://github.com/carusology>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
/// <reference types="auth0" />
|
||||
/// <reference types="auth0-js" />
|
||||
|
||||
interface Auth0LockAdditionalSignUpFieldOption {
|
||||
value: string;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/// <reference types="auth0" />
|
||||
/// <reference types="auth0-js" />
|
||||
|
||||
|
||||
var widget: Auth0WidgetStatic = new Auth0Widget({
|
||||
|
||||
Vendored
+1
-1
@@ -3,7 +3,7 @@
|
||||
// Definitions by: Robert McLaws <https://github.com/advancedrei>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
/// <reference types="auth0" />
|
||||
/// <reference types="auth0-js" />
|
||||
|
||||
|
||||
interface Auth0WidgetStatic {
|
||||
|
||||
+47
-19
@@ -1,23 +1,51 @@
|
||||
/// <reference types="auth0" />
|
||||
|
||||
var auth0 = new Auth0({
|
||||
domain: 'mine.auth0.com',
|
||||
clientID: 'dsa7d77dsa7d7',
|
||||
callbackURL: 'http://my-app.com/callback',
|
||||
callbackOnLocationHash: true
|
||||
import * as auth0 from 'auth0';
|
||||
|
||||
const management = new auth0.ManagementClient({
|
||||
token: '{YOUR_API_V2_TOKEN}',
|
||||
domain: '{YOUR_ACCOUNT}.auth0.com'
|
||||
});
|
||||
|
||||
auth0.login({
|
||||
connection: 'google-oauth2',
|
||||
popup: true,
|
||||
popupOptions: {
|
||||
width: 450,
|
||||
height: 800
|
||||
}
|
||||
}, (err, profile, idToken, accessToken, state) => {
|
||||
if (err) {
|
||||
alert("something went wrong: " + err.message);
|
||||
return;
|
||||
}
|
||||
alert('hello ' + profile.name);
|
||||
});
|
||||
const auth = new auth0.AuthenticationClient({
|
||||
domain: '{YOUR_ACCOUNT}.auth0.com',
|
||||
clientId: '{OPTIONAL_CLIENT_ID}'
|
||||
});
|
||||
|
||||
// Using a callback.
|
||||
management.getUsers((err: Error, users: auth0.User[]) => {
|
||||
if (err) {
|
||||
// Handle error.
|
||||
}
|
||||
console.log(users);
|
||||
});
|
||||
|
||||
// Using a Promise.
|
||||
management
|
||||
.getUsers()
|
||||
.then((users) => {
|
||||
console.log(users);
|
||||
})
|
||||
.catch((err) => {
|
||||
// Handle the error.
|
||||
});
|
||||
|
||||
management
|
||||
.createUser({
|
||||
connection: 'My-Connection',
|
||||
email: 'hi@me.co',
|
||||
}).then((user) => {
|
||||
console.log(user);
|
||||
}).catch((err) => {
|
||||
// Handle the error.
|
||||
});
|
||||
|
||||
auth
|
||||
.requestChangePasswordEmail({
|
||||
connection: 'My-Connection',
|
||||
email: 'hi@me.co',
|
||||
}).then((response) => {
|
||||
console.log(response);
|
||||
}).catch((err) => {
|
||||
// Handle the error.
|
||||
});
|
||||
|
||||
Vendored
+70
-113
@@ -1,132 +1,89 @@
|
||||
// Type definitions for Auth0.js
|
||||
// Project: http://auth0.com
|
||||
// Definitions by: Robert McLaws <https://github.com/advancedrei>
|
||||
// Type definitions for auth0 v2.3.1
|
||||
// Project: https://github.com/auth0/node-auth0
|
||||
// Definitions by: Seth Westphal <https://github.com/westy92>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
/** Extensions to the browser Window object. */
|
||||
interface Window {
|
||||
/** Allows you to pass the id_token to other APIs, as specified in https://docs.auth0.com/apps-apis */
|
||||
token: string;
|
||||
import * as Promise from 'bluebird';
|
||||
|
||||
export interface ManagementClientOptions {
|
||||
token: string;
|
||||
domain?: string;
|
||||
}
|
||||
|
||||
/** This is the interface for the main Auth0 client. */
|
||||
interface Auth0Static {
|
||||
|
||||
new(options: Auth0ClientOptions): Auth0Static;
|
||||
changePassword(options: any, callback?: Function): void;
|
||||
decodeJwt(jwt: string): any;
|
||||
login(options: any, callback: (error?: Auth0Error, profile?: Auth0UserProfile, id_token?: string, access_token?: string, state?: string) => any): void;
|
||||
loginWithPopup(options: Auth0LoginOptions, callback: (error?: Auth0Error, profile?: Auth0UserProfile, id_token?: string, access_token?: string, state?: string) => any): void;
|
||||
loginWithResourceOwner(options: Auth0LoginOptions, callback: (error?: Auth0Error, profile?: Auth0UserProfile, id_token?: string, access_token?: string, state?: any) => any): void;
|
||||
loginWithUsernamePassword(options: Auth0LoginOptions, callback: (error?: Auth0Error, profile?: Auth0UserProfile, id_token?: string, access_token?: string, state?: string) => any): void;
|
||||
logout(query: string): void;
|
||||
getConnections(callback?: Function): void;
|
||||
refreshToken(refreshToken: string, callback: (error?: Auth0Error, delegationResult?: Auth0DelegationToken) => any): void;
|
||||
getDelegationToken(targetClientId: string, id_token: string, options: any, callback: (error?: Auth0Error, delegationResult?: Auth0DelegationToken) => any): void;
|
||||
getProfile(id_token: string, callback?: Function): Auth0UserProfile;
|
||||
getSSOData(withActiveDirectories: any, callback?: Function): void;
|
||||
parseHash(hash: string): Auth0DecodedHash;
|
||||
signup(options: Auth0SignupOptions, callback: Function): void;
|
||||
validateUser(options: any, callback: (error?: Auth0Error, valid?: any) => any): void;
|
||||
export interface UserData {
|
||||
connection: string;
|
||||
email?: string;
|
||||
username?: string;
|
||||
password?: string;
|
||||
phone_number?: string;
|
||||
user_metadata?: {};
|
||||
email_verified?: boolean;
|
||||
app_metadata?: {};
|
||||
}
|
||||
|
||||
/** Represents constructor options for the Auth0 client. */
|
||||
interface Auth0ClientOptions {
|
||||
clientID: string;
|
||||
callbackURL: string;
|
||||
callbackOnLocationHash?: boolean;
|
||||
domain: string;
|
||||
forceJSONP?: boolean;
|
||||
export interface GetUsersData {
|
||||
per_page?: number;
|
||||
page?: number;
|
||||
include_totals?: boolean;
|
||||
sort?: string;
|
||||
connection?: string;
|
||||
fields?: string;
|
||||
include_fields?: boolean;
|
||||
q?: string;
|
||||
search_engine?: string;
|
||||
}
|
||||
|
||||
/** Represents a normalized UserProfile. */
|
||||
interface Auth0UserProfile {
|
||||
email: string;
|
||||
family_name: string;
|
||||
gender: string;
|
||||
given_name: string;
|
||||
locale: string;
|
||||
name: string;
|
||||
nickname: string;
|
||||
picture: string;
|
||||
user_id: string;
|
||||
/** Represents one or more Identities that may be associated with the User. */
|
||||
identities: Auth0Identity[];
|
||||
user_metadata?: any;
|
||||
app_metadata?: any;
|
||||
export interface User {
|
||||
email?: string;
|
||||
email_verified?: boolean;
|
||||
username?: string;
|
||||
phone_number?: string;
|
||||
phone_verified?: boolean;
|
||||
user_id?: string;
|
||||
created_at?: string;
|
||||
updated_at?: string;
|
||||
identities?: Identity[];
|
||||
app_metadata?: {};
|
||||
user_metadata?: {};
|
||||
picture?: string;
|
||||
name?: string;
|
||||
nickname?: string;
|
||||
multifactor?: string[];
|
||||
last_ip?: string;
|
||||
last_login?: string;
|
||||
logins_count?: number;
|
||||
blocked?: boolean;
|
||||
}
|
||||
|
||||
/** Represents an Auth0UserProfile that has a Microsoft Account as the primary identity. */
|
||||
interface MicrosoftUserProfile extends Auth0UserProfile {
|
||||
emails: string[];
|
||||
export interface Identity {
|
||||
connection: string;
|
||||
user_id: string;
|
||||
provider: string;
|
||||
isSocial: boolean;
|
||||
}
|
||||
|
||||
/** Represents an Auth0UserProfile that has an Office365 account as the primary identity. */
|
||||
interface Office365UserProfile extends Auth0UserProfile {
|
||||
tenantid: string;
|
||||
upn: string;
|
||||
export class ManagementClient {
|
||||
constructor(options: ManagementClientOptions);
|
||||
|
||||
getUsers(params?: GetUsersData): Promise<User[]>;
|
||||
getUsers(params?: GetUsersData, cb?: (err: Error, users: User[]) => void): void;
|
||||
createUser(data: UserData): Promise<User>;
|
||||
createUser(data: UserData, cb: (err: Error, data: User) => void): void;
|
||||
}
|
||||
|
||||
/** Represents an Auth0UserProfile that has an Active Directory account as the primary identity. */
|
||||
interface AdfsUserProfile extends Auth0UserProfile {
|
||||
issuer: string;
|
||||
export interface AuthenticationClientOptions {
|
||||
clientId?: string;
|
||||
domain: string;
|
||||
}
|
||||
|
||||
/** Represents multiple identities assigned to a user. */
|
||||
interface Auth0Identity {
|
||||
access_token: string;
|
||||
connection: string;
|
||||
isSocial: boolean;
|
||||
provider: string;
|
||||
user_id: string;
|
||||
export interface RequestChangePasswordEmailData {
|
||||
connection: string;
|
||||
email: string;
|
||||
}
|
||||
|
||||
interface Auth0DecodedHash {
|
||||
access_token: string;
|
||||
id_token: string;
|
||||
profile: Auth0UserProfile;
|
||||
state: any;
|
||||
}
|
||||
export class AuthenticationClient {
|
||||
constructor(options: AuthenticationClientOptions);
|
||||
|
||||
interface Auth0PopupOptions {
|
||||
width: number;
|
||||
height: number;
|
||||
}
|
||||
|
||||
interface Auth0LoginOptions {
|
||||
auto_login?: boolean;
|
||||
connection?: string;
|
||||
email?: string;
|
||||
username?: string;
|
||||
password?: string;
|
||||
popup?: boolean;
|
||||
popupOptions?: Auth0PopupOptions;
|
||||
}
|
||||
|
||||
interface Auth0SignupOptions extends Auth0LoginOptions {
|
||||
auto_login: boolean;
|
||||
}
|
||||
|
||||
interface Auth0Error {
|
||||
code: any;
|
||||
details: any;
|
||||
name: string;
|
||||
message: string;
|
||||
status: any;
|
||||
}
|
||||
|
||||
/** Represents the response from an API Token Delegation request. */
|
||||
interface Auth0DelegationToken {
|
||||
/** The length of time in seconds the token is valid for. */
|
||||
expires_in: string;
|
||||
/** The JWT for delegated access. */
|
||||
id_token: string;
|
||||
/** The type of token being returned. Possible values: "Bearer" */
|
||||
token_type: string;
|
||||
}
|
||||
|
||||
declare var Auth0: Auth0Static;
|
||||
|
||||
declare module "auth0" {
|
||||
export = Auth0
|
||||
}
|
||||
requestChangePasswordEmail(data: RequestChangePasswordEmailData): Promise<string>;
|
||||
requestChangePasswordEmail(data: RequestChangePasswordEmailData, cb: (err: Error, message: string) => void): void;
|
||||
}
|
||||
@@ -0,0 +1,321 @@
|
||||
// Test file for db-migrate-base Definition file
|
||||
|
||||
import * as DbMigrateBase from "db-migrate-base";
|
||||
|
||||
// Throw together a dummy driver
|
||||
let db = <DbMigrateBase.Base>{};
|
||||
|
||||
let callback = (err: any, response: any) => {
|
||||
// Do nothing.
|
||||
};
|
||||
|
||||
/// createTable(tableName, columnSpec, callback)
|
||||
db.createTable('pets', {
|
||||
id: { type: 'int', primaryKey: true, autoIncrement: true },
|
||||
name: 'string'
|
||||
}, callback);
|
||||
|
||||
db.createTable('pets', {
|
||||
columns: {
|
||||
id: { type: 'int', primaryKey: true, autoIncrement: true },
|
||||
name: 'string'
|
||||
},
|
||||
ifNotExists: true
|
||||
}, callback);
|
||||
|
||||
db.createTable('product_variant',
|
||||
{
|
||||
id: {
|
||||
type: 'int',
|
||||
unsigned: true,
|
||||
notNull: true,
|
||||
primaryKey: true,
|
||||
autoIncrement: true,
|
||||
length: 10
|
||||
},
|
||||
product_id: {
|
||||
type: 'int',
|
||||
unsigned: true,
|
||||
length: 10,
|
||||
notNull: true,
|
||||
foreignKey: {
|
||||
name: 'product_variant_product_id_fk',
|
||||
table: 'product',
|
||||
rules: {
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'RESTRICT'
|
||||
},
|
||||
mapping: 'id'
|
||||
}
|
||||
}
|
||||
}, callback);
|
||||
|
||||
db.createTable('product_variant',
|
||||
{
|
||||
id: {
|
||||
type: 'int',
|
||||
unsigned: true,
|
||||
notNull: true,
|
||||
primaryKey: true,
|
||||
autoIncrement: true,
|
||||
length: 10
|
||||
},
|
||||
product_id: {
|
||||
type: 'int',
|
||||
unsigned: true,
|
||||
length: 10,
|
||||
notNull: true,
|
||||
foreignKey: {
|
||||
name: 'product_variant_product_id_fk',
|
||||
table: 'product',
|
||||
rules: {
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'RESTRICT'
|
||||
},
|
||||
mapping: {
|
||||
product_id: 'id'
|
||||
}
|
||||
}
|
||||
}
|
||||
}, callback);
|
||||
|
||||
/// dropTable(tableName, [options,] callback)
|
||||
db.dropTable('pets', callback);
|
||||
|
||||
db.dropTable('pets', { ifExists: true }, callback);
|
||||
|
||||
/// renameTable(tableName, newTableName, callback)
|
||||
db.renameTable('pets', 'pets_OLD', callback);
|
||||
|
||||
/// addColumn(tableName, columnName, columnSpec, callback)
|
||||
db.addColumn('pets', 'eyeColor', {
|
||||
type: 'string',
|
||||
length: 25,
|
||||
notNull: true,
|
||||
}, callback);
|
||||
|
||||
db.addColumn('pets', 'id', {
|
||||
type: 'int',
|
||||
primaryKey: true,
|
||||
autoIncrement: true,
|
||||
notNull: true,
|
||||
unique: true
|
||||
}, callback);
|
||||
|
||||
/// renameColumn(tableName, oldColumnName, newColumnName, callback)
|
||||
db.renameColumn('pets', 'id', 'pet_id', callback);
|
||||
|
||||
/// changeColumn(tableName, columnName, columnSpec, callback)
|
||||
db.changeColumn('pets', 'eye_color', {
|
||||
type: 'int',
|
||||
unsigned: true,
|
||||
notNull: true,
|
||||
foreignKey: {
|
||||
name: 'pets_eye_color_id_fk',
|
||||
table: 'eye_color',
|
||||
rules: {
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'RESTRICT'
|
||||
},
|
||||
mapping: {
|
||||
eye_color: 'id'
|
||||
}
|
||||
}
|
||||
}, callback);
|
||||
|
||||
/// addIndex(tableName, indexName, columns, [unique,] callback)
|
||||
db.addIndex('pets', 'pets_eye_color_idx', ['eye_color'], callback);
|
||||
db.addIndex('pets', 'pets_registration_code_idx', ['registration_code'], true, callback);
|
||||
|
||||
/// addForeignKey(tableName, referencedTableName, keyName, fieldMapping, rules, callback)
|
||||
db.addForeignKey('module_user', 'modules', 'module_user_module_id_fk',
|
||||
{
|
||||
'module_id': 'id'
|
||||
},
|
||||
{
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'RESTRICT'
|
||||
}, callback);
|
||||
|
||||
/// removeForeignKey(tableName, keyName, options, callback)
|
||||
db.removeForeignKey('module_user', 'module_uer_module_id_foreign', callback);
|
||||
db.removeForeignKey('module_user', 'module_user_module_id_foreign', {
|
||||
dropIndex: true,
|
||||
}, callback);
|
||||
|
||||
/// insert(tableName, [columnNameArray,] valueArray, callback)
|
||||
db.insert('module_user', ['first_name', 'last_name'], ['Test', 'Testerson'], callback);
|
||||
db.insert('module_user', ['Test', 'Testerson'], callback);
|
||||
|
||||
/// removeIndex([tableName,] indexName, callback)
|
||||
db.removeIndex('pets', 'pets_eye_color_idx', callback);
|
||||
db.removeIndex('pets_eye_color_idx', callback);
|
||||
|
||||
/// runSql(sql, [params,] callback)
|
||||
db.runSql('INSERT INTO `module_user` (`?`,`?`) VALUES (\'?\',\'?\')', [
|
||||
'first_name', 'last_name',
|
||||
'Test', 'Testerson'
|
||||
], callback);
|
||||
db.runSql('DROP TABLE `pets`', callback);
|
||||
|
||||
/// all(sql, [params,] callback)
|
||||
db.all('SELECT * FROM `module_user` WHERE `?` = \'?\'', ['first_name', 'Test'], callback);
|
||||
db.all('SELECT * FROM `module_user`', callback);
|
||||
|
||||
/// =========
|
||||
/// Async
|
||||
/// =========
|
||||
|
||||
let onResolve = (result: any) => {};
|
||||
|
||||
/// createTableAsync(tableName, columnSpec)
|
||||
db.createTableAsync('pets', {
|
||||
id: { type: 'int', primaryKey: true, autoIncrement: true },
|
||||
name: 'string'
|
||||
}).then(onResolve);
|
||||
|
||||
db.createTableAsync('pets', {
|
||||
columns: {
|
||||
id: { type: 'int', primaryKey: true, autoIncrement: true },
|
||||
name: 'string'
|
||||
},
|
||||
ifNotExists: true
|
||||
}).then(onResolve);
|
||||
|
||||
db.createTableAsync('product_variant',
|
||||
{
|
||||
id: {
|
||||
type: 'int',
|
||||
unsigned: true,
|
||||
notNull: true,
|
||||
primaryKey: true,
|
||||
autoIncrement: true,
|
||||
length: 10
|
||||
},
|
||||
product_id: {
|
||||
type: 'int',
|
||||
unsigned: true,
|
||||
length: 10,
|
||||
notNull: true,
|
||||
foreignKey: {
|
||||
name: 'product_variant_product_id_fk',
|
||||
table: 'product',
|
||||
rules: {
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'RESTRICT'
|
||||
},
|
||||
mapping: 'id'
|
||||
}
|
||||
}
|
||||
}).then(onResolve);
|
||||
|
||||
db.createTableAsync('product_variant',
|
||||
{
|
||||
id: {
|
||||
type: 'int',
|
||||
unsigned: true,
|
||||
notNull: true,
|
||||
primaryKey: true,
|
||||
autoIncrement: true,
|
||||
length: 10
|
||||
},
|
||||
product_id: {
|
||||
type: 'int',
|
||||
unsigned: true,
|
||||
length: 10,
|
||||
notNull: true,
|
||||
foreignKey: {
|
||||
name: 'product_variant_product_id_fk',
|
||||
table: 'product',
|
||||
rules: {
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'RESTRICT'
|
||||
},
|
||||
mapping: {
|
||||
product_id: 'id'
|
||||
}
|
||||
}
|
||||
}
|
||||
}).then(onResolve);
|
||||
|
||||
/// dropTableAsync(tableName, [options])
|
||||
db.dropTableAsync('pets').then(onResolve);
|
||||
db.dropTableAsync('pets', { ifExists: true }).then(onResolve);
|
||||
|
||||
/// renameTableAsync(tableName, newTableName)
|
||||
db.renameTableAsync('pets', 'pets_OLD').then(onResolve);
|
||||
|
||||
/// addColumnAsync(tableName, columnName, columnSpec)
|
||||
db.addColumnAsync('pets', 'eyeColor', {
|
||||
type: 'string',
|
||||
length: 25,
|
||||
notNull: true,
|
||||
}).then(onResolve);
|
||||
|
||||
db.addColumnAsync('pets', 'id', {
|
||||
type: 'int',
|
||||
primaryKey: true,
|
||||
autoIncrement: true,
|
||||
notNull: true,
|
||||
unique: true
|
||||
}).then(onResolve);
|
||||
|
||||
/// renameColumnAsync(tableName, oldColumnName, newColumnName)
|
||||
db.renameColumnAsync('pets', 'id', 'pet_id').then(onResolve);
|
||||
|
||||
/// changeColumnAsync(tableName, columnName, columnSpec)
|
||||
db.changeColumnAsync('pets', 'eye_color', {
|
||||
type: 'int',
|
||||
unsigned: true,
|
||||
notNull: true,
|
||||
foreignKey: {
|
||||
name: 'pets_eye_color_id_fk',
|
||||
table: 'eye_color',
|
||||
rules: {
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'RESTRICT'
|
||||
},
|
||||
mapping: {
|
||||
eye_color: 'id'
|
||||
}
|
||||
}
|
||||
}).then(onResolve);
|
||||
|
||||
/// addIndexAsync(tableName, indexName, columns, [unique])
|
||||
db.addIndexAsync('pets', 'pets_eye_color_idx', ['eye_color']).then(onResolve);
|
||||
db.addIndexAsync('pets', 'pets_registration_code_idx', ['registration_code'], true).then(onResolve);
|
||||
|
||||
/// addForeignKeyAsync(tableName, referencedTableName, keyName, fieldMapping, rules)
|
||||
db.addForeignKeyAsync('module_user', 'modules', 'module_user_module_id_fk',
|
||||
{
|
||||
'module_id': 'id'
|
||||
},
|
||||
{
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'RESTRICT'
|
||||
}).then(onResolve);
|
||||
|
||||
/// removeForeignKeyAsync(tableName, keyName, options)
|
||||
db.removeForeignKeyAsync('module_user', 'module_uer_module_id_foreign').then(onResolve);
|
||||
db.removeForeignKeyAsync('module_user', 'module_user_module_id_foreign', {
|
||||
dropIndex: true,
|
||||
}).then(onResolve);
|
||||
|
||||
/// insertAsync(tableName, [columnNameArray,] valueArray)
|
||||
db.insertAsync('module_user', ['first_name', 'last_name'], ['Test', 'Testerson']).then(onResolve);
|
||||
db.insertAsync('module_user', ['Test', 'Testerson']).then(onResolve);
|
||||
|
||||
/// removeIndexAsync([tableName,] indexName)
|
||||
db.removeIndexAsync('pets', 'pets_eye_color_idx').then(onResolve);
|
||||
db.removeIndexAsync('pets_eye_color_idx').then(onResolve);
|
||||
|
||||
/// runSqlAsync(sql, [params])
|
||||
db.runSqlAsync('INSERT INTO `module_user` (`?`,`?`) VALUES (\'?\',\'?\')', [
|
||||
'first_name', 'last_name',
|
||||
'Test', 'Testerson'
|
||||
]).then(onResolve);
|
||||
db.runSqlAsync('DROP TABLE `pets`').then(onResolve);
|
||||
|
||||
/// allAsync(sql, [params])
|
||||
db.allAsync('SELECT * FROM `module_user` WHERE `?` = \'?\'', ['first_name', 'Test']).then(onResolve);
|
||||
db.allAsync('SELECT * FROM `module_user`').then(onResolve);
|
||||
Vendored
+147
@@ -0,0 +1,147 @@
|
||||
// Type definitions for db-migrate-base
|
||||
// Project: https://github.com/db-migrate/db-migrate-base
|
||||
// Definitions by: nickiannone <https://github.com/nickiannone>
|
||||
// Definitions: https://github.com/nickiannone/DefinitelyTyped
|
||||
|
||||
/// <reference types="node"/>
|
||||
|
||||
import * as Promise from "bluebird";
|
||||
|
||||
export interface CallbackFunction { (err: any, response: any): void; }
|
||||
|
||||
export interface InternalModule {
|
||||
log: any;
|
||||
type: any;
|
||||
}
|
||||
|
||||
export interface InternalOptions {
|
||||
mod: InternalModule;
|
||||
}
|
||||
|
||||
export interface ColumnSpec {
|
||||
length?: number;
|
||||
type: string;
|
||||
unsigned?: boolean;
|
||||
primaryKey?: boolean;
|
||||
autoIncrement?: boolean;
|
||||
notNull?: boolean;
|
||||
unique?: boolean;
|
||||
defaultValue?: any;
|
||||
foreignKey?: ForeignKeySpec;
|
||||
}
|
||||
|
||||
export interface ForeignKeySpec {
|
||||
name: string;
|
||||
table: string;
|
||||
rules?: ForeignKeyRules;
|
||||
mapping: string | any;
|
||||
}
|
||||
|
||||
export interface ForeignKeyRules {
|
||||
onDelete: string;
|
||||
onUpdate: string;
|
||||
}
|
||||
|
||||
export interface RemoveForeignKeyOptions {
|
||||
dropIndex?: boolean;
|
||||
}
|
||||
|
||||
export interface ColumnDef {
|
||||
foreignKey?: any; // TODO Figure this out!
|
||||
constraints: string;
|
||||
}
|
||||
|
||||
export interface CreateTableOptions {
|
||||
columns?: Array<ColumnSpec>;
|
||||
ifNotExists?: boolean;
|
||||
}
|
||||
|
||||
export interface DropTableOptions {
|
||||
ifExists?: boolean;
|
||||
}
|
||||
|
||||
export class Base {
|
||||
constructor(intern: InternalOptions);
|
||||
|
||||
close(callback?: CallbackFunction): void;
|
||||
mapDataType(str: string): string;
|
||||
truncate(tableName: string, callback: CallbackFunction): void;
|
||||
checkDBMS(dbms: any, callback: CallbackFunction): void;
|
||||
createDatabase(...options: any[]): void;
|
||||
switchDatabase(...options: any[]): void;
|
||||
dropDatabase(...options: any[]): void;
|
||||
recurseCallbackArray(foreignKeys: Array<string>, callback: CallbackFunction): void;
|
||||
bindForeignKey(tableName: string, columnName: string, fkOptions: ForeignKeySpec): (callback: CallbackFunction) => void;
|
||||
createColumnDef(name: string, spec: ColumnSpec, options?: any): ColumnDef; // TODO Figure out a type for `options`!
|
||||
//createColumnConstraint(spec: ColumnSpec, options?: any, ...implementationDefinedOptions: any[]): string;
|
||||
createMigrationsTable(callback: CallbackFunction): void;
|
||||
createSeedsTable(callback: CallbackFunction): void;
|
||||
createTable(tableName: string, options: any | CreateTableOptions, callback: CallbackFunction): void;
|
||||
dropTable(tableName: string, optionsOrCb?: DropTableOptions | CallbackFunction, callback?: CallbackFunction): void;
|
||||
renameTable(tableName: string, newTableName: string, callback: CallbackFunction): void;
|
||||
addColumn(tableName: string, columnName: string, columnSpec: ColumnSpec, callback: CallbackFunction): void;
|
||||
removeColumn(tableName: string, columnName: string, callback: CallbackFunction): void;
|
||||
renameColumn(tableName: string, oldColumnName: string, newColumnName: string, callback: CallbackFunction): void;
|
||||
changeColumn(tableName: string, columnName: string, columnSpec: ColumnSpec, callback: CallbackFunction): void;
|
||||
quoteDDLArr(arr: Array<string>): Array<string>;
|
||||
quoteArr(arr: Array<string>): Array<string>;
|
||||
addIndex(tableName: string, indexName: string, columns: string | Array<string>, uniqueOrCb?: boolean | CallbackFunction, callback?: CallbackFunction): void;
|
||||
insert(tableName: string, columnNameOrValueArray: any, valueArrayOrCb?: any | CallbackFunction, callback?: CallbackFunction): void;
|
||||
update(tableName: string, columnNameOrValueArray: any, valueArrayOrIds?: any, idsOrCb?: any | CallbackFunction, callback?: CallbackFunction): void;
|
||||
lookup(tableName: string, column: string, id?: any, callback?: CallbackFunction): void;
|
||||
removeIndex(tableNameOrIndexName: string, indexNameOrCb?: string | CallbackFunction, callback?: CallbackFunction): void;
|
||||
addForeignKey(tableName: string, referencedTableName: string, keyName: string, fieldMapping: any, rules: ForeignKeyRules, callback: CallbackFunction): void;
|
||||
removeForeignKey(tableName: string, keyName: string, optionsOrCb?: RemoveForeignKeyOptions | CallbackFunction, callback?: CallbackFunction): void;
|
||||
normalizeColumnSpec(spec: string | ColumnSpec): ColumnSpec;
|
||||
addMigrationRecord(name: string, callback: CallbackFunction): void;
|
||||
addSeedRecord(name: string, callback: CallbackFunction): void;
|
||||
startMigration(callback: CallbackFunction): void;
|
||||
endMigration(callback: CallbackFunction): void;
|
||||
runSql(sql?: string, paramsOrCb?: Array<any> | CallbackFunction, callback?: CallbackFunction): void;
|
||||
allLoadedMigrations(callback: CallbackFunction): void;
|
||||
allLoadedSeeds(callback: CallbackFunction): void;
|
||||
deleteMigration(migrationName: string, callback: CallbackFunction): void;
|
||||
remove(table: string, ids: any, callback: CallbackFunction): void; // TODO Make ids match the type of ids in buildWhereClause(ids);
|
||||
buildWhereClause(ids: any): string;
|
||||
deleteSeed(seedName: string, callback: CallbackFunction): void;
|
||||
all(sql: string, paramsOrCb?: Array<any> | CallbackFunction, callback?: CallbackFunction): void;
|
||||
escape(str: string): string;
|
||||
escapeString(str: string): string;
|
||||
escapeDDL(str: string): string;
|
||||
|
||||
// Promisified methods
|
||||
closeAsync(): Promise<any>;
|
||||
truncateAsync(tableName: string): Promise<any>;
|
||||
checkDBMSAsync(dbms: any): Promise<any>;
|
||||
createDatabaseAsync(...options: any[]): Promise<any>;
|
||||
switchDatabaseAsync(...options: any[]): Promise<any>;
|
||||
dropDatabaseAsync(...options: any[]): Promise<any>;
|
||||
recurseCallbackArrayAsync(foreignKeys: Array<string>): Promise<any>;
|
||||
createMigrationsTableAsync(): Promise<any>;
|
||||
createSeedsTableAsync(): Promise<any>;
|
||||
createTableAsync(tableName: string, options: any | CreateTableOptions): Promise<any>;
|
||||
dropTableAsync(tableName: string, options?: DropTableOptions): Promise<any>;
|
||||
renameTableAsync(tableName: string, newTableName: string): Promise<any>;
|
||||
addColumnAsync(tableName: string, columnName: string, columnSpec: ColumnSpec): Promise<any>;
|
||||
removeColumnAsync(tableName: string, columnName: string): Promise<any>;
|
||||
renameColumnAsync(tableName: string, oldColumnName: string, newColumnName: string): Promise<any>;
|
||||
changeColumnAsync(tableName: string, columnName: string, columnSpec: ColumnSpec): Promise<any>;
|
||||
addIndexAsync(tableName: string, indexName: string, columns: string | Array<string>, unique?: boolean): Promise<any>;
|
||||
insertAsync(tableName: string, columnNameOrValueArray: any, valueArrayOrCb?: any | CallbackFunction, callback?: CallbackFunction): Promise<any>;
|
||||
updateAsync(tableName: string, columnNameOrValueArray: any, valueArrayOrIds?: any, idsOrCb?: any | CallbackFunction, callback?: CallbackFunction): Promise<any>;
|
||||
lookupAsync(tableName: string, column: string, id?: any, callback?: CallbackFunction): Promise<any>;
|
||||
removeIndexAsync(tableNameOrIndexName: string, indexName?: string): Promise<any>;
|
||||
addForeignKeyAsync(tableName: string, referencedTableName: string, keyName: string, fieldMapping: any, rules: ForeignKeyRules): Promise<any>;
|
||||
removeForeignKeyAsync(tableName: string, keyName: string, options?: RemoveForeignKeyOptions): Promise<any>;
|
||||
addMigrationRecordAsync(name: string): Promise<any>;
|
||||
addSeedRecordAsync(name: string): Promise<any>;
|
||||
startMigrationAsync(): Promise<any>;
|
||||
endMigrationAsync(callback: CallbackFunction): Promise<any>;
|
||||
runSqlAsync(sql?: string, params?: Array<any>): Promise<any>;
|
||||
allLoadedMigrationsAsync(): Promise<any>;
|
||||
allLoadedSeedsAsync(): Promise<any>;
|
||||
deleteMigrationAsync(migrationName: string): Promise<any>;
|
||||
removeAsync(table: string, ids: any): Promise<any>;
|
||||
deleteSeedAsync(seedName: string): Promise<any>;
|
||||
allAsync(sql: string, params?: Array<any>): Promise<any>;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"target": "es6",
|
||||
"noImplicitAny": true,
|
||||
"strictNullChecks": false,
|
||||
"baseUrl": "../",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
],
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"db-migrate-base-tests.ts"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,410 @@
|
||||
// Test file for db-migrate-pg Definition file
|
||||
|
||||
import * as DbMigratePg from "db-migrate-pg";
|
||||
|
||||
// Throw together a dummy driver
|
||||
let db = <DbMigratePg.PgDriver>{};
|
||||
|
||||
let callback = (err: any, response: any) => {
|
||||
// Do nothing.
|
||||
};
|
||||
|
||||
/// createTable(tableName, columnSpec, callback)
|
||||
db.createTable('pets', {
|
||||
id: { type: 'int', primaryKey: true, autoIncrement: true },
|
||||
name: 'string'
|
||||
}, callback);
|
||||
|
||||
db.createTable('pets', {
|
||||
columns: {
|
||||
id: { type: 'int', primaryKey: true, autoIncrement: true },
|
||||
name: 'string'
|
||||
},
|
||||
ifNotExists: true
|
||||
}, callback);
|
||||
|
||||
db.createTable('product_variant',
|
||||
{
|
||||
id: {
|
||||
type: 'int',
|
||||
unsigned: true,
|
||||
notNull: true,
|
||||
primaryKey: true,
|
||||
autoIncrement: true,
|
||||
length: 10
|
||||
},
|
||||
product_id: {
|
||||
type: 'int',
|
||||
unsigned: true,
|
||||
length: 10,
|
||||
notNull: true,
|
||||
foreignKey: {
|
||||
name: 'product_variant_product_id_fk',
|
||||
table: 'product',
|
||||
rules: {
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'RESTRICT'
|
||||
},
|
||||
mapping: 'id'
|
||||
}
|
||||
}
|
||||
}, callback);
|
||||
|
||||
db.createTable('product_variant',
|
||||
{
|
||||
id: {
|
||||
type: 'int',
|
||||
unsigned: true,
|
||||
notNull: true,
|
||||
primaryKey: true,
|
||||
autoIncrement: true,
|
||||
length: 10
|
||||
},
|
||||
product_id: {
|
||||
type: 'int',
|
||||
unsigned: true,
|
||||
length: 10,
|
||||
notNull: true,
|
||||
foreignKey: {
|
||||
name: 'product_variant_product_id_fk',
|
||||
table: 'product',
|
||||
rules: {
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'RESTRICT'
|
||||
},
|
||||
mapping: {
|
||||
product_id: 'id'
|
||||
}
|
||||
}
|
||||
}
|
||||
}, callback);
|
||||
|
||||
/// dropTable(tableName, [options,] callback)
|
||||
db.dropTable('pets', callback);
|
||||
|
||||
db.dropTable('pets', { ifExists: true }, callback);
|
||||
|
||||
/// renameTable(tableName, newTableName, callback)
|
||||
db.renameTable('pets', 'pets_OLD', callback);
|
||||
|
||||
/// addColumn(tableName, columnName, columnSpec, callback)
|
||||
db.addColumn('pets', 'eyeColor', {
|
||||
type: 'string',
|
||||
length: 25,
|
||||
notNull: true,
|
||||
}, callback);
|
||||
|
||||
db.addColumn('pets', 'id', {
|
||||
type: 'int',
|
||||
primaryKey: true,
|
||||
autoIncrement: true,
|
||||
notNull: true,
|
||||
unique: true
|
||||
}, callback);
|
||||
|
||||
/// renameColumn(tableName, oldColumnName, newColumnName, callback)
|
||||
db.renameColumn('pets', 'id', 'pet_id', callback);
|
||||
|
||||
/// changeColumn(tableName, columnName, columnSpec, callback)
|
||||
db.changeColumn('pets', 'eye_color', {
|
||||
type: 'int',
|
||||
unsigned: true,
|
||||
notNull: true,
|
||||
foreignKey: {
|
||||
name: 'pets_eye_color_id_fk',
|
||||
table: 'eye_color',
|
||||
rules: {
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'RESTRICT'
|
||||
},
|
||||
mapping: {
|
||||
eye_color: 'id'
|
||||
}
|
||||
}
|
||||
}, callback);
|
||||
|
||||
/// addIndex(tableName, indexName, columns, [unique,] callback)
|
||||
db.addIndex('pets', 'pets_eye_color_idx', ['eye_color'], callback);
|
||||
db.addIndex('pets', 'pets_registration_code_idx', ['registration_code'], true, callback);
|
||||
|
||||
/// addForeignKey(tableName, referencedTableName, keyName, fieldMapping, rules, callback)
|
||||
db.addForeignKey('module_user', 'modules', 'module_user_module_id_fk',
|
||||
{
|
||||
'module_id': 'id'
|
||||
},
|
||||
{
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'RESTRICT'
|
||||
}, callback);
|
||||
|
||||
/// removeForeignKey(tableName, keyName, options, callback)
|
||||
db.removeForeignKey('module_user', 'module_uer_module_id_foreign', callback);
|
||||
db.removeForeignKey('module_user', 'module_user_module_id_foreign', {
|
||||
dropIndex: true,
|
||||
}, callback);
|
||||
|
||||
/// insert(tableName, [columnNameArray,] valueArray, callback)
|
||||
db.insert('module_user', ['first_name', 'last_name'], ['Test', 'Testerson'], callback);
|
||||
db.insert('module_user', ['Test', 'Testerson'], callback);
|
||||
|
||||
/// removeIndex([tableName,] indexName, callback)
|
||||
db.removeIndex('pets', 'pets_eye_color_idx', callback);
|
||||
db.removeIndex('pets_eye_color_idx', callback);
|
||||
|
||||
/// runSql(sql, [params,] callback)
|
||||
db.runSql('INSERT INTO `module_user` (`?`,`?`) VALUES (\'?\',\'?\')', [
|
||||
'first_name', 'last_name',
|
||||
'Test', 'Testerson'
|
||||
], callback);
|
||||
db.runSql('DROP TABLE `pets`', callback);
|
||||
|
||||
/// all(sql, [params,] callback)
|
||||
db.all('SELECT * FROM `module_user` WHERE `?` = \'?\'', ['first_name', 'Test'], callback);
|
||||
db.all('SELECT * FROM `module_user`', callback);
|
||||
|
||||
/// =========
|
||||
/// Async
|
||||
/// =========
|
||||
|
||||
let onResolve = (result: any) => {};
|
||||
|
||||
/// createTableAsync(tableName, columnSpec)
|
||||
db.createTableAsync('pets', {
|
||||
id: { type: 'int', primaryKey: true, autoIncrement: true },
|
||||
name: 'string'
|
||||
}).then(onResolve);
|
||||
|
||||
db.createTableAsync('pets', {
|
||||
columns: {
|
||||
id: { type: 'int', primaryKey: true, autoIncrement: true },
|
||||
name: 'string'
|
||||
},
|
||||
ifNotExists: true
|
||||
}).then(onResolve);
|
||||
|
||||
db.createTableAsync('product_variant',
|
||||
{
|
||||
id: {
|
||||
type: 'int',
|
||||
unsigned: true,
|
||||
notNull: true,
|
||||
primaryKey: true,
|
||||
autoIncrement: true,
|
||||
length: 10
|
||||
},
|
||||
product_id: {
|
||||
type: 'int',
|
||||
unsigned: true,
|
||||
length: 10,
|
||||
notNull: true,
|
||||
foreignKey: {
|
||||
name: 'product_variant_product_id_fk',
|
||||
table: 'product',
|
||||
rules: {
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'RESTRICT'
|
||||
},
|
||||
mapping: 'id'
|
||||
}
|
||||
}
|
||||
}).then(onResolve);
|
||||
|
||||
db.createTableAsync('product_variant',
|
||||
{
|
||||
id: {
|
||||
type: 'int',
|
||||
unsigned: true,
|
||||
notNull: true,
|
||||
primaryKey: true,
|
||||
autoIncrement: true,
|
||||
length: 10
|
||||
},
|
||||
product_id: {
|
||||
type: 'int',
|
||||
unsigned: true,
|
||||
length: 10,
|
||||
notNull: true,
|
||||
foreignKey: {
|
||||
name: 'product_variant_product_id_fk',
|
||||
table: 'product',
|
||||
rules: {
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'RESTRICT'
|
||||
},
|
||||
mapping: {
|
||||
product_id: 'id'
|
||||
}
|
||||
}
|
||||
}
|
||||
}).then(onResolve);
|
||||
|
||||
/// dropTableAsync(tableName, [options])
|
||||
db.dropTableAsync('pets').then(onResolve);
|
||||
db.dropTableAsync('pets', { ifExists: true }).then(onResolve);
|
||||
|
||||
/// renameTableAsync(tableName, newTableName)
|
||||
db.renameTableAsync('pets', 'pets_OLD').then(onResolve);
|
||||
|
||||
/// addColumnAsync(tableName, columnName, columnSpec)
|
||||
db.addColumnAsync('pets', 'eyeColor', {
|
||||
type: 'string',
|
||||
length: 25,
|
||||
notNull: true,
|
||||
}).then(onResolve);
|
||||
|
||||
db.addColumnAsync('pets', 'id', {
|
||||
type: 'int',
|
||||
primaryKey: true,
|
||||
autoIncrement: true,
|
||||
notNull: true,
|
||||
unique: true
|
||||
}).then(onResolve);
|
||||
|
||||
/// renameColumnAsync(tableName, oldColumnName, newColumnName)
|
||||
db.renameColumnAsync('pets', 'id', 'pet_id').then(onResolve);
|
||||
|
||||
/// changeColumnAsync(tableName, columnName, columnSpec)
|
||||
db.changeColumnAsync('pets', 'eye_color', {
|
||||
type: 'int',
|
||||
unsigned: true,
|
||||
notNull: true,
|
||||
foreignKey: {
|
||||
name: 'pets_eye_color_id_fk',
|
||||
table: 'eye_color',
|
||||
rules: {
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'RESTRICT'
|
||||
},
|
||||
mapping: {
|
||||
eye_color: 'id'
|
||||
}
|
||||
}
|
||||
}).then(onResolve);
|
||||
|
||||
/// addIndexAsync(tableName, indexName, columns, [unique])
|
||||
db.addIndexAsync('pets', 'pets_eye_color_idx', ['eye_color']).then(onResolve);
|
||||
db.addIndexAsync('pets', 'pets_registration_code_idx', ['registration_code'], true).then(onResolve);
|
||||
|
||||
/// addForeignKeyAsync(tableName, referencedTableName, keyName, fieldMapping, rules)
|
||||
db.addForeignKeyAsync('module_user', 'modules', 'module_user_module_id_fk',
|
||||
{
|
||||
'module_id': 'id'
|
||||
},
|
||||
{
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'RESTRICT'
|
||||
}).then(onResolve);
|
||||
|
||||
/// removeForeignKeyAsync(tableName, keyName, options)
|
||||
db.removeForeignKeyAsync('module_user', 'module_uer_module_id_foreign').then(onResolve);
|
||||
db.removeForeignKeyAsync('module_user', 'module_user_module_id_foreign', {
|
||||
dropIndex: true,
|
||||
}).then(onResolve);
|
||||
|
||||
/// insertAsync(tableName, [columnNameArray,] valueArray)
|
||||
db.insertAsync('module_user', ['first_name', 'last_name'], ['Test', 'Testerson']).then(onResolve);
|
||||
db.insertAsync('module_user', ['Test', 'Testerson']).then(onResolve);
|
||||
|
||||
/// removeIndexAsync([tableName,] indexName)
|
||||
db.removeIndexAsync('pets', 'pets_eye_color_idx').then(onResolve);
|
||||
db.removeIndexAsync('pets_eye_color_idx').then(onResolve);
|
||||
|
||||
/// runSqlAsync(sql, [params])
|
||||
db.runSqlAsync('INSERT INTO `module_user` (`?`,`?`) VALUES (\'?\',\'?\')', [
|
||||
'first_name', 'last_name',
|
||||
'Test', 'Testerson'
|
||||
]).then(onResolve);
|
||||
db.runSqlAsync('DROP TABLE `pets`').then(onResolve);
|
||||
|
||||
/// allAsync(sql, [params])
|
||||
db.allAsync('SELECT * FROM `module_user` WHERE `?` = \'?\'', ['first_name', 'Test']).then(onResolve);
|
||||
db.allAsync('SELECT * FROM `module_user`').then(onResolve);
|
||||
|
||||
/// ====================
|
||||
/// PG-specific tests
|
||||
/// ====================
|
||||
|
||||
/// createColumnConstraint(spec, options, tableName, columnName) (INTERNAL USE ONLY)
|
||||
let constraint: DbMigratePg.ColumnConstraint;
|
||||
|
||||
constraint = db.createColumnConstraint({
|
||||
type: 'int',
|
||||
length: 10,
|
||||
unsigned: true,
|
||||
primaryKey: false,
|
||||
autoIncrement: false,
|
||||
notNull: true,
|
||||
unique: false,
|
||||
defaultValue: 0,
|
||||
foreignKey: {
|
||||
name: 'pets_eye_color_id_fk',
|
||||
table: 'eye_color',
|
||||
rules: {
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'RESTRICT'
|
||||
},
|
||||
mapping: {
|
||||
'eye_color': 'id'
|
||||
}
|
||||
}
|
||||
}, {
|
||||
emitPrimaryKey: false
|
||||
}, 'pets', 'eye_color');
|
||||
|
||||
// Print the SQL constraints
|
||||
console.log(constraint.constraints);
|
||||
|
||||
// Invoke the foreign key builder
|
||||
constraint.foreignKey(callback);
|
||||
|
||||
/// Public Callback Methods:
|
||||
|
||||
/// createDatabase(dbName, [options,] callback)
|
||||
db.createDatabase('petstore', callback);
|
||||
db.createDatabase('petstore', {}, callback);
|
||||
|
||||
/// dropDatabase(dbName, [options,] callback)
|
||||
db.dropDatabase('petstore', callback);
|
||||
db.dropDatabase('petstore', { ifExists: true }, callback);
|
||||
|
||||
/// createSequence(sqName, [options,] callback)
|
||||
db.createSequence('pets_id_sq', callback);
|
||||
db.createSequence('pets_id_sq', { temp: true }, callback);
|
||||
|
||||
/// switchDatabase(options, callback)
|
||||
db.switchDatabase('petstore', callback);
|
||||
db.switchDatabase({ database: 'petstore' }, callback);
|
||||
|
||||
/// dropSequence(sqName, [options,] callback)
|
||||
db.dropSequence('pets_id_sq', callback);
|
||||
db.dropSequence('pets_id_sq', {
|
||||
ifExists: true,
|
||||
cascade: true,
|
||||
restrict: true,
|
||||
}, callback);
|
||||
|
||||
/// Public Promisified Methods:
|
||||
|
||||
/// createDatabaseAsync(dbName, [options])
|
||||
db.createDatabaseAsync('petstore').then(onResolve);
|
||||
db.createDatabaseAsync('petstore', {}).then(onResolve);
|
||||
|
||||
/// dropDatabaseAsync(dbName, [options])
|
||||
db.dropDatabaseAsync('petstore').then(onResolve);
|
||||
db.dropDatabaseAsync('petstore', { ifExists: true }).then(onResolve);
|
||||
|
||||
/// createSequenceAsync(sqName, [options])
|
||||
db.createSequenceAsync('pets_id_sq').then(onResolve);
|
||||
db.createSequenceAsync('pets_id_sq', { temp: true }).then(onResolve);
|
||||
|
||||
/// switchDatabaseAsync(options)
|
||||
db.switchDatabaseAsync('petstore').then(onResolve);
|
||||
db.switchDatabaseAsync({ database: 'petstore' }).then(onResolve);
|
||||
|
||||
/// dropSequenceAsync(sqName, [options])
|
||||
db.dropSequenceAsync('pets_id_sq').then(onResolve);
|
||||
db.dropSequenceAsync('pets_id_sq', {
|
||||
ifExists: true,
|
||||
cascade: true,
|
||||
restrict: true,
|
||||
}).then(onResolve);
|
||||
Vendored
+54
@@ -0,0 +1,54 @@
|
||||
// Type definitions for db-migrate-pg
|
||||
// Project: https://github.com/db-migrate/pg
|
||||
// Definitions by: nickiannone <http://github.com/nickiannone>
|
||||
// Definitions: https://github.com/nickiannone/DefinitelyTyped
|
||||
|
||||
import * as pg from "pg";
|
||||
import * as DbMigrateBase from "db-migrate-base";
|
||||
import * as Promise from "bluebird";
|
||||
|
||||
// Yes, this is a dummy interface for now; the current implementation of the pg driver doesn't need any options.
|
||||
export interface CreateDatabaseOptions {}
|
||||
|
||||
export interface DropDatabaseOptions {
|
||||
ifExists?: boolean;
|
||||
}
|
||||
|
||||
export interface CreateSequenceOptions {
|
||||
temp?: boolean;
|
||||
}
|
||||
|
||||
export interface SwitchDatabaseOptions {
|
||||
database?: string;
|
||||
}
|
||||
|
||||
export interface DropSequenceOptions {
|
||||
ifExists?: boolean;
|
||||
cascade?: boolean;
|
||||
restrict?: boolean;
|
||||
}
|
||||
|
||||
export interface ColumnConstraint {
|
||||
foreignKey: (callback: DbMigrateBase.CallbackFunction) => void;
|
||||
constraints: string;
|
||||
}
|
||||
|
||||
export interface ColumnConstraintOptions {
|
||||
emitPrimaryKey?: boolean;
|
||||
}
|
||||
|
||||
export class PgDriver extends DbMigrateBase.Base {
|
||||
constructor(connection: pg.Client, schema: string, intern: DbMigrateBase.InternalOptions);
|
||||
createDatabase(dbName: string, optionsOrCb: CreateDatabaseOptions | DbMigrateBase.CallbackFunction, callback?: DbMigrateBase.CallbackFunction): void;
|
||||
dropDatabase(dbName: string, optionsOrCb: DropDatabaseOptions | DbMigrateBase.CallbackFunction, callback?: DbMigrateBase.CallbackFunction): void;
|
||||
createSequence(sqName: string, optionsOrCb: CreateSequenceOptions | DbMigrateBase.CallbackFunction, callback?: DbMigrateBase.CallbackFunction): void;
|
||||
switchDatabase(options: string | SwitchDatabaseOptions, callback: DbMigrateBase.CallbackFunction): void;
|
||||
dropSequence(dbName: string, optionsOrCb: DropSequenceOptions | DbMigrateBase.CallbackFunction, callback?: DbMigrateBase.CallbackFunction): void;
|
||||
createColumnConstraint(spec: DbMigrateBase.ColumnSpec, options: ColumnConstraintOptions, tableName: string, columnName: string): ColumnConstraint;
|
||||
|
||||
createDatabaseAsync(dbName: string, options?: CreateDatabaseOptions): Promise<any>;
|
||||
dropDatabaseAsync(dbName: string, options?: DropDatabaseOptions): Promise<any>;
|
||||
createSequenceAsync(sqName: string, options?: CreateSequenceOptions): Promise<any>;
|
||||
switchDatabaseAsync(options: string | SwitchDatabaseOptions): Promise<any>;
|
||||
dropSequenceAsync(dbName: string, options?: DropSequenceOptions): Promise<any>;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"target": "es6",
|
||||
"noImplicitAny": true,
|
||||
"strictNullChecks": false,
|
||||
"baseUrl": "../",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
],
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"db-migrate-pg-tests.ts"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
import * as eNotify from 'electron-notify';
|
||||
|
||||
eNotify.setConfig({
|
||||
appIcon: 'images/otherIcon.png',
|
||||
displayTime: 6000,
|
||||
defaultStyleText: {
|
||||
color: '#FF0000',
|
||||
fontWeight: 'bold'
|
||||
}
|
||||
});
|
||||
|
||||
eNotify.notify({
|
||||
title: 'Title',
|
||||
text: 'Some text',
|
||||
image: 'path/to/image.png',
|
||||
url: 'http://google.de',
|
||||
sound: 'notification.wav',
|
||||
onClickFunc: (event) => {
|
||||
console.log('onClick ' + event.id);
|
||||
event.closeNotification('onClick');
|
||||
},
|
||||
onShowFunc: (event) => { console.log('onShow ' + event.id) },
|
||||
onCloseFunc: (event) => { console.log('onClose ' + event.id) }
|
||||
});
|
||||
Vendored
+60
@@ -0,0 +1,60 @@
|
||||
// Type definitions for electron-notify v0.1.0
|
||||
// Project: https://github.com/hankbao/electron-notify
|
||||
// Definitions by: Daniel Pereira <https://github.com/djpereira>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
/// <reference types="electron" />
|
||||
|
||||
/** Nice and simple notifications for electron apps */
|
||||
export interface ICustomConfig {
|
||||
width?: number,
|
||||
height?: number,
|
||||
padding?: number,
|
||||
borderRadius?: number,
|
||||
displayTime?: number,
|
||||
animationSteps?: number,
|
||||
animationStepMs?: number,
|
||||
animateInParallel?: boolean,
|
||||
appIcon?: string,
|
||||
pathToModule?: string,
|
||||
logging?: boolean,
|
||||
defaultWindow?: Electron.BrowserWindowOptions,
|
||||
defaultStyleContainer?: any,
|
||||
defaultStyleAppIcon?: any,
|
||||
defaultStyleImage?: any,
|
||||
defaultStyleClose?: any,
|
||||
defaultStyleText?: any
|
||||
}
|
||||
|
||||
export interface ICloseNotificationEvent {
|
||||
event: 'close' | 'show' | 'click',
|
||||
id: number
|
||||
}
|
||||
|
||||
export interface INotificationEvent extends ICloseNotificationEvent {
|
||||
closeNotification: (reason: any) => void,
|
||||
}
|
||||
|
||||
export interface INotification {
|
||||
title: string,
|
||||
text?: string,
|
||||
image?: string,
|
||||
url?: string,
|
||||
sound?: string,
|
||||
onClickFunc?: (event: INotificationEvent) => void,
|
||||
onShowFunc?: (event: INotificationEvent) => void,
|
||||
onCloseFunc?: (event: ICloseNotificationEvent) => void
|
||||
}
|
||||
|
||||
/** Change some config options. Can be run multiple times, also between notify()-calls to change electron-notifys behaviour. */
|
||||
export function setConfig(customConfig: ICustomConfig): void;
|
||||
|
||||
/** Displays new notification. */
|
||||
export function notify(notification: INotification): void;
|
||||
|
||||
/** Clears the animation queue and closes all windows opened by electron-notify. Call this to clean up before quiting your app. */
|
||||
export function closeAll(): void;
|
||||
|
||||
export function getTemplatePath(): string;
|
||||
|
||||
export function setTemplatePath(path: string): void;
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"target": "es6",
|
||||
"noImplicitAny": true,
|
||||
"strictNullChecks": false,
|
||||
"baseUrl": "../",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
],
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"electron-notify-tests.ts"
|
||||
]
|
||||
}
|
||||
Vendored
+4
-4
@@ -43,7 +43,7 @@ declare class EventEmitter2 {
|
||||
* @param event
|
||||
* @param listener
|
||||
*/
|
||||
on(event: string, listener: Function): EventEmitter2;
|
||||
on(event: string | string[], listener: Function): EventEmitter2;
|
||||
|
||||
/**
|
||||
* Adds a listener that will be fired when any event is emitted.
|
||||
@@ -128,7 +128,7 @@ declare class EventEmitter2 {
|
||||
* @param event
|
||||
* @param args
|
||||
*/
|
||||
emit(event: string, ...args: any[]): boolean;
|
||||
emit(event: string | string[], ...args: any[]): boolean;
|
||||
|
||||
/**
|
||||
* Execute each of the listeners that may be listening for the specified event name in order with the list of arguments.
|
||||
@@ -156,7 +156,7 @@ declare module "eventemitter2" {
|
||||
* @param event
|
||||
* @param listener
|
||||
*/
|
||||
on(event: string, listener: Function): EventEmitter2;
|
||||
on(event: string | string[], listener: Function): EventEmitter2;
|
||||
|
||||
/**
|
||||
* Adds a listener that will be fired when any event is emitted.
|
||||
@@ -241,7 +241,7 @@ declare module "eventemitter2" {
|
||||
* @param event
|
||||
* @param args
|
||||
*/
|
||||
emit(event: string, ...args: any[]): boolean;
|
||||
emit(event: string | string[], ...args: any[]): boolean;
|
||||
|
||||
/**
|
||||
* Execute each of the listeners that may be listening for the specified event name in order with the list of arguments.
|
||||
|
||||
Vendored
+1
-1
@@ -22,7 +22,7 @@ declare module "express-serve-static-core" {
|
||||
}
|
||||
|
||||
interface RequestHandler {
|
||||
(req: Request, res: Response, next: NextFunction): any;
|
||||
(req: Request, res: Response, next?: NextFunction): any;
|
||||
}
|
||||
|
||||
interface ErrorRequestHandler {
|
||||
|
||||
@@ -13,19 +13,23 @@ app.post('/:urlparam', function(req: express.Request, res: express.Response) {
|
||||
// Similarly checkParams only checks in req.params (URL params) and
|
||||
// checkQuery only checks req.query (GET params).
|
||||
req.checkBody('postparam', 'Invalid postparam').notEmpty().isInt();
|
||||
req.checkParams('urlparam', 'Invalid urlparam').isAlpha();
|
||||
req.checkParams('urlparam', 'Invalid urlparam').isAlpha().matches(/test?/i).matches('test?', 'i');
|
||||
req.checkQuery('getparam', 'Invalid getparam').isInt();
|
||||
req.checkHeader('testHeader', 'Invalid testHeader').isLowercase().isUppercase();
|
||||
req.checkFiles('testFiles', 'Invalid testFiles').isUrl();
|
||||
|
||||
req.checkHeaders('testHeader', 'Invalid testHeader').isLowercase().isUppercase();
|
||||
req.checkFiles('testFiles', 'Invalid testFiles').isURL();
|
||||
|
||||
// OR assert can be used to check on all 3 types of params.
|
||||
// req.assert('postparam', 'Invalid postparam').notEmpty().isInt();
|
||||
// req.assert('urlparam', 'Invalid urlparam').isAlpha();
|
||||
// req.assert('getparam', 'Invalid getparam').isInt();
|
||||
|
||||
req.sanitize('postparam').toBoolean();
|
||||
req.filter('postparam').toBoolean();
|
||||
req.sanitize('postparam').blacklist('t').blacklist(['<script', '</script>']).whitelist('hello').whitelist(['h', 'e', 'l']);
|
||||
req.sanitizeBody('postvar').trim().stripLow().escape();
|
||||
req.sanitizeQuery('queryvar').toDate();
|
||||
req.sanitizeParams('urlparam').toFloat().toInt().toInt(10);
|
||||
req.sanitizeHeaders('header').normalizeEmail();
|
||||
|
||||
|
||||
var errors = req.validationErrors();
|
||||
var mappedErrors = req.validationErrors(true);
|
||||
|
||||
Vendored
+88
-49
@@ -1,11 +1,10 @@
|
||||
// Type definitions for express-validator 2.9.0
|
||||
// Type definitions for express-validator 2.20.4
|
||||
// Project: https://github.com/ctavan/express-validator
|
||||
// Definitions by: Nathan Ridley <https://github.com/axefrog/>, Jonathan Häberle <http://dreampulse.de>
|
||||
// Definitions by: Nathan Ridley <https://github.com/axefrog/>, Jonathan Häberle <http://dreampulse.de>, Peter Harris <https://github.com/codeanimal/>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
/// <reference types="express" />
|
||||
|
||||
|
||||
// Add RequestValidation Interface on to Express's Request Interface.
|
||||
declare namespace Express {
|
||||
interface Request extends ExpressValidator.RequestValidation {}
|
||||
@@ -32,25 +31,33 @@ declare namespace ExpressValidator {
|
||||
param: string;
|
||||
}
|
||||
|
||||
interface ValidatorFunction { (item: string, message: string): Validator; }
|
||||
interface ValidatorFunction { (item: string | {}, message?: string): Validator; }
|
||||
interface ValidatorExtraFunction extends ValidatorFunction { (matchIndex: number, message?: string): Validator; }
|
||||
interface SanitizerFunction { (item: string): Sanitizer; }
|
||||
interface Dictionary<T> { [key: string]: T; }
|
||||
|
||||
export interface RequestValidation {
|
||||
assert: ValidatorFunction;
|
||||
check: ValidatorFunction;
|
||||
assert: ValidatorExtraFunction;
|
||||
validate: ValidatorExtraFunction;
|
||||
check: ValidatorExtraFunction;
|
||||
checkBody: ValidatorFunction;
|
||||
checkFiles: ValidatorFunction;
|
||||
checkHeader: ValidatorFunction;
|
||||
checkHeaders: ValidatorFunction;
|
||||
checkParams: ValidatorFunction;
|
||||
checkQuery: ValidatorFunction;
|
||||
validate: ValidatorFunction;
|
||||
|
||||
|
||||
filter: SanitizerFunction;
|
||||
sanitize: SanitizerFunction;
|
||||
|
||||
sanitizeBody: SanitizerFunction;
|
||||
sanitizeQuery: SanitizerFunction;
|
||||
sanitizeParams: SanitizerFunction;
|
||||
sanitizeHeaders: SanitizerFunction;
|
||||
|
||||
onValidationError(errback: (msg: string) => void): void;
|
||||
validationErrors(mapped?: boolean): Dictionary<any> | any[];
|
||||
validationErrors(mapped?: boolean): Dictionary<MappedError> | MappedError[];
|
||||
validationErrors<T>(mapped?: boolean): Dictionary<T> | T[];
|
||||
asyncValidationErrors(mapped?: boolean): Promise<MappedError[] | Dictionary<MappedError>>;
|
||||
asyncValidationErrors<T>(mapped?: boolean): Promise<T[] | Dictionary<T>>;
|
||||
}
|
||||
|
||||
export interface Validator {
|
||||
@@ -62,12 +69,13 @@ declare namespace ExpressValidator {
|
||||
* Alias for notRegex()
|
||||
*/
|
||||
not(): Validator;
|
||||
isEmail(): Validator;
|
||||
isEmail(options?:{}): Validator;
|
||||
/**
|
||||
* Accepts http, https, ftp
|
||||
*/
|
||||
isUrl(): Validator;
|
||||
|
||||
isURL(): Validator;
|
||||
isFQDN(options?: MinMaxOptions): Validator;
|
||||
|
||||
/**
|
||||
* Combines isIPv4 and isIPv6
|
||||
*/
|
||||
@@ -75,8 +83,21 @@ declare namespace ExpressValidator {
|
||||
isIPv4(): Validator;
|
||||
isIPv6(): Validator;
|
||||
isMACAddress(): Validator;
|
||||
isAlpha(): Validator;
|
||||
isAlphanumeric(): Validator;
|
||||
isISBN(version?: number): Validator;
|
||||
isISIN(): Validator;
|
||||
isISO8601(): Validator;
|
||||
isMobilePhone(locale: string): Validator;
|
||||
isMongoId(): Validator;
|
||||
isMultibyte(): Validator;
|
||||
isAlpha(locale?: string): Validator;
|
||||
isAlphanumeric(locale?: string): Validator;
|
||||
isAscii(): Validator;
|
||||
isBase64(): Validator;
|
||||
isBoolean(): Validator;
|
||||
isByteLength(options: MinMaxOptions): Validator;
|
||||
isCurrency(options: {}): Validator;
|
||||
isDataURI(): Validator;
|
||||
isDivisibleBy(num: number): Validator;
|
||||
isNumeric(): Validator;
|
||||
isHexadecimal(): Validator;
|
||||
/**
|
||||
@@ -86,7 +107,7 @@ declare namespace ExpressValidator {
|
||||
/**
|
||||
* isNumeric accepts zero padded numbers, e.g. '001', isInt doesn't
|
||||
*/
|
||||
isInt(): Validator;
|
||||
isInt(options?: MinMaxOptions): Validator;
|
||||
isLowercase(): Validator;
|
||||
isUppercase(): Validator;
|
||||
isDecimal(): Validator;
|
||||
@@ -94,10 +115,12 @@ declare namespace ExpressValidator {
|
||||
* Alias for isDecimal
|
||||
*/
|
||||
isFloat(): Validator;
|
||||
isFullWidth(): Validator;
|
||||
isHalfWidth(): Validator;
|
||||
isVariableWidth(): Validator;
|
||||
/**
|
||||
* Check if length is 0
|
||||
*/
|
||||
notNull(): Validator;
|
||||
isNull(): Validator;
|
||||
/**
|
||||
* Not just whitespace (input.trim().length !== 0)
|
||||
@@ -105,12 +128,13 @@ declare namespace ExpressValidator {
|
||||
notEmpty(): Validator;
|
||||
equals(equals:any): Validator;
|
||||
contains(str:string): Validator;
|
||||
notContains(str:string): Validator;
|
||||
|
||||
/**
|
||||
* Usage: regex(/[a-z]/i) or regex('[a-z]','i')
|
||||
* Usage: matches(/[a-z]/i) or matches('[a-z]','i')
|
||||
*/
|
||||
regex(pattern:string, modifiers:string): Validator;
|
||||
notRegex(pattern:string, modifiers:string): Validator;
|
||||
matches(pattern:string, modifiers?:string): Validator;
|
||||
matches(pattern: RegExp): Validator;
|
||||
|
||||
/**
|
||||
* max is optional
|
||||
*/
|
||||
@@ -118,7 +142,7 @@ declare namespace ExpressValidator {
|
||||
/**
|
||||
* Version can be 3, 4 or 5 or empty, see http://en.wikipedia.org/wiki/Universally_unique_identifier
|
||||
*/
|
||||
isUUID(version:number): Validator;
|
||||
isUUID(version?:number): Validator;
|
||||
/**
|
||||
* Alias for isUUID(3)
|
||||
*/
|
||||
@@ -138,17 +162,20 @@ declare namespace ExpressValidator {
|
||||
/**
|
||||
* Argument is optional and defaults to today. Comparison is non-inclusive
|
||||
*/
|
||||
isAfter(date:Date): Validator;
|
||||
isAfter(date?:Date): Validator;
|
||||
/**
|
||||
* Argument is optional and defaults to today. Comparison is non-inclusive
|
||||
*/
|
||||
isBefore(date:Date): Validator;
|
||||
isBefore(date?:Date): Validator;
|
||||
isIn(options:string): Validator;
|
||||
isIn(options:string[]): Validator;
|
||||
notIn(options:string): Validator;
|
||||
notIn(options:string[]): Validator;
|
||||
max(val:string): Validator;
|
||||
min(val:string): Validator;
|
||||
isJSON(): Validator;
|
||||
isLength(options: MinMaxOptions): Validator;
|
||||
isWhitelisted(chars: string): Validator;
|
||||
/**
|
||||
* Will work against Visa, MasterCard, American Express, Discover, Diners Club, and JCB card numbering formats
|
||||
*/
|
||||
@@ -156,7 +183,10 @@ declare namespace ExpressValidator {
|
||||
/**
|
||||
* Check an input only when the input exists
|
||||
*/
|
||||
optional(): Validator;
|
||||
isSurrogatePar(): Validator;
|
||||
|
||||
optional(options?: { checkFalsy?: boolean }): Validator;
|
||||
withMessage(message: string): Validator;
|
||||
}
|
||||
|
||||
interface Sanitizer {
|
||||
@@ -166,40 +196,49 @@ declare namespace ExpressValidator {
|
||||
trim(...chars:string[]): Sanitizer;
|
||||
ltrim(...chars:string[]): Sanitizer;
|
||||
rtrim(...chars:string[]): Sanitizer;
|
||||
ifNull(replace:any): Sanitizer;
|
||||
stripLow(keep_new_lines?: boolean): Sanitizer;
|
||||
toFloat(): Sanitizer;
|
||||
toInt(): Sanitizer;
|
||||
toInt(radix?: number): Sanitizer;
|
||||
/**
|
||||
* True unless str = '0', 'false', or str.length == 0
|
||||
* True unless str = '0', 'false', or str.length == 0. In strict mode only '1' and 'true' return true.
|
||||
*/
|
||||
toBoolean(): Sanitizer;
|
||||
toBoolean(strict?: boolean): Sanitizer;
|
||||
|
||||
/**
|
||||
* False unless str = '1' or 'true'
|
||||
*/
|
||||
toBooleanStrict(): Sanitizer;
|
||||
/**
|
||||
* Decode HTML entities
|
||||
*/
|
||||
|
||||
/**
|
||||
* Convert the input string to a date, or null if the input is not a date.
|
||||
*/
|
||||
toDate(): Sanitizer;
|
||||
|
||||
entityDecode(): Sanitizer;
|
||||
entityEncode(): Sanitizer;
|
||||
* Convert the input string to a date, or null if the input is not a date.
|
||||
*/
|
||||
toDate(): Sanitizer;
|
||||
|
||||
/**
|
||||
* Escape &, <, >, and "
|
||||
*/
|
||||
escape(): Sanitizer;
|
||||
|
||||
/**
|
||||
* Remove common XSS attack vectors from user-supplied HTML
|
||||
* Replaces HTML encoded entities with <, >, &, ', " and /.
|
||||
*/
|
||||
xss(): Sanitizer;
|
||||
unescape(): Sanitizer;
|
||||
|
||||
blacklist(chars: string): Sanitizer;
|
||||
blacklist(chars: string[]): Sanitizer;
|
||||
whitelist(chars: string): Sanitizer;
|
||||
whitelist(chars: string[]): Sanitizer;
|
||||
|
||||
normalizeEmail(options?: { lowercase?: boolean; remove_dots?: boolean; remove_extensions?: boolean }): Sanitizer;
|
||||
|
||||
/**
|
||||
* Remove common XSS attack vectors from images
|
||||
* !!! XSS sanitization was removed from the library (see: https://github.com/chriso/validator.js#xss-sanitization)
|
||||
*/
|
||||
xss(fromImages:boolean): Sanitizer;
|
||||
}
|
||||
|
||||
|
||||
interface MappedError {
|
||||
param: string;
|
||||
msg: string;
|
||||
value: string;
|
||||
}
|
||||
|
||||
interface MinMaxOptions {
|
||||
min?: number;
|
||||
max?: number;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
/// <reference types="node" />
|
||||
import * as express from './';
|
||||
var app = express();
|
||||
|
||||
@@ -89,3 +90,10 @@ app.listen(3000);
|
||||
|
||||
const next: express.NextFunction = () => {};
|
||||
const nextWithArgument: express.NextFunction = (err: any) => {};
|
||||
|
||||
/**
|
||||
* The express.Application is compatible with http.createServer
|
||||
*/
|
||||
|
||||
import * as http from 'http';
|
||||
http.createServer(app);
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
import gulp = require("gulp");
|
||||
import rename = require("gulp-rename");
|
||||
|
||||
// Test that new import syntax works
|
||||
import * as newRename from 'gulp-rename';
|
||||
|
||||
// rename via string
|
||||
gulp.src("./src/main/text/hello.txt")
|
||||
.pipe(rename("main/text/ciao/goodbye.md"))
|
||||
@@ -24,4 +27,4 @@ gulp.src("./src/main/text/hello.txt", { base: process.cwd() })
|
||||
suffix: "-hola",
|
||||
extname: ".md"
|
||||
}))
|
||||
.pipe(gulp.dest("./dist")); // ./dist/main/text/ciao/bonjour-aloha-hola.md
|
||||
.pipe(gulp.dest("./dist")); // ./dist/main/text/ciao/bonjour-aloha-hola.md
|
||||
|
||||
Vendored
+12
-11
@@ -5,19 +5,20 @@
|
||||
|
||||
/// <reference types="node"/>
|
||||
|
||||
declare namespace rename {
|
||||
interface ParsedPath {
|
||||
dirname?: string;
|
||||
basename?: string;
|
||||
extname?: string;
|
||||
}
|
||||
|
||||
interface ParsedPath {
|
||||
dirname?: string;
|
||||
basename?: string;
|
||||
extname?: string;
|
||||
}
|
||||
|
||||
interface Options extends ParsedPath {
|
||||
prefix?: string;
|
||||
suffix?: string;
|
||||
interface Options extends ParsedPath {
|
||||
prefix?: string;
|
||||
suffix?: string;
|
||||
}
|
||||
}
|
||||
|
||||
declare function rename(name: string): NodeJS.ReadWriteStream;
|
||||
declare function rename(callback: (path: ParsedPath) => any): NodeJS.ReadWriteStream;
|
||||
declare function rename(opts: Options): NodeJS.ReadWriteStream;
|
||||
declare function rename(callback: (path: rename.ParsedPath) => any): NodeJS.ReadWriteStream;
|
||||
declare function rename(opts: rename.Options): NodeJS.ReadWriteStream;
|
||||
export = rename;
|
||||
|
||||
Vendored
+7
-4
@@ -5,7 +5,6 @@
|
||||
|
||||
//Note/Disclaimer: This .d.ts was created against hapi v8.x but has been incrementally upgraded to 13.x. Some newer features/changes may be missing. YMMV.
|
||||
|
||||
|
||||
/// <reference types="node" />
|
||||
|
||||
import http = require("http");
|
||||
@@ -1605,6 +1604,9 @@ export class ServerConnection extends Events.EventEmitter {
|
||||
info: IServerConnectionInfo;
|
||||
}
|
||||
|
||||
export type RequestExtPoints = "onRequest" | "onPreResponse" | "onPreAuth" | "onPostAuth" | "onPreHandler" | "onPostHandler" | "onPreResponse";
|
||||
export type ServerExtPoints = "onPreStart" | "onPostStart" | "onPreStop" | "onPostStop";
|
||||
|
||||
/** Server http://hapijs.com/api#server
|
||||
rver object is the main application container. The server manages all incoming connections along with all the facilities provided by the framework. A server can contain more than one connection (e.g. listen to port 80 and 8080).
|
||||
Server events
|
||||
@@ -2038,9 +2040,10 @@ export class Server extends Events.EventEmitter {
|
||||
server.route({ method: 'GET', path: '/test', handler: handler });
|
||||
server.start();
|
||||
// All requests will get routed to '/test'*/
|
||||
ext(event: string, method: (request: Request, reply: IReply, bind?: any) => void, options?: { before: string | string[]; after: string | string[]; bind?: any }): void;
|
||||
ext<T>(event: string, method: (request: Request, reply: IStrictReply<T>, bind?: any) => void, options?: { before: string | string[]; after: string | string[]; bind?: any }): void;
|
||||
|
||||
ext(event: RequestExtPoints, method: (request: Request, reply: IReply, bind?: any) => void, options?: { before: string | string[]; after: string | string[]; bind?: any }): void;
|
||||
ext<T>(event: RequestExtPoints, method: (request: Request, reply: IStrictReply<T>, bind?: any) => void, options?: { before: string | string[]; after: string | string[]; bind?: any }): void;
|
||||
ext(event: ServerExtPoints, method: (server: Server, next: (err?: any) => void, bind?: any) => void, options?: { before: string | string[]; after: string | string[]; bind?: any }): void;
|
||||
|
||||
/** server.handler(name, method)
|
||||
Registers a new handler type to be used in routes where:
|
||||
name - string name for the handler being registered. Cannot override the built-in handler types (directory, file, proxy, and view) or any previously registered type.
|
||||
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
// Type definitions for Highcharts 4.2.6 (exporting module)
|
||||
// Project: http://www.highcharts.com/
|
||||
// Definitions by: Maciej Suchecki <http://github.com/mc-suchecki>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
/// <reference path="highcharts.d.ts" />
|
||||
|
||||
declare var HighchartsExporting: (H: HighchartsStatic) => HighchartsStatic;
|
||||
|
||||
declare module "highcharts/modules/exporting" {
|
||||
export = HighchartsExporting;
|
||||
}
|
||||
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
// Type definitions for Highcharts 4.2.6
|
||||
// Project: http://www.highcharts.com/
|
||||
// Definitions by: Maciej Suchecki <http://github.com/mc-suchecki>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
/// <reference path="highcharts.d.ts" />
|
||||
|
||||
declare var HighchartsMore: (H: HighchartsStatic) => HighchartsStatic;
|
||||
|
||||
declare module "highcharts/highcharts-more" {
|
||||
export = HighchartsMore;
|
||||
}
|
||||
Vendored
+32
-25
@@ -5,31 +5,38 @@
|
||||
|
||||
///<reference types="jasmine"/>
|
||||
|
||||
declare function it(expectation:string, assertion:(done:(err?:any) => void) => void, timeout?:number):void;
|
||||
declare function it(expectation: string, assertion: (done: (err?: any) => void) => void, timeout?: number): void;
|
||||
|
||||
interface ExecuteSpecsOptions {
|
||||
specFolders: string[],
|
||||
onComplete?: (runner:jasmine.Runner) => void,
|
||||
isVerbose?: boolean,
|
||||
showColors?: boolean,
|
||||
teamcity?: string | boolean,
|
||||
useRequireJs?: boolean,
|
||||
regExpSpec: RegExp,
|
||||
junitreport?: {
|
||||
report: boolean,
|
||||
savePath: string,
|
||||
useDotNotation: boolean,
|
||||
consolidate: boolean
|
||||
},
|
||||
includeStackTrace?: boolean,
|
||||
growl?: boolean
|
||||
declare namespace jasmine {
|
||||
interface Env {
|
||||
defaultTimeoutInterval: number;
|
||||
}
|
||||
|
||||
interface ExecuteSpecsOptions {
|
||||
specFolders: string[],
|
||||
onComplete?: (runner: jasmine.Runner) => void,
|
||||
isVerbose?: boolean,
|
||||
showColors?: boolean,
|
||||
teamcity?: string | boolean,
|
||||
useRequireJs?: boolean,
|
||||
regExpSpec: RegExp,
|
||||
junitreport?: {
|
||||
report: boolean,
|
||||
savePath: string,
|
||||
useDotNotation: boolean,
|
||||
consolidate: boolean
|
||||
},
|
||||
includeStackTrace?: boolean,
|
||||
growl?: boolean
|
||||
}
|
||||
|
||||
interface JasmineNode {
|
||||
executeSpecsInFolder(options: ExecuteSpecsOptions): void;
|
||||
loadHelpersInFolder(path: string, pattern: RegExp): void;
|
||||
}
|
||||
}
|
||||
|
||||
interface JasmineNode {
|
||||
executeSpecsInFolder(options:ExecuteSpecsOptions): void;
|
||||
loadHelpersInFolder(path:string, pattern:RegExp): void;
|
||||
}
|
||||
|
||||
declare var jasmine:JasmineNode;
|
||||
|
||||
export = jasmine;
|
||||
declare module "jasmine-node" {
|
||||
const jasmine: jasmine.JasmineNode;
|
||||
export = jasmine;
|
||||
}
|
||||
@@ -3,10 +3,8 @@
|
||||
// Definitions by: Sven Reglitzki <https://github.com/svi3c/>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
|
||||
|
||||
it("should have a timeout parameter", () => {}, 1000);
|
||||
it("should have an optional timeout parameter", () => {});
|
||||
it("should have a timeout parameter", () => { }, 1000);
|
||||
it("should have an optional timeout parameter", () => { });
|
||||
|
||||
import jasmine = require("jasmine-node");
|
||||
|
||||
@@ -14,7 +12,7 @@ jasmine.loadHelpersInFolder("root", /\.helper\.ts/);
|
||||
|
||||
jasmine.executeSpecsInFolder({
|
||||
specFolders: [],
|
||||
onComplete: (runner) => {console.log(runner.results().failedCount)},
|
||||
onComplete: (runner) => { console.log(runner.results().failedCount) },
|
||||
isVerbose: true,
|
||||
showColors: true,
|
||||
teamcity: false,
|
||||
@@ -22,7 +20,7 @@ jasmine.executeSpecsInFolder({
|
||||
regExpSpec: /\.spec\.ts/,
|
||||
junitreport: {
|
||||
report: false,
|
||||
savePath : "./reports/",
|
||||
savePath: "./reports/",
|
||||
useDotNotation: true,
|
||||
consolidate: true
|
||||
},
|
||||
|
||||
Vendored
+62
-56
@@ -89,40 +89,10 @@ declare namespace kendo {
|
||||
};
|
||||
};
|
||||
|
||||
var cultures: {[culture: string] : {
|
||||
name?: string;
|
||||
calendar?: {
|
||||
AM: string[];
|
||||
PM: string[];
|
||||
days: {
|
||||
names: string[];
|
||||
namesAbbr: string[];
|
||||
namesShort: string[];
|
||||
firstDay: number;
|
||||
};
|
||||
months: {
|
||||
names: string[];
|
||||
namesAbbr: string[];
|
||||
};
|
||||
patterns: {
|
||||
D: string;
|
||||
F: string;
|
||||
G: string;
|
||||
M: string;
|
||||
T: string;
|
||||
Y: string;
|
||||
d: string;
|
||||
g: string;
|
||||
m: string;
|
||||
s: string;
|
||||
t: string;
|
||||
u: string;
|
||||
y: string;
|
||||
};
|
||||
twoDigitYearMax: number;
|
||||
};
|
||||
calendars?: {
|
||||
standard: {
|
||||
var cultures: {
|
||||
[culture: string]: {
|
||||
name?: string;
|
||||
calendar?: {
|
||||
AM: string[];
|
||||
PM: string[];
|
||||
days: {
|
||||
@@ -152,25 +122,57 @@ declare namespace kendo {
|
||||
};
|
||||
twoDigitYearMax: number;
|
||||
};
|
||||
};
|
||||
numberFormat?: {
|
||||
currency: {
|
||||
calendars?: {
|
||||
standard: {
|
||||
AM: string[];
|
||||
PM: string[];
|
||||
days: {
|
||||
names: string[];
|
||||
namesAbbr: string[];
|
||||
namesShort: string[];
|
||||
firstDay: number;
|
||||
};
|
||||
months: {
|
||||
names: string[];
|
||||
namesAbbr: string[];
|
||||
};
|
||||
patterns: {
|
||||
D: string;
|
||||
F: string;
|
||||
G: string;
|
||||
M: string;
|
||||
T: string;
|
||||
Y: string;
|
||||
d: string;
|
||||
g: string;
|
||||
m: string;
|
||||
s: string;
|
||||
t: string;
|
||||
u: string;
|
||||
y: string;
|
||||
};
|
||||
twoDigitYearMax: number;
|
||||
};
|
||||
};
|
||||
numberFormat?: {
|
||||
currency: {
|
||||
decimals: number;
|
||||
groupSize: number[];
|
||||
pattern: string[];
|
||||
symbol: string;
|
||||
};
|
||||
decimals: number;
|
||||
groupSize: number[];
|
||||
pattern: string[];
|
||||
symbol: string;
|
||||
percent: {
|
||||
decimals: number;
|
||||
groupSize: number[];
|
||||
pattern: string[];
|
||||
symbol: string;
|
||||
};
|
||||
};
|
||||
decimals: number;
|
||||
groupSize: number[];
|
||||
pattern: string[];
|
||||
percent: {
|
||||
decimals: number;
|
||||
groupSize: number[];
|
||||
pattern: string[];
|
||||
symbol: string;
|
||||
};
|
||||
};
|
||||
}};
|
||||
}
|
||||
};
|
||||
|
||||
function format(format: string, ...values: any[]): string;
|
||||
|
||||
@@ -488,8 +490,8 @@ declare namespace kendo.data {
|
||||
change(e: Object): void;
|
||||
start(source: kendo.Observable): void;
|
||||
stop(source: kendo.Observable): void;
|
||||
get (): any;
|
||||
set (value: any): void;
|
||||
get(): any;
|
||||
set(value: any): void;
|
||||
destroy(): void;
|
||||
}
|
||||
|
||||
@@ -500,7 +502,7 @@ declare namespace kendo.data {
|
||||
}
|
||||
|
||||
class EventBinding extends Binding {
|
||||
get (): void;
|
||||
get(): void;
|
||||
}
|
||||
|
||||
class TemplateBinding extends Binding {
|
||||
@@ -531,7 +533,7 @@ declare namespace kendo.data {
|
||||
interface BinderOptions {
|
||||
}
|
||||
|
||||
class ObservableObject extends Observable{
|
||||
class ObservableObject extends Observable {
|
||||
constructor(value?: any);
|
||||
uid: string;
|
||||
init(value?: any): void;
|
||||
@@ -571,6 +573,7 @@ declare namespace kendo.data {
|
||||
isAllDay?: boolean;
|
||||
id?: any;
|
||||
start?: Date;
|
||||
taskId?: number;
|
||||
startTimezone?: string;
|
||||
recurrenceId?: any;
|
||||
recurrenceRule?: string;
|
||||
@@ -583,7 +586,7 @@ declare namespace kendo.data {
|
||||
static fields: DataSourceSchemaModelFields;
|
||||
|
||||
constructor(data?: SchedulerEventData);
|
||||
|
||||
taskId: number;
|
||||
description: string;
|
||||
end: Date;
|
||||
endTimezone: string;
|
||||
@@ -2653,7 +2656,7 @@ declare namespace kendo.ui {
|
||||
separator?: string;
|
||||
suggest?: boolean;
|
||||
headerTemplate?: string|Function;
|
||||
template?: string|Function;
|
||||
template?: string | Function;
|
||||
valuePrimitive?: boolean;
|
||||
virtual?: boolean|AutoCompleteVirtual;
|
||||
change?(e: AutoCompleteChangeEvent): void;
|
||||
@@ -4471,6 +4474,7 @@ declare namespace kendo.ui {
|
||||
width?: string|number;
|
||||
values?: any;
|
||||
menu?: boolean;
|
||||
type?: any;
|
||||
}
|
||||
|
||||
interface GridEditable {
|
||||
@@ -5890,6 +5894,7 @@ declare namespace kendo.ui {
|
||||
destroy(): void;
|
||||
enable(enable: boolean): void;
|
||||
value(): any;
|
||||
values(): any;
|
||||
value(selectionStart: number, selectionEnd: number): void;
|
||||
resize(): void;
|
||||
|
||||
@@ -8834,6 +8839,7 @@ declare namespace kendo.dataviz.ui {
|
||||
type?: string;
|
||||
visible?: boolean;
|
||||
weekStartDay?: number;
|
||||
axisCrossingValues?: number[];
|
||||
notes?: ChartCategoryAxisItemNotes;
|
||||
}
|
||||
|
||||
@@ -10599,6 +10605,7 @@ declare namespace kendo.dataviz.ui {
|
||||
autoBind?: boolean;
|
||||
axisDefaults?: ChartAxisDefaults;
|
||||
categoryAxis?: ChartCategoryAxisItem[];
|
||||
valueAxis?: ChartValueAxisItem[];
|
||||
chartArea?: ChartChartArea;
|
||||
dataSource?: any|any|kendo.data.DataSource;
|
||||
legend?: ChartLegend;
|
||||
@@ -10614,7 +10621,6 @@ declare namespace kendo.dataviz.ui {
|
||||
title?: ChartTitle;
|
||||
tooltip?: ChartTooltip;
|
||||
transitions?: boolean;
|
||||
valueAxis?: ChartValueAxisItem[];
|
||||
xAxis?: ChartXAxisItem[];
|
||||
yAxis?: ChartYAxisItem[];
|
||||
zoomable?: boolean|ChartZoomable;
|
||||
|
||||
Vendored
+8
-7
@@ -172,6 +172,7 @@ Other changes
|
||||
- [x] Ensured _.range preserves the sign of start of -0
|
||||
- [x] Ensured _.reduce & _.reduceRight use getIteratee in their array branch
|
||||
- [x] Fixed rounding issue with the precision param of _.floor
|
||||
- [x] Added flush method to debounced & throttled functions
|
||||
|
||||
** LATER **
|
||||
Misc:
|
||||
@@ -185,7 +186,6 @@ Misc:
|
||||
- [ ] _.extend as an alias of _.assignIn
|
||||
- [ ] _.extendWith as an alias of _.assignInWith
|
||||
- [ ] Added clear method to _.memoize.Cache
|
||||
- [ ] Added flush method to debounced & throttled functions
|
||||
- [ ] Added support for ES6 maps, sets, & symbols to _.clone, _.isEqual, & _.toArray
|
||||
- [ ] Enabled _.flow & _.flowRight to accept an array of functions
|
||||
- [ ] Ensured “Collection” methods treat functions as objects
|
||||
@@ -10132,9 +10132,9 @@ declare module _ {
|
||||
/**
|
||||
* Creates a debounced function that delays invoking func until after wait milliseconds have elapsed since
|
||||
* the last time the debounced function was invoked. The debounced function comes with a cancel method to
|
||||
* cancel delayed invocations. Provide an options object to indicate that func should be invoked on the
|
||||
* leading and/or trailing edge of the wait timeout. Subsequent calls to the debounced function return the
|
||||
* result of the last func invocation.
|
||||
* cancel delayed invocations and a flush method to immediately invoke them. Provide an options object to
|
||||
* indicate that func should be invoked on the leading and/or trailing edge of the wait timeout. Subsequent
|
||||
* calls to the debounced function return the result of the last func invocation.
|
||||
*
|
||||
* Note: If leading and trailing options are true, func is invoked on the trailing edge of the timeout only
|
||||
* if the the debounced function is invoked more than once during the wait timeout.
|
||||
@@ -10755,9 +10755,9 @@ declare module _ {
|
||||
interface LoDashStatic {
|
||||
/**
|
||||
* Creates a throttled function that only invokes func at most once per every wait milliseconds. The throttled
|
||||
* function comes with a cancel method to cancel delayed invocations. Provide an options object to indicate
|
||||
* that func should be invoked on the leading and/or trailing edge of the wait timeout. Subsequent calls to
|
||||
* the throttled function return the result of the last func call.
|
||||
* function comes with a cancel method to cancel delayed invocations and a flush method to immediately invoke
|
||||
* them. Provide an options object to indicate that func should be invoked on the leading and/or trailing edge
|
||||
* of the wait timeout. Subsequent calls to the throttled function return the result of the last func call.
|
||||
*
|
||||
* Note: If leading and trailing options are true, func is invoked on the trailing edge of the timeout only if
|
||||
* the the throttled function is invoked more than once during the wait timeout.
|
||||
@@ -19159,6 +19159,7 @@ declare module _ {
|
||||
|
||||
interface Cancelable {
|
||||
cancel(): void;
|
||||
flush(): void;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Vendored
+1
-1
@@ -1794,7 +1794,7 @@ declare namespace __MaterialUI {
|
||||
focus(): void;
|
||||
select(): void;
|
||||
getValue(): string;
|
||||
getInputNode(): Element;
|
||||
getInputNode(): HTMLInputElement;
|
||||
}
|
||||
|
||||
interface TimePickerProps extends React.Props<TimePicker> {
|
||||
|
||||
Vendored
+31
@@ -0,0 +1,31 @@
|
||||
// Type definitions for mock-require v1.3.0
|
||||
// Project: https://github.com/boblauer/mock-require
|
||||
// Definitions by: Daniel Pereira <https://github.com/djpereira>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
/// <reference types="node" />
|
||||
|
||||
/** Simple, intuitive mocking of Node.js modules. */
|
||||
interface Mock {
|
||||
/**
|
||||
* @param {string} path The module you that you want to mock.
|
||||
* @param {any} mockExport The function or object you want to be returned from require, instead of the path module's exports, or the module you want to be returned from require, instead of the path module's export.
|
||||
*/
|
||||
(path: string, mockExport: any | Function | string): void;
|
||||
|
||||
/**
|
||||
* @param {string} path The module you that you want to stop mocking.
|
||||
*/
|
||||
stop(path: string): void;
|
||||
|
||||
/** This function can be used to remove all registered mocks without the need to remove them individually using mock.stop(). */
|
||||
stopAll(): void;
|
||||
|
||||
/**
|
||||
* @param {string} path The file whose cache you want to refresh.
|
||||
*/
|
||||
reRequire(path: string): void;
|
||||
}
|
||||
|
||||
declare const myModule: Mock;
|
||||
export = myModule;
|
||||
@@ -0,0 +1,45 @@
|
||||
import mock = require('mock-require');
|
||||
|
||||
function testMock() {
|
||||
mock('http', {
|
||||
request: function () {
|
||||
console.log('http.request called');
|
||||
}
|
||||
});
|
||||
|
||||
const http = require('http');
|
||||
http.request(); // 'http.request called'
|
||||
}
|
||||
|
||||
function testStop() {
|
||||
mock('fs', { mockedFS: true });
|
||||
|
||||
const fs1 = require('fs');
|
||||
mock.stop('fs');
|
||||
|
||||
const fs2 = require('fs');
|
||||
fs1 === fs2; // false
|
||||
}
|
||||
|
||||
function testStopAll() {
|
||||
mock('fs', {});
|
||||
mock('path', {});
|
||||
|
||||
const fs1 = require('fs');
|
||||
const path1 = require('path');
|
||||
|
||||
mock.stopAll();
|
||||
|
||||
const fs2 = require('fs');
|
||||
const path2 = require('path');
|
||||
|
||||
fs1 === fs2; // false
|
||||
path1 === path2; // false
|
||||
}
|
||||
|
||||
function testReRequire() {
|
||||
const fs = require('fs');
|
||||
let fileToTest = require('./fileToTest');
|
||||
mock('fs', {}); // fileToTest is still using the unmocked fs module
|
||||
fileToTest = mock.reRequire('./fileToTest'); // fileToTest is now using your mock
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"target": "es6",
|
||||
"noImplicitAny": true,
|
||||
"strictNullChecks": false,
|
||||
"baseUrl": "../",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
],
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"mock-require-tests.ts"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
/// <reference path="./mongoose-paginate.d.ts" />
|
||||
/// <reference path="../mongoose/mongoose.d.ts" />
|
||||
/// <reference path="../express/express.d.ts" />
|
||||
|
||||
/**
|
||||
* Created by Linus Brolin <https://github.com/linusbrolin/>.
|
||||
*/
|
||||
|
||||
import {
|
||||
Schema,
|
||||
model,
|
||||
PaginateModel,
|
||||
PaginateOptions,
|
||||
PaginateResult
|
||||
} from 'mongoose';
|
||||
import * as mongoosePaginate from 'mongoose-paginate';
|
||||
import { Router, Request, Response } from 'express';
|
||||
|
||||
|
||||
//#region Test Models
|
||||
interface User {
|
||||
email: string;
|
||||
username: string;
|
||||
password: string;
|
||||
}
|
||||
|
||||
const UserSchema: Schema = new Schema({
|
||||
email: String,
|
||||
username: String,
|
||||
password: String
|
||||
});
|
||||
|
||||
UserSchema.plugin(mongoosePaginate);
|
||||
|
||||
type UserModel<T> = _UserModel<T> & PaginateModel<T>;
|
||||
interface _UserModel<T> {}
|
||||
|
||||
let UserModel: UserModel<User> = model<User>('User', UserSchema) as UserModel<User>;
|
||||
//#endregion
|
||||
|
||||
|
||||
//#region Test Paginate
|
||||
let router: Router = Router();
|
||||
|
||||
router.get('/users.json', function(req: Request, res: Response) {
|
||||
let descending: boolean = true;
|
||||
let options: PaginateOptions = <PaginateOptions>{};
|
||||
options.select = 'email username';
|
||||
options.sort = { 'username': (descending ? -1 : 1) };
|
||||
options.populate = '';
|
||||
options.lean = true;
|
||||
options.leanWithId = false;
|
||||
options.offset = 0;
|
||||
options.page = 1;
|
||||
options.limit = 10;
|
||||
|
||||
UserModel
|
||||
.paginate({}, options, (err: any, value: PaginateResult<User>) => {
|
||||
if (err) {
|
||||
console.log(err);
|
||||
return res.status(500).send(err);
|
||||
}
|
||||
|
||||
console.log('total: ' + value.total);
|
||||
console.log('limit: ' + value.limit);
|
||||
console.log('page: ' + value.page);
|
||||
console.log('pages: ' + value.pages);
|
||||
console.log('offset: ' + value.offset);
|
||||
console.log('docs: ');
|
||||
console.dir(value.docs);
|
||||
return res.json(value);
|
||||
});
|
||||
|
||||
});
|
||||
//#endregion
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
// Type definitions for mongoose-paginate 5.0.0
|
||||
// Project: https://github.com/edwardhotchkiss/mongoose-paginate
|
||||
// Definitions by: Linus Brolin <https://github.com/linusbrolin/>, simonxca <https://github.com/simonxca/>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
/// <reference path="../mongoose/mongoose.d.ts" />
|
||||
|
||||
declare module 'mongoose' {
|
||||
export interface PaginateOptions {
|
||||
select?: Object | string;
|
||||
sort?: Object | string;
|
||||
populate?: Array<Object> | Array<string> | Object | string;
|
||||
lean?: boolean;
|
||||
leanWithId?: boolean;
|
||||
offset?: number;
|
||||
page?: number;
|
||||
limit?: number;
|
||||
}
|
||||
|
||||
export interface PaginateResult<T> {
|
||||
docs: Array<T>;
|
||||
total: number;
|
||||
limit: number;
|
||||
page?: number;
|
||||
pages?: number;
|
||||
offset?: number;
|
||||
}
|
||||
|
||||
export type PaginateModel<T> = _PaginateModel<T> & Model<T>;
|
||||
interface _PaginateModel<T> {
|
||||
paginate(query?: Object, options?: PaginateOptions, callback?: (err: any, result: PaginateResult<T>) => void): Promise<PaginateResult<T>>;
|
||||
}
|
||||
|
||||
export function model<T extends Document, Statics>(
|
||||
name: string,
|
||||
schema?: Schema,
|
||||
collection?: string,
|
||||
skipInit?: boolean): Statics & PaginateModel<T>;
|
||||
}
|
||||
|
||||
declare module 'mongoose-paginate' {
|
||||
import mongoose = require('mongoose');
|
||||
var _: (schema: mongoose.Schema) => void;
|
||||
export = _;
|
||||
}
|
||||
Vendored
+12
-8
@@ -52,14 +52,18 @@ declare namespace multer {
|
||||
}
|
||||
|
||||
interface Instance {
|
||||
/** Accept a single file with the name fieldname. The single file will be stored in req.file. */
|
||||
single(fieldame: string): express.RequestHandler;
|
||||
/** Accept an array of files, all with the name fieldname. Optionally error out if more than maxCount files are uploaded. The array of files will be stored in req.files. */
|
||||
array(fieldame: string, maxCount?: number): express.RequestHandler;
|
||||
/** Accept a mix of files, specified by fields. An object with arrays of files will be stored in req.files. */
|
||||
fields(fields: Field[]): express.RequestHandler;
|
||||
/** Accepts all files that comes over the wire. An array of files will be stored in req.files. */
|
||||
any(): express.RequestHandler;
|
||||
/** In case you need to handle a text-only multipart form, you can use any of the multer methods (.single(), .array(), fields()), req.body contains the text fields */
|
||||
single(): express.RequestHandler;
|
||||
/** Accept a single file with the name fieldname. The single file will be stored in req.file. */
|
||||
single(fieldame: string): express.RequestHandler;
|
||||
/** In case you need to handle a text-only multipart form, you can use any of the multer methods (.single(), .array(), fields()), req.body contains the text fields */
|
||||
array(): express.RequestHandler;
|
||||
/** Accept an array of files, all with the name fieldname. Optionally error out if more than maxCount files are uploaded. The array of files will be stored in req.files. */
|
||||
array(fieldame: string, maxCount?: number): express.RequestHandler;
|
||||
/** Accept a mix of files, specified by fields. An object with arrays of files will be stored in req.files. */
|
||||
fields(fields: Field[]): express.RequestHandler;
|
||||
/** In case you need to handle a text-only multipart form, you can use any of the multer methods (.single(), .array(), fields()), req.body contains the text fields */
|
||||
any(): express.RequestHandler;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Vendored
+9
-1
@@ -502,6 +502,9 @@ interface NodeBuffer extends Uint8Array {
|
||||
readFloatBE(offset: number, noAssert?: boolean): number;
|
||||
readDoubleLE(offset: number, noAssert?: boolean): number;
|
||||
readDoubleBE(offset: number, noAssert?: boolean): number;
|
||||
swap16(): Buffer;
|
||||
swap32(): Buffer;
|
||||
swap64(): Buffer;
|
||||
writeUInt8(value: number, offset: number, noAssert?: boolean): number;
|
||||
writeUInt16LE(value: number, offset: number, noAssert?: boolean): number;
|
||||
writeUInt16BE(value: number, offset: number, noAssert?: boolean): number;
|
||||
@@ -691,6 +694,7 @@ declare module "http" {
|
||||
*/
|
||||
statusMessage?: string;
|
||||
socket: net.Socket;
|
||||
destroy(error?: Error): void;
|
||||
}
|
||||
/**
|
||||
* @deprecated Use IncomingMessage
|
||||
@@ -1391,8 +1395,9 @@ declare module "dgram" {
|
||||
export function createSocket(type: string, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket;
|
||||
|
||||
interface Socket extends events.EventEmitter {
|
||||
send(buf: Buffer, port: number, address: string, callback?: (error: Error, bytes: number) => void): void;
|
||||
send(buf: Buffer, offset: number, length: number, port: number, address: string, callback?: (error: Error, bytes: number) => void): void;
|
||||
bind(port: number, address?: string, callback?: () => void): void;
|
||||
bind(port?: number, address?: string, callback?: () => void): void;
|
||||
close(): void;
|
||||
address(): AddressInfo;
|
||||
setBroadcast(flag: boolean): void;
|
||||
@@ -2187,6 +2192,9 @@ declare module "crypto" {
|
||||
}
|
||||
export function publicEncrypt(public_key: string | RsaPublicKey, buffer: Buffer): Buffer
|
||||
export function privateDecrypt(private_key: string | RsaPrivateKey, buffer: Buffer): Buffer
|
||||
export function getCiphers(): string[];
|
||||
export function getCurves(): string[];
|
||||
export function getHashes(): string[];
|
||||
}
|
||||
|
||||
declare module "stream" {
|
||||
|
||||
@@ -183,6 +183,14 @@ function bufferTests() {
|
||||
var result1 = Buffer.concat([utf8Buffer, base64Buffer]);
|
||||
var result2 = Buffer.concat([utf8Buffer, base64Buffer], 9999999);
|
||||
|
||||
// Class Methods: Buffer.swap16(), Buffer.swa32(), Buffer.swap64()
|
||||
{
|
||||
const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]);
|
||||
buf.swap16();
|
||||
buf.swap32();
|
||||
buf.swap64();
|
||||
}
|
||||
|
||||
// Class Method: Buffer.from(array)
|
||||
{
|
||||
const buf: Buffer = Buffer.from([0x62,0x75,0x66,0x66,0x65,0x72]);
|
||||
@@ -507,9 +515,12 @@ namespace tty_tests {
|
||||
|
||||
var ds: dgram.Socket = dgram.createSocket("udp4", (msg: Buffer, rinfo: dgram.RemoteInfo): void => {
|
||||
});
|
||||
ds.bind();
|
||||
ds.bind(41234);
|
||||
var ai: dgram.AddressInfo = ds.address();
|
||||
ds.send(new Buffer("hello"), 0, 5, 5000, "127.0.0.1", (error: Error, bytes: number): void => {
|
||||
});
|
||||
ds.send(new Buffer("hello"), 5000, "127.0.0.1");
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
///Querystring tests : https://nodejs.org/api/querystring.html
|
||||
|
||||
Vendored
+16
-13
@@ -45,6 +45,9 @@ declare namespace Parse {
|
||||
useMasterKey?: boolean;
|
||||
}
|
||||
|
||||
interface ScopeOptions extends SessionTokenOption, UseMasterKeyOption {
|
||||
}
|
||||
|
||||
interface SilentOption {
|
||||
/**
|
||||
* Set to true to avoid firing the event.
|
||||
@@ -363,15 +366,15 @@ declare namespace Parse {
|
||||
}
|
||||
|
||||
namespace Object {
|
||||
interface DestroyOptions extends SuccessFailureOptions, WaitOption, UseMasterKeyOption { }
|
||||
interface DestroyOptions extends SuccessFailureOptions, WaitOption, ScopeOptions { }
|
||||
|
||||
interface DestroyAllOptions extends SuccessFailureOptions, UseMasterKeyOption { }
|
||||
interface DestroyAllOptions extends SuccessFailureOptions, ScopeOptions { }
|
||||
|
||||
interface FetchOptions extends SuccessFailureOptions, UseMasterKeyOption { }
|
||||
interface FetchOptions extends SuccessFailureOptions, ScopeOptions { }
|
||||
|
||||
interface SaveOptions extends SuccessFailureOptions, SilentOption, UseMasterKeyOption, WaitOption { }
|
||||
interface SaveOptions extends SuccessFailureOptions, SilentOption, ScopeOptions, WaitOption { }
|
||||
|
||||
interface SaveAllOptions extends SuccessFailureOptions, UseMasterKeyOption { }
|
||||
interface SaveAllOptions extends SuccessFailureOptions, ScopeOptions { }
|
||||
|
||||
interface SetOptions extends ErrorOption, SilentOption {
|
||||
promise?: any;
|
||||
@@ -462,10 +465,10 @@ declare namespace Parse {
|
||||
at?: number;
|
||||
}
|
||||
|
||||
interface CreateOptions extends SuccessFailureOptions, WaitOption, SilentOption, UseMasterKeyOption {
|
||||
interface CreateOptions extends SuccessFailureOptions, WaitOption, SilentOption, ScopeOptions {
|
||||
}
|
||||
|
||||
interface FetchOptions extends SuccessFailureOptions, SilentOption, UseMasterKeyOption { }
|
||||
interface FetchOptions extends SuccessFailureOptions, SilentOption, ScopeOptions { }
|
||||
|
||||
interface RemoveOptions extends SilentOption { }
|
||||
|
||||
@@ -623,11 +626,11 @@ declare namespace Parse {
|
||||
}
|
||||
|
||||
namespace Query {
|
||||
interface EachOptions extends SuccessFailureOptions, UseMasterKeyOption { }
|
||||
interface CountOptions extends SuccessFailureOptions, UseMasterKeyOption { }
|
||||
interface FindOptions extends SuccessFailureOptions, UseMasterKeyOption { }
|
||||
interface FirstOptions extends SuccessFailureOptions, UseMasterKeyOption { }
|
||||
interface GetOptions extends SuccessFailureOptions, UseMasterKeyOption { }
|
||||
interface EachOptions extends SuccessFailureOptions, ScopeOptions { }
|
||||
interface CountOptions extends SuccessFailureOptions, ScopeOptions { }
|
||||
interface FindOptions extends SuccessFailureOptions, ScopeOptions { }
|
||||
interface FirstOptions extends SuccessFailureOptions, ScopeOptions { }
|
||||
interface GetOptions extends SuccessFailureOptions, ScopeOptions { }
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -893,7 +896,7 @@ declare namespace Parse {
|
||||
function run<T>(name: string, data?: any, options?: RunOptions): Promise<T>;
|
||||
function useMasterKey(): void;
|
||||
|
||||
interface RunOptions extends SuccessFailureOptions, UseMasterKeyOption, SessionTokenOption { }
|
||||
interface RunOptions extends SuccessFailureOptions, ScopeOptions { }
|
||||
|
||||
/**
|
||||
* To use this Cloud Module in Cloud Code, you must require 'buffer' in your JavaScript file.
|
||||
|
||||
Vendored
+5
-5
@@ -1,11 +1,10 @@
|
||||
// Type definitions for parse5 2.1.5
|
||||
// Type definitions for parse5 2.2.0
|
||||
// Project: https://github.com/inikulin/parse5
|
||||
// Definitions by: Nico Jansen <https://github.com/nicojs>
|
||||
// Definitions by: Nico Jansen <https://github.com/nicojs>, Meirion Hughes <https://github.com/MeirionHughes>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
/// <reference types="node" />
|
||||
|
||||
|
||||
import * as stream from "stream";
|
||||
import * as events from "events";
|
||||
|
||||
@@ -45,6 +44,7 @@ export declare function serialize(node: ASTNode, options?: SerializerOptions): s
|
||||
export interface ASTAttribute {
|
||||
name: string;
|
||||
value: string;
|
||||
prefix?: string;
|
||||
}
|
||||
|
||||
export interface Attribute {
|
||||
@@ -126,10 +126,10 @@ export declare class SAXParser extends stream.Transform {
|
||||
/**
|
||||
* Raised when the parser encounters a start tag.
|
||||
* Listener function has 4 parameters:
|
||||
* Tag name, List of attributes in the { key: String, value: String } form, selfClosing boolean
|
||||
* Tag name, List of attributes in the { name: String, value: String, prefix?: String } form, selfClosing boolean
|
||||
* and start tag source code location info. Available if location info is enabled in SAXParserOptions.
|
||||
*/
|
||||
on(event: 'startTag', listener: (name: string, attrs: Attribute[], selfClosing: boolean, location?: StartTagLocationInfo) => void): this;
|
||||
on(event: 'startTag', listener: (name: string, attrs: ASTAttribute[], selfClosing: boolean, location?: StartTagLocationInfo) => void): this;
|
||||
/**
|
||||
* Raised when parser encounters an end tag.
|
||||
* Listener function has 2 parameters:
|
||||
|
||||
+30
-7
@@ -1,6 +1,6 @@
|
||||
// Type definitions for parse5 2.1.5
|
||||
// Type definitions for parse5 2.2.0
|
||||
// Project: https://github.com/inikulin/parse5
|
||||
// Definitions by: Nico Jansen <https://github.com/nicojs>
|
||||
// Definitions by: Nico Jansen <https://github.com/nicojs>, Meirion Hughes <https://github.com/MeirionHughes>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
|
||||
@@ -8,33 +8,56 @@ import * as parse5 from 'parse5';
|
||||
|
||||
// parse5.SAXParser()
|
||||
var parser = new parse5.SAXParser({ locationInfo: true });
|
||||
|
||||
var _wasCalled = false;
|
||||
|
||||
parser.on('startTag', (name, attrs, selfClosing, location) => {
|
||||
console.log(name, attrs, selfClosing, location);
|
||||
console.log(attrs[0].name);
|
||||
console.log(attrs[0].prefix);
|
||||
console.log(attrs[0].value);
|
||||
|
||||
if(name == "use")
|
||||
if(attrs[0].prefix === undefined)
|
||||
throw "prefix wasn't defined on known attr"
|
||||
|
||||
_wasCalled = true;
|
||||
});
|
||||
|
||||
parser.on('text', (text, location) => {
|
||||
console.log(text, location);
|
||||
});
|
||||
|
||||
parser.write('some text');
|
||||
parser.write('<svg class="icon"><use xlink:href="icons.svg#some_selector"></use></svg>');
|
||||
|
||||
if(!_wasCalled)
|
||||
throw "parser.on 'startTag' wasn't called";
|
||||
|
||||
// parse5.parse()
|
||||
parse5.parse('html', { locationInfo: true, treeAdapter: parse5.treeAdapters.default });
|
||||
parse5.parse('<html></html>', { locationInfo: true, treeAdapter: parse5.treeAdapters.default });
|
||||
parse5.parse('html', {});
|
||||
parse5.parse('html');
|
||||
parse5.parse('');
|
||||
|
||||
// parse5.ParserStream()
|
||||
var parserStream = new parse5.ParserStream({ locationInfo: true, treeAdapter: parse5.treeAdapters.htmlparser2 });
|
||||
parserStream = new parse5.ParserStream({ });
|
||||
parserStream = new parse5.ParserStream();
|
||||
|
||||
parserStream.write("<html></html>");
|
||||
|
||||
var node = parserStream.document.childNodes[0];
|
||||
|
||||
node.parentNode.attrs = [{name: '', value: ''}];
|
||||
|
||||
// parse5.parseFragment()
|
||||
var fragment = parse5.parseFragment('');
|
||||
fragment = parse5.parseFragment('', {locationInfo: true});
|
||||
var fragment = parse5.parseFragment('<div></div>');
|
||||
fragment = parse5.parseFragment('<div></div>', {locationInfo: true});
|
||||
|
||||
// parse5.ASTNode
|
||||
fragment.quirksMode = true;
|
||||
fragment.namespaceURI = '';
|
||||
fragment.nodeName = '';
|
||||
fragment.value = '';
|
||||
fragment = fragment.parentNode;
|
||||
fragment = fragment.childNodes[0];
|
||||
fragment = fragment.parentNode;
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
/// <reference path="./passport-local-mongoose.d.ts" />
|
||||
/// <reference path="../express/express.d.ts" />
|
||||
/// <reference path="../passport/passport.d.ts" />
|
||||
/// <reference path="../passport-local/passport-local.d.ts" />
|
||||
/// <reference path="../mongoose/mongoose.d.ts" />
|
||||
|
||||
/**
|
||||
* Created by Linus Brolin <https://github.com/linusbrolin/>.
|
||||
*/
|
||||
|
||||
import {
|
||||
Schema,
|
||||
model,
|
||||
PassportLocalDocument,
|
||||
PassportLocalSchema,
|
||||
PassportLocalModel,
|
||||
PassportLocalOptions,
|
||||
PassportLocalErrorMessages
|
||||
} from 'mongoose';
|
||||
import * as passportLocalMongoose from 'passport-local-mongoose';
|
||||
|
||||
import { Router, Request, Response } from 'express';
|
||||
import * as passport from 'passport';
|
||||
import { Strategy as LocalStrategy } from 'passport-local';
|
||||
|
||||
|
||||
//#region Test Models
|
||||
interface User extends PassportLocalDocument {
|
||||
_id: string;
|
||||
username: string;
|
||||
hash: string;
|
||||
salt: string;
|
||||
attempts: number;
|
||||
last: Date;
|
||||
}
|
||||
|
||||
const UserSchema: PassportLocalSchema = <PassportLocalSchema>new Schema({
|
||||
username: String,
|
||||
hash: String,
|
||||
salt: String,
|
||||
attempts: Number,
|
||||
last: Date
|
||||
});
|
||||
|
||||
let options: PassportLocalOptions = <PassportLocalOptions>{};
|
||||
options.iterations = 25000;
|
||||
options.keylen = 512;
|
||||
options.digestAlgorithm = 'sha256';
|
||||
options.interval = 100;
|
||||
options.usernameField = 'username';
|
||||
options.usernameUnique = true;
|
||||
options.usernameLowerCase = true;
|
||||
options.hashField = 'hash';
|
||||
options.saltField = 'salt';
|
||||
options.saltlen = 32;
|
||||
options.attemptsField = 'attempts';
|
||||
options.lastLoginField = 'last';
|
||||
options.selectFields = 'undefined';
|
||||
options.populateFields = 'undefined';
|
||||
options.encoding = 'hex';
|
||||
options.limitAttempts = false;
|
||||
options.maxAttempts = Infinity;
|
||||
options.passwordValidator = function(password: string, cb: (err: any) => void): void {};
|
||||
options.usernameQueryFields = [];
|
||||
|
||||
let errorMessages: PassportLocalErrorMessages = {};
|
||||
errorMessages.MissingPasswordError = 'No password was given';
|
||||
errorMessages.AttemptTooSoonError = 'Account is currently locked. Try again later';
|
||||
errorMessages.TooManyAttemptsError = 'Account locked due to too many failed login attempts';
|
||||
errorMessages.NoSaltValueStoredError = 'Authentication not possible. No salt value stored';
|
||||
errorMessages.IncorrectPasswordError = 'Password or username are incorrect';
|
||||
errorMessages.IncorrectUsernameError = 'Password or username are incorrect';
|
||||
errorMessages.MissingUsernameError = 'No username was given';
|
||||
errorMessages.UserExistsError = 'A user with the given username is already registered';
|
||||
|
||||
options.errorMessages = errorMessages;
|
||||
|
||||
UserSchema.plugin(passportLocalMongoose, options);
|
||||
|
||||
type UserModel<T extends PassportLocalDocument> = _UserModel<T> & PassportLocalModel<T>;
|
||||
interface _UserModel<T extends PassportLocalDocument> {}
|
||||
|
||||
let UserModel: UserModel<User> = model<User>('User', UserSchema) as UserModel<User>;
|
||||
//#endregion
|
||||
|
||||
|
||||
//#region Test Passport/Passport-Local
|
||||
passport.use(UserModel.createStrategy());
|
||||
|
||||
passport.use('login', new LocalStrategy({
|
||||
passReqToCallback: true,
|
||||
usernameField: 'username',
|
||||
passwordField: 'password'
|
||||
},
|
||||
(req: any, username: string, password: string, done: (err: any, res: any, msg?: any) => void) => {
|
||||
process.nextTick(() => {
|
||||
UserModel
|
||||
.findOne({ 'username': username })
|
||||
.exec((err: any, user: model<User>) => {
|
||||
if (err) {
|
||||
console.log(err);
|
||||
return done(err, null);
|
||||
}
|
||||
|
||||
if (!user) {
|
||||
console.log(errorMessages.IncorrectUsernameError);
|
||||
return done(null, false, errorMessages.IncorrectUsernameError);
|
||||
}
|
||||
|
||||
user.authenticate(password, function(autherr: any, authuser: User, autherrmsg: any) {
|
||||
if (autherr) {
|
||||
console.log(autherr);
|
||||
return done(autherr, null);
|
||||
}
|
||||
|
||||
if (!authuser) {
|
||||
console.log(errorMessages.IncorrectPasswordError);
|
||||
return done(null, false, errorMessages.IncorrectPasswordError);
|
||||
}
|
||||
|
||||
return done(null, authuser);
|
||||
});
|
||||
});
|
||||
});
|
||||
})
|
||||
);
|
||||
|
||||
passport.serializeUser(UserModel.serializeUser());
|
||||
passport.deserializeUser(UserModel.deserializeUser());
|
||||
|
||||
let router: Router = Router();
|
||||
|
||||
router.post('/login', passport.authenticate('local'), function(req: Request, res: Response) {
|
||||
res.redirect('/');
|
||||
});
|
||||
//#endregion
|
||||
@@ -0,0 +1,91 @@
|
||||
// Type definitions for passport-local-mongoose 4.0.0
|
||||
// Project: https://github.com/saintedlama/passport-local-mongoose
|
||||
// Definitions by: Linus Brolin <https://github.com/linusbrolin/>, simonxca <https://github.com/simonxca/>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
/// <reference path="../mongoose/mongoose.d.ts" />
|
||||
/// <reference path="../passport-local/passport-local.d.ts" />
|
||||
|
||||
declare module 'mongoose' {
|
||||
import passportLocal = require('passport-local');
|
||||
|
||||
// methods
|
||||
export interface PassportLocalDocument {
|
||||
setPassword(password: string, cb: (err: any, res: any) => void): void;
|
||||
authenticate(password: string, cb: (err: any, res: any, error: any) => void): void;
|
||||
}
|
||||
|
||||
// statics
|
||||
export type PassportLocalModel<T extends PassportLocalDocument> = _PassportLocalModel<T> & Model<T>;
|
||||
interface _PassportLocalModel<T extends PassportLocalDocument> {
|
||||
authenticate(): (username: string, password: string, cb: (err: any, res: T, error: any) => void) => void;
|
||||
serializeUser(): (user: PassportLocalModel<T>, cb: (err: any) => void) => void;
|
||||
deserializeUser(): (username: string, cb: (err: any) => void) => void;
|
||||
register(user: PassportLocalModel<T>, password: string, cb: (err: any) => void): void;
|
||||
findByUsername(username: string, selectHashSaltFields: boolean, cb: (err: any) => void): any;
|
||||
createStrategy(): passportLocal.Strategy;
|
||||
}
|
||||
|
||||
// error messages
|
||||
export interface PassportLocalErrorMessages {
|
||||
MissingPasswordError?: string;
|
||||
AttemptTooSoonError?: string;
|
||||
TooManyAttemptsError?: string;
|
||||
NoSaltValueStoredError?: string;
|
||||
IncorrectPasswordError?: string;
|
||||
IncorrectUsernameError?: string;
|
||||
MissingUsernameError?: string;
|
||||
UserExistsError?: string;
|
||||
}
|
||||
|
||||
// plugin options
|
||||
export interface PassportLocalOptions {
|
||||
saltlen?: number;
|
||||
iterations?: number;
|
||||
keylen?: number;
|
||||
encoding?: string;
|
||||
digestAlgorithm?: string;
|
||||
passwordValidator?: (password: string, cb: (err: any) => void) => void;
|
||||
|
||||
usernameField?: string;
|
||||
usernameUnique?: boolean;
|
||||
|
||||
usernameQueryFields: Array<string>;
|
||||
|
||||
selectFields?: string;
|
||||
populateFields?: string;
|
||||
|
||||
usernameLowerCase?: boolean;
|
||||
|
||||
hashField?: string;
|
||||
saltField?: string;
|
||||
|
||||
limitAttempts?: boolean;
|
||||
lastLoginField?: string;
|
||||
attemptsField?: string;
|
||||
interval?: number;
|
||||
maxInterval?: number;
|
||||
maxAttempts?: number;
|
||||
|
||||
errorMessages?: PassportLocalErrorMessages;
|
||||
}
|
||||
|
||||
export interface PassportLocalSchema extends Schema {
|
||||
plugin(
|
||||
plugin: (schema: PassportLocalSchema, options?: PassportLocalOptions) => void,
|
||||
options?: PassportLocalOptions
|
||||
): this;
|
||||
}
|
||||
|
||||
export function model<T extends PassportLocalDocument, Statics>(
|
||||
name: string,
|
||||
schema?: PassportLocalSchema,
|
||||
collection?: string,
|
||||
skipInit?: boolean): Statics & PassportLocalModel<T>;
|
||||
}
|
||||
|
||||
declare module 'passport-local-mongoose' {
|
||||
import mongoose = require('mongoose');
|
||||
var _: (schema: mongoose.Schema, options?: Object) => void;
|
||||
export = _;
|
||||
}
|
||||
Vendored
+3
-3
@@ -45,16 +45,16 @@ declare module __ReactDnd {
|
||||
spec: DropTargetSpec<P>,
|
||||
collect: DropTargetCollector,
|
||||
options?: DndOptions<P>
|
||||
): (componentClass: React.ComponentClass<P>) => DndComponentClass<P>;
|
||||
): (componentClass: React.ComponentClass<P> | React.StatelessComponent<P>) => DndComponentClass<P>;
|
||||
|
||||
export function DragDropContext<P>(
|
||||
backend: Backend
|
||||
): (componentClass: React.ComponentClass<P>) => ContextComponentClass<P>;
|
||||
): <P>(componentClass: React.ComponentClass<P> | React.StatelessComponent<P>) => ContextComponentClass<P>;
|
||||
|
||||
export function DragLayer<P>(
|
||||
collect: DragLayerCollector,
|
||||
options?: DndOptions<P>
|
||||
): (componentClass: React.ComponentClass<P>) => DndComponentClass<P>;
|
||||
): (componentClass: React.ComponentClass<P> | React.StatelessComponent<P>) => DndComponentClass<P>;
|
||||
|
||||
type DragSourceCollector = (connect: DragSourceConnector, monitor: DragSourceMonitor) => Object;
|
||||
type DropTargetCollector = (connect: DropTargetConnector, monitor: DropTargetMonitor) => Object;
|
||||
|
||||
Vendored
+1
@@ -17,6 +17,7 @@ export = Helmet;
|
||||
declare namespace ReactHelmet {
|
||||
interface HelmetProps {
|
||||
base?: any;
|
||||
defaultTitle?: string;
|
||||
htmlAttributes?: any;
|
||||
link?: Array<any>;
|
||||
meta?: Array<any>;
|
||||
|
||||
Vendored
+2
@@ -23,6 +23,8 @@ declare namespace ReactTabs {
|
||||
|
||||
interface TabListProps {
|
||||
className?: string;
|
||||
activeTabClassName?: string;
|
||||
disabledTabClassName?: string;
|
||||
}
|
||||
|
||||
interface TabList extends React.ComponentClass<TabListProps> {}
|
||||
|
||||
Vendored
+4
-2
@@ -200,7 +200,7 @@ declare namespace React {
|
||||
|
||||
type SFC<P> = StatelessComponent<P>;
|
||||
interface StatelessComponent<P> {
|
||||
(props?: P, context?: any): ReactElement<any>;
|
||||
(props: P, context?: any): ReactElement<any>;
|
||||
propTypes?: ValidationMap<P>;
|
||||
contextTypes?: ValidationMap<any>;
|
||||
defaultProps?: P;
|
||||
@@ -279,9 +279,11 @@ declare namespace React {
|
||||
isTrusted: boolean;
|
||||
nativeEvent: Event;
|
||||
preventDefault(): void;
|
||||
isDefaultPrevented(): boolean;
|
||||
stopPropagation(): void;
|
||||
target: EventTarget & T;
|
||||
isPropagationStopped(): boolean;
|
||||
persist(): void;
|
||||
target: EventTarget;
|
||||
timeStamp: Date;
|
||||
type: string;
|
||||
}
|
||||
|
||||
@@ -120,7 +120,7 @@ class ModernComponent extends React.Component<Props, State>
|
||||
value: this.state.inputValue
|
||||
}),
|
||||
React.DOM.input({
|
||||
onChange: event => console.log(event.target.value)
|
||||
onChange: event => console.log(event.target)
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
import React = require("react");
|
||||
|
||||
interface SCProps {
|
||||
foo?: number;
|
||||
}
|
||||
|
||||
var StatelessComponent: React.SFC<SCProps> = ({ foo }: SCProps) => {
|
||||
return <div>{ foo }</div>;
|
||||
};
|
||||
StatelessComponent.displayName = "StatelessComponent3";
|
||||
StatelessComponent.defaultProps = {
|
||||
foo: 42
|
||||
};
|
||||
|
||||
<StatelessComponent />;
|
||||
+4
-2
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"react-tests.ts"
|
||||
"react-tests.ts",
|
||||
"react-tsx-tests.tsx"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
@@ -14,6 +15,7 @@
|
||||
],
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"jsx": "preserve"
|
||||
}
|
||||
}
|
||||
Vendored
+33
@@ -0,0 +1,33 @@
|
||||
// Type definitions for redis-rate-limiter 1.0.3
|
||||
// Project: https://github.com/TabDigital/redis-rate-limiter
|
||||
// Definitions by: Seth Westphal <https://github.com/westy92>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
import * as express from 'express';
|
||||
import * as redis from 'redis';
|
||||
|
||||
declare class RedisRateLimiter {
|
||||
public static create(options: RedisRateLimiter.Options):
|
||||
(req: express.Request, callback: (err: Error, res: RedisRateLimiter.Response) => void) => void;
|
||||
public static middleware(options: RedisRateLimiter.Options): express.RequestHandler;
|
||||
}
|
||||
|
||||
declare namespace RedisRateLimiter {
|
||||
export interface Options {
|
||||
redis: redis.RedisClient;
|
||||
key: 'ip' | ((req: express.Request) => string);
|
||||
window?: number;
|
||||
limit?: number;
|
||||
rate?: string;
|
||||
}
|
||||
|
||||
export interface Response {
|
||||
key: string;
|
||||
current: number;
|
||||
limit: number;
|
||||
window: number;
|
||||
over: boolean;
|
||||
}
|
||||
}
|
||||
|
||||
export = RedisRateLimiter;
|
||||
@@ -0,0 +1,37 @@
|
||||
import * as express from 'express';
|
||||
import * as redis from 'redis';
|
||||
import * as rateLimiter from 'redis-rate-limiter';
|
||||
|
||||
var num: number;
|
||||
var str: string;
|
||||
var options: redis.ClientOpts;
|
||||
var redisClient = redis.createClient(num, str, options);
|
||||
|
||||
var limit = rateLimiter.create({
|
||||
redis: redisClient,
|
||||
key: function(x) { return x.ip },
|
||||
rate: '100/minute'
|
||||
});
|
||||
|
||||
var request = {} as express.Request;
|
||||
limit(request, function(err, rate) {
|
||||
if (err) {
|
||||
console.warn('Rate limiting not available');
|
||||
} else {
|
||||
console.log('Rate window: ' + rate.window); // 60
|
||||
console.log('Rate limit: ' + rate.limit); // 100
|
||||
console.log('Rate current: ' + rate.current); // 74
|
||||
if (rate.over) {
|
||||
console.error('Over the limit!');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var middleware = rateLimiter.middleware({
|
||||
redis: redisClient,
|
||||
key: 'ip',
|
||||
rate: '100/minute'
|
||||
});
|
||||
|
||||
var app = express();
|
||||
app.use(middleware);
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"target": "es6",
|
||||
"noImplicitAny": true,
|
||||
"strictNullChecks": false,
|
||||
"baseUrl": "../",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
],
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"redis-rate-limiter-tests.ts"
|
||||
]
|
||||
}
|
||||
Vendored
+35
@@ -0,0 +1,35 @@
|
||||
// Type definitions for redis-scripto 0.1.3
|
||||
// Project: https://github.com/arunoda/node-redis-scripto
|
||||
// Definitions by: Seth Westphal <https://github.com/westy92>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
|
||||
|
||||
import * as redis from 'redis';
|
||||
|
||||
declare class Scripto {
|
||||
|
||||
constructor(redisClient: redis.RedisClient);
|
||||
|
||||
eval(scriptName: string, keys: string[], args: any[], callback: (err: Error, result: any) => void): void;
|
||||
evalSha(scriptName: string, keys: string[], args: any[], callback: (err: Error, result: any) => void): void;
|
||||
|
||||
load(scripts: Scripto.Scripts): void;
|
||||
loadFromDir(scriptsDir: string): void;
|
||||
loadFromFile(name: string, filepath: string): void;
|
||||
|
||||
run(scriptName: string, keys: string[], args: any[], callback: (err: Error, result: any) => void): void;
|
||||
|
||||
}
|
||||
|
||||
declare namespace Scripto {
|
||||
|
||||
export type Script = string;
|
||||
|
||||
export interface Scripts {
|
||||
[scriptName: string]: Script;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export = Scripto;
|
||||
@@ -0,0 +1,34 @@
|
||||
import * as redis from 'redis';
|
||||
import * as Scripto from 'redis-scripto';
|
||||
|
||||
var num: number;
|
||||
var str: string;
|
||||
var options: redis.ClientOpts;
|
||||
var redisClient = redis.createClient(num, str, options);
|
||||
|
||||
var scriptManager = new Scripto(redisClient);
|
||||
scriptManager.loadFromDir('/path/to/lua/scripts');
|
||||
|
||||
var keys = ['keyOne', 'keyTwo'];
|
||||
var values = [10, 20];
|
||||
scriptManager.run('your-script', keys, values, function(err, result) {
|
||||
|
||||
});
|
||||
|
||||
scriptManager.eval('your-script', keys, values, function(err, result) {
|
||||
|
||||
});
|
||||
|
||||
scriptManager.loadFromFile('script-one', '/path/to/the/file');
|
||||
scriptManager.run('script-one', [], [], function(err, result) {
|
||||
|
||||
});
|
||||
|
||||
var scripts: Scripto.Scripts = {
|
||||
'script-two': 'return 1000'
|
||||
};
|
||||
|
||||
scriptManager.load(scripts);
|
||||
scriptManager.run('script-two', [], [], function(err, result) {
|
||||
|
||||
});
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"target": "es6",
|
||||
"noImplicitAny": true,
|
||||
"strictNullChecks": false,
|
||||
"baseUrl": "../",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
],
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"redis-scripto-tests.ts"
|
||||
]
|
||||
}
|
||||
Vendored
+3
-1
@@ -108,7 +108,7 @@ export interface RedisClient extends NodeJS.EventEmitter {
|
||||
"lset", "lrange", "ltrim", "lrem", "rpoplpush", "sadd", "srem", "smove", "sismember", "scard", "spop", "srandmember", "sinter", "sinterstore",
|
||||
"sunion", "sunionstore", "sdiff", "sdiffstore", "smembers", "zadd", "zincrby", "zrem", "zremrangebyscore", "zremrangebyrank", "zunionstore",
|
||||
"zinterstore", "zrange", "zrangebyscore", "zrevrangebyscore", "zcount", "zrevrange", "zcard", "zscore", "zrank", "zrevrank", "hset", "hsetnx",
|
||||
"hget", "hmset", "hmget", "hincrby", "hdel", "hlen", "hkeys", "hvals", "hgetall", "hexists", "incrby", "decrby", "getset", "mset", "msetnx",
|
||||
"hget", "hmset", "hmget", "hincrby", "hincrbyfloat", "hdel", "hlen", "hkeys", "hvals", "hgetall", "hexists", "incrby", "decrby", "getset", "mset", "msetnx",
|
||||
"randomkey", "select", "move", "rename", "renamenx", "expire", "expireat", "keys", "dbsize", "auth", "ping", "echo", "save", "bgsave",
|
||||
"bgrewriteaof", "shutdown", "lastsave", "type", "multi", "exec", "discard", "sync", "flushdb", "flushall", "sort", "info", "monitor", "ttl",
|
||||
"persist", "slaveof", "debug", "config", "subscribe", "unsubscribe", "psubscribe", "punsubscribe", "publish", "watch", "unwatch", "cluster",
|
||||
@@ -253,6 +253,8 @@ export interface RedisClient extends NodeJS.EventEmitter {
|
||||
hmget(...args: any[]): boolean;
|
||||
hincrby(args: any[], callback?: ResCallbackT<any>): boolean;
|
||||
hincrby(...args: any[]): boolean;
|
||||
hincrbyfloat(args:any[], callback?:ResCallbackT<any>): boolean;
|
||||
hincrbyfloat(...args:any[]): boolean;
|
||||
hdel(args: any[], callback?: ResCallbackT<any>): boolean;
|
||||
hdel(...args: any[]): boolean;
|
||||
hlen(args: any[], callback?: ResCallbackT<any>): boolean;
|
||||
|
||||
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
// Type definitions for simple-assign 0.1.0
|
||||
// Project: https://github.com/newoga/simple-assign
|
||||
// Definitions by: Ivo Stratev <https://github.com/NoHomey>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
declare function simpleAssign<T, U>(target: T, source: U): T & U;
|
||||
declare function simpleAssign<T, U, V>(target: T, source1: U, source2: V): T & U & V;
|
||||
declare function simpleAssign<T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W;
|
||||
declare function simpleAssign<T, U, V, W, Q>(target: T, source1: U, source2: V, source3: W, source4: Q): T & U & V & W & Q;
|
||||
declare function simpleAssign<T, U, V, W, Q, R>(target: T, source1: U, source2: V, source3: W, source4: Q, source5: T): T & U & V & W & Q & R;
|
||||
declare function simpleAssign(target: any, ...sources: any[]): any;
|
||||
|
||||
export = simpleAssign;
|
||||
@@ -0,0 +1,14 @@
|
||||
|
||||
import assign = require('simple-assign');
|
||||
|
||||
function assign1() {
|
||||
return assign({hello: "world"});
|
||||
}
|
||||
|
||||
function assign2() {
|
||||
return assign({hello: "world"}, {hello: "worlds", second: "extra"});
|
||||
}
|
||||
|
||||
function assign3() {
|
||||
return assign({hello: "world"}, {hello: "worlds", second: "extra"}, {hello: "stop", the: "spinning"});
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"target": "es6",
|
||||
"noImplicitAny": true,
|
||||
"strictNullChecks": false,
|
||||
"baseUrl": "../",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
],
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"simple-assign-tests.ts"
|
||||
]
|
||||
}
|
||||
@@ -155,8 +155,6 @@ grid.getCellCssStyles("test")[0]["number_column"];
|
||||
|
||||
grid.getCellEditor();
|
||||
|
||||
grid.getCellFromEvent(new Slick.Event());
|
||||
|
||||
grid.getCellFromPoint(5, 10);
|
||||
|
||||
grid.getCellNode(5, 10);
|
||||
@@ -210,3 +208,8 @@ columns.forEach(column => {
|
||||
grid.onSort.subscribe((e, args) => {
|
||||
var sortCol:string = args.sortCols[0].sortCol.field;
|
||||
});
|
||||
|
||||
grid.onMouseEnter.subscribe((e: DOMEvent, args: Slick.OnMouseEnterEventArgs<MyData>) => {
|
||||
let cell: Slick.Cell = args.grid.getCellFromEvent(e);
|
||||
if (!cell) { return; }
|
||||
});
|
||||
|
||||
Vendored
+6
-4
@@ -92,14 +92,16 @@ declare namespace Slick {
|
||||
* @method subscribe
|
||||
* @param fn {Function} Event handler.
|
||||
*/
|
||||
public subscribe(fn: (eventData: EventData, data: T) => any ): void;
|
||||
public subscribe(fn: (e: EventData, data: T) => any): void;
|
||||
public subscribe(fn: (e: DOMEvent, data: T) => any): void;
|
||||
|
||||
/***
|
||||
* Removes an event handler added with <code>subscribe(fn)</code>.
|
||||
* @method unsubscribe
|
||||
* @param fn {Function} Event handler to be removed.
|
||||
*/
|
||||
public unsubscribe(fn: (eventData: EventData, data: T) => any ): void;
|
||||
public unsubscribe(fn: (e: EventData, data: T) => any): void;
|
||||
public unsubscribe(fn: (e: DOMEvent, data: T) => any): void;
|
||||
|
||||
/***
|
||||
* Fires an event notifying all subscribers.
|
||||
@@ -1037,7 +1039,7 @@ declare namespace Slick {
|
||||
* @param e A standard W3C/jQuery event.
|
||||
* @return
|
||||
**/
|
||||
public getCellFromEvent<T>(e: Event<T>): Cell; // todo: !! Unsure on return type !!
|
||||
public getCellFromEvent(e: DOMEvent): Cell;
|
||||
|
||||
/**
|
||||
* Returns a hash containing row and cell indexes. Coordinates are relative to the top left corner of the grid beginning with the first row (not including the column headers).
|
||||
@@ -1045,7 +1047,7 @@ declare namespace Slick {
|
||||
* @param y A y coordinate.
|
||||
* @return
|
||||
**/
|
||||
public getCellFromPoint(x: number, y: number): Cell; // todo: !! Unsure on return type !!
|
||||
public getCellFromPoint(x: number, y: number): Cell;
|
||||
|
||||
/**
|
||||
* Returns a DOM element containing a cell at a given row and cell.
|
||||
|
||||
Vendored
+7
-2
@@ -838,6 +838,11 @@ declare namespace uiGrid {
|
||||
* @default false
|
||||
*/
|
||||
useExternalFiltering?: boolean;
|
||||
/**
|
||||
* Disables client side sorting. When true, handle the sortChanged event and do the sorting there
|
||||
* @default false
|
||||
*/
|
||||
useExternalSorting?: boolean;
|
||||
/**
|
||||
* Default time in milliseconds to throttle scroll events to, defaults to 70ms
|
||||
* @default 70
|
||||
@@ -3564,7 +3569,7 @@ declare namespace uiGrid {
|
||||
* Algorithm to use for sorting this column. Takes 'a' and 'b' parameters
|
||||
* like any normal sorting function with additional 'rowA', 'rowB', and 'direction'
|
||||
* parameters that are the row objects and the current direction of the sort
|
||||
* respectively.
|
||||
* respectively.
|
||||
*/
|
||||
sortingAlgorithm?: (a: any, b: any, rowA: IGridRowOf<TEntity>, rowB: IGridRowOf<TEntity>, direction: string) => number;
|
||||
/** Column width */
|
||||
@@ -3799,7 +3804,7 @@ declare namespace uiGrid {
|
||||
* Algorithm to use for sorting this column. Takes 'a' and 'b' parameters
|
||||
* like any normal sorting function with additional 'rowA', 'rowB', and 'direction'
|
||||
* parameters that are the row objects and the current direction of the sort
|
||||
* respectively.
|
||||
* respectively.
|
||||
*/
|
||||
sortingAlgorithm?: (a: any, b: any, rowA: IGridRowOf<TEntity>, rowB: IGridRowOf<TEntity>, direction: string) => number;
|
||||
/**
|
||||
|
||||
Vendored
+50
-6
@@ -1,6 +1,6 @@
|
||||
// Type definitions for WallabyJS
|
||||
// Project: http://wallabyjs.com
|
||||
// Definitions by: Andrew Connell <http://www.andrewconnell.com>
|
||||
// Definitions by: Andrew Connell <https://github.com/andrewconnell>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
declare module 'wallabyjs' {
|
||||
@@ -24,7 +24,7 @@ declare module 'wallabyjs' {
|
||||
* @see {@link https://wallabyjs.com/docs/config/overview.html} for details.
|
||||
*/
|
||||
export interface IWallabyConfig {
|
||||
comilers?: IWallabyCompiler;
|
||||
comilers?: IWallabyCompilers;
|
||||
debug?: boolean;
|
||||
env?: IWallabyEnvironment;
|
||||
files: string[] | IWallabyFilePattern[];
|
||||
@@ -36,16 +36,60 @@ declare module 'wallabyjs' {
|
||||
}
|
||||
|
||||
/**
|
||||
* Wallaby compiler configuration.
|
||||
* Wallaby compilers.
|
||||
*
|
||||
* @export
|
||||
* @interface IWallabyCompiler
|
||||
*
|
||||
* @see {@link https://wallabyjs.com/docs/config/compilers.html} for details.
|
||||
*/
|
||||
export interface IWallabyCompiler {
|
||||
export interface IWallabyCompilers {
|
||||
[pattern: string]: any
|
||||
}
|
||||
|
||||
/**
|
||||
* Wallaby built in compiler options. These are name-value pairs passed into each compiler.
|
||||
*
|
||||
* @export
|
||||
* @interface IWallabyCompilerOptions
|
||||
*
|
||||
* @see {@link https://wallabyjs.com/docs/config/compilers.html} for details.
|
||||
*/
|
||||
export interface IWallabyBuiltInCompilerOptions {
|
||||
[option: string]: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Wallaby build in compilers.
|
||||
*
|
||||
* @export
|
||||
* @interface IWallabyBuiltInCompilers
|
||||
*
|
||||
* @see {@link https://wallabyjs.com/docs/config/compilers.html} for details.
|
||||
*/
|
||||
export interface IWallabyBuiltInCompilers {
|
||||
babel(compilerOptions?: IWallabyBuiltInCompilerOptions): IWallabyCompilerResult;
|
||||
coffeeScript(compilerOptions?: IWallabyBuiltInCompilerOptions): IWallabyCompilerResult;
|
||||
typeScript(compilerOptions?: IWallabyBuiltInCompilerOptions): IWallabyCompilerResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* Wallaby compiler result entity.
|
||||
*
|
||||
* @export
|
||||
* @interface IWallabyCompilerResult
|
||||
*
|
||||
* @property {string} map - Source map.
|
||||
* @property {string} code - Code transformed to JavaScript.
|
||||
* @property {any} ranges - All converable ranges of the original file.
|
||||
*
|
||||
* @see {@link https://wallabyjs.com/docs/config/compilers.html} for details.
|
||||
*/
|
||||
export interface IWallabyCompilerResult {
|
||||
map: string;
|
||||
code: string;
|
||||
ranges: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* Wallaby processor used in pre & post processors.
|
||||
@@ -149,7 +193,7 @@ declare module 'wallabyjs' {
|
||||
*
|
||||
* @property {string=} localProjectDir - String property which returns the project local folder.
|
||||
* @property {string=} projectCacheDir - String property which returns the project cache folder.
|
||||
* @property {IWallabyCompiler=} compilers - Property which allows you to access the built-in TypeScript, CoffeeScript and Babel compilers.
|
||||
* @property {IWallabyBuiltInCompilers=} compilers - Property which allows you to access the built-in TypeScript, CoffeeScript and Babel compilers.
|
||||
* @property {object=} defaults - Property which allows you to set the default values for file object properties.
|
||||
*
|
||||
* @see {@link https://wallabyjs.com/docs/config/overview.html} for details.
|
||||
@@ -157,7 +201,7 @@ declare module 'wallabyjs' {
|
||||
export interface IWallaby {
|
||||
localProjectDir?: string;
|
||||
projectCacheDir?: string;
|
||||
compilers?: IWallabyCompiler;
|
||||
compilers?: IWallabyBuiltInCompilers;
|
||||
defaults?: any;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ export class WallabyConfig implements wallabyjs.IWallabyConfig {
|
||||
'src/**/*.spec.ts'
|
||||
];
|
||||
|
||||
public compilers: wallabyjs.IWallabyCompiler = <wallabyjs.IWallabyCompiler>{
|
||||
public compilers: wallabyjs.IWallabyCompilers = <wallabyjs.IWallabyCompilers>{
|
||||
'src/**/*.js': this.wallaby.compilers.babel({}),
|
||||
'src/**/*.ts': this.wallaby.compilers.typeScript({})
|
||||
};
|
||||
@@ -34,5 +34,5 @@ export class WallabyConfig implements wallabyjs.IWallabyConfig {
|
||||
}
|
||||
};
|
||||
|
||||
constructor(private wallaby: any) { }
|
||||
constructor(private wallaby: wallabyjs.IWallaby) { }
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -786,7 +786,7 @@ declare namespace Xrm
|
||||
*
|
||||
* @return The event source.
|
||||
*/
|
||||
getEventSource(): Attribute | Entity;
|
||||
getEventSource(): Attribute | Control | Entity;
|
||||
|
||||
/**
|
||||
* Gets the shared variable with the specified key.
|
||||
@@ -1726,7 +1726,7 @@ declare namespace Xrm
|
||||
*
|
||||
* @param {Function} handler The handler.
|
||||
*/
|
||||
addPreSearch( handler: () => void ): void;
|
||||
addPreSearch( handler: ContextSensitiveHandler ): void;
|
||||
|
||||
/**
|
||||
* Adds an additional custom filter to the lookup, with the "AND" filter operator.
|
||||
|
||||
Reference in New Issue
Block a user