build: switch to esbuild-plugin-version-injector for injecting version strings (#8723)

This commit is contained in:
Jeroen Claassens
2022-10-08 02:54:45 +02:00
committed by GitHub
parent 62332c2720
commit d923d0ab96
20 changed files with 91 additions and 13 deletions

View File

@@ -68,6 +68,7 @@
"@vitest/coverage-c8": "^0.24.0", "@vitest/coverage-c8": "^0.24.0",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"downlevel-dts": "^0.10.1", "downlevel-dts": "^0.10.1",
"esbuild-plugin-version-injector": "^1.0.0",
"eslint": "^8.24.0", "eslint": "^8.24.0",
"eslint-config-neon": "^0.1.35", "eslint-config-neon": "^0.1.35",
"prettier": "^2.7.1", "prettier": "^2.7.1",

View File

@@ -40,3 +40,12 @@ export * from './util/componentUtil.js';
export * from './util/normalizeArray.js'; export * from './util/normalizeArray.js';
export * from './util/validation.js'; export * from './util/validation.js';
export * from '@discordjs/util'; export * from '@discordjs/util';
/**
* The [\@discordjs/builders](https://github.com/discordjs/discord.js/blob/main/packages/builders/#readme) version
* that you are currently using.
*
* Note to developers: This needs to explicitly be `string` so it is not typed as a "const string" that gets injected by esbuild
*/
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
export const version: string = '[VI]{{inject}}[/VI]';

View File

@@ -1,3 +1,6 @@
import { esbuildPluginVersionInjector } from 'esbuild-plugin-version-injector';
import { createTsupConfig } from '../../tsup.config.js'; import { createTsupConfig } from '../../tsup.config.js';
export default createTsupConfig(); export default createTsupConfig({
esbuildPlugins: [esbuildPluginVersionInjector()],
});

View File

@@ -56,6 +56,7 @@
"@vitest/coverage-c8": "^0.24.0", "@vitest/coverage-c8": "^0.24.0",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"downlevel-dts": "^0.10.1", "downlevel-dts": "^0.10.1",
"esbuild-plugin-version-injector": "^1.0.0",
"eslint": "^8.24.0", "eslint": "^8.24.0",
"eslint-config-neon": "^0.1.35", "eslint-config-neon": "^0.1.35",
"prettier": "^2.7.1", "prettier": "^2.7.1",

View File

@@ -1 +1,10 @@
export * from './collection.js'; export * from './collection.js';
/**
* The [\@discordjs/collection](https://github.com/discordjs/discord.js/blob/main/packages/collection/#readme) version
* that you are currently using.
*
* Note to developers: This needs to explicitly be `string` so it is not typed as a "const string" that gets injected by esbuild
*/
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
export const version: string = '[VI]{{inject}}[/VI]';

View File

@@ -1,3 +1,6 @@
import { esbuildPluginVersionInjector } from 'esbuild-plugin-version-injector';
import { createTsupConfig } from '../../tsup.config.js'; import { createTsupConfig } from '../../tsup.config.js';
export default createTsupConfig(); export default createTsupConfig({
esbuildPlugins: [esbuildPluginVersionInjector()],
});

View File

@@ -68,6 +68,7 @@
"@vitest/coverage-c8": "^0.24.0", "@vitest/coverage-c8": "^0.24.0",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"downlevel-dts": "^0.10.1", "downlevel-dts": "^0.10.1",
"esbuild-plugin-version-injector": "^1.0.0",
"eslint": "^8.24.0", "eslint": "^8.24.0",
"eslint-config-neon": "^0.1.35", "eslint-config-neon": "^0.1.35",
"prettier": "^2.7.1", "prettier": "^2.7.1",

View File

@@ -6,3 +6,12 @@ export * from './lib/RequestManager.js';
export * from './lib/REST.js'; export * from './lib/REST.js';
export * from './lib/utils/constants.js'; export * from './lib/utils/constants.js';
export { makeURLSearchParams, parseResponse } from './lib/utils/utils.js'; export { makeURLSearchParams, parseResponse } from './lib/utils/utils.js';
/**
* The [\@discordjs/rest](https://github.com/discordjs/discord.js/blob/main/packages/rest/#readme) version
* that you are currently using.
*
* Note to developers: This needs to explicitly be `string` so it is not typed as a "const string" that gets injected by esbuild
*/
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
export const version: string = '[VI]{{inject}}[/VI]';

View File

@@ -2,10 +2,8 @@ import process from 'node:process';
import { APIVersion } from 'discord-api-types/v10'; import { APIVersion } from 'discord-api-types/v10';
import { Agent } from 'undici'; import { Agent } from 'undici';
import type { RESTOptions } from '../REST.js'; import type { RESTOptions } from '../REST.js';
// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports
const Package = require('../../../package.json');
export const DefaultUserAgent = `DiscordBot (${Package.homepage}, ${Package.version})`; export const DefaultUserAgent = `DiscordBot (https://discord.js.org, [VI]{{inject}}[/VI])`;
export const DefaultRestOptions: Required<RESTOptions> = { export const DefaultRestOptions: Required<RESTOptions> = {
get agent() { get agent() {

View File

@@ -1,3 +1,6 @@
import { esbuildPluginVersionInjector } from 'esbuild-plugin-version-injector';
import { createTsupConfig } from '../../tsup.config.js'; import { createTsupConfig } from '../../tsup.config.js';
export default createTsupConfig(); export default createTsupConfig({
esbuildPlugins: [esbuildPluginVersionInjector()],
});

View File

@@ -68,6 +68,7 @@
"@types/node": "^16.11.64", "@types/node": "^16.11.64",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"downlevel-dts": "^0.10.1", "downlevel-dts": "^0.10.1",
"esbuild-plugin-version-injector": "^1.0.0",
"eslint": "^8.24.0", "eslint": "^8.24.0",
"eslint-config-neon": "^0.1.35", "eslint-config-neon": "^0.1.35",
"jest": "^29.1.2", "jest": "^29.1.2",

View File

@@ -19,3 +19,12 @@ export {
} from './VoiceConnection'; } from './VoiceConnection';
export { type JoinConfig, getVoiceConnection, getVoiceConnections, getGroups } from './DataStore'; export { type JoinConfig, getVoiceConnection, getVoiceConnections, getGroups } from './DataStore';
/**
* The [\@discordjs/voice](https://github.com/discordjs/discord.js/blob/main/packages/voice/#readme) version
* that you are currently using.
*
* Note to developers: This needs to explicitly be `string` so it is not typed as a "const string" that gets injected by esbuild
*/
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
export const version: string = '[VI]{{inject}}[/VI]';

View File

@@ -33,10 +33,11 @@ function findPackageJSON(
*/ */
function version(name: string): string { function version(name: string): string {
try { try {
const pkg = if (name === '@discordjs/voice') {
name === '@discordjs/voice' return '[VI]{{inject}}[/VI]';
? require('../../package.json') }
: findPackageJSON(dirname(require.resolve(name)), name, 3);
const pkg = findPackageJSON(dirname(require.resolve(name)), name, 3);
return pkg?.version ?? 'not found'; return pkg?.version ?? 'not found';
} catch { } catch {
return 'not found'; return 'not found';

View File

@@ -1,3 +1,6 @@
import { esbuildPluginVersionInjector } from 'esbuild-plugin-version-injector';
import { createTsupConfig } from '../../tsup.config.js'; import { createTsupConfig } from '../../tsup.config.js';
export default createTsupConfig(); export default createTsupConfig({
esbuildPlugins: [esbuildPluginVersionInjector()],
});

View File

@@ -69,6 +69,7 @@
"@vitest/coverage-c8": "^0.24.0", "@vitest/coverage-c8": "^0.24.0",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"downlevel-dts": "^0.10.1", "downlevel-dts": "^0.10.1",
"esbuild-plugin-version-injector": "^1.0.0",
"eslint": "^8.24.0", "eslint": "^8.24.0",
"eslint-config-neon": "^0.1.35", "eslint-config-neon": "^0.1.35",
"mock-socket": "^9.1.5", "mock-socket": "^9.1.5",

View File

@@ -11,3 +11,12 @@ export * from './utils/IdentifyThrottler.js';
export * from './ws/WebSocketManager.js'; export * from './ws/WebSocketManager.js';
export * from './ws/WebSocketShard.js'; export * from './ws/WebSocketShard.js';
/**
* The [\@discordjs/voice](https://github.com/discordjs/discord.js/blob/main/packages/voice/#readme) version
* that you are currently using.
*
* Note to developers: This needs to explicitly be `string` so it is not typed as a "const string" that gets injected by esbuild
*/
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
export const version: string = '[VI]{{inject}}[/VI]';

View File

@@ -2,7 +2,6 @@ import process from 'node:process';
import { Collection } from '@discordjs/collection'; import { Collection } from '@discordjs/collection';
import { lazy } from '@discordjs/util'; import { lazy } from '@discordjs/util';
import { APIVersion, GatewayOpcodes } from 'discord-api-types/v10'; import { APIVersion, GatewayOpcodes } from 'discord-api-types/v10';
import { version } from '../../package.json';
import type { OptionalWebSocketManagerOptions, SessionInfo } from '../ws/WebSocketManager.js'; import type { OptionalWebSocketManagerOptions, SessionInfo } from '../ws/WebSocketManager.js';
/** /**
@@ -19,7 +18,7 @@ export enum CompressionMethod {
ZlibStream = 'zlib-stream', ZlibStream = 'zlib-stream',
} }
export const DefaultDeviceProperty = `@discordjs/ws ${version}`; export const DefaultDeviceProperty = `@discordjs/ws [VI]{{inject}}[/VI]`;
const getDefaultSessionStore = lazy(() => new Collection<number, SessionInfo | null>()); const getDefaultSessionStore = lazy(() => new Collection<number, SessionInfo | null>());

View File

@@ -1,3 +1,4 @@
import { esbuildPluginVersionInjector } from 'esbuild-plugin-version-injector';
import { createTsupConfig } from '../../tsup.config.js'; import { createTsupConfig } from '../../tsup.config.js';
export default createTsupConfig({ export default createTsupConfig({
@@ -6,4 +7,5 @@ export default createTsupConfig({
worker: 'src/strategies/sharding/worker.ts', worker: 'src/strategies/sharding/worker.ts',
}, },
external: ['zlib-sync'], external: ['zlib-sync'],
esbuildPlugins: [esbuildPluginVersionInjector()],
}); });

View File

@@ -15,6 +15,7 @@ export function createTsupConfig({
keepNames = true, keepNames = true,
dts = true, dts = true,
sourcemap = true, sourcemap = true,
esbuildPlugins = []
} = {}) { } = {}) {
return defineConfig({ return defineConfig({
entry, entry,
@@ -31,5 +32,6 @@ export function createTsupConfig({
keepNames, keepNames,
dts, dts,
sourcemap, sourcemap,
esbuildPlugins
}); });
} }

View File

@@ -2029,6 +2029,7 @@ __metadata:
cross-env: ^7.0.3 cross-env: ^7.0.3
discord-api-types: ^0.37.12 discord-api-types: ^0.37.12
downlevel-dts: ^0.10.1 downlevel-dts: ^0.10.1
esbuild-plugin-version-injector: ^1.0.0
eslint: ^8.24.0 eslint: ^8.24.0
eslint-config-neon: ^0.1.35 eslint-config-neon: ^0.1.35
fast-deep-equal: ^3.1.3 fast-deep-equal: ^3.1.3
@@ -2051,6 +2052,7 @@ __metadata:
"@vitest/coverage-c8": ^0.24.0 "@vitest/coverage-c8": ^0.24.0
cross-env: ^7.0.3 cross-env: ^7.0.3
downlevel-dts: ^0.10.1 downlevel-dts: ^0.10.1
esbuild-plugin-version-injector: ^1.0.0
eslint: ^8.24.0 eslint: ^8.24.0
eslint-config-neon: ^0.1.35 eslint-config-neon: ^0.1.35
prettier: ^2.7.1 prettier: ^2.7.1
@@ -2207,6 +2209,7 @@ __metadata:
cross-env: ^7.0.3 cross-env: ^7.0.3
discord-api-types: ^0.37.12 discord-api-types: ^0.37.12
downlevel-dts: ^0.10.1 downlevel-dts: ^0.10.1
esbuild-plugin-version-injector: ^1.0.0
eslint: ^8.24.0 eslint: ^8.24.0
eslint-config-neon: ^0.1.35 eslint-config-neon: ^0.1.35
file-type: ^18.0.0 file-type: ^18.0.0
@@ -2308,6 +2311,7 @@ __metadata:
cross-env: ^7.0.3 cross-env: ^7.0.3
discord-api-types: ^0.37.12 discord-api-types: ^0.37.12
downlevel-dts: ^0.10.1 downlevel-dts: ^0.10.1
esbuild-plugin-version-injector: ^1.0.0
eslint: ^8.24.0 eslint: ^8.24.0
eslint-config-neon: ^0.1.35 eslint-config-neon: ^0.1.35
jest: ^29.1.2 jest: ^29.1.2
@@ -2395,6 +2399,7 @@ __metadata:
cross-env: ^7.0.3 cross-env: ^7.0.3
discord-api-types: ^0.37.12 discord-api-types: ^0.37.12
downlevel-dts: ^0.10.1 downlevel-dts: ^0.10.1
esbuild-plugin-version-injector: ^1.0.0
eslint: ^8.24.0 eslint: ^8.24.0
eslint-config-neon: ^0.1.35 eslint-config-neon: ^0.1.35
mock-socket: ^9.1.5 mock-socket: ^9.1.5
@@ -8654,6 +8659,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"esbuild-plugin-version-injector@npm:^1.0.0":
version: 1.0.0
resolution: "esbuild-plugin-version-injector@npm:1.0.0"
dependencies:
"@sapphire/result": ^2.5.0
checksum: 2a6eb3f2b3d3d24c6ca8af28925ad8e6f6d0a75f41cdb089bd76c7a74fbd6948d8f64563aa58bd65751054a28be0cfc081a0f56102a1952a5ba4ac541c2ff336
languageName: node
linkType: hard
"esbuild-sunos-64@npm:0.14.47": "esbuild-sunos-64@npm:0.14.47":
version: 0.14.47 version: 0.14.47
resolution: "esbuild-sunos-64@npm:0.14.47" resolution: "esbuild-sunos-64@npm:0.14.47"