mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +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 {
|
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!,
|
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],
|
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 {
|
} catch {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +1,12 @@
|
|||||||
// import Cloudflare from 'cloudflare';
|
import type Cloudflare from 'cloudflare';
|
||||||
import { ENV } from './env';
|
import { ENV } from './env';
|
||||||
|
|
||||||
// const client = new Cloudflare({
|
|
||||||
// apiToken: process.env.CF_D1_DOCS_API_KEY,
|
|
||||||
// });
|
|
||||||
|
|
||||||
export async function fetchVersions(packageName: string) {
|
export async function fetchVersions(packageName: string) {
|
||||||
if (ENV.IS_LOCAL_DEV) {
|
if (ENV.IS_LOCAL_DEV) {
|
||||||
return [{ version: 'main' }];
|
return [{ version: 'main' }];
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
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(
|
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`,
|
`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',
|
method: 'POST',
|
||||||
body: JSON.stringify({
|
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],
|
params: [packageName],
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
const data = await response.json();
|
const data = (await response.json()) as Cloudflare.D1Resource.Database.QueryResultsSinglePage;
|
||||||
|
return (data.result[0]?.results ?? []) as { version: string }[];
|
||||||
return data.result[0]?.results;
|
|
||||||
} catch {
|
} catch {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user