@hadoku/jobplatform-worker 2.32.23 → 2.32.25

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/dist/index.js CHANGED
@@ -1342,13 +1342,8 @@ async function resolveGranteeVia(edge, input) {
1342
1342
  };
1343
1343
  }
1344
1344
  const OWNER_NAME_TTL_MS = 15 * 6e4;
1345
- async function resolveOwnerName(db, edge, serviceKey, name, now = Date.now()) {
1346
- if (!edge) return resolveGranteeVia(edge, { serviceKey, name });
1347
- const key = name.trim().toLowerCase();
1348
- const hit = await db.prepare(
1349
- "SELECT user_id, name, tier FROM owner_name_cache WHERE name_key = ? AND expires_at > ?"
1350
- ).bind(key, now).first();
1351
- if (hit) return { userId: hit.user_id, name: hit.name, ...hit.tier ? { tier: hit.tier } : {} };
1345
+ const OWNER_NAME_REFRESH_AHEAD_MS = OWNER_NAME_TTL_MS / 2;
1346
+ async function resolveAndRemember(db, edge, serviceKey, name, key, now) {
1352
1347
  const result = await resolveGranteeVia(edge, { serviceKey, name });
1353
1348
  if (!isIdentityError(result)) {
1354
1349
  await db.prepare(
@@ -1360,6 +1355,20 @@ async function resolveOwnerName(db, edge, serviceKey, name, now = Date.now()) {
1360
1355
  }
1361
1356
  return result;
1362
1357
  }
1358
+ async function resolveOwnerName(db, edge, serviceKey, name, now = Date.now(), defer) {
1359
+ if (!edge) return resolveGranteeVia(edge, { serviceKey, name });
1360
+ const key = name.trim().toLowerCase();
1361
+ const hit = await db.prepare(
1362
+ "SELECT user_id, name, tier, expires_at FROM owner_name_cache WHERE name_key = ? AND expires_at > ?"
1363
+ ).bind(key, now).first();
1364
+ if (hit) {
1365
+ if (defer && hit.expires_at - now <= OWNER_NAME_REFRESH_AHEAD_MS) {
1366
+ defer("owner name refresh", resolveAndRemember(db, edge, serviceKey, name, key, now));
1367
+ }
1368
+ return { userId: hit.user_id, name: hit.name, ...hit.tier ? { tier: hit.tier } : {} };
1369
+ }
1370
+ return resolveAndRemember(db, edge, serviceKey, name, key, now);
1371
+ }
1363
1372
  const ON_BEHALF_REFUSAL = "Only admin, or a service caller named in ON_BEHALF_CALLER_USER_IDS, may act on behalf of a named owner.";
1364
1373
  function mayActOnBehalf(auth, callerId, allowed) {
1365
1374
  if (tierAtLeast(auth, "admin")) return true;
@@ -1455,7 +1464,9 @@ async function effectiveUserId(c, ownerName) {
1455
1464
  c.env.JOB_PLATFORM_DB,
1456
1465
  c.env.EDGE,
1457
1466
  c.env.HADOKU_SERVICE_KEY ?? "",
1458
- named
1467
+ named,
1468
+ Date.now(),
1469
+ (label, work) => runAfterResponse(c, label, work)
1459
1470
  );
1460
1471
  if (isIdentityError(resolved)) {
1461
1472
  const status = [404, 409, 503].includes(resolved.status) ? resolved.status : 503;
@@ -2730,7 +2741,9 @@ async function requireIdentity(c, next) {
2730
2741
  c.env.JOB_PLATFORM_DB,
2731
2742
  c.env.EDGE,
2732
2743
  c.env.HADOKU_SERVICE_KEY ?? "",
2733
- owner
2744
+ owner,
2745
+ Date.now(),
2746
+ (label, work) => runAfterResponse(c, label, work)
2734
2747
  );
2735
2748
  if (isIdentityError(resolved)) {
2736
2749
  const status = [404, 409, 503].includes(resolved.status) ? resolved.status : 503;
@@ -4921,7 +4934,9 @@ function registerOwnerRoutes(app2) {
4921
4934
  c.env.JOB_PLATFORM_DB,
4922
4935
  c.env.EDGE,
4923
4936
  c.env.HADOKU_SERVICE_KEY ?? "",
4924
- name
4937
+ name,
4938
+ Date.now(),
4939
+ (label, work) => runAfterResponse(c, label, work)
4925
4940
  );
4926
4941
  if (isIdentityError(resolved)) {
4927
4942
  const status = [400, 404, 409, 503].includes(resolved.status) ? resolved.status : 503;
@@ -5189,18 +5204,20 @@ function registerApplicationRoutes(app2) {
5189
5204
  WHERE a.user_id = ?${filter}
5190
5205
  ORDER BY a.updated_at DESC`
5191
5206
  );
5192
- startTime(c, "apps");
5193
- const rows = await (status ? stmt.bind(userId, status) : stmt.bind(userId)).all();
5194
- endTime(c, "apps");
5195
- startTime(c, "answers");
5196
- const answerRows = await c.env.JOB_PLATFORM_DB.prepare(
5197
- "SELECT question_key, question, answer FROM application_answers WHERE user_id = ?"
5198
- ).bind(userId).all();
5199
- endTime(c, "answers");
5207
+ startTime(c, "read");
5208
+ const [rows, answerRows] = await c.env.JOB_PLATFORM_DB.batch([
5209
+ status ? stmt.bind(userId, status) : stmt.bind(userId),
5210
+ c.env.JOB_PLATFORM_DB.prepare(
5211
+ "SELECT question_key, question, answer FROM application_answers WHERE user_id = ?"
5212
+ ).bind(userId)
5213
+ ]);
5214
+ endTime(c, "read");
5215
+ const appRows = rows.results;
5216
+ const answers = answerRows.results;
5200
5217
  const stored = new Map(
5201
- answerRows.results.map((a) => [a.question_key, { question: a.question, answer: a.answer }])
5218
+ answers.map((a) => [a.question_key, { question: a.question, answer: a.answer }])
5202
5219
  );
5203
- const applications = rows.results.map((r) => {
5220
+ const applications = appRows.map((r) => {
5204
5221
  const app22 = toApplication(r);
5205
5222
  return {
5206
5223
  ...app22,
@@ -12,6 +12,20 @@ import { type EdgeIdentityBinding, type IdentityResult } from '@wolffm/worker-ut
12
12
  * else keeps resolving to its previous holder until the row expires.
13
13
  */
14
14
  export declare const OWNER_NAME_TTL_MS: number;
15
+ /**
16
+ * When a remembered name has less than this left, a hit answers from the row
17
+ * AND re-asks the edge behind the response.
18
+ *
19
+ * Without it every third tick of the five-minute runner was a miss: the row
20
+ * expired between ticks, and that request paid the edge's registry scan,
21
+ * 500-1000ms and once 15s (issue #26; 74% of all `GET /applications` time on
22
+ * 2026-11-03). Half the TTL means a caller that asks at least that often keeps
23
+ * the row fresh and never waits on the edge. An expired row is still never
24
+ * answered from, so the rename bound above is unchanged.
25
+ */
26
+ export declare const OWNER_NAME_REFRESH_AHEAD_MS: number;
27
+ /** Hands work to `waitUntil`; see `runAfterResponse` in background.ts. */
28
+ export type Defer = (label: string, work: Promise<unknown>) => void;
15
29
  /**
16
30
  * `resolveGranteeVia`, remembered for {@link OWNER_NAME_TTL_MS} in D1.
17
31
  *
@@ -24,8 +38,11 @@ export declare const OWNER_NAME_TTL_MS: number;
24
38
  * name is never answered from cache once the edge has said so, and a 503 is an
25
39
  * outage, never an answer worth keeping. An unbound `EDGE` skips the cache:
26
40
  * that is a deployment fault and must keep reporting NO_REGISTRY.
41
+ *
42
+ * With `defer`, a hit inside {@link OWNER_NAME_REFRESH_AHEAD_MS} of expiry is
43
+ * refreshed behind the response. Without it the row simply runs out.
27
44
  */
28
- export declare function resolveOwnerName(db: D1Database, edge: EdgeIdentityBinding | undefined, serviceKey: string, name: string, now?: number): Promise<IdentityResult>;
45
+ export declare function resolveOwnerName(db: D1Database, edge: EdgeIdentityBinding | undefined, serviceKey: string, name: string, now?: number, defer?: Defer): Promise<IdentityResult>;
29
46
  /**
30
47
  * Whether this caller may act for a named owner (`ownerName`): admin, or a
31
48
  * service caller whose registry userId is in `ON_BEHALF_CALLER_USER_IDS`.
@@ -1 +1 @@
1
- {"version":3,"file":"ownerName.d.ts","sourceRoot":"","sources":["../src/ownerName.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAGN,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,MAAM,+BAA+B,CAAC;AAEvC;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,QAAc,CAAC;AAE7C;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,CACrC,EAAE,EAAE,UAAU,EACd,IAAI,EAAE,mBAAmB,GAAG,SAAS,EACrC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAmB,GACtB,OAAO,CAAC,cAAc,CAAC,CAwBzB;AAED;;;;;;;;;GASG;AACH,gEAAgE;AAChE,eAAO,MAAM,iBAAiB,4GAC4E,CAAC;AAE3G,wBAAgB,cAAc,CAC7B,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,OAAO,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAQT"}
1
+ {"version":3,"file":"ownerName.d.ts","sourceRoot":"","sources":["../src/ownerName.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAGN,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,MAAM,+BAA+B,CAAC;AAEvC;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,QAAc,CAAC;AAE7C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B,QAAwB,CAAC;AAEjE,0EAA0E;AAC1E,MAAM,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;AA0BpE;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,gBAAgB,CACrC,EAAE,EAAE,UAAU,EACd,IAAI,EAAE,mBAAmB,GAAG,SAAS,EACrC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAmB,EACxB,KAAK,CAAC,EAAE,KAAK,GACX,OAAO,CAAC,cAAc,CAAC,CAgBzB;AAED;;;;;;;;;GASG;AACH,gEAAgE;AAChE,eAAO,MAAM,iBAAiB,4GAC4E,CAAC;AAE3G,wBAAgB,cAAc,CAC7B,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,OAAO,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAQT"}
@@ -1 +1 @@
1
- {"version":3,"file":"applications.d.ts","sourceRoot":"","sources":["../../../src/routes/jobs/applications.ts"],"names":[],"mappings":"AAaA,OAAO,EAKN,KAAK,OAAO,EAEZ,MAAM,aAAa,CAAC;AAwCrB,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAUhF;AAiJD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CA4e5D"}
1
+ {"version":3,"file":"applications.d.ts","sourceRoot":"","sources":["../../../src/routes/jobs/applications.ts"],"names":[],"mappings":"AAaA,OAAO,EAKN,KAAK,OAAO,EAEZ,MAAM,aAAa,CAAC;AAwCrB,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAUhF;AAiJD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CA+e5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"owner.d.ts","sourceRoot":"","sources":["../../../src/routes/jobs/owner.ts"],"names":[],"mappings":"AAUA,OAAO,EAA2B,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAkItD"}
1
+ {"version":3,"file":"owner.d.ts","sourceRoot":"","sources":["../../../src/routes/jobs/owner.ts"],"names":[],"mappings":"AAWA,OAAO,EAA2B,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAoItD"}
@@ -2,6 +2,7 @@ import { z, type OpenAPIHono } from '@hono/zod-openapi';
2
2
  import { type HadokuAuthContext } from '@wolffm/worker-utils';
3
3
  import type { D1Database, Fetcher } from '@cloudflare/workers-types';
4
4
  import type { AppEnv } from '../../types.js';
5
+ import { type HasExecutionCtx } from '../../background.js';
5
6
  import { type RoleLevel } from '../../roleClassify.js';
6
7
  export interface RouteContext {
7
8
  Bindings: AppEnv;
@@ -116,7 +117,7 @@ export declare function isEffectiveUserError(v: EffectiveUser): v is {
116
117
  * kinds share a name, neither a reviewer nor a gate can separate them. Renamed
117
118
  * 2026-09-03. Keep any future on-behalf-of parameter in the `*Name` shape.
118
119
  */
119
- export declare function effectiveUserId(c: {
120
+ export declare function effectiveUserId(c: HasExecutionCtx & {
120
121
  req: {
121
122
  header: (name: string) => string | undefined;
122
123
  query?: (name: string) => string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/routes/jobs/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/routes/jobs/shared.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/routes/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AAEhE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAwB9E,UAAU,YAAY;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE;QACV,WAAW,EAAE,iBAAiB,CAAC;QAC/B;;;;WAIG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACF;AAsoBD,eAAO,MAAM,aAAa,oCAAM,CAAC"}
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/routes/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AAEhE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAwB9E,UAAU,YAAY;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE;QACV,WAAW,EAAE,iBAAiB,CAAC;QAC/B;;;;WAIG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACF;AAwoBD,eAAO,MAAM,aAAa,oCAAM,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hadoku/jobplatform-worker",
3
- "version": "2.32.23",
4
- "gitHead": "1445ec0f5d7f63a441082377e4b7aa576f6d1cb8",
3
+ "version": "2.32.25",
4
+ "gitHead": "4a80e75b0d72776753afca49516f746ccb37d0b2",
5
5
  "description": "Job listings aggregation and tracking dashboard - Worker package",
6
6
  "license": "MIT",
7
7
  "type": "module",