simpleitjs
Version:
Simple light frontend framework
82 lines (81 loc) • 2.69 kB
TypeScript
/// <reference path="module-scope.d.ts" />
declare const moduleCollection: Module[];
declare const readyModules: {
[id: string]: boolean;
};
declare const modules: {
[id: string]: ModuleScope;
};
declare let ModuleScopeMain: typeof ModuleScope;
declare enum ModuleType {
Standard = 0,
Class = 1
}
declare class ModuleOpts {
type: ModuleType;
}
/**
* Creates a new Module, attaches dependencies
* @param {string} Name 1st aargument, name of module to be registed.
* @param {string[]} Dependencies 2nd to 2nd last argument, dependencies of the module.
* @param {Function} ReadyFnc Last argument, resolved ready function.
* @returns {{name:string;dependencies:string[];readyFnc:Function;scope:Object}}
*/
declare class Module {
name: string;
dependencies: string[];
readyFnc: typeof ModuleScopeMain;
scope: ModuleScope;
moduleHolder: ModuleScope;
constructionOpts?: Object;
moduleOpts?: ModuleOpts;
type: ModuleType;
constructor(...args: any[]);
/**
* Returns list of unresolved modules.
* @param {string[]} mods modules names
*/
getUnResolvedModules(mods: string[]): string[];
/**
* Returns module by name
* @param {string} name module name
* @returns {Module}
*/
static getModuleByName(name: string): Module | null;
checkInterDependency(module: Module, overTimeReady?: {
[id: string]: boolean;
}): false | string[];
/**
* Releases all modules with support to interdependency on each other.
* @param {string[]} moduleNames module names in string list.
*/
releaseModules(moduleNames: string[]): void;
/**
* Checks and releases modules from main collection
*/
checkNReleaseMods(): void;
/**
* Checks if dependencies are loaded or not.
* @param {Module} module Module to check
* @returns {boolean}
*/
areDepLoaded(module: Module): boolean;
/**
* Releases module, calls its ready function.
* @param {Module} module Module to release.
*/
releaseModule(module: Module): void;
/**
* Returns module by name
* @param {string} name name of module to get.
*/
static get(name: string): ModuleScope;
/**
* Extends module by calling given function, module score is provided as arg and expected new updated scope.
* Use this to extend functionality
* @param {string} name name of module to get.
* @param {Function} fnc extnding callback function.
*/
static extend(name: string, fnc: (model: ModuleScope) => ModuleScope): void;
}
declare var module: any;