AJS-Object API

Version Date Notes
0.0 07/02/07 Initial Beta-Release
0.1 24/02/07 Dropped prefix/suffix 'Context' parameter from Set????? etc signatures
Fixed bug: wrong 'this' in Interceptee calls
Fixed bug: SetSuffix problem
Fixed bug: execution-limit problem
Fixed bug: multiple-Set????? exceptions problem (IE specific)
Changed SetSymmetricWrapperCtrl signature
Changed 'NodePair' type-name to 'Intercept'
Changed 'Node' type-name to 'AffixCtrl'
Changed type strings returned by getType
Changed 'AspectJS' object-name to 'AJS'
Changed 'AspectJS_HP' object-name to 'AJS_HP'
0.2 12/03/07 Dropped getType method from the AffixCtrl type
Removed visibility of sentinel affixes
Relaxed restriction on multiple calls to Add????? for a given interceptee
Fixed bugs: execution-limit in AJS_HP
Changed Set????? method names to Add?????
Changed Insert????? method names to Add?????
Changed object-type returned from addPrefix and addSuffix
Added promote/demote methods to AffixCtrl type
1.0 18/03/07 Fixed bug: incorrect 'this' return in certain AJS_HP methods
Fixed bug: incorrect 'this' in suffix calls in AJS_HP.addSuffix, AJS_HP.addWrapper and AJS_HP.addSymmetricWrapperCtrl
Fixed bug: intercept detection propblem
Added promote, demote, remove and setExecMax methods to WrapperCtrl type
1.1 08/12/08 Refactored AJS-object implementation
Dropped AJS_HP
Dropped addSymmetricWrapperCtrl
Dropped unsecure undocumented methods
Removed parameter checking from AJS/AffixCtrl/WrapperCtrl methods (replaced by aJS_DbC)
Removed nullFuncCount attribute from AJS object
Removed potential 'this' sensitivity from AJS/AffixCtrl/WrapperCtrl types
Rescinded AffixCtrl exception-swallowing policy
Rescinded ability to remove an affix while it/its-siblings are executing
Changed argument order in AffixCtrl function signatures
Renamed methods with lower-case leading letters
Renamed getExecsRemaining to getExecs
Renamed setExecMax to setExecs
Renamed internal 'Proxy' function to 'AJSProxy' (for reasons of second-party readability)
Renamed internal Execute_ function to AffixCtrlExecutor (for reasons of second-party readability)
Relaxed IOwner type-restriction to allow functions and strings
Added getVersion method to AJS object
Added getArg to AffixCtrl types
Added setArg to AffixCtrl and WrapperCtrl types
Added isAttached method to AffixCtrl and WrapperCtrl type
Added suspend and resume methods to AffixCtrl and WrapperCtrl types
Added suspendAll and resumeAll methods to AffixCtrl and WrapperCtrl types
Added getSuspensions method to AffixCtrl type
Added getFunc to AffixCtrl types
Added setFunc to AffixCtrl and WrapperCtrl types
Added getNumAffixes to AffixCtrl type
Added getFirstSib/getLastSib to AffixCtrl type
Added getNumPfixes/getNumSfixes to interceptee properties
Added getNumPfixes/getNumSfixes to interceptee properties
Added getFirstPFix/getLastPfix to interceptee properties
Added getFirstSFix/getLastSfix to interceptee properties
Added interceptee function-object property preservation
Implemented aJS_Logger
Implemented aJS_DbC
1.2 20/03/15 Dropped affix Arg and Execs features, along with all corresponding arguments, and methods
Dropped onInterceptionRemoval method from interceptee objects
Dropped aJS_Logger, re-implemented that functionality as AJS_Logger
Dropped aJS_DbC, re-implemented that functionality as AJS_Validator
Fixed bug: removal of final affix caused re-instatement of method body when it had been deleted previously
Fixed bug: properties that had been deleted from proxy were not deleted from interceptee body
Changed: suffix functions can now alter an interceptees return value
Changed: renamed getPfixTot and getSfixTot to getNumPfixes and getNumSfixes
Added getCardinality to AffixCtrl objects
Added functionality to accomodate ES5 freeze, seal and preventExtensions features (when on ES5 run-times)
Added functionality to accomodate ES5 defineProperty feature (when on ES5 run-times)
Added functionality to seal AJS object upon creation (when on ES5 run-times)