react-source 0.11.1 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/build/JSXTransformer.js +1373 -961
- data/build/react-with-addons.js +3075 -3525
- data/build/react-with-addons.min.js +11 -17
- data/build/react.js +2937 -3301
- data/build/react.min.js +11 -16
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c3cb0306b64d1c4c5aac71c482cd40b8f24760a
|
4
|
+
data.tar.gz: 24ff0130464f8f866aac882f3dadf561a4e33fe4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a2253b7e87f33d91699d53c2bc13dfa6b3834ce8441f72c62add6e615a7f2399d428f9ee43c6f1cbb4638fa167d0a1ba5f756dc544de31d05d9221cb12cef228
|
7
|
+
data.tar.gz: 9f74e054136b138c0367ce0a4e77a928794c6842b67f4a1dde5871acf9dd6d3fb0b42f84a840c2179d5fe92786b8daee88c1385dfdb8fcd2432de30c80ae6921
|
data/build/JSXTransformer.js
CHANGED
@@ -1,7 +1,336 @@
|
|
1
1
|
/**
|
2
|
-
* JSXTransformer v0.
|
2
|
+
* JSXTransformer v0.12.0
|
3
3
|
*/
|
4
|
-
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.JSXTransformer=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);
|
4
|
+
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.JSXTransformer=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
|
5
|
+
/**
|
6
|
+
* Copyright 2013-2014, Facebook, Inc.
|
7
|
+
* All rights reserved.
|
8
|
+
*
|
9
|
+
* This source code is licensed under the BSD-style license found in the
|
10
|
+
* LICENSE file in the root directory of this source tree. An additional grant
|
11
|
+
* of patent rights can be found in the PATENTS file in the same directory.
|
12
|
+
*/
|
13
|
+
/* jshint browser: true */
|
14
|
+
/* jslint evil: true */
|
15
|
+
|
16
|
+
'use strict';
|
17
|
+
|
18
|
+
var buffer = _dereq_('buffer');
|
19
|
+
var transform = _dereq_('jstransform').transform;
|
20
|
+
var visitors = _dereq_('./fbtransform/visitors');
|
21
|
+
|
22
|
+
var headEl;
|
23
|
+
var dummyAnchor;
|
24
|
+
var inlineScriptCount = 0;
|
25
|
+
|
26
|
+
// The source-map library relies on Object.defineProperty, but IE8 doesn't
|
27
|
+
// support it fully even with es5-sham. Indeed, es5-sham's defineProperty
|
28
|
+
// throws when Object.prototype.__defineGetter__ is missing, so we skip building
|
29
|
+
// the source map in that case.
|
30
|
+
var supportsAccessors = Object.prototype.hasOwnProperty('__defineGetter__');
|
31
|
+
|
32
|
+
/**
|
33
|
+
* Run provided code through jstransform.
|
34
|
+
*
|
35
|
+
* @param {string} source Original source code
|
36
|
+
* @param {object?} options Options to pass to jstransform
|
37
|
+
* @return {object} object as returned from jstransform
|
38
|
+
*/
|
39
|
+
function transformReact(source, options) {
|
40
|
+
// TODO: just use react-tools
|
41
|
+
options = options || {};
|
42
|
+
var visitorList;
|
43
|
+
if (options.harmony) {
|
44
|
+
visitorList = visitors.getAllVisitors();
|
45
|
+
} else {
|
46
|
+
visitorList = visitors.transformVisitors.react;
|
47
|
+
}
|
48
|
+
|
49
|
+
return transform(visitorList, source, {
|
50
|
+
sourceMap: supportsAccessors && options.sourceMap
|
51
|
+
});
|
52
|
+
}
|
53
|
+
|
54
|
+
/**
|
55
|
+
* Eval provided source after transforming it.
|
56
|
+
*
|
57
|
+
* @param {string} source Original source code
|
58
|
+
* @param {object?} options Options to pass to jstransform
|
59
|
+
*/
|
60
|
+
function exec(source, options) {
|
61
|
+
return eval(transformReact(source, options).code);
|
62
|
+
}
|
63
|
+
|
64
|
+
/**
|
65
|
+
* This method returns a nicely formated line of code pointing to the exact
|
66
|
+
* location of the error `e`. The line is limited in size so big lines of code
|
67
|
+
* are also shown in a readable way.
|
68
|
+
*
|
69
|
+
* Example:
|
70
|
+
* ... x', overflow:'scroll'}} id={} onScroll={this.scroll} class=" ...
|
71
|
+
* ^
|
72
|
+
*
|
73
|
+
* @param {string} code The full string of code
|
74
|
+
* @param {Error} e The error being thrown
|
75
|
+
* @return {string} formatted message
|
76
|
+
* @internal
|
77
|
+
*/
|
78
|
+
function createSourceCodeErrorMessage(code, e) {
|
79
|
+
var sourceLines = code.split('\n');
|
80
|
+
var erroneousLine = sourceLines[e.lineNumber - 1];
|
81
|
+
|
82
|
+
// Removes any leading indenting spaces and gets the number of
|
83
|
+
// chars indenting the `erroneousLine`
|
84
|
+
var indentation = 0;
|
85
|
+
erroneousLine = erroneousLine.replace(/^\s+/, function(leadingSpaces) {
|
86
|
+
indentation = leadingSpaces.length;
|
87
|
+
return '';
|
88
|
+
});
|
89
|
+
|
90
|
+
// Defines the number of characters that are going to show
|
91
|
+
// before and after the erroneous code
|
92
|
+
var LIMIT = 30;
|
93
|
+
var errorColumn = e.column - indentation;
|
94
|
+
|
95
|
+
if (errorColumn > LIMIT) {
|
96
|
+
erroneousLine = '... ' + erroneousLine.slice(errorColumn - LIMIT);
|
97
|
+
errorColumn = 4 + LIMIT;
|
98
|
+
}
|
99
|
+
if (erroneousLine.length - errorColumn > LIMIT) {
|
100
|
+
erroneousLine = erroneousLine.slice(0, errorColumn + LIMIT) + ' ...';
|
101
|
+
}
|
102
|
+
var message = '\n\n' + erroneousLine + '\n';
|
103
|
+
message += new Array(errorColumn - 1).join(' ') + '^';
|
104
|
+
return message;
|
105
|
+
}
|
106
|
+
|
107
|
+
/**
|
108
|
+
* Actually transform the code.
|
109
|
+
*
|
110
|
+
* @param {string} code
|
111
|
+
* @param {string?} url
|
112
|
+
* @param {object?} options
|
113
|
+
* @return {string} The transformed code.
|
114
|
+
* @internal
|
115
|
+
*/
|
116
|
+
function transformCode(code, url, options) {
|
117
|
+
try {
|
118
|
+
var transformed = transformReact(code, options);
|
119
|
+
} catch(e) {
|
120
|
+
e.message += '\n at ';
|
121
|
+
if (url) {
|
122
|
+
if ('fileName' in e) {
|
123
|
+
// We set `fileName` if it's supported by this error object and
|
124
|
+
// a `url` was provided.
|
125
|
+
// The error will correctly point to `url` in Firefox.
|
126
|
+
e.fileName = url;
|
127
|
+
}
|
128
|
+
e.message += url + ':' + e.lineNumber + ':' + e.column;
|
129
|
+
} else {
|
130
|
+
e.message += location.href;
|
131
|
+
}
|
132
|
+
e.message += createSourceCodeErrorMessage(code, e);
|
133
|
+
throw e;
|
134
|
+
}
|
135
|
+
|
136
|
+
if (!transformed.sourceMap) {
|
137
|
+
return transformed.code;
|
138
|
+
}
|
139
|
+
|
140
|
+
var map = transformed.sourceMap.toJSON();
|
141
|
+
var source;
|
142
|
+
if (url == null) {
|
143
|
+
source = "Inline JSX script";
|
144
|
+
inlineScriptCount++;
|
145
|
+
if (inlineScriptCount > 1) {
|
146
|
+
source += ' (' + inlineScriptCount + ')';
|
147
|
+
}
|
148
|
+
} else if (dummyAnchor) {
|
149
|
+
// Firefox has problems when the sourcemap source is a proper URL with a
|
150
|
+
// protocol and hostname, so use the pathname. We could use just the
|
151
|
+
// filename, but hopefully using the full path will prevent potential
|
152
|
+
// issues where the same filename exists in multiple directories.
|
153
|
+
dummyAnchor.href = url;
|
154
|
+
source = dummyAnchor.pathname.substr(1);
|
155
|
+
}
|
156
|
+
map.sources = [source];
|
157
|
+
map.sourcesContent = [code];
|
158
|
+
|
159
|
+
return (
|
160
|
+
transformed.code +
|
161
|
+
'\n//# sourceMappingURL=data:application/json;base64,' +
|
162
|
+
buffer.Buffer(JSON.stringify(map)).toString('base64')
|
163
|
+
);
|
164
|
+
}
|
165
|
+
|
166
|
+
|
167
|
+
/**
|
168
|
+
* Appends a script element at the end of the <head> with the content of code,
|
169
|
+
* after transforming it.
|
170
|
+
*
|
171
|
+
* @param {string} code The original source code
|
172
|
+
* @param {string?} url Where the code came from. null if inline
|
173
|
+
* @param {object?} options Options to pass to jstransform
|
174
|
+
* @internal
|
175
|
+
*/
|
176
|
+
function run(code, url, options) {
|
177
|
+
var scriptEl = document.createElement('script');
|
178
|
+
scriptEl.text = transformCode(code, url, options);
|
179
|
+
headEl.appendChild(scriptEl);
|
180
|
+
}
|
181
|
+
|
182
|
+
/**
|
183
|
+
* Load script from the provided url and pass the content to the callback.
|
184
|
+
*
|
185
|
+
* @param {string} url The location of the script src
|
186
|
+
* @param {function} callback Function to call with the content of url
|
187
|
+
* @internal
|
188
|
+
*/
|
189
|
+
function load(url, successCallback, errorCallback) {
|
190
|
+
var xhr;
|
191
|
+
xhr = window.ActiveXObject ? new window.ActiveXObject('Microsoft.XMLHTTP')
|
192
|
+
: new XMLHttpRequest();
|
193
|
+
|
194
|
+
// async, however scripts will be executed in the order they are in the
|
195
|
+
// DOM to mirror normal script loading.
|
196
|
+
xhr.open('GET', url, true);
|
197
|
+
if ('overrideMimeType' in xhr) {
|
198
|
+
xhr.overrideMimeType('text/plain');
|
199
|
+
}
|
200
|
+
xhr.onreadystatechange = function() {
|
201
|
+
if (xhr.readyState === 4) {
|
202
|
+
if (xhr.status === 0 || xhr.status === 200) {
|
203
|
+
successCallback(xhr.responseText);
|
204
|
+
} else {
|
205
|
+
errorCallback();
|
206
|
+
throw new Error("Could not load " + url);
|
207
|
+
}
|
208
|
+
}
|
209
|
+
};
|
210
|
+
return xhr.send(null);
|
211
|
+
}
|
212
|
+
|
213
|
+
/**
|
214
|
+
* Loop over provided script tags and get the content, via innerHTML if an
|
215
|
+
* inline script, or by using XHR. Transforms are applied if needed. The scripts
|
216
|
+
* are executed in the order they are found on the page.
|
217
|
+
*
|
218
|
+
* @param {array} scripts The <script> elements to load and run.
|
219
|
+
* @internal
|
220
|
+
*/
|
221
|
+
function loadScripts(scripts) {
|
222
|
+
var result = [];
|
223
|
+
var count = scripts.length;
|
224
|
+
|
225
|
+
function check() {
|
226
|
+
var script, i;
|
227
|
+
|
228
|
+
for (i = 0; i < count; i++) {
|
229
|
+
script = result[i];
|
230
|
+
|
231
|
+
if (script.loaded && !script.executed) {
|
232
|
+
script.executed = true;
|
233
|
+
run(script.content, script.url, script.options);
|
234
|
+
} else if (!script.loaded && !script.error && !script.async) {
|
235
|
+
break;
|
236
|
+
}
|
237
|
+
}
|
238
|
+
}
|
239
|
+
|
240
|
+
scripts.forEach(function(script, i) {
|
241
|
+
var options = {
|
242
|
+
sourceMap: true
|
243
|
+
};
|
244
|
+
if (/;harmony=true(;|$)/.test(script.type)) {
|
245
|
+
options.harmony = true
|
246
|
+
}
|
247
|
+
|
248
|
+
// script.async is always true for non-javascript script tags
|
249
|
+
var async = script.hasAttribute('async');
|
250
|
+
|
251
|
+
if (script.src) {
|
252
|
+
result[i] = {
|
253
|
+
async: async,
|
254
|
+
error: false,
|
255
|
+
executed: false,
|
256
|
+
content: null,
|
257
|
+
loaded: false,
|
258
|
+
url: script.src,
|
259
|
+
options: options
|
260
|
+
};
|
261
|
+
|
262
|
+
load(script.src, function(content) {
|
263
|
+
result[i].loaded = true;
|
264
|
+
result[i].content = content;
|
265
|
+
check();
|
266
|
+
}, function() {
|
267
|
+
result[i].error = true;
|
268
|
+
check();
|
269
|
+
});
|
270
|
+
} else {
|
271
|
+
result[i] = {
|
272
|
+
async: async,
|
273
|
+
error: false,
|
274
|
+
executed: false,
|
275
|
+
content: script.innerHTML,
|
276
|
+
loaded: true,
|
277
|
+
url: null,
|
278
|
+
options: options
|
279
|
+
};
|
280
|
+
}
|
281
|
+
});
|
282
|
+
|
283
|
+
check();
|
284
|
+
}
|
285
|
+
|
286
|
+
/**
|
287
|
+
* Find and run all script tags with type="text/jsx".
|
288
|
+
*
|
289
|
+
* @internal
|
290
|
+
*/
|
291
|
+
function runScripts() {
|
292
|
+
var scripts = document.getElementsByTagName('script');
|
293
|
+
|
294
|
+
// Array.prototype.slice cannot be used on NodeList on IE8
|
295
|
+
var jsxScripts = [];
|
296
|
+
for (var i = 0; i < scripts.length; i++) {
|
297
|
+
if (/^text\/jsx(;|$)/.test(scripts.item(i).type)) {
|
298
|
+
jsxScripts.push(scripts.item(i));
|
299
|
+
}
|
300
|
+
}
|
301
|
+
|
302
|
+
if (jsxScripts.length < 1) {
|
303
|
+
return;
|
304
|
+
}
|
305
|
+
|
306
|
+
console.warn(
|
307
|
+
'You are using the in-browser JSX transformer. Be sure to precompile ' +
|
308
|
+
'your JSX for production - ' +
|
309
|
+
'http://facebook.github.io/react/docs/tooling-integration.html#jsx'
|
310
|
+
);
|
311
|
+
|
312
|
+
loadScripts(jsxScripts);
|
313
|
+
}
|
314
|
+
|
315
|
+
// Listen for load event if we're in a browser and then kick off finding and
|
316
|
+
// running of scripts.
|
317
|
+
if (typeof window !== "undefined" && window !== null) {
|
318
|
+
headEl = document.getElementsByTagName('head')[0];
|
319
|
+
dummyAnchor = document.createElement('a');
|
320
|
+
|
321
|
+
if (window.addEventListener) {
|
322
|
+
window.addEventListener('DOMContentLoaded', runScripts, false);
|
323
|
+
} else {
|
324
|
+
window.attachEvent('onload', runScripts);
|
325
|
+
}
|
326
|
+
}
|
327
|
+
|
328
|
+
module.exports = {
|
329
|
+
transform: transformReact,
|
330
|
+
exec: exec
|
331
|
+
};
|
332
|
+
|
333
|
+
},{"./fbtransform/visitors":37,"buffer":2,"jstransform":21}],2:[function(_dereq_,module,exports){
|
5
334
|
/*!
|
6
335
|
* The buffer module from node.js, for the browser.
|
7
336
|
*
|
@@ -11,29 +340,45 @@
|
|
11
340
|
|
12
341
|
var base64 = _dereq_('base64-js')
|
13
342
|
var ieee754 = _dereq_('ieee754')
|
343
|
+
var isArray = _dereq_('is-array')
|
14
344
|
|
15
345
|
exports.Buffer = Buffer
|
16
346
|
exports.SlowBuffer = Buffer
|
17
347
|
exports.INSPECT_MAX_BYTES = 50
|
18
|
-
Buffer.poolSize = 8192
|
348
|
+
Buffer.poolSize = 8192 // not used by this implementation
|
349
|
+
|
350
|
+
var kMaxLength = 0x3fffffff
|
19
351
|
|
20
352
|
/**
|
21
|
-
* If `Buffer.
|
353
|
+
* If `Buffer.TYPED_ARRAY_SUPPORT`:
|
22
354
|
* === true Use Uint8Array implementation (fastest)
|
23
|
-
* === false Use Object implementation (compatible
|
355
|
+
* === false Use Object implementation (most compatible, even IE6)
|
356
|
+
*
|
357
|
+
* Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
|
358
|
+
* Opera 11.6+, iOS 4.2+.
|
359
|
+
*
|
360
|
+
* Note:
|
361
|
+
*
|
362
|
+
* - Implementation must support adding new properties to `Uint8Array` instances.
|
363
|
+
* Firefox 4-29 lacked support, fixed in Firefox 30+.
|
364
|
+
* See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
|
365
|
+
*
|
366
|
+
* - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
|
367
|
+
*
|
368
|
+
* - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
|
369
|
+
* incorrect length in some situations.
|
370
|
+
*
|
371
|
+
* We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they will
|
372
|
+
* get the Object implementation, which is slower but will work correctly.
|
24
373
|
*/
|
25
|
-
Buffer.
|
26
|
-
// Detect if browser supports Typed Arrays. Supported browsers are IE 10+, Firefox 4+,
|
27
|
-
// Chrome 7+, Safari 5.1+, Opera 11.6+, iOS 4.2+. If the browser does not support adding
|
28
|
-
// properties to `Uint8Array` instances, then that's the same as no `Uint8Array` support
|
29
|
-
// because we need to be able to add all the node Buffer API methods. This is an issue
|
30
|
-
// in Firefox 4-29. Now fixed: https://bugzilla.mozilla.org/show_bug.cgi?id=695438
|
374
|
+
Buffer.TYPED_ARRAY_SUPPORT = (function () {
|
31
375
|
try {
|
32
376
|
var buf = new ArrayBuffer(0)
|
33
377
|
var arr = new Uint8Array(buf)
|
34
378
|
arr.foo = function () { return 42 }
|
35
|
-
return 42 === arr.foo() &&
|
36
|
-
typeof arr.subarray === 'function' //
|
379
|
+
return 42 === arr.foo() && // typed array instances can be augmented
|
380
|
+
typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
|
381
|
+
new Uint8Array(1).subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
|
37
382
|
} catch (e) {
|
38
383
|
return false
|
39
384
|
}
|
@@ -66,14 +411,18 @@ function Buffer (subject, encoding, noZero) {
|
|
66
411
|
subject = base64clean(subject)
|
67
412
|
length = Buffer.byteLength(subject, encoding)
|
68
413
|
} else if (type === 'object' && subject !== null) { // assume object is array-like
|
69
|
-
if (subject.type === 'Buffer' &&
|
414
|
+
if (subject.type === 'Buffer' && isArray(subject.data))
|
70
415
|
subject = subject.data
|
71
416
|
length = +subject.length > 0 ? Math.floor(+subject.length) : 0
|
72
417
|
} else
|
73
|
-
throw new
|
418
|
+
throw new TypeError('must start with number, buffer, array or string')
|
419
|
+
|
420
|
+
if (this.length > kMaxLength)
|
421
|
+
throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
|
422
|
+
'size: 0x' + kMaxLength.toString(16) + ' bytes')
|
74
423
|
|
75
424
|
var buf
|
76
|
-
if (Buffer.
|
425
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
77
426
|
// Preferred: Return an augmented `Uint8Array` instance for best performance
|
78
427
|
buf = Buffer._augment(new Uint8Array(length))
|
79
428
|
} else {
|
@@ -84,7 +433,7 @@ function Buffer (subject, encoding, noZero) {
|
|
84
433
|
}
|
85
434
|
|
86
435
|
var i
|
87
|
-
if (Buffer.
|
436
|
+
if (Buffer.TYPED_ARRAY_SUPPORT && typeof subject.byteLength === 'number') {
|
88
437
|
// Speed optimization -- use set if we're copying from a typed array
|
89
438
|
buf._set(subject)
|
90
439
|
} else if (isArrayish(subject)) {
|
@@ -98,7 +447,7 @@ function Buffer (subject, encoding, noZero) {
|
|
98
447
|
}
|
99
448
|
} else if (type === 'string') {
|
100
449
|
buf.write(subject, 0, encoding)
|
101
|
-
} else if (type === 'number' && !Buffer.
|
450
|
+
} else if (type === 'number' && !Buffer.TYPED_ARRAY_SUPPORT && !noZero) {
|
102
451
|
for (i = 0; i < length; i++) {
|
103
452
|
buf[i] = 0
|
104
453
|
}
|
@@ -107,8 +456,25 @@ function Buffer (subject, encoding, noZero) {
|
|
107
456
|
return buf
|
108
457
|
}
|
109
458
|
|
110
|
-
|
111
|
-
|
459
|
+
Buffer.isBuffer = function (b) {
|
460
|
+
return !!(b != null && b._isBuffer)
|
461
|
+
}
|
462
|
+
|
463
|
+
Buffer.compare = function (a, b) {
|
464
|
+
if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b))
|
465
|
+
throw new TypeError('Arguments must be Buffers')
|
466
|
+
|
467
|
+
var x = a.length
|
468
|
+
var y = b.length
|
469
|
+
for (var i = 0, len = Math.min(x, y); i < len && a[i] === b[i]; i++) {}
|
470
|
+
if (i !== len) {
|
471
|
+
x = a[i]
|
472
|
+
y = b[i]
|
473
|
+
}
|
474
|
+
if (x < y) return -1
|
475
|
+
if (y < x) return 1
|
476
|
+
return 0
|
477
|
+
}
|
112
478
|
|
113
479
|
Buffer.isEncoding = function (encoding) {
|
114
480
|
switch (String(encoding).toLowerCase()) {
|
@@ -129,88 +495,145 @@ Buffer.isEncoding = function (encoding) {
|
|
129
495
|
}
|
130
496
|
}
|
131
497
|
|
132
|
-
Buffer.
|
133
|
-
|
498
|
+
Buffer.concat = function (list, totalLength) {
|
499
|
+
if (!isArray(list)) throw new TypeError('Usage: Buffer.concat(list[, length])')
|
500
|
+
|
501
|
+
if (list.length === 0) {
|
502
|
+
return new Buffer(0)
|
503
|
+
} else if (list.length === 1) {
|
504
|
+
return list[0]
|
505
|
+
}
|
506
|
+
|
507
|
+
var i
|
508
|
+
if (totalLength === undefined) {
|
509
|
+
totalLength = 0
|
510
|
+
for (i = 0; i < list.length; i++) {
|
511
|
+
totalLength += list[i].length
|
512
|
+
}
|
513
|
+
}
|
514
|
+
|
515
|
+
var buf = new Buffer(totalLength)
|
516
|
+
var pos = 0
|
517
|
+
for (i = 0; i < list.length; i++) {
|
518
|
+
var item = list[i]
|
519
|
+
item.copy(buf, pos)
|
520
|
+
pos += item.length
|
521
|
+
}
|
522
|
+
return buf
|
134
523
|
}
|
135
524
|
|
136
525
|
Buffer.byteLength = function (str, encoding) {
|
137
526
|
var ret
|
138
|
-
str = str
|
527
|
+
str = str + ''
|
139
528
|
switch (encoding || 'utf8') {
|
140
|
-
case 'hex':
|
141
|
-
ret = str.length / 2
|
142
|
-
break
|
143
|
-
case 'utf8':
|
144
|
-
case 'utf-8':
|
145
|
-
ret = utf8ToBytes(str).length
|
146
|
-
break
|
147
529
|
case 'ascii':
|
148
530
|
case 'binary':
|
149
531
|
case 'raw':
|
150
532
|
ret = str.length
|
151
533
|
break
|
152
|
-
case 'base64':
|
153
|
-
ret = base64ToBytes(str).length
|
154
|
-
break
|
155
534
|
case 'ucs2':
|
156
535
|
case 'ucs-2':
|
157
536
|
case 'utf16le':
|
158
537
|
case 'utf-16le':
|
159
538
|
ret = str.length * 2
|
160
539
|
break
|
540
|
+
case 'hex':
|
541
|
+
ret = str.length >>> 1
|
542
|
+
break
|
543
|
+
case 'utf8':
|
544
|
+
case 'utf-8':
|
545
|
+
ret = utf8ToBytes(str).length
|
546
|
+
break
|
547
|
+
case 'base64':
|
548
|
+
ret = base64ToBytes(str).length
|
549
|
+
break
|
161
550
|
default:
|
162
|
-
|
551
|
+
ret = str.length
|
163
552
|
}
|
164
553
|
return ret
|
165
554
|
}
|
166
555
|
|
167
|
-
|
168
|
-
|
556
|
+
// pre-set for values that may exist in the future
|
557
|
+
Buffer.prototype.length = undefined
|
558
|
+
Buffer.prototype.parent = undefined
|
169
559
|
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
560
|
+
// toString(encoding, start=0, end=buffer.length)
|
561
|
+
Buffer.prototype.toString = function (encoding, start, end) {
|
562
|
+
var loweredCase = false
|
563
|
+
|
564
|
+
start = start >>> 0
|
565
|
+
end = end === undefined || end === Infinity ? this.length : end >>> 0
|
566
|
+
|
567
|
+
if (!encoding) encoding = 'utf8'
|
568
|
+
if (start < 0) start = 0
|
569
|
+
if (end > this.length) end = this.length
|
570
|
+
if (end <= start) return ''
|
571
|
+
|
572
|
+
while (true) {
|
573
|
+
switch (encoding) {
|
574
|
+
case 'hex':
|
575
|
+
return hexSlice(this, start, end)
|
576
|
+
|
577
|
+
case 'utf8':
|
578
|
+
case 'utf-8':
|
579
|
+
return utf8Slice(this, start, end)
|
580
|
+
|
581
|
+
case 'ascii':
|
582
|
+
return asciiSlice(this, start, end)
|
175
583
|
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
584
|
+
case 'binary':
|
585
|
+
return binarySlice(this, start, end)
|
586
|
+
|
587
|
+
case 'base64':
|
588
|
+
return base64Slice(this, start, end)
|
589
|
+
|
590
|
+
case 'ucs2':
|
591
|
+
case 'ucs-2':
|
592
|
+
case 'utf16le':
|
593
|
+
case 'utf-16le':
|
594
|
+
return utf16leSlice(this, start, end)
|
595
|
+
|
596
|
+
default:
|
597
|
+
if (loweredCase)
|
598
|
+
throw new TypeError('Unknown encoding: ' + encoding)
|
599
|
+
encoding = (encoding + '').toLowerCase()
|
600
|
+
loweredCase = true
|
181
601
|
}
|
182
602
|
}
|
603
|
+
}
|
183
604
|
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
var item = list[i]
|
188
|
-
item.copy(buf, pos)
|
189
|
-
pos += item.length
|
190
|
-
}
|
191
|
-
return buf
|
605
|
+
Buffer.prototype.equals = function (b) {
|
606
|
+
if(!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
|
607
|
+
return Buffer.compare(this, b) === 0
|
192
608
|
}
|
193
609
|
|
194
|
-
Buffer.
|
195
|
-
|
196
|
-
var
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
y = b[i]
|
202
|
-
}
|
203
|
-
if (x < y) {
|
204
|
-
return -1
|
205
|
-
}
|
206
|
-
if (y < x) {
|
207
|
-
return 1
|
610
|
+
Buffer.prototype.inspect = function () {
|
611
|
+
var str = ''
|
612
|
+
var max = exports.INSPECT_MAX_BYTES
|
613
|
+
if (this.length > 0) {
|
614
|
+
str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
|
615
|
+
if (this.length > max)
|
616
|
+
str += ' ... '
|
208
617
|
}
|
209
|
-
return
|
618
|
+
return '<Buffer ' + str + '>'
|
619
|
+
}
|
620
|
+
|
621
|
+
Buffer.prototype.compare = function (b) {
|
622
|
+
if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
|
623
|
+
return Buffer.compare(this, b)
|
624
|
+
}
|
625
|
+
|
626
|
+
// `get` will be removed in Node 0.13+
|
627
|
+
Buffer.prototype.get = function (offset) {
|
628
|
+
console.log('.get() is deprecated. Access using array indexes instead.')
|
629
|
+
return this.readUInt8(offset)
|
210
630
|
}
|
211
631
|
|
212
|
-
//
|
213
|
-
|
632
|
+
// `set` will be removed in Node 0.13+
|
633
|
+
Buffer.prototype.set = function (v, offset) {
|
634
|
+
console.log('.set() is deprecated. Access using array indexes instead.')
|
635
|
+
return this.writeUInt8(v, offset)
|
636
|
+
}
|
214
637
|
|
215
638
|
function hexWrite (buf, string, offset, length) {
|
216
639
|
offset = Number(offset) || 0
|
@@ -226,14 +649,14 @@ function hexWrite (buf, string, offset, length) {
|
|
226
649
|
|
227
650
|
// must be an even number of digits
|
228
651
|
var strLen = string.length
|
229
|
-
|
652
|
+
if (strLen % 2 !== 0) throw new Error('Invalid hex string')
|
230
653
|
|
231
654
|
if (length > strLen / 2) {
|
232
655
|
length = strLen / 2
|
233
656
|
}
|
234
657
|
for (var i = 0; i < length; i++) {
|
235
658
|
var byte = parseInt(string.substr(i * 2, 2), 16)
|
236
|
-
|
659
|
+
if (isNaN(byte)) throw new Error('Invalid hex string')
|
237
660
|
buf[offset + i] = byte
|
238
661
|
}
|
239
662
|
return i
|
@@ -315,48 +738,7 @@ Buffer.prototype.write = function (string, offset, length, encoding) {
|
|
315
738
|
ret = utf16leWrite(this, string, offset, length)
|
316
739
|
break
|
317
740
|
default:
|
318
|
-
throw new
|
319
|
-
}
|
320
|
-
return ret
|
321
|
-
}
|
322
|
-
|
323
|
-
Buffer.prototype.toString = function (encoding, start, end) {
|
324
|
-
var self = this
|
325
|
-
|
326
|
-
encoding = String(encoding || 'utf8').toLowerCase()
|
327
|
-
start = Number(start) || 0
|
328
|
-
end = (end === undefined) ? self.length : Number(end)
|
329
|
-
|
330
|
-
// Fastpath empty strings
|
331
|
-
if (end === start)
|
332
|
-
return ''
|
333
|
-
|
334
|
-
var ret
|
335
|
-
switch (encoding) {
|
336
|
-
case 'hex':
|
337
|
-
ret = hexSlice(self, start, end)
|
338
|
-
break
|
339
|
-
case 'utf8':
|
340
|
-
case 'utf-8':
|
341
|
-
ret = utf8Slice(self, start, end)
|
342
|
-
break
|
343
|
-
case 'ascii':
|
344
|
-
ret = asciiSlice(self, start, end)
|
345
|
-
break
|
346
|
-
case 'binary':
|
347
|
-
ret = binarySlice(self, start, end)
|
348
|
-
break
|
349
|
-
case 'base64':
|
350
|
-
ret = base64Slice(self, start, end)
|
351
|
-
break
|
352
|
-
case 'ucs2':
|
353
|
-
case 'ucs-2':
|
354
|
-
case 'utf16le':
|
355
|
-
case 'utf-16le':
|
356
|
-
ret = utf16leSlice(self, start, end)
|
357
|
-
break
|
358
|
-
default:
|
359
|
-
throw new Error('Unknown encoding')
|
741
|
+
throw new TypeError('Unknown encoding: ' + encoding)
|
360
742
|
}
|
361
743
|
return ret
|
362
744
|
}
|
@@ -368,52 +750,6 @@ Buffer.prototype.toJSON = function () {
|
|
368
750
|
}
|
369
751
|
}
|
370
752
|
|
371
|
-
Buffer.prototype.equals = function (b) {
|
372
|
-
assert(Buffer.isBuffer(b), 'Argument must be a Buffer')
|
373
|
-
return Buffer.compare(this, b) === 0
|
374
|
-
}
|
375
|
-
|
376
|
-
Buffer.prototype.compare = function (b) {
|
377
|
-
assert(Buffer.isBuffer(b), 'Argument must be a Buffer')
|
378
|
-
return Buffer.compare(this, b)
|
379
|
-
}
|
380
|
-
|
381
|
-
// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
|
382
|
-
Buffer.prototype.copy = function (target, target_start, start, end) {
|
383
|
-
var source = this
|
384
|
-
|
385
|
-
if (!start) start = 0
|
386
|
-
if (!end && end !== 0) end = this.length
|
387
|
-
if (!target_start) target_start = 0
|
388
|
-
|
389
|
-
// Copy 0 bytes; we're done
|
390
|
-
if (end === start) return
|
391
|
-
if (target.length === 0 || source.length === 0) return
|
392
|
-
|
393
|
-
// Fatal error conditions
|
394
|
-
assert(end >= start, 'sourceEnd < sourceStart')
|
395
|
-
assert(target_start >= 0 && target_start < target.length,
|
396
|
-
'targetStart out of bounds')
|
397
|
-
assert(start >= 0 && start < source.length, 'sourceStart out of bounds')
|
398
|
-
assert(end >= 0 && end <= source.length, 'sourceEnd out of bounds')
|
399
|
-
|
400
|
-
// Are we oob?
|
401
|
-
if (end > this.length)
|
402
|
-
end = this.length
|
403
|
-
if (target.length - target_start < end - start)
|
404
|
-
end = target.length - target_start + start
|
405
|
-
|
406
|
-
var len = end - start
|
407
|
-
|
408
|
-
if (len < 100 || !Buffer._useTypedArrays) {
|
409
|
-
for (var i = 0; i < len; i++) {
|
410
|
-
target[i + target_start] = this[i + start]
|
411
|
-
}
|
412
|
-
} else {
|
413
|
-
target._set(this.subarray(start, start + len), target_start)
|
414
|
-
}
|
415
|
-
}
|
416
|
-
|
417
753
|
function base64Slice (buf, start, end) {
|
418
754
|
if (start === 0 && end === buf.length) {
|
419
755
|
return base64.fromByteArray(buf)
|
@@ -499,7 +835,7 @@ Buffer.prototype.slice = function (start, end) {
|
|
499
835
|
if (end < start)
|
500
836
|
end = start
|
501
837
|
|
502
|
-
if (Buffer.
|
838
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
503
839
|
return Buffer._augment(this.subarray(start, end))
|
504
840
|
} else {
|
505
841
|
var sliceLen = end - start
|
@@ -511,365 +847,275 @@ Buffer.prototype.slice = function (start, end) {
|
|
511
847
|
}
|
512
848
|
}
|
513
849
|
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
console.log('.set() is deprecated. Access using array indexes instead.')
|
523
|
-
return this.writeUInt8(v, offset)
|
850
|
+
/*
|
851
|
+
* Need to make sure that buffer isn't trying to write out of bounds.
|
852
|
+
*/
|
853
|
+
function checkOffset (offset, ext, length) {
|
854
|
+
if ((offset % 1) !== 0 || offset < 0)
|
855
|
+
throw new RangeError('offset is not uint')
|
856
|
+
if (offset + ext > length)
|
857
|
+
throw new RangeError('Trying to access beyond buffer length')
|
524
858
|
}
|
525
859
|
|
526
860
|
Buffer.prototype.readUInt8 = function (offset, noAssert) {
|
527
|
-
if (!noAssert)
|
528
|
-
|
529
|
-
assert(offset < this.length, 'Trying to read beyond buffer length')
|
530
|
-
}
|
531
|
-
|
532
|
-
if (offset >= this.length)
|
533
|
-
return
|
534
|
-
|
861
|
+
if (!noAssert)
|
862
|
+
checkOffset(offset, 1, this.length)
|
535
863
|
return this[offset]
|
536
864
|
}
|
537
865
|
|
538
|
-
function readUInt16 (buf, offset, littleEndian, noAssert) {
|
539
|
-
if (!noAssert) {
|
540
|
-
assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
|
541
|
-
assert(offset !== undefined && offset !== null, 'missing offset')
|
542
|
-
assert(offset + 1 < buf.length, 'Trying to read beyond buffer length')
|
543
|
-
}
|
544
|
-
|
545
|
-
var len = buf.length
|
546
|
-
if (offset >= len)
|
547
|
-
return
|
548
|
-
|
549
|
-
var val
|
550
|
-
if (littleEndian) {
|
551
|
-
val = buf[offset]
|
552
|
-
if (offset + 1 < len)
|
553
|
-
val |= buf[offset + 1] << 8
|
554
|
-
} else {
|
555
|
-
val = buf[offset] << 8
|
556
|
-
if (offset + 1 < len)
|
557
|
-
val |= buf[offset + 1]
|
558
|
-
}
|
559
|
-
return val
|
560
|
-
}
|
561
|
-
|
562
866
|
Buffer.prototype.readUInt16LE = function (offset, noAssert) {
|
563
|
-
|
867
|
+
if (!noAssert)
|
868
|
+
checkOffset(offset, 2, this.length)
|
869
|
+
return this[offset] | (this[offset + 1] << 8)
|
564
870
|
}
|
565
871
|
|
566
872
|
Buffer.prototype.readUInt16BE = function (offset, noAssert) {
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
function readUInt32 (buf, offset, littleEndian, noAssert) {
|
571
|
-
if (!noAssert) {
|
572
|
-
assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
|
573
|
-
assert(offset !== undefined && offset !== null, 'missing offset')
|
574
|
-
assert(offset + 3 < buf.length, 'Trying to read beyond buffer length')
|
575
|
-
}
|
576
|
-
|
577
|
-
var len = buf.length
|
578
|
-
if (offset >= len)
|
579
|
-
return
|
580
|
-
|
581
|
-
var val
|
582
|
-
if (littleEndian) {
|
583
|
-
if (offset + 2 < len)
|
584
|
-
val = buf[offset + 2] << 16
|
585
|
-
if (offset + 1 < len)
|
586
|
-
val |= buf[offset + 1] << 8
|
587
|
-
val |= buf[offset]
|
588
|
-
if (offset + 3 < len)
|
589
|
-
val = val + (buf[offset + 3] << 24 >>> 0)
|
590
|
-
} else {
|
591
|
-
if (offset + 1 < len)
|
592
|
-
val = buf[offset + 1] << 16
|
593
|
-
if (offset + 2 < len)
|
594
|
-
val |= buf[offset + 2] << 8
|
595
|
-
if (offset + 3 < len)
|
596
|
-
val |= buf[offset + 3]
|
597
|
-
val = val + (buf[offset] << 24 >>> 0)
|
598
|
-
}
|
599
|
-
return val
|
873
|
+
if (!noAssert)
|
874
|
+
checkOffset(offset, 2, this.length)
|
875
|
+
return (this[offset] << 8) | this[offset + 1]
|
600
876
|
}
|
601
877
|
|
602
878
|
Buffer.prototype.readUInt32LE = function (offset, noAssert) {
|
603
|
-
|
604
|
-
|
879
|
+
if (!noAssert)
|
880
|
+
checkOffset(offset, 4, this.length)
|
605
881
|
|
606
|
-
|
607
|
-
|
882
|
+
return ((this[offset]) |
|
883
|
+
(this[offset + 1] << 8) |
|
884
|
+
(this[offset + 2] << 16)) +
|
885
|
+
(this[offset + 3] * 0x1000000)
|
608
886
|
}
|
609
887
|
|
610
|
-
Buffer.prototype.
|
611
|
-
if (!noAssert)
|
612
|
-
|
613
|
-
'missing offset')
|
614
|
-
assert(offset < this.length, 'Trying to read beyond buffer length')
|
615
|
-
}
|
616
|
-
|
617
|
-
if (offset >= this.length)
|
618
|
-
return
|
888
|
+
Buffer.prototype.readUInt32BE = function (offset, noAssert) {
|
889
|
+
if (!noAssert)
|
890
|
+
checkOffset(offset, 4, this.length)
|
619
891
|
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
return this[offset]
|
892
|
+
return (this[offset] * 0x1000000) +
|
893
|
+
((this[offset + 1] << 16) |
|
894
|
+
(this[offset + 2] << 8) |
|
895
|
+
this[offset + 3])
|
625
896
|
}
|
626
897
|
|
627
|
-
function
|
628
|
-
if (!noAssert)
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
var len = buf.length
|
635
|
-
if (offset >= len)
|
636
|
-
return
|
637
|
-
|
638
|
-
var val = readUInt16(buf, offset, littleEndian, true)
|
639
|
-
var neg = val & 0x8000
|
640
|
-
if (neg)
|
641
|
-
return (0xffff - val + 1) * -1
|
642
|
-
else
|
643
|
-
return val
|
898
|
+
Buffer.prototype.readInt8 = function (offset, noAssert) {
|
899
|
+
if (!noAssert)
|
900
|
+
checkOffset(offset, 1, this.length)
|
901
|
+
if (!(this[offset] & 0x80))
|
902
|
+
return (this[offset])
|
903
|
+
return ((0xff - this[offset] + 1) * -1)
|
644
904
|
}
|
645
905
|
|
646
906
|
Buffer.prototype.readInt16LE = function (offset, noAssert) {
|
647
|
-
|
907
|
+
if (!noAssert)
|
908
|
+
checkOffset(offset, 2, this.length)
|
909
|
+
var val = this[offset] | (this[offset + 1] << 8)
|
910
|
+
return (val & 0x8000) ? val | 0xFFFF0000 : val
|
648
911
|
}
|
649
912
|
|
650
913
|
Buffer.prototype.readInt16BE = function (offset, noAssert) {
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
if (!noAssert) {
|
656
|
-
assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
|
657
|
-
assert(offset !== undefined && offset !== null, 'missing offset')
|
658
|
-
assert(offset + 3 < buf.length, 'Trying to read beyond buffer length')
|
659
|
-
}
|
660
|
-
|
661
|
-
var len = buf.length
|
662
|
-
if (offset >= len)
|
663
|
-
return
|
664
|
-
|
665
|
-
var val = readUInt32(buf, offset, littleEndian, true)
|
666
|
-
var neg = val & 0x80000000
|
667
|
-
if (neg)
|
668
|
-
return (0xffffffff - val + 1) * -1
|
669
|
-
else
|
670
|
-
return val
|
914
|
+
if (!noAssert)
|
915
|
+
checkOffset(offset, 2, this.length)
|
916
|
+
var val = this[offset + 1] | (this[offset] << 8)
|
917
|
+
return (val & 0x8000) ? val | 0xFFFF0000 : val
|
671
918
|
}
|
672
919
|
|
673
920
|
Buffer.prototype.readInt32LE = function (offset, noAssert) {
|
674
|
-
|
675
|
-
|
921
|
+
if (!noAssert)
|
922
|
+
checkOffset(offset, 4, this.length)
|
676
923
|
|
677
|
-
|
678
|
-
|
924
|
+
return (this[offset]) |
|
925
|
+
(this[offset + 1] << 8) |
|
926
|
+
(this[offset + 2] << 16) |
|
927
|
+
(this[offset + 3] << 24)
|
679
928
|
}
|
680
929
|
|
681
|
-
function
|
682
|
-
if (!noAssert)
|
683
|
-
|
684
|
-
assert(offset + 3 < buf.length, 'Trying to read beyond buffer length')
|
685
|
-
}
|
930
|
+
Buffer.prototype.readInt32BE = function (offset, noAssert) {
|
931
|
+
if (!noAssert)
|
932
|
+
checkOffset(offset, 4, this.length)
|
686
933
|
|
687
|
-
return
|
934
|
+
return (this[offset] << 24) |
|
935
|
+
(this[offset + 1] << 16) |
|
936
|
+
(this[offset + 2] << 8) |
|
937
|
+
(this[offset + 3])
|
688
938
|
}
|
689
939
|
|
690
940
|
Buffer.prototype.readFloatLE = function (offset, noAssert) {
|
691
|
-
|
941
|
+
if (!noAssert)
|
942
|
+
checkOffset(offset, 4, this.length)
|
943
|
+
return ieee754.read(this, offset, true, 23, 4)
|
692
944
|
}
|
693
945
|
|
694
946
|
Buffer.prototype.readFloatBE = function (offset, noAssert) {
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
function readDouble (buf, offset, littleEndian, noAssert) {
|
699
|
-
if (!noAssert) {
|
700
|
-
assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
|
701
|
-
assert(offset + 7 < buf.length, 'Trying to read beyond buffer length')
|
702
|
-
}
|
703
|
-
|
704
|
-
return ieee754.read(buf, offset, littleEndian, 52, 8)
|
947
|
+
if (!noAssert)
|
948
|
+
checkOffset(offset, 4, this.length)
|
949
|
+
return ieee754.read(this, offset, false, 23, 4)
|
705
950
|
}
|
706
951
|
|
707
952
|
Buffer.prototype.readDoubleLE = function (offset, noAssert) {
|
708
|
-
|
953
|
+
if (!noAssert)
|
954
|
+
checkOffset(offset, 8, this.length)
|
955
|
+
return ieee754.read(this, offset, true, 52, 8)
|
709
956
|
}
|
710
957
|
|
711
958
|
Buffer.prototype.readDoubleBE = function (offset, noAssert) {
|
712
|
-
|
959
|
+
if (!noAssert)
|
960
|
+
checkOffset(offset, 8, this.length)
|
961
|
+
return ieee754.read(this, offset, false, 52, 8)
|
713
962
|
}
|
714
963
|
|
715
|
-
|
716
|
-
if (!
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
verifuint(value, 0xff)
|
721
|
-
}
|
722
|
-
|
723
|
-
if (offset >= this.length) return
|
964
|
+
function checkInt (buf, value, offset, ext, max, min) {
|
965
|
+
if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')
|
966
|
+
if (value > max || value < min) throw new TypeError('value is out of bounds')
|
967
|
+
if (offset + ext > buf.length) throw new TypeError('index out of range')
|
968
|
+
}
|
724
969
|
|
970
|
+
Buffer.prototype.writeUInt8 = function (value, offset, noAssert) {
|
971
|
+
value = +value
|
972
|
+
offset = offset >>> 0
|
973
|
+
if (!noAssert)
|
974
|
+
checkInt(this, value, offset, 1, 0xff, 0)
|
975
|
+
if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
|
725
976
|
this[offset] = value
|
726
977
|
return offset + 1
|
727
978
|
}
|
728
979
|
|
729
|
-
function
|
730
|
-
if (
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
assert(offset + 1 < buf.length, 'trying to write beyond buffer length')
|
735
|
-
verifuint(value, 0xffff)
|
736
|
-
}
|
737
|
-
|
738
|
-
var len = buf.length
|
739
|
-
if (offset >= len)
|
740
|
-
return
|
741
|
-
|
742
|
-
for (var i = 0, j = Math.min(len - offset, 2); i < j; i++) {
|
743
|
-
buf[offset + i] =
|
744
|
-
(value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
|
745
|
-
(littleEndian ? i : 1 - i) * 8
|
980
|
+
function objectWriteUInt16 (buf, value, offset, littleEndian) {
|
981
|
+
if (value < 0) value = 0xffff + value + 1
|
982
|
+
for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {
|
983
|
+
buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
|
984
|
+
(littleEndian ? i : 1 - i) * 8
|
746
985
|
}
|
747
|
-
return offset + 2
|
748
986
|
}
|
749
987
|
|
750
988
|
Buffer.prototype.writeUInt16LE = function (value, offset, noAssert) {
|
751
|
-
|
989
|
+
value = +value
|
990
|
+
offset = offset >>> 0
|
991
|
+
if (!noAssert)
|
992
|
+
checkInt(this, value, offset, 2, 0xffff, 0)
|
993
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
994
|
+
this[offset] = value
|
995
|
+
this[offset + 1] = (value >>> 8)
|
996
|
+
} else objectWriteUInt16(this, value, offset, true)
|
997
|
+
return offset + 2
|
752
998
|
}
|
753
999
|
|
754
1000
|
Buffer.prototype.writeUInt16BE = function (value, offset, noAssert) {
|
755
|
-
|
1001
|
+
value = +value
|
1002
|
+
offset = offset >>> 0
|
1003
|
+
if (!noAssert)
|
1004
|
+
checkInt(this, value, offset, 2, 0xffff, 0)
|
1005
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
1006
|
+
this[offset] = (value >>> 8)
|
1007
|
+
this[offset + 1] = value
|
1008
|
+
} else objectWriteUInt16(this, value, offset, false)
|
1009
|
+
return offset + 2
|
756
1010
|
}
|
757
1011
|
|
758
|
-
function
|
759
|
-
if (
|
760
|
-
|
761
|
-
|
762
|
-
assert(offset !== undefined && offset !== null, 'missing offset')
|
763
|
-
assert(offset + 3 < buf.length, 'trying to write beyond buffer length')
|
764
|
-
verifuint(value, 0xffffffff)
|
765
|
-
}
|
766
|
-
|
767
|
-
var len = buf.length
|
768
|
-
if (offset >= len)
|
769
|
-
return
|
770
|
-
|
771
|
-
for (var i = 0, j = Math.min(len - offset, 4); i < j; i++) {
|
772
|
-
buf[offset + i] =
|
773
|
-
(value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
|
1012
|
+
function objectWriteUInt32 (buf, value, offset, littleEndian) {
|
1013
|
+
if (value < 0) value = 0xffffffff + value + 1
|
1014
|
+
for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {
|
1015
|
+
buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
|
774
1016
|
}
|
775
|
-
return offset + 4
|
776
1017
|
}
|
777
1018
|
|
778
1019
|
Buffer.prototype.writeUInt32LE = function (value, offset, noAssert) {
|
779
|
-
|
1020
|
+
value = +value
|
1021
|
+
offset = offset >>> 0
|
1022
|
+
if (!noAssert)
|
1023
|
+
checkInt(this, value, offset, 4, 0xffffffff, 0)
|
1024
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
1025
|
+
this[offset + 3] = (value >>> 24)
|
1026
|
+
this[offset + 2] = (value >>> 16)
|
1027
|
+
this[offset + 1] = (value >>> 8)
|
1028
|
+
this[offset] = value
|
1029
|
+
} else objectWriteUInt32(this, value, offset, true)
|
1030
|
+
return offset + 4
|
780
1031
|
}
|
781
1032
|
|
782
1033
|
Buffer.prototype.writeUInt32BE = function (value, offset, noAssert) {
|
783
|
-
|
1034
|
+
value = +value
|
1035
|
+
offset = offset >>> 0
|
1036
|
+
if (!noAssert)
|
1037
|
+
checkInt(this, value, offset, 4, 0xffffffff, 0)
|
1038
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
1039
|
+
this[offset] = (value >>> 24)
|
1040
|
+
this[offset + 1] = (value >>> 16)
|
1041
|
+
this[offset + 2] = (value >>> 8)
|
1042
|
+
this[offset + 3] = value
|
1043
|
+
} else objectWriteUInt32(this, value, offset, false)
|
1044
|
+
return offset + 4
|
784
1045
|
}
|
785
1046
|
|
786
1047
|
Buffer.prototype.writeInt8 = function (value, offset, noAssert) {
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
if (offset >= this.length)
|
795
|
-
return
|
796
|
-
|
797
|
-
if (value >= 0)
|
798
|
-
this.writeUInt8(value, offset, noAssert)
|
799
|
-
else
|
800
|
-
this.writeUInt8(0xff + value + 1, offset, noAssert)
|
1048
|
+
value = +value
|
1049
|
+
offset = offset >>> 0
|
1050
|
+
if (!noAssert)
|
1051
|
+
checkInt(this, value, offset, 1, 0x7f, -0x80)
|
1052
|
+
if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
|
1053
|
+
if (value < 0) value = 0xff + value + 1
|
1054
|
+
this[offset] = value
|
801
1055
|
return offset + 1
|
802
1056
|
}
|
803
1057
|
|
804
|
-
function writeInt16 (buf, value, offset, littleEndian, noAssert) {
|
805
|
-
if (!noAssert) {
|
806
|
-
assert(value !== undefined && value !== null, 'missing value')
|
807
|
-
assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
|
808
|
-
assert(offset !== undefined && offset !== null, 'missing offset')
|
809
|
-
assert(offset + 1 < buf.length, 'Trying to write beyond buffer length')
|
810
|
-
verifsint(value, 0x7fff, -0x8000)
|
811
|
-
}
|
812
|
-
|
813
|
-
var len = buf.length
|
814
|
-
if (offset >= len)
|
815
|
-
return
|
816
|
-
|
817
|
-
if (value >= 0)
|
818
|
-
writeUInt16(buf, value, offset, littleEndian, noAssert)
|
819
|
-
else
|
820
|
-
writeUInt16(buf, 0xffff + value + 1, offset, littleEndian, noAssert)
|
821
|
-
return offset + 2
|
822
|
-
}
|
823
|
-
|
824
1058
|
Buffer.prototype.writeInt16LE = function (value, offset, noAssert) {
|
825
|
-
|
1059
|
+
value = +value
|
1060
|
+
offset = offset >>> 0
|
1061
|
+
if (!noAssert)
|
1062
|
+
checkInt(this, value, offset, 2, 0x7fff, -0x8000)
|
1063
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
1064
|
+
this[offset] = value
|
1065
|
+
this[offset + 1] = (value >>> 8)
|
1066
|
+
} else objectWriteUInt16(this, value, offset, true)
|
1067
|
+
return offset + 2
|
826
1068
|
}
|
827
1069
|
|
828
1070
|
Buffer.prototype.writeInt16BE = function (value, offset, noAssert) {
|
829
|
-
|
1071
|
+
value = +value
|
1072
|
+
offset = offset >>> 0
|
1073
|
+
if (!noAssert)
|
1074
|
+
checkInt(this, value, offset, 2, 0x7fff, -0x8000)
|
1075
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
1076
|
+
this[offset] = (value >>> 8)
|
1077
|
+
this[offset + 1] = value
|
1078
|
+
} else objectWriteUInt16(this, value, offset, false)
|
1079
|
+
return offset + 2
|
830
1080
|
}
|
831
1081
|
|
832
|
-
function
|
833
|
-
|
834
|
-
|
835
|
-
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
|
840
|
-
|
841
|
-
|
842
|
-
|
843
|
-
return
|
844
|
-
|
845
|
-
if (value >= 0)
|
846
|
-
writeUInt32(buf, value, offset, littleEndian, noAssert)
|
847
|
-
else
|
848
|
-
writeUInt32(buf, 0xffffffff + value + 1, offset, littleEndian, noAssert)
|
1082
|
+
Buffer.prototype.writeInt32LE = function (value, offset, noAssert) {
|
1083
|
+
value = +value
|
1084
|
+
offset = offset >>> 0
|
1085
|
+
if (!noAssert)
|
1086
|
+
checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
|
1087
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
1088
|
+
this[offset] = value
|
1089
|
+
this[offset + 1] = (value >>> 8)
|
1090
|
+
this[offset + 2] = (value >>> 16)
|
1091
|
+
this[offset + 3] = (value >>> 24)
|
1092
|
+
} else objectWriteUInt32(this, value, offset, true)
|
849
1093
|
return offset + 4
|
850
1094
|
}
|
851
1095
|
|
852
|
-
Buffer.prototype.
|
853
|
-
|
1096
|
+
Buffer.prototype.writeInt32BE = function (value, offset, noAssert) {
|
1097
|
+
value = +value
|
1098
|
+
offset = offset >>> 0
|
1099
|
+
if (!noAssert)
|
1100
|
+
checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
|
1101
|
+
if (value < 0) value = 0xffffffff + value + 1
|
1102
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
1103
|
+
this[offset] = (value >>> 24)
|
1104
|
+
this[offset + 1] = (value >>> 16)
|
1105
|
+
this[offset + 2] = (value >>> 8)
|
1106
|
+
this[offset + 3] = value
|
1107
|
+
} else objectWriteUInt32(this, value, offset, false)
|
1108
|
+
return offset + 4
|
854
1109
|
}
|
855
1110
|
|
856
|
-
|
857
|
-
|
1111
|
+
function checkIEEE754 (buf, value, offset, ext, max, min) {
|
1112
|
+
if (value > max || value < min) throw new TypeError('value is out of bounds')
|
1113
|
+
if (offset + ext > buf.length) throw new TypeError('index out of range')
|
858
1114
|
}
|
859
1115
|
|
860
1116
|
function writeFloat (buf, value, offset, littleEndian, noAssert) {
|
861
|
-
if (!noAssert)
|
862
|
-
|
863
|
-
assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
|
864
|
-
assert(offset !== undefined && offset !== null, 'missing offset')
|
865
|
-
assert(offset + 3 < buf.length, 'Trying to write beyond buffer length')
|
866
|
-
verifIEEE754(value, 3.4028234663852886e+38, -3.4028234663852886e+38)
|
867
|
-
}
|
868
|
-
|
869
|
-
var len = buf.length
|
870
|
-
if (offset >= len)
|
871
|
-
return
|
872
|
-
|
1117
|
+
if (!noAssert)
|
1118
|
+
checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
|
873
1119
|
ieee754.write(buf, value, offset, littleEndian, 23, 4)
|
874
1120
|
return offset + 4
|
875
1121
|
}
|
@@ -883,19 +1129,8 @@ Buffer.prototype.writeFloatBE = function (value, offset, noAssert) {
|
|
883
1129
|
}
|
884
1130
|
|
885
1131
|
function writeDouble (buf, value, offset, littleEndian, noAssert) {
|
886
|
-
if (!noAssert)
|
887
|
-
|
888
|
-
assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
|
889
|
-
assert(offset !== undefined && offset !== null, 'missing offset')
|
890
|
-
assert(offset + 7 < buf.length,
|
891
|
-
'Trying to write beyond buffer length')
|
892
|
-
verifIEEE754(value, 1.7976931348623157E+308, -1.7976931348623157E+308)
|
893
|
-
}
|
894
|
-
|
895
|
-
var len = buf.length
|
896
|
-
if (offset >= len)
|
897
|
-
return
|
898
|
-
|
1132
|
+
if (!noAssert)
|
1133
|
+
checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
|
899
1134
|
ieee754.write(buf, value, offset, littleEndian, 52, 8)
|
900
1135
|
return offset + 8
|
901
1136
|
}
|
@@ -908,20 +1143,56 @@ Buffer.prototype.writeDoubleBE = function (value, offset, noAssert) {
|
|
908
1143
|
return writeDouble(this, value, offset, false, noAssert)
|
909
1144
|
}
|
910
1145
|
|
1146
|
+
// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
|
1147
|
+
Buffer.prototype.copy = function (target, target_start, start, end) {
|
1148
|
+
var source = this
|
1149
|
+
|
1150
|
+
if (!start) start = 0
|
1151
|
+
if (!end && end !== 0) end = this.length
|
1152
|
+
if (!target_start) target_start = 0
|
1153
|
+
|
1154
|
+
// Copy 0 bytes; we're done
|
1155
|
+
if (end === start) return
|
1156
|
+
if (target.length === 0 || source.length === 0) return
|
1157
|
+
|
1158
|
+
// Fatal error conditions
|
1159
|
+
if (end < start) throw new TypeError('sourceEnd < sourceStart')
|
1160
|
+
if (target_start < 0 || target_start >= target.length)
|
1161
|
+
throw new TypeError('targetStart out of bounds')
|
1162
|
+
if (start < 0 || start >= source.length) throw new TypeError('sourceStart out of bounds')
|
1163
|
+
if (end < 0 || end > source.length) throw new TypeError('sourceEnd out of bounds')
|
1164
|
+
|
1165
|
+
// Are we oob?
|
1166
|
+
if (end > this.length)
|
1167
|
+
end = this.length
|
1168
|
+
if (target.length - target_start < end - start)
|
1169
|
+
end = target.length - target_start + start
|
1170
|
+
|
1171
|
+
var len = end - start
|
1172
|
+
|
1173
|
+
if (len < 100 || !Buffer.TYPED_ARRAY_SUPPORT) {
|
1174
|
+
for (var i = 0; i < len; i++) {
|
1175
|
+
target[i + target_start] = this[i + start]
|
1176
|
+
}
|
1177
|
+
} else {
|
1178
|
+
target._set(this.subarray(start, start + len), target_start)
|
1179
|
+
}
|
1180
|
+
}
|
1181
|
+
|
911
1182
|
// fill(value, start=0, end=buffer.length)
|
912
1183
|
Buffer.prototype.fill = function (value, start, end) {
|
913
1184
|
if (!value) value = 0
|
914
1185
|
if (!start) start = 0
|
915
1186
|
if (!end) end = this.length
|
916
1187
|
|
917
|
-
|
1188
|
+
if (end < start) throw new TypeError('end < start')
|
918
1189
|
|
919
1190
|
// Fill 0 bytes; we're done
|
920
1191
|
if (end === start) return
|
921
1192
|
if (this.length === 0) return
|
922
1193
|
|
923
|
-
|
924
|
-
|
1194
|
+
if (start < 0 || start >= this.length) throw new TypeError('start out of bounds')
|
1195
|
+
if (end < 0 || end > this.length) throw new TypeError('end out of bounds')
|
925
1196
|
|
926
1197
|
var i
|
927
1198
|
if (typeof value === 'number') {
|
@@ -931,25 +1202,12 @@ Buffer.prototype.fill = function (value, start, end) {
|
|
931
1202
|
} else {
|
932
1203
|
var bytes = utf8ToBytes(value.toString())
|
933
1204
|
var len = bytes.length
|
934
|
-
for (i = start; i < end; i++) {
|
935
|
-
this[i] = bytes[i % len]
|
936
|
-
}
|
937
|
-
}
|
938
|
-
|
939
|
-
return this
|
940
|
-
}
|
941
|
-
|
942
|
-
Buffer.prototype.inspect = function () {
|
943
|
-
var out = []
|
944
|
-
var len = this.length
|
945
|
-
for (var i = 0; i < len; i++) {
|
946
|
-
out[i] = toHex(this[i])
|
947
|
-
if (i === exports.INSPECT_MAX_BYTES) {
|
948
|
-
out[i + 1] = '...'
|
949
|
-
break
|
1205
|
+
for (i = start; i < end; i++) {
|
1206
|
+
this[i] = bytes[i % len]
|
950
1207
|
}
|
951
1208
|
}
|
952
|
-
|
1209
|
+
|
1210
|
+
return this
|
953
1211
|
}
|
954
1212
|
|
955
1213
|
/**
|
@@ -958,7 +1216,7 @@ Buffer.prototype.inspect = function () {
|
|
958
1216
|
*/
|
959
1217
|
Buffer.prototype.toArrayBuffer = function () {
|
960
1218
|
if (typeof Uint8Array !== 'undefined') {
|
961
|
-
if (Buffer.
|
1219
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
962
1220
|
return (new Buffer(this)).buffer
|
963
1221
|
} else {
|
964
1222
|
var buf = new Uint8Array(this.length)
|
@@ -968,7 +1226,7 @@ Buffer.prototype.toArrayBuffer = function () {
|
|
968
1226
|
return buf.buffer
|
969
1227
|
}
|
970
1228
|
} else {
|
971
|
-
throw new
|
1229
|
+
throw new TypeError('Buffer.toArrayBuffer not supported in this browser')
|
972
1230
|
}
|
973
1231
|
}
|
974
1232
|
|
@@ -1051,12 +1309,6 @@ function stringtrim (str) {
|
|
1051
1309
|
return str.replace(/^\s+|\s+$/g, '')
|
1052
1310
|
}
|
1053
1311
|
|
1054
|
-
function isArray (subject) {
|
1055
|
-
return (Array.isArray || function (subject) {
|
1056
|
-
return Object.prototype.toString.call(subject) === '[object Array]'
|
1057
|
-
})(subject)
|
1058
|
-
}
|
1059
|
-
|
1060
1312
|
function isArrayish (subject) {
|
1061
1313
|
return isArray(subject) || Buffer.isBuffer(subject) ||
|
1062
1314
|
subject && typeof subject === 'object' &&
|
@@ -1130,36 +1382,7 @@ function decodeUtf8Char (str) {
|
|
1130
1382
|
}
|
1131
1383
|
}
|
1132
1384
|
|
1133
|
-
|
1134
|
-
* We have to make sure that the value is a valid integer. This means that it
|
1135
|
-
* is non-negative. It has no fractional component and that it does not
|
1136
|
-
* exceed the maximum allowed value.
|
1137
|
-
*/
|
1138
|
-
function verifuint (value, max) {
|
1139
|
-
assert(typeof value === 'number', 'cannot write a non-number as a number')
|
1140
|
-
assert(value >= 0, 'specified a negative value for writing an unsigned value')
|
1141
|
-
assert(value <= max, 'value is larger than maximum value for type')
|
1142
|
-
assert(Math.floor(value) === value, 'value has a fractional component')
|
1143
|
-
}
|
1144
|
-
|
1145
|
-
function verifsint (value, max, min) {
|
1146
|
-
assert(typeof value === 'number', 'cannot write a non-number as a number')
|
1147
|
-
assert(value <= max, 'value larger than maximum allowed value')
|
1148
|
-
assert(value >= min, 'value smaller than minimum allowed value')
|
1149
|
-
assert(Math.floor(value) === value, 'value has a fractional component')
|
1150
|
-
}
|
1151
|
-
|
1152
|
-
function verifIEEE754 (value, max, min) {
|
1153
|
-
assert(typeof value === 'number', 'cannot write a non-number as a number')
|
1154
|
-
assert(value <= max, 'value larger than maximum allowed value')
|
1155
|
-
assert(value >= min, 'value smaller than minimum allowed value')
|
1156
|
-
}
|
1157
|
-
|
1158
|
-
function assert (test, message) {
|
1159
|
-
if (!test) throw new Error(message || 'Failed assertion')
|
1160
|
-
}
|
1161
|
-
|
1162
|
-
},{"base64-js":2,"ieee754":3}],2:[function(_dereq_,module,exports){
|
1385
|
+
},{"base64-js":3,"ieee754":4,"is-array":5}],3:[function(_dereq_,module,exports){
|
1163
1386
|
var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
1164
1387
|
|
1165
1388
|
;(function (exports) {
|
@@ -1281,7 +1504,7 @@ var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
1281
1504
|
exports.fromByteArray = uint8ToBase64
|
1282
1505
|
}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))
|
1283
1506
|
|
1284
|
-
},{}],
|
1507
|
+
},{}],4:[function(_dereq_,module,exports){
|
1285
1508
|
exports.read = function(buffer, offset, isLE, mLen, nBytes) {
|
1286
1509
|
var e, m,
|
1287
1510
|
eLen = nBytes * 8 - mLen - 1,
|
@@ -1367,7 +1590,42 @@ exports.write = function(buffer, value, offset, isLE, mLen, nBytes) {
|
|
1367
1590
|
buffer[offset + i - d] |= s * 128;
|
1368
1591
|
};
|
1369
1592
|
|
1370
|
-
},{}],
|
1593
|
+
},{}],5:[function(_dereq_,module,exports){
|
1594
|
+
|
1595
|
+
/**
|
1596
|
+
* isArray
|
1597
|
+
*/
|
1598
|
+
|
1599
|
+
var isArray = Array.isArray;
|
1600
|
+
|
1601
|
+
/**
|
1602
|
+
* toString
|
1603
|
+
*/
|
1604
|
+
|
1605
|
+
var str = Object.prototype.toString;
|
1606
|
+
|
1607
|
+
/**
|
1608
|
+
* Whether or not the given `val`
|
1609
|
+
* is an array.
|
1610
|
+
*
|
1611
|
+
* example:
|
1612
|
+
*
|
1613
|
+
* isArray([]);
|
1614
|
+
* // > true
|
1615
|
+
* isArray(arguments);
|
1616
|
+
* // > false
|
1617
|
+
* isArray('');
|
1618
|
+
* // > false
|
1619
|
+
*
|
1620
|
+
* @param {mixed} val
|
1621
|
+
* @return {bool}
|
1622
|
+
*/
|
1623
|
+
|
1624
|
+
module.exports = isArray || function (val) {
|
1625
|
+
return !! val && '[object Array]' == str.call(val);
|
1626
|
+
};
|
1627
|
+
|
1628
|
+
},{}],6:[function(_dereq_,module,exports){
|
1371
1629
|
(function (process){
|
1372
1630
|
// Copyright Joyent, Inc. and other Node contributors.
|
1373
1631
|
//
|
@@ -1594,8 +1852,8 @@ var substr = 'ab'.substr(-1) === 'b'
|
|
1594
1852
|
}
|
1595
1853
|
;
|
1596
1854
|
|
1597
|
-
}).call(this,_dereq_(
|
1598
|
-
},{"
|
1855
|
+
}).call(this,_dereq_('_process'))
|
1856
|
+
},{"_process":7}],7:[function(_dereq_,module,exports){
|
1599
1857
|
// shim for using process in browser
|
1600
1858
|
|
1601
1859
|
var process = module.exports = {};
|
@@ -1603,6 +1861,8 @@ var process = module.exports = {};
|
|
1603
1861
|
process.nextTick = (function () {
|
1604
1862
|
var canSetImmediate = typeof window !== 'undefined'
|
1605
1863
|
&& window.setImmediate;
|
1864
|
+
var canMutationObserver = typeof window !== 'undefined'
|
1865
|
+
&& window.MutationObserver;
|
1606
1866
|
var canPost = typeof window !== 'undefined'
|
1607
1867
|
&& window.postMessage && window.addEventListener
|
1608
1868
|
;
|
@@ -1611,8 +1871,29 @@ process.nextTick = (function () {
|
|
1611
1871
|
return function (f) { return window.setImmediate(f) };
|
1612
1872
|
}
|
1613
1873
|
|
1874
|
+
var queue = [];
|
1875
|
+
|
1876
|
+
if (canMutationObserver) {
|
1877
|
+
var hiddenDiv = document.createElement("div");
|
1878
|
+
var observer = new MutationObserver(function () {
|
1879
|
+
var queueList = queue.slice();
|
1880
|
+
queue.length = 0;
|
1881
|
+
queueList.forEach(function (fn) {
|
1882
|
+
fn();
|
1883
|
+
});
|
1884
|
+
});
|
1885
|
+
|
1886
|
+
observer.observe(hiddenDiv, { attributes: true });
|
1887
|
+
|
1888
|
+
return function nextTick(fn) {
|
1889
|
+
if (!queue.length) {
|
1890
|
+
hiddenDiv.setAttribute('yes', 'no');
|
1891
|
+
}
|
1892
|
+
queue.push(fn);
|
1893
|
+
};
|
1894
|
+
}
|
1895
|
+
|
1614
1896
|
if (canPost) {
|
1615
|
-
var queue = [];
|
1616
1897
|
window.addEventListener('message', function (ev) {
|
1617
1898
|
var source = ev.source;
|
1618
1899
|
if ((source === window || source === null) && ev.data === 'process-tick') {
|
@@ -1652,7 +1933,7 @@ process.emit = noop;
|
|
1652
1933
|
|
1653
1934
|
process.binding = function (name) {
|
1654
1935
|
throw new Error('process.binding is not supported');
|
1655
|
-
}
|
1936
|
+
};
|
1656
1937
|
|
1657
1938
|
// TODO(shtylman)
|
1658
1939
|
process.cwd = function () { return '/' };
|
@@ -1660,7 +1941,7 @@ process.chdir = function (dir) {
|
|
1660
1941
|
throw new Error('process.chdir is not supported');
|
1661
1942
|
};
|
1662
1943
|
|
1663
|
-
},{}],
|
1944
|
+
},{}],8:[function(_dereq_,module,exports){
|
1664
1945
|
/*
|
1665
1946
|
Copyright (C) 2013 Ariya Hidayat <ariya.hidayat@gmail.com>
|
1666
1947
|
Copyright (C) 2013 Thaddee Tyl <thaddee.tyl@gmail.com>
|
@@ -2106,14 +2387,16 @@ parseYieldExpression: true
|
|
2106
2387
|
}
|
2107
2388
|
} else if (blockComment) {
|
2108
2389
|
if (isLineTerminator(ch)) {
|
2109
|
-
if (ch === 13
|
2390
|
+
if (ch === 13) {
|
2110
2391
|
++index;
|
2111
2392
|
}
|
2112
|
-
|
2113
|
-
|
2114
|
-
|
2115
|
-
|
2116
|
-
|
2393
|
+
if (ch !== 13 || source.charCodeAt(index) === 10) {
|
2394
|
+
++lineNumber;
|
2395
|
+
++index;
|
2396
|
+
lineStart = index;
|
2397
|
+
if (index >= length) {
|
2398
|
+
throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
|
2399
|
+
}
|
2117
2400
|
}
|
2118
2401
|
} else {
|
2119
2402
|
ch = source.charCodeAt(index++);
|
@@ -2769,6 +3052,7 @@ parseYieldExpression: true
|
|
2769
3052
|
if (ch === '\r' && source[index] === '\n') {
|
2770
3053
|
++index;
|
2771
3054
|
}
|
3055
|
+
lineStart = index;
|
2772
3056
|
}
|
2773
3057
|
} else if (isLineTerminator(ch.charCodeAt(0))) {
|
2774
3058
|
break;
|
@@ -2884,12 +3168,14 @@ parseYieldExpression: true
|
|
2884
3168
|
if (ch === '\r' && source[index] === '\n') {
|
2885
3169
|
++index;
|
2886
3170
|
}
|
3171
|
+
lineStart = index;
|
2887
3172
|
}
|
2888
3173
|
} else if (isLineTerminator(ch.charCodeAt(0))) {
|
2889
3174
|
++lineNumber;
|
2890
3175
|
if (ch === '\r' && source[index] === '\n') {
|
2891
3176
|
++index;
|
2892
3177
|
}
|
3178
|
+
lineStart = index;
|
2893
3179
|
cooked += '\n';
|
2894
3180
|
} else {
|
2895
3181
|
cooked += ch;
|
@@ -3240,6 +3526,57 @@ parseYieldExpression: true
|
|
3240
3526
|
return {offset: index, line: lineNumber, col: index - lineStart};
|
3241
3527
|
}
|
3242
3528
|
|
3529
|
+
function processComment(node) {
|
3530
|
+
var lastChild,
|
3531
|
+
trailingComments,
|
3532
|
+
bottomRight = extra.bottomRightStack,
|
3533
|
+
last = bottomRight[bottomRight.length - 1];
|
3534
|
+
|
3535
|
+
if (node.type === Syntax.Program) {
|
3536
|
+
if (node.body.length > 0) {
|
3537
|
+
return;
|
3538
|
+
}
|
3539
|
+
}
|
3540
|
+
|
3541
|
+
if (extra.trailingComments.length > 0) {
|
3542
|
+
if (extra.trailingComments[0].range[0] >= node.range[1]) {
|
3543
|
+
trailingComments = extra.trailingComments;
|
3544
|
+
extra.trailingComments = [];
|
3545
|
+
} else {
|
3546
|
+
extra.trailingComments.length = 0;
|
3547
|
+
}
|
3548
|
+
} else {
|
3549
|
+
if (last && last.trailingComments && last.trailingComments[0].range[0] >= node.range[1]) {
|
3550
|
+
trailingComments = last.trailingComments;
|
3551
|
+
delete last.trailingComments;
|
3552
|
+
}
|
3553
|
+
}
|
3554
|
+
|
3555
|
+
// Eating the stack.
|
3556
|
+
if (last) {
|
3557
|
+
while (last && last.range[0] >= node.range[0]) {
|
3558
|
+
lastChild = last;
|
3559
|
+
last = bottomRight.pop();
|
3560
|
+
}
|
3561
|
+
}
|
3562
|
+
|
3563
|
+
if (lastChild) {
|
3564
|
+
if (lastChild.leadingComments && lastChild.leadingComments[lastChild.leadingComments.length - 1].range[1] <= node.range[0]) {
|
3565
|
+
node.leadingComments = lastChild.leadingComments;
|
3566
|
+
delete lastChild.leadingComments;
|
3567
|
+
}
|
3568
|
+
} else if (extra.leadingComments.length > 0 && extra.leadingComments[extra.leadingComments.length - 1].range[1] <= node.range[0]) {
|
3569
|
+
node.leadingComments = extra.leadingComments;
|
3570
|
+
extra.leadingComments = [];
|
3571
|
+
}
|
3572
|
+
|
3573
|
+
if (trailingComments) {
|
3574
|
+
node.trailingComments = trailingComments;
|
3575
|
+
}
|
3576
|
+
|
3577
|
+
bottomRight.push(node);
|
3578
|
+
}
|
3579
|
+
|
3243
3580
|
function markerApply(marker, node) {
|
3244
3581
|
if (extra.range) {
|
3245
3582
|
node.range = [marker.offset, index];
|
@@ -3257,6 +3594,9 @@ parseYieldExpression: true
|
|
3257
3594
|
};
|
3258
3595
|
node = delegate.postProcess(node);
|
3259
3596
|
}
|
3597
|
+
if (extra.attachComment) {
|
3598
|
+
processComment(node);
|
3599
|
+
}
|
3260
3600
|
return node;
|
3261
3601
|
}
|
3262
3602
|
|
@@ -3466,10 +3806,11 @@ parseYieldExpression: true
|
|
3466
3806
|
};
|
3467
3807
|
},
|
3468
3808
|
|
3469
|
-
createObjectTypeAnnotation: function (properties) {
|
3809
|
+
createObjectTypeAnnotation: function (properties, nullable) {
|
3470
3810
|
return {
|
3471
3811
|
type: Syntax.ObjectTypeAnnotation,
|
3472
|
-
properties: properties
|
3812
|
+
properties: properties,
|
3813
|
+
nullable: nullable
|
3473
3814
|
};
|
3474
3815
|
},
|
3475
3816
|
|
@@ -3492,7 +3833,7 @@ parseYieldExpression: true
|
|
3492
3833
|
return {
|
3493
3834
|
type: Syntax.XJSAttribute,
|
3494
3835
|
name: name,
|
3495
|
-
value: value
|
3836
|
+
value: value || null
|
3496
3837
|
};
|
3497
3838
|
},
|
3498
3839
|
|
@@ -4066,7 +4407,8 @@ parseYieldExpression: true
|
|
4066
4407
|
}
|
4067
4408
|
|
4068
4409
|
function consumeSemicolon() {
|
4069
|
-
var line
|
4410
|
+
var line, oldIndex = index, oldLineNumber = lineNumber,
|
4411
|
+
oldLineStart = lineStart, oldLookahead = lookahead;
|
4070
4412
|
|
4071
4413
|
// Catch the very common case first: immediately a semicolon (char #59).
|
4072
4414
|
if (source.charCodeAt(index) === 59) {
|
@@ -4077,6 +4419,10 @@ parseYieldExpression: true
|
|
4077
4419
|
line = lineNumber;
|
4078
4420
|
skipComment();
|
4079
4421
|
if (lineNumber !== line) {
|
4422
|
+
index = oldIndex;
|
4423
|
+
lineNumber = oldLineNumber;
|
4424
|
+
lineStart = oldLineStart;
|
4425
|
+
lookahead = oldLookahead;
|
4080
4426
|
return;
|
4081
4427
|
}
|
4082
4428
|
|
@@ -5172,7 +5518,7 @@ parseYieldExpression: true
|
|
5172
5518
|
|
5173
5519
|
// 12.2 Variable Statement
|
5174
5520
|
|
5175
|
-
function parseObjectTypeAnnotation() {
|
5521
|
+
function parseObjectTypeAnnotation(nullable) {
|
5176
5522
|
var isMethod, marker, properties = [], property, propertyKey,
|
5177
5523
|
propertyTypeAnnotation;
|
5178
5524
|
|
@@ -5202,7 +5548,7 @@ parseYieldExpression: true
|
|
5202
5548
|
|
5203
5549
|
expect('}');
|
5204
5550
|
|
5205
|
-
return delegate.createObjectTypeAnnotation(properties);
|
5551
|
+
return delegate.createObjectTypeAnnotation(properties, nullable);
|
5206
5552
|
}
|
5207
5553
|
|
5208
5554
|
function parseVoidTypeAnnotation() {
|
@@ -5237,15 +5583,15 @@ parseYieldExpression: true
|
|
5237
5583
|
expect(':');
|
5238
5584
|
}
|
5239
5585
|
|
5240
|
-
if (match('{')) {
|
5241
|
-
return markerApply(marker, parseObjectTypeAnnotation());
|
5242
|
-
}
|
5243
|
-
|
5244
5586
|
if (match('?')) {
|
5245
5587
|
lex();
|
5246
5588
|
nullable = true;
|
5247
5589
|
}
|
5248
5590
|
|
5591
|
+
if (match('{')) {
|
5592
|
+
return markerApply(marker, parseObjectTypeAnnotation(nullable));
|
5593
|
+
}
|
5594
|
+
|
5249
5595
|
if (lookahead.type === Token.Identifier) {
|
5250
5596
|
typeIdentifier = parseVariableIdentifier();
|
5251
5597
|
if (match('<')) {
|
@@ -5273,7 +5619,7 @@ parseYieldExpression: true
|
|
5273
5619
|
if (!matchKeyword('void')) {
|
5274
5620
|
throwUnexpected(lookahead);
|
5275
5621
|
} else {
|
5276
|
-
return parseVoidTypeAnnotation();
|
5622
|
+
return markerApply(marker, parseVoidTypeAnnotation());
|
5277
5623
|
}
|
5278
5624
|
}
|
5279
5625
|
|
@@ -6833,6 +7179,10 @@ parseYieldExpression: true
|
|
6833
7179
|
comment.loc = loc;
|
6834
7180
|
}
|
6835
7181
|
extra.comments.push(comment);
|
7182
|
+
if (extra.attachComment) {
|
7183
|
+
extra.leadingComments.push(comment);
|
7184
|
+
extra.trailingComments.push(comment);
|
7185
|
+
}
|
6836
7186
|
}
|
6837
7187
|
|
6838
7188
|
function scanComment() {
|
@@ -6873,17 +7223,18 @@ parseYieldExpression: true
|
|
6873
7223
|
}
|
6874
7224
|
} else if (blockComment) {
|
6875
7225
|
if (isLineTerminator(ch.charCodeAt(0))) {
|
6876
|
-
if (ch === '\r'
|
7226
|
+
if (ch === '\r') {
|
6877
7227
|
++index;
|
6878
|
-
comment += '\r
|
6879
|
-
} else {
|
6880
|
-
comment += ch;
|
7228
|
+
comment += '\r';
|
6881
7229
|
}
|
6882
|
-
|
6883
|
-
|
6884
|
-
|
6885
|
-
|
6886
|
-
|
7230
|
+
if (ch !== '\r' || source[index] === '\n') {
|
7231
|
+
comment += source[index];
|
7232
|
+
++lineNumber;
|
7233
|
+
++index;
|
7234
|
+
lineStart = index;
|
7235
|
+
if (index >= length) {
|
7236
|
+
throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
|
7237
|
+
}
|
6887
7238
|
}
|
6888
7239
|
} else {
|
6889
7240
|
ch = source[index++];
|
@@ -7296,6 +7647,11 @@ parseYieldExpression: true
|
|
7296
7647
|
str += scanXJSEntity();
|
7297
7648
|
} else {
|
7298
7649
|
index++;
|
7650
|
+
if (ch === '\r' && source[index] === '\n') {
|
7651
|
+
str += ch;
|
7652
|
+
ch = source[index];
|
7653
|
+
index++;
|
7654
|
+
}
|
7299
7655
|
if (isLineTerminator(ch.charCodeAt(0))) {
|
7300
7656
|
++lineNumber;
|
7301
7657
|
lineStart = index;
|
@@ -7564,7 +7920,7 @@ parseYieldExpression: true
|
|
7564
7920
|
}
|
7565
7921
|
|
7566
7922
|
function parseXJSElement() {
|
7567
|
-
var openingElement, closingElement, children = [], origInXJSChild, origInXJSTag, marker = markerCreate();
|
7923
|
+
var openingElement, closingElement = null, children = [], origInXJSChild, origInXJSTag, marker = markerCreate();
|
7568
7924
|
|
7569
7925
|
origInXJSChild = state.inXJSChild;
|
7570
7926
|
origInXJSTag = state.inXJSTag;
|
@@ -7882,6 +8238,7 @@ parseYieldExpression: true
|
|
7882
8238
|
if (typeof options !== 'undefined') {
|
7883
8239
|
extra.range = (typeof options.range === 'boolean') && options.range;
|
7884
8240
|
extra.loc = (typeof options.loc === 'boolean') && options.loc;
|
8241
|
+
extra.attachComment = (typeof options.attachComment === 'boolean') && options.attachComment;
|
7885
8242
|
|
7886
8243
|
if (extra.loc && options.source !== null && options.source !== undefined) {
|
7887
8244
|
delegate = extend(delegate, {
|
@@ -7901,6 +8258,13 @@ parseYieldExpression: true
|
|
7901
8258
|
if (typeof options.tolerant === 'boolean' && options.tolerant) {
|
7902
8259
|
extra.errors = [];
|
7903
8260
|
}
|
8261
|
+
if (extra.attachComment) {
|
8262
|
+
extra.range = true;
|
8263
|
+
extra.comments = [];
|
8264
|
+
extra.bottomRightStack = [];
|
8265
|
+
extra.trailingComments = [];
|
8266
|
+
extra.leadingComments = [];
|
8267
|
+
}
|
7904
8268
|
}
|
7905
8269
|
|
7906
8270
|
if (length > 0) {
|
@@ -7938,7 +8302,7 @@ parseYieldExpression: true
|
|
7938
8302
|
}
|
7939
8303
|
|
7940
8304
|
// Sync with *.json manifests.
|
7941
|
-
exports.version = '
|
8305
|
+
exports.version = '6001.0001.0000-dev-harmony-fb';
|
7942
8306
|
|
7943
8307
|
exports.tokenize = tokenize;
|
7944
8308
|
|
@@ -7968,7 +8332,7 @@ parseYieldExpression: true
|
|
7968
8332
|
}));
|
7969
8333
|
/* vim: set sw=4 ts=4 et tw=80 : */
|
7970
8334
|
|
7971
|
-
},{}],
|
8335
|
+
},{}],9:[function(_dereq_,module,exports){
|
7972
8336
|
var Base62 = (function (my) {
|
7973
8337
|
my.chars = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
|
7974
8338
|
|
@@ -7996,7 +8360,7 @@ var Base62 = (function (my) {
|
|
7996
8360
|
}({}));
|
7997
8361
|
|
7998
8362
|
module.exports = Base62
|
7999
|
-
},{}],
|
8363
|
+
},{}],10:[function(_dereq_,module,exports){
|
8000
8364
|
/*
|
8001
8365
|
* Copyright 2009-2011 Mozilla Foundation and contributors
|
8002
8366
|
* Licensed under the New BSD license. See LICENSE.txt or:
|
@@ -8006,7 +8370,7 @@ exports.SourceMapGenerator = _dereq_('./source-map/source-map-generator').Source
|
|
8006
8370
|
exports.SourceMapConsumer = _dereq_('./source-map/source-map-consumer').SourceMapConsumer;
|
8007
8371
|
exports.SourceNode = _dereq_('./source-map/source-node').SourceNode;
|
8008
8372
|
|
8009
|
-
},{"./source-map/source-map-consumer":
|
8373
|
+
},{"./source-map/source-map-consumer":15,"./source-map/source-map-generator":16,"./source-map/source-node":17}],11:[function(_dereq_,module,exports){
|
8010
8374
|
/* -*- Mode: js; js-indent-level: 2; -*- */
|
8011
8375
|
/*
|
8012
8376
|
* Copyright 2011 Mozilla Foundation and contributors
|
@@ -8105,7 +8469,7 @@ define(function (_dereq_, exports, module) {
|
|
8105
8469
|
|
8106
8470
|
});
|
8107
8471
|
|
8108
|
-
},{"./util":
|
8472
|
+
},{"./util":18,"amdefine":19}],12:[function(_dereq_,module,exports){
|
8109
8473
|
/* -*- Mode: js; js-indent-level: 2; -*- */
|
8110
8474
|
/*
|
8111
8475
|
* Copyright 2011 Mozilla Foundation and contributors
|
@@ -8251,7 +8615,7 @@ define(function (_dereq_, exports, module) {
|
|
8251
8615
|
|
8252
8616
|
});
|
8253
8617
|
|
8254
|
-
},{"./base64":
|
8618
|
+
},{"./base64":13,"amdefine":19}],13:[function(_dereq_,module,exports){
|
8255
8619
|
/* -*- Mode: js; js-indent-level: 2; -*- */
|
8256
8620
|
/*
|
8257
8621
|
* Copyright 2011 Mozilla Foundation and contributors
|
@@ -8295,7 +8659,7 @@ define(function (_dereq_, exports, module) {
|
|
8295
8659
|
|
8296
8660
|
});
|
8297
8661
|
|
8298
|
-
},{"amdefine":
|
8662
|
+
},{"amdefine":19}],14:[function(_dereq_,module,exports){
|
8299
8663
|
/* -*- Mode: js; js-indent-level: 2; -*- */
|
8300
8664
|
/*
|
8301
8665
|
* Copyright 2011 Mozilla Foundation and contributors
|
@@ -8378,7 +8742,7 @@ define(function (_dereq_, exports, module) {
|
|
8378
8742
|
|
8379
8743
|
});
|
8380
8744
|
|
8381
|
-
},{"amdefine":
|
8745
|
+
},{"amdefine":19}],15:[function(_dereq_,module,exports){
|
8382
8746
|
/* -*- Mode: js; js-indent-level: 2; -*- */
|
8383
8747
|
/*
|
8384
8748
|
* Copyright 2011 Mozilla Foundation and contributors
|
@@ -8857,7 +9221,7 @@ define(function (_dereq_, exports, module) {
|
|
8857
9221
|
|
8858
9222
|
});
|
8859
9223
|
|
8860
|
-
},{"./array-set":
|
9224
|
+
},{"./array-set":11,"./base64-vlq":12,"./binary-search":14,"./util":18,"amdefine":19}],16:[function(_dereq_,module,exports){
|
8861
9225
|
/* -*- Mode: js; js-indent-level: 2; -*- */
|
8862
9226
|
/*
|
8863
9227
|
* Copyright 2011 Mozilla Foundation and contributors
|
@@ -9239,7 +9603,7 @@ define(function (_dereq_, exports, module) {
|
|
9239
9603
|
|
9240
9604
|
});
|
9241
9605
|
|
9242
|
-
},{"./array-set":
|
9606
|
+
},{"./array-set":11,"./base64-vlq":12,"./util":18,"amdefine":19}],17:[function(_dereq_,module,exports){
|
9243
9607
|
/* -*- Mode: js; js-indent-level: 2; -*- */
|
9244
9608
|
/*
|
9245
9609
|
* Copyright 2011 Mozilla Foundation and contributors
|
@@ -9612,7 +9976,7 @@ define(function (_dereq_, exports, module) {
|
|
9612
9976
|
|
9613
9977
|
});
|
9614
9978
|
|
9615
|
-
},{"./source-map-generator":
|
9979
|
+
},{"./source-map-generator":16,"./util":18,"amdefine":19}],18:[function(_dereq_,module,exports){
|
9616
9980
|
/* -*- Mode: js; js-indent-level: 2; -*- */
|
9617
9981
|
/*
|
9618
9982
|
* Copyright 2011 Mozilla Foundation and contributors
|
@@ -9819,7 +10183,7 @@ define(function (_dereq_, exports, module) {
|
|
9819
10183
|
|
9820
10184
|
});
|
9821
10185
|
|
9822
|
-
},{"amdefine":
|
10186
|
+
},{"amdefine":19}],19:[function(_dereq_,module,exports){
|
9823
10187
|
(function (process,__filename){
|
9824
10188
|
/** vim: et:ts=4:sw=4:sts=4
|
9825
10189
|
* @license amdefine 0.1.0 Copyright (c) 2011, The Dojo Foundation All Rights Reserved.
|
@@ -10121,8 +10485,8 @@ function amdefine(module, requireFn) {
|
|
10121
10485
|
|
10122
10486
|
module.exports = amdefine;
|
10123
10487
|
|
10124
|
-
}).call(this,_dereq_(
|
10125
|
-
},{"
|
10488
|
+
}).call(this,_dereq_('_process'),"/node_modules/jstransform/node_modules/source-map/node_modules/amdefine/amdefine.js")
|
10489
|
+
},{"_process":7,"path":6}],20:[function(_dereq_,module,exports){
|
10126
10490
|
/**
|
10127
10491
|
* Copyright 2013 Facebook, Inc.
|
10128
10492
|
*
|
@@ -10210,7 +10574,7 @@ exports.extract = extract;
|
|
10210
10574
|
exports.parse = parse;
|
10211
10575
|
exports.parseAsObject = parseAsObject;
|
10212
10576
|
|
10213
|
-
},{}],
|
10577
|
+
},{}],21:[function(_dereq_,module,exports){
|
10214
10578
|
/**
|
10215
10579
|
* Copyright 2013 Facebook, Inc.
|
10216
10580
|
*
|
@@ -10464,8 +10828,9 @@ function transform(visitors, source, options) {
|
|
10464
10828
|
}
|
10465
10829
|
|
10466
10830
|
exports.transform = transform;
|
10831
|
+
exports.Syntax = Syntax;
|
10467
10832
|
|
10468
|
-
},{"./utils":
|
10833
|
+
},{"./utils":22,"esprima-fb":8,"source-map":10}],22:[function(_dereq_,module,exports){
|
10469
10834
|
/**
|
10470
10835
|
* Copyright 2013 Facebook, Inc.
|
10471
10836
|
*
|
@@ -11072,7 +11437,7 @@ exports.analyzeAndTraverse = analyzeAndTraverse;
|
|
11072
11437
|
exports.getOrderedChildren = getOrderedChildren;
|
11073
11438
|
exports.getNodeSourceText = getNodeSourceText;
|
11074
11439
|
|
11075
|
-
},{"./docblock":
|
11440
|
+
},{"./docblock":20,"esprima-fb":8}],23:[function(_dereq_,module,exports){
|
11076
11441
|
/**
|
11077
11442
|
* Copyright 2013 Facebook, Inc.
|
11078
11443
|
*
|
@@ -11225,7 +11590,7 @@ exports.visitorList = [
|
|
11225
11590
|
];
|
11226
11591
|
|
11227
11592
|
|
11228
|
-
},{"../src/utils":
|
11593
|
+
},{"../src/utils":22,"./es6-destructuring-visitors":25,"./es6-rest-param-visitors":28,"esprima-fb":8}],24:[function(_dereq_,module,exports){
|
11229
11594
|
/**
|
11230
11595
|
* Copyright 2013 Facebook, Inc.
|
11231
11596
|
*
|
@@ -11252,6 +11617,7 @@ exports.visitorList = [
|
|
11252
11617
|
var base62 = _dereq_('base62');
|
11253
11618
|
var Syntax = _dereq_('esprima-fb').Syntax;
|
11254
11619
|
var utils = _dereq_('../src/utils');
|
11620
|
+
var reservedWordsHelper = _dereq_('./reserved-words-helper');
|
11255
11621
|
|
11256
11622
|
var declareIdentInLocalScope = utils.declareIdentInLocalScope;
|
11257
11623
|
var initScopeMetadata = utils.initScopeMetadata;
|
@@ -11370,7 +11736,7 @@ function _shouldMungeIdentifier(node, state) {
|
|
11370
11736
|
* @param {object} state
|
11371
11737
|
*/
|
11372
11738
|
function visitClassMethod(traverse, node, path, state) {
|
11373
|
-
if (node.kind === 'get' || node.kind === 'set') {
|
11739
|
+
if (!state.g.opts.es5 && (node.kind === 'get' || node.kind === 'set')) {
|
11374
11740
|
throw new Error(
|
11375
11741
|
'This transform does not support ' + node.kind + 'ter methods for ES6 ' +
|
11376
11742
|
'classes. (line: ' + node.loc.start.line + ', col: ' +
|
@@ -11398,6 +11764,8 @@ visitClassMethod.test = function(node, path, state) {
|
|
11398
11764
|
*/
|
11399
11765
|
function visitClassFunctionExpression(traverse, node, path, state) {
|
11400
11766
|
var methodNode = path[0];
|
11767
|
+
var isGetter = methodNode.kind === 'get';
|
11768
|
+
var isSetter = methodNode.kind === 'set';
|
11401
11769
|
|
11402
11770
|
state = utils.updateState(state, {
|
11403
11771
|
methodFuncNode: node
|
@@ -11408,6 +11776,7 @@ function visitClassFunctionExpression(traverse, node, path, state) {
|
|
11408
11776
|
} else {
|
11409
11777
|
var methodAccessor;
|
11410
11778
|
var prototypeOrStatic = methodNode["static"] ? '' : '.prototype';
|
11779
|
+
var objectAccessor = state.className + prototypeOrStatic;
|
11411
11780
|
|
11412
11781
|
if (methodNode.key.type === Syntax.Identifier) {
|
11413
11782
|
// foo() {}
|
@@ -11415,17 +11784,37 @@ function visitClassFunctionExpression(traverse, node, path, state) {
|
|
11415
11784
|
if (_shouldMungeIdentifier(methodNode.key, state)) {
|
11416
11785
|
methodAccessor = _getMungedName(methodAccessor, state);
|
11417
11786
|
}
|
11418
|
-
|
11787
|
+
if (isGetter || isSetter) {
|
11788
|
+
methodAccessor = JSON.stringify(methodAccessor);
|
11789
|
+
} else if (reservedWordsHelper.isReservedWord(methodAccessor)) {
|
11790
|
+
methodAccessor = '[' + JSON.stringify(methodAccessor) + ']';
|
11791
|
+
} else {
|
11792
|
+
methodAccessor = '.' + methodAccessor;
|
11793
|
+
}
|
11419
11794
|
} else if (methodNode.key.type === Syntax.Literal) {
|
11420
|
-
// 'foo bar'() {}
|
11421
|
-
methodAccessor =
|
11795
|
+
// 'foo bar'() {} | get 'foo bar'() {} | set 'foo bar'() {}
|
11796
|
+
methodAccessor = JSON.stringify(methodNode.key.value);
|
11797
|
+
if (!(isGetter || isSetter)) {
|
11798
|
+
methodAccessor = '[' + methodAccessor + ']';
|
11799
|
+
}
|
11422
11800
|
}
|
11423
11801
|
|
11424
|
-
|
11425
|
-
|
11426
|
-
|
11427
|
-
|
11428
|
-
|
11802
|
+
if (isSetter || isGetter) {
|
11803
|
+
utils.append(
|
11804
|
+
'Object.defineProperty(' +
|
11805
|
+
objectAccessor + ',' +
|
11806
|
+
methodAccessor + ',' +
|
11807
|
+
'{enumerable:true,configurable:true,' +
|
11808
|
+
methodNode.kind + ':function',
|
11809
|
+
state
|
11810
|
+
);
|
11811
|
+
} else {
|
11812
|
+
utils.append(
|
11813
|
+
objectAccessor +
|
11814
|
+
methodAccessor + '=function' + (node.generator ? '*' : ''),
|
11815
|
+
state
|
11816
|
+
);
|
11817
|
+
}
|
11429
11818
|
}
|
11430
11819
|
utils.move(methodNode.key.range[1], state);
|
11431
11820
|
utils.append('(', state);
|
@@ -11457,6 +11846,9 @@ function visitClassFunctionExpression(traverse, node, path, state) {
|
|
11457
11846
|
utils.catchup(node.body.range[1], state);
|
11458
11847
|
|
11459
11848
|
if (methodNode.key.name !== 'constructor') {
|
11849
|
+
if (isGetter || isSetter) {
|
11850
|
+
utils.append('})', state);
|
11851
|
+
}
|
11460
11852
|
utils.append(';', state);
|
11461
11853
|
}
|
11462
11854
|
return false;
|
@@ -11767,7 +12159,7 @@ exports.visitorList = [
|
|
11767
12159
|
visitSuperMemberExpression
|
11768
12160
|
];
|
11769
12161
|
|
11770
|
-
},{"../src/utils":
|
12162
|
+
},{"../src/utils":22,"./reserved-words-helper":32,"base62":9,"esprima-fb":8}],25:[function(_dereq_,module,exports){
|
11771
12163
|
/**
|
11772
12164
|
* Copyright 2014 Facebook, Inc.
|
11773
12165
|
*
|
@@ -11810,7 +12202,9 @@ exports.visitorList = [
|
|
11810
12202
|
var Syntax = _dereq_('esprima-fb').Syntax;
|
11811
12203
|
var utils = _dereq_('../src/utils');
|
11812
12204
|
|
12205
|
+
var reservedWordsHelper = _dereq_('./reserved-words-helper');
|
11813
12206
|
var restParamVisitors = _dereq_('./es6-rest-param-visitors');
|
12207
|
+
var restPropertyHelpers = _dereq_('./es7-rest-property-helpers');
|
11814
12208
|
|
11815
12209
|
// -------------------------------------------------------
|
11816
12210
|
// 1. Structured variable declarations.
|
@@ -11855,6 +12249,26 @@ function getDestructuredComponents(node, state) {
|
|
11855
12249
|
continue;
|
11856
12250
|
}
|
11857
12251
|
|
12252
|
+
if (item.type === Syntax.SpreadElement) {
|
12253
|
+
// Spread/rest of an array.
|
12254
|
+
// TODO(dmitrys): support spread in the middle of a pattern
|
12255
|
+
// and also for function param patterns: [x, ...xs, y]
|
12256
|
+
components.push(item.argument.name +
|
12257
|
+
'=Array.prototype.slice.call(' +
|
12258
|
+
getTmpVar(tmpIndex) + ',' + idx + ')'
|
12259
|
+
);
|
12260
|
+
continue;
|
12261
|
+
}
|
12262
|
+
|
12263
|
+
if (item.type === Syntax.SpreadProperty) {
|
12264
|
+
var restExpression = restPropertyHelpers.renderRestExpression(
|
12265
|
+
getTmpVar(tmpIndex),
|
12266
|
+
patternItems
|
12267
|
+
);
|
12268
|
+
components.push(item.argument.name + '=' + restExpression);
|
12269
|
+
continue;
|
12270
|
+
}
|
12271
|
+
|
11858
12272
|
// Depending on pattern type (Array or Object), we get
|
11859
12273
|
// corresponding pattern item parts.
|
11860
12274
|
var accessor = getPatternItemAccessor(node, item, tmpIndex, idx);
|
@@ -11864,14 +12278,6 @@ function getDestructuredComponents(node, state) {
|
|
11864
12278
|
if (value.type === Syntax.Identifier) {
|
11865
12279
|
// Simple pattern item.
|
11866
12280
|
components.push(value.name + '=' + accessor);
|
11867
|
-
} else if (value.type === Syntax.SpreadElement) {
|
11868
|
-
// Spread/rest of an array.
|
11869
|
-
// TODO(dmitrys): support spread in the middle of a pattern
|
11870
|
-
// and also for function param patterns: [x, ...xs, y]
|
11871
|
-
components.push(value.argument.name +
|
11872
|
-
'=Array.prototype.slice.call(' +
|
11873
|
-
getTmpVar(tmpIndex) + ',' + idx + ')'
|
11874
|
-
);
|
11875
12281
|
} else {
|
11876
12282
|
// Complex sub-structure.
|
11877
12283
|
components.push(
|
@@ -11890,9 +12296,15 @@ function getPatternItems(node) {
|
|
11890
12296
|
|
11891
12297
|
function getPatternItemAccessor(node, patternItem, tmpIndex, idx) {
|
11892
12298
|
var tmpName = getTmpVar(tmpIndex);
|
11893
|
-
|
11894
|
-
|
11895
|
-
|
12299
|
+
if (node.type === Syntax.ObjectPattern) {
|
12300
|
+
if (reservedWordsHelper.isReservedWord(patternItem.key.name)) {
|
12301
|
+
return tmpName + '["' + patternItem.key.name + '"]';
|
12302
|
+
} else {
|
12303
|
+
return tmpName + '.' + patternItem.key.name;
|
12304
|
+
}
|
12305
|
+
} else {
|
12306
|
+
return tmpName + '[' + idx + ']';
|
12307
|
+
}
|
11896
12308
|
}
|
11897
12309
|
|
11898
12310
|
function getPatternItemValue(node, patternItem) {
|
@@ -12035,7 +12447,7 @@ exports.visitorList = [
|
|
12035
12447
|
exports.renderDestructuredComponents = renderDestructuredComponents;
|
12036
12448
|
|
12037
12449
|
|
12038
|
-
},{"../src/utils":
|
12450
|
+
},{"../src/utils":22,"./es6-rest-param-visitors":28,"./es7-rest-property-helpers":30,"./reserved-words-helper":32,"esprima-fb":8}],26:[function(_dereq_,module,exports){
|
12039
12451
|
/**
|
12040
12452
|
* Copyright 2013 Facebook, Inc.
|
12041
12453
|
*
|
@@ -12055,7 +12467,7 @@ exports.renderDestructuredComponents = renderDestructuredComponents;
|
|
12055
12467
|
/*jslint node:true*/
|
12056
12468
|
|
12057
12469
|
/**
|
12058
|
-
* Desugars concise methods of objects to
|
12470
|
+
* Desugars concise methods of objects to function expressions.
|
12059
12471
|
*
|
12060
12472
|
* var foo = {
|
12061
12473
|
* method(x, y) { ... }
|
@@ -12069,10 +12481,27 @@ exports.renderDestructuredComponents = renderDestructuredComponents;
|
|
12069
12481
|
|
12070
12482
|
var Syntax = _dereq_('esprima-fb').Syntax;
|
12071
12483
|
var utils = _dereq_('../src/utils');
|
12484
|
+
var reservedWordsHelper = _dereq_('./reserved-words-helper');
|
12072
12485
|
|
12073
12486
|
function visitObjectConciseMethod(traverse, node, path, state) {
|
12487
|
+
var isGenerator = node.value.generator;
|
12488
|
+
if (isGenerator) {
|
12489
|
+
utils.catchupWhiteSpace(node.range[0] + 1, state);
|
12490
|
+
}
|
12491
|
+
if (node.computed) { // [<expr>]() { ...}
|
12492
|
+
utils.catchup(node.key.range[1] + 1, state);
|
12493
|
+
} else if (reservedWordsHelper.isReservedWord(node.key.name)) {
|
12494
|
+
utils.catchup(node.key.range[0], state);
|
12495
|
+
utils.append('"', state);
|
12496
|
+
utils.catchup(node.key.range[1], state);
|
12497
|
+
utils.append('"', state);
|
12498
|
+
}
|
12499
|
+
|
12074
12500
|
utils.catchup(node.key.range[1], state);
|
12075
|
-
utils.append(
|
12501
|
+
utils.append(
|
12502
|
+
':function' + (isGenerator ? '*' : ''),
|
12503
|
+
state
|
12504
|
+
);
|
12076
12505
|
path.unshift(node);
|
12077
12506
|
traverse(node.value, path, state);
|
12078
12507
|
path.shift();
|
@@ -12089,7 +12518,7 @@ exports.visitorList = [
|
|
12089
12518
|
visitObjectConciseMethod
|
12090
12519
|
];
|
12091
12520
|
|
12092
|
-
},{"../src/utils":
|
12521
|
+
},{"../src/utils":22,"./reserved-words-helper":32,"esprima-fb":8}],27:[function(_dereq_,module,exports){
|
12093
12522
|
/**
|
12094
12523
|
* Copyright 2013 Facebook, Inc.
|
12095
12524
|
*
|
@@ -12144,7 +12573,7 @@ exports.visitorList = [
|
|
12144
12573
|
];
|
12145
12574
|
|
12146
12575
|
|
12147
|
-
},{"../src/utils":
|
12576
|
+
},{"../src/utils":22,"esprima-fb":8}],28:[function(_dereq_,module,exports){
|
12148
12577
|
/**
|
12149
12578
|
* Copyright 2013 Facebook, Inc.
|
12150
12579
|
*
|
@@ -12243,7 +12672,7 @@ exports.visitorList = [
|
|
12243
12672
|
visitFunctionBodyWithRestParam
|
12244
12673
|
];
|
12245
12674
|
|
12246
|
-
},{"../src/utils":
|
12675
|
+
},{"../src/utils":22,"esprima-fb":8}],29:[function(_dereq_,module,exports){
|
12247
12676
|
/**
|
12248
12677
|
* Copyright 2013 Facebook, Inc.
|
12249
12678
|
*
|
@@ -12401,9 +12830,9 @@ exports.visitorList = [
|
|
12401
12830
|
visitTaggedTemplateExpression
|
12402
12831
|
];
|
12403
12832
|
|
12404
|
-
},{"../src/utils":
|
12833
|
+
},{"../src/utils":22,"esprima-fb":8}],30:[function(_dereq_,module,exports){
|
12405
12834
|
/**
|
12406
|
-
* Copyright 2013
|
12835
|
+
* Copyright 2013 Facebook, Inc.
|
12407
12836
|
*
|
12408
12837
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
12409
12838
|
* you may not use this file except in compliance with the License.
|
@@ -12417,319 +12846,182 @@ exports.visitorList = [
|
|
12417
12846
|
* See the License for the specific language governing permissions and
|
12418
12847
|
* limitations under the License.
|
12419
12848
|
*/
|
12420
|
-
/* jshint browser: true */
|
12421
|
-
/* jslint evil: true */
|
12422
|
-
|
12423
|
-
'use strict';
|
12424
|
-
|
12425
|
-
var buffer = _dereq_('buffer');
|
12426
|
-
var docblock = _dereq_('jstransform/src/docblock');
|
12427
|
-
var transform = _dereq_('jstransform').transform;
|
12428
|
-
var visitors = _dereq_('./fbtransform/visitors');
|
12429
|
-
|
12430
|
-
var headEl;
|
12431
|
-
var dummyAnchor;
|
12432
|
-
var inlineScriptCount = 0;
|
12433
|
-
|
12434
|
-
// The source-map library relies on Object.defineProperty, but IE8 doesn't
|
12435
|
-
// support it fully even with es5-sham. Indeed, es5-sham's defineProperty
|
12436
|
-
// throws when Object.prototype.__defineGetter__ is missing, so we skip building
|
12437
|
-
// the source map in that case.
|
12438
|
-
var supportsAccessors = Object.prototype.hasOwnProperty('__defineGetter__');
|
12439
|
-
|
12440
|
-
/**
|
12441
|
-
* Run provided code through jstransform.
|
12442
|
-
*
|
12443
|
-
* @param {string} source Original source code
|
12444
|
-
* @param {object?} options Options to pass to jstransform
|
12445
|
-
* @return {object} object as returned from jstransform
|
12446
|
-
*/
|
12447
|
-
function transformReact(source, options) {
|
12448
|
-
// TODO: just use react-tools
|
12449
|
-
var visitorList;
|
12450
|
-
if (options && options.harmony) {
|
12451
|
-
visitorList = visitors.getAllVisitors();
|
12452
|
-
} else {
|
12453
|
-
visitorList = visitors.transformVisitors.react;
|
12454
|
-
}
|
12455
|
-
|
12456
|
-
return transform(visitorList, source, {
|
12457
|
-
sourceMap: supportsAccessors
|
12458
|
-
});
|
12459
|
-
}
|
12460
12849
|
|
12461
|
-
|
12462
|
-
* Eval provided source after transforming it.
|
12463
|
-
*
|
12464
|
-
* @param {string} source Original source code
|
12465
|
-
* @param {object?} options Options to pass to jstransform
|
12466
|
-
*/
|
12467
|
-
function exec(source, options) {
|
12468
|
-
return eval(transformReact(source, options).code);
|
12469
|
-
}
|
12850
|
+
/*jslint node:true*/
|
12470
12851
|
|
12471
12852
|
/**
|
12472
|
-
*
|
12473
|
-
* location of the error `e`. The line is limited in size so big lines of code
|
12474
|
-
* are also shown in a readable way.
|
12475
|
-
*
|
12476
|
-
* Example:
|
12477
|
-
* ... x', overflow:'scroll'}} id={} onScroll={this.scroll} class=" ...
|
12478
|
-
* ^
|
12479
|
-
*
|
12480
|
-
* @param {string} code The full string of code
|
12481
|
-
* @param {Error} e The error being thrown
|
12482
|
-
* @return {string} formatted message
|
12483
|
-
* @internal
|
12853
|
+
* Desugars ES7 rest properties into ES5 object iteration.
|
12484
12854
|
*/
|
12485
|
-
function createSourceCodeErrorMessage(code, e) {
|
12486
|
-
var sourceLines = code.split('\n');
|
12487
|
-
var erroneousLine = sourceLines[e.lineNumber - 1];
|
12488
|
-
|
12489
|
-
// Removes any leading indenting spaces and gets the number of
|
12490
|
-
// chars indenting the `erroneousLine`
|
12491
|
-
var indentation = 0;
|
12492
|
-
erroneousLine = erroneousLine.replace(/^\s+/, function(leadingSpaces) {
|
12493
|
-
indentation = leadingSpaces.length;
|
12494
|
-
return '';
|
12495
|
-
});
|
12496
12855
|
|
12497
|
-
|
12498
|
-
|
12499
|
-
var LIMIT = 30;
|
12500
|
-
var errorColumn = e.column - indentation;
|
12856
|
+
var Syntax = _dereq_('esprima-fb').Syntax;
|
12857
|
+
var utils = _dereq_('../src/utils');
|
12501
12858
|
|
12502
|
-
|
12503
|
-
|
12504
|
-
|
12505
|
-
|
12506
|
-
|
12507
|
-
|
12859
|
+
// TODO: This is a pretty massive helper, it should only be defined once, in the
|
12860
|
+
// transform's runtime environment. We don't currently have a runtime though.
|
12861
|
+
var restFunction =
|
12862
|
+
'(function(source, exclusion) {' +
|
12863
|
+
'var rest = {};' +
|
12864
|
+
'var hasOwn = Object.prototype.hasOwnProperty;' +
|
12865
|
+
'if (source == null) {' +
|
12866
|
+
'throw new TypeError();' +
|
12867
|
+
'}' +
|
12868
|
+
'for (var key in source) {' +
|
12869
|
+
'if (hasOwn.call(source, key) && !hasOwn.call(exclusion, key)) {' +
|
12870
|
+
'rest[key] = source[key];' +
|
12871
|
+
'}' +
|
12872
|
+
'}' +
|
12873
|
+
'return rest;' +
|
12874
|
+
'})';
|
12875
|
+
|
12876
|
+
function getPropertyNames(properties) {
|
12877
|
+
var names = [];
|
12878
|
+
for (var i = 0; i < properties.length; i++) {
|
12879
|
+
var property = properties[i];
|
12880
|
+
if (property.type === Syntax.SpreadProperty) {
|
12881
|
+
continue;
|
12882
|
+
}
|
12883
|
+
if (property.type === Syntax.Identifier) {
|
12884
|
+
names.push(property.name);
|
12885
|
+
} else {
|
12886
|
+
names.push(property.key.name);
|
12887
|
+
}
|
12508
12888
|
}
|
12509
|
-
|
12510
|
-
message += new Array(errorColumn - 1).join(' ') + '^';
|
12511
|
-
return message;
|
12889
|
+
return names;
|
12512
12890
|
}
|
12513
12891
|
|
12514
|
-
|
12515
|
-
|
12516
|
-
|
12517
|
-
* @param {string} code
|
12518
|
-
* @param {string?} url
|
12519
|
-
* @param {object?} options
|
12520
|
-
* @return {string} The transformed code.
|
12521
|
-
* @internal
|
12522
|
-
*/
|
12523
|
-
function transformCode(code, url, options) {
|
12524
|
-
var jsx = docblock.parseAsObject(docblock.extract(code)).jsx;
|
12525
|
-
|
12526
|
-
if (jsx) {
|
12527
|
-
try {
|
12528
|
-
var transformed = transformReact(code, options);
|
12529
|
-
} catch(e) {
|
12530
|
-
e.message += '\n at ';
|
12531
|
-
if (url) {
|
12532
|
-
if ('fileName' in e) {
|
12533
|
-
// We set `fileName` if it's supported by this error object and
|
12534
|
-
// a `url` was provided.
|
12535
|
-
// The error will correctly point to `url` in Firefox.
|
12536
|
-
e.fileName = url;
|
12537
|
-
}
|
12538
|
-
e.message += url + ':' + e.lineNumber + ':' + e.column;
|
12539
|
-
} else {
|
12540
|
-
e.message += location.href;
|
12541
|
-
}
|
12542
|
-
e.message += createSourceCodeErrorMessage(code, e);
|
12543
|
-
throw e;
|
12544
|
-
}
|
12892
|
+
function getRestFunctionCall(source, exclusion) {
|
12893
|
+
return restFunction + '(' + source + ',' + exclusion + ')';
|
12894
|
+
}
|
12545
12895
|
|
12546
|
-
|
12547
|
-
|
12548
|
-
|
12896
|
+
function getSimpleShallowCopy(accessorExpression) {
|
12897
|
+
// This could be faster with 'Object.assign({}, ' + accessorExpression + ')'
|
12898
|
+
// but to unify code paths and avoid a ES6 dependency we use the same
|
12899
|
+
// helper as for the exclusion case.
|
12900
|
+
return getRestFunctionCall(accessorExpression, '{}');
|
12901
|
+
}
|
12549
12902
|
|
12550
|
-
|
12551
|
-
|
12552
|
-
|
12553
|
-
|
12554
|
-
inlineScriptCount++;
|
12555
|
-
if (inlineScriptCount > 1) {
|
12556
|
-
source += ' (' + inlineScriptCount + ')';
|
12557
|
-
}
|
12558
|
-
} else if (dummyAnchor) {
|
12559
|
-
// Firefox has problems when the sourcemap source is a proper URL with a
|
12560
|
-
// protocol and hostname, so use the pathname. We could use just the
|
12561
|
-
// filename, but hopefully using the full path will prevent potential
|
12562
|
-
// issues where the same filename exists in multiple directories.
|
12563
|
-
dummyAnchor.href = url;
|
12564
|
-
source = dummyAnchor.pathname.substr(1);
|
12565
|
-
}
|
12566
|
-
map.sources = [source];
|
12567
|
-
map.sourcesContent = [code];
|
12568
|
-
|
12569
|
-
return (
|
12570
|
-
transformed.code +
|
12571
|
-
'\n//# sourceMappingURL=data:application/json;base64,' +
|
12572
|
-
buffer.Buffer(JSON.stringify(map)).toString('base64')
|
12573
|
-
);
|
12574
|
-
} else {
|
12575
|
-
// TODO: warn that we found a script tag missing the docblock?
|
12576
|
-
// or warn and proceed anyway?
|
12577
|
-
// or warn, add it ourselves, and proceed anyway?
|
12578
|
-
return code;
|
12903
|
+
function renderRestExpression(accessorExpression, excludedProperties) {
|
12904
|
+
var excludedNames = getPropertyNames(excludedProperties);
|
12905
|
+
if (!excludedNames.length) {
|
12906
|
+
return getSimpleShallowCopy(accessorExpression);
|
12579
12907
|
}
|
12908
|
+
return getRestFunctionCall(
|
12909
|
+
accessorExpression,
|
12910
|
+
'{' + excludedNames.join(':1,') + ':1}'
|
12911
|
+
);
|
12580
12912
|
}
|
12581
12913
|
|
12914
|
+
exports.renderRestExpression = renderRestExpression;
|
12582
12915
|
|
12916
|
+
},{"../src/utils":22,"esprima-fb":8}],31:[function(_dereq_,module,exports){
|
12583
12917
|
/**
|
12584
|
-
*
|
12585
|
-
* after transforming it.
|
12586
|
-
*
|
12587
|
-
* @param {string} code The original source code
|
12588
|
-
* @param {string?} url Where the code came from. null if inline
|
12589
|
-
* @param {object?} options Options to pass to jstransform
|
12590
|
-
* @internal
|
12918
|
+
* Copyright 2004-present Facebook. All Rights Reserved.
|
12591
12919
|
*/
|
12592
|
-
|
12593
|
-
var scriptEl = document.createElement('script');
|
12594
|
-
scriptEl.text = transformCode(code, url, options);
|
12595
|
-
headEl.appendChild(scriptEl);
|
12596
|
-
}
|
12920
|
+
/*global exports:true*/
|
12597
12921
|
|
12598
12922
|
/**
|
12599
|
-
*
|
12923
|
+
* Implements ES7 object spread property.
|
12924
|
+
* https://gist.github.com/sebmarkbage/aa849c7973cb4452c547
|
12925
|
+
*
|
12926
|
+
* { ...a, x: 1 }
|
12927
|
+
*
|
12928
|
+
* Object.assign({}, a, {x: 1 })
|
12600
12929
|
*
|
12601
|
-
* @param {string} url The location of the script src
|
12602
|
-
* @param {function} callback Function to call with the content of url
|
12603
|
-
* @internal
|
12604
12930
|
*/
|
12605
|
-
function load(url, callback) {
|
12606
|
-
var xhr;
|
12607
|
-
xhr = window.ActiveXObject ? new window.ActiveXObject('Microsoft.XMLHTTP')
|
12608
|
-
: new XMLHttpRequest();
|
12609
12931
|
|
12610
|
-
|
12611
|
-
|
12612
|
-
xhr.open('GET', url, true);
|
12613
|
-
if ('overrideMimeType' in xhr) {
|
12614
|
-
xhr.overrideMimeType('text/plain');
|
12615
|
-
}
|
12616
|
-
xhr.onreadystatechange = function() {
|
12617
|
-
if (xhr.readyState === 4) {
|
12618
|
-
if (xhr.status === 0 || xhr.status === 200) {
|
12619
|
-
callback(xhr.responseText, url);
|
12620
|
-
} else {
|
12621
|
-
throw new Error("Could not load " + url);
|
12622
|
-
}
|
12623
|
-
}
|
12624
|
-
};
|
12625
|
-
return xhr.send(null);
|
12626
|
-
}
|
12932
|
+
var Syntax = _dereq_('esprima-fb').Syntax;
|
12933
|
+
var utils = _dereq_('../src/utils');
|
12627
12934
|
|
12628
|
-
|
12629
|
-
|
12630
|
-
* inline script, or by using XHR. Transforms are applied if needed. The scripts
|
12631
|
-
* are executed in the order they are found on the page.
|
12632
|
-
*
|
12633
|
-
* @param {array} scripts The <script> elements to load and run.
|
12634
|
-
* @internal
|
12635
|
-
*/
|
12636
|
-
function loadScripts(scripts) {
|
12637
|
-
var result = scripts.map(function() {
|
12638
|
-
return false;
|
12639
|
-
});
|
12640
|
-
var count = result.length;
|
12935
|
+
function visitObjectLiteralSpread(traverse, node, path, state) {
|
12936
|
+
utils.catchup(node.range[0], state);
|
12641
12937
|
|
12642
|
-
|
12643
|
-
var script, i;
|
12938
|
+
utils.append('Object.assign({', state);
|
12644
12939
|
|
12645
|
-
|
12646
|
-
|
12940
|
+
// Skip the original {
|
12941
|
+
utils.move(node.range[0] + 1, state);
|
12647
12942
|
|
12648
|
-
|
12649
|
-
|
12650
|
-
|
12651
|
-
|
12652
|
-
|
12943
|
+
var previousWasSpread = false;
|
12944
|
+
|
12945
|
+
for (var i = 0; i < node.properties.length; i++) {
|
12946
|
+
var property = node.properties[i];
|
12947
|
+
if (property.type === Syntax.SpreadProperty) {
|
12948
|
+
|
12949
|
+
// Close the previous object or initial object
|
12950
|
+
if (!previousWasSpread) {
|
12951
|
+
utils.append('}', state);
|
12653
12952
|
}
|
12654
|
-
}
|
12655
|
-
}
|
12656
12953
|
|
12657
|
-
|
12658
|
-
|
12659
|
-
|
12660
|
-
|
12661
|
-
|
12662
|
-
|
12663
|
-
|
12954
|
+
if (i === 0) {
|
12955
|
+
// Normally there will be a comma when we catch up, but not before
|
12956
|
+
// the first property.
|
12957
|
+
utils.append(',', state);
|
12958
|
+
}
|
12959
|
+
|
12960
|
+
utils.catchup(property.range[0], state);
|
12961
|
+
|
12962
|
+
// skip ...
|
12963
|
+
utils.move(property.range[0] + 3, state);
|
12964
|
+
|
12965
|
+
traverse(property.argument, path, state);
|
12966
|
+
|
12967
|
+
utils.catchup(property.range[1], state);
|
12968
|
+
|
12969
|
+
previousWasSpread = true;
|
12664
12970
|
|
12665
|
-
if (script.src) {
|
12666
|
-
load(script.src, function(content, url) {
|
12667
|
-
result[i] = {
|
12668
|
-
executed: false,
|
12669
|
-
content: content,
|
12670
|
-
url: url,
|
12671
|
-
options: options
|
12672
|
-
};
|
12673
|
-
check();
|
12674
|
-
});
|
12675
12971
|
} else {
|
12676
|
-
result[i] = {
|
12677
|
-
executed: false,
|
12678
|
-
content: script.innerHTML,
|
12679
|
-
url: null,
|
12680
|
-
options: options
|
12681
|
-
};
|
12682
|
-
check();
|
12683
|
-
}
|
12684
|
-
});
|
12685
|
-
}
|
12686
12972
|
|
12687
|
-
|
12688
|
-
|
12689
|
-
|
12690
|
-
|
12691
|
-
|
12692
|
-
|
12693
|
-
|
12973
|
+
utils.catchup(property.range[0], state);
|
12974
|
+
|
12975
|
+
if (previousWasSpread) {
|
12976
|
+
utils.append('{', state);
|
12977
|
+
}
|
12978
|
+
|
12979
|
+
traverse(property, path, state);
|
12980
|
+
|
12981
|
+
utils.catchup(property.range[1], state);
|
12982
|
+
|
12983
|
+
previousWasSpread = false;
|
12694
12984
|
|
12695
|
-
// Array.prototype.slice cannot be used on NodeList on IE8
|
12696
|
-
var jsxScripts = [];
|
12697
|
-
for (var i = 0; i < scripts.length; i++) {
|
12698
|
-
if (scripts.item(i).type.indexOf('text/jsx') !== -1) {
|
12699
|
-
jsxScripts.push(scripts.item(i));
|
12700
12985
|
}
|
12701
12986
|
}
|
12702
12987
|
|
12703
|
-
|
12704
|
-
'You are using the in-browser JSX transformer. Be sure to precompile ' +
|
12705
|
-
'your JSX for production - ' +
|
12706
|
-
'http://facebook.github.io/react/docs/tooling-integration.html#jsx'
|
12707
|
-
);
|
12708
|
-
|
12709
|
-
loadScripts(jsxScripts);
|
12710
|
-
}
|
12988
|
+
utils.catchup(node.range[1] - 1, state);
|
12711
12989
|
|
12712
|
-
//
|
12713
|
-
|
12714
|
-
if (typeof window !== "undefined" && window !== null) {
|
12715
|
-
headEl = document.getElementsByTagName('head')[0];
|
12716
|
-
dummyAnchor = document.createElement('a');
|
12990
|
+
// Skip the trailing }
|
12991
|
+
utils.move(node.range[1], state);
|
12717
12992
|
|
12718
|
-
if (
|
12719
|
-
|
12720
|
-
} else {
|
12721
|
-
window.attachEvent('onload', runScripts);
|
12993
|
+
if (!previousWasSpread) {
|
12994
|
+
utils.append('}', state);
|
12722
12995
|
}
|
12996
|
+
|
12997
|
+
utils.append(')', state);
|
12998
|
+
return false;
|
12723
12999
|
}
|
12724
13000
|
|
12725
|
-
|
12726
|
-
|
12727
|
-
|
13001
|
+
visitObjectLiteralSpread.test = function(node, path, state) {
|
13002
|
+
if (node.type !== Syntax.ObjectExpression) {
|
13003
|
+
return false;
|
13004
|
+
}
|
13005
|
+
// Tight loop optimization
|
13006
|
+
var hasAtLeastOneSpreadProperty = false;
|
13007
|
+
for (var i = 0; i < node.properties.length; i++) {
|
13008
|
+
var property = node.properties[i];
|
13009
|
+
if (property.type === Syntax.SpreadProperty) {
|
13010
|
+
hasAtLeastOneSpreadProperty = true;
|
13011
|
+
} else if (property.kind !== 'init') {
|
13012
|
+
return false;
|
13013
|
+
}
|
13014
|
+
}
|
13015
|
+
return hasAtLeastOneSpreadProperty;
|
12728
13016
|
};
|
12729
13017
|
|
12730
|
-
|
13018
|
+
exports.visitorList = [
|
13019
|
+
visitObjectLiteralSpread
|
13020
|
+
];
|
13021
|
+
|
13022
|
+
},{"../src/utils":22,"esprima-fb":8}],32:[function(_dereq_,module,exports){
|
12731
13023
|
/**
|
12732
|
-
* Copyright
|
13024
|
+
* Copyright 2014 Facebook, Inc.
|
12733
13025
|
*
|
12734
13026
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
12735
13027
|
* you may not use this file except in compliance with the License.
|
@@ -12743,6 +13035,121 @@ module.exports = {
|
|
12743
13035
|
* See the License for the specific language governing permissions and
|
12744
13036
|
* limitations under the License.
|
12745
13037
|
*/
|
13038
|
+
|
13039
|
+
var KEYWORDS = [
|
13040
|
+
'break', 'do', 'in', 'typeof', 'case', 'else', 'instanceof', 'var', 'catch',
|
13041
|
+
'export', 'new', 'void', 'class', 'extends', 'return', 'while', 'const',
|
13042
|
+
'finally', 'super', 'with', 'continue', 'for', 'switch', 'yield', 'debugger',
|
13043
|
+
'function', 'this', 'default', 'if', 'throw', 'delete', 'import', 'try'
|
13044
|
+
];
|
13045
|
+
|
13046
|
+
var FUTURE_RESERVED_WORDS = [
|
13047
|
+
'enum', 'await', 'implements', 'package', 'protected', 'static', 'interface',
|
13048
|
+
'private', 'public'
|
13049
|
+
];
|
13050
|
+
|
13051
|
+
var LITERALS = [
|
13052
|
+
'null',
|
13053
|
+
'true',
|
13054
|
+
'false'
|
13055
|
+
];
|
13056
|
+
|
13057
|
+
// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-reserved-words
|
13058
|
+
var RESERVED_WORDS = [].concat(
|
13059
|
+
KEYWORDS,
|
13060
|
+
FUTURE_RESERVED_WORDS,
|
13061
|
+
LITERALS
|
13062
|
+
);
|
13063
|
+
|
13064
|
+
var reservedWordsMap = {};
|
13065
|
+
RESERVED_WORDS.forEach(function(k) {
|
13066
|
+
reservedWordsMap[k] = true;
|
13067
|
+
});
|
13068
|
+
|
13069
|
+
exports.isReservedWord = function(word) {
|
13070
|
+
return !!reservedWordsMap[word];
|
13071
|
+
};
|
13072
|
+
|
13073
|
+
},{}],33:[function(_dereq_,module,exports){
|
13074
|
+
var esprima = _dereq_('esprima-fb');
|
13075
|
+
var utils = _dereq_('jstransform/src/utils');
|
13076
|
+
|
13077
|
+
var Syntax = esprima.Syntax;
|
13078
|
+
|
13079
|
+
function _isFunctionNode(node) {
|
13080
|
+
return node.type === Syntax.FunctionDeclaration
|
13081
|
+
|| node.type === Syntax.FunctionExpression
|
13082
|
+
|| node.type === Syntax.ArrowFunctionExpression;
|
13083
|
+
}
|
13084
|
+
|
13085
|
+
function visitClassProperty(traverse, node, path, state) {
|
13086
|
+
utils.catchupWhiteOut(node.range[1], state);
|
13087
|
+
return false;
|
13088
|
+
}
|
13089
|
+
visitClassProperty.test = function(node, path, state) {
|
13090
|
+
return node.type === Syntax.ClassProperty;
|
13091
|
+
};
|
13092
|
+
|
13093
|
+
function visitFunctionParametricAnnotation(traverse, node, path, state) {
|
13094
|
+
utils.catchupWhiteOut(node.range[1], state);
|
13095
|
+
return false;
|
13096
|
+
}
|
13097
|
+
visitFunctionParametricAnnotation.test = function(node, path, state) {
|
13098
|
+
return node.type === Syntax.ParametricTypeAnnotation
|
13099
|
+
&& path[0]
|
13100
|
+
&& _isFunctionNode(path[0])
|
13101
|
+
&& node === path[0].parametricType;
|
13102
|
+
};
|
13103
|
+
|
13104
|
+
function visitFunctionReturnAnnotation(traverse, node, path, state) {
|
13105
|
+
utils.catchupWhiteOut(node.range[1], state);
|
13106
|
+
return false;
|
13107
|
+
}
|
13108
|
+
visitFunctionReturnAnnotation.test = function(node, path, state) {
|
13109
|
+
return path[0] && _isFunctionNode(path[0]) && node === path[0].returnType;
|
13110
|
+
};
|
13111
|
+
|
13112
|
+
function visitOptionalFunctionParameterAnnotation(traverse, node, path, state) {
|
13113
|
+
path.unshift(node);
|
13114
|
+
traverse(node.id, path, state);
|
13115
|
+
path.shift();
|
13116
|
+
utils.catchup(node.id.range[1], state);
|
13117
|
+
utils.catchupWhiteOut(node.range[1], state);
|
13118
|
+
return false;
|
13119
|
+
}
|
13120
|
+
visitOptionalFunctionParameterAnnotation.test = function(node, path, state) {
|
13121
|
+
return node.type === Syntax.OptionalParameter
|
13122
|
+
&& path[0]
|
13123
|
+
&& _isFunctionNode(path[0]);
|
13124
|
+
};
|
13125
|
+
|
13126
|
+
function visitTypeAnnotatedIdentifier(traverse, node, path, state) {
|
13127
|
+
traverse(node.id, path, state);
|
13128
|
+
utils.catchup(node.id.range[1], state);
|
13129
|
+
utils.catchupWhiteOut(node.range[1], state);
|
13130
|
+
return false;
|
13131
|
+
}
|
13132
|
+
visitTypeAnnotatedIdentifier.test = function(node, path, state) {
|
13133
|
+
return node.type === Syntax.TypeAnnotatedIdentifier;
|
13134
|
+
};
|
13135
|
+
|
13136
|
+
exports.visitorList = [
|
13137
|
+
visitClassProperty,
|
13138
|
+
visitFunctionParametricAnnotation,
|
13139
|
+
visitFunctionReturnAnnotation,
|
13140
|
+
visitOptionalFunctionParameterAnnotation,
|
13141
|
+
visitTypeAnnotatedIdentifier
|
13142
|
+
];
|
13143
|
+
|
13144
|
+
},{"esprima-fb":8,"jstransform/src/utils":22}],34:[function(_dereq_,module,exports){
|
13145
|
+
/**
|
13146
|
+
* Copyright 2013-2014, Facebook, Inc.
|
13147
|
+
* All rights reserved.
|
13148
|
+
*
|
13149
|
+
* This source code is licensed under the BSD-style license found in the
|
13150
|
+
* LICENSE file in the root directory of this source tree. An additional grant
|
13151
|
+
* of patent rights can be found in the PATENTS file in the same directory.
|
13152
|
+
*/
|
12746
13153
|
/*global exports:true*/
|
12747
13154
|
"use strict";
|
12748
13155
|
|
@@ -12758,27 +13165,16 @@ var quoteAttrName = _dereq_('./xjs').quoteAttrName;
|
|
12758
13165
|
var trimLeft = _dereq_('./xjs').trimLeft;
|
12759
13166
|
|
12760
13167
|
/**
|
12761
|
-
* Customized desugar processor.
|
13168
|
+
* Customized desugar processor for React JSX. Currently:
|
12762
13169
|
*
|
12763
|
-
*
|
12764
|
-
* <X
|
12765
|
-
* <X prop="
|
12766
|
-
*
|
12767
|
-
*
|
12768
|
-
*
|
12769
|
-
* Exceptions to the simple rules above:
|
12770
|
-
* if a property is named "class" it will be changed to "className" in the
|
12771
|
-
* javascript since "class" is not a valid object key in javascript.
|
13170
|
+
* <X> </X> => React.createElement(X, null)
|
13171
|
+
* <X prop="1" /> => React.createElement(X, {prop: '1'}, null)
|
13172
|
+
* <X prop="2"><Y /></X> => React.createElement(X, {prop:'2'},
|
13173
|
+
* React.createElement(Y, null)
|
13174
|
+
* )
|
13175
|
+
* <div /> => React.createElement("div", null)
|
12772
13176
|
*/
|
12773
13177
|
|
12774
|
-
var JSX_ATTRIBUTE_TRANSFORMS = {
|
12775
|
-
cxName: function(attr) {
|
12776
|
-
throw new Error(
|
12777
|
-
"cxName is no longer supported, use className={cx(...)} instead"
|
12778
|
-
);
|
12779
|
-
}
|
12780
|
-
};
|
12781
|
-
|
12782
13178
|
/**
|
12783
13179
|
* Removes all non-whitespace/parenthesis characters
|
12784
13180
|
*/
|
@@ -12787,8 +13183,12 @@ function stripNonWhiteParen(value) {
|
|
12787
13183
|
return value.replace(reNonWhiteParen, '');
|
12788
13184
|
}
|
12789
13185
|
|
13186
|
+
var tagConvention = /^[a-z]|\-/;
|
13187
|
+
function isTagName(name) {
|
13188
|
+
return tagConvention.test(name);
|
13189
|
+
}
|
13190
|
+
|
12790
13191
|
function visitReactTag(traverse, object, path, state) {
|
12791
|
-
var jsxObjIdent = utils.getDocblock(state).jsx;
|
12792
13192
|
var openingElement = object.openingElement;
|
12793
13193
|
var nameObject = openingElement.name;
|
12794
13194
|
var attributesObject = openingElement.attributes;
|
@@ -12799,44 +13199,31 @@ function visitReactTag(traverse, object, path, state) {
|
|
12799
13199
|
throw new Error('Namespace tags are not supported. ReactJSX is not XML.');
|
12800
13200
|
}
|
12801
13201
|
|
12802
|
-
//
|
12803
|
-
|
12804
|
-
|
12805
|
-
|
12806
|
-
//
|
12807
|
-
if (nameObject.type === Syntax.XJSIdentifier) {
|
12808
|
-
|
12809
|
-
|
12810
|
-
|
12811
|
-
if (FALLBACK_TAGS.hasOwnProperty(tagName)) {
|
12812
|
-
// "Properly" handle invalid identifiers, like <font-face>, which needs to
|
12813
|
-
// be enclosed in quotes.
|
12814
|
-
var predicate =
|
12815
|
-
tagName === quotedTagName ?
|
12816
|
-
('.' + tagName) :
|
12817
|
-
('[' + quotedTagName + ']');
|
12818
|
-
utils.append(jsxObjIdent + predicate, state);
|
12819
|
-
utils.move(nameObject.range[1], state);
|
12820
|
-
didAddTag = true;
|
12821
|
-
} else if (tagName !== quotedTagName) {
|
12822
|
-
// If we're in the case where we need to quote and but don't recognize the
|
12823
|
-
// tag, throw.
|
13202
|
+
// We assume that the React runtime is already in scope
|
13203
|
+
utils.append('React.createElement(', state);
|
13204
|
+
|
13205
|
+
// Identifiers with lower case or hypthens are fallback tags (strings).
|
13206
|
+
// XJSMemberExpressions are not.
|
13207
|
+
if (nameObject.type === Syntax.XJSIdentifier && isTagName(nameObject.name)) {
|
13208
|
+
// This is a temporary error message to assist upgrades
|
13209
|
+
if (!FALLBACK_TAGS.hasOwnProperty(nameObject.name)) {
|
12824
13210
|
throw new Error(
|
12825
|
-
'
|
12826
|
-
|
13211
|
+
'Lower case component names (' + nameObject.name + ') are no longer ' +
|
13212
|
+
'supported in JSX: See http://fb.me/react-jsx-lower-case'
|
12827
13213
|
);
|
12828
13214
|
}
|
12829
|
-
}
|
12830
13215
|
|
12831
|
-
|
12832
|
-
|
12833
|
-
|
12834
|
-
|
13216
|
+
utils.append('"' + nameObject.name + '"', state);
|
13217
|
+
utils.move(nameObject.range[1], state);
|
13218
|
+
} else {
|
13219
|
+
// Use utils.catchup in this case so we can easily handle
|
13220
|
+
// XJSMemberExpressions which look like Foo.Bar.Baz. This also handles
|
13221
|
+
// XJSIdentifiers that aren't fallback tags.
|
12835
13222
|
utils.move(nameObject.range[0], state);
|
12836
13223
|
utils.catchup(nameObject.range[1], state);
|
12837
13224
|
}
|
12838
13225
|
|
12839
|
-
utils.append('
|
13226
|
+
utils.append(', ', state);
|
12840
13227
|
|
12841
13228
|
var hasAttributes = attributesObject.length;
|
12842
13229
|
|
@@ -12846,7 +13233,7 @@ function visitReactTag(traverse, object, path, state) {
|
|
12846
13233
|
|
12847
13234
|
// if we don't have any attributes, pass in null
|
12848
13235
|
if (hasAtLeastOneSpreadProperty) {
|
12849
|
-
utils.append('
|
13236
|
+
utils.append('React.__spread({', state);
|
12850
13237
|
} else if (hasAttributes) {
|
12851
13238
|
utils.append('{', state);
|
12852
13239
|
} else {
|
@@ -12861,9 +13248,6 @@ function visitReactTag(traverse, object, path, state) {
|
|
12861
13248
|
var isLast = index === attributesObject.length - 1;
|
12862
13249
|
|
12863
13250
|
if (attr.type === Syntax.XJSSpreadAttribute) {
|
12864
|
-
// Plus 1 to skip `{`.
|
12865
|
-
utils.move(attr.range[0] + 1, state);
|
12866
|
-
|
12867
13251
|
// Close the previous object or initial object
|
12868
13252
|
if (!previousWasSpread) {
|
12869
13253
|
utils.append('}, ', state);
|
@@ -12871,6 +13255,9 @@ function visitReactTag(traverse, object, path, state) {
|
|
12871
13255
|
|
12872
13256
|
// Move to the expression start, ignoring everything except parenthesis
|
12873
13257
|
// and whitespace.
|
13258
|
+
utils.catchup(attr.range[0], state, stripNonWhiteParen);
|
13259
|
+
// Plus 1 to skip `{`.
|
13260
|
+
utils.move(attr.range[0] + 1, state);
|
12874
13261
|
utils.catchup(attr.argument.range[0], state, stripNonWhiteParen);
|
12875
13262
|
|
12876
13263
|
traverse(attr.argument, path, state);
|
@@ -12921,13 +13308,7 @@ function visitReactTag(traverse, object, path, state) {
|
|
12921
13308
|
utils.move(attr.name.range[1], state);
|
12922
13309
|
// Use catchupNewlines to skip over the '=' in the attribute
|
12923
13310
|
utils.catchupNewlines(attr.value.range[0], state);
|
12924
|
-
if (
|
12925
|
-
utils.append(JSX_ATTRIBUTE_TRANSFORMS[attr.name.name](attr), state);
|
12926
|
-
utils.move(attr.value.range[1], state);
|
12927
|
-
if (!isLast) {
|
12928
|
-
utils.append(', ', state);
|
12929
|
-
}
|
12930
|
-
} else if (attr.value.type === Syntax.Literal) {
|
13311
|
+
if (attr.value.type === Syntax.Literal) {
|
12931
13312
|
renderXJSLiteral(attr.value, isLast, state);
|
12932
13313
|
} else {
|
12933
13314
|
renderXJSExpressionContainer(traverse, attr.value, isLast, path, state);
|
@@ -13008,30 +13389,21 @@ function visitReactTag(traverse, object, path, state) {
|
|
13008
13389
|
}
|
13009
13390
|
|
13010
13391
|
visitReactTag.test = function(object, path, state) {
|
13011
|
-
|
13012
|
-
var jsx = utils.getDocblock(state).jsx;
|
13013
|
-
return object.type === Syntax.XJSElement && jsx && jsx.length;
|
13392
|
+
return object.type === Syntax.XJSElement;
|
13014
13393
|
};
|
13015
13394
|
|
13016
13395
|
exports.visitorList = [
|
13017
13396
|
visitReactTag
|
13018
13397
|
];
|
13019
13398
|
|
13020
|
-
},{"./xjs":
|
13399
|
+
},{"./xjs":36,"esprima-fb":8,"jstransform/src/utils":22}],35:[function(_dereq_,module,exports){
|
13021
13400
|
/**
|
13022
|
-
* Copyright 2013-2014 Facebook, Inc.
|
13023
|
-
*
|
13024
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
13025
|
-
* you may not use this file except in compliance with the License.
|
13026
|
-
* You may obtain a copy of the License at
|
13401
|
+
* Copyright 2013-2014, Facebook, Inc.
|
13402
|
+
* All rights reserved.
|
13027
13403
|
*
|
13028
|
-
*
|
13029
|
-
*
|
13030
|
-
*
|
13031
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
13032
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13033
|
-
* See the License for the specific language governing permissions and
|
13034
|
-
* limitations under the License.
|
13404
|
+
* This source code is licensed under the BSD-style license found in the
|
13405
|
+
* LICENSE file in the root directory of this source tree. An additional grant
|
13406
|
+
* of patent rights can be found in the PATENTS file in the same directory.
|
13035
13407
|
*/
|
13036
13408
|
/*global exports:true*/
|
13037
13409
|
"use strict";
|
@@ -13107,40 +13479,26 @@ function visitReactDisplayName(traverse, object, path, state) {
|
|
13107
13479
|
}
|
13108
13480
|
}
|
13109
13481
|
|
13110
|
-
/**
|
13111
|
-
* Will only run on @jsx files for now.
|
13112
|
-
*/
|
13113
13482
|
visitReactDisplayName.test = function(object, path, state) {
|
13114
|
-
|
13115
|
-
|
13116
|
-
|
13117
|
-
|
13118
|
-
|
13119
|
-
);
|
13120
|
-
} else {
|
13121
|
-
return false;
|
13122
|
-
}
|
13483
|
+
return (
|
13484
|
+
object.type === Syntax.AssignmentExpression ||
|
13485
|
+
object.type === Syntax.Property ||
|
13486
|
+
object.type === Syntax.VariableDeclarator
|
13487
|
+
);
|
13123
13488
|
};
|
13124
13489
|
|
13125
13490
|
exports.visitorList = [
|
13126
13491
|
visitReactDisplayName
|
13127
13492
|
];
|
13128
13493
|
|
13129
|
-
},{"esprima-fb":
|
13494
|
+
},{"esprima-fb":8,"jstransform/src/utils":22}],36:[function(_dereq_,module,exports){
|
13130
13495
|
/**
|
13131
|
-
* Copyright 2013-2014 Facebook, Inc.
|
13132
|
-
*
|
13133
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
13134
|
-
* you may not use this file except in compliance with the License.
|
13135
|
-
* You may obtain a copy of the License at
|
13136
|
-
*
|
13137
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
13496
|
+
* Copyright 2013-2014, Facebook, Inc.
|
13497
|
+
* All rights reserved.
|
13138
13498
|
*
|
13139
|
-
*
|
13140
|
-
*
|
13141
|
-
*
|
13142
|
-
* See the License for the specific language governing permissions and
|
13143
|
-
* limitations under the License.
|
13499
|
+
* This source code is licensed under the BSD-style license found in the
|
13500
|
+
* LICENSE file in the root directory of this source tree. An additional grant
|
13501
|
+
* of patent rights can be found in the PATENTS file in the same directory.
|
13144
13502
|
*/
|
13145
13503
|
/*global exports:true*/
|
13146
13504
|
"use strict";
|
@@ -13237,6 +13595,7 @@ var knownTags = {
|
|
13237
13595
|
param: true,
|
13238
13596
|
path: true,
|
13239
13597
|
pattern: false,
|
13598
|
+
picture: true,
|
13240
13599
|
polygon: true,
|
13241
13600
|
polyline: true,
|
13242
13601
|
pre: true,
|
@@ -13381,7 +13740,7 @@ exports.renderXJSLiteral = renderXJSLiteral;
|
|
13381
13740
|
exports.quoteAttrName = quoteAttrName;
|
13382
13741
|
exports.trimLeft = trimLeft;
|
13383
13742
|
|
13384
|
-
},{"esprima-fb":
|
13743
|
+
},{"esprima-fb":8,"jstransform/src/utils":22}],37:[function(_dereq_,module,exports){
|
13385
13744
|
/*global exports:true*/
|
13386
13745
|
var es6ArrowFunctions = _dereq_('jstransform/visitors/es6-arrow-function-visitors');
|
13387
13746
|
var es6Classes = _dereq_('jstransform/visitors/es6-class-visitors');
|
@@ -13390,8 +13749,10 @@ var es6ObjectConciseMethod = _dereq_('jstransform/visitors/es6-object-concise-me
|
|
13390
13749
|
var es6ObjectShortNotation = _dereq_('jstransform/visitors/es6-object-short-notation-visitors');
|
13391
13750
|
var es6RestParameters = _dereq_('jstransform/visitors/es6-rest-param-visitors');
|
13392
13751
|
var es6Templates = _dereq_('jstransform/visitors/es6-template-visitors');
|
13752
|
+
var es7SpreadProperty = _dereq_('jstransform/visitors/es7-spread-property-visitors');
|
13393
13753
|
var react = _dereq_('./transforms/react');
|
13394
13754
|
var reactDisplayName = _dereq_('./transforms/reactDisplayName');
|
13755
|
+
var typesSyntax = _dereq_('jstransform/visitors/type-syntax');
|
13395
13756
|
|
13396
13757
|
/**
|
13397
13758
|
* Map from transformName => orderedListOfVisitors.
|
@@ -13404,13 +13765,35 @@ var transformVisitors = {
|
|
13404
13765
|
'es6-object-short-notation': es6ObjectShortNotation.visitorList,
|
13405
13766
|
'es6-rest-params': es6RestParameters.visitorList,
|
13406
13767
|
'es6-templates': es6Templates.visitorList,
|
13407
|
-
'
|
13768
|
+
'es7-spread-property': es7SpreadProperty.visitorList,
|
13769
|
+
'react': react.visitorList.concat(reactDisplayName.visitorList),
|
13770
|
+
'types': typesSyntax.visitorList
|
13771
|
+
};
|
13772
|
+
|
13773
|
+
var transformSets = {
|
13774
|
+
'harmony': [
|
13775
|
+
'es6-arrow-functions',
|
13776
|
+
'es6-object-concise-method',
|
13777
|
+
'es6-object-short-notation',
|
13778
|
+
'es6-classes',
|
13779
|
+
'es6-rest-params',
|
13780
|
+
'es6-templates',
|
13781
|
+
'es6-destructuring',
|
13782
|
+
'es7-spread-property'
|
13783
|
+
],
|
13784
|
+
'react': [
|
13785
|
+
'react'
|
13786
|
+
],
|
13787
|
+
'type-annotations': [
|
13788
|
+
'types'
|
13789
|
+
]
|
13408
13790
|
};
|
13409
13791
|
|
13410
13792
|
/**
|
13411
13793
|
* Specifies the order in which each transform should run.
|
13412
13794
|
*/
|
13413
13795
|
var transformRunOrder = [
|
13796
|
+
'types',
|
13414
13797
|
'es6-arrow-functions',
|
13415
13798
|
'es6-object-concise-method',
|
13416
13799
|
'es6-object-short-notation',
|
@@ -13418,6 +13801,7 @@ var transformRunOrder = [
|
|
13418
13801
|
'es6-rest-params',
|
13419
13802
|
'es6-templates',
|
13420
13803
|
'es6-destructuring',
|
13804
|
+
'es7-spread-property',
|
13421
13805
|
'react'
|
13422
13806
|
];
|
13423
13807
|
|
@@ -13438,9 +13822,37 @@ function getAllVisitors(excludes) {
|
|
13438
13822
|
return ret;
|
13439
13823
|
}
|
13440
13824
|
|
13825
|
+
/**
|
13826
|
+
* Given a list of visitor set names, return the ordered list of visitors to be
|
13827
|
+
* passed to jstransform.
|
13828
|
+
*
|
13829
|
+
* @param {array}
|
13830
|
+
* @return {array}
|
13831
|
+
*/
|
13832
|
+
function getVisitorsBySet(sets) {
|
13833
|
+
var visitorsToInclude = sets.reduce(function(visitors, set) {
|
13834
|
+
if (!transformSets.hasOwnProperty(set)) {
|
13835
|
+
throw new Error('Unknown visitor set: ' + set);
|
13836
|
+
}
|
13837
|
+
transformSets[set].forEach(function(visitor) {
|
13838
|
+
visitors[visitor] = true;
|
13839
|
+
});
|
13840
|
+
return visitors;
|
13841
|
+
}, {});
|
13842
|
+
|
13843
|
+
var visitorList = [];
|
13844
|
+
for (var i = 0; i < transformRunOrder.length; i++) {
|
13845
|
+
if (visitorsToInclude.hasOwnProperty(transformRunOrder[i])) {
|
13846
|
+
visitorList = visitorList.concat(transformVisitors[transformRunOrder[i]]);
|
13847
|
+
}
|
13848
|
+
}
|
13849
|
+
|
13850
|
+
return visitorList;
|
13851
|
+
}
|
13852
|
+
|
13853
|
+
exports.getVisitorsBySet = getVisitorsBySet;
|
13441
13854
|
exports.getAllVisitors = getAllVisitors;
|
13442
13855
|
exports.transformVisitors = transformVisitors;
|
13443
13856
|
|
13444
|
-
},{"./transforms/react":
|
13445
|
-
(28)
|
13857
|
+
},{"./transforms/react":34,"./transforms/reactDisplayName":35,"jstransform/visitors/es6-arrow-function-visitors":23,"jstransform/visitors/es6-class-visitors":24,"jstransform/visitors/es6-destructuring-visitors":25,"jstransform/visitors/es6-object-concise-method-visitors":26,"jstransform/visitors/es6-object-short-notation-visitors":27,"jstransform/visitors/es6-rest-param-visitors":28,"jstransform/visitors/es6-template-visitors":29,"jstransform/visitors/es7-spread-property-visitors":31,"jstransform/visitors/type-syntax":33}]},{},[1])(1)
|
13446
13858
|
});
|