Merge branch 'ditto-ratelimiter' into 'main'

Make @ditto/ratelimiter its own package

See merge request soapbox-pub/ditto!675
This commit is contained in:
Alex Gleason 2025-02-18 19:17:17 +00:00
commit a6fbe4728d
10 changed files with 18 additions and 6 deletions

View file

@ -8,6 +8,7 @@
"./packages/lang", "./packages/lang",
"./packages/metrics", "./packages/metrics",
"./packages/policies", "./packages/policies",
"./packages/ratelimiter",
"./packages/translators", "./packages/translators",
"./packages/uploaders" "./packages/uploaders"
], ],

View file

@ -1,5 +1,6 @@
import { type DittoConf } from '@ditto/conf'; import { type DittoConf } from '@ditto/conf';
import { relayConnectionsGauge, relayEventsCounter, relayMessagesCounter } from '@ditto/metrics'; import { relayConnectionsGauge, relayEventsCounter, relayMessagesCounter } from '@ditto/metrics';
import { MemoryRateLimiter, MultiRateLimiter, type RateLimiter } from '@ditto/ratelimiter';
import { logi } from '@soapbox/logi'; import { logi } from '@soapbox/logi';
import { JsonValue } from '@std/json'; import { JsonValue } from '@std/json';
import { import {
@ -20,9 +21,6 @@ import { RelayError } from '@/RelayError.ts';
import { Storages } from '@/storages.ts'; import { Storages } from '@/storages.ts';
import { errorJson } from '@/utils/log.ts'; import { errorJson } from '@/utils/log.ts';
import { purifyEvent } from '@/utils/purify.ts'; import { purifyEvent } from '@/utils/purify.ts';
import { MemoryRateLimiter } from '@/utils/ratelimiter/MemoryRateLimiter.ts';
import { MultiRateLimiter } from '@/utils/ratelimiter/MultiRateLimiter.ts';
import { RateLimiter } from '@/utils/ratelimiter/types.ts';
import { Time } from '@/utils/time.ts'; import { Time } from '@/utils/time.ts';
/** Limit of initial events returned for a subscription. */ /** Limit of initial events returned for a subscription. */

View file

@ -1,5 +1,6 @@
import { RateLimitError } from './RateLimitError.ts'; import { RateLimitError } from './RateLimitError.ts';
import { RateLimiter, RateLimiterClient } from './types.ts';
import type { RateLimiter, RateLimiterClient } from './types.ts';
interface MemoryRateLimiterOpts { interface MemoryRateLimiterOpts {
limit: number; limit: number;

View file

@ -1,4 +1,4 @@
import { RateLimiter, RateLimiterClient } from './types.ts'; import type { RateLimiter, RateLimiterClient } from './types.ts';
export class MultiRateLimiter { export class MultiRateLimiter {
constructor(private limiters: RateLimiter[]) {} constructor(private limiters: RateLimiter[]) {}

View file

@ -1,4 +1,4 @@
import { RateLimiter, RateLimiterClient } from './types.ts'; import type { RateLimiter, RateLimiterClient } from './types.ts';
export class RateLimitError extends Error { export class RateLimitError extends Error {
constructor( constructor(

View file

@ -0,0 +1,7 @@
{
"name": "@ditto/ratelimiter",
"version": "1.1.0",
"exports": {
".": "./mod.ts"
}
}

View file

@ -0,0 +1,5 @@
export { MemoryRateLimiter } from './MemoryRateLimiter.ts';
export { MultiRateLimiter } from './MultiRateLimiter.ts';
export { RateLimitError } from './RateLimitError.ts';
export type { RateLimiter, RateLimiterClient } from './types.ts';