Compare commits
No commits in common. "5a61bf2dbfb046c8bfe1c2a60e853817d76af2aa" and "97116fed1c760b6c47a0dd388dad48c1064ae6a6" have entirely different histories.
5a61bf2dbf
...
97116fed1c
14209 changed files with 352864 additions and 1105674 deletions
BIN
.DS_Store
vendored
BIN
.DS_Store
vendored
Binary file not shown.
BIN
._.DS_Store
BIN
._.DS_Store
Binary file not shown.
2
.env
2
.env
|
|
@ -1,2 +0,0 @@
|
||||||
JWT_SECRET=helpyourneighbour-secret-key-for-jwt
|
|
||||||
PORT=3000
|
|
||||||
36
ISSUE-10.md
36
ISSUE-10.md
|
|
@ -1,19 +1,25 @@
|
||||||
# Issue: Implement Role-Based Access Control (RBAC) for Dispute Endpoints
|
## Issue #10: Implement Rate Limiting
|
||||||
|
|
||||||
## Description
|
### Description
|
||||||
Implement role-based access control for dispute-related endpoints to ensure that only authorized users (moderators and admins) can perform actions like changing dispute status or making final decisions.
|
|
||||||
|
|
||||||
## Acceptance Criteria
|
Implement rate limiting to protect the API from abuse and ensure fair usage among users.
|
||||||
- [x] Middleware `requireRole` is properly implemented and tested
|
|
||||||
- [x] Dispute endpoints are secured with appropriate role checks
|
|
||||||
- [x] Integration tests verify role-based access control
|
|
||||||
- [x] Documentation of RBAC for dispute system is updated
|
|
||||||
|
|
||||||
## Related Files
|
### Acceptance Criteria
|
||||||
- `backend/src/middleware/requireRole.js`
|
|
||||||
- `backend/src/controllers/dispute.controller.js`
|
|
||||||
- `backend/src/routes/disputes.routes.js`
|
|
||||||
- `backend/test/roles.test.js`
|
|
||||||
|
|
||||||
## Notes
|
- [ ] Configure rate limiting middleware
|
||||||
This task builds upon the existing roles and permissions documentation to enforce access control at the API level.
|
- [ ] Define rate limits for different endpoints
|
||||||
|
- [ ] Add logging for rate limit violations
|
||||||
|
- [ ] Allow configuration of limits via environment variables
|
||||||
|
- [ ] Ensure legitimate users are not affected by limits
|
||||||
|
|
||||||
|
### Tasks
|
||||||
|
|
||||||
|
- [ ] Install and configure express-rate-limit middleware
|
||||||
|
- [ ] Define default rate limits
|
||||||
|
- [ ] Implement configurable limits via .env file
|
||||||
|
- [ ] Add logging for rate limit hits
|
||||||
|
- [ ] Test rate limiting functionality
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
This issue addresses the need to protect the API from abuse through rate limiting. The implementation will use express-rate-limit middleware to configure different rate limits for various endpoints, with configuration via environment variables to allow easy adjustment without code changes.
|
||||||
|
|
@ -1,16 +1,17 @@
|
||||||
## Issue Template for helpyourneighbour
|
## Beschreibung
|
||||||
|
|
||||||
### Description
|
Implementierung des Rollen- und Rechtekonzepts gemäß der Dokumentation in `docs/roles-and-permissions.md`.
|
||||||
Describe the task to be done.
|
|
||||||
|
|
||||||
### Acceptance Criteria
|
## Aufgaben
|
||||||
- [ ] Criterion 1
|
|
||||||
- [ ] Criterion 2
|
|
||||||
- [ ] Criterion 3
|
|
||||||
|
|
||||||
### Related Files
|
- [ ] Implementierung der `requireRole` Middleware
|
||||||
- File 1
|
- [ ] Integration der Middleware in die bestehenden Routen
|
||||||
- File 2
|
- [ ] Erstellung von Integrationstests für die Rollenprüfung
|
||||||
|
- [ ] Dokumentation der Rolle in der API-Dokumentation
|
||||||
|
|
||||||
### Notes
|
## Akzeptanzkriterien
|
||||||
Any additional context or notes.
|
|
||||||
|
- Alle Endpunkte sind entsprechend den Rollen geschützt
|
||||||
|
- Integrationstests bestehen erfolgreich
|
||||||
|
- Die Middleware ist in allen relevanten Routen implementiert
|
||||||
|
- Die Dokumentation wurde aktualisiert
|
||||||
BIN
backend/.DS_Store
vendored
BIN
backend/.DS_Store
vendored
Binary file not shown.
Binary file not shown.
11
backend/.env
11
backend/.env
|
|
@ -1,11 +0,0 @@
|
||||||
PORT=3000
|
|
||||||
DB_HOST=localhost
|
|
||||||
DB_PORT=5432
|
|
||||||
DB_USER=root
|
|
||||||
DB_PASSWORD=
|
|
||||||
DB_NAME=helpyourneighbour
|
|
||||||
JWT_SECRET=fallback_secret_key_for_dev
|
|
||||||
RATE_LIMIT_WINDOW_MS=900000
|
|
||||||
RATE_LIMIT_MAX_REQUESTS=100
|
|
||||||
RATE_LIMIT_AUTH_WINDOW_MS=300000
|
|
||||||
RATE_LIMIT_AUTH_MAX_REQUESTS=5
|
|
||||||
1
backend/node_modules/.bin/bcrypt
generated
vendored
1
backend/node_modules/.bin/bcrypt
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
../bcryptjs/bin/bcrypt
|
|
||||||
1
backend/node_modules/.bin/create-jest
generated
vendored
1
backend/node_modules/.bin/create-jest
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
../create-jest/bin/create-jest.js
|
|
||||||
1
backend/node_modules/.bin/node-gyp-build
generated
vendored
1
backend/node_modules/.bin/node-gyp-build
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
../node-gyp-build/bin.js
|
|
||||||
1
backend/node_modules/.bin/node-gyp-build-optional
generated
vendored
1
backend/node_modules/.bin/node-gyp-build-optional
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
../node-gyp-build/optional.js
|
|
||||||
1
backend/node_modules/.bin/node-gyp-build-test
generated
vendored
1
backend/node_modules/.bin/node-gyp-build-test
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
../node-gyp-build/build-test.js
|
|
||||||
1
backend/node_modules/.bin/playwright
generated
vendored
1
backend/node_modules/.bin/playwright
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
../@playwright/test/cli.js
|
|
||||||
1
backend/node_modules/.bin/playwright-core
generated
vendored
1
backend/node_modules/.bin/playwright-core
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
../playwright-core/cli.js
|
|
||||||
1
backend/node_modules/.bin/regjsparser
generated
vendored
1
backend/node_modules/.bin/regjsparser
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
../regjsparser/bin/parser
|
|
||||||
1
backend/node_modules/.bin/resolve
generated
vendored
1
backend/node_modules/.bin/resolve
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
../resolve/bin/resolve
|
|
||||||
9217
backend/node_modules/.package-lock.json
generated
vendored
9217
backend/node_modules/.package-lock.json
generated
vendored
File diff suppressed because it is too large
Load diff
19
backend/node_modules/@babel/helper-annotate-as-pure/README.md
generated
vendored
19
backend/node_modules/@babel/helper-annotate-as-pure/README.md
generated
vendored
|
|
@ -1,19 +0,0 @@
|
||||||
# @babel/helper-annotate-as-pure
|
|
||||||
|
|
||||||
> Helper function to annotate paths and nodes with #__PURE__ comment
|
|
||||||
|
|
||||||
See our website [@babel/helper-annotate-as-pure](https://babeljs.io/docs/babel-helper-annotate-as-pure) for more information.
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
Using npm:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install --save @babel/helper-annotate-as-pure
|
|
||||||
```
|
|
||||||
|
|
||||||
or using yarn:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add @babel/helper-annotate-as-pure
|
|
||||||
```
|
|
||||||
23
backend/node_modules/@babel/helper-annotate-as-pure/lib/index.js
generated
vendored
23
backend/node_modules/@babel/helper-annotate-as-pure/lib/index.js
generated
vendored
|
|
@ -1,23 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.default = annotateAsPure;
|
|
||||||
var _t = require("@babel/types");
|
|
||||||
const {
|
|
||||||
addComment
|
|
||||||
} = _t;
|
|
||||||
const PURE_ANNOTATION = "#__PURE__";
|
|
||||||
const isPureAnnotated = ({
|
|
||||||
leadingComments
|
|
||||||
}) => !!leadingComments && leadingComments.some(comment => /[@#]__PURE__/.test(comment.value));
|
|
||||||
function annotateAsPure(pathOrNode) {
|
|
||||||
const node = pathOrNode.node || pathOrNode;
|
|
||||||
if (isPureAnnotated(node)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
addComment(node, "leading", PURE_ANNOTATION);
|
|
||||||
}
|
|
||||||
|
|
||||||
//# sourceMappingURL=index.js.map
|
|
||||||
1
backend/node_modules/@babel/helper-annotate-as-pure/lib/index.js.map
generated
vendored
1
backend/node_modules/@babel/helper-annotate-as-pure/lib/index.js.map
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"names":["_t","require","addComment","PURE_ANNOTATION","isPureAnnotated","leadingComments","some","comment","test","value","annotateAsPure","pathOrNode","node"],"sources":["../src/index.ts"],"sourcesContent":["import { addComment, type Node } from \"@babel/types\";\n\nconst PURE_ANNOTATION = \"#__PURE__\";\n\nconst isPureAnnotated = ({ leadingComments }: Node): boolean =>\n !!leadingComments &&\n leadingComments.some(comment => /[@#]__PURE__/.test(comment.value));\n\nexport default function annotateAsPure(\n pathOrNode: Node | { node: Node },\n): void {\n const node =\n // @ts-expect-error Node will not have `node` property\n (pathOrNode.node || pathOrNode) as Node;\n if (isPureAnnotated(node)) {\n return;\n }\n addComment(node, \"leading\", PURE_ANNOTATION);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,EAAA,GAAAC,OAAA;AAAqD;EAA5CC;AAAU,IAAAF,EAAA;AAEnB,MAAMG,eAAe,GAAG,WAAW;AAEnC,MAAMC,eAAe,GAAGA,CAAC;EAAEC;AAAsB,CAAC,KAChD,CAAC,CAACA,eAAe,IACjBA,eAAe,CAACC,IAAI,CAACC,OAAO,IAAI,cAAc,CAACC,IAAI,CAACD,OAAO,CAACE,KAAK,CAAC,CAAC;AAEtD,SAASC,cAAcA,CACpCC,UAAiC,EAC3B;EACN,MAAMC,IAAI,GAEPD,UAAU,CAACC,IAAI,IAAID,UAAmB;EACzC,IAAIP,eAAe,CAACQ,IAAI,CAAC,EAAE;IACzB;EACF;EACAV,UAAU,CAACU,IAAI,EAAE,SAAS,EAAET,eAAe,CAAC;AAC9C","ignoreList":[]}
|
|
||||||
27
backend/node_modules/@babel/helper-annotate-as-pure/package.json
generated
vendored
27
backend/node_modules/@babel/helper-annotate-as-pure/package.json
generated
vendored
|
|
@ -1,27 +0,0 @@
|
||||||
{
|
|
||||||
"name": "@babel/helper-annotate-as-pure",
|
|
||||||
"version": "7.27.3",
|
|
||||||
"description": "Helper function to annotate paths and nodes with #__PURE__ comment",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/babel/babel.git",
|
|
||||||
"directory": "packages/babel-helper-annotate-as-pure"
|
|
||||||
},
|
|
||||||
"homepage": "https://babel.dev/docs/en/next/babel-helper-annotate-as-pure",
|
|
||||||
"license": "MIT",
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"main": "./lib/index.js",
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/types": "^7.27.3"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@babel/traverse": "^7.27.3"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.9.0"
|
|
||||||
},
|
|
||||||
"author": "The Babel Team (https://babel.dev/team)",
|
|
||||||
"type": "commonjs"
|
|
||||||
}
|
|
||||||
443
backend/node_modules/@babel/helper-compilation-targets/node_modules/semver/README.md
generated
vendored
443
backend/node_modules/@babel/helper-compilation-targets/node_modules/semver/README.md
generated
vendored
|
|
@ -1,443 +0,0 @@
|
||||||
semver(1) -- The semantic versioner for npm
|
|
||||||
===========================================
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm install semver
|
|
||||||
````
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
As a node module:
|
|
||||||
|
|
||||||
```js
|
|
||||||
const semver = require('semver')
|
|
||||||
|
|
||||||
semver.valid('1.2.3') // '1.2.3'
|
|
||||||
semver.valid('a.b.c') // null
|
|
||||||
semver.clean(' =v1.2.3 ') // '1.2.3'
|
|
||||||
semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
|
|
||||||
semver.gt('1.2.3', '9.8.7') // false
|
|
||||||
semver.lt('1.2.3', '9.8.7') // true
|
|
||||||
semver.minVersion('>=1.0.0') // '1.0.0'
|
|
||||||
semver.valid(semver.coerce('v2')) // '2.0.0'
|
|
||||||
semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7'
|
|
||||||
```
|
|
||||||
|
|
||||||
As a command-line utility:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ semver -h
|
|
||||||
|
|
||||||
A JavaScript implementation of the https://semver.org/ specification
|
|
||||||
Copyright Isaac Z. Schlueter
|
|
||||||
|
|
||||||
Usage: semver [options] <version> [<version> [...]]
|
|
||||||
Prints valid versions sorted by SemVer precedence
|
|
||||||
|
|
||||||
Options:
|
|
||||||
-r --range <range>
|
|
||||||
Print versions that match the specified range.
|
|
||||||
|
|
||||||
-i --increment [<level>]
|
|
||||||
Increment a version by the specified level. Level can
|
|
||||||
be one of: major, minor, patch, premajor, preminor,
|
|
||||||
prepatch, or prerelease. Default level is 'patch'.
|
|
||||||
Only one version may be specified.
|
|
||||||
|
|
||||||
--preid <identifier>
|
|
||||||
Identifier to be used to prefix premajor, preminor,
|
|
||||||
prepatch or prerelease version increments.
|
|
||||||
|
|
||||||
-l --loose
|
|
||||||
Interpret versions and ranges loosely
|
|
||||||
|
|
||||||
-p --include-prerelease
|
|
||||||
Always include prerelease versions in range matching
|
|
||||||
|
|
||||||
-c --coerce
|
|
||||||
Coerce a string into SemVer if possible
|
|
||||||
(does not imply --loose)
|
|
||||||
|
|
||||||
--rtl
|
|
||||||
Coerce version strings right to left
|
|
||||||
|
|
||||||
--ltr
|
|
||||||
Coerce version strings left to right (default)
|
|
||||||
|
|
||||||
Program exits successfully if any valid version satisfies
|
|
||||||
all supplied ranges, and prints all satisfying versions.
|
|
||||||
|
|
||||||
If no satisfying versions are found, then exits failure.
|
|
||||||
|
|
||||||
Versions are printed in ascending order, so supplying
|
|
||||||
multiple versions to the utility will just sort them.
|
|
||||||
```
|
|
||||||
|
|
||||||
## Versions
|
|
||||||
|
|
||||||
A "version" is described by the `v2.0.0` specification found at
|
|
||||||
<https://semver.org/>.
|
|
||||||
|
|
||||||
A leading `"="` or `"v"` character is stripped off and ignored.
|
|
||||||
|
|
||||||
## Ranges
|
|
||||||
|
|
||||||
A `version range` is a set of `comparators` which specify versions
|
|
||||||
that satisfy the range.
|
|
||||||
|
|
||||||
A `comparator` is composed of an `operator` and a `version`. The set
|
|
||||||
of primitive `operators` is:
|
|
||||||
|
|
||||||
* `<` Less than
|
|
||||||
* `<=` Less than or equal to
|
|
||||||
* `>` Greater than
|
|
||||||
* `>=` Greater than or equal to
|
|
||||||
* `=` Equal. If no operator is specified, then equality is assumed,
|
|
||||||
so this operator is optional, but MAY be included.
|
|
||||||
|
|
||||||
For example, the comparator `>=1.2.7` would match the versions
|
|
||||||
`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6`
|
|
||||||
or `1.1.0`.
|
|
||||||
|
|
||||||
Comparators can be joined by whitespace to form a `comparator set`,
|
|
||||||
which is satisfied by the **intersection** of all of the comparators
|
|
||||||
it includes.
|
|
||||||
|
|
||||||
A range is composed of one or more comparator sets, joined by `||`. A
|
|
||||||
version matches a range if and only if every comparator in at least
|
|
||||||
one of the `||`-separated comparator sets is satisfied by the version.
|
|
||||||
|
|
||||||
For example, the range `>=1.2.7 <1.3.0` would match the versions
|
|
||||||
`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`,
|
|
||||||
or `1.1.0`.
|
|
||||||
|
|
||||||
The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`,
|
|
||||||
`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`.
|
|
||||||
|
|
||||||
### Prerelease Tags
|
|
||||||
|
|
||||||
If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then
|
|
||||||
it will only be allowed to satisfy comparator sets if at least one
|
|
||||||
comparator with the same `[major, minor, patch]` tuple also has a
|
|
||||||
prerelease tag.
|
|
||||||
|
|
||||||
For example, the range `>1.2.3-alpha.3` would be allowed to match the
|
|
||||||
version `1.2.3-alpha.7`, but it would *not* be satisfied by
|
|
||||||
`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater
|
|
||||||
than" `1.2.3-alpha.3` according to the SemVer sort rules. The version
|
|
||||||
range only accepts prerelease tags on the `1.2.3` version. The
|
|
||||||
version `3.4.5` *would* satisfy the range, because it does not have a
|
|
||||||
prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`.
|
|
||||||
|
|
||||||
The purpose for this behavior is twofold. First, prerelease versions
|
|
||||||
frequently are updated very quickly, and contain many breaking changes
|
|
||||||
that are (by the author's design) not yet fit for public consumption.
|
|
||||||
Therefore, by default, they are excluded from range matching
|
|
||||||
semantics.
|
|
||||||
|
|
||||||
Second, a user who has opted into using a prerelease version has
|
|
||||||
clearly indicated the intent to use *that specific* set of
|
|
||||||
alpha/beta/rc versions. By including a prerelease tag in the range,
|
|
||||||
the user is indicating that they are aware of the risk. However, it
|
|
||||||
is still not appropriate to assume that they have opted into taking a
|
|
||||||
similar risk on the *next* set of prerelease versions.
|
|
||||||
|
|
||||||
Note that this behavior can be suppressed (treating all prerelease
|
|
||||||
versions as if they were normal versions, for the purpose of range
|
|
||||||
matching) by setting the `includePrerelease` flag on the options
|
|
||||||
object to any
|
|
||||||
[functions](https://github.com/npm/node-semver#functions) that do
|
|
||||||
range matching.
|
|
||||||
|
|
||||||
#### Prerelease Identifiers
|
|
||||||
|
|
||||||
The method `.inc` takes an additional `identifier` string argument that
|
|
||||||
will append the value of the string as a prerelease identifier:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
semver.inc('1.2.3', 'prerelease', 'beta')
|
|
||||||
// '1.2.4-beta.0'
|
|
||||||
```
|
|
||||||
|
|
||||||
command-line example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ semver 1.2.3 -i prerelease --preid beta
|
|
||||||
1.2.4-beta.0
|
|
||||||
```
|
|
||||||
|
|
||||||
Which then can be used to increment further:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ semver 1.2.4-beta.0 -i prerelease
|
|
||||||
1.2.4-beta.1
|
|
||||||
```
|
|
||||||
|
|
||||||
### Advanced Range Syntax
|
|
||||||
|
|
||||||
Advanced range syntax desugars to primitive comparators in
|
|
||||||
deterministic ways.
|
|
||||||
|
|
||||||
Advanced ranges may be combined in the same way as primitive
|
|
||||||
comparators using white space or `||`.
|
|
||||||
|
|
||||||
#### Hyphen Ranges `X.Y.Z - A.B.C`
|
|
||||||
|
|
||||||
Specifies an inclusive set.
|
|
||||||
|
|
||||||
* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`
|
|
||||||
|
|
||||||
If a partial version is provided as the first version in the inclusive
|
|
||||||
range, then the missing pieces are replaced with zeroes.
|
|
||||||
|
|
||||||
* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4`
|
|
||||||
|
|
||||||
If a partial version is provided as the second version in the
|
|
||||||
inclusive range, then all versions that start with the supplied parts
|
|
||||||
of the tuple are accepted, but nothing that would be greater than the
|
|
||||||
provided tuple parts.
|
|
||||||
|
|
||||||
* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0`
|
|
||||||
* `1.2.3 - 2` := `>=1.2.3 <3.0.0`
|
|
||||||
|
|
||||||
#### X-Ranges `1.2.x` `1.X` `1.2.*` `*`
|
|
||||||
|
|
||||||
Any of `X`, `x`, or `*` may be used to "stand in" for one of the
|
|
||||||
numeric values in the `[major, minor, patch]` tuple.
|
|
||||||
|
|
||||||
* `*` := `>=0.0.0` (Any version satisfies)
|
|
||||||
* `1.x` := `>=1.0.0 <2.0.0` (Matching major version)
|
|
||||||
* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions)
|
|
||||||
|
|
||||||
A partial version range is treated as an X-Range, so the special
|
|
||||||
character is in fact optional.
|
|
||||||
|
|
||||||
* `""` (empty string) := `*` := `>=0.0.0`
|
|
||||||
* `1` := `1.x.x` := `>=1.0.0 <2.0.0`
|
|
||||||
* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0`
|
|
||||||
|
|
||||||
#### Tilde Ranges `~1.2.3` `~1.2` `~1`
|
|
||||||
|
|
||||||
Allows patch-level changes if a minor version is specified on the
|
|
||||||
comparator. Allows minor-level changes if not.
|
|
||||||
|
|
||||||
* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0`
|
|
||||||
* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`)
|
|
||||||
* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`)
|
|
||||||
* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0`
|
|
||||||
* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`)
|
|
||||||
* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`)
|
|
||||||
* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in
|
|
||||||
the `1.2.3` version will be allowed, if they are greater than or
|
|
||||||
equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
|
|
||||||
`1.2.4-beta.2` would not, because it is a prerelease of a
|
|
||||||
different `[major, minor, patch]` tuple.
|
|
||||||
|
|
||||||
#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4`
|
|
||||||
|
|
||||||
Allows changes that do not modify the left-most non-zero element in the
|
|
||||||
`[major, minor, patch]` tuple. In other words, this allows patch and
|
|
||||||
minor updates for versions `1.0.0` and above, patch updates for
|
|
||||||
versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`.
|
|
||||||
|
|
||||||
Many authors treat a `0.x` version as if the `x` were the major
|
|
||||||
"breaking-change" indicator.
|
|
||||||
|
|
||||||
Caret ranges are ideal when an author may make breaking changes
|
|
||||||
between `0.2.4` and `0.3.0` releases, which is a common practice.
|
|
||||||
However, it presumes that there will *not* be breaking changes between
|
|
||||||
`0.2.4` and `0.2.5`. It allows for changes that are presumed to be
|
|
||||||
additive (but non-breaking), according to commonly observed practices.
|
|
||||||
|
|
||||||
* `^1.2.3` := `>=1.2.3 <2.0.0`
|
|
||||||
* `^0.2.3` := `>=0.2.3 <0.3.0`
|
|
||||||
* `^0.0.3` := `>=0.0.3 <0.0.4`
|
|
||||||
* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in
|
|
||||||
the `1.2.3` version will be allowed, if they are greater than or
|
|
||||||
equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
|
|
||||||
`1.2.4-beta.2` would not, because it is a prerelease of a
|
|
||||||
different `[major, minor, patch]` tuple.
|
|
||||||
* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4` Note that prereleases in the
|
|
||||||
`0.0.3` version *only* will be allowed, if they are greater than or
|
|
||||||
equal to `beta`. So, `0.0.3-pr.2` would be allowed.
|
|
||||||
|
|
||||||
When parsing caret ranges, a missing `patch` value desugars to the
|
|
||||||
number `0`, but will allow flexibility within that value, even if the
|
|
||||||
major and minor versions are both `0`.
|
|
||||||
|
|
||||||
* `^1.2.x` := `>=1.2.0 <2.0.0`
|
|
||||||
* `^0.0.x` := `>=0.0.0 <0.1.0`
|
|
||||||
* `^0.0` := `>=0.0.0 <0.1.0`
|
|
||||||
|
|
||||||
A missing `minor` and `patch` values will desugar to zero, but also
|
|
||||||
allow flexibility within those values, even if the major version is
|
|
||||||
zero.
|
|
||||||
|
|
||||||
* `^1.x` := `>=1.0.0 <2.0.0`
|
|
||||||
* `^0.x` := `>=0.0.0 <1.0.0`
|
|
||||||
|
|
||||||
### Range Grammar
|
|
||||||
|
|
||||||
Putting all this together, here is a Backus-Naur grammar for ranges,
|
|
||||||
for the benefit of parser authors:
|
|
||||||
|
|
||||||
```bnf
|
|
||||||
range-set ::= range ( logical-or range ) *
|
|
||||||
logical-or ::= ( ' ' ) * '||' ( ' ' ) *
|
|
||||||
range ::= hyphen | simple ( ' ' simple ) * | ''
|
|
||||||
hyphen ::= partial ' - ' partial
|
|
||||||
simple ::= primitive | partial | tilde | caret
|
|
||||||
primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
|
|
||||||
partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
|
|
||||||
xr ::= 'x' | 'X' | '*' | nr
|
|
||||||
nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) *
|
|
||||||
tilde ::= '~' partial
|
|
||||||
caret ::= '^' partial
|
|
||||||
qualifier ::= ( '-' pre )? ( '+' build )?
|
|
||||||
pre ::= parts
|
|
||||||
build ::= parts
|
|
||||||
parts ::= part ( '.' part ) *
|
|
||||||
part ::= nr | [-0-9A-Za-z]+
|
|
||||||
```
|
|
||||||
|
|
||||||
## Functions
|
|
||||||
|
|
||||||
All methods and classes take a final `options` object argument. All
|
|
||||||
options in this object are `false` by default. The options supported
|
|
||||||
are:
|
|
||||||
|
|
||||||
- `loose` Be more forgiving about not-quite-valid semver strings.
|
|
||||||
(Any resulting output will always be 100% strict compliant, of
|
|
||||||
course.) For backwards compatibility reasons, if the `options`
|
|
||||||
argument is a boolean value instead of an object, it is interpreted
|
|
||||||
to be the `loose` param.
|
|
||||||
- `includePrerelease` Set to suppress the [default
|
|
||||||
behavior](https://github.com/npm/node-semver#prerelease-tags) of
|
|
||||||
excluding prerelease tagged versions from ranges unless they are
|
|
||||||
explicitly opted into.
|
|
||||||
|
|
||||||
Strict-mode Comparators and Ranges will be strict about the SemVer
|
|
||||||
strings that they parse.
|
|
||||||
|
|
||||||
* `valid(v)`: Return the parsed version, or null if it's not valid.
|
|
||||||
* `inc(v, release)`: Return the version incremented by the release
|
|
||||||
type (`major`, `premajor`, `minor`, `preminor`, `patch`,
|
|
||||||
`prepatch`, or `prerelease`), or null if it's not valid
|
|
||||||
* `premajor` in one call will bump the version up to the next major
|
|
||||||
version and down to a prerelease of that major version.
|
|
||||||
`preminor`, and `prepatch` work the same way.
|
|
||||||
* If called from a non-prerelease version, the `prerelease` will work the
|
|
||||||
same as `prepatch`. It increments the patch version, then makes a
|
|
||||||
prerelease. If the input version is already a prerelease it simply
|
|
||||||
increments it.
|
|
||||||
* `prerelease(v)`: Returns an array of prerelease components, or null
|
|
||||||
if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]`
|
|
||||||
* `major(v)`: Return the major version number.
|
|
||||||
* `minor(v)`: Return the minor version number.
|
|
||||||
* `patch(v)`: Return the patch version number.
|
|
||||||
* `intersects(r1, r2, loose)`: Return true if the two supplied ranges
|
|
||||||
or comparators intersect.
|
|
||||||
* `parse(v)`: Attempt to parse a string as a semantic version, returning either
|
|
||||||
a `SemVer` object or `null`.
|
|
||||||
|
|
||||||
### Comparison
|
|
||||||
|
|
||||||
* `gt(v1, v2)`: `v1 > v2`
|
|
||||||
* `gte(v1, v2)`: `v1 >= v2`
|
|
||||||
* `lt(v1, v2)`: `v1 < v2`
|
|
||||||
* `lte(v1, v2)`: `v1 <= v2`
|
|
||||||
* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent,
|
|
||||||
even if they're not the exact same string. You already know how to
|
|
||||||
compare strings.
|
|
||||||
* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`.
|
|
||||||
* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call
|
|
||||||
the corresponding function above. `"==="` and `"!=="` do simple
|
|
||||||
string comparison, but are included for completeness. Throws if an
|
|
||||||
invalid comparison string is provided.
|
|
||||||
* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if
|
|
||||||
`v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
|
|
||||||
* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions
|
|
||||||
in descending order when passed to `Array.sort()`.
|
|
||||||
* `compareBuild(v1, v2)`: The same as `compare` but considers `build` when two versions
|
|
||||||
are equal. Sorts in ascending order if passed to `Array.sort()`.
|
|
||||||
`v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
|
|
||||||
* `diff(v1, v2)`: Returns difference between two versions by the release type
|
|
||||||
(`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`),
|
|
||||||
or null if the versions are the same.
|
|
||||||
|
|
||||||
### Comparators
|
|
||||||
|
|
||||||
* `intersects(comparator)`: Return true if the comparators intersect
|
|
||||||
|
|
||||||
### Ranges
|
|
||||||
|
|
||||||
* `validRange(range)`: Return the valid range or null if it's not valid
|
|
||||||
* `satisfies(version, range)`: Return true if the version satisfies the
|
|
||||||
range.
|
|
||||||
* `maxSatisfying(versions, range)`: Return the highest version in the list
|
|
||||||
that satisfies the range, or `null` if none of them do.
|
|
||||||
* `minSatisfying(versions, range)`: Return the lowest version in the list
|
|
||||||
that satisfies the range, or `null` if none of them do.
|
|
||||||
* `minVersion(range)`: Return the lowest version that can possibly match
|
|
||||||
the given range.
|
|
||||||
* `gtr(version, range)`: Return `true` if version is greater than all the
|
|
||||||
versions possible in the range.
|
|
||||||
* `ltr(version, range)`: Return `true` if version is less than all the
|
|
||||||
versions possible in the range.
|
|
||||||
* `outside(version, range, hilo)`: Return true if the version is outside
|
|
||||||
the bounds of the range in either the high or low direction. The
|
|
||||||
`hilo` argument must be either the string `'>'` or `'<'`. (This is
|
|
||||||
the function called by `gtr` and `ltr`.)
|
|
||||||
* `intersects(range)`: Return true if any of the ranges comparators intersect
|
|
||||||
|
|
||||||
Note that, since ranges may be non-contiguous, a version might not be
|
|
||||||
greater than a range, less than a range, *or* satisfy a range! For
|
|
||||||
example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`
|
|
||||||
until `2.0.0`, so the version `1.2.10` would not be greater than the
|
|
||||||
range (because `2.0.1` satisfies, which is higher), nor less than the
|
|
||||||
range (since `1.2.8` satisfies, which is lower), and it also does not
|
|
||||||
satisfy the range.
|
|
||||||
|
|
||||||
If you want to know if a version satisfies or does not satisfy a
|
|
||||||
range, use the `satisfies(version, range)` function.
|
|
||||||
|
|
||||||
### Coercion
|
|
||||||
|
|
||||||
* `coerce(version, options)`: Coerces a string to semver if possible
|
|
||||||
|
|
||||||
This aims to provide a very forgiving translation of a non-semver string to
|
|
||||||
semver. It looks for the first digit in a string, and consumes all
|
|
||||||
remaining characters which satisfy at least a partial semver (e.g., `1`,
|
|
||||||
`1.2`, `1.2.3`) up to the max permitted length (256 characters). Longer
|
|
||||||
versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`). All
|
|
||||||
surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes
|
|
||||||
`3.4.0`). Only text which lacks digits will fail coercion (`version one`
|
|
||||||
is not valid). The maximum length for any semver component considered for
|
|
||||||
coercion is 16 characters; longer components will be ignored
|
|
||||||
(`10000000000000000.4.7.4` becomes `4.7.4`). The maximum value for any
|
|
||||||
semver component is `Integer.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value
|
|
||||||
components are invalid (`9999999999999999.4.7.4` is likely invalid).
|
|
||||||
|
|
||||||
If the `options.rtl` flag is set, then `coerce` will return the right-most
|
|
||||||
coercible tuple that does not share an ending index with a longer coercible
|
|
||||||
tuple. For example, `1.2.3.4` will return `2.3.4` in rtl mode, not
|
|
||||||
`4.0.0`. `1.2.3/4` will return `4.0.0`, because the `4` is not a part of
|
|
||||||
any other overlapping SemVer tuple.
|
|
||||||
|
|
||||||
### Clean
|
|
||||||
|
|
||||||
* `clean(version)`: Clean a string to be a valid semver if possible
|
|
||||||
|
|
||||||
This will return a cleaned and trimmed semver version. If the provided version is not valid a null will be returned. This does not work for ranges.
|
|
||||||
|
|
||||||
ex.
|
|
||||||
* `s.clean(' = v 2.1.5foo')`: `null`
|
|
||||||
* `s.clean(' = v 2.1.5foo', { loose: true })`: `'2.1.5-foo'`
|
|
||||||
* `s.clean(' = v 2.1.5-foo')`: `null`
|
|
||||||
* `s.clean(' = v 2.1.5-foo', { loose: true })`: `'2.1.5-foo'`
|
|
||||||
* `s.clean('=v2.1.5')`: `'2.1.5'`
|
|
||||||
* `s.clean(' =v2.1.5')`: `2.1.5`
|
|
||||||
* `s.clean(' 2.1.5 ')`: `'2.1.5'`
|
|
||||||
* `s.clean('~1.0.0')`: `null`
|
|
||||||
174
backend/node_modules/@babel/helper-compilation-targets/node_modules/semver/bin/semver.js
generated
vendored
174
backend/node_modules/@babel/helper-compilation-targets/node_modules/semver/bin/semver.js
generated
vendored
|
|
@ -1,174 +0,0 @@
|
||||||
#!/usr/bin/env node
|
|
||||||
// Standalone semver comparison program.
|
|
||||||
// Exits successfully and prints matching version(s) if
|
|
||||||
// any supplied version is valid and passes all tests.
|
|
||||||
|
|
||||||
var argv = process.argv.slice(2)
|
|
||||||
|
|
||||||
var versions = []
|
|
||||||
|
|
||||||
var range = []
|
|
||||||
|
|
||||||
var inc = null
|
|
||||||
|
|
||||||
var version = require('../package.json').version
|
|
||||||
|
|
||||||
var loose = false
|
|
||||||
|
|
||||||
var includePrerelease = false
|
|
||||||
|
|
||||||
var coerce = false
|
|
||||||
|
|
||||||
var rtl = false
|
|
||||||
|
|
||||||
var identifier
|
|
||||||
|
|
||||||
var semver = require('../semver')
|
|
||||||
|
|
||||||
var reverse = false
|
|
||||||
|
|
||||||
var options = {}
|
|
||||||
|
|
||||||
main()
|
|
||||||
|
|
||||||
function main () {
|
|
||||||
if (!argv.length) return help()
|
|
||||||
while (argv.length) {
|
|
||||||
var a = argv.shift()
|
|
||||||
var indexOfEqualSign = a.indexOf('=')
|
|
||||||
if (indexOfEqualSign !== -1) {
|
|
||||||
a = a.slice(0, indexOfEqualSign)
|
|
||||||
argv.unshift(a.slice(indexOfEqualSign + 1))
|
|
||||||
}
|
|
||||||
switch (a) {
|
|
||||||
case '-rv': case '-rev': case '--rev': case '--reverse':
|
|
||||||
reverse = true
|
|
||||||
break
|
|
||||||
case '-l': case '--loose':
|
|
||||||
loose = true
|
|
||||||
break
|
|
||||||
case '-p': case '--include-prerelease':
|
|
||||||
includePrerelease = true
|
|
||||||
break
|
|
||||||
case '-v': case '--version':
|
|
||||||
versions.push(argv.shift())
|
|
||||||
break
|
|
||||||
case '-i': case '--inc': case '--increment':
|
|
||||||
switch (argv[0]) {
|
|
||||||
case 'major': case 'minor': case 'patch': case 'prerelease':
|
|
||||||
case 'premajor': case 'preminor': case 'prepatch':
|
|
||||||
inc = argv.shift()
|
|
||||||
break
|
|
||||||
default:
|
|
||||||
inc = 'patch'
|
|
||||||
break
|
|
||||||
}
|
|
||||||
break
|
|
||||||
case '--preid':
|
|
||||||
identifier = argv.shift()
|
|
||||||
break
|
|
||||||
case '-r': case '--range':
|
|
||||||
range.push(argv.shift())
|
|
||||||
break
|
|
||||||
case '-c': case '--coerce':
|
|
||||||
coerce = true
|
|
||||||
break
|
|
||||||
case '--rtl':
|
|
||||||
rtl = true
|
|
||||||
break
|
|
||||||
case '--ltr':
|
|
||||||
rtl = false
|
|
||||||
break
|
|
||||||
case '-h': case '--help': case '-?':
|
|
||||||
return help()
|
|
||||||
default:
|
|
||||||
versions.push(a)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var options = { loose: loose, includePrerelease: includePrerelease, rtl: rtl }
|
|
||||||
|
|
||||||
versions = versions.map(function (v) {
|
|
||||||
return coerce ? (semver.coerce(v, options) || { version: v }).version : v
|
|
||||||
}).filter(function (v) {
|
|
||||||
return semver.valid(v)
|
|
||||||
})
|
|
||||||
if (!versions.length) return fail()
|
|
||||||
if (inc && (versions.length !== 1 || range.length)) { return failInc() }
|
|
||||||
|
|
||||||
for (var i = 0, l = range.length; i < l; i++) {
|
|
||||||
versions = versions.filter(function (v) {
|
|
||||||
return semver.satisfies(v, range[i], options)
|
|
||||||
})
|
|
||||||
if (!versions.length) return fail()
|
|
||||||
}
|
|
||||||
return success(versions)
|
|
||||||
}
|
|
||||||
|
|
||||||
function failInc () {
|
|
||||||
console.error('--inc can only be used on a single version with no range')
|
|
||||||
fail()
|
|
||||||
}
|
|
||||||
|
|
||||||
function fail () { process.exit(1) }
|
|
||||||
|
|
||||||
function success () {
|
|
||||||
var compare = reverse ? 'rcompare' : 'compare'
|
|
||||||
versions.sort(function (a, b) {
|
|
||||||
return semver[compare](a, b, options)
|
|
||||||
}).map(function (v) {
|
|
||||||
return semver.clean(v, options)
|
|
||||||
}).map(function (v) {
|
|
||||||
return inc ? semver.inc(v, inc, options, identifier) : v
|
|
||||||
}).forEach(function (v, i, _) { console.log(v) })
|
|
||||||
}
|
|
||||||
|
|
||||||
function help () {
|
|
||||||
console.log(['SemVer ' + version,
|
|
||||||
'',
|
|
||||||
'A JavaScript implementation of the https://semver.org/ specification',
|
|
||||||
'Copyright Isaac Z. Schlueter',
|
|
||||||
'',
|
|
||||||
'Usage: semver [options] <version> [<version> [...]]',
|
|
||||||
'Prints valid versions sorted by SemVer precedence',
|
|
||||||
'',
|
|
||||||
'Options:',
|
|
||||||
'-r --range <range>',
|
|
||||||
' Print versions that match the specified range.',
|
|
||||||
'',
|
|
||||||
'-i --increment [<level>]',
|
|
||||||
' Increment a version by the specified level. Level can',
|
|
||||||
' be one of: major, minor, patch, premajor, preminor,',
|
|
||||||
" prepatch, or prerelease. Default level is 'patch'.",
|
|
||||||
' Only one version may be specified.',
|
|
||||||
'',
|
|
||||||
'--preid <identifier>',
|
|
||||||
' Identifier to be used to prefix premajor, preminor,',
|
|
||||||
' prepatch or prerelease version increments.',
|
|
||||||
'',
|
|
||||||
'-l --loose',
|
|
||||||
' Interpret versions and ranges loosely',
|
|
||||||
'',
|
|
||||||
'-p --include-prerelease',
|
|
||||||
' Always include prerelease versions in range matching',
|
|
||||||
'',
|
|
||||||
'-c --coerce',
|
|
||||||
' Coerce a string into SemVer if possible',
|
|
||||||
' (does not imply --loose)',
|
|
||||||
'',
|
|
||||||
'--rtl',
|
|
||||||
' Coerce version strings right to left',
|
|
||||||
'',
|
|
||||||
'--ltr',
|
|
||||||
' Coerce version strings left to right (default)',
|
|
||||||
'',
|
|
||||||
'Program exits successfully if any valid version satisfies',
|
|
||||||
'all supplied ranges, and prints all satisfying versions.',
|
|
||||||
'',
|
|
||||||
'If no satisfying versions are found, then exits failure.',
|
|
||||||
'',
|
|
||||||
'Versions are printed in ascending order, so supplying',
|
|
||||||
'multiple versions to the utility will just sort them.'
|
|
||||||
].join('\n'))
|
|
||||||
}
|
|
||||||
38
backend/node_modules/@babel/helper-compilation-targets/node_modules/semver/package.json
generated
vendored
38
backend/node_modules/@babel/helper-compilation-targets/node_modules/semver/package.json
generated
vendored
|
|
@ -1,38 +0,0 @@
|
||||||
{
|
|
||||||
"name": "semver",
|
|
||||||
"version": "6.3.1",
|
|
||||||
"description": "The semantic version parser used by npm.",
|
|
||||||
"main": "semver.js",
|
|
||||||
"scripts": {
|
|
||||||
"test": "tap test/ --100 --timeout=30",
|
|
||||||
"lint": "echo linting disabled",
|
|
||||||
"postlint": "template-oss-check",
|
|
||||||
"template-oss-apply": "template-oss-apply --force",
|
|
||||||
"lintfix": "npm run lint -- --fix",
|
|
||||||
"snap": "tap test/ --100 --timeout=30",
|
|
||||||
"posttest": "npm run lint"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@npmcli/template-oss": "4.17.0",
|
|
||||||
"tap": "^12.7.0"
|
|
||||||
},
|
|
||||||
"license": "ISC",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/npm/node-semver.git"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"semver": "./bin/semver.js"
|
|
||||||
},
|
|
||||||
"files": [
|
|
||||||
"bin",
|
|
||||||
"range.bnf",
|
|
||||||
"semver.js"
|
|
||||||
],
|
|
||||||
"author": "GitHub Inc.",
|
|
||||||
"templateOSS": {
|
|
||||||
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
|
|
||||||
"content": "./scripts/template-oss",
|
|
||||||
"version": "4.17.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
1643
backend/node_modules/@babel/helper-compilation-targets/node_modules/semver/semver.js
generated
vendored
1643
backend/node_modules/@babel/helper-compilation-targets/node_modules/semver/semver.js
generated
vendored
File diff suppressed because it is too large
Load diff
19
backend/node_modules/@babel/helper-create-class-features-plugin/README.md
generated
vendored
19
backend/node_modules/@babel/helper-create-class-features-plugin/README.md
generated
vendored
|
|
@ -1,19 +0,0 @@
|
||||||
# @babel/helper-create-class-features-plugin
|
|
||||||
|
|
||||||
> Compile class public and private fields, private methods and decorators to ES6
|
|
||||||
|
|
||||||
See our website [@babel/helper-create-class-features-plugin](https://babeljs.io/docs/babel-helper-create-class-features-plugin) for more information.
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
Using npm:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install --save @babel/helper-create-class-features-plugin
|
|
||||||
```
|
|
||||||
|
|
||||||
or using yarn:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add @babel/helper-create-class-features-plugin
|
|
||||||
```
|
|
||||||
124
backend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators-2018-09.js
generated
vendored
124
backend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators-2018-09.js
generated
vendored
|
|
@ -1,124 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.buildDecoratedClass = buildDecoratedClass;
|
|
||||||
var _core = require("@babel/core");
|
|
||||||
var _helperReplaceSupers = require("@babel/helper-replace-supers");
|
|
||||||
function prop(key, value) {
|
|
||||||
if (!value) return null;
|
|
||||||
return _core.types.objectProperty(_core.types.identifier(key), value);
|
|
||||||
}
|
|
||||||
function method(key, body) {
|
|
||||||
return _core.types.objectMethod("method", _core.types.identifier(key), [], _core.types.blockStatement(body));
|
|
||||||
}
|
|
||||||
function takeDecorators(node) {
|
|
||||||
let result;
|
|
||||||
if (node.decorators && node.decorators.length > 0) {
|
|
||||||
result = _core.types.arrayExpression(node.decorators.map(decorator => decorator.expression));
|
|
||||||
}
|
|
||||||
node.decorators = undefined;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
function getKey(node) {
|
|
||||||
if (node.computed) {
|
|
||||||
return node.key;
|
|
||||||
} else if (_core.types.isIdentifier(node.key)) {
|
|
||||||
return _core.types.stringLiteral(node.key.name);
|
|
||||||
} else {
|
|
||||||
return _core.types.stringLiteral(String(node.key.value));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function extractElementDescriptor(file, classRef, superRef, path) {
|
|
||||||
const isMethod = path.isClassMethod();
|
|
||||||
if (path.isPrivate()) {
|
|
||||||
throw path.buildCodeFrameError(`Private ${isMethod ? "methods" : "fields"} in decorated classes are not supported yet.`);
|
|
||||||
}
|
|
||||||
if (path.node.type === "ClassAccessorProperty") {
|
|
||||||
throw path.buildCodeFrameError(`Accessor properties are not supported in 2018-09 decorator transform, please specify { "version": "2021-12" } instead.`);
|
|
||||||
}
|
|
||||||
if (path.node.type === "StaticBlock") {
|
|
||||||
throw path.buildCodeFrameError(`Static blocks are not supported in 2018-09 decorator transform, please specify { "version": "2021-12" } instead.`);
|
|
||||||
}
|
|
||||||
const {
|
|
||||||
node,
|
|
||||||
scope
|
|
||||||
} = path;
|
|
||||||
if (!path.isTSDeclareMethod()) {
|
|
||||||
new _helperReplaceSupers.default({
|
|
||||||
methodPath: path,
|
|
||||||
objectRef: classRef,
|
|
||||||
superRef,
|
|
||||||
file,
|
|
||||||
refToPreserve: classRef
|
|
||||||
}).replace();
|
|
||||||
}
|
|
||||||
const properties = [prop("kind", _core.types.stringLiteral(_core.types.isClassMethod(node) ? node.kind : "field")), prop("decorators", takeDecorators(node)), prop("static", node.static && _core.types.booleanLiteral(true)), prop("key", getKey(node))].filter(Boolean);
|
|
||||||
if (isMethod) {
|
|
||||||
var _path$ensureFunctionN;
|
|
||||||
(_path$ensureFunctionN = path.ensureFunctionName) != null ? _path$ensureFunctionN : path.ensureFunctionName = require("@babel/traverse").NodePath.prototype.ensureFunctionName;
|
|
||||||
path.ensureFunctionName(false);
|
|
||||||
properties.push(prop("value", _core.types.toExpression(path.node)));
|
|
||||||
} else if (_core.types.isClassProperty(node) && node.value) {
|
|
||||||
properties.push(method("value", _core.template.statements.ast`return ${node.value}`));
|
|
||||||
} else {
|
|
||||||
properties.push(prop("value", scope.buildUndefinedNode()));
|
|
||||||
}
|
|
||||||
path.remove();
|
|
||||||
return _core.types.objectExpression(properties);
|
|
||||||
}
|
|
||||||
function addDecorateHelper(file) {
|
|
||||||
return file.addHelper("decorate");
|
|
||||||
}
|
|
||||||
function buildDecoratedClass(ref, path, elements, file) {
|
|
||||||
const {
|
|
||||||
node,
|
|
||||||
scope
|
|
||||||
} = path;
|
|
||||||
const initializeId = scope.generateUidIdentifier("initialize");
|
|
||||||
const isDeclaration = node.id && path.isDeclaration();
|
|
||||||
const isStrict = path.isInStrictMode();
|
|
||||||
const {
|
|
||||||
superClass
|
|
||||||
} = node;
|
|
||||||
node.type = "ClassDeclaration";
|
|
||||||
if (!node.id) node.id = _core.types.cloneNode(ref);
|
|
||||||
let superId;
|
|
||||||
if (superClass) {
|
|
||||||
superId = scope.generateUidIdentifierBasedOnNode(node.superClass, "super");
|
|
||||||
node.superClass = superId;
|
|
||||||
}
|
|
||||||
const classDecorators = takeDecorators(node);
|
|
||||||
const definitions = _core.types.arrayExpression(elements.filter(element => !element.node.abstract && element.node.type !== "TSIndexSignature").map(path => extractElementDescriptor(file, node.id, superId, path)));
|
|
||||||
const wrapperCall = _core.template.expression.ast`
|
|
||||||
${addDecorateHelper(file)}(
|
|
||||||
${classDecorators || _core.types.nullLiteral()},
|
|
||||||
function (${initializeId}, ${superClass ? _core.types.cloneNode(superId) : null}) {
|
|
||||||
${node}
|
|
||||||
return { F: ${_core.types.cloneNode(node.id)}, d: ${definitions} };
|
|
||||||
},
|
|
||||||
${superClass}
|
|
||||||
)
|
|
||||||
`;
|
|
||||||
if (!isStrict) {
|
|
||||||
wrapperCall.arguments[1].body.directives.push(_core.types.directive(_core.types.directiveLiteral("use strict")));
|
|
||||||
}
|
|
||||||
let replacement = wrapperCall;
|
|
||||||
let classPathDesc = "arguments.1.body.body.0";
|
|
||||||
if (isDeclaration) {
|
|
||||||
replacement = _core.template.statement.ast`let ${ref} = ${wrapperCall}`;
|
|
||||||
classPathDesc = "declarations.0.init." + classPathDesc;
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
instanceNodes: [_core.template.statement.ast`
|
|
||||||
${_core.types.cloneNode(initializeId)}(this)
|
|
||||||
`],
|
|
||||||
wrapClass(path) {
|
|
||||||
path.replaceWith(replacement);
|
|
||||||
return path.get(classPathDesc);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
//# sourceMappingURL=decorators-2018-09.js.map
|
|
||||||
File diff suppressed because one or more lines are too long
1310
backend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js
generated
vendored
1310
backend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js
generated
vendored
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
137
backend/node_modules/@babel/helper-create-class-features-plugin/lib/features.js
generated
vendored
137
backend/node_modules/@babel/helper-create-class-features-plugin/lib/features.js
generated
vendored
|
|
@ -1,137 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.FEATURES = void 0;
|
|
||||||
exports.enableFeature = enableFeature;
|
|
||||||
exports.isLoose = isLoose;
|
|
||||||
exports.shouldTransform = shouldTransform;
|
|
||||||
var _decorators = require("./decorators.js");
|
|
||||||
const FEATURES = exports.FEATURES = Object.freeze({
|
|
||||||
fields: 1 << 1,
|
|
||||||
privateMethods: 1 << 2,
|
|
||||||
decorators: 1 << 3,
|
|
||||||
privateIn: 1 << 4,
|
|
||||||
staticBlocks: 1 << 5
|
|
||||||
});
|
|
||||||
const featuresSameLoose = new Map([[FEATURES.fields, "@babel/plugin-transform-class-properties"], [FEATURES.privateMethods, "@babel/plugin-transform-private-methods"], [FEATURES.privateIn, "@babel/plugin-transform-private-property-in-object"]]);
|
|
||||||
const featuresKey = "@babel/plugin-class-features/featuresKey";
|
|
||||||
const looseKey = "@babel/plugin-class-features/looseKey";
|
|
||||||
var looseLowPriorityKey = "@babel/plugin-class-features/looseLowPriorityKey/#__internal__@babel/preset-env__please-overwrite-loose-instead-of-throwing";
|
|
||||||
var canIgnoreLoose = function (file, feature) {
|
|
||||||
return !!(file.get(looseLowPriorityKey) & feature);
|
|
||||||
};
|
|
||||||
function enableFeature(file, feature, loose) {
|
|
||||||
if (!hasFeature(file, feature) || canIgnoreLoose(file, feature)) {
|
|
||||||
file.set(featuresKey, file.get(featuresKey) | feature);
|
|
||||||
if (loose === "#__internal__@babel/preset-env__prefer-true-but-false-is-ok-if-it-prevents-an-error") {
|
|
||||||
setLoose(file, feature, true);
|
|
||||||
file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) | feature);
|
|
||||||
} else if (loose === "#__internal__@babel/preset-env__prefer-false-but-true-is-ok-if-it-prevents-an-error") {
|
|
||||||
setLoose(file, feature, false);
|
|
||||||
file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) | feature);
|
|
||||||
} else {
|
|
||||||
setLoose(file, feature, loose);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let resolvedLoose;
|
|
||||||
for (const [mask, name] of featuresSameLoose) {
|
|
||||||
if (!hasFeature(file, mask)) continue;
|
|
||||||
if (canIgnoreLoose(file, mask)) continue;
|
|
||||||
const loose = isLoose(file, mask);
|
|
||||||
if (resolvedLoose === !loose) {
|
|
||||||
throw new Error("'loose' mode configuration must be the same for @babel/plugin-transform-class-properties, " + "@babel/plugin-transform-private-methods and " + "@babel/plugin-transform-private-property-in-object (when they are enabled)." + "\n\n" + getBabelShowConfigForHint(file));
|
|
||||||
} else {
|
|
||||||
resolvedLoose = loose;
|
|
||||||
var higherPriorityPluginName = name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (resolvedLoose !== undefined) {
|
|
||||||
for (const [mask, name] of featuresSameLoose) {
|
|
||||||
if (hasFeature(file, mask) && isLoose(file, mask) !== resolvedLoose) {
|
|
||||||
setLoose(file, mask, resolvedLoose);
|
|
||||||
console.warn(`Though the "loose" option was set to "${!resolvedLoose}" in your @babel/preset-env ` + `config, it will not be used for ${name} since the "loose" mode option was set to ` + `"${resolvedLoose}" for ${higherPriorityPluginName}.\nThe "loose" option must be the ` + `same for @babel/plugin-transform-class-properties, @babel/plugin-transform-private-methods ` + `and @babel/plugin-transform-private-property-in-object (when they are enabled): you can ` + `silence this warning by explicitly adding\n` + `\t["${name}", { "loose": ${resolvedLoose} }]\n` + `to the "plugins" section of your Babel config.` + "\n\n" + getBabelShowConfigForHint(file));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function getBabelShowConfigForHint(file) {
|
|
||||||
let {
|
|
||||||
filename
|
|
||||||
} = file.opts;
|
|
||||||
if (!filename || filename === "unknown") {
|
|
||||||
filename = "[name of the input file]";
|
|
||||||
}
|
|
||||||
return `\
|
|
||||||
If you already set the same 'loose' mode for these plugins in your config, it's possible that they \
|
|
||||||
are enabled multiple times with different options.
|
|
||||||
You can re-run Babel with the BABEL_SHOW_CONFIG_FOR environment variable to show the loaded \
|
|
||||||
configuration:
|
|
||||||
\tnpx cross-env BABEL_SHOW_CONFIG_FOR=${filename} <your build command>
|
|
||||||
See https://babeljs.io/docs/configuration#print-effective-configs for more info.`;
|
|
||||||
}
|
|
||||||
function hasFeature(file, feature) {
|
|
||||||
return !!(file.get(featuresKey) & feature);
|
|
||||||
}
|
|
||||||
function isLoose(file, feature) {
|
|
||||||
return !!(file.get(looseKey) & feature);
|
|
||||||
}
|
|
||||||
function setLoose(file, feature, loose) {
|
|
||||||
if (loose) file.set(looseKey, file.get(looseKey) | feature);else file.set(looseKey, file.get(looseKey) & ~feature);
|
|
||||||
file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) & ~feature);
|
|
||||||
}
|
|
||||||
function shouldTransform(path, file) {
|
|
||||||
let decoratorPath = null;
|
|
||||||
let publicFieldPath = null;
|
|
||||||
let privateFieldPath = null;
|
|
||||||
let privateMethodPath = null;
|
|
||||||
let staticBlockPath = null;
|
|
||||||
if ((0, _decorators.hasOwnDecorators)(path.node)) {
|
|
||||||
decoratorPath = path.get("decorators.0");
|
|
||||||
}
|
|
||||||
for (const el of path.get("body.body")) {
|
|
||||||
if (!decoratorPath && (0, _decorators.hasOwnDecorators)(el.node)) {
|
|
||||||
decoratorPath = el.get("decorators.0");
|
|
||||||
}
|
|
||||||
if (!publicFieldPath && el.isClassProperty()) {
|
|
||||||
publicFieldPath = el;
|
|
||||||
}
|
|
||||||
if (!privateFieldPath && el.isClassPrivateProperty()) {
|
|
||||||
privateFieldPath = el;
|
|
||||||
}
|
|
||||||
if (!privateMethodPath && el.isClassPrivateMethod != null && el.isClassPrivateMethod()) {
|
|
||||||
privateMethodPath = el;
|
|
||||||
}
|
|
||||||
if (!staticBlockPath && el.isStaticBlock != null && el.isStaticBlock()) {
|
|
||||||
staticBlockPath = el;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (decoratorPath && privateFieldPath) {
|
|
||||||
throw privateFieldPath.buildCodeFrameError("Private fields in decorated classes are not supported yet.");
|
|
||||||
}
|
|
||||||
if (decoratorPath && privateMethodPath) {
|
|
||||||
throw privateMethodPath.buildCodeFrameError("Private methods in decorated classes are not supported yet.");
|
|
||||||
}
|
|
||||||
if (decoratorPath && !hasFeature(file, FEATURES.decorators)) {
|
|
||||||
throw path.buildCodeFrameError("Decorators are not enabled." + "\nIf you are using " + '["@babel/plugin-proposal-decorators", { "version": "legacy" }], ' + 'make sure it comes *before* "@babel/plugin-transform-class-properties" ' + "and enable loose mode, like so:\n" + '\t["@babel/plugin-proposal-decorators", { "version": "legacy" }]\n' + '\t["@babel/plugin-transform-class-properties", { "loose": true }]');
|
|
||||||
}
|
|
||||||
if (privateMethodPath && !hasFeature(file, FEATURES.privateMethods)) {
|
|
||||||
throw privateMethodPath.buildCodeFrameError("Class private methods are not enabled. " + "Please add `@babel/plugin-transform-private-methods` to your configuration.");
|
|
||||||
}
|
|
||||||
if ((publicFieldPath || privateFieldPath) && !hasFeature(file, FEATURES.fields) && !hasFeature(file, FEATURES.privateMethods)) {
|
|
||||||
throw path.buildCodeFrameError("Class fields are not enabled. " + "Please add `@babel/plugin-transform-class-properties` to your configuration.");
|
|
||||||
}
|
|
||||||
if (staticBlockPath && !hasFeature(file, FEATURES.staticBlocks)) {
|
|
||||||
throw path.buildCodeFrameError("Static class blocks are not enabled. " + "Please add `@babel/plugin-transform-class-static-block` to your configuration.");
|
|
||||||
}
|
|
||||||
if (decoratorPath || privateMethodPath || staticBlockPath) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if ((publicFieldPath || privateFieldPath) && hasFeature(file, FEATURES.fields)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//# sourceMappingURL=features.js.map
|
|
||||||
1
backend/node_modules/@babel/helper-create-class-features-plugin/lib/features.js.map
generated
vendored
1
backend/node_modules/@babel/helper-create-class-features-plugin/lib/features.js.map
generated
vendored
File diff suppressed because one or more lines are too long
1041
backend/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js
generated
vendored
1041
backend/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js
generated
vendored
File diff suppressed because it is too large
Load diff
1
backend/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js.map
generated
vendored
1
backend/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js.map
generated
vendored
File diff suppressed because one or more lines are too long
237
backend/node_modules/@babel/helper-create-class-features-plugin/lib/index.js
generated
vendored
237
backend/node_modules/@babel/helper-create-class-features-plugin/lib/index.js
generated
vendored
|
|
@ -1,237 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "FEATURES", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function () {
|
|
||||||
return _features.FEATURES;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "buildCheckInRHS", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function () {
|
|
||||||
return _fields.buildCheckInRHS;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "buildNamedEvaluationVisitor", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function () {
|
|
||||||
return _decorators.buildNamedEvaluationVisitor;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
exports.createClassFeaturePlugin = createClassFeaturePlugin;
|
|
||||||
Object.defineProperty(exports, "enableFeature", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function () {
|
|
||||||
return _features.enableFeature;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "injectInitialization", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function () {
|
|
||||||
return _misc.injectInitialization;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
var _core = require("@babel/core");
|
|
||||||
var _semver = require("semver");
|
|
||||||
var _fields = require("./fields.js");
|
|
||||||
var _decorators = require("./decorators.js");
|
|
||||||
var _decorators2 = require("./decorators-2018-09.js");
|
|
||||||
var _misc = require("./misc.js");
|
|
||||||
var _features = require("./features.js");
|
|
||||||
var _typescript = require("./typescript.js");
|
|
||||||
const versionKey = "@babel/plugin-class-features/version";
|
|
||||||
function createClassFeaturePlugin({
|
|
||||||
name,
|
|
||||||
feature,
|
|
||||||
loose,
|
|
||||||
manipulateOptions,
|
|
||||||
api,
|
|
||||||
inherits,
|
|
||||||
decoratorVersion
|
|
||||||
}) {
|
|
||||||
var _api$assumption;
|
|
||||||
if (feature & _features.FEATURES.decorators) {
|
|
||||||
if (decoratorVersion === "2023-11" || decoratorVersion === "2023-05" || decoratorVersion === "2023-01" || decoratorVersion === "2022-03" || decoratorVersion === "2021-12") {
|
|
||||||
return (0, _decorators.default)(api, {
|
|
||||||
loose
|
|
||||||
}, decoratorVersion, inherits);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
api != null ? api : api = {
|
|
||||||
assumption: () => void 0
|
|
||||||
};
|
|
||||||
const setPublicClassFields = api.assumption("setPublicClassFields");
|
|
||||||
const privateFieldsAsSymbols = api.assumption("privateFieldsAsSymbols");
|
|
||||||
const privateFieldsAsProperties = api.assumption("privateFieldsAsProperties");
|
|
||||||
const noUninitializedPrivateFieldAccess = (_api$assumption = api.assumption("noUninitializedPrivateFieldAccess")) != null ? _api$assumption : false;
|
|
||||||
const constantSuper = api.assumption("constantSuper");
|
|
||||||
const noDocumentAll = api.assumption("noDocumentAll");
|
|
||||||
if (privateFieldsAsProperties && privateFieldsAsSymbols) {
|
|
||||||
throw new Error(`Cannot enable both the "privateFieldsAsProperties" and ` + `"privateFieldsAsSymbols" assumptions as the same time.`);
|
|
||||||
}
|
|
||||||
const privateFieldsAsSymbolsOrProperties = privateFieldsAsProperties || privateFieldsAsSymbols;
|
|
||||||
if (loose === true) {
|
|
||||||
const explicit = [];
|
|
||||||
if (setPublicClassFields !== undefined) {
|
|
||||||
explicit.push(`"setPublicClassFields"`);
|
|
||||||
}
|
|
||||||
if (privateFieldsAsProperties !== undefined) {
|
|
||||||
explicit.push(`"privateFieldsAsProperties"`);
|
|
||||||
}
|
|
||||||
if (privateFieldsAsSymbols !== undefined) {
|
|
||||||
explicit.push(`"privateFieldsAsSymbols"`);
|
|
||||||
}
|
|
||||||
if (explicit.length !== 0) {
|
|
||||||
console.warn(`[${name}]: You are using the "loose: true" option and you are` + ` explicitly setting a value for the ${explicit.join(" and ")}` + ` assumption${explicit.length > 1 ? "s" : ""}. The "loose" option` + ` can cause incompatibilities with the other class features` + ` plugins, so it's recommended that you replace it with the` + ` following top-level option:\n` + `\t"assumptions": {\n` + `\t\t"setPublicClassFields": true,\n` + `\t\t"privateFieldsAsSymbols": true\n` + `\t}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
name,
|
|
||||||
manipulateOptions,
|
|
||||||
inherits,
|
|
||||||
pre(file) {
|
|
||||||
(0, _features.enableFeature)(file, feature, loose);
|
|
||||||
if (typeof file.get(versionKey) === "number") {
|
|
||||||
file.set(versionKey, "7.28.6");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!file.get(versionKey) || _semver.lt(file.get(versionKey), "7.28.6")) {
|
|
||||||
file.set(versionKey, "7.28.6");
|
|
||||||
}
|
|
||||||
},
|
|
||||||
visitor: {
|
|
||||||
Class(path, {
|
|
||||||
file
|
|
||||||
}) {
|
|
||||||
if (file.get(versionKey) !== "7.28.6") return;
|
|
||||||
if (!(0, _features.shouldTransform)(path, file)) return;
|
|
||||||
const pathIsClassDeclaration = path.isClassDeclaration();
|
|
||||||
if (pathIsClassDeclaration) (0, _typescript.assertFieldTransformed)(path);
|
|
||||||
const loose = (0, _features.isLoose)(file, feature);
|
|
||||||
let constructor;
|
|
||||||
const isDecorated = (0, _decorators.hasDecorators)(path.node);
|
|
||||||
const props = [];
|
|
||||||
const elements = [];
|
|
||||||
const computedPaths = [];
|
|
||||||
const privateNames = new Set();
|
|
||||||
const body = path.get("body");
|
|
||||||
for (const path of body.get("body")) {
|
|
||||||
if ((path.isClassProperty() || path.isClassMethod()) && path.node.computed) {
|
|
||||||
computedPaths.push(path);
|
|
||||||
}
|
|
||||||
if (path.isPrivate()) {
|
|
||||||
const {
|
|
||||||
name
|
|
||||||
} = path.node.key.id;
|
|
||||||
const getName = `get ${name}`;
|
|
||||||
const setName = `set ${name}`;
|
|
||||||
if (path.isClassPrivateMethod()) {
|
|
||||||
if (path.node.kind === "get") {
|
|
||||||
if (privateNames.has(getName) || privateNames.has(name) && !privateNames.has(setName)) {
|
|
||||||
throw path.buildCodeFrameError("Duplicate private field");
|
|
||||||
}
|
|
||||||
privateNames.add(getName).add(name);
|
|
||||||
} else if (path.node.kind === "set") {
|
|
||||||
if (privateNames.has(setName) || privateNames.has(name) && !privateNames.has(getName)) {
|
|
||||||
throw path.buildCodeFrameError("Duplicate private field");
|
|
||||||
}
|
|
||||||
privateNames.add(setName).add(name);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (privateNames.has(name) && !privateNames.has(getName) && !privateNames.has(setName) || privateNames.has(name) && (privateNames.has(getName) || privateNames.has(setName))) {
|
|
||||||
throw path.buildCodeFrameError("Duplicate private field");
|
|
||||||
}
|
|
||||||
privateNames.add(name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (path.isClassMethod({
|
|
||||||
kind: "constructor"
|
|
||||||
})) {
|
|
||||||
constructor = path;
|
|
||||||
} else {
|
|
||||||
elements.push(path);
|
|
||||||
if (path.isProperty() || path.isPrivate() || path.isStaticBlock != null && path.isStaticBlock()) {
|
|
||||||
props.push(path);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!props.length && !isDecorated) return;
|
|
||||||
const innerBinding = path.node.id;
|
|
||||||
let ref;
|
|
||||||
if (!innerBinding || !pathIsClassDeclaration) {
|
|
||||||
var _path$ensureFunctionN;
|
|
||||||
(_path$ensureFunctionN = path.ensureFunctionName) != null ? _path$ensureFunctionN : path.ensureFunctionName = require("@babel/traverse").NodePath.prototype.ensureFunctionName;
|
|
||||||
path.ensureFunctionName(false);
|
|
||||||
ref = path.scope.generateUidIdentifier((innerBinding == null ? void 0 : innerBinding.name) || "Class");
|
|
||||||
}
|
|
||||||
const classRefForDefine = ref != null ? ref : _core.types.cloneNode(innerBinding);
|
|
||||||
const privateNamesMap = (0, _fields.buildPrivateNamesMap)(classRefForDefine.name, privateFieldsAsSymbolsOrProperties != null ? privateFieldsAsSymbolsOrProperties : loose, props, file);
|
|
||||||
const privateNamesNodes = (0, _fields.buildPrivateNamesNodes)(privateNamesMap, privateFieldsAsProperties != null ? privateFieldsAsProperties : loose, privateFieldsAsSymbols != null ? privateFieldsAsSymbols : false, file);
|
|
||||||
(0, _fields.transformPrivateNamesUsage)(classRefForDefine, path, privateNamesMap, {
|
|
||||||
privateFieldsAsProperties: privateFieldsAsSymbolsOrProperties != null ? privateFieldsAsSymbolsOrProperties : loose,
|
|
||||||
noUninitializedPrivateFieldAccess,
|
|
||||||
noDocumentAll,
|
|
||||||
innerBinding
|
|
||||||
}, file);
|
|
||||||
let keysNodes, staticNodes, instanceNodes, lastInstanceNodeReturnsThis, pureStaticNodes, classBindingNode, wrapClass;
|
|
||||||
if (isDecorated) {
|
|
||||||
staticNodes = pureStaticNodes = keysNodes = [];
|
|
||||||
({
|
|
||||||
instanceNodes,
|
|
||||||
wrapClass
|
|
||||||
} = (0, _decorators2.buildDecoratedClass)(classRefForDefine, path, elements, file));
|
|
||||||
} else {
|
|
||||||
keysNodes = (0, _misc.extractComputedKeys)(path, computedPaths, file);
|
|
||||||
({
|
|
||||||
staticNodes,
|
|
||||||
pureStaticNodes,
|
|
||||||
instanceNodes,
|
|
||||||
lastInstanceNodeReturnsThis,
|
|
||||||
classBindingNode,
|
|
||||||
wrapClass
|
|
||||||
} = (0, _fields.buildFieldsInitNodes)(ref, path.node.superClass, props, privateNamesMap, file, setPublicClassFields != null ? setPublicClassFields : loose, privateFieldsAsSymbolsOrProperties != null ? privateFieldsAsSymbolsOrProperties : loose, noUninitializedPrivateFieldAccess, constantSuper != null ? constantSuper : loose, innerBinding));
|
|
||||||
}
|
|
||||||
if (instanceNodes.length > 0) {
|
|
||||||
(0, _misc.injectInitialization)(path, constructor, instanceNodes, (referenceVisitor, state) => {
|
|
||||||
if (isDecorated) return;
|
|
||||||
for (const prop of props) {
|
|
||||||
if (_core.types.isStaticBlock != null && _core.types.isStaticBlock(prop.node) || prop.node.static) continue;
|
|
||||||
prop.traverse(referenceVisitor, state);
|
|
||||||
}
|
|
||||||
}, lastInstanceNodeReturnsThis);
|
|
||||||
}
|
|
||||||
const wrappedPath = wrapClass(path);
|
|
||||||
wrappedPath.insertBefore([...privateNamesNodes, ...keysNodes]);
|
|
||||||
if (staticNodes.length > 0) {
|
|
||||||
wrappedPath.insertAfter(staticNodes);
|
|
||||||
}
|
|
||||||
if (pureStaticNodes.length > 0) {
|
|
||||||
wrappedPath.find(parent => parent.isStatement() || parent.isDeclaration()).insertAfter(pureStaticNodes);
|
|
||||||
}
|
|
||||||
if (classBindingNode != null && pathIsClassDeclaration) {
|
|
||||||
wrappedPath.insertAfter(classBindingNode);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
ExportDefaultDeclaration(path, {
|
|
||||||
file
|
|
||||||
}) {
|
|
||||||
if (file.get(versionKey) !== "7.28.6") return;
|
|
||||||
const decl = path.get("declaration");
|
|
||||||
if (decl.isClassDeclaration() && (0, _decorators.hasDecorators)(decl.node)) {
|
|
||||||
if (decl.node.id) {
|
|
||||||
var _path$splitExportDecl;
|
|
||||||
(_path$splitExportDecl = path.splitExportDeclaration) != null ? _path$splitExportDecl : path.splitExportDeclaration = require("@babel/traverse").NodePath.prototype.splitExportDeclaration;
|
|
||||||
path.splitExportDeclaration();
|
|
||||||
} else {
|
|
||||||
decl.node.type = "ClassExpression";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
//# sourceMappingURL=index.js.map
|
|
||||||
1
backend/node_modules/@babel/helper-create-class-features-plugin/lib/index.js.map
generated
vendored
1
backend/node_modules/@babel/helper-create-class-features-plugin/lib/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
136
backend/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js
generated
vendored
136
backend/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js
generated
vendored
|
|
@ -1,136 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.extractComputedKeys = extractComputedKeys;
|
|
||||||
exports.injectInitialization = injectInitialization;
|
|
||||||
exports.memoiseComputedKey = memoiseComputedKey;
|
|
||||||
var _core = require("@babel/core");
|
|
||||||
var _traverse = require("@babel/traverse");
|
|
||||||
const findBareSupers = _traverse.visitors.environmentVisitor({
|
|
||||||
Super(path) {
|
|
||||||
const {
|
|
||||||
node,
|
|
||||||
parentPath
|
|
||||||
} = path;
|
|
||||||
if (parentPath.isCallExpression({
|
|
||||||
callee: node
|
|
||||||
})) {
|
|
||||||
this.push(parentPath);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
const referenceVisitor = {
|
|
||||||
"TSTypeAnnotation|TypeAnnotation"(path) {
|
|
||||||
path.skip();
|
|
||||||
},
|
|
||||||
ReferencedIdentifier(path, {
|
|
||||||
scope
|
|
||||||
}) {
|
|
||||||
if (scope.hasOwnBinding(path.node.name)) {
|
|
||||||
scope.rename(path.node.name);
|
|
||||||
path.skip();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
function handleClassTDZ(path, state) {
|
|
||||||
if (state.classBinding && state.classBinding === path.scope.getBinding(path.node.name)) {
|
|
||||||
const classNameTDZError = state.file.addHelper("classNameTDZError");
|
|
||||||
const throwNode = _core.types.callExpression(classNameTDZError, [_core.types.stringLiteral(path.node.name)]);
|
|
||||||
path.replaceWith(_core.types.sequenceExpression([throwNode, path.node]));
|
|
||||||
path.skip();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const classFieldDefinitionEvaluationTDZVisitor = {
|
|
||||||
ReferencedIdentifier: handleClassTDZ,
|
|
||||||
"TSTypeAnnotation|TypeAnnotation"(path) {
|
|
||||||
path.skip();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
function injectInitialization(path, constructor, nodes, renamer, lastReturnsThis) {
|
|
||||||
if (!nodes.length) return;
|
|
||||||
const isDerived = !!path.node.superClass;
|
|
||||||
if (!constructor) {
|
|
||||||
const newConstructor = _core.types.classMethod("constructor", _core.types.identifier("constructor"), [], _core.types.blockStatement([]));
|
|
||||||
if (isDerived) {
|
|
||||||
newConstructor.params = [_core.types.restElement(_core.types.identifier("args"))];
|
|
||||||
newConstructor.body.body.push(_core.template.statement.ast`super(...args)`);
|
|
||||||
}
|
|
||||||
[constructor] = path.get("body").unshiftContainer("body", newConstructor);
|
|
||||||
}
|
|
||||||
if (renamer) {
|
|
||||||
renamer(referenceVisitor, {
|
|
||||||
scope: constructor.scope
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (isDerived) {
|
|
||||||
const bareSupers = [];
|
|
||||||
constructor.traverse(findBareSupers, bareSupers);
|
|
||||||
let isFirst = true;
|
|
||||||
for (const bareSuper of bareSupers) {
|
|
||||||
if (isFirst) {
|
|
||||||
isFirst = false;
|
|
||||||
} else {
|
|
||||||
nodes = nodes.map(n => _core.types.cloneNode(n));
|
|
||||||
}
|
|
||||||
if (!bareSuper.parentPath.isExpressionStatement()) {
|
|
||||||
const allNodes = [bareSuper.node, ...nodes.map(n => _core.types.toExpression(n))];
|
|
||||||
if (!lastReturnsThis) allNodes.push(_core.types.thisExpression());
|
|
||||||
bareSuper.replaceWith(_core.types.sequenceExpression(allNodes));
|
|
||||||
} else {
|
|
||||||
bareSuper.insertAfter(nodes);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
constructor.get("body").unshiftContainer("body", nodes);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function memoiseComputedKey(keyNode, scope, hint) {
|
|
||||||
const isUidReference = _core.types.isIdentifier(keyNode) && scope.hasUid(keyNode.name);
|
|
||||||
if (isUidReference) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const isMemoiseAssignment = _core.types.isAssignmentExpression(keyNode, {
|
|
||||||
operator: "="
|
|
||||||
}) && _core.types.isIdentifier(keyNode.left) && scope.hasUid(keyNode.left.name);
|
|
||||||
if (isMemoiseAssignment) {
|
|
||||||
return _core.types.cloneNode(keyNode);
|
|
||||||
} else {
|
|
||||||
const ident = _core.types.identifier(hint);
|
|
||||||
scope.push({
|
|
||||||
id: ident,
|
|
||||||
kind: "let"
|
|
||||||
});
|
|
||||||
return _core.types.assignmentExpression("=", _core.types.cloneNode(ident), keyNode);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function extractComputedKeys(path, computedPaths, file) {
|
|
||||||
const {
|
|
||||||
scope
|
|
||||||
} = path;
|
|
||||||
const declarations = [];
|
|
||||||
const state = {
|
|
||||||
classBinding: path.node.id && scope.getBinding(path.node.id.name),
|
|
||||||
file
|
|
||||||
};
|
|
||||||
for (const computedPath of computedPaths) {
|
|
||||||
const computedKey = computedPath.get("key");
|
|
||||||
if (computedKey.isReferencedIdentifier()) {
|
|
||||||
handleClassTDZ(computedKey, state);
|
|
||||||
} else {
|
|
||||||
computedKey.traverse(classFieldDefinitionEvaluationTDZVisitor, state);
|
|
||||||
}
|
|
||||||
const computedNode = computedPath.node;
|
|
||||||
if (!computedKey.isConstantExpression()) {
|
|
||||||
const assignment = memoiseComputedKey(computedKey.node, scope, scope.generateUidBasedOnNode(computedKey.node));
|
|
||||||
if (assignment) {
|
|
||||||
declarations.push(_core.types.expressionStatement(assignment));
|
|
||||||
computedNode.key = _core.types.cloneNode(assignment.left);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return declarations;
|
|
||||||
}
|
|
||||||
|
|
||||||
//# sourceMappingURL=misc.js.map
|
|
||||||
1
backend/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js.map
generated
vendored
1
backend/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js.map
generated
vendored
File diff suppressed because one or more lines are too long
13
backend/node_modules/@babel/helper-create-class-features-plugin/lib/typescript.js
generated
vendored
13
backend/node_modules/@babel/helper-create-class-features-plugin/lib/typescript.js
generated
vendored
|
|
@ -1,13 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.assertFieldTransformed = assertFieldTransformed;
|
|
||||||
function assertFieldTransformed(path) {
|
|
||||||
if (path.node.declare || false) {
|
|
||||||
throw path.buildCodeFrameError(`TypeScript 'declare' fields must first be transformed by ` + `@babel/plugin-transform-typescript.\n` + `If you have already enabled that plugin (or '@babel/preset-typescript'), make sure ` + `that it runs before any plugin related to additional class features:\n` + ` - @babel/plugin-transform-class-properties\n` + ` - @babel/plugin-transform-private-methods\n` + ` - @babel/plugin-proposal-decorators`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//# sourceMappingURL=typescript.js.map
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"names":["assertFieldTransformed","path","node","declare","buildCodeFrameError"],"sources":["../src/typescript.ts"],"sourcesContent":["import type { NodePath, types as t } from \"@babel/core\";\n\nexport function assertFieldTransformed(\n path: NodePath<t.ClassProperty | t.ClassDeclaration>,\n) {\n if (\n path.node.declare ||\n (process.env.BABEL_8_BREAKING\n ? path.isClassProperty({ definite: true })\n : false)\n ) {\n throw path.buildCodeFrameError(\n `TypeScript 'declare' fields must first be transformed by ` +\n `@babel/plugin-transform-typescript.\\n` +\n `If you have already enabled that plugin (or '@babel/preset-typescript'), make sure ` +\n `that it runs before any plugin related to additional class features:\\n` +\n ` - @babel/plugin-transform-class-properties\\n` +\n ` - @babel/plugin-transform-private-methods\\n` +\n ` - @babel/plugin-proposal-decorators`,\n );\n }\n}\n"],"mappings":";;;;;;AAEO,SAASA,sBAAsBA,CACpCC,IAAoD,EACpD;EACA,IACEA,IAAI,CAACC,IAAI,CAACC,OAAO,IAGb,KAAM,EACV;IACA,MAAMF,IAAI,CAACG,mBAAmB,CAC5B,2DAA2D,GACzD,uCAAuC,GACvC,qFAAqF,GACrF,wEAAwE,GACxE,+CAA+C,GAC/C,8CAA8C,GAC9C,sCACJ,CAAC;EACH;AACF","ignoreList":[]}
|
|
||||||
|
|
@ -1,443 +0,0 @@
|
||||||
semver(1) -- The semantic versioner for npm
|
|
||||||
===========================================
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm install semver
|
|
||||||
````
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
As a node module:
|
|
||||||
|
|
||||||
```js
|
|
||||||
const semver = require('semver')
|
|
||||||
|
|
||||||
semver.valid('1.2.3') // '1.2.3'
|
|
||||||
semver.valid('a.b.c') // null
|
|
||||||
semver.clean(' =v1.2.3 ') // '1.2.3'
|
|
||||||
semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
|
|
||||||
semver.gt('1.2.3', '9.8.7') // false
|
|
||||||
semver.lt('1.2.3', '9.8.7') // true
|
|
||||||
semver.minVersion('>=1.0.0') // '1.0.0'
|
|
||||||
semver.valid(semver.coerce('v2')) // '2.0.0'
|
|
||||||
semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7'
|
|
||||||
```
|
|
||||||
|
|
||||||
As a command-line utility:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ semver -h
|
|
||||||
|
|
||||||
A JavaScript implementation of the https://semver.org/ specification
|
|
||||||
Copyright Isaac Z. Schlueter
|
|
||||||
|
|
||||||
Usage: semver [options] <version> [<version> [...]]
|
|
||||||
Prints valid versions sorted by SemVer precedence
|
|
||||||
|
|
||||||
Options:
|
|
||||||
-r --range <range>
|
|
||||||
Print versions that match the specified range.
|
|
||||||
|
|
||||||
-i --increment [<level>]
|
|
||||||
Increment a version by the specified level. Level can
|
|
||||||
be one of: major, minor, patch, premajor, preminor,
|
|
||||||
prepatch, or prerelease. Default level is 'patch'.
|
|
||||||
Only one version may be specified.
|
|
||||||
|
|
||||||
--preid <identifier>
|
|
||||||
Identifier to be used to prefix premajor, preminor,
|
|
||||||
prepatch or prerelease version increments.
|
|
||||||
|
|
||||||
-l --loose
|
|
||||||
Interpret versions and ranges loosely
|
|
||||||
|
|
||||||
-p --include-prerelease
|
|
||||||
Always include prerelease versions in range matching
|
|
||||||
|
|
||||||
-c --coerce
|
|
||||||
Coerce a string into SemVer if possible
|
|
||||||
(does not imply --loose)
|
|
||||||
|
|
||||||
--rtl
|
|
||||||
Coerce version strings right to left
|
|
||||||
|
|
||||||
--ltr
|
|
||||||
Coerce version strings left to right (default)
|
|
||||||
|
|
||||||
Program exits successfully if any valid version satisfies
|
|
||||||
all supplied ranges, and prints all satisfying versions.
|
|
||||||
|
|
||||||
If no satisfying versions are found, then exits failure.
|
|
||||||
|
|
||||||
Versions are printed in ascending order, so supplying
|
|
||||||
multiple versions to the utility will just sort them.
|
|
||||||
```
|
|
||||||
|
|
||||||
## Versions
|
|
||||||
|
|
||||||
A "version" is described by the `v2.0.0` specification found at
|
|
||||||
<https://semver.org/>.
|
|
||||||
|
|
||||||
A leading `"="` or `"v"` character is stripped off and ignored.
|
|
||||||
|
|
||||||
## Ranges
|
|
||||||
|
|
||||||
A `version range` is a set of `comparators` which specify versions
|
|
||||||
that satisfy the range.
|
|
||||||
|
|
||||||
A `comparator` is composed of an `operator` and a `version`. The set
|
|
||||||
of primitive `operators` is:
|
|
||||||
|
|
||||||
* `<` Less than
|
|
||||||
* `<=` Less than or equal to
|
|
||||||
* `>` Greater than
|
|
||||||
* `>=` Greater than or equal to
|
|
||||||
* `=` Equal. If no operator is specified, then equality is assumed,
|
|
||||||
so this operator is optional, but MAY be included.
|
|
||||||
|
|
||||||
For example, the comparator `>=1.2.7` would match the versions
|
|
||||||
`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6`
|
|
||||||
or `1.1.0`.
|
|
||||||
|
|
||||||
Comparators can be joined by whitespace to form a `comparator set`,
|
|
||||||
which is satisfied by the **intersection** of all of the comparators
|
|
||||||
it includes.
|
|
||||||
|
|
||||||
A range is composed of one or more comparator sets, joined by `||`. A
|
|
||||||
version matches a range if and only if every comparator in at least
|
|
||||||
one of the `||`-separated comparator sets is satisfied by the version.
|
|
||||||
|
|
||||||
For example, the range `>=1.2.7 <1.3.0` would match the versions
|
|
||||||
`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`,
|
|
||||||
or `1.1.0`.
|
|
||||||
|
|
||||||
The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`,
|
|
||||||
`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`.
|
|
||||||
|
|
||||||
### Prerelease Tags
|
|
||||||
|
|
||||||
If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then
|
|
||||||
it will only be allowed to satisfy comparator sets if at least one
|
|
||||||
comparator with the same `[major, minor, patch]` tuple also has a
|
|
||||||
prerelease tag.
|
|
||||||
|
|
||||||
For example, the range `>1.2.3-alpha.3` would be allowed to match the
|
|
||||||
version `1.2.3-alpha.7`, but it would *not* be satisfied by
|
|
||||||
`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater
|
|
||||||
than" `1.2.3-alpha.3` according to the SemVer sort rules. The version
|
|
||||||
range only accepts prerelease tags on the `1.2.3` version. The
|
|
||||||
version `3.4.5` *would* satisfy the range, because it does not have a
|
|
||||||
prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`.
|
|
||||||
|
|
||||||
The purpose for this behavior is twofold. First, prerelease versions
|
|
||||||
frequently are updated very quickly, and contain many breaking changes
|
|
||||||
that are (by the author's design) not yet fit for public consumption.
|
|
||||||
Therefore, by default, they are excluded from range matching
|
|
||||||
semantics.
|
|
||||||
|
|
||||||
Second, a user who has opted into using a prerelease version has
|
|
||||||
clearly indicated the intent to use *that specific* set of
|
|
||||||
alpha/beta/rc versions. By including a prerelease tag in the range,
|
|
||||||
the user is indicating that they are aware of the risk. However, it
|
|
||||||
is still not appropriate to assume that they have opted into taking a
|
|
||||||
similar risk on the *next* set of prerelease versions.
|
|
||||||
|
|
||||||
Note that this behavior can be suppressed (treating all prerelease
|
|
||||||
versions as if they were normal versions, for the purpose of range
|
|
||||||
matching) by setting the `includePrerelease` flag on the options
|
|
||||||
object to any
|
|
||||||
[functions](https://github.com/npm/node-semver#functions) that do
|
|
||||||
range matching.
|
|
||||||
|
|
||||||
#### Prerelease Identifiers
|
|
||||||
|
|
||||||
The method `.inc` takes an additional `identifier` string argument that
|
|
||||||
will append the value of the string as a prerelease identifier:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
semver.inc('1.2.3', 'prerelease', 'beta')
|
|
||||||
// '1.2.4-beta.0'
|
|
||||||
```
|
|
||||||
|
|
||||||
command-line example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ semver 1.2.3 -i prerelease --preid beta
|
|
||||||
1.2.4-beta.0
|
|
||||||
```
|
|
||||||
|
|
||||||
Which then can be used to increment further:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ semver 1.2.4-beta.0 -i prerelease
|
|
||||||
1.2.4-beta.1
|
|
||||||
```
|
|
||||||
|
|
||||||
### Advanced Range Syntax
|
|
||||||
|
|
||||||
Advanced range syntax desugars to primitive comparators in
|
|
||||||
deterministic ways.
|
|
||||||
|
|
||||||
Advanced ranges may be combined in the same way as primitive
|
|
||||||
comparators using white space or `||`.
|
|
||||||
|
|
||||||
#### Hyphen Ranges `X.Y.Z - A.B.C`
|
|
||||||
|
|
||||||
Specifies an inclusive set.
|
|
||||||
|
|
||||||
* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`
|
|
||||||
|
|
||||||
If a partial version is provided as the first version in the inclusive
|
|
||||||
range, then the missing pieces are replaced with zeroes.
|
|
||||||
|
|
||||||
* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4`
|
|
||||||
|
|
||||||
If a partial version is provided as the second version in the
|
|
||||||
inclusive range, then all versions that start with the supplied parts
|
|
||||||
of the tuple are accepted, but nothing that would be greater than the
|
|
||||||
provided tuple parts.
|
|
||||||
|
|
||||||
* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0`
|
|
||||||
* `1.2.3 - 2` := `>=1.2.3 <3.0.0`
|
|
||||||
|
|
||||||
#### X-Ranges `1.2.x` `1.X` `1.2.*` `*`
|
|
||||||
|
|
||||||
Any of `X`, `x`, or `*` may be used to "stand in" for one of the
|
|
||||||
numeric values in the `[major, minor, patch]` tuple.
|
|
||||||
|
|
||||||
* `*` := `>=0.0.0` (Any version satisfies)
|
|
||||||
* `1.x` := `>=1.0.0 <2.0.0` (Matching major version)
|
|
||||||
* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions)
|
|
||||||
|
|
||||||
A partial version range is treated as an X-Range, so the special
|
|
||||||
character is in fact optional.
|
|
||||||
|
|
||||||
* `""` (empty string) := `*` := `>=0.0.0`
|
|
||||||
* `1` := `1.x.x` := `>=1.0.0 <2.0.0`
|
|
||||||
* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0`
|
|
||||||
|
|
||||||
#### Tilde Ranges `~1.2.3` `~1.2` `~1`
|
|
||||||
|
|
||||||
Allows patch-level changes if a minor version is specified on the
|
|
||||||
comparator. Allows minor-level changes if not.
|
|
||||||
|
|
||||||
* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0`
|
|
||||||
* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`)
|
|
||||||
* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`)
|
|
||||||
* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0`
|
|
||||||
* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`)
|
|
||||||
* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`)
|
|
||||||
* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in
|
|
||||||
the `1.2.3` version will be allowed, if they are greater than or
|
|
||||||
equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
|
|
||||||
`1.2.4-beta.2` would not, because it is a prerelease of a
|
|
||||||
different `[major, minor, patch]` tuple.
|
|
||||||
|
|
||||||
#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4`
|
|
||||||
|
|
||||||
Allows changes that do not modify the left-most non-zero element in the
|
|
||||||
`[major, minor, patch]` tuple. In other words, this allows patch and
|
|
||||||
minor updates for versions `1.0.0` and above, patch updates for
|
|
||||||
versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`.
|
|
||||||
|
|
||||||
Many authors treat a `0.x` version as if the `x` were the major
|
|
||||||
"breaking-change" indicator.
|
|
||||||
|
|
||||||
Caret ranges are ideal when an author may make breaking changes
|
|
||||||
between `0.2.4` and `0.3.0` releases, which is a common practice.
|
|
||||||
However, it presumes that there will *not* be breaking changes between
|
|
||||||
`0.2.4` and `0.2.5`. It allows for changes that are presumed to be
|
|
||||||
additive (but non-breaking), according to commonly observed practices.
|
|
||||||
|
|
||||||
* `^1.2.3` := `>=1.2.3 <2.0.0`
|
|
||||||
* `^0.2.3` := `>=0.2.3 <0.3.0`
|
|
||||||
* `^0.0.3` := `>=0.0.3 <0.0.4`
|
|
||||||
* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in
|
|
||||||
the `1.2.3` version will be allowed, if they are greater than or
|
|
||||||
equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
|
|
||||||
`1.2.4-beta.2` would not, because it is a prerelease of a
|
|
||||||
different `[major, minor, patch]` tuple.
|
|
||||||
* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4` Note that prereleases in the
|
|
||||||
`0.0.3` version *only* will be allowed, if they are greater than or
|
|
||||||
equal to `beta`. So, `0.0.3-pr.2` would be allowed.
|
|
||||||
|
|
||||||
When parsing caret ranges, a missing `patch` value desugars to the
|
|
||||||
number `0`, but will allow flexibility within that value, even if the
|
|
||||||
major and minor versions are both `0`.
|
|
||||||
|
|
||||||
* `^1.2.x` := `>=1.2.0 <2.0.0`
|
|
||||||
* `^0.0.x` := `>=0.0.0 <0.1.0`
|
|
||||||
* `^0.0` := `>=0.0.0 <0.1.0`
|
|
||||||
|
|
||||||
A missing `minor` and `patch` values will desugar to zero, but also
|
|
||||||
allow flexibility within those values, even if the major version is
|
|
||||||
zero.
|
|
||||||
|
|
||||||
* `^1.x` := `>=1.0.0 <2.0.0`
|
|
||||||
* `^0.x` := `>=0.0.0 <1.0.0`
|
|
||||||
|
|
||||||
### Range Grammar
|
|
||||||
|
|
||||||
Putting all this together, here is a Backus-Naur grammar for ranges,
|
|
||||||
for the benefit of parser authors:
|
|
||||||
|
|
||||||
```bnf
|
|
||||||
range-set ::= range ( logical-or range ) *
|
|
||||||
logical-or ::= ( ' ' ) * '||' ( ' ' ) *
|
|
||||||
range ::= hyphen | simple ( ' ' simple ) * | ''
|
|
||||||
hyphen ::= partial ' - ' partial
|
|
||||||
simple ::= primitive | partial | tilde | caret
|
|
||||||
primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
|
|
||||||
partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
|
|
||||||
xr ::= 'x' | 'X' | '*' | nr
|
|
||||||
nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) *
|
|
||||||
tilde ::= '~' partial
|
|
||||||
caret ::= '^' partial
|
|
||||||
qualifier ::= ( '-' pre )? ( '+' build )?
|
|
||||||
pre ::= parts
|
|
||||||
build ::= parts
|
|
||||||
parts ::= part ( '.' part ) *
|
|
||||||
part ::= nr | [-0-9A-Za-z]+
|
|
||||||
```
|
|
||||||
|
|
||||||
## Functions
|
|
||||||
|
|
||||||
All methods and classes take a final `options` object argument. All
|
|
||||||
options in this object are `false` by default. The options supported
|
|
||||||
are:
|
|
||||||
|
|
||||||
- `loose` Be more forgiving about not-quite-valid semver strings.
|
|
||||||
(Any resulting output will always be 100% strict compliant, of
|
|
||||||
course.) For backwards compatibility reasons, if the `options`
|
|
||||||
argument is a boolean value instead of an object, it is interpreted
|
|
||||||
to be the `loose` param.
|
|
||||||
- `includePrerelease` Set to suppress the [default
|
|
||||||
behavior](https://github.com/npm/node-semver#prerelease-tags) of
|
|
||||||
excluding prerelease tagged versions from ranges unless they are
|
|
||||||
explicitly opted into.
|
|
||||||
|
|
||||||
Strict-mode Comparators and Ranges will be strict about the SemVer
|
|
||||||
strings that they parse.
|
|
||||||
|
|
||||||
* `valid(v)`: Return the parsed version, or null if it's not valid.
|
|
||||||
* `inc(v, release)`: Return the version incremented by the release
|
|
||||||
type (`major`, `premajor`, `minor`, `preminor`, `patch`,
|
|
||||||
`prepatch`, or `prerelease`), or null if it's not valid
|
|
||||||
* `premajor` in one call will bump the version up to the next major
|
|
||||||
version and down to a prerelease of that major version.
|
|
||||||
`preminor`, and `prepatch` work the same way.
|
|
||||||
* If called from a non-prerelease version, the `prerelease` will work the
|
|
||||||
same as `prepatch`. It increments the patch version, then makes a
|
|
||||||
prerelease. If the input version is already a prerelease it simply
|
|
||||||
increments it.
|
|
||||||
* `prerelease(v)`: Returns an array of prerelease components, or null
|
|
||||||
if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]`
|
|
||||||
* `major(v)`: Return the major version number.
|
|
||||||
* `minor(v)`: Return the minor version number.
|
|
||||||
* `patch(v)`: Return the patch version number.
|
|
||||||
* `intersects(r1, r2, loose)`: Return true if the two supplied ranges
|
|
||||||
or comparators intersect.
|
|
||||||
* `parse(v)`: Attempt to parse a string as a semantic version, returning either
|
|
||||||
a `SemVer` object or `null`.
|
|
||||||
|
|
||||||
### Comparison
|
|
||||||
|
|
||||||
* `gt(v1, v2)`: `v1 > v2`
|
|
||||||
* `gte(v1, v2)`: `v1 >= v2`
|
|
||||||
* `lt(v1, v2)`: `v1 < v2`
|
|
||||||
* `lte(v1, v2)`: `v1 <= v2`
|
|
||||||
* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent,
|
|
||||||
even if they're not the exact same string. You already know how to
|
|
||||||
compare strings.
|
|
||||||
* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`.
|
|
||||||
* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call
|
|
||||||
the corresponding function above. `"==="` and `"!=="` do simple
|
|
||||||
string comparison, but are included for completeness. Throws if an
|
|
||||||
invalid comparison string is provided.
|
|
||||||
* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if
|
|
||||||
`v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
|
|
||||||
* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions
|
|
||||||
in descending order when passed to `Array.sort()`.
|
|
||||||
* `compareBuild(v1, v2)`: The same as `compare` but considers `build` when two versions
|
|
||||||
are equal. Sorts in ascending order if passed to `Array.sort()`.
|
|
||||||
`v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
|
|
||||||
* `diff(v1, v2)`: Returns difference between two versions by the release type
|
|
||||||
(`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`),
|
|
||||||
or null if the versions are the same.
|
|
||||||
|
|
||||||
### Comparators
|
|
||||||
|
|
||||||
* `intersects(comparator)`: Return true if the comparators intersect
|
|
||||||
|
|
||||||
### Ranges
|
|
||||||
|
|
||||||
* `validRange(range)`: Return the valid range or null if it's not valid
|
|
||||||
* `satisfies(version, range)`: Return true if the version satisfies the
|
|
||||||
range.
|
|
||||||
* `maxSatisfying(versions, range)`: Return the highest version in the list
|
|
||||||
that satisfies the range, or `null` if none of them do.
|
|
||||||
* `minSatisfying(versions, range)`: Return the lowest version in the list
|
|
||||||
that satisfies the range, or `null` if none of them do.
|
|
||||||
* `minVersion(range)`: Return the lowest version that can possibly match
|
|
||||||
the given range.
|
|
||||||
* `gtr(version, range)`: Return `true` if version is greater than all the
|
|
||||||
versions possible in the range.
|
|
||||||
* `ltr(version, range)`: Return `true` if version is less than all the
|
|
||||||
versions possible in the range.
|
|
||||||
* `outside(version, range, hilo)`: Return true if the version is outside
|
|
||||||
the bounds of the range in either the high or low direction. The
|
|
||||||
`hilo` argument must be either the string `'>'` or `'<'`. (This is
|
|
||||||
the function called by `gtr` and `ltr`.)
|
|
||||||
* `intersects(range)`: Return true if any of the ranges comparators intersect
|
|
||||||
|
|
||||||
Note that, since ranges may be non-contiguous, a version might not be
|
|
||||||
greater than a range, less than a range, *or* satisfy a range! For
|
|
||||||
example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`
|
|
||||||
until `2.0.0`, so the version `1.2.10` would not be greater than the
|
|
||||||
range (because `2.0.1` satisfies, which is higher), nor less than the
|
|
||||||
range (since `1.2.8` satisfies, which is lower), and it also does not
|
|
||||||
satisfy the range.
|
|
||||||
|
|
||||||
If you want to know if a version satisfies or does not satisfy a
|
|
||||||
range, use the `satisfies(version, range)` function.
|
|
||||||
|
|
||||||
### Coercion
|
|
||||||
|
|
||||||
* `coerce(version, options)`: Coerces a string to semver if possible
|
|
||||||
|
|
||||||
This aims to provide a very forgiving translation of a non-semver string to
|
|
||||||
semver. It looks for the first digit in a string, and consumes all
|
|
||||||
remaining characters which satisfy at least a partial semver (e.g., `1`,
|
|
||||||
`1.2`, `1.2.3`) up to the max permitted length (256 characters). Longer
|
|
||||||
versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`). All
|
|
||||||
surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes
|
|
||||||
`3.4.0`). Only text which lacks digits will fail coercion (`version one`
|
|
||||||
is not valid). The maximum length for any semver component considered for
|
|
||||||
coercion is 16 characters; longer components will be ignored
|
|
||||||
(`10000000000000000.4.7.4` becomes `4.7.4`). The maximum value for any
|
|
||||||
semver component is `Integer.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value
|
|
||||||
components are invalid (`9999999999999999.4.7.4` is likely invalid).
|
|
||||||
|
|
||||||
If the `options.rtl` flag is set, then `coerce` will return the right-most
|
|
||||||
coercible tuple that does not share an ending index with a longer coercible
|
|
||||||
tuple. For example, `1.2.3.4` will return `2.3.4` in rtl mode, not
|
|
||||||
`4.0.0`. `1.2.3/4` will return `4.0.0`, because the `4` is not a part of
|
|
||||||
any other overlapping SemVer tuple.
|
|
||||||
|
|
||||||
### Clean
|
|
||||||
|
|
||||||
* `clean(version)`: Clean a string to be a valid semver if possible
|
|
||||||
|
|
||||||
This will return a cleaned and trimmed semver version. If the provided version is not valid a null will be returned. This does not work for ranges.
|
|
||||||
|
|
||||||
ex.
|
|
||||||
* `s.clean(' = v 2.1.5foo')`: `null`
|
|
||||||
* `s.clean(' = v 2.1.5foo', { loose: true })`: `'2.1.5-foo'`
|
|
||||||
* `s.clean(' = v 2.1.5-foo')`: `null`
|
|
||||||
* `s.clean(' = v 2.1.5-foo', { loose: true })`: `'2.1.5-foo'`
|
|
||||||
* `s.clean('=v2.1.5')`: `'2.1.5'`
|
|
||||||
* `s.clean(' =v2.1.5')`: `2.1.5`
|
|
||||||
* `s.clean(' 2.1.5 ')`: `'2.1.5'`
|
|
||||||
* `s.clean('~1.0.0')`: `null`
|
|
||||||
|
|
@ -1,174 +0,0 @@
|
||||||
#!/usr/bin/env node
|
|
||||||
// Standalone semver comparison program.
|
|
||||||
// Exits successfully and prints matching version(s) if
|
|
||||||
// any supplied version is valid and passes all tests.
|
|
||||||
|
|
||||||
var argv = process.argv.slice(2)
|
|
||||||
|
|
||||||
var versions = []
|
|
||||||
|
|
||||||
var range = []
|
|
||||||
|
|
||||||
var inc = null
|
|
||||||
|
|
||||||
var version = require('../package.json').version
|
|
||||||
|
|
||||||
var loose = false
|
|
||||||
|
|
||||||
var includePrerelease = false
|
|
||||||
|
|
||||||
var coerce = false
|
|
||||||
|
|
||||||
var rtl = false
|
|
||||||
|
|
||||||
var identifier
|
|
||||||
|
|
||||||
var semver = require('../semver')
|
|
||||||
|
|
||||||
var reverse = false
|
|
||||||
|
|
||||||
var options = {}
|
|
||||||
|
|
||||||
main()
|
|
||||||
|
|
||||||
function main () {
|
|
||||||
if (!argv.length) return help()
|
|
||||||
while (argv.length) {
|
|
||||||
var a = argv.shift()
|
|
||||||
var indexOfEqualSign = a.indexOf('=')
|
|
||||||
if (indexOfEqualSign !== -1) {
|
|
||||||
a = a.slice(0, indexOfEqualSign)
|
|
||||||
argv.unshift(a.slice(indexOfEqualSign + 1))
|
|
||||||
}
|
|
||||||
switch (a) {
|
|
||||||
case '-rv': case '-rev': case '--rev': case '--reverse':
|
|
||||||
reverse = true
|
|
||||||
break
|
|
||||||
case '-l': case '--loose':
|
|
||||||
loose = true
|
|
||||||
break
|
|
||||||
case '-p': case '--include-prerelease':
|
|
||||||
includePrerelease = true
|
|
||||||
break
|
|
||||||
case '-v': case '--version':
|
|
||||||
versions.push(argv.shift())
|
|
||||||
break
|
|
||||||
case '-i': case '--inc': case '--increment':
|
|
||||||
switch (argv[0]) {
|
|
||||||
case 'major': case 'minor': case 'patch': case 'prerelease':
|
|
||||||
case 'premajor': case 'preminor': case 'prepatch':
|
|
||||||
inc = argv.shift()
|
|
||||||
break
|
|
||||||
default:
|
|
||||||
inc = 'patch'
|
|
||||||
break
|
|
||||||
}
|
|
||||||
break
|
|
||||||
case '--preid':
|
|
||||||
identifier = argv.shift()
|
|
||||||
break
|
|
||||||
case '-r': case '--range':
|
|
||||||
range.push(argv.shift())
|
|
||||||
break
|
|
||||||
case '-c': case '--coerce':
|
|
||||||
coerce = true
|
|
||||||
break
|
|
||||||
case '--rtl':
|
|
||||||
rtl = true
|
|
||||||
break
|
|
||||||
case '--ltr':
|
|
||||||
rtl = false
|
|
||||||
break
|
|
||||||
case '-h': case '--help': case '-?':
|
|
||||||
return help()
|
|
||||||
default:
|
|
||||||
versions.push(a)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var options = { loose: loose, includePrerelease: includePrerelease, rtl: rtl }
|
|
||||||
|
|
||||||
versions = versions.map(function (v) {
|
|
||||||
return coerce ? (semver.coerce(v, options) || { version: v }).version : v
|
|
||||||
}).filter(function (v) {
|
|
||||||
return semver.valid(v)
|
|
||||||
})
|
|
||||||
if (!versions.length) return fail()
|
|
||||||
if (inc && (versions.length !== 1 || range.length)) { return failInc() }
|
|
||||||
|
|
||||||
for (var i = 0, l = range.length; i < l; i++) {
|
|
||||||
versions = versions.filter(function (v) {
|
|
||||||
return semver.satisfies(v, range[i], options)
|
|
||||||
})
|
|
||||||
if (!versions.length) return fail()
|
|
||||||
}
|
|
||||||
return success(versions)
|
|
||||||
}
|
|
||||||
|
|
||||||
function failInc () {
|
|
||||||
console.error('--inc can only be used on a single version with no range')
|
|
||||||
fail()
|
|
||||||
}
|
|
||||||
|
|
||||||
function fail () { process.exit(1) }
|
|
||||||
|
|
||||||
function success () {
|
|
||||||
var compare = reverse ? 'rcompare' : 'compare'
|
|
||||||
versions.sort(function (a, b) {
|
|
||||||
return semver[compare](a, b, options)
|
|
||||||
}).map(function (v) {
|
|
||||||
return semver.clean(v, options)
|
|
||||||
}).map(function (v) {
|
|
||||||
return inc ? semver.inc(v, inc, options, identifier) : v
|
|
||||||
}).forEach(function (v, i, _) { console.log(v) })
|
|
||||||
}
|
|
||||||
|
|
||||||
function help () {
|
|
||||||
console.log(['SemVer ' + version,
|
|
||||||
'',
|
|
||||||
'A JavaScript implementation of the https://semver.org/ specification',
|
|
||||||
'Copyright Isaac Z. Schlueter',
|
|
||||||
'',
|
|
||||||
'Usage: semver [options] <version> [<version> [...]]',
|
|
||||||
'Prints valid versions sorted by SemVer precedence',
|
|
||||||
'',
|
|
||||||
'Options:',
|
|
||||||
'-r --range <range>',
|
|
||||||
' Print versions that match the specified range.',
|
|
||||||
'',
|
|
||||||
'-i --increment [<level>]',
|
|
||||||
' Increment a version by the specified level. Level can',
|
|
||||||
' be one of: major, minor, patch, premajor, preminor,',
|
|
||||||
" prepatch, or prerelease. Default level is 'patch'.",
|
|
||||||
' Only one version may be specified.',
|
|
||||||
'',
|
|
||||||
'--preid <identifier>',
|
|
||||||
' Identifier to be used to prefix premajor, preminor,',
|
|
||||||
' prepatch or prerelease version increments.',
|
|
||||||
'',
|
|
||||||
'-l --loose',
|
|
||||||
' Interpret versions and ranges loosely',
|
|
||||||
'',
|
|
||||||
'-p --include-prerelease',
|
|
||||||
' Always include prerelease versions in range matching',
|
|
||||||
'',
|
|
||||||
'-c --coerce',
|
|
||||||
' Coerce a string into SemVer if possible',
|
|
||||||
' (does not imply --loose)',
|
|
||||||
'',
|
|
||||||
'--rtl',
|
|
||||||
' Coerce version strings right to left',
|
|
||||||
'',
|
|
||||||
'--ltr',
|
|
||||||
' Coerce version strings left to right (default)',
|
|
||||||
'',
|
|
||||||
'Program exits successfully if any valid version satisfies',
|
|
||||||
'all supplied ranges, and prints all satisfying versions.',
|
|
||||||
'',
|
|
||||||
'If no satisfying versions are found, then exits failure.',
|
|
||||||
'',
|
|
||||||
'Versions are printed in ascending order, so supplying',
|
|
||||||
'multiple versions to the utility will just sort them.'
|
|
||||||
].join('\n'))
|
|
||||||
}
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
||||||
{
|
|
||||||
"name": "semver",
|
|
||||||
"version": "6.3.1",
|
|
||||||
"description": "The semantic version parser used by npm.",
|
|
||||||
"main": "semver.js",
|
|
||||||
"scripts": {
|
|
||||||
"test": "tap test/ --100 --timeout=30",
|
|
||||||
"lint": "echo linting disabled",
|
|
||||||
"postlint": "template-oss-check",
|
|
||||||
"template-oss-apply": "template-oss-apply --force",
|
|
||||||
"lintfix": "npm run lint -- --fix",
|
|
||||||
"snap": "tap test/ --100 --timeout=30",
|
|
||||||
"posttest": "npm run lint"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@npmcli/template-oss": "4.17.0",
|
|
||||||
"tap": "^12.7.0"
|
|
||||||
},
|
|
||||||
"license": "ISC",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/npm/node-semver.git"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"semver": "./bin/semver.js"
|
|
||||||
},
|
|
||||||
"files": [
|
|
||||||
"bin",
|
|
||||||
"range.bnf",
|
|
||||||
"semver.js"
|
|
||||||
],
|
|
||||||
"author": "GitHub Inc.",
|
|
||||||
"templateOSS": {
|
|
||||||
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
|
|
||||||
"content": "./scripts/template-oss",
|
|
||||||
"version": "4.17.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
1643
backend/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver/semver.js
generated
vendored
1643
backend/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver/semver.js
generated
vendored
File diff suppressed because it is too large
Load diff
43
backend/node_modules/@babel/helper-create-class-features-plugin/package.json
generated
vendored
43
backend/node_modules/@babel/helper-create-class-features-plugin/package.json
generated
vendored
|
|
@ -1,43 +0,0 @@
|
||||||
{
|
|
||||||
"name": "@babel/helper-create-class-features-plugin",
|
|
||||||
"version": "7.28.6",
|
|
||||||
"author": "The Babel Team (https://babel.dev/team)",
|
|
||||||
"license": "MIT",
|
|
||||||
"description": "Compile class public and private fields, private methods and decorators to ES6",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/babel/babel.git",
|
|
||||||
"directory": "packages/babel-helper-create-class-features-plugin"
|
|
||||||
},
|
|
||||||
"main": "./lib/index.js",
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"babel",
|
|
||||||
"babel-plugin"
|
|
||||||
],
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/helper-annotate-as-pure": "^7.27.3",
|
|
||||||
"@babel/helper-member-expression-to-functions": "^7.28.5",
|
|
||||||
"@babel/helper-optimise-call-expression": "^7.27.1",
|
|
||||||
"@babel/helper-replace-supers": "^7.28.6",
|
|
||||||
"@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
|
|
||||||
"@babel/traverse": "^7.28.6",
|
|
||||||
"semver": "^6.3.1"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"@babel/core": "^7.0.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@babel/core": "^7.28.6",
|
|
||||||
"@babel/helper-plugin-test-runner": "^7.27.1",
|
|
||||||
"@babel/preset-env": "^7.28.6",
|
|
||||||
"@types/charcodes": "^0.2.0",
|
|
||||||
"charcodes": "^0.2.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.9.0"
|
|
||||||
},
|
|
||||||
"type": "commonjs"
|
|
||||||
}
|
|
||||||
19
backend/node_modules/@babel/helper-create-regexp-features-plugin/README.md
generated
vendored
19
backend/node_modules/@babel/helper-create-regexp-features-plugin/README.md
generated
vendored
|
|
@ -1,19 +0,0 @@
|
||||||
# @babel/helper-create-regexp-features-plugin
|
|
||||||
|
|
||||||
> Compile ESNext Regular Expressions to ES5
|
|
||||||
|
|
||||||
See our website [@babel/helper-create-regexp-features-plugin](https://babeljs.io/docs/babel-helper-create-regexp-features-plugin) for more information.
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
Using npm:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install --save @babel/helper-create-regexp-features-plugin
|
|
||||||
```
|
|
||||||
|
|
||||||
or using yarn:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add @babel/helper-create-regexp-features-plugin
|
|
||||||
```
|
|
||||||
30
backend/node_modules/@babel/helper-create-regexp-features-plugin/lib/features.js
generated
vendored
30
backend/node_modules/@babel/helper-create-regexp-features-plugin/lib/features.js
generated
vendored
|
|
@ -1,30 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.FEATURES = void 0;
|
|
||||||
exports.enableFeature = enableFeature;
|
|
||||||
exports.featuresKey = void 0;
|
|
||||||
exports.hasFeature = hasFeature;
|
|
||||||
exports.runtimeKey = void 0;
|
|
||||||
const FEATURES = exports.FEATURES = Object.freeze({
|
|
||||||
unicodeFlag: 1 << 0,
|
|
||||||
dotAllFlag: 1 << 1,
|
|
||||||
unicodePropertyEscape: 1 << 2,
|
|
||||||
namedCaptureGroups: 1 << 3,
|
|
||||||
unicodeSetsFlag_syntax: 1 << 4,
|
|
||||||
unicodeSetsFlag: 1 << 5,
|
|
||||||
duplicateNamedCaptureGroups: 1 << 6,
|
|
||||||
modifiers: 1 << 7
|
|
||||||
});
|
|
||||||
const featuresKey = exports.featuresKey = "@babel/plugin-regexp-features/featuresKey";
|
|
||||||
const runtimeKey = exports.runtimeKey = "@babel/plugin-regexp-features/runtimeKey";
|
|
||||||
function enableFeature(features, feature) {
|
|
||||||
return features | feature;
|
|
||||||
}
|
|
||||||
function hasFeature(features, feature) {
|
|
||||||
return !!(features & feature);
|
|
||||||
}
|
|
||||||
|
|
||||||
//# sourceMappingURL=features.js.map
|
|
||||||
1
backend/node_modules/@babel/helper-create-regexp-features-plugin/lib/features.js.map
generated
vendored
1
backend/node_modules/@babel/helper-create-regexp-features-plugin/lib/features.js.map
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"names":["FEATURES","exports","Object","freeze","unicodeFlag","dotAllFlag","unicodePropertyEscape","namedCaptureGroups","unicodeSetsFlag_syntax","unicodeSetsFlag","duplicateNamedCaptureGroups","modifiers","featuresKey","runtimeKey","enableFeature","features","feature","hasFeature"],"sources":["../src/features.ts"],"sourcesContent":["export const FEATURES = Object.freeze({\n unicodeFlag: 1 << 0,\n dotAllFlag: 1 << 1,\n unicodePropertyEscape: 1 << 2,\n namedCaptureGroups: 1 << 3,\n // Not used, for backward compatibility with syntax-unicode-sets-regex\n unicodeSetsFlag_syntax: 1 << 4,\n unicodeSetsFlag: 1 << 5,\n duplicateNamedCaptureGroups: 1 << 6,\n modifiers: 1 << 7,\n});\n\n// We can't use a symbol because this needs to always be the same, even if\n// this package isn't deduped by npm. e.g.\n// - node_modules/\n// - @babel/plugin-regexp-features\n// - @babel/plugin-transform-unicode-property-regex\n// - node_modules\n// - @babel-plugin-regexp-features\nexport const featuresKey = \"@babel/plugin-regexp-features/featuresKey\";\nexport const runtimeKey = \"@babel/plugin-regexp-features/runtimeKey\";\n\ntype FeatureType = (typeof FEATURES)[keyof typeof FEATURES];\n\nexport function enableFeature(features: number, feature: FeatureType): number {\n return features | feature;\n}\n\nexport function hasFeature(features: number, feature: FeatureType) {\n return !!(features & feature);\n}\n"],"mappings":";;;;;;;;;;AAAO,MAAMA,QAAQ,GAAAC,OAAA,CAAAD,QAAA,GAAGE,MAAM,CAACC,MAAM,CAAC;EACpCC,WAAW,EAAE,CAAC,IAAI,CAAC;EACnBC,UAAU,EAAE,CAAC,IAAI,CAAC;EAClBC,qBAAqB,EAAE,CAAC,IAAI,CAAC;EAC7BC,kBAAkB,EAAE,CAAC,IAAI,CAAC;EAE1BC,sBAAsB,EAAE,CAAC,IAAI,CAAC;EAC9BC,eAAe,EAAE,CAAC,IAAI,CAAC;EACvBC,2BAA2B,EAAE,CAAC,IAAI,CAAC;EACnCC,SAAS,EAAE,CAAC,IAAI;AAClB,CAAC,CAAC;AASK,MAAMC,WAAW,GAAAX,OAAA,CAAAW,WAAA,GAAG,2CAA2C;AAC/D,MAAMC,UAAU,GAAAZ,OAAA,CAAAY,UAAA,GAAG,0CAA0C;AAI7D,SAASC,aAAaA,CAACC,QAAgB,EAAEC,OAAoB,EAAU;EAC5E,OAAOD,QAAQ,GAAGC,OAAO;AAC3B;AAEO,SAASC,UAAUA,CAACF,QAAgB,EAAEC,OAAoB,EAAE;EACjE,OAAO,CAAC,EAAED,QAAQ,GAAGC,OAAO,CAAC;AAC/B","ignoreList":[]}
|
|
||||||
116
backend/node_modules/@babel/helper-create-regexp-features-plugin/lib/index.js
generated
vendored
116
backend/node_modules/@babel/helper-create-regexp-features-plugin/lib/index.js
generated
vendored
|
|
@ -1,116 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.createRegExpFeaturePlugin = createRegExpFeaturePlugin;
|
|
||||||
var _regexpuCore = require("regexpu-core");
|
|
||||||
var _core = require("@babel/core");
|
|
||||||
var _helperAnnotateAsPure = require("@babel/helper-annotate-as-pure");
|
|
||||||
var _semver = require("semver");
|
|
||||||
var _features = require("./features.js");
|
|
||||||
var _util = require("./util.js");
|
|
||||||
const versionKey = "@babel/plugin-regexp-features/version";
|
|
||||||
function createRegExpFeaturePlugin({
|
|
||||||
name,
|
|
||||||
feature,
|
|
||||||
options = {},
|
|
||||||
manipulateOptions = () => {}
|
|
||||||
}) {
|
|
||||||
return {
|
|
||||||
name,
|
|
||||||
manipulateOptions,
|
|
||||||
pre() {
|
|
||||||
var _file$get;
|
|
||||||
const {
|
|
||||||
file
|
|
||||||
} = this;
|
|
||||||
const features = (_file$get = file.get(_features.featuresKey)) != null ? _file$get : 0;
|
|
||||||
let newFeatures = (0, _features.enableFeature)(features, _features.FEATURES[feature]);
|
|
||||||
const {
|
|
||||||
useUnicodeFlag,
|
|
||||||
runtime
|
|
||||||
} = options;
|
|
||||||
if (useUnicodeFlag === false) {
|
|
||||||
newFeatures = (0, _features.enableFeature)(newFeatures, _features.FEATURES.unicodeFlag);
|
|
||||||
}
|
|
||||||
if (newFeatures !== features) {
|
|
||||||
file.set(_features.featuresKey, newFeatures);
|
|
||||||
}
|
|
||||||
if (runtime !== undefined) {
|
|
||||||
if (file.has(_features.runtimeKey) && file.get(_features.runtimeKey) !== runtime && (0, _features.hasFeature)(newFeatures, _features.FEATURES.duplicateNamedCaptureGroups)) {
|
|
||||||
throw new Error(`The 'runtime' option must be the same for ` + `'@babel/plugin-transform-named-capturing-groups-regex' and ` + `'@babel/plugin-transform-duplicate-named-capturing-groups-regex'.`);
|
|
||||||
}
|
|
||||||
if (feature === "namedCaptureGroups") {
|
|
||||||
if (!runtime || !file.has(_features.runtimeKey)) file.set(_features.runtimeKey, runtime);
|
|
||||||
} else {
|
|
||||||
file.set(_features.runtimeKey, runtime);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
if (typeof file.get(versionKey) === "number") {
|
|
||||||
file.set(versionKey, "7.28.5");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!file.get(versionKey) || _semver.lt(file.get(versionKey), "7.28.5")) {
|
|
||||||
file.set(versionKey, "7.28.5");
|
|
||||||
}
|
|
||||||
},
|
|
||||||
visitor: {
|
|
||||||
RegExpLiteral(path) {
|
|
||||||
var _file$get2;
|
|
||||||
const {
|
|
||||||
node
|
|
||||||
} = path;
|
|
||||||
const {
|
|
||||||
file
|
|
||||||
} = this;
|
|
||||||
const features = file.get(_features.featuresKey);
|
|
||||||
const runtime = (_file$get2 = file.get(_features.runtimeKey)) != null ? _file$get2 : true;
|
|
||||||
const regexpuOptions = (0, _util.generateRegexpuOptions)(node.pattern, features);
|
|
||||||
if ((0, _util.canSkipRegexpu)(node, regexpuOptions)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const namedCaptureGroups = {
|
|
||||||
__proto__: null
|
|
||||||
};
|
|
||||||
if (regexpuOptions.namedGroups === "transform") {
|
|
||||||
regexpuOptions.onNamedGroup = (name, index) => {
|
|
||||||
const prev = namedCaptureGroups[name];
|
|
||||||
if (typeof prev === "number") {
|
|
||||||
namedCaptureGroups[name] = [prev, index];
|
|
||||||
} else if (Array.isArray(prev)) {
|
|
||||||
prev.push(index);
|
|
||||||
} else {
|
|
||||||
namedCaptureGroups[name] = index;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
let newFlags;
|
|
||||||
if (regexpuOptions.modifiers === "transform") {
|
|
||||||
regexpuOptions.onNewFlags = flags => {
|
|
||||||
newFlags = flags;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
node.pattern = _regexpuCore(node.pattern, node.flags, regexpuOptions);
|
|
||||||
if (regexpuOptions.namedGroups === "transform" && Object.keys(namedCaptureGroups).length > 0 && runtime && !isRegExpTest(path)) {
|
|
||||||
const call = _core.types.callExpression(this.addHelper("wrapRegExp"), [node, _core.types.valueToNode(namedCaptureGroups)]);
|
|
||||||
(0, _helperAnnotateAsPure.default)(call);
|
|
||||||
path.replaceWith(call);
|
|
||||||
}
|
|
||||||
node.flags = (0, _util.transformFlags)(regexpuOptions, newFlags != null ? newFlags : node.flags);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function isRegExpTest(path) {
|
|
||||||
return path.parentPath.isMemberExpression({
|
|
||||||
object: path.node,
|
|
||||||
computed: false
|
|
||||||
}) && path.parentPath.get("property").isIdentifier({
|
|
||||||
name: "test"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//# sourceMappingURL=index.js.map
|
|
||||||
1
backend/node_modules/@babel/helper-create-regexp-features-plugin/lib/index.js.map
generated
vendored
1
backend/node_modules/@babel/helper-create-regexp-features-plugin/lib/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
71
backend/node_modules/@babel/helper-create-regexp-features-plugin/lib/util.js
generated
vendored
71
backend/node_modules/@babel/helper-create-regexp-features-plugin/lib/util.js
generated
vendored
|
|
@ -1,71 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.canSkipRegexpu = canSkipRegexpu;
|
|
||||||
exports.generateRegexpuOptions = generateRegexpuOptions;
|
|
||||||
exports.transformFlags = transformFlags;
|
|
||||||
var _features = require("./features.js");
|
|
||||||
function generateRegexpuOptions(pattern, toTransform) {
|
|
||||||
const feat = name => {
|
|
||||||
return (0, _features.hasFeature)(toTransform, _features.FEATURES[name]) ? "transform" : false;
|
|
||||||
};
|
|
||||||
const featDuplicateNamedGroups = () => {
|
|
||||||
if (!feat("duplicateNamedCaptureGroups")) return false;
|
|
||||||
const regex = /\(\?<([^>]+)(>|$)/g;
|
|
||||||
const seen = new Set();
|
|
||||||
for (let match; (match = regex.exec(pattern)) && match[2]; seen.add(match[1])) {
|
|
||||||
if (seen.has(match[1])) return "transform";
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
return {
|
|
||||||
unicodeFlag: feat("unicodeFlag"),
|
|
||||||
unicodeSetsFlag: feat("unicodeSetsFlag"),
|
|
||||||
dotAllFlag: feat("dotAllFlag"),
|
|
||||||
unicodePropertyEscapes: feat("unicodePropertyEscape"),
|
|
||||||
namedGroups: feat("namedCaptureGroups") || featDuplicateNamedGroups(),
|
|
||||||
onNamedGroup: () => {},
|
|
||||||
modifiers: feat("modifiers")
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function canSkipRegexpu(node, options) {
|
|
||||||
const {
|
|
||||||
flags,
|
|
||||||
pattern
|
|
||||||
} = node;
|
|
||||||
if (flags.includes("v")) {
|
|
||||||
if (options.unicodeSetsFlag === "transform") return false;
|
|
||||||
}
|
|
||||||
if (flags.includes("u")) {
|
|
||||||
if (options.unicodeFlag === "transform") return false;
|
|
||||||
if (options.unicodePropertyEscapes === "transform" && /\\p\{/i.test(pattern)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (flags.includes("s")) {
|
|
||||||
if (options.dotAllFlag === "transform") return false;
|
|
||||||
}
|
|
||||||
if (options.namedGroups === "transform" && /\(\?<(?![=!])/.test(pattern)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (options.modifiers === "transform" && /\(\?[\w-]+:/.test(pattern)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
function transformFlags(regexpuOptions, flags) {
|
|
||||||
if (regexpuOptions.unicodeSetsFlag === "transform") {
|
|
||||||
flags = flags.replace("v", "u");
|
|
||||||
}
|
|
||||||
if (regexpuOptions.unicodeFlag === "transform") {
|
|
||||||
flags = flags.replace("u", "");
|
|
||||||
}
|
|
||||||
if (regexpuOptions.dotAllFlag === "transform") {
|
|
||||||
flags = flags.replace("s", "");
|
|
||||||
}
|
|
||||||
return flags;
|
|
||||||
}
|
|
||||||
|
|
||||||
//# sourceMappingURL=util.js.map
|
|
||||||
1
backend/node_modules/@babel/helper-create-regexp-features-plugin/lib/util.js.map
generated
vendored
1
backend/node_modules/@babel/helper-create-regexp-features-plugin/lib/util.js.map
generated
vendored
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
||||||
../semver/bin/semver.js
|
|
||||||
|
|
@ -1,443 +0,0 @@
|
||||||
semver(1) -- The semantic versioner for npm
|
|
||||||
===========================================
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm install semver
|
|
||||||
````
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
As a node module:
|
|
||||||
|
|
||||||
```js
|
|
||||||
const semver = require('semver')
|
|
||||||
|
|
||||||
semver.valid('1.2.3') // '1.2.3'
|
|
||||||
semver.valid('a.b.c') // null
|
|
||||||
semver.clean(' =v1.2.3 ') // '1.2.3'
|
|
||||||
semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
|
|
||||||
semver.gt('1.2.3', '9.8.7') // false
|
|
||||||
semver.lt('1.2.3', '9.8.7') // true
|
|
||||||
semver.minVersion('>=1.0.0') // '1.0.0'
|
|
||||||
semver.valid(semver.coerce('v2')) // '2.0.0'
|
|
||||||
semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7'
|
|
||||||
```
|
|
||||||
|
|
||||||
As a command-line utility:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ semver -h
|
|
||||||
|
|
||||||
A JavaScript implementation of the https://semver.org/ specification
|
|
||||||
Copyright Isaac Z. Schlueter
|
|
||||||
|
|
||||||
Usage: semver [options] <version> [<version> [...]]
|
|
||||||
Prints valid versions sorted by SemVer precedence
|
|
||||||
|
|
||||||
Options:
|
|
||||||
-r --range <range>
|
|
||||||
Print versions that match the specified range.
|
|
||||||
|
|
||||||
-i --increment [<level>]
|
|
||||||
Increment a version by the specified level. Level can
|
|
||||||
be one of: major, minor, patch, premajor, preminor,
|
|
||||||
prepatch, or prerelease. Default level is 'patch'.
|
|
||||||
Only one version may be specified.
|
|
||||||
|
|
||||||
--preid <identifier>
|
|
||||||
Identifier to be used to prefix premajor, preminor,
|
|
||||||
prepatch or prerelease version increments.
|
|
||||||
|
|
||||||
-l --loose
|
|
||||||
Interpret versions and ranges loosely
|
|
||||||
|
|
||||||
-p --include-prerelease
|
|
||||||
Always include prerelease versions in range matching
|
|
||||||
|
|
||||||
-c --coerce
|
|
||||||
Coerce a string into SemVer if possible
|
|
||||||
(does not imply --loose)
|
|
||||||
|
|
||||||
--rtl
|
|
||||||
Coerce version strings right to left
|
|
||||||
|
|
||||||
--ltr
|
|
||||||
Coerce version strings left to right (default)
|
|
||||||
|
|
||||||
Program exits successfully if any valid version satisfies
|
|
||||||
all supplied ranges, and prints all satisfying versions.
|
|
||||||
|
|
||||||
If no satisfying versions are found, then exits failure.
|
|
||||||
|
|
||||||
Versions are printed in ascending order, so supplying
|
|
||||||
multiple versions to the utility will just sort them.
|
|
||||||
```
|
|
||||||
|
|
||||||
## Versions
|
|
||||||
|
|
||||||
A "version" is described by the `v2.0.0` specification found at
|
|
||||||
<https://semver.org/>.
|
|
||||||
|
|
||||||
A leading `"="` or `"v"` character is stripped off and ignored.
|
|
||||||
|
|
||||||
## Ranges
|
|
||||||
|
|
||||||
A `version range` is a set of `comparators` which specify versions
|
|
||||||
that satisfy the range.
|
|
||||||
|
|
||||||
A `comparator` is composed of an `operator` and a `version`. The set
|
|
||||||
of primitive `operators` is:
|
|
||||||
|
|
||||||
* `<` Less than
|
|
||||||
* `<=` Less than or equal to
|
|
||||||
* `>` Greater than
|
|
||||||
* `>=` Greater than or equal to
|
|
||||||
* `=` Equal. If no operator is specified, then equality is assumed,
|
|
||||||
so this operator is optional, but MAY be included.
|
|
||||||
|
|
||||||
For example, the comparator `>=1.2.7` would match the versions
|
|
||||||
`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6`
|
|
||||||
or `1.1.0`.
|
|
||||||
|
|
||||||
Comparators can be joined by whitespace to form a `comparator set`,
|
|
||||||
which is satisfied by the **intersection** of all of the comparators
|
|
||||||
it includes.
|
|
||||||
|
|
||||||
A range is composed of one or more comparator sets, joined by `||`. A
|
|
||||||
version matches a range if and only if every comparator in at least
|
|
||||||
one of the `||`-separated comparator sets is satisfied by the version.
|
|
||||||
|
|
||||||
For example, the range `>=1.2.7 <1.3.0` would match the versions
|
|
||||||
`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`,
|
|
||||||
or `1.1.0`.
|
|
||||||
|
|
||||||
The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`,
|
|
||||||
`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`.
|
|
||||||
|
|
||||||
### Prerelease Tags
|
|
||||||
|
|
||||||
If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then
|
|
||||||
it will only be allowed to satisfy comparator sets if at least one
|
|
||||||
comparator with the same `[major, minor, patch]` tuple also has a
|
|
||||||
prerelease tag.
|
|
||||||
|
|
||||||
For example, the range `>1.2.3-alpha.3` would be allowed to match the
|
|
||||||
version `1.2.3-alpha.7`, but it would *not* be satisfied by
|
|
||||||
`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater
|
|
||||||
than" `1.2.3-alpha.3` according to the SemVer sort rules. The version
|
|
||||||
range only accepts prerelease tags on the `1.2.3` version. The
|
|
||||||
version `3.4.5` *would* satisfy the range, because it does not have a
|
|
||||||
prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`.
|
|
||||||
|
|
||||||
The purpose for this behavior is twofold. First, prerelease versions
|
|
||||||
frequently are updated very quickly, and contain many breaking changes
|
|
||||||
that are (by the author's design) not yet fit for public consumption.
|
|
||||||
Therefore, by default, they are excluded from range matching
|
|
||||||
semantics.
|
|
||||||
|
|
||||||
Second, a user who has opted into using a prerelease version has
|
|
||||||
clearly indicated the intent to use *that specific* set of
|
|
||||||
alpha/beta/rc versions. By including a prerelease tag in the range,
|
|
||||||
the user is indicating that they are aware of the risk. However, it
|
|
||||||
is still not appropriate to assume that they have opted into taking a
|
|
||||||
similar risk on the *next* set of prerelease versions.
|
|
||||||
|
|
||||||
Note that this behavior can be suppressed (treating all prerelease
|
|
||||||
versions as if they were normal versions, for the purpose of range
|
|
||||||
matching) by setting the `includePrerelease` flag on the options
|
|
||||||
object to any
|
|
||||||
[functions](https://github.com/npm/node-semver#functions) that do
|
|
||||||
range matching.
|
|
||||||
|
|
||||||
#### Prerelease Identifiers
|
|
||||||
|
|
||||||
The method `.inc` takes an additional `identifier` string argument that
|
|
||||||
will append the value of the string as a prerelease identifier:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
semver.inc('1.2.3', 'prerelease', 'beta')
|
|
||||||
// '1.2.4-beta.0'
|
|
||||||
```
|
|
||||||
|
|
||||||
command-line example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ semver 1.2.3 -i prerelease --preid beta
|
|
||||||
1.2.4-beta.0
|
|
||||||
```
|
|
||||||
|
|
||||||
Which then can be used to increment further:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ semver 1.2.4-beta.0 -i prerelease
|
|
||||||
1.2.4-beta.1
|
|
||||||
```
|
|
||||||
|
|
||||||
### Advanced Range Syntax
|
|
||||||
|
|
||||||
Advanced range syntax desugars to primitive comparators in
|
|
||||||
deterministic ways.
|
|
||||||
|
|
||||||
Advanced ranges may be combined in the same way as primitive
|
|
||||||
comparators using white space or `||`.
|
|
||||||
|
|
||||||
#### Hyphen Ranges `X.Y.Z - A.B.C`
|
|
||||||
|
|
||||||
Specifies an inclusive set.
|
|
||||||
|
|
||||||
* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`
|
|
||||||
|
|
||||||
If a partial version is provided as the first version in the inclusive
|
|
||||||
range, then the missing pieces are replaced with zeroes.
|
|
||||||
|
|
||||||
* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4`
|
|
||||||
|
|
||||||
If a partial version is provided as the second version in the
|
|
||||||
inclusive range, then all versions that start with the supplied parts
|
|
||||||
of the tuple are accepted, but nothing that would be greater than the
|
|
||||||
provided tuple parts.
|
|
||||||
|
|
||||||
* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0`
|
|
||||||
* `1.2.3 - 2` := `>=1.2.3 <3.0.0`
|
|
||||||
|
|
||||||
#### X-Ranges `1.2.x` `1.X` `1.2.*` `*`
|
|
||||||
|
|
||||||
Any of `X`, `x`, or `*` may be used to "stand in" for one of the
|
|
||||||
numeric values in the `[major, minor, patch]` tuple.
|
|
||||||
|
|
||||||
* `*` := `>=0.0.0` (Any version satisfies)
|
|
||||||
* `1.x` := `>=1.0.0 <2.0.0` (Matching major version)
|
|
||||||
* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions)
|
|
||||||
|
|
||||||
A partial version range is treated as an X-Range, so the special
|
|
||||||
character is in fact optional.
|
|
||||||
|
|
||||||
* `""` (empty string) := `*` := `>=0.0.0`
|
|
||||||
* `1` := `1.x.x` := `>=1.0.0 <2.0.0`
|
|
||||||
* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0`
|
|
||||||
|
|
||||||
#### Tilde Ranges `~1.2.3` `~1.2` `~1`
|
|
||||||
|
|
||||||
Allows patch-level changes if a minor version is specified on the
|
|
||||||
comparator. Allows minor-level changes if not.
|
|
||||||
|
|
||||||
* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0`
|
|
||||||
* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`)
|
|
||||||
* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`)
|
|
||||||
* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0`
|
|
||||||
* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`)
|
|
||||||
* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`)
|
|
||||||
* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in
|
|
||||||
the `1.2.3` version will be allowed, if they are greater than or
|
|
||||||
equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
|
|
||||||
`1.2.4-beta.2` would not, because it is a prerelease of a
|
|
||||||
different `[major, minor, patch]` tuple.
|
|
||||||
|
|
||||||
#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4`
|
|
||||||
|
|
||||||
Allows changes that do not modify the left-most non-zero element in the
|
|
||||||
`[major, minor, patch]` tuple. In other words, this allows patch and
|
|
||||||
minor updates for versions `1.0.0` and above, patch updates for
|
|
||||||
versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`.
|
|
||||||
|
|
||||||
Many authors treat a `0.x` version as if the `x` were the major
|
|
||||||
"breaking-change" indicator.
|
|
||||||
|
|
||||||
Caret ranges are ideal when an author may make breaking changes
|
|
||||||
between `0.2.4` and `0.3.0` releases, which is a common practice.
|
|
||||||
However, it presumes that there will *not* be breaking changes between
|
|
||||||
`0.2.4` and `0.2.5`. It allows for changes that are presumed to be
|
|
||||||
additive (but non-breaking), according to commonly observed practices.
|
|
||||||
|
|
||||||
* `^1.2.3` := `>=1.2.3 <2.0.0`
|
|
||||||
* `^0.2.3` := `>=0.2.3 <0.3.0`
|
|
||||||
* `^0.0.3` := `>=0.0.3 <0.0.4`
|
|
||||||
* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in
|
|
||||||
the `1.2.3` version will be allowed, if they are greater than or
|
|
||||||
equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
|
|
||||||
`1.2.4-beta.2` would not, because it is a prerelease of a
|
|
||||||
different `[major, minor, patch]` tuple.
|
|
||||||
* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4` Note that prereleases in the
|
|
||||||
`0.0.3` version *only* will be allowed, if they are greater than or
|
|
||||||
equal to `beta`. So, `0.0.3-pr.2` would be allowed.
|
|
||||||
|
|
||||||
When parsing caret ranges, a missing `patch` value desugars to the
|
|
||||||
number `0`, but will allow flexibility within that value, even if the
|
|
||||||
major and minor versions are both `0`.
|
|
||||||
|
|
||||||
* `^1.2.x` := `>=1.2.0 <2.0.0`
|
|
||||||
* `^0.0.x` := `>=0.0.0 <0.1.0`
|
|
||||||
* `^0.0` := `>=0.0.0 <0.1.0`
|
|
||||||
|
|
||||||
A missing `minor` and `patch` values will desugar to zero, but also
|
|
||||||
allow flexibility within those values, even if the major version is
|
|
||||||
zero.
|
|
||||||
|
|
||||||
* `^1.x` := `>=1.0.0 <2.0.0`
|
|
||||||
* `^0.x` := `>=0.0.0 <1.0.0`
|
|
||||||
|
|
||||||
### Range Grammar
|
|
||||||
|
|
||||||
Putting all this together, here is a Backus-Naur grammar for ranges,
|
|
||||||
for the benefit of parser authors:
|
|
||||||
|
|
||||||
```bnf
|
|
||||||
range-set ::= range ( logical-or range ) *
|
|
||||||
logical-or ::= ( ' ' ) * '||' ( ' ' ) *
|
|
||||||
range ::= hyphen | simple ( ' ' simple ) * | ''
|
|
||||||
hyphen ::= partial ' - ' partial
|
|
||||||
simple ::= primitive | partial | tilde | caret
|
|
||||||
primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
|
|
||||||
partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
|
|
||||||
xr ::= 'x' | 'X' | '*' | nr
|
|
||||||
nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) *
|
|
||||||
tilde ::= '~' partial
|
|
||||||
caret ::= '^' partial
|
|
||||||
qualifier ::= ( '-' pre )? ( '+' build )?
|
|
||||||
pre ::= parts
|
|
||||||
build ::= parts
|
|
||||||
parts ::= part ( '.' part ) *
|
|
||||||
part ::= nr | [-0-9A-Za-z]+
|
|
||||||
```
|
|
||||||
|
|
||||||
## Functions
|
|
||||||
|
|
||||||
All methods and classes take a final `options` object argument. All
|
|
||||||
options in this object are `false` by default. The options supported
|
|
||||||
are:
|
|
||||||
|
|
||||||
- `loose` Be more forgiving about not-quite-valid semver strings.
|
|
||||||
(Any resulting output will always be 100% strict compliant, of
|
|
||||||
course.) For backwards compatibility reasons, if the `options`
|
|
||||||
argument is a boolean value instead of an object, it is interpreted
|
|
||||||
to be the `loose` param.
|
|
||||||
- `includePrerelease` Set to suppress the [default
|
|
||||||
behavior](https://github.com/npm/node-semver#prerelease-tags) of
|
|
||||||
excluding prerelease tagged versions from ranges unless they are
|
|
||||||
explicitly opted into.
|
|
||||||
|
|
||||||
Strict-mode Comparators and Ranges will be strict about the SemVer
|
|
||||||
strings that they parse.
|
|
||||||
|
|
||||||
* `valid(v)`: Return the parsed version, or null if it's not valid.
|
|
||||||
* `inc(v, release)`: Return the version incremented by the release
|
|
||||||
type (`major`, `premajor`, `minor`, `preminor`, `patch`,
|
|
||||||
`prepatch`, or `prerelease`), or null if it's not valid
|
|
||||||
* `premajor` in one call will bump the version up to the next major
|
|
||||||
version and down to a prerelease of that major version.
|
|
||||||
`preminor`, and `prepatch` work the same way.
|
|
||||||
* If called from a non-prerelease version, the `prerelease` will work the
|
|
||||||
same as `prepatch`. It increments the patch version, then makes a
|
|
||||||
prerelease. If the input version is already a prerelease it simply
|
|
||||||
increments it.
|
|
||||||
* `prerelease(v)`: Returns an array of prerelease components, or null
|
|
||||||
if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]`
|
|
||||||
* `major(v)`: Return the major version number.
|
|
||||||
* `minor(v)`: Return the minor version number.
|
|
||||||
* `patch(v)`: Return the patch version number.
|
|
||||||
* `intersects(r1, r2, loose)`: Return true if the two supplied ranges
|
|
||||||
or comparators intersect.
|
|
||||||
* `parse(v)`: Attempt to parse a string as a semantic version, returning either
|
|
||||||
a `SemVer` object or `null`.
|
|
||||||
|
|
||||||
### Comparison
|
|
||||||
|
|
||||||
* `gt(v1, v2)`: `v1 > v2`
|
|
||||||
* `gte(v1, v2)`: `v1 >= v2`
|
|
||||||
* `lt(v1, v2)`: `v1 < v2`
|
|
||||||
* `lte(v1, v2)`: `v1 <= v2`
|
|
||||||
* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent,
|
|
||||||
even if they're not the exact same string. You already know how to
|
|
||||||
compare strings.
|
|
||||||
* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`.
|
|
||||||
* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call
|
|
||||||
the corresponding function above. `"==="` and `"!=="` do simple
|
|
||||||
string comparison, but are included for completeness. Throws if an
|
|
||||||
invalid comparison string is provided.
|
|
||||||
* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if
|
|
||||||
`v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
|
|
||||||
* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions
|
|
||||||
in descending order when passed to `Array.sort()`.
|
|
||||||
* `compareBuild(v1, v2)`: The same as `compare` but considers `build` when two versions
|
|
||||||
are equal. Sorts in ascending order if passed to `Array.sort()`.
|
|
||||||
`v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
|
|
||||||
* `diff(v1, v2)`: Returns difference between two versions by the release type
|
|
||||||
(`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`),
|
|
||||||
or null if the versions are the same.
|
|
||||||
|
|
||||||
### Comparators
|
|
||||||
|
|
||||||
* `intersects(comparator)`: Return true if the comparators intersect
|
|
||||||
|
|
||||||
### Ranges
|
|
||||||
|
|
||||||
* `validRange(range)`: Return the valid range or null if it's not valid
|
|
||||||
* `satisfies(version, range)`: Return true if the version satisfies the
|
|
||||||
range.
|
|
||||||
* `maxSatisfying(versions, range)`: Return the highest version in the list
|
|
||||||
that satisfies the range, or `null` if none of them do.
|
|
||||||
* `minSatisfying(versions, range)`: Return the lowest version in the list
|
|
||||||
that satisfies the range, or `null` if none of them do.
|
|
||||||
* `minVersion(range)`: Return the lowest version that can possibly match
|
|
||||||
the given range.
|
|
||||||
* `gtr(version, range)`: Return `true` if version is greater than all the
|
|
||||||
versions possible in the range.
|
|
||||||
* `ltr(version, range)`: Return `true` if version is less than all the
|
|
||||||
versions possible in the range.
|
|
||||||
* `outside(version, range, hilo)`: Return true if the version is outside
|
|
||||||
the bounds of the range in either the high or low direction. The
|
|
||||||
`hilo` argument must be either the string `'>'` or `'<'`. (This is
|
|
||||||
the function called by `gtr` and `ltr`.)
|
|
||||||
* `intersects(range)`: Return true if any of the ranges comparators intersect
|
|
||||||
|
|
||||||
Note that, since ranges may be non-contiguous, a version might not be
|
|
||||||
greater than a range, less than a range, *or* satisfy a range! For
|
|
||||||
example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`
|
|
||||||
until `2.0.0`, so the version `1.2.10` would not be greater than the
|
|
||||||
range (because `2.0.1` satisfies, which is higher), nor less than the
|
|
||||||
range (since `1.2.8` satisfies, which is lower), and it also does not
|
|
||||||
satisfy the range.
|
|
||||||
|
|
||||||
If you want to know if a version satisfies or does not satisfy a
|
|
||||||
range, use the `satisfies(version, range)` function.
|
|
||||||
|
|
||||||
### Coercion
|
|
||||||
|
|
||||||
* `coerce(version, options)`: Coerces a string to semver if possible
|
|
||||||
|
|
||||||
This aims to provide a very forgiving translation of a non-semver string to
|
|
||||||
semver. It looks for the first digit in a string, and consumes all
|
|
||||||
remaining characters which satisfy at least a partial semver (e.g., `1`,
|
|
||||||
`1.2`, `1.2.3`) up to the max permitted length (256 characters). Longer
|
|
||||||
versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`). All
|
|
||||||
surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes
|
|
||||||
`3.4.0`). Only text which lacks digits will fail coercion (`version one`
|
|
||||||
is not valid). The maximum length for any semver component considered for
|
|
||||||
coercion is 16 characters; longer components will be ignored
|
|
||||||
(`10000000000000000.4.7.4` becomes `4.7.4`). The maximum value for any
|
|
||||||
semver component is `Integer.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value
|
|
||||||
components are invalid (`9999999999999999.4.7.4` is likely invalid).
|
|
||||||
|
|
||||||
If the `options.rtl` flag is set, then `coerce` will return the right-most
|
|
||||||
coercible tuple that does not share an ending index with a longer coercible
|
|
||||||
tuple. For example, `1.2.3.4` will return `2.3.4` in rtl mode, not
|
|
||||||
`4.0.0`. `1.2.3/4` will return `4.0.0`, because the `4` is not a part of
|
|
||||||
any other overlapping SemVer tuple.
|
|
||||||
|
|
||||||
### Clean
|
|
||||||
|
|
||||||
* `clean(version)`: Clean a string to be a valid semver if possible
|
|
||||||
|
|
||||||
This will return a cleaned and trimmed semver version. If the provided version is not valid a null will be returned. This does not work for ranges.
|
|
||||||
|
|
||||||
ex.
|
|
||||||
* `s.clean(' = v 2.1.5foo')`: `null`
|
|
||||||
* `s.clean(' = v 2.1.5foo', { loose: true })`: `'2.1.5-foo'`
|
|
||||||
* `s.clean(' = v 2.1.5-foo')`: `null`
|
|
||||||
* `s.clean(' = v 2.1.5-foo', { loose: true })`: `'2.1.5-foo'`
|
|
||||||
* `s.clean('=v2.1.5')`: `'2.1.5'`
|
|
||||||
* `s.clean(' =v2.1.5')`: `2.1.5`
|
|
||||||
* `s.clean(' 2.1.5 ')`: `'2.1.5'`
|
|
||||||
* `s.clean('~1.0.0')`: `null`
|
|
||||||
|
|
@ -1,174 +0,0 @@
|
||||||
#!/usr/bin/env node
|
|
||||||
// Standalone semver comparison program.
|
|
||||||
// Exits successfully and prints matching version(s) if
|
|
||||||
// any supplied version is valid and passes all tests.
|
|
||||||
|
|
||||||
var argv = process.argv.slice(2)
|
|
||||||
|
|
||||||
var versions = []
|
|
||||||
|
|
||||||
var range = []
|
|
||||||
|
|
||||||
var inc = null
|
|
||||||
|
|
||||||
var version = require('../package.json').version
|
|
||||||
|
|
||||||
var loose = false
|
|
||||||
|
|
||||||
var includePrerelease = false
|
|
||||||
|
|
||||||
var coerce = false
|
|
||||||
|
|
||||||
var rtl = false
|
|
||||||
|
|
||||||
var identifier
|
|
||||||
|
|
||||||
var semver = require('../semver')
|
|
||||||
|
|
||||||
var reverse = false
|
|
||||||
|
|
||||||
var options = {}
|
|
||||||
|
|
||||||
main()
|
|
||||||
|
|
||||||
function main () {
|
|
||||||
if (!argv.length) return help()
|
|
||||||
while (argv.length) {
|
|
||||||
var a = argv.shift()
|
|
||||||
var indexOfEqualSign = a.indexOf('=')
|
|
||||||
if (indexOfEqualSign !== -1) {
|
|
||||||
a = a.slice(0, indexOfEqualSign)
|
|
||||||
argv.unshift(a.slice(indexOfEqualSign + 1))
|
|
||||||
}
|
|
||||||
switch (a) {
|
|
||||||
case '-rv': case '-rev': case '--rev': case '--reverse':
|
|
||||||
reverse = true
|
|
||||||
break
|
|
||||||
case '-l': case '--loose':
|
|
||||||
loose = true
|
|
||||||
break
|
|
||||||
case '-p': case '--include-prerelease':
|
|
||||||
includePrerelease = true
|
|
||||||
break
|
|
||||||
case '-v': case '--version':
|
|
||||||
versions.push(argv.shift())
|
|
||||||
break
|
|
||||||
case '-i': case '--inc': case '--increment':
|
|
||||||
switch (argv[0]) {
|
|
||||||
case 'major': case 'minor': case 'patch': case 'prerelease':
|
|
||||||
case 'premajor': case 'preminor': case 'prepatch':
|
|
||||||
inc = argv.shift()
|
|
||||||
break
|
|
||||||
default:
|
|
||||||
inc = 'patch'
|
|
||||||
break
|
|
||||||
}
|
|
||||||
break
|
|
||||||
case '--preid':
|
|
||||||
identifier = argv.shift()
|
|
||||||
break
|
|
||||||
case '-r': case '--range':
|
|
||||||
range.push(argv.shift())
|
|
||||||
break
|
|
||||||
case '-c': case '--coerce':
|
|
||||||
coerce = true
|
|
||||||
break
|
|
||||||
case '--rtl':
|
|
||||||
rtl = true
|
|
||||||
break
|
|
||||||
case '--ltr':
|
|
||||||
rtl = false
|
|
||||||
break
|
|
||||||
case '-h': case '--help': case '-?':
|
|
||||||
return help()
|
|
||||||
default:
|
|
||||||
versions.push(a)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var options = { loose: loose, includePrerelease: includePrerelease, rtl: rtl }
|
|
||||||
|
|
||||||
versions = versions.map(function (v) {
|
|
||||||
return coerce ? (semver.coerce(v, options) || { version: v }).version : v
|
|
||||||
}).filter(function (v) {
|
|
||||||
return semver.valid(v)
|
|
||||||
})
|
|
||||||
if (!versions.length) return fail()
|
|
||||||
if (inc && (versions.length !== 1 || range.length)) { return failInc() }
|
|
||||||
|
|
||||||
for (var i = 0, l = range.length; i < l; i++) {
|
|
||||||
versions = versions.filter(function (v) {
|
|
||||||
return semver.satisfies(v, range[i], options)
|
|
||||||
})
|
|
||||||
if (!versions.length) return fail()
|
|
||||||
}
|
|
||||||
return success(versions)
|
|
||||||
}
|
|
||||||
|
|
||||||
function failInc () {
|
|
||||||
console.error('--inc can only be used on a single version with no range')
|
|
||||||
fail()
|
|
||||||
}
|
|
||||||
|
|
||||||
function fail () { process.exit(1) }
|
|
||||||
|
|
||||||
function success () {
|
|
||||||
var compare = reverse ? 'rcompare' : 'compare'
|
|
||||||
versions.sort(function (a, b) {
|
|
||||||
return semver[compare](a, b, options)
|
|
||||||
}).map(function (v) {
|
|
||||||
return semver.clean(v, options)
|
|
||||||
}).map(function (v) {
|
|
||||||
return inc ? semver.inc(v, inc, options, identifier) : v
|
|
||||||
}).forEach(function (v, i, _) { console.log(v) })
|
|
||||||
}
|
|
||||||
|
|
||||||
function help () {
|
|
||||||
console.log(['SemVer ' + version,
|
|
||||||
'',
|
|
||||||
'A JavaScript implementation of the https://semver.org/ specification',
|
|
||||||
'Copyright Isaac Z. Schlueter',
|
|
||||||
'',
|
|
||||||
'Usage: semver [options] <version> [<version> [...]]',
|
|
||||||
'Prints valid versions sorted by SemVer precedence',
|
|
||||||
'',
|
|
||||||
'Options:',
|
|
||||||
'-r --range <range>',
|
|
||||||
' Print versions that match the specified range.',
|
|
||||||
'',
|
|
||||||
'-i --increment [<level>]',
|
|
||||||
' Increment a version by the specified level. Level can',
|
|
||||||
' be one of: major, minor, patch, premajor, preminor,',
|
|
||||||
" prepatch, or prerelease. Default level is 'patch'.",
|
|
||||||
' Only one version may be specified.',
|
|
||||||
'',
|
|
||||||
'--preid <identifier>',
|
|
||||||
' Identifier to be used to prefix premajor, preminor,',
|
|
||||||
' prepatch or prerelease version increments.',
|
|
||||||
'',
|
|
||||||
'-l --loose',
|
|
||||||
' Interpret versions and ranges loosely',
|
|
||||||
'',
|
|
||||||
'-p --include-prerelease',
|
|
||||||
' Always include prerelease versions in range matching',
|
|
||||||
'',
|
|
||||||
'-c --coerce',
|
|
||||||
' Coerce a string into SemVer if possible',
|
|
||||||
' (does not imply --loose)',
|
|
||||||
'',
|
|
||||||
'--rtl',
|
|
||||||
' Coerce version strings right to left',
|
|
||||||
'',
|
|
||||||
'--ltr',
|
|
||||||
' Coerce version strings left to right (default)',
|
|
||||||
'',
|
|
||||||
'Program exits successfully if any valid version satisfies',
|
|
||||||
'all supplied ranges, and prints all satisfying versions.',
|
|
||||||
'',
|
|
||||||
'If no satisfying versions are found, then exits failure.',
|
|
||||||
'',
|
|
||||||
'Versions are printed in ascending order, so supplying',
|
|
||||||
'multiple versions to the utility will just sort them.'
|
|
||||||
].join('\n'))
|
|
||||||
}
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
||||||
{
|
|
||||||
"name": "semver",
|
|
||||||
"version": "6.3.1",
|
|
||||||
"description": "The semantic version parser used by npm.",
|
|
||||||
"main": "semver.js",
|
|
||||||
"scripts": {
|
|
||||||
"test": "tap test/ --100 --timeout=30",
|
|
||||||
"lint": "echo linting disabled",
|
|
||||||
"postlint": "template-oss-check",
|
|
||||||
"template-oss-apply": "template-oss-apply --force",
|
|
||||||
"lintfix": "npm run lint -- --fix",
|
|
||||||
"snap": "tap test/ --100 --timeout=30",
|
|
||||||
"posttest": "npm run lint"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@npmcli/template-oss": "4.17.0",
|
|
||||||
"tap": "^12.7.0"
|
|
||||||
},
|
|
||||||
"license": "ISC",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/npm/node-semver.git"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"semver": "./bin/semver.js"
|
|
||||||
},
|
|
||||||
"files": [
|
|
||||||
"bin",
|
|
||||||
"range.bnf",
|
|
||||||
"semver.js"
|
|
||||||
],
|
|
||||||
"author": "GitHub Inc.",
|
|
||||||
"templateOSS": {
|
|
||||||
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
|
|
||||||
"content": "./scripts/template-oss",
|
|
||||||
"version": "4.17.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
1643
backend/node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver/semver.js
generated
vendored
1643
backend/node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver/semver.js
generated
vendored
File diff suppressed because it is too large
Load diff
36
backend/node_modules/@babel/helper-create-regexp-features-plugin/package.json
generated
vendored
36
backend/node_modules/@babel/helper-create-regexp-features-plugin/package.json
generated
vendored
|
|
@ -1,36 +0,0 @@
|
||||||
{
|
|
||||||
"name": "@babel/helper-create-regexp-features-plugin",
|
|
||||||
"version": "7.28.5",
|
|
||||||
"author": "The Babel Team (https://babel.dev/team)",
|
|
||||||
"license": "MIT",
|
|
||||||
"description": "Compile ESNext Regular Expressions to ES5",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/babel/babel.git",
|
|
||||||
"directory": "packages/babel-helper-create-regexp-features-plugin"
|
|
||||||
},
|
|
||||||
"main": "./lib/index.js",
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"babel",
|
|
||||||
"babel-plugin"
|
|
||||||
],
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/helper-annotate-as-pure": "^7.27.3",
|
|
||||||
"regexpu-core": "^6.3.1",
|
|
||||||
"semver": "^6.3.1"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"@babel/core": "^7.0.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@babel/core": "^7.28.5",
|
|
||||||
"@babel/helper-plugin-test-runner": "^7.27.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.9.0"
|
|
||||||
},
|
|
||||||
"type": "commonjs"
|
|
||||||
}
|
|
||||||
22
backend/node_modules/@babel/helper-define-polyfill-provider/LICENSE
generated
vendored
22
backend/node_modules/@babel/helper-define-polyfill-provider/LICENSE
generated
vendored
|
|
@ -1,22 +0,0 @@
|
||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2014-present Nicolò Ribaudo and other contributors
|
|
||||||
|
|
||||||
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.
|
|
||||||
15
backend/node_modules/@babel/helper-define-polyfill-provider/README.md
generated
vendored
15
backend/node_modules/@babel/helper-define-polyfill-provider/README.md
generated
vendored
|
|
@ -1,15 +0,0 @@
|
||||||
# @babel/helper-define-polyfill-provider
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
Using npm:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install --save-dev @babel/helper-define-polyfill-provider
|
|
||||||
```
|
|
||||||
|
|
||||||
or using yarn:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add @babel/helper-define-polyfill-provider --dev
|
|
||||||
```
|
|
||||||
1052
backend/node_modules/@babel/helper-define-polyfill-provider/esm/index.browser.mjs
generated
vendored
1052
backend/node_modules/@babel/helper-define-polyfill-provider/esm/index.browser.mjs
generated
vendored
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
1096
backend/node_modules/@babel/helper-define-polyfill-provider/esm/index.node.mjs
generated
vendored
1096
backend/node_modules/@babel/helper-define-polyfill-provider/esm/index.node.mjs
generated
vendored
File diff suppressed because it is too large
Load diff
1
backend/node_modules/@babel/helper-define-polyfill-provider/esm/index.node.mjs.map
generated
vendored
1
backend/node_modules/@babel/helper-define-polyfill-provider/esm/index.node.mjs.map
generated
vendored
File diff suppressed because one or more lines are too long
22
backend/node_modules/@babel/helper-define-polyfill-provider/lib/browser/dependencies.js
generated
vendored
22
backend/node_modules/@babel/helper-define-polyfill-provider/lib/browser/dependencies.js
generated
vendored
|
|
@ -1,22 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
exports.__esModule = true;
|
|
||||||
exports.has = has;
|
|
||||||
exports.laterLogMissing = laterLogMissing;
|
|
||||||
exports.logMissing = logMissing;
|
|
||||||
exports.resolve = resolve;
|
|
||||||
function resolve(dirname, moduleName, absoluteImports) {
|
|
||||||
if (absoluteImports === false) return moduleName;
|
|
||||||
throw new Error(`"absoluteImports" is not supported in bundles prepared for the browser.`);
|
|
||||||
}
|
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
||||||
function has(basedir, name) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
||||||
function logMissing(missingDeps) {}
|
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
||||||
function laterLogMissing(missingDeps) {}
|
|
||||||
14
backend/node_modules/@babel/helper-define-polyfill-provider/lib/debug-utils.js
generated
vendored
14
backend/node_modules/@babel/helper-define-polyfill-provider/lib/debug-utils.js
generated
vendored
|
|
@ -1,14 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
exports.__esModule = true;
|
|
||||||
exports.presetEnvSilentDebugHeader = void 0;
|
|
||||||
exports.stringifyTargets = stringifyTargets;
|
|
||||||
exports.stringifyTargetsMultiline = stringifyTargetsMultiline;
|
|
||||||
var _helperCompilationTargets = require("@babel/helper-compilation-targets");
|
|
||||||
const presetEnvSilentDebugHeader = exports.presetEnvSilentDebugHeader = "#__secret_key__@babel/preset-env__don't_log_debug_header_and_resolved_targets";
|
|
||||||
function stringifyTargetsMultiline(targets) {
|
|
||||||
return JSON.stringify((0, _helperCompilationTargets.prettifyTargets)(targets), null, 2);
|
|
||||||
}
|
|
||||||
function stringifyTargets(targets) {
|
|
||||||
return JSON.stringify(targets).replace(/,/g, ", ").replace(/^\{"/, '{ "').replace(/"\}$/, '" }');
|
|
||||||
}
|
|
||||||
9
backend/node_modules/@babel/helper-define-polyfill-provider/lib/define-provider.js
generated
vendored
9
backend/node_modules/@babel/helper-define-polyfill-provider/lib/define-provider.js
generated
vendored
|
|
@ -1,9 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
exports.__esModule = true;
|
|
||||||
exports.defineProvider = defineProvider;
|
|
||||||
function defineProvider(factory) {
|
|
||||||
// This will allow us to do some things
|
|
||||||
|
|
||||||
return factory;
|
|
||||||
}
|
|
||||||
106
backend/node_modules/@babel/helper-define-polyfill-provider/lib/imports-injector.js
generated
vendored
106
backend/node_modules/@babel/helper-define-polyfill-provider/lib/imports-injector.js
generated
vendored
|
|
@ -1,106 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
exports.__esModule = true;
|
|
||||||
exports.default = void 0;
|
|
||||||
var _babel = _interopRequireWildcard(require("@babel/core"));
|
|
||||||
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
||||||
const {
|
|
||||||
types: t
|
|
||||||
} = _babel.default || _babel;
|
|
||||||
class ImportsCachedInjector {
|
|
||||||
constructor(resolver, getPreferredIndex) {
|
|
||||||
this._imports = new WeakMap();
|
|
||||||
this._anonymousImports = new WeakMap();
|
|
||||||
this._lastImports = new WeakMap();
|
|
||||||
this._resolver = resolver;
|
|
||||||
this._getPreferredIndex = getPreferredIndex;
|
|
||||||
}
|
|
||||||
storeAnonymous(programPath, url, moduleName, getVal) {
|
|
||||||
const key = this._normalizeKey(programPath, url);
|
|
||||||
const imports = this._ensure(this._anonymousImports, programPath, Set);
|
|
||||||
if (imports.has(key)) return;
|
|
||||||
const node = getVal(programPath.node.sourceType === "script", t.stringLiteral(this._resolver(url)));
|
|
||||||
imports.add(key);
|
|
||||||
this._injectImport(programPath, node, moduleName);
|
|
||||||
}
|
|
||||||
storeNamed(programPath, url, name, moduleName, getVal) {
|
|
||||||
const key = this._normalizeKey(programPath, url, name);
|
|
||||||
const imports = this._ensure(this._imports, programPath, Map);
|
|
||||||
if (!imports.has(key)) {
|
|
||||||
const {
|
|
||||||
node,
|
|
||||||
name: id
|
|
||||||
} = getVal(programPath.node.sourceType === "script", t.stringLiteral(this._resolver(url)), t.identifier(name));
|
|
||||||
imports.set(key, id);
|
|
||||||
this._injectImport(programPath, node, moduleName);
|
|
||||||
}
|
|
||||||
return t.identifier(imports.get(key));
|
|
||||||
}
|
|
||||||
_injectImport(programPath, node, moduleName) {
|
|
||||||
var _this$_lastImports$ge;
|
|
||||||
const newIndex = this._getPreferredIndex(moduleName);
|
|
||||||
const lastImports = (_this$_lastImports$ge = this._lastImports.get(programPath)) != null ? _this$_lastImports$ge : [];
|
|
||||||
const isPathStillValid = path => path.node &&
|
|
||||||
// Sometimes the AST is modified and the "last import"
|
|
||||||
// we have has been replaced
|
|
||||||
path.parent === programPath.node && path.container === programPath.node.body;
|
|
||||||
let last;
|
|
||||||
if (newIndex === Infinity) {
|
|
||||||
// Fast path: we can always just insert at the end if newIndex is `Infinity`
|
|
||||||
if (lastImports.length > 0) {
|
|
||||||
last = lastImports[lastImports.length - 1].path;
|
|
||||||
if (!isPathStillValid(last)) last = undefined;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (const [i, data] of lastImports.entries()) {
|
|
||||||
const {
|
|
||||||
path,
|
|
||||||
index
|
|
||||||
} = data;
|
|
||||||
if (isPathStillValid(path)) {
|
|
||||||
if (newIndex < index) {
|
|
||||||
const [newPath] = path.insertBefore(node);
|
|
||||||
lastImports.splice(i, 0, {
|
|
||||||
path: newPath,
|
|
||||||
index: newIndex
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
last = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (last) {
|
|
||||||
const [newPath] = last.insertAfter(node);
|
|
||||||
lastImports.push({
|
|
||||||
path: newPath,
|
|
||||||
index: newIndex
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
const [newPath] = programPath.unshiftContainer("body", [node]);
|
|
||||||
this._lastImports.set(programPath, [{
|
|
||||||
path: newPath,
|
|
||||||
index: newIndex
|
|
||||||
}]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_ensure(map, programPath, Collection) {
|
|
||||||
let collection = map.get(programPath);
|
|
||||||
if (!collection) {
|
|
||||||
collection = new Collection();
|
|
||||||
map.set(programPath, collection);
|
|
||||||
}
|
|
||||||
return collection;
|
|
||||||
}
|
|
||||||
_normalizeKey(programPath, url, name = "") {
|
|
||||||
const {
|
|
||||||
sourceType
|
|
||||||
} = programPath.node;
|
|
||||||
|
|
||||||
// If we rely on the imported binding (the "name" parameter), we also need to cache
|
|
||||||
// based on the sourceType. This is because the module transforms change the names
|
|
||||||
// of the import variables.
|
|
||||||
return `${name && sourceType}::${url}::${name}`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.default = ImportsCachedInjector;
|
|
||||||
288
backend/node_modules/@babel/helper-define-polyfill-provider/lib/index.js
generated
vendored
288
backend/node_modules/@babel/helper-define-polyfill-provider/lib/index.js
generated
vendored
|
|
@ -1,288 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
exports.__esModule = true;
|
|
||||||
exports.default = definePolyfillProvider;
|
|
||||||
var _helperPluginUtils = require("@babel/helper-plugin-utils");
|
|
||||||
var _helperCompilationTargets = _interopRequireWildcard(require("@babel/helper-compilation-targets"));
|
|
||||||
var _utils = require("./utils");
|
|
||||||
var _importsInjector = _interopRequireDefault(require("./imports-injector"));
|
|
||||||
var _debugUtils = require("./debug-utils");
|
|
||||||
var _normalizeOptions = require("./normalize-options");
|
|
||||||
var v = _interopRequireWildcard(require("./visitors"));
|
|
||||||
var deps = _interopRequireWildcard(require("./node/dependencies"));
|
|
||||||
var _metaResolver = _interopRequireDefault(require("./meta-resolver"));
|
|
||||||
const _excluded = ["method", "targets", "ignoreBrowserslistConfig", "configPath", "debug", "shouldInjectPolyfill", "absoluteImports"];
|
|
||||||
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
||||||
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
||||||
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
||||||
const getTargets = _helperCompilationTargets.default.default || _helperCompilationTargets.default;
|
|
||||||
function resolveOptions(options, babelApi) {
|
|
||||||
const {
|
|
||||||
method,
|
|
||||||
targets: targetsOption,
|
|
||||||
ignoreBrowserslistConfig,
|
|
||||||
configPath,
|
|
||||||
debug,
|
|
||||||
shouldInjectPolyfill,
|
|
||||||
absoluteImports
|
|
||||||
} = options,
|
|
||||||
providerOptions = _objectWithoutPropertiesLoose(options, _excluded);
|
|
||||||
if (isEmpty(options)) {
|
|
||||||
throw new Error(`\
|
|
||||||
This plugin requires options, for example:
|
|
||||||
{
|
|
||||||
"plugins": [
|
|
||||||
["<plugin name>", { method: "usage-pure" }]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
See more options at https://github.com/babel/babel-polyfills/blob/main/docs/usage.md`);
|
|
||||||
}
|
|
||||||
let methodName;
|
|
||||||
if (method === "usage-global") methodName = "usageGlobal";else if (method === "entry-global") methodName = "entryGlobal";else if (method === "usage-pure") methodName = "usagePure";else if (typeof method !== "string") {
|
|
||||||
throw new Error(".method must be a string");
|
|
||||||
} else {
|
|
||||||
throw new Error(`.method must be one of "entry-global", "usage-global"` + ` or "usage-pure" (received ${JSON.stringify(method)})`);
|
|
||||||
}
|
|
||||||
if (typeof shouldInjectPolyfill === "function") {
|
|
||||||
if (options.include || options.exclude) {
|
|
||||||
throw new Error(`.include and .exclude are not supported when using the` + ` .shouldInjectPolyfill function.`);
|
|
||||||
}
|
|
||||||
} else if (shouldInjectPolyfill != null) {
|
|
||||||
throw new Error(`.shouldInjectPolyfill must be a function, or undefined` + ` (received ${JSON.stringify(shouldInjectPolyfill)})`);
|
|
||||||
}
|
|
||||||
if (absoluteImports != null && typeof absoluteImports !== "boolean" && typeof absoluteImports !== "string") {
|
|
||||||
throw new Error(`.absoluteImports must be a boolean, a string, or undefined` + ` (received ${JSON.stringify(absoluteImports)})`);
|
|
||||||
}
|
|
||||||
let targets;
|
|
||||||
if (
|
|
||||||
// If any browserslist-related option is specified, fallback to the old
|
|
||||||
// behavior of not using the targets specified in the top-level options.
|
|
||||||
targetsOption || configPath || ignoreBrowserslistConfig) {
|
|
||||||
const targetsObj = typeof targetsOption === "string" || Array.isArray(targetsOption) ? {
|
|
||||||
browsers: targetsOption
|
|
||||||
} : targetsOption;
|
|
||||||
targets = getTargets(targetsObj, {
|
|
||||||
ignoreBrowserslistConfig,
|
|
||||||
configPath
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
targets = babelApi.targets();
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
method,
|
|
||||||
methodName,
|
|
||||||
targets,
|
|
||||||
absoluteImports: absoluteImports != null ? absoluteImports : false,
|
|
||||||
shouldInjectPolyfill,
|
|
||||||
debug: !!debug,
|
|
||||||
providerOptions: providerOptions
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function instantiateProvider(factory, options, missingDependencies, dirname, debugLog, babelApi) {
|
|
||||||
const {
|
|
||||||
method,
|
|
||||||
methodName,
|
|
||||||
targets,
|
|
||||||
debug,
|
|
||||||
shouldInjectPolyfill,
|
|
||||||
providerOptions,
|
|
||||||
absoluteImports
|
|
||||||
} = resolveOptions(options, babelApi);
|
|
||||||
|
|
||||||
// eslint-disable-next-line prefer-const
|
|
||||||
let include, exclude;
|
|
||||||
let polyfillsSupport;
|
|
||||||
let polyfillsNames;
|
|
||||||
let filterPolyfills;
|
|
||||||
const getUtils = (0, _utils.createUtilsGetter)(new _importsInjector.default(moduleName => deps.resolve(dirname, moduleName, absoluteImports), name => {
|
|
||||||
var _polyfillsNames$get, _polyfillsNames;
|
|
||||||
return (_polyfillsNames$get = (_polyfillsNames = polyfillsNames) == null ? void 0 : _polyfillsNames.get(name)) != null ? _polyfillsNames$get : Infinity;
|
|
||||||
}));
|
|
||||||
const depsCache = new Map();
|
|
||||||
const api = {
|
|
||||||
babel: babelApi,
|
|
||||||
getUtils,
|
|
||||||
method: options.method,
|
|
||||||
targets,
|
|
||||||
createMetaResolver: _metaResolver.default,
|
|
||||||
shouldInjectPolyfill(name) {
|
|
||||||
if (polyfillsNames === undefined) {
|
|
||||||
throw new Error(`Internal error in the ${factory.name} provider: ` + `shouldInjectPolyfill() can't be called during initialization.`);
|
|
||||||
}
|
|
||||||
if (!polyfillsNames.has(name)) {
|
|
||||||
console.warn(`Internal error in the ${providerName} provider: ` + `unknown polyfill "${name}".`);
|
|
||||||
}
|
|
||||||
if (filterPolyfills && !filterPolyfills(name)) return false;
|
|
||||||
let shouldInject = (0, _helperCompilationTargets.isRequired)(name, targets, {
|
|
||||||
compatData: polyfillsSupport,
|
|
||||||
includes: include,
|
|
||||||
excludes: exclude
|
|
||||||
});
|
|
||||||
if (shouldInjectPolyfill) {
|
|
||||||
shouldInject = shouldInjectPolyfill(name, shouldInject);
|
|
||||||
if (typeof shouldInject !== "boolean") {
|
|
||||||
throw new Error(`.shouldInjectPolyfill must return a boolean.`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return shouldInject;
|
|
||||||
},
|
|
||||||
debug(name) {
|
|
||||||
var _debugLog, _debugLog$polyfillsSu;
|
|
||||||
debugLog().found = true;
|
|
||||||
if (!debug || !name) return;
|
|
||||||
if (debugLog().polyfills.has(providerName)) return;
|
|
||||||
debugLog().polyfills.add(name);
|
|
||||||
(_debugLog$polyfillsSu = (_debugLog = debugLog()).polyfillsSupport) != null ? _debugLog$polyfillsSu : _debugLog.polyfillsSupport = polyfillsSupport;
|
|
||||||
},
|
|
||||||
assertDependency(name, version = "*") {
|
|
||||||
if (missingDependencies === false) return;
|
|
||||||
if (absoluteImports) {
|
|
||||||
// If absoluteImports is not false, we will try resolving
|
|
||||||
// the dependency and throw if it's not possible. We can
|
|
||||||
// skip the check here.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const dep = version === "*" ? name : `${name}@^${version}`;
|
|
||||||
const found = missingDependencies.all ? false : mapGetOr(depsCache, `${name} :: ${dirname}`, () => deps.has(dirname, name));
|
|
||||||
if (!found) {
|
|
||||||
debugLog().missingDeps.add(dep);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
const provider = factory(api, providerOptions, dirname);
|
|
||||||
const providerName = provider.name || factory.name;
|
|
||||||
if (typeof provider[methodName] !== "function") {
|
|
||||||
throw new Error(`The "${providerName}" provider doesn't support the "${method}" polyfilling method.`);
|
|
||||||
}
|
|
||||||
if (Array.isArray(provider.polyfills)) {
|
|
||||||
polyfillsNames = new Map(provider.polyfills.map((name, index) => [name, index]));
|
|
||||||
filterPolyfills = provider.filterPolyfills;
|
|
||||||
} else if (provider.polyfills) {
|
|
||||||
polyfillsNames = new Map(Object.keys(provider.polyfills).map((name, index) => [name, index]));
|
|
||||||
polyfillsSupport = provider.polyfills;
|
|
||||||
filterPolyfills = provider.filterPolyfills;
|
|
||||||
} else {
|
|
||||||
polyfillsNames = new Map();
|
|
||||||
}
|
|
||||||
({
|
|
||||||
include,
|
|
||||||
exclude
|
|
||||||
} = (0, _normalizeOptions.validateIncludeExclude)(providerName, polyfillsNames, providerOptions.include || [], providerOptions.exclude || []));
|
|
||||||
let callProvider;
|
|
||||||
if (methodName === "usageGlobal") {
|
|
||||||
callProvider = (payload, path) => {
|
|
||||||
var _ref;
|
|
||||||
const utils = getUtils(path);
|
|
||||||
return (_ref = provider[methodName](payload, utils, path)) != null ? _ref : false;
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
callProvider = (payload, path) => {
|
|
||||||
const utils = getUtils(path);
|
|
||||||
provider[methodName](payload, utils, path);
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
debug,
|
|
||||||
method,
|
|
||||||
targets,
|
|
||||||
provider,
|
|
||||||
providerName,
|
|
||||||
callProvider
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function definePolyfillProvider(factory) {
|
|
||||||
return (0, _helperPluginUtils.declare)((babelApi, options, dirname) => {
|
|
||||||
babelApi.assertVersion("^7.0.0 || ^8.0.0-alpha.0");
|
|
||||||
const {
|
|
||||||
traverse
|
|
||||||
} = babelApi;
|
|
||||||
let debugLog;
|
|
||||||
const missingDependencies = (0, _normalizeOptions.applyMissingDependenciesDefaults)(options, babelApi);
|
|
||||||
const {
|
|
||||||
debug,
|
|
||||||
method,
|
|
||||||
targets,
|
|
||||||
provider,
|
|
||||||
providerName,
|
|
||||||
callProvider
|
|
||||||
} = instantiateProvider(factory, options, missingDependencies, dirname, () => debugLog, babelApi);
|
|
||||||
const createVisitor = method === "entry-global" ? v.entry : v.usage;
|
|
||||||
const visitor = provider.visitor ? traverse.visitors.merge([createVisitor(callProvider), provider.visitor]) : createVisitor(callProvider);
|
|
||||||
if (debug && debug !== _debugUtils.presetEnvSilentDebugHeader) {
|
|
||||||
console.log(`${providerName}: \`DEBUG\` option`);
|
|
||||||
console.log(`\nUsing targets: ${(0, _debugUtils.stringifyTargetsMultiline)(targets)}`);
|
|
||||||
console.log(`\nUsing polyfills with \`${method}\` method:`);
|
|
||||||
}
|
|
||||||
const {
|
|
||||||
runtimeName
|
|
||||||
} = provider;
|
|
||||||
return {
|
|
||||||
name: "inject-polyfills",
|
|
||||||
visitor,
|
|
||||||
pre(file) {
|
|
||||||
var _provider$pre;
|
|
||||||
if (runtimeName) {
|
|
||||||
if (file.get("runtimeHelpersModuleName") && file.get("runtimeHelpersModuleName") !== runtimeName) {
|
|
||||||
console.warn(`Two different polyfill providers` + ` (${file.get("runtimeHelpersModuleProvider")}` + ` and ${providerName}) are trying to define two` + ` conflicting @babel/runtime alternatives:` + ` ${file.get("runtimeHelpersModuleName")} and ${runtimeName}.` + ` The second one will be ignored.`);
|
|
||||||
} else {
|
|
||||||
file.set("runtimeHelpersModuleName", runtimeName);
|
|
||||||
file.set("runtimeHelpersModuleProvider", providerName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
debugLog = {
|
|
||||||
polyfills: new Set(),
|
|
||||||
polyfillsSupport: undefined,
|
|
||||||
found: false,
|
|
||||||
providers: new Set(),
|
|
||||||
missingDeps: new Set()
|
|
||||||
};
|
|
||||||
(_provider$pre = provider.pre) == null || _provider$pre.apply(this, arguments);
|
|
||||||
},
|
|
||||||
post() {
|
|
||||||
var _provider$post;
|
|
||||||
(_provider$post = provider.post) == null || _provider$post.apply(this, arguments);
|
|
||||||
if (missingDependencies !== false) {
|
|
||||||
if (missingDependencies.log === "per-file") {
|
|
||||||
deps.logMissing(debugLog.missingDeps);
|
|
||||||
} else {
|
|
||||||
deps.laterLogMissing(debugLog.missingDeps);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!debug) return;
|
|
||||||
if (this.filename) console.log(`\n[${this.filename}]`);
|
|
||||||
if (debugLog.polyfills.size === 0) {
|
|
||||||
console.log(method === "entry-global" ? debugLog.found ? `Based on your targets, the ${providerName} polyfill did not add any polyfill.` : `The entry point for the ${providerName} polyfill has not been found.` : `Based on your code and targets, the ${providerName} polyfill did not add any polyfill.`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (method === "entry-global") {
|
|
||||||
console.log(`The ${providerName} polyfill entry has been replaced with ` + `the following polyfills:`);
|
|
||||||
} else {
|
|
||||||
console.log(`The ${providerName} polyfill added the following polyfills:`);
|
|
||||||
}
|
|
||||||
for (const name of debugLog.polyfills) {
|
|
||||||
var _debugLog$polyfillsSu2;
|
|
||||||
if ((_debugLog$polyfillsSu2 = debugLog.polyfillsSupport) != null && _debugLog$polyfillsSu2[name]) {
|
|
||||||
const filteredTargets = (0, _helperCompilationTargets.getInclusionReasons)(name, targets, debugLog.polyfillsSupport);
|
|
||||||
const formattedTargets = JSON.stringify(filteredTargets).replace(/,/g, ", ").replace(/^\{"/, '{ "').replace(/"\}$/, '" }');
|
|
||||||
console.log(` ${name} ${formattedTargets}`);
|
|
||||||
} else {
|
|
||||||
console.log(` ${name}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function mapGetOr(map, key, getDefault) {
|
|
||||||
let val = map.get(key);
|
|
||||||
if (val === undefined) {
|
|
||||||
val = getDefault();
|
|
||||||
map.set(key, val);
|
|
||||||
}
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
function isEmpty(obj) {
|
|
||||||
return Object.keys(obj).length === 0;
|
|
||||||
}
|
|
||||||
51
backend/node_modules/@babel/helper-define-polyfill-provider/lib/meta-resolver.js
generated
vendored
51
backend/node_modules/@babel/helper-define-polyfill-provider/lib/meta-resolver.js
generated
vendored
|
|
@ -1,51 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
exports.__esModule = true;
|
|
||||||
exports.default = createMetaResolver;
|
|
||||||
var _utils = require("./utils");
|
|
||||||
function createMetaResolver(polyfills) {
|
|
||||||
const {
|
|
||||||
static: staticP,
|
|
||||||
instance: instanceP,
|
|
||||||
global: globalP
|
|
||||||
} = polyfills;
|
|
||||||
return meta => {
|
|
||||||
if (meta.kind === "global" && globalP && (0, _utils.has)(globalP, meta.name)) {
|
|
||||||
return {
|
|
||||||
kind: "global",
|
|
||||||
desc: globalP[meta.name],
|
|
||||||
name: meta.name
|
|
||||||
};
|
|
||||||
}
|
|
||||||
if (meta.kind === "property" || meta.kind === "in") {
|
|
||||||
const {
|
|
||||||
placement,
|
|
||||||
object,
|
|
||||||
key
|
|
||||||
} = meta;
|
|
||||||
if (object && placement === "static") {
|
|
||||||
if (globalP && _utils.PossibleGlobalObjects.has(object) && (0, _utils.has)(globalP, key)) {
|
|
||||||
return {
|
|
||||||
kind: "global",
|
|
||||||
desc: globalP[key],
|
|
||||||
name: key
|
|
||||||
};
|
|
||||||
}
|
|
||||||
if (staticP && (0, _utils.has)(staticP, object) && (0, _utils.has)(staticP[object], key)) {
|
|
||||||
return {
|
|
||||||
kind: "static",
|
|
||||||
desc: staticP[object][key],
|
|
||||||
name: `${object}$${key}`
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (instanceP && (0, _utils.has)(instanceP, key)) {
|
|
||||||
return {
|
|
||||||
kind: "instance",
|
|
||||||
desc: instanceP[key],
|
|
||||||
name: `${key}`
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
67
backend/node_modules/@babel/helper-define-polyfill-provider/lib/node/dependencies.js
generated
vendored
67
backend/node_modules/@babel/helper-define-polyfill-provider/lib/node/dependencies.js
generated
vendored
|
|
@ -1,67 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
exports.__esModule = true;
|
|
||||||
exports.has = has;
|
|
||||||
exports.laterLogMissing = laterLogMissing;
|
|
||||||
exports.logMissing = logMissing;
|
|
||||||
exports.resolve = resolve;
|
|
||||||
var _path = _interopRequireDefault(require("path"));
|
|
||||||
var _lodash = _interopRequireDefault(require("lodash.debounce"));
|
|
||||||
var _resolve = _interopRequireDefault(require("resolve"));
|
|
||||||
var _module = require("module");
|
|
||||||
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
||||||
const nativeRequireResolve = parseFloat(process.versions.node) >= 8.9;
|
|
||||||
// eslint-disable-line
|
|
||||||
|
|
||||||
function myResolve(name, basedir) {
|
|
||||||
if (nativeRequireResolve) {
|
|
||||||
return require.resolve(name, {
|
|
||||||
paths: [basedir]
|
|
||||||
}).replace(/\\/g, "/");
|
|
||||||
} else {
|
|
||||||
return _resolve.default.sync(name, {
|
|
||||||
basedir
|
|
||||||
}).replace(/\\/g, "/");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function resolve(dirname, moduleName, absoluteImports) {
|
|
||||||
if (absoluteImports === false) return moduleName;
|
|
||||||
let basedir = dirname;
|
|
||||||
if (typeof absoluteImports === "string") {
|
|
||||||
basedir = _path.default.resolve(basedir, absoluteImports);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
return myResolve(moduleName, basedir);
|
|
||||||
} catch (err) {
|
|
||||||
if (err.code !== "MODULE_NOT_FOUND") throw err;
|
|
||||||
throw Object.assign(new Error(`Failed to resolve "${moduleName}" relative to "${dirname}"`), {
|
|
||||||
code: "BABEL_POLYFILL_NOT_FOUND",
|
|
||||||
polyfill: moduleName,
|
|
||||||
dirname
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function has(basedir, name) {
|
|
||||||
try {
|
|
||||||
myResolve(name, basedir);
|
|
||||||
return true;
|
|
||||||
} catch (_unused) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function logMissing(missingDeps) {
|
|
||||||
if (missingDeps.size === 0) return;
|
|
||||||
const deps = Array.from(missingDeps).sort().join(" ");
|
|
||||||
console.warn("\nSome polyfills have been added but are not present in your dependencies.\n" + "Please run one of the following commands:\n" + `\tnpm install --save ${deps}\n` + `\tyarn add ${deps}\n`);
|
|
||||||
process.exitCode = 1;
|
|
||||||
}
|
|
||||||
let allMissingDeps = new Set();
|
|
||||||
const laterLogMissingDependencies = (0, _lodash.default)(() => {
|
|
||||||
logMissing(allMissingDeps);
|
|
||||||
allMissingDeps = new Set();
|
|
||||||
}, 100);
|
|
||||||
function laterLogMissing(missingDeps) {
|
|
||||||
if (missingDeps.size === 0) return;
|
|
||||||
missingDeps.forEach(name => allMissingDeps.add(name));
|
|
||||||
laterLogMissingDependencies();
|
|
||||||
}
|
|
||||||
70
backend/node_modules/@babel/helper-define-polyfill-provider/lib/normalize-options.js
generated
vendored
70
backend/node_modules/@babel/helper-define-polyfill-provider/lib/normalize-options.js
generated
vendored
|
|
@ -1,70 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
exports.__esModule = true;
|
|
||||||
exports.applyMissingDependenciesDefaults = applyMissingDependenciesDefaults;
|
|
||||||
exports.validateIncludeExclude = validateIncludeExclude;
|
|
||||||
var _utils = require("./utils");
|
|
||||||
function patternToRegExp(pattern) {
|
|
||||||
if (pattern instanceof RegExp) return pattern;
|
|
||||||
try {
|
|
||||||
return new RegExp(`^${pattern}$`);
|
|
||||||
} catch (_unused) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function buildUnusedError(label, unused) {
|
|
||||||
if (!unused.length) return "";
|
|
||||||
return ` - The following "${label}" patterns didn't match any polyfill:\n` + unused.map(original => ` ${String(original)}\n`).join("");
|
|
||||||
}
|
|
||||||
function buldDuplicatesError(duplicates) {
|
|
||||||
if (!duplicates.size) return "";
|
|
||||||
return ` - The following polyfills were matched both by "include" and "exclude" patterns:\n` + Array.from(duplicates, name => ` ${name}\n`).join("");
|
|
||||||
}
|
|
||||||
function validateIncludeExclude(provider, polyfills, includePatterns, excludePatterns) {
|
|
||||||
let current;
|
|
||||||
const filter = pattern => {
|
|
||||||
const regexp = patternToRegExp(pattern);
|
|
||||||
if (!regexp) return false;
|
|
||||||
let matched = false;
|
|
||||||
for (const polyfill of polyfills.keys()) {
|
|
||||||
if (regexp.test(polyfill)) {
|
|
||||||
matched = true;
|
|
||||||
current.add(polyfill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return !matched;
|
|
||||||
};
|
|
||||||
|
|
||||||
// prettier-ignore
|
|
||||||
const include = current = new Set();
|
|
||||||
const unusedInclude = Array.from(includePatterns).filter(filter);
|
|
||||||
|
|
||||||
// prettier-ignore
|
|
||||||
const exclude = current = new Set();
|
|
||||||
const unusedExclude = Array.from(excludePatterns).filter(filter);
|
|
||||||
const duplicates = (0, _utils.intersection)(include, exclude);
|
|
||||||
if (duplicates.size > 0 || unusedInclude.length > 0 || unusedExclude.length > 0) {
|
|
||||||
throw new Error(`Error while validating the "${provider}" provider options:\n` + buildUnusedError("include", unusedInclude) + buildUnusedError("exclude", unusedExclude) + buldDuplicatesError(duplicates));
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
include,
|
|
||||||
exclude
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function applyMissingDependenciesDefaults(options, babelApi) {
|
|
||||||
const {
|
|
||||||
missingDependencies = {}
|
|
||||||
} = options;
|
|
||||||
if (missingDependencies === false) return false;
|
|
||||||
const caller = babelApi.caller(caller => caller == null ? void 0 : caller.name);
|
|
||||||
const {
|
|
||||||
log = "deferred",
|
|
||||||
inject = caller === "rollup-plugin-babel" ? "throw" : "import",
|
|
||||||
all = false
|
|
||||||
} = missingDependencies;
|
|
||||||
return {
|
|
||||||
log,
|
|
||||||
inject,
|
|
||||||
all
|
|
||||||
};
|
|
||||||
}
|
|
||||||
3
backend/node_modules/@babel/helper-define-polyfill-provider/lib/types.js
generated
vendored
3
backend/node_modules/@babel/helper-define-polyfill-provider/lib/types.js
generated
vendored
|
|
@ -1,3 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
exports.__esModule = true;
|
|
||||||
405
backend/node_modules/@babel/helper-define-polyfill-provider/lib/utils.js
generated
vendored
405
backend/node_modules/@babel/helper-define-polyfill-provider/lib/utils.js
generated
vendored
|
|
@ -1,405 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
exports.__esModule = true;
|
|
||||||
exports.PossibleGlobalObjects = void 0;
|
|
||||||
exports.createUtilsGetter = createUtilsGetter;
|
|
||||||
exports.getImportSource = getImportSource;
|
|
||||||
exports.getRequireSource = getRequireSource;
|
|
||||||
exports.has = has;
|
|
||||||
exports.intersection = intersection;
|
|
||||||
exports.resolveKey = resolveKey;
|
|
||||||
exports.resolveSource = resolveSource;
|
|
||||||
var _babel = _interopRequireWildcard(require("@babel/core"));
|
|
||||||
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
||||||
const {
|
|
||||||
types: t,
|
|
||||||
template: template
|
|
||||||
} = _babel.default || _babel;
|
|
||||||
const PossibleGlobalObjects = exports.PossibleGlobalObjects = new Set(["global", "globalThis", "self", "window"]);
|
|
||||||
function intersection(a, b) {
|
|
||||||
const result = new Set();
|
|
||||||
a.forEach(v => b.has(v) && result.add(v));
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
function has(object, key) {
|
|
||||||
return Object.prototype.hasOwnProperty.call(object, key);
|
|
||||||
}
|
|
||||||
function resolve(path, seen = new Set()) {
|
|
||||||
if (seen.has(path)) return;
|
|
||||||
seen.add(path);
|
|
||||||
if (path.isVariableDeclarator()) {
|
|
||||||
if (path.get("id").isIdentifier()) {
|
|
||||||
return resolve(path.get("init"), seen);
|
|
||||||
}
|
|
||||||
} else if (path.isReferencedIdentifier()) {
|
|
||||||
const binding = path.scope.getBinding(path.node.name);
|
|
||||||
if (!binding) return path;
|
|
||||||
if (!binding.constant) return;
|
|
||||||
return resolve(binding.path, seen);
|
|
||||||
}
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
function resolveId(path) {
|
|
||||||
if (path.isIdentifier() && !path.scope.hasBinding(path.node.name, /* noGlobals */true)) {
|
|
||||||
return path.node.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
// globalThis.Object / window.Array / self.Map / global.Set -> resolve to
|
|
||||||
// the property name, because accessing a built-in through a global object
|
|
||||||
// reference is equivalent to accessing it directly.
|
|
||||||
if (path.isMemberExpression() && !path.node.computed) {
|
|
||||||
const object = path.get("object");
|
|
||||||
const property = path.get("property");
|
|
||||||
if (object.isIdentifier() && !object.scope.hasBinding(object.node.name, /* noGlobals */true) && PossibleGlobalObjects.has(object.node.name) && property.isIdentifier()) {
|
|
||||||
return property.node.name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const resolved = resolve(path);
|
|
||||||
if (resolved != null && resolved.isIdentifier()) {
|
|
||||||
return resolved.node.name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function resolveKey(path, computed = false) {
|
|
||||||
const {
|
|
||||||
scope
|
|
||||||
} = path;
|
|
||||||
if (path.isStringLiteral()) return path.node.value;
|
|
||||||
const isIdentifier = path.isIdentifier();
|
|
||||||
if (isIdentifier && !(computed || path.parent.computed)) {
|
|
||||||
return path.node.name;
|
|
||||||
}
|
|
||||||
if (computed && path.isMemberExpression() && path.get("object").isIdentifier({
|
|
||||||
name: "Symbol"
|
|
||||||
}) && !scope.hasBinding("Symbol", /* noGlobals */true)) {
|
|
||||||
const sym = resolveKey(path.get("property"), path.node.computed);
|
|
||||||
if (sym) return "Symbol." + sym;
|
|
||||||
}
|
|
||||||
if (isIdentifier ? scope.hasBinding(path.node.name, /* noGlobals */true) : path.isPure()) {
|
|
||||||
const {
|
|
||||||
value
|
|
||||||
} = path.evaluate();
|
|
||||||
if (typeof value === "string") return value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function resolveInstance(obj, seen) {
|
|
||||||
const source = resolveSource(obj, seen);
|
|
||||||
return source.placement === "prototype" ? source.id : null;
|
|
||||||
}
|
|
||||||
function resolveSource(obj, seen) {
|
|
||||||
if (seen.has(obj)) {
|
|
||||||
return {
|
|
||||||
id: null,
|
|
||||||
placement: null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
seen.add(obj);
|
|
||||||
if (obj.isMemberExpression() && obj.get("property").isIdentifier({
|
|
||||||
name: "prototype"
|
|
||||||
})) {
|
|
||||||
const id = resolveId(obj.get("object"));
|
|
||||||
if (id) {
|
|
||||||
return {
|
|
||||||
id,
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
id: null,
|
|
||||||
placement: null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
const id = resolveId(obj);
|
|
||||||
if (id) {
|
|
||||||
return {
|
|
||||||
id,
|
|
||||||
placement: "static"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
const path = resolve(obj);
|
|
||||||
switch (path == null ? void 0 : path.type) {
|
|
||||||
case "NullLiteral":
|
|
||||||
return {
|
|
||||||
id: null,
|
|
||||||
placement: null
|
|
||||||
};
|
|
||||||
case "RegExpLiteral":
|
|
||||||
return {
|
|
||||||
id: "RegExp",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
case "StringLiteral":
|
|
||||||
case "TemplateLiteral":
|
|
||||||
return {
|
|
||||||
id: "String",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
case "NumericLiteral":
|
|
||||||
return {
|
|
||||||
id: "Number",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
case "BooleanLiteral":
|
|
||||||
return {
|
|
||||||
id: "Boolean",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
case "BigIntLiteral":
|
|
||||||
return {
|
|
||||||
id: "BigInt",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
case "ObjectExpression":
|
|
||||||
return {
|
|
||||||
id: "Object",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
case "ArrayExpression":
|
|
||||||
return {
|
|
||||||
id: "Array",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
case "FunctionExpression":
|
|
||||||
case "ArrowFunctionExpression":
|
|
||||||
case "ClassExpression":
|
|
||||||
return {
|
|
||||||
id: "Function",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
// new Constructor() -> resolve the constructor name
|
|
||||||
case "NewExpression":
|
|
||||||
{
|
|
||||||
const calleeId = resolveId(path.get("callee"));
|
|
||||||
if (calleeId) return {
|
|
||||||
id: calleeId,
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
return {
|
|
||||||
id: null,
|
|
||||||
placement: null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// Unary expressions -> result type depends on operator
|
|
||||||
case "UnaryExpression":
|
|
||||||
{
|
|
||||||
const {
|
|
||||||
operator
|
|
||||||
} = path.node;
|
|
||||||
if (operator === "typeof") return {
|
|
||||||
id: "String",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
if (operator === "!" || operator === "delete") return {
|
|
||||||
id: "Boolean",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
// Unary + always produces Number (throws on BigInt)
|
|
||||||
if (operator === "+") return {
|
|
||||||
id: "Number",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
// Unary - and ~ can produce Number or BigInt depending on operand
|
|
||||||
if (operator === "-" || operator === "~") {
|
|
||||||
const arg = resolveInstance(path.get("argument"), seen);
|
|
||||||
if (arg === "BigInt") return {
|
|
||||||
id: "BigInt",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
if (arg !== null) return {
|
|
||||||
id: "Number",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
return {
|
|
||||||
id: null,
|
|
||||||
placement: null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
id: null,
|
|
||||||
placement: null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// ++i, i++ produce Number or BigInt depending on the argument
|
|
||||||
case "UpdateExpression":
|
|
||||||
{
|
|
||||||
const arg = resolveInstance(path.get("argument"), seen);
|
|
||||||
if (arg === "BigInt") return {
|
|
||||||
id: "BigInt",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
if (arg !== null) return {
|
|
||||||
id: "Number",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
return {
|
|
||||||
id: null,
|
|
||||||
placement: null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// Binary expressions -> result type depends on operator
|
|
||||||
case "BinaryExpression":
|
|
||||||
{
|
|
||||||
const {
|
|
||||||
operator
|
|
||||||
} = path.node;
|
|
||||||
if (operator === "==" || operator === "!=" || operator === "===" || operator === "!==" || operator === "<" || operator === ">" || operator === "<=" || operator === ">=" || operator === "instanceof" || operator === "in") {
|
|
||||||
return {
|
|
||||||
id: "Boolean",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// >>> always produces Number
|
|
||||||
if (operator === ">>>") {
|
|
||||||
return {
|
|
||||||
id: "Number",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// Arithmetic and bitwise operators can produce Number or BigInt
|
|
||||||
if (operator === "-" || operator === "*" || operator === "/" || operator === "%" || operator === "**" || operator === "&" || operator === "|" || operator === "^" || operator === "<<" || operator === ">>") {
|
|
||||||
const left = resolveInstance(path.get("left"), seen);
|
|
||||||
const right = resolveInstance(path.get("right"), seen);
|
|
||||||
if (left === "BigInt" && right === "BigInt") {
|
|
||||||
return {
|
|
||||||
id: "BigInt",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
if (left !== null && right !== null) {
|
|
||||||
return {
|
|
||||||
id: "Number",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
id: null,
|
|
||||||
placement: null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// + depends on operand types: string wins, otherwise number or bigint
|
|
||||||
if (operator === "+") {
|
|
||||||
const left = resolveInstance(path.get("left"), seen);
|
|
||||||
const right = resolveInstance(path.get("right"), seen);
|
|
||||||
if (left === "String" || right === "String") {
|
|
||||||
return {
|
|
||||||
id: "String",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
if (left === "Number" && right === "Number") {
|
|
||||||
return {
|
|
||||||
id: "Number",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
if (left === "BigInt" && right === "BigInt") {
|
|
||||||
return {
|
|
||||||
id: "BigInt",
|
|
||||||
placement: "prototype"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
id: null,
|
|
||||||
placement: null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// (a, b, c) -> the result is the last expression
|
|
||||||
case "SequenceExpression":
|
|
||||||
{
|
|
||||||
const expressions = path.get("expressions");
|
|
||||||
return resolveSource(expressions[expressions.length - 1], seen);
|
|
||||||
}
|
|
||||||
// a = b -> the result is the right side
|
|
||||||
case "AssignmentExpression":
|
|
||||||
{
|
|
||||||
if (path.node.operator === "=") {
|
|
||||||
return resolveSource(path.get("right"), seen);
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
id: null,
|
|
||||||
placement: null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// a ? b : c -> if both branches resolve to the same type, use it
|
|
||||||
case "ConditionalExpression":
|
|
||||||
{
|
|
||||||
const consequent = resolveSource(path.get("consequent"), seen);
|
|
||||||
const alternate = resolveSource(path.get("alternate"), seen);
|
|
||||||
if (consequent.id && consequent.id === alternate.id) {
|
|
||||||
return consequent;
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
id: null,
|
|
||||||
placement: null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// (expr) -> unwrap parenthesized expressions
|
|
||||||
case "ParenthesizedExpression":
|
|
||||||
return resolveSource(path.get("expression"), seen);
|
|
||||||
// TypeScript / Flow type wrappers -> unwrap to the inner expression
|
|
||||||
case "TSAsExpression":
|
|
||||||
case "TSSatisfiesExpression":
|
|
||||||
case "TSNonNullExpression":
|
|
||||||
case "TSInstantiationExpression":
|
|
||||||
case "TSTypeAssertion":
|
|
||||||
case "TypeCastExpression":
|
|
||||||
return resolveSource(path.get("expression"), seen);
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
id: null,
|
|
||||||
placement: null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function getImportSource({
|
|
||||||
node
|
|
||||||
}) {
|
|
||||||
if (node.specifiers.length === 0) return node.source.value;
|
|
||||||
}
|
|
||||||
function getRequireSource({
|
|
||||||
node
|
|
||||||
}) {
|
|
||||||
if (!t.isExpressionStatement(node)) return;
|
|
||||||
const {
|
|
||||||
expression
|
|
||||||
} = node;
|
|
||||||
if (t.isCallExpression(expression) && t.isIdentifier(expression.callee) && expression.callee.name === "require" && expression.arguments.length === 1 && t.isStringLiteral(expression.arguments[0])) {
|
|
||||||
return expression.arguments[0].value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function hoist(node) {
|
|
||||||
// @ts-expect-error
|
|
||||||
node._blockHoist = 3;
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
function createUtilsGetter(cache) {
|
|
||||||
return path => {
|
|
||||||
const prog = path.findParent(p => p.isProgram());
|
|
||||||
return {
|
|
||||||
injectGlobalImport(url, moduleName) {
|
|
||||||
cache.storeAnonymous(prog, url, moduleName, (isScript, source) => {
|
|
||||||
return isScript ? template.statement.ast`require(${source})` : t.importDeclaration([], source);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
injectNamedImport(url, name, hint = name, moduleName) {
|
|
||||||
return cache.storeNamed(prog, url, name, moduleName, (isScript, source, name) => {
|
|
||||||
const id = prog.scope.generateUidIdentifier(hint);
|
|
||||||
return {
|
|
||||||
node: isScript ? hoist(template.statement.ast`
|
|
||||||
var ${id} = require(${source}).${name}
|
|
||||||
`) : t.importDeclaration([t.importSpecifier(id, name)], source),
|
|
||||||
name: id.name
|
|
||||||
};
|
|
||||||
});
|
|
||||||
},
|
|
||||||
injectDefaultImport(url, hint = url, moduleName) {
|
|
||||||
return cache.storeNamed(prog, url, "default", moduleName, (isScript, source) => {
|
|
||||||
const id = prog.scope.generateUidIdentifier(hint);
|
|
||||||
return {
|
|
||||||
node: isScript ? hoist(template.statement.ast`var ${id} = require(${source})`) : t.importDeclaration([t.importDefaultSpecifier(id)], source),
|
|
||||||
name: id.name
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
26
backend/node_modules/@babel/helper-define-polyfill-provider/lib/visitors/entry.js
generated
vendored
26
backend/node_modules/@babel/helper-define-polyfill-provider/lib/visitors/entry.js
generated
vendored
|
|
@ -1,26 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
exports.__esModule = true;
|
|
||||||
exports.default = void 0;
|
|
||||||
var _utils = require("../utils");
|
|
||||||
var _default = callProvider => ({
|
|
||||||
ImportDeclaration(path) {
|
|
||||||
const source = (0, _utils.getImportSource)(path);
|
|
||||||
if (!source) return;
|
|
||||||
callProvider({
|
|
||||||
kind: "import",
|
|
||||||
source
|
|
||||||
}, path);
|
|
||||||
},
|
|
||||||
Program(path) {
|
|
||||||
path.get("body").forEach(bodyPath => {
|
|
||||||
const source = (0, _utils.getRequireSource)(bodyPath);
|
|
||||||
if (!source) return;
|
|
||||||
callProvider({
|
|
||||||
kind: "import",
|
|
||||||
source
|
|
||||||
}, bodyPath);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
exports.default = _default;
|
|
||||||
9
backend/node_modules/@babel/helper-define-polyfill-provider/lib/visitors/index.js
generated
vendored
9
backend/node_modules/@babel/helper-define-polyfill-provider/lib/visitors/index.js
generated
vendored
|
|
@ -1,9 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
exports.__esModule = true;
|
|
||||||
exports.usage = exports.entry = void 0;
|
|
||||||
var _usage = _interopRequireDefault(require("./usage"));
|
|
||||||
exports.usage = _usage.default;
|
|
||||||
var _entry = _interopRequireDefault(require("./entry"));
|
|
||||||
exports.entry = _entry.default;
|
|
||||||
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
||||||
132
backend/node_modules/@babel/helper-define-polyfill-provider/lib/visitors/usage.js
generated
vendored
132
backend/node_modules/@babel/helper-define-polyfill-provider/lib/visitors/usage.js
generated
vendored
|
|
@ -1,132 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
exports.__esModule = true;
|
|
||||||
exports.default = void 0;
|
|
||||||
var _utils = require("../utils");
|
|
||||||
function isRemoved(path) {
|
|
||||||
if (path.removed) return true;
|
|
||||||
if (!path.parentPath) return false;
|
|
||||||
if (path.listKey) {
|
|
||||||
var _path$parentPath$node;
|
|
||||||
if (!((_path$parentPath$node = path.parentPath.node) != null && (_path$parentPath$node = _path$parentPath$node[path.listKey]) != null && _path$parentPath$node.includes(path.node))) return true;
|
|
||||||
} else {
|
|
||||||
var _path$parentPath$node2;
|
|
||||||
if (((_path$parentPath$node2 = path.parentPath.node) == null ? void 0 : _path$parentPath$node2[path.key]) !== path.node) return true;
|
|
||||||
}
|
|
||||||
return isRemoved(path.parentPath);
|
|
||||||
}
|
|
||||||
var _default = callProvider => {
|
|
||||||
function property(object, key, placement, path) {
|
|
||||||
return callProvider({
|
|
||||||
kind: "property",
|
|
||||||
object,
|
|
||||||
key,
|
|
||||||
placement
|
|
||||||
}, path);
|
|
||||||
}
|
|
||||||
function handleReferencedIdentifier(path) {
|
|
||||||
const {
|
|
||||||
node: {
|
|
||||||
name
|
|
||||||
},
|
|
||||||
scope
|
|
||||||
} = path;
|
|
||||||
if (scope.getBindingIdentifier(name)) return;
|
|
||||||
callProvider({
|
|
||||||
kind: "global",
|
|
||||||
name
|
|
||||||
}, path);
|
|
||||||
}
|
|
||||||
function analyzeMemberExpression(path) {
|
|
||||||
const key = (0, _utils.resolveKey)(path.get("property"), path.node.computed);
|
|
||||||
return {
|
|
||||||
key,
|
|
||||||
handleAsMemberExpression: !!key && key !== "prototype"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
// Symbol(), new Promise
|
|
||||||
ReferencedIdentifier(path) {
|
|
||||||
const {
|
|
||||||
parentPath
|
|
||||||
} = path;
|
|
||||||
if (parentPath.isMemberExpression({
|
|
||||||
object: path.node
|
|
||||||
}) && analyzeMemberExpression(parentPath).handleAsMemberExpression) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
handleReferencedIdentifier(path);
|
|
||||||
},
|
|
||||||
"MemberExpression|OptionalMemberExpression"(path) {
|
|
||||||
const {
|
|
||||||
key,
|
|
||||||
handleAsMemberExpression
|
|
||||||
} = analyzeMemberExpression(path);
|
|
||||||
if (!handleAsMemberExpression) return;
|
|
||||||
const object = path.get("object");
|
|
||||||
let objectIsGlobalIdentifier = object.isIdentifier();
|
|
||||||
if (objectIsGlobalIdentifier) {
|
|
||||||
const binding = object.scope.getBinding(object.node.name);
|
|
||||||
if (binding) {
|
|
||||||
if (binding.path.isImportNamespaceSpecifier()) return;
|
|
||||||
objectIsGlobalIdentifier = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const source = (0, _utils.resolveSource)(object, new Set());
|
|
||||||
const skipObject = property(source.id, key, source.placement, path);
|
|
||||||
const canHandleObject = objectIsGlobalIdentifier && !path.shouldSkip && !object.shouldSkip && !isRemoved(object);
|
|
||||||
if (canHandleObject && (!skipObject || _utils.PossibleGlobalObjects.has(source.id))) {
|
|
||||||
handleReferencedIdentifier(object);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
ObjectPattern(path) {
|
|
||||||
const {
|
|
||||||
parentPath,
|
|
||||||
parent
|
|
||||||
} = path;
|
|
||||||
let obj;
|
|
||||||
|
|
||||||
// const { keys, values } = Object
|
|
||||||
if (parentPath.isVariableDeclarator()) {
|
|
||||||
obj = parentPath.get("init");
|
|
||||||
// ({ keys, values } = Object)
|
|
||||||
} else if (parentPath.isAssignmentExpression()) {
|
|
||||||
obj = parentPath.get("right");
|
|
||||||
// !function ({ keys, values }) {...} (Object)
|
|
||||||
// resolution does not work after properties transform :-(
|
|
||||||
} else if (parentPath.isFunction()) {
|
|
||||||
const grand = parentPath.parentPath;
|
|
||||||
if (grand.isCallExpression() || grand.isNewExpression()) {
|
|
||||||
if (grand.node.callee === parent) {
|
|
||||||
obj = grand.get("arguments")[path.key];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let id = null;
|
|
||||||
let placement = null;
|
|
||||||
if (obj) ({
|
|
||||||
id,
|
|
||||||
placement
|
|
||||||
} = (0, _utils.resolveSource)(obj, new Set()));
|
|
||||||
for (const prop of path.get("properties")) {
|
|
||||||
if (prop.isObjectProperty()) {
|
|
||||||
const key = (0, _utils.resolveKey)(prop.get("key"));
|
|
||||||
if (key) property(id, key, placement, prop);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
BinaryExpression(path) {
|
|
||||||
if (path.node.operator !== "in") return;
|
|
||||||
const source = (0, _utils.resolveSource)(path.get("right"), new Set());
|
|
||||||
const key = (0, _utils.resolveKey)(path.get("left"), true);
|
|
||||||
if (!key) return;
|
|
||||||
callProvider({
|
|
||||||
kind: "in",
|
|
||||||
object: source.id,
|
|
||||||
key,
|
|
||||||
placement: source.placement
|
|
||||||
}, path);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
exports.default = _default;
|
|
||||||
59
backend/node_modules/@babel/helper-define-polyfill-provider/package.json
generated
vendored
59
backend/node_modules/@babel/helper-define-polyfill-provider/package.json
generated
vendored
|
|
@ -1,59 +0,0 @@
|
||||||
{
|
|
||||||
"name": "@babel/helper-define-polyfill-provider",
|
|
||||||
"version": "0.6.8",
|
|
||||||
"description": "Babel helper to create your own polyfill provider",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/babel/babel-polyfills.git",
|
|
||||||
"directory": "packages/babel-helper-define-polyfill-provider"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"babel-plugin"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"main": "lib/index.js",
|
|
||||||
"browser": {
|
|
||||||
"./lib/node/dependencies.js": "./lib/browser/dependencies.js",
|
|
||||||
"./src/node/dependencies.js": "./src/browser/dependencies.js"
|
|
||||||
},
|
|
||||||
"exports": {
|
|
||||||
".": [
|
|
||||||
{
|
|
||||||
"import": {
|
|
||||||
"node": "./esm/index.node.mjs",
|
|
||||||
"browser": "./esm/index.browser.mjs"
|
|
||||||
},
|
|
||||||
"default": "./lib/index.js"
|
|
||||||
},
|
|
||||||
"./lib/index.js"
|
|
||||||
],
|
|
||||||
"./package.json": "./package.json"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/helper-compilation-targets": "^7.28.6",
|
|
||||||
"@babel/helper-plugin-utils": "^7.28.6",
|
|
||||||
"debug": "^4.4.3",
|
|
||||||
"lodash.debounce": "^4.0.8",
|
|
||||||
"resolve": "^1.22.11"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@babel/cli": "^7.28.6",
|
|
||||||
"@babel/core": "^7.28.6",
|
|
||||||
"@babel/generator": "^7.28.6",
|
|
||||||
"@babel/plugin-transform-modules-commonjs": "^7.28.6",
|
|
||||||
"@babel/traverse": "^7.28.6",
|
|
||||||
"babel-loader": "^8.4.1",
|
|
||||||
"rollup": "^2.79.2",
|
|
||||||
"rollup-plugin-babel": "^4.4.0",
|
|
||||||
"strip-ansi": "^6.0.1",
|
|
||||||
"webpack": "^4.47.0",
|
|
||||||
"webpack-cli": "^3.3.12"
|
|
||||||
},
|
|
||||||
"gitHead": "86eff78e98adc17cdf0eb9ba4d94140eb7cb0da0"
|
|
||||||
}
|
|
||||||
19
backend/node_modules/@babel/helper-member-expression-to-functions/README.md
generated
vendored
19
backend/node_modules/@babel/helper-member-expression-to-functions/README.md
generated
vendored
|
|
@ -1,19 +0,0 @@
|
||||||
# @babel/helper-member-expression-to-functions
|
|
||||||
|
|
||||||
> Helper function to replace certain member expressions with function calls
|
|
||||||
|
|
||||||
See our website [@babel/helper-member-expression-to-functions](https://babeljs.io/docs/babel-helper-member-expression-to-functions) for more information.
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
Using npm:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install --save @babel/helper-member-expression-to-functions
|
|
||||||
```
|
|
||||||
|
|
||||||
or using yarn:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add @babel/helper-member-expression-to-functions
|
|
||||||
```
|
|
||||||
400
backend/node_modules/@babel/helper-member-expression-to-functions/lib/index.js
generated
vendored
400
backend/node_modules/@babel/helper-member-expression-to-functions/lib/index.js
generated
vendored
|
|
@ -1,400 +0,0 @@
|
||||||
'use strict';
|
|
||||||
|
|
||||||
Object.defineProperty(exports, '__esModule', { value: true });
|
|
||||||
|
|
||||||
var _t = require('@babel/types');
|
|
||||||
|
|
||||||
function _interopNamespace(e) {
|
|
||||||
if (e && e.__esModule) return e;
|
|
||||||
var n = Object.create(null);
|
|
||||||
if (e) {
|
|
||||||
Object.keys(e).forEach(function (k) {
|
|
||||||
if (k !== 'default') {
|
|
||||||
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
||||||
Object.defineProperty(n, k, d.get ? d : {
|
|
||||||
enumerable: true,
|
|
||||||
get: function () { return e[k]; }
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
n.default = e;
|
|
||||||
return Object.freeze(n);
|
|
||||||
}
|
|
||||||
|
|
||||||
var _t__namespace = /*#__PURE__*/_interopNamespace(_t);
|
|
||||||
|
|
||||||
function willPathCastToBoolean(path) {
|
|
||||||
const maybeWrapped = path;
|
|
||||||
const {
|
|
||||||
node,
|
|
||||||
parentPath
|
|
||||||
} = maybeWrapped;
|
|
||||||
if (parentPath.isLogicalExpression()) {
|
|
||||||
const {
|
|
||||||
operator,
|
|
||||||
right
|
|
||||||
} = parentPath.node;
|
|
||||||
if (operator === "&&" || operator === "||" || operator === "??" && node === right) {
|
|
||||||
return willPathCastToBoolean(parentPath);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (parentPath.isSequenceExpression()) {
|
|
||||||
const {
|
|
||||||
expressions
|
|
||||||
} = parentPath.node;
|
|
||||||
if (expressions[expressions.length - 1] === node) {
|
|
||||||
return willPathCastToBoolean(parentPath);
|
|
||||||
} else {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return parentPath.isConditional({
|
|
||||||
test: node
|
|
||||||
}) || parentPath.isUnaryExpression({
|
|
||||||
operator: "!"
|
|
||||||
}) || parentPath.isForStatement({
|
|
||||||
test: node
|
|
||||||
}) || parentPath.isWhile({
|
|
||||||
test: node
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const {
|
|
||||||
LOGICAL_OPERATORS,
|
|
||||||
arrowFunctionExpression,
|
|
||||||
assignmentExpression,
|
|
||||||
binaryExpression,
|
|
||||||
booleanLiteral,
|
|
||||||
callExpression,
|
|
||||||
cloneNode,
|
|
||||||
conditionalExpression,
|
|
||||||
identifier,
|
|
||||||
isMemberExpression,
|
|
||||||
isOptionalCallExpression,
|
|
||||||
isOptionalMemberExpression,
|
|
||||||
isUpdateExpression,
|
|
||||||
logicalExpression,
|
|
||||||
memberExpression,
|
|
||||||
nullLiteral,
|
|
||||||
optionalCallExpression,
|
|
||||||
optionalMemberExpression,
|
|
||||||
sequenceExpression,
|
|
||||||
updateExpression
|
|
||||||
} = _t__namespace;
|
|
||||||
class AssignmentMemoiser {
|
|
||||||
constructor() {
|
|
||||||
this._map = void 0;
|
|
||||||
this._map = new WeakMap();
|
|
||||||
}
|
|
||||||
has(key) {
|
|
||||||
return this._map.has(key);
|
|
||||||
}
|
|
||||||
get(key) {
|
|
||||||
if (!this.has(key)) return;
|
|
||||||
const record = this._map.get(key);
|
|
||||||
const {
|
|
||||||
value
|
|
||||||
} = record;
|
|
||||||
record.count--;
|
|
||||||
if (record.count === 0) {
|
|
||||||
return assignmentExpression("=", value, key);
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
set(key, value, count) {
|
|
||||||
return this._map.set(key, {
|
|
||||||
count,
|
|
||||||
value
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function toNonOptional(path, base) {
|
|
||||||
const {
|
|
||||||
node
|
|
||||||
} = path;
|
|
||||||
if (isOptionalMemberExpression(node)) {
|
|
||||||
return memberExpression(base, node.property, node.computed);
|
|
||||||
}
|
|
||||||
if (path.isOptionalCallExpression()) {
|
|
||||||
const callee = path.get("callee");
|
|
||||||
if (path.node.optional && callee.isOptionalMemberExpression()) {
|
|
||||||
const object = callee.node.object;
|
|
||||||
const context = path.scope.maybeGenerateMemoised(object);
|
|
||||||
callee.get("object").replaceWith(assignmentExpression("=", context, object));
|
|
||||||
return callExpression(memberExpression(base, identifier("call")), [context, ...path.node.arguments]);
|
|
||||||
}
|
|
||||||
return callExpression(base, path.node.arguments);
|
|
||||||
}
|
|
||||||
return path.node;
|
|
||||||
}
|
|
||||||
function isInDetachedTree(path) {
|
|
||||||
while (path) {
|
|
||||||
if (path.isProgram()) break;
|
|
||||||
const {
|
|
||||||
parentPath,
|
|
||||||
container,
|
|
||||||
listKey
|
|
||||||
} = path;
|
|
||||||
const parentNode = parentPath.node;
|
|
||||||
if (listKey) {
|
|
||||||
if (container !== parentNode[listKey]) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (container !== parentNode) return true;
|
|
||||||
}
|
|
||||||
path = parentPath;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
const handle = {
|
|
||||||
memoise() {},
|
|
||||||
handle(member, noDocumentAll) {
|
|
||||||
const {
|
|
||||||
node,
|
|
||||||
parent,
|
|
||||||
parentPath,
|
|
||||||
scope
|
|
||||||
} = member;
|
|
||||||
if (member.isOptionalMemberExpression()) {
|
|
||||||
if (isInDetachedTree(member)) return;
|
|
||||||
const endPath = member.find(({
|
|
||||||
node,
|
|
||||||
parent
|
|
||||||
}) => {
|
|
||||||
if (isOptionalMemberExpression(parent)) {
|
|
||||||
return parent.optional || parent.object !== node;
|
|
||||||
}
|
|
||||||
if (isOptionalCallExpression(parent)) {
|
|
||||||
return (node !== member.node && parent.optional || parent.callee !== node
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
if (scope.path.isPattern()) {
|
|
||||||
endPath.replaceWith(callExpression(arrowFunctionExpression([], endPath.node), []));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const willEndPathCastToBoolean = willPathCastToBoolean(endPath);
|
|
||||||
const rootParentPath = endPath.parentPath;
|
|
||||||
if (rootParentPath.isUpdateExpression({
|
|
||||||
argument: node
|
|
||||||
})) {
|
|
||||||
throw member.buildCodeFrameError(`can't handle update expression`);
|
|
||||||
}
|
|
||||||
const isAssignment = rootParentPath.isAssignmentExpression({
|
|
||||||
left: endPath.node
|
|
||||||
});
|
|
||||||
const isDeleteOperation = rootParentPath.isUnaryExpression({
|
|
||||||
operator: "delete"
|
|
||||||
});
|
|
||||||
if (isDeleteOperation && endPath.isOptionalMemberExpression() && endPath.get("property").isPrivateName()) {
|
|
||||||
throw member.buildCodeFrameError(`can't delete a private class element`);
|
|
||||||
}
|
|
||||||
let startingOptional = member;
|
|
||||||
for (;;) {
|
|
||||||
if (startingOptional.isOptionalMemberExpression()) {
|
|
||||||
if (startingOptional.node.optional) break;
|
|
||||||
startingOptional = startingOptional.get("object");
|
|
||||||
continue;
|
|
||||||
} else if (startingOptional.isOptionalCallExpression()) {
|
|
||||||
if (startingOptional.node.optional) break;
|
|
||||||
startingOptional = startingOptional.get("callee");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
throw new Error(`Internal error: unexpected ${startingOptional.node.type}`);
|
|
||||||
}
|
|
||||||
const startingNode = startingOptional.isOptionalMemberExpression() ? startingOptional.node.object : startingOptional.node.callee;
|
|
||||||
const baseNeedsMemoised = scope.maybeGenerateMemoised(startingNode);
|
|
||||||
const baseRef = baseNeedsMemoised != null ? baseNeedsMemoised : startingNode;
|
|
||||||
const parentIsOptionalCall = parentPath.isOptionalCallExpression({
|
|
||||||
callee: node
|
|
||||||
});
|
|
||||||
const isOptionalCall = parent => parentIsOptionalCall;
|
|
||||||
const parentIsCall = parentPath.isCallExpression({
|
|
||||||
callee: node
|
|
||||||
});
|
|
||||||
startingOptional.replaceWith(toNonOptional(startingOptional, baseRef));
|
|
||||||
if (isOptionalCall()) {
|
|
||||||
if (parent.optional) {
|
|
||||||
parentPath.replaceWith(this.optionalCall(member, parent.arguments));
|
|
||||||
} else {
|
|
||||||
parentPath.replaceWith(this.call(member, parent.arguments));
|
|
||||||
}
|
|
||||||
} else if (parentIsCall) {
|
|
||||||
member.replaceWith(this.boundGet(member));
|
|
||||||
} else if (this.delete && parentPath.isUnaryExpression({
|
|
||||||
operator: "delete"
|
|
||||||
})) {
|
|
||||||
parentPath.replaceWith(this.delete(member));
|
|
||||||
} else if (parentPath.isAssignmentExpression()) {
|
|
||||||
handleAssignment(this, member, parentPath);
|
|
||||||
} else {
|
|
||||||
member.replaceWith(this.get(member));
|
|
||||||
}
|
|
||||||
let regular = member.node;
|
|
||||||
for (let current = member; current !== endPath;) {
|
|
||||||
const parentPath = current.parentPath;
|
|
||||||
if (parentPath === endPath && isOptionalCall() && parent.optional) {
|
|
||||||
regular = parentPath.node;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
regular = toNonOptional(parentPath, regular);
|
|
||||||
current = parentPath;
|
|
||||||
}
|
|
||||||
let context;
|
|
||||||
const endParentPath = endPath.parentPath;
|
|
||||||
if (isMemberExpression(regular) && endParentPath.isOptionalCallExpression({
|
|
||||||
callee: endPath.node,
|
|
||||||
optional: true
|
|
||||||
})) {
|
|
||||||
const {
|
|
||||||
object
|
|
||||||
} = regular;
|
|
||||||
context = member.scope.maybeGenerateMemoised(object);
|
|
||||||
if (context) {
|
|
||||||
regular.object = assignmentExpression("=", context, object);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let replacementPath = endPath;
|
|
||||||
if (isDeleteOperation || isAssignment) {
|
|
||||||
replacementPath = endParentPath;
|
|
||||||
regular = endParentPath.node;
|
|
||||||
}
|
|
||||||
const baseMemoised = baseNeedsMemoised ? assignmentExpression("=", cloneNode(baseRef), cloneNode(startingNode)) : cloneNode(baseRef);
|
|
||||||
if (willEndPathCastToBoolean) {
|
|
||||||
let nonNullishCheck;
|
|
||||||
if (noDocumentAll) {
|
|
||||||
nonNullishCheck = binaryExpression("!=", baseMemoised, nullLiteral());
|
|
||||||
} else {
|
|
||||||
nonNullishCheck = logicalExpression("&&", binaryExpression("!==", baseMemoised, nullLiteral()), binaryExpression("!==", cloneNode(baseRef), scope.buildUndefinedNode()));
|
|
||||||
}
|
|
||||||
replacementPath.replaceWith(logicalExpression("&&", nonNullishCheck, regular));
|
|
||||||
} else {
|
|
||||||
let nullishCheck;
|
|
||||||
if (noDocumentAll) {
|
|
||||||
nullishCheck = binaryExpression("==", baseMemoised, nullLiteral());
|
|
||||||
} else {
|
|
||||||
nullishCheck = logicalExpression("||", binaryExpression("===", baseMemoised, nullLiteral()), binaryExpression("===", cloneNode(baseRef), scope.buildUndefinedNode()));
|
|
||||||
}
|
|
||||||
replacementPath.replaceWith(conditionalExpression(nullishCheck, isDeleteOperation ? booleanLiteral(true) : scope.buildUndefinedNode(), regular));
|
|
||||||
}
|
|
||||||
if (context) {
|
|
||||||
const endParent = endParentPath.node;
|
|
||||||
endParentPath.replaceWith(optionalCallExpression(optionalMemberExpression(endParent.callee, identifier("call"), false, true), [cloneNode(context), ...endParent.arguments], false));
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (isUpdateExpression(parent, {
|
|
||||||
argument: node
|
|
||||||
})) {
|
|
||||||
if (this.simpleSet) {
|
|
||||||
member.replaceWith(this.simpleSet(member));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const {
|
|
||||||
operator,
|
|
||||||
prefix
|
|
||||||
} = parent;
|
|
||||||
this.memoise(member, 2);
|
|
||||||
const ref = scope.generateUidIdentifierBasedOnNode(node);
|
|
||||||
scope.push({
|
|
||||||
id: ref
|
|
||||||
});
|
|
||||||
const seq = [assignmentExpression("=", cloneNode(ref), this.get(member))];
|
|
||||||
if (prefix) {
|
|
||||||
seq.push(updateExpression(operator, cloneNode(ref), prefix));
|
|
||||||
const value = sequenceExpression(seq);
|
|
||||||
parentPath.replaceWith(this.set(member, value));
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
const ref2 = scope.generateUidIdentifierBasedOnNode(node);
|
|
||||||
scope.push({
|
|
||||||
id: ref2
|
|
||||||
});
|
|
||||||
seq.push(assignmentExpression("=", cloneNode(ref2), updateExpression(operator, cloneNode(ref), prefix)), cloneNode(ref));
|
|
||||||
const value = sequenceExpression(seq);
|
|
||||||
parentPath.replaceWith(sequenceExpression([this.set(member, value), cloneNode(ref2)]));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (parentPath.isAssignmentExpression({
|
|
||||||
left: node
|
|
||||||
})) {
|
|
||||||
handleAssignment(this, member, parentPath);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (parentPath.isCallExpression({
|
|
||||||
callee: node
|
|
||||||
})) {
|
|
||||||
parentPath.replaceWith(this.call(member, parentPath.node.arguments));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (parentPath.isOptionalCallExpression({
|
|
||||||
callee: node
|
|
||||||
})) {
|
|
||||||
if (scope.path.isPattern()) {
|
|
||||||
parentPath.replaceWith(callExpression(arrowFunctionExpression([], parentPath.node), []));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
parentPath.replaceWith(this.optionalCall(member, parentPath.node.arguments));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (this.delete && parentPath.isUnaryExpression({
|
|
||||||
operator: "delete"
|
|
||||||
})) {
|
|
||||||
parentPath.replaceWith(this.delete(member));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (parentPath.isForXStatement({
|
|
||||||
left: node
|
|
||||||
}) || parentPath.isObjectProperty({
|
|
||||||
value: node
|
|
||||||
}) && parentPath.parentPath.isObjectPattern() || parentPath.isAssignmentPattern({
|
|
||||||
left: node
|
|
||||||
}) && parentPath.parentPath.isObjectProperty({
|
|
||||||
value: parent
|
|
||||||
}) && parentPath.parentPath.parentPath.isObjectPattern() || parentPath.isArrayPattern() || parentPath.isAssignmentPattern({
|
|
||||||
left: node
|
|
||||||
}) && parentPath.parentPath.isArrayPattern() || parentPath.isRestElement()) {
|
|
||||||
member.replaceWith(this.destructureSet(member));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (parentPath.isTaggedTemplateExpression()) {
|
|
||||||
member.replaceWith(this.boundGet(member));
|
|
||||||
} else {
|
|
||||||
member.replaceWith(this.get(member));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
function handleAssignment(state, member, parentPath) {
|
|
||||||
if (state.simpleSet) {
|
|
||||||
member.replaceWith(state.simpleSet(member));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const {
|
|
||||||
operator,
|
|
||||||
right: value
|
|
||||||
} = parentPath.node;
|
|
||||||
if (operator === "=") {
|
|
||||||
parentPath.replaceWith(state.set(member, value));
|
|
||||||
} else {
|
|
||||||
const operatorTrunc = operator.slice(0, -1);
|
|
||||||
if (LOGICAL_OPERATORS.includes(operatorTrunc)) {
|
|
||||||
state.memoise(member, 1);
|
|
||||||
parentPath.replaceWith(logicalExpression(operatorTrunc, state.get(member), state.set(member, value)));
|
|
||||||
} else {
|
|
||||||
state.memoise(member, 2);
|
|
||||||
parentPath.replaceWith(state.set(member, binaryExpression(operatorTrunc, state.get(member), value)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function memberExpressionToFunctions(path, visitor, state) {
|
|
||||||
path.traverse(visitor, Object.assign({}, handle, state, {
|
|
||||||
memoiser: new AssignmentMemoiser()
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.default = memberExpressionToFunctions;
|
|
||||||
//# sourceMappingURL=index.js.map
|
|
||||||
1
backend/node_modules/@babel/helper-member-expression-to-functions/lib/index.js.map
generated
vendored
1
backend/node_modules/@babel/helper-member-expression-to-functions/lib/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
25
backend/node_modules/@babel/helper-member-expression-to-functions/package.json
generated
vendored
25
backend/node_modules/@babel/helper-member-expression-to-functions/package.json
generated
vendored
|
|
@ -1,25 +0,0 @@
|
||||||
{
|
|
||||||
"name": "@babel/helper-member-expression-to-functions",
|
|
||||||
"version": "7.28.5",
|
|
||||||
"description": "Helper function to replace certain member expressions with function calls",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/babel/babel.git",
|
|
||||||
"directory": "packages/babel-helper-member-expression-to-functions"
|
|
||||||
},
|
|
||||||
"homepage": "https://babel.dev/docs/en/next/babel-helper-member-expression-to-functions",
|
|
||||||
"license": "MIT",
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"main": "./lib/index.js",
|
|
||||||
"author": "The Babel Team (https://babel.dev/team)",
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/traverse": "^7.28.5",
|
|
||||||
"@babel/types": "^7.28.5"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.9.0"
|
|
||||||
},
|
|
||||||
"type": "commonjs"
|
|
||||||
}
|
|
||||||
19
backend/node_modules/@babel/helper-optimise-call-expression/README.md
generated
vendored
19
backend/node_modules/@babel/helper-optimise-call-expression/README.md
generated
vendored
|
|
@ -1,19 +0,0 @@
|
||||||
# @babel/helper-optimise-call-expression
|
|
||||||
|
|
||||||
> Helper function to optimise call expression
|
|
||||||
|
|
||||||
See our website [@babel/helper-optimise-call-expression](https://babeljs.io/docs/babel-helper-optimise-call-expression) for more information.
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
Using npm:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install --save @babel/helper-optimise-call-expression
|
|
||||||
```
|
|
||||||
|
|
||||||
or using yarn:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add @babel/helper-optimise-call-expression
|
|
||||||
```
|
|
||||||
33
backend/node_modules/@babel/helper-optimise-call-expression/lib/index.js
generated
vendored
33
backend/node_modules/@babel/helper-optimise-call-expression/lib/index.js
generated
vendored
|
|
@ -1,33 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.default = optimiseCallExpression;
|
|
||||||
var _t = require("@babel/types");
|
|
||||||
const {
|
|
||||||
callExpression,
|
|
||||||
identifier,
|
|
||||||
isIdentifier,
|
|
||||||
isSpreadElement,
|
|
||||||
memberExpression,
|
|
||||||
optionalCallExpression,
|
|
||||||
optionalMemberExpression
|
|
||||||
} = _t;
|
|
||||||
function optimiseCallExpression(callee, thisNode, args, optional) {
|
|
||||||
if (args.length === 1 && isSpreadElement(args[0]) && isIdentifier(args[0].argument, {
|
|
||||||
name: "arguments"
|
|
||||||
})) {
|
|
||||||
if (optional) {
|
|
||||||
return optionalCallExpression(optionalMemberExpression(callee, identifier("apply"), false, true), [thisNode, args[0].argument], false);
|
|
||||||
}
|
|
||||||
return callExpression(memberExpression(callee, identifier("apply")), [thisNode, args[0].argument]);
|
|
||||||
} else {
|
|
||||||
if (optional) {
|
|
||||||
return optionalCallExpression(optionalMemberExpression(callee, identifier("call"), false, true), [thisNode, ...args], false);
|
|
||||||
}
|
|
||||||
return callExpression(memberExpression(callee, identifier("call")), [thisNode, ...args]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//# sourceMappingURL=index.js.map
|
|
||||||
1
backend/node_modules/@babel/helper-optimise-call-expression/lib/index.js.map
generated
vendored
1
backend/node_modules/@babel/helper-optimise-call-expression/lib/index.js.map
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"names":["_t","require","callExpression","identifier","isIdentifier","isSpreadElement","memberExpression","optionalCallExpression","optionalMemberExpression","optimiseCallExpression","callee","thisNode","args","optional","length","argument","name"],"sources":["../src/index.ts"],"sourcesContent":["import {\n callExpression,\n identifier,\n isIdentifier,\n isSpreadElement,\n memberExpression,\n optionalCallExpression,\n optionalMemberExpression,\n} from \"@babel/types\";\nimport type {\n CallExpression,\n Expression,\n OptionalCallExpression,\n} from \"@babel/types\";\n\n/**\n * A helper function that generates a new call expression with given thisNode.\n It will also optimize `(...arguments)` to `.apply(arguments)`\n *\n * @export\n * @param {Expression} callee The callee of call expression\n * @param {Expression} thisNode The desired this of call expression\n * @param {Readonly<CallExpression[\"arguments\"]>} args The arguments of call expression\n * @param {boolean} optional Whether the call expression is optional\n * @returns {CallExpression | OptionalCallExpression} The generated new call expression\n */\nexport default function optimiseCallExpression(\n callee: Expression,\n thisNode: Expression,\n args: Readonly<CallExpression[\"arguments\"]>,\n optional: boolean,\n): CallExpression | OptionalCallExpression {\n if (\n args.length === 1 &&\n isSpreadElement(args[0]) &&\n isIdentifier(args[0].argument, { name: \"arguments\" })\n ) {\n // a.b?.(...arguments);\n if (optional) {\n return optionalCallExpression(\n optionalMemberExpression(callee, identifier(\"apply\"), false, true),\n [thisNode, args[0].argument],\n false,\n );\n }\n // a.b(...arguments);\n return callExpression(memberExpression(callee, identifier(\"apply\")), [\n thisNode,\n args[0].argument,\n ]);\n } else {\n // a.b?.(arg1, arg2)\n if (optional) {\n return optionalCallExpression(\n optionalMemberExpression(callee, identifier(\"call\"), false, true),\n [thisNode, ...args],\n false,\n );\n }\n // a.b(arg1, arg2)\n return callExpression(memberExpression(callee, identifier(\"call\")), [\n thisNode,\n ...args,\n ]);\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,EAAA,GAAAC,OAAA;AAQsB;EAPpBC,cAAc;EACdC,UAAU;EACVC,YAAY;EACZC,eAAe;EACfC,gBAAgB;EAChBC,sBAAsB;EACtBC;AAAwB,IAAAR,EAAA;AAmBX,SAASS,sBAAsBA,CAC5CC,MAAkB,EAClBC,QAAoB,EACpBC,IAA2C,EAC3CC,QAAiB,EACwB;EACzC,IACED,IAAI,CAACE,MAAM,KAAK,CAAC,IACjBT,eAAe,CAACO,IAAI,CAAC,CAAC,CAAC,CAAC,IACxBR,YAAY,CAACQ,IAAI,CAAC,CAAC,CAAC,CAACG,QAAQ,EAAE;IAAEC,IAAI,EAAE;EAAY,CAAC,CAAC,EACrD;IAEA,IAAIH,QAAQ,EAAE;MACZ,OAAON,sBAAsB,CAC3BC,wBAAwB,CAACE,MAAM,EAAEP,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAClE,CAACQ,QAAQ,EAAEC,IAAI,CAAC,CAAC,CAAC,CAACG,QAAQ,CAAC,EAC5B,KACF,CAAC;IACH;IAEA,OAAOb,cAAc,CAACI,gBAAgB,CAACI,MAAM,EAAEP,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CACnEQ,QAAQ,EACRC,IAAI,CAAC,CAAC,CAAC,CAACG,QAAQ,CACjB,CAAC;EACJ,CAAC,MAAM;IAEL,IAAIF,QAAQ,EAAE;MACZ,OAAON,sBAAsB,CAC3BC,wBAAwB,CAACE,MAAM,EAAEP,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EACjE,CAACQ,QAAQ,EAAE,GAAGC,IAAI,CAAC,EACnB,KACF,CAAC;IACH;IAEA,OAAOV,cAAc,CAACI,gBAAgB,CAACI,MAAM,EAAEP,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAClEQ,QAAQ,EACR,GAAGC,IAAI,CACR,CAAC;EACJ;AACF","ignoreList":[]}
|
|
||||||
28
backend/node_modules/@babel/helper-optimise-call-expression/package.json
generated
vendored
28
backend/node_modules/@babel/helper-optimise-call-expression/package.json
generated
vendored
|
|
@ -1,28 +0,0 @@
|
||||||
{
|
|
||||||
"name": "@babel/helper-optimise-call-expression",
|
|
||||||
"version": "7.27.1",
|
|
||||||
"description": "Helper function to optimise call expression",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/babel/babel.git",
|
|
||||||
"directory": "packages/babel-helper-optimise-call-expression"
|
|
||||||
},
|
|
||||||
"homepage": "https://babel.dev/docs/en/next/babel-helper-optimise-call-expression",
|
|
||||||
"license": "MIT",
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"main": "./lib/index.js",
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/types": "^7.27.1"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@babel/generator": "^7.27.1",
|
|
||||||
"@babel/parser": "^7.27.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.9.0"
|
|
||||||
},
|
|
||||||
"author": "The Babel Team (https://babel.dev/team)",
|
|
||||||
"type": "commonjs"
|
|
||||||
}
|
|
||||||
19
backend/node_modules/@babel/helper-remap-async-to-generator/README.md
generated
vendored
19
backend/node_modules/@babel/helper-remap-async-to-generator/README.md
generated
vendored
|
|
@ -1,19 +0,0 @@
|
||||||
# @babel/helper-remap-async-to-generator
|
|
||||||
|
|
||||||
> Helper function to remap async functions to generators
|
|
||||||
|
|
||||||
See our website [@babel/helper-remap-async-to-generator](https://babeljs.io/docs/babel-helper-remap-async-to-generator) for more information.
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
Using npm:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install --save @babel/helper-remap-async-to-generator
|
|
||||||
```
|
|
||||||
|
|
||||||
or using yarn:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add @babel/helper-remap-async-to-generator
|
|
||||||
```
|
|
||||||
68
backend/node_modules/@babel/helper-remap-async-to-generator/lib/index.js
generated
vendored
68
backend/node_modules/@babel/helper-remap-async-to-generator/lib/index.js
generated
vendored
|
|
@ -1,68 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.default = _default;
|
|
||||||
var _helperWrapFunction = require("@babel/helper-wrap-function");
|
|
||||||
var _helperAnnotateAsPure = require("@babel/helper-annotate-as-pure");
|
|
||||||
var _core = require("@babel/core");
|
|
||||||
var _traverse = require("@babel/traverse");
|
|
||||||
const {
|
|
||||||
callExpression,
|
|
||||||
cloneNode,
|
|
||||||
isIdentifier,
|
|
||||||
isThisExpression,
|
|
||||||
yieldExpression
|
|
||||||
} = _core.types;
|
|
||||||
const awaitVisitor = _traverse.visitors.environmentVisitor({
|
|
||||||
ArrowFunctionExpression(path) {
|
|
||||||
path.skip();
|
|
||||||
},
|
|
||||||
AwaitExpression(path, {
|
|
||||||
wrapAwait
|
|
||||||
}) {
|
|
||||||
const argument = path.get("argument");
|
|
||||||
path.replaceWith(yieldExpression(wrapAwait ? callExpression(cloneNode(wrapAwait), [argument.node]) : argument.node));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
function _default(path, helpers, noNewArrows, ignoreFunctionLength) {
|
|
||||||
path.traverse(awaitVisitor, {
|
|
||||||
wrapAwait: helpers.wrapAwait
|
|
||||||
});
|
|
||||||
const isIIFE = checkIsIIFE(path);
|
|
||||||
path.node.async = false;
|
|
||||||
path.node.generator = true;
|
|
||||||
(0, _helperWrapFunction.default)(path, cloneNode(helpers.wrapAsync), noNewArrows, ignoreFunctionLength);
|
|
||||||
const isProperty = path.isObjectMethod() || path.isClassMethod() || path.parentPath.isObjectProperty() || path.parentPath.isClassProperty();
|
|
||||||
if (!isProperty && !isIIFE && path.isExpression()) {
|
|
||||||
(0, _helperAnnotateAsPure.default)(path);
|
|
||||||
}
|
|
||||||
function checkIsIIFE(path) {
|
|
||||||
if (path.parentPath.isCallExpression({
|
|
||||||
callee: path.node
|
|
||||||
})) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
const {
|
|
||||||
parentPath
|
|
||||||
} = path;
|
|
||||||
if (parentPath.isMemberExpression()) {
|
|
||||||
if (isIdentifier(parentPath.node.property, {
|
|
||||||
name: "bind"
|
|
||||||
})) {
|
|
||||||
const {
|
|
||||||
parentPath: bindCall
|
|
||||||
} = parentPath;
|
|
||||||
return (bindCall.isCallExpression() && bindCall.node.arguments.length === 1 && isThisExpression(bindCall.node.arguments[0]) && bindCall.parentPath.isCallExpression({
|
|
||||||
callee: bindCall.node
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//# sourceMappingURL=index.js.map
|
|
||||||
1
backend/node_modules/@babel/helper-remap-async-to-generator/lib/index.js.map
generated
vendored
1
backend/node_modules/@babel/helper-remap-async-to-generator/lib/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
32
backend/node_modules/@babel/helper-remap-async-to-generator/package.json
generated
vendored
32
backend/node_modules/@babel/helper-remap-async-to-generator/package.json
generated
vendored
|
|
@ -1,32 +0,0 @@
|
||||||
{
|
|
||||||
"name": "@babel/helper-remap-async-to-generator",
|
|
||||||
"version": "7.27.1",
|
|
||||||
"description": "Helper function to remap async functions to generators",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/babel/babel.git",
|
|
||||||
"directory": "packages/babel-helper-remap-async-to-generator"
|
|
||||||
},
|
|
||||||
"homepage": "https://babel.dev/docs/en/next/babel-helper-remap-async-to-generator",
|
|
||||||
"license": "MIT",
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"main": "./lib/index.js",
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/helper-annotate-as-pure": "^7.27.1",
|
|
||||||
"@babel/helper-wrap-function": "^7.27.1",
|
|
||||||
"@babel/traverse": "^7.27.1"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@babel/core": "^7.27.1"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"@babel/core": "^7.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.9.0"
|
|
||||||
},
|
|
||||||
"author": "The Babel Team (https://babel.dev/team)",
|
|
||||||
"type": "commonjs"
|
|
||||||
}
|
|
||||||
19
backend/node_modules/@babel/helper-replace-supers/README.md
generated
vendored
19
backend/node_modules/@babel/helper-replace-supers/README.md
generated
vendored
|
|
@ -1,19 +0,0 @@
|
||||||
# @babel/helper-replace-supers
|
|
||||||
|
|
||||||
> Helper function to replace supers
|
|
||||||
|
|
||||||
See our website [@babel/helper-replace-supers](https://babeljs.io/docs/babel-helper-replace-supers) for more information.
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
Using npm:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install --save @babel/helper-replace-supers
|
|
||||||
```
|
|
||||||
|
|
||||||
or using yarn:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add @babel/helper-replace-supers
|
|
||||||
```
|
|
||||||
303
backend/node_modules/@babel/helper-replace-supers/lib/index.js
generated
vendored
303
backend/node_modules/@babel/helper-replace-supers/lib/index.js
generated
vendored
|
|
@ -1,303 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.default = void 0;
|
|
||||||
var _helperMemberExpressionToFunctions = require("@babel/helper-member-expression-to-functions");
|
|
||||||
var _helperOptimiseCallExpression = require("@babel/helper-optimise-call-expression");
|
|
||||||
var _core = require("@babel/core");
|
|
||||||
var _traverse = require("@babel/traverse");
|
|
||||||
const {
|
|
||||||
assignmentExpression,
|
|
||||||
callExpression,
|
|
||||||
cloneNode,
|
|
||||||
identifier,
|
|
||||||
memberExpression,
|
|
||||||
sequenceExpression,
|
|
||||||
stringLiteral,
|
|
||||||
thisExpression
|
|
||||||
} = _core.types;
|
|
||||||
exports.environmentVisitor = _traverse.visitors.environmentVisitor({});
|
|
||||||
exports.skipAllButComputedKey = function skipAllButComputedKey(path) {
|
|
||||||
path.skip();
|
|
||||||
if (path.node.computed) {
|
|
||||||
path.context.maybeQueue(path.get("key"));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
const visitor = _traverse.visitors.environmentVisitor({
|
|
||||||
Super(path, state) {
|
|
||||||
const {
|
|
||||||
node,
|
|
||||||
parentPath
|
|
||||||
} = path;
|
|
||||||
if (!parentPath.isMemberExpression({
|
|
||||||
object: node
|
|
||||||
})) return;
|
|
||||||
state.handle(parentPath);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
const unshadowSuperBindingVisitor = _traverse.visitors.environmentVisitor({
|
|
||||||
Scopable(path, {
|
|
||||||
refName
|
|
||||||
}) {
|
|
||||||
const binding = path.scope.getOwnBinding(refName);
|
|
||||||
if ((binding == null ? void 0 : binding.identifier.name) === refName) {
|
|
||||||
path.scope.rename(refName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
const specHandlers = {
|
|
||||||
memoise(superMember, count) {
|
|
||||||
const {
|
|
||||||
scope,
|
|
||||||
node
|
|
||||||
} = superMember;
|
|
||||||
const {
|
|
||||||
computed,
|
|
||||||
property
|
|
||||||
} = node;
|
|
||||||
if (!computed) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const memo = scope.maybeGenerateMemoised(property);
|
|
||||||
if (!memo) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.memoiser.set(property, memo, count);
|
|
||||||
},
|
|
||||||
prop(superMember) {
|
|
||||||
const {
|
|
||||||
computed,
|
|
||||||
property
|
|
||||||
} = superMember.node;
|
|
||||||
if (this.memoiser.has(property)) {
|
|
||||||
return cloneNode(this.memoiser.get(property));
|
|
||||||
}
|
|
||||||
if (computed) {
|
|
||||||
return cloneNode(property);
|
|
||||||
}
|
|
||||||
return stringLiteral(property.name);
|
|
||||||
},
|
|
||||||
_getPrototypeOfExpression() {
|
|
||||||
const objectRef = cloneNode(this.getObjectRef());
|
|
||||||
const targetRef = this.isStatic || this.isPrivateMethod ? objectRef : memberExpression(objectRef, identifier("prototype"));
|
|
||||||
return callExpression(this.file.addHelper("getPrototypeOf"), [targetRef]);
|
|
||||||
},
|
|
||||||
get(superMember) {
|
|
||||||
const objectRef = cloneNode(this.getObjectRef());
|
|
||||||
return callExpression(this.file.addHelper("superPropGet"), [this.isDerivedConstructor ? sequenceExpression([thisExpression(), objectRef]) : objectRef, this.prop(superMember), thisExpression(), ...(this.isStatic || this.isPrivateMethod ? [] : [_core.types.numericLiteral(1)])]);
|
|
||||||
},
|
|
||||||
_call(superMember, args, optional) {
|
|
||||||
const objectRef = cloneNode(this.getObjectRef());
|
|
||||||
let argsNode;
|
|
||||||
if (args.length === 1 && _core.types.isSpreadElement(args[0]) && (_core.types.isIdentifier(args[0].argument) || _core.types.isArrayExpression(args[0].argument))) {
|
|
||||||
argsNode = args[0].argument;
|
|
||||||
} else {
|
|
||||||
argsNode = _core.types.arrayExpression(args);
|
|
||||||
}
|
|
||||||
const call = _core.types.callExpression(this.file.addHelper("superPropGet"), [this.isDerivedConstructor ? sequenceExpression([thisExpression(), objectRef]) : objectRef, this.prop(superMember), thisExpression(), _core.types.numericLiteral(2 | (this.isStatic || this.isPrivateMethod ? 0 : 1))]);
|
|
||||||
if (optional) {
|
|
||||||
return _core.types.optionalCallExpression(call, [argsNode], true);
|
|
||||||
}
|
|
||||||
return callExpression(call, [argsNode]);
|
|
||||||
},
|
|
||||||
set(superMember, value) {
|
|
||||||
const objectRef = cloneNode(this.getObjectRef());
|
|
||||||
return callExpression(this.file.addHelper("superPropSet"), [this.isDerivedConstructor ? sequenceExpression([thisExpression(), objectRef]) : objectRef, this.prop(superMember), value, thisExpression(), _core.types.numericLiteral(superMember.isInStrictMode() ? 1 : 0), ...(this.isStatic || this.isPrivateMethod ? [] : [_core.types.numericLiteral(1)])]);
|
|
||||||
},
|
|
||||||
destructureSet(superMember) {
|
|
||||||
throw superMember.buildCodeFrameError(`Destructuring to a super field is not supported yet.`);
|
|
||||||
},
|
|
||||||
call(superMember, args) {
|
|
||||||
return this._call(superMember, args, false);
|
|
||||||
},
|
|
||||||
optionalCall(superMember, args) {
|
|
||||||
return this._call(superMember, args, true);
|
|
||||||
},
|
|
||||||
delete(superMember) {
|
|
||||||
if (superMember.node.computed) {
|
|
||||||
return sequenceExpression([callExpression(this.file.addHelper("toPropertyKey"), [cloneNode(superMember.node.property)]), _core.template.expression.ast`
|
|
||||||
function () { throw new ReferenceError("'delete super[expr]' is invalid"); }()
|
|
||||||
`]);
|
|
||||||
} else {
|
|
||||||
return _core.template.expression.ast`
|
|
||||||
function () { throw new ReferenceError("'delete super.prop' is invalid"); }()
|
|
||||||
`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
const specHandlers_old = {
|
|
||||||
memoise(superMember, count) {
|
|
||||||
const {
|
|
||||||
scope,
|
|
||||||
node
|
|
||||||
} = superMember;
|
|
||||||
const {
|
|
||||||
computed,
|
|
||||||
property
|
|
||||||
} = node;
|
|
||||||
if (!computed) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const memo = scope.maybeGenerateMemoised(property);
|
|
||||||
if (!memo) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.memoiser.set(property, memo, count);
|
|
||||||
},
|
|
||||||
prop(superMember) {
|
|
||||||
const {
|
|
||||||
computed,
|
|
||||||
property
|
|
||||||
} = superMember.node;
|
|
||||||
if (this.memoiser.has(property)) {
|
|
||||||
return cloneNode(this.memoiser.get(property));
|
|
||||||
}
|
|
||||||
if (computed) {
|
|
||||||
return cloneNode(property);
|
|
||||||
}
|
|
||||||
return stringLiteral(property.name);
|
|
||||||
},
|
|
||||||
_getPrototypeOfExpression() {
|
|
||||||
const objectRef = cloneNode(this.getObjectRef());
|
|
||||||
const targetRef = this.isStatic || this.isPrivateMethod ? objectRef : memberExpression(objectRef, identifier("prototype"));
|
|
||||||
return callExpression(this.file.addHelper("getPrototypeOf"), [targetRef]);
|
|
||||||
},
|
|
||||||
get(superMember) {
|
|
||||||
return this._get(superMember);
|
|
||||||
},
|
|
||||||
_get(superMember) {
|
|
||||||
const proto = this._getPrototypeOfExpression();
|
|
||||||
return callExpression(this.file.addHelper("get"), [this.isDerivedConstructor ? sequenceExpression([thisExpression(), proto]) : proto, this.prop(superMember), thisExpression()]);
|
|
||||||
},
|
|
||||||
set(superMember, value) {
|
|
||||||
const proto = this._getPrototypeOfExpression();
|
|
||||||
return callExpression(this.file.addHelper("set"), [this.isDerivedConstructor ? sequenceExpression([thisExpression(), proto]) : proto, this.prop(superMember), value, thisExpression(), _core.types.booleanLiteral(superMember.isInStrictMode())]);
|
|
||||||
},
|
|
||||||
destructureSet(superMember) {
|
|
||||||
throw superMember.buildCodeFrameError(`Destructuring to a super field is not supported yet.`);
|
|
||||||
},
|
|
||||||
call(superMember, args) {
|
|
||||||
return (0, _helperOptimiseCallExpression.default)(this._get(superMember), thisExpression(), args, false);
|
|
||||||
},
|
|
||||||
optionalCall(superMember, args) {
|
|
||||||
return (0, _helperOptimiseCallExpression.default)(this._get(superMember), cloneNode(thisExpression()), args, true);
|
|
||||||
},
|
|
||||||
delete(superMember) {
|
|
||||||
if (superMember.node.computed) {
|
|
||||||
return sequenceExpression([callExpression(this.file.addHelper("toPropertyKey"), [cloneNode(superMember.node.property)]), _core.template.expression.ast`
|
|
||||||
function () { throw new ReferenceError("'delete super[expr]' is invalid"); }()
|
|
||||||
`]);
|
|
||||||
} else {
|
|
||||||
return _core.template.expression.ast`
|
|
||||||
function () { throw new ReferenceError("'delete super.prop' is invalid"); }()
|
|
||||||
`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
const looseHandlers = Object.assign({}, specHandlers, {
|
|
||||||
prop(superMember) {
|
|
||||||
const {
|
|
||||||
property
|
|
||||||
} = superMember.node;
|
|
||||||
if (this.memoiser.has(property)) {
|
|
||||||
return cloneNode(this.memoiser.get(property));
|
|
||||||
}
|
|
||||||
return cloneNode(property);
|
|
||||||
},
|
|
||||||
get(superMember) {
|
|
||||||
const {
|
|
||||||
isStatic,
|
|
||||||
getSuperRef
|
|
||||||
} = this;
|
|
||||||
const {
|
|
||||||
computed
|
|
||||||
} = superMember.node;
|
|
||||||
const prop = this.prop(superMember);
|
|
||||||
let object;
|
|
||||||
if (isStatic) {
|
|
||||||
var _getSuperRef;
|
|
||||||
object = (_getSuperRef = getSuperRef()) != null ? _getSuperRef : memberExpression(identifier("Function"), identifier("prototype"));
|
|
||||||
} else {
|
|
||||||
var _getSuperRef2;
|
|
||||||
object = memberExpression((_getSuperRef2 = getSuperRef()) != null ? _getSuperRef2 : identifier("Object"), identifier("prototype"));
|
|
||||||
}
|
|
||||||
return memberExpression(object, prop, computed);
|
|
||||||
},
|
|
||||||
set(superMember, value) {
|
|
||||||
const {
|
|
||||||
computed
|
|
||||||
} = superMember.node;
|
|
||||||
const prop = this.prop(superMember);
|
|
||||||
return assignmentExpression("=", memberExpression(thisExpression(), prop, computed), value);
|
|
||||||
},
|
|
||||||
destructureSet(superMember) {
|
|
||||||
const {
|
|
||||||
computed
|
|
||||||
} = superMember.node;
|
|
||||||
const prop = this.prop(superMember);
|
|
||||||
return memberExpression(thisExpression(), prop, computed);
|
|
||||||
},
|
|
||||||
call(superMember, args) {
|
|
||||||
return (0, _helperOptimiseCallExpression.default)(this.get(superMember), thisExpression(), args, false);
|
|
||||||
},
|
|
||||||
optionalCall(superMember, args) {
|
|
||||||
return (0, _helperOptimiseCallExpression.default)(this.get(superMember), thisExpression(), args, true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
class ReplaceSupers {
|
|
||||||
constructor(opts) {
|
|
||||||
var _opts$constantSuper;
|
|
||||||
const path = opts.methodPath;
|
|
||||||
this.methodPath = path;
|
|
||||||
this.isDerivedConstructor = path.isClassMethod({
|
|
||||||
kind: "constructor"
|
|
||||||
}) && !!opts.superRef;
|
|
||||||
this.isStatic = path.isObjectMethod() || path.node.static || (path.isStaticBlock == null ? void 0 : path.isStaticBlock());
|
|
||||||
this.isPrivateMethod = path.isPrivate() && path.isMethod();
|
|
||||||
this.file = opts.file;
|
|
||||||
this.constantSuper = (_opts$constantSuper = opts.constantSuper) != null ? _opts$constantSuper : opts.isLoose;
|
|
||||||
this.opts = opts;
|
|
||||||
}
|
|
||||||
getObjectRef() {
|
|
||||||
return cloneNode(this.opts.objectRef || this.opts.getObjectRef());
|
|
||||||
}
|
|
||||||
getSuperRef() {
|
|
||||||
if (this.opts.superRef) return cloneNode(this.opts.superRef);
|
|
||||||
if (this.opts.getSuperRef) {
|
|
||||||
return cloneNode(this.opts.getSuperRef());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
replace() {
|
|
||||||
const {
|
|
||||||
methodPath
|
|
||||||
} = this;
|
|
||||||
if (this.opts.refToPreserve) {
|
|
||||||
methodPath.traverse(unshadowSuperBindingVisitor, {
|
|
||||||
refName: this.opts.refToPreserve.name
|
|
||||||
});
|
|
||||||
}
|
|
||||||
const handler = this.constantSuper ? looseHandlers : this.file.availableHelper("superPropSet") ? specHandlers : specHandlers_old;
|
|
||||||
visitor.shouldSkip = path => {
|
|
||||||
if (path.parentPath === methodPath) {
|
|
||||||
if (path.parentKey === "decorators" || path.parentKey === "key") {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
(0, _helperMemberExpressionToFunctions.default)(methodPath, visitor, Object.assign({
|
|
||||||
file: this.file,
|
|
||||||
scope: this.methodPath.scope,
|
|
||||||
isDerivedConstructor: this.isDerivedConstructor,
|
|
||||||
isStatic: this.isStatic,
|
|
||||||
isPrivateMethod: this.isPrivateMethod,
|
|
||||||
getObjectRef: this.getObjectRef.bind(this),
|
|
||||||
getSuperRef: this.getSuperRef.bind(this),
|
|
||||||
boundGet: handler.get
|
|
||||||
}, handler));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.default = ReplaceSupers;
|
|
||||||
|
|
||||||
//# sourceMappingURL=index.js.map
|
|
||||||
1
backend/node_modules/@babel/helper-replace-supers/lib/index.js.map
generated
vendored
1
backend/node_modules/@babel/helper-replace-supers/lib/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
32
backend/node_modules/@babel/helper-replace-supers/package.json
generated
vendored
32
backend/node_modules/@babel/helper-replace-supers/package.json
generated
vendored
|
|
@ -1,32 +0,0 @@
|
||||||
{
|
|
||||||
"name": "@babel/helper-replace-supers",
|
|
||||||
"version": "7.28.6",
|
|
||||||
"description": "Helper function to replace supers",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/babel/babel.git",
|
|
||||||
"directory": "packages/babel-helper-replace-supers"
|
|
||||||
},
|
|
||||||
"homepage": "https://babel.dev/docs/en/next/babel-helper-replace-supers",
|
|
||||||
"license": "MIT",
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"main": "./lib/index.js",
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/helper-member-expression-to-functions": "^7.28.5",
|
|
||||||
"@babel/helper-optimise-call-expression": "^7.27.1",
|
|
||||||
"@babel/traverse": "^7.28.6"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@babel/core": "^7.28.6"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"@babel/core": "^7.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.9.0"
|
|
||||||
},
|
|
||||||
"author": "The Babel Team (https://babel.dev/team)",
|
|
||||||
"type": "commonjs"
|
|
||||||
}
|
|
||||||
19
backend/node_modules/@babel/helper-skip-transparent-expression-wrappers/README.md
generated
vendored
19
backend/node_modules/@babel/helper-skip-transparent-expression-wrappers/README.md
generated
vendored
|
|
@ -1,19 +0,0 @@
|
||||||
# @babel/helper-skip-transparent-expression-wrappers
|
|
||||||
|
|
||||||
> Helper which skips types and parentheses
|
|
||||||
|
|
||||||
See our website [@babel/helper-skip-transparent-expression-wrappers](https://babeljs.io/docs/babel-helper-skip-transparent-expression-wrappers) for more information.
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
Using npm:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install --save @babel/helper-skip-transparent-expression-wrappers
|
|
||||||
```
|
|
||||||
|
|
||||||
or using yarn:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add @babel/helper-skip-transparent-expression-wrappers
|
|
||||||
```
|
|
||||||
34
backend/node_modules/@babel/helper-skip-transparent-expression-wrappers/lib/index.js
generated
vendored
34
backend/node_modules/@babel/helper-skip-transparent-expression-wrappers/lib/index.js
generated
vendored
|
|
@ -1,34 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.isTransparentExprWrapper = isTransparentExprWrapper;
|
|
||||||
exports.skipTransparentExprWrapperNodes = skipTransparentExprWrapperNodes;
|
|
||||||
exports.skipTransparentExprWrappers = skipTransparentExprWrappers;
|
|
||||||
var _t = require("@babel/types");
|
|
||||||
const {
|
|
||||||
isParenthesizedExpression,
|
|
||||||
isTSAsExpression,
|
|
||||||
isTSNonNullExpression,
|
|
||||||
isTSSatisfiesExpression,
|
|
||||||
isTSTypeAssertion,
|
|
||||||
isTypeCastExpression
|
|
||||||
} = _t;
|
|
||||||
function isTransparentExprWrapper(node) {
|
|
||||||
return isTSAsExpression(node) || isTSSatisfiesExpression(node) || isTSTypeAssertion(node) || isTSNonNullExpression(node) || isTypeCastExpression(node) || isParenthesizedExpression(node);
|
|
||||||
}
|
|
||||||
function skipTransparentExprWrappers(path) {
|
|
||||||
while (isTransparentExprWrapper(path.node)) {
|
|
||||||
path = path.get("expression");
|
|
||||||
}
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
function skipTransparentExprWrapperNodes(node) {
|
|
||||||
while (isTransparentExprWrapper(node)) {
|
|
||||||
node = node.expression;
|
|
||||||
}
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
|
|
||||||
//# sourceMappingURL=index.js.map
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"names":["_t","require","isParenthesizedExpression","isTSAsExpression","isTSNonNullExpression","isTSSatisfiesExpression","isTSTypeAssertion","isTypeCastExpression","isTransparentExprWrapper","node","skipTransparentExprWrappers","path","get","skipTransparentExprWrapperNodes","expression"],"sources":["../src/index.ts"],"sourcesContent":["import {\n isParenthesizedExpression,\n isTSAsExpression,\n isTSNonNullExpression,\n isTSSatisfiesExpression,\n isTSTypeAssertion,\n isTypeCastExpression,\n} from \"@babel/types\";\n\nimport type * as t from \"@babel/types\";\nimport type { NodePath } from \"@babel/traverse\";\n\nexport type TransparentExprWrapper =\n | t.TSAsExpression\n | t.TSSatisfiesExpression\n | t.TSTypeAssertion\n | t.TSNonNullExpression\n | t.TypeCastExpression\n | t.ParenthesizedExpression;\n\n// A transparent expression wrapper is an AST node that most plugins will wish\n// to skip, as its presence does not affect the behaviour of the code. This\n// includes expressions used for types, and extra parenthesis. For example, in\n// (a as any)(), this helper can be used to skip the TSAsExpression when\n// determining the callee.\nexport function isTransparentExprWrapper(\n node: t.Node,\n): node is TransparentExprWrapper {\n return (\n isTSAsExpression(node) ||\n isTSSatisfiesExpression(node) ||\n isTSTypeAssertion(node) ||\n isTSNonNullExpression(node) ||\n isTypeCastExpression(node) ||\n isParenthesizedExpression(node)\n );\n}\n\nexport function skipTransparentExprWrappers(\n path: NodePath<t.Expression>,\n): NodePath<t.Expression> {\n while (isTransparentExprWrapper(path.node)) {\n path = path.get(\"expression\");\n }\n return path;\n}\n\nexport function skipTransparentExprWrapperNodes(\n node: t.Expression | t.Super,\n): t.Expression | t.Super {\n while (isTransparentExprWrapper(node)) {\n node = node.expression;\n }\n return node;\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,EAAA,GAAAC,OAAA;AAOsB;EANpBC,yBAAyB;EACzBC,gBAAgB;EAChBC,qBAAqB;EACrBC,uBAAuB;EACvBC,iBAAiB;EACjBC;AAAoB,IAAAP,EAAA;AAmBf,SAASQ,wBAAwBA,CACtCC,IAAY,EACoB;EAChC,OACEN,gBAAgB,CAACM,IAAI,CAAC,IACtBJ,uBAAuB,CAACI,IAAI,CAAC,IAC7BH,iBAAiB,CAACG,IAAI,CAAC,IACvBL,qBAAqB,CAACK,IAAI,CAAC,IAC3BF,oBAAoB,CAACE,IAAI,CAAC,IAC1BP,yBAAyB,CAACO,IAAI,CAAC;AAEnC;AAEO,SAASC,2BAA2BA,CACzCC,IAA4B,EACJ;EACxB,OAAOH,wBAAwB,CAACG,IAAI,CAACF,IAAI,CAAC,EAAE;IAC1CE,IAAI,GAAGA,IAAI,CAACC,GAAG,CAAC,YAAY,CAAC;EAC/B;EACA,OAAOD,IAAI;AACb;AAEO,SAASE,+BAA+BA,CAC7CJ,IAA4B,EACJ;EACxB,OAAOD,wBAAwB,CAACC,IAAI,CAAC,EAAE;IACrCA,IAAI,GAAGA,IAAI,CAACK,UAAU;EACxB;EACA,OAAOL,IAAI;AACb","ignoreList":[]}
|
|
||||||
31
backend/node_modules/@babel/helper-skip-transparent-expression-wrappers/package.json
generated
vendored
31
backend/node_modules/@babel/helper-skip-transparent-expression-wrappers/package.json
generated
vendored
|
|
@ -1,31 +0,0 @@
|
||||||
{
|
|
||||||
"name": "@babel/helper-skip-transparent-expression-wrappers",
|
|
||||||
"version": "7.27.1",
|
|
||||||
"description": "Helper which skips types and parentheses",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/babel/babel.git",
|
|
||||||
"directory": "packages/babel-helper-skip-transparent-expression-wrappers"
|
|
||||||
},
|
|
||||||
"license": "MIT",
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"main": "./lib/index.js",
|
|
||||||
"exports": {
|
|
||||||
".": {
|
|
||||||
"types": "./lib/index.d.ts",
|
|
||||||
"default": "./lib/index.js"
|
|
||||||
},
|
|
||||||
"./package.json": "./package.json"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/traverse": "^7.27.1",
|
|
||||||
"@babel/types": "^7.27.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.9.0"
|
|
||||||
},
|
|
||||||
"author": "The Babel Team (https://babel.dev/team)",
|
|
||||||
"type": "commonjs"
|
|
||||||
}
|
|
||||||
19
backend/node_modules/@babel/helper-wrap-function/README.md
generated
vendored
19
backend/node_modules/@babel/helper-wrap-function/README.md
generated
vendored
|
|
@ -1,19 +0,0 @@
|
||||||
# @babel/helper-wrap-function
|
|
||||||
|
|
||||||
> Helper to wrap functions inside a function call.
|
|
||||||
|
|
||||||
See our website [@babel/helper-wrap-function](https://babeljs.io/docs/babel-helper-wrap-function) for more information.
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
Using npm:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install --save @babel/helper-wrap-function
|
|
||||||
```
|
|
||||||
|
|
||||||
or using yarn:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add @babel/helper-wrap-function
|
|
||||||
```
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue