mirror of
https://github.com/outline/outline.git
synced 2026-06-13 03:14:59 +03:00
091346dfe8
* wip * Remove obsolete snapshots * simplify * chore(test): Convert mocks to TypeScript and tighten fetch mock types Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Remove unneccessary patches * Migrate to msw instead of custom fetch mock * Address PR review comments - Split chained vi.useFakeTimers().setSystemTime() into separate calls. - Switch test setup to dynamic imports so EventEmitter.defaultMaxListeners assignment runs before module init (static imports were hoisted above it). - Drop redundant NODE_ENV guard in monkeyPatchSequelizeErrorsForJest; its sole caller already gates on env.isTest. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
25 lines
957 B
TypeScript
25 lines
957 B
TypeScript
import { Hook, PluginManager } from "@server/utils/PluginManager";
|
|
import { requireDirectory } from "@server/utils/fs";
|
|
import { createLazyRegistry } from "@server/utils/lazyRegistry";
|
|
import type BaseEmail from "./BaseEmail";
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- registry of heterogeneous template Props subtypes; BaseEmail<EmailProps> isn't assignable from BaseEmail<Subtype>.
|
|
const emails = createLazyRegistry<typeof BaseEmail<any>>(() => {
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
const registry: Record<string, typeof BaseEmail<any>> = {};
|
|
requireDirectory<{ default: typeof BaseEmail }>(__dirname).forEach(
|
|
([module, id]) => {
|
|
if (id === "index") {
|
|
return;
|
|
}
|
|
registry[id] = module.default;
|
|
}
|
|
);
|
|
PluginManager.getHooks(Hook.EmailTemplate).forEach((hook) => {
|
|
registry[hook.value.name] = hook.value;
|
|
});
|
|
return registry;
|
|
});
|
|
|
|
export default emails;
|