mirror of
https://github.com/status-im/react-native.git
synced 2025-02-10 08:26:23 +00:00
commit
edb9322fe4
@ -2,11 +2,12 @@
|
|||||||
* Copyright 2004-present Facebook. All Rights Reserved.
|
* Copyright 2004-present Facebook. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* @providesModule GameBoard
|
* @providesModule GameBoard
|
||||||
|
* @flow
|
||||||
*/
|
*/
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
// NB: Taken straight from: https://github.com/IvanVergiliev/2048-react/blob/master/src/board.js
|
// NB: Taken straight from: https://github.com/IvanVergiliev/2048-react/blob/master/src/board.js
|
||||||
// with no modificiation except to format it for CommonJS and fix lint errors
|
// with no modificiation except to format it for CommonJS and fix lint/flow errors
|
||||||
|
|
||||||
var rotateLeft = function (matrix) {
|
var rotateLeft = function (matrix) {
|
||||||
var rows = matrix.length;
|
var rows = matrix.length;
|
||||||
@ -21,9 +22,10 @@ var rotateLeft = function (matrix) {
|
|||||||
return res;
|
return res;
|
||||||
};
|
};
|
||||||
|
|
||||||
var Tile = function (value, row, column) {
|
var Tile = function (value?: number, row?: number, column?: number) {
|
||||||
this.value = value || 0;
|
this.value = value || 0;
|
||||||
this.row = row || -1;
|
this.row = row || -1;
|
||||||
|
|
||||||
this.column = column || -1;
|
this.column = column || -1;
|
||||||
this.oldRow = -1;
|
this.oldRow = -1;
|
||||||
this.oldColumn = -1;
|
this.oldColumn = -1;
|
||||||
@ -102,8 +104,8 @@ Board.prototype.moveLeft = function () {
|
|||||||
targetTile.value += tile2.value;
|
targetTile.value += tile2.value;
|
||||||
}
|
}
|
||||||
resultRow[target] = targetTile;
|
resultRow[target] = targetTile;
|
||||||
this.won |= (targetTile.value === 2048);
|
this.won = this.won || (targetTile.value === 2048);
|
||||||
hasChanged |= (targetTile.value !== this.cells[row][target].value);
|
hasChanged = hasChanged || (targetTile.value !== this.cells[row][target].value);
|
||||||
}
|
}
|
||||||
this.cells[row] = resultRow;
|
this.cells[row] = resultRow;
|
||||||
}
|
}
|
||||||
@ -172,14 +174,14 @@ Board.prototype.hasLost = function () {
|
|||||||
var canMove = false;
|
var canMove = false;
|
||||||
for (var row = 0; row < Board.size; ++row) {
|
for (var row = 0; row < Board.size; ++row) {
|
||||||
for (var column = 0; column < Board.size; ++column) {
|
for (var column = 0; column < Board.size; ++column) {
|
||||||
canMove |= (this.cells[row][column].value === 0);
|
canMove = canMove || (this.cells[row][column].value === 0);
|
||||||
for (var dir = 0; dir < 4; ++dir) {
|
for (var dir = 0; dir < 4; ++dir) {
|
||||||
var newRow = row + Board.deltaX[dir];
|
var newRow = row + Board.deltaX[dir];
|
||||||
var newColumn = column + Board.deltaY[dir];
|
var newColumn = column + Board.deltaY[dir];
|
||||||
if (newRow < 0 || newRow >= Board.size || newColumn < 0 || newColumn >= Board.size) {
|
if (newRow < 0 || newRow >= Board.size || newColumn < 0 || newColumn >= Board.size) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
canMove |= (this.cells[row][column].value === this.cells[newRow][newColumn].value);
|
canMove = canMove || (this.cells[row][column].value === this.cells[newRow][newColumn].value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -39,6 +39,8 @@ var LOADING = {};
|
|||||||
var SearchScreen = React.createClass({
|
var SearchScreen = React.createClass({
|
||||||
mixins: [TimerMixin],
|
mixins: [TimerMixin],
|
||||||
|
|
||||||
|
timeoutID: (null: any),
|
||||||
|
|
||||||
getInitialState: function() {
|
getInitialState: function() {
|
||||||
return {
|
return {
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
|
@ -11,7 +11,6 @@ var {
|
|||||||
StyleSheet,
|
StyleSheet,
|
||||||
Text,
|
Text,
|
||||||
View,
|
View,
|
||||||
ix,
|
|
||||||
} = React;
|
} = React;
|
||||||
|
|
||||||
var ImageCapInsetsExample = React.createClass({
|
var ImageCapInsetsExample = React.createClass({
|
||||||
@ -23,7 +22,7 @@ var ImageCapInsetsExample = React.createClass({
|
|||||||
capInsets: none
|
capInsets: none
|
||||||
</Text>
|
</Text>
|
||||||
<Image
|
<Image
|
||||||
source={ix('story-background')}
|
source={require('image!story-background')}
|
||||||
style={styles.storyBackground}
|
style={styles.storyBackground}
|
||||||
capInsets={{left: 0, right: 0, bottom: 0, top: 0}}
|
capInsets={{left: 0, right: 0, bottom: 0, top: 0}}
|
||||||
/>
|
/>
|
||||||
@ -33,7 +32,7 @@ var ImageCapInsetsExample = React.createClass({
|
|||||||
capInsets: 15
|
capInsets: 15
|
||||||
</Text>
|
</Text>
|
||||||
<Image
|
<Image
|
||||||
source={ix('story-background')}
|
source={require('image!story-background')}
|
||||||
style={styles.storyBackground}
|
style={styles.storyBackground}
|
||||||
capInsets={{left: 15, right: 15, bottom: 15, top: 15}}
|
capInsets={{left: 15, right: 15, bottom: 15, top: 15}}
|
||||||
/>
|
/>
|
||||||
|
@ -9,7 +9,6 @@ var {
|
|||||||
StyleSheet,
|
StyleSheet,
|
||||||
Text,
|
Text,
|
||||||
View,
|
View,
|
||||||
ix,
|
|
||||||
} = React;
|
} = React;
|
||||||
|
|
||||||
var ImageCapInsetsExample = require('./ImageCapInsetsExample');
|
var ImageCapInsetsExample = require('./ImageCapInsetsExample');
|
||||||
@ -34,15 +33,15 @@ exports.examples = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Plain Static Image',
|
title: 'Plain Static Image',
|
||||||
description: 'Static assets must be referenced with the `ix` wrapper and ' +
|
description: 'Static assets should be required by prefixing with `image!` ' +
|
||||||
'located in the app bundle.',
|
'and are located in the app bundle.',
|
||||||
render: function() {
|
render: function() {
|
||||||
return (
|
return (
|
||||||
<View style={styles.horizontal}>
|
<View style={styles.horizontal}>
|
||||||
<Image source={ix('uie_thumb_normal')} style={styles.icon} />
|
<Image source={require('image!uie_thumb_normal')} style={styles.icon} />
|
||||||
<Image source={ix('uie_thumb_selected')} style={styles.icon} />
|
<Image source={require('image!uie_thumb_selected')} style={styles.icon} />
|
||||||
<Image source={ix('uie_comment_normal')} style={styles.icon} />
|
<Image source={require('image!uie_comment_normal')} style={styles.icon} />
|
||||||
<Image source={ix('uie_comment_highlighted')} style={styles.icon} />
|
<Image source={require('image!uie_comment_highlighted')} style={styles.icon} />
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@ -184,19 +183,19 @@ exports.examples = [
|
|||||||
return (
|
return (
|
||||||
<View style={styles.horizontal}>
|
<View style={styles.horizontal}>
|
||||||
<Image
|
<Image
|
||||||
source={ix('uie_thumb_normal')}
|
source={require('image!uie_thumb_normal')}
|
||||||
style={[styles.icon, {tintColor: 'blue' }]}
|
style={[styles.icon, {tintColor: 'blue' }]}
|
||||||
/>
|
/>
|
||||||
<Image
|
<Image
|
||||||
source={ix('uie_thumb_normal')}
|
source={require('image!uie_thumb_normal')}
|
||||||
style={[styles.icon, styles.leftMargin, {tintColor: 'green' }]}
|
style={[styles.icon, styles.leftMargin, {tintColor: 'green' }]}
|
||||||
/>
|
/>
|
||||||
<Image
|
<Image
|
||||||
source={ix('uie_thumb_normal')}
|
source={require('image!uie_thumb_normal')}
|
||||||
style={[styles.icon, styles.leftMargin, {tintColor: 'red' }]}
|
style={[styles.icon, styles.leftMargin, {tintColor: 'red' }]}
|
||||||
/>
|
/>
|
||||||
<Image
|
<Image
|
||||||
source={ix('uie_thumb_normal')}
|
source={require('image!uie_thumb_normal')}
|
||||||
style={[styles.icon, styles.leftMargin, {tintColor: 'black' }]}
|
style={[styles.icon, styles.leftMargin, {tintColor: 'black' }]}
|
||||||
/>
|
/>
|
||||||
</View>
|
</View>
|
||||||
|
@ -10,7 +10,6 @@ var StyleSheet = require('StyleSheet');
|
|||||||
var Text = require('Text');
|
var Text = require('Text');
|
||||||
var View = require('View');
|
var View = require('View');
|
||||||
|
|
||||||
var ix = require('ix');
|
|
||||||
|
|
||||||
var TabBarExample = React.createClass({
|
var TabBarExample = React.createClass({
|
||||||
|
|
||||||
@ -42,7 +41,7 @@ var TabBarExample = React.createClass({
|
|||||||
selectedTab={this.state.selectedTab}>
|
selectedTab={this.state.selectedTab}>
|
||||||
<TabBarItemIOS
|
<TabBarItemIOS
|
||||||
name="blueTab"
|
name="blueTab"
|
||||||
icon={ix('favorites')}
|
icon={require('image!favorites')}
|
||||||
accessibilityLabel="Blue Tab"
|
accessibilityLabel="Blue Tab"
|
||||||
selected={this.state.selectedTab === 'blueTab'}
|
selected={this.state.selectedTab === 'blueTab'}
|
||||||
onPress={() => {
|
onPress={() => {
|
||||||
@ -55,7 +54,7 @@ var TabBarExample = React.createClass({
|
|||||||
<TabBarItemIOS
|
<TabBarItemIOS
|
||||||
accessibilityLabel="Red Tab"
|
accessibilityLabel="Red Tab"
|
||||||
name="redTab"
|
name="redTab"
|
||||||
icon={ix('history')}
|
icon={require('image!history')}
|
||||||
badgeValue={this.state.notifCount ? String(this.state.notifCount) : null}
|
badgeValue={this.state.notifCount ? String(this.state.notifCount) : null}
|
||||||
selected={this.state.selectedTab === 'redTab'}
|
selected={this.state.selectedTab === 'redTab'}
|
||||||
onPress={() => {
|
onPress={() => {
|
||||||
@ -68,7 +67,7 @@ var TabBarExample = React.createClass({
|
|||||||
</TabBarItemIOS>
|
</TabBarItemIOS>
|
||||||
<TabBarItemIOS
|
<TabBarItemIOS
|
||||||
name="greenTab"
|
name="greenTab"
|
||||||
icon={ix('more')}
|
icon={require('image!more')}
|
||||||
accessibilityLabel="Green Tab"
|
accessibilityLabel="Green Tab"
|
||||||
selected={this.state.selectedTab === 'greenTab'}
|
selected={this.state.selectedTab === 'greenTab'}
|
||||||
onPress={() => {
|
onPress={() => {
|
||||||
|
@ -41,7 +41,7 @@ var DEFAULT_PROPS = {
|
|||||||
* <TouchableHighlight onPress={this._onPressButton}>
|
* <TouchableHighlight onPress={this._onPressButton}>
|
||||||
* <Image
|
* <Image
|
||||||
* style={styles.button}
|
* style={styles.button}
|
||||||
* source={ix('myButton')}
|
* source={require('image!myButton')}
|
||||||
* />
|
* />
|
||||||
* </View>
|
* </View>
|
||||||
* );
|
* );
|
||||||
|
@ -30,7 +30,7 @@ var onlyChild = require('onlyChild');
|
|||||||
* <TouchableOpacity onPress={this._onPressButton}>
|
* <TouchableOpacity onPress={this._onPressButton}>
|
||||||
* <Image
|
* <Image
|
||||||
* style={styles.button}
|
* style={styles.button}
|
||||||
* source={ix('myButton')}
|
* source={require('image!myButton')}
|
||||||
* />
|
* />
|
||||||
* </View>
|
* </View>
|
||||||
* );
|
* );
|
||||||
|
@ -8,13 +8,11 @@
|
|||||||
var LayoutPropTypes = require('LayoutPropTypes');
|
var LayoutPropTypes = require('LayoutPropTypes');
|
||||||
var ReactPropTypes = require('ReactPropTypes');
|
var ReactPropTypes = require('ReactPropTypes');
|
||||||
|
|
||||||
var merge = require('merge');
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Warning: Some of these properties may not be supported in all releases.
|
* Warning: Some of these properties may not be supported in all releases.
|
||||||
*/
|
*/
|
||||||
var ViewStylePropTypes = merge(
|
var ViewStylePropTypes = {
|
||||||
LayoutPropTypes, {
|
...LayoutPropTypes,
|
||||||
backgroundColor: ReactPropTypes.string,
|
backgroundColor: ReactPropTypes.string,
|
||||||
borderColor: ReactPropTypes.string,
|
borderColor: ReactPropTypes.string,
|
||||||
borderTopColor: ReactPropTypes.string,
|
borderTopColor: ReactPropTypes.string,
|
||||||
@ -36,6 +34,6 @@ var ViewStylePropTypes = merge(
|
|||||||
scaleY: ReactPropTypes.number,
|
scaleY: ReactPropTypes.number,
|
||||||
translateX: ReactPropTypes.number,
|
translateX: ReactPropTypes.number,
|
||||||
translateY: ReactPropTypes.number,
|
translateY: ReactPropTypes.number,
|
||||||
});
|
};
|
||||||
|
|
||||||
module.exports = ViewStylePropTypes;
|
module.exports = ViewStylePropTypes;
|
||||||
|
@ -36,7 +36,7 @@ var warning = require('warning');
|
|||||||
* <View>
|
* <View>
|
||||||
* <Image
|
* <Image
|
||||||
* style={styles.icon}
|
* style={styles.icon}
|
||||||
* source={ix('myIcon')}
|
* source={require('image!myIcon')}
|
||||||
* />
|
* />
|
||||||
* <Image
|
* <Image
|
||||||
* style={styles.logo}
|
* style={styles.logo}
|
||||||
|
@ -9,23 +9,19 @@ var ImageResizeMode = require('ImageResizeMode');
|
|||||||
var LayoutPropTypes = require('LayoutPropTypes');
|
var LayoutPropTypes = require('LayoutPropTypes');
|
||||||
var ReactPropTypes = require('ReactPropTypes');
|
var ReactPropTypes = require('ReactPropTypes');
|
||||||
|
|
||||||
var merge = require('merge');
|
var ImageStylePropTypes = {
|
||||||
|
...LayoutPropTypes,
|
||||||
|
resizeMode: ReactPropTypes.oneOf(Object.keys(ImageResizeMode)),
|
||||||
|
backgroundColor: ReactPropTypes.string,
|
||||||
|
borderColor: ReactPropTypes.string,
|
||||||
|
borderWidth: ReactPropTypes.number,
|
||||||
|
borderRadius: ReactPropTypes.number,
|
||||||
|
|
||||||
var ImageStylePropTypes = merge(
|
// iOS-Specific style to "tint" an image.
|
||||||
LayoutPropTypes,
|
// It changes the color of all the non-transparent pixels to the tintColor
|
||||||
{
|
tintColor: ReactPropTypes.string,
|
||||||
resizeMode: ReactPropTypes.oneOf(Object.keys(ImageResizeMode)),
|
opacity: ReactPropTypes.number,
|
||||||
backgroundColor: ReactPropTypes.string,
|
};
|
||||||
borderColor: ReactPropTypes.string,
|
|
||||||
borderWidth: ReactPropTypes.number,
|
|
||||||
borderRadius: ReactPropTypes.number,
|
|
||||||
|
|
||||||
// iOS-Specific style to "tint" an image.
|
|
||||||
// It changes the color of all the non-transparent pixels to the tintColor
|
|
||||||
tintColor: ReactPropTypes.string,
|
|
||||||
opacity: ReactPropTypes.number,
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
// Image doesn't support padding correctly (#4841912)
|
// Image doesn't support padding correctly (#4841912)
|
||||||
var unsupportedProps = Object.keys({
|
var unsupportedProps = Object.keys({
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright 2004-present Facebook. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* @providesModule ix
|
|
||||||
*/
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This function is used to mark string literals that are image paths. The
|
|
||||||
* return value is a blob of data that core image components understand how to
|
|
||||||
* render.
|
|
||||||
*
|
|
||||||
* The arguments to ix() must be string literals so that they can be parsed
|
|
||||||
* statically.
|
|
||||||
*
|
|
||||||
* @param string Image path to render
|
|
||||||
* @return object Data blob to be used by core UI components
|
|
||||||
*/
|
|
||||||
function ix(path) {
|
|
||||||
return {
|
|
||||||
uri: path,
|
|
||||||
isStatic: true,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = ix;
|
|
@ -8,25 +8,22 @@
|
|||||||
var ReactPropTypes = require('ReactPropTypes');
|
var ReactPropTypes = require('ReactPropTypes');
|
||||||
var ViewStylePropTypes = require('ViewStylePropTypes');
|
var ViewStylePropTypes = require('ViewStylePropTypes');
|
||||||
|
|
||||||
var merge = require('merge');
|
var TextStylePropTypes = {
|
||||||
|
...ViewStylePropTypes,
|
||||||
var TextStylePropTypes = merge(
|
fontFamily: ReactPropTypes.string,
|
||||||
ViewStylePropTypes, {
|
fontSize: ReactPropTypes.number,
|
||||||
fontFamily: ReactPropTypes.string,
|
fontWeight: ReactPropTypes.oneOf(['normal' /*default*/, 'bold']),
|
||||||
fontSize: ReactPropTypes.number,
|
fontStyle: ReactPropTypes.oneOf(['normal', 'italic']),
|
||||||
fontWeight: ReactPropTypes.oneOf(['normal' /*default*/, 'bold']),
|
lineHeight: ReactPropTypes.number,
|
||||||
fontStyle: ReactPropTypes.oneOf(['normal', 'italic']),
|
color: ReactPropTypes.string,
|
||||||
lineHeight: ReactPropTypes.number,
|
containerBackgroundColor: ReactPropTypes.string,
|
||||||
color: ReactPropTypes.string,
|
textAlign: ReactPropTypes.oneOf(
|
||||||
containerBackgroundColor: ReactPropTypes.string,
|
['auto' /*default*/, 'left', 'right', 'center']
|
||||||
textAlign: ReactPropTypes.oneOf(
|
),
|
||||||
['auto' /*default*/, 'left', 'right', 'center']
|
writingDirection: ReactPropTypes.oneOf(
|
||||||
),
|
['auto' /*default*/, 'ltr', 'rtl']
|
||||||
writingDirection: ReactPropTypes.oneOf(
|
),
|
||||||
['auto' /*default*/, 'ltr', 'rtl']
|
};
|
||||||
),
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
// Text doesn't support padding correctly (#4841912)
|
// Text doesn't support padding correctly (#4841912)
|
||||||
var unsupportedProps = Object.keys({
|
var unsupportedProps = Object.keys({
|
||||||
|
2
Libraries/react-native/react-native.js
vendored
2
Libraries/react-native/react-native.js
vendored
@ -45,7 +45,7 @@ var ReactNative = {
|
|||||||
TimerMixin: require('TimerMixin'),
|
TimerMixin: require('TimerMixin'),
|
||||||
VibrationIOS: require('VibrationIOS'),
|
VibrationIOS: require('VibrationIOS'),
|
||||||
|
|
||||||
ix: require('ix'),
|
invariant: require('invariant'),
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = ReactNative;
|
module.exports = ReactNative;
|
||||||
|
@ -38,7 +38,12 @@ if (options.projectRoots) {
|
|||||||
options.projectRoots = options.projectRoots.split(',');
|
options.projectRoots = options.projectRoots.split(',');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
options.projectRoots = [path.resolve(__dirname, '..')];
|
if (__dirname.match(/node_modules\/react-native\/packager$/)) {
|
||||||
|
// packager is running from node_modules of another project
|
||||||
|
options.projectRoots = [path.resolve(__dirname, '../../..')];
|
||||||
|
} else {
|
||||||
|
options.projectRoots = [path.resolve(__dirname, '..')];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.root) {
|
if (options.root) {
|
||||||
|
@ -51,7 +51,7 @@ describe('processRequest', function() {
|
|||||||
Packager = require('../../Packager');
|
Packager = require('../../Packager');
|
||||||
FileWatcher = require('../../FileWatcher');
|
FileWatcher = require('../../FileWatcher');
|
||||||
|
|
||||||
Packager.prototype.package = function() {
|
Packager.prototype.package = jest.genMockFunction().mockImpl(function() {
|
||||||
return q({
|
return q({
|
||||||
getSource: function() {
|
getSource: function() {
|
||||||
return 'this is the source';
|
return 'this is the source';
|
||||||
@ -60,7 +60,7 @@ describe('processRequest', function() {
|
|||||||
return 'this is the source map';
|
return 'this is the source map';
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
};
|
});
|
||||||
|
|
||||||
|
|
||||||
FileWatcher.prototype.on = function(eventType, callback) {
|
FileWatcher.prototype.on = function(eventType, callback) {
|
||||||
@ -106,6 +106,21 @@ describe('processRequest', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
pit('works with .ios.js extension', function() {
|
||||||
|
return makeRequest(
|
||||||
|
requestHandler,
|
||||||
|
'index.ios.includeRequire.bundle'
|
||||||
|
).then(function(response) {
|
||||||
|
expect(response).toEqual('this is the source');
|
||||||
|
expect(Packager.prototype.package).toBeCalledWith(
|
||||||
|
'index.ios.js',
|
||||||
|
true,
|
||||||
|
'index.ios.includeRequire.map',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
pit('watches all files in projectRoot', function() {
|
pit('watches all files in projectRoot', function() {
|
||||||
return makeRequest(
|
return makeRequest(
|
||||||
requestHandler,
|
requestHandler,
|
||||||
|
26
packager/react-packager/src/Server/index.js
vendored
26
packager/react-packager/src/Server/index.js
vendored
@ -6,7 +6,6 @@ var declareOpts = require('../lib/declareOpts');
|
|||||||
var FileWatcher = require('../FileWatcher');
|
var FileWatcher = require('../FileWatcher');
|
||||||
var Packager = require('../Packager');
|
var Packager = require('../Packager');
|
||||||
var Activity = require('../Activity');
|
var Activity = require('../Activity');
|
||||||
var setImmediate = require('timers').setImmediate;
|
|
||||||
var q = require('q');
|
var q = require('q');
|
||||||
var _ = require('underscore');
|
var _ = require('underscore');
|
||||||
|
|
||||||
@ -236,23 +235,24 @@ Server.prototype.processRequest = function(req, res, next) {
|
|||||||
function getOptionsFromUrl(reqUrl) {
|
function getOptionsFromUrl(reqUrl) {
|
||||||
// `true` to parse the query param as an object.
|
// `true` to parse the query param as an object.
|
||||||
var urlObj = url.parse(reqUrl, true);
|
var urlObj = url.parse(reqUrl, true);
|
||||||
|
var pathname = urlObj.pathname;
|
||||||
|
|
||||||
var match = urlObj.pathname.match(/^\/?([^\.]+)\..*(bundle|map)$/);
|
// Backwards compatibility. Options used to be as added as '.' to the
|
||||||
if (!(match && match[1])) {
|
// entry module name. We can safely remove these options.
|
||||||
throw new Error('Invalid url format, expected "/path/to/file.bundle"');
|
var entryFile = pathname.replace(/^\//, '').split('.').filter(function(part) {
|
||||||
}
|
if (part === 'includeRequire' || part === 'runModule' ||
|
||||||
var main = match[1] + '.js';
|
part === 'bundle' || part === 'map') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}).join('.') + '.js';
|
||||||
|
|
||||||
return {
|
return {
|
||||||
sourceMapUrl: urlObj.pathname.replace(/\.bundle$/, '.map'),
|
sourceMapUrl: pathname.replace(/\.bundle$/, '.map'),
|
||||||
main: main,
|
main: entryFile,
|
||||||
dev: getBoolOptionFromQuery(urlObj.query, 'dev', true),
|
dev: getBoolOptionFromQuery(urlObj.query, 'dev', true),
|
||||||
minify: getBoolOptionFromQuery(urlObj.query, 'minify'),
|
minify: getBoolOptionFromQuery(urlObj.query, 'minify'),
|
||||||
runModule: getBoolOptionFromQuery(urlObj.query, 'runModule') ||
|
runModule: getBoolOptionFromQuery(urlObj.query, 'runModule', true),
|
||||||
// Backwards compatibility.
|
|
||||||
urlObj.pathname.split('.').some(function(part) {
|
|
||||||
return part === 'runModule';
|
|
||||||
}),
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ var components = [
|
|||||||
'../Libraries/Components/ActivityIndicatorIOS/ActivityIndicatorIOS.ios.js',
|
'../Libraries/Components/ActivityIndicatorIOS/ActivityIndicatorIOS.ios.js',
|
||||||
'../Libraries/Components/DatePicker/DatePickerIOS.ios.js',
|
'../Libraries/Components/DatePicker/DatePickerIOS.ios.js',
|
||||||
'../Libraries/Image/Image.ios.js',
|
'../Libraries/Image/Image.ios.js',
|
||||||
'../Libraries/Components/ListView/ListView.js',
|
'../Libraries/CustomComponents/ListView/ListView.js',
|
||||||
'../Libraries/Components/MapView/MapView.js',
|
'../Libraries/Components/MapView/MapView.js',
|
||||||
'../Libraries/Components/Navigation/NavigatorIOS.ios.js',
|
'../Libraries/Components/Navigation/NavigatorIOS.ios.js',
|
||||||
'../Libraries/Picker/PickerIOS.ios.js',
|
'../Libraries/Picker/PickerIOS.ios.js',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user