@beignet/core 0.0.23 → 0.0.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.
Files changed (39) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +38 -6
  3. package/dist/client-only.d.ts +2 -0
  4. package/dist/client-only.d.ts.map +1 -1
  5. package/dist/client-only.js +2 -0
  6. package/dist/client-only.js.map +1 -1
  7. package/dist/providers/metadata.d.ts +2 -0
  8. package/dist/providers/metadata.d.ts.map +1 -1
  9. package/dist/providers/metadata.js +12 -0
  10. package/dist/providers/metadata.js.map +1 -1
  11. package/dist/server/hooks/cors.d.ts +4 -3
  12. package/dist/server/hooks/cors.d.ts.map +1 -1
  13. package/dist/server/hooks/cors.js +21 -16
  14. package/dist/server/hooks/cors.js.map +1 -1
  15. package/dist/server/hooks/rate-limit.d.ts +7 -6
  16. package/dist/server/hooks/rate-limit.d.ts.map +1 -1
  17. package/dist/server/hooks/rate-limit.js +4 -1
  18. package/dist/server/hooks/rate-limit.js.map +1 -1
  19. package/dist/server/server.d.ts +15 -0
  20. package/dist/server/server.d.ts.map +1 -1
  21. package/dist/server/server.js +82 -9
  22. package/dist/server/server.js.map +1 -1
  23. package/dist/server-only.d.ts +2 -0
  24. package/dist/server-only.d.ts.map +1 -1
  25. package/dist/server-only.js +2 -0
  26. package/dist/server-only.js.map +1 -1
  27. package/dist/uploads/index.d.ts +37 -1
  28. package/dist/uploads/index.d.ts.map +1 -1
  29. package/dist/uploads/index.js +127 -2
  30. package/dist/uploads/index.js.map +1 -1
  31. package/package.json +4 -2
  32. package/skills/app-architecture/SKILL.md +29 -2
  33. package/src/client-only.ts +2 -0
  34. package/src/providers/metadata.ts +23 -0
  35. package/src/server/hooks/cors.ts +36 -16
  36. package/src/server/hooks/rate-limit.ts +12 -6
  37. package/src/server/server.ts +130 -16
  38. package/src/server-only.ts +2 -0
  39. package/src/uploads/index.ts +209 -3
@@ -27,6 +27,7 @@ export function defineUpload(name, options) {
27
27
  maxFiles: options.file.maxFiles ?? 1,
28
28
  visibility: options.file.visibility ?? "private",
29
29
  },
30
+ access: options.access ?? "protected",
30
31
  ...(options.description !== undefined
31
32
  ? { description: options.description }
32
33
  : {}),
@@ -110,6 +111,7 @@ export function createUploadRouter(options) {
110
111
  providerName: "uploads",
111
112
  watcher: "uploads",
112
113
  });
114
+ const requestLimits = uploadRequestLimits(options.limits);
113
115
  async function resolveCtx() {
114
116
  return typeof options.ctx === "function"
115
117
  ? options.ctx()
@@ -366,6 +368,7 @@ export function createUploadRouter(options) {
366
368
  const input = await readJsonBody(request, {
367
369
  uploadName: requestOptions.uploadName,
368
370
  action: "prepare",
371
+ maxBytes: requestLimits.jsonMaxBytes,
369
372
  });
370
373
  return jsonResponse(await prepare(requestOptions.uploadName, input));
371
374
  }
@@ -373,9 +376,15 @@ export function createUploadRouter(options) {
373
376
  const input = await readJsonBody(request, {
374
377
  uploadName: requestOptions.uploadName,
375
378
  action: "complete",
379
+ maxBytes: requestLimits.jsonMaxBytes,
376
380
  });
377
381
  return jsonResponse(await complete(requestOptions.uploadName, input));
378
382
  }
383
+ assertUploadContentLengthWithinLimit(request.headers, {
384
+ uploadName: requestOptions.uploadName,
385
+ action: "upload",
386
+ maxBytes: requestLimits.multipartMaxBytes,
387
+ });
379
388
  const formData = await request.formData();
380
389
  return jsonResponse(await upload(requestOptions.uploadName, {
381
390
  formData,
@@ -387,11 +396,95 @@ export function createUploadRouter(options) {
387
396
  },
388
397
  };
389
398
  }
399
+ const DEFAULT_UPLOAD_JSON_MAX_BYTES = 256 * 1024;
400
+ const DEFAULT_UPLOAD_MULTIPART_MAX_BYTES = 25 * 1024 * 1024;
401
+ function uploadRequestLimits(limits) {
402
+ return {
403
+ jsonMaxBytes: positiveLimit(limits?.jsonMaxBytes, DEFAULT_UPLOAD_JSON_MAX_BYTES, "limits.jsonMaxBytes"),
404
+ multipartMaxBytes: positiveLimit(limits?.multipartMaxBytes, DEFAULT_UPLOAD_MULTIPART_MAX_BYTES, "limits.multipartMaxBytes"),
405
+ };
406
+ }
407
+ function positiveLimit(value, fallback, name) {
408
+ const limit = value ?? fallback;
409
+ if (!Number.isFinite(limit) || limit <= 0) {
410
+ throw new Error(`createUploadRouter ${name} must be a positive number.`);
411
+ }
412
+ return limit;
413
+ }
414
+ function assertUploadContentLengthWithinLimit(headers, context) {
415
+ const contentLength = headers.get("content-length");
416
+ if (contentLength === null)
417
+ return;
418
+ const actualBytes = Number(contentLength);
419
+ if (!Number.isFinite(actualBytes) || actualBytes < 0)
420
+ return;
421
+ if (actualBytes > context.maxBytes) {
422
+ throw new UploadError({
423
+ code: "UPLOAD_BODY_TOO_LARGE",
424
+ status: 413,
425
+ message: `Upload "${context.uploadName}" ${context.action} body is too large.`,
426
+ details: {
427
+ maxBytes: context.maxBytes,
428
+ actualBytes,
429
+ },
430
+ });
431
+ }
432
+ }
433
+ async function readLimitedRequestText(request, context) {
434
+ assertUploadContentLengthWithinLimit(request.headers, context);
435
+ if (!request.body) {
436
+ const text = await request.text();
437
+ const actualBytes = new TextEncoder().encode(text).byteLength;
438
+ if (actualBytes > context.maxBytes) {
439
+ throw new UploadError({
440
+ code: "UPLOAD_BODY_TOO_LARGE",
441
+ status: 413,
442
+ message: `Upload "${context.uploadName}" ${context.action} body is too large.`,
443
+ details: {
444
+ maxBytes: context.maxBytes,
445
+ actualBytes,
446
+ },
447
+ });
448
+ }
449
+ return text;
450
+ }
451
+ const reader = request.body.getReader();
452
+ const decoder = new TextDecoder();
453
+ let actualBytes = 0;
454
+ let text = "";
455
+ try {
456
+ while (true) {
457
+ const result = await reader.read();
458
+ if (result.done)
459
+ break;
460
+ actualBytes += result.value.byteLength;
461
+ if (actualBytes > context.maxBytes) {
462
+ throw new UploadError({
463
+ code: "UPLOAD_BODY_TOO_LARGE",
464
+ status: 413,
465
+ message: `Upload "${context.uploadName}" ${context.action} body is too large.`,
466
+ details: {
467
+ maxBytes: context.maxBytes,
468
+ actualBytes,
469
+ },
470
+ });
471
+ }
472
+ text += decoder.decode(result.value, { stream: true });
473
+ }
474
+ text += decoder.decode();
475
+ }
476
+ finally {
477
+ reader.releaseLock();
478
+ }
479
+ return text;
480
+ }
390
481
  async function readJsonBody(request, context) {
391
482
  try {
392
- return await request.json();
483
+ return JSON.parse(await readLimitedRequestText(request, context));
393
484
  }
394
- catch {
485
+ catch (error) {
486
+ if (error instanceof UploadError)
487
+ throw error;
395
488
  throw new UploadError({
396
489
  code: "INVALID_UPLOAD_BODY",
397
490
  status: 400,
@@ -523,6 +616,15 @@ function assertFiles(upload, files) {
523
616
  }
524
617
  }
525
618
  async function assertAuthorized(upload, args) {
619
+ if (!upload.authorize) {
620
+ if ((upload.access ?? "protected") === "public")
621
+ return;
622
+ throw new UploadError({
623
+ code: "UNAUTHORIZED_UPLOAD",
624
+ status: 403,
625
+ message: `Upload "${upload.name}" must declare authorize(...) or set access: "public".`,
626
+ });
627
+ }
526
628
  const result = await upload.authorize?.(args);
527
629
  const denied = result === false ||
528
630
  (typeof result === "object" &&
@@ -541,6 +643,29 @@ async function assertAuthorized(upload, args) {
541
643
  }
542
644
  function assertStoredObject(upload, file, object) {
543
645
  assertFiles(upload, [file]);
646
+ if (upload.file.maxSizeBytes !== undefined &&
647
+ object.size > upload.file.maxSizeBytes) {
648
+ throw new UploadError({
649
+ code: "INVALID_UPLOAD_FILE",
650
+ status: 413,
651
+ message: `Uploaded object "${object.key}" exceeds the maximum file size.`,
652
+ details: {
653
+ size: object.size,
654
+ maxSizeBytes: upload.file.maxSizeBytes,
655
+ },
656
+ });
657
+ }
658
+ if (object.size !== file.size) {
659
+ throw new UploadError({
660
+ code: "INVALID_UPLOAD_FILE",
661
+ status: 422,
662
+ message: `Uploaded object "${object.key}" size does not match the prepared file.`,
663
+ details: {
664
+ expected: file.size,
665
+ actual: object.size,
666
+ },
667
+ });
668
+ }
544
669
  if (object.contentType &&
545
670
  file.contentType &&
546
671
  object.contentType !== file.contentType) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/uploads/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/uploads/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AA8btE;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,IAAI,CAAkB;IACtB,MAAM,CAAS;IACf,OAAO,CAAW;IAE3B,YAAY,IAKX;QACC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC9B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAM1B,IAAU,EACV,OAAyD;IAEzD,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI;QACJ,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE;YACJ,GAAG,OAAO,CAAC,IAAI;YACf,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC;YACpC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,SAAS;SACjD;QACD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,WAAW;QACrC,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS;YACnC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE;YACtC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,CAAC,OAAO,CAAC,eAAe;YACzB,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE;YAC9C,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClE,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAgB;IAEhB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAA8C;IAE9C,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;IAEhD,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAA8C;IAE9C,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS;YAClC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;YACrC,CAAC,CAAC,EAAE,CAAC;QACP,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,UAAoD,EAAE;IAEtD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,8BAA8B,CAAC;IAClE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,0BAA0B,CAAC;IAElE,OAAO;QACL,IAAI,CAAC,IAAI;YACP,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,GAAG,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACjD,OAAO,EAAE;oBACP,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;iBACtC;gBACD,SAAS;aACV,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAuC;IAEvC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkD,CAAC;IAC1E,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,sDAAsD,MAAM,CAAC,IAAI,gDAAgD,CAClH,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,cAAc,CAAC;IACxC,MAAM,eAAe,GAAG,6BAA6B,CACnD,OAAO,CAAC,eAAe,EACvB;QACE,YAAY,EAAE,SAAS;QACvB,OAAO,EAAE,SAAS;KACnB,CACF,CAAC;IACF,MAAM,aAAa,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE1D,KAAK,UAAU,UAAU;QACvB,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK,UAAU;YACtC,CAAC,CAAE,OAAO,CAAC,GAA+B,EAAE;YAC5C,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,SAAS,UAAU,CAAC,IAAY;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;iBACnC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,IAAI,cAAc,GAAG,CAAC;iBAC9C,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,IAAI,WAAW,CAAC;gBACpB,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,WAAW,IAAI,4CAA4C,UAAU,IAAI,MAAM,gGAAgG;aACzL,CAAC,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,UAAU,OAAO,CAAC,UAAkB,EAAE,KAAyB;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,eAAe,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE,wBAAwB;YAC9B,KAAK,EAAE,wBAAwB;YAC/B,OAAO,EAAE,UAAU;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,MAAM,UAAU,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9D,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAElC,MAAM,KAAK,GAA+B,EAAE,CAAC;YAC7C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,EAAE,EAAE,CAAC;gBACtB,MAAM,gBAAgB,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAClE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAChE,MAAM,eAAe,GACnB,CAAC,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACnE,EAAE,CAAC;gBACL,MAAM,QAAQ,GAA6B;oBACzC,GAAG,IAAI;oBACP,QAAQ;oBACR,GAAG;iBACJ,CAAC;gBAEF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACnB,QAAQ,CAAC,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;wBAC1C,UAAU;wBACV,QAAQ;wBACR,GAAG;wBACH,IAAI;wBACJ,QAAQ;wBACR,OAAO,EAAE;4BACP,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,SAAS;4BAC/C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS;gCACxC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE;gCAC5C,CAAC,CAAC,EAAE,CAAC;4BACP,QAAQ,EAAE,eAAe;yBAC1B;qBACF,CAAC,CAAC;gBACL,CAAC;gBAED,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC;YAED,eAAe,CAAC,MAAM,CAAC;gBACrB,IAAI,EAAE,0BAA0B;gBAChC,KAAK,EAAE,0BAA0B;gBACjC,OAAO,EAAE,GAAG,UAAU,KAAK,KAAK,CAAC,MAAM,QAAQ,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;gBAC/E,OAAO,EAAE;oBACP,UAAU;oBACV,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;oBAC1C,SAAS,EAAE,KAAK,CAAC,MAAM;oBACvB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACnC;aACF,CAAC,CAAC;YAEH,OAAO;gBACL,UAAU;gBACV,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;gBAC1C,KAAK;aACwB,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,uBAAuB,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACrE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,UAAU,QAAQ,CAAC,UAAkB,EAAE,KAA0B;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,eAAe,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE,yBAAyB;YAC/B,KAAK,EAAE,yBAAyB;YAChC,OAAO,EAAE,UAAU;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,MAAM,GAAG,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,GAAG,GAAG,MAAM,UAAU,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9D,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAElC,MAAM,KAAK,GAA0B,EAAE,CAAC;YACxC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChC,MAAM,gBAAgB,CAAC,MAAM,EAAE;oBAC7B,GAAG;oBACH,QAAQ;oBACR,IAAI;oBACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC;oBACnC,GAAG;oBACH,QAAQ;oBACR,IAAI;oBACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC,CAAC;gBACH,IAAI,IAAI,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;oBAC7B,MAAM,IAAI,WAAW,CAAC;wBACpB,IAAI,EAAE,qBAAqB;wBAC3B,MAAM,EAAE,GAAG;wBACX,OAAO,EAAE,8CAA8C,MAAM,CAAC,IAAI,IAAI;wBACtE,OAAO,EAAE;4BACP,WAAW;4BACX,SAAS,EAAE,IAAI,CAAC,GAAG;yBACpB;qBACF,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpD,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,IAAI,WAAW,CAAC;wBACpB,IAAI,EAAE,yBAAyB;wBAC/B,MAAM,EAAE,GAAG;wBACX,OAAO,EAAE,oBAAoB,IAAI,CAAC,GAAG,kBAAkB;qBACxD,CAAC,CAAC;gBACL,CAAC;gBACD,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBACzC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAClC,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACnE,eAAe,CAAC,MAAM,CAAC;gBACrB,IAAI,EAAE,2BAA2B;gBACjC,KAAK,EAAE,2BAA2B;gBAClC,OAAO,EAAE,GAAG,UAAU,KAAK,KAAK,CAAC,MAAM,QAAQ,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;gBAC/E,OAAO,EAAE;oBACP,UAAU;oBACV,SAAS,EAAE,KAAK,CAAC,MAAM;oBACvB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACnC;aACF,CAAC,CAAC;YAEH,OAAO;gBACL,UAAU;gBACV,KAAK;gBACL,MAAM;aACwB,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,wBAAwB,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACtE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,UAAkB,EAAE,KAAwB;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,eAAe,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE,uBAAuB;YAC7B,KAAK,EAAE,uBAAuB;YAC9B,OAAO,EAAE,UAAU;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,GAAG,GAAG,MAAM,UAAU,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,MAAM,aAAa,CAClC,UAAU,EACV,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC,CACrC,CAAC;YACF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACjD,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAEjC,MAAM,SAAS,GAA0B,EAAE,CAAC;YAC5C,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC9B,IAAI,CAAC,MAAM;oBAAE,SAAS;gBACtB,MAAM,QAAQ,GAAG,EAAE,EAAE,CAAC;gBACtB,MAAM,gBAAgB,CAAC,UAAU,EAAE;oBACjC,GAAG;oBACH,QAAQ;oBACR,IAAI,EAAE,MAAM;oBACZ,QAAQ;iBACT,CAAC,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC;oBAC/B,GAAG;oBACH,QAAQ;oBACR,IAAI,EAAE,MAAM;oBACZ,QAAQ;iBACT,CAAC,CAAC;gBACH,MAAM,eAAe,GACnB,CAAC,MAAM,UAAU,CAAC,eAAe,EAAE,CAAC;oBAClC,GAAG;oBACH,QAAQ;oBACR,IAAI,EAAE,MAAM;oBACZ,QAAQ;iBACT,CAAC,CAAC,IAAI,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE;oBAClD,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS;wBAC5C,CAAC,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE;wBAChD,CAAC,CAAC,EAAE,CAAC;oBACP,QAAQ,EAAE,eAAe;oBACzB,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,IAAI,SAAS;iBACpD,CAAC,CAAC;gBACH,SAAS,CAAC,IAAI,CAAC;oBACb,GAAG,MAAM;oBACT,QAAQ;oBACR,GAAG;oBACH,MAAM;iBACP,CAAC,CAAC;YACL,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;gBAC3C,GAAG;gBACH,QAAQ;gBACR,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;YACH,eAAe,CAAC,MAAM,CAAC;gBACrB,IAAI,EAAE,yBAAyB;gBAC/B,KAAK,EAAE,yBAAyB;gBAChC,OAAO,EAAE,GAAG,UAAU,KAAK,SAAS,CAAC,MAAM,QAAQ,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;gBACvF,OAAO,EAAE;oBACP,UAAU;oBACV,SAAS,EAAE,SAAS,CAAC,MAAM;oBAC3B,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACnC;aACF,CAAC,CAAC;YAEH,OAAO;gBACL,UAAU;gBACV,KAAK,EAAE,SAAS;gBAChB,MAAM;aACwB,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,sBAAsB,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACpE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,SAAS,aAAa,CACpB,IAAY,EACZ,UAAkB,EAClB,SAAiB,EACjB,KAAc;QAEd,eAAe,CAAC,MAAM,CAAC;YACrB,IAAI;YACJ,KAAK,EAAE,eAAe;YACtB,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE;gBACP,UAAU;gBACV,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAClC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,OAAO;QACP,QAAQ;QACR,MAAM;QACN,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,cAAc;YACzC,IAAI,CAAC;gBACH,IAAI,cAAc,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACxC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE;wBACxC,UAAU,EAAE,cAAc,CAAC,UAAU;wBACrC,MAAM,EAAE,SAAS;wBACjB,QAAQ,EAAE,aAAa,CAAC,YAAY;qBACrC,CAAC,CAAC;oBACH,OAAO,YAAY,CACjB,MAAM,OAAO,CACX,cAAc,CAAC,UAAU,EACzB,KAA2B,CAC5B,CACF,CAAC;gBACJ,CAAC;gBAED,IAAI,cAAc,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oBACzC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE;wBACxC,UAAU,EAAE,cAAc,CAAC,UAAU;wBACrC,MAAM,EAAE,UAAU;wBAClB,QAAQ,EAAE,aAAa,CAAC,YAAY;qBACrC,CAAC,CAAC;oBACH,OAAO,YAAY,CACjB,MAAM,QAAQ,CACZ,cAAc,CAAC,UAAU,EACzB,KAA4B,CAC7B,CACF,CAAC;gBACJ,CAAC;gBAED,oCAAoC,CAAC,OAAO,CAAC,OAAO,EAAE;oBACpD,UAAU,EAAE,cAAc,CAAC,UAAU;oBACrC,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,aAAa,CAAC,iBAAiB;iBAC1C,CAAC,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC1C,OAAO,YAAY,CACjB,MAAM,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE;oBACtC,QAAQ;iBACT,CAAC,CACH,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,6BAA6B,GAAG,GAAG,GAAG,IAAI,CAAC;AACjD,MAAM,kCAAkC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5D,SAAS,mBAAmB,CAC1B,MAAuC;IAEvC,OAAO;QACL,YAAY,EAAE,aAAa,CACzB,MAAM,EAAE,YAAY,EACpB,6BAA6B,EAC7B,qBAAqB,CACtB;QACD,iBAAiB,EAAE,aAAa,CAC9B,MAAM,EAAE,iBAAiB,EACzB,kCAAkC,EAClC,0BAA0B,CAC3B;KACF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,KAAyB,EACzB,QAAgB,EAChB,IAAY;IAEZ,MAAM,KAAK,GAAG,KAAK,IAAI,QAAQ,CAAC;IAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,6BAA6B,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oCAAoC,CAC3C,OAAgB,EAChB,OAIC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACpD,IAAI,aAAa,KAAK,IAAI;QAAE,OAAO;IAEnC,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC;QAAE,OAAO;IAC7D,IAAI,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnC,MAAM,IAAI,WAAW,CAAC;YACpB,IAAI,EAAE,uBAAuB;YAC7B,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,WAAW,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,MAAM,qBAAqB;YAC9E,OAAO,EAAE;gBACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,WAAW;aACZ;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,OAAgB,EAChB,OAIC;IAED,oCAAoC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE/D,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;QAC9D,IAAI,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,WAAW,CAAC;gBACpB,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,WAAW,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,MAAM,qBAAqB;gBAC9E,OAAO,EAAE;oBACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,WAAW;iBACZ;aACF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,IAAI,GAAG,EAAE,CAAC;IAEd,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,MAAM,CAAC,IAAI;gBAAE,MAAM;YACvB,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;YACvC,IAAI,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACnC,MAAM,IAAI,WAAW,CAAC;oBACpB,IAAI,EAAE,uBAAuB;oBAC7B,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,WAAW,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,MAAM,qBAAqB;oBAC9E,OAAO,EAAE;wBACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;wBAC1B,WAAW;qBACZ;iBACF,CAAC,CAAC;YACL,CAAC;YACD,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,OAAgB,EAChB,OAIC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW;YAAE,MAAM,KAAK,CAAC;QAC9C,MAAM,IAAI,WAAW,CAAC;YACpB,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,WAAW,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,MAAM,2BAA2B;SACrF,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAOD,SAAS,iBAAiB,CACxB,IAAa,EACb,OAAgD;IAEhD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,OAAO,CAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,KAAK,GAAI,IAA4B,CAAC,KAAK,CAAC;IAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,EAAE,OAAO,EAAE,oCAAoC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACrE,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,8BAA8B;gBACvC,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;aACvB,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,0BAA0B;YAAE,SAAS;QAElD,MAAM,SAAS,GAAG,IAA6C,CAAC;QAChE,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,uDAAuD;gBAChE,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC;aACnC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,OAAO,SAAS,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,kDAAkD;gBAC3D,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC;aAC9B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CACxB,UAAkB,EAClB,IAAa;IAEb,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE;QACrC,0BAA0B,EAAE,KAAK;KAClC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,WAAW,CAAC;YACpB,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,WAAW,UAAU,4BAA4B;YAC1D,OAAO,EAAE,EAAE,MAAM,EAAE;SACpB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAA0B,CAAC;AACpC,CAAC;AAED,SAAS,kBAAkB,CACzB,UAAkB,EAClB,IAAa;IAEb,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE;QACrC,0BAA0B,EAAE,IAAI;KACjC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,WAAW,CAAC;YACpB,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,WAAW,UAAU,6BAA6B;YAC3D,OAAO,EAAE,EAAE,MAAM,EAAE;SACpB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAA2B,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,MAAS,EACT,KAAc;IAEd,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElE,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,WAAW,CAAC;YACpB,IAAI,EAAE,yBAAyB;YAC/B,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,gCAAgC,MAAM,CAAC,IAAI,IAAI;YACxD,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;SACnC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,KAA+B,CAAC;IAChD,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,WAAW,CAClB,MAAiB,EACjB,KAAkC;IAElC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QAClD,MAAM,IAAI,WAAW,CAAC;YACpB,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,WAAW,MAAM,CAAC,IAAI,4BAA4B,QAAQ,QAAQ,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;YACvG,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,WAAW,CAAC;gBACpB,IAAI,EAAE,qBAAqB;gBAC3B,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,WAAW,MAAM,CAAC,IAAI,mCAAmC;gBAClE,OAAO,EAAE,EAAE,IAAI,EAAE;aAClB,CAAC,CAAC;QACL,CAAC;QAED,IACE,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM;YAChC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EACpD,CAAC;YACD,MAAM,IAAI,WAAW,CAAC;gBACpB,IAAI,EAAE,qBAAqB;gBAC3B,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,WAAW,MAAM,CAAC,IAAI,sBAAsB,IAAI,CAAC,WAAW,IAAI;gBACzE,OAAO,EAAE;oBACP,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY;iBAC/C;aACF,CAAC,CAAC;QACL,CAAC;QAED,IACE,MAAM,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS;YACtC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EACpC,CAAC;YACD,MAAM,IAAI,WAAW,CAAC;gBACpB,IAAI,EAAE,qBAAqB;gBAC3B,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,WAAW,MAAM,CAAC,IAAI,kCAAkC;gBACjE,OAAO,EAAE;oBACP,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY;iBACvC;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,MAA8C,EAC9C,IAAuC;IAEvC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,WAAW,CAAC,KAAK,QAAQ;YAAE,OAAO;QAExD,MAAM,IAAI,WAAW,CAAC;YACpB,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,WAAW,MAAM,CAAC,IAAI,wDAAwD;SACxF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CACrC,IAAmE,CACpE,CAAC;IACF,MAAM,MAAM,GACV,MAAM,KAAK,KAAK;QAChB,CAAC,OAAO,MAAM,KAAK,QAAQ;YACzB,MAAM,KAAK,IAAI;YACf,SAAS,IAAI,MAAM;YACnB,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,MAAM,IAAI,WAAW,CAAC;QACpB,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE,GAAG;QACX,OAAO,EACL,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,EAAE,MAAM;YAC1C,CAAC,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC,WAAW,MAAM,CAAC,IAAI,sBAAsB;KACnD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CACzB,MAAiB,EACjB,IAAsB,EACtB,MAAqB;IAErB,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5B,IACE,MAAM,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS;QACtC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EACtC,CAAC;QACD,MAAM,IAAI,WAAW,CAAC;YACpB,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,oBAAoB,MAAM,CAAC,GAAG,kCAAkC;YACzE,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY;aACvC;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,WAAW,CAAC;YACpB,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,oBAAoB,MAAM,CAAC,GAAG,0CAA0C;YACjF,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,MAAM,EAAE,MAAM,CAAC,IAAI;aACpB;SACF,CAAC,CAAC;IACL,CAAC;IAED,IACE,MAAM,CAAC,WAAW;QAClB,IAAI,CAAC,WAAW;QAChB,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,EACvC,CAAC;QACD,MAAM,IAAI,WAAW,CAAC;YACpB,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,oBAAoB,MAAM,CAAC,GAAG,kDAAkD;YACzF,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI,CAAC,WAAW;gBAC1B,MAAM,EAAE,MAAM,CAAC,WAAW;aAC3B;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAkB;IAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAE5C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,WAAW,CAAC;YACpB,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,qCAAqC;SAC/C,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAkB;IAC3C,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAiB,EAAE,CAAC,KAAK,YAAY,IAAI,CAAC,CAAC;IAC7E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,WAAW,CAAC;YACpB,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,0DAA0D;SACpE,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAU;IACpC,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,IAAI,IAAI,0BAA0B;QACpD,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAAa,EAAE,IAAmB;IACtD,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;KACnC,CAAC;IACF,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;QAClB,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC/C,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;QACxC,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG;QAC3B,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;QACjC,OAAO,YAAY,CACjB;YACE,KAAK,EAAE;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnE;SACF,EACD,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CACzB,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CACjB;QACE,KAAK,EAAE;YACL,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,uBAAuB;SACjC;KACF,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,YAAY,IAAI,MAAM,EAAE,CAAC;QAC5D,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;IAED,OAAO,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,WAAW,CAAC,KAAiC;IACpD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,KAAK,CAAC,IAAI,KAAK,QAAQ,CACxB,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beignet/core",
3
- "version": "0.0.23",
3
+ "version": "0.0.25",
4
4
  "type": "module",
5
5
  "description": "Core framework primitives for Beignet",
6
6
  "exports": {
@@ -182,7 +182,9 @@
182
182
  "bugs": "https://github.com/taylorbryant/beignet/issues",
183
183
  "sideEffects": [
184
184
  "./dist/client-only.js",
185
- "./dist/server-only.js"
185
+ "./dist/server-only.js",
186
+ "./src/client-only.ts",
187
+ "./src/server-only.ts"
186
188
  ],
187
189
  "publishConfig": {
188
190
  "access": "public"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: app-architecture
3
- description: "Build Beignet app feature slices with @beignet/core primitives: schemas, contracts, use cases, app errors, ports, policies, context, providers, jobs, schedules, tasks, outbox, mail, uploads, and tests. Use when adding or fixing Beignet application behavior, dependency boundaries, app-facing ports, authorization, workflow primitives, or core subpath imports."
3
+ description: "Build Beignet app feature slices with @beignet/core primitives: schemas, contracts, use cases, app errors, ports, policies, context, providers, domain events, listeners, jobs, schedules, tasks, notifications, outbox, mail, uploads, seeds, tests, and explicit core subpath imports. Use when adding or fixing Beignet application behavior, dependency boundaries, app-facing ports, authorization, workflow primitives, or app-bound lib builders."
4
4
  ---
5
5
 
6
6
  # Beignet App Architecture
@@ -26,15 +26,25 @@ features/<feature>/
26
26
  schemas.ts
27
27
  routes.ts
28
28
  use-cases/
29
+ domain/
29
30
  ports.ts
30
31
  policy.ts
31
32
  client/
32
33
  components/
34
+ jobs/
35
+ listeners/
36
+ notifications/
37
+ schedules/
38
+ tasks/
39
+ uploads/
40
+ seeds/
33
41
  tests/
34
42
  factories/
35
43
  ```
36
44
 
37
- Small features do not need every file. Add folders when the concern exists.
45
+ Small features do not need every file. The starter ships a lean subset;
46
+ workflow folders, `lib/` builders, and central registries appear when a
47
+ generator or deliberate feature change introduces that concern.
38
48
 
39
49
  ## Core Boundaries
40
50
 
@@ -129,17 +139,34 @@ feature client modules.
129
139
  Feature-owned workflow definitions belong under the feature:
130
140
 
131
141
  ```txt
142
+ features/<feature>/domain/events/
132
143
  features/<feature>/jobs/
144
+ features/<feature>/listeners/
133
145
  features/<feature>/schedules/
134
146
  features/<feature>/notifications/
135
147
  features/<feature>/tasks/
136
148
  features/<feature>/uploads/
149
+ features/<feature>/seeds/
137
150
  ```
138
151
 
139
152
  Small existing apps may use feature-root `jobs.ts` or `schedules.ts`; follow
140
153
  local style unless migrating deliberately. Central registries and service
141
154
  contexts live under `server/`.
142
155
 
156
+ Context-free declarations stay top-level, such as `defineEvent(...)`.
157
+ Context-bound definitions should use app-bound builders created once in `lib/`,
158
+ for example `createJobs<AppContext>()`, `createListeners<AppContext>()`,
159
+ `createSchedules<AppContext>()`, `createNotifications<AppContext>()`, and
160
+ `createTasks<AppContext>()`.
161
+
162
+ Register workflow artifacts explicitly:
163
+
164
+ - listeners through `registerListeners(...)` in provider or infra wiring
165
+ - schedules in `server/schedules.ts`
166
+ - tasks in `server/tasks.ts`
167
+ - outbox events and jobs in `server/outbox.ts`
168
+ - seeds through the app's seed entrypoint, usually `infra/db/seed.ts`
169
+
143
170
  Providers should not start unbounded background loops on server boot. Expose
144
171
  cron routes, worker entrypoints, task runners, schedule runners, or outbox
145
172
  drains instead.
@@ -3,5 +3,7 @@
3
3
  *
4
4
  * Host frameworks may provide their own runtime-only enforcement. This marker
5
5
  * is intentionally a no-op so Beignet can enforce intent through `beignet lint`.
6
+ * Import it for side effects at the top of client-only modules:
7
+ * `import "@beignet/core/client-only";`.
6
8
  */
7
9
  export const beignetClientOnly = true;
@@ -24,6 +24,7 @@ export type ProviderPackageVariantMetadata = {
24
24
  displayName?: string;
25
25
  env?: readonly string[];
26
26
  requiredEnv?: readonly string[];
27
+ requiredTables?: readonly string[];
27
28
  registration?: ProviderPackageRegistrationMetadata;
28
29
  };
29
30
 
@@ -33,6 +34,7 @@ export type ProviderPackageMetadata = {
33
34
  appPorts?: readonly ProviderPackagePortMetadata[];
34
35
  env?: readonly string[];
35
36
  requiredEnv?: readonly string[];
37
+ requiredTables?: readonly string[];
36
38
  registration?: ProviderPackageRegistrationMetadata;
37
39
  variants?: readonly ProviderPackageVariantMetadata[];
38
40
  watchers?: readonly string[];
@@ -100,6 +102,13 @@ export function parseProviderPackageMetadata(
100
102
  }
101
103
  }
102
104
 
105
+ const requiredTables = parseStringArray(
106
+ input.requiredTables,
107
+ "beignet.provider.requiredTables",
108
+ issues,
109
+ );
110
+ if (requiredTables !== undefined) metadata.requiredTables = requiredTables;
111
+
103
112
  const watchers = parseStringArray(
104
113
  input.watchers,
105
114
  "beignet.provider.watchers",
@@ -135,6 +144,13 @@ export function parseProviderPackageMetadata(
135
144
  "must not be set when beignet.provider.variants is present; declare registration on each variant instead",
136
145
  });
137
146
  }
147
+ if (input.requiredTables !== undefined) {
148
+ issues.push({
149
+ path: "beignet.provider.requiredTables",
150
+ message:
151
+ "must not be set when beignet.provider.variants is present; declare requiredTables on each variant instead",
152
+ });
153
+ }
138
154
  }
139
155
 
140
156
  if (issues.length > 0) {
@@ -275,6 +291,12 @@ function parseVariants(
275
291
  }
276
292
  }
277
293
 
294
+ const requiredTables = parseStringArray(
295
+ entry.requiredTables,
296
+ `${entryPath}.requiredTables`,
297
+ issues,
298
+ );
299
+
278
300
  const registration = parseRegistration(
279
301
  entry.registration,
280
302
  issues,
@@ -286,6 +308,7 @@ function parseVariants(
286
308
  if (displayName !== undefined) variant.displayName = displayName;
287
309
  if (env !== undefined) variant.env = env;
288
310
  if (requiredEnv !== undefined) variant.requiredEnv = requiredEnv;
311
+ if (requiredTables !== undefined) variant.requiredTables = requiredTables;
289
312
  if (registration !== undefined) variant.registration = registration;
290
313
  parsed.push(variant);
291
314
  }
@@ -9,7 +9,8 @@ import type { HttpRequestLike, ServerHook } from "../types.js";
9
9
  */
10
10
  export interface CorsConfig {
11
11
  /**
12
- * Allowed origins. Use `"*"` to allow any origin.
12
+ * Allowed origins. Use `"*"` only for non-credentialed requests.
13
+ * Credentialed CORS requires an explicit origin allow-list.
13
14
  */
14
15
  origins?: string[] | "*";
15
16
  /**
@@ -33,6 +34,27 @@ const DEFAULT_CORS: Required<CorsConfig> = {
33
34
  credentials: false,
34
35
  };
35
36
 
37
+ function resolveCorsConfig(config: CorsConfig): Required<CorsConfig> {
38
+ const resolved = {
39
+ origins: config.origins ?? DEFAULT_CORS.origins,
40
+ methods: config.methods ?? DEFAULT_CORS.methods,
41
+ headers: config.headers ?? DEFAULT_CORS.headers,
42
+ credentials: config.credentials ?? DEFAULT_CORS.credentials,
43
+ };
44
+
45
+ if (
46
+ resolved.credentials &&
47
+ (resolved.origins === "*" ||
48
+ (Array.isArray(resolved.origins) && resolved.origins.includes("*")))
49
+ ) {
50
+ throw new Error(
51
+ 'Credentialed CORS cannot use a wildcard origin. Use origins: ["https://app.example.com"] with credentials: true.',
52
+ );
53
+ }
54
+
55
+ return resolved;
56
+ }
57
+
36
58
  function appendVaryOrigin(headers: Record<string, string>): void {
37
59
  const varyKey =
38
60
  Object.keys(headers).find((key) => key.toLowerCase() === "vary") ?? "Vary";
@@ -46,26 +68,22 @@ function appendVaryOrigin(headers: Record<string, string>): void {
46
68
  /**
47
69
  * Apply CORS response headers to a mutable header record.
48
70
  *
49
- * When credentials are enabled with wildcard origins, the request origin is
50
- * reflected and `Vary: Origin` is appended.
71
+ * Credentialed CORS rejects wildcard origins. Use an explicit origin allow-list
72
+ * when cookies or authorization headers are allowed cross-origin.
51
73
  */
52
74
  export function applyCorsHeaders(
53
75
  headers: Record<string, string>,
54
76
  req: HttpRequestLike,
55
77
  corsConfig: CorsConfig,
56
78
  ): void {
57
- const origins = corsConfig.origins ?? DEFAULT_CORS.origins;
58
- const methods = corsConfig.methods ?? DEFAULT_CORS.methods;
59
- const allowedHeaders = corsConfig.headers ?? DEFAULT_CORS.headers;
60
- const credentials = corsConfig.credentials ?? DEFAULT_CORS.credentials;
79
+ const {
80
+ origins,
81
+ methods,
82
+ headers: allowedHeaders,
83
+ credentials,
84
+ } = resolveCorsConfig(corsConfig);
61
85
 
62
- if (credentials && origins === "*") {
63
- const requestOrigin = req.headers.get("Origin");
64
- if (requestOrigin) {
65
- headers["Access-Control-Allow-Origin"] = requestOrigin;
66
- appendVaryOrigin(headers);
67
- }
68
- } else if (origins === "*") {
86
+ if (origins === "*") {
69
87
  headers["Access-Control-Allow-Origin"] = "*";
70
88
  } else if (Array.isArray(origins)) {
71
89
  const requestOrigin = req.headers.get("Origin");
@@ -90,12 +108,14 @@ export function applyCorsHeaders(
90
108
  * decorated in `beforeSend`.
91
109
  */
92
110
  export function createCorsHooks<Ctx>(config: CorsConfig): ServerHook<Ctx> {
111
+ const corsConfig = resolveCorsConfig(config);
112
+
93
113
  return {
94
114
  name: "cors",
95
115
  onRequest: ({ req }) => {
96
116
  if (req.method !== "OPTIONS") return undefined;
97
117
  const headers: Record<string, string> = {};
98
- applyCorsHeaders(headers, req, config);
118
+ applyCorsHeaders(headers, req, corsConfig);
99
119
  return {
100
120
  status: 204,
101
121
  headers,
@@ -104,7 +124,7 @@ export function createCorsHooks<Ctx>(config: CorsConfig): ServerHook<Ctx> {
104
124
  },
105
125
  beforeSend: ({ req, response }) => {
106
126
  const headers = { ...(response.headers ?? {}) };
107
- applyCorsHeaders(headers, req, config);
127
+ applyCorsHeaders(headers, req, corsConfig);
108
128
  return {
109
129
  ...response,
110
130
  headers,
@@ -31,9 +31,10 @@ type EarlyRateLimitScope = Exclude<RateLimitScope, "user">;
31
31
  /**
32
32
  * Strategy for resolving the client IP used by `ip`-scoped limits.
33
33
  *
34
- * - `"x-forwarded-for-last"` (default): the last `x-forwarded-for` entry.
35
- * This is the address appended by the platform's trusted reverse proxy and
36
- * cannot be chosen by the client.
34
+ * - `"none"` (default): do not trust request headers for IP resolution.
35
+ * - `"x-forwarded-for-last"`: the last `x-forwarded-for` entry. Use this only
36
+ * when the app is always behind a trusted reverse proxy that appends the
37
+ * socket address.
37
38
  * - `"x-forwarded-for-first"`: the first `x-forwarded-for` entry. This value
38
39
  * is client-controlled, so only use it when a trusted edge normalizes the
39
40
  * header before it reaches the app.
@@ -41,6 +42,7 @@ type EarlyRateLimitScope = Exclude<RateLimitScope, "user">;
41
42
  * platform-specific headers such as `cf-connecting-ip`.
42
43
  */
43
44
  export type RateLimitIpSource =
45
+ | "none"
44
46
  | "x-forwarded-for-last"
45
47
  | "x-forwarded-for-first"
46
48
  | ((req: HttpRequestLike) => string | undefined);
@@ -71,8 +73,8 @@ export interface RateLimitOptions<Ctx> {
71
73
  /**
72
74
  * Resolve the client IP for `ip`-scoped limits.
73
75
  *
74
- * Defaults to `"x-forwarded-for-last"`, the entry appended by the
75
- * platform's trusted proxy. Pass a function for platform-specific headers.
76
+ * Defaults to `"none"`. Pass an explicit trusted proxy strategy or a
77
+ * function for platform-specific headers.
76
78
  */
77
79
  ipSource?: RateLimitIpSource;
78
80
  }
@@ -93,6 +95,10 @@ function resolveClientIp(
93
95
  return ipSource(req) || undefined;
94
96
  }
95
97
 
98
+ if (ipSource === "none") {
99
+ return undefined;
100
+ }
101
+
96
102
  const entries = parseForwardedFor(req);
97
103
  if (entries.length === 0) {
98
104
  return undefined;
@@ -215,7 +221,7 @@ async function enforceRateLimit(
215
221
  export function createRateLimitHooks<Ctx extends CtxWithRateLimit>(
216
222
  options: RateLimitOptions<Ctx> = {},
217
223
  ): ServerHook<Ctx, RateLimitPorts> {
218
- const ipSource = options.ipSource ?? "x-forwarded-for-last";
224
+ const ipSource = options.ipSource ?? "none";
219
225
  const getClientIp = (req: HttpRequestLike) => resolveClientIp(req, ipSource);
220
226
 
221
227
  return {