use directories for structure
This commit is contained in:
294
node_modules/acorn-numeric-separator/.eslintrc.json
generated
vendored
Normal file
294
node_modules/acorn-numeric-separator/.eslintrc.json
generated
vendored
Normal file
@@ -0,0 +1,294 @@
|
||||
{
|
||||
"env": {
|
||||
"es6": true,
|
||||
"node": true
|
||||
},
|
||||
"extends": ["eslint:recommended", "plugin:node/recommended"],
|
||||
"plugins": ["node"],
|
||||
"rules": {
|
||||
"accessor-pairs": "error",
|
||||
"array-bracket-newline": "off",
|
||||
"array-bracket-spacing": "off",
|
||||
"array-callback-return": "error",
|
||||
"array-element-newline": "off",
|
||||
"arrow-body-style": "error",
|
||||
"arrow-parens": [
|
||||
"error",
|
||||
"as-needed"
|
||||
],
|
||||
"arrow-spacing": [
|
||||
"error",
|
||||
{
|
||||
"after": true,
|
||||
"before": true
|
||||
}
|
||||
],
|
||||
"block-scoped-var": "error",
|
||||
"block-spacing": "off",
|
||||
"brace-style": [
|
||||
"error",
|
||||
"1tbs",
|
||||
{
|
||||
"allowSingleLine": true
|
||||
}
|
||||
],
|
||||
"callback-return": "error",
|
||||
"camelcase": "error",
|
||||
"capitalized-comments": "off",
|
||||
"class-methods-use-this": "error",
|
||||
"comma-dangle": "off",
|
||||
"comma-spacing": [
|
||||
"error",
|
||||
{
|
||||
"after": true,
|
||||
"before": false
|
||||
}
|
||||
],
|
||||
"comma-style": [
|
||||
"error",
|
||||
"last"
|
||||
],
|
||||
"complexity": "off",
|
||||
"computed-property-spacing": [
|
||||
"error",
|
||||
"never"
|
||||
],
|
||||
"consistent-return": "error",
|
||||
"consistent-this": "error",
|
||||
"curly": [ "error", "multi-line" ],
|
||||
"default-case": "error",
|
||||
"dot-location": "error",
|
||||
"dot-notation": [
|
||||
"error",
|
||||
{
|
||||
"allowKeywords": true
|
||||
}
|
||||
],
|
||||
"eol-last": "error",
|
||||
"eqeqeq": "off",
|
||||
"for-direction": "error",
|
||||
"func-call-spacing": "error",
|
||||
"func-name-matching": "error",
|
||||
"func-names": [
|
||||
"error",
|
||||
"never"
|
||||
],
|
||||
"func-style": [
|
||||
"error",
|
||||
"declaration",
|
||||
{ "allowArrowFunctions": true }
|
||||
],
|
||||
"function-paren-newline": "off",
|
||||
"generator-star-spacing": "error",
|
||||
"getter-return": "error",
|
||||
"global-require": "error",
|
||||
"guard-for-in": "error",
|
||||
"handle-callback-err": "error",
|
||||
"id-blacklist": "error",
|
||||
"id-length": "off",
|
||||
"id-match": "error",
|
||||
"implicit-arrow-linebreak": [
|
||||
"error",
|
||||
"beside"
|
||||
],
|
||||
"indent": ["error", 2],
|
||||
"indent-legacy": "off",
|
||||
"init-declarations": "off",
|
||||
"jsx-quotes": "error",
|
||||
"key-spacing": "error",
|
||||
"keyword-spacing": [
|
||||
"error",
|
||||
{
|
||||
"after": true,
|
||||
"before": true
|
||||
}
|
||||
],
|
||||
"line-comment-position": "off",
|
||||
"linebreak-style": [
|
||||
"error",
|
||||
"unix"
|
||||
],
|
||||
"lines-around-comment": "error",
|
||||
"lines-around-directive": "error",
|
||||
"lines-between-class-members": "error",
|
||||
"max-depth": "error",
|
||||
"max-len": "off",
|
||||
"max-lines": "off",
|
||||
"max-nested-callbacks": "error",
|
||||
"max-params": "off",
|
||||
"max-statements": "off",
|
||||
"max-statements-per-line": "off",
|
||||
"multiline-comment-style": [
|
||||
"error",
|
||||
"separate-lines"
|
||||
],
|
||||
"new-cap": "error",
|
||||
"new-parens": "error",
|
||||
"newline-after-var": "off",
|
||||
"newline-before-return": "off",
|
||||
"newline-per-chained-call": "off",
|
||||
"no-alert": "error",
|
||||
"no-array-constructor": "error",
|
||||
"no-await-in-loop": "error",
|
||||
"no-bitwise": "error",
|
||||
"no-buffer-constructor": "error",
|
||||
"no-caller": "error",
|
||||
"no-catch-shadow": "error",
|
||||
"no-confusing-arrow": "error",
|
||||
"no-continue": "off",
|
||||
"no-div-regex": "error",
|
||||
"no-duplicate-imports": "error",
|
||||
"no-else-return": "error",
|
||||
"no-empty-function": "error",
|
||||
"no-eq-null": "warn",
|
||||
"no-eval": "error",
|
||||
"no-extend-native": "error",
|
||||
"no-extra-bind": "error",
|
||||
"no-extra-label": "error",
|
||||
"no-extra-parens": "off",
|
||||
"no-floating-decimal": "error",
|
||||
"no-implicit-coercion": "error",
|
||||
"no-implicit-globals": "error",
|
||||
"no-implied-eval": "error",
|
||||
"no-inline-comments": "off",
|
||||
"no-invalid-this": "off",
|
||||
"no-iterator": "error",
|
||||
"no-label-var": "error",
|
||||
"no-labels": "error",
|
||||
"no-lone-blocks": "error",
|
||||
"no-lonely-if": "off",
|
||||
"no-loop-func": "error",
|
||||
"no-magic-numbers": "off",
|
||||
"no-mixed-operators": "off",
|
||||
"no-mixed-requires": "error",
|
||||
"no-multi-assign": "error",
|
||||
"no-multi-spaces": "error",
|
||||
"no-multi-str": "error",
|
||||
"no-multiple-empty-lines": ["error", { "max": 1, "maxEOF": 0, "maxBOF": 0 }],
|
||||
"no-native-reassign": "error",
|
||||
"no-negated-condition": "off",
|
||||
"no-negated-in-lhs": "error",
|
||||
"no-nested-ternary": "error",
|
||||
"no-new": "error",
|
||||
"no-new-func": "error",
|
||||
"no-new-object": "error",
|
||||
"no-new-require": "error",
|
||||
"no-new-wrappers": "error",
|
||||
"no-octal-escape": "error",
|
||||
"no-param-reassign": "off",
|
||||
"no-path-concat": "error",
|
||||
"no-plusplus": "off",
|
||||
"no-process-env": "error",
|
||||
"no-process-exit": "error",
|
||||
"no-proto": "error",
|
||||
"no-prototype-builtins": "error",
|
||||
"no-restricted-globals": "error",
|
||||
"no-restricted-imports": "error",
|
||||
"no-restricted-modules": "error",
|
||||
"no-restricted-properties": "error",
|
||||
"no-restricted-syntax": "error",
|
||||
"no-return-assign": "error",
|
||||
"no-return-await": "error",
|
||||
"no-script-url": "error",
|
||||
"no-self-compare": "error",
|
||||
"no-sequences": "error",
|
||||
"no-shadow": "error",
|
||||
"no-shadow-restricted-names": "error",
|
||||
"no-spaced-func": "error",
|
||||
"no-sync": [
|
||||
"error",
|
||||
{
|
||||
"allowAtRootLevel": true
|
||||
}
|
||||
],
|
||||
"no-tabs": "error",
|
||||
"no-template-curly-in-string": "error",
|
||||
"no-ternary": "off",
|
||||
"no-throw-literal": "error",
|
||||
"no-trailing-spaces": "error",
|
||||
"no-undef-init": "error",
|
||||
"no-undefined": "error",
|
||||
"no-underscore-dangle": "off",
|
||||
"no-unmodified-loop-condition": "error",
|
||||
"no-unneeded-ternary": "error",
|
||||
"no-unused-expressions": "error",
|
||||
"no-unused-vars": ["error", {"argsIgnorePattern": "^_"}],
|
||||
"no-use-before-define": "error",
|
||||
"no-useless-call": "error",
|
||||
"no-useless-computed-key": "error",
|
||||
"no-useless-concat": "error",
|
||||
"no-useless-constructor": "error",
|
||||
"no-useless-rename": "error",
|
||||
"no-useless-return": "error",
|
||||
"no-var": "error",
|
||||
"no-void": "error",
|
||||
"no-warning-comments": "error",
|
||||
"no-whitespace-before-property": "error",
|
||||
"no-with": "error",
|
||||
"nonblock-statement-body-position": [
|
||||
"error",
|
||||
"any"
|
||||
],
|
||||
"object-curly-newline": "off",
|
||||
"object-curly-spacing": "off",
|
||||
"object-property-newline": "off",
|
||||
"object-shorthand": "off",
|
||||
"one-var": "off",
|
||||
"one-var-declaration-per-line": "off",
|
||||
"operator-assignment": "error",
|
||||
"operator-linebreak": "error",
|
||||
"padded-blocks": "off",
|
||||
"padding-line-between-statements": "error",
|
||||
"prefer-arrow-callback": "off",
|
||||
"prefer-const": "off",
|
||||
"prefer-destructuring": "off",
|
||||
"prefer-numeric-literals": "error",
|
||||
"prefer-promise-reject-errors": "error",
|
||||
"prefer-reflect": "off",
|
||||
"prefer-rest-params": "error",
|
||||
"prefer-spread": "error",
|
||||
"prefer-template": "error",
|
||||
"quote-props": ["error", "as-needed"],
|
||||
"quotes": ["error", "double"],
|
||||
"radix": "error",
|
||||
"require-await": "error",
|
||||
"require-jsdoc": "off",
|
||||
"rest-spread-spacing": "error",
|
||||
"semi": ["error", "never"],
|
||||
"semi-spacing": "error",
|
||||
"semi-style": [
|
||||
"error",
|
||||
"last"
|
||||
],
|
||||
"sort-imports": "error",
|
||||
"sort-keys": "off",
|
||||
"sort-vars": "off",
|
||||
"space-before-blocks": "error",
|
||||
"space-before-function-paren": "off",
|
||||
"space-in-parens": [
|
||||
"error",
|
||||
"never"
|
||||
],
|
||||
"space-infix-ops": "error",
|
||||
"space-unary-ops": "error",
|
||||
"spaced-comment": "off",
|
||||
"strict": "error",
|
||||
"switch-colon-spacing": "error",
|
||||
"symbol-description": "error",
|
||||
"template-curly-spacing": "error",
|
||||
"template-tag-spacing": "error",
|
||||
"unicode-bom": [
|
||||
"error",
|
||||
"never"
|
||||
],
|
||||
"valid-jsdoc": "error",
|
||||
"vars-on-top": "off",
|
||||
"wrap-regex": "error",
|
||||
"yield-star-spacing": "error",
|
||||
"yoda": [
|
||||
"error",
|
||||
"never"
|
||||
],
|
||||
"node/no-unpublished-require": "off"
|
||||
}
|
||||
}
|
25
node_modules/acorn-numeric-separator/CHANGELOG.md
generated
vendored
Normal file
25
node_modules/acorn-numeric-separator/CHANGELOG.md
generated
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
## 0.3.2 (2020-05-06)
|
||||
|
||||
* Also remove numeric separators in Literal's `bigint` property
|
||||
|
||||
## 0.3.1 (2020-05-03)
|
||||
|
||||
* Make compatible with acorn's bigint support
|
||||
* Mark as compatible with acorn@7
|
||||
|
||||
## 0.3.0 (2019-04-04)
|
||||
|
||||
* Make compatible with acorn-bigint
|
||||
|
||||
## 0.2.0 (2018-09-14)
|
||||
|
||||
* Update to new acorn 6 interface
|
||||
* Change license to MIT
|
||||
|
||||
## 0.1.1 (2018-01-16)
|
||||
|
||||
* Don't bail on empty integers as in `1.`
|
||||
|
||||
## 0.1.0 (2017-12-19)
|
||||
|
||||
Initial release
|
19
node_modules/acorn-numeric-separator/LICENSE
generated
vendored
Normal file
19
node_modules/acorn-numeric-separator/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
Copyright (C) 2017-2018 by Adrian Heine
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
21
node_modules/acorn-numeric-separator/README.md
generated
vendored
Normal file
21
node_modules/acorn-numeric-separator/README.md
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
# Numeric separator support for Acorn
|
||||
|
||||
[](https://www.npmjs.org/package/acorn-numeric-separator)
|
||||
|
||||
This is a plugin for [Acorn](http://marijnhaverbeke.nl/acorn/) - a tiny, fast JavaScript parser, written completely in JavaScript.
|
||||
|
||||
It implements support for numeric separators as defined in the stage 3 proposal [Numeric Separators](https://github.com/tc39/proposal-numeric-separator).
|
||||
|
||||
## Usage
|
||||
|
||||
This module provides a plugin that can be used to extend the Acorn `Parser` class to parse numeric separators:
|
||||
|
||||
```javascript
|
||||
var acorn = require('acorn');
|
||||
var numericSeparator = require('acorn-numeric-separator');
|
||||
acorn.Parser.extend(numericSeparator).parse('100_000');
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
This plugin is released under an [MIT License](./LICENSE).
|
150
node_modules/acorn-numeric-separator/index.js
generated
vendored
Normal file
150
node_modules/acorn-numeric-separator/index.js
generated
vendored
Normal file
@@ -0,0 +1,150 @@
|
||||
"use strict"
|
||||
|
||||
function withoutAcornBigInt(acorn, Parser) {
|
||||
return class extends Parser {
|
||||
readInt(radix, len) {
|
||||
// Hack: len is only != null for unicode escape sequences,
|
||||
// where numeric separators are not allowed
|
||||
if (len != null) return super.readInt(radix, len)
|
||||
|
||||
let start = this.pos, total = 0, acceptUnderscore = false
|
||||
for (;;) {
|
||||
let code = this.input.charCodeAt(this.pos), val
|
||||
if (code >= 97) val = code - 97 + 10 // a
|
||||
else if (code == 95) {
|
||||
if (!acceptUnderscore) this.raise(this.pos, "Invalid numeric separator")
|
||||
++this.pos
|
||||
acceptUnderscore = false
|
||||
continue
|
||||
} else if (code >= 65) val = code - 65 + 10 // A
|
||||
else if (code >= 48 && code <= 57) val = code - 48 // 0-9
|
||||
else val = Infinity
|
||||
if (val >= radix) break
|
||||
++this.pos
|
||||
total = total * radix + val
|
||||
acceptUnderscore = true
|
||||
}
|
||||
if (this.pos === start) return null
|
||||
if (!acceptUnderscore) this.raise(this.pos - 1, "Invalid numeric separator")
|
||||
|
||||
return total
|
||||
}
|
||||
|
||||
readNumber(startsWithDot) {
|
||||
const token = super.readNumber(startsWithDot)
|
||||
let octal = this.end - this.start >= 2 && this.input.charCodeAt(this.start) === 48
|
||||
const stripped = this.getNumberInput(this.start, this.end)
|
||||
if (stripped.length < this.end - this.start) {
|
||||
if (octal) this.raise(this.start, "Invalid number")
|
||||
this.value = parseFloat(stripped)
|
||||
}
|
||||
return token
|
||||
}
|
||||
|
||||
// This is used by acorn-bigint
|
||||
getNumberInput(start, end) {
|
||||
return this.input.slice(start, end).replace(/_/g, "")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function withAcornBigInt(acorn, Parser) {
|
||||
return class extends Parser {
|
||||
readInt(radix, len) {
|
||||
// Hack: len is only != null for unicode escape sequences,
|
||||
// where numeric separators are not allowed
|
||||
if (len != null) return super.readInt(radix, len)
|
||||
|
||||
let start = this.pos, total = 0, acceptUnderscore = false
|
||||
for (;;) {
|
||||
let code = this.input.charCodeAt(this.pos), val
|
||||
if (code >= 97) val = code - 97 + 10 // a
|
||||
else if (code == 95) {
|
||||
if (!acceptUnderscore) this.raise(this.pos, "Invalid numeric separator")
|
||||
++this.pos
|
||||
acceptUnderscore = false
|
||||
continue
|
||||
} else if (code >= 65) val = code - 65 + 10 // A
|
||||
else if (code >= 48 && code <= 57) val = code - 48 // 0-9
|
||||
else val = Infinity
|
||||
if (val >= radix) break
|
||||
++this.pos
|
||||
total = total * radix + val
|
||||
acceptUnderscore = true
|
||||
}
|
||||
if (this.pos === start) return null
|
||||
if (!acceptUnderscore) this.raise(this.pos - 1, "Invalid numeric separator")
|
||||
|
||||
return total
|
||||
}
|
||||
|
||||
readNumber(startsWithDot) {
|
||||
let start = this.pos
|
||||
if (!startsWithDot && this.readInt(10) === null) this.raise(start, "Invalid number")
|
||||
let octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48
|
||||
let octalLike = false
|
||||
if (octal && this.strict) this.raise(start, "Invalid number")
|
||||
let next = this.input.charCodeAt(this.pos)
|
||||
if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) {
|
||||
let str = this.getNumberInput(start, this.pos)
|
||||
let val = typeof BigInt !== "undefined" ? BigInt(str) : null
|
||||
++this.pos
|
||||
if (acorn.isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, "Identifier directly after number")
|
||||
return this.finishToken(acorn.tokTypes.num, val)
|
||||
}
|
||||
if (octal && /[89]/.test(this.input.slice(start, this.pos))) {
|
||||
octal = false
|
||||
octalLike = true
|
||||
}
|
||||
if (next === 46 && !octal) { // '.'
|
||||
++this.pos
|
||||
this.readInt(10)
|
||||
next = this.input.charCodeAt(this.pos)
|
||||
}
|
||||
if ((next === 69 || next === 101) && !octal) { // 'eE'
|
||||
next = this.input.charCodeAt(++this.pos)
|
||||
if (next === 43 || next === 45) ++this.pos // '+-'
|
||||
if (this.readInt(10) === null) this.raise(start, "Invalid number")
|
||||
}
|
||||
if (acorn.isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, "Identifier directly after number")
|
||||
let str = this.getNumberInput(start, this.pos)
|
||||
if ((octal || octalLike) && str.length < this.pos - start) {
|
||||
this.raise(start, "Invalid number")
|
||||
}
|
||||
|
||||
let val = octal ? parseInt(str, 8) : parseFloat(str)
|
||||
return this.finishToken(acorn.tokTypes.num, val)
|
||||
}
|
||||
|
||||
parseLiteral(value) {
|
||||
const ret = super.parseLiteral(value)
|
||||
if (ret.bigint) ret.bigint = ret.bigint.replace(/_/g, "")
|
||||
return ret
|
||||
}
|
||||
|
||||
readRadixNumber(radix) {
|
||||
let start = this.pos;
|
||||
this.pos += 2; // 0x
|
||||
let val = this.readInt(radix);
|
||||
if (val == null) { this.raise(this.start + 2, "Expected number in radix " + radix); }
|
||||
if (this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110) {
|
||||
let str = this.getNumberInput(start, this.pos)
|
||||
val = typeof BigInt !== "undefined" ? BigInt(str) : null;
|
||||
++this.pos;
|
||||
} else if (acorn.isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, "Identifier directly after number"); }
|
||||
return this.finishToken(acorn.tokTypes.num, val)
|
||||
}
|
||||
|
||||
// This is used by acorn-bigint, which theoretically could be used with acorn@6.2 || acorn@7
|
||||
getNumberInput(start, end) {
|
||||
return this.input.slice(start, end).replace(/_/g, "")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = function(Parser) {
|
||||
const acorn = Parser.acorn || require("acorn")
|
||||
const withAcornBigIntSupport = (acorn.version.startsWith("6.") && !(acorn.version.startsWith("6.0.") || acorn.version.startsWith("6.1."))) || acorn.version.startsWith("7.")
|
||||
|
||||
return withAcornBigIntSupport ? withAcornBigInt(acorn, Parser) : withoutAcornBigInt(acorn, Parser)
|
||||
}
|
68
node_modules/acorn-numeric-separator/package.json
generated
vendored
Normal file
68
node_modules/acorn-numeric-separator/package.json
generated
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"_args": [
|
||||
[
|
||||
"acorn-numeric-separator@0.3.2",
|
||||
"D:\\Projects\\siag\\vanillajs-seed"
|
||||
]
|
||||
],
|
||||
"_development": true,
|
||||
"_from": "acorn-numeric-separator@0.3.2",
|
||||
"_id": "acorn-numeric-separator@0.3.2",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha512-ZNN1qnKvjWycDSQBfuD1TCiB81ItjjeGUPLHuqfP8X8HXwAodGTWsAaqSOQ1Nc9t+Wlb3tcEFdBrwUFUIzDiiA==",
|
||||
"_location": "/acorn-numeric-separator",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "version",
|
||||
"registry": true,
|
||||
"raw": "acorn-numeric-separator@0.3.2",
|
||||
"name": "acorn-numeric-separator",
|
||||
"escapedName": "acorn-numeric-separator",
|
||||
"rawSpec": "0.3.2",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "0.3.2"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/acorn-stage3"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/acorn-numeric-separator/-/acorn-numeric-separator-0.3.2.tgz",
|
||||
"_spec": "0.3.2",
|
||||
"_where": "D:\\Projects\\siag\\vanillajs-seed",
|
||||
"bugs": {
|
||||
"url": "https://github.com/acornjs/acorn-numeric-separator/issues"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Adrian Heine",
|
||||
"email": "mail@adrianheine.de"
|
||||
}
|
||||
],
|
||||
"description": "Support for numeric separators in acorn",
|
||||
"devDependencies": {
|
||||
"acorn": "^7",
|
||||
"eslint": "^6",
|
||||
"eslint-plugin-node": "^11",
|
||||
"mocha": "^7",
|
||||
"test262": "git+https://github.com/tc39/test262.git#a3c7d30cbb68ebcdc522df362dffbc31465b0d1d",
|
||||
"test262-parser-runner": "^0.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4.8.2"
|
||||
},
|
||||
"homepage": "https://github.com/acornjs/acorn-numeric-separator",
|
||||
"license": "MIT",
|
||||
"name": "acorn-numeric-separator",
|
||||
"peerDependencies": {
|
||||
"acorn": "^6 || ^7"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/acornjs/acorn-numeric-separator.git"
|
||||
},
|
||||
"scripts": {
|
||||
"lint": "eslint -c .eslintrc.json .",
|
||||
"test": "mocha",
|
||||
"test:test262": "node run_test262.js"
|
||||
},
|
||||
"version": "0.3.2"
|
||||
}
|
23
node_modules/acorn-numeric-separator/run_test262.js
generated
vendored
Normal file
23
node_modules/acorn-numeric-separator/run_test262.js
generated
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
"use strict"
|
||||
|
||||
const path = require("path")
|
||||
const run = require("test262-parser-runner")
|
||||
const acorn = require("acorn")
|
||||
const Parser = acorn.Parser.extend(require("."))
|
||||
|
||||
const unsupportedFeatures = [
|
||||
"class-fields-private",
|
||||
"class-fields-public",
|
||||
"class-methods-private",
|
||||
"class-static-fields-private",
|
||||
"class-static-fields-public",
|
||||
"class-static-methods-private",
|
||||
]
|
||||
|
||||
run(
|
||||
(content, options) => Parser.parse(content, {sourceType: options.sourceType, ecmaVersion: 11}),
|
||||
{
|
||||
testsDirectory: path.dirname(require.resolve("test262/package.json")),
|
||||
skip: test => (!test.attrs.features || !test.attrs.features.includes("numeric-separator-literal") || unsupportedFeatures.some(f => test.attrs.features.includes(f))),
|
||||
}
|
||||
)
|
5
node_modules/acorn-numeric-separator/test/.eslintrc.json
generated
vendored
Normal file
5
node_modules/acorn-numeric-separator/test/.eslintrc.json
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"env": {
|
||||
"mocha": true
|
||||
}
|
||||
}
|
271
node_modules/acorn-numeric-separator/test/test.js
generated
vendored
Normal file
271
node_modules/acorn-numeric-separator/test/test.js
generated
vendored
Normal file
@@ -0,0 +1,271 @@
|
||||
"use strict"
|
||||
|
||||
const assert = require("assert")
|
||||
const acorn = require("acorn")
|
||||
const numericSeparator = require("..")
|
||||
const Parser = acorn.Parser.extend(numericSeparator)
|
||||
|
||||
function test(text, expectedResult, additionalOptions) {
|
||||
it(text, function () {
|
||||
const result = Parser.parse(text, Object.assign({ ecmaVersion: 9, plugins: { numericSeparator: true } }, additionalOptions))
|
||||
assert.deepStrictEqual(result.body[0], expectedResult)
|
||||
})
|
||||
}
|
||||
function testFail(text, expectedError, additionalOptions) {
|
||||
it(text, function () {
|
||||
let failed = false
|
||||
try {
|
||||
Parser.parse(text, Object.assign({ ecmaVersion: 9, plugins: { numericSeparator: true } }, additionalOptions))
|
||||
} catch (e) {
|
||||
assert.strictEqual(e.message, expectedError)
|
||||
failed = true
|
||||
}
|
||||
assert(failed)
|
||||
})
|
||||
}
|
||||
|
||||
const newNode = (start, props) => Object.assign(new acorn.Node({options: {}}, start), props)
|
||||
|
||||
describe("acorn-numeric-separator", function () {
|
||||
testFail("'\\u{12_34}'", "Bad character escape sequence (1:4)")
|
||||
testFail("'\\u12_34'", "Bad character escape sequence (1:3)")
|
||||
testFail("let a\\u{12_34} = 5", "Bad character escape sequence (1:8)")
|
||||
|
||||
const digits = [
|
||||
{d: "1_0", ast: start => newNode(start, {
|
||||
type: "Literal",
|
||||
end: start + 3,
|
||||
value: 10,
|
||||
raw: "1_0",
|
||||
})},
|
||||
{d: "12e3_4", ast: start => newNode(start, {
|
||||
type: "Literal",
|
||||
end: start + 6,
|
||||
value: 12e34,
|
||||
raw: "12e3_4",
|
||||
})},
|
||||
{d: "1_2e34", ast: start => newNode(start, {
|
||||
type: "Literal",
|
||||
end: start + 6,
|
||||
value: 12e34,
|
||||
raw: "1_2e34",
|
||||
})},
|
||||
{d: "0b1010_1001", ast: start => newNode(start, {
|
||||
type: "Literal",
|
||||
end: start + 11,
|
||||
value: 169,
|
||||
raw: "0b1010_1001",
|
||||
})},
|
||||
{d: "0xA0_B0_C0", ast: start => newNode(start, {
|
||||
type: "Literal",
|
||||
end: start + 10,
|
||||
value: 0xa0b0c0,
|
||||
raw: "0xA0_B0_C0",
|
||||
})},
|
||||
{d: "0o70_60_50", ast: start => newNode(start, {
|
||||
type: "Literal",
|
||||
end: start + 10,
|
||||
value: 0o706050,
|
||||
raw: "0o70_60_50",
|
||||
})},
|
||||
|
||||
{d: "_2", ast: start => newNode(start, {
|
||||
type: "Identifier",
|
||||
end: start + 2,
|
||||
name: "_2",
|
||||
})},
|
||||
{d: "0b_1", error: start => `Invalid numeric separator (1:${start + 2})`},
|
||||
{d: "0o_1", error: start => `Invalid numeric separator (1:${start + 2})`},
|
||||
{d: "0x_1", error: start => `Invalid numeric separator (1:${start + 2})`},
|
||||
{d: "2_", error: start => `Invalid numeric separator (1:${start + 1})`},
|
||||
{d: "2__4", error: start => `Invalid numeric separator (1:${start + 2})`},
|
||||
{d: "._4", error: start => `Unexpected token (1:${start})`},
|
||||
{d: "_.4", error: start => `Unexpected token (1:${start + 1})`},
|
||||
{d: "1._4", error: start => `Invalid numeric separator (1:${start + 2})`},
|
||||
{d: "1_.4", error: start => `Invalid numeric separator (1:${start + 1})`},
|
||||
{d: "_1.4", error: start => `Unexpected token (1:${start + 2})`},
|
||||
{d: "1.4_", error: start => `Invalid numeric separator (1:${start + 3})`},
|
||||
{d: "1.4_e2", error: start => `Invalid numeric separator (1:${start + 3})`},
|
||||
{d: "1.4e_2", error: start => `Invalid numeric separator (1:${start + 4})`},
|
||||
{d: "04_3_2", error: start => `Invalid number (1:${start})`},
|
||||
{d: "0_4_3_2", error: start => `Invalid number (1:${start})`},
|
||||
]
|
||||
const statements = [
|
||||
{s: "let i = %s", ast: content => newNode(0, {
|
||||
type: "VariableDeclaration",
|
||||
end: content.end,
|
||||
kind: "let",
|
||||
declarations: [newNode(4, {
|
||||
type: "VariableDeclarator",
|
||||
end: content.end,
|
||||
id: newNode(4, {
|
||||
type: "Identifier",
|
||||
end: 5,
|
||||
name: "i"
|
||||
}),
|
||||
init: content
|
||||
})]
|
||||
})},
|
||||
|
||||
{s: "i = %s", ast: content => newNode(0, {
|
||||
type: "ExpressionStatement",
|
||||
end: content.end,
|
||||
expression: newNode(0, {
|
||||
type: "AssignmentExpression",
|
||||
end: content.end,
|
||||
operator: "=",
|
||||
left: newNode(0, {
|
||||
type: "Identifier",
|
||||
end: 1,
|
||||
name: "i"
|
||||
}),
|
||||
right: content
|
||||
})
|
||||
})},
|
||||
|
||||
{s: "((i = %s) => {})", ast: content => newNode(0, {
|
||||
type: "ExpressionStatement",
|
||||
end: content.end + 8,
|
||||
expression: newNode(1, {
|
||||
type: "ArrowFunctionExpression",
|
||||
end: content.end + 7,
|
||||
id: null,
|
||||
generator: false,
|
||||
expression: false,
|
||||
async: false,
|
||||
params: [
|
||||
newNode(2, {
|
||||
type: "AssignmentPattern",
|
||||
end: content.end,
|
||||
left: newNode(2, {
|
||||
type: "Identifier",
|
||||
end: 3,
|
||||
name: "i"
|
||||
}),
|
||||
right: content
|
||||
})
|
||||
],
|
||||
body: newNode(content.end + 5, {
|
||||
type: "BlockStatement",
|
||||
end: content.end + 7,
|
||||
body: []
|
||||
})
|
||||
})
|
||||
})},
|
||||
|
||||
{s: "for (let i = 10; i < %s;++i) {}", ast: content => newNode(0, {
|
||||
type: "ForStatement",
|
||||
end: content.end + 8,
|
||||
init: newNode(5, {
|
||||
type: "VariableDeclaration",
|
||||
end: 15,
|
||||
declarations: [
|
||||
newNode(9, {
|
||||
type: "VariableDeclarator",
|
||||
end: 15,
|
||||
id: newNode(9, {
|
||||
type: "Identifier",
|
||||
end: 10,
|
||||
name: "i"
|
||||
}),
|
||||
init: newNode(13, {
|
||||
type: "Literal",
|
||||
end: 15,
|
||||
value: 10,
|
||||
raw: "10"
|
||||
})
|
||||
})
|
||||
],
|
||||
kind: "let"
|
||||
}),
|
||||
test: newNode(17, {
|
||||
type: "BinaryExpression",
|
||||
end: content.end,
|
||||
left: newNode(17, {
|
||||
type: "Identifier",
|
||||
end: 18,
|
||||
name: "i"
|
||||
}),
|
||||
operator: "<",
|
||||
right: content
|
||||
}),
|
||||
update: newNode(content.end + 1, {
|
||||
type: "UpdateExpression",
|
||||
end: content.end + 4,
|
||||
operator: "++",
|
||||
prefix: true,
|
||||
argument: newNode(content.end + 3, {
|
||||
type: "Identifier",
|
||||
end: content.end + 4,
|
||||
name: "i"
|
||||
})
|
||||
}),
|
||||
body: newNode(content.end + 6, {
|
||||
type: "BlockStatement",
|
||||
end: content.end + 8,
|
||||
body: []
|
||||
})
|
||||
})},
|
||||
|
||||
{s: "i + %s", ast: content => newNode(0, {
|
||||
type: "ExpressionStatement",
|
||||
end: content.end,
|
||||
expression: newNode(0, {
|
||||
type: "BinaryExpression",
|
||||
end: content.end,
|
||||
left: newNode(0, {
|
||||
type: "Identifier",
|
||||
end: 1,
|
||||
name: "i"
|
||||
}),
|
||||
operator: "+",
|
||||
right: content
|
||||
})
|
||||
})}
|
||||
]
|
||||
statements.forEach(statement => {
|
||||
const start = statement.s.indexOf("%s")
|
||||
digits.forEach(d => {
|
||||
(d.error ? testFail : test)(
|
||||
statement.s.replace("%s", d.d),
|
||||
d.error ? d.error(start) : statement.ast(d.ast(start))
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
// Make sure we didn't break anything
|
||||
test("123..toString(10)", newNode(0, {
|
||||
type: "ExpressionStatement",
|
||||
end: 17,
|
||||
expression: newNode(0, {
|
||||
type: "CallExpression",
|
||||
end: 17,
|
||||
callee: newNode(0, {
|
||||
type: "MemberExpression",
|
||||
end: 13,
|
||||
object: newNode(0, {
|
||||
type: "Literal",
|
||||
end: 4,
|
||||
raw: "123.",
|
||||
value: 123
|
||||
}),
|
||||
property: newNode(5, {
|
||||
type: "Identifier",
|
||||
end: 13,
|
||||
name: "toString"
|
||||
}),
|
||||
computed: false,
|
||||
}),
|
||||
arguments: [
|
||||
newNode(14, {
|
||||
type: "Literal",
|
||||
start: 14,
|
||||
end: 16,
|
||||
raw: "10",
|
||||
value: 10
|
||||
})
|
||||
],
|
||||
})
|
||||
}))
|
||||
testFail("08_0;", "Invalid number (1:0)")
|
||||
})
|
Reference in New Issue
Block a user