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

first successfull build

parent fdc273f4
...@@ -59,16 +59,19 @@ module.exports = (function () { ...@@ -59,16 +59,19 @@ module.exports = (function () {
var args = slice.call(arguments), var args = slice.call(arguments),
fn = args.pop(); fn = args.pop();
if(require !== QRequire.require) {
/*compiling tool*/ /*compiling tool*/
var tmp = Error.prepareStackTrace; var tmp = Error.prepareStackTrace;
Error.prepareStackTrace = function (err, stack) { return stack; }; Error.prepareStackTrace = function (err, stack) {
return stack;
};
var err = new Error(), var err = new Error(),
errFile = err.stack[1].getFileName(); errFile = err.stack[1].getFileName();
Error.prepareStackTrace = tmp; Error.prepareStackTrace = tmp;
/* end compiling*/ /* end compiling*/
}
var waiter = new Waiter(args, fn, errFile), var waiter = new Waiter(args, fn, errFile),
i, _i, arg; i, _i, arg;
for( i = 0, _i = args.length; i < _i; i++){ for( i = 0, _i = args.length; i < _i; i++){
...@@ -82,7 +85,12 @@ module.exports = (function () { ...@@ -82,7 +85,12 @@ module.exports = (function () {
waiting[arg].push(waiter); waiting[arg].push(waiter);
if(arg.indexOf('.')===-1){ if(arg.indexOf('.')===-1){
QRequire.loaded(arg, require(arg)); 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 () { ...@@ -99,12 +107,23 @@ module.exports = (function () {
} }
waiting[name] = obj; waiting[name] = obj;
}; };
QRequire.get = function(name){
return deps[name];
};
QRequire.deps = function(name){ QRequire.deps = function(name){
return (deps[name] || {}).deps; return (deps[name] || {}).deps;
}; };
QRequire.path = function(name){ QRequire.path = function(name){
return (deps[name] || {}).path; 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; return QRequire;
})(); })();
\ No newline at end of file
...@@ -5,7 +5,10 @@ ...@@ -5,7 +5,10 @@
var args = process.argv.slice(2); var args = process.argv.slice(2);
var fileName = args[0]; var fileName = args[0];
var QRequire = global.QRequire = require('./QRequire'), 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) { 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 ...@@ -67,9 +70,71 @@ QRequire('quokka-script', 'quokka-core', 'Core.TypeTable', 'fs', function(qs, QC
newWay: true newWay: true
}, function (result) { }, function (result) {
var mainObj = result.main; var mainObj = result.main;
var paths = {},
modulePaths = {};
var deps = startDepsResolve(mainObj, result.world).list.filter(function (dep) { 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 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) console.log(deps)
require require
cache cache
......
...@@ -10,7 +10,9 @@ ...@@ -10,7 +10,9 @@
"quokka-script": "*", "quokka-script": "*",
"open": "*", "open": "*",
"quokka-core": "*", "quokka-core": "*",
"z-observable": "*" "z-observable": "*",
"nginx-conf": "*",
"uglify-js": "*"
}, },
"scripts": { "scripts": {
"test": "npm run test" "test": "npm run test"
......
...@@ -4,7 +4,15 @@ ...@@ -4,7 +4,15 @@
def Page main def Page main
VBox
Number n1: 0
Slider s1: 10 Slider s1: 10
from:22 from:22
div: ee div: ee
td: de td: de {{s1}} {{n1}}
\ No newline at end of file
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