@rudderjs/core 1.1.2 → 1.1.4
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/README.md +19 -5
- package/boost/guidelines.md +26 -2
- package/dist/app-builder.d.ts +98 -0
- package/dist/app-builder.d.ts.map +1 -0
- package/dist/app-builder.js +352 -0
- package/dist/app-builder.js.map +1 -0
- package/dist/application.d.ts +13 -95
- package/dist/application.d.ts.map +1 -1
- package/dist/application.js +25 -339
- package/dist/application.js.map +1 -1
- package/dist/exceptions.d.ts +8 -0
- package/dist/exceptions.d.ts.map +1 -1
- package/dist/exceptions.js +16 -4
- package/dist/exceptions.js.map +1 -1
- package/dist/validation.d.ts +16 -0
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +16 -0
- package/dist/validation.js.map +1 -1
- package/package.json +5 -5
package/dist/application.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Container, ContextualBindingBuilder } from './di.js';
|
|
2
2
|
import { ServiceProvider } from './service-provider.js';
|
|
3
|
-
import type {
|
|
3
|
+
import type { MiddlewareHandler } from '@rudderjs/contracts';
|
|
4
|
+
import { AppBuilder, type ConfigureOptions } from './app-builder.js';
|
|
4
5
|
export interface BootConfig {
|
|
5
6
|
name?: string;
|
|
6
7
|
env?: string;
|
|
@@ -21,6 +22,8 @@ export declare class Application {
|
|
|
21
22
|
private _registeredClasses;
|
|
22
23
|
/** Tracks registered provider names to prevent duplicates from factory functions. */
|
|
23
24
|
private _registeredNames;
|
|
25
|
+
/** Tracks provider instances that have already had register() called — prevents double-registration when app().register() is called before bootstrap(). */
|
|
26
|
+
private _registeredInstances;
|
|
24
27
|
/** Deferred providers — token → ProviderClass (lazily booted on first resolve). */
|
|
25
28
|
private _deferredProviders;
|
|
26
29
|
readonly name: string;
|
|
@@ -64,110 +67,25 @@ export declare class Application {
|
|
|
64
67
|
/** @internal — testing only */
|
|
65
68
|
static resetForTesting(): void;
|
|
66
69
|
}
|
|
67
|
-
export
|
|
68
|
-
|
|
69
|
-
config?: Record<string, unknown>;
|
|
70
|
-
providers?: (new (app: Application) => ServiceProvider)[];
|
|
71
|
-
}
|
|
72
|
-
export interface RoutingOptions {
|
|
73
|
-
web?: () => Promise<unknown>;
|
|
74
|
-
api?: () => Promise<unknown>;
|
|
75
|
-
commands?: () => Promise<unknown>;
|
|
76
|
-
channels?: () => Promise<unknown>;
|
|
77
|
-
}
|
|
70
|
+
export { AppBuilder, ExceptionConfigurator, MiddlewareConfigurator, RudderJS, } from './app-builder.js';
|
|
71
|
+
export type { ConfigureOptions, ErrorRenderer, RoutingOptions, } from './app-builder.js';
|
|
78
72
|
type RouteGroupName = 'web' | 'api';
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
private _groupHandlers;
|
|
82
|
-
/** Global middleware — runs on every request, regardless of route group. */
|
|
83
|
-
use(handler: MiddlewareHandler): this;
|
|
84
|
-
/** Append middleware to the `web` route group (routes loaded via withRouting({ web })). */
|
|
85
|
-
web(...handlers: MiddlewareHandler[]): this;
|
|
86
|
-
/** Append middleware to the `api` route group (routes loaded via withRouting({ api })). */
|
|
87
|
-
api(...handlers: MiddlewareHandler[]): this;
|
|
88
|
-
getHandlers(): MiddlewareHandler[];
|
|
89
|
-
/** Combined group stack — user-config + any provider-registered group middleware. */
|
|
90
|
-
getGroupHandlers(group: RouteGroupName): MiddlewareHandler[];
|
|
91
|
-
}
|
|
73
|
+
/** @internal — read by `MiddlewareConfigurator.getGroupHandlers()` in `./app-builder.ts`. */
|
|
74
|
+
export declare const groupMiddlewareStore: Record<RouteGroupName, MiddlewareHandler[]>;
|
|
92
75
|
/**
|
|
93
76
|
* Register middleware for a named route group (`'web'` | `'api'`). Called
|
|
94
77
|
* by framework providers during `boot()` — e.g. `@rudderjs/auth` appends
|
|
95
78
|
* `AuthMiddleware()` to the `web` group so it only runs on web routes.
|
|
79
|
+
*
|
|
80
|
+
* **Not deduplicated.** Calling this twice with the same handler installs it
|
|
81
|
+
* twice. Providers that may `boot()` more than once (HMR reload, test
|
|
82
|
+
* harness) must either guard against re-installation or rely on
|
|
83
|
+
* `resetGroupMiddleware()` to clear the store before re-boot.
|
|
96
84
|
*/
|
|
97
85
|
export declare function appendToGroup(group: RouteGroupName, handler: MiddlewareHandler): void;
|
|
98
86
|
/** @internal — drain provider-registered group middleware (HMR dev reloads). */
|
|
99
87
|
export declare function resetGroupMiddleware(): void;
|
|
100
|
-
export type ErrorRenderer = (err: unknown, req: AppRequest) => Response | Promise<Response>;
|
|
101
|
-
export declare class ExceptionConfigurator {
|
|
102
|
-
private _renders;
|
|
103
|
-
private _ignored;
|
|
104
|
-
/**
|
|
105
|
-
* Register a custom renderer for a specific error type.
|
|
106
|
-
*
|
|
107
|
-
* @example
|
|
108
|
-
* e.render(PaymentError, (err, req) =>
|
|
109
|
-
* new Response(JSON.stringify({ code: err.code }), { status: 402, headers: { 'Content-Type': 'application/json' } })
|
|
110
|
-
* )
|
|
111
|
-
*/
|
|
112
|
-
render<T extends Error>(type: new (...args: any[]) => T, fn: (err: T, req: AppRequest) => Response | Promise<Response>): this;
|
|
113
|
-
/**
|
|
114
|
-
* Ignore an error type — re-throws it so the server's native handler sees it.
|
|
115
|
-
*/
|
|
116
|
-
ignore(type: new (...args: any[]) => unknown): this;
|
|
117
|
-
/**
|
|
118
|
-
* Override the global exception reporter for unhandled errors.
|
|
119
|
-
* By default, `@rudderjs/log` wires this automatically when installed.
|
|
120
|
-
*
|
|
121
|
-
* @example
|
|
122
|
-
* e.reportUsing((err) => Sentry.captureException(err))
|
|
123
|
-
*/
|
|
124
|
-
reportUsing(fn: (err: unknown) => void): this;
|
|
125
|
-
/** @internal — called by RudderJS to produce the combined error handler */
|
|
126
|
-
buildHandler(): ErrorRenderer;
|
|
127
|
-
}
|
|
128
|
-
export declare class AppBuilder {
|
|
129
|
-
private readonly _options;
|
|
130
|
-
private _loaders;
|
|
131
|
-
private _mwFn?;
|
|
132
|
-
private _excFn?;
|
|
133
|
-
constructor(_options: ConfigureOptions);
|
|
134
|
-
withRouting(routes: RoutingOptions): this;
|
|
135
|
-
/** Wrap a route loader so routes registered inside it get tagged with `group`. */
|
|
136
|
-
private _taggedLoader;
|
|
137
|
-
withMiddleware(fn: (m: MiddlewareConfigurator) => void): this;
|
|
138
|
-
withExceptions(fn: (e: ExceptionConfigurator) => void): this;
|
|
139
|
-
create(): RudderJS;
|
|
140
|
-
}
|
|
141
|
-
export declare class RudderJS {
|
|
142
|
-
private readonly _app;
|
|
143
|
-
private readonly _server;
|
|
144
|
-
private readonly _loaders;
|
|
145
|
-
private readonly _mwFn?;
|
|
146
|
-
private readonly _excFn?;
|
|
147
|
-
/** Phase 1: providers only — safe to await in CLI (no Vike virtual imports) */
|
|
148
|
-
private _providerBoot;
|
|
149
|
-
/** Phase 2: provider boot + HTTP handler — created lazily on first handleRequest call */
|
|
150
|
-
private _boot;
|
|
151
|
-
private _handler;
|
|
152
|
-
constructor(_app: Application, _server: ServerAdapterProvider, _loaders: Array<() => Promise<unknown>>, _mwFn?: ((m: MiddlewareConfigurator) => void) | undefined, _excFn?: ((e: ExceptionConfigurator) => void) | undefined);
|
|
153
|
-
private _suppressVikeNoise;
|
|
154
|
-
/** Phase 1 — boot providers + routes. Safe in CLI (no Vike virtual URLs). */
|
|
155
|
-
private _bootstrapProviders;
|
|
156
|
-
/**
|
|
157
|
-
* Dev-only — print the auto-discovered providers grouped by stage so a missing
|
|
158
|
-
* package is visible at every boot instead of failing silently when first used.
|
|
159
|
-
* Wraps long stage lines so the output stays readable in narrow terminals.
|
|
160
|
-
*/
|
|
161
|
-
private _printDevBootLog;
|
|
162
|
-
/** Phase 2 — create the HTTP fetch handler. Requires Vite context (virtual: URLs). */
|
|
163
|
-
private _createHandler;
|
|
164
|
-
/** Boot providers without starting an HTTP server — used by the CLI */
|
|
165
|
-
boot(): Promise<void>;
|
|
166
|
-
handleRequest(request: Request, env?: unknown, ctx?: unknown): Promise<Response>;
|
|
167
|
-
readonly fetch: (request: Request, env?: unknown, ctx?: unknown) => Promise<Response>;
|
|
168
|
-
}
|
|
169
88
|
export declare const app: () => Application;
|
|
170
89
|
export declare const resolve: <T>(token: Parameters<Container["make"]>[0]) => T;
|
|
171
90
|
export declare function defineConfig<T>(config: T): T;
|
|
172
|
-
export {};
|
|
173
91
|
//# sourceMappingURL=application.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,wBAAwB,EAAa,MAAM,SAAS,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,KAAK,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"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"}
|
package/dist/application.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { container } from './di.js';
|
|
2
2
|
import { Env, ConfigRepository, setConfigRepository } from '@rudderjs/support';
|
|
3
|
-
import {
|
|
4
|
-
import { ValidationError, ValidationResponse } from './validation.js';
|
|
5
|
-
import { HttpException, renderHttpException, renderServerError, report, setExceptionReporter, } from './exceptions.js';
|
|
6
|
-
import { getLastLoadedProviderEntries } from './default-providers.js';
|
|
3
|
+
import { AppBuilder } from './app-builder.js';
|
|
7
4
|
export class Application {
|
|
8
5
|
static instance;
|
|
9
6
|
container;
|
|
@@ -15,6 +12,8 @@ export class Application {
|
|
|
15
12
|
_registeredClasses = new Set();
|
|
16
13
|
/** Tracks registered provider names to prevent duplicates from factory functions. */
|
|
17
14
|
_registeredNames = new Set();
|
|
15
|
+
/** Tracks provider instances that have already had register() called — prevents double-registration when app().register() is called before bootstrap(). */
|
|
16
|
+
_registeredInstances = new Set();
|
|
18
17
|
/** Deferred providers — token → ProviderClass (lazily booted on first resolve). */
|
|
19
18
|
_deferredProviders = new Map();
|
|
20
19
|
name;
|
|
@@ -119,6 +118,7 @@ export class Application {
|
|
|
119
118
|
const instance = new Provider(this);
|
|
120
119
|
this.providers.push(instance);
|
|
121
120
|
instance.register();
|
|
121
|
+
this._registeredInstances.add(instance);
|
|
122
122
|
if (this.booted || this._booting) {
|
|
123
123
|
try {
|
|
124
124
|
await instance.boot?.();
|
|
@@ -144,7 +144,10 @@ export class Application {
|
|
|
144
144
|
}
|
|
145
145
|
continue;
|
|
146
146
|
}
|
|
147
|
+
if (this._registeredInstances.has(provider))
|
|
148
|
+
continue;
|
|
147
149
|
provider.register();
|
|
150
|
+
this._registeredInstances.add(provider);
|
|
148
151
|
}
|
|
149
152
|
// Wire the missing handler so deferred providers boot on first resolve
|
|
150
153
|
if (this._deferredProviders.size > 0) {
|
|
@@ -164,7 +167,10 @@ export class Application {
|
|
|
164
167
|
this.providers.push(instance);
|
|
165
168
|
instance.register();
|
|
166
169
|
// Deferred providers must have sync boot (or none)
|
|
167
|
-
instance.boot?.();
|
|
170
|
+
const bootResult = instance.boot?.();
|
|
171
|
+
if (bootResult instanceof Promise) {
|
|
172
|
+
console.warn(`[RudderJS] Deferred provider "${instance.constructor.name}" returned a Promise from boot() — deferred providers must be synchronous. The async work will be dropped.`);
|
|
173
|
+
}
|
|
168
174
|
this._bootedProviders.add(instance);
|
|
169
175
|
});
|
|
170
176
|
}
|
|
@@ -202,35 +208,16 @@ export class Application {
|
|
|
202
208
|
}
|
|
203
209
|
/** @internal — testing only */
|
|
204
210
|
static resetForTesting() {
|
|
205
|
-
;
|
|
206
|
-
Application['instance'] = undefined;
|
|
211
|
+
Application.instance = undefined;
|
|
207
212
|
globalThis['__rudderjs_app__'] = undefined;
|
|
208
213
|
}
|
|
209
214
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
return this;
|
|
217
|
-
}
|
|
218
|
-
/** Append middleware to the `web` route group (routes loaded via withRouting({ web })). */
|
|
219
|
-
web(...handlers) {
|
|
220
|
-
this._groupHandlers.web.push(...handlers);
|
|
221
|
-
return this;
|
|
222
|
-
}
|
|
223
|
-
/** Append middleware to the `api` route group (routes loaded via withRouting({ api })). */
|
|
224
|
-
api(...handlers) {
|
|
225
|
-
this._groupHandlers.api.push(...handlers);
|
|
226
|
-
return this;
|
|
227
|
-
}
|
|
228
|
-
getHandlers() { return this._handlers; }
|
|
229
|
-
/** Combined group stack — user-config + any provider-registered group middleware. */
|
|
230
|
-
getGroupHandlers(group) {
|
|
231
|
-
return [...groupMiddlewareStore[group], ...this._groupHandlers[group]];
|
|
232
|
-
}
|
|
233
|
-
}
|
|
215
|
+
// ─── App-builder re-exports ────────────────────────────────
|
|
216
|
+
//
|
|
217
|
+
// AppBuilder / RudderJS / MiddlewareConfigurator / ExceptionConfigurator live
|
|
218
|
+
// in `./app-builder.ts` — they orchestrate Application but don't share its
|
|
219
|
+
// private state, so the split keeps `application.ts` to the kernel.
|
|
220
|
+
export { AppBuilder, ExceptionConfigurator, MiddlewareConfigurator, RudderJS, } from './app-builder.js';
|
|
234
221
|
// ─── Provider-facing group-middleware registry ────────────
|
|
235
222
|
//
|
|
236
223
|
// Providers can't reach `MiddlewareConfigurator` directly (it's constructed per
|
|
@@ -248,7 +235,8 @@ export class MiddlewareConfigurator {
|
|
|
248
235
|
//
|
|
249
236
|
// The store is drained on reset() so HMR-style boot cycles don't double-register.
|
|
250
237
|
const GROUP_MIDDLEWARE_KEY = '__rudderjs_group_middleware__';
|
|
251
|
-
|
|
238
|
+
/** @internal — read by `MiddlewareConfigurator.getGroupHandlers()` in `./app-builder.ts`. */
|
|
239
|
+
export const groupMiddlewareStore = (() => {
|
|
252
240
|
const g = globalThis;
|
|
253
241
|
const existing = g[GROUP_MIDDLEWARE_KEY];
|
|
254
242
|
if (existing)
|
|
@@ -261,6 +249,11 @@ const groupMiddlewareStore = (() => {
|
|
|
261
249
|
* Register middleware for a named route group (`'web'` | `'api'`). Called
|
|
262
250
|
* by framework providers during `boot()` — e.g. `@rudderjs/auth` appends
|
|
263
251
|
* `AuthMiddleware()` to the `web` group so it only runs on web routes.
|
|
252
|
+
*
|
|
253
|
+
* **Not deduplicated.** Calling this twice with the same handler installs it
|
|
254
|
+
* twice. Providers that may `boot()` more than once (HMR reload, test
|
|
255
|
+
* harness) must either guard against re-installation or rely on
|
|
256
|
+
* `resetGroupMiddleware()` to clear the store before re-boot.
|
|
264
257
|
*/
|
|
265
258
|
export function appendToGroup(group, handler) {
|
|
266
259
|
groupMiddlewareStore[group].push(handler);
|
|
@@ -270,313 +263,6 @@ export function resetGroupMiddleware() {
|
|
|
270
263
|
groupMiddlewareStore.web.length = 0;
|
|
271
264
|
groupMiddlewareStore.api.length = 0;
|
|
272
265
|
}
|
|
273
|
-
export class ExceptionConfigurator {
|
|
274
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
275
|
-
_renders = [];
|
|
276
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
277
|
-
_ignored = new Set();
|
|
278
|
-
/**
|
|
279
|
-
* Register a custom renderer for a specific error type.
|
|
280
|
-
*
|
|
281
|
-
* @example
|
|
282
|
-
* e.render(PaymentError, (err, req) =>
|
|
283
|
-
* new Response(JSON.stringify({ code: err.code }), { status: 402, headers: { 'Content-Type': 'application/json' } })
|
|
284
|
-
* )
|
|
285
|
-
*/
|
|
286
|
-
render(
|
|
287
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
288
|
-
type, fn) {
|
|
289
|
-
this._renders.push({ type, fn: fn });
|
|
290
|
-
return this;
|
|
291
|
-
}
|
|
292
|
-
/**
|
|
293
|
-
* Ignore an error type — re-throws it so the server's native handler sees it.
|
|
294
|
-
*/
|
|
295
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
296
|
-
ignore(type) {
|
|
297
|
-
this._ignored.add(type);
|
|
298
|
-
return this;
|
|
299
|
-
}
|
|
300
|
-
/**
|
|
301
|
-
* Override the global exception reporter for unhandled errors.
|
|
302
|
-
* By default, `@rudderjs/log` wires this automatically when installed.
|
|
303
|
-
*
|
|
304
|
-
* @example
|
|
305
|
-
* e.reportUsing((err) => Sentry.captureException(err))
|
|
306
|
-
*/
|
|
307
|
-
reportUsing(fn) {
|
|
308
|
-
setExceptionReporter(fn);
|
|
309
|
-
return this;
|
|
310
|
-
}
|
|
311
|
-
/** @internal — called by RudderJS to produce the combined error handler */
|
|
312
|
-
buildHandler() {
|
|
313
|
-
const renders = this._renders.slice();
|
|
314
|
-
const ignored = new Set(this._ignored);
|
|
315
|
-
return async (err, req) => {
|
|
316
|
-
// 1. Explicitly ignored — re-throw
|
|
317
|
-
for (const type of ignored) {
|
|
318
|
-
if (err instanceof type)
|
|
319
|
-
throw err;
|
|
320
|
-
}
|
|
321
|
-
// 2. User-registered renderers (take priority)
|
|
322
|
-
for (const { type, fn } of renders) {
|
|
323
|
-
if (err instanceof type)
|
|
324
|
-
return fn(err, req);
|
|
325
|
-
}
|
|
326
|
-
// 3. ValidationResponse — short-circuit emit the wrapped Response (FormRequest.failedValidation)
|
|
327
|
-
if (err instanceof ValidationResponse) {
|
|
328
|
-
return err.response;
|
|
329
|
-
}
|
|
330
|
-
// 4. ValidationError — 422 JSON
|
|
331
|
-
if (err instanceof ValidationError) {
|
|
332
|
-
return new Response(JSON.stringify(err.toJSON()), {
|
|
333
|
-
status: 422,
|
|
334
|
-
headers: { 'Content-Type': 'application/json' },
|
|
335
|
-
});
|
|
336
|
-
}
|
|
337
|
-
// 4. HttpException — render with its status code (JSON or HTML)
|
|
338
|
-
if (err instanceof HttpException) {
|
|
339
|
-
return renderHttpException(err, req);
|
|
340
|
-
}
|
|
341
|
-
// 5. Errors carrying a duck-typed `httpStatus` (e.g. ModelNotFoundError,
|
|
342
|
-
// RouteModelNotFoundError) — render with that status. Avoids a hard
|
|
343
|
-
// dependency on @rudderjs/orm or @rudderjs/router from here.
|
|
344
|
-
if (err instanceof Error) {
|
|
345
|
-
const status = err.httpStatus;
|
|
346
|
-
if (typeof status === 'number' && status >= 400 && status < 600) {
|
|
347
|
-
return renderHttpException(new HttpException(status, err.message), req);
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
// 6. Unhandled — report + render 500
|
|
351
|
-
report(err);
|
|
352
|
-
let debug = false;
|
|
353
|
-
try {
|
|
354
|
-
debug = Application.getInstance().debug;
|
|
355
|
-
}
|
|
356
|
-
catch { /* app not ready */ }
|
|
357
|
-
return renderServerError(req, debug, err);
|
|
358
|
-
};
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
// ─── App Builder ───────────────────────────────────────────
|
|
362
|
-
export class AppBuilder {
|
|
363
|
-
_options;
|
|
364
|
-
_loaders = [];
|
|
365
|
-
_mwFn;
|
|
366
|
-
_excFn;
|
|
367
|
-
constructor(_options) {
|
|
368
|
-
this._options = _options;
|
|
369
|
-
}
|
|
370
|
-
withRouting(routes) {
|
|
371
|
-
if (routes.web)
|
|
372
|
-
this._loaders.push(this._taggedLoader('web', routes.web));
|
|
373
|
-
if (routes.api)
|
|
374
|
-
this._loaders.push(this._taggedLoader('api', routes.api));
|
|
375
|
-
if (routes.commands)
|
|
376
|
-
this._loaders.push(routes.commands);
|
|
377
|
-
if (routes.channels)
|
|
378
|
-
this._loaders.push(routes.channels);
|
|
379
|
-
return this;
|
|
380
|
-
}
|
|
381
|
-
/** Wrap a route loader so routes registered inside it get tagged with `group`. */
|
|
382
|
-
_taggedLoader(group, loader) {
|
|
383
|
-
return async () => {
|
|
384
|
-
const { runWithGroup } = await import('@rudderjs/router');
|
|
385
|
-
return runWithGroup(group, loader);
|
|
386
|
-
};
|
|
387
|
-
}
|
|
388
|
-
withMiddleware(fn) {
|
|
389
|
-
this._mwFn = fn;
|
|
390
|
-
return this;
|
|
391
|
-
}
|
|
392
|
-
withExceptions(fn) {
|
|
393
|
-
this._excFn = fn;
|
|
394
|
-
return this;
|
|
395
|
-
}
|
|
396
|
-
create() {
|
|
397
|
-
const g = globalThis;
|
|
398
|
-
if (g['__rudderjs_instance__'])
|
|
399
|
-
return g['__rudderjs_instance__'];
|
|
400
|
-
const app = Application.create({
|
|
401
|
-
...(this._options.config && { config: this._options.config }),
|
|
402
|
-
...(this._options.providers && { providers: this._options.providers }),
|
|
403
|
-
});
|
|
404
|
-
const instance = new RudderJS(app, this._options.server, this._loaders, this._mwFn, this._excFn);
|
|
405
|
-
g['__rudderjs_instance__'] = instance;
|
|
406
|
-
return instance;
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
// ─── RudderJS (Configured Application) ─────────────────────
|
|
410
|
-
export class RudderJS {
|
|
411
|
-
_app;
|
|
412
|
-
_server;
|
|
413
|
-
_loaders;
|
|
414
|
-
_mwFn;
|
|
415
|
-
_excFn;
|
|
416
|
-
/** Phase 1: providers only — safe to await in CLI (no Vike virtual imports) */
|
|
417
|
-
_providerBoot;
|
|
418
|
-
/** Phase 2: provider boot + HTTP handler — created lazily on first handleRequest call */
|
|
419
|
-
_boot = null;
|
|
420
|
-
_handler = null;
|
|
421
|
-
constructor(_app, _server, _loaders, _mwFn, _excFn) {
|
|
422
|
-
this._app = _app;
|
|
423
|
-
this._server = _server;
|
|
424
|
-
this._loaders = _loaders;
|
|
425
|
-
this._mwFn = _mwFn;
|
|
426
|
-
this._excFn = _excFn;
|
|
427
|
-
this._providerBoot = this._bootstrapProviders();
|
|
428
|
-
}
|
|
429
|
-
_suppressVikeNoise() {
|
|
430
|
-
const isNoise = (args) => {
|
|
431
|
-
const msg = args.map(a => String(a ?? '')).join(' ');
|
|
432
|
-
if (msg.includes('[vike]'))
|
|
433
|
-
return true;
|
|
434
|
-
if (msg.includes('Server running at '))
|
|
435
|
-
return true;
|
|
436
|
-
return false;
|
|
437
|
-
};
|
|
438
|
-
const _log = console.log;
|
|
439
|
-
const _warn = console.warn;
|
|
440
|
-
const _info = console.info;
|
|
441
|
-
console.log = (...a) => { if (!isNoise(a))
|
|
442
|
-
_log(...a); };
|
|
443
|
-
console.warn = (...a) => { if (!isNoise(a))
|
|
444
|
-
_warn(...a); };
|
|
445
|
-
console.info = (...a) => { if (!isNoise(a))
|
|
446
|
-
_info(...a); };
|
|
447
|
-
}
|
|
448
|
-
/** Phase 1 — boot providers + routes. Safe in CLI (no Vike virtual URLs). */
|
|
449
|
-
async _bootstrapProviders() {
|
|
450
|
-
this._suppressVikeNoise();
|
|
451
|
-
if (this._app.isDevelopment()) {
|
|
452
|
-
rudder.reset();
|
|
453
|
-
const { router } = await import('@rudderjs/router');
|
|
454
|
-
router.reset();
|
|
455
|
-
resetGroupMiddleware();
|
|
456
|
-
}
|
|
457
|
-
await this._app.bootstrap();
|
|
458
|
-
// Serial loader execution — required for per-loader group tagging in
|
|
459
|
-
// @rudderjs/router's runWithGroup(). Parallel execution would set the
|
|
460
|
-
// module-level currentGroup to whichever loader was invoked last before
|
|
461
|
-
// any module bodies evaluated in microtasks. Sequential is negligibly
|
|
462
|
-
// slower for ≤4 loaders and keeps the group context correct.
|
|
463
|
-
for (const loader of this._loaders)
|
|
464
|
-
await loader();
|
|
465
|
-
if (this._app.isDevelopment())
|
|
466
|
-
this._printDevBootLog();
|
|
467
|
-
console.log('[RudderJS] ready');
|
|
468
|
-
}
|
|
469
|
-
/**
|
|
470
|
-
* Dev-only — print the auto-discovered providers grouped by stage so a missing
|
|
471
|
-
* package is visible at every boot instead of failing silently when first used.
|
|
472
|
-
* Wraps long stage lines so the output stays readable in narrow terminals.
|
|
473
|
-
*/
|
|
474
|
-
_printDevBootLog() {
|
|
475
|
-
const entries = getLastLoadedProviderEntries();
|
|
476
|
-
if (entries.length === 0)
|
|
477
|
-
return;
|
|
478
|
-
const C = {
|
|
479
|
-
dim: (s) => `\x1b[2m${s}\x1b[0m`,
|
|
480
|
-
magenta: (s) => `\x1b[35m${s}\x1b[0m`,
|
|
481
|
-
cyan: (s) => `\x1b[36m${s}\x1b[0m`,
|
|
482
|
-
green: (s) => `\x1b[32m${s}\x1b[0m`,
|
|
483
|
-
yellow: (s) => `\x1b[33m${s}\x1b[0m`,
|
|
484
|
-
};
|
|
485
|
-
const STAGE_COLORS = {
|
|
486
|
-
foundation: C.magenta,
|
|
487
|
-
infrastructure: C.cyan,
|
|
488
|
-
feature: C.green,
|
|
489
|
-
monitoring: C.yellow,
|
|
490
|
-
};
|
|
491
|
-
const STAGE_ORDER = ['foundation', 'infrastructure', 'feature', 'monitoring'];
|
|
492
|
-
const shortName = (p) => p.startsWith('@rudderjs/') ? p.slice('@rudderjs/'.length) : p;
|
|
493
|
-
const grouped = new Map();
|
|
494
|
-
for (const e of entries) {
|
|
495
|
-
const list = grouped.get(e.stage) ?? [];
|
|
496
|
-
list.push(shortName(e.package));
|
|
497
|
-
grouped.set(e.stage, list);
|
|
498
|
-
}
|
|
499
|
-
console.log(`[RudderJS] ${entries.length} provider${entries.length === 1 ? '' : 's'} booted`);
|
|
500
|
-
// Find which stages have entries — needed to know which one is the last
|
|
501
|
-
// (gets `└─` instead of `├─`).
|
|
502
|
-
const activeStages = STAGE_ORDER.filter(s => (grouped.get(s)?.length ?? 0) > 0);
|
|
503
|
-
const labelWidth = 16;
|
|
504
|
-
const indent = ' ';
|
|
505
|
-
const connector = '── '; // 3 visible chars after the corner
|
|
506
|
-
const cornerLen = 2 + connector.length; // ├─ + space-after width
|
|
507
|
-
// Wrap at min(terminal width, 80) so the layout is consistent across
|
|
508
|
-
// narrow and wide terminals — wide terminals would otherwise stretch a
|
|
509
|
-
// long feature list to one unreadable line.
|
|
510
|
-
const termCols = Math.min(process.stdout.columns ?? 80, 80);
|
|
511
|
-
const wrapWidth = termCols - indent.length - cornerLen - labelWidth - 2;
|
|
512
|
-
activeStages.forEach((stage, idx) => {
|
|
513
|
-
const list = grouped.get(stage);
|
|
514
|
-
const isLast = idx === activeStages.length - 1;
|
|
515
|
-
const corner = isLast ? '└─ ' : '├─ ';
|
|
516
|
-
const colorize = STAGE_COLORS[stage];
|
|
517
|
-
const label = colorize(stage.padEnd(labelWidth));
|
|
518
|
-
// Greedy line-wrap: pack as many comma-joined names as fit per line.
|
|
519
|
-
const lines = [[]];
|
|
520
|
-
let currentLen = 0;
|
|
521
|
-
for (const name of list) {
|
|
522
|
-
const piece = (lines[lines.length - 1].length === 0 ? '' : ', ') + name;
|
|
523
|
-
if (currentLen + piece.length > wrapWidth && lines[lines.length - 1].length > 0) {
|
|
524
|
-
lines.push([name]);
|
|
525
|
-
currentLen = name.length;
|
|
526
|
-
}
|
|
527
|
-
else {
|
|
528
|
-
lines[lines.length - 1].push(name);
|
|
529
|
-
currentLen += piece.length;
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
// Continuation lines use `│` to maintain the tree visual when there are
|
|
533
|
-
// more stages below; the last stage uses spaces instead.
|
|
534
|
-
const continuation = isLast
|
|
535
|
-
? ' '.repeat(corner.length + labelWidth)
|
|
536
|
-
: C.dim('│ ') + ' '.repeat(labelWidth);
|
|
537
|
-
lines.forEach((parts, i) => {
|
|
538
|
-
const prefix = i === 0
|
|
539
|
-
? `${indent}${C.dim(corner)}${label}`
|
|
540
|
-
: `${indent}${continuation}`;
|
|
541
|
-
console.log(`${prefix}${parts.join(', ')}`);
|
|
542
|
-
});
|
|
543
|
-
});
|
|
544
|
-
}
|
|
545
|
-
/** Phase 2 — create the HTTP fetch handler. Requires Vite context (virtual: URLs). */
|
|
546
|
-
async _createHandler() {
|
|
547
|
-
const mw = new MiddlewareConfigurator();
|
|
548
|
-
this._mwFn?.(mw);
|
|
549
|
-
const exc = new ExceptionConfigurator();
|
|
550
|
-
this._excFn?.(exc);
|
|
551
|
-
const errorHandler = exc.buildHandler();
|
|
552
|
-
const { router } = await import('@rudderjs/router');
|
|
553
|
-
this._handler = await this._server.createFetchHandler((adapter) => {
|
|
554
|
-
for (const h of mw.getHandlers())
|
|
555
|
-
adapter.applyMiddleware(h);
|
|
556
|
-
if (adapter.applyGroupMiddleware) {
|
|
557
|
-
for (const h of mw.getGroupHandlers('web'))
|
|
558
|
-
adapter.applyGroupMiddleware('web', h);
|
|
559
|
-
for (const h of mw.getGroupHandlers('api'))
|
|
560
|
-
adapter.applyGroupMiddleware('api', h);
|
|
561
|
-
}
|
|
562
|
-
router.mount(adapter);
|
|
563
|
-
adapter.setErrorHandler?.(errorHandler);
|
|
564
|
-
});
|
|
565
|
-
}
|
|
566
|
-
/** Boot providers without starting an HTTP server — used by the CLI */
|
|
567
|
-
async boot() {
|
|
568
|
-
await this._providerBoot;
|
|
569
|
-
}
|
|
570
|
-
async handleRequest(request, env, ctx) {
|
|
571
|
-
if (!this._boot)
|
|
572
|
-
this._boot = this._providerBoot.then(() => this._createHandler());
|
|
573
|
-
await this._boot;
|
|
574
|
-
if (!this._handler)
|
|
575
|
-
throw new Error('[RudderJS] Request handler not initialized.');
|
|
576
|
-
return this._handler(request, env, ctx);
|
|
577
|
-
}
|
|
578
|
-
fetch = (request, env, ctx) => this.handleRequest(request, env, ctx);
|
|
579
|
-
}
|
|
580
266
|
// ─── Global helpers ────────────────────────────────────────
|
|
581
267
|
export const app = () => Application.getInstance();
|
|
582
268
|
export const resolve = (token) => Application.getInstance().make(token);
|
package/dist/application.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.js","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,SAAS,EAAE,MAAM,SAAS,CAAA;AAExE,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAE9E,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,MAAM,EACN,oBAAoB,GACrB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAA;AAiBrE,MAAM,OAAO,WAAW;IACd,MAAM,CAAC,QAAQ,CAAa;IAC3B,SAAS,CAAW;IACrB,SAAS,GAAsB,EAAE,CAAA;IACjC,MAAM,GAAG,KAAK,CAAA;IACd,QAAQ,GAAG,KAAK,CAAA;IAChB,gBAAgB,GAAG,IAAI,OAAO,EAAmB,CAAA;IAEzD,gEAAgE;IACxD,kBAAkB,GAAG,IAAI,GAAG,EAAiB,CAAA;IACrD,qFAAqF;IAC7E,gBAAgB,GAAK,IAAI,GAAG,EAAU,CAAA;IAE9C,mFAAmF;IAC3E,kBAAkB,GAAG,IAAI,GAAG,EAAyB,CAAA;IAEpD,IAAI,CAAS;IACb,GAAG,CAAU;IACb,KAAK,CAAS;IAEvB,YAAoB,SAAqB,EAAE;QACzC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,IAAI,GAAI,MAAM,CAAC,IAAI,IAAK,GAAG,CAAC,GAAG,CAAC,UAAU,EAAG,UAAU,CAAC,CAAA;QAC7D,IAAI,CAAC,GAAG,GAAK,MAAM,CAAC,GAAG,IAAM,GAAG,CAAC,GAAG,CAAC,SAAS,EAAI,YAAY,CAAC,CAAA;QAC/D,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;QAE5D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACpC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;QAE5C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAChD,mBAAmB,CAAC,IAAI,CAAC,CAAA;YACzB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QACzC,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;YAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;IAED,sDAAsD;IAC9C,cAAc,CAAC,QAAuB;QAC5C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACrC,IAAI,QAAQ,CAAC,IAAI;YAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC7D,CAAC;IAED,gFAAgF;IACxE,YAAY,CAAC,QAAuB;QAC1C,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAA;QACtD,IAAI,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QAC1E,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,MAAmB;QAC/B,MAAM,CAAC,GAAG,UAAqC,CAAA;QAE/C,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC3B,CAAC,CAAC,kBAAkB,CAAC,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAA;QACjD,CAAC;QACD,WAAW,CAAC,QAAQ,GAAG,CAAC,CAAC,kBAAkB,CAAgB,CAAA;QAC3D,OAAO,WAAW,CAAC,QAAQ,CAAA;IAC7B,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,MAAM,CAAC,GAAG,UAAqC,CAAA;QAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,WAAW,CAAC,QAAQ,CAA4B,CAAA;QACvF,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAA;QACtG,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,6DAA6D;IAE7D,IAAI,CAAC,KAAuC,EAAE,OAAyC;QACrF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,SAAS,CAAC,KAA4C,EAAE,OAA8C;QACpG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACxC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,QAAQ,CAAI,KAA2C,EAAE,KAAQ;QAC/D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QACrC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAI,KAAuC;QAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAM,CAAA;IACxC,CAAC;IAED,MAAM,CAAC,KAAyC,EAAE,OAA2C;QAC3F,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACrC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,SAAS,CAAI,EAAW;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IACrC,CAAC;IAED,IAAI,CAAC,QAA0C;QAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IAED,6DAA6D;IAE7D;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAyC;QACtD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,KAAK,MAAM,CAAC,IAAI,QAAQ;gBAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;YAChD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAA;QAC5C,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QAE7B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAA;QACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC7B,QAAQ,CAAC,QAAQ,EAAE,CAAA;QAEnB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAA;gBACvB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACrC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,GAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,IAAI,mBAAmB,CAAA;gBAC/E,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAC9D,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,+BAA+B,KAAK,iEAAiE,EACjI,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAA;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,YAAY;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE,CAAA;YACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAA;YACpC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,wEAAwE;gBACxE,MAAM,IAAI,GAAG,QAAQ,CAAC,WAA4B,CAAA;gBAClD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;gBAC1C,CAAC;gBACD,SAAQ;YACV,CAAC;YACD,QAAQ,CAAC,QAAQ,EAAE,CAAA;QACrB,CAAC;QAED,uEAAuE;QACvE,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;gBACzC,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAA;gBACzD,IAAI,CAAC,GAAG;oBAAE,OAAM;gBAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACjD,IAAI,CAAC,QAAQ;oBAAE,OAAM;gBAErB,0DAA0D;gBAC1D,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC7C,IAAI,CAAC,KAAK,QAAQ;wBAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;gBACvD,CAAC;gBAED,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAA;gBACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAC7B,QAAQ,CAAC,QAAQ,EAAE,CAAA;gBACnB,mDAAmD;gBACnD,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAA;gBACjB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACrC,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACpB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,SAAQ;YACjD,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAA;gBACvB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACrC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,GAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAA;gBACvC,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAC9D,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,+BAA+B,KAAK,iEAAiE,EACjI,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAA;YACH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA;QAC5B,IAAI,CAAC,YAAY,EAAE,CAAA;QACnB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,QAAQ,KAAmB,OAAO,IAAI,CAAC,MAAM,CAAA,CAAC,CAAC;IAC/C,YAAY,KAAe,OAAO,IAAI,CAAC,GAAG,KAAK,YAAY,CAAA,CAAC,CAAC;IAC7D,aAAa,KAAc,OAAO,IAAI,CAAC,GAAG,KAAK,aAAa,IAAI,IAAI,CAAC,GAAG,KAAK,OAAO,CAAA,CAAC,CAAC;IAEtF,MAAM,CAAC,SAAS,CAAC,OAAyB;QACxC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;IAED,+BAA+B;IAC/B,MAAM,CAAC,eAAe;QACpB,CAAC;QAAC,WAAkD,CAAC,UAAU,CAAC,GAAG,SAAS,CAC3E;QAAC,UAAsC,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAA;IAC1E,CAAC;CACF;AAqBD,MAAM,OAAO,sBAAsB;IACzB,SAAS,GAAwB,EAAE,CAAA;IACnC,cAAc,GAAgD,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAA;IAE1F,4EAA4E;IAC5E,GAAG,CAAC,OAA0B;QAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC5B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,2FAA2F;IAC3F,GAAG,CAAC,GAAG,QAA6B;QAClC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;QACzC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,2FAA2F;IAC3F,GAAG,CAAC,GAAG,QAA6B;QAClC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;QACzC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,WAAW,KAA0B,OAAO,IAAI,CAAC,SAAS,CAAA,CAAC,CAAC;IAE5D,qFAAqF;IACrF,gBAAgB,CAAC,KAAqB;QACpC,OAAO,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;IACxE,CAAC;CACF;AAED,6DAA6D;AAC7D,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAChF,6DAA6D;AAC7D,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,6EAA6E;AAC7E,0EAA0E;AAC1E,qDAAqD;AACrD,EAAE;AACF,kFAAkF;AAElF,MAAM,oBAAoB,GAAG,+BAA+B,CAAA;AAC5D,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE;IACjC,MAAM,CAAC,GAAG,UAAqC,CAAA;IAC/C,MAAM,QAAQ,GAAG,CAAC,CAAC,oBAAoB,CAA4D,CAAA;IACnG,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAC7B,MAAM,KAAK,GAAgD,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAA;IAC/E,CAAC,CAAC,oBAAoB,CAAC,GAAG,KAAK,CAAA;IAC/B,OAAO,KAAK,CAAA;AACd,CAAC,CAAC,EAAE,CAAA;AAEJ;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,KAAqB,EAAE,OAA0B;IAC7E,oBAAoB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC3C,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,oBAAoB;IAClC,oBAAoB,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;IACnC,oBAAoB,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;AACrC,CAAC;AAMD,MAAM,OAAO,qBAAqB;IAChC,8DAA8D;IACtD,QAAQ,GAAwE,EAAE,CAAA;IAC1F,8DAA8D;IACtD,QAAQ,GAAyC,IAAI,GAAG,EAAE,CAAA;IAElE;;;;;;;OAOG;IACH,MAAM;IACJ,8DAA8D;IAC9D,IAA+B,EAC/B,EAA6D;QAE7D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAmB,EAAE,CAAC,CAAA;QACrD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;OAEG;IACH,8DAA8D;IAC9D,MAAM,CAAC,IAAqC;QAC1C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,EAA0B;QACpC,oBAAoB,CAAC,EAAE,CAAC,CAAA;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,2EAA2E;IAC3E,YAAY;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;QACrC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAEtC,OAAO,KAAK,EAAE,GAAY,EAAE,GAAe,EAAqB,EAAE;YAChE,mCAAmC;YACnC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,IAAI,GAAG,YAAY,IAAI;oBAAE,MAAM,GAAG,CAAA;YACpC,CAAC;YAED,+CAA+C;YAC/C,KAAK,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,OAAO,EAAE,CAAC;gBACnC,IAAI,GAAG,YAAY,IAAI;oBAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;YAC9C,CAAC;YAED,iGAAiG;YACjG,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;gBACtC,OAAO,GAAG,CAAC,QAAQ,CAAA;YACrB,CAAC;YAED,gCAAgC;YAChC,IAAI,GAAG,YAAY,eAAe,EAAE,CAAC;gBACnC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;oBAChD,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAChD,CAAC,CAAA;YACJ,CAAC;YAED,gEAAgE;YAChE,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;gBACjC,OAAO,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;YACtC,CAAC;YAED,yEAAyE;YACzE,oEAAoE;YACpE,6DAA6D;YAC7D,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAI,GAAwC,CAAC,UAAU,CAAA;gBACnE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;oBAChE,OAAO,mBAAmB,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAA;gBACzE,CAAC;YACH,CAAC;YAED,qCAAqC;YACrC,MAAM,CAAC,GAAG,CAAC,CAAA;YACX,IAAI,KAAK,GAAG,KAAK,CAAA;YACjB,IAAI,CAAC;gBAAC,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC,KAAK,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;YAC7E,OAAO,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;QAC3C,CAAC,CAAA;IACH,CAAC;CACF;AAED,8DAA8D;AAE9D,MAAM,OAAO,UAAU;IAKQ;IAJrB,QAAQ,GAAkC,EAAE,CAAA;IAC5C,KAAK,CAAuC;IAC5C,MAAM,CAAqC;IAEnD,YAA6B,QAA0B;QAA1B,aAAQ,GAAR,QAAQ,CAAkB;IAAG,CAAC;IAE3D,WAAW,CAAC,MAAsB;QAChC,IAAI,MAAM,CAAC,GAAG;YAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QAC9E,IAAI,MAAM,CAAC,GAAG;YAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QAC9E,IAAI,MAAM,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACxD,IAAI,MAAM,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACxD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,kFAAkF;IAC1E,aAAa,CAAC,KAAoB,EAAE,MAA8B;QACxE,OAAO,KAAK,IAAI,EAAE;YAChB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;YACzD,OAAO,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACpC,CAAC,CAAA;IACH,CAAC;IAED,cAAc,CAAC,EAAuC;QACpD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;QACf,OAAO,IAAI,CAAA;IACb,CAAC;IAED,cAAc,CAAC,EAAsC;QACnD,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM;QACJ,MAAM,CAAC,GAAG,UAAqC,CAAA;QAC/C,IAAI,CAAC,CAAC,uBAAuB,CAAC;YAAE,OAAO,CAAC,CAAC,uBAAuB,CAAa,CAAA;QAE7E,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAO,EAAE,MAAM,EAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACnE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;SACvE,CAAC,CAAA;QACF,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAChG,CAAC,CAAC,uBAAuB,CAAC,GAAG,QAAQ,CAAA;QACrC,OAAO,QAAQ,CAAA;IACjB,CAAC;CACF;AAED,8DAA8D;AAE9D,MAAM,OAAO,QAAQ;IAQA;IACA;IACA;IACA;IACA;IAXnB,+EAA+E;IACvE,aAAa,CAAe;IACpC,yFAAyF;IACjF,KAAK,GAAyB,IAAI,CAAA;IAClC,QAAQ,GAAwB,IAAI,CAAA;IAE5C,YACmB,IAAqB,EACrB,OAA+B,EAC/B,QAAuC,EACvC,KAA6C,EAC7C,MAA4C;QAJ5C,SAAI,GAAJ,IAAI,CAAiB;QACrB,YAAO,GAAP,OAAO,CAAwB;QAC/B,aAAQ,GAAR,QAAQ,CAA+B;QACvC,UAAK,GAAL,KAAK,CAAwC;QAC7C,WAAM,GAAN,MAAM,CAAsC;QAE7D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAA;IACjD,CAAC;IAEO,kBAAkB;QACxB,MAAM,OAAO,GAAG,CAAC,IAAe,EAAW,EAAE;YAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACpD,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,OAAO,IAAI,CAAA;YACvC,IAAI,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC;gBAAE,OAAO,IAAI,CAAA;YACnD,OAAO,KAAK,CAAA;QACd,CAAC,CAAA;QACD,MAAM,IAAI,GAAI,OAAO,CAAC,GAAG,CAAA;QACzB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAA;QAC1B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAA;QAC1B,OAAO,CAAC,GAAG,GAAI,CAAC,GAAG,CAAY,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA,CAAE,CAAC,CAAA;QACpE,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,CAAY,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA,CAAC,CAAC,CAAA;QACpE,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,CAAY,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA,CAAC,CAAC,CAAA;IACtE,CAAC;IAED,6EAA6E;IACrE,KAAK,CAAC,mBAAmB;QAC/B,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,EAAE,CAAA;YACd,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAkC,CAAA;YACpF,MAAM,CAAC,KAAK,EAAE,CAAA;YACd,oBAAoB,EAAE,CAAA;QACxB,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAA;QAC3B,qEAAqE;QACrE,sEAAsE;QACtE,wEAAwE;QACxE,sEAAsE;QACtE,6DAA6D;QAC7D,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,MAAM,EAAE,CAAA;QAClD,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAAE,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACtD,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IACjC,CAAC;IAED;;;;OAIG;IACK,gBAAgB;QACtB,MAAM,OAAO,GAAG,4BAA4B,EAAE,CAAA;QAC9C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAEhC,MAAM,CAAC,GAAG;YACR,GAAG,EAAM,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS;YAC5C,OAAO,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;YAC7C,IAAI,EAAK,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;YAC7C,KAAK,EAAI,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;YAC7C,MAAM,EAAG,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;SAC9C,CAAA;QACD,MAAM,YAAY,GAAG;YACnB,UAAU,EAAM,CAAC,CAAC,OAAO;YACzB,cAAc,EAAE,CAAC,CAAC,IAAI;YACtB,OAAO,EAAS,CAAC,CAAC,KAAK;YACvB,UAAU,EAAM,CAAC,CAAC,MAAM;SAChB,CAAA;QACV,MAAM,WAAW,GAAG,CAAC,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,CAAU,CAAA;QAEtF,MAAM,SAAS,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAEtG,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAA;QAC3C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;YACvC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;YAC/B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC5B,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,MAAM,YAAY,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;QAE7F,wEAAwE;QACxE,+BAA+B;QAC/B,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAE/E,MAAM,UAAU,GAAG,EAAE,CAAA;QACrB,MAAM,MAAM,GAAO,IAAI,CAAA;QACvB,MAAM,SAAS,GAAI,KAAK,CAAA,CAAG,mCAAmC;QAC9D,MAAM,SAAS,GAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAA,CAAC,yBAAyB;QACjE,qEAAqE;QACrE,uEAAuE;QACvE,4CAA4C;QAC5C,MAAM,QAAQ,GAAK,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;QAC7D,MAAM,SAAS,GAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,CAAC,CAAA;QAExE,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAClC,MAAM,IAAI,GAAK,OAAO,CAAC,GAAG,CAAC,KAAK,CAAE,CAAA;YAClC,MAAM,MAAM,GAAG,GAAG,KAAK,YAAY,CAAC,MAAM,GAAG,CAAC,CAAA;YAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;YAErC,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;YACpC,MAAM,KAAK,GAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;YAEnD,qEAAqE;YACrE,MAAM,KAAK,GAAe,CAAC,EAAE,CAAC,CAAA;YAC9B,IAAI,UAAU,GAAG,CAAC,CAAA;YAClB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;gBACxE,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjF,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;oBAClB,UAAU,GAAG,IAAI,CAAC,MAAM,CAAA;gBAC1B,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACnC,UAAU,IAAI,KAAK,CAAC,MAAM,CAAA;gBAC5B,CAAC;YACH,CAAC;YAED,wEAAwE;YACxE,yDAAyD;YACzD,MAAM,YAAY,GAAG,MAAM;gBACzB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;gBACxC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YAEzC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;gBACzB,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC;oBACpB,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE;oBACrC,CAAC,CAAC,GAAG,MAAM,GAAG,YAAY,EAAE,CAAA;gBAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC7C,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,sFAAsF;IAC9E,KAAK,CAAC,cAAc;QAC1B,MAAM,EAAE,GAAG,IAAI,sBAAsB,EAAE,CAAA;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;QAChB,MAAM,GAAG,GAAG,IAAI,qBAAqB,EAAE,CAAA;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAA;QAClB,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,EAAE,CAAA;QACvC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAwD,CAAA;QAC1G,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,OAAsB,EAAE,EAAE;YAC/E,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;gBAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;YAC5D,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;gBACjC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC;oBAAE,OAAO,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;gBAClF,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC;oBAAE,OAAO,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;YACpF,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACrB,OAAO,CAAC,eAAe,EAAE,CAAC,YAAY,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,uEAAuE;IACvE,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,aAAa,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAgB,EAAE,GAAa,EAAE,GAAa;QAChE,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAA;QAClF,MAAM,IAAI,CAAC,KAAK,CAAA;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;QAClF,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IACzC,CAAC;IAEQ,KAAK,GAAG,CAAC,OAAgB,EAAE,GAAa,EAAE,GAAa,EAAqB,EAAE,CACrF,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;CACxC;AAED,8DAA8D;AAE9D,MAAM,CAAC,MAAM,GAAG,GAAG,GAAgB,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,CAAA;AAE/D,MAAM,CAAC,MAAM,OAAO,GAAG,CAAI,KAAuC,EAAK,EAAE,CACvE,WAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAAI,KAAK,CAAC,CAAA;AAE1C,MAAM,UAAU,YAAY,CAAI,MAAS,IAAO,OAAO,MAAM,CAAA,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"application.js","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"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"}
|