UNPKG

8.97 kBJavaScriptView Raw
1/*------------------------------------*\
2 NODE MODULES
3\*------------------------------------*/
4/* jslint node: true */
5
6/**
7 * Require all native modules from Node.js API required by NodeAtlas and set them into `NA#modules`.
8 * @publics
9 * @function initNodeModules
10 * @memberOf NA#
11 * @this NA
12 */
13exports.initNodeModules = function () {
14 var NA = this;
15
16 /**
17 * All node.js native modules required by NodeAtlas.
18 * @namespace modules
19 * @type {Object}
20 * @alias modules
21 * @memberOf NA#
22 */
23 NA.modules = {};
24
25 /**
26 * Allow you to manage read/write on files.
27 * @alias fs
28 * @type {Object}
29 * @memberOf NA#modules
30 * @see {@link http://nodejs.org/api/fs.html File System}
31 */
32 NA.modules.fs = require("fs");
33
34 /**
35 * Allow you to use many features of the HTTP protocol.
36 * @alias http
37 * @type {Object}
38 * @memberOf NA#modules
39 * @see {@link http://nodejs.org/api/http.html HTTP}
40 */
41 NA.modules.http = require("http");
42
43 /**
44 * Allow you to use many features of the HTTPs protocol.
45 * @alias https
46 * @type {Object}
47 * @memberOf NA#modules
48 * @see {@link http://nodejs.org/api/https.html HTTPs}
49 */
50 NA.modules.https = require("https");
51
52 /**
53 * Allow you to handle and to transform url paths.
54 * @alias url
55 * @type {Object}
56 * @memberOf NA#modules
57 * @see {@link http://nodejs.org/api/url.html URL}
58 */
59 NA.modules.url = require("url");
60
61 /**
62 * Allow you to handle and to transform file paths.
63 * @alias path
64 * @type {Object}
65 * @memberOf NA#modules
66 * @see {@link http://nodejs.org/api/path.html Path}
67 */
68 NA.modules.path = require("path");
69};
70
71/**
72 * Load all NPM modules to run a Web Server.
73 * @private
74 * @function loadServerModules
75 * @memberOf NA~
76 * @param {NA} NA NodeAtlas instance.
77 */
78function loadServerModules(NA) {
79
80 /**
81 * An advanced web server.
82 * @function express
83 * @memberOf NA#modules
84 * @external express
85 * @see {@link http://expressjs.com/ Express.js}
86 */
87 NA.modules.express = require("express");
88
89 /**
90 * Parse HTML for POST methods.
91 * @function bodyParser
92 * @memberOf NA#modules
93 * @external body-parser
94 * @see {@link https://github.com/expressjs/body-parser body-parser}
95 */
96 NA.modules.bodyParser = require("body-parser");
97
98 /**
99 * Manage session of the server.
100 * @function express-session
101 * @memberOf NA#modules
102 * @external express-session
103 * @see {@link https://github.com/expressjs/session express-session}
104 */
105 NA.modules.session = require("express-session");
106
107 /**
108 * Parse Cookies for keep connection.
109 * @function cookieParser
110 * @memberOf NA#modules
111 * @external cookie-parser
112 * @see {@link https://github.com/expressjs/cookie-parser cookie-parser}
113 */
114 NA.modules.cookieParser = require("cookie-parser");
115
116 /**
117 * Compress code before send it to the client.
118 * @function compress
119 * @memberOf NA#modules
120 * @external compression
121 * @see {@link https://github.com/expressjs/compression compression}
122 */
123 NA.modules.compress = require("compression");
124
125 /**
126 * A command tool for run NodeAtlas as CLI.
127 * @alias commander
128 * @type {Object}
129 * @memberOf NA#modules
130 * @external commander
131 * @see {@link https://github.com/tj/commander.js commander.js}
132 */
133 NA.modules.commander = require("commander");
134
135 /**
136 * node.js realtime framework server.
137 * @function socketio
138 * @memberOf NA#modules
139 * @external socketio
140 * @see {@link https://www.npmjs.org/package/socket.io Socket.io}
141 */
142 NA.modules.socketio = require("socket.io");
143}
144
145/**
146 * Load all NPM modules for manipulate HTML render.
147 * @private
148 * @function loadHtmlModules
149 * @memberOf NA~
150 * @param {NA} NA NodeAtlas instance.
151 */
152function loadHtmlModules(NA) {
153
154 /**
155 * EJS cleans the HTML out of your JavaScript with client side templates.
156 * @alias ejs
157 * @type {Object}
158 * @memberOf NA#modules
159 * @external ejs
160 * @see {@link http://www.embeddedjs.com/ EJS}
161 */
162 NA.modules.ejs = require("ejs");
163
164 /**
165 * A clean, whitespace-sensitive template language for writing HTML.
166 * @alias pug
167 * @type {Object}
168 * @memberOf NA#modules
169 * @external pug
170 * @see {@link https://pugjs.org/ PUG}
171 */
172 NA.modules.pug = require("pug");
173
174 /**
175 * jsdom is a pure-JavaScript implementation of many web standards, notably the WHATWG DOM and HTML Standards, for use with Node.js.
176 * @alias jsdom
177 * @type {Object}
178 * @memberOf NA#modules
179 * @external jsdom
180 * @see {@link https://www.npmjs.com/package/jsdom jsdom}
181 */
182 NA.modules.jsdom = require("jsdom");
183}
184
185/**
186 * Load all NPM modules to enhance NodeAtlas.
187 * @private
188 * @function loadUtilsModules
189 * @memberOf NA~
190 * @param {NA} NA NodeAtlas instance.
191 */
192function loadUtilsModules(NA) {
193
194 /**
195 * Higher-order functions and common patterns for asynchronous code.
196 * @alias async
197 * @type {Object}
198 * @memberOf NA#modules
199 * @external async
200 * @see {@link https://www.npmjs.com/package/async async}
201 */
202 NA.modules.async = require("async");
203
204 /**
205 * An implementation of heritage.
206 * @function extend
207 * @memberOf NA#modules
208 * @external extend
209 * @see {@link https://www.npmjs.org/package/extend extend}
210 */
211 NA.modules.extend = require("extend");
212
213 /**
214 * Open a file or url in the user's preferred application.
215 * @function opn
216 * @memberOf NA#modules
217 * @external opn
218 * @see {@link https://www.npmjs.com/package/opn opn}
219 */
220 NA.modules.opn = require("opn");
221
222 /**
223 * Make all directories in a path, like mkdir -p.
224 * @function mkpath
225 * @memberOf NA#modules
226 * @external mkpath
227 * @see {@link https://www.npmjs.org/package/mkpath mkpath}
228 */
229 NA.modules.mkpath = require("mkpath");
230
231 /**
232 * Easy used "copy-dir" method, even use a filter, copy a file or directory to another path.
233 * @function copyDir
234 * @memberOf NA#modules
235 * @external copy-dir
236 * @see {@link https://www.npmjs.com/package/copy-dir}
237 */
238 NA.modules.copyDir = require("copy-dir");
239}
240
241/**
242 * Load all NPM modules for preproccessing, minification, obfuscation and optimization.
243 * @private
244 * @function loadOptimizationsModules
245 * @memberOf NA#
246 * @param {NA} NA NodeAtlas instance.
247 */
248 function loadOptimizationsModules(NA) {
249
250 /**
251 * CSS parser.
252 * @function cssParse
253 * @memberOf NA#modules
254 * @external css-parse
255 * @see {@link https://www.npmjs.com/package/css-parse css-parse}
256 */
257 NA.modules.cssParse = require("css-parse");
258
259 /**
260 * A fast, efficient, and well tested CSS minifier for node.js.
261 * @function cleanCss
262 * @memberOf NA#modules
263 * @external clean-css
264 * @see {@link https://github.com/jakubpawlowicz/clean-css clean-css}
265 */
266 NA.modules.cleanCss = require("clean-css");
267
268 /**
269 * uglify-es is an ECMAScript 2015 parser, minifier, compressor and beautifier toolkit.
270 * @alias uglifyEs
271 * @type {Object}
272 * @memberOf NA#modules
273 * @external uglify-es
274 * @see {@link https://github.com/mishoo/UglifyJS2/tree/harmony UglifyES}
275 */
276 NA.modules.uglifyEs = require("uglify-es");
277
278 /**
279 * An autoprefixer plugin for stylus.
280 * @function prefixStylus
281 * @memberOf NA#modules
282 * @external prefixStylus
283 * @see {@link https://www.npmjs.com/package/autoprefixer-stylus prefixStylus}
284 */
285 NA.modules.prefixStylus = require("autoprefixer-stylus");
286
287 /**
288 * Robust, expressive, and feature-rich CSS superset
289 * @function stylus
290 * @memberOf NA#modules
291 * @external stylus
292 * @see {@link https://www.npmjs.com/package/stylus stylus}
293 */
294 NA.modules.stylus = require("stylus");
295
296 /**
297 * Uses autoprefixer to add prefixes to css after conversion from less.
298 * @alias prefixLess
299 * @type {Object}
300 * @memberOf NA#modules
301 * @external prefixLess
302 * @see {@link https://www.npmjs.com/package/less-plugin-autoprefix prefixLess}
303 */
304 NA.modules.prefixLess = require("less-plugin-autoprefix");
305
306 /**
307 * The dynamic stylesheet language. http://lesscss.org.
308 * @alias less
309 * @type {Object}
310 * @memberOf NA#modules
311 * @external less
312 * @see {@link https://www.npmjs.com/package/less less}
313 */
314 NA.modules.less = require("less");
315
316 /**
317 * LESS.js middleware for connect.
318 * @alias lessMiddleware
319 * @type {Object}
320 * @memberOf NA#modules
321 * @external less-middleware
322 * @see {@link https://www.npmjs.com/package/less-middleware less-middleware}
323 */
324 NA.modules.lessMiddleware = require("less-middleware");
325 NA.modules.lessMiddlewareUtilities = require("less-middleware/lib/utilities");
326}
327
328/**
329 * Require all NPM modules required by NodeAtlas and set them into `NA#modules`.
330 * @public
331 * @function initNpmModules
332 * @memberOf NA#
333 * @this NA
334 */
335exports.initNpmModules = function () {
336 var NA = this;
337
338 /* Load all modules. */
339 loadServerModules(NA);
340 loadHtmlModules(NA);
341 loadUtilsModules(NA);
342 loadOptimizationsModules(NA);
343};
\No newline at end of file