@prisma/composer-prisma-cloud 0.2.0 → 0.3.0-dev.1
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/buckets-main.mjs +795 -0
- package/dist/buckets-main.mjs.map +1 -0
- package/dist/compute-main.mjs +559 -0
- package/dist/compute-main.mjs.map +1 -0
- package/dist/control.d.mts +34 -5
- package/dist/control.d.mts.map +1 -0
- package/dist/control.mjs +98 -1280
- package/dist/control.mjs.map +1 -1
- package/dist/cron/index.d.mts +54 -4
- package/dist/cron/index.d.mts.map +1 -0
- package/dist/cron/index.mjs +145 -42
- package/dist/cron/index.mjs.map +1 -1
- package/dist/cron/scheduler-entrypoint.mjs +637 -529
- package/dist/cron/scheduler-entrypoint.mjs.map +1 -1
- package/dist/cron/scheduler-service.mjs +145 -42
- package/dist/cron/scheduler-service.mjs.map +1 -1
- package/dist/email/email-entrypoint.mjs +19738 -0
- package/dist/email/email-entrypoint.mjs.map +1 -0
- package/dist/email/email-service.mjs +565 -0
- package/dist/email/email-service.mjs.map +1 -0
- package/dist/email/index.d.mts +282 -0
- package/dist/email/index.d.mts.map +1 -0
- package/dist/email/index.mjs +652 -0
- package/dist/email/index.mjs.map +1 -0
- package/dist/email/testing.d.mts +22 -0
- package/dist/email/testing.d.mts.map +1 -0
- package/dist/email/testing.mjs +1321 -0
- package/dist/email/testing.mjs.map +1 -0
- package/dist/get-port-BYnpbW5H.mjs +111 -0
- package/dist/get-port-BYnpbW5H.mjs.map +1 -0
- package/dist/index.d.mts +37 -6
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +70 -45
- package/dist/index.mjs.map +1 -1
- package/dist/local-target.d.mts +12 -0
- package/dist/local-target.d.mts.map +1 -0
- package/dist/local-target.mjs +6185 -0
- package/dist/local-target.mjs.map +1 -0
- package/dist/param-BTzY0ne5-CW6ojZ3E.mjs +66 -0
- package/dist/param-BTzY0ne5-CW6ojZ3E.mjs.map +1 -0
- package/dist/pg-connection-CadPZuEK-CF3FsSQu.mjs +79 -0
- package/dist/pg-connection-CadPZuEK-CF3FsSQu.mjs.map +1 -0
- package/dist/postgres-main.mjs +602 -0
- package/dist/postgres-main.mjs.map +1 -0
- package/dist/preflight-names-BPL-qsZF-BfoRgbgb.mjs +1252 -0
- package/dist/preflight-names-BPL-qsZF-BfoRgbgb.mjs.map +1 -0
- package/dist/{prisma-next-DlU01kXJ-2sP5mQb6.mjs → prisma-next-BvBwGCIt-DssgnctU.mjs} +21 -80
- package/dist/prisma-next-BvBwGCIt-DssgnctU.mjs.map +1 -0
- package/dist/prisma-next.d.mts +14 -5
- package/dist/prisma-next.d.mts.map +1 -0
- package/dist/prisma-next.mjs +1 -1
- package/dist/provisioned-edges-C1wSO3cx-YC5C19f9.mjs +151 -0
- package/dist/provisioned-edges-C1wSO3cx-YC5C19f9.mjs.map +1 -0
- package/dist/secret-rz_ZqNeq-_xd97Jd9.mjs +47 -0
- package/dist/secret-rz_ZqNeq-_xd97Jd9.mjs.map +1 -0
- package/dist/segments-NpKN-46R-C_LQ2urs.mjs +1454 -0
- package/dist/segments-NpKN-46R-C_LQ2urs.mjs.map +1 -0
- package/dist/{serializer-CX4VYdf_-KKGoAxfx.mjs → serializer-CJiOhF2d-DJUjQj1i.mjs} +34 -44
- package/dist/serializer-CJiOhF2d-DJUjQj1i.mjs.map +1 -0
- package/dist/serializer-Cx5slrV4-xJfH6EWS.d.mts.map +1 -0
- package/dist/storage/index.d.mts +52 -5
- package/dist/storage/index.d.mts.map +1 -0
- package/dist/storage/index.mjs +158 -47
- package/dist/storage/index.mjs.map +1 -1
- package/dist/storage/storage-entrypoint.mjs +370 -271
- package/dist/storage/storage-entrypoint.mjs.map +1 -1
- package/dist/storage/storage-service.mjs +158 -47
- package/dist/storage/storage-service.mjs.map +1 -1
- package/dist/storage/testing.d.mts +7 -6
- package/dist/storage/testing.d.mts.map +1 -0
- package/dist/storage/testing.mjs +4 -21
- package/dist/storage/testing.mjs.map +1 -1
- package/dist/streams/index.d.mts +56 -84
- package/dist/streams/index.d.mts.map +1 -0
- package/dist/streams/index.mjs +158 -47
- package/dist/streams/index.mjs.map +1 -1
- package/dist/streams/streams-entrypoint.mjs +366 -250
- package/dist/streams/streams-entrypoint.mjs.map +1 -1
- package/dist/streams/streams-service.mjs +158 -47
- package/dist/streams/streams-service.mjs.map +1 -1
- package/dist/streams/testing.d.mts.map +1 -0
- package/dist/testing.d.mts.map +1 -0
- package/dist/testing.mjs +1 -1
- package/dist/testing.mjs.map +1 -1
- package/package.json +34 -20
- package/src/exports/control.ts +1 -0
- package/src/exports/cron.ts +1 -0
- package/src/exports/email-testing.ts +1 -0
- package/src/exports/email.ts +1 -0
- package/src/exports/index.ts +1 -0
- package/src/exports/local-target.ts +1 -0
- package/src/exports/prisma-next.ts +1 -0
- package/src/exports/storage-testing.ts +1 -0
- package/src/exports/storage.ts +1 -0
- package/src/exports/streams-testing.ts +1 -0
- package/src/exports/streams.ts +1 -0
- package/src/exports/testing.ts +1 -0
- package/dist/prisma-next-DlU01kXJ-2sP5mQb6.mjs.map +0 -1
- package/dist/provisioned-edges-DIQAR4q4-Bn9op-JG.mjs +0 -151
- package/dist/provisioned-edges-DIQAR4q4-Bn9op-JG.mjs.map +0 -1
- package/dist/serializer-CX4VYdf_-KKGoAxfx.mjs.map +0 -1
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { BuildAdapter, DependencyEnd, Deps, Expose, HydratedDeps, ModuleNode, NODE, ParamNeed, Params, RunnableServiceNode, SecretNeed, SecretValues, Secrets, ServiceNode, Values } from "@prisma/composer";
|
|
2
|
+
import { Type } from "arktype";
|
|
3
|
+
import "@standard-schema/spec";
|
|
4
|
+
//#region ../../1-prisma-cloud/1-extensions/target/dist/index.d.mts
|
|
5
|
+
//#endregion
|
|
6
|
+
//#region src/compute.d.ts
|
|
7
|
+
declare const reservedParams: {
|
|
8
|
+
readonly port: import("@prisma/composer").ConfigParam<import("@standard-schema/spec").StandardSchemaV1<number, number>>;
|
|
9
|
+
};
|
|
10
|
+
type ReservedParams = typeof reservedParams;
|
|
11
|
+
/**
|
|
12
|
+
* A Prisma Compute service — declarations only (deps + params + build + the
|
|
13
|
+
* ports it exposes), no descriptor. `params` merges with the reserved
|
|
14
|
+
* `ReservedParams` (`port`); a user param whose name collides with a reserved
|
|
15
|
+
* one fails at authoring, the same way a colliding dependency name does.
|
|
16
|
+
*
|
|
17
|
+
* · run(address, boot) — the process controller: deserialize the platform
|
|
18
|
+
* environment (keyed off `address`, the extension's ONE env read) into a
|
|
19
|
+
* typed Config, re-emit it under address-free process-local stash keys,
|
|
20
|
+
* then call boot() to start the app's entry.
|
|
21
|
+
* · load() / config() — called from inside the app's entry: read the stash;
|
|
22
|
+
* load() hydrates + memoizes the deps, config() returns the typed params.
|
|
23
|
+
* Separate accessors so a dep and a param never share a namespace (ADR-0021).
|
|
24
|
+
* · origin() — this service's platform-assigned public origin, read from the
|
|
25
|
+
* stash `run()` populates; memoized per process.
|
|
26
|
+
*
|
|
27
|
+
* The underlying node carries `extension: '@prisma/composer-prisma-cloud'` —
|
|
28
|
+
* the control-plane registry key `prisma-composer deploy` resolves through the
|
|
29
|
+
* app's `prisma-composer.config.ts` (ADR-0017). This module loads nothing at
|
|
30
|
+
* deploy time; nodes are pure data until run() or load() is called.
|
|
31
|
+
*/
|
|
32
|
+
declare class ComputeService<D extends Deps, P extends Params, E extends Expose, S extends Secrets> implements RunnableServiceNode<D, P & ReservedParams, E, S> {
|
|
33
|
+
#private;
|
|
34
|
+
readonly [NODE]: true;
|
|
35
|
+
readonly kind: 'service';
|
|
36
|
+
readonly name: string;
|
|
37
|
+
readonly extension: string;
|
|
38
|
+
readonly type: string;
|
|
39
|
+
readonly inputs: D;
|
|
40
|
+
readonly params: P & ReservedParams;
|
|
41
|
+
readonly secretSlots: S;
|
|
42
|
+
readonly build: BuildAdapter;
|
|
43
|
+
readonly expose: E | undefined;
|
|
44
|
+
constructor(node: ServiceNode<D, P & ReservedParams, E, S>);
|
|
45
|
+
run(address: string, boot: () => Promise<unknown>): Promise<unknown>;
|
|
46
|
+
load(): HydratedDeps<D>;
|
|
47
|
+
config(): Values<P & ReservedParams>;
|
|
48
|
+
secrets(): SecretValues<S>;
|
|
49
|
+
/** This service's platform-assigned public origin — read from the stash
|
|
50
|
+
* run() populates and memoized per process. Throws if called before run()
|
|
51
|
+
* has stashed it (readOrigin's pinned message). */
|
|
52
|
+
origin(): string;
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
55
|
+
//#region src/postgres.d.ts
|
|
56
|
+
interface PostgresConfig {
|
|
57
|
+
readonly url: string;
|
|
58
|
+
}
|
|
59
|
+
//#endregion
|
|
60
|
+
//#region ../../1-prisma-cloud/2-shared-modules/email/dist/email-service-Cm-YAvgn.d.mts
|
|
61
|
+
//#region src/email-service.d.ts
|
|
62
|
+
declare function emailService(opts?: {
|
|
63
|
+
deliveryUrl?: string;
|
|
64
|
+
}): ComputeService<{
|
|
65
|
+
db: import("@prisma/composer").DependencyEnd<PostgresConfig, import("@prisma/composer").Contract<"postgres", PostgresConfig>>;
|
|
66
|
+
}, {
|
|
67
|
+
deliveryMode: import("@prisma/composer").ConfigParam<import("arktype/internal/variants/string.ts").StringType<"resend" | "smtp" | "none", {}>>;
|
|
68
|
+
deliveryUrl: import("@prisma/composer").ConfigParam<import("@standard-schema/spec").StandardSchemaV1<string, string>>;
|
|
69
|
+
from: import("@prisma/composer").ConfigParam<import("@standard-schema/spec").StandardSchemaV1<string, string>>;
|
|
70
|
+
}, {
|
|
71
|
+
send: import("@prisma/composer").Contract<"rpc", {
|
|
72
|
+
send: (input: {
|
|
73
|
+
templateId: string;
|
|
74
|
+
to: string[];
|
|
75
|
+
subject: string;
|
|
76
|
+
html: string;
|
|
77
|
+
idempotencyKey: string;
|
|
78
|
+
cc?: string[];
|
|
79
|
+
bcc?: string[];
|
|
80
|
+
replyTo?: string;
|
|
81
|
+
text?: string;
|
|
82
|
+
}) => Promise<{
|
|
83
|
+
id: string;
|
|
84
|
+
status: "stored" | "queued" | "sent" | "failed";
|
|
85
|
+
error?: string;
|
|
86
|
+
}>;
|
|
87
|
+
}>;
|
|
88
|
+
outbox: import("@prisma/composer").Contract<"rpc", {
|
|
89
|
+
getEmail: (input: {
|
|
90
|
+
id: string;
|
|
91
|
+
}) => Promise<{
|
|
92
|
+
email: {
|
|
93
|
+
id: string;
|
|
94
|
+
templateId: string;
|
|
95
|
+
to: string[];
|
|
96
|
+
cc: string[];
|
|
97
|
+
bcc: string[];
|
|
98
|
+
replyTo: string | null;
|
|
99
|
+
from: string;
|
|
100
|
+
subject: string;
|
|
101
|
+
html: string;
|
|
102
|
+
text: string | null;
|
|
103
|
+
status: "stored" | "queued" | "sent" | "failed";
|
|
104
|
+
providerMessageId: string | null;
|
|
105
|
+
error: string | null;
|
|
106
|
+
attempts: number;
|
|
107
|
+
createdAt: string;
|
|
108
|
+
updatedAt: string;
|
|
109
|
+
} | null;
|
|
110
|
+
}>;
|
|
111
|
+
listEmails: (input: {
|
|
112
|
+
to?: string;
|
|
113
|
+
templateId?: string;
|
|
114
|
+
status?: "stored" | "queued" | "sent" | "failed";
|
|
115
|
+
cursor?: string;
|
|
116
|
+
limit?: number;
|
|
117
|
+
}) => Promise<{
|
|
118
|
+
emails: {
|
|
119
|
+
id: string;
|
|
120
|
+
templateId: string;
|
|
121
|
+
to: string[];
|
|
122
|
+
cc: string[];
|
|
123
|
+
bcc: string[];
|
|
124
|
+
replyTo: string | null;
|
|
125
|
+
from: string;
|
|
126
|
+
subject: string;
|
|
127
|
+
html: string;
|
|
128
|
+
text: string | null;
|
|
129
|
+
status: "stored" | "queued" | "sent" | "failed";
|
|
130
|
+
providerMessageId: string | null;
|
|
131
|
+
error: string | null;
|
|
132
|
+
attempts: number;
|
|
133
|
+
createdAt: string;
|
|
134
|
+
updatedAt: string;
|
|
135
|
+
}[];
|
|
136
|
+
nextCursor?: string;
|
|
137
|
+
}>;
|
|
138
|
+
}>;
|
|
139
|
+
}, {
|
|
140
|
+
deliveryCredential: import("@prisma/composer").SecretNeed;
|
|
141
|
+
}>;
|
|
142
|
+
//#endregion
|
|
143
|
+
//#region ../../1-prisma-cloud/2-shared-modules/email/dist/index.d.mts
|
|
144
|
+
//#region src/contract.d.ts
|
|
145
|
+
/** What a template's render produces. `text` is optional; `html` is required. */
|
|
146
|
+
interface RenderedEmail {
|
|
147
|
+
readonly subject: string;
|
|
148
|
+
readonly html: string;
|
|
149
|
+
readonly text?: string;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* One template's data schema and its render function. `render` may be
|
|
153
|
+
* synchronous or async — the sender method awaits its result either way, so
|
|
154
|
+
* react-email's/jsx-email's async `render()` works directly (spec's
|
|
155
|
+
* `TemplateDef` amendment, 2026-07-22).
|
|
156
|
+
*/
|
|
157
|
+
interface TemplateDef<D> {
|
|
158
|
+
readonly data: Type<D>;
|
|
159
|
+
readonly render: (data: D) => RenderedEmail | Promise<RenderedEmail>;
|
|
160
|
+
}
|
|
161
|
+
type TemplateDefs = Record<string, TemplateDef<any>>;
|
|
162
|
+
/**
|
|
163
|
+
* Identity helper that infers `T` with literal keys and each entry's own
|
|
164
|
+
* data type — the `defineSchedule` pattern
|
|
165
|
+
* (`packages/1-prisma-cloud/2-shared-modules/cron/src/schedule.ts`).
|
|
166
|
+
* Performs no validation and no transformation.
|
|
167
|
+
*/
|
|
168
|
+
declare function defineTemplates<const T extends { [K in keyof T]: TemplateDef<any>; }>(defs: T): T;
|
|
169
|
+
declare const emailSendContract: import("@prisma/composer").Contract<"rpc", {
|
|
170
|
+
send: (input: {
|
|
171
|
+
templateId: string;
|
|
172
|
+
to: string[];
|
|
173
|
+
subject: string;
|
|
174
|
+
html: string;
|
|
175
|
+
idempotencyKey: string;
|
|
176
|
+
cc?: string[];
|
|
177
|
+
bcc?: string[];
|
|
178
|
+
replyTo?: string;
|
|
179
|
+
text?: string;
|
|
180
|
+
}) => Promise<{
|
|
181
|
+
id: string;
|
|
182
|
+
status: "stored" | "queued" | "sent" | "failed";
|
|
183
|
+
error?: string;
|
|
184
|
+
}>;
|
|
185
|
+
}>;
|
|
186
|
+
declare const emailOutboxContract: import("@prisma/composer").Contract<"rpc", {
|
|
187
|
+
getEmail: (input: {
|
|
188
|
+
id: string;
|
|
189
|
+
}) => Promise<{
|
|
190
|
+
email: {
|
|
191
|
+
id: string;
|
|
192
|
+
templateId: string;
|
|
193
|
+
to: string[];
|
|
194
|
+
cc: string[];
|
|
195
|
+
bcc: string[];
|
|
196
|
+
replyTo: string | null;
|
|
197
|
+
from: string;
|
|
198
|
+
subject: string;
|
|
199
|
+
html: string;
|
|
200
|
+
text: string | null;
|
|
201
|
+
status: "stored" | "queued" | "sent" | "failed";
|
|
202
|
+
providerMessageId: string | null;
|
|
203
|
+
error: string | null;
|
|
204
|
+
attempts: number;
|
|
205
|
+
createdAt: string;
|
|
206
|
+
updatedAt: string;
|
|
207
|
+
} | null;
|
|
208
|
+
}>;
|
|
209
|
+
listEmails: (input: {
|
|
210
|
+
to?: string;
|
|
211
|
+
templateId?: string;
|
|
212
|
+
status?: "stored" | "queued" | "sent" | "failed";
|
|
213
|
+
cursor?: string;
|
|
214
|
+
limit?: number;
|
|
215
|
+
}) => Promise<{
|
|
216
|
+
emails: {
|
|
217
|
+
id: string;
|
|
218
|
+
templateId: string;
|
|
219
|
+
to: string[];
|
|
220
|
+
cc: string[];
|
|
221
|
+
bcc: string[];
|
|
222
|
+
replyTo: string | null;
|
|
223
|
+
from: string;
|
|
224
|
+
subject: string;
|
|
225
|
+
html: string;
|
|
226
|
+
text: string | null;
|
|
227
|
+
status: "stored" | "queued" | "sent" | "failed";
|
|
228
|
+
providerMessageId: string | null;
|
|
229
|
+
error: string | null;
|
|
230
|
+
attempts: number;
|
|
231
|
+
createdAt: string;
|
|
232
|
+
updatedAt: string;
|
|
233
|
+
}[];
|
|
234
|
+
nextCursor?: string;
|
|
235
|
+
}>;
|
|
236
|
+
}>;
|
|
237
|
+
/**
|
|
238
|
+
* The per-template send methods a `emailSender(templates)` dependency
|
|
239
|
+
* hydrates to. Optional fields accept explicit `undefined` — absent and
|
|
240
|
+
* `undefined` mean the same thing everywhere — so a caller under
|
|
241
|
+
* `exactOptionalPropertyTypes` can pass a maybe-undefined value straight
|
|
242
|
+
* through instead of conditionally spreading it (spec's `EmailSender`
|
|
243
|
+
* amendment, 2026-07-22).
|
|
244
|
+
*/
|
|
245
|
+
type EmailSender<T extends TemplateDefs> = { readonly [K in keyof T]: (input: {
|
|
246
|
+
readonly to: string | readonly string[];
|
|
247
|
+
readonly data: T[K] extends TemplateDef<infer D> ? D : never;
|
|
248
|
+
readonly cc?: readonly string[] | undefined;
|
|
249
|
+
readonly bcc?: readonly string[] | undefined;
|
|
250
|
+
readonly replyTo?: string | undefined;
|
|
251
|
+
/** Omitted (or `undefined`) mints a fresh UUID on every call — that call's own retry is NOT deduped against a previous one. Supply and reuse your own key across retries to get the outbox's dedup guarantee. */
|
|
252
|
+
readonly idempotencyKey?: string | undefined;
|
|
253
|
+
}) => Promise<{
|
|
254
|
+
id: string;
|
|
255
|
+
status: 'stored' | 'queued' | 'sent' | 'failed';
|
|
256
|
+
error?: string;
|
|
257
|
+
}>; };
|
|
258
|
+
/**
|
|
259
|
+
* A consumer's dependency on the `send` port: one method per declared
|
|
260
|
+
* template, each validating its own `data`, rendering, and calling the
|
|
261
|
+
* generic `send` op. Connection params and hydration reuse `rpc()`'s exactly
|
|
262
|
+
* — same `url`/`serviceKey` binding, built the same way `rpc(emailSendContract)`
|
|
263
|
+
* would be, then wrapped.
|
|
264
|
+
*/
|
|
265
|
+
declare function emailSender<T extends TemplateDefs>(templates: T): DependencyEnd<EmailSender<T>, typeof emailSendContract>;
|
|
266
|
+
//#endregion
|
|
267
|
+
//#region src/email-module.d.ts
|
|
268
|
+
declare function email(opts?: {
|
|
269
|
+
name?: string;
|
|
270
|
+
deliveryUrl?: string;
|
|
271
|
+
}): ModuleNode<Record<never, never>, {
|
|
272
|
+
send: typeof emailSendContract;
|
|
273
|
+
outbox: typeof emailOutboxContract;
|
|
274
|
+
}, {
|
|
275
|
+
deliveryCredential: SecretNeed;
|
|
276
|
+
}, {
|
|
277
|
+
deliveryMode: ParamNeed;
|
|
278
|
+
from: ParamNeed;
|
|
279
|
+
}>;
|
|
280
|
+
//#endregion
|
|
281
|
+
export { type EmailSender, type RenderedEmail, type TemplateDef, type TemplateDefs, defineTemplates, email, emailOutboxContract, emailSendContract, emailSender, emailService };
|
|
282
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../../../1-prisma-cloud/1-extensions/target/dist/index.d.mts","../../../../1-prisma-cloud/2-shared-modules/email/dist/email-service-Cm-YAvgn.d.mts","../../../../1-prisma-cloud/2-shared-modules/email/dist/index.d.mts"],"mappings":";;;;;;cA0Cc;WACH,+BAA+B,4CAA4C;;KAEjF,wBAAwB;;;;;;;;;;;;;;;;;;;;;;cAsBf,eAAe,UAAU,MAAM,UAAU,QAAQ,UAAU,QAAQ,UAAU,oBAAoB,oBAAoB,GAAG,IAAI,gBAAgB,GAAG;;YAEjJ;WACD;WACA;WACA;WACA;WACA,QAAQ;WACR,QAAQ,IAAI;WACZ,aAAa;WACb,OAAO;WACP,QAAQ;EACjB,YAAY,MAAM,YAAY,GAAG,IAAI,gBAAgB,GAAG;EACxD,IAAI,iBAAiB,YAAY,mBAAmB;EACpD,QAAQ,aAAa;EACrB,UAAU,OAAO,IAAI;EACrB,WAAW,aAAa;;;;EAIxB;;;;UA+DQ;WACC;;;;;iBCtJM,aAAa;EAC5B;IAsDQ;EApDR,6BAA6B,cAHd,yCAGsG,qBAAzC;;EAE5E,uCAAuC,0DAA0D;EACjG,sCAAsC,4CAA4C;EAClF,+BAA+B,4CAA4C;;EAE3E,+BAA+B;IAC7B,OAAO;MACL;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;UACI;MACJ;MACA;MACA;;;EAGJ,iCAAiC;IAC/B,WAAW;MACT;UACI;MACJ;QACE;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;;IAGJ,aAAa;MACX;MACA;MACA;MACA;MACA;UACI;MACJ;QACE;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;MAEF;;;;EAIJ,6CAA6C;;;;;;UC1ErC;WACC;WACA;WACA;;;;;;;;UAQD,YAAY;WACX,MAAM,KAAK;WACX,SAAS,MAAM,MAAM,gBAAgB,QAAQ;;KAEnD,eAAe,eAAe;;;;;;;iBAOlB,sBAAsB,aAAa,WAAW,IAAI,qBAAqB,MAAM,IAAI;cACpF,4CAA4C;EACxD,OAAO;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;QACI;IACJ;IACA;IACA;;;cAGU,8CAA8C;EAC1D,WAAW;IACT;QACI;IACJ;MACE;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;;EAGJ,aAAa;IACX;IACA;IACA;IACA;IACA;QACI;IACJ;MACE;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;IAEF;;;;;;;;;;;KAWC,YAAY,UAAU,4BAA4B,WAAW,KAAK;WAC5D;WACA,MAAM,EAAE,WAAW,kBAAkB,KAAK;WAC1C;WACA;WACA;;WAEA;MACL;EACJ;EACA;EACA;;;;;;;;;iBASe,YAAY,UAAU,cAAc,WAAW,IAAI,cAAc,YAAY,WAAW;;;iBAGxF,MAAM;EACrB;EACA;IACE,WAAW;EACb,aAAa;EACb,eAAe;;EAEf,oBAAoB;;EAEpB,cAAc;EACd,MAAM"}
|