The PINF JavaScript Loader asynchronously combines what you would traditionally call a package installer and
class loader and is intended to be used as the core to all your JavaScript applications no matter what
platform they run on.

The loader allows for bootstrapping a state-of-the-art, consistent and portable CommonJS environment
for any supported platform (on servers, in browsers, desktop applications, secure sandboxes, and embedded) and thus
is ideally suited to be used as the target for the commonjs command (currently being standardized) and the
development of cross-platform JavaScript applications and libraries that may be shared with the CommonJS ecosystem.

This module loader brings CommonJS Modules/2(currently in draft) plus
CommonJS Packages, Package Mappings and further concepts to the following platforms:

commonjs - Use it as a target for the commonjs command being standardized

NodeJS - Use it in any NodeJS application (Default CLI and utility platform until API adapters come along)

The loader extends the core CommonJS platform defined by the above specifications
with the following additions:

CommonJS Programs/A (strawman) (Not Yet Documented)

Various additions and generalizations to be able to load a wide range of packages. (Not Yet Documented)

The loader can be used:

By calling it from the command line to run a program

By require()ing it from any CommonJS module to load a sub-program

By setting it up as a package server to load programs into a browser

To export CommonJS programs to be loaded by CommonJS compliant loaders

The loader:

Aims to be complete and fully specification compliant where possible.

Aims to validate the CommonJS Program and Mappings approaches and inform CommonJS specifications.

Provisions and executes programs by downloading and linking dependencies on first use.

By default isolates the dependencies for each program.

Can provision complex applications (programs) composed of hundreds of packages by contacting an open network of public registry and repository servers. (Not Yet Implemented)

Can load complex applications (programs) composed of hundreds of packages from Content Delivery Networks fed by a simple program server. (Not Yet Implemented)

Supports REMOTE LIVE application DEBUGGING and EDITING for DEPLOYED applications running on any ANY PLATFORM (eval() or equivalent required). (Not Yet Implemented)

The loader is a sub-project of the PINF Toolchain Automation Platform where an application
(program) is a view into the toolchain that statically links package-based dependencies.

The toolchain is an organized body of code & services maintained collectively for the purpose of
automating software production and system operation. Any CommonJS package may be used as part of the toolchain.

Install

Minimum Requirements:

UNIX system (Windows support is under development but still has some way to go)

Documentation License

Code License

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.