Commit 2bfbd944 by Иван Кубота

first successfull build

parent fdc273f4
......@@ -59,16 +59,19 @@ module.exports = (function () {
var args = slice.call(arguments),
fn = args.pop();
if(require !== QRequire.require) {
/*compiling tool*/
var tmp = Error.prepareStackTrace;
Error.prepareStackTrace = function (err, stack) { return stack; };
Error.prepareStackTrace = function (err, stack) {
return stack;
};
var err = new Error(),
errFile = err.stack[1].getFileName();
Error.prepareStackTrace = tmp;
/* end compiling*/
}
var waiter = new Waiter(args, fn, errFile),
i, _i, arg;
for( i = 0, _i = args.length; i < _i; i++){
......@@ -82,7 +85,12 @@ module.exports = (function () {
waiting[arg].push(waiter);
if(arg.indexOf('.')===-1){
QRequire.loaded(arg, require(arg));
(waiter.paths || (waiter.paths = [])).push( require.cache[require.resolve(arg)])
if(require !== QRequire.require) {
var resolved = require.cache[require.resolve(arg)];
deps[arg] = resolved;
}
//console.log('!!', arg)
//(waiter.paths || (waiter.paths = [])).push( require.cache[require.resolve(arg)])
}
}
}
......@@ -99,12 +107,23 @@ module.exports = (function () {
}
waiting[name] = obj;
};
QRequire.get = function(name){
return deps[name];
};
QRequire.deps = function(name){
return (deps[name] || {}).deps;
};
QRequire.path = function(name){
return (deps[name] || {}).path;
};
QRequire.module = function(fn){
var module = {},
res = fn(module);
return module.exports;
};
QRequire.require = function(name){
return waiting[name];
};
QRequire.Waiter = Waiter;
return QRequire;
})();
\ No newline at end of file
......@@ -5,7 +5,10 @@
var args = process.argv.slice(2);
var fileName = args[0];
var QRequire = global.QRequire = require('./QRequire'),
TypeTable = require('./TypeTable');
TypeTable = require('./TypeTable'),
path = require('path'),
uglify = require('uglify-js');
QRequire('quokka-script', 'quokka-core', 'Core.TypeTable', 'fs', function(qs, QCore, TypeTable, fs) {
......@@ -67,9 +70,71 @@ QRequire('quokka-script', 'quokka-core', 'Core.TypeTable', 'fs', function(qs, QC
newWay: true
}, function (result) {
var mainObj = result.main;
var paths = {},
modulePaths = {};
var deps = startDepsResolve(mainObj, result.world).list.filter(function (dep) {
if(dep.name === 'observable-sequence')
debugger;
var d = QRequire.get(dep.name);
if(d) {
if (!(d instanceof QRequire.Waiter)) {
modulePaths[dep.name] = {path: d.filename, name: dep.name};
//d.paths && modulePaths.push(d.paths)
}
}
return dep.path
});
deps.forEach(function(dep){
paths[dep.path] = true;
});
var modules = [];
Object.keys(modulePaths).forEach(function(name){
modules.push(modulePaths[name]);
});
for(var i = 0; i < modules.length; i++){
var module = modules[i];
var mdl = require.cache[module.path];
if(mdl.children)
mdl.children.forEach(function(item){
var segments = item.filename.split(path.sep);
var index = segments.lastIndexOf('node_modules');
if (index === -1) return;
var name = segments[index + 1];
if(!(name in modulePaths)){
modulePaths[name] = {name: name, path: item.filename};
modules.push(modulePaths[name]);
}
})
}
var letsConcat = [];
modules.reverse().forEach(function(mdl){
letsConcat.push('\n//'+ mdl.path +'\nQRequire.loaded('+JSON.stringify(mdl.name)+', QRequire.module(function(module){\n'+ fs.readFileSync(mdl.path) +'\n}) );\n');
});
Object.keys(paths).forEach(function(path){
letsConcat.push('\n//'+ path +'\nQRequire.module(function(module){\n'+ fs.readFileSync(path) +'\n});\n');
});
letsConcat.unshift('QRequire = (function(QRequire){var require = QRequire.require');
letsConcat.push('return QRequire;})((function(){var module = {}; '+
fs.readFileSync('./bin/QRequire.js')
+'var require = module.exports.require;return module.exports;})())');
letsConcat.push(result.js);
var result = uglify.minify(letsConcat.join('\n'));
var error = result.error;
var code = result.code;
fs.writeFileSync('../tmpConcat.js', code);
var x = require('../../tmpConcat');
console.log(deps)
require
cache
......
......@@ -10,7 +10,9 @@
"quokka-script": "*",
"open": "*",
"quokka-core": "*",
"z-observable": "*"
"z-observable": "*",
"nginx-conf": "*",
"uglify-js": "*"
},
"scripts": {
"test": "npm run test"
......
......@@ -4,7 +4,15 @@
def Page main
VBox
Number n1: 0
Slider s1: 10
from:22
div: ee
td: de
\ No newline at end of file
td: de {{s1}} {{n1}}
Timer
enabled: false
interval: 10
.tick: ()->
n1++;
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment