Skip to content
iskitz edited this page Jan 28, 2013 · 38 revisions

ajile

__A__dvanced __J__avaScript __I__mporting & __L__oading __E__xtension enables namespace creation and on-demand script loading in browser-based JavaScript environments.

Release History

  • 2013.01.28: ajile 1.5.0
    • Improved: Fixed bug where aggressive cloaking stopped modules from being evaluated.
    • Improved: Fixed bug that caused cloaking of JavaScript's core Object and Function types.
    • Improved: Fixed bug in detecting a namespace's load-time options.

  • 2013.01.27: ajile 1.4.5
    • New: Ensures the execution order of loaded and imported scripts in modern browsers via script.async=false.
    • Improved: Fixed bug that skipped notifying internal import listeners.
    • Improved: Compatibility: WebWorkers and nodeJS: Removed unnecessary window reference from all window.clear* and window.set* timer statements.
    • Improved: Compatibility: WebKit 125.4: Commented-out un-parsable callback function names.
    • Improved: Added a "global" scope reference to ajile's closure.
    • Improved: Replaced all non-window-specific window references with the global reference.
    • Improved: Minor Code Cleanup: Load()

  • 2013.01.27: ajile 1.3.8
    • New: Supports Ajile.AddImportListener ("<any-global-property-name>", ...);.
    • New: Supports Ajile.AddImportListener ("ShortName", ...);
    • Improved: Fixed bug that broke Ajile.AddImportListener (function listener (moduleName){...});.
    • Improved: Faster and more stable import notifications.
    • Improved: Faster namespace-to-path resolution via 98% less comparisons on average, 30% less in worst case.
    • Improved: Import(), ImportAs() and Include() looks for the module/namespace in memory before attempting to load its script.
    • Improved: Import(), ImportAs() and Include() used after Ajile.Unload() will re-load the module/namespace's script.
    • Improved: Import(), ImportAs() and Include() auto-resolves module and namespace paths using their namespace notation.
    • Improved: Minor Code Cleanup: Load() and internal import methods.

  • 2007.12.30: ajile 1.2.1
    • New: iCab 3.0.3+, OmniWeb 5.6+, Opera 5+, and SeaMonkey 1.0+ support.
    • New: Firebug, YUI, & Mochikit log level (info, warn, error) support.
    • New: SyntaxHighlighter JScript Brush with on-demand loading.
    • New: Ajile's re-initialization is now auto-detected and handled.
    • New: Ajile's version preserved even when removed from file name.
    • New: Global undefined for pre-JavaScript 1.3 browsers.
    • Improved: Fixed script double-loading bug seen in IE browsers.
    • Improved: Fixed log output corruption bug.
    • Improved: IE detection using JScript conditional compilation.
    • Improved: Ajile's runtime instance is now a light object literal.
    • Improved: Ajile's runtime source is now DOM invisible.
    • Improved: Faster & more efficient directive fail-safes.
    • Improved: More robust Import & Include listener notification.
    • Improved: More robust & efficient Ajile.ShowLog().
    • Improved: Performance boost via fail-fasts, variable caching, & less strings.
    • Improved: Updated Examples page content, layout & keyboard navigation.


  • 2007.10.05: ajile 0.9.9.2
    • Improved: IE support via refactored Ajile.Unload().
    • Improved: Fixed logging typo caused by ajile 0.9.9's refactoring.
    • Improved: Safari support via Namespace in SyntaxHighlighter.

  • 2007.09.28: ajile 0.9.9.1
    • Improved: Fixed MVC bug observed when "." is in a page's query string.
    • Improved: Fixed minor regression caused by ajile 0.9.9's refactoring.
    • Improved: Code cleanup on Examples page.
    • Improved: Fixed errors in Directives & Options API documentation.

  • 2007.09.16: ajile 0.9.9
    • Improved: Faster Import via code refactoring.
    • Improved: Fixed bug with versioned Imports and Includes.
    • Improved: Fixed bug with wildcard Includes.
    • Improved: Code cleanup and refactoring for improved performance.
    • Improved: Fixed debug log/Firebug compatibility issue.
    • Improved: Fixed Directives API documentation typos

  • 2007.09.04: ajile 0.9.8
    • New: Now supports Mozilla 0.9.1+ browsers.
    • New: Cloaking now supported in IE 5.01+.
    • New: Now uses YUI Compressor for code compression (~25K).
    • New: Examples page now use SyntaxHighlighter 1.5.1 for code highlighting.
    • Improved: Ajile.Unload() now unloads empty com.iskitz.ajile namespace.
    • Improved: Ajile.Unload() now unloads all legacy directives.
    • Improved: Updated Ajile.Unload() description in API docs.
    • Improved: Naming conflict warning provides more alternatives.
    • Improved: Code cleanup and refactoring for better cross-browser support.
    • Improved: Examples page clean-up and LoadExample correction.
    • Improved: Restored Examples page support for Blazer 3.0 on Treo 600.
    • Improved: Fixed month error in debug log's date-time stamp.

  • 2007.07.30: ajile 0.9.5
    • New: Include directive for importing without short-name access.
    • New: Now supports Camino 1.0+ browsers.
    • Improved: Cloaking now degrades gracefully for older browsers.
    • Improved: Cleaner log output with shorter timestamp & better grouping.
    • Improved: Added protection for improper instantiation of custom data types.
    • Improved: Better support for older browsers.
    • Improved: General code cleanup.

  • 2007.07.24: ajile 0.9
    • New: Supports all Firefox, IE 4.01+, and Netscape 6.0.1+ browsers.
    • New: Ajile.Unload([ns|module]) for namespace & module unloading.
    • New: Now uses jsUnit as testing framework.
    • New: Debug log integration with Firebug, MochiKit, & YUI loggers.
    • Improved: Full API backwards compatibility to JSPackaging 1.0 using legacy option.
    • Improved: Stronger defense against external Object.prototype changes.
    • Improved: Simplified examples & updated Examples page with unobtrusive scripting.
    • Improved: Compressed using custom_rhino.jar.
    • Improved: Discontinued packer use; broke working code & incompatible with IE 4 & 5

  • 2007.03.11: ajile 0.7.9
    • New: legacy load-time option to control backwards compatibility.
    • New: Ajile.EnableLegacy() to control backwards compatibility.
    • New: Legacy support is disabled by default.
    • New: Added documentation for all load-time options.
    • Improved: Ajile.EnableOverride() now works as intended.
    • Improved: Added packed version to download; used Dean Edward's Packer.
    • Improved: Removed documentation for deprecated features.

  • 2006.12.29: ajile 0.7.8
    • New: Safari supported added.
    • Improved: Import handling of circular references.

  • 2006.12.16: ajile 0.7.5
    • New: Active defense against external Object.prototype changes.
    • Improved: Treo 600 Blazer 3.0 browser support restored.
    • Improved: Import behavior stabilized for supported browsers.
    • Improved: Import more reliable for slow connections.
    • Improved: Import("some.namespace.*") leakage stopped.
    • Improved: More accurate Import & Load event logging.
    • Improved: General code cleanup & other minor fixes.

  • 2006.09.28: ajile 0.7
    • New: refresh load-time option to manipulate script caching.
    • New: Ajile.EnableRefresh() to manipulate script caching.
    • Improved: More efficient & reliable Import for supported browsers.
    • Improved: More compatible cloaking for varied Import scenarios.
    • Improved: More accurate and informative debug logging.
    • Improved: Logging of Import listener notifications.
    • Improved: Logging of Namespace load-time options.
    • Improved: Removed status bar message.
    • Improved: General code cleanup and other minor fixes.

  • 2006.09.11: ajile 0.6.5
    • New: mvcshare load-time option to manipulate shared auto-loader.
    • New: Simultaneous per-page & shared auto-loader use by default.
    • Improved: MVC: Reintroduced ajile 0.5.5's shared auto-loader.
    • Improved: MVC: Fixed dot-delimited per-page auto-loader loading.
    • Improved: Import listeners only notify after dependency validation.
    • Improved: General code cleanup and other minor fixes.

  • 2006.08.02: ajile 0.6.2
    • New: Versioned Imports.
    • New: Configurable name conflict handling.
    • New: Configurable runtime source code cloaking.
    • New: Load-time option setting (set options in Ajile's src tag).
    • New: Import event notification.
    • New: Version detection from filename.
    • Improved: MVC support with per-page auto-loaders that replace version 0.5.5's shared auto-loader.
    • Improved: Support wildcard imports for single file namespaces.
    • Improved: Programmatic option setting.
    • Improved: Greater packaging flexibility (not just '.' or '/')
    • Improved: More informative debug log output.
    • Improved: Faster Import path resolution.

  • 2006.07.11: ajile 0.5.5
    • Improved: Restored browser support for Blazer 3.0 on Treo 600.
    • Improved: Fixed wild-card imports: Import("com.mydomain.*");
    • Improved: More user-friendly debug log viewing via Ajile.ShowLog().
    • Improved: Better runtime source code cloaking.
    • Improved: Modified Load to circumvent MSIE 6 DOM incompatibility.
    • Improved: Removed enhanced window.alert() due to MSIE 6 DOM conflicts.

  • 2006.06.08: ajile 0.5
    • New: Now supports Opera 7.54+.
    • New: Automatic runtime source code cloaking.
    • New: Simplified use via shared auto-loader (index.js).
      • Simplifies use by making the com.iskitz.ajile.<version>.js script file the only one that needs to be specified in the web page. All other script/module dependencies can be defined within the file without modifying the web page, great for MVC implementations!.
    • New: Debug log viewing via Ajile.ShowLog() function.
    • New: Memory management via Ajile.Unload() function.
    • New: HTML DOM Insertion of inline JavaScript.
    • Improved: Faster importing with no window.onload dependency.
    • Improved: Debug logging via enhanced window.alert() function.
    • Improved: Renamed Ajile.DOT_NAMESPACE property to Ajile.USE_NAME.
    • Improved: Renamed Ajile.DIR_NAMESPACE property to Ajile.USE_PATH.
    • Improved: Backwards compatibility for renamed properties.

  • 2006.01.22: ajile 0.4
    • New: ImportAs directive:
      • ImportAs ("MyAlias", "com.yoursite.SpecialType");
      • Increases the developer's ability to control imported types or objects and is an excellent means for handling type ambiguities.
    • New: Ambiguity example showcasing ImportAs.
    • Improved: Renamed Package directive to Namespace.
    • Improved: Renamed PackageException to NamespaceException.
    • Improved: Backwards compatibility for Package and PackageException.
    • Improved: Better auto-detection of script path and packaging style.
    • Improved: Better resource cleanup when unloaded.

  • 2005.11.01: ajile 0.3.7
    • Improved: Namespace changed to com.iskitz.ajile.
    • Improved: Fixed bug with automatic path detection for imports.
    • Improved: Single module for DOM 2 EventTarget emulation.
    • Improved: Compressed ajile and DOM 2 EventTarget modules.
      • ajile and the DOM 2 EventTarget modules are now 50% smaller. The reduced footprint results in significantly faster load times when used in the Internet environment.
    • Improved: General cleanup (dead code removal, etc.).

  • 2005.09.30: ajile 0.3.6b
    • ajile 0.3.6b is the first release of ajile, previously known as JSPackaging. This release introduces a stable and more reliable approach to dynamic JavaScript importing and loading.
    • New: Renamed JSPackaging to ajile, a play on the word agile, meaning fast, light and nimble.
    • New: Now automatically identifies and loads a HTML page's JavaScript file[s].


  • 2004.02.08: JSPackaging 2.0
    • New functionality plus ease of use and many other improvements.

  • 2003.11.19: JSPackaging 1.0
    • Michael Lee (iskitz) created JSPackaging to eliminate the client-side JavaScript name and scope collisions that often can occur when using multiple JavaScript libraries or files within a single HTML document. JSPackaging provides an API for:
      • Defining namespaces for encapsulating data and functionality.
      • Defining script dependencies.
      • Simplified external script loading via:
        • HTML DOM Insertion of local JavaScript files.
        • HTML DOM Insertion of remote JavaScript files without same-origin restrictions.