src/cm/media/js/lib/yui/yui_3.10.3/releasenotes/HISTORY.io.md
changeset 525 89ef5ed3c48b
equal deleted inserted replaced
524:322d0feea350 525:89ef5ed3c48b
       
     1 IO Utility Change History
       
     2 =========================
       
     3 
       
     4 3.10.3
       
     5 ------
       
     6 
       
     7 * [security] Hardened SWF file by filtering all data passed through ExternalInterface to fix XSS vulnerability.
       
     8 
       
     9 3.10.2
       
    10 ------
       
    11 
       
    12 * No changes.
       
    13 
       
    14 3.10.1
       
    15 ------
       
    16 
       
    17 * [security] Hardened SWF file by filtering all data passed through ExternalInterface to fix XSS vulnerability.
       
    18 
       
    19 3.10.0
       
    20 ------
       
    21 
       
    22 * No changes.
       
    23 
       
    24 3.9.1
       
    25 -----
       
    26 
       
    27 * No changes.
       
    28 
       
    29 3.9.0
       
    30 -----
       
    31 
       
    32 * Normalized IO's handling of falsy request and response bodies. A majority of
       
    33   the environments want request/response bodies to always be a string, so they
       
    34   use an empty string instead of undefined, null, etc.
       
    35 
       
    36   This specifically fixes two issues:
       
    37 
       
    38   * IE 10 converts a response body of `undefined` to the literal string:
       
    39     `"undefined"`. No other environments do this, so a change has been made to
       
    40     default the request body to `""` unless it has a non-falsy value.
       
    41 
       
    42   * IO's node.js transport uses the Request npm module, which returns
       
    43     `undefined` when a response has no body. This normalize IO's `responseText`
       
    44     to an empty string when Request returns a false response body.
       
    45 
       
    46 
       
    47 3.8.1
       
    48 -----
       
    49 
       
    50 * Exposed IO's form serialize via the new `Y.IO.stringify()` method.
       
    51   [Ticket #2529073] [Pull Request #351] [John Lindal]
       
    52 
       
    53 * Stringified request data is now passed to custom transport layers.
       
    54   [Ticket #2532594] [Pull Request #383] [John Lindal]
       
    55 
       
    56 
       
    57 3.8.0
       
    58 -----
       
    59 
       
    60 * No changes.
       
    61 
       
    62 
       
    63 3.7.3
       
    64 -----
       
    65 
       
    66 * Fixed issue in Chrome where form submits with `upload: true` were not working
       
    67   properly. [Ticket #2531860]
       
    68 
       
    69 * Add `empty()` method to io-queue which clears out all requests waiting to be
       
    70   sent. [Pull Request #282] [Julien Sanchez]
       
    71 
       
    72 
       
    73 3.7.2
       
    74 -----
       
    75 
       
    76 * No changes.
       
    77 
       
    78 
       
    79 3.7.1
       
    80 -----
       
    81 
       
    82 * No changes.
       
    83 
       
    84 
       
    85 3.7.0
       
    86 -----
       
    87 
       
    88 * Prevent IO from maintaining cookies across requests in Node.js.
       
    89   [Ticket #2532676]
       
    90 
       
    91 * Remove "X-Requested-With" header from cross-domain XHRs. Setting any
       
    92   non-standard HTTP headers when performing a cross-domain request using CORS
       
    93   results in a _required_ pre-flight OPTIONS request. Not adding this header by
       
    94   default allows the browser to communicate with a server which is not
       
    95   CORS-ready. [Ticket #2532673] [Clarence Leung]
       
    96 
       
    97 
       
    98 3.6.0
       
    99 -----
       
   100 
       
   101 * Fixed issue when running in Node.js where `config.data` wasn't automatically
       
   102   stringified. [Ticket #2532390]
       
   103 
       
   104 
       
   105 3.5.1
       
   106 -----
       
   107 
       
   108 * No changes.
       
   109 
       
   110 
       
   111 3.5.0
       
   112 -----
       
   113 
       
   114 * Configuration data can now include an instance of FormData for HTTP POST
       
   115   requests. [Ticket #2531274]
       
   116 
       
   117 * Implemented FormData file upload in io-base. [Ticket #2531274]
       
   118 
       
   119 * Fixed transport error in io-base [Ticket #2531308, #2531941, #2531947]
       
   120 
       
   121 * Fixed IO loader meta-data [Ticket #2531320]
       
   122 
       
   123 * Fixed transport error in io-base [Ticket #2531308]
       
   124 
       
   125 * Implemented Node.js compatibility [Ticket #2531495]
       
   126 
       
   127 * Fixed transport error in io-base [Ticket #2531308]
       
   128 
       
   129 * Fixed API docs discrepancy for IO [Ticket #2531756]
       
   130 
       
   131 * Fixed error in sending an XML document as POST data. [Ticket #2531257]
       
   132 
       
   133 * success/failure/complete/etc callbacks that throw errors no longer hijack all
       
   134   future transactions. [Ticket #2532107]
       
   135 
       
   136 
       
   137 3.4.1
       
   138 -----
       
   139 
       
   140 * HTTP 304 now treated as a success condition. [Ticket #2530931]
       
   141 
       
   142 * Fixed transport creation error when both io-xdr and io-upload-iframe modules
       
   143   are in use. [Ticket #2530999]
       
   144 
       
   145 * Querystring stringify added to io-upload-iframe. [Ticket #2531037]
       
   146 
       
   147 * Fixed request abort error in IE. [Ticket #2531038]
       
   148 
       
   149 * Add try/catch to io-upload-iframe response to handle failure cases where the
       
   150   document may be inaccessible. [Ticket #2531041]
       
   151 
       
   152 * Add IO support for XHR basic user authentication. [Ticket #2530023]
       
   153 
       
   154 * Revert Y.mix usage for synchronous requests. [Ticket #2531056]
       
   155 
       
   156 * Fixed io-upload-iframe transport destruction. [Ticket #2531058]
       
   157 
       
   158 
       
   159 3.4.0
       
   160 -----
       
   161 
       
   162 * Added ability to get the configuration of a transaction. [Ticket #2528240]
       
   163 
       
   164 * Instantiable IO. [Ticket #2529314]
       
   165 
       
   166 * IO now uses `event-custom` and event facades. [Ticket #2529317]
       
   167 
       
   168 * Exposed more of the internals of IO for extensibility. [Ticket #2529447]
       
   169 
       
   170 * Fixed IO iframe upload to reset form attributes. [Ticket #2529553]
       
   171 
       
   172 * Add IO support for XHR basic user authentication. [Ticket #2530023]
       
   173 
       
   174 * IO will not send `data` for `GET`, `HEAD` and `DELETE` HTTP methods.
       
   175   [Ticket #2530091]
       
   176 
       
   177 * Fixed issue with IO doubling the URL query-params on a HTTP `GET` request when
       
   178   sending `data` together with form serialization. [Ticket #2530494]
       
   179 
       
   180 
       
   181 3.3.0
       
   182 -----
       
   183 
       
   184 * When using `io-xdr` to load `io.swf`, a date-time stamp will appended, as a
       
   185   query-string, to the transport source for IE. [Ticket #2528898]
       
   186 
       
   187 * Implemented default HTTP headers can be suppressed in the transaction's
       
   188   configuration object by setting the header with a value of `disable`.
       
   189   [Ticket #2529324]
       
   190 
       
   191   For example:
       
   192 
       
   193       var config = { headers: { "X-Requested-With": "disable" } };
       
   194 
       
   195 * Use Y.io without listening for the `io:xdrReady` event. [Ticket #2528710]
       
   196 
       
   197 * Fixed native XDR detection for IE8 in `io-xdr`. [Ticket #2529290]
       
   198 
       
   199 
       
   200 3.2.0
       
   201 -----
       
   202 
       
   203 * Fixed malformed HTML entities in JSON response, when using `io-upload-iframe`.
       
   204   [Ticket #2528646]
       
   205 
       
   206 * Fixed configuration HTTP headers should override preset HTTP headers, when
       
   207   identical. [Ticket #2528893]
       
   208 
       
   209 
       
   210 3.1.2
       
   211 -----
       
   212 
       
   213 * [!] Fixed security vulnerability in `io-xdr` when using the Flash transport.
       
   214   Removed: `Security.allowDomain("*")` setting from `io.as` (source) and
       
   215   `io.swf` (compiled). The implementation reverts back to the version in 3.0.0.
       
   216 
       
   217   This reversion prevents third-party sites from being able to load `io.swf`
       
   218   from a disparate domain, and make HTTP requests with the SWF's domain
       
   219   privileges, and passing the domain's credentials.  Only the domain serving
       
   220   `io.swf` will be permitted to load it, and call its fields.
       
   221 
       
   222   See the "Security Bulletin" for more details:
       
   223   http://yuilibrary.com/yui/docs/io/#security-bulletin
       
   224 
       
   225 
       
   226 3.1.1
       
   227 -----
       
   228 
       
   229 * Fixed broken synchronous IO requests in IE. [Ticket #2528739]
       
   230 
       
   231 
       
   232 3.1.0
       
   233 -----
       
   234 
       
   235 * YUI io now supports synchronous transactions for same-domain requests. To
       
   236   enable synchronous transactions, set the configuration property `sync` to
       
   237   `true`; the default behavior is `false`. During a synchronous request, all io
       
   238   events will fire, and response data are accessible through the events.
       
   239   Response data are also returned by io, as an alternative. [Ticket #2528181]
       
   240 
       
   241   For example:
       
   242 
       
   243       var request = Y.io(uri, { sync: true });
       
   244 
       
   245   `request` will contain the following fields, when the tx is complete:
       
   246 
       
   247     * `id`
       
   248     * `status`
       
   249     * `statusText`
       
   250     * `getResponseHeader()`
       
   251     * `getAllResponseHeaders()`
       
   252     * `responseText`
       
   253     * `responseXML`
       
   254     * `arguments`
       
   255 
       
   256   When making synchronous requests:
       
   257 
       
   258     * The transaction cannot be aborted,
       
   259     * The transaction's progress cannot be monitored.
       
   260 
       
   261 * `arguments` defined in the configuration object are now passed to io global
       
   262   event handlers, as well. [Ticket #2528393]
       
   263 
       
   264 * Only pass the value of the `arguments` property to listeners if defined.
       
   265   [Ticket #2528313]
       
   266 
       
   267 
       
   268 3.0.0
       
   269 -----
       
   270 
       
   271 * Native cross-domain transactions are now supported in `io-xdr`. To specify an
       
   272   XDR transaction, set the config object with the following properties:
       
   273 
       
   274   * `use`: Specify either `native` or `flash` as the desired XDR transport.
       
   275 
       
   276   * `credentials`: Set to `true` if cookies are to be sent with the request.
       
   277     Does not work with XDomainRequest (e.g., IE8) or the Flash transport.
       
   278 
       
   279   * `datatType`: Set to `xml` if the response is an XML document.
       
   280 
       
   281   For example:
       
   282 
       
   283       var configuration.xdr = {
       
   284           use         : 'flash',  // Required -- 'flash` or 'native'.
       
   285           credentials : true,     // Optional.
       
   286           dataType    : 'xml'     // Optional.
       
   287       };
       
   288 
       
   289   The `use` property is required. The others are optional or
       
   290   functionality-specific.
       
   291 
       
   292   When using the native transport, io will fallback to the Flash transport if
       
   293   the browser is not capable of supporting the native mode. Make sure the
       
   294   resource responds with the correct `Access-Control-Allow-Origin` header before
       
   295   attempting a native XDR request.
       
   296 
       
   297 * The sub-module `datatype-xml` is now a dependency for `io-xdr`, to support XML
       
   298   response data in XDR transactions.
       
   299 
       
   300 * XDR transport initialization is simplified to one required value -- the path
       
   301   to Flash transport. For example:
       
   302 
       
   303       Y.io.transport({ src:'io.swf' });
       
   304 
       
   305 
       
   306 3.0.0beta1
       
   307 ----------
       
   308 
       
   309 * The `io-queue` sub-module now implements YUI `Queue`.  The io queue interface
       
   310   allows transaction callback handlers to be processed in the order the
       
   311   transactions were sent, regardless of actual server response order.
       
   312   For example:
       
   313 
       
   314   * io queue is used to make three requests.
       
   315 
       
   316   * The actual server response order happens to be: transaction 2, 1, 3.
       
   317 
       
   318   * However, using the queue interface, the transaction callbacks are processed
       
   319     in the order of: transaction 1, 2, 3.
       
   320 
       
   321 * All transaction event flows now resolves to `success` or `failure`; the abort
       
   322   event is removed. Transaction abort and timeout conditions resolve to
       
   323   `failure`, and is distinguishable in the response data. Specifically, the
       
   324   response object's `status` and `statusText` properties will be populated as:
       
   325 
       
   326   * `response.status` will be 0.
       
   327 
       
   328   * `response.statusText` will be set to `timeout` or `abort` to differentiate
       
   329     the two possible conditions.
       
   330 
       
   331 * A new `end` event is introduced in the transaction event flow; this is the
       
   332   terminal event for all transactions. Its event handler signature is the same
       
   333   as the `start` event, receiving the transaction id and user-defined arguments.
       
   334 
       
   335   * The global event name is `io:end`.
       
   336 
       
   337   * To subscribe to the transaction event, define the `end` property in the
       
   338     transaction's configuration object. `{on: {end: function(){…} } }`.
       
   339 
       
   340 
       
   341 3.0.0 PR2
       
   342 ---------
       
   343 
       
   344 * YUI `io` is now comprised of several modules, allowing users to specify and
       
   345   implement only the needed modules. These modules are:
       
   346 
       
   347   * `io-base`: This is the IO base class, using `XMLHttpRequest` as the
       
   348     transport.
       
   349 
       
   350   * `io-xdr`: This sub-module extends IO to enable cross-domain transactions
       
   351     using Flash as the transport.
       
   352 
       
   353   * `io-form`: This sub-module extends IO to enable the serialization of an HTML
       
   354     form as transaction data.
       
   355 
       
   356   * `io-upload-iframe`: This sub-module extends IO, to allow file uploads with
       
   357     an HTML form, using an `iframe` transport.
       
   358 
       
   359   * `io-queue`: This sub-module extends IO to add transaction queuing
       
   360     capabilities.
       
   361 
       
   362 * If defined in the configuration object, user-specified, HTTP `Content-Type`
       
   363   headers will correctly override POST default headers, for HTTP POST
       
   364   transactions. [Ticket #SF2262707]
       
   365 
       
   366 * XML is not supported as a response datatype when using sub-modules `io-xdr`
       
   367   and `io-upload-iframe`.
       
   368 
       
   369 
       
   370 3.0.0 PR1
       
   371 ---------
       
   372 
       
   373 * Initial Release.