Independent-of-prod quality debt from PENDIENTE.md §2: - test: migrate broken Jest -> meteortesting:mocha. Tests rewritten to chai + Meteor 3 async APIs, moved to test/server/ (server-only). test/server/ 00-setup.test.js re-runs the collection2/accounts init that `meteor test` skips (no server/main.js). New comments method + mediaAnalyzers coverage. Dropped rest.test.js (removed meteor/http; covered by smoke/). 36 passing. - fix: scope FireContainer read by the URL _id on the archive route instead of a selector-less FiresCollection.findOne() (imports/ui/pages/Fires/Fires.js). - feat: rate-limit abusable publications via rateLimitSubscriptions (fireFrom* and comments.forReference 5/1000ms; geo subs 10/1000ms). - perf: append loading=async to the Google Maps loader URL (Gkeys.js). - deps: meteor-accounts-t9n 2.0 -> 2.6 (no gl build -> keep gl->es fallback, documented); add 3 missing gl/common.json keys (0 missing now). - deps: drop jest/babel/enzyme, add chai.
23 lines
785 B
JavaScript
23 lines
785 B
JavaScript
import { Meteor } from 'meteor/meteor';
|
|
import { DDPRateLimiter } from 'meteor/ddp-rate-limiter';
|
|
|
|
export default ({ methods, limit, timeRange }) => {
|
|
if (Meteor.isServer) {
|
|
DDPRateLimiter.addRule({
|
|
name(name) { return methods.indexOf(name) > -1; },
|
|
connectionId() { return true; },
|
|
}, limit, timeRange);
|
|
}
|
|
};
|
|
|
|
// Same idea for subscriptions. DDPRateLimiter matches subscribe calls only when
|
|
// the rule pins `type: 'subscription'`, so this is a separate helper.
|
|
export const rateLimitSubscriptions = ({ subscriptions, limit, timeRange }) => {
|
|
if (Meteor.isServer) {
|
|
DDPRateLimiter.addRule({
|
|
type: 'subscription',
|
|
name(name) { return subscriptions.indexOf(name) > -1; },
|
|
connectionId() { return true; },
|
|
}, limit, timeRange);
|
|
}
|
|
};
|