mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 08:03:30 +01:00
fix: Sort package versions (#11284)
* fix: sort package versions * refactor: remove spaces --------- Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
@@ -18,13 +18,32 @@ export async function fetchLatestVersion(packageName: string): Promise<string> {
|
||||
}
|
||||
|
||||
try {
|
||||
const { result } = await client.d1.database.query(process.env.CF_D1_DOCS_ID!, {
|
||||
const data = await client.d1.database.query(process.env.CF_D1_DOCS_ID!, {
|
||||
account_id: process.env.CF_ACCOUNT_ID!,
|
||||
sql: `select version from documentation where name = ? and version != 'main' order by version desc limit 1;`,
|
||||
sql: `WITH parsed AS (
|
||||
SELECT
|
||||
version,
|
||||
CAST(substr(version, 1, instr(version, '.') - 1) AS INTEGER) AS major,
|
||||
substr(version, instr(version, '.') + 1) AS rest
|
||||
FROM documentation
|
||||
WHERE name = ? AND version != 'main'
|
||||
),
|
||||
parsed2 AS (
|
||||
SELECT
|
||||
version,
|
||||
major,
|
||||
CAST(substr(rest, 1, instr(rest, '.') - 1) AS INTEGER) AS minor,
|
||||
CAST(substr(rest, instr(rest, '.') + 1) AS INTEGER) AS patch
|
||||
FROM parsed
|
||||
)
|
||||
SELECT version
|
||||
FROM parsed2
|
||||
ORDER BY major DESC, minor DESC, patch DESC
|
||||
LIMIT 1;`,
|
||||
params: [packageName],
|
||||
});
|
||||
|
||||
return `${(result[0]?.results as { version: string }[] | undefined)?.[0]?.version ?? 'main'}${hasEntryPoints ? ['', ...DEFAULT_ENTRY_POINT].join('/') : ''}`;
|
||||
return `${((data.result[0]?.results ?? []) as { version: string }[])[0]?.version ?? 'main'}${hasEntryPoints ? ['', ...DEFAULT_ENTRY_POINT].join('/') : ''}`;
|
||||
} catch {
|
||||
return '';
|
||||
}
|
||||
|
||||
@@ -1,24 +1,12 @@
|
||||
// import Cloudflare from 'cloudflare';
|
||||
import type Cloudflare from 'cloudflare';
|
||||
import { ENV } from './env';
|
||||
|
||||
// const client = new Cloudflare({
|
||||
// apiToken: process.env.CF_D1_DOCS_API_KEY,
|
||||
// });
|
||||
|
||||
export async function fetchVersions(packageName: string) {
|
||||
if (ENV.IS_LOCAL_DEV) {
|
||||
return [{ version: 'main' }];
|
||||
}
|
||||
|
||||
try {
|
||||
// const { result } = await client.d1.database.query(process.env.CF_D1_DOCS_ID!, {
|
||||
// account_id: process.env.CF_ACCOUNT_ID!,
|
||||
// sql: `select version from documentation where name = ? order by version desc;`,
|
||||
// params: [packageName],
|
||||
// });
|
||||
|
||||
// return (result[0]?.results as { version: string }[] | undefined) ?? [];
|
||||
|
||||
const response = await fetch(
|
||||
`https://api.cloudflare.com/client/v4/accounts/${process.env.CF_ACCOUNT_ID}/d1/database/${process.env.CF_D1_DOCS_ID}/query`,
|
||||
{
|
||||
@@ -28,15 +16,48 @@ export async function fetchVersions(packageName: string) {
|
||||
},
|
||||
method: 'POST',
|
||||
body: JSON.stringify({
|
||||
sql: `select version from documentation where name = ? order by version desc;`,
|
||||
sql: `WITH parsed AS (
|
||||
SELECT
|
||||
version,
|
||||
CASE
|
||||
WHEN version = 'main' THEN NULL
|
||||
ELSE CAST(substr(version, 1, instr(version, '.') - 1) AS INTEGER)
|
||||
END AS major,
|
||||
CASE
|
||||
WHEN version = 'main' THEN NULL
|
||||
ELSE substr(version, instr(version, '.') + 1)
|
||||
END AS rest
|
||||
FROM documentation
|
||||
WHERE name = ?
|
||||
),
|
||||
parsed2 AS (
|
||||
SELECT
|
||||
version,
|
||||
major,
|
||||
CASE
|
||||
WHEN version = 'main' THEN NULL
|
||||
ELSE CAST(substr(rest, 1, instr(rest, '.') - 1) AS INTEGER)
|
||||
END AS minor,
|
||||
CASE
|
||||
WHEN version = 'main' THEN NULL
|
||||
ELSE CAST(substr(rest, instr(rest, '.') + 1) AS INTEGER)
|
||||
END AS patch
|
||||
FROM parsed
|
||||
)
|
||||
SELECT version
|
||||
FROM parsed2
|
||||
ORDER BY
|
||||
CASE WHEN version = 'main' THEN 0 ELSE 1 END,
|
||||
major DESC,
|
||||
minor DESC,
|
||||
patch DESC;`,
|
||||
params: [packageName],
|
||||
}),
|
||||
},
|
||||
);
|
||||
|
||||
const data = await response.json();
|
||||
|
||||
return data.result[0]?.results;
|
||||
const data = (await response.json()) as Cloudflare.D1Resource.Database.QueryResultsSinglePage;
|
||||
return (data.result[0]?.results ?? []) as { version: string }[];
|
||||
} catch {
|
||||
return [];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user