@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.
Files changed (114) hide show
  1. package/dist/src/app/app.d.ts +18 -14
  2. package/dist/src/app/app.d.ts.map +1 -1
  3. package/dist/src/app/app.js +65 -28
  4. package/dist/src/app/app.js.map +1 -1
  5. package/dist/src/app/index.d.ts +3 -1
  6. package/dist/src/app/index.d.ts.map +1 -1
  7. package/dist/src/app/index.js +1 -0
  8. package/dist/src/app/index.js.map +1 -1
  9. package/dist/src/app/plugin.d.ts +60 -0
  10. package/dist/src/app/plugin.d.ts.map +1 -0
  11. package/dist/src/app/plugin.js +20 -0
  12. package/dist/src/app/plugin.js.map +1 -0
  13. package/dist/src/cache/cached-collection.d.ts.map +1 -1
  14. package/dist/src/cache/cached-collection.js +3 -3
  15. package/dist/src/cache/cached-collection.js.map +1 -1
  16. package/dist/src/collection-service/collection-service.d.ts +1 -1
  17. package/dist/src/collection-service/collection-service.d.ts.map +1 -1
  18. package/dist/src/collection-service/collection-service.js +57 -35
  19. package/dist/src/collection-service/collection-service.js.map +1 -1
  20. package/dist/src/collection-service/context.d.ts +2 -0
  21. package/dist/src/collection-service/context.d.ts.map +1 -1
  22. package/dist/src/collection-service/input-schema.d.ts.map +1 -1
  23. package/dist/src/collection-service/input-schema.js +3 -1
  24. package/dist/src/collection-service/input-schema.js.map +1 -1
  25. package/dist/src/hooks/hook-collection.d.ts +5 -0
  26. package/dist/src/hooks/hook-collection.d.ts.map +1 -0
  27. package/dist/src/hooks/hook-collection.js +77 -0
  28. package/dist/src/hooks/hook-collection.js.map +1 -0
  29. package/dist/src/hooks/hook-service.d.ts +33 -0
  30. package/dist/src/hooks/hook-service.d.ts.map +1 -0
  31. package/dist/src/hooks/hook-service.js +118 -0
  32. package/dist/src/hooks/hook-service.js.map +1 -0
  33. package/dist/src/hooks/index.d.ts +4 -0
  34. package/dist/src/hooks/index.d.ts.map +1 -0
  35. package/dist/src/hooks/index.js +3 -0
  36. package/dist/src/hooks/index.js.map +1 -0
  37. package/dist/src/hooks/types.d.ts +52 -0
  38. package/dist/src/hooks/types.d.ts.map +1 -0
  39. package/dist/src/hooks/types.js +2 -0
  40. package/dist/src/hooks/types.js.map +1 -0
  41. package/dist/src/http/auth.d.ts +2 -0
  42. package/dist/src/http/auth.d.ts.map +1 -1
  43. package/dist/src/http/auth.js +10 -0
  44. package/dist/src/http/auth.js.map +1 -1
  45. package/dist/src/http/index.d.ts +1 -0
  46. package/dist/src/http/index.d.ts.map +1 -1
  47. package/dist/src/http/index.js +1 -0
  48. package/dist/src/http/index.js.map +1 -1
  49. package/dist/src/http/ip-middleware.d.ts.map +1 -1
  50. package/dist/src/http/ip-middleware.js +6 -3
  51. package/dist/src/http/ip-middleware.js.map +1 -1
  52. package/dist/src/http/router.d.ts.map +1 -1
  53. package/dist/src/http/router.js +85 -19
  54. package/dist/src/http/router.js.map +1 -1
  55. package/dist/src/http/schema.d.ts +5 -0
  56. package/dist/src/http/schema.d.ts.map +1 -0
  57. package/dist/src/http/schema.js +17 -0
  58. package/dist/src/http/schema.js.map +1 -0
  59. package/dist/src/http/telemetry-routes.d.ts +5 -0
  60. package/dist/src/http/telemetry-routes.d.ts.map +1 -0
  61. package/dist/src/http/telemetry-routes.js +156 -0
  62. package/dist/src/http/telemetry-routes.js.map +1 -0
  63. package/dist/src/index.d.ts +11 -0
  64. package/dist/src/index.d.ts.map +1 -1
  65. package/dist/src/index.js +12 -0
  66. package/dist/src/index.js.map +1 -1
  67. package/dist/src/migrator/migrator.d.ts +1 -1
  68. package/dist/src/platforms/node.d.ts +1 -1
  69. package/dist/src/platforms/node.d.ts.map +1 -1
  70. package/dist/src/telemetry/collections.d.ts +4 -0
  71. package/dist/src/telemetry/collections.d.ts.map +1 -0
  72. package/dist/src/telemetry/collections.js +19 -0
  73. package/dist/src/telemetry/collections.js.map +1 -0
  74. package/dist/src/telemetry/index.d.ts +4 -1
  75. package/dist/src/telemetry/index.d.ts.map +1 -1
  76. package/dist/src/telemetry/index.js +2 -0
  77. package/dist/src/telemetry/index.js.map +1 -1
  78. package/dist/src/telemetry/sqlite-logger.d.ts +24 -0
  79. package/dist/src/telemetry/sqlite-logger.d.ts.map +1 -0
  80. package/dist/src/telemetry/sqlite-logger.js +152 -0
  81. package/dist/src/telemetry/sqlite-logger.js.map +1 -0
  82. package/dist/src/telemetry/telemetry-sql-client.d.ts +11 -0
  83. package/dist/src/telemetry/telemetry-sql-client.d.ts.map +1 -0
  84. package/dist/src/telemetry/telemetry-sql-client.js +8 -0
  85. package/dist/src/telemetry/telemetry-sql-client.js.map +1 -0
  86. package/dist/tests/app/app.test.js +61 -14
  87. package/dist/tests/app/app.test.js.map +1 -1
  88. package/dist/tests/app/builder.test.js +6 -5
  89. package/dist/tests/app/builder.test.js.map +1 -1
  90. package/dist/tests/collection-service/collection-service.test.js +65 -1
  91. package/dist/tests/collection-service/collection-service.test.js.map +1 -1
  92. package/dist/tests/collection-service/input-schema.test.js +37 -1
  93. package/dist/tests/collection-service/input-schema.test.js.map +1 -1
  94. package/dist/tests/hooks/hook-collection.test.d.ts +2 -0
  95. package/dist/tests/hooks/hook-collection.test.d.ts.map +1 -0
  96. package/dist/tests/hooks/hook-collection.test.js +103 -0
  97. package/dist/tests/hooks/hook-collection.test.js.map +1 -0
  98. package/dist/tests/hooks/hook-service.test.d.ts +2 -0
  99. package/dist/tests/hooks/hook-service.test.d.ts.map +1 -0
  100. package/dist/tests/hooks/hook-service.test.js +216 -0
  101. package/dist/tests/hooks/hook-service.test.js.map +1 -0
  102. package/dist/tests/telemetry/collections.test.d.ts +2 -0
  103. package/dist/tests/telemetry/collections.test.d.ts.map +1 -0
  104. package/dist/tests/telemetry/collections.test.js +67 -0
  105. package/dist/tests/telemetry/collections.test.js.map +1 -0
  106. package/dist/tests/telemetry/sqlite-logger.test.d.ts +2 -0
  107. package/dist/tests/telemetry/sqlite-logger.test.d.ts.map +1 -0
  108. package/dist/tests/telemetry/sqlite-logger.test.js +218 -0
  109. package/dist/tests/telemetry/sqlite-logger.test.js.map +1 -0
  110. package/dist/tests/telemetry/telemetry-routes.test.d.ts +2 -0
  111. package/dist/tests/telemetry/telemetry-routes.test.d.ts.map +1 -0
  112. package/dist/tests/telemetry/telemetry-routes.test.js +133 -0
  113. package/dist/tests/telemetry/telemetry-routes.test.js.map +1 -0
  114. package/package.json +2 -2
@@ -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 custom layers before serving.
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 custom layer
28
- * app.extend(MyCustomLayer).serve({ port: 8080 })
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<Layer.Layer<never, never, never>>;
42
+ _getExtras(): ReadonlyArray<MiraPlugin>;
40
43
  /**
41
- * Add an arbitrary Effect Layer to the application's layer composition.
42
- * Useful for providing custom services (e.g., custom telemetry, custom auth).
43
- * Layers are merged in order of calls to `extend()`.
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 layer - Any Layer<never, never, never>
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(Layer.succeed(MyTag, myImpl))
52
+ * app.extend(MiraDashboard).serve()
50
53
  */
51
- extend(layer: Layer.Layer<never, never, never>): this;
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 | import("../repository/repository.js").Repository | Migrator | import("../collection-service/collection-service.js").CollectionService | import("../thumbnail/index.js").ThumbnailService | AppConfig, import("effect/ParseResult").ParseError | import("@effect/sql/SqlError").SqlError, never>;
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 | import("../repository/repository.js").Repository | Migrator | import("../collection-service/collection-service.js").CollectionService | import("../thumbnail/index.js").ThumbnailService | AppConfig, import("effect/ParseResult").ParseError | import("@effect/platform/HttpServerError").ServeError | import("@effect/sql/SqlError").SqlError, never>;
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, and listens for incoming requests.
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,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,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,aAAa,EAAE,MAAM,cAAc,CAAA;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;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,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAI7D;;;;;;;;;;OAUG;IACH,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI;IAKrD;;;;;;;;;;;;;;;OAeG;IACH,iBAAiB;IAsCjB;;;;;;;;OAQG;IACH,UAAU,CAAC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;IAoBtC;;;;;;;;;;OAUG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAKzC"}
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"}
@@ -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 custom layers before serving.
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 custom layer
33
- * app.extend(MyCustomLayer).serve({ port: 8080 })
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 an arbitrary Effect Layer to the application's layer composition.
55
- * Useful for providing custom services (e.g., custom telemetry, custom auth).
56
- * Layers are merged in order of calls to `extend()`.
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 layer - Any Layer<never, never, never>
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(Layer.succeed(MyTag, myImpl))
65
+ * app.extend(MiraDashboard).serve()
63
66
  */
64
- extend(layer) {
65
- this.#extras.push(layer);
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, collections, telemetry } = this.#config;
86
- const collectionList = collections;
87
- const extrasLayer = this.#extras.length > 0
88
- ? this.#extras.reduce((acc, l) => Layer.merge(acc, l))
89
- : Layer.empty;
90
- // Foundation: database + storage + thumbnail + telemetry + extras, wired on platform
91
- const foundation = Layer.mergeAll(database.layer, storage.layer, ThumbnailServicePhotonLive, telemetry, extrasLayer).pipe(Layer.provideMerge(platform.layer));
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 = collectionList.map((c) => ({ name: c.name, schema: c.schema }));
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(mid));
100
- // Top: CollectionService + all mid services + auto-migration side effect
101
- return makeCachedCollectionServiceLayer(collectionList).pipe(Layer.provideMerge(Layer.merge(mid, autoMigrateLayer)));
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 { collections } = this.#config;
114
- const collectionList = collections;
115
- const router = makeCollectionRouter(collectionList);
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, and listens for incoming requests.
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.#config.platform.runMain(Layer.launch(this.buildLayer(options)).pipe(Effect.orDie));
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
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/app/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/app/app.ts"],"names":[],"mappings":"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"}
@@ -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;AACzE,YAAY,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,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"}
@@ -26,4 +26,5 @@ export const Mira = {
26
26
  builder: () => new MiraBuilder(),
27
27
  };
28
28
  export { MiraBuilder } from "./builder.js";
29
+ export { MiraPlugin, onCollection, onCollectionSuccess } from "./plugin.js";
29
30
  //# sourceMappingURL=index.js.map
@@ -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,CAmFvF"}
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":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAA;AAKtD,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAA;AAE1G,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAGjF,SAAS,mBAAmB,CAAC,IAAgB;IAC3C,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC;QACV,KAAK,KAAK,CAAC;QACX,KAAK,IAAI,CAAC;QACV,KAAK,KAAK,CAAC;QACX,KAAK,IAAI,CAAC;QACV,KAAK,KAAK;YACR,OAAO,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAA;QAC1D,KAAK,IAAI;YACP,OAAO,MAAM,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAA;QACnE,KAAK,MAAM;YACT,OAAO,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,CAAA;QAC5C,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU;YACb,OAAO,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,GAAG,CAAA;QACpC,KAAK,KAAK,CAAC;QACX,KAAK,IAAI;YACP,OAAO,GAAG,IAAI,CAAC,EAAE,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAA;QAC3F,KAAK,KAAK;YACR,OAAO,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;IACnD,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACpB,GAAW,EACX,EAAU,EACV,MAAgD,EAChD,MAAgD;IAEhD,MAAM,UAAU,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACrE,MAAM,UAAU,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACrE,OAAO,GAAG,GAAG,IAAI,EAAE,IAAI,UAAU,IAAI,UAAU,EAAE,CAAA;AACnD,CAAC;AAED,SAAS,aAAa,CACpB,MAAqB,EACrB,OAAe,EACf,MAA8B,EAC9B,IAA2B,EAC3B,MAAgD,EAChD,MAAgD;IAEhD,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1E,MAAM,QAAQ,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC5E,MAAM,UAAU,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACrE,MAAM,UAAU,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACrE,OAAO,GAAG,MAAM,IAAI,EAAE,IAAI,OAAO,IAAI,UAAU,IAAI,QAAQ,IAAI,UAAU,IAAI,UAAU,EAAE,CAAA;AAC3F,CAAC;AAED,MAAM,aAAa,GAAgC;IACjD,WAAW,EAAE,MAAM;IACnB,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,MAAM;IAClB,QAAQ,EAAE,KAAK;CAChB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,gCAAgC,CAC9C,cAA+C,EAC/C,SAAsC,aAAa;IAEnD,OAAO,KAAK,CAAC,MAAM,CACjB,iBAAiB,EACjB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAA;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;QAEpC,OAAO,iBAAiB,CAAC,EAAE,CAAC;YAC1B,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;gBACvE,MAAM,GAAG,GAAG,GAAG,UAAU,CAAC,IAAI,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;gBAChG,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;oBACzB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;oBACxC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAiB,EAAE,EAAE,CAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CACtE,EACD,MAAM,CAAC,MAAM,CACd,CAAA;oBACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;wBAAE,OAAO,MAAM,CAAC,KAAK,CAAA;oBAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;oBAC5F,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;oBAC/B,OAAO,IAAI,CAAA;gBACb,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE;oBAC5B,IAAI,EAAE,UAAU;oBAChB,UAAU,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE;iBAC5C,CAAC,CACH,CAAA;YACH,CAAC;YAED,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;gBAC5C,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;gBAC9D,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;oBACzB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;oBAC1C,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAiB,EAAE,EAAE,CAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CACtE,EACD,MAAM,CAAC,MAAM,CACd,CAAA;oBACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;wBAAE,OAAO,MAAM,CAAC,KAAK,CAAA;oBAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;oBACnE,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;oBACnC,OAAO,MAAM,CAAA;gBACf,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE;oBAC5B,IAAI,EAAE,UAAU;oBAChB,UAAU,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE;iBAC5C,CAAC,CACH,CAAA;YACH,CAAC;YAED,MAAM,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAChC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CACpC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EACrD,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CACnG;YAEH,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CACpC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CACxC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CACd,MAAM,CAAC,GAAG,CACR,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAClF,EAAE,WAAW,EAAE,WAAW,EAAE,CAC7B,CACF,EACD,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CACnG;YAEH,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAC9B,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAClC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CACd,MAAM,CAAC,GAAG,CACR,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAClF,EAAE,WAAW,EAAE,WAAW,EAAE,CAC7B,CACF,EACD,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CACnG;SACJ,CAAC,CAAA;IACJ,CAAC,CAAC,CACH,CAAC,IAAI,CACJ,KAAK,CAAC,OAAO,CACX,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,cAAc,CAAC,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAC1F,CACF,CAAA;AACH,CAAC"}
@@ -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, FileStorage | SqlClient.SqlClient | Repository>;
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,EAAE,MAAM,uBAAuB,CAAA;AAC7E,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;AAqGN;;;;;;;;;;;;;;;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,CAyOvF;AAED,iEAAiE;AACjE,eAAO,MAAM,qBAAqB,uFAAiC,CAAA"}
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"}