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.
102 lines
3.2 KiB
JavaScript
102 lines
3.2 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.types = exports.TokContext = void 0;
|
|
|
|
var _types = require("./types");
|
|
|
|
var _whitespace = require("../util/whitespace");
|
|
|
|
class TokContext {
|
|
constructor(token, isExpr, preserveSpace, override) {
|
|
this.token = token;
|
|
this.isExpr = !!isExpr;
|
|
this.preserveSpace = !!preserveSpace;
|
|
this.override = override;
|
|
}
|
|
|
|
}
|
|
|
|
exports.TokContext = TokContext;
|
|
const types = {
|
|
braceStatement: new TokContext("{", false),
|
|
braceExpression: new TokContext("{", true),
|
|
templateQuasi: new TokContext("${", false),
|
|
parenStatement: new TokContext("(", false),
|
|
parenExpression: new TokContext("(", true),
|
|
template: new TokContext("`", true, true, p => p.readTmplToken()),
|
|
functionExpression: new TokContext("function", true),
|
|
functionStatement: new TokContext("function", false)
|
|
};
|
|
exports.types = types;
|
|
|
|
_types.types.parenR.updateContext = _types.types.braceR.updateContext = function () {
|
|
if (this.state.context.length === 1) {
|
|
this.state.exprAllowed = true;
|
|
return;
|
|
}
|
|
|
|
let out = this.state.context.pop();
|
|
|
|
if (out === types.braceStatement && this.curContext().token === "function") {
|
|
out = this.state.context.pop();
|
|
}
|
|
|
|
this.state.exprAllowed = !out.isExpr;
|
|
};
|
|
|
|
_types.types.name.updateContext = function (prevType) {
|
|
let allowed = false;
|
|
|
|
if (prevType !== _types.types.dot) {
|
|
if (this.state.value === "of" && !this.state.exprAllowed || this.state.value === "yield" && this.scope.inGenerator) {
|
|
allowed = true;
|
|
}
|
|
}
|
|
|
|
this.state.exprAllowed = allowed;
|
|
|
|
if (this.state.isIterator) {
|
|
this.state.isIterator = false;
|
|
}
|
|
};
|
|
|
|
_types.types.braceL.updateContext = function (prevType) {
|
|
this.state.context.push(this.braceIsBlock(prevType) ? types.braceStatement : types.braceExpression);
|
|
this.state.exprAllowed = true;
|
|
};
|
|
|
|
_types.types.dollarBraceL.updateContext = function () {
|
|
this.state.context.push(types.templateQuasi);
|
|
this.state.exprAllowed = true;
|
|
};
|
|
|
|
_types.types.parenL.updateContext = function (prevType) {
|
|
const statementParens = prevType === _types.types._if || prevType === _types.types._for || prevType === _types.types._with || prevType === _types.types._while;
|
|
this.state.context.push(statementParens ? types.parenStatement : types.parenExpression);
|
|
this.state.exprAllowed = true;
|
|
};
|
|
|
|
_types.types.incDec.updateContext = function () {};
|
|
|
|
_types.types._function.updateContext = _types.types._class.updateContext = function (prevType) {
|
|
if (prevType.beforeExpr && prevType !== _types.types.semi && prevType !== _types.types._else && !(prevType === _types.types._return && _whitespace.lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start))) && !((prevType === _types.types.colon || prevType === _types.types.braceL) && this.curContext() === types.b_stat)) {
|
|
this.state.context.push(types.functionExpression);
|
|
} else {
|
|
this.state.context.push(types.functionStatement);
|
|
}
|
|
|
|
this.state.exprAllowed = false;
|
|
};
|
|
|
|
_types.types.backQuote.updateContext = function () {
|
|
if (this.curContext() === types.template) {
|
|
this.state.context.pop();
|
|
} else {
|
|
this.state.context.push(types.template);
|
|
}
|
|
|
|
this.state.exprAllowed = false;
|
|
}; |