@gettersethya/mira 0.1.0-alpha.6 → 0.1.0-alpha.9
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/src/app/app.d.ts +18 -14
- package/dist/src/app/app.d.ts.map +1 -1
- package/dist/src/app/app.js +65 -28
- package/dist/src/app/app.js.map +1 -1
- package/dist/src/app/index.d.ts +3 -1
- package/dist/src/app/index.d.ts.map +1 -1
- package/dist/src/app/index.js +1 -0
- package/dist/src/app/index.js.map +1 -1
- package/dist/src/app/plugin.d.ts +60 -0
- package/dist/src/app/plugin.d.ts.map +1 -0
- package/dist/src/app/plugin.js +20 -0
- package/dist/src/app/plugin.js.map +1 -0
- package/dist/src/cache/cached-collection.d.ts.map +1 -1
- package/dist/src/cache/cached-collection.js +3 -3
- package/dist/src/cache/cached-collection.js.map +1 -1
- package/dist/src/collection-service/collection-service.d.ts +1 -1
- package/dist/src/collection-service/collection-service.d.ts.map +1 -1
- package/dist/src/collection-service/collection-service.js +57 -35
- package/dist/src/collection-service/collection-service.js.map +1 -1
- package/dist/src/collection-service/context.d.ts +2 -0
- package/dist/src/collection-service/context.d.ts.map +1 -1
- package/dist/src/collection-service/input-schema.d.ts.map +1 -1
- package/dist/src/collection-service/input-schema.js +3 -1
- package/dist/src/collection-service/input-schema.js.map +1 -1
- package/dist/src/hooks/hook-collection.d.ts +5 -0
- package/dist/src/hooks/hook-collection.d.ts.map +1 -0
- package/dist/src/hooks/hook-collection.js +77 -0
- package/dist/src/hooks/hook-collection.js.map +1 -0
- package/dist/src/hooks/hook-service.d.ts +33 -0
- package/dist/src/hooks/hook-service.d.ts.map +1 -0
- package/dist/src/hooks/hook-service.js +118 -0
- package/dist/src/hooks/hook-service.js.map +1 -0
- package/dist/src/hooks/index.d.ts +4 -0
- package/dist/src/hooks/index.d.ts.map +1 -0
- package/dist/src/hooks/index.js +3 -0
- package/dist/src/hooks/index.js.map +1 -0
- package/dist/src/hooks/types.d.ts +52 -0
- package/dist/src/hooks/types.d.ts.map +1 -0
- package/dist/src/hooks/types.js +2 -0
- package/dist/src/hooks/types.js.map +1 -0
- package/dist/src/http/auth.d.ts +2 -0
- package/dist/src/http/auth.d.ts.map +1 -1
- package/dist/src/http/auth.js +10 -0
- package/dist/src/http/auth.js.map +1 -1
- package/dist/src/http/index.d.ts +1 -0
- package/dist/src/http/index.d.ts.map +1 -1
- package/dist/src/http/index.js +1 -0
- package/dist/src/http/index.js.map +1 -1
- package/dist/src/http/ip-middleware.d.ts.map +1 -1
- package/dist/src/http/ip-middleware.js +6 -3
- package/dist/src/http/ip-middleware.js.map +1 -1
- package/dist/src/http/router.d.ts.map +1 -1
- package/dist/src/http/router.js +85 -19
- package/dist/src/http/router.js.map +1 -1
- package/dist/src/http/schema.d.ts +5 -0
- package/dist/src/http/schema.d.ts.map +1 -0
- package/dist/src/http/schema.js +17 -0
- package/dist/src/http/schema.js.map +1 -0
- package/dist/src/http/telemetry-routes.d.ts +5 -0
- package/dist/src/http/telemetry-routes.d.ts.map +1 -0
- package/dist/src/http/telemetry-routes.js +156 -0
- package/dist/src/http/telemetry-routes.js.map +1 -0
- package/dist/src/index.d.ts +11 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +12 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/migrator/migrator.d.ts +1 -1
- package/dist/src/platforms/node.d.ts +1 -1
- package/dist/src/platforms/node.d.ts.map +1 -1
- package/dist/src/telemetry/collections.d.ts +4 -0
- package/dist/src/telemetry/collections.d.ts.map +1 -0
- package/dist/src/telemetry/collections.js +19 -0
- package/dist/src/telemetry/collections.js.map +1 -0
- package/dist/src/telemetry/index.d.ts +4 -1
- package/dist/src/telemetry/index.d.ts.map +1 -1
- package/dist/src/telemetry/index.js +2 -0
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/sqlite-logger.d.ts +24 -0
- package/dist/src/telemetry/sqlite-logger.d.ts.map +1 -0
- package/dist/src/telemetry/sqlite-logger.js +152 -0
- package/dist/src/telemetry/sqlite-logger.js.map +1 -0
- package/dist/src/telemetry/telemetry-sql-client.d.ts +11 -0
- package/dist/src/telemetry/telemetry-sql-client.d.ts.map +1 -0
- package/dist/src/telemetry/telemetry-sql-client.js +8 -0
- package/dist/src/telemetry/telemetry-sql-client.js.map +1 -0
- package/dist/tests/app/app.test.js +61 -14
- package/dist/tests/app/app.test.js.map +1 -1
- package/dist/tests/app/builder.test.js +6 -5
- package/dist/tests/app/builder.test.js.map +1 -1
- package/dist/tests/collection-service/collection-service.test.js +65 -1
- package/dist/tests/collection-service/collection-service.test.js.map +1 -1
- package/dist/tests/collection-service/input-schema.test.js +37 -1
- package/dist/tests/collection-service/input-schema.test.js.map +1 -1
- package/dist/tests/hooks/hook-collection.test.d.ts +2 -0
- package/dist/tests/hooks/hook-collection.test.d.ts.map +1 -0
- package/dist/tests/hooks/hook-collection.test.js +103 -0
- package/dist/tests/hooks/hook-collection.test.js.map +1 -0
- package/dist/tests/hooks/hook-service.test.d.ts +2 -0
- package/dist/tests/hooks/hook-service.test.d.ts.map +1 -0
- package/dist/tests/hooks/hook-service.test.js +216 -0
- package/dist/tests/hooks/hook-service.test.js.map +1 -0
- package/dist/tests/telemetry/collections.test.d.ts +2 -0
- package/dist/tests/telemetry/collections.test.d.ts.map +1 -0
- package/dist/tests/telemetry/collections.test.js +67 -0
- package/dist/tests/telemetry/collections.test.js.map +1 -0
- package/dist/tests/telemetry/sqlite-logger.test.d.ts +2 -0
- package/dist/tests/telemetry/sqlite-logger.test.d.ts.map +1 -0
- package/dist/tests/telemetry/sqlite-logger.test.js +218 -0
- package/dist/tests/telemetry/sqlite-logger.test.js.map +1 -0
- package/dist/tests/telemetry/telemetry-routes.test.d.ts +2 -0
- package/dist/tests/telemetry/telemetry-routes.test.d.ts.map +1 -0
- package/dist/tests/telemetry/telemetry-routes.test.js +133 -0
- package/dist/tests/telemetry/telemetry-routes.test.js.map +1 -0
- package/package.json +2 -2
package/dist/src/app/app.d.ts
CHANGED
|
@@ -2,7 +2,10 @@ import { HttpServer } from "@effect/platform";
|
|
|
2
2
|
import { Layer } from "effect";
|
|
3
3
|
import { Migrator } from "../migrator/migrator.js";
|
|
4
4
|
import { AppConfig } from "../config/index.js";
|
|
5
|
+
import type { Repository } from "../repository/index.js";
|
|
6
|
+
import type { CollectionService } from "../collection-service/collection-service.js";
|
|
5
7
|
import type { MiraAppConfig } from "./builder.js";
|
|
8
|
+
import type { MiraPlugin } from "./plugin.js";
|
|
6
9
|
/**
|
|
7
10
|
* The assembled Mira application, ready to serve.
|
|
8
11
|
*
|
|
@@ -11,7 +14,7 @@ import type { MiraAppConfig } from "./builder.js";
|
|
|
11
14
|
*
|
|
12
15
|
* `MiraApp` wires all layers (database, storage, collection service, HTTP server,
|
|
13
16
|
* telemetry, auto-migration) and provides `serve()` to start the server.
|
|
14
|
-
* Use `extend()` to add
|
|
17
|
+
* Use `extend()` to add plugins before serving.
|
|
15
18
|
*
|
|
16
19
|
* @example
|
|
17
20
|
* const app = Mira.builder()
|
|
@@ -24,8 +27,8 @@ import type { MiraAppConfig } from "./builder.js";
|
|
|
24
27
|
* app.serve()
|
|
25
28
|
*
|
|
26
29
|
* @example
|
|
27
|
-
* // With
|
|
28
|
-
* app.extend(
|
|
30
|
+
* // With plugin
|
|
31
|
+
* app.extend(MiraDashboard).serve({ port: 8080 })
|
|
29
32
|
*
|
|
30
33
|
* @see MiraBuilder — builds MiraApp
|
|
31
34
|
* @see Mira — entry point: Mira.builder()
|
|
@@ -36,26 +39,26 @@ export declare class MiraApp {
|
|
|
36
39
|
/** @internal for tests only */
|
|
37
40
|
_getConfig(): MiraAppConfig;
|
|
38
41
|
/** @internal for tests only */
|
|
39
|
-
_getExtras(): ReadonlyArray<
|
|
42
|
+
_getExtras(): ReadonlyArray<MiraPlugin>;
|
|
40
43
|
/**
|
|
41
|
-
* Add
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
+
* Add a plugin to the application. Plugins can register lifecycle hooks,
|
|
45
|
+
* record-lifecycle hooks, custom routes, service layers, and additional
|
|
46
|
+
* collection definitions.
|
|
44
47
|
*
|
|
45
|
-
* @param
|
|
48
|
+
* @param plugin - A MiraPlugin (use `fromLayer()` to wrap a plain Layer)
|
|
46
49
|
* @returns this (for chaining)
|
|
47
50
|
*
|
|
48
51
|
* @example
|
|
49
|
-
* app.extend(
|
|
52
|
+
* app.extend(MiraDashboard).serve()
|
|
50
53
|
*/
|
|
51
|
-
extend(
|
|
54
|
+
extend(plugin: MiraPlugin): this;
|
|
52
55
|
/**
|
|
53
56
|
* Build the full service layer without the HTTP server.
|
|
54
57
|
* Useful for testing — you can run Effects against the service layer without
|
|
55
58
|
* starting a network server.
|
|
56
59
|
*
|
|
57
60
|
* Includes: database, storage, telemetry, repository, migrator, app config,
|
|
58
|
-
* collection service (with cache), and auto-migration.
|
|
61
|
+
* collection service (with cache + hooks), and auto-migration.
|
|
59
62
|
*
|
|
60
63
|
* @returns A Layer providing all services
|
|
61
64
|
*
|
|
@@ -65,7 +68,7 @@ export declare class MiraApp {
|
|
|
65
68
|
* Effect.gen(function* () { ... }).pipe(Effect.provide(serviceLayer))
|
|
66
69
|
* )
|
|
67
70
|
*/
|
|
68
|
-
buildServiceLayer(): Layer.Layer<import("../index.js").FileStorage | import("./types.js").PlatformServices | import("./types.js").DatabaseServices |
|
|
71
|
+
buildServiceLayer(): Layer.Layer<Migrator | import("../index.js").FileStorage | import("./types.js").PlatformServices | import("./types.js").DatabaseServices | Repository | CollectionService | import("../thumbnail/index.js").ThumbnailService | AppConfig, import("effect/ParseResult").ParseError | import("@effect/sql/SqlError").SqlError, CollectionService>;
|
|
69
72
|
/**
|
|
70
73
|
* Build the complete server layer including the HTTP router and server.
|
|
71
74
|
* Accepts an optional port override (otherwise uses the port from AppConfig).
|
|
@@ -77,10 +80,11 @@ export declare class MiraApp {
|
|
|
77
80
|
*/
|
|
78
81
|
buildLayer(options?: {
|
|
79
82
|
port?: number;
|
|
80
|
-
}): Layer.Layer<HttpServer.HttpServer | import("@effect/platform/HttpPlatform").HttpPlatform | import("@effect/platform/Etag").Generator | import("../index.js").FileStorage | import("./types.js").PlatformServices | import("./types.js").DatabaseServices |
|
|
83
|
+
}): Layer.Layer<Migrator | HttpServer.HttpServer | import("@effect/platform/HttpPlatform").HttpPlatform | import("@effect/platform/Etag").Generator | import("../index.js").FileStorage | import("./types.js").PlatformServices | import("./types.js").DatabaseServices | Repository | CollectionService | import("../thumbnail/index.js").ThumbnailService | AppConfig, import("effect/ParseResult").ParseError | import("@effect/sql/SqlError").SqlError | import("@effect/platform/HttpServerError").ServeError, CollectionService>;
|
|
81
84
|
/**
|
|
82
85
|
* Start the Mira HTTP server.
|
|
83
|
-
* Sets up all services, runs auto-migration,
|
|
86
|
+
* Sets up all services, runs auto-migration, runs plugin lifecycle hooks,
|
|
87
|
+
* and listens for incoming requests.
|
|
84
88
|
* Blocks the main thread until the server is shut down.
|
|
85
89
|
*
|
|
86
90
|
* @param options.port - Optional port override (default: from AppConfig, typically 8080)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/app/app.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/app/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,UAAU,EAAQ,MAAM,kBAAkB,CAAA;AAE3E,OAAO,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAA;AAEtC,OAAO,EAAE,QAAQ,EAAgB,MAAM,wBAAwB,CAAA;AAM/D,OAAO,EAAE,SAAS,EAAiB,MAAM,mBAAmB,CAAA;AAG5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAA;AAEnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAK7C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,OAAO;;gBAIN,MAAM,EAAE,aAAa;IAKjC,+BAA+B;IAC/B,UAAU,IAAI,aAAa;IAI3B,+BAA+B;IAC/B,UAAU,IAAI,aAAa,CAAC,UAAU,CAAC;IAIvC;;;;;;;;;;OAUG;IACH,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAgBhC;;;;;;;;;;;;;;;OAeG;IACH,iBAAiB;IAgDjB;;;;;;;;OAQG;IACH,UAAU,CAAC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;IAgCtC;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAczC"}
|
package/dist/src/app/app.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { HttpServer } from "@effect/platform";
|
|
1
|
+
import { HttpRouter, HttpServer } from "@effect/platform";
|
|
2
2
|
import { Effect, Layer } from "effect";
|
|
3
3
|
import { RepositoryLive } from "../repository/repository.js";
|
|
4
4
|
import { Migrator, MigratorLive } from "../migrator/migrator.js";
|
|
@@ -8,6 +8,9 @@ import { ThumbnailServicePhotonLive } from "../thumbnail/index.js";
|
|
|
8
8
|
import { ipAnnotationMiddleware } from "../http/ip-middleware.js";
|
|
9
9
|
import { AppConfig, AppConfigLive } from "../config/index.js";
|
|
10
10
|
import { HttpServerFactory } from "../http/server-factory.js";
|
|
11
|
+
import { makeHookServiceLayer } from "../hooks/hook-service.js";
|
|
12
|
+
import { makeHookCollectionServiceLayer } from "../hooks/hook-collection.js";
|
|
13
|
+
import { HookService } from "../hooks/hook-service.js";
|
|
11
14
|
/**
|
|
12
15
|
* The assembled Mira application, ready to serve.
|
|
13
16
|
*
|
|
@@ -16,7 +19,7 @@ import { HttpServerFactory } from "../http/server-factory.js";
|
|
|
16
19
|
*
|
|
17
20
|
* `MiraApp` wires all layers (database, storage, collection service, HTTP server,
|
|
18
21
|
* telemetry, auto-migration) and provides `serve()` to start the server.
|
|
19
|
-
* Use `extend()` to add
|
|
22
|
+
* Use `extend()` to add plugins before serving.
|
|
20
23
|
*
|
|
21
24
|
* @example
|
|
22
25
|
* const app = Mira.builder()
|
|
@@ -29,8 +32,8 @@ import { HttpServerFactory } from "../http/server-factory.js";
|
|
|
29
32
|
* app.serve()
|
|
30
33
|
*
|
|
31
34
|
* @example
|
|
32
|
-
* // With
|
|
33
|
-
* app.extend(
|
|
35
|
+
* // With plugin
|
|
36
|
+
* app.extend(MiraDashboard).serve({ port: 8080 })
|
|
34
37
|
*
|
|
35
38
|
* @see MiraBuilder — builds MiraApp
|
|
36
39
|
* @see Mira — entry point: Mira.builder()
|
|
@@ -51,27 +54,36 @@ export class MiraApp {
|
|
|
51
54
|
return this.#extras;
|
|
52
55
|
}
|
|
53
56
|
/**
|
|
54
|
-
* Add
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
+
* Add a plugin to the application. Plugins can register lifecycle hooks,
|
|
58
|
+
* record-lifecycle hooks, custom routes, service layers, and additional
|
|
59
|
+
* collection definitions.
|
|
57
60
|
*
|
|
58
|
-
* @param
|
|
61
|
+
* @param plugin - A MiraPlugin (use `fromLayer()` to wrap a plain Layer)
|
|
59
62
|
* @returns this (for chaining)
|
|
60
63
|
*
|
|
61
64
|
* @example
|
|
62
|
-
* app.extend(
|
|
65
|
+
* app.extend(MiraDashboard).serve()
|
|
63
66
|
*/
|
|
64
|
-
extend(
|
|
65
|
-
this.#extras.push(
|
|
67
|
+
extend(plugin) {
|
|
68
|
+
this.#extras.push(plugin);
|
|
66
69
|
return this;
|
|
67
70
|
}
|
|
71
|
+
#getAllCollections() {
|
|
72
|
+
return [
|
|
73
|
+
...this.#config.collections,
|
|
74
|
+
...this.#extras.flatMap((p) => p.collections ?? [])
|
|
75
|
+
];
|
|
76
|
+
}
|
|
77
|
+
#getAllPlugins() {
|
|
78
|
+
return this.#extras;
|
|
79
|
+
}
|
|
68
80
|
/**
|
|
69
81
|
* Build the full service layer without the HTTP server.
|
|
70
82
|
* Useful for testing — you can run Effects against the service layer without
|
|
71
83
|
* starting a network server.
|
|
72
84
|
*
|
|
73
85
|
* Includes: database, storage, telemetry, repository, migrator, app config,
|
|
74
|
-
* collection service (with cache), and auto-migration.
|
|
86
|
+
* collection service (with cache + hooks), and auto-migration.
|
|
75
87
|
*
|
|
76
88
|
* @returns A Layer providing all services
|
|
77
89
|
*
|
|
@@ -82,23 +94,32 @@ export class MiraApp {
|
|
|
82
94
|
* )
|
|
83
95
|
*/
|
|
84
96
|
buildServiceLayer() {
|
|
85
|
-
const { platform, database, storage,
|
|
86
|
-
const
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
// Foundation: database + storage + thumbnail + telemetry
|
|
91
|
-
const foundation = Layer.mergeAll(database.layer, storage.layer, ThumbnailServicePhotonLive, telemetry
|
|
97
|
+
const { platform, database, storage, telemetry } = this.#config;
|
|
98
|
+
const allCollections = this.#getAllCollections();
|
|
99
|
+
const allPlugins = this.#getAllPlugins();
|
|
100
|
+
const pluginLayers = allPlugins.filter((p) => p.layer !== undefined).map((p) => p.layer);
|
|
101
|
+
const extrasLayer = pluginLayers.length > 0 ? pluginLayers.reduce((acc, l) => Layer.merge(acc, l)) : Layer.empty;
|
|
102
|
+
// Foundation: database + storage + thumbnail + telemetry, wired on platform
|
|
103
|
+
const foundation = Layer.mergeAll(database.layer, storage.layer, ThumbnailServicePhotonLive, telemetry).pipe(Layer.provideMerge(platform.layer));
|
|
92
104
|
// Mid: Repository + Migrator + AppConfig, wired on foundation
|
|
93
105
|
const mid = Layer.mergeAll(RepositoryLive, MigratorLive, AppConfigLive).pipe(Layer.provideMerge(foundation));
|
|
106
|
+
// Extras: plugin layers run after mid so they can depend on AppConfig + platform services
|
|
107
|
+
const extrasProvided = extrasLayer.pipe(Layer.provide(mid));
|
|
108
|
+
const fullMid = Layer.merge(mid, extrasProvided);
|
|
94
109
|
// Auto-migrate on boot: runs during layer initialization before requests are served
|
|
95
|
-
const schemas =
|
|
110
|
+
const schemas = allCollections.map((c) => ({ name: c.name, schema: c.schema }));
|
|
96
111
|
const autoMigrateLayer = Layer.effectDiscard(Effect.gen(function* () {
|
|
97
112
|
const migrator = yield* Migrator;
|
|
98
113
|
yield* migrator.migrate(schemas);
|
|
99
|
-
}).pipe(Effect.orDie)).pipe(Layer.provide(
|
|
100
|
-
//
|
|
101
|
-
|
|
114
|
+
}).pipe(Effect.orDie)).pipe(Layer.provide(fullMid));
|
|
115
|
+
// Core collection service (cached)
|
|
116
|
+
const cachedCollectionLayer = makeCachedCollectionServiceLayer(allCollections);
|
|
117
|
+
// Hook service layer (collects all plugin hooks)
|
|
118
|
+
const hookServiceLayer = makeHookServiceLayer(allPlugins);
|
|
119
|
+
// Hook collection service decorator: wraps cached collection service with hooks
|
|
120
|
+
const hookCollectionLayer = makeHookCollectionServiceLayer().pipe(Layer.provide(Layer.mergeAll(cachedCollectionLayer, hookServiceLayer)));
|
|
121
|
+
// Top: hook-wrapped collection service + all mid services + auto-migration side effect
|
|
122
|
+
return hookCollectionLayer.pipe(Layer.provideMerge(Layer.merge(fullMid, autoMigrateLayer)));
|
|
102
123
|
}
|
|
103
124
|
/**
|
|
104
125
|
* Build the complete server layer including the HTTP router and server.
|
|
@@ -110,9 +131,16 @@ export class MiraApp {
|
|
|
110
131
|
* @internal Called by serve() — most users should use serve() directly.
|
|
111
132
|
*/
|
|
112
133
|
buildLayer(options) {
|
|
113
|
-
const
|
|
114
|
-
const
|
|
115
|
-
|
|
134
|
+
const allCollections = this.#getAllCollections();
|
|
135
|
+
const collectionRouter = makeCollectionRouter(allCollections);
|
|
136
|
+
// Plugin routes
|
|
137
|
+
let pluginRouter = HttpRouter.empty;
|
|
138
|
+
for (const plugin of this.#extras) {
|
|
139
|
+
if (plugin.routes !== undefined) {
|
|
140
|
+
pluginRouter = HttpRouter.concat(pluginRouter, plugin.routes);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
const router = HttpRouter.concat(collectionRouter, pluginRouter);
|
|
116
144
|
const serviceLayer = this.buildServiceLayer();
|
|
117
145
|
const serverLayer = Layer.unwrapEffect(Effect.gen(function* () {
|
|
118
146
|
const cfg = yield* AppConfig;
|
|
@@ -123,7 +151,8 @@ export class MiraApp {
|
|
|
123
151
|
}
|
|
124
152
|
/**
|
|
125
153
|
* Start the Mira HTTP server.
|
|
126
|
-
* Sets up all services, runs auto-migration,
|
|
154
|
+
* Sets up all services, runs auto-migration, runs plugin lifecycle hooks,
|
|
155
|
+
* and listens for incoming requests.
|
|
127
156
|
* Blocks the main thread until the server is shut down.
|
|
128
157
|
*
|
|
129
158
|
* @param options.port - Optional port override (default: from AppConfig, typically 8080)
|
|
@@ -133,7 +162,15 @@ export class MiraApp {
|
|
|
133
162
|
* app.serve({ port: 8080 }) // port override
|
|
134
163
|
*/
|
|
135
164
|
serve(options) {
|
|
136
|
-
this.#
|
|
165
|
+
const allPlugins = this.#getAllPlugins();
|
|
166
|
+
const hookServiceLayer = makeHookServiceLayer(allPlugins);
|
|
167
|
+
const fullLayer = this.buildLayer(options);
|
|
168
|
+
this.#config.platform.runMain(Effect.gen(this, function* () {
|
|
169
|
+
const hookService = yield* HookService.pipe(Effect.provide(hookServiceLayer));
|
|
170
|
+
const bootstrapLayer = Layer.effectDiscard(hookService.runBootstrap());
|
|
171
|
+
yield* Layer.launch(bootstrapLayer.pipe(Layer.provideMerge(fullLayer)));
|
|
172
|
+
yield* hookService.runServe();
|
|
173
|
+
}));
|
|
137
174
|
}
|
|
138
175
|
}
|
|
139
176
|
//# sourceMappingURL=app.js.map
|
package/dist/src/app/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/app/app.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/app/app.ts"],"names":[],"mappings":"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"}
|
package/dist/src/app/index.d.ts
CHANGED
|
@@ -25,7 +25,9 @@ import { MiraBuilder } from "./builder.js";
|
|
|
25
25
|
export declare const Mira: {
|
|
26
26
|
builder: () => MiraBuilder<never>;
|
|
27
27
|
};
|
|
28
|
-
export type { MiraPlatform, MiraDatabase, MiraStorage } from "./types.js";
|
|
28
|
+
export type { MiraPlatform, MiraDatabase, MiraStorage, PlatformServices } from "./types.js";
|
|
29
29
|
export type { MiraApp } from "./app.js";
|
|
30
30
|
export { MiraBuilder } from "./builder.js";
|
|
31
|
+
export type { RecordHook, RecordSuccessHook, ListHook, ListSuccessHook } from "./plugin.js";
|
|
32
|
+
export { MiraPlugin, onCollection, onCollectionSuccess } from "./plugin.js";
|
|
31
33
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,eAAO,MAAM,IAAI;;CAEhB,CAAA;AAED,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,eAAO,MAAM,IAAI;;CAEhB,CAAA;AAED,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC3F,YAAY,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC3F,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/src/app/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,WAAW,EAAE;CACjC,CAAA;AAID,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,WAAW,EAAE;CACjC,CAAA;AAID,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { Effect, Layer } from "effect";
|
|
2
|
+
import type { HttpRouter, FileSystem, Path } from "@effect/platform";
|
|
3
|
+
import type { SqlClient } from "@effect/sql";
|
|
4
|
+
import type { AnyCollectionDef } from "@gettersethya/mira-client";
|
|
5
|
+
import type { Repository } from "../repository/index.js";
|
|
6
|
+
import type { AppConfig } from "../config/index.js";
|
|
7
|
+
import type { AuthService } from "../http/auth.js";
|
|
8
|
+
import type { CollectionService } from "../collection-service/collection-service.js";
|
|
9
|
+
import type { PlatformServices } from "./types.js";
|
|
10
|
+
import type { RecordHookContext, RecordResultContext, ListHookContext, ListResultContext, ViewHookContext, ViewResultContext, HookErrorContext } from "../hooks/types.js";
|
|
11
|
+
export interface RecordHook<T> {
|
|
12
|
+
readonly collections?: ReadonlyArray<string>;
|
|
13
|
+
readonly handler: (ctx: T) => Effect.Effect<T, never, never>;
|
|
14
|
+
}
|
|
15
|
+
export interface RecordSuccessHook<T> {
|
|
16
|
+
readonly collections?: ReadonlyArray<string>;
|
|
17
|
+
readonly handler: (ctx: T) => Effect.Effect<void, never, never>;
|
|
18
|
+
}
|
|
19
|
+
export interface ListHook<T> {
|
|
20
|
+
readonly collections?: ReadonlyArray<string>;
|
|
21
|
+
readonly handler: (ctx: T) => Effect.Effect<T, never, never>;
|
|
22
|
+
}
|
|
23
|
+
export interface ListSuccessHook<T> {
|
|
24
|
+
readonly collections?: ReadonlyArray<string>;
|
|
25
|
+
readonly handler: (ctx: T) => Effect.Effect<void, never, never>;
|
|
26
|
+
}
|
|
27
|
+
export declare const onCollection: <T>(collections: ReadonlyArray<string>, handler: (ctx: T) => Effect.Effect<T, never, never>) => RecordHook<T>;
|
|
28
|
+
export declare const onCollectionSuccess: <T>(collections: ReadonlyArray<string>, handler: (ctx: T) => Effect.Effect<void, never, never>) => RecordSuccessHook<T>;
|
|
29
|
+
export interface MiraPlugin {
|
|
30
|
+
readonly onBootstrap?: () => Effect.Effect<void, never, AppConfig | CollectionService>;
|
|
31
|
+
readonly onServe?: () => Effect.Effect<void, never, never>;
|
|
32
|
+
readonly onTerminate?: () => Effect.Effect<void, never, never>;
|
|
33
|
+
readonly onRecordCreate?: RecordHook<RecordHookContext>;
|
|
34
|
+
readonly onRecordCreateExecute?: RecordHook<RecordHookContext>;
|
|
35
|
+
readonly onRecordCreateSuccess?: RecordSuccessHook<RecordResultContext>;
|
|
36
|
+
readonly onRecordCreateError?: RecordSuccessHook<HookErrorContext>;
|
|
37
|
+
readonly onRecordUpdate?: RecordHook<RecordHookContext>;
|
|
38
|
+
readonly onRecordUpdateExecute?: RecordHook<RecordHookContext>;
|
|
39
|
+
readonly onRecordUpdateSuccess?: RecordSuccessHook<RecordResultContext>;
|
|
40
|
+
readonly onRecordUpdateError?: RecordSuccessHook<HookErrorContext>;
|
|
41
|
+
readonly onRecordDelete?: RecordHook<RecordHookContext>;
|
|
42
|
+
readonly onRecordDeleteExecute?: RecordHook<RecordHookContext>;
|
|
43
|
+
readonly onRecordDeleteSuccess?: RecordSuccessHook<RecordResultContext>;
|
|
44
|
+
readonly onRecordDeleteError?: RecordSuccessHook<HookErrorContext>;
|
|
45
|
+
readonly onRecordList?: ListHook<ListHookContext>;
|
|
46
|
+
readonly onRecordListSuccess?: ListSuccessHook<ListResultContext>;
|
|
47
|
+
readonly onRecordListError?: ListSuccessHook<HookErrorContext>;
|
|
48
|
+
readonly onRecordView?: ListHook<ViewHookContext>;
|
|
49
|
+
readonly onRecordViewSuccess?: ListSuccessHook<ViewResultContext>;
|
|
50
|
+
readonly onRecordViewError?: ListSuccessHook<HookErrorContext>;
|
|
51
|
+
readonly layer?: Layer.Layer<never, never, PlatformServices | AppConfig | Repository | CollectionService>;
|
|
52
|
+
readonly routes?: HttpRouter.HttpRouter<never, FileSystem.FileSystem | Path.Path | Repository | AppConfig | AuthService | SqlClient.SqlClient | CollectionService>;
|
|
53
|
+
readonly collections?: ReadonlyArray<AnyCollectionDef>;
|
|
54
|
+
}
|
|
55
|
+
export declare const MiraPlugin: {
|
|
56
|
+
define: (opts: MiraPlugin) => MiraPlugin;
|
|
57
|
+
fromLayer: (layer: Layer.Layer<never, never, never>) => MiraPlugin;
|
|
58
|
+
isMiraPlugin: (ext: unknown) => ext is MiraPlugin;
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/app/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const onCollection = (collections, handler) => ({ collections, handler });
|
|
2
|
+
export const onCollectionSuccess = (collections, handler) => ({ collections, handler });
|
|
3
|
+
export const MiraPlugin = {
|
|
4
|
+
define: (opts) => {
|
|
5
|
+
const instance = { _tag: "MiraPlugin", ...opts };
|
|
6
|
+
return instance;
|
|
7
|
+
},
|
|
8
|
+
fromLayer: (layer) => {
|
|
9
|
+
const instance = { _tag: "MiraPlugin", layer };
|
|
10
|
+
return instance;
|
|
11
|
+
},
|
|
12
|
+
isMiraPlugin: (ext) => {
|
|
13
|
+
if (typeof ext !== "object" || ext === null)
|
|
14
|
+
return false;
|
|
15
|
+
if (!("_tag" in ext))
|
|
16
|
+
return false;
|
|
17
|
+
return ext._tag === "MiraPlugin";
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/app/plugin.ts"],"names":[],"mappings":"AAuCA,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,WAAkC,EAClC,OAAmD,EACpC,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAA;AAE9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,WAAkC,EAClC,OAAsD,EAChC,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAA;AA0CrD,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,MAAM,EAAE,CAAC,IAAgB,EAAc,EAAE;QACvC,MAAM,QAAQ,GAAuB,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,CAAA;QACpE,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,SAAS,EAAE,CAAC,KAAuC,EAAc,EAAE;QACjE,MAAM,QAAQ,GAAuB,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAA;QAClE,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,YAAY,EAAE,CAAC,GAAY,EAAqB,EAAE;QAChD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,KAAK,CAAA;QACzD,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC;YAAE,OAAO,KAAK,CAAA;QAClC,OAAO,GAAG,CAAC,IAAI,KAAK,YAAY,CAAA;IAClC,CAAC;CACF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cached-collection.d.ts","sourceRoot":"","sources":["../../../src/cache/cached-collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAU,KAAK,EAAkB,MAAM,QAAQ,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAEvD,OAAO,EAAE,iBAAiB,EAA8B,MAAM,4CAA4C,CAAA;AAC1G,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAA;AA2D7D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gCAAgC,CAC9C,cAAc,EAAE,aAAa,CAAC,gBAAgB,CAAC,EAC/C,MAAM,GAAE,2BAA2C,GAClD,KAAK,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,EAAE,UAAU,GAAG,SAAS,CAAC,SAAS,GAAG,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"cached-collection.d.ts","sourceRoot":"","sources":["../../../src/cache/cached-collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAU,KAAK,EAAkB,MAAM,QAAQ,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAEvD,OAAO,EAAE,iBAAiB,EAA8B,MAAM,4CAA4C,CAAA;AAC1G,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAA;AA2D7D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gCAAgC,CAC9C,cAAc,EAAE,aAAa,CAAC,gBAAgB,CAAC,EAC/C,MAAM,GAAE,2BAA2C,GAClD,KAAK,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,EAAE,UAAU,GAAG,SAAS,CAAC,SAAS,GAAG,WAAW,CAAC,CAsFvF"}
|
|
@@ -98,9 +98,9 @@ export function makeCachedCollectionServiceLayer(allCollections, config = defaul
|
|
|
98
98
|
attributes: { collection: collection.name },
|
|
99
99
|
}));
|
|
100
100
|
},
|
|
101
|
-
create: (collection, data, ctx) => svc.create(collection, data, ctx).pipe(Effect.tap(() => cache.nukeListsFor(collection.name))),
|
|
102
|
-
update: (collection, id, data, ctx) => svc.update(collection, id, data, ctx).pipe(Effect.tap(() => Effect.all([cache.invalidateRecord(collection.name, id), cache.nukeListsFor(collection.name)], { concurrency: "unbounded" }))),
|
|
103
|
-
delete: (collection, id, ctx) => svc.delete(collection, id, ctx).pipe(Effect.tap(() => Effect.all([cache.invalidateRecord(collection.name, id), cache.nukeListsFor(collection.name)], { concurrency: "unbounded" }))),
|
|
101
|
+
create: (collection, data, ctx) => svc.create(collection, data, ctx).pipe(Effect.tap(() => cache.nukeListsFor(collection.name)), Effect.withSpan("cache.create", { kind: "internal", attributes: { collection: collection.name } })),
|
|
102
|
+
update: (collection, id, data, ctx) => svc.update(collection, id, data, ctx).pipe(Effect.tap(() => Effect.all([cache.invalidateRecord(collection.name, id), cache.nukeListsFor(collection.name)], { concurrency: "unbounded" })), Effect.withSpan("cache.update", { kind: "internal", attributes: { collection: collection.name } })),
|
|
103
|
+
delete: (collection, id, ctx) => svc.delete(collection, id, ctx).pipe(Effect.tap(() => Effect.all([cache.invalidateRecord(collection.name, id), cache.nukeListsFor(collection.name)], { concurrency: "unbounded" })), Effect.withSpan("cache.delete", { kind: "internal", attributes: { collection: collection.name } })),
|
|
104
104
|
});
|
|
105
105
|
})).pipe(Layer.provide(Layer.merge(makeCollectionServiceLayer(allCollections), makeCollectionCacheLayer(config))));
|
|
106
106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cached-collection.js","sourceRoot":"","sources":["../../../src/cache/cached-collection.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cached-collection.js","sourceRoot":"","sources":["../../../src/cache/cached-collection.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,6 +57,6 @@ export declare class CollectionService extends CollectionService_base {
|
|
|
57
57
|
*/
|
|
58
58
|
export declare function makeCollectionServiceLayer(allCollections: ReadonlyArray<AnyCollectionDef>): Layer.Layer<CollectionService, never, Repository | SqlClient.SqlClient | FileStorage>;
|
|
59
59
|
/** @deprecated Use makeCollectionServiceLayer(allCollections) */
|
|
60
|
-
export declare const CollectionServiceLive: Layer.Layer<CollectionService, never,
|
|
60
|
+
export declare const CollectionServiceLive: Layer.Layer<CollectionService, never, SqlClient.SqlClient | FileStorage | Repository>;
|
|
61
61
|
export {};
|
|
62
62
|
//# sourceMappingURL=collection-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-service.d.ts","sourceRoot":"","sources":["../../../src/collection-service/collection-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAkB,MAAM,QAAQ,CAAA;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,2BAA2B,CAAA;AAEnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,KAAK,EAAa,UAAU,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"collection-service.d.ts","sourceRoot":"","sources":["../../../src/collection-service/collection-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAkB,MAAM,QAAQ,CAAA;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,2BAA2B,CAAA;AAEnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,KAAK,EAAa,UAAU,EAAE,SAAS,EAAe,MAAM,uBAAuB,CAAA;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAGlD,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;;qBAgChC,gBAAgB,UACpB,MAAM,GAAG,IAAI,WACZ,MAAM,OACV,UAAU,WACN,UAAU,SACZ,SAAS,WACP,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,WAC5B,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,GACpC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC;qBAG/B,gBAAgB,MACxB,MAAM,OACL,UAAU,WACN,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,WAC5B,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,GACpC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC;uBAE1B,gBAAgB,QAAQ,UAAU,OAAO,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC;uBAGrG,gBAAgB,MACxB,MAAM,QACJ,UAAU,OACX,UAAU,GACd,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC;uBAE1B,gBAAgB,MAAM,MAAM,OAAO,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC;;AAtD3G;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,iBAAkB,SAAQ,sBAiCpC;CAAG;AAyGN;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CACxC,cAAc,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAC9C,KAAK,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,EAAE,UAAU,GAAG,SAAS,CAAC,SAAS,GAAG,WAAW,CAAC,CAqQvF;AAED,iEAAiE;AACjE,eAAO,MAAM,qBAAqB,uFAAiC,CAAA"}
|