Commit 7f1e5cd8 by talequale

merge

parents a85b2ecf 5f1b65ea
...@@ -114,19 +114,22 @@ var transformTSX = function(code, fileName, cb) { ...@@ -114,19 +114,22 @@ var transformTSX = function(code, fileName, cb) {
};*/ };*/
//transformTSX('', 'aga', ()=>{}) //transformTSX('', 'aga', ()=>{})
var sass = require('node-sass'); var sass = require('node-sass');
var transformServe = function(dir) { var transformServe = function(dir, anything) {
return function (req, res, next) { let fixedUrl;
let serve = function (req, res, next) {
var qRes = res;
if (req.url in cache) { if (req.url in cache) {
return res.end(cache[req.url]) return res.end(cache[req.url])
} }
/*if (req.url.substr(-8) === '.jsx.map') {
debugger
}*/
if (req.url.substr(-5) === '.scss'){ if(!anything){
fixedUrl = req.url;
}
if (fixedUrl.substr(-5) === '.scss'){
// not secure // not secure
//console.log('scss', dir, req.url, __dirname) //console.log('scss', dir, req.url, __dirname)
fs.readFile( path.join( __dirname, dir, req.url ), function( err, data ){ fs.readFile( path.join( __dirname, dir, fixedUrl ), function( err, data ){
if( err ){ if( err ){
next(); next();
}else{ }else{
...@@ -139,18 +142,41 @@ var transformServe = function(dir) { ...@@ -139,18 +142,41 @@ var transformServe = function(dir) {
file: path.join( __dirname, dir, req.url ), file: path.join( __dirname, dir, req.url ),
sourceMap: true, sourceMap: true,
importer: function( url, prev, done ){ importer: function( url, prev, done ){
setTimeout( function( result ){
if(url[0] === '/'){ if(url[0] === '/'){
url = path.join( __dirname, dir, url.substr(1)); url = path.join( __dirname, dir, url.substr(1));
} }
var displayName = path.relative( path.join( __dirname, dir ), path.resolve( path.dirname( prev ), url ) ) var displayName = path.relative( path.join( __dirname, dir ), path.resolve( path.dirname( prev ), url ) )
var name = path.resolve( path.dirname( prev ), url ); var name = path.resolve( path.dirname( prev ), url );
// TODO Add errors
let fName;
let thisOne = function(name, data) {
done( { done( {
file: displayName, // only one of them is required, see section Special Behaviours. file: displayName, // only one of them is required, see section Special Behaviours.
contents: fs.readFileSync( name ) + '' contents: data
} ); } );
}, 10 ); };
fs.readFile(fName = name, function(err, res) {
if(err){
fs.readFile(fName = name+'.scss', function(err, res) {
if(err){
fs.readFile(fName = name+'.css', function(err, res) {
if(err){
var origEnd = qRes.end;
qRes.end = function(data) {
console.error(data);
origEnd.call(qRes, data)
};
done(new Error('Can not resolve dependency!'))
}else{ thisOne(fName, res+'') }
})
}else{ thisOne(fName, res+'') }
})
}else{ thisOne(fName, res+'') }
})
} }
}, function( err, result ){ }, function( err, result ){
if( err ){ if( err ){
...@@ -162,9 +188,9 @@ var transformServe = function(dir) { ...@@ -162,9 +188,9 @@ var transformServe = function(dir) {
} ); } );
} }
} ); } );
}else if (req.url.substr(-4) === '.jsx') { }else if (fixedUrl.substr(-4) === '.jsx') {
fs.readFile(path.join(dir, req.url), function(err, data){ fs.readFile(path.join(dir, fixedUrl), function(err, data){
if( err ){ if( err ){
next(); next();
}else{ }else{
...@@ -202,9 +228,9 @@ var transformServe = function(dir) { ...@@ -202,9 +228,9 @@ var transformServe = function(dir) {
}) })
} }
}); });
}*/else if (req.url.substr(-4) === '.svg') { }*/else if (fixedUrl.substr(-4) === '.svg') {
console.log('Serve svg', dir, req.url) console.log('Serve svg', dir, req.url)
fs.readFile(path.join(dir, req.url), function(err, data){ fs.readFile(path.join(dir, fixedUrl), function(err, data){
if( err ){ if( err ){
next(); next();
}else{ }else{
...@@ -243,7 +269,27 @@ var transformServe = function(dir) { ...@@ -243,7 +269,27 @@ var transformServe = function(dir) {
} else { } else {
next(); next();
} }
} };
if(!anything)
return function(req, res, next) {
return serve(req, res, next);
};
let types = 'scss,jsx,svg'.split(',')
let test = 0;
let iterate = function(req, res, next) {
fixedUrl = req.url+'.'+types[test];
serve(req, res, function() {
if(test<types.length){
test++;
iterate(req, res, next);
}else{
next();
test = 0;
}
});
};
return iterate;
}; };
...@@ -273,6 +319,7 @@ app.use(App.static(dir(pack.public))); ...@@ -273,6 +319,7 @@ app.use(App.static(dir(pack.public)));
app.use(App.static(dir(pack.src))) app.use(App.static(dir(pack.src)))
app.use(transformServe('src', true));
...@@ -287,11 +334,13 @@ var doUpdate = async function(){ ...@@ -287,11 +334,13 @@ var doUpdate = async function(){
var files = []; var files = [];
for( let filename in debounce ){ for( let filename in debounce ){
try{ try{
var code = await readFile( filename ) + ''; if(filename.substr(-4)==='.jsx'){
var url = '/'+path.relative( './src', filename ).replace(/\\/g, '/') var code = await readFile( filename ) + '';
console.log('Live transform jsx ',url) var url = '/' + path.relative( './src', filename ).replace( /\\/g, '/' )
var result = await transformJSXPromised( code, url ); console.log( 'Live transform jsx ', url )
files.push( { file: url, content: result.code } ); var result = await transformJSXPromised( code, url );
files.push( { file: url, content: result.code } );
}
}catch( e ){ }catch( e ){
console.log( 'Error in ' + e ); console.log( 'Error in ' + e );
......
...@@ -74,6 +74,7 @@ ...@@ -74,6 +74,7 @@
var skip = false; var skip = false;
console.log(dep) console.log(dep)
if( !( dep in definitions ) ){ if( !( dep in definitions ) ){
var matched = false;
for( var j = 0, _j = InstantLoaders.length; j < _j; j++ ){ for( var j = 0, _j = InstantLoaders.length; j < _j; j++ ){
const instantLoader = InstantLoaders[ j ]; const instantLoader = InstantLoaders[ j ];
if( dep.substr( -instantLoader.name.length ).toLowerCase() === instantLoader.name ){ if( dep.substr( -instantLoader.name.length ).toLowerCase() === instantLoader.name ){
...@@ -84,10 +85,22 @@ ...@@ -84,10 +85,22 @@
}else{ }else{
definitions[ dep ].loading = true; definitions[ dep ].loading = true;
} }
matched = true;
} }
break; break;
} }
} }
if(!matched){
if( !( dep in definitions ) ){
definitions[ dep ] = { exports: {} };
if( jsLoader( dep ) ){
skip = true;
}else{
definitions[ dep ].loading = true;
}
matched = true;
}
}
}else{ }else{
skip = definitions[ dep ].notResolved === 0; skip = definitions[ dep ].notResolved === 0;
......
export default D.declare('view.block.Info', function(cfg, children) {
return <div>
<div class={'img-baba'}>{cfg.img}</div>
{children}
<div class={'img-butn'}>{cfg.buttons}</div>
</div>
});
import Info from '/view/block/info/Info.jsx';
export default D.declare('view.page.Account', ()=> export default D.declare('view.page.Account', ()=>
<div> <div>
Account Page Account Page
<div> <div>
Hello, {store.val('account.name')} Hello, {store.val('account.name')}
<Info img={<img src="baba1"/>} buttons={<button>bb</button>}>
<h1>olololo</h1>
</Info>
</div> </div>
</div> </div>
) )
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