@wolfstar/shared-http-pieces 2.0.10 โ 2.0.11-next-20261007161851
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/register.js +2 -1
- package/dist/register.js.map +1 -1
- package/package.json +2 -2
package/dist/register.js
CHANGED
|
@@ -2,7 +2,7 @@ import { i as getRepository, n as isSentryInitialized, r as getInvite } from "./
|
|
|
2
2
|
import { captureException } from "@sentry/node";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
|
-
import { Client, Command, Listener, RegisterCommand, container } from "@wolfstar/http-framework";
|
|
5
|
+
import { Client, Command, Listener, RegisterCommand, container, isUserError } from "@wolfstar/http-framework";
|
|
6
6
|
import { InternationalizationHandler, applyLocalizedBuilder, getSupportedUserLanguageName, getSupportedUserLanguageT } from "@wolfstar/plugin-i18next";
|
|
7
7
|
import { EmbedBuilder, TimestampStyles, time } from "@discordjs/builders";
|
|
8
8
|
import { ButtonStyle, ComponentType, MessageFlags } from "discord-api-types/v10";
|
|
@@ -167,6 +167,7 @@ var SharedListener$1 = class extends Listener {
|
|
|
167
167
|
});
|
|
168
168
|
}
|
|
169
169
|
run(error) {
|
|
170
|
+
if (isUserError(error)) return;
|
|
170
171
|
captureException(error, (scope) => scope.setLevel("error").setTag("event", this.name));
|
|
171
172
|
}
|
|
172
173
|
};
|
package/dist/register.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","names":["SharedListener","SharedListener","SharedListener"],"sources":["../src/commands/info.ts","../src/listeners/SharedAutocompleteError.ts","../src/listeners/SharedCommandError.ts","../src/listeners/SharedError.ts","../src/listeners/SharedInteractionHandlerError.ts","../src/lib/register-i18n.ts","../src/register.ts"],"sourcesContent":["import { EmbedBuilder, time, TimestampStyles } from '@discordjs/builders';\nimport { Command, container, RegisterCommand } from '@wolfstar/http-framework';\nimport { applyLocalizedBuilder, getSupportedUserLanguageName, getSupportedUserLanguageT, type TFunction } from '@wolfstar/plugin-i18next';\nimport {\n\tButtonStyle,\n\tComponentType,\n\tMessageFlags,\n\ttype APIActionRowComponent,\n\ttype APIComponentInMessageActionRow,\n\ttype APIEmbedField\n} from 'discord-api-types/v10';\nimport { cpus, uptime, type CpuInfo } from 'node:os';\nimport { getInvite, getRepository } from '../lib/information.js';\n\ntype TranslateFn = TFunction;\n\n@RegisterCommand((builder) => applyLocalizedBuilder(builder, 'commands/shared:info'))\nexport class SharedCommand extends Command {\n\tpublic override chatInputRun(interaction: Command.ChatInputInteraction) {\n\t\tconst t = getSupportedUserLanguageT(interaction) as TranslateFn;\n\t\tconst lng = getSupportedUserLanguageName(interaction);\n\t\tconst embed = new EmbedBuilder()\n\t\t\t.setDescription(t('commands/shared:infoEmbedDescription'))\n\t\t\t.addFields(this.getUptimeStatistics(t), this.getServerUsageStatistics(t, lng));\n\t\tconst components = this.getComponents(t);\n\n\t\treturn interaction.reply({ embeds: [embed.toJSON()], components, flags: MessageFlags.Ephemeral });\n\t}\n\n\tprivate getUptimeStatistics(t: TranslateFn): APIEmbedField {\n\t\tconst now = Date.now();\n\t\tconst nowSeconds = Math.round(now / 1000);\n\n\t\treturn {\n\t\t\tname: t('commands/shared:infoFieldUptimeTitle'),\n\t\t\tvalue: t('commands/shared:infoFieldUptimeValue', {\n\t\t\t\thost: time(Math.round(nowSeconds - uptime()), TimestampStyles.RelativeTime),\n\t\t\t\tclient: time(Math.round(nowSeconds - process.uptime()), TimestampStyles.RelativeTime)\n\t\t\t})\n\t\t};\n\t}\n\n\tprivate getServerUsageStatistics(t: TranslateFn, lng: string): APIEmbedField {\n\t\tconst usage = process.memoryUsage();\n\n\t\treturn {\n\t\t\tname: t('commands/shared:infoFieldServerUsageTitle'),\n\t\t\tvalue: t('commands/shared:infoFieldServerUsageValue', {\n\t\t\t\tcpu: cpus().map(SharedCommand.formatCpuInfo.bind(null)).join(' | '),\n\t\t\t\theapUsed: (usage.heapUsed / 1048576).toLocaleString(lng, { maximumFractionDigits: 2 }),\n\t\t\t\theapTotal: (usage.heapTotal / 1048576).toLocaleString(lng, { maximumFractionDigits: 2 })\n\t\t\t})\n\t\t};\n\t}\n\n\tprivate getComponents(t: TranslateFn) {\n\t\tconst url = getInvite();\n\t\tconst support = this.getSupportComponent(t);\n\t\tconst github = this.getGitHubComponent(t);\n\t\tconst donate = this.getDonateComponent(t);\n\t\tconst data = url\n\t\t\t? [this.getActionRow(support, this.getInviteComponent(t, url)), this.getActionRow(github, donate)]\n\t\t\t: [this.getActionRow(support, github, donate)];\n\n\t\treturn data;\n\t}\n\n\tprivate getActionRow(...components: APIComponentInMessageActionRow[]): APIActionRowComponent<APIComponentInMessageActionRow> {\n\t\treturn { type: ComponentType.ActionRow, components };\n\t}\n\n\tprivate getSupportComponent(t: TranslateFn): APIComponentInMessageActionRow {\n\t\treturn {\n\t\t\ttype: ComponentType.Button,\n\t\t\tstyle: ButtonStyle.Link,\n\t\t\tlabel: t('commands/shared:infoButtonSupport'),\n\t\t\temoji: { name: '๐' },\n\t\t\turl: 'https://discord.gg/6gakFR2'\n\t\t};\n\t}\n\n\tprivate getInviteComponent(t: TranslateFn, url: string): APIComponentInMessageActionRow {\n\t\treturn {\n\t\t\ttype: ComponentType.Button,\n\t\t\tstyle: ButtonStyle.Link,\n\t\t\tlabel: t('commands/shared:infoButtonInvite'),\n\t\t\temoji: { name: '๐' },\n\t\t\turl\n\t\t};\n\t}\n\n\tprivate getGitHubComponent(t: TranslateFn): APIComponentInMessageActionRow {\n\t\treturn {\n\t\t\ttype: ComponentType.Button,\n\t\t\tstyle: ButtonStyle.Link,\n\t\t\tlabel: t('commands/shared:infoButtonGitHub'),\n\t\t\temoji: { id: '950888087188283422', name: 'github2' },\n\t\t\turl: getRepository()\n\t\t};\n\t}\n\n\tprivate getDonateComponent(t: TranslateFn): APIComponentInMessageActionRow {\n\t\treturn {\n\t\t\ttype: ComponentType.Button,\n\t\t\tstyle: ButtonStyle.Link,\n\t\t\tlabel: t('commands/shared:infoButtonDonate'),\n\t\t\temoji: { name: '๐งก' },\n\t\t\turl: 'https://donate.wolfstar.rocks'\n\t\t};\n\t}\n\n\tprivate static formatCpuInfo({ times }: CpuInfo) {\n\t\treturn `${Math.round(((times.user + times.nice + times.sys + times.irq) / times.idle) * 10000) / 100}%`;\n\t}\n}\n\nvoid container.stores.loadPiece({ name: 'info', piece: SharedCommand as any, store: 'commands' });\n","import { captureException } from '@sentry/node';\nimport { Listener, container, type ClientEventAutocompleteContext, type ClientEvents } from '@wolfstar/http-framework';\nimport { isSentryInitialized } from '../lib/sentry.js';\n\nexport class SharedListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext, options: Listener.Options) {\n\t\tsuper(context, { ...options, event: 'autocompleteError' satisfies keyof ClientEvents, enabled: isSentryInitialized() });\n\t}\n\n\tpublic run(error: unknown, context: ClientEventAutocompleteContext) {\n\t\tcaptureException(error, (scope) => scope.setLevel('error').setTag('event', this.name).setExtra('command', context.command.name));\n\t}\n}\n\nvoid container.stores.loadPiece({ name: 'SharedAutocompleteError', piece: SharedListener as any, store: 'listeners' });\n","import { captureException } from '@sentry/node';\nimport { Listener, container, type ClientEventCommandContext, type ClientEvents } from '@wolfstar/http-framework';\nimport { isSentryInitialized } from '../lib/sentry.js';\n\nexport class SharedListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext, options: Listener.Options) {\n\t\tsuper(context, { ...options, event: 'commandError' satisfies keyof ClientEvents, enabled: isSentryInitialized() });\n\t}\n\n\tpublic run(error: unknown, context: ClientEventCommandContext) {\n\t\tcaptureException(error, (scope) => scope.setLevel('error').setTag('event', this.name).setExtra('command', context.command.name));\n\t}\n}\n\nvoid container.stores.loadPiece({ name: 'SharedCommandError', piece: SharedListener as any, store: 'listeners' });\n","import { captureException } from '@sentry/node';\nimport { Listener, container, type ClientEvents } from '@wolfstar/http-framework';\nimport { isSentryInitialized } from '../lib/sentry.js';\n\nexport class SharedListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext, options: Listener.Options) {\n\t\tsuper(context, { ...options, event: 'error' satisfies keyof ClientEvents, enabled: isSentryInitialized() });\n\t}\n\n\tpublic run(error: unknown) {\n\t\tcaptureException(error, (scope) => scope.setLevel('error').setTag('event', this.name));\n\t}\n}\n\nvoid container.stores.loadPiece({ name: 'SharedError', piece: SharedListener as any, store: 'listeners' });\n","import { captureException } from '@sentry/node';\nimport { Listener, container, type ClientEventInteractionHandlerContext, type ClientEvents } from '@wolfstar/http-framework';\nimport { isSentryInitialized } from '../lib/sentry.js';\n\nexport class SharedListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext, options: Listener.Options) {\n\t\tsuper(context, { ...options, event: 'interactionHandlerError' satisfies keyof ClientEvents, enabled: isSentryInitialized() });\n\t}\n\n\tpublic run(error: unknown, context: ClientEventInteractionHandlerContext) {\n\t\tcaptureException(error, (scope) => scope.setLevel('error').setTag('event', this.name).setExtra('handler', context.handler.name));\n\t}\n}\n\nvoid container.stores.loadPiece({ name: 'SharedInteractionHandlerError', piece: SharedListener as any, store: 'listeners' });\n","import { getRootData } from '@sapphire/pieces';\nimport type { InternationalizationOptions } from '@wolfstar/plugin-i18next';\nimport type { InitOptions } from 'i18next';\nimport { join } from 'node:path';\n\nexport const sharedNamespace = 'commands/shared';\n\nfunction addSharedNamespace(options: InitOptions | undefined, discoveredNamespaces: string[]): InitOptions {\n\tconst configuredNamespaces = options?.ns === undefined ? [] : [options.ns].flat();\n\n\treturn {\n\t\t...options,\n\t\tns: [...new Set([...discoveredNamespaces, ...configuredNamespaces, sharedNamespace])]\n\t};\n}\n\n/**\n * Adds this package's locales without losing locales and namespaces discovered by the consumer.\n *\n * `@wolfstar/plugin-i18next@2` lets `backend.paths` replace its generated consumer path and only\n * discovers namespaces below `defaultLanguageDirectory`. Supplying both values explicitly keeps\n * the consumer resources and makes this package's namespace available to i18next.\n */\nexport function registerSharedLocales(i18n: InternationalizationOptions, localesPath: string): InternationalizationOptions {\n\tconst languagesDirectory = i18n.defaultLanguageDirectory ?? join(getRootData().root, 'languages');\n\tconst consumerLocalesPath = join(languagesDirectory, '{{lng}}', '{{ns}}.json');\n\tconst configuredI18next = i18n.i18next;\n\n\treturn {\n\t\t...i18n,\n\t\tbackend: {\n\t\t\t...i18n.backend,\n\t\t\tpaths: [...new Set([consumerLocalesPath, ...(i18n.backend?.paths ?? []), localesPath])]\n\t\t},\n\t\ti18next(namespaces, languages) {\n\t\t\tconst options = typeof configuredI18next === 'function' ? configuredI18next(namespaces, languages) : configuredI18next;\n\t\t\treturn addSharedNamespace(options, namespaces);\n\t\t}\n\t};\n}\n","import { Client, container } from '@wolfstar/http-framework';\nimport { InternationalizationHandler } from '@wolfstar/plugin-i18next';\nimport { join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport './commands/_load.js';\nimport './listeners/_load.js';\nimport { registerSharedLocales } from './lib/register-i18n.js';\n\n/**\n * Path pattern for this package's bundled locales, in the format\n * `@wolfstar/plugin-i18next` expects for `i18n.backend.paths`.\n */\nexport const localesPath = join(fileURLToPath(new URL('../src/locales', import.meta.url)), '{{lng}}', '{{ns}}.json');\n\n/**\n * `@wolfstar/plugin-i18next` reads `Client`'s `i18n` option exactly once, in its own\n * `preGenericsInitialization` hook, and has no API to register extra locale directories\n * afterwards. Hooks run in registration order, so registering this one *before* importing\n * the plugin's `register` entrypoint below guarantees it runs first and can splice this\n * package's locales into `options.i18n.backend.paths` before the plugin builds its\n * `InternationalizationHandler` โ consumers that only import this module keep working\n * without having to list `localesPath` in their own `Client` config.\n *\n * That ordering only holds when this module is evaluated first. When the plugin's `register`\n * entrypoint is imported earlier (the Stars CLI prepends it to the entry of every project that\n * depends on the plugin), its hook runs first and has already built the handler from the\n * original options. The handler is then rebuilt from the merged ones: it only reads its options\n * in the constructor and is initialized later, in the plugin's `preLoad` hook, which reads\n * `container.i18n` at call time.\n */\nClient.plugins.registerPreGenericsInitializationHook((options) => {\n\tconst { i18n } = options;\n\tif (!i18n) return;\n\toptions.i18n = registerSharedLocales(i18n, localesPath);\n\tif (container.i18n) container.i18n = new InternationalizationHandler(options.i18n);\n}, '@wolfstar/shared-http-pieces');\n\n// A dynamic import, not a static one: static imports are hoisted above the hook\n// registration above, which would let the plugin's own hook register โ and run โ first.\nawait import('@wolfstar/plugin-i18next/register');\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"register.js","names":["SharedListener","SharedListener","SharedListener"],"sources":["../src/commands/info.ts","../src/listeners/SharedAutocompleteError.ts","../src/listeners/SharedCommandError.ts","../src/listeners/SharedError.ts","../src/listeners/SharedInteractionHandlerError.ts","../src/lib/register-i18n.ts","../src/register.ts"],"sourcesContent":["import { EmbedBuilder, time, TimestampStyles } from '@discordjs/builders';\nimport { Command, container, RegisterCommand } from '@wolfstar/http-framework';\nimport { applyLocalizedBuilder, getSupportedUserLanguageName, getSupportedUserLanguageT, type TFunction } from '@wolfstar/plugin-i18next';\nimport {\n\tButtonStyle,\n\tComponentType,\n\tMessageFlags,\n\ttype APIActionRowComponent,\n\ttype APIComponentInMessageActionRow,\n\ttype APIEmbedField\n} from 'discord-api-types/v10';\nimport { cpus, uptime, type CpuInfo } from 'node:os';\nimport { getInvite, getRepository } from '../lib/information.js';\n\ntype TranslateFn = TFunction;\n\n@RegisterCommand((builder) => applyLocalizedBuilder(builder, 'commands/shared:info'))\nexport class SharedCommand extends Command {\n\tpublic override chatInputRun(interaction: Command.ChatInputInteraction) {\n\t\tconst t = getSupportedUserLanguageT(interaction) as TranslateFn;\n\t\tconst lng = getSupportedUserLanguageName(interaction);\n\t\tconst embed = new EmbedBuilder()\n\t\t\t.setDescription(t('commands/shared:infoEmbedDescription'))\n\t\t\t.addFields(this.getUptimeStatistics(t), this.getServerUsageStatistics(t, lng));\n\t\tconst components = this.getComponents(t);\n\n\t\treturn interaction.reply({ embeds: [embed.toJSON()], components, flags: MessageFlags.Ephemeral });\n\t}\n\n\tprivate getUptimeStatistics(t: TranslateFn): APIEmbedField {\n\t\tconst now = Date.now();\n\t\tconst nowSeconds = Math.round(now / 1000);\n\n\t\treturn {\n\t\t\tname: t('commands/shared:infoFieldUptimeTitle'),\n\t\t\tvalue: t('commands/shared:infoFieldUptimeValue', {\n\t\t\t\thost: time(Math.round(nowSeconds - uptime()), TimestampStyles.RelativeTime),\n\t\t\t\tclient: time(Math.round(nowSeconds - process.uptime()), TimestampStyles.RelativeTime)\n\t\t\t})\n\t\t};\n\t}\n\n\tprivate getServerUsageStatistics(t: TranslateFn, lng: string): APIEmbedField {\n\t\tconst usage = process.memoryUsage();\n\n\t\treturn {\n\t\t\tname: t('commands/shared:infoFieldServerUsageTitle'),\n\t\t\tvalue: t('commands/shared:infoFieldServerUsageValue', {\n\t\t\t\tcpu: cpus().map(SharedCommand.formatCpuInfo.bind(null)).join(' | '),\n\t\t\t\theapUsed: (usage.heapUsed / 1048576).toLocaleString(lng, { maximumFractionDigits: 2 }),\n\t\t\t\theapTotal: (usage.heapTotal / 1048576).toLocaleString(lng, { maximumFractionDigits: 2 })\n\t\t\t})\n\t\t};\n\t}\n\n\tprivate getComponents(t: TranslateFn) {\n\t\tconst url = getInvite();\n\t\tconst support = this.getSupportComponent(t);\n\t\tconst github = this.getGitHubComponent(t);\n\t\tconst donate = this.getDonateComponent(t);\n\t\tconst data = url\n\t\t\t? [this.getActionRow(support, this.getInviteComponent(t, url)), this.getActionRow(github, donate)]\n\t\t\t: [this.getActionRow(support, github, donate)];\n\n\t\treturn data;\n\t}\n\n\tprivate getActionRow(...components: APIComponentInMessageActionRow[]): APIActionRowComponent<APIComponentInMessageActionRow> {\n\t\treturn { type: ComponentType.ActionRow, components };\n\t}\n\n\tprivate getSupportComponent(t: TranslateFn): APIComponentInMessageActionRow {\n\t\treturn {\n\t\t\ttype: ComponentType.Button,\n\t\t\tstyle: ButtonStyle.Link,\n\t\t\tlabel: t('commands/shared:infoButtonSupport'),\n\t\t\temoji: { name: '๐' },\n\t\t\turl: 'https://discord.gg/6gakFR2'\n\t\t};\n\t}\n\n\tprivate getInviteComponent(t: TranslateFn, url: string): APIComponentInMessageActionRow {\n\t\treturn {\n\t\t\ttype: ComponentType.Button,\n\t\t\tstyle: ButtonStyle.Link,\n\t\t\tlabel: t('commands/shared:infoButtonInvite'),\n\t\t\temoji: { name: '๐' },\n\t\t\turl\n\t\t};\n\t}\n\n\tprivate getGitHubComponent(t: TranslateFn): APIComponentInMessageActionRow {\n\t\treturn {\n\t\t\ttype: ComponentType.Button,\n\t\t\tstyle: ButtonStyle.Link,\n\t\t\tlabel: t('commands/shared:infoButtonGitHub'),\n\t\t\temoji: { id: '950888087188283422', name: 'github2' },\n\t\t\turl: getRepository()\n\t\t};\n\t}\n\n\tprivate getDonateComponent(t: TranslateFn): APIComponentInMessageActionRow {\n\t\treturn {\n\t\t\ttype: ComponentType.Button,\n\t\t\tstyle: ButtonStyle.Link,\n\t\t\tlabel: t('commands/shared:infoButtonDonate'),\n\t\t\temoji: { name: '๐งก' },\n\t\t\turl: 'https://donate.wolfstar.rocks'\n\t\t};\n\t}\n\n\tprivate static formatCpuInfo({ times }: CpuInfo) {\n\t\treturn `${Math.round(((times.user + times.nice + times.sys + times.irq) / times.idle) * 10000) / 100}%`;\n\t}\n}\n\nvoid container.stores.loadPiece({ name: 'info', piece: SharedCommand as any, store: 'commands' });\n","import { captureException } from '@sentry/node';\nimport { Listener, container, type ClientEventAutocompleteContext, type ClientEvents } from '@wolfstar/http-framework';\nimport { isSentryInitialized } from '../lib/sentry.js';\n\nexport class SharedListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext, options: Listener.Options) {\n\t\tsuper(context, { ...options, event: 'autocompleteError' satisfies keyof ClientEvents, enabled: isSentryInitialized() });\n\t}\n\n\tpublic run(error: unknown, context: ClientEventAutocompleteContext) {\n\t\tcaptureException(error, (scope) => scope.setLevel('error').setTag('event', this.name).setExtra('command', context.command.name));\n\t}\n}\n\nvoid container.stores.loadPiece({ name: 'SharedAutocompleteError', piece: SharedListener as any, store: 'listeners' });\n","import { captureException } from '@sentry/node';\nimport { Listener, container, type ClientEventCommandContext, type ClientEvents } from '@wolfstar/http-framework';\nimport { isSentryInitialized } from '../lib/sentry.js';\n\nexport class SharedListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext, options: Listener.Options) {\n\t\tsuper(context, { ...options, event: 'commandError' satisfies keyof ClientEvents, enabled: isSentryInitialized() });\n\t}\n\n\tpublic run(error: unknown, context: ClientEventCommandContext) {\n\t\tcaptureException(error, (scope) => scope.setLevel('error').setTag('event', this.name).setExtra('command', context.command.name));\n\t}\n}\n\nvoid container.stores.loadPiece({ name: 'SharedCommandError', piece: SharedListener as any, store: 'listeners' });\n","import { captureException } from '@sentry/node';\nimport { Listener, container, isUserError, type ClientEvents } from '@wolfstar/http-framework';\nimport { isSentryInitialized } from '../lib/sentry.js';\n\nexport class SharedListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext, options: Listener.Options) {\n\t\tsuper(context, { ...options, event: 'error' satisfies keyof ClientEvents, enabled: isSentryInitialized() });\n\t}\n\n\tpublic run(error: unknown) {\n\t\t// A `UserError` is an expected failure that is emitted as a `*Denied` event too, not a bug to report.\n\t\tif (isUserError(error)) return;\n\n\t\tcaptureException(error, (scope) => scope.setLevel('error').setTag('event', this.name));\n\t}\n}\n\nvoid container.stores.loadPiece({ name: 'SharedError', piece: SharedListener as any, store: 'listeners' });\n","import { captureException } from '@sentry/node';\nimport { Listener, container, type ClientEventInteractionHandlerContext, type ClientEvents } from '@wolfstar/http-framework';\nimport { isSentryInitialized } from '../lib/sentry.js';\n\nexport class SharedListener extends Listener {\n\tpublic constructor(context: Listener.LoaderContext, options: Listener.Options) {\n\t\tsuper(context, { ...options, event: 'interactionHandlerError' satisfies keyof ClientEvents, enabled: isSentryInitialized() });\n\t}\n\n\tpublic run(error: unknown, context: ClientEventInteractionHandlerContext) {\n\t\tcaptureException(error, (scope) => scope.setLevel('error').setTag('event', this.name).setExtra('handler', context.handler.name));\n\t}\n}\n\nvoid container.stores.loadPiece({ name: 'SharedInteractionHandlerError', piece: SharedListener as any, store: 'listeners' });\n","import { getRootData } from '@sapphire/pieces';\nimport type { InternationalizationOptions } from '@wolfstar/plugin-i18next';\nimport type { InitOptions } from 'i18next';\nimport { join } from 'node:path';\n\nexport const sharedNamespace = 'commands/shared';\n\nfunction addSharedNamespace(options: InitOptions | undefined, discoveredNamespaces: string[]): InitOptions {\n\tconst configuredNamespaces = options?.ns === undefined ? [] : [options.ns].flat();\n\n\treturn {\n\t\t...options,\n\t\tns: [...new Set([...discoveredNamespaces, ...configuredNamespaces, sharedNamespace])]\n\t};\n}\n\n/**\n * Adds this package's locales without losing locales and namespaces discovered by the consumer.\n *\n * `@wolfstar/plugin-i18next@2` lets `backend.paths` replace its generated consumer path and only\n * discovers namespaces below `defaultLanguageDirectory`. Supplying both values explicitly keeps\n * the consumer resources and makes this package's namespace available to i18next.\n */\nexport function registerSharedLocales(i18n: InternationalizationOptions, localesPath: string): InternationalizationOptions {\n\tconst languagesDirectory = i18n.defaultLanguageDirectory ?? join(getRootData().root, 'languages');\n\tconst consumerLocalesPath = join(languagesDirectory, '{{lng}}', '{{ns}}.json');\n\tconst configuredI18next = i18n.i18next;\n\n\treturn {\n\t\t...i18n,\n\t\tbackend: {\n\t\t\t...i18n.backend,\n\t\t\tpaths: [...new Set([consumerLocalesPath, ...(i18n.backend?.paths ?? []), localesPath])]\n\t\t},\n\t\ti18next(namespaces, languages) {\n\t\t\tconst options = typeof configuredI18next === 'function' ? configuredI18next(namespaces, languages) : configuredI18next;\n\t\t\treturn addSharedNamespace(options, namespaces);\n\t\t}\n\t};\n}\n","import { Client, container } from '@wolfstar/http-framework';\nimport { InternationalizationHandler } from '@wolfstar/plugin-i18next';\nimport { join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport './commands/_load.js';\nimport './listeners/_load.js';\nimport { registerSharedLocales } from './lib/register-i18n.js';\n\n/**\n * Path pattern for this package's bundled locales, in the format\n * `@wolfstar/plugin-i18next` expects for `i18n.backend.paths`.\n */\nexport const localesPath = join(fileURLToPath(new URL('../src/locales', import.meta.url)), '{{lng}}', '{{ns}}.json');\n\n/**\n * `@wolfstar/plugin-i18next` reads `Client`'s `i18n` option exactly once, in its own\n * `preGenericsInitialization` hook, and has no API to register extra locale directories\n * afterwards. Hooks run in registration order, so registering this one *before* importing\n * the plugin's `register` entrypoint below guarantees it runs first and can splice this\n * package's locales into `options.i18n.backend.paths` before the plugin builds its\n * `InternationalizationHandler` โ consumers that only import this module keep working\n * without having to list `localesPath` in their own `Client` config.\n *\n * That ordering only holds when this module is evaluated first. When the plugin's `register`\n * entrypoint is imported earlier (the Stars CLI prepends it to the entry of every project that\n * depends on the plugin), its hook runs first and has already built the handler from the\n * original options. The handler is then rebuilt from the merged ones: it only reads its options\n * in the constructor and is initialized later, in the plugin's `preLoad` hook, which reads\n * `container.i18n` at call time.\n */\nClient.plugins.registerPreGenericsInitializationHook((options) => {\n\tconst { i18n } = options;\n\tif (!i18n) return;\n\toptions.i18n = registerSharedLocales(i18n, localesPath);\n\tif (container.i18n) container.i18n = new InternationalizationHandler(options.i18n);\n}, '@wolfstar/shared-http-pieces');\n\n// A dynamic import, not a static one: static imports are hoisted above the hook\n// registration above, which would let the plugin's own hook register โ and run โ first.\nawait import('@wolfstar/plugin-i18next/register');\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wolfstar/shared-http-pieces",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.11-next-20261007161851",
|
|
4
4
|
"description": "The common pieces for Star Network's HTTP-only bots",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"api",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@sapphire/pieces": "^4.4.1",
|
|
53
53
|
"@sentry/node": "^10.75.3",
|
|
54
54
|
"@wolfstar/env-utilities": "^2.3.1",
|
|
55
|
-
"@wolfstar/http-framework": "^6.
|
|
55
|
+
"@wolfstar/http-framework": "^6.3.0-next-20261007161851",
|
|
56
56
|
"@wolfstar/plugin-i18next": "2.1.1",
|
|
57
57
|
"discord-api-types": "^0.38.8",
|
|
58
58
|
"i18next": "^26.4.2",
|