add basic module structure

This commit is contained in:
Philipp Kunz 2016-10-12 01:41:30 +02:00
parent 45e57b3a84
commit 7e65012621
9 changed files with 129 additions and 4 deletions

18
dist/index.d.ts vendored Normal file
View File

@ -0,0 +1,18 @@
/// <reference types="q" />
import * as q from 'q';
/**
* defines a LazyModule
*/
export declare class LazyModule<T> {
name: string;
cwd: string;
constructor(nameArg: string, cwdArg?: string);
/**
* loads the module
*/
load(): q.Promise<T>;
/**
* loads additional lazy modules specified as arguments and returns them in the promise for easy use
*/
loadAlso(...args: LazyModule<any>[]): void;
}

46
dist/index.js vendored Normal file
View File

@ -0,0 +1,46 @@
"use strict";
const q = require("q");
const lik_1 = require("lik");
let systemjs = require('systemjs');
class Smartsystem {
constructor() {
this.lazyModules = new lik_1.Objectmap();
}
/**
* add lazyModule to Smartsystem
*/
addLazyModule(lazyModuleArg) {
this.lazyModules.add(lazyModuleArg);
}
}
// create the internal smartsystem
let smartsystem = new Smartsystem();
/**
* defines a LazyModule
*/
class LazyModule {
constructor(nameArg, cwdArg = process.cwd()) {
this.name = nameArg;
this.cwd = cwdArg;
smartsystem.addLazyModule(this);
}
/**
* loads the module
*/
load() {
let done = q.defer();
let loadedModule;
systemjs.import(this.name).then((m) => {
loadedModule = m;
done.resolve(loadedModule);
});
return done.promise;
}
/**
* loads additional lazy modules specified as arguments and returns them in the promise for easy use
*/
loadAlso(...args) {
}
}
exports.LazyModule = LazyModule;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsdUJBQXNCO0FBQ3RCLDZCQUErQjtBQUMvQixJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7QUFFbEM7SUFBQTtRQUNJLGdCQUFXLEdBQUcsSUFBSSxlQUFTLEVBQWMsQ0FBQTtJQVU3QyxDQUFDO0lBUkc7O09BRUc7SUFDSCxhQUFhLENBQUMsYUFBeUI7UUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDdkMsQ0FBQztDQUdKO0FBRUQsa0NBQWtDO0FBQ2xDLElBQUksV0FBVyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUE7QUFFbkM7O0dBRUc7QUFDSDtJQUdJLFlBQVksT0FBZSxFQUFFLE1BQU0sR0FBVyxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQ3ZELElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFBO1FBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFBO1FBQ2pCLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSTtRQUNBLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUssQ0FBQTtRQUN2QixJQUFJLFlBQWUsQ0FBQTtRQUNuQixRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzlCLFlBQVksR0FBRyxDQUFDLENBQUE7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUM5QixDQUFDLENBQUMsQ0FBQTtRQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVEsQ0FBQyxHQUFHLElBQXVCO0lBRW5DLENBQUM7Q0FDSjtBQTVCRCxnQ0E0QkMifQ==

View File

@ -3,6 +3,7 @@
"version": "1.0.0",
"description": "wraps systemjs for smarter workflows",
"main": "dist/index.js",
"typings": "dist/index.d.ts",
"scripts": {
"test": "(npmts)"
},
@ -19,6 +20,11 @@
"dependencies": {
"@types/q": "0.0.32",
"lik": "^1.0.24",
"q": "^1.4.1"
"q": "^1.4.1",
"systemjs": "^0.19.39"
},
"devDependencies": {
"@types/should": "^8.1.30",
"should": "^11.1.1"
}
}

0
test/test.d.ts vendored Normal file
View File

2
test/test.js Normal file
View File

@ -0,0 +1,2 @@
"use strict";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9

2
test/test.ts Normal file
View File

@ -0,0 +1,2 @@
import * as should from 'should'
import * as smartsystem from '../dist/index'

View File

@ -1,5 +1,54 @@
import * as plugins from './smartsystem.plugins'
export class Smartsystem {
import * as q from 'q'
import { Objectmap } from 'lik'
let systemjs = require('systemjs')
class Smartsystem {
lazyModules = new Objectmap<LazyModule>()
/**
* add lazyModule to Smartsystem
*/
addLazyModule(lazyModuleArg: LazyModule) {
this.lazyModules.add(lazyModuleArg)
}
loadLazyModule(lazyModuleArg: LazyModule)
}
// create the internal smartsystem
let smartsystem = new Smartsystem()
/**
* defines a LazyModule
*/
export class LazyModule<T> {
name: string
cwd: string
constructor(nameArg: string, cwdArg: string = process.cwd()){
this.name = nameArg
this.cwd = cwdArg
smartsystem.addLazyModule(this)
}
/**
* loads the module
*/
load(): q.Promise<T> {
let done = q.defer<T>()
let loadedModule: T
systemjs.import(this.name).then((m) => {
loadedModule = m
done.resolve(loadedModule)
})
return done.promise
}
/**
* loads additional lazy modules specified as arguments and returns them in the promise for easy use
*/
loadAlso(...args: LazyModule<any>[]) {
}
}

View File

@ -1 +0,0 @@
import * as lik from 'lik'

3
tslint.json Normal file
View File

@ -0,0 +1,3 @@
{
"extends": "tslint-config-standard"
}