blob: 9b483d38a1599acb9832ad1794e1701508f7111d [file] [log] [blame]
/* Generated by `npm run build`, do not edit! */
"use strict"
var skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g
module.exports = function (acorn) {
var tt = acorn.tokTypes
var nextTokenIsDot = function (parser) {
skipWhiteSpace.lastIndex = parser.pos
var skip = skipWhiteSpace.exec(parser.input)
var next = parser.pos + skip[0].length
return parser.input.slice(next, next + 1) === "."
}
acorn.plugins.importMeta = function (instance) {
instance.extend("parseExprAtom", function (superF) {
return function(refDestructuringErrors) {
if (this.type !== tt._import || !nextTokenIsDot(this)) { return superF.call(this, refDestructuringErrors) }
if (!this.options.allowImportExportEverywhere && !this.inModule) {
this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'")
}
var node = this.startNode()
node.meta = this.parseIdent(true)
this.expect(tt.dot)
node.property = this.parseIdent(true)
if (node.property.name !== "meta") {
this.raiseRecoverable(node.property.start, "The only valid meta property for import is import.meta")
}
return this.finishNode(node, "MetaProperty")
}
})
instance.extend("parseStatement", function (superF) {
return function(declaration, topLevel, exports) {
if (this.type !== tt._import) { return superF.call(this, declaration, topLevel, exports) }
if (!nextTokenIsDot(this)) { return superF.call(this, declaration, topLevel, exports) }
var node = this.startNode()
var expr = this.parseExpression()
return this.parseExpressionStatement(node, expr)
}
})
}
return acorn
}