Commit 7f1e5cd8 by talequale

merge

parents a85b2ecf 5f1b65ea
......@@ -114,19 +114,22 @@ var transformTSX = function(code, fileName, cb) {
};*/
//transformTSX('', 'aga', ()=>{})
var sass = require('node-sass');
var transformServe = function(dir) {
return function (req, res, next) {
var transformServe = function(dir, anything) {
let fixedUrl;
let serve = function (req, res, next) {
var qRes = res;
if (req.url in cache) {
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
//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 ){
next();
}else{
......@@ -139,18 +142,41 @@ var transformServe = function(dir) {
file: path.join( __dirname, dir, req.url ),
sourceMap: true,
importer: function( url, prev, done ){
setTimeout( function( result ){
if(url[0] === '/'){
url = path.join( __dirname, dir, url.substr(1));
}
var displayName = path.relative( path.join( __dirname, dir ), 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( {
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 ){
if( err ){
......@@ -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 ){
next();
}else{
......@@ -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)
fs.readFile(path.join(dir, req.url), function(err, data){
fs.readFile(path.join(dir, fixedUrl), function(err, data){
if( err ){
next();
}else{
......@@ -243,7 +269,27 @@ var transformServe = function(dir) {
} else {
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)));
app.use(App.static(dir(pack.src)))
app.use(transformServe('src', true));
......@@ -287,11 +334,13 @@ var doUpdate = async function(){
var files = [];
for( let filename in debounce ){
try{
if(filename.substr(-4)==='.jsx'){
var code = await readFile( filename ) + '';
var url = '/'+path.relative( './src', filename ).replace(/\\/g, '/')
console.log('Live transform jsx ',url)
var url = '/' + path.relative( './src', filename ).replace( /\\/g, '/' )
console.log( 'Live transform jsx ', url )
var result = await transformJSXPromised( code, url );
files.push( { file: url, content: result.code } );
}
}catch( e ){
console.log( 'Error in ' + e );
......
......@@ -74,6 +74,7 @@
var skip = false;
console.log(dep)
if( !( dep in definitions ) ){
var matched = false;
for( var j = 0, _j = InstantLoaders.length; j < _j; j++ ){
const instantLoader = InstantLoaders[ j ];
if( dep.substr( -instantLoader.name.length ).toLowerCase() === instantLoader.name ){
......@@ -84,10 +85,22 @@
}else{
definitions[ dep ].loading = true;
}
matched = true;
}
break;
}
}
if(!matched){
if( !( dep in definitions ) ){
definitions[ dep ] = { exports: {} };
if( jsLoader( dep ) ){
skip = true;
}else{
definitions[ dep ].loading = true;
}
matched = true;
}
}
}else{
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', ()=>
<div>
Account Page
<div>
Hello, {store.val('account.name')}
<Info img={<img src="baba1"/>} buttons={<button>bb</button>}>
<h1>olololo</h1>
</Info>
</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