MCPcopy
hub / github.com/logto-io/logto / buildMessageRateGuard

Function buildMessageRateGuard

packages/core/src/sentinel/message-rate-guard.ts:104–116  ·  view source on GitHub ↗
(queries: {
  sentinelActivities: MessageRateGuardQueries;
  logtoConfigs: Pick<LogtoConfigQueries, 'getMessageRateLimitOverride'>;
})

Source from the content-addressed store, hash-verified

102 * tenant config cache, so the common (no-override) path adds no per-send database hit.
103 */
104export const buildMessageRateGuard = async (queries: {
105 sentinelActivities: MessageRateGuardQueries;
106 logtoConfigs: Pick<LogtoConfigQueries, 'getMessageRateLimitOverride'>;
107}): Promise<MessageRateGuard> => {
108 // Fail open: a failed override read must not block a legitimate send, mirroring the guard's own
109 // best-effort count query. `trySafe` returns `undefined` on error, so we fall back to the default.
110 const override = await trySafe(queries.logtoConfigs.getMessageRateLimitOverride());
111 const policy: MessageRateLimitPolicy = override
112 ? { ...defaultMessageRateLimitPolicy, ...override }
113 : defaultMessageRateLimitPolicy;
114
115 return new MessageRateGuard(queries.sentinelActivities, policy);
116};
117
118/**
119 * Wraps a message send with the {@link MessageRateGuard}: rejects with a 429 before sending if the

Callers 7

sendEmailMethod · 0.85
verificationCodeRoutesFunction · 0.85
verificationRoutesFunction · 0.85
sendCodeFunction · 0.85
additionalRoutesFunction · 0.85
verificationCodeRoutesFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected