mirror of
https://github.com/docker/metadata-action.git
synced 2026-03-11 14:52:08 +00:00
Use RegExp to match against a Git tag instead of coerce
This commit is contained in:
41
README.md
41
README.md
@@ -23,8 +23,7 @@ ___
|
|||||||
* [inputs](#inputs)
|
* [inputs](#inputs)
|
||||||
* [outputs](#outputs)
|
* [outputs](#outputs)
|
||||||
* [Notes](#notes)
|
* [Notes](#notes)
|
||||||
* [Latest tag](#latest-tag)
|
* [`tag-match` examples](#tag-match-examples)
|
||||||
* [Coerces Git tag](#coerces-git-tag)
|
|
||||||
* [Schedule tag](#schedule-tag)
|
* [Schedule tag](#schedule-tag)
|
||||||
* [Keep up-to-date with GitHub Dependabot](#keep-up-to-date-with-github-dependabot)
|
* [Keep up-to-date with GitHub Dependabot](#keep-up-to-date-with-github-dependabot)
|
||||||
* [How can I help?](#how-can-i-help)
|
* [How can I help?](#how-can-i-help)
|
||||||
@@ -75,10 +74,9 @@ jobs:
|
|||||||
id: docker_meta
|
id: docker_meta
|
||||||
uses: crazy-max/ghaction-docker-meta@v1
|
uses: crazy-max/ghaction-docker-meta@v1
|
||||||
with:
|
with:
|
||||||
images: |
|
images: name/app
|
||||||
name/app
|
|
||||||
ghcr.io/name/app
|
|
||||||
tag-sha: true
|
tag-sha: true
|
||||||
|
tag-match: \\d{1,3}.\\d{1,3}.\\d{1,3}
|
||||||
-
|
-
|
||||||
name: Set up QEMU
|
name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v1
|
uses: docker/setup-qemu-action@v1
|
||||||
@@ -116,8 +114,8 @@ Following inputs can be used as `step.with` keys
|
|||||||
| `tag-sha` | Bool | Add git short SHA as Docker tag (default `false`) |
|
| `tag-sha` | Bool | Add git short SHA as Docker tag (default `false`) |
|
||||||
| `tag-edge` | Bool | Enable edge branch tagging (default `false`) |
|
| `tag-edge` | Bool | Enable edge branch tagging (default `false`) |
|
||||||
| `tag-edge-branch` | String | Branch that will be tagged as edge (default `repo.default_branch`) |
|
| `tag-edge-branch` | String | Branch that will be tagged as edge (default `repo.default_branch`) |
|
||||||
| `tag-coerce-tag` | String | Coerces Git tag to semver if possible using [template](#coerces-git-tag) |
|
| `tag-match` | String | RegExp to match against a Git tag and use match group as Docker tag |
|
||||||
| `tag-latest-match` | String | Set `latest` tag only if [matches with a pattern](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) |
|
| `tag-match-latest` | Bool | Set `latest` Docker tag if `tag-match` matches (default `true`) |
|
||||||
| `tag-schedule` | String | [Template](#schedule-tag) to apply to schedule tag (default `nightly`) |
|
| `tag-schedule` | String | [Template](#schedule-tag) to apply to schedule tag (default `nightly`) |
|
||||||
| `sep-tags` | String | Separator to use for tags output (default `\n`) |
|
| `sep-tags` | String | Separator to use for tags output (default `\n`) |
|
||||||
| `sep-labels` | String | Separator to use for labels output (default `\n`) |
|
| `sep-labels` | String | Separator to use for labels output (default `\n`) |
|
||||||
@@ -136,28 +134,15 @@ Following outputs are available
|
|||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
### Latest tag
|
### `tag-match` examples
|
||||||
|
|
||||||
`latest` tag is created with the following conditions:
|
| Git tag | `tag-match` | Docker tag
|
||||||
|
|-------------------------|--------------------------------|-------------------|
|
||||||
* Git tag is a valid [semver](https://semver.org/)
|
| `v1.2.3` | `\\d{1,3}.\\d{1,3}.\\d{1,3}` | `1.2.3` |
|
||||||
* Provided `tag-coerce-tag` is valid
|
| `v2.0.8-beta.67` | `\\d{1,3}.\\d{1,3}.\\d{1,3}.*` | `2.0.8-beta.67` |
|
||||||
|
| `v2.0.8-beta.67` | `\\d{1,3}.\\d{1,3}` | `2.0` |
|
||||||
If `tag-latest-match` is filled, then it has priority over the creation of the tag.
|
| `release1` | `\\d{1,3}.\\d{1,3}` | `release1` |
|
||||||
|
| `20200110-RC2` | `\\d+` | `20200110` |
|
||||||
### Coerces Git tag
|
|
||||||
|
|
||||||
Provides a very forgiving translation of a non-semver tag to semver. For more information see
|
|
||||||
[Coercion section](https://www.npmjs.com/package/semver#coercion). `tag-coerce-tag` supports
|
|
||||||
[Handlebars template](https://handlebarsjs.com/guide/) with the following inputs:
|
|
||||||
|
|
||||||
| `tag-coerce-tag` | Git tag | Version |
|
|
||||||
|-------------------------|----------|---------|
|
|
||||||
| `{{raw}}` | `v1.2.3` | `1.2.3` |
|
|
||||||
| `{{major}}.{{minor}}` | `v1.2.3` | `1.2` |
|
|
||||||
| `{{major}}` | `v1.2.3` | `1` |
|
|
||||||
| `{{minor}}` | `v1.2.3` | `2` |
|
|
||||||
| `{{patch}}` | `v1.2.3` | `3` |
|
|
||||||
|
|
||||||
### Schedule tag
|
### Schedule tag
|
||||||
|
|
||||||
|
|||||||
@@ -420,15 +420,15 @@ describe('push tag', () => {
|
|||||||
'event_tag_20200110-RC2.env',
|
'event_tag_20200110-RC2.env',
|
||||||
{
|
{
|
||||||
images: ['user/app'],
|
images: ['user/app'],
|
||||||
tagCoerceTag: '{{major}}',
|
tagMatch: `\\d{8}`,
|
||||||
|
tagMatchLatest: false,
|
||||||
} as Inputs,
|
} as Inputs,
|
||||||
{
|
{
|
||||||
version: '20200110',
|
version: '20200110',
|
||||||
latest: true
|
latest: false
|
||||||
} as Version,
|
} as Version,
|
||||||
[
|
[
|
||||||
'user/app:20200110',
|
'user/app:20200110'
|
||||||
'user/app:latest'
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"org.opencontainers.image.title=Hello-World",
|
"org.opencontainers.image.title=Hello-World",
|
||||||
@@ -441,34 +441,11 @@ describe('push tag', () => {
|
|||||||
"org.opencontainers.image.licenses=MIT"
|
"org.opencontainers.image.licenses=MIT"
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
[
|
|
||||||
'event_tag_v1.1.1.env',
|
|
||||||
{
|
|
||||||
images: ['user/app'],
|
|
||||||
} as Inputs,
|
|
||||||
{
|
|
||||||
version: '1.1.1',
|
|
||||||
latest: true
|
|
||||||
} as Version,
|
|
||||||
[
|
|
||||||
'user/app:1.1.1',
|
|
||||||
'user/app:latest'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"org.opencontainers.image.title=Hello-World",
|
|
||||||
"org.opencontainers.image.description=This your first repo!",
|
|
||||||
"org.opencontainers.image.url=https://github.com/octocat/Hello-World",
|
|
||||||
"org.opencontainers.image.source=https://github.com/octocat/Hello-World.git",
|
|
||||||
"org.opencontainers.image.version=1.1.1",
|
|
||||||
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
|
|
||||||
"org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071",
|
|
||||||
"org.opencontainers.image.licenses=MIT"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
[
|
||||||
'event_tag_v1.1.1.env',
|
'event_tag_v1.1.1.env',
|
||||||
{
|
{
|
||||||
images: ['org/app', 'ghcr.io/user/app'],
|
images: ['org/app', 'ghcr.io/user/app'],
|
||||||
|
tagMatch: `\\d{1,3}.\\d{1,3}.\\d{1,3}`,
|
||||||
} as Inputs,
|
} as Inputs,
|
||||||
{
|
{
|
||||||
version: '1.1.1',
|
version: '1.1.1',
|
||||||
@@ -491,39 +468,11 @@ describe('push tag', () => {
|
|||||||
"org.opencontainers.image.licenses=MIT"
|
"org.opencontainers.image.licenses=MIT"
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
[
|
|
||||||
'event_tag_v1.1.1.env',
|
|
||||||
{
|
|
||||||
images: ['org/app', 'ghcr.io/user/app'],
|
|
||||||
tagSha: true,
|
|
||||||
} as Inputs,
|
|
||||||
{
|
|
||||||
version: '1.1.1',
|
|
||||||
latest: true
|
|
||||||
} as Version,
|
|
||||||
[
|
|
||||||
'org/app:1.1.1',
|
|
||||||
'org/app:latest',
|
|
||||||
'org/app:sha-90dd603',
|
|
||||||
'ghcr.io/user/app:1.1.1',
|
|
||||||
'ghcr.io/user/app:latest',
|
|
||||||
'ghcr.io/user/app:sha-90dd603'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"org.opencontainers.image.title=Hello-World",
|
|
||||||
"org.opencontainers.image.description=This your first repo!",
|
|
||||||
"org.opencontainers.image.url=https://github.com/octocat/Hello-World",
|
|
||||||
"org.opencontainers.image.source=https://github.com/octocat/Hello-World.git",
|
|
||||||
"org.opencontainers.image.version=1.1.1",
|
|
||||||
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
|
|
||||||
"org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071",
|
|
||||||
"org.opencontainers.image.licenses=MIT"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
[
|
||||||
'event_tag_v2.0.8-beta.67.env',
|
'event_tag_v2.0.8-beta.67.env',
|
||||||
{
|
{
|
||||||
images: ['org/app', 'ghcr.io/user/app'],
|
images: ['org/app', 'ghcr.io/user/app'],
|
||||||
|
tagMatch: `\\d{1,3}.\\d{1,3}.\\d{1,3}-(alpha|beta).\\d{1,3}`,
|
||||||
} as Inputs,
|
} as Inputs,
|
||||||
{
|
{
|
||||||
version: '2.0.8-beta.67',
|
version: '2.0.8-beta.67',
|
||||||
@@ -550,7 +499,7 @@ describe('push tag', () => {
|
|||||||
'event_tag_v2.0.8-beta.67.env',
|
'event_tag_v2.0.8-beta.67.env',
|
||||||
{
|
{
|
||||||
images: ['org/app', 'ghcr.io/user/app'],
|
images: ['org/app', 'ghcr.io/user/app'],
|
||||||
tagCoerceTag: '{{major}}.{{minor}}',
|
tagMatch: `\\d{1,3}.\\d{1,3}`,
|
||||||
} as Inputs,
|
} as Inputs,
|
||||||
{
|
{
|
||||||
version: '2.0',
|
version: '2.0',
|
||||||
@@ -577,7 +526,7 @@ describe('push tag', () => {
|
|||||||
'event_tag_sometag.env',
|
'event_tag_sometag.env',
|
||||||
{
|
{
|
||||||
images: ['org/app', 'ghcr.io/user/app'],
|
images: ['org/app', 'ghcr.io/user/app'],
|
||||||
tagCoerceTag: '{{major}}.{{minor}}',
|
tagMatch: `\\d{1,3}.\\d{1,3}`,
|
||||||
} as Inputs,
|
} as Inputs,
|
||||||
{
|
{
|
||||||
version: 'sometag',
|
version: 'sometag',
|
||||||
@@ -608,7 +557,7 @@ describe('latest', () => {
|
|||||||
'event_tag_release1.env',
|
'event_tag_release1.env',
|
||||||
{
|
{
|
||||||
images: ['user/app'],
|
images: ['user/app'],
|
||||||
tagLatestMatch: `^release`,
|
tagMatch: `^release\\d{1,2}`,
|
||||||
} as Inputs,
|
} as Inputs,
|
||||||
{
|
{
|
||||||
version: 'release1',
|
version: 'release1',
|
||||||
@@ -633,7 +582,7 @@ describe('latest', () => {
|
|||||||
'event_tag_20200110-RC2.env',
|
'event_tag_20200110-RC2.env',
|
||||||
{
|
{
|
||||||
images: ['user/app'],
|
images: ['user/app'],
|
||||||
tagLatestMatch: `^\\d`,
|
tagMatch: `^\\d+-RC\\d{1,2}`,
|
||||||
} as Inputs,
|
} as Inputs,
|
||||||
{
|
{
|
||||||
version: '20200110-RC2',
|
version: '20200110-RC2',
|
||||||
@@ -658,8 +607,7 @@ describe('latest', () => {
|
|||||||
'event_tag_20200110-RC2.env',
|
'event_tag_20200110-RC2.env',
|
||||||
{
|
{
|
||||||
images: ['user/app'],
|
images: ['user/app'],
|
||||||
tagCoerceTag: '{{major}}',
|
tagMatch: `\\d{8}`,
|
||||||
tagLatestMatch: `\\d`,
|
|
||||||
} as Inputs,
|
} as Inputs,
|
||||||
{
|
{
|
||||||
version: '20200110',
|
version: '20200110',
|
||||||
@@ -684,7 +632,7 @@ describe('latest', () => {
|
|||||||
'event_tag_v1.1.1.env',
|
'event_tag_v1.1.1.env',
|
||||||
{
|
{
|
||||||
images: ['user/app'],
|
images: ['user/app'],
|
||||||
tagLatestMatch: `\\d{1,3}.\\d{1,3}.\\d{1,3}`,
|
tagMatch: `\\d{1,3}.\\d{1,3}.\\d{1,3}`,
|
||||||
} as Inputs,
|
} as Inputs,
|
||||||
{
|
{
|
||||||
version: '1.1.1',
|
version: '1.1.1',
|
||||||
@@ -711,46 +659,19 @@ describe('latest', () => {
|
|||||||
images: ['org/app', 'ghcr.io/user/app'],
|
images: ['org/app', 'ghcr.io/user/app'],
|
||||||
} as Inputs,
|
} as Inputs,
|
||||||
{
|
{
|
||||||
version: '1.1.1',
|
version: 'v1.1.1',
|
||||||
latest: true
|
|
||||||
} as Version,
|
|
||||||
[
|
|
||||||
'org/app:1.1.1',
|
|
||||||
'org/app:latest',
|
|
||||||
'ghcr.io/user/app:1.1.1',
|
|
||||||
'ghcr.io/user/app:latest'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"org.opencontainers.image.title=Hello-World",
|
|
||||||
"org.opencontainers.image.description=This your first repo!",
|
|
||||||
"org.opencontainers.image.url=https://github.com/octocat/Hello-World",
|
|
||||||
"org.opencontainers.image.source=https://github.com/octocat/Hello-World.git",
|
|
||||||
"org.opencontainers.image.version=1.1.1",
|
|
||||||
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
|
|
||||||
"org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071",
|
|
||||||
"org.opencontainers.image.licenses=MIT"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'event_tag_v1.1.1.env',
|
|
||||||
{
|
|
||||||
images: ['org/app', 'ghcr.io/user/app'],
|
|
||||||
tagLatestMatch: `2.\\d{1,3}.\\d{1,3}`,
|
|
||||||
} as Inputs,
|
|
||||||
{
|
|
||||||
version: '1.1.1',
|
|
||||||
latest: false
|
latest: false
|
||||||
} as Version,
|
} as Version,
|
||||||
[
|
[
|
||||||
'org/app:1.1.1',
|
'org/app:v1.1.1',
|
||||||
'ghcr.io/user/app:1.1.1',
|
'ghcr.io/user/app:v1.1.1',
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"org.opencontainers.image.title=Hello-World",
|
"org.opencontainers.image.title=Hello-World",
|
||||||
"org.opencontainers.image.description=This your first repo!",
|
"org.opencontainers.image.description=This your first repo!",
|
||||||
"org.opencontainers.image.url=https://github.com/octocat/Hello-World",
|
"org.opencontainers.image.url=https://github.com/octocat/Hello-World",
|
||||||
"org.opencontainers.image.source=https://github.com/octocat/Hello-World.git",
|
"org.opencontainers.image.source=https://github.com/octocat/Hello-World.git",
|
||||||
"org.opencontainers.image.version=1.1.1",
|
"org.opencontainers.image.version=v1.1.1",
|
||||||
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
|
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
|
||||||
"org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071",
|
"org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071",
|
||||||
"org.opencontainers.image.licenses=MIT"
|
"org.opencontainers.image.licenses=MIT"
|
||||||
@@ -760,16 +681,16 @@ describe('latest', () => {
|
|||||||
'event_tag_v2.0.8-beta.67.env',
|
'event_tag_v2.0.8-beta.67.env',
|
||||||
{
|
{
|
||||||
images: ['org/app', 'ghcr.io/user/app'],
|
images: ['org/app', 'ghcr.io/user/app'],
|
||||||
tagLatestMatch: `^\\d{1,3}.\\d{1,3}.\\d{1,3}`,
|
tagMatch: `\\d{1,3}.\\d{1,3}.\\d{1,3}`,
|
||||||
} as Inputs,
|
} as Inputs,
|
||||||
{
|
{
|
||||||
version: '2.0.8-beta.67',
|
version: '2.0.8',
|
||||||
latest: true
|
latest: true
|
||||||
} as Version,
|
} as Version,
|
||||||
[
|
[
|
||||||
'org/app:2.0.8-beta.67',
|
'org/app:2.0.8',
|
||||||
'org/app:latest',
|
'org/app:latest',
|
||||||
'ghcr.io/user/app:2.0.8-beta.67',
|
'ghcr.io/user/app:2.0.8',
|
||||||
'ghcr.io/user/app:latest'
|
'ghcr.io/user/app:latest'
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
@@ -777,7 +698,7 @@ describe('latest', () => {
|
|||||||
"org.opencontainers.image.description=This your first repo!",
|
"org.opencontainers.image.description=This your first repo!",
|
||||||
"org.opencontainers.image.url=https://github.com/octocat/Hello-World",
|
"org.opencontainers.image.url=https://github.com/octocat/Hello-World",
|
||||||
"org.opencontainers.image.source=https://github.com/octocat/Hello-World.git",
|
"org.opencontainers.image.source=https://github.com/octocat/Hello-World.git",
|
||||||
"org.opencontainers.image.version=2.0.8-beta.67",
|
"org.opencontainers.image.version=2.0.8",
|
||||||
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
|
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
|
||||||
"org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071",
|
"org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071",
|
||||||
"org.opencontainers.image.licenses=MIT"
|
"org.opencontainers.image.licenses=MIT"
|
||||||
@@ -1003,19 +924,18 @@ describe('release', () => {
|
|||||||
images: ['user/app'],
|
images: ['user/app'],
|
||||||
} as Inputs,
|
} as Inputs,
|
||||||
{
|
{
|
||||||
version: '1.1.1',
|
version: 'v1.1.1',
|
||||||
latest: true
|
latest: false
|
||||||
} as Version,
|
} as Version,
|
||||||
[
|
[
|
||||||
'user/app:1.1.1',
|
'user/app:v1.1.1',
|
||||||
'user/app:latest'
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"org.opencontainers.image.title=Hello-World",
|
"org.opencontainers.image.title=Hello-World",
|
||||||
"org.opencontainers.image.description=This your first repo!",
|
"org.opencontainers.image.description=This your first repo!",
|
||||||
"org.opencontainers.image.url=https://github.com/octocat/Hello-World",
|
"org.opencontainers.image.url=https://github.com/octocat/Hello-World",
|
||||||
"org.opencontainers.image.source=https://github.com/octocat/Hello-World.git",
|
"org.opencontainers.image.source=https://github.com/octocat/Hello-World.git",
|
||||||
"org.opencontainers.image.version=1.1.1",
|
"org.opencontainers.image.version=v1.1.1",
|
||||||
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
|
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
|
||||||
"org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071",
|
"org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071",
|
||||||
"org.opencontainers.image.licenses=MIT"
|
"org.opencontainers.image.licenses=MIT"
|
||||||
|
|||||||
@@ -21,11 +21,12 @@ inputs:
|
|||||||
tag-edge-branch:
|
tag-edge-branch:
|
||||||
description: 'Branch that will be tagged as edge (default repo.default_branch)'
|
description: 'Branch that will be tagged as edge (default repo.default_branch)'
|
||||||
required: false
|
required: false
|
||||||
tag-coerce-tag:
|
tag-match:
|
||||||
description: 'Coerces Git tag to semver if possible using template'
|
description: 'RegExp to match against a Git tag and use match group as Docker tag'
|
||||||
required: false
|
required: false
|
||||||
tag-latest-match:
|
tag-match-latest:
|
||||||
description: 'Set latest tag only if matches with a pattern'
|
description: 'Set latest Docker tag if tag-match matches'
|
||||||
|
default: 'true'
|
||||||
required: false
|
required: false
|
||||||
tag-schedule:
|
tag-schedule:
|
||||||
description: 'Template to apply to schedule tag'
|
description: 'Template to apply to schedule tag'
|
||||||
|
|||||||
2181
dist/index.js
generated
vendored
2181
dist/index.js
generated
vendored
@@ -25,8 +25,8 @@ function getInputs() {
|
|||||||
tagSha: /true/i.test(core.getInput('tag-sha') || 'false'),
|
tagSha: /true/i.test(core.getInput('tag-sha') || 'false'),
|
||||||
tagEdge: /true/i.test(core.getInput('tag-edge') || 'false'),
|
tagEdge: /true/i.test(core.getInput('tag-edge') || 'false'),
|
||||||
tagEdgeBranch: core.getInput('tag-edge-branch'),
|
tagEdgeBranch: core.getInput('tag-edge-branch'),
|
||||||
tagCoerceTag: core.getInput('tag-coerce-tag'),
|
tagMatch: core.getInput('tag-match'),
|
||||||
tagLatestMatch: core.getInput('tag-latest-match'),
|
tagMatchLatest: /true/i.test(core.getInput('tag-match-latest') || 'true'),
|
||||||
tagSchedule: core.getInput('tag-schedule') || 'nightly',
|
tagSchedule: core.getInput('tag-schedule') || 'nightly',
|
||||||
sepTags: core.getInput('sep-tags') || `\n`,
|
sepTags: core.getInput('sep-tags') || `\n`,
|
||||||
sepLabels: core.getInput('sep-labels') || `\n`,
|
sepLabels: core.getInput('sep-labels') || `\n`,
|
||||||
@@ -168,7 +168,6 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|||||||
exports.Meta = void 0;
|
exports.Meta = void 0;
|
||||||
const handlebars = __webpack_require__(7492);
|
const handlebars = __webpack_require__(7492);
|
||||||
const moment = __webpack_require__(9623);
|
const moment = __webpack_require__(9623);
|
||||||
const semver = __webpack_require__(1383);
|
|
||||||
class Meta {
|
class Meta {
|
||||||
constructor(inputs, context, repo) {
|
constructor(inputs, context, repo) {
|
||||||
this.inputs = inputs;
|
this.inputs = inputs;
|
||||||
@@ -180,7 +179,6 @@ class Meta {
|
|||||||
this.date = new Date();
|
this.date = new Date();
|
||||||
}
|
}
|
||||||
version() {
|
version() {
|
||||||
var _a;
|
|
||||||
const currentDate = this.date;
|
const currentDate = this.date;
|
||||||
const version = {
|
const version = {
|
||||||
version: undefined,
|
version: undefined,
|
||||||
@@ -194,28 +192,13 @@ class Meta {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
else if (/^refs\/tags\//.test(this.context.ref)) {
|
else if (/^refs\/tags\//.test(this.context.ref)) {
|
||||||
const tag = this.context.ref.replace(/^refs\/tags\//g, '').replace(/\//g, '-');
|
version.version = this.context.ref.replace(/^refs\/tags\//g, '').replace(/\//g, '-');
|
||||||
const sver = semver.clean(tag);
|
if (this.inputs.tagMatch) {
|
||||||
if (this.inputs.tagCoerceTag) {
|
const tagMatch = version.version.match(this.inputs.tagMatch);
|
||||||
const coerce = semver.coerce(tag);
|
if (tagMatch) {
|
||||||
if (coerce) {
|
version.version = tagMatch[0];
|
||||||
version.version = handlebars.compile(this.inputs.tagCoerceTag)(coerce);
|
version.latest = this.inputs.tagMatchLatest;
|
||||||
version.latest = true;
|
|
||||||
}
|
}
|
||||||
else if (sver) {
|
|
||||||
version.version = sver;
|
|
||||||
version.latest = true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
version.version = tag;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (sver) {
|
|
||||||
version.version = sver;
|
|
||||||
version.latest = true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
version.version = tag;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (/^refs\/heads\//.test(this.context.ref)) {
|
else if (/^refs\/heads\//.test(this.context.ref)) {
|
||||||
@@ -227,10 +210,6 @@ class Meta {
|
|||||||
else if (/^refs\/pull\//.test(this.context.ref)) {
|
else if (/^refs\/pull\//.test(this.context.ref)) {
|
||||||
version.version = `pr-${this.context.ref.replace(/^refs\/pull\//g, '').replace(/\/merge$/g, '')}`;
|
version.version = `pr-${this.context.ref.replace(/^refs\/pull\//g, '').replace(/\/merge$/g, '')}`;
|
||||||
}
|
}
|
||||||
if (this.inputs.tagLatestMatch) {
|
|
||||||
const match = (_a = version.version) === null || _a === void 0 ? void 0 : _a.match(new RegExp(this.inputs.tagLatestMatch));
|
|
||||||
version.latest = match !== null;
|
|
||||||
}
|
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
tags() {
|
tags() {
|
||||||
@@ -16566,2150 +16545,6 @@ function onceStrict (fn) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 1532:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const ANY = Symbol('SemVer ANY')
|
|
||||||
// hoisted class for cyclic dependency
|
|
||||||
class Comparator {
|
|
||||||
static get ANY () {
|
|
||||||
return ANY
|
|
||||||
}
|
|
||||||
constructor (comp, options) {
|
|
||||||
if (!options || typeof options !== 'object') {
|
|
||||||
options = {
|
|
||||||
loose: !!options,
|
|
||||||
includePrerelease: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (comp instanceof Comparator) {
|
|
||||||
if (comp.loose === !!options.loose) {
|
|
||||||
return comp
|
|
||||||
} else {
|
|
||||||
comp = comp.value
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
debug('comparator', comp, options)
|
|
||||||
this.options = options
|
|
||||||
this.loose = !!options.loose
|
|
||||||
this.parse(comp)
|
|
||||||
|
|
||||||
if (this.semver === ANY) {
|
|
||||||
this.value = ''
|
|
||||||
} else {
|
|
||||||
this.value = this.operator + this.semver.version
|
|
||||||
}
|
|
||||||
|
|
||||||
debug('comp', this)
|
|
||||||
}
|
|
||||||
|
|
||||||
parse (comp) {
|
|
||||||
const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
|
|
||||||
const m = comp.match(r)
|
|
||||||
|
|
||||||
if (!m) {
|
|
||||||
throw new TypeError(`Invalid comparator: ${comp}`)
|
|
||||||
}
|
|
||||||
|
|
||||||
this.operator = m[1] !== undefined ? m[1] : ''
|
|
||||||
if (this.operator === '=') {
|
|
||||||
this.operator = ''
|
|
||||||
}
|
|
||||||
|
|
||||||
// if it literally is just '>' or '' then allow anything.
|
|
||||||
if (!m[2]) {
|
|
||||||
this.semver = ANY
|
|
||||||
} else {
|
|
||||||
this.semver = new SemVer(m[2], this.options.loose)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
toString () {
|
|
||||||
return this.value
|
|
||||||
}
|
|
||||||
|
|
||||||
test (version) {
|
|
||||||
debug('Comparator.test', version, this.options.loose)
|
|
||||||
|
|
||||||
if (this.semver === ANY || version === ANY) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof version === 'string') {
|
|
||||||
try {
|
|
||||||
version = new SemVer(version, this.options)
|
|
||||||
} catch (er) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return cmp(version, this.operator, this.semver, this.options)
|
|
||||||
}
|
|
||||||
|
|
||||||
intersects (comp, options) {
|
|
||||||
if (!(comp instanceof Comparator)) {
|
|
||||||
throw new TypeError('a Comparator is required')
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!options || typeof options !== 'object') {
|
|
||||||
options = {
|
|
||||||
loose: !!options,
|
|
||||||
includePrerelease: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.operator === '') {
|
|
||||||
if (this.value === '') {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return new Range(comp.value, options).test(this.value)
|
|
||||||
} else if (comp.operator === '') {
|
|
||||||
if (comp.value === '') {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return new Range(this.value, options).test(comp.semver)
|
|
||||||
}
|
|
||||||
|
|
||||||
const sameDirectionIncreasing =
|
|
||||||
(this.operator === '>=' || this.operator === '>') &&
|
|
||||||
(comp.operator === '>=' || comp.operator === '>')
|
|
||||||
const sameDirectionDecreasing =
|
|
||||||
(this.operator === '<=' || this.operator === '<') &&
|
|
||||||
(comp.operator === '<=' || comp.operator === '<')
|
|
||||||
const sameSemVer = this.semver.version === comp.semver.version
|
|
||||||
const differentDirectionsInclusive =
|
|
||||||
(this.operator === '>=' || this.operator === '<=') &&
|
|
||||||
(comp.operator === '>=' || comp.operator === '<=')
|
|
||||||
const oppositeDirectionsLessThan =
|
|
||||||
cmp(this.semver, '<', comp.semver, options) &&
|
|
||||||
(this.operator === '>=' || this.operator === '>') &&
|
|
||||||
(comp.operator === '<=' || comp.operator === '<')
|
|
||||||
const oppositeDirectionsGreaterThan =
|
|
||||||
cmp(this.semver, '>', comp.semver, options) &&
|
|
||||||
(this.operator === '<=' || this.operator === '<') &&
|
|
||||||
(comp.operator === '>=' || comp.operator === '>')
|
|
||||||
|
|
||||||
return (
|
|
||||||
sameDirectionIncreasing ||
|
|
||||||
sameDirectionDecreasing ||
|
|
||||||
(sameSemVer && differentDirectionsInclusive) ||
|
|
||||||
oppositeDirectionsLessThan ||
|
|
||||||
oppositeDirectionsGreaterThan
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = Comparator
|
|
||||||
|
|
||||||
const {re, t} = __webpack_require__(9523)
|
|
||||||
const cmp = __webpack_require__(5098)
|
|
||||||
const debug = __webpack_require__(427)
|
|
||||||
const SemVer = __webpack_require__(8088)
|
|
||||||
const Range = __webpack_require__(9828)
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 9828:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
// hoisted class for cyclic dependency
|
|
||||||
class Range {
|
|
||||||
constructor (range, options) {
|
|
||||||
if (!options || typeof options !== 'object') {
|
|
||||||
options = {
|
|
||||||
loose: !!options,
|
|
||||||
includePrerelease: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (range instanceof Range) {
|
|
||||||
if (
|
|
||||||
range.loose === !!options.loose &&
|
|
||||||
range.includePrerelease === !!options.includePrerelease
|
|
||||||
) {
|
|
||||||
return range
|
|
||||||
} else {
|
|
||||||
return new Range(range.raw, options)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (range instanceof Comparator) {
|
|
||||||
// just put it in the set and return
|
|
||||||
this.raw = range.value
|
|
||||||
this.set = [[range]]
|
|
||||||
this.format()
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
this.options = options
|
|
||||||
this.loose = !!options.loose
|
|
||||||
this.includePrerelease = !!options.includePrerelease
|
|
||||||
|
|
||||||
// First, split based on boolean or ||
|
|
||||||
this.raw = range
|
|
||||||
this.set = range
|
|
||||||
.split(/\s*\|\|\s*/)
|
|
||||||
// map the range to a 2d array of comparators
|
|
||||||
.map(range => this.parseRange(range.trim()))
|
|
||||||
// throw out any comparator lists that are empty
|
|
||||||
// this generally means that it was not a valid range, which is allowed
|
|
||||||
// in loose mode, but will still throw if the WHOLE range is invalid.
|
|
||||||
.filter(c => c.length)
|
|
||||||
|
|
||||||
if (!this.set.length) {
|
|
||||||
throw new TypeError(`Invalid SemVer Range: ${range}`)
|
|
||||||
}
|
|
||||||
|
|
||||||
this.format()
|
|
||||||
}
|
|
||||||
|
|
||||||
format () {
|
|
||||||
this.range = this.set
|
|
||||||
.map((comps) => {
|
|
||||||
return comps.join(' ').trim()
|
|
||||||
})
|
|
||||||
.join('||')
|
|
||||||
.trim()
|
|
||||||
return this.range
|
|
||||||
}
|
|
||||||
|
|
||||||
toString () {
|
|
||||||
return this.range
|
|
||||||
}
|
|
||||||
|
|
||||||
parseRange (range) {
|
|
||||||
const loose = this.options.loose
|
|
||||||
range = range.trim()
|
|
||||||
// `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
|
|
||||||
const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
|
|
||||||
range = range.replace(hr, hyphenReplace(this.options.includePrerelease))
|
|
||||||
debug('hyphen replace', range)
|
|
||||||
// `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
|
|
||||||
range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
|
|
||||||
debug('comparator trim', range, re[t.COMPARATORTRIM])
|
|
||||||
|
|
||||||
// `~ 1.2.3` => `~1.2.3`
|
|
||||||
range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
|
|
||||||
|
|
||||||
// `^ 1.2.3` => `^1.2.3`
|
|
||||||
range = range.replace(re[t.CARETTRIM], caretTrimReplace)
|
|
||||||
|
|
||||||
// normalize spaces
|
|
||||||
range = range.split(/\s+/).join(' ')
|
|
||||||
|
|
||||||
// At this point, the range is completely trimmed and
|
|
||||||
// ready to be split into comparators.
|
|
||||||
|
|
||||||
const compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
|
|
||||||
return range
|
|
||||||
.split(' ')
|
|
||||||
.map(comp => parseComparator(comp, this.options))
|
|
||||||
.join(' ')
|
|
||||||
.split(/\s+/)
|
|
||||||
.map(comp => replaceGTE0(comp, this.options))
|
|
||||||
// in loose mode, throw out any that are not valid comparators
|
|
||||||
.filter(this.options.loose ? comp => !!comp.match(compRe) : () => true)
|
|
||||||
.map(comp => new Comparator(comp, this.options))
|
|
||||||
}
|
|
||||||
|
|
||||||
intersects (range, options) {
|
|
||||||
if (!(range instanceof Range)) {
|
|
||||||
throw new TypeError('a Range is required')
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.set.some((thisComparators) => {
|
|
||||||
return (
|
|
||||||
isSatisfiable(thisComparators, options) &&
|
|
||||||
range.set.some((rangeComparators) => {
|
|
||||||
return (
|
|
||||||
isSatisfiable(rangeComparators, options) &&
|
|
||||||
thisComparators.every((thisComparator) => {
|
|
||||||
return rangeComparators.every((rangeComparator) => {
|
|
||||||
return thisComparator.intersects(rangeComparator, options)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
)
|
|
||||||
})
|
|
||||||
)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// if ANY of the sets match ALL of its comparators, then pass
|
|
||||||
test (version) {
|
|
||||||
if (!version) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof version === 'string') {
|
|
||||||
try {
|
|
||||||
version = new SemVer(version, this.options)
|
|
||||||
} catch (er) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0; i < this.set.length; i++) {
|
|
||||||
if (testSet(this.set[i], version, this.options)) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
module.exports = Range
|
|
||||||
|
|
||||||
const Comparator = __webpack_require__(1532)
|
|
||||||
const debug = __webpack_require__(427)
|
|
||||||
const SemVer = __webpack_require__(8088)
|
|
||||||
const {
|
|
||||||
re,
|
|
||||||
t,
|
|
||||||
comparatorTrimReplace,
|
|
||||||
tildeTrimReplace,
|
|
||||||
caretTrimReplace
|
|
||||||
} = __webpack_require__(9523)
|
|
||||||
|
|
||||||
// take a set of comparators and determine whether there
|
|
||||||
// exists a version which can satisfy it
|
|
||||||
const isSatisfiable = (comparators, options) => {
|
|
||||||
let result = true
|
|
||||||
const remainingComparators = comparators.slice()
|
|
||||||
let testComparator = remainingComparators.pop()
|
|
||||||
|
|
||||||
while (result && remainingComparators.length) {
|
|
||||||
result = remainingComparators.every((otherComparator) => {
|
|
||||||
return testComparator.intersects(otherComparator, options)
|
|
||||||
})
|
|
||||||
|
|
||||||
testComparator = remainingComparators.pop()
|
|
||||||
}
|
|
||||||
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
|
|
||||||
// comprised of xranges, tildes, stars, and gtlt's at this point.
|
|
||||||
// already replaced the hyphen ranges
|
|
||||||
// turn into a set of JUST comparators.
|
|
||||||
const parseComparator = (comp, options) => {
|
|
||||||
debug('comp', comp, options)
|
|
||||||
comp = replaceCarets(comp, options)
|
|
||||||
debug('caret', comp)
|
|
||||||
comp = replaceTildes(comp, options)
|
|
||||||
debug('tildes', comp)
|
|
||||||
comp = replaceXRanges(comp, options)
|
|
||||||
debug('xrange', comp)
|
|
||||||
comp = replaceStars(comp, options)
|
|
||||||
debug('stars', comp)
|
|
||||||
return comp
|
|
||||||
}
|
|
||||||
|
|
||||||
const isX = id => !id || id.toLowerCase() === 'x' || id === '*'
|
|
||||||
|
|
||||||
// ~, ~> --> * (any, kinda silly)
|
|
||||||
// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0
|
|
||||||
// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0
|
|
||||||
// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0
|
|
||||||
// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0
|
|
||||||
// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0
|
|
||||||
const replaceTildes = (comp, options) =>
|
|
||||||
comp.trim().split(/\s+/).map((comp) => {
|
|
||||||
return replaceTilde(comp, options)
|
|
||||||
}).join(' ')
|
|
||||||
|
|
||||||
const replaceTilde = (comp, options) => {
|
|
||||||
const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]
|
|
||||||
return comp.replace(r, (_, M, m, p, pr) => {
|
|
||||||
debug('tilde', comp, _, M, m, p, pr)
|
|
||||||
let ret
|
|
||||||
|
|
||||||
if (isX(M)) {
|
|
||||||
ret = ''
|
|
||||||
} else if (isX(m)) {
|
|
||||||
ret = `>=${M}.0.0 <${+M + 1}.0.0-0`
|
|
||||||
} else if (isX(p)) {
|
|
||||||
// ~1.2 == >=1.2.0 <1.3.0-0
|
|
||||||
ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`
|
|
||||||
} else if (pr) {
|
|
||||||
debug('replaceTilde pr', pr)
|
|
||||||
ret = `>=${M}.${m}.${p}-${pr
|
|
||||||
} <${M}.${+m + 1}.0-0`
|
|
||||||
} else {
|
|
||||||
// ~1.2.3 == >=1.2.3 <1.3.0-0
|
|
||||||
ret = `>=${M}.${m}.${p
|
|
||||||
} <${M}.${+m + 1}.0-0`
|
|
||||||
}
|
|
||||||
|
|
||||||
debug('tilde return', ret)
|
|
||||||
return ret
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// ^ --> * (any, kinda silly)
|
|
||||||
// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0
|
|
||||||
// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0
|
|
||||||
// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0
|
|
||||||
// ^1.2.3 --> >=1.2.3 <2.0.0-0
|
|
||||||
// ^1.2.0 --> >=1.2.0 <2.0.0-0
|
|
||||||
const replaceCarets = (comp, options) =>
|
|
||||||
comp.trim().split(/\s+/).map((comp) => {
|
|
||||||
return replaceCaret(comp, options)
|
|
||||||
}).join(' ')
|
|
||||||
|
|
||||||
const replaceCaret = (comp, options) => {
|
|
||||||
debug('caret', comp, options)
|
|
||||||
const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]
|
|
||||||
const z = options.includePrerelease ? '-0' : ''
|
|
||||||
return comp.replace(r, (_, M, m, p, pr) => {
|
|
||||||
debug('caret', comp, _, M, m, p, pr)
|
|
||||||
let ret
|
|
||||||
|
|
||||||
if (isX(M)) {
|
|
||||||
ret = ''
|
|
||||||
} else if (isX(m)) {
|
|
||||||
ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`
|
|
||||||
} else if (isX(p)) {
|
|
||||||
if (M === '0') {
|
|
||||||
ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`
|
|
||||||
} else {
|
|
||||||
ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`
|
|
||||||
}
|
|
||||||
} else if (pr) {
|
|
||||||
debug('replaceCaret pr', pr)
|
|
||||||
if (M === '0') {
|
|
||||||
if (m === '0') {
|
|
||||||
ret = `>=${M}.${m}.${p}-${pr
|
|
||||||
} <${M}.${m}.${+p + 1}-0`
|
|
||||||
} else {
|
|
||||||
ret = `>=${M}.${m}.${p}-${pr
|
|
||||||
} <${M}.${+m + 1}.0-0`
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
ret = `>=${M}.${m}.${p}-${pr
|
|
||||||
} <${+M + 1}.0.0-0`
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
debug('no pr')
|
|
||||||
if (M === '0') {
|
|
||||||
if (m === '0') {
|
|
||||||
ret = `>=${M}.${m}.${p
|
|
||||||
}${z} <${M}.${m}.${+p + 1}-0`
|
|
||||||
} else {
|
|
||||||
ret = `>=${M}.${m}.${p
|
|
||||||
}${z} <${M}.${+m + 1}.0-0`
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
ret = `>=${M}.${m}.${p
|
|
||||||
} <${+M + 1}.0.0-0`
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
debug('caret return', ret)
|
|
||||||
return ret
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const replaceXRanges = (comp, options) => {
|
|
||||||
debug('replaceXRanges', comp, options)
|
|
||||||
return comp.split(/\s+/).map((comp) => {
|
|
||||||
return replaceXRange(comp, options)
|
|
||||||
}).join(' ')
|
|
||||||
}
|
|
||||||
|
|
||||||
const replaceXRange = (comp, options) => {
|
|
||||||
comp = comp.trim()
|
|
||||||
const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]
|
|
||||||
return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
|
|
||||||
debug('xRange', comp, ret, gtlt, M, m, p, pr)
|
|
||||||
const xM = isX(M)
|
|
||||||
const xm = xM || isX(m)
|
|
||||||
const xp = xm || isX(p)
|
|
||||||
const anyX = xp
|
|
||||||
|
|
||||||
if (gtlt === '=' && anyX) {
|
|
||||||
gtlt = ''
|
|
||||||
}
|
|
||||||
|
|
||||||
// if we're including prereleases in the match, then we need
|
|
||||||
// to fix this to -0, the lowest possible prerelease value
|
|
||||||
pr = options.includePrerelease ? '-0' : ''
|
|
||||||
|
|
||||||
if (xM) {
|
|
||||||
if (gtlt === '>' || gtlt === '<') {
|
|
||||||
// nothing is allowed
|
|
||||||
ret = '<0.0.0-0'
|
|
||||||
} else {
|
|
||||||
// nothing is forbidden
|
|
||||||
ret = '*'
|
|
||||||
}
|
|
||||||
} else if (gtlt && anyX) {
|
|
||||||
// we know patch is an x, because we have any x at all.
|
|
||||||
// replace X with 0
|
|
||||||
if (xm) {
|
|
||||||
m = 0
|
|
||||||
}
|
|
||||||
p = 0
|
|
||||||
|
|
||||||
if (gtlt === '>') {
|
|
||||||
// >1 => >=2.0.0
|
|
||||||
// >1.2 => >=1.3.0
|
|
||||||
gtlt = '>='
|
|
||||||
if (xm) {
|
|
||||||
M = +M + 1
|
|
||||||
m = 0
|
|
||||||
p = 0
|
|
||||||
} else {
|
|
||||||
m = +m + 1
|
|
||||||
p = 0
|
|
||||||
}
|
|
||||||
} else if (gtlt === '<=') {
|
|
||||||
// <=0.7.x is actually <0.8.0, since any 0.7.x should
|
|
||||||
// pass. Similarly, <=7.x is actually <8.0.0, etc.
|
|
||||||
gtlt = '<'
|
|
||||||
if (xm) {
|
|
||||||
M = +M + 1
|
|
||||||
} else {
|
|
||||||
m = +m + 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gtlt === '<')
|
|
||||||
pr = '-0'
|
|
||||||
|
|
||||||
ret = `${gtlt + M}.${m}.${p}${pr}`
|
|
||||||
} else if (xm) {
|
|
||||||
ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`
|
|
||||||
} else if (xp) {
|
|
||||||
ret = `>=${M}.${m}.0${pr
|
|
||||||
} <${M}.${+m + 1}.0-0`
|
|
||||||
}
|
|
||||||
|
|
||||||
debug('xRange return', ret)
|
|
||||||
|
|
||||||
return ret
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Because * is AND-ed with everything else in the comparator,
|
|
||||||
// and '' means "any version", just remove the *s entirely.
|
|
||||||
const replaceStars = (comp, options) => {
|
|
||||||
debug('replaceStars', comp, options)
|
|
||||||
// Looseness is ignored here. star is always as loose as it gets!
|
|
||||||
return comp.trim().replace(re[t.STAR], '')
|
|
||||||
}
|
|
||||||
|
|
||||||
const replaceGTE0 = (comp, options) => {
|
|
||||||
debug('replaceGTE0', comp, options)
|
|
||||||
return comp.trim()
|
|
||||||
.replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')
|
|
||||||
}
|
|
||||||
|
|
||||||
// This function is passed to string.replace(re[t.HYPHENRANGE])
|
|
||||||
// M, m, patch, prerelease, build
|
|
||||||
// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
|
|
||||||
// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do
|
|
||||||
// 1.2 - 3.4 => >=1.2.0 <3.5.0-0
|
|
||||||
const hyphenReplace = incPr => ($0,
|
|
||||||
from, fM, fm, fp, fpr, fb,
|
|
||||||
to, tM, tm, tp, tpr, tb) => {
|
|
||||||
if (isX(fM)) {
|
|
||||||
from = ''
|
|
||||||
} else if (isX(fm)) {
|
|
||||||
from = `>=${fM}.0.0${incPr ? '-0' : ''}`
|
|
||||||
} else if (isX(fp)) {
|
|
||||||
from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`
|
|
||||||
} else if (fpr) {
|
|
||||||
from = `>=${from}`
|
|
||||||
} else {
|
|
||||||
from = `>=${from}${incPr ? '-0' : ''}`
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isX(tM)) {
|
|
||||||
to = ''
|
|
||||||
} else if (isX(tm)) {
|
|
||||||
to = `<${+tM + 1}.0.0-0`
|
|
||||||
} else if (isX(tp)) {
|
|
||||||
to = `<${tM}.${+tm + 1}.0-0`
|
|
||||||
} else if (tpr) {
|
|
||||||
to = `<=${tM}.${tm}.${tp}-${tpr}`
|
|
||||||
} else if (incPr) {
|
|
||||||
to = `<${tM}.${tm}.${+tp + 1}-0`
|
|
||||||
} else {
|
|
||||||
to = `<=${to}`
|
|
||||||
}
|
|
||||||
|
|
||||||
return (`${from} ${to}`).trim()
|
|
||||||
}
|
|
||||||
|
|
||||||
const testSet = (set, version, options) => {
|
|
||||||
for (let i = 0; i < set.length; i++) {
|
|
||||||
if (!set[i].test(version)) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (version.prerelease.length && !options.includePrerelease) {
|
|
||||||
// Find the set of versions that are allowed to have prereleases
|
|
||||||
// For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
|
|
||||||
// That should allow `1.2.3-pr.2` to pass.
|
|
||||||
// However, `1.2.4-alpha.notready` should NOT be allowed,
|
|
||||||
// even though it's within the range set by the comparators.
|
|
||||||
for (let i = 0; i < set.length; i++) {
|
|
||||||
debug(set[i].semver)
|
|
||||||
if (set[i].semver === Comparator.ANY) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if (set[i].semver.prerelease.length > 0) {
|
|
||||||
const allowed = set[i].semver
|
|
||||||
if (allowed.major === version.major &&
|
|
||||||
allowed.minor === version.minor &&
|
|
||||||
allowed.patch === version.patch) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Version has a -pre, but it's not one of the ones we like.
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 8088:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const debug = __webpack_require__(427)
|
|
||||||
const { MAX_LENGTH, MAX_SAFE_INTEGER } = __webpack_require__(2293)
|
|
||||||
const { re, t } = __webpack_require__(9523)
|
|
||||||
|
|
||||||
const { compareIdentifiers } = __webpack_require__(2463)
|
|
||||||
class SemVer {
|
|
||||||
constructor (version, options) {
|
|
||||||
if (!options || typeof options !== 'object') {
|
|
||||||
options = {
|
|
||||||
loose: !!options,
|
|
||||||
includePrerelease: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (version instanceof SemVer) {
|
|
||||||
if (version.loose === !!options.loose &&
|
|
||||||
version.includePrerelease === !!options.includePrerelease) {
|
|
||||||
return version
|
|
||||||
} else {
|
|
||||||
version = version.version
|
|
||||||
}
|
|
||||||
} else if (typeof version !== 'string') {
|
|
||||||
throw new TypeError(`Invalid Version: ${version}`)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (version.length > MAX_LENGTH) {
|
|
||||||
throw new TypeError(
|
|
||||||
`version is longer than ${MAX_LENGTH} characters`
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
debug('SemVer', version, options)
|
|
||||||
this.options = options
|
|
||||||
this.loose = !!options.loose
|
|
||||||
// this isn't actually relevant for versions, but keep it so that we
|
|
||||||
// don't run into trouble passing this.options around.
|
|
||||||
this.includePrerelease = !!options.includePrerelease
|
|
||||||
|
|
||||||
const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])
|
|
||||||
|
|
||||||
if (!m) {
|
|
||||||
throw new TypeError(`Invalid Version: ${version}`)
|
|
||||||
}
|
|
||||||
|
|
||||||
this.raw = version
|
|
||||||
|
|
||||||
// these are actually numbers
|
|
||||||
this.major = +m[1]
|
|
||||||
this.minor = +m[2]
|
|
||||||
this.patch = +m[3]
|
|
||||||
|
|
||||||
if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
|
|
||||||
throw new TypeError('Invalid major version')
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
|
|
||||||
throw new TypeError('Invalid minor version')
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
|
|
||||||
throw new TypeError('Invalid patch version')
|
|
||||||
}
|
|
||||||
|
|
||||||
// numberify any prerelease numeric ids
|
|
||||||
if (!m[4]) {
|
|
||||||
this.prerelease = []
|
|
||||||
} else {
|
|
||||||
this.prerelease = m[4].split('.').map((id) => {
|
|
||||||
if (/^[0-9]+$/.test(id)) {
|
|
||||||
const num = +id
|
|
||||||
if (num >= 0 && num < MAX_SAFE_INTEGER) {
|
|
||||||
return num
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return id
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
this.build = m[5] ? m[5].split('.') : []
|
|
||||||
this.format()
|
|
||||||
}
|
|
||||||
|
|
||||||
format () {
|
|
||||||
this.version = `${this.major}.${this.minor}.${this.patch}`
|
|
||||||
if (this.prerelease.length) {
|
|
||||||
this.version += `-${this.prerelease.join('.')}`
|
|
||||||
}
|
|
||||||
return this.version
|
|
||||||
}
|
|
||||||
|
|
||||||
toString () {
|
|
||||||
return this.version
|
|
||||||
}
|
|
||||||
|
|
||||||
compare (other) {
|
|
||||||
debug('SemVer.compare', this.version, this.options, other)
|
|
||||||
if (!(other instanceof SemVer)) {
|
|
||||||
if (typeof other === 'string' && other === this.version) {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
other = new SemVer(other, this.options)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (other.version === this.version) {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.compareMain(other) || this.comparePre(other)
|
|
||||||
}
|
|
||||||
|
|
||||||
compareMain (other) {
|
|
||||||
if (!(other instanceof SemVer)) {
|
|
||||||
other = new SemVer(other, this.options)
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
compareIdentifiers(this.major, other.major) ||
|
|
||||||
compareIdentifiers(this.minor, other.minor) ||
|
|
||||||
compareIdentifiers(this.patch, other.patch)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
comparePre (other) {
|
|
||||||
if (!(other instanceof SemVer)) {
|
|
||||||
other = new SemVer(other, this.options)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NOT having a prerelease is > having one
|
|
||||||
if (this.prerelease.length && !other.prerelease.length) {
|
|
||||||
return -1
|
|
||||||
} else if (!this.prerelease.length && other.prerelease.length) {
|
|
||||||
return 1
|
|
||||||
} else if (!this.prerelease.length && !other.prerelease.length) {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
let i = 0
|
|
||||||
do {
|
|
||||||
const a = this.prerelease[i]
|
|
||||||
const b = other.prerelease[i]
|
|
||||||
debug('prerelease compare', i, a, b)
|
|
||||||
if (a === undefined && b === undefined) {
|
|
||||||
return 0
|
|
||||||
} else if (b === undefined) {
|
|
||||||
return 1
|
|
||||||
} else if (a === undefined) {
|
|
||||||
return -1
|
|
||||||
} else if (a === b) {
|
|
||||||
continue
|
|
||||||
} else {
|
|
||||||
return compareIdentifiers(a, b)
|
|
||||||
}
|
|
||||||
} while (++i)
|
|
||||||
}
|
|
||||||
|
|
||||||
compareBuild (other) {
|
|
||||||
if (!(other instanceof SemVer)) {
|
|
||||||
other = new SemVer(other, this.options)
|
|
||||||
}
|
|
||||||
|
|
||||||
let i = 0
|
|
||||||
do {
|
|
||||||
const a = this.build[i]
|
|
||||||
const b = other.build[i]
|
|
||||||
debug('prerelease compare', i, a, b)
|
|
||||||
if (a === undefined && b === undefined) {
|
|
||||||
return 0
|
|
||||||
} else if (b === undefined) {
|
|
||||||
return 1
|
|
||||||
} else if (a === undefined) {
|
|
||||||
return -1
|
|
||||||
} else if (a === b) {
|
|
||||||
continue
|
|
||||||
} else {
|
|
||||||
return compareIdentifiers(a, b)
|
|
||||||
}
|
|
||||||
} while (++i)
|
|
||||||
}
|
|
||||||
|
|
||||||
// preminor will bump the version up to the next minor release, and immediately
|
|
||||||
// down to pre-release. premajor and prepatch work the same way.
|
|
||||||
inc (release, identifier) {
|
|
||||||
switch (release) {
|
|
||||||
case 'premajor':
|
|
||||||
this.prerelease.length = 0
|
|
||||||
this.patch = 0
|
|
||||||
this.minor = 0
|
|
||||||
this.major++
|
|
||||||
this.inc('pre', identifier)
|
|
||||||
break
|
|
||||||
case 'preminor':
|
|
||||||
this.prerelease.length = 0
|
|
||||||
this.patch = 0
|
|
||||||
this.minor++
|
|
||||||
this.inc('pre', identifier)
|
|
||||||
break
|
|
||||||
case 'prepatch':
|
|
||||||
// If this is already a prerelease, it will bump to the next version
|
|
||||||
// drop any prereleases that might already exist, since they are not
|
|
||||||
// relevant at this point.
|
|
||||||
this.prerelease.length = 0
|
|
||||||
this.inc('patch', identifier)
|
|
||||||
this.inc('pre', identifier)
|
|
||||||
break
|
|
||||||
// If the input is a non-prerelease version, this acts the same as
|
|
||||||
// prepatch.
|
|
||||||
case 'prerelease':
|
|
||||||
if (this.prerelease.length === 0) {
|
|
||||||
this.inc('patch', identifier)
|
|
||||||
}
|
|
||||||
this.inc('pre', identifier)
|
|
||||||
break
|
|
||||||
|
|
||||||
case 'major':
|
|
||||||
// If this is a pre-major version, bump up to the same major version.
|
|
||||||
// Otherwise increment major.
|
|
||||||
// 1.0.0-5 bumps to 1.0.0
|
|
||||||
// 1.1.0 bumps to 2.0.0
|
|
||||||
if (
|
|
||||||
this.minor !== 0 ||
|
|
||||||
this.patch !== 0 ||
|
|
||||||
this.prerelease.length === 0
|
|
||||||
) {
|
|
||||||
this.major++
|
|
||||||
}
|
|
||||||
this.minor = 0
|
|
||||||
this.patch = 0
|
|
||||||
this.prerelease = []
|
|
||||||
break
|
|
||||||
case 'minor':
|
|
||||||
// If this is a pre-minor version, bump up to the same minor version.
|
|
||||||
// Otherwise increment minor.
|
|
||||||
// 1.2.0-5 bumps to 1.2.0
|
|
||||||
// 1.2.1 bumps to 1.3.0
|
|
||||||
if (this.patch !== 0 || this.prerelease.length === 0) {
|
|
||||||
this.minor++
|
|
||||||
}
|
|
||||||
this.patch = 0
|
|
||||||
this.prerelease = []
|
|
||||||
break
|
|
||||||
case 'patch':
|
|
||||||
// If this is not a pre-release version, it will increment the patch.
|
|
||||||
// If it is a pre-release it will bump up to the same patch version.
|
|
||||||
// 1.2.0-5 patches to 1.2.0
|
|
||||||
// 1.2.0 patches to 1.2.1
|
|
||||||
if (this.prerelease.length === 0) {
|
|
||||||
this.patch++
|
|
||||||
}
|
|
||||||
this.prerelease = []
|
|
||||||
break
|
|
||||||
// This probably shouldn't be used publicly.
|
|
||||||
// 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
|
|
||||||
case 'pre':
|
|
||||||
if (this.prerelease.length === 0) {
|
|
||||||
this.prerelease = [0]
|
|
||||||
} else {
|
|
||||||
let i = this.prerelease.length
|
|
||||||
while (--i >= 0) {
|
|
||||||
if (typeof this.prerelease[i] === 'number') {
|
|
||||||
this.prerelease[i]++
|
|
||||||
i = -2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (i === -1) {
|
|
||||||
// didn't increment anything
|
|
||||||
this.prerelease.push(0)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (identifier) {
|
|
||||||
// 1.2.0-beta.1 bumps to 1.2.0-beta.2,
|
|
||||||
// 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
|
|
||||||
if (this.prerelease[0] === identifier) {
|
|
||||||
if (isNaN(this.prerelease[1])) {
|
|
||||||
this.prerelease = [identifier, 0]
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.prerelease = [identifier, 0]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break
|
|
||||||
|
|
||||||
default:
|
|
||||||
throw new Error(`invalid increment argument: ${release}`)
|
|
||||||
}
|
|
||||||
this.format()
|
|
||||||
this.raw = this.version
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = SemVer
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 8848:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const parse = __webpack_require__(5925)
|
|
||||||
const clean = (version, options) => {
|
|
||||||
const s = parse(version.trim().replace(/^[=v]+/, ''), options)
|
|
||||||
return s ? s.version : null
|
|
||||||
}
|
|
||||||
module.exports = clean
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 5098:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const eq = __webpack_require__(1898)
|
|
||||||
const neq = __webpack_require__(6017)
|
|
||||||
const gt = __webpack_require__(4123)
|
|
||||||
const gte = __webpack_require__(5522)
|
|
||||||
const lt = __webpack_require__(194)
|
|
||||||
const lte = __webpack_require__(7520)
|
|
||||||
|
|
||||||
const cmp = (a, op, b, loose) => {
|
|
||||||
switch (op) {
|
|
||||||
case '===':
|
|
||||||
if (typeof a === 'object')
|
|
||||||
a = a.version
|
|
||||||
if (typeof b === 'object')
|
|
||||||
b = b.version
|
|
||||||
return a === b
|
|
||||||
|
|
||||||
case '!==':
|
|
||||||
if (typeof a === 'object')
|
|
||||||
a = a.version
|
|
||||||
if (typeof b === 'object')
|
|
||||||
b = b.version
|
|
||||||
return a !== b
|
|
||||||
|
|
||||||
case '':
|
|
||||||
case '=':
|
|
||||||
case '==':
|
|
||||||
return eq(a, b, loose)
|
|
||||||
|
|
||||||
case '!=':
|
|
||||||
return neq(a, b, loose)
|
|
||||||
|
|
||||||
case '>':
|
|
||||||
return gt(a, b, loose)
|
|
||||||
|
|
||||||
case '>=':
|
|
||||||
return gte(a, b, loose)
|
|
||||||
|
|
||||||
case '<':
|
|
||||||
return lt(a, b, loose)
|
|
||||||
|
|
||||||
case '<=':
|
|
||||||
return lte(a, b, loose)
|
|
||||||
|
|
||||||
default:
|
|
||||||
throw new TypeError(`Invalid operator: ${op}`)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
module.exports = cmp
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 3466:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const SemVer = __webpack_require__(8088)
|
|
||||||
const parse = __webpack_require__(5925)
|
|
||||||
const {re, t} = __webpack_require__(9523)
|
|
||||||
|
|
||||||
const coerce = (version, options) => {
|
|
||||||
if (version instanceof SemVer) {
|
|
||||||
return version
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof version === 'number') {
|
|
||||||
version = String(version)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof version !== 'string') {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
options = options || {}
|
|
||||||
|
|
||||||
let match = null
|
|
||||||
if (!options.rtl) {
|
|
||||||
match = version.match(re[t.COERCE])
|
|
||||||
} else {
|
|
||||||
// Find the right-most coercible string that does not share
|
|
||||||
// a terminus with a more left-ward coercible string.
|
|
||||||
// Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
|
|
||||||
//
|
|
||||||
// Walk through the string checking with a /g regexp
|
|
||||||
// Manually set the index so as to pick up overlapping matches.
|
|
||||||
// Stop when we get a match that ends at the string end, since no
|
|
||||||
// coercible string can be more right-ward without the same terminus.
|
|
||||||
let next
|
|
||||||
while ((next = re[t.COERCERTL].exec(version)) &&
|
|
||||||
(!match || match.index + match[0].length !== version.length)
|
|
||||||
) {
|
|
||||||
if (!match ||
|
|
||||||
next.index + next[0].length !== match.index + match[0].length) {
|
|
||||||
match = next
|
|
||||||
}
|
|
||||||
re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
|
|
||||||
}
|
|
||||||
// leave it in a clean state
|
|
||||||
re[t.COERCERTL].lastIndex = -1
|
|
||||||
}
|
|
||||||
|
|
||||||
if (match === null)
|
|
||||||
return null
|
|
||||||
|
|
||||||
return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)
|
|
||||||
}
|
|
||||||
module.exports = coerce
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 2156:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const SemVer = __webpack_require__(8088)
|
|
||||||
const compareBuild = (a, b, loose) => {
|
|
||||||
const versionA = new SemVer(a, loose)
|
|
||||||
const versionB = new SemVer(b, loose)
|
|
||||||
return versionA.compare(versionB) || versionA.compareBuild(versionB)
|
|
||||||
}
|
|
||||||
module.exports = compareBuild
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 2804:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const compare = __webpack_require__(4309)
|
|
||||||
const compareLoose = (a, b) => compare(a, b, true)
|
|
||||||
module.exports = compareLoose
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 4309:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const SemVer = __webpack_require__(8088)
|
|
||||||
const compare = (a, b, loose) =>
|
|
||||||
new SemVer(a, loose).compare(new SemVer(b, loose))
|
|
||||||
|
|
||||||
module.exports = compare
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 4297:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const parse = __webpack_require__(5925)
|
|
||||||
const eq = __webpack_require__(1898)
|
|
||||||
|
|
||||||
const diff = (version1, version2) => {
|
|
||||||
if (eq(version1, version2)) {
|
|
||||||
return null
|
|
||||||
} else {
|
|
||||||
const v1 = parse(version1)
|
|
||||||
const v2 = parse(version2)
|
|
||||||
const hasPre = v1.prerelease.length || v2.prerelease.length
|
|
||||||
const prefix = hasPre ? 'pre' : ''
|
|
||||||
const defaultResult = hasPre ? 'prerelease' : ''
|
|
||||||
for (const key in v1) {
|
|
||||||
if (key === 'major' || key === 'minor' || key === 'patch') {
|
|
||||||
if (v1[key] !== v2[key]) {
|
|
||||||
return prefix + key
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return defaultResult // may be undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
module.exports = diff
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 1898:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const compare = __webpack_require__(4309)
|
|
||||||
const eq = (a, b, loose) => compare(a, b, loose) === 0
|
|
||||||
module.exports = eq
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 4123:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const compare = __webpack_require__(4309)
|
|
||||||
const gt = (a, b, loose) => compare(a, b, loose) > 0
|
|
||||||
module.exports = gt
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 5522:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const compare = __webpack_require__(4309)
|
|
||||||
const gte = (a, b, loose) => compare(a, b, loose) >= 0
|
|
||||||
module.exports = gte
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 900:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const SemVer = __webpack_require__(8088)
|
|
||||||
|
|
||||||
const inc = (version, release, options, identifier) => {
|
|
||||||
if (typeof (options) === 'string') {
|
|
||||||
identifier = options
|
|
||||||
options = undefined
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
return new SemVer(version, options).inc(release, identifier).version
|
|
||||||
} catch (er) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
module.exports = inc
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 194:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const compare = __webpack_require__(4309)
|
|
||||||
const lt = (a, b, loose) => compare(a, b, loose) < 0
|
|
||||||
module.exports = lt
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 7520:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const compare = __webpack_require__(4309)
|
|
||||||
const lte = (a, b, loose) => compare(a, b, loose) <= 0
|
|
||||||
module.exports = lte
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 6688:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const SemVer = __webpack_require__(8088)
|
|
||||||
const major = (a, loose) => new SemVer(a, loose).major
|
|
||||||
module.exports = major
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 8447:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const SemVer = __webpack_require__(8088)
|
|
||||||
const minor = (a, loose) => new SemVer(a, loose).minor
|
|
||||||
module.exports = minor
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 6017:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const compare = __webpack_require__(4309)
|
|
||||||
const neq = (a, b, loose) => compare(a, b, loose) !== 0
|
|
||||||
module.exports = neq
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 5925:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const {MAX_LENGTH} = __webpack_require__(2293)
|
|
||||||
const { re, t } = __webpack_require__(9523)
|
|
||||||
const SemVer = __webpack_require__(8088)
|
|
||||||
|
|
||||||
const parse = (version, options) => {
|
|
||||||
if (!options || typeof options !== 'object') {
|
|
||||||
options = {
|
|
||||||
loose: !!options,
|
|
||||||
includePrerelease: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (version instanceof SemVer) {
|
|
||||||
return version
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof version !== 'string') {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
if (version.length > MAX_LENGTH) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
const r = options.loose ? re[t.LOOSE] : re[t.FULL]
|
|
||||||
if (!r.test(version)) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
return new SemVer(version, options)
|
|
||||||
} catch (er) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = parse
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 2866:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const SemVer = __webpack_require__(8088)
|
|
||||||
const patch = (a, loose) => new SemVer(a, loose).patch
|
|
||||||
module.exports = patch
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 6014:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const parse = __webpack_require__(5925)
|
|
||||||
const prerelease = (version, options) => {
|
|
||||||
const parsed = parse(version, options)
|
|
||||||
return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
|
|
||||||
}
|
|
||||||
module.exports = prerelease
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 6417:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const compare = __webpack_require__(4309)
|
|
||||||
const rcompare = (a, b, loose) => compare(b, a, loose)
|
|
||||||
module.exports = rcompare
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 8701:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const compareBuild = __webpack_require__(2156)
|
|
||||||
const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))
|
|
||||||
module.exports = rsort
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 6055:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const Range = __webpack_require__(9828)
|
|
||||||
const satisfies = (version, range, options) => {
|
|
||||||
try {
|
|
||||||
range = new Range(range, options)
|
|
||||||
} catch (er) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return range.test(version)
|
|
||||||
}
|
|
||||||
module.exports = satisfies
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 1426:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const compareBuild = __webpack_require__(2156)
|
|
||||||
const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))
|
|
||||||
module.exports = sort
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 9601:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const parse = __webpack_require__(5925)
|
|
||||||
const valid = (version, options) => {
|
|
||||||
const v = parse(version, options)
|
|
||||||
return v ? v.version : null
|
|
||||||
}
|
|
||||||
module.exports = valid
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 1383:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
// just pre-load all the stuff that index.js lazily exports
|
|
||||||
const internalRe = __webpack_require__(9523)
|
|
||||||
module.exports = {
|
|
||||||
re: internalRe.re,
|
|
||||||
src: internalRe.src,
|
|
||||||
tokens: internalRe.t,
|
|
||||||
SEMVER_SPEC_VERSION: __webpack_require__(2293).SEMVER_SPEC_VERSION,
|
|
||||||
SemVer: __webpack_require__(8088),
|
|
||||||
compareIdentifiers: __webpack_require__(2463).compareIdentifiers,
|
|
||||||
rcompareIdentifiers: __webpack_require__(2463).rcompareIdentifiers,
|
|
||||||
parse: __webpack_require__(5925),
|
|
||||||
valid: __webpack_require__(9601),
|
|
||||||
clean: __webpack_require__(8848),
|
|
||||||
inc: __webpack_require__(900),
|
|
||||||
diff: __webpack_require__(4297),
|
|
||||||
major: __webpack_require__(6688),
|
|
||||||
minor: __webpack_require__(8447),
|
|
||||||
patch: __webpack_require__(2866),
|
|
||||||
prerelease: __webpack_require__(6014),
|
|
||||||
compare: __webpack_require__(4309),
|
|
||||||
rcompare: __webpack_require__(6417),
|
|
||||||
compareLoose: __webpack_require__(2804),
|
|
||||||
compareBuild: __webpack_require__(2156),
|
|
||||||
sort: __webpack_require__(1426),
|
|
||||||
rsort: __webpack_require__(8701),
|
|
||||||
gt: __webpack_require__(4123),
|
|
||||||
lt: __webpack_require__(194),
|
|
||||||
eq: __webpack_require__(1898),
|
|
||||||
neq: __webpack_require__(6017),
|
|
||||||
gte: __webpack_require__(5522),
|
|
||||||
lte: __webpack_require__(7520),
|
|
||||||
cmp: __webpack_require__(5098),
|
|
||||||
coerce: __webpack_require__(3466),
|
|
||||||
Comparator: __webpack_require__(1532),
|
|
||||||
Range: __webpack_require__(9828),
|
|
||||||
satisfies: __webpack_require__(6055),
|
|
||||||
toComparators: __webpack_require__(2706),
|
|
||||||
maxSatisfying: __webpack_require__(579),
|
|
||||||
minSatisfying: __webpack_require__(832),
|
|
||||||
minVersion: __webpack_require__(4179),
|
|
||||||
validRange: __webpack_require__(2098),
|
|
||||||
outside: __webpack_require__(420),
|
|
||||||
gtr: __webpack_require__(9380),
|
|
||||||
ltr: __webpack_require__(3323),
|
|
||||||
intersects: __webpack_require__(7008),
|
|
||||||
simplifyRange: __webpack_require__(5297),
|
|
||||||
subset: __webpack_require__(7863),
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 2293:
|
|
||||||
/***/ ((module) => {
|
|
||||||
|
|
||||||
// Note: this is the semver.org version of the spec that it implements
|
|
||||||
// Not necessarily the package version of this code.
|
|
||||||
const SEMVER_SPEC_VERSION = '2.0.0'
|
|
||||||
|
|
||||||
const MAX_LENGTH = 256
|
|
||||||
const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
|
|
||||||
/* istanbul ignore next */ 9007199254740991
|
|
||||||
|
|
||||||
// Max safe segment length for coercion.
|
|
||||||
const MAX_SAFE_COMPONENT_LENGTH = 16
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
SEMVER_SPEC_VERSION,
|
|
||||||
MAX_LENGTH,
|
|
||||||
MAX_SAFE_INTEGER,
|
|
||||||
MAX_SAFE_COMPONENT_LENGTH
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 427:
|
|
||||||
/***/ ((module) => {
|
|
||||||
|
|
||||||
const debug = (
|
|
||||||
typeof process === 'object' &&
|
|
||||||
process.env &&
|
|
||||||
process.env.NODE_DEBUG &&
|
|
||||||
/\bsemver\b/i.test(process.env.NODE_DEBUG)
|
|
||||||
) ? (...args) => console.error('SEMVER', ...args)
|
|
||||||
: () => {}
|
|
||||||
|
|
||||||
module.exports = debug
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 2463:
|
|
||||||
/***/ ((module) => {
|
|
||||||
|
|
||||||
const numeric = /^[0-9]+$/
|
|
||||||
const compareIdentifiers = (a, b) => {
|
|
||||||
const anum = numeric.test(a)
|
|
||||||
const bnum = numeric.test(b)
|
|
||||||
|
|
||||||
if (anum && bnum) {
|
|
||||||
a = +a
|
|
||||||
b = +b
|
|
||||||
}
|
|
||||||
|
|
||||||
return a === b ? 0
|
|
||||||
: (anum && !bnum) ? -1
|
|
||||||
: (bnum && !anum) ? 1
|
|
||||||
: a < b ? -1
|
|
||||||
: 1
|
|
||||||
}
|
|
||||||
|
|
||||||
const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
compareIdentifiers,
|
|
||||||
rcompareIdentifiers
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 9523:
|
|
||||||
/***/ ((module, exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const { MAX_SAFE_COMPONENT_LENGTH } = __webpack_require__(2293)
|
|
||||||
const debug = __webpack_require__(427)
|
|
||||||
exports = module.exports = {}
|
|
||||||
|
|
||||||
// The actual regexps go on exports.re
|
|
||||||
const re = exports.re = []
|
|
||||||
const src = exports.src = []
|
|
||||||
const t = exports.t = {}
|
|
||||||
let R = 0
|
|
||||||
|
|
||||||
const createToken = (name, value, isGlobal) => {
|
|
||||||
const index = R++
|
|
||||||
debug(index, value)
|
|
||||||
t[name] = index
|
|
||||||
src[index] = value
|
|
||||||
re[index] = new RegExp(value, isGlobal ? 'g' : undefined)
|
|
||||||
}
|
|
||||||
|
|
||||||
// The following Regular Expressions can be used for tokenizing,
|
|
||||||
// validating, and parsing SemVer version strings.
|
|
||||||
|
|
||||||
// ## Numeric Identifier
|
|
||||||
// A single `0`, or a non-zero digit followed by zero or more digits.
|
|
||||||
|
|
||||||
createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*')
|
|
||||||
createToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')
|
|
||||||
|
|
||||||
// ## Non-numeric Identifier
|
|
||||||
// Zero or more digits, followed by a letter or hyphen, and then zero or
|
|
||||||
// more letters, digits, or hyphens.
|
|
||||||
|
|
||||||
createToken('NONNUMERICIDENTIFIER', '\\d*[a-zA-Z-][a-zA-Z0-9-]*')
|
|
||||||
|
|
||||||
// ## Main Version
|
|
||||||
// Three dot-separated numeric identifiers.
|
|
||||||
|
|
||||||
createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` +
|
|
||||||
`(${src[t.NUMERICIDENTIFIER]})\\.` +
|
|
||||||
`(${src[t.NUMERICIDENTIFIER]})`)
|
|
||||||
|
|
||||||
createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
|
|
||||||
`(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
|
|
||||||
`(${src[t.NUMERICIDENTIFIERLOOSE]})`)
|
|
||||||
|
|
||||||
// ## Pre-release Version Identifier
|
|
||||||
// A numeric identifier, or a non-numeric identifier.
|
|
||||||
|
|
||||||
createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]
|
|
||||||
}|${src[t.NONNUMERICIDENTIFIER]})`)
|
|
||||||
|
|
||||||
createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]
|
|
||||||
}|${src[t.NONNUMERICIDENTIFIER]})`)
|
|
||||||
|
|
||||||
// ## Pre-release Version
|
|
||||||
// Hyphen, followed by one or more dot-separated pre-release version
|
|
||||||
// identifiers.
|
|
||||||
|
|
||||||
createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]
|
|
||||||
}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`)
|
|
||||||
|
|
||||||
createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]
|
|
||||||
}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)
|
|
||||||
|
|
||||||
// ## Build Metadata Identifier
|
|
||||||
// Any combination of digits, letters, or hyphens.
|
|
||||||
|
|
||||||
createToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')
|
|
||||||
|
|
||||||
// ## Build Metadata
|
|
||||||
// Plus sign, followed by one or more period-separated build metadata
|
|
||||||
// identifiers.
|
|
||||||
|
|
||||||
createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER]
|
|
||||||
}(?:\\.${src[t.BUILDIDENTIFIER]})*))`)
|
|
||||||
|
|
||||||
// ## Full Version String
|
|
||||||
// A main version, followed optionally by a pre-release version and
|
|
||||||
// build metadata.
|
|
||||||
|
|
||||||
// Note that the only major, minor, patch, and pre-release sections of
|
|
||||||
// the version string are capturing groups. The build metadata is not a
|
|
||||||
// capturing group, because it should not ever be used in version
|
|
||||||
// comparison.
|
|
||||||
|
|
||||||
createToken('FULLPLAIN', `v?${src[t.MAINVERSION]
|
|
||||||
}${src[t.PRERELEASE]}?${
|
|
||||||
src[t.BUILD]}?`)
|
|
||||||
|
|
||||||
createToken('FULL', `^${src[t.FULLPLAIN]}$`)
|
|
||||||
|
|
||||||
// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
|
|
||||||
// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
|
|
||||||
// common in the npm registry.
|
|
||||||
createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE]
|
|
||||||
}${src[t.PRERELEASELOOSE]}?${
|
|
||||||
src[t.BUILD]}?`)
|
|
||||||
|
|
||||||
createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)
|
|
||||||
|
|
||||||
createToken('GTLT', '((?:<|>)?=?)')
|
|
||||||
|
|
||||||
// Something like "2.*" or "1.2.x".
|
|
||||||
// Note that "x.x" is a valid xRange identifer, meaning "any version"
|
|
||||||
// Only the first item is strictly required.
|
|
||||||
createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`)
|
|
||||||
createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`)
|
|
||||||
|
|
||||||
createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` +
|
|
||||||
`(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
|
|
||||||
`(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
|
|
||||||
`(?:${src[t.PRERELEASE]})?${
|
|
||||||
src[t.BUILD]}?` +
|
|
||||||
`)?)?`)
|
|
||||||
|
|
||||||
createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +
|
|
||||||
`(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
|
|
||||||
`(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
|
|
||||||
`(?:${src[t.PRERELEASELOOSE]})?${
|
|
||||||
src[t.BUILD]}?` +
|
|
||||||
`)?)?`)
|
|
||||||
|
|
||||||
createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`)
|
|
||||||
createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`)
|
|
||||||
|
|
||||||
// Coercion.
|
|
||||||
// Extract anything that could conceivably be a part of a valid semver
|
|
||||||
createToken('COERCE', `${'(^|[^\\d])' +
|
|
||||||
'(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +
|
|
||||||
`(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
|
|
||||||
`(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
|
|
||||||
`(?:$|[^\\d])`)
|
|
||||||
createToken('COERCERTL', src[t.COERCE], true)
|
|
||||||
|
|
||||||
// Tilde ranges.
|
|
||||||
// Meaning is "reasonably at or greater than"
|
|
||||||
createToken('LONETILDE', '(?:~>?)')
|
|
||||||
|
|
||||||
createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true)
|
|
||||||
exports.tildeTrimReplace = '$1~'
|
|
||||||
|
|
||||||
createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)
|
|
||||||
createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)
|
|
||||||
|
|
||||||
// Caret ranges.
|
|
||||||
// Meaning is "at least and backwards compatible with"
|
|
||||||
createToken('LONECARET', '(?:\\^)')
|
|
||||||
|
|
||||||
createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true)
|
|
||||||
exports.caretTrimReplace = '$1^'
|
|
||||||
|
|
||||||
createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)
|
|
||||||
createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)
|
|
||||||
|
|
||||||
// A simple gt/lt/eq thing, or just "" to indicate "any version"
|
|
||||||
createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`)
|
|
||||||
createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`)
|
|
||||||
|
|
||||||
// An expression to strip any whitespace between the gtlt and the thing
|
|
||||||
// it modifies, so that `> 1.2.3` ==> `>1.2.3`
|
|
||||||
createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT]
|
|
||||||
}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)
|
|
||||||
exports.comparatorTrimReplace = '$1$2$3'
|
|
||||||
|
|
||||||
// Something like `1.2.3 - 1.2.4`
|
|
||||||
// Note that these all use the loose form, because they'll be
|
|
||||||
// checked against either the strict or loose comparator form
|
|
||||||
// later.
|
|
||||||
createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` +
|
|
||||||
`\\s+-\\s+` +
|
|
||||||
`(${src[t.XRANGEPLAIN]})` +
|
|
||||||
`\\s*$`)
|
|
||||||
|
|
||||||
createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` +
|
|
||||||
`\\s+-\\s+` +
|
|
||||||
`(${src[t.XRANGEPLAINLOOSE]})` +
|
|
||||||
`\\s*$`)
|
|
||||||
|
|
||||||
// Star ranges basically just allow anything at all.
|
|
||||||
createToken('STAR', '(<|>)?=?\\s*\\*')
|
|
||||||
// >=0.0.0 is like a star
|
|
||||||
createToken('GTE0', '^\\s*>=\\s*0\.0\.0\\s*$')
|
|
||||||
createToken('GTE0PRE', '^\\s*>=\\s*0\.0\.0-0\\s*$')
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 9380:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
// Determine if version is greater than all the versions possible in the range.
|
|
||||||
const outside = __webpack_require__(420)
|
|
||||||
const gtr = (version, range, options) => outside(version, range, '>', options)
|
|
||||||
module.exports = gtr
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 7008:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const Range = __webpack_require__(9828)
|
|
||||||
const intersects = (r1, r2, options) => {
|
|
||||||
r1 = new Range(r1, options)
|
|
||||||
r2 = new Range(r2, options)
|
|
||||||
return r1.intersects(r2)
|
|
||||||
}
|
|
||||||
module.exports = intersects
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 3323:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const outside = __webpack_require__(420)
|
|
||||||
// Determine if version is less than all the versions possible in the range
|
|
||||||
const ltr = (version, range, options) => outside(version, range, '<', options)
|
|
||||||
module.exports = ltr
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 579:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const SemVer = __webpack_require__(8088)
|
|
||||||
const Range = __webpack_require__(9828)
|
|
||||||
|
|
||||||
const maxSatisfying = (versions, range, options) => {
|
|
||||||
let max = null
|
|
||||||
let maxSV = null
|
|
||||||
let rangeObj = null
|
|
||||||
try {
|
|
||||||
rangeObj = new Range(range, options)
|
|
||||||
} catch (er) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
versions.forEach((v) => {
|
|
||||||
if (rangeObj.test(v)) {
|
|
||||||
// satisfies(v, range, options)
|
|
||||||
if (!max || maxSV.compare(v) === -1) {
|
|
||||||
// compare(max, v, true)
|
|
||||||
max = v
|
|
||||||
maxSV = new SemVer(max, options)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
return max
|
|
||||||
}
|
|
||||||
module.exports = maxSatisfying
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 832:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const SemVer = __webpack_require__(8088)
|
|
||||||
const Range = __webpack_require__(9828)
|
|
||||||
const minSatisfying = (versions, range, options) => {
|
|
||||||
let min = null
|
|
||||||
let minSV = null
|
|
||||||
let rangeObj = null
|
|
||||||
try {
|
|
||||||
rangeObj = new Range(range, options)
|
|
||||||
} catch (er) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
versions.forEach((v) => {
|
|
||||||
if (rangeObj.test(v)) {
|
|
||||||
// satisfies(v, range, options)
|
|
||||||
if (!min || minSV.compare(v) === 1) {
|
|
||||||
// compare(min, v, true)
|
|
||||||
min = v
|
|
||||||
minSV = new SemVer(min, options)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
return min
|
|
||||||
}
|
|
||||||
module.exports = minSatisfying
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 4179:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const SemVer = __webpack_require__(8088)
|
|
||||||
const Range = __webpack_require__(9828)
|
|
||||||
const gt = __webpack_require__(4123)
|
|
||||||
|
|
||||||
const minVersion = (range, loose) => {
|
|
||||||
range = new Range(range, loose)
|
|
||||||
|
|
||||||
let minver = new SemVer('0.0.0')
|
|
||||||
if (range.test(minver)) {
|
|
||||||
return minver
|
|
||||||
}
|
|
||||||
|
|
||||||
minver = new SemVer('0.0.0-0')
|
|
||||||
if (range.test(minver)) {
|
|
||||||
return minver
|
|
||||||
}
|
|
||||||
|
|
||||||
minver = null
|
|
||||||
for (let i = 0; i < range.set.length; ++i) {
|
|
||||||
const comparators = range.set[i]
|
|
||||||
|
|
||||||
comparators.forEach((comparator) => {
|
|
||||||
// Clone to avoid manipulating the comparator's semver object.
|
|
||||||
const compver = new SemVer(comparator.semver.version)
|
|
||||||
switch (comparator.operator) {
|
|
||||||
case '>':
|
|
||||||
if (compver.prerelease.length === 0) {
|
|
||||||
compver.patch++
|
|
||||||
} else {
|
|
||||||
compver.prerelease.push(0)
|
|
||||||
}
|
|
||||||
compver.raw = compver.format()
|
|
||||||
/* fallthrough */
|
|
||||||
case '':
|
|
||||||
case '>=':
|
|
||||||
if (!minver || gt(minver, compver)) {
|
|
||||||
minver = compver
|
|
||||||
}
|
|
||||||
break
|
|
||||||
case '<':
|
|
||||||
case '<=':
|
|
||||||
/* Ignore maximum versions */
|
|
||||||
break
|
|
||||||
/* istanbul ignore next */
|
|
||||||
default:
|
|
||||||
throw new Error(`Unexpected operation: ${comparator.operator}`)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
if (minver && range.test(minver)) {
|
|
||||||
return minver
|
|
||||||
}
|
|
||||||
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
module.exports = minVersion
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 420:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const SemVer = __webpack_require__(8088)
|
|
||||||
const Comparator = __webpack_require__(1532)
|
|
||||||
const {ANY} = Comparator
|
|
||||||
const Range = __webpack_require__(9828)
|
|
||||||
const satisfies = __webpack_require__(6055)
|
|
||||||
const gt = __webpack_require__(4123)
|
|
||||||
const lt = __webpack_require__(194)
|
|
||||||
const lte = __webpack_require__(7520)
|
|
||||||
const gte = __webpack_require__(5522)
|
|
||||||
|
|
||||||
const outside = (version, range, hilo, options) => {
|
|
||||||
version = new SemVer(version, options)
|
|
||||||
range = new Range(range, options)
|
|
||||||
|
|
||||||
let gtfn, ltefn, ltfn, comp, ecomp
|
|
||||||
switch (hilo) {
|
|
||||||
case '>':
|
|
||||||
gtfn = gt
|
|
||||||
ltefn = lte
|
|
||||||
ltfn = lt
|
|
||||||
comp = '>'
|
|
||||||
ecomp = '>='
|
|
||||||
break
|
|
||||||
case '<':
|
|
||||||
gtfn = lt
|
|
||||||
ltefn = gte
|
|
||||||
ltfn = gt
|
|
||||||
comp = '<'
|
|
||||||
ecomp = '<='
|
|
||||||
break
|
|
||||||
default:
|
|
||||||
throw new TypeError('Must provide a hilo val of "<" or ">"')
|
|
||||||
}
|
|
||||||
|
|
||||||
// If it satisifes the range it is not outside
|
|
||||||
if (satisfies(version, range, options)) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// From now on, variable terms are as if we're in "gtr" mode.
|
|
||||||
// but note that everything is flipped for the "ltr" function.
|
|
||||||
|
|
||||||
for (let i = 0; i < range.set.length; ++i) {
|
|
||||||
const comparators = range.set[i]
|
|
||||||
|
|
||||||
let high = null
|
|
||||||
let low = null
|
|
||||||
|
|
||||||
comparators.forEach((comparator) => {
|
|
||||||
if (comparator.semver === ANY) {
|
|
||||||
comparator = new Comparator('>=0.0.0')
|
|
||||||
}
|
|
||||||
high = high || comparator
|
|
||||||
low = low || comparator
|
|
||||||
if (gtfn(comparator.semver, high.semver, options)) {
|
|
||||||
high = comparator
|
|
||||||
} else if (ltfn(comparator.semver, low.semver, options)) {
|
|
||||||
low = comparator
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// If the edge version comparator has a operator then our version
|
|
||||||
// isn't outside it
|
|
||||||
if (high.operator === comp || high.operator === ecomp) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the lowest version comparator has an operator and our version
|
|
||||||
// is less than it then it isn't higher than the range
|
|
||||||
if ((!low.operator || low.operator === comp) &&
|
|
||||||
ltefn(version, low.semver)) {
|
|
||||||
return false
|
|
||||||
} else if (low.operator === ecomp && ltfn(version, low.semver)) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = outside
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 5297:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
// given a set of versions and a range, create a "simplified" range
|
|
||||||
// that includes the same versions that the original range does
|
|
||||||
// If the original range is shorter than the simplified one, return that.
|
|
||||||
const satisfies = __webpack_require__(6055)
|
|
||||||
const compare = __webpack_require__(4309)
|
|
||||||
module.exports = (versions, range, options) => {
|
|
||||||
const set = []
|
|
||||||
let min = null
|
|
||||||
let prev = null
|
|
||||||
const v = versions.sort((a, b) => compare(a, b, options))
|
|
||||||
for (const version of v) {
|
|
||||||
const included = satisfies(version, range, options)
|
|
||||||
if (included) {
|
|
||||||
prev = version
|
|
||||||
if (!min)
|
|
||||||
min = version
|
|
||||||
} else {
|
|
||||||
if (prev) {
|
|
||||||
set.push([min, prev])
|
|
||||||
}
|
|
||||||
prev = null
|
|
||||||
min = null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (min)
|
|
||||||
set.push([min, null])
|
|
||||||
|
|
||||||
const ranges = []
|
|
||||||
for (const [min, max] of set) {
|
|
||||||
if (min === max)
|
|
||||||
ranges.push(min)
|
|
||||||
else if (!max && min === v[0])
|
|
||||||
ranges.push('*')
|
|
||||||
else if (!max)
|
|
||||||
ranges.push(`>=${min}`)
|
|
||||||
else if (min === v[0])
|
|
||||||
ranges.push(`<=${max}`)
|
|
||||||
else
|
|
||||||
ranges.push(`${min} - ${max}`)
|
|
||||||
}
|
|
||||||
const simplified = ranges.join(' || ')
|
|
||||||
const original = typeof range.raw === 'string' ? range.raw : String(range)
|
|
||||||
return simplified.length < original.length ? simplified : range
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 7863:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const Range = __webpack_require__(9828)
|
|
||||||
const { ANY } = __webpack_require__(1532)
|
|
||||||
const satisfies = __webpack_require__(6055)
|
|
||||||
const compare = __webpack_require__(4309)
|
|
||||||
|
|
||||||
// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:
|
|
||||||
// - Every simple range `r1, r2, ...` is a subset of some `R1, R2, ...`
|
|
||||||
//
|
|
||||||
// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:
|
|
||||||
// - If c is only the ANY comparator
|
|
||||||
// - If C is only the ANY comparator, return true
|
|
||||||
// - Else return false
|
|
||||||
// - Let EQ be the set of = comparators in c
|
|
||||||
// - If EQ is more than one, return true (null set)
|
|
||||||
// - Let GT be the highest > or >= comparator in c
|
|
||||||
// - Let LT be the lowest < or <= comparator in c
|
|
||||||
// - If GT and LT, and GT.semver > LT.semver, return true (null set)
|
|
||||||
// - If EQ
|
|
||||||
// - If GT, and EQ does not satisfy GT, return true (null set)
|
|
||||||
// - If LT, and EQ does not satisfy LT, return true (null set)
|
|
||||||
// - If EQ satisfies every C, return true
|
|
||||||
// - Else return false
|
|
||||||
// - If GT
|
|
||||||
// - If GT is lower than any > or >= comp in C, return false
|
|
||||||
// - If GT is >=, and GT.semver does not satisfy every C, return false
|
|
||||||
// - If LT
|
|
||||||
// - If LT.semver is greater than that of any > comp in C, return false
|
|
||||||
// - If LT is <=, and LT.semver does not satisfy every C, return false
|
|
||||||
// - If any C is a = range, and GT or LT are set, return false
|
|
||||||
// - Else return true
|
|
||||||
|
|
||||||
const subset = (sub, dom, options) => {
|
|
||||||
sub = new Range(sub, options)
|
|
||||||
dom = new Range(dom, options)
|
|
||||||
let sawNonNull = false
|
|
||||||
|
|
||||||
OUTER: for (const simpleSub of sub.set) {
|
|
||||||
for (const simpleDom of dom.set) {
|
|
||||||
const isSub = simpleSubset(simpleSub, simpleDom, options)
|
|
||||||
sawNonNull = sawNonNull || isSub !== null
|
|
||||||
if (isSub)
|
|
||||||
continue OUTER
|
|
||||||
}
|
|
||||||
// the null set is a subset of everything, but null simple ranges in
|
|
||||||
// a complex range should be ignored. so if we saw a non-null range,
|
|
||||||
// then we know this isn't a subset, but if EVERY simple range was null,
|
|
||||||
// then it is a subset.
|
|
||||||
if (sawNonNull)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
const simpleSubset = (sub, dom, options) => {
|
|
||||||
if (sub.length === 1 && sub[0].semver === ANY)
|
|
||||||
return dom.length === 1 && dom[0].semver === ANY
|
|
||||||
|
|
||||||
const eqSet = new Set()
|
|
||||||
let gt, lt
|
|
||||||
for (const c of sub) {
|
|
||||||
if (c.operator === '>' || c.operator === '>=')
|
|
||||||
gt = higherGT(gt, c, options)
|
|
||||||
else if (c.operator === '<' || c.operator === '<=')
|
|
||||||
lt = lowerLT(lt, c, options)
|
|
||||||
else
|
|
||||||
eqSet.add(c.semver)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (eqSet.size > 1)
|
|
||||||
return null
|
|
||||||
|
|
||||||
let gtltComp
|
|
||||||
if (gt && lt) {
|
|
||||||
gtltComp = compare(gt.semver, lt.semver, options)
|
|
||||||
if (gtltComp > 0)
|
|
||||||
return null
|
|
||||||
else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<='))
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
// will iterate one or zero times
|
|
||||||
for (const eq of eqSet) {
|
|
||||||
if (gt && !satisfies(eq, String(gt), options))
|
|
||||||
return null
|
|
||||||
|
|
||||||
if (lt && !satisfies(eq, String(lt), options))
|
|
||||||
return null
|
|
||||||
|
|
||||||
for (const c of dom) {
|
|
||||||
if (!satisfies(eq, String(c), options))
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
let higher, lower
|
|
||||||
let hasDomLT, hasDomGT
|
|
||||||
for (const c of dom) {
|
|
||||||
hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='
|
|
||||||
hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='
|
|
||||||
if (gt) {
|
|
||||||
if (c.operator === '>' || c.operator === '>=') {
|
|
||||||
higher = higherGT(gt, c, options)
|
|
||||||
if (higher === c)
|
|
||||||
return false
|
|
||||||
} else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options))
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if (lt) {
|
|
||||||
if (c.operator === '<' || c.operator === '<=') {
|
|
||||||
lower = lowerLT(lt, c, options)
|
|
||||||
if (lower === c)
|
|
||||||
return false
|
|
||||||
} else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options))
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if (!c.operator && (lt || gt) && gtltComp !== 0)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// if there was a < or >, and nothing in the dom, then must be false
|
|
||||||
// UNLESS it was limited by another range in the other direction.
|
|
||||||
// Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0
|
|
||||||
if (gt && hasDomLT && !lt && gtltComp !== 0)
|
|
||||||
return false
|
|
||||||
|
|
||||||
if (lt && hasDomGT && !gt && gtltComp !== 0)
|
|
||||||
return false
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// >=1.2.3 is lower than >1.2.3
|
|
||||||
const higherGT = (a, b, options) => {
|
|
||||||
if (!a)
|
|
||||||
return b
|
|
||||||
const comp = compare(a.semver, b.semver, options)
|
|
||||||
return comp > 0 ? a
|
|
||||||
: comp < 0 ? b
|
|
||||||
: b.operator === '>' && a.operator === '>=' ? b
|
|
||||||
: a
|
|
||||||
}
|
|
||||||
|
|
||||||
// <=1.2.3 is higher than <1.2.3
|
|
||||||
const lowerLT = (a, b, options) => {
|
|
||||||
if (!a)
|
|
||||||
return b
|
|
||||||
const comp = compare(a.semver, b.semver, options)
|
|
||||||
return comp < 0 ? a
|
|
||||||
: comp > 0 ? b
|
|
||||||
: b.operator === '<' && a.operator === '<=' ? b
|
|
||||||
: a
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = subset
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 2706:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const Range = __webpack_require__(9828)
|
|
||||||
|
|
||||||
// Mostly just for testing and legacy API reasons
|
|
||||||
const toComparators = (range, options) =>
|
|
||||||
new Range(range, options).set
|
|
||||||
.map(comp => comp.map(c => c.value).join(' ').trim().split(' '))
|
|
||||||
|
|
||||||
module.exports = toComparators
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 2098:
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
const Range = __webpack_require__(9828)
|
|
||||||
const validRange = (range, options) => {
|
|
||||||
try {
|
|
||||||
// Return '*' instead of '' so that truthiness works.
|
|
||||||
// This will throw if it's invalid anyway
|
|
||||||
return new Range(range, options).range || '*'
|
|
||||||
} catch (er) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
module.exports = validRange
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ 6375:
|
/***/ 6375:
|
||||||
|
|||||||
@@ -26,8 +26,7 @@
|
|||||||
"@actions/core": "^1.2.6",
|
"@actions/core": "^1.2.6",
|
||||||
"@actions/github": "^4.0.0",
|
"@actions/github": "^4.0.0",
|
||||||
"handlebars": "^4.7.6",
|
"handlebars": "^4.7.6",
|
||||||
"moment": "^2.29.1",
|
"moment": "^2.29.1"
|
||||||
"semver": "^7.3.2"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^26.0.0",
|
"@types/jest": "^26.0.0",
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ export interface Inputs {
|
|||||||
tagSha: boolean;
|
tagSha: boolean;
|
||||||
tagEdge: boolean;
|
tagEdge: boolean;
|
||||||
tagEdgeBranch: string;
|
tagEdgeBranch: string;
|
||||||
tagCoerceTag: string;
|
tagMatch: string;
|
||||||
tagLatestMatch: string;
|
tagMatchLatest: boolean;
|
||||||
tagSchedule: string;
|
tagSchedule: string;
|
||||||
sepTags: string;
|
sepTags: string;
|
||||||
sepLabels: string;
|
sepLabels: string;
|
||||||
@@ -19,8 +19,8 @@ export function getInputs(): Inputs {
|
|||||||
tagSha: /true/i.test(core.getInput('tag-sha') || 'false'),
|
tagSha: /true/i.test(core.getInput('tag-sha') || 'false'),
|
||||||
tagEdge: /true/i.test(core.getInput('tag-edge') || 'false'),
|
tagEdge: /true/i.test(core.getInput('tag-edge') || 'false'),
|
||||||
tagEdgeBranch: core.getInput('tag-edge-branch'),
|
tagEdgeBranch: core.getInput('tag-edge-branch'),
|
||||||
tagCoerceTag: core.getInput('tag-coerce-tag'),
|
tagMatch: core.getInput('tag-match'),
|
||||||
tagLatestMatch: core.getInput('tag-latest-match'),
|
tagMatchLatest: /true/i.test(core.getInput('tag-match-latest') || 'true'),
|
||||||
tagSchedule: core.getInput('tag-schedule') || 'nightly',
|
tagSchedule: core.getInput('tag-schedule') || 'nightly',
|
||||||
sepTags: core.getInput('sep-tags') || `\n`,
|
sepTags: core.getInput('sep-tags') || `\n`,
|
||||||
sepLabels: core.getInput('sep-labels') || `\n`,
|
sepLabels: core.getInput('sep-labels') || `\n`,
|
||||||
|
|||||||
29
src/meta.ts
29
src/meta.ts
@@ -1,6 +1,5 @@
|
|||||||
import * as handlebars from 'handlebars';
|
import * as handlebars from 'handlebars';
|
||||||
import * as moment from 'moment';
|
import * as moment from 'moment';
|
||||||
import * as semver from 'semver';
|
|
||||||
import {Inputs} from './context';
|
import {Inputs} from './context';
|
||||||
import {Context} from '@actions/github/lib/context';
|
import {Context} from '@actions/github/lib/context';
|
||||||
import {ReposGetResponseData} from '@octokit/types';
|
import {ReposGetResponseData} from '@octokit/types';
|
||||||
@@ -40,24 +39,13 @@ export class Meta {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else if (/^refs\/tags\//.test(this.context.ref)) {
|
} else if (/^refs\/tags\//.test(this.context.ref)) {
|
||||||
const tag = this.context.ref.replace(/^refs\/tags\//g, '').replace(/\//g, '-');
|
version.version = this.context.ref.replace(/^refs\/tags\//g, '').replace(/\//g, '-');
|
||||||
const sver = semver.clean(tag);
|
if (this.inputs.tagMatch) {
|
||||||
if (this.inputs.tagCoerceTag) {
|
const tagMatch = version.version.match(this.inputs.tagMatch);
|
||||||
const coerce = semver.coerce(tag);
|
if (tagMatch) {
|
||||||
if (coerce) {
|
version.version = tagMatch[0];
|
||||||
version.version = handlebars.compile(this.inputs.tagCoerceTag)(coerce);
|
version.latest = this.inputs.tagMatchLatest;
|
||||||
version.latest = true;
|
|
||||||
} else if (sver) {
|
|
||||||
version.version = sver;
|
|
||||||
version.latest = true;
|
|
||||||
} else {
|
|
||||||
version.version = tag;
|
|
||||||
}
|
}
|
||||||
} else if (sver) {
|
|
||||||
version.version = sver;
|
|
||||||
version.latest = true;
|
|
||||||
} else {
|
|
||||||
version.version = tag;
|
|
||||||
}
|
}
|
||||||
} else if (/^refs\/heads\//.test(this.context.ref)) {
|
} else if (/^refs\/heads\//.test(this.context.ref)) {
|
||||||
version.version = this.context.ref.replace(/^refs\/heads\//g, '').replace(/\//g, '-');
|
version.version = this.context.ref.replace(/^refs\/heads\//g, '').replace(/\//g, '-');
|
||||||
@@ -68,11 +56,6 @@ export class Meta {
|
|||||||
version.version = `pr-${this.context.ref.replace(/^refs\/pull\//g, '').replace(/\/merge$/g, '')}`;
|
version.version = `pr-${this.context.ref.replace(/^refs\/pull\//g, '').replace(/\/merge$/g, '')}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.inputs.tagLatestMatch) {
|
|
||||||
const match = version.version?.match(new RegExp(this.inputs.tagLatestMatch));
|
|
||||||
version.latest = match !== null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user