Node--Javascript-language senso-concept-Mcs
(lagJsnd | Node.js) {2009}

overview of lagJsnd

description::
The-Node.js-language (lagJsnd) is a-Javascript-language that is-understood by the-Node.js-runtime.
[HmnSgm.2016-07-01]

name::
* McsEngl.McsTchInf000012.last.html//dirTchInf//dirMcs!⇒lagJsnd,
* McsEngl.dirMcs/dirTchInf/McsTchInf000012.last.html!⇒lagJsnd,
* McsEngl.Javascript.Node!⇒lagJsnd,
* McsEngl.JavascriptNode!⇒lagJsnd,
* McsEngl.LcpNodejs!⇒lagJsnd,
* McsEngl.Ljn!⇒Jsnd, {2019-03-05},
* McsEngl.Jsgn-nd!⇒lagJsnd, {2014.02.16}
* McsEngl.Jsnd!⇒lagJsnd,
* McsEngl.Node.js!⇒lagJsnd,
* McsEngl.Node.js!⇒lagJsnd,
* McsEngl.Node.js-language!⇒lagJsnd,
* McsEngl.Node--Javascript-language!⇒lagJsnd,
* McsEngl.NodeJS!⇒lagJsnd,
* McsEngl.Nodejs!⇒lagJsnd,
* McsEngl.lagJsn, {2019-07-04},
* McsEngl.lagJsnd, {2021-03-23},
* McsEngl.lagJsnd!=McsTchInf000012,
* McsEngl.lagJsnd!=Node-Javascript-language,
* McsEngl.languageJavascriptNode!⇒lagJsnd,
* McsEngl.server-side-Javascript!⇒lagJsnd,
===
* Lnj, {2016.05.10}
* Ndjs,

description::
Node.js® is a Javascript runtime built on Chrome's V8 Javascript engine.
Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient.
Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world.

[https://nodejs.org/en/]
===
Node.js is a server-side Javascript environment that uses an asynchronous event-driven model.
This allows Node.js to get excellent performance based on the architectures of many Internet applications.

[https://github.com/joyent/node/wiki]
===
Ignore the name: Node.js isn't a Javascript library.
Instead, Node.js is a Javascript interpreter (powered by V8, the engine used by Google's Chrome browser) that interfaces with the underlying operating system.
That way, Javascript run by Node.js can read and write files, spawn processes, and—most enticingly—send and receive HTTP requests.

[http://media.pragprog.com/titles/tbcoffee/server.pdf]
===
An important thing to realize is that Node is not a webserver.
By itself it doesn't do anything.
It doesn't work like Apache.
There is no config file where you point it to you HTML files.
If you want it to be a HTTP server, you have to write an HTTP server (with the help of its built-in libraries).
Node.js is just another way to execute code on your computer.
It is simply a Javascript runtime.

[http://blog.modulus.io/absolute-beginners-guide-to-nodejs]
===
Node.js is a platform built on Chrome's Javascript runtime for easily building fast, scalable network applications.
Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.

[http://nodejs.org/]
===
Node is a Javascript environment running in Google's V8 Javascript engine.
[http://net.tutsplus.com/tutorials/Javascript-ajax/node-js-for-beginners/]
===
Joyent is the corporate steward of Node.js, the world's best runtime for today's data-intensive, real-time applications.
Joyent offers exclusive debugging and performance analysis tools for Node.js applications.

[https://www.joyent.com/technology/nodejs]
===
Node.js is a native Javascript server application running right up against the OS.
Node.js builds directly on Chrome V8 and uses event-driven, asynchronous Javascript to create a very distinctive development environment.
Node.js has very few dependencies, runs very fast, and has a very active community.
Most of all, its fun!
I ported the Google Wave Gadget API implementation from Apache Wookie over to Node.js in a couple of days (you can download it here).
Node also seems to use very little memory regardless of demand - this is due to it using a threadless, event driven server model rather than a more traditional thread pool approach.
On the downside, there is some skepticism of the hype around the speed of Node.js.
Also, while being very lightweight has its advantages, being so close to the OS makes it harder to manage and track server performance without a lot of Linux Jujitsu: there are, as yet, no simple graphical management tools or utilities for handling deployed applications, for example.
However, if you need a platform to prototype demanding real-time applications such as multiplayer games then Node.js is well worth looking at.

[http://zope.cetis.ac.uk/members/scott/blogview?entry=20110124133546]
===
Node.js is an event-driven I/O framework for the V8 Javascript engine on Unix-like platforms.
It is intended for writing scalable network programs such as web servers[1].
It was created by Ryan Dahl in 2009, and its growth is sponsored by Joyent, which employs Dahl[2].
Node.js is similar in purpose to Twisted for Python, Perl Object Environment for Perl, and EventMachine for Ruby.
Unlike most Javascript, it is not executed in a web browser, but it is rather related to server-side Javascript.
Node.js implements some CommonJS specifications[3].
Node.js includes a REPL environment for interactive testing.

[http://en.wikipedia.org/wiki/Node.js]

archetype of lagJsnd

description::
NodeJs is a perfect candidate for real time communication over internet.
[https://www.quora.com/What-are-the-pros-and-cons-of-Node-js-versus-Apache-web-server] ===
Node.js had an extraordinary year so far: npm already hit 4 million users and processes a billion downloads a week, while major enterprises adopt the language as the main production framework day by day.
[https://blog.risingstack.com/node-js-examples-how-enterprises-use-node-in-2016/]

name::
* McsEngl.lagJsnd'archetype,
* McsEngl.lagJsnd'usage,

generic::
* Jsgn-archetype,

addressWpg::
* https://blog.risingstack.com/node-js-examples-how-enterprises-use-node-in-2016/

algorithm of lagJsnd

name::
* McsEngl.Jsndalgo, {2021-11-28},
* McsEngl.lagJsnd'algo!⇒Jsndalgo, {2014.03.10},
* McsEngl.lagJsnd'algorithm!⇒Jsndalgo,
* McsEngl.lagJsnd'model!⇒Jsndalgo,
* McsEngl.lagJsnd-algo!⇒Jsndalgo, {2019-03-16},

generic-tree::
* Jsgn-algo,

specific::
* source-code--document,
* binary-code--document,

code of algo

description::
· lagJsnd-code is any part of an-lagJsnd-code-doc.

name::
* McsEngl.lagJsnd-code,

file of algo

description::
So far we've only been using a single file, which isn't very maintainable.
In most applications your code will be split into several files.
There's no standard or enforced organization to what files go where.
This isn't Rails.
There's no concept of views go here and controllers go there.
You can do whatever you want.

[http://blog.modulus.io/absolute-beginners-guide-to-nodejs]

name::
* McsEngl.Jsndalgo'file,

mistake of algo

addressWpg::
* https://www.airpair.com/node.js/posts/top-10-mistakes-node-developers-make,

name::
* McsEngl.Jsndalgo'mistake,

syntax-tree of algo

name::
* McsEngl.lagJsnd'syntax-tree,
* McsEngl.Jsndalgo'syntax-tree,

generic::
* Javascript--syntax-tree,

algo'UNIT

generic::
* Jsgn-unit,

name::
* McsEngl.lagJsnd'unit!⇒lagJsnd-unit,
* McsEngl.lagJsnd-unit,
* McsEngl.Jsndalgo'unit!⇒lagJsnd-unit,

algo'WORD

generic::
* Jsgn-word,

name::
* McsEngl.lagJsnd'word,
* McsEngl.Jsndalgo'word,

algo'SEMANTIC-UNIT

generic::
* Jsgn-semantic-unit,

name::
* McsEngl.lagJsnd'semantic-unit!⇒lagJsnd-Sut,
* McsEngl.lagJsnd'Sut'(Node.js-semantic-unit)!⇒lagJsnd-Sut,
* McsEngl.Jsndalgo'Sut!⇒lagJsnd-Sut,
* McsEngl.lagJsnd-Sut,

lagJsnd-Sut.SPECIFIC

specific::
01) a - Array,
02) b - Boolean,
03) f - Function,
04) null,
05) m - Module,
06) n - Number,
07) o - Object,
08) r - Regexp,
09) s - String,
10) undefined,
11) name-Value-pair,
12) x - miXed,

lagJsnd-Sut.FUNCTION

description::
Because Javascript is event-oriented rather than thread-oriented, events only run when all other execution has stopped.
Imagine how frustrating it would be if every time your application made a request (say, to the file system or to an HTTP server), it froze up completely until the request was completed!
For that reason, nearly every function in the Node.js API uses a callback:
you make your request, Node.js quickly passes it along, and your application continues as if nothing happened.
When your request is completed (or goes awry), the function you passed to Node.js gets called.

[http://media.pragprog.com/titles/tbcoffee/server.pdf]

name::
* McsEngl.lagJsnd'function!⇒lagJsnd-f,
* McsEngl.lagJsnd-Sut.function!⇒lagJsnd-f,
* McsEngl.lagJsnd-f, {2019-03-16},
* McsEngl.lagJsnd-f!=Node.js-function,

generic::
* Jsgn-function,

lagJsnd-f.ASYNCHRONOUS

description::
Node API is not all asynchronous.
Some parts of it are synchronous but they are very well marked: they always terminate in "Sync" - lik fs.readFileSync...
One function that is synchronous and does not end in Sync is 'require' which should only be used when initializing an app or module.

[http://nodetuts.com/pdf/handson-nodejs-sample.pdf]

name::
* McsEngl.lagJsnd-f.asynchronous,

lagJsnd-Sut.OBJECT (lagJsnd-o)

generic::
* Jsgn-object,

name::
* McsEngl.lagJsnd'object!⇒lagJsnd-o,
* McsEngl.lagJsnd-Sut.object!⇒lagJsnd-o,
* McsEngl.lagJsnd-o,
* McsEngl.lagJsnd-o!=Node.js-object,

lagJsnd-Sut.NAME-VALUE-PAIR

generic::
* Jsgn-name-value-pair,

name::
* McsEngl.lagJsnd'name-value-pair,
* McsEngl.lagJsnd'Nvp,
* McsEngl.lagJsnd-Nvp,
* McsEngl.lagJsnd-v,

algo'sut.MODULE (Jsndm)

description::
·

name::
* McsEngl.Jsndm,
* McsEngl.lagJsnd'mdl!⇒Jsndm,
* McsEngl.lagJsnd'module!⇒Jsndm,
* McsEngl.lagJsnd'module--semantic-unit!⇒Jsndm,
* McsEngl.lagJsnd-Sut.module!⇒Jsndm,
* McsEngl.lagJsnd-m!⇒Jsndm,
* McsEngl.Node.js-module!⇒Jsndm,

info-resource of Jsndm

description::
* Determining module system: https://nodejs.org/api/packages.html#determining-module-system,

name::
* McsEngl.Jsndm'Infrsc,

Jsndm.ECMAScript (Jsndme)

description::
"ECMAScript (ES6) modules have been supported in Node.js since v8.5, with the --experimental-modules flag, and since at least Node.js v13.8.0 without the flag.
To enable "ESM" (vs. Node.js's previous CommonJS-style module system ["CJS"]) you either use "type": "module" in package.json or give the files the extension .mjs.
(Similarly, modules written with Node.js's previous CJS module can be named .cjs if your default is ESM.)"
[{2021-04-04} https://stackoverflow.com/questions/950087/how-do-i-include-a-javascript-file-in-another-javascript-file]

name::
* McsEngl.Jsndm.ECMAScript!⇒Jsndme,
* McsEngl.Jsndm.ESM!⇒Jsndme,
* McsEngl.Jsndme,
* McsEngl.Jsndme!=ECMAScript-modules-in-Jsnd,
* McsEngl.lagJsnd'ECMAScript-module!⇒Jsndme,

info-resource of Jsndme

description::
* https://nodejs.org/api/esm.html,

name::
* McsEngl.Jsndme'Infrsc,

Jsndm.CommonJS (Jsndmc)

Jsndmc'overview

description::
Module is a-semantic-unit which
- can-be PART OF other modules and
- can-has AS PART other modules
with the-require()-function.
Like 'the-prototype-inheritance' mechanism which manages the GENERIC-SPECIFIC relations of the-semantic-units of an-API, modules is the-mechanism needed to manage the WHOLE-PART relations of the-semantic-units.
In contrast to objects, modules HAVE scope, ie its members see each other.
===
Modules actually are (implemented as) self-executing-functions that RETURN the-semantic-unit which contains the-public-members of the-module.
[HmnSgm.2016-07-25]
===
Do-NOT-confuse the-module-semantic-unit (this-concept), with the-module-object, which is a-member of any module-semantic-unit.
[HmnSgm.2016-07-23]

name::
* McsEngl.CJS-module!⇒Jsndmc,
* McsEngl.CommonJS-module!⇒Jsndmc,
* McsEngl.Jsndm.CommonJS!⇒Jsndmc,
* McsEngl.Jsndmc, {2021-05-02},
* McsEngl.Jsndmc!=Node.js-CommonJS-module,
* McsEngl.lagJsnd'CommonJS-module--semantic-unit!⇒Jsndmc,
* McsEngl.Node.js-CommonJS-module!⇒Jsndmc,
* McsEngl.Node.js-module!⇒Jsndmc,
===
NOTATION:
I name the-modules as 'm?Name' where ? = a,b,f,n,o,r,s denotes the-type of the-semantic-unit-they-export (public-member). [HmnSgm.2016-12-01]
I name the-modules as 'mName' if they export objects and 'm?Name' where ? = a,b,f,n,r,s if they export other semantic-units. [HmnSgm.2016-07-25]

generic::
* CommonJS-module,

description::
Module is an OBJECT importing/exporting from a file or directory code-structure.
It can have explicitly defined properties with 'exports.property' code
or it can be a single exported function/object with the 'module.exports' code.
[HmnSgm.2014-04-22]
===
Modules make it possible to include other Javascript files into your applications.
... Modules are crucial to building applications in Node, as they allow you to include external libraries, such as database access libraries - and they help in organizing your code into separate parts with limited responsibilities.
You should try to identify reusable parts in your own code and turn them into separate modules to reduce the amount of code per file and to make it easier to read and maintain your code.

[http://book.mixu.net/node/single.html]
===
Node has a simple module loading system.
In Node, files and modules are in one-to-one correspondence.

[https://nodejs.org/docs/v6.3.1/api/modules.html#modules_modules]
===
Node.js uses a module architecture to simplify the creation of complex applications.
Modules are akin to libraries in C, or units in Pascal.
Each module contains a set of functions related to the “subject” of the module.
For example, the http module contains functions specific to HTTP.
Node.js provides a few core modules out of the box to help you access files on the file system, create HTTP and TCP/UDP servers, and perform other useful functions.
Including a module is easy; simply call the require() function, like this:
> var http = require('http');
The require() function returns the reference to the specified module.
In the case of this code, a reference to the http module is stored in the http variable.

[http://net.tutsplus.com/tutorials/Javascript-ajax/node-js-for-beginners/]

Jsndmc'caching

description::
Caching
Modules are cached after the first time they are loaded.
This means (among other things) that every call to require('foo') will get exactly the same object returned, if it would resolve to the same file.

Multiple calls to require('foo') may not cause the module code to be executed multiple times.
This is an important feature.
With it, "partially done" objects can be returned, thus allowing transitive dependencies to be loaded even when they would cause cycles.

If you want to have a module execute code multiple times, then export a function, and call that function.

Module Caching Caveats
Modules are cached based on their resolved filename.
Since modules may resolve to a different filename based on the location of the calling module (loading from node_modules folders), it is not a guarantee that require('foo') will always return the exact same object, if it would resolve to different files.

[http://nodejs.org/api/modules.html#modules_caching]

name::
* McsEngl.Jsndmc'caching,

Jsndmc'member

description::
Member-of-module is a-semantic-unit CONTAINED by the-module.

name::
* McsEngl.Jsndmc'member!⇒Jsndmmbr,
* McsEngl.Jsndmmbr,

Jsndmmbr'exporting

description::
The-object module.exports is the-semantic-unit a-module exports, the-public semantic-unit of a-module.

name::
* McsEngl.Jsndmc'exporting,
* McsEngl.Jsndmc'exposing,

Jsndmmbr'importing

description::
We can-import the-public-semantic-unit of a-module, in any other module.
To do it, we use the-function require().

name::
* McsEngl.Jsndmc'importing,
* McsEngl.Jsndmc'loading,
* McsEngl.Jsndmc'requiring,
* McsEngl.Jsndmc'using,

Jsndmmbr.SPECIFIC

specific::
* public-member,
* publicNo-member,
===
* __dirname-string-member,
* __filename-string-member,
* module-object-member,
* require-function-member,

Jsndmmbr.PUBLIC

description::
Public-member-of-module is an-exported member, that we have access outside of the-module.
A-module, as a-self-executing-function, returns|exports ONLY ONE semantic-unit.
When we export many members like exports.member = value, we export one object with members the-ones we denote in exports.

name::
* McsEngl.Jsndmc'exported-member,
* McsEngl.Jsndmc'public-member,
* McsEngl.Jsndmc'member.public,
* McsEngl.Jsndmc'member.localNo,
* McsEngl.Jsndmc'member.privateNo,
* McsEngl.lagJsnd'mmbr.public,

Jsndmmbr.PUBLIC.NO

description::
If module-a is importing in module-b, the-public-member of module-a is publicNo-member in module-b.
===
Defining var something in a-module, is publicNo-member of it.
In browsers, the top-level scope is the global scope.
That means that in browsers if you're in the global scope var something will define a global variable.
In Node.js this is different.
The top-level scope is not the global scope; var something inside an Node.js module will be local to that module.

[https://nodejs.org/api/globals.html#globals_global]

name::
* McsEngl.Jsndmc'private-member,
* McsEngl.Jsndmc'member.private,
* McsEngl.Jsndmc'member.publicNo,
* McsEngl.Jsndmc'member.local,

specific::
* any defined non-exporting member,
* __dirname-string-member,
* __filename-string-member,
* module-object-member,
* require-function-member,

Jsndmmbr.__dirname-string

description::
__dirname
String
The name of the directory that the currently executing script resides in.
Example: running node example.js from /Users/mjr
console.log(__dirname);
// /Users/mjr
__dirname isn't actually a global but rather local to each module.

[https://nodejs.org/api/globals.html#globals_dirname]

name::
* McsEngl.__dirname-string-of-Node.js,
* McsEngl.Jsnd__dirname-string,

Jsndmmbr.__filename-string

description::
__filename
String
The filename of the code being executed.
This is the resolved absolute path of this code file.
For a main program this is not necessarily the same filename used in the command line.
The value inside a module is the path to that module file.

Example: running node example.js from /Users/mjr
console.log(__filename);
// /Users/mjr/example.js

__filename isn't actually a global but rather local to each module.

[https://nodejs.org/api/globals.html#globals_filename]

name::
* McsEngl.__filename-of-Node.js,
* McsEngl.Jsnd__filename-string,

Jsndmmbr.module-object (Jsndmobt)

description::
The module Object
Object
In each module, the module free variable is a reference to the object representing the current module.
For convenience, module.exports is also accessible via the exports module-global.
module isn't actually a global but rather local to each module.

[https://nodejs.org/api/modules.html#modules_the_module_object]

name::
* McsEngl.Jsndmc'module-object,
* McsEngl.lagJsnd'mobt-(module-object), {2016.07.26}
* McsEngl.module-object-of-Node.js,
===
The-name 'module' is ambiguous.
a) denotes the-module object, this concept.
b) denotes any module semantic-unit (ljnm).

whole-chain::
* module-sut,
* most-whole-object (global),

generic-chain::
* ?(Module.prototype) (module.__proto__ === Object.prototype //false),
* Object.prototype (module.__proto__.__proto__ === Object.prototype //true),
===
* module-sut-member,

Jsndmobt'member

member::
// Jsnd.6-2-2
> Object.getOwnPropertyNames(module).sort()
[ 'children', 'exports', 'filename', 'id', 'loaded', 'parent', 'paths' ]
> Object.getOwnPropertyNames(module.__proto__).sort()
[ '_compile', 'constructor', 'load', 'require' ]
> Object.getOwnPropertyNames(module.__proto__.__proto__).sort()
[ '__defineGetter__', '__defineSetter__', '__lookupGetter__', '__lookupSetter__', '__proto__', 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf' ]

Jsndmobt'member.children-array

description::
module.children
Array
The module objects required by this one.

[https://nodejs.org/api/modules.html#modules_module_children]

name::
* McsEngl.Jsndmc.children-array,
* McsEngl.module.children-array-of-Node.js,

Jsndmobt'member.module.exports-object

description::
module.exports holds the-public-member (exported) of a-module.
===
module.exports
Object
The module.exports object is created by the Module system.
Sometimes this is not acceptable; many want their module to be an instance of some class.
To do this, assign the desired export object to module.exports.
Note that assigning the desired object to exports will simply rebind the local exports variable, which is probably not what you want to do.
...
exports alias
The exports variable that is available within a module starts as a reference to module.exports.
As with any variable, if you assign a new value to it, it is no longer bound to the previous value.

[https://nodejs.org/docs/v6.3.1/api/modules.html#modules_module_exports]

name::
* McsEngl.Jsndmc'module.exports-object,

Exporting-SINGLE-MEMBER

description::
To export a single semantic-unit we use the-code:
module.exports = value;
===
If you want the root of your module's export to be a function (such as a constructor) or if you want to export a complete object in one assignment instead of building it one property at a time, assign it to module.exports instead of exports.
[https://nodejs.org/api/modules.html#modules_modules]

name::
* McsEngl.Jsndmc'exporting-single-member,
* McsEngl.Jsndmc'exporting-single-semantic-unit,
* McsEngl.Jsndmc'module.exports,
* McsEngl.module.exports-of-Node.js,

Exporting-MANY-MEMBERS

description::
When we export many members, in fact we export ONE OBJECT with members these 'many' members.
To do this we use the-code:
module.exports.member = value;
or its alias
exports.member = value;
===
For convenience, module.exports is also accessible via the exports module-global.
[http://openmymind.net/2012/2/3/Node-Require-and-Exports/]

name::
* McsEngl.exports.member-of-Node.js,
* McsEngl.lagJsnd'exporting-many-members,
* McsEngl.lagJsnd'exports.member,
* McsEngl.Jsndmc'exporting-many-members,
* McsEngl.Jsndmc'module.exports.member,

Jsndmobt'member.filename-string

description::
module.filename
String
The fully resolved filename to the module.

[https://nodejs.org/api/modules.html#modules_module_filename]

name::
* McsEngl.Jsndmc.filename,
* McsEngl.module.filename-of-Node.js,

Jsndmobt'member.id-string

description::
The identifier for the module. Typically this is the fully resolved filename.
[https://nodejs.org/api/modules.html#modules_module_id]

name::
* McsEngl.Jsndmc.id,
* McsEngl.module.id-of-Node.js,

Jsndmobt'member.loaded-boolean

description::
Whether or not the module is done loading, or is in the process of loading.
[https://nodejs.org/api/modules.html#modules_module_loaded]

name::
* McsEngl.Jsndmc.loaded,
* McsEngl.module.loaded-of-Node.js,

Jsndmobt'member.parent-object

description::
The module that first required this one.
[https://nodejs.org/api/modules.html#modules_module_parent]

name::
* McsEngl.Jsndmc.parent,
* McsEngl.module.parent-of-Node.js,

Jsndmobt'member.paths-object

description::
> D:\Jsnd>node filStart
// module.paths
[ 'D:\\Jsnd\\node_modules' ]

name::
* McsEngl.Jsndmc.paths,
* McsEngl.module.paths-of-Node.js,

Jsndmmbr.require-function

description::
The-require-function IMPORTS modules into other modules.
When we import a-module, we import the-public-member[1] of the-module OR a-member of it[1] AND we execute the-code of the-module which could eg add a-global-member.

name::
* McsEngl.lagJsnd'require-function,
* McsEngl.lagJsnd-f.require,

whole-chain::
* module-semantic-unit,
* lagJsnd-most-whole-object (global),

generic-chain::
* Function.prototype,
* Object.prototype,

lagJsnd-require'Destructuring-assignment

description::
//destructuring-assignment
const {app, BrowserWindow} = require('electron');
//equivalent
const electron = require('electron');
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;

name::
* McsEngl.lagJsnd'require-destructuring-assignment,

lagJsnd-require'Import-core-module

description::
//just write the-module's name
const moFs = require('fs');
const mfEvents = require('events');

===
Without a leading '/' or './' to indicate a file, the module is either a "core module" or is loaded from a node_modules folder.
[http://nodejs.org/api/modules.html#modules_file_modules]

name::
* McsEngl.lagJsnd'import-core-module,
* McsEngl.Jsndmc'import-core-module,

lagJsnd-require'Import-member-of-module

description::
const fDecoderString = require('string_decoder').StringDecoder;
var oDecoderString = new fDecoderString('utf8');

name::
* cpt'Jsnd'import-part-of-module,
* cpt'ljnm'import-part-of-module,

lagJsnd-require'Import-from-relative-path

description::
//from CURRENT directory
const mFoo = require('./filFoo');
//form SUBDIRECTORY
const mC = require ('./dirTest/filC');
//from PARENT directory
const mBar = require('../filBar');

name::
* cpt'Jsnd'import-module-from-relative-path,
* cpt'ljnm'import-module-from-relative-path,

lagJsnd-require'Import-from-absolute-path

description::
A module prefixed with '/' is an absolute path to the file.
For example, require('/home/marco/foo.js') will load the file at /home/marco/foo.js.

[http://nodejs.org/api/modules.html#modules_file_modules]

name::
* McsEngl.lagJsnd'import-module-from-absolute-path,
* McsEngl.Jsndmc'import-module-from-absolute-path,

lagJsnd-require'Import-by-searching

description::
There are three ways in which you can require() files:
- using a relative path: foo = require('./lib/bar.js');
- using an absolute path: foo = require('/home/foo/lib/bar.js')
- using a search: foo = require('bar')
The first two are easy to understand.
In the third case, Node starts at the current directory, and adds ./node_modules/, and attempts to load the module from that location.
If the module is not found, then it moves to the parent directory and performs the same check, until the root of the filesystem is reached.

[http://book.mixu.net/node/single.html]

name::
* McsEngl.lagJsnd'import-by-searching,
* McsEngl.lagJsnd'import-from-node-modules,
* McsEngl.Jsndmc'import-by-searching,
* McsEngl.Jsndmc'import-from-node-modules,

lagJsnd-require'Import-JSON-file

description::
Nodejs and browserify support importing JSON files.
> oJson = require('./test.json'),

name::
* McsEngl.lagJsnd'import-JSON-file,
* McsEngl.Jsndmc'import-JSON-file,

lagJsnd-require'Member

description::
> Object.getOwnPropertyNames(require).sort()
[ 'cache', 'extensions', 'length', 'main', 'name', 'prototype', 'resolve' ]

===
> require
{ [Function: require]
resolve: [Function: resolve],
main: undefined,
extensions: { '.js': [Function], '.json': [Function], '.node': [Function] },
cache: {} }

lagJsnd-require.cache-object

description::
Modules are cached in this object when they are required.
By deleting a key value from this object, the next require will reload the module.

[https://nodejs.org/api/globals.html#globals_require_cache]

name::
* McsEngl.lagJsnd'require.cache,

lagJsnd-require.main-object

description::
Accessing the main module
When a file is run directly from Node.js, require.main is set to its module.
That means that you can determine whether a file has been run directly by testing
require.main === module
For a file foo.js, this will be true if run via node foo.js, but false if run by require('./foo').
Because module provides a filename property (normally equivalent to __filename), the entry point of the current application can be obtained by checking require.main.filename [from any module].

[https://nodejs.org/api/modules.html#modules_accessing_the_main_module]

name::
* McsEngl.lagJsnd'require.main,

lagJsnd-require.resolve-function

description::
Use the internal require() machinery to look up the location of a module, but rather than loading the module, just return the resolved filename.
[https://nodejs.org/api/globals.html#globals_require_resolve]

name::
* McsEngl.lagJsnd'global.require.resolve,
* McsEngl.lagJsnd'require.resolve,

Code.Jsnd:
//on a-module with 'filB.js' on the-same directory
console.log(require.resolve('./filB'))
//D:\Jsnd\filB.js

Jsndmmbr.VARIABLE

description::
variables declared with the var keyword remain local to a module; those declared without it get attached to the global object.
[http://www.hacksparrow.com/global-variables-in-node-js.html]
===
Variables local to the module will be private, because the module is wrapped in a function by Node.js (see module wrapper).
[https://nodejs.org/api/modules.html]

name::
* ljnm'variable,
* ljnm'name-value-pair,

generic::
* lagJsnd-module-member,
* lagJsnd-name-value-pair,

Jsndmc'npm-tool (link)

Jsndmc'repository

name::
* McsEngl.Jsndmc'repository,
* McsEngl.Jsndmc'storage,

specific::
* public-repository,
* publicNo-repository,
===
* npmjs.org/
* node-modules.com/
* http://eirikb.github.io/nipster/

Jsndmc'npm-registry (npmjs.org)

description::
Join the modular development revolution
Every month, more than 4 million developers use npm to find, share, and reuse code — and assemble it in powerful new ways.

[https://www.npmjs.com/]

name::
* McsEngl.lagJsnd'npm-registry,
* McsEngl.lagJsnd'npmjs.org,
* McsEngl.lagJsnd'npmjs.org,

npm-tool (link)

addressWpg::
* https://www.npmjs.org/

Node Packaged Modules:
{2016.07}: 250,000 building blocks
{2014.02.16}: Total Packages: 59,377

Jsndmc'node_modules-directory

description::
Without a leading '/' or './' to indicate a file, the module is either a "core module" or is loaded from a node_modules folder.
[https://nodejs.org/docs/v6.3.1/api/modules.html#modules_file_modules]
===
There are three ways in which you can require() files:
- using a relative path: foo = require('./lib/bar.js');
- using an absolute path: foo = require('/home/foo/lib/bar.js')
- using a search: foo = require('bar')
The first two are easy to understand.
In the third case, Node starts at the current directory, and adds ./node_modules/, and attempts to load the module from that location.
If the module is not found, then it moves to the parent directory and performs the same check, until the root of the filesystem is reached.

[http://book.mixu.net/node/single.html]
===
When you install a-module, with npm install 'module', it will-put it in node_modules-directory inside your current-directory.

name::
* McsEngl.lagJsnd'node-modules,
* McsEngl.lagJsnd'node-modules-directory,
* McsEngl.lagJsnd'node-modules-folder,
* McsEngl.node-modules.Jsnd,
* McsEngl.node-modules-directory,
* McsEngl.node-modules-folder,

Jsndmc'node-modules.com

addressWpg::
* http://node-modules.com/

Jsndmc'Infrsc

name::
* McsEngl.Jsndmc'Infrsc,

addressWpg::
* {2021-04-27} https://dmitripavlutin.com/ecmascript-modules-nodejs/,
* https://www.nczonline.net/blog/2016/04/es6-module-loading-more-complicated-than-you-think/: modules vs scripts,
* http://book.mixu.net/node/ch8.html,
* https://quickleft.com/blog/creating-and-publishing-a-node-js-module/,
* http://www.hacksparrow.com/how-to-write-node-js-modules.html,
* http://openmymind.net/2012/2/3/Node-Require-and-Exports/

Jsndmc'Converting-AMD-to-NodeJs-modules

name::
* McsEngl.Jsndmc'converting-AMD-to-NodeJs-modules,
* McsEngl.lagJsnd'converting-AMD-to-NodeJs-modules,

addressWpg::
* https://github.com/millermedeiros/nodefy,
* http://corner.squareup.com/2013/02/es6-module-transpiler.html,
* https://github.com/square/es6-module-transpiler,

Jsndmc'stability-index (0 - 3)

name::
* McsEngl.lagJsnd'stability-index,

description::
lagJsndstability0.Deprecated
This feature is known to be problematic, and changes are
planned. Do not rely on it. Use of the feature may cause warnings. Backwards
compatibility should not be expected.
lagJsndstability1.Experimental
This feature is subject to change, and is gated by a command line flag.
It may change or be removed in future versions.
lagJsndstability2.Stable
The API has proven satisfactory.
Compatibility with the npm ecosystem
is a high priority, and will not be broken unless absolutely necessary.
lagJsndstability3.Locked
Only fixes related to security, performance, or bug fixes will be accepted.
Please do not suggest API changes in this area; they will be refused.
[https://nodejs.org/api/documentation.html#documentation_stability_index]
===
The stability indices are as follows:

Stability: 0 - Deprecated
This feature is known to be problematic, and changes are
planned. Do not rely on it. Use of the feature may cause warnings. Backwards
compatibility should not be expected.

Stability: 1 - Experimental
This feature was introduced recently, and may change
or be removed in future versions. Please try it out and provide feedback.
If it addresses a use-case that is important to you, tell the node core team.

Stability: 2 - Unstable
The API is in the process of settling, but has not yet had
sufficient real-world testing to be considered stable.
Backwards-compatibility
will be maintained if reasonable.

Stability: 3 - Stable
The API has proven satisfactory, but cleanup in the underlying
code may cause minor changes. Backwards-compatibility is guaranteed.

Stability: 4 - API Frozen
This API has been tested extensively in production and is
unlikely to ever have to change.

Stability: 5 - Locked
Unless serious bugs are found, this code will not ever
change. Please do not suggest changes in this area; they will be refused.

[https://nodejs.org/docs/latest-v0.10.x/doc/api/documentation.html#documentation_stability_index]

Jsndmc'wraper

description::
Modules actually are (implemented as) self-executing-functions that RETURN the-semantic-unit which contains the-public-members of the-module.
[HmnSgm.2016-07-25]
===
The module wrapper
Before a module's code is executed, Node.js will wrap it with a function wrapper that looks like the following:
(function (exports, require, module, __filename, __dirname) {
// Your module code actually lives in here
});

By doing this, Node.js achieves a few things:
- It keeps top-level variables (defined with var, const or let) scoped to the module rather than the global object.
- It helps to provide some global-looking variables that are actually specific to the module, such as:
-- The module and exports objects that the implementor can use to export values from the module.
-- The convenience variables __filename and __dirname, containing the module's absolute filename and directory path.

[https://nodejs.org/api/modules.html#modules_the_module_wrapper]

name::
* McsEngl.Jsndmc'wrapper,

SPECIFIC

name::
* McsEngl.Jsndmc.specific,

specific::
* core-module,
* coreNo-module,
===
* main-module,
* mainNo-module,
===
* directory-module,
* file-module,
===
There are three types of modules in Node.js:
internal modules (parts of Node API)
3rd party modules written in Javascript
3rd party modules with C/C++ addons

[https://github.com/rogerwang/node-webkit/wiki/Using-Node-modules]

Jsndmc.SPECIFIC-DIVISION.public--semantic-unit

description::
Every module exports (has a-public) a-semantic-unit.
Usually it is an-object or a-function.
We can-classify modules on this attribute as:
* object-module,
* function-module,
...
[HmnSgm.2017-10-25]

name::
* McsEngl.lagJsnd'function-module,
* McsEngl.lagJsnd'object-module,
* McsEngl.Jsndmc.specifics-division--on--public-semantic-unit,
* McsEngl.Jsndmc.function,
* McsEngl.Jsndmc.object,

Jsndmc.CORE

description::
Core Modules
Node has several modules compiled into the binary.
These modules are described in greater detail elsewhere in this documentation.

The core modules are defined in node's source in the lib/ folder.

Core modules are always preferentially loaded if their identifier is passed to require().
For instance, require('http') will always return the built in HTTP module, even if there is a file by that name.

[https://nodejs.org/docs/v6.3.1/api/modules.html#modules_core_modules]

name::
* McsEngl.lagJsnd'builtIn-module,
* McsEngl.lagJsnd'core-module,
* McsEngl.lagJsnd'customNo-module,
* McsEngl.lagJsnd'internal-module,
* McsEngl.lagJsnd'native-module,
* McsEngl.Jsndmc.builtIn,
* McsEngl.Jsndmc.customNo,
* McsEngl.Jsndmc.internal,
* McsEngl.Jsndmc.native,

specific::
* Jsndmc.assert,
* Jsndmc.child_process,
* Jsndmc.cluster,
* Jsndmc.crypto,
* Jsndmc.dns,
* Jsndmc.events,
* Jsndmc.fs,
* Jsndmc.http,
* Jsndmc.https,
* Jsndmc.net,
* Jsndmc.os,
* Jsndmc.path,
* Jsndmc.readline,
* Jsndmc.repl,
* Jsndmc.stream,
* Jsndmc.string_decoder,
* Jsndmc.tls,
* Jsndmc.tty,
* Jsndmc.url,
* Jsndmc.util,
* Jsndmc.vm,
* Jsndmc.zlib,
===
// Jsnd.6-3-1
repl> repl._builtinLibs
[ 'assert', 'buffer', 'child_process', 'cluster', 'crypto', 'dgram', 'dns', 'domain', 'events', 'fs', 'http', 'https', 'net', 'os', 'path', 'punycode', 'querystring', 'readline', 'repl', 'stream', 'string_decoder', 'tls', 'tty', 'url', 'util', 'v8', 'vm', 'zlib' ]

Jsndmc.core.assert-function (core 3.locked)

description::
The assert module provides a simple set of assertion tests that can be used to test invariants.
The module is intended for internal use by Node.js, but can be used in application code via require('assert').
However, assert is not a testing framework, and is not intended to be used as a general purpose assertion library.
The API for the assert module is Locked.
This means that there will be no additions or changes to any of the methods implemented and exposed by the module.

[https://nodejs.org/docs/v6.3.1/api/assert.html#assert_assert]

name::
* McsEngl.assert--Node.js-core-function-module,
* McsEngl.lagJsnd'assert-core-function-module,
* McsEngl.Jsndmc.assert-function,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* Function.prototype (mfAssert.__proto__ === Function.prototype //true)
* Object.prototype,

member::
// Jsnd.6-3-1
// Object.getOwnPropertyNames(mfAssert).sort()
[ 'AssertionError', 'deepEqual', 'deepStrictEqual', 'doesNotThrow', 'equal', 'fail', 'ifError', 'length', 'name', 'notDeepEqual', 'notDeepStrictEqual', 'notEqual', 'notStrictEqual', 'ok', 'prototype', 'strictEqual', 'throws' ]

Jsndmc.core.events-function (core 2.stable)

description::
Much of the Node.js core API is built around an idiomatic asynchronous event-driven architecture in which certain kinds of objects (called "emitters") periodically emit named events that cause Function objects ("listeners") to be called.

For instance: a net.Server object emits an event each time a peer connects to it; a fs.ReadStream emits an event when the file is opened; a stream emits an event whenever data is available to be read.

All objects that emit events are instances of the EventEmitter class.
These objects expose an eventEmitter.on() function that allows one or more functions to be attached to named events emitted by the object.
Typically, event names are camel-cased strings but any valid JavaScript property key can be used.

When the EventEmitter object emits an event, all of the functions attached to that specific event are called synchronously.
Any values returned by the called listeners are ignored and will be discarded.

[https://nodejs.org/docs/v6.3.1/api/events.html#events_events]

name::
* McsEngl.events--Node.js-core-function-module,
* McsEngl.lagJsnd'events-core-function-module,
* McsEngl.lagJsnd'mfEvents,
* McsEngl.lagJsnd'events-core-function-module,
* McsEngl.Jsndmc.events,
* McsEngl.lagJsnd'mfEvents,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* Function.prototype, (mfEvents.__proto__ === Function.prototype //true)
* Object.prototype, (mfEvents.__proto__.__proto__ === Object.prototype //true)

mfEvents'member

mfEvents'Member::
// Jsnd.6-3-1
// Object.getOwnPropertyNames(mfEvents).sort()
[ 'EventEmitter',
'defaultMaxListeners',
'init',
'length',
'listenerCount',
'name',
'prototype',
'usingDomains' ]
===
// mfEvents
{ [Function: EventEmitter]
EventEmitter: [Circular],
usingDomains: true,
defaultMaxListeners: [Getter/Setter],
init: [Function],
listenerCount: [Function] }

mfEvents.EventEmitter-function

description::
events.EventEmitter === events
[HmnSgm.2016-07-02]
var events = require('events')
console.log(events.EventEmitter === events) //true

===
To access the EventEmitter class, require('events').EventEmitter.

When an EventEmitter instance experiences an error, the typical action is to emit an 'error' event.
Error events are treated as a special case in node.
If there is no listener for it, then the default action is to print a stack trace and exit the program.

All EventEmitters emit the event 'newListener' when new listeners are added and 'removeListener' when a listener is removed.

[https://nodejs.org/docs/v0.12.0/api/events.html#events_class_events_eventemitter]

name::
* McsEngl.lagJsnd'EventEmitter-function,
* McsEngl.lagJsnd'mfEvents'EventEmitter,

EventEmitter-object

name::
* McsEngl.lagJsnd'EventEmitter-object,

member::
// 1.7.9 Object.getOwnPropertyNames(new EventEmitter()).sort()).join(', '))
[_events, _eventsCount, _maxListeners, domain]
// Object.getOwnPropertyNames(new EventEmitter().__proto__).sort()).join(', '))
[_events, _maxListeners, addListener, constructor, domain, emit, eventNames, getMaxListeners, listenerCount, listeners, on, once, prependListener, prependOnceListener, removeAllListeners, removeListener, setMaxListeners]
// Object.getOwnPropertyNames(new EventEmitter().__proto__.__proto__).sort()).join(', '))
[__defineGetter__, __defineSetter__, __lookupGetter__, __lookupSetter__, __proto__, constructor, hasOwnProperty, isPrototypeOf, propertyIsEnumerable, toLocaleString, toString, valueOf]

mfEvents.prototype-object

member::
// Jsnd.6-3-1
// Object.getOwnPropertyNames(mfEvents.prototype).sort()
[ '_events', '_maxListeners', 'addListener', 'constructor', 'domain', 'emit', 'eventNames', 'getMaxListeners', 'listenerCount', 'listeners', 'on', 'once', 'prependListener', 'prependOnceListener', 'removeAllListeners', 'removeListener', 'setMaxListeners' ]

name::
* McsEngl.lagJsnd'events.prototype,
* McsEngl.lagJsnd'mfEvents.prototype,

mfEvents'listener-function

description::
Functions can then be attached to objects, to be executed when an event is emitted.
These functions are called listeners.
Inside a listener function, this refers to the EventEmitter that the listener was attached to.

[https://nodejs.org/docs/v0.12.0/api/events.html#events_events]

name::
* McsEngl.lagJsnd'event-listener,

Jsndmc.core.stream-function (core 2.stable)

description::
A stream is an abstract interface for working with streaming data in Node.js.
The stream module provides a base API that makes it easy to build objects that implement the stream interface.

There are many stream objects provided by Node.js.
For instance, a request to an HTTP server and process.stdout are both stream instances.

Streams can be readable, writable, or both.
All streams are instances of EventEmitter.

The stream module can be accessed using:
const stream = require('stream');

While it is important for all Node.js users to understand how streams works, the stream module itself is most useful for developer's that are creating new types of stream instances.
Developer's who are primarily consuming stream objects will rarely (if ever) have need to use the stream module directly.

[https://nodejs.org/api/stream.html#stream_stream]

name::
* McsEngl.lagJsnd'mfStream,
* McsEngl.lagJsnd'stream-core-function-module,
* McsEngl.Jsndmc.stream,
* McsEngl.lagJsnd'mfStream,
* McsEngl.stream--Node.js-core-function-module,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* Function.prototype, (mfStream.__proto__ === Function.prototype //true)
* Object.prototype (mfStream.__proto__.__proto__ === Object.prototype //true)

member::
// Jsnd.6-2-2
// Object.getOwnPropertyNames(mfStream).sort()
[ 'Duplex', 'PassThrough', 'Readable', 'Stream', 'Transform', 'Writable', 'length', 'name', 'prototype', 'super_' ]
===
> stream
{ [Function: Stream]
super_:
{ [Function: EventEmitter]
EventEmitter: [Circular],
usingDomains: true,
defaultMaxListeners: [Getter/Setter],
init: [Function],
listenerCount: [Function] },
Readable:
{ [Function: Readable]
ReadableState: [Function: ReadableState],
super_: [Circular],
_fromList: [Function: fromList] },
Writable: { [Function: Writable] WritableState: [Function: WritableState], super_: [Circular] },
Duplex:
{ [Function: Duplex]
super_:
{ [Function: Readable]
ReadableState: [Function: ReadableState],
super_: [Circular],
_fromList: [Function: fromList] } },
Transform: { [Function: Transform] super_: { [Function: Duplex] super_: [Object] } },
PassThrough: { [Function: PassThrough] super_: { [Function: Transform] super_: [Object] } },
Stream: [Circular] }

lagJsnd'stream-object

description::
Stream-objects pass (pipe) some flow of data through a number of functions, which modify the-data and then pass the modified data to the next function.

name::
* McsEngl.lagJsnd'stream-object,
* McsEngl.stream-object.Jsnd,

description::
What are Streams?
Streams can be defined as a continuous flow of data that can be manipulated asynchronously as data comes in (or out).
In Node.js streams can be readable or writable.
A readable stream is an EventEmitter object that emits data events every time a chunk of data is received.
In our previous example a readable stream has been used to pipe the content of a file down to a HTTP client.
When the stream reaches the end of our file it emits an end event, indicating that no more data events will occur.
In addition a readable stream can be paused and resumed.

Writable streams, on the other hand, accept streams of data.
This type of stream inherits from the EventEmitter object too, and implements two methods: write() and end().
The first method writes data to a buffer and returns true if the data has been flushed correctly, or false if the buffer is full (in this case the data will be sent out later).The end() method simply indicates that the stream is finished.

[http://www.sitepoint.com/introduction-to-streams/]

member::
// 1.7.9 Object.getOwnPropertyNames(new stream()).sort()).join(', '))
[_events, _eventsCount, _maxListeners, domain]
// Object.getOwnPropertyNames(new stream().__proto__).sort()).join(', '))
[constructor, pipe]
// Object.getOwnPropertyNames(new stream().__proto__.__proto__).sort()).join(', '))
[_events, _maxListeners, addListener, constructor, domain, emit, eventNames, getMaxListeners, listenerCount, listeners, on, once, prependListener, prependOnceListener, removeAllListeners, removeListener, setMaxListeners]
// Object.getOwnPropertyNames(new stream().__proto__.__proto__.__proto__).sort()).join(', '))
[__defineGetter__, __defineSetter__, __lookupGetter__, __lookupSetter__, __proto__, constructor, hasOwnProperty, isPrototypeOf, propertyIsEnumerable, toLocaleString, toString, valueOf]

Generic:
The-objects of mfStream are instances of mfEvents.prototype.
var oStream = new mfStream();
oStream.__proto__ === mfStream.prototype //true
oStream.__proto__.__proto__ === mfEvents.prototype //true
oStream.__proto__.__proto__.__proto__ === Object.prototype //true

===
All streams are instances of EventEmitter.
[https://nodejs.org/api/stream.html#stream_stream]

Streaming-algorithm (link)

Jsndmc.core.buffer-object (core 2.stable)

description::
The-buffer-module contains the-Buffer-function, which is and global-member.
===
The Buffer class is a global within Node.js, making it unlikely that one would need to ever use require('buffer').Buffer.
[https://nodejs.org/docs/v6.3.1/api/buffer.html#buffer_buffer]

name::
* McsEngl.buffer--Node.js-core-object-module,
* McsEngl.lagJsnd'buffer-core-object-module,
* McsEngl.lagJsnd'moBuffer,
* McsEngl.Jsndmc.buffer,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* Object.prototype, (moBuffer.__proto__ === Object.prototype)

member::
// Jsnd.6-3-1
// Object.getOwnPropertyNames(moBuffer).sort()
[ 'Buffer', 'INSPECT_MAX_BYTES', 'SlowBuffer', 'kMaxLength' ]

Jsndmc.core.child_process-object (core 2=stable)

description::
Node provides a tri-directional popen(3) facility through the child_process module.

It is possible to stream data through a child's stdin, stdout, and stderr in a fully non-blocking way. (Note that some programs use line-buffered I/O internally.
That doesn't affect node.js but it means data you send to the child process is not immediately consumed.)

To create a child process use require('child_process').spawn() or require('child_process').fork().
The semantics of each are slightly different, and explained below.

[https://nodejs.org/docs/v0.12.0/api/child_process.html#child_process_child_process]

name::
* McsEngl.child-process--Node.js-core-object-module,
* McsEngl.lagJsnd'child-process-core-object-module,
* McsEngl.Jsndmc.child-process,
* McsEngl.lagJsnd'moChild-process,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* Object.prototype, (moChild_process.__proto__ === Object.prototype //true)

API:
* Jsnd.last: https://nodejs.org/api/child_process.html,

Jsndmc.core.cluster-object (core 2=stable)

description::
A single instance of Node.js runs in a single thread.
To take advantage of multi-core systems the user will sometimes want to launch a cluster of Node.js processes to handle the load.

[https://nodejs.org/docs/v6.3.1/api/cluster.html#cluster_cluster]

name::
* McsEngl.cluster-module.Jsnd,
* McsEngl.cluster--Node.js-core-object-module,
* McsEngl.lagJsnd'cluster-core-object-module,
* McsEngl.lagJsnd'moCluster,
* McsEngl.Jsndmc.cluster,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* events.prototype (moCluster.__proto__ === mfEvents.prototype //true)
* Object.prototype (moCluster.__proto__.__proto__ === Object.prototype //true)

Jsndmc.core.crypto-object (core 2.stable)

description::
The crypto module provides cryptographic functionality that includes a set of wrappers for OpenSSL's hash, HMAC, cipher, decipher, sign and verify functions.
Use require('crypto') to access this module.

[https://nodejs.org/api/crypto.html#crypto_crypto]

name::
* McsEngl.crypto--Node.js-core-object-module,
* McsEngl.lagJsnd'crypto-core-object-module,
* McsEngl.Jsndmc.crypto,
* McsEngl.lagJsnd'moCrypto,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* Object.prototype (moCrypto.__proto__ === Object.prototype //true)

member::
// Jsnd.6-3-1
// Object.getOwnPropertyNames(moCrypto).sort()
[ 'Certificate', 'Cipher', 'Cipheriv', 'Credentials', 'DEFAULT_ENCODING', 'Decipher', 'Decipheriv', 'DiffieHellman', 'DiffieHellmanGroup', 'Hash', 'Hmac', 'Sign', 'Verify', '_toBuf', 'constants', 'createCipher', 'createCipheriv', 'createCredentials', 'createDecipher', 'createDecipheriv', 'createDiffieHellman', 'createDiffieHellmanGroup', 'createECDH', 'createHash', 'createHmac', 'createSign', 'createVerify', 'fips', 'getCiphers', 'getCurves', 'getDiffieHellman', 'getHashes', 'pbkdf2', 'pbkdf2Sync', 'privateDecrypt', 'privateEncrypt', 'prng', 'pseudoRandomBytes', 'publicDecrypt', 'publicEncrypt', 'randomBytes', 'rng', 'setEngine' ]

Jsndmc.core.dns-object (core 2.stable)

description::
The dns module contains functions belonging to two different categories:
1) Functions that use the underlying operating system facilities to perform name resolution, and that do not necessarily perform any network communication. This category contains only one function: dns.lookup().
Developers looking to perform name resolution in the same way that other applications on the same operating system behave should use dns.lookup().
...
2) Functions that connect to an actual DNS server to perform name resolution, and that always use the network to perform DNS queries.
This category contains all functions in the dns module except dns.lookup().
These functions do not use the same set of configuration files used by dns.lookup() (e.g. /etc/hosts).
These functions should be used by developers who do not want to use the underlying operating system's facilities for name resolution, and instead want to always perform DNS queries.

[https://nodejs.org/api/dns.html#dns_dns]

name::
* McsEngl.dns--Node.js-core-object-module,
* McsEngl.lagJsnd'dns-core-object-module,
* McsEngl.lagJsnd'dns-core-object-module,
* McsEngl.Jsndmc.dns,
* McsEngl.lagJsnd'moDns,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* Object.prototype (moDns.__proto__ === Object.prototype //true)

lagJsnddns'Member::
// Jsnd.6-2-2
// Object.getOwnPropertyNames(moDns).sort()
[ 'ADDRCONFIG', 'ADDRGETNETWORKPARAMS', 'BADFAMILY', 'BADFLAGS', 'BADHINTS', 'BADNAME', 'BADQUERY', 'BADRESP', 'BADSTR', 'CANCELLED', 'CONNREFUSED', 'DESTRUCTION', 'EOF', 'FILE', 'FORMERR', 'LOADIPHLPAPI', 'NODATA', 'NOMEM', 'NONAME', 'NOTFOUND', 'NOTIMP', 'NOTINITIALIZED', 'REFUSED', 'SERVFAIL', 'TIMEOUT', 'V4MAPPED', 'getServers', 'lookup', 'lookupService', 'resolve', 'resolve4', 'resolve6', 'resolveCname', 'resolveMx', 'resolveNaptr', 'resolveNs', 'resolvePtr', 'resolveSoa', 'resolveSrv', 'resolveTxt', 'reverse', 'setServers' ]
===
// moDns
{ lookup: [Function: lookup],
lookupService: [Function],
resolve4: [Function: query],
resolve6: [Function: query],
resolveCname: [Function: query],
resolveMx: [Function: query],
resolveNs: [Function: query],
resolveTxt: [Function: query],
resolveSrv: [Function: query],
resolvePtr: [Function: query],
resolveNaptr: [Function: query],
resolveSoa: [Function: query],
reverse: [Function: query],
resolve: [Function],
getServers: [Function],
setServers: [Function],
ADDRCONFIG: 1024,
V4MAPPED: 2048,
NODATA: 'ENODATA',
FORMERR: 'EFORMERR',
SERVFAIL: 'ESERVFAIL',
NOTFOUND: 'ENOTFOUND',
NOTIMP: 'ENOTIMP',
REFUSED: 'EREFUSED',
BADQUERY: 'EBADQUERY',
BADNAME: 'EBADNAME',
BADFAMILY: 'EBADFAMILY',
BADRESP: 'EBADRESP',
CONNREFUSED: 'ECONNREFUSED',
TIMEOUT: 'ETIMEOUT',
EOF: 'EOF',
FILE: 'EFILE',
NOMEM: 'ENOMEM',
DESTRUCTION: 'EDESTRUCTION',
BADSTR: 'EBADSTR',
BADFLAGS: 'EBADFLAGS',
NONAME: 'ENONAME',
BADHINTS: 'EBADHINTS',
NOTINITIALIZED: 'ENOTINITIALIZED',
LOADIPHLPAPI: 'ELOADIPHLPAPI',
ADDRGETNETWORKPARAMS: 'EADDRGETNETWORKPARAMS',
CANCELLED: 'ECANCELLED' }

Jsndmc.core.fs-object (core 3=stable)

description::
File I/O is provided by simple wrappers around standard POSIX functions.
To use this module do require('fs').
All the methods have asynchronous and synchronous forms.

The asynchronous form always take a completion callback as its last argument.
The arguments passed to the completion callback depend on the method, but the first argument is always reserved for an exception.
If the operation was completed successfully, then the first argument will be null or undefined.

When using the synchronous form any exceptions are immediately thrown.
You can use try/catch to handle exceptions or allow them to bubble up.

[https://nodejs.org/api/fs.html]

name::
* McsEngl.fs--Node.js-core-object-module,
* McsEngl.lagJsnd'file-system-core-object-module,
* McsEngl.lagJsnd'fs-core-object-module,
* McsEngl.lagJsnd'file-system-core-object-module,
* McsEngl.lagJsnd'fs-core-object-module,
* McsEngl.Jsndmc.fs,
* McsEngl.lagJsnd'moFs,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* Object.prototype, (moFs.__proto__ === Object.prototype //true)

addressWpg::
* https://nodejs.org/api/fs.html,

moFs'Member::
// Jsnd.6-3-1
// Object.getOwnPropertyNames(moFs).sort()
[ 'F_OK', 'FileWriteStream', 'ReadStream', 'SyncWriteStream', 'WriteStream', '_stringToFlags', 'access', 'appendFile', 'chmod', 'chown', 'close', 'constants', 'createWriteStream', 'existsSync', 'fchmodSync', 'fchownSync', 'fdatasync', 'fdatasyncSync', 'fstat', 'fstatSync', 'fsync', 'fsyncSync', 'ftruncate', 'ftruncateSync', 'futimes', 'futimesSync', 'link', 'linkSync', 'lstat', 'lstatSync', 'mkdir', 'mkdirSync', 'mkdtemp', 'mkdtempSync', 'open', 'openSync', 'read', 'readFile', 'readFileSync', 'readSync', 'readdir', 'readdirSync', 'readlink', 'readlinkSync', 'realpath', 'realpathSync', 'rename', 'renameSync', 'rmdir', 'rmdirSync', 'stat', 'statSync', 'symlink', 'symlinkSync', 'truncate', 'truncateSync', 'unlink', 'unlinkSync', 'unwatchFile', 'utimes', 'utimesSync', 'watch', 'watchFile', 'write', 'writeFile', 'writeFileSync', 'writeSync' ]
===
moFs.ReadStream_Class
moFs.Stats_Class
moFs.WriteStream_Class
moFs.appendFile(filename, data, [options], callback)
moFs.appendFileSync(filename, data, [options])
moFs.chmod(path, mode, callback)
moFs.chmodSync(path, mode)
moFs.chown(path, uid, gid, callback)
moFs.chownSync(path, uid, gid)
moFs.close(fd, callback)
moFs.closeSync(fd)
moFs.createReadStream(path, [options])
moFs.createWriteStream(path, [options])
moFs.exists(path, callback)
moFs.existsSync(path)
moFs.fchmod(fd, mode, callback)
moFs.fchmodSync(fd, mode)
moFs.fchown(fd, uid, gid, callback)
moFs.fchownSync(fd, uid, gid)
moFs.fstat(fd, callback)
moFs.fstatSync(fd)
moFs.fsync(fd, callback)
moFs.fsyncSync(fd)
moFs.ftruncate(fd, len, callback)
moFs.ftruncateSync(fd, len)
moFs.futimes(fd, atime, mtime, callback)
moFs.futimesSync(fd, atime, mtime)
moFs.lchmod(path, mode, callback)
moFs.lchmodSync(path, mode)
moFs.lchown(path, uid, gid, callback)
moFs.lchownSync(path, uid, gid)
moFs.link(srcpath, dstpath, callback)
moFs.linkSync(srcpath, dstpath)
moFs.lstat(path, callback)
moFs.lstatSync(path)
moFs.mkdir(path, [mode], callback)
moFs.mkdirSync(path, [mode])
moFs.open(path, flags, [mode], callback)
moFs.openSync(path, flags, [mode])
moFs.read(fd, buffer, offset, length, position, callback)
moFs.readFile(filename, [options], callback)
moFs.readFileSync(filename, [options])
moFs.readSync(fd, buffer, offset, length, position)
moFs.readdir(path, callback)
moFs.readdirSync(path)
moFs.readlink(path, callback)
moFs.readlinkSync(path)
moFs.realpath(path, [cache], callback)
moFs.realpathSync(path, [cache])
moFs.rename(oldPath, newPath, callback)
moFs.renameSync(oldPath, newPath)
moFs.rmdir(path, callback)
moFs.rmdirSync(path)
moFs.stat(path, callback)
moFs.statSync(path)
moFs.symlink(srcpath, dstpath, [type], callback)
moFs.symlinkSync(srcpath, dstpath, [type])
moFs.truncate(path, len, callback)
moFs.truncateSync(path, len)
moFs.unlink(path, callback)
moFs.unlinkSync(path)
moFs.unwatchFile(filename, [listener])
moFs.utimes(path, atime, mtime, callback)
moFs.utimesSync(path, atime, mtime)
moFs.watch(filename, [options], [listener])
moFs.watchFile(filename, [options], listener)
moFs.write(fd, buffer, offset, length, position, callback)
moFs.writeFile(filename, data, [options], callback)
moFs.writeFileSync(filename, data, [options])
moFs.writeSync(fd, buffer, offset, length, position)

Jsndmc.core.http-object (core 2.stable)

description::
To use the HTTP server and client one must require('http').

The HTTP interfaces in Node are designed to support many features of the protocol which have been traditionally difficult to use.
In particular, large, possibly chunk-encoded, messages.
The interface is careful to never buffer entire requests or responses--the user is able to stream data.

HTTP message headers are represented by an object like this:
{ 'content-length': '123',
'content-type': 'text/plain',
'connection': 'keep-alive',
'host': 'mysite.com',
'accept': '*/*' }
Keys are lowercased.
Values are not modified.

In order to support the full spectrum of possible HTTP applications, Node's HTTP API is very low-level.
It deals with stream handling and message parsing only.
It parses a message into headers and body but it does not parse the actual headers or the body...

[https://nodejs.org/docs/v6.3.1/api/http.html#http_http]

name::
* McsEngl.http--Node.js-core-object-module,
* McsEngl.lagJsnd'http-core-object-module,
* McsEngl.lagJsnd'http-core-object-module,
* McsEngl.Jsndmc.http,
* McsEngl.lagJsnd'moHttp,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* Object.prototype, (moHttp.__proto__ === Object.prototype //true)

moHttp'member

moHttp'Member::
// Jsnd.6-2-2
// Object.getOwnPropertyNames(moHttp).sort()
[ 'Agent', 'Client', 'ClientRequest', 'IncomingMessage', 'METHODS', 'OutgoingMessage', 'STATUS_CODES', 'Server', 'ServerResponse', '_connectionListener', 'createClient', 'createServer', 'get', 'globalAgent', 'request' ]

moHttp.Agent-function

description::
Agent:
{ [Function: Agent]
super_:
{ [Function: EventEmitter]
EventEmitter: [Circular],
usingDomains: true,
defaultMaxListeners: [Getter/Setter],
init: [Function],
listenerCount: [Function] },
defaultMaxSockets: Infinity },

moHttp.Client Function: deprecated

description::
Client: [Function: deprecated],

moHttp.ClientRequest-function

description::
ClientRequest: { [Function: ClientRequest] super_: { [Function: OutgoingMessage] super_: [Object] } },

moHttp.IncomingMessage-function

description::
IncomingMessage:
{ [Function: IncomingMessage]
super_:
{ [Function: Readable]
ReadableState: [Function: ReadableState],
super_: [Object],
_fromList: [Function: fromList] } },

moHttp.METHODS-array

description::
METHODS:
[ 'ACL', 'BIND', 'CHECKOUT', 'CONNECT', 'COPY', 'DELETE', 'GET', 'HEAD', 'LINK', 'LOCK', 'M-SEARCH', 'MERGE', 'MKACTIVITY', 'MKCALENDAR', 'MKCOL', 'MOVE', 'NOTIFY', 'OPTIONS', 'PATCH', 'POST', 'PROPFIND', 'PROPPATCH', 'PURGE', 'PUT', 'REBIND', 'REPORT', 'SEARCH', 'SUBSCRIBE', 'TRACE', 'UNBIND', 'UNLINK', 'UNLOCK', 'UNSUBSCRIBE' ],

moHttp.OutgoingMessage-function

description::
OutgoingMessage:
{ [Function: OutgoingMessage]
super_:
{ [Function: Stream]
super_: [Object],
Readable: [Object],
Writable: [Object],
Duplex: [Object],
Transform: [Object],
PassThrough: [Object],
Stream: [Circular] } },

moHttp.STATUS_CODES-object

description::
STATUS_CODES:
{ '100': 'Continue',
'101': 'Switching Protocols',
'102': 'Processing',
'200': 'OK',
'201': 'Created',
'202': 'Accepted',
'203': 'Non-Authoritative Information',
'204': 'No Content',
'205': 'Reset Content',
'206': 'Partial Content',
'207': 'Multi-Status',
'208': 'Already Reported',
'226': 'IM Used',
'300': 'Multiple Choices',
'301': 'Moved Permanently',
'302': 'Found',
'303': 'See Other',
'304': 'Not Modified',
'305': 'Use Proxy',
'307': 'Temporary Redirect',
'308': 'Permanent Redirect',
'400': 'Bad Request',
'401': 'Unauthorized',
'402': 'Payment Required',
'403': 'Forbidden',
'404': 'Not Found',
'405': 'Method Not Allowed',
'406': 'Not Acceptable',
'407': 'Proxy Authentication Required',
'408': 'Request Timeout',
'409': 'Conflict',
'410': 'Gone',
'411': 'Length Required',
'412': 'Precondition Failed',
'413': 'Payload Too Large',
'414': 'URI Too Long',
'415': 'Unsupported Media Type',
'416': 'Range Not Satisfiable',
'417': 'Expectation Failed',
'418': 'I\'m a teapot',
'421': 'Misdirected Request',
'422': 'Unprocessable Entity',
'423': 'Locked',
'424': 'Failed Dependency',
'425': 'Unordered Collection',
'426': 'Upgrade Required',
'428': 'Precondition Required',
'429': 'Too Many Requests',
'431': 'Request Header Fields Too Large',
'451': 'Unavailable For Legal Reasons',
'500': 'Internal Server Error',
'501': 'Not Implemented',
'502': 'Bad Gateway',
'503': 'Service Unavailable',
'504': 'Gateway Timeout',
'505': 'HTTP Version Not Supported',
'506': 'Variant Also Negotiates',
'507': 'Insufficient Storage',
'508': 'Loop Detected',
'509': 'Bandwidth Limit Exceeded',
'510': 'Not Extended',
'511': 'Network Authentication Required' },

moHttp.Server-function

description::
Server: { [Function: Server] super_: { [Function: Server] super_: [Object] } },

moHttp.ServerResponse-function

description::
ServerResponse: { [Function: ServerResponse] super_: { [Function: OutgoingMessage] super_: [Object] } },

moHttp._connectionListener-function

description::
_connectionListener: [Function: connectionListener],

moHttp.createClient Function: deprecated

description::
createClient: [Function: deprecated]

moHttp.createServer-function

description::
createServer: [Function],

moHttp.get-function

description::
get: [Function],

moHttp.globalAgent-object

description::
globalAgent:
Agent {
domain:
Domain {
domain: null,
_events: [Object],
_eventsCount: 1,
_maxListeners: undefined,
members: [] },
_events: { free: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
defaultPort: 80,
protocol: 'http:',
options: { path: null },
requests: {},
sockets: {},
freeSockets: {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256 },

moHttp.request-function

description::
request: [Function],

Jsndmc.core.https-object (core 2.stable)

description::
HTTPS is the HTTP protocol over TLS/SSL.
In Node.js this is implemented as a separate module.

[https://nodejs.org/docs/v6.3.1/api/https.html#https_https]

name::
* McsEngl.https--Node.js-core-object-module,
* McsEngl.lagJsnd'https-core-object-module,
* McsEngl.lagJsnd'moHttps,
* McsEngl.Jsndmc.https,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* Object.prototype, (moHttps.__proto__ === Object.prototype //true)

moHttps'Member::
// Jsnd.6-2-2
// Object.getOwnPropertyNames(moHttps).sort()
[ 'Agent',
'Server',
'createServer',
'get',
'globalAgent',
'request' ]
===
// moHttps
{ Server: { [Function: Server] super_: { [Function: Server] super_: [Object] } },
createServer: [Function],
globalAgent:
Agent {
domain:
Domain {
domain: null,
_events: [Object],
_eventsCount: 1,
_maxListeners: undefined,
members: [] },
_events: { free: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
defaultPort: 443,
protocol: 'https:',
options: { path: null },
requests: {},
sockets: {},
freeSockets: {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
maxCachedSessions: 100,
_sessionCache: { map: {}, list: [] } },
Agent:
{ [Function: Agent]
super_: { [Function: Agent] super_: [Object], defaultMaxSockets: Infinity } },
request: [Function],
get: [Function] }

Jsndmc.core.net-object (core 2.stable)

description::
The net module provides you with an asynchronous network wrapper.
It contains functions for creating both servers and clients (called streams).
You can include this module with require('net');.

[https://nodejs.org/docs/v6.3.1/api/net.html#net_net]

name::
* McsEngl.net--Node.js-core-object-module,
* McsEngl.lagJsnd'net-core-object-module,
* McsEngl.lagJsnd'net-core-object-module,
* McsEngl.Jsndmc.net,
* McsEngl.lagJsnd'moNet,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* Object.prototype, (moNet.__proto__ === Object.prototype //true)

lagJsndnet'Member::
// Jsnd.6-2-2
// Object.getOwnPropertyNames(moNet).sort()
[ 'Server', 'Socket', 'Stream', '_createServerHandle', '_normalizeConnectArgs', '_setSimultaneousAccepts', 'connect', 'createConnection', 'createServer', 'isIP', 'isIPv4', 'isIPv6' ]
===
// moNet
{ createServer: [Function],
createConnection: [Function],
connect: [Function],
_normalizeConnectArgs: [Function: normalizeConnectArgs],
Socket: { [Function: Socket] super_: { [Function: Duplex] super_: [Object] } },
Stream: { [Function: Socket] super_: { [Function: Duplex] super_: [Object] } },
Server:
{ [Function: Server]
super_:
{ [Function: EventEmitter]
EventEmitter: [Circular],
usingDomains: true,
defaultMaxListeners: [Getter/Setter],
init: [Function],
listenerCount: [Function] } },
_createServerHandle: [Function: createServerHandle],
isIP: [Function: isIP],
isIPv4: [Function],
isIPv6: [Function],
_setSimultaneousAccepts: [Function] }

Jsndmc.core.os-object (core 2.stable)

description::
The os module provides a number of operating system-related utility methods.
It can be accessed using:
const os = require('os');

[https://nodejs.org/docs/v6.3.1/api/os.html#os_os]

name::
* McsEngl.os--Node.js-core-object-module,
* McsEngl.lagJsnd'os-core-object-module,
* McsEngl.lagJsnd'os-core-object-module,
* McsEngl.Jsndmc.os,
* McsEngl.lagJsnd'moOs,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* Object.prototype, (moOs.__proto__ === Object.prototype //true)

lagJsndos'Member::
// Jsnd.6-2-2
// Object.getOwnPropertyNames(moOs).sort()
[ 'EOL', 'arch', 'cpus', 'endianness', 'freemem', 'getNetworkInterfaces', 'homedir', 'hostname', 'loadavg', 'networkInterfaces', 'platform', 'release', 'tmpDir', 'tmpdir', 'totalmem', 'type', 'uptime', 'userInfo' ]
===
// moOs
{ hostname: [Function: getHostname],
loadavg: [Function: getLoadAvg],
uptime: [Function: getUptime],
freemem: [Function: getFreeMem],
totalmem: [Function: getTotalMem],
cpus: [Function: getCPUs],
type: [Function: getOSType],
release: [Function: getOSRelease],
networkInterfaces: [Function: getInterfaceAddresses],
homedir: [Function: getHomeDirectory],
userInfo: [Function: getUserInfo],
arch: [Function],
platform: [Function],
tmpdir: [Function],
tmpDir: [Function],
getNetworkInterfaces: [Function: deprecated],
EOL: '\r\n',
endianness: [Function] }

Jsndmc.core.path-object (core 2.stable)

description::
The path module provides utilities for working with file and directory paths.
It can be accessed using:
const path = require('path');

[https://nodejs.org/docs/v6.3.1/api/path.html#path_path]

name::
* McsEngl.path--Node.js-core-object-module,
* McsEngl.lagJsnd'path-core-object-module,
* McsEngl.Jsndmc.path,
* McsEngl.lagJsnd'moPath,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* Object.prototype, (moPath.__proto__ === Object.prototype //true)

member::
// Jsnd.6-2-2
// Object.getOwnPropertyNames(moPath).sort()
[ '_makeLong', 'basename', 'delimiter', 'dirname', 'extname', 'format', 'isAbsolute', 'join', 'normalize', 'parse', 'posix', 'relative', 'resolve', 'sep', 'win32' ]

Jsndmc.core.readline-object (core 2.stable)

description::
The readline module provides an interface for reading data from a Readable stream (such as process.stdin) one line at a time.
It can be accessed using:
const readline = require('readline');
The following simple example illustrates the basic use of the readline module.
const readline = require('readline');

const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});

rl.question('What do you think of Node.js? ', (answer) => {
// TODO: Log the answer in a database
console.log('Thank you for your valuable feedback:', answer);

rl.close();
});

Note Once this code is invoked, the Node.js application will not terminate until the readline.Interface is closed because the interface waits for data to be received on the input stream.

[https://nodejs.org/docs/v6.3.1/api/readline.html#readline_readline]

name::
* McsEngl.readline--Node.js-core-object-module,
* McsEngl.lagJsnd'readline-core-object-module,
* McsEngl.Jsndmc.readline,
* McsEngl.lagJsnd'moReadline,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* Object.prototype, (moReadline.__proto__ === Object.prototype //true)

member::
// Jsnd.6-2-2
// Object.getOwnPropertyNames(moReadline).sort()
[ 'Interface', 'clearLine', 'clearScreenDown', 'codePointAt', 'createInterface', 'cursorTo', 'emitKeypressEvents', 'getStringWidth', 'isFullWidthCodePoint', 'moveCursor', 'stripVTControlCharacters' ]

Jsndmc.core.repl-object (core 2.stable) link,

Jsndmc.core.string_decoder-object (2.stable)

description::
The string_decoder module provides an API for decoding Buffer objects into strings in a manner that preserves encoded multi-byte UTF-8 and UTF-16 characters.
It can be accessed using:
const StringDecoder = require('string_decoder').StringDecoder;
The following example shows the basic use of the StringDecoder class.
const StringDecoder = require('string_decoder').StringDecoder;
const decoder = new StringDecoder('utf8');

const cent = Buffer.from([0xC2, 0xA2]);
console.log(decoder.write(cent));

const euro = Buffer.from([0xE2, 0x82, 0xAC]);

console.log(decoder.write(euro));

[https://nodejs.org/docs/v6.3.1/api/string_decoder.html#string_decoder_stringdecoder]

name::
* McsEngl.string-decoder--Node.js--core-object-module,
* McsEngl.lagJsnd'string-decoder--core-object-module,
* McsEngl.Jsndmc.string-decoder,
* McsEngl.lagJsnd'moString-decoder,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* Object.prototype, (moString_decoder.__proto__ === Object.prototype //true)

member::
// Jsnd.6-2-2
// Object.getOwnPropertyNames(moString_decoder).sort()
[ 'StringDecoder' ]

Jsndmc.core.tls-object (core 2.stable)

description::
The tls module provides an implementation of the Transport Layer Security (TLS) and Secure Socket Layer (SSL) protocols that is built on top of OpenSSL.
The module can be accessed using:
const tls = require('tls');

[https://nodejs.org/docs/v6.3.1/api/tls.html#tls_tls_ssl]

name::
* McsEngl.tls--Node.js-core-object-module,
* McsEngl.lagJsnd'tls-core-object-module,
* McsEngl.Jsndmc.tls,
* McsEngl.lagJsnd'moTls,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* Object.prototype, (moTls.__proto__ === Object.prototype //true)

member::
// Jsnd.6-2-2
// Object.getOwnPropertyNames(moTls).sort()
[ 'CLIENT_RENEG_LIMIT', 'CLIENT_RENEG_WINDOW', 'DEFAULT_CIPHERS', 'DEFAULT_ECDH_CURVE', 'SLAB_BUFFER_SIZE', 'SecureContext', 'Server', 'TLSSocket', 'checkServerIdentity', 'connect', 'convertALPNProtocols', 'convertNPNProtocols', 'createSecureContext', 'createSecurePair', 'createServer', 'getCiphers', 'parseCertString' ]

Jsndmc.core.url-object (core 2.stable)

description::
The url module provides utilities for URL resolution and parsing.
It can be accessed using:
const url = require('url');

[https://nodejs.org/docs/v6.3.1/api/url.html#url_url]

name::
* McsEngl.url--Node.js-core-object-module,
* McsEngl.lagJsnd'url-core-object-module,
* McsEngl.Jsndmc.url,
* McsEngl.lagJsnd'moUrl,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* Object.prototype, (moUrl.__proto__ === Object.prototype //true)

member::
// 7.9.0 Object.getOwnPropertyNames(moUrl).sort()).join(', '))
[URL, URLSearchParams, Url, domainToASCII, domainToUnicode, format, parse, resolve, resolveObject]
// Object.getOwnPropertyNames(moUrl.__proto__).sort()).join(', '))
[__defineGetter__, __defineSetter__, __lookupGetter__, __lookupSetter__, __proto__, constructor, hasOwnProperty, isPrototypeOf, propertyIsEnumerable, toLocaleString, toString, valueOf]
===
// Jsnd.6-2-2
// Object.getOwnPropertyNames(moUrl).sort()
[ 'Url', 'format', 'parse', 'resolve', 'resolveObject' ]

Example::
//const moUrl = require('url');
moUrl.resolve('/one/two/', 'four'); //'/one/two/four'
moUrl.resolve('/one/two/three', 'four'); //'/one/two/four'

addressWpg::
* Official-doc: https://nodejs.org/docs/latest/api/url.html,

Jsndmc.core.util-object (core 2.stable)

description::
These functions are in the module 'util'.
Use require('util') to access them.

[https://nodejs.org/api/util.html]

name::
* McsEngl.util--Node.js-core-object-module,
* McsEngl.lagJsnd'util-core-object-module,
* McsEngl.Jsndmc.util,
* McsEngl.lagJsnd'moUtil,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* Object.prototype, (moUtil.__proto__ === Object.prototype //true)

lagJsndutil'member

lagJsndutil'Member::
// Jsnd.6-2-2
// Object.getOwnPropertyNames(moUtil).sort()
[ '_errnoException', '_exceptionWithHostPort', '_extend', 'debug', 'debuglog', 'deprecate', 'error', 'format', 'inherits', 'inspect', 'isArray', 'isBoolean', 'isBuffer', 'isDate', 'isError', 'isFunction', 'isNull', 'isNullOrUndefined', 'isNumber', 'isObject', 'isPrimitive', 'isRegExp', 'isString', 'isSymbol', 'isUndefined', 'log', 'print', 'puts' ]
===
moUtil.format(format, [...])
moUtil.debug(string)
moUtil.error([...])
moUtil.puts([...])
moUtil.print([...])
moUtil.log(string)
moUtil.inspect(object, [options])
moUtil.isArray(object)
moUtil.isRegExp(object)
moUtil.isDate(object)
moUtil.isError(object)
moUtil.pump(readableStream, writableStream, [callback])
moUtil.inherits(constructor, superConstructor)

Jsndmc.core.vm-object (core 2.stable)

description::
The vm module provides APIs for compiling and running code within V8 Virtual Machine contexts.
It can be accessed using:
const vm = require('vm');
Javascript code can be compiled and run immediately or compiled, saved, and run later.

[https://nodejs.org/docs/v6.3.1/api/vm.html#vm_executing_Javascript]

name::
* McsEngl.vm--Node.js-core-object-module,
* McsEngl.lagJsnd'vm-core-object-module,
* McsEngl.Jsndmc.vm,
* McsEngl.lagJsnd'moVm,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* Object.prototype, (moVm.__proto__ === Object.prototype //true)

lagJsnd-moVm'Member::
// Jsnd.6-2-2
// Object.getOwnPropertyNames(moVm).sort()
[ 'Script', 'createContext', 'createScript', 'isContext', 'runInContext', 'runInDebugContext', 'runInNewContext', 'runInThisContext' ]

Jsndmc.core.zlib-object (core 2.stable)

description::
The zlib module provides compression functionality implemented using Gzip and Deflate/Inflate.
It can be accessed using:
const zlib = require('zlib');

[https://nodejs.org/docs/v6.3.1/api/zlib.html#zlib_zlib]

name::
* McsEngl.zlib--Node.js-core-object-module,
* McsEngl.lagJsnd'zlib-core-object-module,
* McsEngl.Jsndmc.zlib,
* McsEngl.lagJsnd'moZlib,

whole-chain::
* module-instance,
* most-whole-object (global),

generic-chain::
* Object.prototype, (moZlib.__proto__ === Object.prototype //true)

member::
// Jsnd.6-3-1
// Object.getOwnPropertyNames(moZlib).sort()
[ 'Deflate', 'Gunzip', 'Inflate', 'Unzip', 'ZLIB_VERSION', 'Z_BEST_SPEED', 'Z_BUF_ERROR', 'Z_DEFAULT_CHUNK', 'Z_DEFAULT_LEVEL', 'Z_DEFAULT_STRATEGY', 'Z_ERRNO', 'Z_FINISH', 'Z_FULL_FLUSH', 'Z_MAX_CHUNK', 'Z_MAX_MEMLEVEL', 'Z_MEM_ERROR', 'Z_MIN_LEVEL', 'Z_MIN_WINDOWBITS', 'Z_NO_COMPRESSION', 'Z_OK', 'Z_RLE', 'Z_STREAM_ERROR', 'Z_VERSION_ERROR', 'codes', 'createDeflateRaw', 'createGzip', 'createInflateRaw', 'deflate', 'deflateRawSync', 'gunzip', 'gzip', 'inflate', 'inflateRawSync', 'unzip', 'unzipSync' ]

Jsndmc.CORE.NO

description::
CoreNo-module is a-module created by the-language-creator|s.

name::
* McsEngl.lagJsnd'coreNo-module,
* McsEngl.lagJsnd'non-native-module,
* McsEngl.Jsndmc.3rd-party,
* McsEngl.Jsndmc.non-builtIn,
* McsEngl.Jsndmc.custom,
* McsEngl.Jsndmc.internalNo,
* McsEngl.Jsndmc.nativeNo,

specific::
* 3rd party modules written in Javascript
* 3rd party modules with C/C++ addons
[https://github.com/rogerwang/node-webkit/wiki/Using-Node-modules]

Jsndmc.DIRECTORY

description::
It is convenient to organize programs and libraries into self-contained directories, and then provide a single entry point to that library.
[https://nodejs.org/docs/v6.3.1/api/modules.html#modules_folders_as_modules]

name::
* McsEngl.lagJsnd'directory-module,
* McsEngl.lagJsnd'folder-module,
* McsEngl.Jsndmc.directory,
* McsEngl.Jsndmc.folder,

description::
Folders as Modules
It is convenient to organize programs and libraries into self-contained directories, and then provide a single entry point to that library. There are three ways in which a folder may be passed to require() as an argument.

The first is to create a package.json file in the root of the folder, which specifies a main module.
An example package.json file might look like this:
{ "name" : "some-library",
"main" : "./lib/some-library.js" }

If this was in a folder at ./some-library, then require('./some-library') would attempt to load ./some-library/lib/some-library.js.
This is the extent of Node's awareness of package.json files.
Note: If the file specified by the "main" entry of package.json is missing and can not be resolved, Node.js will report the entire module as missing with the default error:
Error: Cannot find module 'some-library'

If there is no package.json file present in the directory, then node will attempt to load an index.js or index.node file out of that directory.
For example, if there was no package.json file in the above example, then require('./some-library') would attempt to load:
./some-library/index.js
./some-library/index.node

[https://nodejs.org/docs/v6.3.1/api/modules.html#modules_folders_as_modules]
===
Directories as modules
You can organize your modules into directories, as long as you provide a point of entry for Node.

The easiest way to do this is to create the directory ./node_modules/mymodulename/, and put an index.js file in that directory.
The index.js file will be loaded by default.

Alternatively, you can put a package.json file in the mymodulename folder, specifying the name and main file of the module:
{
"name": "mymodulename",
"main": "./lib/foo.js"
}

This would cause the file ./node_modules/mymodulename/lib/foo.js to be returned from require('mymodulename').

Generally, you want to keep a single ./node_modules folder in the base directory of your app.
You can install new modules by adding files or directories to ./node_modules.
The best way to manage these modules is to use npm, which is covered briefly in the next section.

[http://book.mixu.net/node/single.html]

Jsndmc.FILE

name::
* McsEngl.lagJsnd'file-module,
* McsEngl.Jsndmc.file,

description::
File Modules
If the exact filename is not found, then node will attempt to load the required filename with the added extension of .js, .json, and then .node.

.js files are interpreted as Javascript text files, and .json files are parsed as JSON text files.
.node files are interpreted as compiled addon modules loaded with dlopen.

A module prefixed with '/' is an absolute path to the file.
For example, require('/home/marco/foo.js') will load the file at /home/marco/foo.js.

A module prefixed with './' is relative to the file calling require().
That is, circle.js must be in the same directory as foo.js for require('./circle') to find it.

Without a leading '/' or './' to indicate a file, the module is either a "core module" or is loaded from a node_modules folder.

If the given path does not exist, require() will throw an Error with its code property set to 'MODULE_NOT_FOUND'.

[https://nodejs.org/docs/v6.3.1/api/modules.html#modules_file_modules]

Jsndmc.MAIN

description::
Main-module is a-module from which STARTS a-program or a-library.

name::
* McsEngl.lagJsnd'entry-point-module,
* McsEngl.lagJsnd'main-module,
* McsEngl.Jsndmc.main,

Accessing the-main-module:
(link)

Jsndmc.MAIN.NO

description::
Dependent-module is any module importing in another.

name::
* McsEngl.lagJsnd'dependent-module,
* McsEngl.lagJsnd'mainNo-module,
* McsEngl.Jsndmc.mainNo,

algo'API

name::
* McsEngl.API.Jsnd!⇒JsndAPI,
* McsEngl.API.Node.js!⇒JsndAPI,
* McsEngl.lagJsnd'API!⇒JsndAPI,
* McsEngl.lagJsnd-API!⇒JsndAPI,
* McsEngl.JsndAPI,

addressWpg::
* https://nodejs.org/api/,

generic::
* Jsgn-native-api,

JsndAPI'most-whole-object (global)

description::
global is the most whole object in JsndAPI's-whole-part-tree.
In Jsbr the most whole object is the-window.
The-members of the-global-object are-called also 'globals'.
[HmnSgm.2016-07-04]

name::
* McsEngl.JsndAPI'global-object!⇒Jsndmwo,
* McsEngl.Jsndmwo,
* McsEngl.lagJsnd'global-namespace!⇒Jsndmwo,
* McsEngl.lagJsnd'global-object!⇒Jsndmwo,
* McsEngl.lagJsnd'global-scope!⇒Jsndmwo,
* McsEngl.lagJsnd'global!⇒Jsndmwo,
* McsEngl.lagJsnd'most-whole-object!⇒Jsndmwo,
* McsEngl.lagJsnd'Mwo!⇒Jsndmwo, {2016.07.22}
* McsEngl.lagJsnd'Mwo'(most-whole-object)!⇒Jsndmwo,
* McsEngl.lagJsnd'object.global!⇒Jsndmwo,
* McsEngl.lagJsnd'gbl!⇒Jsndmwo, {2016.07.01}
* McsEngl.lagJsnd'global!⇒Jsndmwo,
* McsEngl.lagJsnd'global-scope!⇒Jsndmwo,
* McsEngl.lagJsnd'global-namespace!⇒Jsndmwo,
* McsEngl.lagJsnd'most-whole-object!⇒Jsndmwo,
* McsEngl.lagJsnd'object.global!⇒Jsndmwo,
* McsEngl.lagJsnd'the-global-object!⇒Jsndmwo,
* McsEngl.most-whole-object--of-Node.js!⇒Jsndmwo,
* McsEngl.mwo//lagJsnd!⇒Jsndmwo,
===
DeprecationWarning: 'GLOBAL' is deprecated, use 'global'

description::
Node module has a number of variables which are available by default.
These are documented in the API docs: globals and process.

[http://book.mixu.net/node/single.html]
===
The global object is determined by the execution environment.
It is the window object in a web browser and the process object in a NodeJS script.

[http://rainsoft.io/gentle-explanation-of-this-in-Javascript/]
===
global
{Object} The global namespace object.
In browsers, the top-level scope is the global scope.
That means that in browsers if you're in the global scope var something will define a global variable.
In Node this is different.
The top-level scope is not the global scope; var something inside a Node module will be local to that module.

[https://nodejs.org/docs/v6.3.1/api/globals.html#globals_global]
===
the global object, which is "DomWindow" in the browser and "global" in Node.
[http://book.mixu.net/node/single.html]
===
Unlike the browser, Node does not have a window global object, but instead has two others: globals and process.
[https://www.airpair.com/Javascript/node-js-tutorial#3-1-modules]

whole-chain::
* nothing,

generic-chain::
* global.__proto__ (?)
* Object.prototype (> global.__proto__.__proto__ === Object.prototype //true)
===
The-global is a-specific of Object.prototype.

JsndAPI'global-member

description::
The-members of the-most-whole-object (global) are-called >>>ALSO<<< 'globals'.
[HmnSgm.2016-07-02]
'the-global' = the-most-whole-object.
'a-global' = a-member of the-global.
[HmnSgm.2017-01-07]
===
These objects are available in all modules.
Some of these objects aren't actually in the global scope but in the module scope - this will be noted.

[https://nodejs.org/api/globals.html]
===
Node module has a number of variables which are available by default.
These are documented in the API docs: globals and process.

[http://book.mixu.net/node/single.html]
===
Node is a Javascript environment running in Google's V8 Javascript engine.
As such, we should follow the best practices that we use for client-side development.
For example, we should avoid putting anything into the global scope.
That, however, is not always possible.
The global scope in Node is GLOBAL (as opposed to window in the browser), and you can easily create a global variable of function by omitting the var keyword, like this:
globalVariable = 1;
globalFunction = function () { ... };
Once again, globals should be avoided whenever possible.
So be careful and remember to use var when declaring a variable.

[http://net.tutsplus.com/tutorials/Javascript-ajax/node-js-for-beginners/]

name::
* McsEngl.Jsndglobal,
* McsEngl.lagJsnd'a-global-object!⇒Jsndglobal,
* McsEngl.lagJsnd'global-member!⇒Jsndglobal,
* McsEngl.lagJsnd'global-objects!⇒Jsndglobal,
* McsEngl.lagJsnd'globals!⇒Jsndglobal,

SPECIFIC:
// Jsnd.14-16-1
> Object.getOwnPropertyNames(global).sort().join(', ')
'Array, ArrayBuffer, Atomics, BigInt, BigInt64Array, BigUint64Array, Boolean, Buffer, DataView, Date, Error, EvalError, FinalizationRegistry, Float32Array, Float64Array, Function, Infinity, Int16Array, Int32Array, Int8Array, Intl, JSON, Map, Math, NaN, Number, Object, Promise, Proxy, RangeError, ReferenceError, Reflect, RegExp, Set, SharedArrayBuffer, String, Symbol, SyntaxError, TextDecoder, TextEncoder, TypeError, URIError, URL, URLSearchParams, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray, WeakMap, WeakRef, WeakSet, WebAssembly, _, _error, assert, async_hooks, buffer, child_process, clearImmediate, clearInterval, clearTimeout, cluster, console, constants, crypto, decodeURI, decodeURIComponent, dgram, dns, domain, encodeURI, encodeURIComponent, escape, eval, events, fs, global, globalThis, http, http2, https, inspector, isFinite, isNaN, module, net, os, parseFloat, parseInt, path, perf_hooks, process, punycode, querystring, queueMicrotask, readline, repl, require, setImmediate, setInterval, setTimeout, stream, string_decoder, sys, timers, tls, trace_events, tty, undefined, unescape, url, util, v8, vm, wasi, worker_threads, zlib'
// Jsnd.6-3-1
> Object.getOwnPropertyNames(global).sort()
[ 'Array', 'ArrayBuffer', 'Boolean', 'Buffer', 'COUNTER_HTTP_CLIENT_REQUEST', 'COUNTER_HTTP_CLIENT_RESPONSE', 'COUNTER_HTTP_SERVER_REQUEST', 'COUNTER_HTTP_SERVER_RESPONSE', 'COUNTER_NET_SERVER_CONNECTION', 'COUNTER_NET_SERVER_CONNECTION_CLOSE', 'DTRACE_HTTP_CLIENT_REQUEST', 'DTRACE_HTTP_CLIENT_RESPONSE', 'DTRACE_HTTP_SERVER_REQUEST', 'DTRACE_HTTP_SERVER_RESPONSE', 'DTRACE_NET_SERVER_CONNECTION', 'DTRACE_NET_STREAM_END', 'DataView', 'Date', 'Error', 'EvalError', 'Float32Array', 'Float64Array', 'Function', 'GLOBAL', 'Infinity', 'Int16Array', 'Int32Array', 'Int8Array', 'Intl', 'JSON', 'Map', 'Math', 'NaN', 'Number', 'Object', 'Promise', 'Proxy', 'RangeError', 'ReferenceError', 'Reflect', 'RegExp', 'Set', 'String', 'Symbol', 'SyntaxError', 'TypeError', 'URIError', 'Uint16Array', 'Uint32Array', 'Uint8Array', 'Uint8ClampedArray', 'WeakMap', 'WeakSet', 'clearImmediate', 'clearInterval', 'clearTimeout', 'console', 'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'escape', 'eval', 'global', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'process', 'root', 'setImmediate', 'setInterval', 'setTimeout', 'undefined', 'unescape' ]

JsndAPI'WHOLE-PART-TREE--STRUCTURE

description::
The-builtin-semantic-units have many relations.
The-whole-part-relations create a-whole-part-tree with 'global' the-most-whole-node.
[HmnSgm.2016-07-02]

name::
* McsEngl.JsndAPI'whole-part-tree,
* McsEngl.lagJsnd'whole-part-tree,
* McsEngl.lagJsnd'wpt-of-apiNtv-(whole-part-tree),

Whole-part-tree:

  • global (ROOT of lagJsnd whole-part-tree)
    • Array,
    • ArrayBuffer,
    • Boolean,
    • Buffer,
    • COUNTER_HTTP_CLIENT_REQUEST,
    • COUNTER_HTTP_CLIENT_RESPONSE,
    • COUNTER_HTTP_SERVER_REQUEST,
    • COUNTER_HTTP_SERVER_RESPONSE,
    • COUNTER_NET_SERVER_CONNECTION,
    • COUNTER_NET_SERVER_CONNECTION_CLOSE,
    • DTRACE_HTTP_CLIENT_REQUEST,
    • DTRACE_HTTP_CLIENT_RESPONSE,
    • DTRACE_HTTP_SERVER_REQUEST,
    • DTRACE_HTTP_SERVER_RESPONSE,
    • DTRACE_NET_SERVER_CONNECTION,
    • DTRACE_NET_STREAM_END,
    • DataView,
    • Date,
    • Error,
    • EvalError,
    • Float32Array,
    • Float64Array,
    • Function,
    • Infinity,
    • Int16Array,
    • Int32Array,
    • Int8Array,
    • Intl,
    • JSON,
    • Map,
    • Math,
    • NaN,
    • Number,
    • Object,
    • Promise,
    • Proxy,
    • RangeError,
    • ReferenceError,
    • Reflect,
    • RegExp,
    • Set,
    • String,
    • Symbol,
    • SyntaxError,
    • TypeError,
    • URIError,
    • Uint16Array,
    • Uint32Array,
    • Uint8Array,
    • Uint8ClampedArray,
    • WeakMap,
    • WeakSet,
    • clearImmediate,
    • clearInterval,
    • clearTimeout,
    • console,
    • decodeURI,
    • decodeURIComponent,
    • encodeURI,
    • encodeURIComponent,
    • escape,
    • eval,
    • global,
    • isFinite,
    • isNaN,
    • parseFloat,
    • parseInt,
    • process,
    • root,
    • setImmediate,
    • setInterval,
    • setTimeout,
    • undefined,
    • unescape,
    • MAIN-MODULE,

JsndAPI'most-generic-object (Object.prototype)

name::
* McsEngl.JsndAPI'most-generic-object!⇒Jsndmgo,
* McsEngl.JsndAPI'Mgo!⇒Jsndmgo,
* McsEngl.JsndAPI'Object.prototype!⇒Jsndmgo,
* McsEngl.Jsndmgo,
* McsEngl.lagJsnd'most-generic-object!⇒Jsndmgo,
* McsEngl.lagJsnd'Mgo!⇒Jsndmgo,
* McsEngl.lagJsnd'Mgo'(most-generic-object)!⇒Jsndmgo,
* McsEngl.lagJsnd'Object.prototype!⇒Jsndmgo,
* McsEngl.lagJsnd-Mgo!⇒Jsndmgo,
* McsEngl.most-generic-object--of-Node.js!⇒Jsndmgo,

generic::
* Javascript--most-generic-object,

JsndAPI'GENERIC-SPECIFIC-TREE--STRUCTURE

description::
The native API[1] of lagJsnd is-structured AND in a-generic-specific-tree because of the-inheritance (generic-specific) relations of its[1] members.
Object.prototype is the most generic object, like the-ljb-generic-specific-tree.

name::
* McsEngl.Jsndmgo'generic-specific-tree,
* McsEngl.lagJsnd'generic-specific-tree,
* McsEngl.lagJsnd'native-generic-specific-tree,
* McsEngl.JsndAPI'generic-specific-tree,
* McsEngl.lagJsnd'inheritance-tree,

lagJsnd'Generic-specific-tree of lagJsnd native-API:

JsndAPI'ArrayBuffer-function

name::
* McsEngl.ArrayBuffer.Javascript,
* McsEngl.Jsbr'ArrayBuffer,
* McsEngl.lagJsnd'ArrayBuffer,

whole-chain::
* global,

generic-chain::
* Function.prototype (> Object.getPrototypeOf(ArrayBuffer) === Function.prototype //true)
* Object.prototype,

lagJsndArrayBuffer'Member::
// Jsnd.6-2-2
> Object.getOwnPropertyNames(ArrayBuffer).sort()
[ 'arguments', 'caller', 'isView', 'length', 'name', 'prototype' ]
> Object.getOwnPropertyNames(ArrayBuffer.prototype).sort()
[ 'byteLength', 'constructor', 'slice' ]
> Object.getOwnPropertyNames(ArrayBuffer.prototype.__proto__).sort()
[ '__defineGetter__',
'__defineSetter__',
'__lookupGetter__',
'__lookupSetter__',
'__proto__',
'constructor',
'hasOwnProperty',
'isPrototypeOf',
'propertyIsEnumerable',
'toLocaleString',
'toString',
'valueOf' ]

lagJsndArrayBuffer.prototype'Member::
// Jsnd.6-2-2
> Object.getOwnPropertyNames(ArrayBuffer.prototype).sort()
[ 'byteLength', 'constructor', 'slice' ]

JsndAPI'Buffer-function (2.stable)

name::
* McsEngl.lagJsnd'Buffer-function,
* McsEngl.lagJsnd'Buffer-class,

description::
The Buffer class is a global type for dealing with binary data directly.
It can be constructed in a variety of ways

[https://nodejs.org/api/buffer.html#buffer_class_buffer]
===
Pure Javascript is Unicode friendly but not nice to binary data.
When dealing with TCP streams or the file system, it's necessary to handle octet streams.
Node has several strategies for manipulating, creating, and consuming octet streams.
Raw data is stored in instances of the Buffer class.
A Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap.
A Buffer cannot be resized.
The Buffer class is a global, making it very rare that one would need to ever require('buffer').
Converting between Buffers and Javascript string objects requires an explicit encoding method.

[https://nodejs.org/api/buffer.html]

JsndAPI'console-object

description::
Node provides a global 'console' object to which you can output strings using:
console.log('Hello');

[http://nodetuts.com/pdf/handson-nodejs-sample.pdf]
===
The console module provides a simple debugging console that is similar to the Javascript console mechanism provided by web browsers.

The module exports two specific components:

A Console class with methods such as console.log(), console.error() and console.warn() that can be used to write to any Node.js stream.
A global console instance configured to write to stdout and stderr.
Because this object is global, it can be used without calling require('console').

[https://nodejs.org/docs/v6.3.1/api/console.html#console_console]

name::
* McsEngl.lagJsnd'console-object,

Whole.chain:
* lagJsnd-most-whole-object (global),

generic-chain::
* Console.prototype, (> console.__proto__ === console.Console.prototype)
* Object.prototype, (> console.__proto__.__proto__ === Object.prototype //true)

JsndAPI'module-object (link)

JsndAPI'process-object

description::
The process object is a global object and can be accessed from anywhere.
It is an instance of EventEmitter.

[https://nodejs.org/docs/v6.0.0/api/process.html#process_process]

name::
* McsEngl.lagJsnd'process-object,
* McsEngl.Jsndmc.process,
* McsEngl.lagJsnd'global.process,
* McsEngl.lagJsnd'process,

whole-chain::
* global,

generic-chain::
* (process.__proto__)
* events.EventEmitter.prototype (> process.__proto__.__proto__ === events.EventEmitter.prototype //true)
* Object.prototype (> process.__proto__.__proto__.__proto__ === Object.prototype //true)

API:
* Jsnd.last: https://nodejs.org/api/process.html,

addressWpg::
* {time.2016.03.14} Nodejs: stdin / stdout basics: http://www.patmedersen.com/,

lagJsnd-process'member

member::
//{Jsnd.6-2-2}
> Object.getOwnPropertyNames(process).sort()
[ 'EventEmitter', '_debugEnd', '_debugPause', '_debugProcess', '_events', '_eventsCount', '_exiting', '_fatalException', '_getActiveHandles', '_getActiveRequests', '_kill', '_linkedBinding', '_maxListeners', '_needImmediateCallback', '_promiseRejectEvent', '_rawDebug', '_startProfilerIdleNotifier', '_stopProfilerIdleNotifier', '_tickCallback', '_tickDomainCallback', 'abort', 'arch', 'argv', 'assert', 'binding', 'chdir', 'config', 'cpuUsage', 'cwd', 'debugPort', 'dlopen', 'domain', 'emitWarning', 'env', 'execArgv', 'execPath', 'exit', 'features', 'hrtime', 'kill', 'memoryUsage', 'moduleLoadList', 'nextTick', 'openStdin', 'pid', 'platform', 'reallyExit', 'release', 'stderr', 'stdin', 'stdout', 'title', 'umask', 'uptime', 'version', 'versions' ]
===
> Object.getOwnPropertyNames(process.__proto__)
[ 'constructor' ]
> Object.getOwnPropertyNames(process.__proto__.__proto__)
[ 'constructor', 'domain', '_events', '_maxListeners', 'setMaxListeners', 'getMaxListeners', 'emit', 'addListener', 'on', 'prependListener', 'once', 'prependOnceListener', 'removeListener', 'removeAllListeners', 'listeners', 'listenerCount', 'eventNames' ]
> Object.getOwnPropertyNames(process.__proto__.__proto__.__proto__)
[ 'constructor', 'toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', '__defineGetter__', '__lookupGetter__', '__defineSetter__', '__lookupSetter__', '__proto__' ]

lagJsnd-process'argv-array

description::
An array containing the command line arguments.
The first element will be 'node', the second element will be the name of the Javascript file.
The next elements will be any additional command line arguments.

// print process.argv
process.argv.forEach(function(val, index, array) {
console.log(index + ': ' + val);
});


This will generate:
$ node process-2.js one two=three four
0: node
1: /Users/mjr/work/node/process-2.js
2: one
3: two=three
4: four

[http://nodejs.org/api/process.html#process_process_argv]

name::
* McsEngl.command-line-arguments-of-Node.js-program,
* McsEngl.Jsndpgm'command-line-arguments,
* McsEngl.Jsndpgm'arguments,
* McsEngl.lagJsnd'process.argv,
* McsEngl.lagJsnd'process.argv-array,
* McsEngl.lagJsnd'process.argv,
* McsEngl.lagJsnd'process.argv-array,
* McsEngl.process.argv,

lagJsnd-process'versions-object

> process.versions
{ http_parser: '2.7.0',
node: '6.2.2',
v8: '5.0.71.52',
uv: '1.9.1',
zlib: '1.2.8',
ares: '1.10.1-DEV',
icu: '57.1',
modules: '48',
openssl: '1.0.2h' }

JsndAPI'require function

JsndAPI'CORE-MODULES link

JsndAPI'TIMER-FUNCTIONS

description::
All of the timer functions are globals.
You do not need to require() this module in order to use them.

[https://nodejs.org/docs/v6.3.1/api/timers.html#timers_timers]

name::
* McsEngl.lagJsnd'timer-functions,
* McsEngl.lagJsnd'timers,
* McsEngl.lagJsnd'timer-functions,
* McsEngl.lagJsnd'timers,

JsndAPI.NATIVE

generic::
* Jsgn-native-api,

name::
* McsEngl.JsndAPI.native,
* McsEngl.lagJsnd'native-API,

addressWpg::
* https://nodejs.org/api/,

algo'PHRASE

generic::
* Jsgn-phrase,

name::
* McsEngl.lagJsnd'frs,
* McsEngl.lagJsnd'phrase,
* McsEngl.lagJsnd-phrase,

algo'SENTENCE

generic::
* Jsgn-sentence,

name::
* McsEngl.lagJsnd'sentence,
* McsEngl.lagJsnd'stc,
* McsEngl.lagJsnd-sentence,
* McsEngl.lagJsnd'stc,

lagJsndstc.debugger

algo'ROOT-TREE

generic::
* Jsgn-root-tree,

name::
* McsEngl.lagJsnd'algo-root-tree,
* McsEngl.lagJsnd'algo-root-tree,
* McsEngl.lagJsnd'algo-root,

description::
The-root-tree is the-main-module.

Jsndalgo.SPECIFIC

name::
* McsEngl.lagJsnd-code-doc.specific,

specific::
Node.js is an extremely powerful and flexible technology that can solve a wide variety of problems.
I want everyone to remember that Node.js is only bound by your imagination.
The core libraries are very carefully designed to provide the puzzle pieces needed to build any picture.
Combine those with the modules available in npm and it's amazing how quickly you can begin building very complex and compelling applications.

[http://blog.modulus.io/absolute-beginners-guide-to-nodejs]

Jsndalgo.COMMAND-LINE-INTERFACE

name::
* McsEngl.Jsndalgo.command-line-interface,
* McsEngl.Node.js-algo.command-line-interface,

addressWpg::
* {time.2017-08-10} Build An Interactive Command-Line Application with Node.js: https://scotch.io/,
* {time.2011-05-08} How To Read User Input With NodeJS: http://st-on-it.blogspot.gr/,
===
* https://github.com/anseki/readline-sync,
* https://github.com/SBoudrias/Inquirer.js,
* http://vorpal.js.org/,

Jsndalgo.ASYNCHRONOUS-SYNCHRONOUS

name::
* McsEngl.Jsndalgo.asynchronous-synchronous,
* McsEngl.Jsndalgo.synchronous-asynchronous,
* McsEngl.asynchronous-programing//lagJsnd,
* McsEngl.lagJsnd'asynchronous,
* McsEngl.synchronous-programing//lagJsnd,

addressWpg::
* {2021-07-05} https://sebhastian.com/javascript-wait-for-function-to-finish/,
* {2017-07-05} https://blog.risingstack.com/mastering-async-await-in-nodejs/,
* {2016-04-05} Node Hero - Understanding Async Programming in Node.js: https://blog.risingstack.com/,

Jsndalgo.AUTHENTICATION

name::
* McsEngl.lagJsnd'authentication,
* McsEngl.Jsndalgo.authentication,

addressWpg::
* http://passportjs.org/
* http://www.sitepoint.com/http-authentication-in-node-js/

Jsndalgo.CALLING-OTHER-LANGUAGE-CODE

name::
* McsEngl.lagJsnd'call-other-language-code,
* McsEngl.Jsndalgo.call-other-language-code,

addressWpg::
* {2017-09-03} https://medium.com/@tarkus/how-to-call-c-c-code-from-node-js-86a773033892,

Jsndalgo.FILE-SYSTEM-MANAGING

description::
The file system functions consist of file I/O and directory I/O functions.
All of the file system functions offer both synchronous (blocking) and asynchronous (non-blocking) versions.
The difference between these two is that the synchronous functions (which have “Sync” in their name) return the value directly and prevent Node from executing any code while the I/O operation is being performed

[http://book.mixu.net/node/single.html]

name::
* McsEngl.lagJsnd'file-system-processing,
* McsEngl.lagJsnd'processing.FILE-SYSTEM,
* McsEngl.Jsndalgo.file-system--managing,
* McsEngl.Jsndalgo.fs,

addressWpg::
* draxt is a utility module for selecting and manipulating filesystem objects in Node.js, https://github.com/ramhejazi/draxt,
* http://www.sitepoint.com/accessing-the-file-system-in-node-js/
* https://www.npmjs.org/package/delivery,

module::
* fs-module,
* path-module,

Jsndalgo.FILE-READING

description::
The file system functions consist of file I/O and directory I/O functions.
All of the file system functions offer both synchronous (blocking) and asynchronous (non-blocking) versions.
The difference between these two is that the synchronous functions (which have “Sync” in their name) return the value directly and prevent Node from executing any code while the I/O operation is being performed:
var fs = require('fs');
var data = fs.readFileSync('./index.html', 'utf8');
// wait for the result, then use it
console.log(data);


Asynchronous functions return the value as a parameter to a callback given to them:
var fs = require('fs');
fs.readFile('./index.html', 'utf8', function(err, data) {
// the data is passed to the callback in the second argument
console.log(data);
});

...
You should use the asynchronous version in most cases, but in rare cases (e.g. reading configuration files when starting a server) the synchronous version is more appropriate.
Note that the asynchronous versions require a bit more thought, since the operations are started immediately and may finish in any order:
fs.readFile('./file.html', function (err, data) {
// ...
});
fs.readFile('./other.html', function (err, data) {
// ..
});

These file reads might complete in any order depending on how long it takes to read each file.
The simplest solution is to chain the callbacks:
fs.readFile('./file.html', function (err, data) {
// ...
fs.readFile('./other.html', function (err, data) {
// ...
});
});

[http://book.mixu.net/node/single.html]

name::
* McsEngl.Jsndalgo.file-reading,

Code.Jsnd:
//READ text file into an-array per line
var
 moFs = require('fs'),
 aOut;
aOut = moFs.readFileSync(sFileIn).toString().split('\n')

[hmnSngo.2017-06-04]

Code.Jsnd:
//READ json-file
var
 moFs = require('fs'),
 oOut;
oOut = JSON.parse(moFs.readFileSync(sFilIn))

[hmnSngo.2017-06-04]

Jsndalgo.FILE-SERVER

name::
* McsEngl.Jsndalgo.file-server,

addressWpg::
* http://www.hongkiat.com/blog/node-js-server-side-Javascript/,

Jsndalgo.FILE-UPLOAD

name::
* McsEngl.Jsndalgo.file-upload,

addressWpg::
* http://www.componentix.com/blog/13/file-uploads-using-nodejs-once-again,

Jsndalgo.FILE-WRITING

name::
* McsEngl.Jsndalgo.file-writing,

Code.Jsnd:
var fs = require('fs');

var myData = {
 name:'test',
 version:'1.0'
}

var outputFilename = '/tmp/my.json';

fs.writeFile(outputFilename, JSON.stringify(myData, null, 4), function(err) {
 if(err) {
   console.log(err);
 } else {
   console.log("JSON saved to ");
 }
});

[http://stackoverflow.com/questions/5670752/write-pretty-json-to-file-using-node-js]

Code.Jsnd:
//Write text to file line by line
var
 moFs = require('fs'),
 oWs = moFs.createWriteStream('file.json');
oWs.write('text1\n');
oWs.write('text2\n');
oWs.end();

[hmnSngo.2017-06-03]

Jsndalgo.FILE-WATCHING

description::
* github.com/paulmillr/chokidar,

name::
* McsEngl.Jsndalgo.file-watching,
* McsEngl.file-watching.Jsndalgo,

Jsndalgo.HTML-MANIPULATION

name::
* McsEngl.lagJsnd'HML-manipulation,
* McsEngl.lagJsnd'HML-processing,
* McsEngl.lagJsnd'HTML-manipulation,
* McsEngl.lagJsnd'HTML-processing,
* McsEngl.Jsndalgo.HTML-managing,
* McsEngl.lagJsnd'code.processing.HTML,

addressWpg::
* https://github.com/Marak/html: jstohtml,

specific::
* JSON-to-hml,
* Markdown-to-hml,

Html-to-JSON

description::
* https://www.npmjs.com/package/himalaya,

name::
* McsEngl.Jsndalgo.Html-to-Json,
* McsEngl.lagJsnd'Html-to-Json,

JSON-to-html

name::
* McsEngl.lagJsnd'JSON-to-hml,

addressWpg::
* https://github.com/frozzare/json-to-html,

Markdown-to-html

name::
* McsEngl.lagJsnd'markdown-to-hml,

addressWpg::
* https://github.com/vanetix/artificer,

Jsndalgo.IO

description::
Non-blocking I/O - every I/O call must take a callback, whether it is to retrieve information from disk, network or another process.
...
The premise of Node is that I/O is the main bottleneck of many (if not most) tasks.
A single I/O operation can take millions of CPU cycles, and in traditional, non-event-loop-based frameworks the execution is blocked for that time.
In Node, I/O operations such as reading a file are performed asynchronously.

[http://book.mixu.net/node/single.html]

name::
* McsEngl.Jsndalgo.io,

Jsndalgo.JSON-MANIPULATION

description::
The JSON format is natively supported by Node.js.
Nothing needs to be added and no module inserted using require.
Converting JSON to object and object to JSON can be done using the JSON object and its parse and stringify methods.

Following code describes how to generate a string containing the JSON content for a Javascript object.
var contact = {
id: 1,
lastName: "last name",
firstName: "first name"
};
var text = JSON.stringify(contact);
// contains {"id":1,"lastName":"last name","firstName":"first name"}


Following code describes how to get Javascript object from a string containing the JSON content.
var text = "{\"id\":1,\"lastName\":\"last name\","
+"\"firstName\":\"first name\"}";
var contact = JSON.parse(text);

[http://templth.wordpress.com/2011/06/07/manipulating-json-and-xml-with-node-js/]

name::
* McsEngl.lagJsnd'json-manipulation,
* McsEngl.Jsndalgo.json-manipulation,

Jsndalgo.NETWORKING

description::
Node's goal is to provide an easy way to build scalable network programs
[http://nodejs.org/about/]
===
Built-in support for the most important protocols (HTTP, DNS, TLS)
[http://book.mixu.net/node/single.html]

name::
* McsEngl.lagJsnd'networking,
* McsEngl.Jsndalgo.networking,
* McsEngl.lagJsnd'processing.NETWORKING,

module::
* dgram: receive and send UDP packets,
* dns: asynchronous DNS resolution,
* http: create an HTTP server or client,
* https: implements http over TLS/SSL,
* net: create a TCP server client
* tls (ssl): uses OpenSSL to provide Transport Layer Security and/or Secure Socket Layer: encrypted stream communication,

Jsndalgo.SFTP

name::
* McsEngl.lagJsnd'SFTP,
* McsEngl.Jsndalgo.SFTP,

module:
* https://www.npmjs.com/package/easy-ftp,
* https://www.npmjs.org/package/grunt-ssh,
* https://www.npmjs.org/package/sftp-upload,

Jsndalgo.PROCESSES

name::
* McsEngl.lagJsnd'processes,
* McsEngl.Jsndalgo.processes,

API:
* child-process--module,
* process-object link,

Jsndalgo.ROBOTICS

name::
* McsEngl.lagJsnd'robotics,
* McsEngl.Jsndalgo.robotics,

addressWpg::
* https://medium.com/@leo/getting-started-with-Javascript-robotics-5c54e716562c,

Jsndalgo.SECURITY

name::
* McsEngl.lagJsnd'security-algorithm,
* McsEngl.Jsndalgo.security,

module::
* https://www.npmjs.org/package/hashids: A small Node.js class to generate YouTube-like hashes from one or many numbers,
Use hashids when you do not want to expose your database ids to the user.

Jsndalgo.STREAMING

description::
Stream everything; never force the buffering of data.
[http://book.mixu.net/node/single.html]

name::
* McsEngl.lagJsnd'streaming,
* McsEngl.Jsndalgo.streaming,

addressWpg::
* https://github.com/substack/stream-handbook,
* http://www.sitepoint.com/introduction-to-streams/

Code.Jsnd:
Let's consider the following example:
var http = require('http')
 , fs = require('fs')
 ;

var server = http.createServer(function (req, res) {
 fs.readFile(__dirname + '/data.txt', function (err, data) {
   res.end(data);
 });
});

server.listen(8000);

This code works perfectly.
Nothing is wrong with it, except for the fact that Node.js
buffers the entire contents of data.txt before sending the data back to the client.
With the increase of clients requests your application could start to consume a lot of memory.
In addition clients will need to wait for the entire file to be read by the server application, resulting in increased latency.

Let's have a look at another example:
var http = require('http')
 , fs = require('fs')
 ;

var server = http.createServer(function (req, res) {
 var stream = fs.createReadStream(__dirname + '/data.txt');
 stream.pipe(res);
});
server.listen(8000);

Here, to overcome the scalability issues we use the streams API.
Using the stream object ensures that data.txt is sent to clients one chunk at a time as they are read from the disk, without server buffering and waiting times on the client.

[http://www.sitepoint.com/introduction-to-streams/]

stream-core--function-module (link)

stream-object (link)

Jsndalgo.YAML-MANIPULATION

name::
* McsEngl.lagJsnd'YAML-manipulation,
* McsEngl.Jsndalgo.YAML-processing,

module::
* https://www.npmjs.org/package/js-yaml,

Code.Jsnd:
* http://nodeexamples.com/2012/09/15/parsing-yaml-files-in-node-js-using-the-js-yaml-module/

Jsndalgo.XML-MANIPULATION

name::
* McsEngl.lagJsnd'XML-manipulation,
* McsEngl.Jsndalgo.XML-processing,

addressWpg::
* http://www.rackspace.com/blog/node-elementtree-node-js-library-to-build-and-parse-xml-documents/
* elementtree-module,

Jsndalgo.LIBRARY

generic::
* Jsgn-library,

name::
* McsEngl.lagJsnd'lbr,
* McsEngl.lagJsnd'library,
* McsEngl.lagJsnd-library,
* McsEngl.lagJsnd-code-doc.library,

Jsndalgo.PROGRAM

generic::
* Jsgn-program,

name::
* McsEngl.lagJsnd'app!⇒Jsndpgm,
* McsEngl.lagJsnd'application!⇒Jsndpgm,
* McsEngl.lagJsnd'pgm!⇒Jsndpgm,
* McsEngl.lagJsnd'program!⇒Jsndpgm,
* McsEngl.lagJsnd-code-doc.application!⇒Jsndpgm,
* McsEngl.lagJsnd-code-doc.program!⇒Jsndpgm,
* McsEngl.Jsndpgm, {2019-03-18},
* McsEngl.Node.js'application!⇒Jsndpgm,
* McsEngl.Node.js'program!⇒Jsndpgm,
* McsEngl.pgmNode.js!⇒Jsndpgm,

Jsndpgm'Installing

description::
Create a new directory and run the following commands.

npm install app:
downloads the-app

npm install:
installs the-dependencies on 'package.json'

node app:
runs the-app

Jsndpgm'Executing

description::
$ node app
or
you can make your file directly executable by changing permisions:
$ chmod o+x app.js
and insert the following as the first line of the file:
#!/usr/bin/env node
You can then execute the file directly:
$ ./app.js

[http://nodetuts.com/pdf/handson-nodejs-sample.pdf]

name::
* McsEngl.Jsndpgm'executing,
* McsEngl.node-app-running,

Command-line-arguments:
(link)

Jsndpgm'Debugging (ljndbg)

description::
Node.js includes a full-featured out-of-process debugging utility accessible via a simple TCP-based protocol and built-in debugging client.
To use it, start Node.js with the debug argument followed by the path to the script to debug; a prompt will be displayed indicating successful launch of the debugger:
$ node debug myscript.js
< debugger listening on port 5858
connecting... ok
break in /home/indutny/Code/git/indutny/myscript.js:1
 1 x = 5;
 2 setTimeout(() => {
 3 debugger;
debug>

Node.js's debugger client is not a full-featured debugger, but simple step and inspection are possible.

[https://nodejs.org/docs/v6.3.1/api/debugger.html#debugger_debugger]

name::
* McsEngl.lagJsnd'debugging,
* McsEngl.lagJsnd'dbg,

addressWpg::
* https://blog.risingstack.com/node-hero-node-js-debugging-tutorial/

lagJsnddbg'debugger-statement

name::
* McsEngl.lagJsnd'debugger,
* McsEngl.lagJsnd'debugger-sentence,
* McsEngl.lagJsnd'debugger-statement,

addressWpg::
* https://blog.risingstack.com/node-hero-node-js-debugging-tutorial/,

Jsndpgm'Dependency

description::
At the most minimal definition, a dependency is just that - a package of code your application depends on.
Without this code, your application will not work correctly, and perhaps not even build.

[https://snyk.io/blog/whats-an-npm-dependency/]
===
If the-program has a-package.json-file, the-command npm install, installs the-dependencies of this program.

name::
* McsEngl.lagJsnd'dependency,
* McsEngl.lagJsnd'dependencies,

addressWpg::
* https://snyk.io/blog/whats-an-npm-dependency/

package.json'dependencies:
(link)

Jsndpgm'Hosting

description::
Node.js is a promising technology and an excellent choice for a high load application.
It has been proven by corporations, like Microsoft, eBay, and Yahoo.
If you're unsure about hosting your website/application, you can always use a cheap VPS solution or various cloud-based services, such as Microsoft Azure and Amazon EC2.
Both of these services provide scalable environments at a reasonable price.

[http://net.tutsplus.com/tutorials/Javascript-ajax/node-js-for-beginners/]

name::
* McsEngl.Jsndpgm'deployment,
* McsEngl.lagJsnd'hosting-application,

addressWpg::
* https://blog.risingstack.com/node-hero-deploy-node-js-heroku-docker/,
* https://blog.risingstack.com/moving-node-js-from-paas-to-kubernetes-tutorial/,

lagJsndpgm'hosting.SPECIFIC

specific::
* AppFog,
* Coudnode,

specific::
Here are some provider suggestions for Node.js hosting:
bejes.us
Cloud Foundry
Cloudnode
DotCloud
Duostack
Node.js works on a v8 environment – it is a virtual machine or a Javascript engine that runs the Javascript code, so for hosting you can't use the ordinary web hosts.
You will need the ones that have the v8 environment.

[http://www.hongkiat.com/blog/node-js-server-side-Javascript/]

SPECIFIC

name::
* McsEngl.Jsndpgm.specific,

Jsndpgm.HELLO-WORLD

The Hello World App:
Create a-directory.
Create on a-text-editor the-file, called filHello.js for example, and type the-code:
console.log('Hello World!');
Close the-file and type on the-same directory the-command:
node filHello.js
You should see 'Hello World!' displayed in the console.

The Hello World Web-Server:
An example of a web server written with Node.js which responds with 'Hello World':
const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
 res.statusCode = 200;
 res.setHeader('Content-Type', 'text/plain');
 res.end('Hello World\n');
});

server.listen(port, hostname, () => {
 console.log(`Server running at http://${hostname}:${port}/`);
});

To run the server, put the code into a file called example.js and execute it with Node.js:
$ node example.js
Server running at http://127.0.0.1:3000/

All of the examples in the documentation can be run similarly.

[https://nodejs.org/docs/v6.3.1/api/synopsis.html#synopsis_example]

Jsndpgm.CLI

description::
Npm-packages like commander and yargs help us to manage the-input and option arguments of these programs.

name::
* McsEngl.lagJsnd'CLI-app,
* McsEngl.lagJsnd'CLI-program,
* McsEngl.Jsndpgm.CLI,

addressWpg::
* https://www.npmjs.com/package/commander the complete solution for node.js command-line programs,
* https://www.npmjs.com/package/yargs yargs the modern, pirate-themed, successor to optimist,
* https://medium.freecodecamp.com/writing-command-line-applications-in-nodejs,

Jsndpgm.GUI (desktop)

description::
There are few options for writing GUI apps in Node:
* AppJS - the oldest one, not actively developed, recommends NW.js or Electron
* NW.js - previously known as node-webkit, sponsored by Intel and Gnor Tech, used in Intel XDK, WhatsApp for Desktop and many others apps
* Brackets Shell by Adobe - a CEF-based application shell for the Brackets editor, not really meant for use in anything other than Brackets, but people use it for other projects and there are some tutorials online
* Electron by GitHub - previously known as the Atom Shell originally created for the Atom editor, used by Atom, Slack, Visual Studio Code, Ionic Lab, Light Table, WordPress.com, Google Play Music Desktop Player, Yeoman and many other apps - (the 1.0 just released on May 11, 2016)

[http://softwarerecs.stackexchange.com/a/32220]

name::
* McsEngl.lagJsnd'desktop-app,
* McsEngl.lagJsnd'desktop-program,
* McsEngl.lagJsnd'GUI-app,
* McsEngl.Jsndpgm.desktop,

addressWpg::
* http://code.tutsplus.com/tutorials/ introduction-to-html5-desktop-apps-with-node-webkit--net-36296,

Jsndpgm.BLOG

name::
* McsEngl.lagJsnd'blog,

blogsiple:
* https://github.com/bergie/blogsiple,

Jsndpgm.CMS

name::
* McsEngl.lagJsnd'cms,

specific::
* http://stackoverflow.com/questions/3684743/cms-based-on-nodejs,
===
* https://github.com/joyent/node/wiki/modules#wiki-content-management,
* https://github.com/punkave/apostrophe, mogoDB,
* https://github.com/dpirek/nodejs-mvc-cms,

Cliste:
* https://github.com/bmarti44/Cliste,
- mogoDB,

InvaNode:
* https://github.com/i-vetrov/InvaNode-mongo,
InvaNode is a simple CMS.
It has base functionality for simple web-site with manageable content and template engine.
It is light and easy customizable.
- mogoDB.

Jsndpgm.EDITOR

name::
* McsEngl.lagJsnd'editor-program,
* McsEngl.lagJsnd'editor-written-in-Node.js,

addressWpg::
* https://www.npmjs.org/package/brackets,
* https://www.npmjs.org/package/scripted,
* https://github.com/soliton4/nodeMirror,

Jsndpgm.elfinder

description::
Command line app for searching in HTML files for elements that match a CSS selector
[https://npmjs.org/package/elfinder]

name::
* McsEngl.elfinder-Node.js-app,
* McsEngl.Jsndpgm.elfinder,

Jsndpgm.file-management-001

name::
* McsEngl.Jsndpgm.001-file-management,
* McsEngl.Jsndpgm.file-management-001,

description::
·

addressWpg::
* How to mass rename files in Node.js: https://flaviocopes.com/node-mass-rename-files/,

Jsndpgm.FTP

name::
* McsEngl.Jsndpgm.ftp,
* McsEngl.lagJsnd'ftp-application,

node-ftp:
node-ftp is an FTP client module for node.js that provides an asynchronous interface for communicating with an FTP server.
[https://github.com/mscdex/node-ftp]

lagJsndpgm.Geddy

description::
An example of a popular Rails-like framework is Geddy
[http://dailyjs.com/2010/11/01/node-tutorial/]
===
A simple, structured web framework for Node
[http://geddyjs.org/]
===
Geddy is built on the same MVC principles that many popular frameworks are based on.
Every Geddy app has its models, controllers, and views as well as config files and routes.

[http://geddyjs.org/documentation]

name::
* McsEngl.lagJsnd'geddy,

Jsndpgm.IRC

name::
* McsEngl.lagJsnd'IRC-pgm,

addressWpg::
* https://tennu.github.io/:
Simple, Robust, Reusable IRC Bots

Jsndpgm.PARSER

name::
* McsEngl.lagJsnd'parser-written-in-Node.js,

addressWpg::
* https://github.com/joyent/node/wiki/Modules#parsers,

Jsndpgm.slimnode

description::
Slim Node is a blog engine that makes use of Markdown flat files as a blogging engine, making it easy to update and edit, without having to worry about having a chunky CMS like wordpress or Drupal to manage your content.
It is quick and light and the entire application logic (not including node dependencies) is only 56kb in size.
You can use Git to push updates to the articles folder, making it easy to update.

[http://localhost:8080/page/about]

name::
* McsEngl.Jsndpgm.slimnode,

Jsndpgm.Twitter

name::
* McsEngl.Jsndpgm.twitter,

addressWpg::
* {2017-05-30} Brandon-Morelli, Build a simple Twitter Bot with Node.js in just 38 lines of code: https://codeburst.io/,

Jsndpgm.Wheat-blog

description::
Wheat is a blogging engine that reads a git repo full of markdown articles and presents them as a website.
[https://github.com/creationix/wheat]
===
Tim Caswell's "Wheat" blog engine
[http://n8.io/starting-over/]

name::
* McsEngl.Jsndpgm.wheat,

Jsndalgo.PACKAGE

description::
A-Node.js-npm-package (default) is a-library or a-program with a-package.json-file.
[HmnSgm.2016-08-08]
===
A-Node.js-package is a-library or a-program with a-package.json-file.
[HmnSgm.2016-08-01]

name::
* McsEngl.lagJsnd'package!⇒npm-pkg,
* McsEngl.lagJsnd'pkg!⇒npm-pkg,
* McsEngl.lagJsnd-code-doc.package!⇒npm-pkg,
* McsEngl.npm'package!⇒npm-pkg,
* McsEngl.npm'pkg!⇒npm-pkg,
* McsEngl.npm-package!⇒npm-pkg,
* McsEngl.npm-pkg, {2019-03-20},

description::
What is a package?
A package is:
a) a folder containing a program described by a package.json file
b) a gzipped tarball containing (a)
c) a url that resolves to (b)
d) a <name>@<version> that is published on the registry with (c)
e) a <name>@<tag> that points to (d)
f) a <name> that has a "latest" tag satisfying (e)
g) a git url that, when cloned, results in (a).
Even if you never publish your package, you can still get a lot of benefits of using npm if you just want to write a node program (a), and perhaps if you also want to be able to easily install it elsewhere after packing it up into a tarball (b).

Git urls can be of the form:

git://github.com/user/project.git#commit-ish
git+ssh://user@hostname:project.git#commit-ish
git+http://user@hostname/project/blah.git#commit-ish
git+https://user@hostname/project/blah.git#commit-ish
The commit-ish can be any tag, sha, or branch which can be supplied as an argument to git checkout.
The default is master.

What is a module?
A module is anything that can be loaded with require() in a Node.js program.
The following things are all examples of things that can be loaded as modules:
- A folder with a package.json file containing a main field.
- A folder with an index.js file in it.
- A Javascript file.
Most npm packages are modules, because they are libraries that you load with require.
However, there's no requirement that an npm package be a module! Some only contain an executable command-line interface, and don't provide a main field for use in Node programs.

Almost all npm packages (at least, those that are Node programs) contain many modules within them (because every file they load with require() is a module).

In the context of a Node program, the module is also the thing that was loaded from a file.
For example, in the following program:

var req = require('request')
we might say that "The variable req refers to the request module".

[https://www.npmjs.org/doc/faq.html#What-is-a-package]

generic::
* Jsgn-package,

npm-tool of npm-pkg (link)

package.json-file of npm-pkg

description::
A package.json file contains an overview of your application.
There are a lot of available fields, but this is pretty much the minimum.
The dependencies section describes the name and version of the modules you'd like to install.
In this case I'll accept any version of Express 3.3.
You can list as many dependencies as you want in this section.
Now instead of installing each dependency separately, we can run a single command and install all of them.
> npm install
When you run this command npm will look in the current folder for a package.json file.
If it finds one, it will install every dependency listed.

[http://blog.modulus.io/absolute-beginners-guide-to-nodejs]
===
This document is all you need to know about what's required in your package.json file.
It must be actual JSON, not just a Javascript object literal.
A lot of the behavior described in this document is affected by the config settings described in npm-config(7).

[https://npmjs.org/doc/files/package.json.html]

name::
* McsEngl.lagJsnd'package.json-file!⇒package.json,
* McsEngl.lagJsnd'pkg-jsn!⇒package.json,
* McsEngl.npm'package.json!⇒package.json,
* McsEngl.npm-package.json!⇒package.json,
* McsEngl.package.json,
* McsEngl.package.json-file!⇒package.json,

addressWpg::
* https://www.npmjs.org/doc/files/package.json.html,
* https://docs.npmjs.com/getting-started/using-a-package.json

field (member) of package.json

name::
* McsEngl.package.json'entry,
* McsEngl.package.json'field,
* McsEngl.package.json'key-value-pair,
* McsEngl.package.json'member,
* McsEngl.package.json'name-value-pair,

specific::
=== mandatory:
* name,
* version,
===
* description,
* main,
* author,
* bin,
* bugs,
* config,
* contributors,
* cpu,
* dependencies,
* devDependencies,
* directories,
* engines,
* files,
* homepage,
* keywords,
* license,
* os,
* peerDependencies,
* preferGlobal,
* private,
* publishConfig,
* repository,
* scripts,

name-string of package.json

description::
  "name" : "pkgname",
===
The most important things in your package.json are the name and version fields. Those are actually required, and your package won't install without them. The name and version together form an identifier that is assumed to be completely unique. Changes to the package should come along with changes to the version.

The name is what your thing is called.

Some rules:
- The name must be less than or equal to 214 characters. This includes the scope for scoped packages.
- The name can't start with a dot or an underscore.
- New packages must not have uppercase letters in the name.
- The name ends up being part of a URL, an argument on the command line, and a folder name. Therefore, - the name can't contain any non-URL-safe characters.

Some tips:
- Don't use the same name as a core Node module.
- Don't put "js" or "node" in the name. It's assumed that it's js, since you're writing a package.json file, and you can specify the engine using the "engines" field. (See below.)
- The name will probably be passed as an argument to require(), so it should be something short, but also reasonably descriptive.
- You may want to check the npm registry to see if there's something by that name already, before you get too attached to it. https://www.npmjs.com/

A name can be optionally prefixed by a scope, e.g. @myorg/mypackage. See npm-scope for more detail.

[https://docs.npmjs.com/files/package.json#name]

name::
* McsEngl.package.json'name-string,

version-string of package.json

description::
  "version" : "0.10.2", //major.minor.bug
===
The most important things in your package.json are the name and version fields.
Those are actually required, and your package won't install without them.
The name and version together form an identifier that is assumed to be completely unique.
Changes to the package should come along with changes to the version.

Version must be parseable by node-semver, which is bundled with npm as a dependency. (npm install semver to use it yourself.)

More on version numbers and ranges at semver(7).

[https://docs.npmjs.com/files/package.json#version]

name::
* McsEngl.package.json'version-string,

author-string-or-object of package.json

description::
  "author" : {
    "name" : "Eran Hammer",
    "email" : "eran@hueniverse.com",
    "url" : "http://hueniverse.com"
  },

===
The "author" is one person. "contributors" is an array of people. A "person" is an object with a "name" field and optionally "url" and "email", like this:
{ "name" : "Barney Rubble"
, "email" : "b@rubble.com"
, "url" : "http://barnyrubble.tumblr.com/"
}

Or you can shorten that all into a single string, and npm will parse it for you:
"Barney Rubble <b@rubble.com> (http://barnyrubble.tumblr.com/)"
Both email and url are optional either way.

npm also sets a top-level "maintainers" field with your npm user info.

[https://docs.npmjs.com/files/package.json#people-fields-author-contributors]

name::
* McsEngl.package.json'author-string-or-object,

bin-string-or-object of package.json

description::
  "bin" : "./path/to/program",
===
A lot of packages have one or more executable files that they'd like to install into the PATH. npm makes this pretty easy (in fact, it uses this feature to install the "npm" executable.)

To use this, supply a bin field in your package.json which is a map of command name to local file name. On install, npm will symlink that file into prefix/bin for global installs, or ./node_modules/.bin/ for local installs.

For example, myapp could have this:
{ "bin" : { "myapp" : "./cli.js" } }
So, when you install myapp, it'll create a symlink from the cli.js script to /usr/local/bin/myapp.

If you have a single executable, and its name should be the name of the package, then you can just supply it as a string. For example:
{ "name": "my-program"
, "version": "1.2.5"
, "bin": "./path/to/program" }

would be the same as this:
{ "name": "my-program"
, "version": "1.2.5"
, "bin" : { "my-program" : "./path/to/program" } }

[https://docs.npmjs.com/files/package.json#bin]

name::
* McsEngl.package.json'bin-string-or-object,

bugs-object of package.json

description::
  "bugs" : { "url" : "https://github.com/user/my_package/issues" },
===
The url to your project's issue tracker and / or the email address to which issues should be reported. These are helpful for people who encounter issues with your package.

It should look like this:
{ "url" : "https://github.com/owner/project/issues"
, "email" : "project@hostname.com"
}

You can specify either one or both values. If you want to provide only a url, you can specify the value for "bugs" as a simple string instead of an object.

If a url is provided, it will be used by the npm bugs command.

[https://docs.npmjs.com/files/package.json#bugs]

name::
* McsEngl.package.json'bugs-object,

config-object of package.json

description::
  "config" : { "port" : "8080" },
===
A "config" object can be used to set configuration parameters used in package scripts that persist across upgrades. For instance, if a package had the following:
{ "name" : "foo"
, "config" : { "port" : "8080" } }

and then had a "start" command that then referenced the npm_package_config_port environment variable, then the user could override that by doing npm config set foo:port 8001.
See npm-config and npm-scripts for more on package configs.

[https://docs.npmjs.com/files/package.json#config]

name::
* McsEngl.package.json'config-object,

contributors-array of package.json

description::
  "contributors" : [{person1}, {person2}],
===
The "author" is one person. "contributors" is an array of people.
[https://docs.npmjs.com/files/package.json#people-fields-author-contributors]
===
DEFAULT VALUES
"contributors": [...]
If there is an AUTHORS file in the root of your package, npm will treat each line as a Name <email> (url) format, where email and url are optional. Lines which start with a # or are blank, will be ignored.

[https://docs.npmjs.com/files/package.json#default-values]

name::
* McsEngl.package.json'contributors-array,

cpu-array of package.json

description::
  "cpu" : [ "x64", "ia32" ],
===
If your code only runs on certain cpu architectures, you can specify which ones.
"cpu" : [ "x64", "ia32" ]
Like the os option, you can also blacklist architectures:
"cpu" : [ "!arm", "!mips" ]
The host architecture is determined by process.arch

[https://docs.npmjs.com/files/package.json#cpu]

name::
* McsEngl.package.json'cpu-array,

dependencies-object of package.json

description::
  "dependencies" : {
    "hoek": "0.7.x",
    "dyl" : "file:../dyl",
    "til" : "~1.2",
    "lat" : "latest"
  },

===
Dependencies are specified in a simple object that maps a package name to a version range. The version range is a string which has one or more space-separated descriptors. Dependencies can also be identified with a tarball or git URL.

Please do not put test harnesses or transpilers in your dependencies object. See devDependencies, below.

[https://docs.npmjs.com/files/package.json#dependencies]

name::
* McsEngl.package.json'dependencies-object,

description-string of package.json

description::
  "description" : "A packaged foo fooer for fooing foos",
===
Put a description in it.
It's a string.
This helps people discover your package, as it's listed in npm search.

[https://docs.npmjs.com/files/package.json#description]as it's listed in npm search.

name::
* McsEngl.package.json'description-string,

devDependencies-object of package.json

description::
  "devDependencies" : {
    "lab" : "0.0.x",
    "complexity-report" : "0.x.x"
  },

===
If someone is planning on downloading and using your module in their program, then they probably don't want or need to download and build the external test or documentation framework that you use.

In this case, it's best to map these additional items in a devDependencies object.

These things will be installed when doing npm link or npm install from the root of a package, and can be managed like any other npm configuration param. See npm-config for more on the topic.

For build steps that are not platform-specific, such as compiling CoffeeScript or other languages to JavaScript, use the prepublish script to do this, and make the required package a devDependency.

For example:
{ "name": "ethopia-waza",
"description": "a delightfully fruity coffee varietal",
"version": "1.2.3",
"devDependencies": {
  "coffee-script": "~1.6.3"
},
"scripts": {
  "prepublish": "coffee -o lib/ -c src/waza.coffee"
},
"main": "lib/waza.js"
}
The prepublish script will be run before publishing, so that users can consume the functionality without requiring them to compile it themselves. In dev mode (ie, locally running npm install), it'll run this script as well, so that you can test it easily.

[https://docs.npmjs.com/files/package.json#devdependencies]

name::
* McsEngl.package.json'devDependencies-object,

directories-object of package.json

description::
  "directories" : {
    "lib" : "local/lib",
    "bin" : "local/binaries",
    "man" : "local/man",
    "doc" : "local/docs"
  },

===
The CommonJS Packages spec details a few ways that you can indicate the structure of your package using a directories object. If you look at npm's package.json, you'll see that it has directories for doc, lib, and man.

In the future, this information may be used in other creative ways.

directories.lib
Tell people where the bulk of your library is. Nothing special is done with the lib folder in any way, but it's useful meta info.

directories.bin
If you specify a bin directory in directories.bin, all the files in that folder will be added.

Because of the way the bin directive works, specifying both a bin path and setting directories.bin is an error. If you want to specify individual files, use bin, and for all the files in an existing bin directory, use directories.bin.

directories.man
A folder that is full of man pages. Sugar to generate a "man" array by walking the folder.

directories.doc
Put markdown files in here. Eventually, these will be displayed nicely, maybe, someday.

directories.example
Put example scripts in here. Someday, it might be exposed in some clever way.

[https://docs.npmjs.com/files/package.json#directories]

name::
* McsEngl.package.json'directories-object,

engines-object of package.json

description::
  "engines" : { "node" : ">=0.10.3 <0.12", "npm" : "1.3.5" },
===
You can specify the version of node that your stuff works on:
{ "engines" : { "node" : ">=0.10.3 <0.12" } }
And, like with dependencies, if you don't specify the version (or if you specify "*" as the version), then any version of node will do.

If you specify an "engines" field, then npm will require that "node" be somewhere on that list. If "engines" is omitted, then npm will just assume that it works on node.

You can also use the "engines" field to specify which versions of npm are capable of properly installing your program. For example:
{ "engines" : { "npm" : "~1.0.20" } }
Note that, unless the user has set the engine-strict config flag, this field is advisory only.

[https://docs.npmjs.com/files/package.json#engines]

name::
* McsEngl.package.json'engines-object,

files-array of package.json

description::
  "files" : [ filName, dirName],
===
The "files" field is an array of files to include in your project. If you name a folder in the array, then it will also include the files inside that folder. (Unless they would be ignored by another rule.)

You can also provide a ".npmignore" file in the root of your package or in subdirectories, which will keep files from being included, even if they would be picked up by the files array. The .npmignore file works just like a .gitignore.

Certain files are always included, regardless of settings:
package.json
README (and its variants)
CHANGELOG (and its variants)
LICENSE / LICENCE
Conversely, some files are always ignored:
.git
CVS
.svn
.hg
.lock-wscript
.wafpickle-N
*.swp
.DS_Store
._*
npm-debug.log

[https://docs.npmjs.com/files/package.json#files]

name::
* McsEngl.package.json'files-array,

homepage-string of package.json

description::
  "homepage" : "https://my-homepage/",
===
The url to the project homepage.
NOTE: This is not the same as "url". If you put a "url" field, then the registry will think it's a redirection to your package that has been published somewhere else, and spit at you.
Literally. Spit. I'm so not kidding.

[https://docs.npmjs.com/files/package.json#homepage]

name::
* McsEngl.package.json'homepage-string,

keywords-array of package.json

description::
  "keywords" : [ "http", "authentication" ],
===
Put keywords in it.
It's an array of strings.
This helps people discover your package as it's listed in npm search.

[https://docs.npmjs.com/files/package.json#keywords]s it's listed in npm search.

name::
* McsEngl.package.json'keywords-array,

license-string of package.json

description::
  "license" : "MIT",
===
You should specify a license for your package so that people know how they are permitted to use it, and any restrictions you're placing on it.

If you're using a common license such as BSD-2-Clause or MIT, add a current SPDX license identifier for the license you're using, like this:
{ "license" : "BSD-3-Clause" }
You can check the full list of SPDX license IDs. Ideally you should pick one that is OSI approved.

[https://docs.npmjs.com/files/package.json#license]

name::
* McsEngl.package.json'license-string,

main-string of package.json

description::
  "main" : "index",
===
Contains the-entry-module we want the-require()-function to access in the-package.
In contrast, in the-bin-directory we put the-entry-module of a-CLI-package (a-package that can be run as a-CLI-program).
A-package could have both entries.
[HmnSgm.2016.12.02]
===
The main field is a module ID that is the primary entry point to your program.
That is, if your package is named foo, and a user installs it, and then does require("foo"), then your main module's exports object will be returned.

This should be a module ID relative to the root of your package folder.

For most modules, it makes the most sense to have a main script and often not much else.

[https://docs.npmjs.com/files/package.json#main]

name::
* McsEngl.package.json'main-string,

os-array of package.json

description::
  "os" : [ "darwin", "linux" ],
===
You can specify which operating systems your module will run on:
"os" : [ "darwin", "linux" ]
You can also blacklist instead of whitelist operating systems, just prepend the blacklisted os with a '!':
"os" : [ "!win32" ]
The host operating system is determined by process.platform

It is allowed to both blacklist, and whitelist, although there isn't any good reason to do this.

[https://docs.npmjs.com/files/package.json#os]

name::
* McsEngl.package.json'os-array,

peerDependencies-object of package.json

description::
  "peerDependencies" : { "tea" : "2.x" },
===
In some cases, you want to express the compatibility of your package with a host tool or library, while not necessarily doing a require of this host. This is usually referred to as a plugin. Notably, your module may be exposing a specific interface, expected and specified by the host documentation.

For example:
{
  "name": "tea-latte",
  "version": "1.3.5",
  "peerDependencies": {
    "tea": "2.x"
  }
}

This ensures your package tea-latte can be installed along with the second major version of the host package tea only. npm install tea-latte could possibly yield the following dependency graph:
├── tea-latte@1.3.5
└── tea@2.2.0
NOTE: npm versions 1 and 2 will automatically install peerDependencies if they are not explicitly depended upon higher in the dependency tree. In the next major version of npm (npm@3), this will no longer be the case. You will receive a warning that the peerDependency is not installed instead. The behavior in npms 1 & 2 was frequently confusing and could easily put you into dependency hell, a situation that npm is designed to avoid as much as possible.

Trying to install another plugin with a conflicting requirement will cause an error. For this reason, make sure your plugin requirement is as broad as possible, and not to lock it down to specific patch versions.

Assuming the host complies with semver, only changes in the host package's major version will break your plugin. Thus, if you've worked with every 1.x version of the host package, use "^1.0" or "1.x" to express this. If you depend on features introduced in 1.5.2, use ">= 1.5.2 < 2".

[https://docs.npmjs.com/files/package.json#peerdependencies]

name::
* McsEngl.package.json'peerDependencies-object,

preferGlobal-boolean of package.json

description::
  "preferGlobal" : true,
===
If your package is primarily a command-line application that should be installed globally, then set this value to true to provide a warning if it is installed locally.

It doesn't actually prevent users from installing it locally, but it does help prevent some confusion if it doesn't work as expected.

[https://docs.npmjs.com/files/package.json#preferglobal]

name::
* McsEngl.package.json'preferGlobal-boolean,

private-boolean of package.json

description::
  "private" : true,
===
If you set "private": true in your package.json, then npm will refuse to publish it.

This is a way to prevent accidental publication of private repositories. If you would like to ensure that a given package is only ever published to a specific registry (for example, an internal registry), then use the publishConfig dictionary described below to override the registry config param at publish-time.

[https://docs.npmjs.com/files/package.json#private]

name::
* McsEngl.package.json'private-boolean,

publishConfig-object of package.json

description::
  "publishConfig" : { "registry" : "http://my-internal-registry.local" },
===
This is a set of config values that will be used at publish-time. It's especially handy if you want to set the tag, registry or access, so that you can ensure that a given package is not tagged with "latest", published to the global public registry or that a scoped module is private by default.

Any config values can be overridden, but of course only "tag", "registry" and "access" probably matter for the purposes of publishing.

See npm-config to see the list of config options that can be overridden.

[https://docs.npmjs.com/files/package.json#publishconfig]

name::
* McsEngl.package.json'publishConfig-object,

repository-object of package.json

description::
  "repository" : {
    "type" : "git",
    "url" : "git://github.com/hueniverse/hawk"
  },

===
Specify the place where your code lives. This is helpful for people who want to contribute. If the git repo is on GitHub, then the npm docs command will be able to find you.

Do it like this:
"repository" :
{ "type" : "git"
, "url" : "https://github.com/npm/npm.git"
}

"repository" :
{ "type" : "svn"
, "url" : "https://v8.googlecode.com/svn/trunk/"
}
The URL should be a publicly available (perhaps read-only) url that can be handed directly to a VCS program without any modification. It should not be a url to an html project page that you put in your browser. It's for computers.

For GitHub, GitHub gist, Bitbucket, or GitLab repositories you can use the same shortcut syntax you use for npm install:
"repository": "npm/npm"
"repository": "gist:11081aaa281"
"repository": "bitbucket:example/repo"
"repository": "gitlab:another/repo"

[https://docs.npmjs.com/files/package.json#repository]

name::
* McsEngl.package.json'repository-object,

scripts-object of package.json

description::
  "scripts": {
    "start" : "node app",
    "test" : "make test-cov"
  },

===
npm start [-- 'args']
Description
This runs an arbitrary command specified in the package's "start" property of its "scripts" object. If no "start" property is specified on the "scripts" object, it will run node server.js.

[https://docs.npmjs.com/cli/start]
===
You can specify the version of node that your stuff works on:
{ "engines" : { "node" : ">=0.10.3 <0.12" } }
And, like with dependencies, if you don't specify the version (or if you specify "*" as the version), then any version of node will do.

If you specify an "engines" field, then npm will require that "node" be somewhere on that list. If "engines" is omitted, then npm will just assume that it works on node.

You can also use the "engines" field to specify which versions of npm are capable of properly installing your program. For example:
{ "engines" : { "npm" : "~1.0.20" } }
Note that, unless the user has set the engine-strict config flag, this field is advisory only.

[https://docs.npmjs.com/files/package.json#scripts]

name::
* McsEngl.package.json'scripts-object,

creating package.json

description::
In the-root-directory of your project
$ npm init //interactively
or
$ npm build

name::
* McsEngl.package.json'creating,

package.json.EXAMPLE

name::
* McsEngl.package.json.example,

Example-of-package.json-file:
{
  "name" : "pkgname",
  "version" : "0.10.2",
  "description" : "A packaged foo fooer for fooing foos",
  "main" : "index.js",

  "author" : "Barney Rubble <b@rubble.com> (http://barnyrubble.tumblr.com/)",
  "bin" : "./path/to/program",
  "bugs" : { "url" : "https://github.com/user/my_package/issues" },
  "config" : { "port" : "8080" },
  "contributors" : [ {person1}, {person2}],
  "cpu" : [ "x64", "ia32" ],
  "dependencies" : { "hoek" : "0.7.x", "dyl" : "file:../dyl" },
  "devDependencies" : {
    "lab" : "0.0.x",
    "complexity-report" : "0.x.x"
  },
  "directories" : {
    "lib" : "local/lib",
    "bin" : "local/binaries",
    "man" : "local/man",
    "doc" : "local/docs"
  },
  "engines" : { "node" : ">=0.10.3 <0.12", "npm" : "1.3.5" },
  "files" : [ filName, dirName],
  "homepage" : "https://my-homepage/",
  "keywords" : [ "http", "authentication" ],
  "os" : [ "darwin", "linux" ],
  "peerDependencies" : { "tea" : "2.x" },
  "preferGlobal" : true,
  "private" : true,
  "publishConfig" : { "registry" : "http://my-internal-registry.local" },
  "repository" : {
    "type" : "git",
    "url" : "git://github.com/hueniverse/hawk"
  },
  "scripts" : { "test" : "make test-cov" }
}

installing npm-pkg

description::
npm install 'package-name'
it will download the-package in node_modules in your current-directory.
npm install -g 'package-name'
it will install it globally.
===
There are two ways to install npm packages: locally or globally. You choose which kind of installation to use based on how you want to use the package.
If you want to use it as a command line tool, something like the grunt CLI, then you want to install it globally. On the other hand, if you want to depend on the package from your own module using something like Node's require, then you want to install locally.

[https://docs.npmjs.com/getting-started/installing-npm-packages-globally]

name::
* McsEngl.npm-pkg'installation,
* McsEngl.lagJsnd'installing-package,

addressWpg::
* https://docs.npmjs.com/getting-started/installing-npm-packages-locally,
* https://docs.npmjs.com/getting-started/installing-npm-packages-globally,

uninstalling npm-pkg

description::
You can remove a package from your node_modules directory using npm uninstall 'package':
npm uninstall lodash
To remove it from the dependencies in package.json, you will need to use the save flag:
npm uninstall --save lodash
Note: if you installed the package as a "devDependency" (i.e. with --save-dev) then --save won't remove it from package.json You have use --save-dev to uninstall it.

[https://docs.npmjs.com/getting-started/uninstalling-local-packages]
===
Global packages can be uninstalled with npm uninstall -g 'package':
npm uninstall -g jshint

[https://docs.npmjs.com/getting-started/uninstalling-global-packages]

name::
* McsEngl.npm-pkg'unistall,
* McsEngl.Unistall-npm-package,

updating npm-pkg

description::
Every so often, you should update the packages you depend on so you can get any changes that have been made to code upstream.

To do this, run npm update in the same directory as your package.json file.

Test: Run npm outdated. There should not be any results.

[https://docs.npmjs.com/getting-started/updating-local-packages]
===
Updating global packages
To update global packages, you can use npm install -g <package>:
npm install -g jshint
To find out which packages need to be updated, you can use npm outdated -g --depth=0.

To update all global packages, you can use npm update -g. However, for npm versions less than 2.6.1, this script is recommended to update all outdated global packages.

[https://docs.npmjs.com/getting-started/updating-global-packages]

name::
* McsEngl.npm-pkg'update,
* McsEngl.Update-npm-package,

developing npm-pkg

description::
The-development of packages usually is done collaboratively in a-github-repository.

name::
* McsEngl.npm-pkg'creating,
* McsEngl.npm-pkg'developing,

publishing npm-pkg

description::
You can publish any directory that has a package.json file, e.g. a node module.

Creating a user
To publish, you must have a user on the npm registry. If you don't have one, create it with npm adduser. If you created one on the site, use npm login to store the credentials on the client.

Test: Use npm config ls to ensure that the credentials are stored on your client. Check that it has been added to the registry by going to https://npmjs.com/~.

Publishing the package
Use npm publish to publish the package.

Note that everything in the directory will be included unless it is ignored by a local .gitignore or .npmignore file as described in npm-developers.

Also make sure there isn't already a package with the same name, owned by somebody else.

Test: Go to https://npmjs.com/package/<package>. You should see the information for your new package.

Updating the package
When you make changes, you can update the package using npm version <update_type>, where update_type is one of the semantic versioning release types, patch, minor, or major. This command will change the version number in package.json. Note that this will also add a tag with this release number to your git repository if you have one.

After updating the version number, you can npm publish again.

Test: Go to https://npmjs.com/package/<package>. The package number should be updated.

The README displayed on the site will not be updated unless a new version of your package is published, so you would need to run npm version patch and npm publish to have a documentation fix displayed on the site.

[https://docs.npmjs.com/getting-started/publishing-npm-packages]

name::
* McsEngl.npm-pkg'publish,
* McsEngl.Publish-npm-package,

unpkg.com of npm-pkg

description::
unpkg is a fast, global content-delivery network for stuff that is published to npm.
Use it to quickly and easily load files using a simple URL like:
https://unpkg.com/package@version/file

[https://unpkg.com/]

name::
* McsEngl.npm-pkg'unpkg.com,
* McsEngl.unpkg.com,

SPECIFIC

name::
* McsEngl.npm-pkg.specific,
* McsEngl.lagJsnd'pkg.specific,

addressWpg::
* http://npmsearch.com/,

specific::
* private-package,
* privateNo-package,
===
* local-package,
* localNo-package,

npm-pkg.SCOPED

description::
All npm packages have a name. Some package names also have a scope. A scope follows the usual rules for package names (url-safe characters, no leading dots or underscores). When used in package names, preceded by an @-symbol and followed by a slash, e.g.
@somescope/somepackagename

Scopes are a way of grouping related packages together, and also affect a few things about the way npm treats the package.

Scoped packages are supported by the public npm registry. The npm client is backwards-compatible with un-scoped registries, so it can be used to work with scoped and un-scoped registries at the same time.

[https://docs.npmjs.com/misc/scopec]

name::
* McsEngl.npm'scoped-package,
* McsEngl.npm-pkg.scoped,
* McsEngl.Scoped-package,

npm-pkg.amdlc

description::
AMD Library Compiler
This is a Node.js AMD Library Compiler. It enables you to write code in an the AMD style and compile the modules into a standalone library file with all public modules exposed into the global namespace this is the opposite to application specific AMD module loaders like RequireJS.

When compiling AMD projects using this compileer you get three files:
- Inline minified file using Uglify-js
- Inline source file
- Development file that loads the modules synchronous (debug)

[https://npmjs.org/package/amdlc]

name::
* McsEngl.npm'amdlc-package,
* McsEngl.npm-pkg.amdlc,
* McsEngl.Amdlc,

npm-pkg.browserify

description::
browser-side require() the node way require('modules') in the browser

Use a node-style require() to organize your browser code and load modules installed by npm.

browserify will recursively analyze all the require() calls in your app in order to build a bundle you can serve up to the browser in a single script tag.
[https://www.npmjs.com/package/browserify]

name::
* McsEngl.Browserify,
* McsEngl.lagJsnd'browserify-module,
* McsEngl.Jsndmc.browserify,

addressWpg::
* http://browserify.org/
* https://github.com/substack/browserify-handbook,

description::
Introduction to browserify
There's all this wonderful code on npm, the node.js package manager.
What if we could use that code in the browser?
Hey, we can.
Use browserify.
With browserify, we can use some core node modules and many of the thousands of modules on npm in our browser-side code.
We can also write our browser-side Javascript in the node.js style by using require.

Install browserify:
npm install -g browserify
We use the -g option to install browserify globally on your machine, allowing you to use it on the command line.

Brief example:
// require the core node events module
var EventEmitter = require('events').EventEmitter;

//create a new event emitter
var emitter = new EventEmitter;

// set up a listener for the event
emitter.on('pizza', function(message){
console.log(message);
});

// emit an event
emitter.emit('pizza', 'pizza is extremely yummy');

Put the above code in a file named index.js.

Now, to be able to run this code in the browser, enter this command in the terminal:
browserify index.js > bundle.js
The bundle.js file now has your event emitter code along with any dependencies on core node modules and shims to make them work in the browser.

You can include bundle.js in your html now like any other Javascript file.

Example:
<!DOCTYPE html>
<html>
<head>
<title>node / browserify example</title>
</head>
<body>

<script src="./bundle.js"></script>
</body>
</html>

That's it! Now you can use node modules and require in the browser!

Live reload development environment
If you're in the middle of writing code, you'll find running browserify in the terminal to regenerate bundle.js, then refreshing the browser to be time-consuming and annoying.

Enter beefy!

beefy is a command-line tool for automatically generating and serving your browserify bundles as you develop.
Each time you save your Javascript file beefy will regenerate bundle.js and refresh the browser automatically.

Install beefy:
npm install -g beefy
Now, run this:
beefy index.js:bundle.js --live
The --live option enables the live reload functionality of beefy.

This will by default serve your index.html file at http://localhost:9966.
Open Chrome, enter that url, then open the Javascript console by using the keyboard shortcut command+option+j.

You'll see pizza is extremely yummy in the Javascript console!

[http://superbigtree.tumblr.com/post/54873453939/introduction-to-browserify]

npm-pkg.eslint

description::
ESLint is an open source project originally created by Nicholas C. Zakas in June 2013. Its goal is to provide a pluggable linting utility for JavaScript.
[https://eslint.org/]
===
An AST-based pattern checker for JavaScript.
ESLint is a tool for identifying and reporting on patterns found in ECMAScript/JavaScript code. In many ways, it is similar to JSLint and JSHint with a few exceptions:
* ESLint uses Espree for JavaScript parsing,
* ESLint uses an AST to evaluate patterns in code,
* ESLint is completely pluggable, every single rule is a plugin and you can add more at runtime.

[https://npmjs.org/package/eslint]

name::
* McsEngl.npm-pkg.eslint,
* McsEngl.npm'eslint-package,
* McsEngl.ESLint,
* McsEngl.eslint,

generic::
* lagJsnd-code-analysis-tool,

ESLint'configuring

description::
ESLint is designed to be completely configurable, meaning you can turn off every rule and run only with basic syntax validation, or mix and match the bundled rules and your custom rules to make ESLint perfect for your project.
There are two primary ways to configure ESLint:
1. Configuration Comments - use JavaScript comments to embed configuration information directly into a file.
2. Configuration Files - use a JavaScript, JSON or YAML file to specify configuration information for an entire directory (other than your home directory) and all of its subdirectories.
This can be in the form of an .eslintrc.* file or an eslintConfig field in a package.json file, both of which ESLint will look for and read automatically, or you can specify a configuration file on the command line.
If you have a configuration file in your home directory (generally ~/), ESLint uses it only if ESLint cannot find any other configuration file.
[https://eslint.org/docs/user-guide/configuring]

name::
* McsEngl.ESLint'configuring,

ESLint'configuration-file

name::
* McsEngl.ESLint'configuration-file,

example::
module.exports = {
  "env": {
    "browser": true,
    "node": true,
    "es6": true
  },
  "extends": "eslint:recommended",
  "parserOptions": {
    "ecmaVersion": 2015
  },
  "rules": {
    "indent": ["error", 2],
    "linebreak-style": ["error", "windows"],
    "no-multi-spaces": "error",
    "quotes": ["error", "single"],
    "semi": ["error", "always"]
  }
};

ESLint'configuration-rule

description::
· an-ESLint-rule contains a) an-error-level and b) options.

· the-error-level has 3 values:
- "off" or 0 - turn the rule off
- "warn" or 1 - turn the rule on as a warning (doesn’t affect exit code)
- "error" or 2 - turn the rule on as an error (exit code will be 1)

· the-options have values that depend on rule's doing.

name::
* McsEngl.ESLint'configuration-rule,
* McsEngl.ESLint'rule,

ESLint-rule'name

description::
The rule naming conventions for ESLint are fairly simple:
* If your rule is disallowing something, prefix it with no- such as no-eval for disallowing eval() and no-debugger for disallowing debugger,
* If your rule is enforcing the inclusion of something, use a short name without a special prefix,
* Use dashes between words,
[https://eslint.org/docs/developer-guide/working-with-rules#rule-naming-conventions]

name::
* McsEngl.ESLint'rule'name,

ESLint-rule.SPECIFIC

name::
* McsEngl.ESLint'rule.specific,

specific::
* best-practice-rule,
* default-rule,
* ECMAScript-6-rule,
* eslint:recommended-rule,
* fix-rule,
* Node.js-and-CommonJS-rule,
* possible-error-rule,
* strict-mode-rule,
* stylistic-issue-rule,
* variable-rule,

ESLint-rule.POSSIBLE-ERROR

description::
Possible Errors: These rules relate to possible syntax or logic errors in JavaScript code,

name::
* McsEngl.ESLint'rule.possible-error,

specific::
* McsEngl.ESLint'rule.for-direction,
enforce “for” loop update clause moving the counter in the right direction.
[https://eslint.org/docs/rules/for-direction]

* McsEngl.ESLint'rule.getter-return,
enforce return statements in getters
[https://eslint.org/docs/rules/getter-return,]

* McsEngl.ESLint'rule.no-async-promise-executor,
disallow using an async function as a Promise executor
[https://eslint.org/docs/rules/no-async-promise-executor]

* McsEngl.ESLint'rule.no-await-in-loop,
disallow await inside of loops
[https://eslint.org/docs/rules/no-await-in-loop]

* McsEngl.ESLint'rule.no-compare-neg-zero,
disallow comparing against -0
[https://eslint.org/docs/rules/no-compare-neg-zero]

* McsEngl.ESLint'rule.no-cond-assign,
disallow assignment operators in conditional expressions
[https://eslint.org/docs/rules/no-cond-assign]

* McsEngl.ESLint'rule.no-console,
disallow the use of console
[https://eslint.org/docs/rules/no-console]

* McsEngl.ESLint'rule.no-constant-condition,
disallow constant expressions in conditions
[https://eslint.org/docs/rules/no-constant-condition]

* McsEngl.ESLint'rule.no-control-regex,
disallow control characters in regular expressions
[https://eslint.org/docs/rules/no-control-regex]

* McsEngl.ESLint'rule.no-debugger,
disallow the use of debugger
[https://eslint.org/docs/rules/no-debugger]

* McsEngl.ESLint'rule.no-dupe-args,
disallow duplicate arguments in function definitions
[https://eslint.org/docs/rules/no-dupe-args]

* McsEngl.ESLint'rule.no-dupe-keys,
disallow duplicate keys in object literals
[https://eslint.org/docs/rules/no-dupe-keys]

* McsEngl.ESLint'rule.no-duplicate-case,
disallow duplicate case labels
[https://eslint.org/docs/rules/no-duplicate-case]

* McsEngl.ESLint'rule.no-empty,
disallow empty block statements
[https://eslint.org/docs/rules/no-empty]

* McsEngl.ESLint'rule.no-empty-character-class,
disallow empty character classes in regular expressions
[https://eslint.org/docs/rules/no-empty-character-class]

* McsEngl.ESLint'rule.no-ex-assign,
disallow reassigning exceptions in catch clauses
[https://eslint.org/docs/rules/no-ex-assign]

* McsEngl.ESLint'rule.no-extra-boolean-cast,
disallow unnecessary boolean casts
[https://eslint.org/docs/rules/no-extra-boolean-cast]

* McsEngl.ESLint'rule.no-extra-parens,
disallow unnecessary parentheses
[https://eslint.org/docs/rules/no-extra-parens]

* McsEngl.ESLint'rule.no-extra-semi,
disallow unnecessary semicolons
[https://eslint.org/docs/rules/no-extra-semi]

* McsEngl.ESLint'rule.no-func-assign,
disallow reassigning function declarations
[https://eslint.org/docs/rules/no-func-assign]

* McsEngl.ESLint'rule.no-inner-declarations,
disallow variable or function declarations in nested blocks
[https://eslint.org/docs/rules/no-inner-declarations]

* McsEngl.ESLint'rule.no-invalid-regexp,
disallow invalid regular expression strings in RegExp constructors
[https://eslint.org/docs/rules/no-invalid-regexp]

* McsEngl.ESLint'rule.no-irregular-whitespace,
disallow irregular whitespace outside of strings and comments
[https://eslint.org/docs/rules/no-irregular-whitespace]

* McsEngl.ESLint'rule.no-misleading-character-class,
disallow characters which are made with multiple code points in character class syntax
[https://eslint.org/docs/rules/no-misleading-character-class]

* McsEngl.ESLint'rule.no-obj-calls,
disallow calling global object properties as functions
[https://eslint.org/docs/rules/no-obj-calls]

* McsEngl.ESLint'rule.no-prototype-builtins,
disallow calling some Object.prototype methods directly on objects
[https://eslint.org/docs/rules/no-prototype-builtins]

* McsEngl.ESLint'rule.no-regex-spaces,
disallow multiple spaces in regular expressions
[https://eslint.org/docs/rules/no-regex-spaces]

* McsEngl.ESLint'rule.no-sparse-arrays,
disallow sparse arrays
[https://eslint.org/docs/rules/no-sparse-arrays]

* McsEngl.ESLint'rule.no-template-curly-in-string,
disallow template literal placeholder syntax in regular strings
[https://eslint.org/docs/rules/no-template-curly-in-string]

* McsEngl.ESLint'rule.no-unexpected-multiline,
disallow confusing multiline expressions
[https://eslint.org/docs/rules/no-unexpected-multiline]

* McsEngl.ESLint'rule.no-unreachable,
disallow unreachable code after return, throw, continue, and break statements
[https://eslint.org/docs/rules/no-unreachable]

* McsEngl.ESLint'rule.no-unsafe-finally,
disallow control flow statements in finally blocks
[https://eslint.org/docs/rules/no-unsafe-finally]

* McsEngl.ESLint'rule.no-unsafe-negation,
disallow negating the left operand of relational operators
[https://eslint.org/docs/rules/no-unsafe-negation]

* McsEngl.ESLint'rule.require-atomic-updates,
disallow assignments that can lead to race conditions due to usage of await or yield
[https://eslint.org/docs/rules/require-atomic-updates]

* McsEngl.ESLint'rule.use-isnan,
require calls to isNaN() when checking for NaN
[https://eslint.org/docs/rules/use-isnan]

* McsEngl.ESLint'rule.valid-jsdoc,
enforce valid JSDoc comments
[https://eslint.org/docs/rules/valid-jsdoc]

* McsEngl.ESLint'rule.valid-typeof,
enforce comparing typeof expressions against valid strings
[https://eslint.org/docs/rules/valid-typeof]

ESLint-rule.BEST-PRACTICE

description::
Best Practices:These rules relate to better ways of doing things to help you avoid problems.

name::
* McsEngl.ESLint'rule.best-practice,

specific::
* McsEngl.ESLint'rule.accessor-pairs,
enforce getter and setter pairs in objects
[https://eslint.org/docs/rules/accessor-pairs]

* McsEngl.ESLint'rule.array-callback-return,
enforce return statements in callbacks of array methods
[https://eslint.org/docs/rules/array-callback-return]

* McsEngl.ESLint'rule.block-scoped-var,
enforce the use of variables within the scope they are defined
[https://eslint.org/docs/rules/block-scoped-var]

* McsEngl.ESLint'rule.class-methods-use-this,
enforce that class methods utilize this
[https://eslint.org/docs/rules/class-methods-use-this]

* McsEngl.ESLint'rule.complexity,
enforce a maximum cyclomatic complexity allowed in a program
[https://eslint.org/docs/rules/complexity]

* McsEngl.ESLint'rule.consistent-return,
require return statements to either always or never specify values
[https://eslint.org/docs/rules/consistent-return]

* McsEngl.ESLint'rule.curly,
enforce consistent brace style for all control statements
[https://eslint.org/docs/rules/curly]

* McsEngl.ESLint'rule.default-case,
require default cases in switch statements
[https://eslint.org/docs/rules/default-case]

* McsEngl.ESLint'rule.dot-location,
enforce consistent newlines before and after dots
[https://eslint.org/docs/rules/dot-location]

* McsEngl.ESLint'rule.dot-notation,
enforce dot notation whenever possible
[https://eslint.org/docs/rules/dot-notation]

* McsEngl.ESLint'rule.eqeqeq,
require the use of === and !==
[https://eslint.org/docs/rules/eqeqeq]

* McsEngl.ESLint'rule.guard-for-in,
require for-in loops to include an if statement
[https://eslint.org/docs/rules/guard-for-in]

* McsEngl.ESLint'rule.max-classes-per-file,
enforce a maximum number of classes per file
[https://eslint.org/docs/rules/max-classes-per-file]

* McsEngl.ESLint'rule.no-alert,
disallow the use of alert, confirm, and prompt
[https://eslint.org/docs/rules/no-alert]

* McsEngl.ESLint'rule.no-caller,
disallow the use of arguments.caller or arguments.callee
[https://eslint.org/docs/rules/no-caller]

* McsEngl.ESLint'rule.no-case-declarations,
disallow lexical declarations in case clauses
[https://eslint.org/docs/rules/no-case-declarations]

* McsEngl.ESLint'rule.no-div-regex,
disallow division operators explicitly at the beginning of regular expressions
[https://eslint.org/docs/rules/no-div-regex]

* McsEngl.ESLint'rule.no-else-return,
disallow else blocks after return statements in if statements
[https://eslint.org/docs/rules/no-else-return]

* McsEngl.ESLint'rule.no-empty-function,
disallow empty functions
[https://eslint.org/docs/rules/no-empty-function]

* McsEngl.ESLint'rule.no-empty-pattern,
disallow empty destructuring patterns
[https://eslint.org/docs/rules/no-empty-pattern]

* McsEngl.ESLint'rule.no-eq-null,
disallow null comparisons without type-checking operators
[https://eslint.org/docs/rules/no-eq-null]

* McsEngl.ESLint'rule.no-eval,
disallow the use of eval()
[https://eslint.org/docs/rules/no-eval]

* McsEngl.ESLint'rule.no-extend-native,
disallow extending native types
[https://eslint.org/docs/rules/no-extend-native]

* McsEngl.ESLint'rule.no-extra-bind,
disallow unnecessary calls to .bind()
[https://eslint.org/docs/rules/no-extra-bind]

* McsEngl.ESLint'rule.no-extra-label,
disallow unnecessary labels
[https://eslint.org/docs/rules/no-extra-label]

* McsEngl.ESLint'rule.no-fallthrough,
disallow fallthrough of case statements
[https://eslint.org/docs/rules/no-fallthrough]

* McsEngl.ESLint'rule.no-floating-decimal,
disallow leading or trailing decimal points in numeric literals
[https://eslint.org/docs/rules/no-floating-decimal]

* McsEngl.ESLint'rule.no-global-assign,
disallow assignments to native objects or read-only global variables
[https://eslint.org/docs/rules/no-global-assign]

* McsEngl.ESLint'rule.no-implicit-coercion,
disallow shorthand type conversions
[https://eslint.org/docs/rules/no-implicit-coercion]

* McsEngl.ESLint'rule.no-implicit-globals,
disallow variable and function declarations in the global scope
[https://eslint.org/docs/rules/no-implicit-globals]

* McsEngl.ESLint'rule.no-implied-eval,
disallow the use of eval()-like methods
[https://eslint.org/docs/rules/no-implied-eval]

* McsEngl.ESLint'rule.no-invalid-this,
disallow this keywords outside of classes or class-like objects
[https://eslint.org/docs/rules/no-invalid-this]

* McsEngl.ESLint'rule.no-iterator,
disallow the use of the __iterator__ property
[https://eslint.org/docs/rules/no-iterator]

* McsEngl.ESLint'rule.no-labels,
disallow labeled statements
[https://eslint.org/docs/rules/no-labels]

* McsEngl.ESLint'rule.no-lone-blocks,
disallow unnecessary nested blocks
[https://eslint.org/docs/rules/no-lone-blocks]

* McsEngl.ESLint'rule.no-loop-func,
disallow function declarations and expressions inside loop statements
[https://eslint.org/docs/rules/no-loop-func]

* McsEngl.ESLint'rule.no-magic-numbers,
disallow magic numbers
[https://eslint.org/docs/rules/no-magic-numbers]

* McsEngl.ESLint'rule.no-multi-spaces,
disallow multiple spaces
[https://eslint.org/docs/rules/no-multi-spaces]

* McsEngl.ESLint'rule.no-multi-str,
disallow multiline strings
[https://eslint.org/docs/rules/no-multi-str]

* McsEngl.ESLint'rule.no-new,
disallow new operators outside of assignments or comparisons
[https://eslint.org/docs/rules/no-new]

* McsEngl.ESLint'rule.no-new-func,
disallow new operators with the Function object
[https://eslint.org/docs/rules/no-new-func]

* McsEngl.ESLint'rule.no-new-wrappers,
disallow new operators with the String, Number, and Boolean objects
[https://eslint.org/docs/rules/no-new-wrappers]

* McsEngl.ESLint'rule.no-octal,
disallow octal literals
[https://eslint.org/docs/rules/no-octal]

* McsEngl.ESLint'rule.no-octal-escape,
disallow octal escape sequences in string literals
[https://eslint.org/docs/rules/no-octal-escape]

* McsEngl.ESLint'rule.no-param-reassign,
disallow reassigning function parameters
[https://eslint.org/docs/rules/no-param-reassign]

* McsEngl.ESLint'rule.no-proto,
disallow the use of the __proto__ property
[https://eslint.org/docs/rules/no-proto]

* McsEngl.ESLint'rule.no-redeclare,
disallow variable redeclaration
[https://eslint.org/docs/rules/no-redeclare]

* McsEngl.ESLint'rule.no-restricted-properties,
disallow certain properties on certain objects
[https://eslint.org/docs/rules/no-restricted-properties]

* McsEngl.ESLint'rule.no-return-assign,
disallow assignment operators in return statements
[https://eslint.org/docs/rules/no-return-assign]

* McsEngl.ESLint'rule.no-return-await,
disallow unnecessary return await
[https://eslint.org/docs/rules/no-return-await]

* McsEngl.ESLint'rule.no-script-url,
disallow Javascript: urls
[https://eslint.org/docs/rules/no-script-url]

* McsEngl.ESLint'rule.no-self-assign,
disallow assignments where both sides are exactly the same
[https://eslint.org/docs/rules/no-self-assign]

* McsEngl.ESLint'rule.no-self-compare,
disallow comparisons where both sides are exactly the same
[https://eslint.org/docs/rules/no-self-compare]

* McsEngl.ESLint'rule.no-sequences,
disallow comma operators
[https://eslint.org/docs/rules/no-sequences]

* McsEngl.ESLint'rule.no-throw-literal,
disallow throwing literals as exceptions
[https://eslint.org/docs/rules/no-throw-literal]

* McsEngl.ESLint'rule.no-unmodified-loop-condition,
disallow unmodified loop conditions
[https://eslint.org/docs/rules/no-unmodified-loop-condition]

* McsEngl.ESLint'rule.no-unused-expressions,
disallow unused expressions
[https://eslint.org/docs/rules/no-unused-expressions]

* McsEngl.ESLint'rule.no-unused-labels,
disallow unused labels
[https://eslint.org/docs/rules/no-unused-labels]

* McsEngl.ESLint'rule.no-useless-call,
disallow unnecessary calls to .call() and .apply()
[https://eslint.org/docs/rules/no-useless-call]

* McsEngl.ESLint'rule.no-useless-concat,
disallow unnecessary concatenation of literals or template literals
[https://eslint.org/docs/rules/no-useless-concat]

* McsEngl.ESLint'rule.no-useless-escape,
disallow unnecessary escape characters
[https://eslint.org/docs/rules/no-useless-escape]

* McsEngl.ESLint'rule.no-useless-return,
disallow redundant return statements
[https://eslint.org/docs/rules/no-useless-return]

* McsEngl.ESLint'rule.no-void,
disallow void operators
[https://eslint.org/docs/rules/no-void]

* McsEngl.ESLint'rule.no-warning-comments,
disallow specified warning terms in comments
[https://eslint.org/docs/rules/no-warning-comments]

* McsEngl.ESLint'rule.no-with,
disallow with statements
[https://eslint.org/docs/rules/no-with]

* McsEngl.ESLint'rule.prefer-promise-reject-errors,
require using Error objects as Promise rejection reasons
[https://eslint.org/docs/rules/prefer-promise-reject-errors]

* McsEngl.ESLint'rule.radix,
enforce the consistent use of the radix argument when using parseInt()
[https://eslint.org/docs/rules/radix]

* McsEngl.ESLint'rule.require-await,
disallow async functions which have no await expression
[https://eslint.org/docs/rules/require-await]

* McsEngl.ESLint'rule.require-unicode-regexp,
enforce the use of u flag on RegExp
[https://eslint.org/docs/rules/require-unicode-regexp]

* McsEngl.ESLint'rule.vars-on-top,
require var declarations be placed at the top of their containing scope
[https://eslint.org/docs/rules/vars-on-top]

* McsEngl.ESLint'rule.wrap-iife,
require parentheses around immediate function invocations
[https://eslint.org/docs/rules/wrap-iife]

* McsEngl.ESLint'rule.yoda,
require or disallow “Yoda” conditions
[https://eslint.org/docs/rules/yoda]

ESLint-rule.STRICT-MODE

description::
Strict Mode: These rules relate to strict mode directives.

name::
* McsEngl.ESLint'rule.strict-mode,

specific::
* McsEngl.ESLint'rule.strict,
require or disallow strict mode directives
[https://eslint.org/docs/rules/strict]

ESLint-rule.VARIABLE

description::
Variables: These rules relate to variable declarations.

name::
* McsEngl.ESLint'rule.variable,

specific::
* McsEngl.ESLint'rule.init-declarations,
require or disallow initialization in variable declarations
[https://eslint.org/docs/rules/init-declarations]

* McsEngl.ESLint'rule.no-delete-var,
disallow deleting variables
[https://eslint.org/docs/rules/no-delete-var]

* McsEngl.ESLint'rule.no-label-var,
disallow labels that share a name with a variable
[https://eslint.org/docs/rules/no-label-var]

* McsEngl.ESLint'rule.no-restricted-globals,
disallow specified global variables
[https://eslint.org/docs/rules/no-restricted-globals]

* McsEngl.ESLint'rule.no-shadow,
disallow variable declarations from shadowing variables declared in the outer scope
[https://eslint.org/docs/rules/no-shadow]

* McsEngl.ESLint'rule.no-shadow-restricted-names,
disallow identifiers from shadowing restricted names
[https://eslint.org/docs/rules/no-shadow-restricted-names]

* McsEngl.ESLint'rule.no-undef,
disallow the use of undeclared variables unless mentioned in /*global */ comments
[https://eslint.org/docs/rules/no-undef]

* McsEngl.ESLint'rule.no-undef-init,
disallow initializing variables to undefined
[https://eslint.org/docs/rules/no-undef-init]

* McsEngl.ESLint'rule.no-undefined,
disallow the use of undefined as an identifier
[https://eslint.org/docs/rules/no-undefined]

* McsEngl.ESLint'rule.no-unused-vars,
disallow unused variables
[https://eslint.org/docs/rules/no-unused-vars]

* McsEngl.ESLint'rule.no-use-before-define,
disallow the use of variables before they are defined
[https://eslint.org/docs/rules/no-use-before-define]

ESLint-rule.Node.js-and-CommonJS

description::
Node.js and CommonJS: These rules relate to code running in Node.js, or in browsers with CommonJS.

name::
* McsEngl.ESLint'rule.Node.js-and-CommonJS,

specific::
* McsEngl.ESLint'rule.callback-return,
require return statements after callbacks
[https://eslint.org/docs/rules/callback-return]

* McsEngl.ESLint'rule.global-require,
require require() calls to be placed at top-level module scope
[https://eslint.org/docs/rules/global-require]

* McsEngl.ESLint'rule.handle-callback-err,
require error handling in callbacks
[https://eslint.org/docs/rules/handle-callback-err]

* McsEngl.ESLint'rule.no-buffer-constructor,
disallow use of the Buffer() constructor
[https://eslint.org/docs/rules/no-buffer-constructor]

* McsEngl.ESLint'rule.no-mixed-requires,
disallow require calls to be mixed with regular variable declarations
[https://eslint.org/docs/rules/no-mixed-requires]

* McsEngl.ESLint'rule.no-new-require,
disallow new operators with calls to require
[https://eslint.org/docs/rules/no-new-require]

* McsEngl.ESLint'rule.no-path-concat,
disallow string concatenation with __dirname and __filename
[https://eslint.org/docs/rules/no-path-concat]

* McsEngl.ESLint'rule.no-process-env,
disallow the use of process.env
[https://eslint.org/docs/rules/no-process-env]

* McsEngl.ESLint'rule.no-process-exit,
disallow the use of process.exit()
[https://eslint.org/docs/rules/no-process-exit]

* McsEngl.ESLint'rule.no-restricted-modules,
disallow specified modules when loaded by require
[https://eslint.org/docs/rules/no-restricted-modules]

* McsEngl.ESLint'rule.no-sync,
disallow synchronous methods
[https://eslint.org/docs/rules/no-sync]

ESLint-rule.STYLISTIC-ISSUE

description::
Stylistic Issues: These rules relate to style guidelines, and are therefore quite subjective.

name::
* McsEngl.ESLint'rule.stylistic-issue,

specific::
* McsEngl.ESLint'rule.array-bracket-newline,
enforce linebreaks after opening and before closing array brackets
[https://eslint.org/docs/rules/array-bracket-newline]

* McsEngl.ESLint'rule.array-bracket-spacing,
enforce consistent spacing inside array brackets
[https://eslint.org/docs/rules/array-bracket-spacing]

* McsEngl.ESLint'rule.array-element-newline,
enforce line breaks after each array element
[https://eslint.org/docs/rules/array-element-newline]

* McsEngl.ESLint'rule.block-spacing,
disallow or enforce spaces inside of blocks after opening block and before closing block
[https://eslint.org/docs/rules/block-spacing]

* McsEngl.ESLint'rule.brace-style,
enforce consistent brace style for blocks
[https://eslint.org/docs/rules/brace-style]

* McsEngl.ESLint'rule.camelcase,
enforce camelcase naming convention
[https://eslint.org/docs/rules/camelcase]

* McsEngl.ESLint'rule.capitalized-comments,
enforce or disallow capitalization of the first letter of a comment
[https://eslint.org/docs/rules/capitalized-comments]

* McsEngl.ESLint'rule.comma-dangle,
require or disallow trailing commas
[https://eslint.org/docs/rules/comma-dangle]

* McsEngl.ESLint'rule.comma-spacing,
enforce consistent spacing before and after commas
[https://eslint.org/docs/rules/comma-spacing]

* McsEngl.ESLint'rule.comma-style,
enforce consistent comma style
[https://eslint.org/docs/rules/comma-style]

* McsEngl.ESLint'rule.computed-property-spacing,
enforce consistent spacing inside computed property brackets
[https://eslint.org/docs/rules/computed-property-spacing]

* McsEngl.ESLint'rule.consistent-this,
enforce consistent naming when capturing the current execution context
[https://eslint.org/docs/rules/consistent-this]

* McsEngl.ESLint'rule.eol-last,
require or disallow newline at the end of files
[https://eslint.org/docs/rules/eol-last]

* McsEngl.ESLint'rule.func-call-spacing,
require or disallow spacing between function identifiers and their invocations
[https://eslint.org/docs/rules/func-call-spacing]

* McsEngl.ESLint'rule.func-name-matching,
require function names to match the name of the variable or property to which they are assigned
[https://eslint.org/docs/rules/func-name-matching]

* McsEngl.ESLint'rule.func-names,
require or disallow named function expressions
[https://eslint.org/docs/rules/func-names]

* McsEngl.ESLint'rule.func-style,
enforce the consistent use of either function declarations or expressions
[https://eslint.org/docs/rules/func-style]

* McsEngl.ESLint'rule.function-paren-newline,
enforce consistent line breaks inside function parentheses
[https://eslint.org/docs/rules/function-paren-newline]

* McsEngl.ESLint'rule.id-blacklist,
disallow specified identifiers
[https://eslint.org/docs/rules/id-blacklist]

* McsEngl.ESLint'rule.id-length,
enforce minimum and maximum identifier lengths
[https://eslint.org/docs/rules/id-length]

* McsEngl.ESLint'rule.id-match,
require identifiers to match a specified regular expression
[https://eslint.org/docs/rules/id-match]

* McsEngl.ESLint'rule.implicit-arrow-linebreak,
enforce the location of arrow function bodies
[https://eslint.org/docs/rules/implicit-arrow-linebreak]

* McsEngl.ESLint'rule.indent,
enforce consistent indentation
[https://eslint.org/docs/rules/indent]

* McsEngl.ESLint'rule.jsx-quotes,
enforce the consistent use of either double or single quotes in JSX attributes
[https://eslint.org/docs/rules/jsx-quotes]

* McsEngl.ESLint'rule.key-spacing,
enforce consistent spacing between keys and values in object literal properties
[https://eslint.org/docs/rules/key-spacing]

* McsEngl.ESLint'rule.keyword-spacing,
enforce consistent spacing before and after keywords
[https://eslint.org/docs/rules/keyword-spacing]

* McsEngl.ESLint'rule.line-comment-position,
enforce position of line comments
[https://eslint.org/docs/rules/line-comment-position]

* McsEngl.ESLint'rule.linebreak-style,
enforce consistent linebreak style
[https://eslint.org/docs/rules/linebreak-style]

* McsEngl.ESLint'rule.lines-around-comment,
require empty lines around comments
[https://eslint.org/docs/rules/lines-around-comment]

* McsEngl.ESLint'rule.lines-between-class-members,
require or disallow an empty line between class members
[https://eslint.org/docs/rules/lines-between-class-members]

* McsEngl.ESLint'rule.max-depth,
enforce a maximum depth that blocks can be nested
[https://eslint.org/docs/rules/max-depth]

* McsEngl.ESLint'rule.max-len,
enforce a maximum line length
[https://eslint.org/docs/rules/max-len]

* McsEngl.ESLint'rule.max-lines,
enforce a maximum number of lines per file
[https://eslint.org/docs/rules/max-lines]

* McsEngl.ESLint'rule.max-lines-per-function,
enforce a maximum number of line of code in a function
[https://eslint.org/docs/rules/max-lines-per-function]

* McsEngl.ESLint'rule.max-nested-callbacks,
enforce a maximum depth that callbacks can be nested
[https://eslint.org/docs/rules/max-nested-callbacks]

* McsEngl.ESLint'rule.max-params,
enforce a maximum number of parameters in function definitions
[https://eslint.org/docs/rules/max-params]

* McsEngl.ESLint'rule.max-statements,
enforce a maximum number of statements allowed in function blocks
[https://eslint.org/docs/rules/max-statements]

* McsEngl.ESLint'rule.max-statements-per-line,
enforce a maximum number of statements allowed per line
[https://eslint.org/docs/rules/max-statements-per-line]

* McsEngl.ESLint'rule.multiline-comment-style,
enforce a particular style for multiline comments
[https://eslint.org/docs/rules/multiline-comment-style]

* McsEngl.ESLint'rule.multiline-ternary,
enforce newlines between operands of ternary expressions
[https://eslint.org/docs/rules/multiline-ternary]

* McsEngl.ESLint'rule.new-cap,
require constructor names to begin with a capital letter
[https://eslint.org/docs/rules/new-cap]

* McsEngl.ESLint'rule.new-parens,
require parentheses when invoking a constructor with no arguments
[https://eslint.org/docs/rules/new-parens]

* McsEngl.ESLint'rule.newline-per-chained-call,
require a newline after each call in a method chain
[https://eslint.org/docs/rules/newline-per-chained-call]

* McsEngl.ESLint'rule.no-array-constructor,
disallow Array constructors
[https://eslint.org/docs/rules/no-array-constructor]

* McsEngl.ESLint'rule.no-bitwise,
disallow bitwise operators
[https://eslint.org/docs/rules/no-bitwise]

* McsEngl.ESLint'rule.no-continue,
disallow continue statements
[https://eslint.org/docs/rules/no-continue]

* McsEngl.ESLint'rule.no-inline-comments,
disallow inline comments after code
[https://eslint.org/docs/rules/no-inline-comments]

* McsEngl.ESLint'rule.no-lonely-if,
disallow if statements as the only statement in else blocks
[https://eslint.org/docs/rules/no-lonely-if]

* McsEngl.ESLint'rule.no-mixed-operators,
disallow mixed binary operators
[https://eslint.org/docs/rules/no-mixed-operators]

* McsEngl.ESLint'rule.no-mixed-spaces-and-tabs,
disallow mixed spaces and tabs for indentation
[https://eslint.org/docs/rules/no-mixed-spaces-and-tabs]

* McsEngl.ESLint'rule.no-multi-assign,
disallow use of chained assignment expressions
[https://eslint.org/docs/rules/no-multi-assign]

* McsEngl.ESLint'rule.no-multiple-empty-lines,
disallow multiple empty lines
[https://eslint.org/docs/rules/no-multiple-empty-lines]

* McsEngl.ESLint'rule.no-negated-condition,
disallow negated conditions
[https://eslint.org/docs/rules/no-negated-condition]

* McsEngl.ESLint'rule.no-nested-ternary,
disallow nested ternary expressions
[https://eslint.org/docs/rules/no-nested-ternary]

* McsEngl.ESLint'rule.no-new-object,
disallow Object constructors
[https://eslint.org/docs/rules/no-new-object]

* McsEngl.ESLint'rule.no-plusplus,
disallow the unary operators ++ and --
[https://eslint.org/docs/rules/no-plusplus]

* McsEngl.ESLint'rule.no-restricted-syntax,
disallow specified syntax
[https://eslint.org/docs/rules/no-restricted-syntax]

* McsEngl.ESLint'rule.no-tabs,
disallow all tabs
[https://eslint.org/docs/rules/no-tabs]

* McsEngl.ESLint'rule.no-ternary,
disallow ternary operators
[https://eslint.org/docs/rules/no-ternary]

* McsEngl.ESLint'rule.no-trailing-spaces,
disallow trailing whitespace at the end of lines
[https://eslint.org/docs/rules/no-trailing-spaces]

* McsEngl.ESLint'rule.no-underscore-dangle,
disallow dangling underscores in identifiers
[https://eslint.org/docs/rules/no-underscore-dangle]

* McsEngl.ESLint'rule.no-unneeded-ternary,
disallow ternary operators when simpler alternatives exist
[https://eslint.org/docs/rules/no-unneeded-ternary]

* McsEngl.ESLint'rule.no-whitespace-before-property,
disallow whitespace before properties
[https://eslint.org/docs/rules/no-whitespace-before-property]

* McsEngl.ESLint'rule.nonblock-statement-body-position,
enforce the location of single-line statements
[https://eslint.org/docs/rules/nonblock-statement-body-position]

* McsEngl.ESLint'rule.object-curly-newline,
enforce consistent line breaks inside braces
[https://eslint.org/docs/rules/object-curly-newline]

* McsEngl.ESLint'rule.object-curly-spacing,
enforce consistent spacing inside braces
[https://eslint.org/docs/rules/object-curly-spacing]

* McsEngl.ESLint'rule.object-property-newline,
enforce placing object properties on separate lines
[https://eslint.org/docs/rules/object-property-newline]

* McsEngl.ESLint'rule.one-var,
enforce variables to be declared either together or separately in functions
[https://eslint.org/docs/rules/one-var]

* McsEngl.ESLint'rule.one-var-declaration-per-line,
require or disallow newlines around variable declarations
[https://eslint.org/docs/rules/one-var-declaration-per-line]

* McsEngl.ESLint'rule.operator-assignment,
require or disallow assignment operator shorthand where possible
[https://eslint.org/docs/rules/operator-assignment]

* McsEngl.ESLint'rule.operator-linebreak,
enforce consistent linebreak style for operators
[https://eslint.org/docs/rules/operator-linebreak]

* McsEngl.ESLint'rule.padded-blocks,
require or disallow padding within blocks
[https://eslint.org/docs/rules/padded-blocks]

* McsEngl.ESLint'rule.padding-line-between-statements,
require or disallow padding lines between statements
[https://eslint.org/docs/rules/padding-line-between-statements]

* McsEngl.ESLint'rule.prefer-object-spread,
disallow using Object.assign with an object literal as the first argument and prefer the use of object spread instead.
[https://eslint.org/docs/rules/prefer-object-spread]

* McsEngl.ESLint'rule.quote-props,
require quotes around object literal property names
[https://eslint.org/docs/rules/quote-props]

* McsEngl.ESLint'rule.quotes,
enforce the consistent use of either backticks, double, or single quotes
[https://eslint.org/docs/rules/quotes]

* McsEngl.ESLint'rule.require-jsdoc,
require JSDoc comments
[https://eslint.org/docs/rules/require-jsdoc]

* McsEngl.ESLint'rule.semi,
require or disallow semicolons instead of ASI
[https://eslint.org/docs/rules/semi]

* McsEngl.ESLint'rule.semi-spacing,
enforce consistent spacing before and after semicolons
[https://eslint.org/docs/rules/semi-spacing]

* McsEngl.ESLint'rule.semi-style,
enforce location of semicolons
[https://eslint.org/docs/rules/semi-style]

* McsEngl.ESLint'rule.sort-keys,
require object keys to be sorted
[https://eslint.org/docs/rules/sort-keys]

* McsEngl.ESLint'rule.sort-vars,
require variables within the same declaration block to be sorted
[https://eslint.org/docs/rules/sort-vars]

* McsEngl.ESLint'rule.space-before-blocks,
enforce consistent spacing before blocks
[https://eslint.org/docs/rules/space-before-blocks]

* McsEngl.ESLint'rule.space-before-function-paren,
enforce consistent spacing before function definition opening parenthesis
[https://eslint.org/docs/rules/space-before-function-paren]

* McsEngl.ESLint'rule.space-in-parens,
enforce consistent spacing inside parentheses
[https://eslint.org/docs/rules/space-in-parens]

* McsEngl.ESLint'rule.space-infix-ops,
require spacing around infix operators
[https://eslint.org/docs/rules/space-infix-ops]

* McsEngl.ESLint'rule.space-unary-ops,
enforce consistent spacing before or after unary operators
[https://eslint.org/docs/rules/space-unary-ops]

* McsEngl.ESLint'rule.spaced-comment,
enforce consistent spacing after the // or /* in a comment
[https://eslint.org/docs/rules/spaced-comment]

* McsEngl.ESLint'rule.switch-colon-spacing,
enforce spacing around colons of switch statements
[https://eslint.org/docs/rules/switch-colon-spacing]

* McsEngl.ESLint'rule.template-tag-spacing,
require or disallow spacing between template tags and their literals
[https://eslint.org/docs/rules/template-tag-spacing]

* McsEngl.ESLint'rule.unicode-bom,
require or disallow Unicode byte order mark (BOM)
[https://eslint.org/docs/rules/unicode-bom]

* McsEngl.ESLint'rule.wrap-regex,
require parenthesis around regex literals
[https://eslint.org/docs/rules/wrap-regex]

ESLint-rule.ECMAScript-6

description::
· ECMAScript 6: These rules relate to ES6, also known as ES2015.

name::
* McsEngl.ESLint'rule.ECMAScript-6,

specific::
* McsEngl.ESLint'rule.arrow-body-style,
require braces around arrow function bodies
[https://eslint.org/docs/rules/arrow-body-style]

* McsEngl.ESLint'rule.arrow-parens,
require parentheses around arrow function arguments
[https://eslint.org/docs/rules/arrow-parens]

* McsEngl.ESLint'rule.arrow-spacing,
enforce consistent spacing before and after the arrow in arrow functions
[https://eslint.org/docs/rules/arrow-spacing]

* McsEngl.ESLint'rule.constructor-super,
require super() calls in constructors
[https://eslint.org/docs/rules/constructor-super]

* McsEngl.ESLint'rule.generator-star-spacing,
enforce consistent spacing around * operators in generator functions
[https://eslint.org/docs/rules/generator-star-spacing]

* McsEngl.ESLint'rule.no-class-assign,
disallow reassigning class members
[https://eslint.org/docs/rules/no-class-assign]

* McsEngl.ESLint'rule.no-confusing-arrow,
disallow arrow functions where they could be confused with comparisons
[https://eslint.org/docs/rules/no-confusing-arrow]

* McsEngl.ESLint'rule.no-const-assign,
disallow reassigning const variables
[https://eslint.org/docs/rules/no-const-assign]

* McsEngl.ESLint'rule.no-dupe-class-members,
disallow duplicate class members
[https://eslint.org/docs/rules/no-dupe-class-members]

* McsEngl.ESLint'rule.no-duplicate-imports,
disallow duplicate module imports
[https://eslint.org/docs/rules/no-duplicate-imports]

* McsEngl.ESLint'rule.no-new-symbol,
disallow new operators with the Symbol object
[https://eslint.org/docs/rules/no-new-symbol]

* McsEngl.ESLint'rule.no-restricted-imports,
disallow specified modules when loaded by import
[https://eslint.org/docs/rules/no-restricted-imports]

* McsEngl.ESLint'rule.no-this-before-super,
disallow this/super before calling super() in constructors
[https://eslint.org/docs/rules/no-this-before-super]

* McsEngl.ESLint'rule.no-useless-computed-key,
disallow unnecessary computed property keys in object literals
[https://eslint.org/docs/rules/no-useless-computed-key]

* McsEngl.ESLint'rule.no-useless-constructor,
disallow unnecessary constructors
[https://eslint.org/docs/rules/no-useless-constructor]

* McsEngl.ESLint'rule.no-useless-rename,
disallow renaming import, export, and destructured assignments to the same name
[https://eslint.org/docs/rules/no-useless-rename]

* McsEngl.ESLint'rule.no-var,
require let or const instead of var
[https://eslint.org/docs/rules/no-var]

* McsEngl.ESLint'rule.object-shorthand,
require or disallow method and property shorthand syntax for object literals
[https://eslint.org/docs/rules/object-shorthand]

* McsEngl.ESLint'rule.prefer-arrow-callback,
require using arrow functions for callbacks
[https://eslint.org/docs/rules/prefer-arrow-callback]

* McsEngl.ESLint'rule.prefer-const,
require const declarations for variables that are never reassigned after declared
[https://eslint.org/docs/rules/prefer-const]

* McsEngl.ESLint'rule.prefer-destructuring,
require destructuring from arrays and/or objects
[https://eslint.org/docs/rules/prefer-destructuring]

* McsEngl.ESLint'rule.prefer-numeric-literals,
disallow parseInt() and Number.parseInt() in favor of binary, octal, and hexadecimal literals
[https://eslint.org/docs/rules/prefer-numeric-literals]

* McsEngl.ESLint'rule.prefer-rest-params,
require rest parameters instead of arguments
[https://eslint.org/docs/rules/prefer-rest-params]

* McsEngl.ESLint'rule.prefer-spread,
require spread operators instead of .apply()
[https://eslint.org/docs/rules/prefer-spread]

* McsEngl.ESLint'rule.prefer-template,
require template literals instead of string concatenation
[https://eslint.org/docs/rules/prefer-template]

* McsEngl.ESLint'rule.require-yield,
require generator functions to contain yield
[https://eslint.org/docs/rules/require-yield]

* McsEngl.ESLint'rule.rest-spread-spacing,
enforce spacing between rest and spread operators and their expressions
[https://eslint.org/docs/rules/rest-spread-spacing]

* McsEngl.ESLint'rule.sort-imports,
enforce sorted import declarations within modules
[https://eslint.org/docs/rules/sort-imports]

* McsEngl.ESLint'rule.symbol-description,
require symbol descriptions
[https://eslint.org/docs/rules/symbol-description]

* McsEngl.ESLint'rule.template-curly-spacing,
require or disallow spacing around embedded expressions of template strings
[https://eslint.org/docs/rules/template-curly-spacing]

* McsEngl.ESLint'rule.yield-star-spacing,
require or disallow spacing around the * in yield* expressions
[https://eslint.org/docs/rules/yield-star-spacing]

ESLint-rule.DEFAULT

description::
No rules are enabled by default.
The "extends": "eslint:recommended" property in a configuration file enables rules that report common problems.
[https://eslint.org/docs/rules/]

name::
* McsEngl.ESLint'rule.default,

npm-pkg.express

description::
Web Applications
Express is a minimal and flexible node.js web application framework, providing a robust set of features for building single and multi-page, and hybrid web applications.

[http://expressjs.com/]
===
A simpler, Sinatra style framework is Express which has been around since June 2009, and is still regularly updated.
[http://dailyjs.com/2010/11/01/node-tutorial/]

name::
* McsEngl.Express-library,
* McsEngl.Express-Node.js-framework,
* McsEngl.Expressjs,
* McsEngl.lagJsnd'express,
* McsEngl.lagJsnd'lbr.express,
* McsEngl.Jsndmc.express,

Code.Jsnd:
var express = require('express');
var app = express();

app.get('/', function(req, res){
res.send('hello world');
});

app.listen(3333);
// ---
// http://localhost:3333

[http://expressjs.com/guide.html]

lagJsndexpress'app.SERVER

description::
Doing Something Useful - Express
Express is a framework that makes creating most normal websites very simple.
The first thing you have to do it install it.
Along with the node command you also have access to a command called "npm".
This tool gives you access to an enormous collection of modules created by the community, and one of them is Express.
$ cd /my/app/location
$ npm install express

When you install a module, it will put it in a node_modules folder inside your application directory.
You can now require it like any built-in module.
Let's create a basic static file server using Express.

my_static_file_server.js

var express = require('express'),
app = express();

app.use(express.static(__dirname + '/public'));

app.listen(8080);


$ node my_static_file_server.js
You now have a pretty capable static file server.
Anything you put in the /public folder can now be requested by your browser and displayed.
HTML, images, almost anything.
So for example, if you put an image called "my_image.png" inside the public folder, you can access it using your browser by going to http://localhost:8080/my_image.png.
Of course Express has many many more features, but you can look those up as you continue developing.

[http://blog.modulus.io/absolute-beginners-guide-to-nodejs]

lagJsndexpress'API

addressWpg::
* http://expressjs.com/api.html,

lagJsndexpress'Resource

addressWpg::
* http://expressjs.com/api.html,
* https://github.com/visionmedia/express/tree/master/examples,

npm-pkg.glob

description::
Glob
Match files using the patterns the shell uses, like stars and stuff.

This is a glob implementation in Javascript.
It uses the minimatch library to do its matching.

Attention: node-glob users!

The API has changed dramatically between 2.x and 3.x.
This library is now 100% Javascript, and the integer flags have been replaced with an options object.

Also, there's an event emitter class, proper tests, and all the other things you've come to expect from node modules.

And best of all, no compilation!

[https://npmjs.org/package/glob]

name::
* McsEngl.npm-pkg.glob,
* McsEngl.npm'glob-package,

npm-pkg.jade

description::
Jade is a high performance template engine heavily influenced by Haml and implemented with Javascript for node.
[https://www.npmjs.org/package/jade]

name::
* McsEngl.npm-pkg.jade,
* McsEngl.npm'jade-package,
* McsEngl.Jade,

addressWpg::
* http://jade-lang.com/

npm-pkg.jake (ljnjake)

description::
Javascript build tool, similar to Make or Rake.
Built to work with Node.js.
Jake is a simple Javascript build program with capabilities similar to the
regular make or rake command.
Jake has the following features:
* Jakefiles are in standard Javascript syntax
* Tasks with prerequisites
* Namespaces for tasks
* Async task execution

[https://github.com/mde/jake]

name::
* McsEngl.lagJsnd'jake,
* McsEngl.npm-pkg.jake,
* McsEngl.npm'jake-package,
* McsEngl.Jake,

generic-chain::
* build-tool,
* Jsgn-based-task-runner,

addressWpg::
* https://github.com/mde/jake,
* http://howtonode.org/intro-to-jake,

lagJsndjake'namespace

description::
Use namespace to create a namespace of tasks to perform.
Call it with two arguments:

namespace(name, namespaceTasks);
Where is name is the name of the namespace, and namespaceTasks is a function with calls inside it to task or desc definining all the tasks for that namespace.

Here's an example:

desc('This is the default task.');
task('default', function () {
console.log('This is the default task.');
});

namespace('foo', function () {
desc('This the foo:bar task');
task('bar', function () {
console.log('doing foo:bar task');
});

desc('This the foo:baz task');
task('baz', ['default', 'foo:bar'], function () {
console.log('doing foo:baz task');
});

});
In this example, the foo:baz task depends on the the default and foo:bar tasks.

[https://github.com/mde/jake]

lagJsndjake'task

description::
In your Jakefile, call task to define tasks.
Call it with three arguments (and one more optional argument):
task(name, dependencies, handler, [async]);
Where name is the string name of the task, dependencies is an array of the dependencies, and handler is a function to run for the task.

[http://howtonode.org/intro-to-jake]

name::
* McsEngl.lagJsnd'jake'task,

lagJsndjake'task.DIRECTORY

name::
* McsEngl.lagJsnd'jake'directory-task,

description::
Create a directory-task by calling directory.

Directory-tasks create a directory for use with for file-tasks.
Jake checks for the existence of the directory, and only creates it if needed.

desc('This creates the bar directory for use with the foo-minified.js file-task.');
directory('bar');

This task will create the directory when used as a prerequisite for a file-task, or when run from the command-line.

[https://github.com/mde/jake]

lagJsndjake'task.FILE

name::
* McsEngl.lagJsnd'jake'file-task,

description::
File-tasks
Create a file-task by calling file.

File-tasks create a file from one or more other files.
With a file-task, Jake checks both that the file exists, and also that it is not older than the files specified by any prerequisite tasks.
File-tasks are particularly useful for compiling something from a tree of source files.

desc('This builds a minified JS file for production.');
file('foo-minified.js', ['bar', 'foo-bar.js', 'foo-baz.js'], function () {
// Code to concat and minify goes here
});

[https://github.com/mde/jake]

lagJsndjake'usage

Basic usage:
jake [options ...] [env variables ...] target

Options

-V/v
--version Display the Jake version.

-h
--help Display help message.

-f *FILE*
--jakefile *FILE* Use FILE as the Jakefile.

-C *DIRECTORY*
--directory *DIRECTORY* Change to DIRECTORY before running tasks.

-q
--quiet Do not log messages to standard output.

-J *JAKELIBDIR*
--jakelibdir *JAKELIBDIR* Auto-import any .jake files in JAKELIBDIR.
(default is 'jakelib')

-B
--always-make Unconditionally make all targets.

-t
--trace Enable full backtrace.

-T/ls
--tasks Display the tasks (matching optional PATTERN)
with descriptions, then exit.

[https://github.com/mde/jake#basic-usage]

name::
* McsEngl.lagJsnd'jake'usage,

npm-pkg.jsdom

name::
* McsEngl.Jsgn-dom,
* McsEngl.npm-pkg.jsdom,
* McsEngl.npm'jsdom-package,

addressWpg::
* Transforming HTML with Node.js and jQuery: http://www.2ality.com/2012/02/jsdom.html,

npm-pkg.jshint

description::
JSHint, A Static Code Analysis Tool for Javascript

JSHint is a community-driven tool to detect errors and potential problems in Javascript code and to enforce your team's coding conventions.
We made JSHint very flexible so you can easily adjust it to your particular coding guidelines and the environment you expect your code to execute in.

Our goal is to help Javascript developers write complex programs without worrying about typos and language gotchas.

We believe that static code analysis programs—as well as other code quality tools—are important and beneficial to the Javascript community and, thus, should not alienate their users.

For general usage and hacking information, visit our website: http://jshint.com/.

[https://npmjs.org/package/jshint]

name::
* McsEngl.npm-pkg.jshint,
* McsEngl.npm'jshint-package,
* McsEngl.Jshint,
* McsEngl.JSHint,

generic::
* lagJsnd-code-analysis-tool,

npm-pkg.jslint

description::
The JavaScript Code Quality Tool
node-jslint
Easily use JSLint from the command line.
jslint bin/jslint.js

[https://npmjs.org/package/jshint] ===
resource: https://www.npmjs.com/package/jslint/tutorial,

name::
* McsEngl.npm-pkg.jslint,
* McsEngl.npm'jslint-package,
* McsEngl.Jslint,
* McsEngl.JSLint,

generic::
* lagJsnd-code-analysis-tool,

npm-pkg.less

description::
The dynamic stylesheet language.
http://lesscss.org

about
This is the Javascript, and now official, stable version of LESS.
For more information on the language and usage visit lesscss.org.
More information also available in our wiki

[https://npmjs.org/package/less]

name::
* McsEngl.npm-pkg.less,
* McsEngl.npm'less-package,

npm-pkg.moment

description::
Moment.js2.6.0
A Javascript date library for parsing, validating, manipulating, and formatting dates.

[http://momentjs.com/]

name::
* McsEngl.npm-pkg.moment,
* McsEngl.npm'moment-package,
* McsEngl.Momentjs,

npm-pkg.moxie-zip

description::
moxie-zip

This is another zip library for node js.
We decided to write our own since we had issues with the current once that exists.

It's a very simple library:
var ZipWriter = require("moxie-zip").ZipWriter;
var zip = new ZipWriter();

zip.addFile("myfile.txt", "./myfile.txt");
zip.addData("myfile.txt", "Hello world!");
zip.addDir("mydir");

zip.toBuffer(function(buf) {
});

zip.saveAs("my.zip", function() {
 console.log("zip written.");
});

[https://npmjs.org/package/moxie-zip]

name::
* McsEngl.npm-pkg.moxie-zip,
* McsEngl.npm'moxie-zip-package,

npm-pkg.pdfkit

PDFKit
A PDF generation library for Node.js.
Description
PDFKit is a PDF document generation library for Node that makes creating complex, multi-page, printable documents easy.
It is written in pure CoffeeScript, but you can choose to use the API in plain 'ol Javascript if you like.
The API embraces chainability, and includes both low level functions as well as abstractions for higher level functionality.
The PDFKit API is designed to be simple, so generating complex documents is often as simple as a few function calls.
Check out some of the documentation and examples to see for yourself!

[https://github.com/devongovett/pdfkit]

name::
* McsEngl.npm-pkg.pdfkit,
* McsEngl.npm'pdfkit-package,

addressWpg::
* http://pdfkit.org/,
* https://www.npmjs.com/package/pdfkit,

npm-pkg.uglify-js

UglifyJS 2
UglifyJS is a Javascript parser, minifier, compressor or beautifier toolkit.

This page documents the command line utility.
For API and internals documentation see my website.
There's also an in-browser online demo (for Firefox, Chrome and probably Safari).

[https://npmjs.org/package/uglify-js]

name::
* McsEngl.npm-pkg.uglify-js,
* McsEngl.npm'uglify-js-package,
* McsEngl.Uglify-js-package,

npm-pkg.webmonkeys

description::
Stupid simple lib for massively parallel programming with JavaScript.
Allows you to spawn thousands of parallel tasks on the GPU with the simplest, dumbest API possible. It works on the browser (with browserify) and on Node.js. It is ES5-compatible and doesn't require any WebGL extension.
Install
npm install webmonkeys

[https://www.npmjs.com/package/webmonkeys]

name::
* McsEngl.npm-pkg.webmonkeys,
* McsEngl.npm'webmonkeys-package,
* McsEngl.Webmonkeys,

npm-pkg.webpack

description::
webpack is a module bundler.
webpack takes modules with dependencies and generates static assets representing those modules.

[http://webpack.github.io/docs/what-is-webpack.html]

name::
* McsEngl.npm-pkg.webpack,
* McsEngl.npm'webpack-package,
* McsEngl.Webpack,

human of lagJsnd

name::
* McsEngl.lagJsnd'human!⇒lagJsnd-human,
* McsEngl.lagJsnd-human,
* McsEngl.human.Node.js!⇒lagJsnd-human,

specific::
* Dahl.Ryan,
* Caswell.Tim,

human.Dahl.Ryan

description::
It was 3 p.m. on November 8th, 2009.
In a room filled with people at JSConf Europe, Ryan Dahl showed off his pet project for the first time to a sizable audience.
Node.js, he called it.

[http://cloud9ide.posterous.com/our-commitment-to-the-nodejs-community]

name::
* McsEngl.human.Dahl.Ryan,
* McsEngl.Dahl.Ryan,
* McsEngl.lagJsnd-human.Dahl.Ryan,
* McsEngl.Ryan-Dahl,

human.Caswell.Tim

description::
Tim Caswell, a prominent Node.js community member, well known for his howtonode.org blog,
[http://cloud9ide.posterous.com/our-commitment-to-the-nodejs-community]
===
* https://github.com/creationix,
* http://creationix.com/

name::
* McsEngl.Caswell.Time,
* McsEngl.human.Caswell.Time,
* McsEngl.lagJsnd-human.Caswell.Tim,
* McsEngl.Tim-Caswell.human,

organization of lagJsnd

name::
* McsEngl.lagJsnd'organization!⇒lagJsnd-ogn,
* McsEngl.lagJsnd-ogn,

specific::
* Joyent,
* Node.js-Foundation,

lagJsnd-ogn.Joyent

description::
Joyent is the corporate steward of Node.js, the world's best runtime for today's data-intensive, real-time applications.
Joyent offers exclusive debugging and performance analysis tools for Node.js applications.

[https://www.joyent.com/technology/nodejs]

name::
* McsEngl.lagJsnd-ogn.Joyent,
* McsEngl.lagJsnd'Joyent,
* McsEngl.Joyent,

lagJsnd-ogn.Node.js-Foundation

description::
The Node.js Foundation's mission is to enable widespread adoption and help accelerate development of Node.js and other related modules through an open governance model that encourages participation, technical contribution, and a framework for long term stewardship by an ecosystem invested in Node.js' success.
[https://nodejs.org/en/foundation/]

name::
* McsEngl.lagJsnd-ogn.Node.js-Foundation,
* McsEngl.lagJsnd'Node.js-Foundation,
* McsEngl.Node.js-Foundation,

relation-to--browser-Javascript of lagJsnd

description::
Node.js is different from client-side Javascript in that it removes certain things, like DOM manipulation, and adds support for evented I/O, processes, streams, HTTP, SSL, DNS, string and buffer processing and C/C++ addons.
[http://book.mixu.net/node/single.html]

name::
* McsEngl.lagJsnd'relation-to--browser-Javascript,

relation-to-PHP of lagJsnd

description::
Node.js uses an event-based server execution procedure rather than the multithreaded execution in PHP.
[http://www.hongkiat.com/blog/node-js-server-side-Javascript/]

name::
* McsEngl.lagJsnd'relation-to-PHP,
* McsEngl.PHP-relation-to-Node.js,

info-resource of lagJsnd

name::
* McsEngl.lagJsnd'resource!⇒lagJsnd-resource,
* McsEngl.lagJsnd-resource,

addressWpg::
* http://nodejs.org/
* docs.all: https://nodejs.org/docs/
* docs.latest: http://nodejs.org/docs/latest/api/index.html,
* https://github.com/joyent/node,
* http://nodemanual.org/latest/
* http://nodebits.org/
* http://howtonode.org/
* http://www.nodebeginner.org/
* http://cloud9ide.posterous.com/our-commitment-to-the-nodejs-community?..)
* http://docs.nodejitsu.com/
* http://nodester.com/
* https://github.com/joyent/node/wiki/
* https://github.com/joyent/node/wiki/Node-Hosting,
=== mail:
* http://groups.google.com/group/nodejs
* https://groups.google.com/group/nodejs?pli=1,
* Send email to this group: nodejs@googlegroups.com
=== IRC:
* http://webchat.freenode.net/?channels=node.js,
* #node.js room on irc.freenode.net
=== TUTORIAL:
* {2017-09-05} Gergely Nemeth: A 6-Step-Guide for Contributing to the Node.js Core: https://blog.risingstack.com/,
* http://blog.modulus.io/absolute-beginners-guide-to-nodejs,
* http://www.nodebeginner.org/
* http://debuggable.com/posts/understanding-node-js:4bd98440-45e4-4a9a-8ef7-0f7ecbdd56cb,

resource.APPLICATION

Program:
* http://stackoverflow.com/questions/3684743/cms-based-on-nodejs,
=== app creation ===
* https://github.com/rogerwang/node-webkit,
* http://net.tutsplus.com/tutorials/Javascript-ajax/node-js-for-beginners/
* http://nodetuts.com/
* http://readwrite.com/2011/04/02/6-free-e-books-on-nodejs,

resource.BOOK

name::
* McsEngl.lagJsnd'book,
* McsEngl.lagJsnd-resource.book,

free: Mixu's Node Book:
* http://book.mixu.net/node/single.html,

free: Mastering-Node:
* http://visionmedia.github.com/masteringnode/book.html,
In Mastering Node we will discover how to write high concurrency web servers, utilizing the CommonJS module system, node's core libraries, third party modules, high level web development and more.

Professional Node.js: Building Javascript Based Scalable Software:
Pedro Teixeira
ISBN: 978-1-1181-8546-9
Paperback
408 pages
October 2012
£29.99 / €36.00
[http://eu.wiley.com/WileyCDA/WileyTitle/productCd-1118185463,descCd-google_preview.html]

Hands-on Node.js:
Pedro Teixeira
In this e-book we will analyze what makes Node a different proposal from all that is out there, why you should use it, and how to get started. It starts with an overview but quickly dives into the code, module by module. By the end of this book you should be able to build your own Node service producers and consumers, and also feel comfortable around the Node API and conventions.
By the end of it you should be able to build your own Node modules, as well as test and debug them.
[https://leanpub.com/hands-on-nodejs]

security of lagJsnd

name::
* McsEngl.lagJsnd'security,

addressWpg::
* https://blog.nodeswat.com/set-up-a-secure-node-js-web-application-9256b8790f11,

Top Five Security Tips:
by Karl Düüna
Secure the environment
To build a secure system, you need to start from the ground up and invest time in securing the environment.
Otherwise your code might be secure, but attackers can still compromise your application by exploiting weaknesses on your servers instead.
Make sure you run up-to-date software, have secure authentication mechanisms, run the application under low privileges, and have decent logging.

Validate all input
Hacking in general means finding an unexpected usage for a system by introducing an unexpected input.
The best way to defend yourself is to allow as narrow of an input range as possible.
It is equally important to always validate that there is a match between the input and your expectations.

Secure your data
Data and databases are a critical part of most web applications and therefore a prime target for attackers.
While Node.js applications might be more inclined towards NoSQL, the principles of data protection are the same: always use authentication mechanisms, use varying levels of access, separate your customers' data as much as needed or possible, and encrypt the important parts of the database.

Protect your clients
Clients are probably the most valuable asset of your web application—they use the system and bring in the business.
So it is natural that you must protect them with the same vigilance.
This, alongside other defenses, means you must invest in protecting the client side of your application, including setting up CSRF and XSS defenses, protecting against clickjacking and unvalidated redirects.

Implement “Defense in Depth”
Cyber-defense is an asymmetrical problem: while crackers need only one of their attacks to succeed, you need all of your defenses to hold.
This is unrealistic, which is why you should always opt for “Defense In Depth.” Never assume that the outer defenses of your application are impenetrable.
Instead, set up layers upon layers of defensive mechanisms.
Even if the attacker manages to get through one layer, the damage they can do is limited.

[https://pragprog.com/book/kdnodesec/secure-your-node-js-web-application]

tool of lagJsnd

generic::
* Jsgn-tool,

name::
* McsEngl.lagJsnd'tool!⇒lagJsnd-tool,
* McsEngl.lagJsnd-tool,

specific::
* build-tool,
* code-analysis-tool,
* debugger-tool,
* editor-tool,
* package-manager-tool,
* testing-tool,
* version-manager-tool,
=== instance:
* interpreter-(runtime)-tool,
* npm-tool,
* REPL-tool,

lagJsnd-tool.BUILD

description::
lagJsnd--build-tool is a-program that we can-use to automate common tasks in the-development of a-lagJsnd-project.

name::
* McsEngl.lagJsnd'build-tool,
* McsEngl.lagJsnd'task-runner,
* McsEngl.lagJsnd-tool.build,

addressWpg::
* http://blog.millermedeiros.com/node-js-as-a-build-script/,
* http://walkercoderanger.com/blog/2015/06/state-of-js-build-tools-2015/,

specific::
* build-tools,
* Grunt,
* Gulp,
* Jake,

lagJsnd-tool.CODE-ANALYSIS

name::
* McsEngl.lagJsnd-tool.code-analysis,
* McsEngl.lagJsnd'code-analysis-tool,
* McsEngl.lagJsnd'code-quality-tool,
* McsEngl.lagJsnd'static-code-analysis-tool,

addressWpg::
* https://www.jetbrains.com/help/webstorm/2016.2/using-Javascript-code-quality-tools.html,
* https://www.smashingmagazine.com/2015/02/avoid-Javascript-mistakes-with-static-code-analyzer/,

specific::
* ESLint,
* JSHint,
* JSLint,

lagJsnd-tool.EDITOR

name::
* McsEngl.lagJsnd'editor-tool!⇒lagJsnd-editor,
* McsEngl.lagJsnd-editor, {2019-03-19},
* McsEngl.lagJsnd-tool.editor!⇒lagJsnd-editor,

editor.BEST:
My answer is Eclipse with Nodeclipse plugin, comparing to Visual Studio and Sublime Text.
[http://lith.me/2013/04/06/the-best-editor-for-node-js-on-windows/]

editor.scripted

description::
Scripted is a fast and lightweight code editor with an initial focus on Javascript editing.
Scripted is a browser based editor and the editor itself is served from a locally running Node.js server instance.

[https://github.com/scripted-editor/scripted]
===
Node.js-server, js client.

name::
* McsEngl.lagJsnd-editor.scripted,
* McsEngl.Scripted-editor,

lagJsnd-tool.VERSION-MANAGER

name::
* McsEngl.lagJsnd'version-manager--tool,
* McsEngl.lagJsnd-tool.version-manager,

specific::
* nvm-windows - Windows Only,
* nvmw - Windows Only,
* nodist - Windows Only,
* nvm - Mac/Linux Only,
* n - Mac/Linux Only,

lagJsnd-tool.TESTING

generic::
* Jsgn-testing-tool,

name::
* McsEngl.lagJsnd'testing-tool,
* McsEngl.lagJsnd-tool.testing,

module::
* https://www.npmjs.org/package/nodeunit,

addressWpg::
* http://visionmedia.github.io/mocha/
- https://brianstoner.com/blog/testing-in-nodejs-with-mocha/
* http://caolanmcmahon.com/posts/unit_testing_in_node_js/
* https://blog.risingstack.com/node-hero-node-js-unit-testing-tutorial/

lagJsnd-tool.Gulp

description::
gulp is a toolkit for automating painful or time-consuming tasks in your development workflow, so you can stop messing around and build something.
[https://gulpjs.com/]

name::
* McsEngl.Gulp--task-runner!⇒Gulp.js,
* McsEngl.Gulp.js,
* McsEngl.lagJsnd-tool.Gulp!⇒Gulp.js,

description::
Gulp is a streaming build system, by using node’s streams file manipulation is all done in memory, and a file isn’t written until you tell it to do so.
[https://scotch.io/tutorials/automate-your-tasks-easily-with-gulp-js]
===
What is gulp?
Automation - gulp is a toolkit that helps you automate painful or time-consuming tasks in your development workflow.
Platform-agnostic - Integrations are built into all major IDEs and people are using gulp with PHP, .NET, Node.js, Java, and other platforms.
Strong Ecosystem - Use npm modules to do anything you want + over 2000 curated plugins for streaming file transformations
Simple - By providing only a minimal API surface, gulp is easy to learn and simple to use
[https://github.com/gulpjs/gulp]

Usage of Gulp.js

description::
1. Install gulp-cli globally:
If you have previously installed a version of gulp globally, please run npm rm --global gulp to make sure your old version doesn't collide with gulp-cli.
$ npm install -g gulp-cli

2. Initialize your project directory:
$ npm init

3. Install gulp in your project devDependencies:
$ npm install --save-dev gulp

4. Create a gulpfile.js at the root of your project:
var gulp = require('gulp');

gulp.task('default', function() {
// place code for your default task here
});


5. Run gulp:
$ gulp
The default task will run and do nothing.
To run individual tasks, use gulp 'task' 'othertask'.
[https://github.com/gulpjs/gulp/blob/master/docs/getting-started.md]

API of Gulp.js

name::
* McsEngl.API.Gulpjs,
* McsEngl.Gulp.js'API,

member::
// var oGulp = require('gulp');
// 3.9.1 Object.getOwnPropertyNames(oGulp).sort()).join(', '))
[_events, _eventsCount, _maxListeners, domain, doneCallback, isRunning, seq, tasks]
// Object.getOwnPropertyNames(oGulp.__proto__).sort()).join(', '))
[Gulp, constructor, dest, env, run, src, task, watch]
// Object.getOwnPropertyNames(oGulp.__proto__.__proto__).sort()).join(', '))
[_emitTaskDone, _readyToRunTask, _resetAllTasks, _resetSpecificTasks, _resetTask, _runStep, _runTask, _stopTask, add, allDone, constructor, hasTask, onAll, reset, sequence, start, stop, task]
// Object.getOwnPropertyNames(oGulp.__proto__.__proto__.__proto__).sort()).join(', '))
[_events, _maxListeners, addListener, constructor, domain, emit, eventNames, getMaxListeners, listenerCount, listeners, on, once, prependListener, prependOnceListener, removeAllListeners, removeListener, setMaxListeners]
// Object.getOwnPropertyNames(oGulp.__proto__.__proto__.__proto__.__proto__).sort()).join(', '))
[__defineGetter__, __defineSetter__, __lookupGetter__, __lookupSetter__, __proto__, constructor, hasOwnProperty, isPrototypeOf, propertyIsEnumerable, toLocaleString, toString, valueOf]

src-function- of Gulp.js

description::
gulp.src(globs[, options])
Emits files matching provided glob or an array of globs. Returns a stream of Vinyl files that can be piped to plugins.
gulp.src('client/templates/*.jade')
 .pipe(jade())
 .pipe(minify())
 .pipe(gulp.dest('build/minified_templates'));

[https://github.com/gulpjs/gulp/blob/master/docs/API.md#gulpsrcglobs-options]

name::
* McsEngl.Gulp.js'src-function,

dest-function- of Gulp.js

description::
gulp.dest(path[, options])
Can be piped to and it will write files. Re-emits all data passed to it so you can pipe to multiple folders. Folders that don't exist will be created.
gulp.src('./client/templates/*.jade')
 .pipe(jade())
 .pipe(gulp.dest('./build/templates'))
 .pipe(minify())
 .pipe(gulp.dest('./build/minified_templates'));

The write path is calculated by appending the file relative path to the given destination directory. In turn, relative paths are calculated against the file base. See gulp.src above for more info.
[https://github.com/gulpjs/gulp/blob/master/docs/API.md#gulpdestpath-options]

name::
* McsEngl.Gulp.js'dest-function,

task-function- of Gulp.js

description::
gulp.task(name [, deps] [, fn])
Define a task using Orchestrator.
gulp.task('somename', function() {
   // Do stuff
});

[https://github.com/gulpjs/gulp/blob/master/docs/API.md#gulptaskname--deps--fn]

name::
* McsEngl.Gulp.js'task-function,

watch-function- of Gulp.js

description::
gulp.watch(glob [, opts], tasks) or gulp.watch(glob [, opts, cb])
Watch files and do something when a file changes. This always returns an EventEmitter that emits change events.
[https://github.com/gulpjs/gulp/blob/master/docs/API.md#gulpwatchglob--opts-tasks-or-gulpwatchglob--opts-cb]

name::
* McsEngl.Gulp.js'watch-function,

gulpfile.js of Gulp.js

description::
You need a-gulpfile.js in your project root that contains your tasks.
A-gulpfile.js is just another node-program and you can-use any package available on npm.

name::
* McsEngl.gulpfile.js,
* McsEngl.Gulp.js'gulpfile.js,

Example::
var gulp = require('gulp');

gulp.task('default', function() {
console.log('gulp-task example');
});

Plugin of Gulp.js

name::
* McsEngl.Gulp.js'plugin,
* McsEngl.Gulp.js-plugin,

Installing--gulpjs-plugin

description::
$ npm install gulp-autoprefixer gulp-cssnano gulp-eslint gulp-concat del --save-dev

name::
* McsEngl.Gulp.js-plugin'installing,

Resource-of--gulpjs-plugin

name::
* McsEngl.Gulp.js-plugin'Infrsc,

addressWpg::
* https://gulpjs.com/plugins/,
* https://github.com/gulpjs/gulp/blob/master/docs/writing-a-plugin/README.md,
* https://github.com/gulpjs/gulp/blob/master/docs/writing-a-plugin/guidelines.md,
* https://github.com/gulpjs/gulp-util,

gulpjs-plugin.SPECIFIC

specific::
* gulp-cached: A simple in-memory file cache for gulp,
* gulp-changed: Only pass through changed files,
* gulp-newer: A Gulp plugin for passing through only those source files that are newer than corresponding destination files,
* gulp-remember: is a gulp plugin that remembers files that have passed through it,

Task of Gulp.js

name::
* McsEngl.Gulp.js'task,
* McsEngl.Gulp.js-task,

gulpjs-task.Copy-files

name::
* McsEngl.Gulp.js-task.copy-files,
* McsEngl.Gulp.js-task.files.copy,

Example::
//COPY html-files from dirSrc to dirBuild
var moGulp = require('gulp');
moGulp.task('tskCopyHtml', function() {
 moGulp.src('dirSrc/*.html')
   .pipe(moGulp.dest('dirBuild'));
});

gulpjs-task.Minify-Jsgn-files

name::
* McsEngl.Gulp.js-task.minify-Javascript-files,
* McsEngl.Gulp.js-task.minify-Jsgn-files,

Example::
//MINIFY Jsgn-files from dirSrc to dirBuild
var moGulp = require('gulp'),
 mfUglify = require('gulp-uglify');
moGulp.task('tskMin', function() {
 moGulp.src('dirSrc/*.js')
   .pipe(mfUglify()'));
   .pipe(moGulp.dest('dirBuild'));
});

Resource of Gulp.js

name::
* McsEngl.Gulp.js'Infrsc,

addressWpg::
* https://gulpjs.com/,
* https://github.com/gulpjs,
=== DOC
* https://github.com/gulpjs/gulp/tree/master/docs,
* https://scotch.io/tutorials/automate-your-tasks-easily-with-gulp-js,
===
* https://www.smashingmagazine.com/2014/06/building-with-gulp/,
* https://browsersync.io/docs/gulp,

lagJsnd-tool.npm

description::
npm is the default package manager for the JavaScript runtime environment Node.js.
[https://en.wikipedia.org/wiki/Npm_(software)]

name::
* McsEngl.lagJsnd-tool.npm!⇒npm,
* McsEngl.lagJsnd'npm!⇒npm,
* McsEngl.lagJsnd'npm-tool!⇒npm,
* McsEngl.Node.js-package-manager!⇒npm,
* McsEngl.node-package-manager!⇒npm,
* McsEngl.npm, {2019-03-20},
* McsEngl.npm!=Node.js-package-manager,
* McsEngl.npm--package-manager!⇒npm,

description::
npm is the package manager for the Node Javascript platform.
It puts modules in place so that node can find them, and manages dependency conflicts intelligently.

It is extremely configurable to support a wide variety of use cases.
Most commonly, it is used to publish, discover, install, and develop node programs.

Run npm help to get a list of available commands.

[https://npmjs.org/doc/cli/npm.html]
===
Node.js has a package manager, called Node Package Manager (NPM).
It is automatically installed with Node.js, and you use NPM to install new modules.
To install a module, open your terminal/command line, navigate to the desired folder, and execute the following command:
1 npm install module_name
It doesn't matter what OS you have; the above command will install the module you specify in place of module_name.

[http://net.tutsplus.com/tutorials/Javascript-ajax/node-js-for-beginners/]
===
npm is a package manager for Node.js that is run through the command line and manages dependencies for an application.
It is the predominant package manager for Node.js.
According to its author, npm is not an acronym for "Node Package Manager".[1]
As of Node.js version 0.6.3, npm is deployed and installed automatically with the environment.

[http://en.wikipedia.org/wiki/Npm_(software)]

command of npm

name::
* McsEngl.npm'cmd!⇒npm-cmd,
* McsEngl.npm'command!⇒npm-cmd,
* McsEngl.npm-cmd,

Command-flag::
(link)

specific::
* access: Set access level on published packages
* adduser: Add a registry user account
* bin: Display npm bin folder
* bugs: Bugs for a package in a web browser maybe
* build: Build a package
* bundle: REMOVED
* cache: Manipulates packages cache
* completion: Tab Completion for npm
* config: Manage the npm configuration files
* dedupe: Reduce duplication
* deprecate: Deprecate a version of a package
* dist-tag: Modify package distribution tags
* docs: Docs for a package in a web browser maybe
* edit: Edit an installed package
* explore: Browse an installed package
* find: Search for packages
* help: Get help on npm
* help-search: Search npm help documentation
* init: Interactively create a package.json file
* install: Install a package
* install-test:
* link: Symlink a package folder
* logout: Log out of the registry
* ls: List installed packages
* outdated: Check for outdated packages
* owner: Manage package owners
* pack: Create a tarball from a package
* ping: Ping npm registry
* prefix: Display prefix
* prune: Remove extraneous packages
* publish: Publish a package
* rebuild: Rebuild a package
* repo: Open package repository page in the browser
* restart: Restart a package
* root: Display npm root
* run-script: Run arbitrary package scripts
* s: Search for packages
* se: Search for packages
* search: Search for packages
* shrinkwrap: Lock down dependency versions
* star: Mark your favorite packages
* stars: View packages marked as favorites
* start: Start a package
* stop: Stop a package
* tag: Tag a published version
* team: Manage organization teams and team memberships
* test: Test a package
* uninstall: Remove a package
* unpublish: Remove a package from the registry
* update: Update a package
* version: Bump a package version
* view: View registry info
* whoami: Display npm username

Access--npm-cmd

description::
Set access level on published packages.
Official-doc: access.

name::
* McsEngl.npm-cmd.access,
* McsEngl.npm'access-cmd,

Adduser--npm-cmd

description::
Add a registry user account.
Official-doc: adduser.

name::
* McsEngl.npm-cmd.adduser,
* McsEngl.npm'adduser-cmd,

Bin--npm-cmd

description::
Display npm bin folder.
Official-doc: bin.

name::
* McsEngl.npm-cmd.bin,
* McsEngl.npm'bin-cmd,

Bugs--npm-cmd

description::
Bugs for a package in a web browser maybe.
Official-doc: bugs.

name::
* McsEngl.npm-cmd.bugs,
* McsEngl.npm'bugs-cmd,

Build--npm-cmd

description::
Build a package.
Official-doc: build.

name::
* McsEngl.npm-cmd.build,
* McsEngl.npm'build-cmd,

Bundle--npm-cmd

description::
REMOVED.
Official-doc: bundle.

name::
* McsEngl.npm-cmd.bundle,
* McsEngl.npm'bundle-cmd,

Cache--npm-cmd

description::
Manipulates packages cache.
Official-doc: cache.

name::
* McsEngl.npm-cmd.cache,
* McsEngl.npm'cache-cmd,

Completion--npm-cmd

description::
Tab Completion for npm.
Official-doc: completion.

name::
* McsEngl.npm-cmd.completion,
* McsEngl.npm'completion-cmd,

Config--npm-cmd

description::
Manage the npm configuration files.
Official-doc: config.

name::
* McsEngl.npm-cmd.config,
* McsEngl.npm'config-cmd,

Dedupe--npm-cmd

description::
Reduce duplication.
Official-doc: dedupe.

name::
* McsEngl.npm-cmd.dedupe,
* McsEngl.npm'dedupe-cmd,

Deprecate--npm-cmd

description::
Deprecate a version of a package.
Official-doc: deprecate.

name::
* McsEngl.npm-cmd.deprecate,
* McsEngl.npm'deprecate-cmd,

Dist-tag--npm-cmd

description::
Modify package distribution tags.
Official-doc: dist-tag.

name::
* McsEngl.npm-cmd.dist-tag,
* McsEngl.npm'dist-tag-cmd,

Docs--npm-cmd

description::
Docs for a package in a web browser maybe.
Official-doc: docs.

name::
* McsEngl.npm-cmd.docs,
* McsEngl.npm'docs-cmd,

Edit--npm-cmd

description::
Edit an installed package.
Official-doc: edit.

name::
* McsEngl.npm-cmd.edit,
* McsEngl.npm'edit-cmd,

Explore--npm-cmd

description::
Browse an installed package.
Official-doc: explore.

name::
* McsEngl.npm-cmd.explore,
* McsEngl.npm'explore-cmd,

Search--npm-cmd

description::
Search for packages.
Official-doc: find.

name::
* McsEngl.npm-cmd.search,
* McsEngl.npm'search-cmd,

Help--npm-cmd

description::
Get help on npm.
Official-doc: help.

name::
* McsEngl.npm-cmd.help,
* McsEngl.npm'help-cmd,

Help-search--npm-cmd

description::
Search npm help documentation.
Official-doc: help-search.

name::
* McsEngl.npm-cmd.help-search,
* McsEngl.npm'help-search-cmd,

Init--npm-cmd

description::
Interactively create a package.json file.
Official-doc: init.

name::
* McsEngl.npm-cmd.init,
* McsEngl.npm'init-cmd,

Install--npm-cmd

description::
Install a package.
Official-doc: install.

name::
* McsEngl.npm-cmd.install,
* McsEngl.npm'install-cmd,

Example::
$ npm install
# installs the-dependencies of 'package.json'

===
$ npm install 'pkg'
# installs the-'pkg'

===
$ npm install 'pkg' -g
# installs the-'pkg' globally

===
$ npm install --save 'pkg'
# includes the-'pkg' inside of the-dependencies-section of your package.json

===
$ npm install --save-dev 'pkg'
# Launch from inside your project's directory:
$ ./node_modules/.bin/'pkg' 'file'
# Installs 'pkg' as a-development-dependency in your project, which let you use 'pkg' from the-command-line at specific versions.

Install-test--npm-cmd

description::

Official-doc: install-test.

name::
* McsEngl.npm-cmd.install-test,
* McsEngl.npm'install-test-cmd,

Logout--npm-cmd

description::
Log out of the registry.
Official-doc: logout.

name::
* McsEngl.npm-cmd.logout,
* McsEngl.npm'logout-cmd,

Ls--npm-cmd

description::
List installed packages.
Official-doc: ls.

name::
* McsEngl.npm-cmd.ls,
* McsEngl.npm'ls-cmd,

Outdated--npm-cmd

description::
Check for outdated packages.
Official-doc: outdated.

name::
* McsEngl.npm-cmd.outdated,
* McsEngl.npm'outdated-cmd,

Owner--npm-cmd

description::
Manage package owners.
Official-doc: owner.

name::
* McsEngl.npm-cmd.owner,
* McsEngl.npm'owner-cmd,

Pack--npm-cmd

description::
Create a tarball from a package.
Official-doc: pack.

name::
* McsEngl.npm-cmd.pack,
* McsEngl.npm'pack-cmd,

Ping--npm-cmd

description::
Ping npm registry.
Official-doc: ping.

name::
* McsEngl.npm-cmd.ping,
* McsEngl.npm'ping-cmd,

Prefix--npm-cmd

description::
Display prefix.
Official-doc: prefix.

name::
* McsEngl.npm-cmd.prefix,
* McsEngl.npm'prefix-cmd,

Prune--npm-cmd

description::
Remove extraneous packages.
Official-doc: prune.

name::
* McsEngl.npm-cmd.prune,
* McsEngl.npm'prune-cmd,

Publish--npm-cmd

description::
Publish a package.
Official-doc: publish.

name::
* McsEngl.npm-cmd.publish,
* McsEngl.npm'publish-cmd,

Rebuild--npm-cmd

description::
Rebuild a package.
Official-doc: rebuild.

name::
* McsEngl.npm-cmd.rebuild,
* McsEngl.npm'rebuild-cmd,

Repo--npm-cmd

description::
Open package repository page in the browser.
Official-doc: repo.

name::
* McsEngl.npm-cmd.repo,
* McsEngl.npm'repo-cmd,

Restart--npm-cmd

description::
Restart a package.
Official-doc: restart.

name::
* McsEngl.npm-cmd.restart,
* McsEngl.npm'restart-cmd,

Root--npm-cmd

description::
Display npm root.
Official-doc: root.

name::
* McsEngl.npm-cmd.root,
* McsEngl.npm'root-cmd,

Run-script--npm-cmd

description::
Run arbitrary package scripts.
Official-doc: run-script.

name::
* McsEngl.npm-cmd.run-script,
* McsEngl.npm'run-script-cmd,

Search--npm-cmd

description::
Search for packages.
Official-doc: s.

name::
* McsEngl.npm-cmd.s,
* McsEngl.npm-cmd.se,
* McsEngl.npm-cmd.search,
* McsEngl.npm's-cmd,
* McsEngl.npm'se-cmd,
* McsEngl.npm'search-cmd,

Shrinkwrap--npm-cmd

description::
Lock down dependency versions.
Official-doc: shrinkwrap.

name::
* McsEngl.npm-cmd.shrinkwrap,
* McsEngl.npm'shrinkwrap-cmd,

Star--npm-cmd

description::
Mark your favorite packages.
Official-doc: star.

name::
* McsEngl.npm-cmd.star,
* McsEngl.npm'star-cmd,

Stars--npm-cmd

description::
View packages marked as favorites.
Official-doc: stars.

name::
* McsEngl.npm-cmd.stars,
* McsEngl.npm'stars-cmd,

Start--npm-cmd

description::
Start a package.
Official-doc: start.

name::
* McsEngl.npm-cmd.start,
* McsEngl.npm'start-cmd,

Stop--npm-cmd

description::
Stop a package.
Official-doc: stop.

name::
* McsEngl.npm-cmd.stop,
* McsEngl.npm'stop-cmd,

Tag--npm-cmd

description::
Tag a published version.
Official-doc: tag.

name::
* McsEngl.npm-cmd.tag,
* McsEngl.npm'tag-cmd,

Team--npm-cmd

description::
Manage organization teams and team memberships.
Official-doc: team.

name::
* McsEngl.npm-cmd.team,
* McsEngl.npm'team-cmd,

Test--npm-cmd

description::
Test a package.
Official-doc: test.

name::
* McsEngl.npm-cmd.test,
* McsEngl.npm'test-cmd,

Uninstall--npm-cmd

description::
Remove a package.
Official-doc: uninstall.

name::
* McsEngl.npm-cmd.uninstall,
* McsEngl.npm'uninstall-cmd,

Unpublish--npm-cmd

description::
Remove a package from the registry.
Official-doc: unpublish.

name::
* McsEngl.npm-cmd.unpublish,
* McsEngl.npm'unpublish-cmd,

Update--npm-cmd

description::
Update a package.
Official-doc: update.
Synopsis: npm update [-g] ['pkg'...]

name::
* McsEngl.npm-cmd.update,
* McsEngl.npm'up-cmd,
* McsEngl.npm'update-cmd,
* McsEngl.npm'upgrade-cmd,

Version--npm-cmd

description::
Bump a package version.
Official-doc: version.

name::
* McsEngl.npm-cmd.version,
* McsEngl.npm'version-cmd,

View--npm-cmd

description::
View registry info.
Official-doc: view.

name::
* McsEngl.npm-cmd.view,
* McsEngl.npm'view-cmd,

Example::
npm view "package" version //shows the-version of "package"

Whoami--npm-cmd

description::
Display npm username.
Official-doc: whoami.

name::
* McsEngl.npm-cmd.whoami,
* McsEngl.npm'whoami-cmd,

human of npm

name::
* McsEngl.npm'human,

Author:
* Schlueter.Isaac: original,

package of npm (link)

package.json-file of npm (link)

info-resource of npm

addressWpg::
* https://npmjs.org/
* http://blog.keithcirkel.co.uk/how-to-use-npm-as-a-build-tool/
* https://github.com/joyent/node/wiki/modules, (deprecated)
* https://nodejsmodules.org/
* http://nodetoolbox.com/
* http://eirikb.github.io/nipster/ 37,093 entries
=== Learning:
* {time.2016-11-09} 10 Tips and Tricks That Will Make You an npm Ninja: https://www.sitepoint.com/,

semver of npm

description::
The semantic versioner for npm
Usage
$ npm install semver

semver.valid('1.2.3') // '1.2.3'
semver.valid('a.b.c') // null
semver.clean(' =v1.2.3 ') // '1.2.3'
semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
semver.gt('1.2.3', '9.8.7') // false
semver.lt('1.2.3', '9.8.7') // true

[https://docs.npmjs.com/misc/semver]

name::
* McsEngl.npm'semantic-versioner,
* McsEngl.npm'semver,

DOING npm

name::
* McsEngl.nmp'doing,

installing npm

description::
· NPM is included by default with Node.JS, starting with version 0.6.3.

name::
* McsEngl.npm'installing,

configuring npm

name::
* McsEngl.npm'configuring,

addressWpg::
* https://docs.npmjs.com/misc/config,
* https://docs.npmjs.com/files/npmrc,
* https://docs.npmjs.com/files/folders,
* https://docs.npmjs.com/files/package.json,

updating npm

description::
· npm install -g npm

name::
* McsEngl.npm'updating,

EVOLUTING of npm

Version:
> npm -v
3.9.5
===
addressWpg::
* https://github.com/npm/npm/tags,

lagJsnd-tool.REPL

description::
The repl module provides a Read-Eval-Print-Loop (REPL) implementation that is available both as a standalone program or includable in other applications.
It can be accessed using:
const repl = require('repl');

[https://nodejs.org/docs/v6.3.1/api/repl.html#repl_repl]

name::
* McsEngl.lagJsnd'REPL!⇒lagJsnd-Repl,
* McsEngl.lagJsnd'REPL-program!⇒lagJsnd-Repl,
* McsEngl.lagJsnd'Read-Eval-Print-Loop!⇒lagJsnd-Repl,
* McsEngl.lagJsnd-Repl, {2019-03-20},

Executing:
On a-terminal write node.
You will see its command-prompt (>).

Commands:
> .help
.break    Sometimes you get stuck, this gets you out
.clear    Alias for .break
.exit    Exit the repl
.help    Show repl options
.load    Load JS from a file into the REPL session
.save    Save all evaluated commands in this REPL session to a file

lagJsnd-Repl'module (core 2.stable)

name::
* McsEngl.lagJsnd-Repl'module,

lagJsnd-Repl'member::
// Jsnd.6-2-2
> Object.getOwnPropertyNames(repl).sort()

[ 'REPLServer', 'REPL_MODE_MAGIC', 'REPL_MODE_SLOPPY', 'REPL_MODE_STRICT', 'Recoverable', '_builtinLibs', 'repl', 'start', 'writer' ]

lagJsnd-tool.runtime

description::
Node.js® is a Javascript runtime built on Chrome's V8 Javascript engine.
Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient.
Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world.

[https://nodejs.org/en/] {2016.07.01}

name::
* McsEngl.lagJsnd'interpreter!⇒lagJsnd-runtime,
* McsEngl.lagJsnd'runtime!⇒lagJsnd-runtime,
* McsEngl.lagJsnd-runtime, {2019-03-19},
* McsEngl.lagJsnd-tool.runtime!⇒lagJsnd-runtime,

runtime'Synopsis

description::
Usage:
> node [options] [v8 options] [script.js | -e "script"] [arguments]

name::
* McsEngl.lagJsnd-runtime'synopsis,

runtime'option

name::
* McsEngl.lagJsnd-runtime'option!⇒lagJsnd-Rtmopn,
* McsEngl.lagJsnd-runtime'CLI-option!⇒lagJsnd-Rtmopn,
* McsEngl.lagJsnd-Rtmopn, {2019-03-20},

specific::
Options
-v, --version
-h, --help
-e, --eval "script"
-p, --print "script"
-c, --check
-i, --interactive
-r, --require module
--no-deprecation
--trace-deprecation
--throw-deprecation
--no-warnings
--trace-warnings
--trace-sync-io
--zero-fill-buffers
--preserve-symlinks
--track-heap-objects
--prof-process
--v8-options
--tls-cipher-list=list
--enable-fips
--force-fips
--icu-data-dir=file
[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_command_line_options]

lagJsnd-Rtmopn.v

-v, --version
Added in: v0.1.3
Print node's version.
[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_v_version]

lagJsnd-Rtmopn.h

-h, --help
Added in: v0.1.3
Print node command line options. The output of this option is less detailed than this document.

[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_h_help]

lagJsnd-Rtmopn.e

-e, --eval "script"
Added in: v0.5.2
Evaluate the following argument as JavaScript.
The modules which are predefined in the REPL can also be used in script.

[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_e_eval_script]

lagJsnd-Rtmopn.p

-p, --print "script"
Added in: v0.6.4
Identical to -e but prints the result.

[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_p_print_script]

lagJsnd-Rtmopn.c

-c, --check
Added in: v5.0.0
Syntax check the script without executing.

[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_c_check]

lagJsnd-Rtmopn.i

-i, --interactive
Added in: v0.7.7
Opens the REPL even if stdin does not appear to be a terminal.

[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_i_interactive]

lagJsnd-Rtmopn.r

-r, --require module
Added in: v1.6.0
Preload the specified module at startup.

Follows require()'s module resolution rules.
module may be either a path to a file, or a node module name.

[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_r_require_module]

lagJsnd-Rtmopn.no-deprecation

--no-deprecation
Added in: v0.8.0
Silence deprecation warnings.

[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_no_deprecation]

lagJsnd-Rtmopn.trace-deprecation

--trace-deprecation
Added in: v0.8.0
Print stack traces for deprecations.

[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_trace_deprecation]

lagJsnd-Rtmopn.throw-deprecation

--throw-deprecation
Added in: v0.11.14
Throw errors for deprecations.

[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_throw_deprecation]

lagJsnd-Rtmopn.no-warnings

--no-warnings
Added in: v6.0.0
Silence all process warnings (including deprecations).

[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_no_warnings]

lagJsnd-Rtmopn.trace-warnings

--trace-warnings
Added in: v6.0.0
Print stack traces for process warnings (including deprecations).

[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_trace_warnings]

lagJsnd-Rtmopn.trace-sync-io

--trace-sync-io
Added in: v2.1.0
Prints a stack trace whenever synchronous I/O is detected after the first turn of the event loop.

[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_trace_sync_io]

lagJsnd-Rtmopn.zero-fill-buffers

--zero-fill-buffers
Added in: v6.0.0
Automatically zero-fills all newly allocated Buffer and SlowBuffer instances.

[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_zero_fill_buffers]

lagJsnd-Rtmopn.track-heap-objects

--track-heap-objects
Added in: v2.4.0
Track heap object allocations for heap snapshots.

[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_track_heap_objects]

lagJsnd-Rtmopn.prof-process

--prof-process
Added in: v6.0.0
Process v8 profiler output generated using the v8 option --prof.

[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_prof_process]

lagJsnd-Rtmopn.v8-options

--v8-options
Added in: v0.1.3
Print v8 command line options.

Note: v8 options allow words to be separated by both dashes (-) or underscores (_).

For example, --stack-trace-limit is equivalent to --stack_trace_limit.

[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_v8_options]

lagJsnd-Rtmopn.tls-cipher-list

--tls-cipher-list=list
Added in: v4.0.0
Specify an alternative default TLS cipher list. (Requires Node.js to be built with crypto support. (Default))

[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_tls_cipher_list_list]

lagJsnd-Rtmopn.enable-fips

--enable-fips
Added in: v6.0.0
Enable FIPS-compliant crypto at startup. (Requires Node.js to be built with ./configure --openssl-fips)

[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_enable_fips]

lagJsnd-Rtmopn.force-fips

--force-fips
Added in: v6.0.0
Force FIPS-compliant crypto on startup. (Cannot be disabled from script code.) (Same requirements as --enable-fips)

[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_force_fips]

lagJsnd-Rtmopn.icu-data-dir=file

--icu-data-dir=file
Added in: v0.11.15
Specify ICU data load path. (overrides NODE_ICU_DATA)

[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_icu_data_dir_file]

runtime'Argument

description::
process.argv
Added in: v0.1.27
(Array)
The process.argv property returns an array containing the command line arguments passed when the Node.js process was launched. The first element will be process.execPath. See process.argv0 if access to the original value of argv[0] is needed. The second element will be the path to the JavaScript file being executed. The remaining elements will be any additional command line arguments.

For example, assuming the following script for process-args.js:
// print process.argv
process.argv.forEach((val, index) => {
  console.log(`${index}: ${val}`);
});

Launching the Node.js process as:
$ node process-2.js one two=three four

Would generate the output:
0: /usr/local/bin/node
1: /Users/mjr/work/node/process-2.js
2: one
3: two=three
4: four

[https://nodejs.org/docs/latest/api/process.html#process_process_argv]

name::
* McsEngl.lagJsnd-runtime'argument,

runtime'installing

name::
* McsEngl.lagJsnd-runtime'installing,

Windows

description::
Download (https://nodejs.org/en/) msi file and run it.

Upgrading:
Download the new msi file and run it.

Ubuntu

description::
At Least from Ubuntu 12.04, an old version (0.6.x) of Node is in the standard repository.
To install, just run:
> sudo apt-get install nodejs

[https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager#ubuntu-mint]

From-source

Building From Source
To build and install node from source, we first need to obtain the code.
The first method of doing so is via git, if you have git installed you can execute:
$ git clone http://github.com/ry/node.git && cd node
For those without git, or who prefer not to use it, we can also download the source via curl, wget, or similar:
$ curl -# http://nodejs.org/dist/node-v0.1.99.tar.gz > node.tar.gz
$ tar -zxf node.tar.gz
Now that we have the source on our machine, we can run ./configure which discovers which libraries are available for node to utilize such as OpenSSL for transport security support, C and C++ compilers, etc. make which builds node, and finally make install which will install node.

$ ./configure && make && make install

[http://visionmedia.github.com/masteringnode/book.html]

runtime'environment-variables

name::
* McsEngl.lagJsnd-runtime'environment-variable,
* McsEngl.lagJsnd'environment-variable,

Accessing:
process.env

Setting:
It depends on your system.
On linux with bash: export ENV_VAR=value
On windows: set ENV_VAR=value

specific::
* NODE_DEBUG,
* NODE_DISABLE_COLORS,
* NODE_ICU_DATA,
* NODE_PATH,
* NODE_REPL_HISTORY,
[https://nodejs.org/docs/v6.3.1/api/cli.html#cli_environment_variables]

learning of lagJsnd

generic::
* Jsgn-learning,

name::
* McsEngl.lagJsnd'learning,

addressWpg::
* https://blog.risingstack.com/node-hero-tutorial-getting-started-with-node-js/,

EVOLUTING of lagJsnd

name::
* McsEngl.lagJsnd'evoluting,

addressWpg::
* {2018-03-21} History of Node.js on a Timeline,

Time:
Node.js was originally written in 2009 by Ryan Dahl.
The initial release supported only Linux.
Its development and maintenance was led by Dahl and later sponsored by Joyent.

Dahl was inspired to create Node.js after seeing a file upload progress bar on Flickr.
The browser did not know how much of the file had been uploaded and had to query the Web server.
Dahl desired an easier way.

Dahl demonstrated the project at the inaugural European JSConf on November 8, 2009.
Node.js combined Google's V8 Javascript engine, an event loop and a low-level I/O API.
The project received a standing ovation.

In 2011, a package manager was introduced for the Node.js environment called npm.
The package manager makes it easier for programmers to publish and share source code of Node.js libraries and is designed to simplify installation, updating and uninstallation of libraries.

In June 2011, Microsoft and Joyent implemented a native Windows version of Node.js.
The first Node.js build supporting Windows was released in July 2011.

In January 2012, Dahl stepped aside, promoting coworker and npm creator Isaac Schlueter to manage the project.
In January 2014, Schlueter announced that Timothy J. Fontaine would lead the project.

In December 2014, Fedor Indutny started io.js, a fork of Node.js.
Due to the internal conflict over Joyent's governance, io.js was created as an open governance alternative with a separate technical committee.
Unlike Node.js, the authors planned to keep io.js up-to-date with the latest releases of the Google V8 Javascript engine.

In February 2015, the intent to form a neutral Node.js Foundation was announced.
By June 2015, the Node.js and io.js communities voted to work together under the Node.js Foundation.

In September 2015, Node.js v0.12 and io.js v3.3 were merged back together into Node v4.0.
This brought V8 ES6 features into Node.js, and a long-term support release cycle.
As of 2016, the io.js website recommends that developers switch back to Node.js.

[https://en.wikipedia.org/wiki/Node.js#History]

lagJsnd.version

name::
* McsEngl.lagJsnd.version,
* McsEngl.lagJsnd'version,

AddressWpg:
* https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_ARCHIVE.md,

lagJsnd.6-0-0.2016-04-26:
* changelog,
* The v6 release line will be covered by the Node.js Long Term Support plan starting in October 2016,
* 6.0.0 (current) - 6-3-0.2016-07-06 (current),

lagJsnd.5-0-0.2015-10-29:
* changelog,
* Official support for the v5 release line is scheduled to expire around June 2016. Users of v5 should upgrade to Node.js v6,
* 5.0.0 (stable) - 5.12.0 (stable),

lagJsnd.4-0-0.2015-10-07:
* changelog,
* Node.js v4 is covered by the Node.js Long Term Support Plan and will be supported actively until April 2017 and maintained until April 2018,
* 4.0.0 (stable) - 4-4-7.2016-06-28 (LTS),

lagJsnd.0-12-0.2015-02-06:
* changelog,
* Node.js v0.12 is covered by the Node.js Long Term Support Plan and will be maintained until December 31st, 2016,
* 0.12.0 (stable) - 0.12.15-2016.06.23 (maintenance),

lagJsnd.0-11-0.2013-03-28:
* changelog,
* 0.11.0 (unstable) - 0.11.14 (unstable),

lagJsnd.0-10-0.2013-03-11:
* changelog,
* 0.10.0 (stable) - 0.10.46 (maintenance),

lagJsnd.0-9-0.2012-07-20:
* changelog,
* 0.9.0 (unstable) - 0.9.12 (unstable),

lagJsnd.0-8-0.2012-06-25:
* changelog,
* 0.8.0 (stable) - 0.8.25 (maintenance),

lagJsnd.0-7-0.2012-01-16:
* changelog,
* 0.7.0 (unstable) - 0.7.12 (unstable),

lagJsnd.0-6-0.2011-11-04:
* changelog,
* 0.6.0 (stable) - 0.6.20 (maintenance),

lagJsnd.0-5-0.2011-07-05:
* changelog,
* 0.5.0 - 0.5.10,

lagJsnd.0-4-0.2011-02-10:
* changelog,
* 0.4.0 - 0.4.12,

lagJsnd.0-3-0.2010-10-23:
* changelog,
* 0.3.0 - 0.3.8,

lagJsnd.0-2-0.2010-08-20:
* changelog,
* 0.2.0,

lagJsnd.0-1-0.2009-06-30:
* changelog,
* 0.1.0 - 0.1.104,

lagJsnd.0-0-3.2009-06-11:
* changelog,
0.0.3 - 0.0.6

meta-info

this webpage was-visited times since {2016.05.04}

page-wholepath: synagonism.net / worldviewSngo / Javascript / lagJsnd

footer:
• author: Kaseluris.Nikos.1959
• email:
 imgMail
• twitter: @synagonism
===
• github: https://github.com/synagonism/McsWorld/blob/master/dirTchInf/McsTchInf000012.last.html,

SEARCH THE-PAGE:
This page uses 'locator-names', names that when you find them, you find the-LOCATION of the-concept they denote.
Type CTRL+F "Mcs.[Jsgn|Jsbr|Jsnd]words-of-concept's-name", to go to the-LOCATION of the-concept.
There are about 400 sub-concepts in this concept (ebook) with 1,400 names and 14,000 lines of hitp-document.

webpage-versions:
• version.dynamic: McsTchInf000012.last.html,
• version.7-0-0.2021-04-09: (6-19) ../../dirMiwMcs/dirTchInf/filMcsLagJsnd.7-0-0.2021-04-09.html,
• version.6-0-0.2017-11-26: ../../dirMiwMcs/dirTchInf/FilMcsLjsn.6-0-0.2017-11-26.html,
• version.4.2017-07-11: ../../dirMiwMcs/dirTchInf/filMcsLjsn.4.2017-07-11.html,
• version.3.2016-08-22 (2-4): ../../dirMiwMcs/dirTchInf/filMcsLjs.3.2016-08-22.html,
• version.2.2016-08-04.Jsgn-Jsnd (1-33): ../../dirMiwMcs/dirTchInf/filCptLjs.2.2016-08-04.html,
• version.1-21.2016-05-26: ../../dirMiwMcs/dirTchInf/lngJs.1-21.2016-05-26.html,
• version.1-17.2016-05-23: ../../dirMiwMcs/dirTchInf/lngJs.1-17.2016-05-23.html,
• version.1-11.2016-05-18: ../../dirMiwMcs/dirTchInf/lngJs.1-11.2016-05-18.html,
• version.1.2016-05-10.ljb.created: ../../dirMiwMcs/dirTchInf/lngJs.1.2016-05-10.html,

support (Link)

comments (Link)