ServerJS/Modules/Environment: Difference between revisions

m (→‎The Environment Function/Object: reserved additional terms for the environment)
m (Moved "Environment" to "Loaders".)
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Any members of a specified object (including modules, or enumerated argument options) that are not reserved by the specification must be named with "x" as their first term and a vendor-specific label as their second term, like "require.xChironCurryId" or "environment.xCajaDomita".
Moved to [[ServerJS/Modules/Loaders]].
 
== The Require Function/Object ==
 
* id: the "require" object may have an "id" member that must be the normalized identifier of the current module
* loader: the "require" object may have a "loader" member that is an interface to the object used by "require" to acquire module factory functions.  Tampering with this variable must not alter the behavior of "require".
** load: the "loader" object, if present, must have a "load" method that returns a module factory function.
*** a module factory function must accept "require", "exports", and "environment" as its first arguments.
*** a module factory function may accept additional optional arguments.
** fetch: a module loader, if present, must provide a "fetch" method that returns the text of a module for a given normalized, fully-qualified, absolute module identifier.
** evaluate: a module loader, if present, must provide an "evaluate" method that accepts a module text and returns a module factory function
*** a module text must be a string that conforms to a JavaScript "program" construction.
** resolve: a module loader, if present, must provide a "resolve" method that accepts a module identifier (that may be a relative module identifier) and optionally a base module identifier (that must be an absolute module identifier) and returns the corresponding absolute identifier of the former.
** normalize: a module loader, if present, must provide a "normalize" method that accepts an absolute module identifier and returns that identifier in its canonical form.  Normalize may be an identity relation.
** path: a module loader, if present, may provide a path member that must be an Array.  The contents of each element of the array are implementation-specific.
 
== The Environment Function/Object ==
 
A module receives an "environment" variable that is an Object.
 
* print: The "environment" may have a "print" function that accepts a "message" and an optional "label" String.
** The label may be one of "log", "warn", "error", "pass", "fail".
** Any other, unspecified label must be in lower-case and begin with "x" and a vendor-specific label like "x-v8cgi-database".
* is: any member that has "is" as its first term is reserved for vendor and platform checks like "isRhino", "isJavaScriptCore", "isSpidermonkey", "isBrowser", &c.
* window: the "environment" may contain the global "window" object in permissive browser environments
* global: the "environment" may contain a reference to the global object in permissive environments
* posix: reserved for a posix subsystem interface
* fs: reserved for a securable file system interface
* dom: reserved for a securable dom interface

Latest revision as of 09:07, 11 April 2009