diff --git a/packages/babel-core/src/store.js b/packages/babel-core/src/store.js new file mode 100644 index 0000000000..e276346bb9 --- /dev/null +++ b/packages/babel-core/src/store.js @@ -0,0 +1,24 @@ +export default class Store { + dynamicData = {}; + data = {}; + + set(key: string, val): any { + return this.data[key] = val; + } + + setDynamic(key: string, fn: Function) { + this.dynamicData[key] = fn; + } + + get(key: string): any { + var data = this.data[key]; + if (data) { + return data; + } else { + var dynamic = this.dynamicData[key]; + if (dynamic) { + return this.set(key, dynamic()); + } + } + } +} diff --git a/packages/babel-core/src/transformation/file/index.js b/packages/babel-core/src/transformation/file/index.js index d0b2507e19..79f38de0e0 100644 --- a/packages/babel-core/src/transformation/file/index.js +++ b/packages/babel-core/src/transformation/file/index.js @@ -14,6 +14,7 @@ import includes from "lodash/collection/includes"; import traverse from "babel-traverse"; import resolve from "try-resolve"; import Logger from "./logger"; +import Store from "../../store"; import Plugin from "../plugin"; import parse from "../../helpers/parse"; import * as util from "../../util"; @@ -29,7 +30,8 @@ var errorVisitor = { } } }; -export default class File { + +export default class File extends Store { constructor(opts = {}, pipeline) { this.pipeline = pipeline;