Simplify `File` type: `map` is nullable, but not optional

Summary:
Simplifies the `File` type by making `map` a non-optional, but nullable property.
Also adds helper functions for empty/virtual modules

Reviewed By: jeanlauliac

Differential Revision: D5111580

fbshipit-source-id: 9cab6634a9bdb0522dc36aec2abccaef9cf35339
This commit is contained in:
David Aurelio 2017-05-23 10:24:57 -07:00 committed by Facebook Github Bot
parent 7b5d91f359
commit 132d71f0a3
6 changed files with 35 additions and 21 deletions

View File

@ -13,6 +13,7 @@
const emptyFunction = require('fbjs/lib/emptyFunction');
const invariant = require('fbjs/lib/invariant');
const memoize = require('async/memoize');
const emptyModule = require('./module').empty;
const nullthrows = require('fbjs/lib/nullthrows');
const queue = require('async/queue');
const seq = require('async/seq');
@ -49,9 +50,6 @@ type Async$Queue<T, C> = {
type LoadQueue =
Async$Queue<{id: string, parent: ?string}, Callback<File, Array<string>>>;
const createParentModule =
() => ({file: {code: '', type: 'script', path: ''}, dependencies: []});
const NO_OPTIONS = {};
exports.create = function create(resolve: ResolveFn, load: LoadFn): GraphFn {
@ -101,7 +99,7 @@ exports.create = function create(resolve: ResolveFn, load: LoadFn): GraphFn {
};
function createGraphHelpers(loadQueue, skip) {
const modules = new Map([[null, createParentModule()]]);
const modules = new Map([[null, emptyModule()]]);
function collect(
path = null,

View File

@ -14,8 +14,7 @@ const defaults = require('../../defaults');
const nullthrows = require('fbjs/lib/nullthrows');
const parallel = require('async/parallel');
const seq = require('async/seq');
const {virtualModule} = require('./output/util');
const virtualModule = require('./module').virtual;
import type {
Callback,

View File

@ -32,6 +32,7 @@ describe('build setup', () => {
file: {
code: 'var __DEV__=true,__BUNDLE_START_TIME__=' +
'this.nativePerformanceNow?nativePerformanceNow():Date.now();',
map: null,
path: '',
type: 'script',
},

View File

@ -0,0 +1,28 @@
/**
* Copyright (c) 2016-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
* @flow
*/
'use strict';
import type {Module} from './types.flow';
exports.empty = (): Module => virtual('');
// creates a virtual module (i.e. not corresponding to a file on disk)
// with the given source code.
const virtual = exports.virtual = (code: string): Module => ({
dependencies: [],
file: {
code,
map: null,
path: '',
type: 'script',
},
});

View File

@ -10,6 +10,8 @@
*/
'use strict';
const virtualModule = require('../module').virtual;
import type {IdForPathFn, Module} from '../types.flow';
// Transformed modules have the form
@ -77,17 +79,3 @@ exports.requireCallsTo = function* (
yield virtualModule(`require(${idForPath(module.file)});`);
}
};
// creates a virtual module (i.e. not corresponding to a file on disk)
// with the given source code.
exports.virtualModule = virtualModule;
function virtualModule(code: string) {
return {
dependencies: [],
file: {
code,
path: '',
type: 'script',
},
};
}

View File

@ -26,7 +26,7 @@ type Dependency = {|
export type File = {|
code: string,
map?: ?MappingsMap,
map: ?MappingsMap,
path: string,
type: CodeFileTypes,
|};