react-source 0.11.1 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
});
|