pipework 0.134.0 → 0.135.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.135.0
4
+
5
+ - **Added: a rate-limit window across every caller of a class, and several windows per key** (#641). A limit class takes `total` — counted across all callers of the class, refused like the others with `onRefused` told `limit: 'total'`, `key: '*'` — and `perUser`, `perTenant`, `perAddress` and `total` each take one window or an array of windows with distinct `windowSeconds` (say 10 an hour and 30 a day per address). A request is counted against every window of a key and refused if any is over; each window over gets its own `onRefused` event, and the 429's `Retry-After` is the longest of their waits. Keys are counted perUser, perTenant, perAddress, total in turn, stopping at the first key that refuses, so a caller over its own limit does not spend the total; counting is still after auth. A key with a single window keeps its count row, so existing counts carry over. An empty array, or two windows of the same length in one key, throw at startup.
6
+
3
7
  ## 0.134.0
4
8
 
5
9
  - **Added: deleting an access link, its code and its uses** (#638). `accessLinks` `delete(id)` returns whether this call deleted the link; `deleteForTarget({ type, id })` deletes every link of the tenant for that target, revoked and expired included, and returns how many. Each runs in one transaction (the caller's when there is one), removing the `access_link`, `access_link_code` and `access_link_use` rows, and writes one `AccessLink:delete` audit record per link with only `{ id, target, usesDeleted }`. The link's earlier audit records are left as they are. Afterwards `get`/`list`/`listPage` omit the link, and its code and use tokens return `not-found`; a use begun before the delete fails to complete with `not-found`.
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limit-classes.d.ts","sourceRoot":"","sources":["../../../src/request/http/rate-limit-classes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAO/C,OAAO,KAAK,EAAE,sBAAsB,EAAyC,MAAM,YAAY,CAAA;AAG/F,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;gCAI1B,CAAA;AAKF,MAAM,WAAW,gBAAgB;IAC/B,sFAAsF;IACtF,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IACjE,qFAAqF;IACrF,KAAK,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAChH;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,sBAAsB,GAAG,gBAAgB,CA2G3G"}
1
+ {"version":3,"file":"rate-limit-classes.d.ts","sourceRoot":"","sources":["../../../src/request/http/rate-limit-classes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAO/C,OAAO,KAAK,EAAE,sBAAsB,EAA0D,MAAM,YAAY,CAAA;AAIhH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;gCAI1B,CAAA;AASF,MAAM,WAAW,gBAAgB;IAC/B,sFAAsF;IACtF,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IACjE,qFAAqF;IACrF,KAAK,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAChH;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,sBAAsB,GAAG,gBAAgB,CAmI3G"}
@@ -3,22 +3,41 @@ import { sql } from '../../data/db/sql.js';
3
3
  import { define } from '../../data/domain/index.js';
4
4
  import { field } from '../../data/domain/field.js';
5
5
  import { TooManyRequestsError } from '../../core/errors/index.js';
6
- // Counts behind `ServerConfig.rateLimits`; `key` is '<class>:<perUser|perTenant|perAddress>:<value>'.
6
+ // Counts behind `ServerConfig.rateLimits`; `key` is '<class>:<limit>:<value>' for a key with one window,
7
+ // '<class>:<limit>:<windowSeconds>s:<value>' for a key with an array, and value '*' for `total`.
7
8
  export const rateLimitCounts = define('pipework_rate_limit_counts', {
8
9
  key: field.text().primaryKey(),
9
10
  count: field.integer().default(0),
10
11
  windowStart: field.timestamp().default('now'),
11
12
  });
12
- const WINDOWS = ['perUser', 'perTenant', 'perAddress'];
13
+ const WINDOWS = ['perUser', 'perTenant', 'perAddress', 'total'];
14
+ function windowsOf(win) {
15
+ return win === undefined ? [] : Array.isArray(win) ? win : [win];
16
+ }
13
17
  const CLEANUP_EVERY_MS = 60_000;
14
18
  export function createRateLimitClasses(instance, config) {
15
19
  const classes = config.classes;
16
20
  let longest = 0;
17
- for (const cls of Object.values(classes)) {
21
+ for (const [name, cls] of Object.entries(classes)) {
18
22
  for (const w of WINDOWS) {
19
- const win = cls[w];
20
- if (win !== undefined && win.windowSeconds > longest)
21
- longest = win.windowSeconds;
23
+ const raw = cls[w];
24
+ if (Array.isArray(raw)) {
25
+ const seen = new Set();
26
+ if (raw.length === 0) {
27
+ throw new Error(`[pipework] rateLimits.classes.${name}.${w} is an empty array.\n` +
28
+ ' Fix: Give it at least one window, or remove the key.');
29
+ }
30
+ for (const win of raw) {
31
+ if (seen.has(win.windowSeconds)) {
32
+ throw new Error(`[pipework] rateLimits.classes.${name}.${w} has two windows of ${win.windowSeconds} seconds.\n` +
33
+ ' Fix: Keep one window for each windowSeconds in a key.');
34
+ }
35
+ seen.add(win.windowSeconds);
36
+ }
37
+ }
38
+ for (const win of windowsOf(raw))
39
+ if (win.windowSeconds > longest)
40
+ longest = win.windowSeconds;
22
41
  }
23
42
  }
24
43
  let lastCleanup = 0;
@@ -92,25 +111,32 @@ export function createRateLimitClasses(instance, config) {
92
111
  perUser: userId,
93
112
  perTenant: ctx.tenant ?? null,
94
113
  perAddress: req.ip,
114
+ total: '*',
95
115
  };
96
116
  const db = database();
97
117
  const refused = [];
98
118
  for (const limit of WINDOWS) {
99
- const win = cls[limit];
119
+ const raw = cls[limit];
100
120
  const value = values[limit];
101
- if (win === undefined || value === null)
121
+ if (raw === undefined || value === null)
102
122
  continue;
103
- const got = await count(db, `${resolved.name}:${limit}:${value}`, win.windowSeconds);
104
- if (got.count > win.max) {
105
- refused.push({
106
- class: resolved.name, limit, key: value, tenantId: ctx.tenant ?? null, userId,
107
- requestId: ctx.requestId, traceId: ctx.trace?.id ?? null, count: got.count, max: win.max,
108
- windowSeconds: win.windowSeconds, retryAfterSeconds: got.retryAfter, route,
109
- });
110
- // A refused request is not counted against the wider windows: one user over
111
- // their own limit does not spend the tenant's.
112
- break;
123
+ const wins = windowsOf(raw);
124
+ const many = Array.isArray(raw);
125
+ for (const win of wins) {
126
+ const key = many ? `${resolved.name}:${limit}:${win.windowSeconds}s:${value}` : `${resolved.name}:${limit}:${value}`;
127
+ const got = await count(db, key, win.windowSeconds);
128
+ if (got.count > win.max) {
129
+ refused.push({
130
+ class: resolved.name, limit, key: value, tenantId: ctx.tenant ?? null, userId,
131
+ requestId: ctx.requestId, traceId: ctx.trace?.id ?? null, count: got.count, max: win.max,
132
+ windowSeconds: win.windowSeconds, retryAfterSeconds: got.retryAfter, route,
133
+ });
134
+ }
113
135
  }
136
+ // A refused request is not counted against the later keys: one user over
137
+ // their own limit does not spend the tenant's.
138
+ if (refused.length > 0)
139
+ break;
114
140
  }
115
141
  cleanup(db, req);
116
142
  if (refused.length === 0)
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limit-classes.js","sourceRoot":"","sources":["../../../src/request/http/rate-limit-classes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rate-limit-classes.js","sourceRoot":"","sources":["../../../src/request/http/rate-limit-classes.ts"],"names":[],"mappings":"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"}
@@ -77,19 +77,24 @@ export interface RateLimitWindow {
77
77
  max: number;
78
78
  windowSeconds: number;
79
79
  }
80
- /** The three keys a limit class can count by. */
81
- export type RateLimitWindowName = 'perUser' | 'perTenant' | 'perAddress';
82
- /** A named limit class: any of a per-user, per-tenant and per-address window, each counted on its own. */
80
+ /** The keys a limit class can count by; `total` counts every caller of the class together. */
81
+ export type RateLimitWindowName = 'perUser' | 'perTenant' | 'perAddress' | 'total';
82
+ /**
83
+ * A named limit class: any of a per-user, per-tenant, per-address and total window, each counted on its own.
84
+ * Each key takes one window or an array of windows (distinct `windowSeconds`); a request is counted against
85
+ * all of a key's windows and refused if any is over.
86
+ */
83
87
  export interface RateLimitClass {
84
- perUser?: RateLimitWindow;
85
- perTenant?: RateLimitWindow;
86
- perAddress?: RateLimitWindow;
88
+ perUser?: RateLimitWindow | RateLimitWindow[];
89
+ perTenant?: RateLimitWindow | RateLimitWindow[];
90
+ perAddress?: RateLimitWindow | RateLimitWindow[];
91
+ total?: RateLimitWindow | RateLimitWindow[];
87
92
  }
88
93
  /** What `onRefused` is told about one refused window of one request. */
89
94
  export interface RateLimitRefusal {
90
95
  class: string;
91
96
  limit: RateLimitWindowName;
92
- /** The user id, tenant id or address that was counted. */
97
+ /** The user id, tenant id or address that was counted; '*' for `total`. */
93
98
  key: string;
94
99
  /** The request's tenant, whichever window refused; null when it has none. */
95
100
  tenantId: string | null;
@@ -112,8 +117,8 @@ export interface RateLimitRefusal {
112
117
  /**
113
118
  * Named limit classes, checked after auth and counted in Postgres (`pipework_rate_limit_counts`, opted in
114
119
  * with the blueprint's `rateLimits: {}`), so every server process on the same database shares one count.
115
- * Windows are counted perUser, perTenant, perAddress in turn, up to the first one over its max, so one user's
116
- * refused requests don't spend the tenant's budget. A route is in `signedIn` (auth required, or optional with
120
+ * Keys are counted perUser, perTenant, perAddress, total in turn, up to the first key with a window over its max, so one user's
121
+ * refused requests don't spend the tenant's budget. The 429's Retry-After is the longest wait of the windows that refused. A route is in `signedIn` (auth required, or optional with
117
122
  * a user), `public` (no auth, or optional without a user) or the class its fitting names with `.rateLimit(name)`.
118
123
  */
119
124
  export interface RateLimitClassesConfig {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/request/http/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/request/http/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pipework",
3
- "version": "0.134.0",
3
+ "version": "0.135.0",
4
4
  "description": "TypeScript framework for multi-tenant SaaS applications. PostgreSQL-only.",
5
5
  "type": "module",
6
6
  "license": "MIT",