mirror of
https://github.com/sern-handler/tools
synced 2026-06-06 01:16:59 +00:00
localizer and publisher better practices
This commit is contained in:
@@ -93,10 +93,10 @@ export const localize = (root?: string) =>
|
||||
dfsApplyLocalization(module.options ?? [], deps, [resolvedRoot]);
|
||||
//@ts-ignore
|
||||
return controller.next({
|
||||
locals: {
|
||||
name_localizations: localizer.translationsFor(resolvedRoot+".name"),
|
||||
description_localizations: localizer.translationsFor(resolvedRoot+'.description')
|
||||
}
|
||||
locals: {
|
||||
nloc: localizer.translationsFor(resolvedRoot+".name"),
|
||||
dloc: localizer.translationsFor(resolvedRoot+'.description')
|
||||
}
|
||||
});
|
||||
} else {
|
||||
//@ts-ignore
|
||||
|
||||
@@ -19,7 +19,7 @@ NODE_ENV=<production|development>
|
||||
**Initializing the Publisher**
|
||||
```ts
|
||||
import { makeDependencies } from '@sern/handler';
|
||||
import { Publisher } from '@sern/localizer';
|
||||
import { Publisher } from '@sern/publisher';
|
||||
|
||||
await makeDependencies(({ add }) => {
|
||||
add('publisher', new Publisher());
|
||||
@@ -52,6 +52,9 @@ type ValidPublishOptions =
|
||||
| PublishConfig
|
||||
| (absPath: string, module: CommandModule) => PublishConfig
|
||||
```
|
||||
:::tip
|
||||
These types are exported under @sern/publisher
|
||||
:::
|
||||
|
||||
### Example: command published with integrationTypes
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ const makeDescription = (type: number, desc: string) => {
|
||||
return desc;
|
||||
};
|
||||
|
||||
const serializePermissions = (perms: unknown) => {
|
||||
const serializePerms = (perms: unknown) => {
|
||||
if(typeof perms === 'bigint' || typeof perms === 'number') {
|
||||
return perms.toString();
|
||||
}
|
||||
@@ -85,17 +85,12 @@ export class Publisher implements Init {
|
||||
//@ts-ignore shutup
|
||||
options: optionsTransformer(module?.options),
|
||||
default_member_permissions,
|
||||
integration_types: integration_types.map(
|
||||
(s: string) => {
|
||||
if(s === "Guild") return "0";
|
||||
else if (s == "User") return "1";
|
||||
else throw Error("IntegrationType is not one of Guild or User");
|
||||
}),
|
||||
integration_types,
|
||||
contexts,
|
||||
//@ts-ignore
|
||||
name_localizations: module.locals.name_localizations,
|
||||
name_localizations: module.locals.nloc,
|
||||
//@ts-ignore
|
||||
description_localizations: module.locals.description_localizations
|
||||
description_localizations: module.locals.dloc
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -195,6 +190,9 @@ export type ValidPublishOptions =
|
||||
| PublishConfig
|
||||
| ((absPath: string, module: CommandModule) => PublishConfig)
|
||||
|
||||
const IntegrationType = {
|
||||
Guild: '0', User: '1'
|
||||
}
|
||||
/**
|
||||
* the publishConfig plugin.
|
||||
* If your commandModule requires extra properties such as publishing for certain guilds, you would
|
||||
@@ -211,15 +209,15 @@ export const publishConfig = (config: ValidPublishOptions) => {
|
||||
if(typeof _config === 'function') {
|
||||
_config = _config(absPath, module);
|
||||
}
|
||||
const { contexts, defaultMemberPermissions, integrationTypes } = _config
|
||||
const { contexts, defaultMemberPermissions, integrationTypes:integration_types, guildIds } = _config
|
||||
//@ts-ignore
|
||||
return controller.next({
|
||||
locals: {
|
||||
publish: {
|
||||
guildIds: _config.guildIds,
|
||||
default_member_permissions: serializePermissions(defaultMemberPermissions),
|
||||
integration_types: integrationTypes,
|
||||
contexts
|
||||
guildIds,
|
||||
contexts,
|
||||
integration_types: integration_types?.map(i => Reflect.get(IntegrationType, i)),
|
||||
default_member_permissions: serializePerms(defaultMemberPermissions),
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user