localizer and publisher better practices

This commit is contained in:
Jacob Nguyen
2024-06-14 11:37:11 -05:00
parent 1bcea21f89
commit dbab08407f
3 changed files with 20 additions and 19 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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),
}
}
});