Skip to content

Commit

Permalink
Feature: Nodejs as a Web Service - pt. 1. (madskristensen#381)
Browse files Browse the repository at this point in the history
* Set server foundation:
  * Established a Server.
  * Controller.
  * File/Folder structure for services.
  * Added LESS service.
* Set client foundation:
* Build-time actions.
  • Loading branch information
am11 authored and nycdotnet committed Jul 16, 2014
1 parent 3348283 commit 471e259
Show file tree
Hide file tree
Showing 17 changed files with 538 additions and 0 deletions.
49 changes: 49 additions & 0 deletions EditorExtensions/Resources/server/controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
//#region Imports
var compilers = require("./services/compilers/index.js"),
linters = require("./services/linters/index.js");
//#endregion

//#region Controller
var handleRequest = function (writer, params) {
switch (params.service) {
case 'autoprefixer':
handleAutoPrefixer(writer, params);
break;
case 'less':
handleLess(writer, params);
break;
case 'sass':
handleSass(writer, params);
break;
case 'coffeescript':
handleCoffeeScript(writer, params);
break;
case 'icedcoffeescript':
handleIcedCoffeeScript(writer, params);
break;
case 'livescript':
handleLiveScript(writer, params);
break;
case 'sweetjs':
handleSweetJS(writer, params);
break;
case 'jscs':
handleJSCS(writer, params);
break;
case 'jshint':
handleJSHint(writer, params);
break;
case 'tslint':
handleTSLint(writer, params);
break;
default:
writer.write(JSON.stringify({ Success: false, Remarks: "Invalid Service Name" }));
writer.end();
break;
}
};
//#endregion

//#region Exports
exports.handleRequest = handleRequest;
//#endregion
21 changes: 21 additions & 0 deletions EditorExtensions/Resources/server/services/compilers/_commons.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
//#region Imports
var fs = require("fs"),
path = require("path"),
mkdirp = require("mkdirp");
//#endregion

//#region Functions
var ensureDirectory = function (filepath) {
var dir = path.dirname(filepath),
cmd,
existsSync = fs.existsSync || path.existsSync;
if (!existsSync(dir)) {
cmd = mkdirp && mkdirp.sync || fs.mkdirSync;
cmd(dir);
}
};
//#endregion

//#region Exports
exports.ensureDirectory = ensureDirectory;
//#endregion
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//#region Imports
var autoprefixer = require("autoprefixer");
//#endregion

//#region Handler
var handleAutoPrefixer = function (writer, params) {
writer.write(JSON.stringify({ Success: false, Remarks: "Service Not Implemented." }));
writer.end();
};
//#endregion

//#region Exports
exports.handleAutoPrefixer = handleAutoPrefixer;
//#endregion
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//#region Imports
var coffeescript = require("coffee-script");
//#endregion

//#region Handler
var handleCoffeeScript = function (writer, params) {
writer.write(JSON.stringify({ Success: false, Remarks: "Service Not Implemented." }));
writer.end();
};
//#endregion

//#region Exports
exports.handleCoffeeScript = handleCoffeeScript;
//#endregion
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//#region Imports
var icedcoffeescript = require("iced-coffee-script");;
//#endregion

//#region Handler
var handleIcedCoffeeScript = function (writer, params) {
writer.write(JSON.stringify({ Success: false, Remarks: "Service Not Implemented." }));
writer.end();
};
//#endregion

//#region Exports
exports.handleIcedCoffeeScript = handleIcedCoffeeScript;
//#endregion
9 changes: 9 additions & 0 deletions EditorExtensions/Resources/server/services/compilers/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
//#region Exports
exports.autoprefixer = require("./autoprefixer.js");
exports.coffeescript = require("./coffeescript.js");
exports.icedcoffeescript = require("./icedcoffeescript.js");
exports.less = require("./less.js");
exports.livescript = require("./livescript.js");
exports.sass = require("./sass.js");
exports.sweetjs = require("./sweetjs.js");
//#endregion
53 changes: 53 additions & 0 deletions EditorExtensions/Resources/server/services/compilers/less.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
//#region Imports
var less = require("less"),
fs = require("fs"),
path = require("path"),
commons = require("./_commons.js");
//#endregion

//#region Handler
var handleLess = function (writer, params) {
var parser = new less.Parser();

fs.readFile(params.sourceFileName, 'utf8', function (err, data) {
if (err) {
writer.write(JSON.stringify({ Error: err }));
writer.end;
return;
}

try {
parser.parse(data, function (e, tree) {
var css = tree.toCSS({
relativeUrl: true,
paths: [path.dirname(params.sourceFileName)],
filename: params.sourceFileName,
sourceMap: true,
sourceMapBasepath: path.dirname(params.mapFileName),
sourceMapOutputFilename: params.mapFileName,
strictMath: params.strictMath,
writeSourceMap: function (output) {
commons.ensureDirectory(params.mapFileName);
fs.writeFileSync(params.mapFileName, output, 'utf8');
}
});

commons.ensureDirectory(params.targetFileName);
fs.writeFileSync(params.targetFileName, css, 'utf8');

writer.write(JSON.stringify({ Success: true, Remarks: "Successful!", Output: css }));
writer.end();
});
} catch (e) {
writer.write(JSON.stringify({ Success: false, Remarks: e.stack }));
writer.end();
}
});

writer.write("output1");
};
//#endregion

//#region Exports
exports.handleLess = handleLess;
//#endregion
14 changes: 14 additions & 0 deletions EditorExtensions/Resources/server/services/compilers/livescript.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//#region Imports
var autoprefixer = require("LiveScript");
//#endregion

//#region Handler
var handleLiveScript = function (writer, params) {
writer.write(JSON.stringify({ Success: false, Remarks: "Service Not Implemented." }));
writer.end();
};
//#endregion

//#region Exports
exports.handleLiveScript = handleLiveScript;
//#endregion
14 changes: 14 additions & 0 deletions EditorExtensions/Resources/server/services/compilers/sass.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//#region Imports
//var sass = require("node-sass");
//#endregion

//#region Handler
var handleSass = function (writer, params) {
writer.write(JSON.stringify({ Success: false, Remarks: "Service Not Implemented." }));
writer.end();
};
//#endregion

//#region Exports
exports.handleSass = handleSass;
//#endregion
14 changes: 14 additions & 0 deletions EditorExtensions/Resources/server/services/compilers/sweetjs.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//#region Imports
var sweetjs = require("sweet.js");
//#endregion

//#region Handler
var handleSweetJS = function (writer, params) {
writer.write(JSON.stringify({ Success: false, Remarks: "Service Not Implemented." }));
writer.end();
};
//#endregion

//#region Exports
exports.handleSweetJS = handleSweetJS;
//#endregion
5 changes: 5 additions & 0 deletions EditorExtensions/Resources/server/services/linters/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
//#region Exports
exports.jscs = require("./jscs.js");
exports.jshint = require("./jshint.js");
exports.tslint = require("./tslint.js");
//#endregion
14 changes: 14 additions & 0 deletions EditorExtensions/Resources/server/services/linters/jscs.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//#region Imports
var jscs = require("jscs");
//#endregion

//#region Handler
var handleJSCS = function (writer, params) {
writer.write(JSON.stringify({ Success: false, Remarks: "Service Not Implemented." }));
writer.end();
};
//#endregion

//#region Exports
exports.handleJSCS = handleJSCS;
//#endregion
14 changes: 14 additions & 0 deletions EditorExtensions/Resources/server/services/linters/jshint.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//#region Imports
var jshint = require("jshint");
//#endregion

//#region Handler
var handleJSHint = function (writer, params) {
writer.write(JSON.stringify({ Success: false, Remarks: "Service Not Implemented." }));
writer.end();
};
//#endregion

//#region Exports
exports.handleJSHint = handleJSHint;
//#endregion
14 changes: 14 additions & 0 deletions EditorExtensions/Resources/server/services/linters/tslint.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//#region Imports
var tslint = require("tslint");
//#endregion

//#region Handler
var handleTSLint = function (writer, params) {
writer.write(JSON.stringify({ Success: false, Remarks: "Service Not Implemented." }));
writer.end();
};
//#endregion

//#region Exports
exports.handleAutoPrefixer = handleTSLint;
//#endregion
Loading

0 comments on commit 471e259

Please sign in to comment.