mirror of
https://github.com/arthur-pbty/portfolio2023.git
synced 2026-06-03 23:36:21 +02:00
26 lines
998 B
JavaScript
26 lines
998 B
JavaScript
// eslint-disable-next-line node/no-unsupported-features/es-syntax
|
|
import privateClassElements from "acorn-private-class-elements"
|
|
|
|
// eslint-disable-next-line node/no-unsupported-features/es-syntax
|
|
export default function privateMethods(Parser) {
|
|
const ExtendedParser = privateClassElements(Parser)
|
|
|
|
return class extends ExtendedParser {
|
|
// Parse private methods
|
|
parseClassElement(_constructorAllowsSuper) {
|
|
const oldInClassMemberName = this._inClassMemberName
|
|
this._inClassMemberName = true
|
|
const result = super.parseClassElement.apply(this, arguments)
|
|
this._inClassMemberName = oldInClassMemberName
|
|
return result
|
|
}
|
|
|
|
parsePropertyName(prop) {
|
|
const isPrivate = this.options.ecmaVersion >= 8 && this._inClassMemberName && this.type == this.privateIdentifierToken && !prop.static
|
|
this._inClassMemberName = false
|
|
if (!isPrivate) return super.parsePropertyName(prop)
|
|
return this.parsePrivateClassElementName(prop)
|
|
}
|
|
}
|
|
}
|