ServerJS/Modules/Environment

From MozillaWiki
< ServerJS‎ | Modules
Revision as of 21:51, 1 March 2009 by KrisKowal (talk | contribs) (→‎The Environment Function/Object: reserved additional terms for the environment)
Jump to navigation Jump to search

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".

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