Framework base classes, including: Hemi for creating framework objects and loading external libraries; Hemi.xml for AJAX and JSON requests (libXmlRequest derivative); Hemi.registry for object repository management; Hemi.message for delegating message subscriptions and publications.
Helper utilities for creating Application Spaces, Application Components, XHTML Components, and loading
The Application Component is a portable and reusable set of code that can act as code-behind for HTML elements, quickly instrument event handling, and quickly load external templates within their own Application Space.
Distributed Application Components extends the Application Component to support a single file deployment. Application Components, Templates, Fragments, Modules, and Tasks may be combined into a single XML file for ease of sharing and reuse.
Modules are external script instrumented with a basic API to operate within the Hemi framework and be included in the Hemi.registry service. Similar to Application Components, the concept permits a typical external JavaScript format but which operates within its own namespace. The module class also includes basic support for unit testing, so that modules may be quickly written to act as externally loaded unit tests. For example, the
Test Modules are Modules decorated for unit testing. For example, the
Application Spaces are controlled environments in which the content (XHTML and XML nodes) drives the implementation (via Application Space Definitions). XHTML Nodes (Presentation Nodes) that match space definitions are represented as XHTML Components. XHTML Components can automatically load Application Components, Modules, and Templates (which in turn spawn their own Application Space). These components can be retrieved using unique object identifiers, or more friendly reference identifiers which are contextually sensitive to the space. Form fields are augmented by the Hemi.data.form service to create Virtual Forms. Spaces can load automatically, or use the Hemi.task service to bootstrap asynchronous dependencies.
Application Space Definitions define the mapping between XML and XHTML nodes and JavaScript constructors. The constructors can be from any framework or library, not just Hemi.
The CSS Utility class includes tools for positioning, importing external stylesheets, and enabling and disabling stylesheets.
The Form Service is used to represent form elements in a Virtual Form instead of a traditional HTML Form collection. Virtual Forms track values whether or not the backing element exists (or is rendered), and Virtual Form Elements may be aggregated as desired. With Application Spaces, Virtual Forms are aggregated at the space level.
The Data IO service is used to broker data requests with configured data providers. The built-in interchange format is loosely modelled on the Account Manager 4 Data and Group object model, but the implementation is open for any object type.
The Data Stack is a class for storing and retrieving values that may or may not have unique identifiers, and which don't qualify for or need to be stored in the Hemi.registry service.
The Data Validator service applies patterns defined by Data Validator Definitions, and may be used for Virtual Forms from the Data Form service to validate against field values whose nodes may or may not exist.
Data Validator Definitions define validation patterns for verifying form field and custom control (e.g.: Hemi.ui.wideselect) input matches expected patterns and allowable characters. Patterns may be chained together and defined with a meaningful description for end users.
The Application Driver is a bootstrap for leveraging browser load and unload events to start and stop the framework.
The Event class provides utilities for working with the browser event object, listening to and capturing events, and decorating Framework Objects with an API for scoping handlers back to the object.
Data provider for static file and data sets within the Hemi Framework.
The Canvas class provides a shape management layer for browsers that support Canvas, including a temporary drawing layer and event to shape coordination.
The Monitor service provides a passive client-side monitor framework. Monitors collect and aggregate data per page view and send that data to a server for Web analytics processing. The Account Manager 4 project includes a reference implementation.
The object utility class includes an API decorator for object mapping.
The XHTML Component class is used to represent an XHTML Node within the Hemi Framework as a registered object. This class also coordinates the XHTML Node with referenced Application Components, Modules, Templates, Distributed Application Components, and Virtual Forms, and is used with Application Spaces as an Application Space Definition.
A bridge for implementing DOM Storage or Storage facades.
A lightweight wrapper around the DOM Storage API.
A DOM Storage facade for Internet Explore 6 and 7, using the Hemi Configuration class and the Internet Explorer User Data behavior.
The Task Service coordinates various actions and handlers and dependencies. Tasks are excellent bootstraps for multiple asynchronous operations.
The text class includes Text node and String manipulation utilities.
The Transaction Service provides an object-level communication bus. Unlike events, delegates, and message subscriptions and publications, the transaction service coordinates disimilar objects on a common band. Non Framework Objects may be decorated with the Transaction Participant API, and allow cross-Framework coordination.
The WideSelect control is a list control which supports buffered and paginated presentation.
The utility class includes node and object help functions.
The Configuration class imports and parses XML for providing application level configuration.
The Logger class may be used to instrument an object with logging functionality. Application logging is handled by the Hemi.message.service.sendMessage function, which supports multiple levels of message levels and message scoping.
The Thread class provides a psuedo-thread implementation for Framework Objects. Each thread is sensitive to the object lifecycle, and can stop itself when the object is destroyed or when the framework is shutdown.
The URL class parses URIs into individual parts. The class also supports resolving relative paths against specified URLs.
Utilities for exploit mitigation.
The Wire Service is used to chain multiple primitive wires (which connect disparate functions).
The primitive wire service is used to connect two disparate functions together.
The worker is a managed wrapper for the HTML 5 DOM Worker. Hemi Worker implements the
[ Hemi JavaScript Framework - Stephen W. Cote, 2002 - 2009. ]