mirror of
https://github.com/renovatebot/renovate.git
synced 2025-01-10 14:06:30 +00:00
Compare commits
20 commits
fe3c8bbe0d
...
d10b36ce92
Author | SHA1 | Date | |
---|---|---|---|
|
d10b36ce92 | ||
|
0152d27a3d | ||
|
d558c9e811 | ||
|
a0b259b570 | ||
|
ab038de915 | ||
|
5dacd6243c | ||
|
5aa17e69ca | ||
|
a8608c492b | ||
|
9b6c4f8886 | ||
|
415f5cbb31 | ||
|
ab1ed9c421 | ||
|
a42069da44 | ||
|
a4042bb863 | ||
|
f26181d3ba | ||
|
e348689be6 | ||
|
797e73e496 | ||
|
d267a98904 | ||
|
86b389eb37 | ||
|
8a24372a66 | ||
|
7e46916b01 |
23 changed files with 650 additions and 230 deletions
|
@ -1 +1 @@
|
||||||
FROM ghcr.io/containerbase/devcontainer:13.5.5
|
FROM ghcr.io/containerbase/devcontainer:13.5.6
|
||||||
|
|
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
|
@ -684,7 +684,7 @@ jobs:
|
||||||
show-progress: false
|
show-progress: false
|
||||||
|
|
||||||
- name: docker-config
|
- name: docker-config
|
||||||
uses: containerbase/internal-tools@c440de95307545d23ff0e0b57018147e02ae217f # v3.5.15
|
uses: containerbase/internal-tools@c8f78cbc830d1883e695d06e3028136656e70f5b # v3.5.17
|
||||||
with:
|
with:
|
||||||
command: docker-config
|
command: docker-config
|
||||||
|
|
||||||
|
|
56
data/lambda-node-js-schedule.json
Normal file
56
data/lambda-node-js-schedule.json
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
{
|
||||||
|
"10": {
|
||||||
|
"cycle": "nodejs10.x",
|
||||||
|
"releaseLabel": "Node.js 10",
|
||||||
|
"releaseDate": "2019-05-15",
|
||||||
|
"eol": "2022-02-14",
|
||||||
|
"link": "https://aws.amazon.com/about-aws/whats-new/2019/05/aws_lambda_adds_support_for_node_js_v10/",
|
||||||
|
"lts": false,
|
||||||
|
"support": "2021-07-30"
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"cycle": "nodejs12.x",
|
||||||
|
"releaseLabel": "Node.js 12",
|
||||||
|
"releaseDate": "2019-11-18",
|
||||||
|
"eol": "2023-04-30",
|
||||||
|
"link": "https://aws.amazon.com/blogs/compute/node-js-12-x-runtime-now-available-in-aws-lambda/",
|
||||||
|
"lts": false,
|
||||||
|
"support": "2023-03-31"
|
||||||
|
},
|
||||||
|
"14": {
|
||||||
|
"cycle": "nodejs14.x",
|
||||||
|
"releaseLabel": "Node.js 14",
|
||||||
|
"releaseDate": "2021-02-03",
|
||||||
|
"eol": "2025-02-28",
|
||||||
|
"link": "https://aws.amazon.com/blogs/compute/node-js-14-x-runtime-now-available-in-aws-lambda/",
|
||||||
|
"lts": false,
|
||||||
|
"support": "2023-12-04"
|
||||||
|
},
|
||||||
|
"16": {
|
||||||
|
"cycle": "nodejs16.x",
|
||||||
|
"releaseLabel": "Node.js 16",
|
||||||
|
"releaseDate": "2022-05-12",
|
||||||
|
"eol": "2025-03-31",
|
||||||
|
"link": "https://aws.amazon.com/blogs/compute/node-js-16-x-runtime-now-available-in-aws-lambda/",
|
||||||
|
"lts": false,
|
||||||
|
"support": "2024-06-12"
|
||||||
|
},
|
||||||
|
"18": {
|
||||||
|
"cycle": "nodejs18.x",
|
||||||
|
"releaseLabel": "Node.js 18",
|
||||||
|
"releaseDate": "2022-11-18",
|
||||||
|
"eol": "2025-10-01",
|
||||||
|
"link": "https://aws.amazon.com/blogs/compute/node-js-18-x-runtime-now-available-in-aws-lambda/",
|
||||||
|
"lts": false,
|
||||||
|
"support": "2025-07-31"
|
||||||
|
},
|
||||||
|
"20": {
|
||||||
|
"cycle": "nodejs20.x",
|
||||||
|
"releaseLabel": "Node.js 20",
|
||||||
|
"releaseDate": "2023-11-15",
|
||||||
|
"eol": false,
|
||||||
|
"link": "https://aws.amazon.com/blogs/compute/node-js-20-x-runtime-now-available-in-aws-lambda/",
|
||||||
|
"lts": false,
|
||||||
|
"support": true
|
||||||
|
}
|
||||||
|
}
|
|
@ -478,7 +478,7 @@ Make sure to install the Google Cloud SDK into the custom image, as you need the
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
```Dockerfile
|
```Dockerfile
|
||||||
FROM renovate/renovate:39.82.1
|
FROM renovate/renovate:39.86.0
|
||||||
# Include the "Docker tip" which you can find here https://cloud.google.com/sdk/docs/install
|
# Include the "Docker tip" which you can find here https://cloud.google.com/sdk/docs/install
|
||||||
# under "Installation" for "Debian/Ubuntu"
|
# under "Installation" for "Debian/Ubuntu"
|
||||||
RUN ...
|
RUN ...
|
||||||
|
|
|
@ -25,8 +25,8 @@ It builds `latest` based on the `main` branch and all SemVer tags are published
|
||||||
```sh title="Example of valid tags"
|
```sh title="Example of valid tags"
|
||||||
docker run --rm renovate/renovate
|
docker run --rm renovate/renovate
|
||||||
docker run --rm renovate/renovate:39
|
docker run --rm renovate/renovate:39
|
||||||
docker run --rm renovate/renovate:39.82
|
docker run --rm renovate/renovate:39.86
|
||||||
docker run --rm renovate/renovate:39.82.1
|
docker run --rm renovate/renovate:39.86.0
|
||||||
```
|
```
|
||||||
|
|
||||||
<!-- prettier-ignore -->
|
<!-- prettier-ignore -->
|
||||||
|
@ -62,7 +62,7 @@ spec:
|
||||||
- name: renovate
|
- name: renovate
|
||||||
# Update this to the latest available and then enable Renovate on
|
# Update this to the latest available and then enable Renovate on
|
||||||
# the manifest
|
# the manifest
|
||||||
image: renovate/renovate:39.82.1
|
image: renovate/renovate:39.86.0
|
||||||
args:
|
args:
|
||||||
- user/repo
|
- user/repo
|
||||||
# Environment Variables
|
# Environment Variables
|
||||||
|
@ -121,7 +121,7 @@ spec:
|
||||||
template:
|
template:
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- image: renovate/renovate:39.82.1
|
- image: renovate/renovate:39.86.0
|
||||||
name: renovate-bot
|
name: renovate-bot
|
||||||
env: # For illustration purposes, please use secrets.
|
env: # For illustration purposes, please use secrets.
|
||||||
- name: RENOVATE_PLATFORM
|
- name: RENOVATE_PLATFORM
|
||||||
|
@ -367,7 +367,7 @@ spec:
|
||||||
containers:
|
containers:
|
||||||
- name: renovate
|
- name: renovate
|
||||||
# Update this to the latest available and then enable Renovate on the manifest
|
# Update this to the latest available and then enable Renovate on the manifest
|
||||||
image: renovate/renovate:39.82.1
|
image: renovate/renovate:39.86.0
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: ssh-key-volume
|
- name: ssh-key-volume
|
||||||
readOnly: true
|
readOnly: true
|
||||||
|
|
|
@ -516,7 +516,7 @@ const options: RenovateOptions[] = [
|
||||||
description:
|
description:
|
||||||
'Change this value to override the default Renovate sidecar image.',
|
'Change this value to override the default Renovate sidecar image.',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
default: 'ghcr.io/containerbase/sidecar:13.5.5',
|
default: 'ghcr.io/containerbase/sidecar:13.5.6',
|
||||||
globalOnly: true,
|
globalOnly: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -74,6 +74,7 @@ const renamedMonorepos: Record<string, string> = {
|
||||||
Steeltoe: 'steeltoe',
|
Steeltoe: 'steeltoe',
|
||||||
stryker: 'stryker-js',
|
stryker: 'stryker-js',
|
||||||
Swashbuckle: 'swashbuckle-aspnetcore',
|
Swashbuckle: 'swashbuckle-aspnetcore',
|
||||||
|
nrwl: 'nx',
|
||||||
};
|
};
|
||||||
|
|
||||||
for (const [from, to] of Object.entries(renamedMonorepos)) {
|
for (const [from, to] of Object.entries(renamedMonorepos)) {
|
||||||
|
|
|
@ -55,10 +55,6 @@
|
||||||
"https://github.com/awslabs/aws-sdk-rust"
|
"https://github.com/awslabs/aws-sdk-rust"
|
||||||
],
|
],
|
||||||
"awsappsync": "https://github.com/awslabs/aws-mobile-appsync-sdk-js",
|
"awsappsync": "https://github.com/awslabs/aws-mobile-appsync-sdk-js",
|
||||||
"axis2": [
|
|
||||||
"https://gitbox.apache.org/repos/asf?p=axis-axis2-java-core.git;a=summary",
|
|
||||||
"https://github.com/apache/axis-axis2-java-core"
|
|
||||||
],
|
|
||||||
"azure-functions-dotnet-worker": "https://github.com/Azure/azure-functions-dotnet-worker",
|
"azure-functions-dotnet-worker": "https://github.com/Azure/azure-functions-dotnet-worker",
|
||||||
"azure azure-libraries-for-net": "https://github.com/Azure/azure-libraries-for-net",
|
"azure azure-libraries-for-net": "https://github.com/Azure/azure-libraries-for-net",
|
||||||
"azure azure-sdk-for-net": "https://github.com/Azure/azure-sdk-for-net",
|
"azure azure-sdk-for-net": "https://github.com/Azure/azure-sdk-for-net",
|
||||||
|
@ -439,6 +435,8 @@
|
||||||
"opentelemetry-java-contrib": "https://github.com/open-telemetry/opentelemetry-java-contrib",
|
"opentelemetry-java-contrib": "https://github.com/open-telemetry/opentelemetry-java-contrib",
|
||||||
"opentelemetry-js": "https://github.com/open-telemetry/opentelemetry-js",
|
"opentelemetry-js": "https://github.com/open-telemetry/opentelemetry-js",
|
||||||
"opentelemetry-js-contrib": "https://github.com/open-telemetry/opentelemetry-js-contrib",
|
"opentelemetry-js-contrib": "https://github.com/open-telemetry/opentelemetry-js-contrib",
|
||||||
|
"opentelemetry-python": "https://github.com/open-telemetry/opentelemetry-python",
|
||||||
|
"opentelemetry-python-contrib": "https://github.com/open-telemetry/opentelemetry-python-contrib",
|
||||||
"opentelemetry-rust": "https://github.com/open-telemetry/opentelemetry-rust",
|
"opentelemetry-rust": "https://github.com/open-telemetry/opentelemetry-rust",
|
||||||
"opentelemetry-rust-contrib": "https://github.com/open-telemetry/opentelemetry-rust-contrib",
|
"opentelemetry-rust-contrib": "https://github.com/open-telemetry/opentelemetry-rust-contrib",
|
||||||
"orleans": "https://github.com/dotnet/orleans",
|
"orleans": "https://github.com/dotnet/orleans",
|
||||||
|
@ -509,6 +507,7 @@
|
||||||
"skiasharp": "https://github.com/mono/SkiaSharp",
|
"skiasharp": "https://github.com/mono/SkiaSharp",
|
||||||
"slack-net": "https://github.com/soxtoby/SlackNet",
|
"slack-net": "https://github.com/soxtoby/SlackNet",
|
||||||
"slf4j": "https://github.com/qos-ch/slf4j",
|
"slf4j": "https://github.com/qos-ch/slf4j",
|
||||||
|
"slim-message-bus": "https://github.com/zarusz/SlimMessageBus",
|
||||||
"spectre-console": "https://github.com/spectreconsole/spectre.console",
|
"spectre-console": "https://github.com/spectreconsole/spectre.console",
|
||||||
"springfox": "https://github.com/springfox/springfox",
|
"springfox": "https://github.com/springfox/springfox",
|
||||||
"steeltoe": "https://github.com/SteeltoeOSS/steeltoe",
|
"steeltoe": "https://github.com/SteeltoeOSS/steeltoe",
|
||||||
|
@ -587,7 +586,7 @@
|
||||||
"hapijs": "https://github.com/hapijs/",
|
"hapijs": "https://github.com/hapijs/",
|
||||||
"lodash": "https://github.com/lodash/",
|
"lodash": "https://github.com/lodash/",
|
||||||
"ngrx": "https://github.com/ngrx/",
|
"ngrx": "https://github.com/ngrx/",
|
||||||
"nrwl": "https://github.com/nrwl/",
|
"nx": "https://github.com/nrwl/nx",
|
||||||
"octokit": "https://github.com/octokit/",
|
"octokit": "https://github.com/octokit/",
|
||||||
"semantic-release": "https://github.com/semantic-release/",
|
"semantic-release": "https://github.com/semantic-release/",
|
||||||
"swc": "https://github.com/swc-project/"
|
"swc": "https://github.com/swc-project/"
|
||||||
|
@ -598,6 +597,7 @@
|
||||||
"apache-poi": "/^org.apache.poi:/",
|
"apache-poi": "/^org.apache.poi:/",
|
||||||
"aws-java-sdk": "/^com.amazonaws:aws-java-sdk-/",
|
"aws-java-sdk": "/^com.amazonaws:aws-java-sdk-/",
|
||||||
"aws-java-sdk-v2": "/^software.amazon.awssdk:/",
|
"aws-java-sdk-v2": "/^software.amazon.awssdk:/",
|
||||||
|
"axis2": "/^org.apache.axis2:/",
|
||||||
"babel6": "/^babel6$/",
|
"babel6": "/^babel6$/",
|
||||||
"clarity": ["/^@cds//", "/^@clr//"],
|
"clarity": ["/^@cds//", "/^@clr//"],
|
||||||
"embroider": "/^@embroider//",
|
"embroider": "/^@embroider//",
|
||||||
|
|
|
@ -2568,7 +2568,7 @@ describe('modules/platform/github/index', () => {
|
||||||
const scope = httpMock.scope(githubApiHost);
|
const scope = httpMock.scope(githubApiHost);
|
||||||
initRepoMock(scope, 'some/repo');
|
initRepoMock(scope, 'some/repo');
|
||||||
scope
|
scope
|
||||||
.get('/repos/some/repo/pulls?head=some/repo:branch&state=open')
|
.get('/repos/some/repo/pulls?head=some:branch&state=open')
|
||||||
.reply(200, [
|
.reply(200, [
|
||||||
{
|
{
|
||||||
number: 1,
|
number: 1,
|
||||||
|
@ -2598,7 +2598,7 @@ describe('modules/platform/github/index', () => {
|
||||||
const scope = httpMock.scope(githubApiHost);
|
const scope = httpMock.scope(githubApiHost);
|
||||||
initRepoMock(scope, 'some/repo');
|
initRepoMock(scope, 'some/repo');
|
||||||
scope
|
scope
|
||||||
.get('/repos/some/repo/pulls?head=some/repo:branch&state=open')
|
.get('/repos/some/repo/pulls?head=some:branch&state=open')
|
||||||
.reply(200, []);
|
.reply(200, []);
|
||||||
await github.initRepo({ repository: 'some/repo' });
|
await github.initRepo({ repository: 'some/repo' });
|
||||||
const pr = await github.findPr({
|
const pr = await github.findPr({
|
||||||
|
|
|
@ -855,9 +855,10 @@ export async function findPr({
|
||||||
|
|
||||||
if (includeOtherAuthors) {
|
if (includeOtherAuthors) {
|
||||||
const repo = config.parentRepo ?? config.repository;
|
const repo = config.parentRepo ?? config.repository;
|
||||||
|
const org = repo?.split('/')[0];
|
||||||
// PR might have been created by anyone, so don't use the cached Renovate PR list
|
// PR might have been created by anyone, so don't use the cached Renovate PR list
|
||||||
const { body: prList } = await githubApi.getJson<GhRestPr[]>(
|
const { body: prList } = await githubApi.getJson<GhRestPr[]>(
|
||||||
`repos/${repo}/pulls?head=${repo}:${branchName}&state=open`,
|
`repos/${repo}/pulls?head=${org}:${branchName}&state=open`,
|
||||||
{ cacheProvider: repoCacheProvider },
|
{ cacheProvider: repoCacheProvider },
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@ import * as hermit from './hermit';
|
||||||
import * as hex from './hex';
|
import * as hex from './hex';
|
||||||
import * as ivy from './ivy';
|
import * as ivy from './ivy';
|
||||||
import * as kubernetesApi from './kubernetes-api';
|
import * as kubernetesApi from './kubernetes-api';
|
||||||
|
import * as lambdaNode from './lambda-node';
|
||||||
import * as loose from './loose';
|
import * as loose from './loose';
|
||||||
import * as maven from './maven';
|
import * as maven from './maven';
|
||||||
import * as nixpkgs from './nixpkgs';
|
import * as nixpkgs from './nixpkgs';
|
||||||
|
@ -65,6 +66,7 @@ api.set(hermit.id, hermit.api);
|
||||||
api.set(hex.id, hex.api);
|
api.set(hex.id, hex.api);
|
||||||
api.set(ivy.id, ivy.api);
|
api.set(ivy.id, ivy.api);
|
||||||
api.set(kubernetesApi.id, kubernetesApi.api);
|
api.set(kubernetesApi.id, kubernetesApi.api);
|
||||||
|
api.set(lambdaNode.id, lambdaNode.api);
|
||||||
api.set(loose.id, loose.api);
|
api.set(loose.id, loose.api);
|
||||||
api.set(maven.id, maven.api);
|
api.set(maven.id, maven.api);
|
||||||
api.set(nixpkgs.id, nixpkgs.api);
|
api.set(nixpkgs.id, nixpkgs.api);
|
||||||
|
|
|
@ -76,6 +76,7 @@ describe('modules/versioning/hex/index', () => {
|
||||||
${'~> 1.2.0'} | ${'replace'} | ${'1.2.3'} | ${'2.0.7'} | ${'~> 2.0.0'}
|
${'~> 1.2.0'} | ${'replace'} | ${'1.2.3'} | ${'2.0.7'} | ${'~> 2.0.0'}
|
||||||
${'~> 1.2.0'} | ${'pin'} | ${'1.2.3'} | ${'2.0.7'} | ${'== 2.0.7'}
|
${'~> 1.2.0'} | ${'pin'} | ${'1.2.3'} | ${'2.0.7'} | ${'== 2.0.7'}
|
||||||
${'~> 1.2.0'} | ${'bump'} | ${'1.2.3'} | ${'2.0.7'} | ${'~> 2.0.7'}
|
${'~> 1.2.0'} | ${'bump'} | ${'1.2.3'} | ${'2.0.7'} | ${'~> 2.0.7'}
|
||||||
|
${'~> 0.2 and <= 0.2.6'} | ${'widen'} | ${'0.2.6'} | ${'0.2.8'} | ${'~> 0.2 and <= 0.2.8'}
|
||||||
${'>= 1.0.0 and <= 2.0.0'} | ${'widen'} | ${'1.2.3'} | ${'2.0.7'} | ${'>= 1.0.0 and <= 2.0.7'}
|
${'>= 1.0.0 and <= 2.0.0'} | ${'widen'} | ${'1.2.3'} | ${'2.0.7'} | ${'>= 1.0.0 and <= 2.0.7'}
|
||||||
${'>= 1.0.0 and <= 2.0.0'} | ${'replace'} | ${'1.2.3'} | ${'2.0.7'} | ${'<= 2.0.7'}
|
${'>= 1.0.0 and <= 2.0.0'} | ${'replace'} | ${'1.2.3'} | ${'2.0.7'} | ${'<= 2.0.7'}
|
||||||
${'>= 1.0.0 and <= 2.0.0'} | ${'pin'} | ${'1.2.3'} | ${'2.0.7'} | ${'== 2.0.7'}
|
${'>= 1.0.0 and <= 2.0.0'} | ${'pin'} | ${'1.2.3'} | ${'2.0.7'} | ${'== 2.0.7'}
|
||||||
|
|
|
@ -31,7 +31,7 @@ function npm2hex(input: string): string {
|
||||||
.map((str) => str.trim())
|
.map((str) => str.trim())
|
||||||
.filter((str) => str !== '');
|
.filter((str) => str !== '');
|
||||||
let output = '';
|
let output = '';
|
||||||
const operators = ['^', '=', '>', '<', '<=', '>=', '~'];
|
const operators = ['^', '=', '>', '<', '<=', '>=', '~>'];
|
||||||
for (let i = 0; i < res.length; i += 1) {
|
for (let i = 0; i < res.length; i += 1) {
|
||||||
if (i === res.length - 1) {
|
if (i === res.length - 1) {
|
||||||
output += res[i];
|
output += res[i];
|
||||||
|
|
118
lib/modules/versioning/lambda-node/index.spec.ts
Normal file
118
lib/modules/versioning/lambda-node/index.spec.ts
Normal file
|
@ -0,0 +1,118 @@
|
||||||
|
import { DateTime } from 'luxon';
|
||||||
|
import { api as lambdaVer } from '.';
|
||||||
|
|
||||||
|
describe('modules/versioning/lambda-node/index', () => {
|
||||||
|
let dtLocal: any;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
dtLocal = DateTime.local;
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
DateTime.local = dtLocal;
|
||||||
|
});
|
||||||
|
|
||||||
|
it.each`
|
||||||
|
currentValue | rangeStrategy | currentVersion | newVersion | expected
|
||||||
|
${'1.0.0'} | ${'replace'} | ${'1.0.0'} | ${'v1.1.0'} | ${'1.1.0'}
|
||||||
|
${'~8.0.0'} | ${'replace'} | ${'8.0.2'} | ${'v8.2.0'} | ${'~8.2.0'}
|
||||||
|
${'erbium'} | ${'replace'} | ${'12.0.0'} | ${'v14.1.4'} | ${'fermium'}
|
||||||
|
${'Fermium'} | ${'replace'} | ${'14.0.0'} | ${'v16.1.6'} | ${'gallium'}
|
||||||
|
${'gallium'} | ${'pin'} | ${'16.1.6'} | ${'v16.1.6'} | ${'16.1.6'}
|
||||||
|
${'gallium'} | ${'bump'} | ${'16.0.0'} | ${'v16.1.6'} | ${'gallium'}
|
||||||
|
${'gallium'} | ${'auto'} | ${'16.1.6'} | ${'v16.1.6'} | ${'gallium'}
|
||||||
|
`(
|
||||||
|
'getNewValue($currentValue, $rangeStrategy, $currentVersion, $newVersion, $expected) === $expected',
|
||||||
|
({ currentValue, rangeStrategy, currentVersion, newVersion, expected }) => {
|
||||||
|
const res = lambdaVer.getNewValue({
|
||||||
|
currentValue,
|
||||||
|
rangeStrategy,
|
||||||
|
currentVersion,
|
||||||
|
newVersion,
|
||||||
|
});
|
||||||
|
expect(res).toBe(expected);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
const t1 = DateTime.fromISO('2024-09-01');
|
||||||
|
const t2 = DateTime.fromISO('2024-03-01');
|
||||||
|
|
||||||
|
it.each`
|
||||||
|
version | time | expected
|
||||||
|
${'v18.0.3'} | ${t1} | ${true}
|
||||||
|
${'v18.0.0'} | ${t1} | ${true}
|
||||||
|
${'18.0.0'} | ${t1} | ${true}
|
||||||
|
${'18.0.0a'} | ${t1} | ${false}
|
||||||
|
${'16.0.0'} | ${t2} | ${true}
|
||||||
|
${'16.0.0'} | ${t1} | ${false}
|
||||||
|
${'15.0.0'} | ${t1} | ${false}
|
||||||
|
${'14.9.0'} | ${t1} | ${false}
|
||||||
|
${'14.0.0'} | ${t1} | ${false}
|
||||||
|
${'12.0.3'} | ${t1} | ${false}
|
||||||
|
${'v12.0.3'} | ${t1} | ${false}
|
||||||
|
${'12.0.3a'} | ${t1} | ${false}
|
||||||
|
${'11.0.0'} | ${t1} | ${false}
|
||||||
|
${'10.0.0'} | ${t1} | ${false}
|
||||||
|
${'10.0.999'} | ${t1} | ${false}
|
||||||
|
${'10.1.0'} | ${t1} | ${false}
|
||||||
|
${'10.0.0a'} | ${t1} | ${false}
|
||||||
|
${'9.0.0'} | ${t1} | ${false}
|
||||||
|
`('isStable("$version") === $expected', ({ version, time, expected }) => {
|
||||||
|
DateTime.local = (...args: any[]) =>
|
||||||
|
args.length ? dtLocal.apply(DateTime, args) : time;
|
||||||
|
expect(lambdaVer.isStable(version as string)).toBe(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it.each`
|
||||||
|
version | expected
|
||||||
|
${'16.0.0'} | ${true}
|
||||||
|
${'erbium'} | ${true}
|
||||||
|
${'bogus'} | ${false}
|
||||||
|
${'^10.0.0'} | ${true}
|
||||||
|
${'10.x'} | ${true}
|
||||||
|
${'10.9.8.7'} | ${false}
|
||||||
|
`('isValid("$version") === $expected', ({ version, expected }) => {
|
||||||
|
expect(lambdaVer.isValid(version as string)).toBe(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it.each`
|
||||||
|
version | range | expected
|
||||||
|
${'16.0.0'} | ${'gallium'} | ${true}
|
||||||
|
${'16.0.0'} | ${'fermium'} | ${false}
|
||||||
|
`(
|
||||||
|
'matches("$version", "$range") === $expected',
|
||||||
|
({ version, range, expected }) => {
|
||||||
|
expect(lambdaVer.matches(version as string, range as string)).toBe(
|
||||||
|
expected,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
it.each`
|
||||||
|
versions | range | expected
|
||||||
|
${['16.0.0']} | ${'gallium'} | ${'16.0.0'}
|
||||||
|
${['16.0.0', '14.0.0', '16.9.9']} | ${'gallium'} | ${'16.9.9'}
|
||||||
|
${['15.0.0', '14.0.0']} | ${'gallium'} | ${null}
|
||||||
|
`(
|
||||||
|
'getSatisfyingVersion("$versions", "$range") === $expected',
|
||||||
|
({ versions, range, expected }) => {
|
||||||
|
expect(
|
||||||
|
lambdaVer.getSatisfyingVersion(versions as string[], range as string),
|
||||||
|
).toBe(expected);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
it.each`
|
||||||
|
versions | range | expected
|
||||||
|
${['16.0.0']} | ${'gallium'} | ${'16.0.0'}
|
||||||
|
${['16.0.0', '14.0.0', '16.9.9']} | ${'gallium'} | ${'16.0.0'}
|
||||||
|
${['15.0.0', '14.0.0']} | ${'gallium'} | ${null}
|
||||||
|
`(
|
||||||
|
'minSatisfyingVersion("$versions", "$range") === $expected',
|
||||||
|
({ versions, range, expected }) => {
|
||||||
|
expect(
|
||||||
|
lambdaVer.minSatisfyingVersion(versions as string[], range as string),
|
||||||
|
).toBe(expected);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
});
|
58
lib/modules/versioning/lambda-node/index.ts
Normal file
58
lib/modules/versioning/lambda-node/index.ts
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
import { DateTime } from 'luxon';
|
||||||
|
import {
|
||||||
|
getNewValue,
|
||||||
|
getSatisfyingVersion,
|
||||||
|
isStable as isNodeStable,
|
||||||
|
isValid,
|
||||||
|
matches,
|
||||||
|
minSatisfyingVersion,
|
||||||
|
} from '../node';
|
||||||
|
import { findScheduleForCodename } from '../node/schedule';
|
||||||
|
import npm from '../npm';
|
||||||
|
import type { VersioningApi } from '../types';
|
||||||
|
import { findLambdaScheduleForVersion } from './schedule';
|
||||||
|
|
||||||
|
export const id = 'lambda-node';
|
||||||
|
export const displayName = 'Lambda Node.js Runtime';
|
||||||
|
export const urls = [];
|
||||||
|
export const supportsRanges = false;
|
||||||
|
|
||||||
|
function normalizeValue(value: string): string {
|
||||||
|
const schedule = findScheduleForCodename(value);
|
||||||
|
if (schedule) {
|
||||||
|
const major = schedule.version.replace('v', '');
|
||||||
|
return `^${major}`;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function isStable(version: string): boolean {
|
||||||
|
if (!isNodeStable(version)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const schedule = findLambdaScheduleForVersion(normalizeValue(version));
|
||||||
|
|
||||||
|
if (!schedule) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof schedule.support === 'string') {
|
||||||
|
return DateTime.local() < DateTime.fromISO(schedule.support);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const api: VersioningApi = {
|
||||||
|
...npm,
|
||||||
|
isStable,
|
||||||
|
getNewValue,
|
||||||
|
isValid,
|
||||||
|
matches,
|
||||||
|
getSatisfyingVersion,
|
||||||
|
minSatisfyingVersion,
|
||||||
|
allowUnstableMajorUpgrades: false,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default api;
|
12
lib/modules/versioning/lambda-node/readme.md
Normal file
12
lib/modules/versioning/lambda-node/readme.md
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
Renovate's Lambda Node.js versioning is a wrapper around the existing Node.js Versioning module with the only difference being
|
||||||
|
that it lists versions not currently supported by AWS as being unstable. This is intended to be a drop-in replacement
|
||||||
|
for dependencies that follow the `node` versioning schedule if you need to keep them in line with Lambda Runtime
|
||||||
|
releases.
|
||||||
|
|
||||||
|
Its primary purpose is to add Node Runtime support awareness, e.g.:
|
||||||
|
|
||||||
|
- Old Runtimes that cannot be updated will be marked as unstable
|
||||||
|
- Node.js LTS releases that do not have Runtimes released for them will be marked as unstable
|
||||||
|
|
||||||
|
You can _not_ use `lambda-node` versioning to replace `docker` versioning if you are using node tags with suffixes like
|
||||||
|
`-alpine`. This is because npm versioning treats these suffixes as implying pre-releases/instability.
|
29
lib/modules/versioning/lambda-node/schedule.ts
Normal file
29
lib/modules/versioning/lambda-node/schedule.ts
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
import dataFiles from '../../../data-files.generated';
|
||||||
|
|
||||||
|
interface LambdaSchedule {
|
||||||
|
cycle: string;
|
||||||
|
releaseLabel: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Either `true` if currently in support or a string indicating the date at which support will end
|
||||||
|
*/
|
||||||
|
support: true | string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type LambdaData = Record<string, LambdaSchedule>;
|
||||||
|
|
||||||
|
const lambdaSchedule: LambdaData = JSON.parse(
|
||||||
|
dataFiles.get('data/lambda-node-js-schedule.json')!,
|
||||||
|
);
|
||||||
|
|
||||||
|
export function findLambdaScheduleForVersion(
|
||||||
|
version: string,
|
||||||
|
): LambdaSchedule | null {
|
||||||
|
const majorVersionMatch = version.match(/^v?([0-9]+)\./);
|
||||||
|
|
||||||
|
if (!majorVersionMatch?.[1]) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return lambdaSchedule[majorVersionMatch[1]];
|
||||||
|
}
|
|
@ -18,7 +18,7 @@ function normalizeValue(value: string): string {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getNewValue({
|
export function getNewValue({
|
||||||
currentValue,
|
currentValue,
|
||||||
rangeStrategy,
|
rangeStrategy,
|
||||||
currentVersion,
|
currentVersion,
|
||||||
|
|
|
@ -49,13 +49,27 @@ Here is another example, this time for handling Bitnami Docker images, which use
|
||||||
"packageRules": [
|
"packageRules": [
|
||||||
{
|
{
|
||||||
"matchDatasources": ["docker"],
|
"matchDatasources": ["docker"],
|
||||||
"matchPackageNamees": ["bitnami/**", "docker.io/bitnami/**"],
|
"matchPackageNames": ["bitnami/**", "docker.io/bitnami/**"],
|
||||||
"versioning": "regex:^(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)(?:-(?<compatibility>.+)(?<build>\\d+)-r(?<revision>\\d+))?$"
|
"versioning": "regex:^(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)(?:-(?<compatibility>.+)(?<build>\\d+)-r(?<revision>\\d+))?$"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Here is another example, this time for handling `ghcr.io/linuxserver/tautulli` Docker images, which use `major` and `build` indicators with string prefixes:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"packageRules": [
|
||||||
|
{
|
||||||
|
"matchDatasources": ["docker"],
|
||||||
|
"matchPackageNames": ["ghcr.io/linuxserver/tautulli"],
|
||||||
|
"versioning": "regex:^v(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)-ls(?<build>.+)$"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Here is another example, this time for handling `ghcr.io/linuxserver/openssh-server` Docker images, which use `patch`, `build` and `revision` indicators with string prefixes:
|
Here is another example, this time for handling `ghcr.io/linuxserver/openssh-server` Docker images, which use `patch`, `build` and `revision` indicators with string prefixes:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
|
@ -63,7 +77,7 @@ Here is another example, this time for handling `ghcr.io/linuxserver/openssh-ser
|
||||||
"packageRules": [
|
"packageRules": [
|
||||||
{
|
{
|
||||||
"matchDatasources": ["docker"],
|
"matchDatasources": ["docker"],
|
||||||
"matchPackageNamees": ["ghcr.io/linuxserver/openssh-server"],
|
"matchPackageNames": ["ghcr.io/linuxserver/openssh-server"],
|
||||||
"versioning": "regex:^(?<major>\\d+)\\.(?<minor>\\d+)_p(?<patch>\\d+)-r(?<build>\\d)-ls(?<revision>.+)$"
|
"versioning": "regex:^(?<major>\\d+)\\.(?<minor>\\d+)_p(?<patch>\\d+)-r(?<build>\\d)-ls(?<revision>.+)$"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -58,7 +58,8 @@
|
||||||
"type-check": "run-s 'generate:*' 'tsc --noEmit {@}' --",
|
"type-check": "run-s 'generate:*' 'tsc --noEmit {@}' --",
|
||||||
"update-static-data": "run-s 'update-static-data:*'",
|
"update-static-data": "run-s 'update-static-data:*'",
|
||||||
"update-static-data:distro-info": "node tools/static-data/generate-distro-info.mjs",
|
"update-static-data:distro-info": "node tools/static-data/generate-distro-info.mjs",
|
||||||
"update-static-data:node-schedule": "node tools/static-data/generate-node-schedule.mjs"
|
"update-static-data:node-schedule": "node tools/static-data/generate-node-schedule.mjs",
|
||||||
|
"update-static-data:lambda-node-schedule": "node tools/static-data/generate-lambda-node-schedule.mjs"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
@ -336,7 +337,7 @@
|
||||||
"jest-mock-extended": "3.0.7",
|
"jest-mock-extended": "3.0.7",
|
||||||
"jest-snapshot": "29.7.0",
|
"jest-snapshot": "29.7.0",
|
||||||
"markdownlint-cli2": "0.16.0",
|
"markdownlint-cli2": "0.16.0",
|
||||||
"memfs": "4.15.0",
|
"memfs": "4.15.1",
|
||||||
"nock": "13.5.6",
|
"nock": "13.5.6",
|
||||||
"npm-run-all2": "7.0.2",
|
"npm-run-all2": "7.0.2",
|
||||||
"nyc": "17.1.0",
|
"nyc": "17.1.0",
|
||||||
|
|
98
pdm.lock
98
pdm.lock
|
@ -48,58 +48,52 @@ files = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "charset-normalizer"
|
name = "charset-normalizer"
|
||||||
version = "3.4.0"
|
version = "3.4.1"
|
||||||
requires_python = ">=3.7.0"
|
requires_python = ">=3.7"
|
||||||
summary = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
|
summary = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
|
||||||
groups = ["default"]
|
groups = ["default"]
|
||||||
files = [
|
files = [
|
||||||
{file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"},
|
{file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"},
|
||||||
{file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"},
|
{file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"},
|
||||||
{file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"},
|
{file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"},
|
||||||
{file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"},
|
{file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"},
|
||||||
{file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"},
|
{file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"},
|
||||||
{file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"},
|
{file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"},
|
||||||
{file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"},
|
{file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"},
|
||||||
{file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"},
|
{file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"},
|
||||||
{file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"},
|
{file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"},
|
||||||
{file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"},
|
{file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"},
|
||||||
{file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"},
|
{file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"},
|
||||||
{file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"},
|
{file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"},
|
||||||
{file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"},
|
{file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"},
|
||||||
{file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"},
|
{file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"},
|
||||||
{file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"},
|
{file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"},
|
||||||
{file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"},
|
{file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"},
|
||||||
{file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"},
|
{file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"},
|
||||||
{file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"},
|
{file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"},
|
||||||
{file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"},
|
{file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"},
|
||||||
{file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"},
|
{file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"},
|
||||||
{file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"},
|
{file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"},
|
||||||
{file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"},
|
{file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"},
|
||||||
{file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"},
|
{file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"},
|
||||||
{file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"},
|
{file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"},
|
||||||
{file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"},
|
{file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"},
|
||||||
{file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"},
|
{file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"},
|
||||||
{file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"},
|
{file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"},
|
||||||
{file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"},
|
{file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"},
|
||||||
{file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"},
|
{file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"},
|
||||||
{file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"},
|
{file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"},
|
||||||
{file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"},
|
{file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"},
|
||||||
{file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"},
|
{file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"},
|
||||||
{file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"},
|
{file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"},
|
||||||
{file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"},
|
{file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"},
|
||||||
{file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"},
|
{file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"},
|
||||||
{file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"},
|
{file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"},
|
||||||
{file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"},
|
{file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"},
|
||||||
{file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"},
|
{file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"},
|
||||||
{file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"},
|
{file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"},
|
||||||
{file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"},
|
{file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"},
|
||||||
{file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"},
|
{file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"},
|
||||||
{file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"},
|
|
||||||
{file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"},
|
|
||||||
{file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"},
|
|
||||||
{file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"},
|
|
||||||
{file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"},
|
|
||||||
{file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"},
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -403,7 +397,7 @@ files = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pymdown-extensions"
|
name = "pymdown-extensions"
|
||||||
version = "10.12"
|
version = "10.13"
|
||||||
requires_python = ">=3.8"
|
requires_python = ">=3.8"
|
||||||
summary = "Extension pack for Python Markdown."
|
summary = "Extension pack for Python Markdown."
|
||||||
groups = ["default"]
|
groups = ["default"]
|
||||||
|
@ -412,8 +406,8 @@ dependencies = [
|
||||||
"pyyaml",
|
"pyyaml",
|
||||||
]
|
]
|
||||||
files = [
|
files = [
|
||||||
{file = "pymdown_extensions-10.12-py3-none-any.whl", hash = "sha256:49f81412242d3527b8b4967b990df395c89563043bc51a3d2d7d500e52123b77"},
|
{file = "pymdown_extensions-10.13-py3-none-any.whl", hash = "sha256:80bc33d715eec68e683e04298946d47d78c7739e79d808203df278ee8ef89428"},
|
||||||
{file = "pymdown_extensions-10.12.tar.gz", hash = "sha256:b0ee1e0b2bef1071a47891ab17003bfe5bf824a398e13f49f8ed653b699369a7"},
|
{file = "pymdown_extensions-10.13.tar.gz", hash = "sha256:e0b351494dc0d8d14a1f52b39b1499a00ef1566b4ba23dc74f1eba75c736f5dd"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
399
pnpm-lock.yaml
399
pnpm-lock.yaml
File diff suppressed because it is too large
Load diff
44
tools/static-data/generate-lambda-node-schedule.mjs
Normal file
44
tools/static-data/generate-lambda-node-schedule.mjs
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
import got from 'got';
|
||||||
|
import { updateJsonFile } from './utils.mjs';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef RuntimeDefinition
|
||||||
|
* @type {object}
|
||||||
|
* @property {string} cycle - The ID of the Runtime.
|
||||||
|
* @property {boolean|string} support - Either `true` if in support or a string denoting when support for this Runtime
|
||||||
|
* will end. 0.10.x is a sole exception which has `false` and will be filtered out.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const lambdaDataUrl = 'https://endoflife.date/api/aws-lambda.json';
|
||||||
|
|
||||||
|
await (async () => {
|
||||||
|
console.log('Generating node schedule');
|
||||||
|
const { body } = await got(lambdaDataUrl);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type Array<RuntimeDefinition>
|
||||||
|
*/
|
||||||
|
const lambdas = JSON.parse(body);
|
||||||
|
const nodeRuntimes = lambdas
|
||||||
|
// Filter Runtimes down to only NodeJS Runtimes
|
||||||
|
.filter((lambda) => lambda.cycle.startsWith('nodejs'))
|
||||||
|
// The only Runtime where support is not either `true` or a Date as a string is `0.10.x`, which we don't need
|
||||||
|
.filter((lambda) => lambda.support !== false)
|
||||||
|
.reduce((schedule, lambda) => {
|
||||||
|
const versionMatch = lambda.cycle.match(/^nodejs([0-9]+)\.x$/);
|
||||||
|
|
||||||
|
if (!versionMatch?.[1]) {
|
||||||
|
return schedule;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
...schedule,
|
||||||
|
[versionMatch[1]]: lambda,
|
||||||
|
};
|
||||||
|
}, {});
|
||||||
|
|
||||||
|
await updateJsonFile(
|
||||||
|
'./data/lambda-node-js-schedule.json',
|
||||||
|
JSON.stringify(nodeRuntimes, null, 2),
|
||||||
|
);
|
||||||
|
})();
|
Loading…
Reference in a new issue