Added test to ensure that release notes are parsed properly Updated to latest dependencies to fix security vulnerability Updated GH Actions Workflow to run test before updating tag Updated README.md to reflect proper whatsnew documentation.
204 lines
6.8 KiB
JavaScript
204 lines
6.8 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = void 0;
|
|
|
|
var _types = require("../tokenizer/types");
|
|
|
|
var N = _interopRequireWildcard(require("../types"));
|
|
|
|
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
|
|
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
|
|
_types.types.placeholder = new _types.TokenType("%%", {
|
|
startsExpr: true
|
|
});
|
|
|
|
var _default = superClass => class extends superClass {
|
|
parsePlaceholder(expectedNode) {
|
|
if (this.match(_types.types.placeholder)) {
|
|
const node = this.startNode();
|
|
this.next();
|
|
this.assertNoSpace("Unexpected space in placeholder.");
|
|
node.name = super.parseIdentifier(true);
|
|
this.assertNoSpace("Unexpected space in placeholder.");
|
|
this.expect(_types.types.placeholder);
|
|
return this.finishPlaceholder(node, expectedNode);
|
|
}
|
|
}
|
|
|
|
finishPlaceholder(node, expectedNode) {
|
|
const isFinished = !!(node.expectedNode && node.type === "Placeholder");
|
|
node.expectedNode = expectedNode;
|
|
return isFinished ? node : this.finishNode(node, "Placeholder");
|
|
}
|
|
|
|
getTokenFromCode(code) {
|
|
if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) {
|
|
return this.finishOp(_types.types.placeholder, 2);
|
|
}
|
|
|
|
return super.getTokenFromCode(...arguments);
|
|
}
|
|
|
|
parseExprAtom() {
|
|
return this.parsePlaceholder("Expression") || super.parseExprAtom(...arguments);
|
|
}
|
|
|
|
parseIdentifier() {
|
|
return this.parsePlaceholder("Identifier") || super.parseIdentifier(...arguments);
|
|
}
|
|
|
|
checkReservedWord(word) {
|
|
if (word !== undefined) super.checkReservedWord(...arguments);
|
|
}
|
|
|
|
parseBindingAtom() {
|
|
return this.parsePlaceholder("Pattern") || super.parseBindingAtom(...arguments);
|
|
}
|
|
|
|
checkLVal(expr) {
|
|
if (expr.type !== "Placeholder") super.checkLVal(...arguments);
|
|
}
|
|
|
|
toAssignable(node) {
|
|
if (node && node.type === "Placeholder" && node.expectedNode === "Expression") {
|
|
node.expectedNode = "Pattern";
|
|
return node;
|
|
}
|
|
|
|
return super.toAssignable(...arguments);
|
|
}
|
|
|
|
verifyBreakContinue(node) {
|
|
if (node.label && node.label.type === "Placeholder") return;
|
|
super.verifyBreakContinue(...arguments);
|
|
}
|
|
|
|
parseExpressionStatement(node, expr) {
|
|
if (expr.type !== "Placeholder" || expr.extra && expr.extra.parenthesized) {
|
|
return super.parseExpressionStatement(...arguments);
|
|
}
|
|
|
|
if (this.match(_types.types.colon)) {
|
|
const stmt = node;
|
|
stmt.label = this.finishPlaceholder(expr, "Identifier");
|
|
this.next();
|
|
stmt.body = this.parseStatement("label");
|
|
return this.finishNode(stmt, "LabeledStatement");
|
|
}
|
|
|
|
this.semicolon();
|
|
node.name = expr.name;
|
|
return this.finishPlaceholder(node, "Statement");
|
|
}
|
|
|
|
parseBlock() {
|
|
return this.parsePlaceholder("BlockStatement") || super.parseBlock(...arguments);
|
|
}
|
|
|
|
parseFunctionId() {
|
|
return this.parsePlaceholder("Identifier") || super.parseFunctionId(...arguments);
|
|
}
|
|
|
|
parseClass(node, isStatement, optionalId) {
|
|
const type = isStatement ? "ClassDeclaration" : "ClassExpression";
|
|
this.next();
|
|
this.takeDecorators(node);
|
|
const placeholder = this.parsePlaceholder("Identifier");
|
|
|
|
if (placeholder) {
|
|
if (this.match(_types.types._extends) || this.match(_types.types.placeholder) || this.match(_types.types.braceL)) {
|
|
node.id = placeholder;
|
|
} else if (optionalId || !isStatement) {
|
|
node.id = null;
|
|
node.body = this.finishPlaceholder(placeholder, "ClassBody");
|
|
return this.finishNode(node, type);
|
|
} else {
|
|
this.unexpected(null, "A class name is required");
|
|
}
|
|
} else {
|
|
this.parseClassId(node, isStatement, optionalId);
|
|
}
|
|
|
|
this.parseClassSuper(node);
|
|
node.body = this.parsePlaceholder("ClassBody") || this.parseClassBody(!!node.superClass);
|
|
return this.finishNode(node, type);
|
|
}
|
|
|
|
parseExport(node) {
|
|
const placeholder = this.parsePlaceholder("Identifier");
|
|
if (!placeholder) return super.parseExport(...arguments);
|
|
|
|
if (!this.isContextual("from") && !this.match(_types.types.comma)) {
|
|
node.specifiers = [];
|
|
node.source = null;
|
|
node.declaration = this.finishPlaceholder(placeholder, "Declaration");
|
|
return this.finishNode(node, "ExportNamedDeclaration");
|
|
}
|
|
|
|
this.expectPlugin("exportDefaultFrom");
|
|
const specifier = this.startNode();
|
|
specifier.exported = placeholder;
|
|
node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")];
|
|
return super.parseExport(node);
|
|
}
|
|
|
|
maybeParseExportDefaultSpecifier(node) {
|
|
if (node.specifiers && node.specifiers.length > 0) {
|
|
return true;
|
|
}
|
|
|
|
return super.maybeParseExportDefaultSpecifier(...arguments);
|
|
}
|
|
|
|
checkExport(node) {
|
|
const {
|
|
specifiers
|
|
} = node;
|
|
|
|
if (specifiers && specifiers.length) {
|
|
node.specifiers = specifiers.filter(node => node.exported.type === "Placeholder");
|
|
}
|
|
|
|
super.checkExport(node);
|
|
node.specifiers = specifiers;
|
|
}
|
|
|
|
parseImport(node) {
|
|
const placeholder = this.parsePlaceholder("Identifier");
|
|
if (!placeholder) return super.parseImport(...arguments);
|
|
node.specifiers = [];
|
|
|
|
if (!this.isContextual("from") && !this.match(_types.types.comma)) {
|
|
node.source = this.finishPlaceholder(placeholder, "StringLiteral");
|
|
this.semicolon();
|
|
return this.finishNode(node, "ImportDeclaration");
|
|
}
|
|
|
|
const specifier = this.startNodeAtNode(placeholder);
|
|
specifier.local = placeholder;
|
|
this.finishNode(specifier, "ImportDefaultSpecifier");
|
|
node.specifiers.push(specifier);
|
|
|
|
if (this.eat(_types.types.comma)) {
|
|
const hasStarImport = this.maybeParseStarImportSpecifier(node);
|
|
if (!hasStarImport) this.parseNamedImportSpecifiers(node);
|
|
}
|
|
|
|
this.expectContextual("from");
|
|
node.source = this.parseImportSource();
|
|
this.semicolon();
|
|
return this.finishNode(node, "ImportDeclaration");
|
|
}
|
|
|
|
parseImportSource() {
|
|
return this.parsePlaceholder("StringLiteral") || super.parseImportSource(...arguments);
|
|
}
|
|
|
|
};
|
|
|
|
exports.default = _default; |