@beignet/next 0.0.51 → 0.0.53
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 +30 -0
- package/README.md +46 -20
- package/dist/index.d.ts +25 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +194 -64
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
- package/skills/routes-server/SKILL.md +14 -0
- package/src/index.ts +284 -94
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
# @beignet/next
|
|
2
2
|
|
|
3
|
+
## 0.0.53
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 6ef881c: Reject incompatible default route-binder inputs at compile time and classify
|
|
8
|
+
type-erased runtime mismatches as framework-owned validation errors. Generated
|
|
9
|
+
resource cursors now remain optional at the request boundary and normalize to
|
|
10
|
+
nullable repository pagination state inside the use case.
|
|
11
|
+
- ce6a5f6: Require patched Next.js and Nodemailer releases, and use them in generated apps and SMTP provider setup.
|
|
12
|
+
- @beignet/web@0.0.53
|
|
13
|
+
|
|
14
|
+
## 0.0.52
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- b39bb6e: Clarify that Beignet applications require Node.js 22.12 or newer and can use
|
|
19
|
+
npm, pnpm, Yarn, or Bun for package management and framework commands.
|
|
20
|
+
- 9d52cb7: Generate apps with patched integration dependencies and require maintained
|
|
21
|
+
Next.js, Inngest, and Vercel Blob peer versions.
|
|
22
|
+
- 64dca8d: Bound webhook bodies, keep fallback errors private outside development and
|
|
23
|
+
tests, serialize snapshot-safe local storage operations, preserve ambient audit
|
|
24
|
+
correlation, surface provider shutdown failures, validate timer ranges, and
|
|
25
|
+
omit raw search and database queries from instrumentation. Release unread
|
|
26
|
+
storage bodies explicitly and bound provider-owned Redis shutdown.
|
|
27
|
+
- a50ef66: Send the parsed response-schema output from framework-neutral route handlers,
|
|
28
|
+
including transformed catalog error details.
|
|
29
|
+
- Updated dependencies [b39bb6e]
|
|
30
|
+
- Updated dependencies [a50ef66]
|
|
31
|
+
- @beignet/web@0.0.52
|
|
32
|
+
|
|
3
33
|
## 0.0.51
|
|
4
34
|
|
|
5
35
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# @beignet/next
|
|
2
2
|
|
|
3
|
-
> **Runtime:** Beignet requires Node.js 22.12 or newer. Bun
|
|
4
|
-
> supported for Beignet commands.
|
|
3
|
+
> **Runtime:** Beignet requires Node.js 22.12 or newer. Bun is optional.
|
|
5
4
|
|
|
6
5
|
> [!CAUTION]
|
|
7
6
|
> Beignet is experimental alpha software. The `0.0.x` package line is for early
|
|
@@ -26,6 +25,10 @@ request/response conversion.
|
|
|
26
25
|
npm install @beignet/next @beignet/core next
|
|
27
26
|
```
|
|
28
27
|
|
|
28
|
+
Beignet supports the maintained Next.js release lines: Next.js 15.5.24 or
|
|
29
|
+
newer within v15, and Next.js 16.3.3 or newer within v16. These floors follow
|
|
30
|
+
Next.js security releases; generated apps currently use Next.js 16.3.
|
|
31
|
+
|
|
29
32
|
### Optional add-ons
|
|
30
33
|
|
|
31
34
|
- `@beignet/core/openapi` for OpenAPI documentation
|
|
@@ -125,6 +128,12 @@ contract to a use case (`{ contract, useCase }`); the full
|
|
|
125
128
|
routes that own headers, streaming, or multi-status responses. Compose those
|
|
126
129
|
groups once in `server/routes.ts`:
|
|
127
130
|
|
|
131
|
+
The default binder passes through one request schema or merges object inputs
|
|
132
|
+
with path over body over query precedence. TypeScript rejects a default
|
|
133
|
+
binding whose inferred input does not satisfy the use case input; add an
|
|
134
|
+
explicit `input: (parts) => ...` mapper when the shapes differ or the use case
|
|
135
|
+
reads validated headers.
|
|
136
|
+
|
|
128
137
|
```typescript
|
|
129
138
|
// server/routes.ts
|
|
130
139
|
import { contractsFromRoutes, defineRoutes } from "@beignet/core/server";
|
|
@@ -262,11 +271,12 @@ export async function POST(req: Request) {
|
|
|
262
271
|
```
|
|
263
272
|
|
|
264
273
|
Native `Response` instances intentionally bypass JSON serialization and
|
|
265
|
-
response schema
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
274
|
+
response schema parsing. Use `{ status, body }` when you want Beignet to parse
|
|
275
|
+
and shape a JSON response through the contract schema; the schema's parsed
|
|
276
|
+
output becomes the wire body. Use `Response` when you want full transport
|
|
277
|
+
control. Because the Next adapter uses `@beignet/web` response conversion, an
|
|
278
|
+
explicit `ReadableStream` in a plain Beignet response remains a stream for
|
|
279
|
+
every media type, including `application/json` and structured `+json` types.
|
|
270
280
|
|
|
271
281
|
For Server-Sent Events, return
|
|
272
282
|
`createServerSentEventResponse(...)` from `@beignet/core/server`. Pass
|
|
@@ -694,14 +704,22 @@ The `server` option accepts any object exposing `createRequestContext` — a
|
|
|
694
704
|
`NextServer`, a core `ServerInstance`, or a test fake — so
|
|
695
705
|
`server: getServer` keeps working unchanged.
|
|
696
706
|
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
707
|
+
Full servers and minimal test fakes share one preflight boundary: generic
|
|
708
|
+
webhooks read the bounded raw body first, payment webhooks require the signature
|
|
709
|
+
header first, and neither resolves the server, runs hooks, or builds app context
|
|
710
|
+
before those controls. When the server exposes `rawRoute(...)` — real Beignet
|
|
711
|
+
servers do — requests that pass preflight then run inside the full hooks
|
|
712
|
+
pipeline. Rate limiting, CORS, logging, error reporting, and instrumentation
|
|
713
|
+
apply, the request appears in devtools, and the `pipeline` option supplies the
|
|
714
|
+
route identity and metadata for metadata-driven hooks. The pipeline receives a
|
|
715
|
+
rehydrated request while verification keeps the preflight raw-body text.
|
|
716
|
+
|
|
717
|
+
Both webhook helpers reject signed or generic raw bodies above 1 MiB with a 413
|
|
718
|
+
before server resolution, hooks, context creation, verification, or
|
|
719
|
+
fulfillment. Payment webhooks check for the configured signature header first:
|
|
720
|
+
an unsigned request returns 400 and its unread body is cancelled without being
|
|
721
|
+
parsed. Set `maxBodyBytes` when the provider's documented payload limit requires
|
|
722
|
+
a different bound.
|
|
705
723
|
|
|
706
724
|
```typescript
|
|
707
725
|
// app/api/webhooks/github/route.ts
|
|
@@ -732,7 +750,9 @@ export const { POST } = createWebhookRoute({
|
|
|
732
750
|
});
|
|
733
751
|
```
|
|
734
752
|
|
|
735
|
-
|
|
753
|
+
Oversized generic and signed payment bodies return 413. An unsigned payment
|
|
754
|
+
request returns 400 and its unread body is cancelled. Other body read failures
|
|
755
|
+
return 400 before context creation runs. Verification
|
|
736
756
|
failures return 400 so providers do not treat an invalid signature as a
|
|
737
757
|
fulfilled event. Context creation failures return 500. Handler failures return
|
|
738
758
|
500 so at-least-once webhook providers can retry.
|
|
@@ -1306,7 +1326,9 @@ app context from the real request with `server.createRequestContext(...)`,
|
|
|
1306
1326
|
verifies the event through a webhook definition or context-aware verifier,
|
|
1307
1327
|
validates the matching event payload schema, and delegates the event to your
|
|
1308
1328
|
app-owned handler. Verified event types outside the webhook catalog fail with a
|
|
1309
|
-
400 unless `allowUnknownEvents: true` is set.
|
|
1329
|
+
400 unless `allowUnknownEvents: true` is set. `maxBodyBytes` defaults to 1 MiB;
|
|
1330
|
+
larger bodies return 413 before server resolution, hooks, context creation, the
|
|
1331
|
+
verifier, or the handler.
|
|
1310
1332
|
|
|
1311
1333
|
### `createPaymentWebhookRoute(options): { POST }`
|
|
1312
1334
|
|
|
@@ -1315,14 +1337,18 @@ app context from the real request with `server.createRequestContext(...)`,
|
|
|
1315
1337
|
verifies the provider signature through
|
|
1316
1338
|
`ctx.ports.payments.verifyWebhook(...)`, and delegates the normalized event to
|
|
1317
1339
|
your app-owned handler. Prefer `createWebhookRoute(...)` for new non-payment
|
|
1318
|
-
webhook integrations.
|
|
1340
|
+
webhook integrations. `maxBodyBytes` defaults to 1 MiB; larger bodies return
|
|
1341
|
+
413 before server resolution, hooks, context creation, provider verification,
|
|
1342
|
+
or fulfillment when the configured signature header is present. Missing
|
|
1343
|
+
signatures take precedence, return 400, and cancel the unread body.
|
|
1319
1344
|
|
|
1320
1345
|
Operational helper error codes include `UPLOAD_NOT_FOUND`,
|
|
1321
1346
|
`INVALID_UPLOAD_ACTION`, `CRON_SECRET_NOT_CONFIGURED`, `UNAUTHORIZED`,
|
|
1322
|
-
`OUTBOX_DRAIN_FAILED`, `WEBHOOK_BODY_READ_FAILED`,
|
|
1347
|
+
`OUTBOX_DRAIN_FAILED`, `WEBHOOK_BODY_READ_FAILED`, `WEBHOOK_BODY_TOO_LARGE`,
|
|
1323
1348
|
`WEBHOOK_CONTEXT_FAILED`, `WEBHOOK_VERIFICATION_FAILED`,
|
|
1324
1349
|
`WEBHOOK_HANDLER_FAILED`, `PAYMENT_WEBHOOK_SIGNATURE_MISSING`,
|
|
1325
|
-
`PAYMENT_WEBHOOK_BODY_READ_FAILED`, `
|
|
1350
|
+
`PAYMENT_WEBHOOK_BODY_READ_FAILED`, `PAYMENT_WEBHOOK_BODY_TOO_LARGE`,
|
|
1351
|
+
`PAYMENT_WEBHOOK_CONTEXT_FAILED`,
|
|
1326
1352
|
`PAYMENT_WEBHOOK_VERIFICATION_FAILED`, `PAYMENT_WEBHOOK_HANDLER_FAILED`, and
|
|
1327
1353
|
`SCHEDULE_FAILED`.
|
|
1328
1354
|
|
package/dist/index.d.ts
CHANGED
|
@@ -394,6 +394,15 @@ export type CreateWebhookRouteOptions<Ctx extends WebhookRouteContext, Webhook e
|
|
|
394
394
|
* @default false
|
|
395
395
|
*/
|
|
396
396
|
allowUnknownEvents?: AllowUnknownEvents;
|
|
397
|
+
/**
|
|
398
|
+
* Maximum raw webhook body size in bytes.
|
|
399
|
+
*
|
|
400
|
+
* Bodies above this limit are rejected before server resolution, hooks,
|
|
401
|
+
* context creation, verification, or fulfillment.
|
|
402
|
+
*
|
|
403
|
+
* @default 1048576
|
|
404
|
+
*/
|
|
405
|
+
maxBodyBytes?: number;
|
|
397
406
|
/**
|
|
398
407
|
* App-owned fulfillment handler. The webhook is verified before this runs.
|
|
399
408
|
*
|
|
@@ -483,6 +492,16 @@ export type CreatePaymentWebhookRouteOptions<Ctx extends PaymentWebhookRouteCont
|
|
|
483
492
|
* @default "stripe-signature"
|
|
484
493
|
*/
|
|
485
494
|
signatureHeader?: string;
|
|
495
|
+
/**
|
|
496
|
+
* Maximum raw webhook body size in bytes.
|
|
497
|
+
*
|
|
498
|
+
* Signed bodies above this limit are rejected before provider verification
|
|
499
|
+
* or fulfillment, and before server resolution, hooks, or context creation.
|
|
500
|
+
* A missing signature takes precedence and cancels the unread body.
|
|
501
|
+
*
|
|
502
|
+
* @default 1048576
|
|
503
|
+
*/
|
|
504
|
+
maxBodyBytes?: number;
|
|
486
505
|
/**
|
|
487
506
|
* App-owned fulfillment handler. The webhook is verified before this runs.
|
|
488
507
|
*
|
|
@@ -685,8 +704,9 @@ export declare function createOutboxDrainRoute<Ctx extends OutboxDrainContext>(o
|
|
|
685
704
|
/**
|
|
686
705
|
* Create a Next.js POST handler for generic verified inbound webhooks.
|
|
687
706
|
*
|
|
688
|
-
* The route reads the raw request body
|
|
689
|
-
* builds app context from
|
|
707
|
+
* The route bounds and reads the raw request body before resolving the server,
|
|
708
|
+
* then normalizes request headers and builds app context from a rehydrated
|
|
709
|
+
* request through
|
|
690
710
|
* `server.createRequestContext(...)`, verifies the event through the webhook
|
|
691
711
|
* definition or a context-aware verifier, validates the matching event
|
|
692
712
|
* payload schema, and delegates fulfillment to app code.
|
|
@@ -697,8 +717,9 @@ export declare function createWebhookRoute<Ctx extends WebhookRouteContext, Webh
|
|
|
697
717
|
/**
|
|
698
718
|
* Create a Next.js POST handler for provider-verified payment webhooks.
|
|
699
719
|
*
|
|
700
|
-
* The route
|
|
701
|
-
* body
|
|
720
|
+
* The route checks the provider signature header and bounds the raw request
|
|
721
|
+
* body before resolving the server, then builds app context from a rehydrated
|
|
722
|
+
* request through
|
|
702
723
|
* `server.createRequestContext(...)`, verifies the event through
|
|
703
724
|
* `ctx.ports.payments`, and then delegates fulfillment to app code. This is the canonical helper for Beignet
|
|
704
725
|
* billing flows backed by `PaymentsPort`. Keep this route on the Node.js
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,KAAK,kBAAkB,EAGvB,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EACV,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,kBAAkB,EAClB,2BAA2B,EAC3B,eAAe,EAChB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,OAAO,EACP,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,cAAc,EACd,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAEvB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAGhC,KAAK,WAAW,GAAG,eAAe,CAChC,OAAO,EAEP,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,EAC1B,QAAQ,EAER,GAAG,EAEH,GAAG,CACJ,CAAC;AAEF,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEtC,KAAK,YAAY,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AAwFrE;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,gBAAgB,SAAS,MAAM,GAAG,KAAK,IAAI,IAAI,CAC1E,YAAY,CAAC,gBAAgB,CAAC,EAC9B,SAAS,CACV,GAAG;IACF;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9C;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;CACrD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAChB,MAAM,EACN;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CACF,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,aAAa,EAAE,CAAC,CAAC;IAChE;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3C;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC,CAAC;IACpE;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,6BAA6B,GAAG;IAC1C;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC;IAC9C;;OAEG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC,CAAC;CACrE,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC,CAAC;IACpE;;;;;;;OAOG;IACH,kBAAkB,CAAC,EACf,MAAM,GACN,QAAQ,GACR,YAAY,GACZ,CAAC,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC;CAC7E,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;CAC5C,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAClE,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,MAAM,CAAC,KAAK,EAAE;QACZ,IAAI,EAAE,QAAQ,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB,GAAG,OAAO,CAAC;CACb,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,CAAC,EAAE,0BAA0B,CAAC;IACtC,eAAe,CAAC,EAAE,0BAA0B,CAAC;IAC7C,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,aAAa,CAAC,EAAE,iBAAiB,CAAC;CACnC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,gBAAgB,CAAC;CACzB,CAAC;AAWF;;;GAGG;AACH,MAAM,MAAM,yBAAyB,GAAG,CACtC,IAAI,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,KAC3B,YAAY,CAAC,IAAI,CAAC,CAAC;AAExB;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAAG;IAChD,8EAA8E;IAC9E,KAAK,EAAE,yBAAyB,CAAC;IACjC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CAClD,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,mCAAmC,CAC7C,GAAG,SAAS,kBAAkB,IAC5B;IACF,8EAA8E;IAC9E,KAAK,EAAE,yBAAyB,CAAC;IACjC,4DAA4D;IAC5D,aAAa,EAAE,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IACvC,2EAA2E;IAC3E,QAAQ,EAAE,cAAc,GAAG,CAAC,MAAM,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;IAChE,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,YAAY,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAClD;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CAClD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,eAAe,CAAC,GAAG,IAAI;IACjC,oBAAoB,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CAC9D,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,6BAA6B,CAAC,GAAG,SAAS,kBAAkB,IAAI;IAC1E;;;;;OAKG;IACH,MAAM,EAAE,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C;;OAEG;IACH,QAAQ,EAAE,cAAc,CAAC;IACzB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAClD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;KACrC,CAAC;IACF;;OAEG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC,CAAC;CACrE,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAClE,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,QAAQ,CAAC,EAAE,2BAA2B,CAAC;IACvC,eAAe,CAAC,EAAE,2BAA2B,CAAC;IAC9C,aAAa,CAAC,EAAE,iBAAiB,CAAC;CACnC,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,kBAAkB,CAAC;CAC3B,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAClE,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,wBAAwB,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,gCAAgC,GACxC,QAAQ,GACR;IACE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GACD,SAAS,CAAC;AAEd,MAAM,MAAM,8BAA8B,CACxC,GAAG,SAAS,0BAA0B,IACpC;IACF,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,mBAAmB,CAAC;CAC5B,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAClE,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE;QACL,MAAM,CAAC,EAAE,kBAAkB,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,yBAAyB,GACjC,QAAQ,GACR;IACE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GACD,SAAS,CAAC;AAEd,MAAM,MAAM,sBAAsB,CAAC,GAAG,SAAS,mBAAmB,IAAI;IACpE,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,kBAAkB,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,uBAAuB,CACjC,GAAG,SAAS,mBAAmB,EAC/B,OAAO,SAAS,UAAU,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACvD,kBAAkB,SAAS,OAAO,IAChC;IACF,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,kBAAkB,SAAS,KAAK,GACnC,iBAAiB,CAAC,OAAO,CAAC,GAC1B,iBAAiB,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC;CAC/C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,yBAAyB,CACnC,GAAG,SAAS,mBAAmB,EAC/B,OAAO,SAAS,UAAU,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACvD,kBAAkB,SAAS,OAAO,GAAG,KAAK,IACxC;IACF;;;;;OAKG;IACH,MAAM,EAAE,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,MAAM,CAAC,EAAE,CACP,IAAI,EAAE,sBAAsB,CAAC,GAAG,CAAC,KAC9B,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC;IAC1C;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC;;;;OAIG;IACH,MAAM,CAAC,EAAE,CACP,IAAI,EAAE,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,kBAAkB,CAAC,KAC5D,OAAO,CAAC,yBAAyB,CAAC,GAAG,yBAAyB,CAAC;IACpE;;;;;OAKG;IACH,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;KACrC,CAAC;IACF;;OAEG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC,CAAC;CACrE,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,0BAA0B,CAAC,GAAG,SAAS,oBAAoB,IAAI;IACzE;;;;;OAKG;IACH,MAAM,EAAE,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C;;;OAGG;IACH,SAAS,EAAE,SAAS,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,CAAC;IAC/D;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;KACrC,CAAC;IACF;;OAEG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC,CAAC;CACrE,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gCAAgC,CAC1C,GAAG,SAAS,0BAA0B,IACpC;IACF;;;;;OAKG;IACH,MAAM,EAAE,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,MAAM,CAAC,EAAE,CACP,IAAI,EAAE,8BAA8B,CAAC,GAAG,CAAC,KAEvC,OAAO,CAAC,gCAAgC,CAAC,GACzC,gCAAgC,CAAC;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;KACrC,CAAC;IACF;;OAEG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC,CAAC;CACrE,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,MAAM,CAAC,EACH,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,GACtD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;CACnD,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU,CACzB,GAAG,EACH,KAAK,SAAS,QAAQ,GAAG,QAAQ,EACjC,YAAY,GAAG,IAAI;IAEnB;;OAEG;IACH,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC;;OAEG;IACH,KAAK,EAAE,CAAC,KAAK,SAAS,YAAY,EAChC,YAAY,EAAE,KAAK,KAChB;QACH,MAAM,EAAE,CACN,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,KACrC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;KAC1C,CAAC;IACF;;;;;;;;;;;;OAYG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK;QAChC,MAAM,EAAE,CACN,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,kBAAkB,CAAC,KACjC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;KAC1C,CAAC;IACF;;OAEG;IACH,qBAAqB,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1C;;OAEG;IACH,oBAAoB,EAAE,cAAc,CAClC,GAAG,EACH,KAAK,EACL,YAAY,CACb,CAAC,sBAAsB,CAAC,CAAC;IAC1B;;;;;OAKG;IACH,oBAAoB,EAAE,cAAc,CAClC,GAAG,EACH,KAAK,EACL,YAAY,CACb,CAAC,sBAAsB,CAAC,CAAC;IAC1B;;;;;;OAMG;IACH,iBAAiB,EAAE,cAAc,CAC/B,GAAG,EACH,KAAK,EACL,YAAY,CACb,CAAC,mBAAmB,CAAC,CAAC;IACvB;;OAEG;IACH,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IACnC;;OAEG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;CACd;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,OAAO,IAAI,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1C,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7C,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1C,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC1C,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAC5C,YAAY,EAAE,MAAM,YAAY,CAAC,OAAO,CAAC,GACxC,gBAAgB,CAAC,OAAO,CAAC,CAgB3B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,SAAS,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,EACnE,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,oBAAoB,CAe7D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,SAAS,QAAQ,EACtD,UAAU,EAAE,gBAAgB,CAC1B,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CACnD,EACD,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,SAAS,EAC7C,WAAW,GAAE,cAA6B,GACzC;IACD,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC1C,CAsBA;AAQD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,gBAAgB,CAAC,MAAM,CAAM,GACrC,MAAM,CAcR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,SAAS,MAAM,GAAG,KAAK,EAC5E,MAAM,GAAE,gBAAgB,CAAC,gBAAgB,CAAM,2DAYhD;AA4LD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,YAAY,EAAE,EAClC,OAAO,EAAE,2BAA2B,GACnC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CA6BrC;AAyED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,6BAAkC,GAC1C,CAAC,GAAG,EAAE,OAAO,KAAK,QAAQ,CAgB5B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,EAClC,OAAO,GAAE,yBAA8B,GACtC;IACD,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC3C,CAqBA;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,EAClC,OAAO,GAAE,wBAA6B,GACrC;IACD,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,kBAAkB,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CACrE,CAyCA;AAgVD;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,mCAAmC,GAC3C,kBAAkB,CAqBpB;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,SAAS,kBAAkB,EACzE,OAAO,EAAE,mCAAmC,CAAC,GAAG,CAAC,GAChD,MAAM,IAAI,CA0DZ;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,SAAS,kBAAkB,EACnE,OAAO,EAAE,6BAA6B,CAAC,GAAG,CAAC,GAC1C;IACD,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC3C,CAmHA;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,SAAS,mBAAmB,EAC/B,OAAO,SAAS,UAAU,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACvD,kBAAkB,SAAS,OAAO,GAAG,KAAK,EAE1C,OAAO,EAAE,yBAAyB,CAAC,GAAG,EAAE,OAAO,EAAE,kBAAkB,CAAC,GACnE;IACD,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC3C,CA2KA;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,SAAS,0BAA0B,EAEtC,OAAO,EAAE,gCAAgC,CAAC,GAAG,CAAC,GAC7C;IACD,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC3C,CAkKA;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,SAAS,oBAAoB,EAClE,OAAO,EAAE,0BAA0B,CAAC,GAAG,CAAC,GACvC;IACD,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC3C,CAmJA;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EACH,KAAK,SAAS,QAAQ,GAAG,QAAQ,EACjC,YAAY,GAAG,IAAI,EACnB,MAAM,SAAS,SAAS,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,QAAQ,CAAC,GAAG,CAAC,EAAE,EAClE,SAAS,SAAS,SAAS,WAAW,EAAE,GAAG,SAAS,WAAW,EAAE,EAEjE,OAAO,EAAE,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,GACxE,OAAO,CACR,UAAU,CAAC,GAAG,EAAE,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,CACrE,CA6DA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -241,31 +241,51 @@ async function storageResponse(storage, req, basePath, options, includeBody) {
|
|
|
241
241
|
if (!key)
|
|
242
242
|
return storageNotFoundResponse();
|
|
243
243
|
const object = await storage.get(key);
|
|
244
|
-
if (object
|
|
244
|
+
if (!object) {
|
|
245
245
|
return storageNotFoundResponse();
|
|
246
246
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
if (!headers.has("x-content-type-options")) {
|
|
251
|
-
headers.set("x-content-type-options", "nosniff");
|
|
252
|
-
}
|
|
253
|
-
if (object.contentType && !headers.has("content-type")) {
|
|
254
|
-
headers.set("content-type", object.contentType);
|
|
247
|
+
if (object.visibility !== "public") {
|
|
248
|
+
await object.cancel().catch(() => undefined);
|
|
249
|
+
return storageNotFoundResponse();
|
|
255
250
|
}
|
|
256
|
-
|
|
257
|
-
const
|
|
258
|
-
|
|
259
|
-
|
|
251
|
+
try {
|
|
252
|
+
const headers = new Headers(resolveHeaders(options.headers, req));
|
|
253
|
+
headers.set("content-length", String(object.size));
|
|
254
|
+
headers.set("last-modified", object.lastModified.toUTCString());
|
|
255
|
+
if (!headers.has("x-content-type-options")) {
|
|
256
|
+
headers.set("x-content-type-options", "nosniff");
|
|
257
|
+
}
|
|
258
|
+
if (object.contentType && !headers.has("content-type")) {
|
|
259
|
+
headers.set("content-type", object.contentType);
|
|
260
|
+
}
|
|
261
|
+
if (!headers.has("content-disposition")) {
|
|
262
|
+
const contentDisposition = resolveStorageContentDisposition(options, req, object);
|
|
263
|
+
if (contentDisposition) {
|
|
264
|
+
headers.set("content-disposition", contentDisposition);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
if (object.cacheControl && !headers.has("cache-control")) {
|
|
268
|
+
headers.set("cache-control", object.cacheControl);
|
|
269
|
+
}
|
|
270
|
+
if (!includeBody) {
|
|
271
|
+
await object.cancel();
|
|
272
|
+
return new Response(null, { status: 200, headers });
|
|
273
|
+
}
|
|
274
|
+
const body = object.stream();
|
|
275
|
+
try {
|
|
276
|
+
return new Response(body, { status: 200, headers });
|
|
277
|
+
}
|
|
278
|
+
catch (error) {
|
|
279
|
+
await body.cancel(error).catch(() => undefined);
|
|
280
|
+
throw error;
|
|
260
281
|
}
|
|
261
282
|
}
|
|
262
|
-
|
|
263
|
-
|
|
283
|
+
catch (error) {
|
|
284
|
+
if (!object.bodyUsed) {
|
|
285
|
+
await object.cancel(error).catch(() => undefined);
|
|
286
|
+
}
|
|
287
|
+
throw error;
|
|
264
288
|
}
|
|
265
|
-
return new Response(includeBody ? object.stream() : null, {
|
|
266
|
-
status: 200,
|
|
267
|
-
headers,
|
|
268
|
-
});
|
|
269
289
|
}
|
|
270
290
|
function currentRequestServer(req) {
|
|
271
291
|
const url = new URL(req.url);
|
|
@@ -466,12 +486,84 @@ function toHttpResponseHeaders(headers) {
|
|
|
466
486
|
* creation then receives a rehydrated request carrying the same method, URL,
|
|
467
487
|
* headers, and raw body.
|
|
468
488
|
*/
|
|
469
|
-
function
|
|
470
|
-
return
|
|
489
|
+
function rehydrateWebhookRequest(req, rawBody) {
|
|
490
|
+
return new Request(req.url, {
|
|
471
491
|
method: req.method,
|
|
472
492
|
headers: req.headers,
|
|
473
493
|
body: rawBody,
|
|
474
|
-
|
|
494
|
+
signal: req.signal,
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
const DEFAULT_WEBHOOK_BODY_MAX_BYTES = 1024 * 1024;
|
|
498
|
+
class WebhookBodyTooLargeError extends Error {
|
|
499
|
+
maxBytes;
|
|
500
|
+
constructor(maxBytes) {
|
|
501
|
+
super("Webhook body exceeds the configured size limit.");
|
|
502
|
+
this.maxBytes = maxBytes;
|
|
503
|
+
this.name = "WebhookBodyTooLargeError";
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
function webhookBodyLimit(maxBytes) {
|
|
507
|
+
const resolved = maxBytes ?? DEFAULT_WEBHOOK_BODY_MAX_BYTES;
|
|
508
|
+
if (!Number.isFinite(resolved) || resolved <= 0) {
|
|
509
|
+
throw new Error("Webhook maxBodyBytes must be a positive number.");
|
|
510
|
+
}
|
|
511
|
+
return resolved;
|
|
512
|
+
}
|
|
513
|
+
function cancelWebhookBody(source, reason) {
|
|
514
|
+
try {
|
|
515
|
+
void source.cancel(reason).catch(() => { });
|
|
516
|
+
}
|
|
517
|
+
catch {
|
|
518
|
+
// Cancellation is best-effort and must not replace the selected response.
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
function cancelWebhookRequestBody(req, reason) {
|
|
522
|
+
const body = req.raw?.body ?? nativeRequestOf(req).body;
|
|
523
|
+
if (body)
|
|
524
|
+
cancelWebhookBody(body, reason);
|
|
525
|
+
}
|
|
526
|
+
async function readWebhookBody(req, maxBytes) {
|
|
527
|
+
const body = req.raw?.body ?? nativeRequestOf(req).body;
|
|
528
|
+
const contentLength = req.headers.get("content-length");
|
|
529
|
+
if (contentLength !== null) {
|
|
530
|
+
const declaredBytes = Number(contentLength);
|
|
531
|
+
if (Number.isFinite(declaredBytes) && declaredBytes > maxBytes) {
|
|
532
|
+
const error = new WebhookBodyTooLargeError(maxBytes);
|
|
533
|
+
if (body)
|
|
534
|
+
cancelWebhookBody(body, error);
|
|
535
|
+
throw error;
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
if (!body) {
|
|
539
|
+
const text = await req.text();
|
|
540
|
+
if (new TextEncoder().encode(text).byteLength > maxBytes) {
|
|
541
|
+
throw new WebhookBodyTooLargeError(maxBytes);
|
|
542
|
+
}
|
|
543
|
+
return text;
|
|
544
|
+
}
|
|
545
|
+
const reader = body.getReader();
|
|
546
|
+
const decoder = new TextDecoder();
|
|
547
|
+
let receivedBytes = 0;
|
|
548
|
+
let text = "";
|
|
549
|
+
try {
|
|
550
|
+
while (true) {
|
|
551
|
+
const result = await reader.read();
|
|
552
|
+
if (result.done)
|
|
553
|
+
break;
|
|
554
|
+
receivedBytes += result.value.byteLength;
|
|
555
|
+
if (receivedBytes > maxBytes) {
|
|
556
|
+
const error = new WebhookBodyTooLargeError(maxBytes);
|
|
557
|
+
cancelWebhookBody(reader, error);
|
|
558
|
+
throw error;
|
|
559
|
+
}
|
|
560
|
+
text += decoder.decode(result.value, { stream: true });
|
|
561
|
+
}
|
|
562
|
+
return text + decoder.decode();
|
|
563
|
+
}
|
|
564
|
+
finally {
|
|
565
|
+
reader.releaseLock();
|
|
566
|
+
}
|
|
475
567
|
}
|
|
476
568
|
function headersToRecord(headers) {
|
|
477
569
|
const result = {};
|
|
@@ -863,23 +955,31 @@ export function createOutboxDrainRoute(options) {
|
|
|
863
955
|
/**
|
|
864
956
|
* Create a Next.js POST handler for generic verified inbound webhooks.
|
|
865
957
|
*
|
|
866
|
-
* The route reads the raw request body
|
|
867
|
-
* builds app context from
|
|
958
|
+
* The route bounds and reads the raw request body before resolving the server,
|
|
959
|
+
* then normalizes request headers and builds app context from a rehydrated
|
|
960
|
+
* request through
|
|
868
961
|
* `server.createRequestContext(...)`, verifies the event through the webhook
|
|
869
962
|
* definition or a context-aware verifier, validates the matching event
|
|
870
963
|
* payload schema, and delegates fulfillment to app code.
|
|
871
964
|
*/
|
|
872
965
|
export function createWebhookRoute(options) {
|
|
873
|
-
const
|
|
966
|
+
const maxBodyBytes = webhookBodyLimit(options.maxBodyBytes);
|
|
967
|
+
const preflightBodies = new WeakMap();
|
|
968
|
+
const handleWebhookRequest = async ({ req, ctx, rawBody: providedRawBody, }) => {
|
|
874
969
|
const nativeReq = nativeRequestOf(req);
|
|
875
970
|
const headers = resolveHeaders(options.headers, nativeReq);
|
|
876
971
|
const requestHeaders = headersToRecord(new Headers(req.headers));
|
|
877
|
-
let rawBody;
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
972
|
+
let rawBody = providedRawBody ?? preflightBodies.get(nativeReq);
|
|
973
|
+
preflightBodies.delete(nativeReq);
|
|
974
|
+
if (rawBody === undefined) {
|
|
975
|
+
try {
|
|
976
|
+
rawBody = await readWebhookBody(req, maxBodyBytes);
|
|
977
|
+
}
|
|
978
|
+
catch (error) {
|
|
979
|
+
return error instanceof WebhookBodyTooLargeError
|
|
980
|
+
? operationalErrorJson("WEBHOOK_BODY_TOO_LARGE", "Webhook body exceeds the configured size limit.", 413, headers)
|
|
981
|
+
: operationalErrorJson("WEBHOOK_BODY_READ_FAILED", "Webhook body read failed.", 400, headers);
|
|
982
|
+
}
|
|
883
983
|
}
|
|
884
984
|
let event;
|
|
885
985
|
try {
|
|
@@ -965,37 +1065,47 @@ export function createWebhookRoute(options) {
|
|
|
965
1065
|
}, handleWebhookRequest);
|
|
966
1066
|
return {
|
|
967
1067
|
POST: async (req) => {
|
|
968
|
-
const server = await resolveServerSource(options.server);
|
|
969
|
-
const pipelined = runPipeline(server);
|
|
970
|
-
if (pipelined)
|
|
971
|
-
return pipelined(req);
|
|
972
|
-
// Minimal servers without rawRoute(...) — usually test fakes — build
|
|
973
|
-
// context directly and run the same handler outside the hooks pipeline.
|
|
974
1068
|
const headers = resolveHeaders(options.headers, req);
|
|
975
1069
|
let rawBody;
|
|
976
1070
|
try {
|
|
977
|
-
rawBody = await req
|
|
1071
|
+
rawBody = await readWebhookBody(toRequestLike(req), maxBodyBytes);
|
|
978
1072
|
}
|
|
979
|
-
catch {
|
|
980
|
-
return
|
|
1073
|
+
catch (error) {
|
|
1074
|
+
return error instanceof WebhookBodyTooLargeError
|
|
1075
|
+
? operationalErrorJson("WEBHOOK_BODY_TOO_LARGE", "Webhook body exceeds the configured size limit.", 413, headers)
|
|
1076
|
+
: operationalErrorJson("WEBHOOK_BODY_READ_FAILED", "Webhook body read failed.", 400, headers);
|
|
981
1077
|
}
|
|
982
|
-
const contextRequest =
|
|
1078
|
+
const contextRequest = rehydrateWebhookRequest(req, rawBody);
|
|
1079
|
+
const server = await resolveServerSource(options.server);
|
|
1080
|
+
const pipelined = runPipeline(server);
|
|
1081
|
+
if (pipelined) {
|
|
1082
|
+
preflightBodies.set(contextRequest, rawBody);
|
|
1083
|
+
return pipelined(contextRequest);
|
|
1084
|
+
}
|
|
1085
|
+
// Minimal servers without rawRoute(...) — usually test fakes — build
|
|
1086
|
+
// context directly and run the same handler outside the hooks pipeline.
|
|
1087
|
+
const requestLike = toRequestLike(contextRequest);
|
|
983
1088
|
let ctx;
|
|
984
1089
|
try {
|
|
985
|
-
ctx = await server.createRequestContext(
|
|
1090
|
+
ctx = await server.createRequestContext(requestLike);
|
|
986
1091
|
}
|
|
987
1092
|
catch {
|
|
988
1093
|
return operationalErrorJson("WEBHOOK_CONTEXT_FAILED", "Webhook context failed.", 500, headers);
|
|
989
1094
|
}
|
|
990
|
-
return handleWebhookRequest({
|
|
1095
|
+
return handleWebhookRequest({
|
|
1096
|
+
req: requestLike,
|
|
1097
|
+
ctx,
|
|
1098
|
+
rawBody,
|
|
1099
|
+
});
|
|
991
1100
|
},
|
|
992
1101
|
};
|
|
993
1102
|
}
|
|
994
1103
|
/**
|
|
995
1104
|
* Create a Next.js POST handler for provider-verified payment webhooks.
|
|
996
1105
|
*
|
|
997
|
-
* The route
|
|
998
|
-
* body
|
|
1106
|
+
* The route checks the provider signature header and bounds the raw request
|
|
1107
|
+
* body before resolving the server, then builds app context from a rehydrated
|
|
1108
|
+
* request through
|
|
999
1109
|
* `server.createRequestContext(...)`, verifies the event through
|
|
1000
1110
|
* `ctx.ports.payments`, and then delegates fulfillment to app code. This is the canonical helper for Beignet
|
|
1001
1111
|
* billing flows backed by `PaymentsPort`. Keep this route on the Node.js
|
|
@@ -1003,19 +1113,27 @@ export function createWebhookRoute(options) {
|
|
|
1003
1113
|
*/
|
|
1004
1114
|
export function createPaymentWebhookRoute(options) {
|
|
1005
1115
|
const signatureHeader = options.signatureHeader ?? "stripe-signature";
|
|
1006
|
-
const
|
|
1116
|
+
const maxBodyBytes = webhookBodyLimit(options.maxBodyBytes);
|
|
1117
|
+
const preflightBodies = new WeakMap();
|
|
1118
|
+
const handlePaymentWebhook = async ({ req, ctx, rawBody: providedRawBody, }) => {
|
|
1007
1119
|
const nativeReq = nativeRequestOf(req);
|
|
1008
1120
|
const headers = resolveHeaders(options.headers, nativeReq);
|
|
1009
1121
|
const signature = new Headers(req.headers).get(signatureHeader);
|
|
1010
1122
|
if (!signature) {
|
|
1123
|
+
cancelWebhookRequestBody(req, new Error(`Missing ${signatureHeader} header.`));
|
|
1011
1124
|
return operationalErrorJson("PAYMENT_WEBHOOK_SIGNATURE_MISSING", `Missing ${signatureHeader} header.`, 400, headers);
|
|
1012
1125
|
}
|
|
1013
|
-
let rawBody;
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1126
|
+
let rawBody = providedRawBody ?? preflightBodies.get(nativeReq);
|
|
1127
|
+
preflightBodies.delete(nativeReq);
|
|
1128
|
+
if (rawBody === undefined) {
|
|
1129
|
+
try {
|
|
1130
|
+
rawBody = await readWebhookBody(req, maxBodyBytes);
|
|
1131
|
+
}
|
|
1132
|
+
catch (error) {
|
|
1133
|
+
return error instanceof WebhookBodyTooLargeError
|
|
1134
|
+
? operationalErrorJson("PAYMENT_WEBHOOK_BODY_TOO_LARGE", "Payment webhook body exceeds the configured size limit.", 413, headers)
|
|
1135
|
+
: operationalErrorJson("PAYMENT_WEBHOOK_BODY_READ_FAILED", "Payment webhook body read failed.", 400, headers);
|
|
1136
|
+
}
|
|
1019
1137
|
}
|
|
1020
1138
|
let event;
|
|
1021
1139
|
try {
|
|
@@ -1078,32 +1196,44 @@ export function createPaymentWebhookRoute(options) {
|
|
|
1078
1196
|
}, handlePaymentWebhook);
|
|
1079
1197
|
return {
|
|
1080
1198
|
POST: async (req) => {
|
|
1081
|
-
const server = await resolveServerSource(options.server);
|
|
1082
|
-
const pipelined = runPipeline(server);
|
|
1083
|
-
if (pipelined)
|
|
1084
|
-
return pipelined(req);
|
|
1085
|
-
// Minimal servers without rawRoute(...) — usually test fakes — build
|
|
1086
|
-
// context directly and run the same handler outside the hooks pipeline.
|
|
1087
|
-
// The signature gate runs first so no context is created without one.
|
|
1088
1199
|
const headers = resolveHeaders(options.headers, req);
|
|
1089
1200
|
if (!req.headers.get(signatureHeader)) {
|
|
1201
|
+
if (req.body) {
|
|
1202
|
+
cancelWebhookBody(req.body, new Error(`Missing ${signatureHeader} header.`));
|
|
1203
|
+
}
|
|
1090
1204
|
return operationalErrorJson("PAYMENT_WEBHOOK_SIGNATURE_MISSING", `Missing ${signatureHeader} header.`, 400, headers);
|
|
1091
1205
|
}
|
|
1092
1206
|
let rawBody;
|
|
1093
1207
|
try {
|
|
1094
|
-
rawBody = await req
|
|
1208
|
+
rawBody = await readWebhookBody(toRequestLike(req), maxBodyBytes);
|
|
1095
1209
|
}
|
|
1096
|
-
catch {
|
|
1097
|
-
return
|
|
1210
|
+
catch (error) {
|
|
1211
|
+
return error instanceof WebhookBodyTooLargeError
|
|
1212
|
+
? operationalErrorJson("PAYMENT_WEBHOOK_BODY_TOO_LARGE", "Payment webhook body exceeds the configured size limit.", 413, headers)
|
|
1213
|
+
: operationalErrorJson("PAYMENT_WEBHOOK_BODY_READ_FAILED", "Payment webhook body read failed.", 400, headers);
|
|
1214
|
+
}
|
|
1215
|
+
const contextRequest = rehydrateWebhookRequest(req, rawBody);
|
|
1216
|
+
const server = await resolveServerSource(options.server);
|
|
1217
|
+
const pipelined = runPipeline(server);
|
|
1218
|
+
if (pipelined) {
|
|
1219
|
+
preflightBodies.set(contextRequest, rawBody);
|
|
1220
|
+
return pipelined(contextRequest);
|
|
1098
1221
|
}
|
|
1222
|
+
// Minimal servers without rawRoute(...) — usually test fakes — build
|
|
1223
|
+
// context directly and run the same handler outside the hooks pipeline.
|
|
1224
|
+
const requestLike = toRequestLike(contextRequest);
|
|
1099
1225
|
let ctx;
|
|
1100
1226
|
try {
|
|
1101
|
-
ctx = await server.createRequestContext(
|
|
1227
|
+
ctx = await server.createRequestContext(requestLike);
|
|
1102
1228
|
}
|
|
1103
1229
|
catch {
|
|
1104
1230
|
return operationalErrorJson("PAYMENT_WEBHOOK_CONTEXT_FAILED", "Payment webhook context failed.", 500, headers);
|
|
1105
1231
|
}
|
|
1106
|
-
return handlePaymentWebhook({
|
|
1232
|
+
return handlePaymentWebhook({
|
|
1233
|
+
req: requestLike,
|
|
1234
|
+
ctx,
|
|
1235
|
+
rawBody,
|
|
1236
|
+
});
|
|
1107
1237
|
},
|
|
1108
1238
|
};
|
|
1109
1239
|
}
|