DefinitelyTyped/requirejs/require.d.ts
2013-08-07 10:02:12 +10:00

216 lines
5.3 KiB
TypeScript

// require-2.1.1.d.ts
// (c) 2012 Josh Baldwin
// require.d.ts may be freely distributed under the MIT license.
// For all details and documentation:
// https://github.com/jbaldwin/require.d.ts
interface RequireShim {
// List of dependencies.
deps?: string[];
// Name the module will be exported as.
exports?: string;
// Initialize function with all dependcies passed in,
// if the function returns a value then that value is used
// as the module export value instead of the object
// found via the 'exports' string.
init?: (...dependencies: any[]) => any;
}
interface RequireConfig {
// The root path to use for all module lookups.
baseUrl?: string;
// Path mappings for module names not found directly under
// baseUrl.
paths?: { [key: string]: string; };
// Dictionary of Shim's.
// does not cover case of key->string[]
shim?: { [key: string]: RequireShim; };
/**
* For the given module prefix, instead of loading the
* module with the given ID, substitude a different
* module ID.
*
* @example
* requirejs.config({
* map: {
* 'some/newmodule': {
* 'foo': 'foo1.2'
* },
* 'some/oldmodule': {
* 'foo': 'foo1.0'
* }
* }
* });
**/
map?: {
[id: string]: {
[id: string]: string;
};
};
// AMD configurations, use module.config() to access in
// define() functions
config?: { [id: string]: { }; };
// Configures loading modules from CommonJS packages.
packages?: { };
// The number of seconds to wait before giving up on loading
// a script. The default is 7 seconds.
waitSeconds?: number;
// A name to give to a loading context. This allows require.js
// to load multiple versions of modules in a page, as long as
// each top-level require call specifies a unique context string.
context?: string;
// An array of dependencies to load.
deps?: string[];
// A function to pass to require that should be require after
// deps have been loaded.
callback?: (...modules: any[]) => void;
// If set to true, an error will be thrown if a script loads
// that does not call define() or have shim exports string
// value that can be checked.
enforceDefine?: boolean;
// If set to true, document.createElementNS() will be used
// to create script elements.
xhtml?: boolean;
/**
* Extra query string arguments appended to URLs that RequireJS
* uses to fetch resources. Most useful to cachce bust when
* the browser or server is not configured correcty.
*
* @example
* urlArgs: "bust= + (new Date()).getTime()
**/
urlArgs?: string;
/**
* Specify the value for the type="" attribute used for script
* tags inserted into the document by RequireJS. Default is
* "text/javascript". To use Firefox's JavasScript 1.8
* features, use "text/javascript;version=1.8".
**/
scriptType?: string;
}
// not sure what to do with this guy
interface RequireModule {
config(): { };
}
interface RequireMap {
prefix: string;
name: string;
parentMap: RequireMap;
url: string;
originalName: string;
fullName: string;
}
interface Require {
// Configure require.js
config(config: RequireConfig): Require;
// Start the main app logic.
// Callback is optional.
// Can alternatively use deps and callback.
(module: string): any;
(modules: string[], ready?: (...modules: any[]) => void, errorCallback?: (err : RequireError) => void): void;
// Generate URLs from require module
toUrl(module: string): string;
// On Error override
onError(): void;
// Undefine a module
undef(module: string): void;
// Semi-private function, overload in special instance of undef()
onResourceLoad(context: Object, map: RequireMap, depArray: RequireMap[]): void;
}
interface RequireError
{
requireType: string;
requireModules: string[];
originalError?: string;
contextName? : string;
requireMap?: any;
}
interface RequireDefine {
/**
* Define Simple Name/Value Pairs
* @config Dictionary of Named/Value pairs for the config.
**/
(config: { [key: string]: any; }): void;
/**
* Define function.
* @func: The function module.
**/
(func: () => any): void;
/**
* Define function with dependencies.
* @deps List of dependencies module IDs.
* @ready Callback function when the dependencies are loaded.
* @deps module dependencies
* @return module definition
**/
(deps: string[], ready: (...deps: any[]) => any): void;
/**
* Define module with simplified CommonJS wrapper.
* @ready
* @require requirejs instance
* @exports exports object
* @module module
* @return module definition
**/
(ready: (require: Require, exports: { [key: string]: any; }, module: RequireModule) => any): void;
/**
* Define a module with a name and dependencies.
* @name The name of the module.
* @deps List of dependencies module IDs.
* @ready Callback function when the dependencies are loaded.
* @deps module dependencies
* @return module definition
**/
(name: string, deps: string[], ready: (...deps: any[]) => any): void;
/**
* Defines whether require js supports multiple versions of jQuery being loaded
**/
amd: {
jQuery: boolean;
};
}
// Ambient declarations for 'require' and 'define'
declare var require: Require;
declare var requirejs: Require;
declare var req: Require;
declare var define: RequireDefine;