diff --git a/scripts/build-r2-symlinks.mjs b/scripts/build-r2-symlinks.mjs index 780b226..acc91ae 100644 --- a/scripts/build-r2-symlinks.mjs +++ b/scripts/build-r2-symlinks.mjs @@ -1,8 +1,8 @@ #!/usr/bin/env node 'use strict'; -import { join } from 'node:path'; -import { writeFile } from 'node:fs/promises'; +import { basename, dirname, join } from 'node:path'; +import { readFile, writeFile } from 'node:fs/promises'; import { HeadObjectCommand, ListObjectsV2Command, @@ -35,6 +35,14 @@ const CACHED_DIRECTORIES_OUT = join( 'cachedDirectories.json' ); +const FILE_SYMLINKS = join( + import.meta.dirname, + '..', + 'src', + 'constants', + 'fileSymlinks.json' +); + if (!process.env.CF_ACCESS_KEY_ID) { throw new TypeError('CF_ACCESS_KEY_ID missing'); } @@ -118,6 +126,38 @@ const cachedDirectories = { }, }; +// Some older versions of Node exist in `nodejs/release/` and have folders +// with symlinks to them. For example, node-v0.1.100.tar.gz lives under +// `nodejs/release/`, but there's also `nodejs/release/v0.1.100/node-v0.1.100.tar.gz` +// which is just a symlink to it. +// Let's add these to our cached directories. +const fileSymlinks = JSON.parse(await readFile(FILE_SYMLINKS, 'utf8')); + +for (const file of Object.keys(fileSymlinks)) { + // Stat the actual file so we can get it's size, last modified + const actualFile = await headFile(client, fileSymlinks[file]); + + const directory = `${dirname(file)}/`; + + if (directory in cachedDirectories) { + // Directory was already cached, let's just append the file to the result + cachedDirectories[directory].files.push({ + ...actualFile, + name: basename(file), + }); + } else { + // List the directory that the symlink is in so we can append the symlink to + // what's actually there + const contents = await listDirectory(client, directory); + contents.files.push({ + ...actualFile, + name: basename(file), + }); + + cachedDirectories[directory] = contents; + } +} + await writeFile(CACHED_DIRECTORIES_OUT, JSON.stringify(cachedDirectories)); /** diff --git a/src/constants/README.md b/src/constants/README.md index dba9392..a4863cb 100644 --- a/src/constants/README.md +++ b/src/constants/README.md @@ -8,5 +8,6 @@ Various constants used throughout the worker - [cachedDirectories.json](./cachedDirectories.json) - Directories that have their listing result cached because they have symlinks in them. These are updated by the [build-r2-symlinks](../scripts/build-r2-symlinks.mjs) script. - [docsDirectory.json](./docsDirectory.json) - The contents of `nodejs/docs/` in the `dist-prod` bucket. This is updated by the [build-r2-symlinks](../scripts/build-r2-symlinks.mjs) script. - [files.ts](./files.ts) - Constants related to files the worker serves. +- [fileSymlinks.ts](./fileSymlinks.json) - Manually updated mapping of file symlinks that exist in the `dist-prod` bucket. - [latestVersions.json] - Map of `latest-*` directories to their actual latest versions. This is updated by the [build-r2-symlinks](../scripts/build-r2-symlinks.mjs) script. - [limits.ts](./limits.ts) - Hardcap limits that the worker shouldn't exceed. diff --git a/src/constants/cachedDirectories.json b/src/constants/cachedDirectories.json index ebab7ba..63570df 100644 --- a/src/constants/cachedDirectories.json +++ b/src/constants/cachedDirectories.json @@ -1331,6 +1331,11 @@ "name": "node-latest.tar.gz", "lastModified": "2025-02-13T17:40:51.000Z", "size": 99593780 + }, + { + "name": "node-v0.10.14.tar.gz", + "lastModified": "2024-10-30T17:10:10.000Z", + "size": 13782897 } ], "lastModified": "2025-02-20T10:03:49.660Z" @@ -2154,5 +2159,1326 @@ "hasIndexHtmlFile": false, "files": [], "lastModified": "2025-02-20T10:03:49.660Z" + }, + "nodejs/release/v0.3.3/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:02.707Z", + "size": 85 + }, + { + "name": "node-v0.3.3.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 4582669 + } + ], + "lastModified": "2024-11-04T17:00:02.707Z" + }, + "nodejs/release/v0.2.3/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:59:31.088Z", + "size": 85 + }, + { + "name": "node-v0.2.3.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 3877908 + } + ], + "lastModified": "2024-11-04T16:59:31.088Z" + }, + "nodejs/release/v0.4.1/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:10.173Z", + "size": 85 + }, + { + "name": "node-v0.4.1.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 4855576 + } + ], + "lastModified": "2024-11-04T17:00:10.173Z" + }, + "nodejs/release/v0.1.18/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:08.198Z", + "size": 86 + }, + { + "name": "node-v0.1.18.tar.gz", + "lastModified": "2024-11-04T16:54:05.000Z", + "size": 3537137 + } + ], + "lastModified": "2024-11-04T16:54:08.198Z" + }, + "nodejs/release/v0.4.2/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:11.979Z", + "size": 85 + }, + { + "name": "node-v0.4.2.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 4922523 + } + ], + "lastModified": "2024-11-04T17:00:11.979Z" + }, + "nodejs/release/v0.2.2/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:59:29.468Z", + "size": 85 + }, + { + "name": "node-v0.2.2.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 3876164 + } + ], + "lastModified": "2024-11-04T16:59:29.468Z" + }, + "nodejs/release/v0.1.95/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:18.138Z", + "size": 86 + }, + { + "name": "node-v0.1.95.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 3691396 + } + ], + "lastModified": "2024-11-04T16:54:18.138Z" + }, + "nodejs/release/v0.4.7/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:13.380Z", + "size": 85 + }, + { + "name": "node-v0.4.7.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 5011520 + } + ], + "lastModified": "2024-11-04T17:00:13.380Z" + }, + "nodejs/release/v0.1.19/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:08.191Z", + "size": 86 + }, + { + "name": "node-v0.1.19.tar.gz", + "lastModified": "2024-11-04T16:54:05.000Z", + "size": 3574916 + } + ], + "lastModified": "2024-11-04T16:54:08.191Z" + }, + "nodejs/release/v0.1.20/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:08.203Z", + "size": 86 + }, + { + "name": "node-v0.1.20.tar.gz", + "lastModified": "2024-11-04T16:54:05.000Z", + "size": 3575681 + } + ], + "lastModified": "2024-11-04T16:54:08.203Z" + }, + "nodejs/release/v0.3.6/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:06.740Z", + "size": 85 + }, + { + "name": "node-v0.3.6.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 4727071 + } + ], + "lastModified": "2024-11-04T17:00:06.740Z" + }, + "nodejs/release/v0.4.4/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:12.511Z", + "size": 85 + }, + { + "name": "node-v0.4.4.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 4995935 + } + ], + "lastModified": "2024-11-04T17:00:12.511Z" + }, + "nodejs/release/v0.4.3/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:12.302Z", + "size": 85 + }, + { + "name": "node-v0.4.3.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 4991966 + } + ], + "lastModified": "2024-11-04T17:00:12.302Z" + }, + "nodejs/release/v0.1.28/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:17.443Z", + "size": 86 + }, + { + "name": "node-v0.1.28.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 3804602 + } + ], + "lastModified": "2024-11-04T16:54:17.443Z" + }, + "nodejs/release/v0.1.21/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:08.320Z", + "size": 86 + }, + { + "name": "node-v0.1.21.tar.gz", + "lastModified": "2024-11-04T16:54:05.000Z", + "size": 3597096 + } + ], + "lastModified": "2024-11-04T16:54:08.320Z" + }, + "nodejs/release/v0.3.1/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:59:58.276Z", + "size": 85 + }, + { + "name": "node-v0.3.1.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 4147683 + } + ], + "lastModified": "2024-11-04T16:59:58.276Z" + }, + "nodejs/release/v0.3.4/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:04.780Z", + "size": 85 + }, + { + "name": "node-v0.3.4.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 4610441 + } + ], + "lastModified": "2024-11-04T17:00:04.780Z" + }, + "nodejs/release/v0.4.11/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:11.189Z", + "size": 86 + }, + { + "name": "node-v0.4.11.tar.gz", + "lastModified": "2024-10-30T17:10:04.000Z", + "size": 12419274 + } + ], + "lastModified": "2024-11-04T17:00:11.189Z" + }, + "nodejs/release/v0.1.25/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:08.373Z", + "size": 86 + }, + { + "name": "node-v0.1.25.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 3666675 + } + ], + "lastModified": "2024-11-04T16:54:08.373Z" + }, + "nodejs/release/v0.3.0/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:59:55.289Z", + "size": 85 + }, + { + "name": "node-v0.3.0.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 4054239 + } + ], + "lastModified": "2024-11-04T16:59:55.289Z" + }, + "nodejs/release/v0.1.98/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:18.237Z", + "size": 86 + }, + { + "name": "node-v0.1.98.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 3770749 + } + ], + "lastModified": "2024-11-04T16:54:18.237Z" + }, + "nodejs/release/v0.1.103/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:07.987Z", + "size": 87 + }, + { + "name": "node-v0.1.103.tar.gz", + "lastModified": "2024-11-04T16:54:05.000Z", + "size": 3843666 + } + ], + "lastModified": "2024-11-04T16:54:07.987Z" + }, + "nodejs/release/v0.1.102/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:08.050Z", + "size": 87 + }, + { + "name": "node-v0.1.102.tar.gz", + "lastModified": "2024-11-04T16:54:05.000Z", + "size": 3847409 + } + ], + "lastModified": "2024-11-04T16:54:08.050Z" + }, + "nodejs/release/v0.4.10/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:10.763Z", + "size": 86 + }, + { + "name": "node-v0.4.10.tar.gz", + "lastModified": "2024-10-30T17:10:04.000Z", + "size": 12410018 + } + ], + "lastModified": "2024-11-04T17:00:10.763Z" + }, + "nodejs/release/v0.4.6/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:13.142Z", + "size": 85 + }, + { + "name": "node-v0.4.6.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 5008110 + } + ], + "lastModified": "2024-11-04T17:00:13.142Z" + }, + "nodejs/release/v0.1.24/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:08.340Z", + "size": 86 + }, + { + "name": "node-v0.1.24.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 3649641 + } + ], + "lastModified": "2024-11-04T16:54:08.340Z" + }, + "nodejs/release/v0.1.17/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:08.117Z", + "size": 86 + }, + { + "name": "node-v0.1.17.tar.gz", + "lastModified": "2024-11-04T16:54:05.000Z", + "size": 3826866 + } + ], + "lastModified": "2024-11-04T16:54:08.117Z" + }, + "nodejs/release/v0.3.2/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:59:59.842Z", + "size": 85 + }, + { + "name": "node-v0.3.2.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 4433878 + } + ], + "lastModified": "2024-11-04T16:59:59.842Z" + }, + "nodejs/release/v0.1.100/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:08.051Z", + "size": 87 + }, + { + "name": "node-v0.1.100.tar.gz", + "lastModified": "2024-11-04T16:54:05.000Z", + "size": 3813493 + } + ], + "lastModified": "2024-11-04T16:54:08.051Z" + }, + "nodejs/release/v0.2.4/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:59:35.364Z", + "size": 85 + }, + { + "name": "node-v0.2.4.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 4002347 + } + ], + "lastModified": "2024-11-04T16:59:35.364Z" + }, + "nodejs/release/v0.1.14/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:08.042Z", + "size": 86 + }, + { + "name": "node-v0.1.14.tar.gz", + "lastModified": "2024-11-04T16:54:05.000Z", + "size": 3736523 + } + ], + "lastModified": "2024-11-04T16:54:08.042Z" + }, + "nodejs/release/v0.1.33/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:17.920Z", + "size": 86 + }, + { + "name": "node-v0.1.33.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 4016600 + } + ], + "lastModified": "2024-11-04T16:54:17.920Z" + }, + "nodejs/release/v0.3.5/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:05.703Z", + "size": 85 + }, + { + "name": "node-v0.3.5.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 4655131 + } + ], + "lastModified": "2024-11-04T17:00:05.703Z" + }, + "nodejs/release/v0.5.0/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:13.929Z", + "size": 85 + }, + { + "name": "node-v0.5.0.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 5357945 + } + ], + "lastModified": "2024-11-04T17:00:13.929Z" + }, + "nodejs/release/v0.1.97/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:18.231Z", + "size": 86 + }, + { + "name": "node-v0.1.97.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 3725213 + } + ], + "lastModified": "2024-11-04T16:54:18.231Z" + }, + "nodejs/release/v0.1.30/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:17.849Z", + "size": 86 + }, + { + "name": "node-v0.1.30.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 3912671 + } + ], + "lastModified": "2024-11-04T16:54:17.849Z" + }, + "nodejs/release/v0.1.96/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:18.151Z", + "size": 86 + }, + { + "name": "node-v0.1.96.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 3697128 + } + ], + "lastModified": "2024-11-04T16:54:18.151Z" + }, + "nodejs/release/v0.1.16/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:08.166Z", + "size": 86 + }, + { + "name": "node-v0.1.16.tar.gz", + "lastModified": "2024-11-04T16:54:05.000Z", + "size": 3827870 + } + ], + "lastModified": "2024-11-04T16:54:08.166Z" + }, + "nodejs/release/v0.1.104/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:07.965Z", + "size": 87 + }, + { + "name": "node-v0.1.104.tar.gz", + "lastModified": "2024-11-04T16:54:05.000Z", + "size": 3859322 + } + ], + "lastModified": "2024-11-04T16:54:07.965Z" + }, + "nodejs/release/v0.1.91/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:18.063Z", + "size": 86 + }, + { + "name": "node-v0.1.91.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 6488023 + } + ], + "lastModified": "2024-11-04T16:54:18.063Z" + }, + "nodejs/release/v0.1.27/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:08.823Z", + "size": 86 + }, + { + "name": "node-v0.1.27.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 3766114 + } + ], + "lastModified": "2024-11-04T16:54:08.823Z" + }, + "nodejs/release/v0.1.26/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:08.419Z", + "size": 86 + }, + { + "name": "node-v0.1.26.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 3704254 + } + ], + "lastModified": "2024-11-04T16:54:08.419Z" + }, + "nodejs/release/v0.6.12/": { + "subdirectories": ["docs/"], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "MD5SUMS.txt", + "lastModified": "2024-11-04T17:00:17.022Z", + "size": 425 + }, + { + "name": "SHASUMS.txt", + "lastModified": "2024-11-04T17:00:17.280Z", + "size": 443 + }, + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:17.463Z", + "size": 555 + }, + { + "name": "node-v0.6.12.msi", + "lastModified": "2024-11-04T17:00:17.767Z", + "size": 3158016 + }, + { + "name": "node-v0.6.12.pkg", + "lastModified": "2024-11-04T17:00:18.162Z", + "size": 6103343 + }, + { + "name": "node-v0.6.12.tar.gz", + "lastModified": "2024-10-30T17:11:59.345Z", + "size": 10452498 + }, + { + "name": "node.exe", + "lastModified": "2024-11-04T17:00:18.579Z", + "size": 4695912 + }, + { + "name": "node.lib", + "lastModified": "2024-11-04T17:00:18.816Z", + "size": 254382 + }, + { + "name": "node.pdb", + "lastModified": "2024-10-30T17:11:59.767Z", + "size": 15633408 + }, + { + "name": "npm-1.1.4.zip", + "lastModified": "2024-11-04T17:00:19.477Z", + "size": 1214374 + }, + { + "name": "node.tar.gz", + "lastModified": "2024-10-30T17:10:04.000Z", + "size": 10452498 + } + ], + "lastModified": "2024-11-04T17:00:19.477Z" + }, + "nodejs/release/v0.2.5/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:59:46.161Z", + "size": 85 + }, + { + "name": "node-v0.2.5.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 4008314 + } + ], + "lastModified": "2024-11-04T16:59:46.161Z" + }, + "nodejs/release/v0.3.7/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:07.369Z", + "size": 85 + }, + { + "name": "node-v0.3.7.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 4748183 + } + ], + "lastModified": "2024-11-04T17:00:07.369Z" + }, + "nodejs/release/v0.1.22/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:08.316Z", + "size": 86 + }, + { + "name": "node-v0.1.22.tar.gz", + "lastModified": "2024-11-04T16:54:05.000Z", + "size": 3604861 + } + ], + "lastModified": "2024-11-04T16:54:08.316Z" + }, + "nodejs/release/v0.2.1/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:59:28.255Z", + "size": 85 + }, + { + "name": "node-v0.2.1.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 3874229 + } + ], + "lastModified": "2024-11-04T16:59:28.255Z" + }, + "nodejs/release/v0.1.99/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:18.237Z", + "size": 86 + }, + { + "name": "node-v0.1.99.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 3796156 + } + ], + "lastModified": "2024-11-04T16:54:18.237Z" + }, + "nodejs/release/v0.1.90/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:17.983Z", + "size": 86 + }, + { + "name": "node-v0.1.90.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 6452573 + } + ], + "lastModified": "2024-11-04T16:54:17.983Z" + }, + "nodejs/release/v0.8.8/": { + "subdirectories": ["docs/", "x64/"], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS.txt.asc", + "lastModified": "2024-11-04T17:03:47.124Z", + "size": 1633 + }, + { + "name": "SHASUMS.txt.gpg", + "lastModified": "2024-11-04T17:03:47.423Z", + "size": 1006 + }, + { + "name": "SHASUMS.txt", + "lastModified": "2024-11-04T17:03:46.858Z", + "size": 1099 + }, + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:03:47.582Z", + "size": 1617 + }, + { + "name": "node-v0.8.8-darwin-x64.tar.gz", + "lastModified": "2024-11-04T17:03:47.815Z", + "size": 3952098 + }, + { + "name": "node-v0.8.8-darwin-x86.tar.gz", + "lastModified": "2024-11-04T17:03:48.076Z", + "size": 3759707 + }, + { + "name": "node-v0.8.8-linux-x64.tar.gz", + "lastModified": "2024-11-04T17:03:48.318Z", + "size": 4679181 + }, + { + "name": "node-v0.8.8-linux-x86.tar.gz", + "lastModified": "2024-11-04T17:03:48.566Z", + "size": 4399850 + }, + { + "name": "node-v0.8.8-sunos-x64.tar.gz", + "lastModified": "2024-11-04T17:03:48.871Z", + "size": 5358026 + }, + { + "name": "node-v0.8.8-sunos-x86.tar.gz", + "lastModified": "2024-11-04T17:03:49.079Z", + "size": 5043874 + }, + { + "name": "node-v0.8.8-x86.msi", + "lastModified": "2024-11-04T17:03:49.351Z", + "size": 4235264 + }, + { + "name": "node-v0.8.8.pkg", + "lastModified": "2024-11-04T17:03:49.590Z", + "size": 7658262 + }, + { + "name": "node-v0.8.8.tar.gz", + "lastModified": "2024-10-30T17:12:29.948Z", + "size": 11492087 + }, + { + "name": "node.exe", + "lastModified": "2024-11-04T17:03:50.091Z", + "size": 5050728 + }, + { + "name": "node.exp", + "lastModified": "2024-11-04T17:03:50.346Z", + "size": 180101 + }, + { + "name": "node.lib", + "lastModified": "2024-11-04T17:03:50.552Z", + "size": 293664 + }, + { + "name": "node.pdb", + "lastModified": "2024-10-30T17:12:30.358Z", + "size": 16149504 + }, + { + "name": "node-v0.8.8-x64.msi", + "lastModified": "2024-11-04T17:03:59.000Z", + "size": 4587520 + } + ], + "lastModified": "2024-11-04T17:03:50.552Z" + }, + "nodejs/release/v0.1.93/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:18.134Z", + "size": 86 + }, + { + "name": "node-v0.1.93.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 6528767 + } + ], + "lastModified": "2024-11-04T16:54:18.134Z" + }, + "nodejs/release/v0.4.5/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:12.995Z", + "size": 85 + }, + { + "name": "node-v0.4.5.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 5001301 + } + ], + "lastModified": "2024-11-04T17:00:12.995Z" + }, + "nodejs/release/v0.1.92/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:18.024Z", + "size": 86 + }, + { + "name": "node-v0.1.92.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 6535942 + } + ], + "lastModified": "2024-11-04T16:54:18.024Z" + }, + "nodejs/release/v0.1.23/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:08.387Z", + "size": 86 + }, + { + "name": "node-v0.1.23.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 3605321 + } + ], + "lastModified": "2024-11-04T16:54:08.387Z" + }, + "nodejs/release/v0.4.9/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:13.687Z", + "size": 85 + }, + { + "name": "node-v0.4.9.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 4994552 + } + ], + "lastModified": "2024-11-04T17:00:13.687Z" + }, + "nodejs/release/v0.1.29/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:17.978Z", + "size": 86 + }, + { + "name": "node-v0.1.29.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 3807335 + } + ], + "lastModified": "2024-11-04T16:54:17.978Z" + }, + "nodejs/release/v0.7.11/": { + "subdirectories": ["docs/", "x64/"], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS.txt", + "lastModified": "2024-11-04T17:01:29.030Z", + "size": 675 + }, + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:01:29.235Z", + "size": 1050 + }, + { + "name": "node-v0.7.11-x86.msi", + "lastModified": "2024-11-04T17:01:29.468Z", + "size": 3862528 + }, + { + "name": "node-v0.7.11.pkg", + "lastModified": "2024-11-04T17:01:29.742Z", + "size": 7273391 + }, + { + "name": "node-v0.7.11.tar.gz", + "lastModified": "2024-10-30T17:12:08.548Z", + "size": 11614884 + }, + { + "name": "node.exe", + "lastModified": "2024-11-04T17:01:30.247Z", + "size": 5078376 + }, + { + "name": "node.exp", + "lastModified": "2024-11-04T17:01:30.527Z", + "size": 170479 + }, + { + "name": "node.lib", + "lastModified": "2024-11-04T17:01:30.755Z", + "size": 277916 + }, + { + "name": "node.pdb", + "lastModified": "2024-10-30T17:12:09.306Z", + "size": 16133120 + }, + { + "name": "node-v0.7.11-x64.msi", + "lastModified": "2024-11-04T17:01:39.000Z", + "size": 4218880 + } + ], + "lastModified": "2024-11-04T17:01:30.755Z" + }, + "nodejs/release/v0.4.0/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:09.490Z", + "size": 85 + }, + { + "name": "node-v0.4.0.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 4827760 + } + ], + "lastModified": "2024-11-04T17:00:09.490Z" + }, + "nodejs/release/v0.2.0/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:59:25.773Z", + "size": 85 + }, + { + "name": "node-v0.2.0.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 3869705 + } + ], + "lastModified": "2024-11-04T16:59:25.773Z" + }, + "nodejs/release/v0.1.101/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:08.006Z", + "size": 87 + }, + { + "name": "node-v0.1.101.tar.gz", + "lastModified": "2024-11-04T16:54:05.000Z", + "size": 3825097 + } + ], + "lastModified": "2024-11-04T16:54:08.006Z" + }, + "nodejs/release/v0.4.8/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:13.584Z", + "size": 85 + }, + { + "name": "node-v0.4.8.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 4991396 + } + ], + "lastModified": "2024-11-04T17:00:13.584Z" + }, + "nodejs/release/v0.2.6/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:59:50.768Z", + "size": 85 + }, + { + "name": "node-v0.2.6.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 4010320 + } + ], + "lastModified": "2024-11-04T16:59:50.768Z" + }, + "nodejs/release/v0.1.94/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:18.083Z", + "size": 86 + }, + { + "name": "node-v0.1.94.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 6691437 + } + ], + "lastModified": "2024-11-04T16:54:18.083Z" + }, + "nodejs/release/v0.1.31/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:17.917Z", + "size": 86 + }, + { + "name": "node-v0.1.31.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 3933441 + } + ], + "lastModified": "2024-11-04T16:54:17.917Z" + }, + "nodejs/release/v0.3.8/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:08.409Z", + "size": 85 + }, + { + "name": "node-v0.3.8.tar.gz", + "lastModified": "2024-11-04T16:54:07.000Z", + "size": 4779447 + } + ], + "lastModified": "2024-11-04T17:00:08.409Z" + }, + "nodejs/release/v0.1.15/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:08.284Z", + "size": 86 + }, + { + "name": "node-v0.1.15.tar.gz", + "lastModified": "2024-11-04T16:54:05.000Z", + "size": 3766716 + } + ], + "lastModified": "2024-11-04T16:54:08.284Z" + }, + "nodejs/release/v0.4.12/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T17:00:11.851Z", + "size": 86 + }, + { + "name": "node-v0.4.12.tar.gz", + "lastModified": "2024-10-30T17:10:04.000Z", + "size": 12421469 + } + ], + "lastModified": "2024-11-04T17:00:11.851Z" + }, + "nodejs/release/v0.1.32/": { + "subdirectories": [], + "hasIndexHtmlFile": false, + "files": [ + { + "name": "SHASUMS256.txt", + "lastModified": "2024-11-04T16:54:17.865Z", + "size": 86 + }, + { + "name": "node-v0.1.32.tar.gz", + "lastModified": "2024-11-04T16:54:06.000Z", + "size": 3984949 + } + ], + "lastModified": "2024-11-04T16:54:17.865Z" } } diff --git a/src/constants/fileSymlinks.json b/src/constants/fileSymlinks.json new file mode 100644 index 0000000..23c1ca4 --- /dev/null +++ b/src/constants/fileSymlinks.json @@ -0,0 +1,71 @@ +{ + "nodejs/release/v0.3.3/node-v0.3.3.tar.gz": "nodejs/release/node-v0.3.3.tar.gz", + "nodejs/release/v0.2.3/node-v0.2.3.tar.gz": "nodejs/release/node-v0.2.3.tar.gz", + "nodejs/release/v0.4.1/node-v0.4.1.tar.gz": "nodejs/release/node-v0.4.1.tar.gz", + "nodejs/release/v0.1.18/node-v0.1.18.tar.gz": "nodejs/release/node-v0.1.18.tar.gz", + "nodejs/release/v0.4.2/node-v0.4.2.tar.gz": "nodejs/release/node-v0.4.2.tar.gz", + "nodejs/release/v0.2.2/node-v0.2.2.tar.gz": "nodejs/release/node-v0.2.2.tar.gz", + "nodejs/release/v0.1.95/node-v0.1.95.tar.gz": "nodejs/release/node-v0.1.95.tar.gz", + "nodejs/release/v0.4.7/node-v0.4.7.tar.gz": "nodejs/release/node-v0.4.7.tar.gz", + "nodejs/release/v0.1.19/node-v0.1.19.tar.gz": "nodejs/release/node-v0.1.19.tar.gz", + "nodejs/release/v0.1.20/node-v0.1.20.tar.gz": "nodejs/release/node-v0.1.20.tar.gz", + "nodejs/release/v0.3.6/node-v0.3.6.tar.gz": "nodejs/release/node-v0.3.6.tar.gz", + "nodejs/release/v0.4.4/node-v0.4.4.tar.gz": "nodejs/release/node-v0.4.4.tar.gz", + "nodejs/release/v0.4.3/node-v0.4.3.tar.gz": "nodejs/release/node-v0.4.3.tar.gz", + "nodejs/release/v0.1.28/node-v0.1.28.tar.gz": "nodejs/release/node-v0.1.28.tar.gz", + "nodejs/release/v0.1.21/node-v0.1.21.tar.gz": "nodejs/release/node-v0.1.21.tar.gz", + "nodejs/release/v0.3.1/node-v0.3.1.tar.gz": "nodejs/release/node-v0.3.1.tar.gz", + "nodejs/release/v0.3.4/node-v0.3.4.tar.gz": "nodejs/release/node-v0.3.4.tar.gz", + "nodejs/release/v0.4.11/node-v0.4.11.tar.gz": "nodejs/release/node-v0.4.11.tar.gz", + "nodejs/release/v0.1.25/node-v0.1.25.tar.gz": "nodejs/release/node-v0.1.25.tar.gz", + "nodejs/release/v0.3.0/node-v0.3.0.tar.gz": "nodejs/release/node-v0.3.0.tar.gz", + "nodejs/release/v0.1.98/node-v0.1.98.tar.gz": "nodejs/release/node-v0.1.98.tar.gz", + "nodejs/release/v0.1.103/node-v0.1.103.tar.gz": "nodejs/release/node-v0.1.103.tar.gz", + "nodejs/release/v0.1.102/node-v0.1.102.tar.gz": "nodejs/release/node-v0.1.102.tar.gz", + "nodejs/release/v0.4.10/node-v0.4.10.tar.gz": "nodejs/release/node-v0.4.10.tar.gz", + "nodejs/release/v0.4.6/node-v0.4.6.tar.gz": "nodejs/release/node-v0.4.6.tar.gz", + "nodejs/release/v0.1.24/node-v0.1.24.tar.gz": "nodejs/release/node-v0.1.24.tar.gz", + "nodejs/release/v0.1.17/node-v0.1.17.tar.gz": "nodejs/release/node-v0.1.17.tar.gz", + "nodejs/release/v0.3.2/node-v0.3.2.tar.gz": "nodejs/release/node-v0.3.2.tar.gz", + "nodejs/release/v0.1.100/node-v0.1.100.tar.gz": "nodejs/release/node-v0.1.100.tar.gz", + "nodejs/release/v0.2.4/node-v0.2.4.tar.gz": "nodejs/release/node-v0.2.4.tar.gz", + "nodejs/release/v0.1.14/node-v0.1.14.tar.gz": "nodejs/release/node-v0.1.14.tar.gz", + "nodejs/release/v0.1.33/node-v0.1.33.tar.gz": "nodejs/release/node-v0.1.33.tar.gz", + "nodejs/release/v0.3.5/node-v0.3.5.tar.gz": "nodejs/release/node-v0.3.5.tar.gz", + "nodejs/release/v0.5.0/node-v0.5.0.tar.gz": "nodejs/release/node-v0.5.0.tar.gz", + "nodejs/release/v0.1.97/node-v0.1.97.tar.gz": "nodejs/release/node-v0.1.97.tar.gz", + "nodejs/release/v0.1.30/node-v0.1.30.tar.gz": "nodejs/release/node-v0.1.30.tar.gz", + "nodejs/release/v0.1.96/node-v0.1.96.tar.gz": "nodejs/release/node-v0.1.96.tar.gz", + "nodejs/release/v0.1.16/node-v0.1.16.tar.gz": "nodejs/release/node-v0.1.16.tar.gz", + "nodejs/release/v0.1.104/node-v0.1.104.tar.gz": "nodejs/release/node-v0.1.104.tar.gz", + "nodejs/release/v0.1.91/node-v0.1.91.tar.gz": "nodejs/release/node-v0.1.91.tar.gz", + "nodejs/release/v0.1.27/node-v0.1.27.tar.gz": "nodejs/release/node-v0.1.27.tar.gz", + "nodejs/release/v0.1.26/node-v0.1.26.tar.gz": "nodejs/release/node-v0.1.26.tar.gz", + "nodejs/release/v0.6.12/node.tar.gz": "nodejs/release/node-v0.6.12.tar.gz", + "nodejs/release/v0.2.5/node-v0.2.5.tar.gz": "nodejs/release/node-v0.2.5.tar.gz", + "nodejs/release/v0.3.7/node-v0.3.7.tar.gz": "nodejs/release/node-v0.3.7.tar.gz", + "nodejs/release/v0.1.22/node-v0.1.22.tar.gz": "nodejs/release/node-v0.1.22.tar.gz", + "nodejs/release/v0.2.1/node-v0.2.1.tar.gz": "nodejs/release/node-v0.2.1.tar.gz", + "nodejs/release/v0.1.99/node-v0.1.99.tar.gz": "nodejs/release/node-v0.1.99.tar.gz", + "nodejs/release/v0.1.90/node-v0.1.90.tar.gz": "nodejs/release/node-v0.1.90.tar.gz", + "nodejs/release/v0.8.8/node-v0.8.8-x64.msi": "nodejs/release/v0.8.8/x64/node-v0.8.8-x64.msi", + "nodejs/release/v0.1.93/node-v0.1.93.tar.gz": "nodejs/release/node-v0.1.93.tar.gz", + "nodejs/release/v0.4.5/node-v0.4.5.tar.gz": "nodejs/release/node-v0.4.5.tar.gz", + "nodejs/release/v0.1.92/node-v0.1.92.tar.gz": "nodejs/release/node-v0.1.92.tar.gz", + "nodejs/release/v0.1.23/node-v0.1.23.tar.gz": "nodejs/release/node-v0.1.23.tar.gz", + "nodejs/release/node-v0.10.14.tar.gz": "nodejs/release/v0.10.14/node-v0.10.14.tar.gz", + "nodejs/release/v0.4.9/node-v0.4.9.tar.gz": "nodejs/release/node-v0.4.9.tar.gz", + "nodejs/release/v0.1.29/node-v0.1.29.tar.gz": "nodejs/release/node-v0.1.29.tar.gz", + "nodejs/release/v0.7.11/node-v0.7.11-x64.msi": "nodejs/release/v0.7.11/x64/node-v0.7.11-x64.msi", + "nodejs/release/v0.4.0/node-v0.4.0.tar.gz": "nodejs/release/node-v0.4.0.tar.gz", + "nodejs/release/v0.2.0/node-v0.2.0.tar.gz": "nodejs/release/node-v0.2.0.tar.gz", + "nodejs/release/v0.1.101/node-v0.1.101.tar.gz": "nodejs/release/node-v0.1.101.tar.gz", + "nodejs/release/v0.4.8/node-v0.4.8.tar.gz": "nodejs/release/node-v0.4.8.tar.gz", + "nodejs/release/v0.2.6/node-v0.2.6.tar.gz": "nodejs/release/node-v0.2.6.tar.gz", + "nodejs/release/v0.1.94/node-v0.1.94.tar.gz": "nodejs/release/node-v0.1.94.tar.gz", + "nodejs/release/v0.1.31/node-v0.1.31.tar.gz": "nodejs/release/node-v0.1.31.tar.gz", + "nodejs/release/v0.3.8/node-v0.3.8.tar.gz": "nodejs/release/node-v0.3.8.tar.gz", + "nodejs/release/v0.1.15/node-v0.1.15.tar.gz": "nodejs/release/node-v0.1.15.tar.gz", + "nodejs/release/v0.4.12/node-v0.4.12.tar.gz": "nodejs/release/node-v0.4.12.tar.gz", + "nodejs/release/v0.1.32/node-v0.1.32.tar.gz": "nodejs/release/node-v0.1.32.tar.gz" +} diff --git a/src/providers/r2Provider.ts b/src/providers/r2Provider.ts index bd4e9cc..00c1faa 100644 --- a/src/providers/r2Provider.ts +++ b/src/providers/r2Provider.ts @@ -2,6 +2,7 @@ import { CACHE_HEADERS } from '../constants/cache'; import { R2_RETRY_LIMIT } from '../constants/limits'; import CACHED_DIRECTORIES from '../constants/cachedDirectories.json' assert { type: 'json' }; import contentTypeOverrides from '../constants/contentTypeOverrides.json' assert { type: 'json' }; +import fileSymlinks from '../constants/fileSymlinks.json' assert { type: 'json' }; import type { Context } from '../context'; import { objectHasBody } from '../utils/object'; import { retryWrapper } from '../utils/provider'; @@ -41,6 +42,11 @@ export class R2Provider implements Provider { } async headFile(path: string): Promise { + if (path in fileSymlinks) { + // @ts-expect-error fileSymlinks is untyped + path = fileSymlinks[path]; + } + const object = await retryWrapper( async () => await this.ctx.env.R2_BUCKET.head(path), R2_RETRY_LIMIT, @@ -65,6 +71,11 @@ export class R2Provider implements Provider { path: string, options?: GetFileOptions ): Promise { + if (path in fileSymlinks) { + // @ts-expect-error fileSymlinks is untyped + path = fileSymlinks[path]; + } + const object = await retryWrapper( async () => { return this.ctx.env.R2_BUCKET.get(path, {