@arki/dot 0.3.0 → 0.4.0

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 (113) hide show
  1. package/README.md +86 -86
  2. package/dist/cli/discover.js +2 -2
  3. package/dist/cli/discover.js.map +1 -1
  4. package/dist/cli/error-codes.d.ts +8 -0
  5. package/dist/cli/error-codes.d.ts.map +1 -1
  6. package/dist/cli/error-codes.js +12 -0
  7. package/dist/cli/error-codes.js.map +1 -1
  8. package/dist/cli/index.d.ts +9 -2
  9. package/dist/cli/index.d.ts.map +1 -1
  10. package/dist/cli/index.js +54 -23
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/cli/new.d.ts +1 -1
  13. package/dist/cli/new.js +1 -1
  14. package/dist/cli/render-doctor.d.ts +1 -1
  15. package/dist/cli/render-doctor.js +23 -23
  16. package/dist/cli/render-doctor.js.map +1 -1
  17. package/dist/cli/render-explain.d.ts.map +1 -1
  18. package/dist/cli/render-explain.js +33 -19
  19. package/dist/cli/render-explain.js.map +1 -1
  20. package/dist/cli/render-graph.d.ts +3 -3
  21. package/dist/cli/render-graph.js +12 -12
  22. package/dist/cli/render-graph.js.map +1 -1
  23. package/dist/cli/render-projection.d.ts +29 -0
  24. package/dist/cli/render-projection.d.ts.map +1 -0
  25. package/dist/cli/render-projection.js +202 -0
  26. package/dist/cli/render-projection.js.map +1 -0
  27. package/dist/define-app.d.ts +49 -17
  28. package/dist/define-app.d.ts.map +1 -1
  29. package/dist/define-app.js +16 -9
  30. package/dist/define-app.js.map +1 -1
  31. package/dist/diagnostics.d.ts +19 -15
  32. package/dist/diagnostics.d.ts.map +1 -1
  33. package/dist/diagnostics.js +2 -2
  34. package/dist/index.d.ts +15 -12
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +7 -5
  37. package/dist/index.js.map +1 -1
  38. package/dist/init-pips.d.ts +45 -0
  39. package/dist/init-pips.d.ts.map +1 -0
  40. package/dist/init-pips.js +49 -0
  41. package/dist/init-pips.js.map +1 -0
  42. package/dist/init-plugins.d.ts +45 -0
  43. package/dist/init-plugins.d.ts.map +1 -0
  44. package/dist/init-plugins.js +49 -0
  45. package/dist/init-plugins.js.map +1 -0
  46. package/dist/kernel/app-instance.d.ts +5 -5
  47. package/dist/kernel/app-instance.d.ts.map +1 -1
  48. package/dist/kernel/app-instance.js +375 -244
  49. package/dist/kernel/app-instance.js.map +1 -1
  50. package/dist/kernel/otel.d.ts +19 -19
  51. package/dist/kernel/otel.d.ts.map +1 -1
  52. package/dist/kernel/otel.js +22 -22
  53. package/dist/kernel/otel.js.map +1 -1
  54. package/dist/lifecycle-observer.d.ts +10 -10
  55. package/dist/lifecycle-observer.d.ts.map +1 -1
  56. package/dist/lifecycle-observer.js +1 -1
  57. package/dist/lifecycle.d.ts +18 -14
  58. package/dist/lifecycle.d.ts.map +1 -1
  59. package/dist/lifecycle.js +13 -9
  60. package/dist/lifecycle.js.map +1 -1
  61. package/dist/manifest.d.ts +70 -48
  62. package/dist/manifest.d.ts.map +1 -1
  63. package/dist/manifest.js +74 -5
  64. package/dist/manifest.js.map +1 -1
  65. package/dist/pip-contract.d.ts +29 -21
  66. package/dist/pip-contract.d.ts.map +1 -1
  67. package/dist/pip-contract.js +1 -0
  68. package/dist/pip-contract.js.map +1 -1
  69. package/dist/pip.d.ts +7 -4
  70. package/dist/pip.d.ts.map +1 -1
  71. package/dist/pip.js +2 -0
  72. package/dist/pip.js.map +1 -1
  73. package/dist/plugin-contract.d.ts +335 -143
  74. package/dist/plugin-contract.d.ts.map +1 -1
  75. package/dist/plugin-contract.js +201 -36
  76. package/dist/plugin-contract.js.map +1 -1
  77. package/dist/plugin.d.ts +18 -15
  78. package/dist/plugin.d.ts.map +1 -1
  79. package/dist/plugin.js +11 -11
  80. package/dist/plugin.js.map +1 -1
  81. package/dist/test-harness.d.ts +31 -31
  82. package/dist/test-harness.d.ts.map +1 -1
  83. package/dist/test-harness.js +29 -28
  84. package/dist/test-harness.js.map +1 -1
  85. package/dist/timeline.d.ts +2 -2
  86. package/dist/timeline.js +5 -5
  87. package/dist/timeline.js.map +1 -1
  88. package/package.json +9 -9
  89. package/src/cli/discover.ts +2 -2
  90. package/src/cli/error-codes.ts +12 -0
  91. package/src/cli/index.ts +76 -29
  92. package/src/cli/new.ts +1 -1
  93. package/src/cli/render-doctor.ts +21 -21
  94. package/src/cli/render-explain.ts +37 -19
  95. package/src/cli/render-graph.ts +12 -12
  96. package/src/cli/render-projection.ts +239 -0
  97. package/src/define-app.ts +85 -22
  98. package/src/diagnostics.ts +19 -15
  99. package/src/index.ts +37 -20
  100. package/src/init-plugins.ts +142 -0
  101. package/src/kernel/app-instance.ts +428 -282
  102. package/src/kernel/otel.ts +27 -27
  103. package/src/lifecycle-observer.ts +10 -10
  104. package/src/lifecycle.ts +19 -15
  105. package/src/manifest.ts +128 -50
  106. package/src/{pip-contract.ts → plugin-contract.ts} +73 -62
  107. package/src/{pip.ts → plugin.ts} +37 -18
  108. package/src/test-harness.ts +52 -51
  109. package/src/timeline.ts +6 -6
  110. package/templates/app-minimal/AGENTS.md.tmpl +9 -9
  111. package/templates/app-minimal/README.md.tmpl +1 -1
  112. package/templates/app-minimal/tests/boot.test.ts.tmpl +1 -1
  113. package/src/cli/render-openapi.ts +0 -147
package/dist/index.d.ts CHANGED
@@ -3,25 +3,28 @@
3
3
  *
4
4
  * Public surface:
5
5
  * - `defineApp(name)` — the entry point for composing applications.
6
- * - `pip(config)` — author lifecycle-aware pips with typed needs/provides.
6
+ * - `plugin(config)` — author lifecycle-aware plugins with typed needs/provides.
7
7
  * - `service<T>()` / `token<T>()(key)` — service witnesses for DI wiring.
8
- * - `rename(pip, map)` — mount-time multi-instance primitive.
8
+ * - `rename(plugin, map)` — mount-time multi-instance primitive.
9
9
  * - Lifecycle / manifest / diagnostics types.
10
- * - `testApp` / `bootTestApp` — test harnesses for pip authors.
10
+ * - `testApp` / `bootTestApp` — test harnesses for plugin authors.
11
11
  */
12
12
  export { defineApp } from './define-app.js';
13
- export type { DotApp, DotAppBuilder, DotAppConfigured, UseGuard } from './define-app.js';
14
- export { isLazy, lazy, lazyOf, pip, provide, rename, service, token, DotPipError } from './pip-contract.js';
15
- export type { AnyPip, CtxOf, DotConfigureContext, EmptyShape, InferredProvides, KernelCtx, Lazy, LazyService, NeedsShape, Pip, PipNeeds, PipProvides, RenamedProvides, Service, ServiceRecord, Token, WireNeeds, } from './pip-contract.js';
13
+ export type { DotApp, DotAppBuilder, DotAppConfigured, NormalizeProvides, UseAllAvail, UseAllGuard, UseGuard, } from './define-app.js';
14
+ export { isLazy, lazy, lazyOf, plugin, provide, rename, service, token, DotPluginError } from './plugin-contract.js';
15
+ export type { AnyPlugin, ActionSource, CtxOf, DotConfigureContext, EmptyShape, InferredProvides, KernelCtx, Lazy, LazyService, NeedsShape, NoReservedKeys, Plugin, PluginNeeds, PluginProvides, RenamedProvides, Service, ServiceRecord, Token, WireNeeds, } from './plugin-contract.js';
16
+ export { initPlugins } from './init-plugins.js';
17
+ export type { InitPluginsFactory } from './init-plugins.js';
16
18
  export { DotLifecycleError, DotLifecycleErrorCode, DOT_LIFECYCLE_HOOKS, } from './lifecycle.js';
17
- export type { DotLifecycleHook, DotLifecycleState, DotLifecyclePipFailure, DotLifecycleErrorCodeValue, } from './lifecycle.js';
18
- export type { DotAppManifest, PipManifest, RouteManifest, ServiceManifest, LifecycleManifest, DependencyEdge, DependencyEdgeKind, ServiceKind, RouteTransport, } from './manifest.js';
19
- export type { DotDiagnosticsSnapshot, PipDiagnostic, RouteDiagnostic, ServiceDiagnostic, LifecycleDiagnostic, DiagnosticIssue, DiagnosticSeverity, DiagnosticStatus, } from './diagnostics.js';
20
- export type { DotLifecycleEvent, DotLifecycleEventStatus, DotLifecycleObserver, DotPhaseLifecycleEvent, DotPipHookLifecycleEvent, } from './lifecycle-observer.js';
19
+ export type { DotLifecycleHook, DotLifecycleState, DotLifecyclePluginFailure, DotLifecycleErrorCodeValue, } from './lifecycle.js';
20
+ export type { DotAppManifest, ActionDirection, ActionManifest, JsonObject, JsonValue, PluginManifest, ProjectionManifest, ServiceManifest, LifecycleManifest, DependencyEdge, DependencyEdgeKind, ServiceKind, } from './manifest.js';
21
+ export { toJsonObject } from './manifest.js';
22
+ export type { DotDiagnosticsSnapshot, PluginDiagnostic, ActionDiagnostic, ServiceDiagnostic, LifecycleDiagnostic, DiagnosticIssue, DiagnosticSeverity, DiagnosticStatus, } from './diagnostics.js';
23
+ export type { DotLifecycleEvent, DotLifecycleEventStatus, DotLifecycleObserver, DotPhaseLifecycleEvent, DotPluginHookLifecycleEvent, } from './lifecycle-observer.js';
21
24
  export { renderTimeline } from './timeline.js';
22
25
  export type { RenderTimelineOptions } from './timeline.js';
23
- export { testApp, bootTestApp, testPip } from './test-harness.js';
24
- export type { TestAppOptions, TestPipBuilder } from './test-harness.js';
26
+ export { testApp, bootTestApp, testPlugin } from './test-harness.js';
27
+ export type { TestAppOptions, TestPluginBuilder } from './test-harness.js';
25
28
  export { hookSignals } from './signals.js';
26
29
  export type { HookSignalsOptions, SignalTarget } from './signals.js';
27
30
  export type { DotCliEnvelope, DotCliEnvelopeStatus } from './cli/render-explain.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEzF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC5G,YAAY,EACV,MAAM,EACN,KAAK,EACL,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,IAAI,EACJ,WAAW,EACX,UAAU,EACV,GAAG,EACH,QAAQ,EACR,WAAW,EACX,eAAe,EACf,OAAO,EACP,aAAa,EACb,KAAK,EACL,SAAS,GACV,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,cAAc,EACd,WAAW,EACX,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAClE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIrE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EACV,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,QAAQ,GACT,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrH,YAAY,EACV,SAAS,EACT,YAAY,EACZ,KAAK,EACL,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,IAAI,EACJ,WAAW,EACX,UAAU,EACV,cAAc,EACd,MAAM,EACN,WAAW,EACX,cAAc,EACd,eAAe,EACf,OAAO,EACP,aAAa,EACb,KAAK,EACL,SAAS,GACV,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,cAAc,EACd,eAAe,EACf,cAAc,EACd,UAAU,EACV,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,WAAW,GACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,YAAY,EACV,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACrE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIrE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/index.js CHANGED
@@ -3,18 +3,20 @@
3
3
  *
4
4
  * Public surface:
5
5
  * - `defineApp(name)` — the entry point for composing applications.
6
- * - `pip(config)` — author lifecycle-aware pips with typed needs/provides.
6
+ * - `plugin(config)` — author lifecycle-aware plugins with typed needs/provides.
7
7
  * - `service<T>()` / `token<T>()(key)` — service witnesses for DI wiring.
8
- * - `rename(pip, map)` — mount-time multi-instance primitive.
8
+ * - `rename(plugin, map)` — mount-time multi-instance primitive.
9
9
  * - Lifecycle / manifest / diagnostics types.
10
- * - `testApp` / `bootTestApp` — test harnesses for pip authors.
10
+ * - `testApp` / `bootTestApp` — test harnesses for plugin authors.
11
11
  */
12
12
  // #region Kernel — public surface
13
13
  export { defineApp } from './define-app.js';
14
- export { isLazy, lazy, lazyOf, pip, provide, rename, service, token, DotPipError } from './pip-contract.js';
14
+ export { isLazy, lazy, lazyOf, plugin, provide, rename, service, token, DotPluginError } from './plugin-contract.js';
15
+ export { initPlugins } from './init-plugins.js';
15
16
  export { DotLifecycleError, DotLifecycleErrorCode, DOT_LIFECYCLE_HOOKS, } from './lifecycle.js';
17
+ export { toJsonObject } from './manifest.js';
16
18
  export { renderTimeline } from './timeline.js';
17
- export { testApp, bootTestApp, testPip } from './test-harness.js';
19
+ export { testApp, bootTestApp, testPlugin } from './test-harness.js';
18
20
  export { hookSignals } from './signals.js';
19
21
  // #endregion
20
22
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,kCAAkC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAqB5G,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAuCxB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGlE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAM3C,aAAa"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,kCAAkC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAW5C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAuBrH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAsBxB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAqB7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGrE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAM3C,aAAa"}
@@ -0,0 +1,45 @@
1
+ import type { CtxOf, DotConfigureContext, EmptyShape, InferredProvides, KernelCtx, NeedsShape, NoReservedKeys, Pip, ActionSource, Service, ServiceRecord, WireNeeds } from './pip-contract.js';
2
+ type MaybePromise<T> = T | Promise<T>;
3
+ type ServiceKey<TServices extends object> = Extract<keyof TServices, string>;
4
+ type ServiceKeys<TServices extends object> = readonly ServiceKey<TServices>[];
5
+ type PickServices<TServices extends object, TKeys extends ServiceKeys<TServices>> = {
6
+ readonly [K in TKeys[number]]: TServices[K];
7
+ };
8
+ type WitnessesFor<TServices extends object, TKeys extends ServiceKeys<TServices>> = {
9
+ readonly [K in TKeys[number]]: Service<TServices[K]>;
10
+ };
11
+ type SchemaCheckedProvides<TServices extends object, TProvides extends ServiceRecord> = {
12
+ readonly [K in keyof TProvides]: K extends keyof TServices ? TProvides[K] extends TServices[K] ? TProvides[K] : never : TProvides[K];
13
+ };
14
+ type CommonPipDefinition = {
15
+ readonly name: string;
16
+ readonly version?: string;
17
+ readonly actions?: readonly ActionSource[];
18
+ readonly configure?: (ctx: DotConfigureContext) => void;
19
+ };
20
+ type KeyArrayPipDefinition<TServices extends object, TKeys extends ServiceKeys<TServices>, TProvides extends ServiceRecord & NoReservedKeys> = CommonPipDefinition & {
21
+ readonly needs?: TKeys;
22
+ readonly boot?: (ctx: PickServices<TServices, TKeys> & KernelCtx) => MaybePromise<SchemaCheckedProvides<TServices, TProvides> | void>;
23
+ readonly start?: (ctx: PickServices<TServices, TKeys> & TProvides & KernelCtx) => MaybePromise<void>;
24
+ readonly stop?: (ctx: PickServices<TServices, TKeys> & TProvides & KernelCtx) => MaybePromise<void>;
25
+ readonly dispose?: (ctx: PickServices<TServices, TKeys> & TProvides & KernelCtx) => MaybePromise<void>;
26
+ };
27
+ type WitnessPipDefinition<TServices extends object, TShape extends NeedsShape & NoReservedKeys, TProvides extends ServiceRecord & NoReservedKeys> = CommonPipDefinition & {
28
+ readonly needs: TShape;
29
+ readonly boot?: (ctx: CtxOf<TShape> & KernelCtx) => MaybePromise<SchemaCheckedProvides<TServices, TProvides> | void>;
30
+ readonly start?: (ctx: CtxOf<TShape> & TProvides & KernelCtx) => MaybePromise<void>;
31
+ readonly stop?: (ctx: CtxOf<TShape> & TProvides & KernelCtx) => MaybePromise<void>;
32
+ readonly dispose?: (ctx: CtxOf<TShape> & TProvides & KernelCtx) => MaybePromise<void>;
33
+ };
34
+ export type InitPipsFactory<TServices extends object> = {
35
+ pip<const TKeys extends ServiceKeys<TServices> = readonly [], TProvides extends ServiceRecord & NoReservedKeys = EmptyShape>(def: KeyArrayPipDefinition<TServices, TKeys, TProvides>): Pip<PickServices<TServices, TKeys>, InferredProvides<TProvides>>;
36
+ pip<TShape extends NeedsShape & NoReservedKeys, TProvides extends ServiceRecord & NoReservedKeys = EmptyShape>(def: WitnessPipDefinition<TServices, TShape, TProvides>): Pip<WireNeeds<TShape>, InferredProvides<TProvides>>;
37
+ needs<const TKeys extends ServiceKeys<TServices>>(...keys: TKeys): WitnessesFor<TServices, TKeys>;
38
+ };
39
+ export declare const initPips: {
40
+ context<TServices extends object>(): {
41
+ create(): InitPipsFactory<TServices>;
42
+ };
43
+ };
44
+ export {};
45
+ //# sourceMappingURL=init-pips.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-pips.d.ts","sourceRoot":"","sources":["../src/init-pips.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { pip as definePip, service } from './pip-contract.js';
2
+ function needsFor(keys) {
3
+ const needs = {};
4
+ for (const key of keys) {
5
+ needs[key] = service();
6
+ }
7
+ return needs;
8
+ }
9
+ function isServiceKeyArray(needs) {
10
+ return Array.isArray(needs);
11
+ }
12
+ function createPipFactory() {
13
+ const factory = {
14
+ pip(def) {
15
+ const rawNeeds = def.needs;
16
+ const needs = isServiceKeyArray(rawNeeds)
17
+ ? needsFor(rawNeeds)
18
+ : rawNeeds;
19
+ // Factory seam: key-array authoring is runtime-compiled to the same
20
+ // witness record that the kernel already understands.
21
+ const kernelDef = {
22
+ name: def.name,
23
+ ...(def.version === undefined ? {} : { version: def.version }),
24
+ ...(needs === undefined ? {} : { needs }),
25
+ ...(def.actions === undefined ? {} : { actions: def.actions }),
26
+ ...(def.configure === undefined ? {} : { configure: def.configure }),
27
+ ...(def.boot === undefined ? {} : { boot: def.boot }),
28
+ ...(def.start === undefined ? {} : { start: def.start }),
29
+ ...(def.stop === undefined ? {} : { stop: def.stop }),
30
+ ...(def.dispose === undefined ? {} : { dispose: def.dispose }),
31
+ };
32
+ return definePip(kernelDef);
33
+ },
34
+ needs(...keys) {
35
+ return needsFor(keys);
36
+ },
37
+ };
38
+ return factory;
39
+ }
40
+ export const initPips = {
41
+ context() {
42
+ return {
43
+ create() {
44
+ return createPipFactory();
45
+ },
46
+ };
47
+ },
48
+ };
49
+ //# sourceMappingURL=init-pips.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-pips.js","sourceRoot":"","sources":["../src/init-pips.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,GAAG,IAAI,SAAS,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AA0E9D,SAAS,QAAQ,CACf,IAAW;IAEX,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,EAAyB,CAAC;IAChD,CAAC;IACD,OAAO,KAAuC,CAAC;AACjD,CAAC;AAED,SAAS,iBAAiB,CACxB,KAA8C;IAE9C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,OAAO,GAAG;QACd,GAAG,CAAC,GAAmC;YACrC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;YAC3B,MAAM,KAAK,GAAG,iBAAiB,CAAY,QAAQ,CAAC;gBAClD,CAAC,CAAC,QAAQ,CAAoC,QAAQ,CAAC;gBACvD,CAAC,CAAC,QAAQ,CAAC;YACb,oEAAoE;YACpE,sDAAsD;YACtD,MAAM,SAAS,GAAwB;gBACrC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC9D,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;gBACzC,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC9D,GAAG,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;gBACpE,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAmC,EAAE,CAAC;gBACpF,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAqC,EAAE,CAAC;gBACxF,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAmC,EAAE,CAAC;gBACpF,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAyC,EAAE,CAAC;aACjG,CAAC;YACF,OAAO,SAAS,CAAC,SAAS,CAAiD,CAAC;QAC9E,CAAC;QACD,KAAK,CAA6C,GAAG,IAAW;YAC9D,OAAO,QAAQ,CAAyB,IAAI,CAAC,CAAC;QAChD,CAAC;KACF,CAAC;IACF,OAAO,OAAqC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO;QACL,OAAO;YACL,MAAM;gBACJ,OAAO,gBAAgB,EAAa,CAAC;YACvC,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,45 @@
1
+ import type { CtxOf, DotConfigureContext, EmptyShape, InferredProvides, KernelCtx, NeedsShape, NoReservedKeys, Plugin, ActionSource, Service, ServiceRecord, WireNeeds } from './plugin-contract.js';
2
+ type MaybePromise<T> = T | Promise<T>;
3
+ type ServiceKey<TServices extends object> = Extract<keyof TServices, string>;
4
+ type ServiceKeys<TServices extends object> = readonly ServiceKey<TServices>[];
5
+ type PickServices<TServices extends object, TKeys extends ServiceKeys<TServices>> = {
6
+ readonly [K in TKeys[number]]: TServices[K];
7
+ };
8
+ type WitnessesFor<TServices extends object, TKeys extends ServiceKeys<TServices>> = {
9
+ readonly [K in TKeys[number]]: Service<TServices[K]>;
10
+ };
11
+ type SchemaCheckedProvides<TServices extends object, TProvides extends ServiceRecord> = {
12
+ readonly [K in keyof TProvides]: K extends keyof TServices ? TProvides[K] extends TServices[K] ? TProvides[K] : never : TProvides[K];
13
+ };
14
+ type CommonPluginDefinition = {
15
+ readonly name: string;
16
+ readonly version?: string;
17
+ readonly actions?: readonly ActionSource[];
18
+ readonly configure?: (ctx: DotConfigureContext) => void;
19
+ };
20
+ type KeyArrayPluginDefinition<TServices extends object, TKeys extends ServiceKeys<TServices>, TProvides extends ServiceRecord & NoReservedKeys> = CommonPluginDefinition & {
21
+ readonly needs?: TKeys;
22
+ readonly boot?: (ctx: PickServices<TServices, TKeys> & KernelCtx) => MaybePromise<SchemaCheckedProvides<TServices, TProvides> | void>;
23
+ readonly start?: (ctx: PickServices<TServices, TKeys> & TProvides & KernelCtx) => MaybePromise<void>;
24
+ readonly stop?: (ctx: PickServices<TServices, TKeys> & TProvides & KernelCtx) => MaybePromise<void>;
25
+ readonly dispose?: (ctx: PickServices<TServices, TKeys> & TProvides & KernelCtx) => MaybePromise<void>;
26
+ };
27
+ type WitnessPluginDefinition<TServices extends object, TShape extends NeedsShape & NoReservedKeys, TProvides extends ServiceRecord & NoReservedKeys> = CommonPluginDefinition & {
28
+ readonly needs: TShape;
29
+ readonly boot?: (ctx: CtxOf<TShape> & KernelCtx) => MaybePromise<SchemaCheckedProvides<TServices, TProvides> | void>;
30
+ readonly start?: (ctx: CtxOf<TShape> & TProvides & KernelCtx) => MaybePromise<void>;
31
+ readonly stop?: (ctx: CtxOf<TShape> & TProvides & KernelCtx) => MaybePromise<void>;
32
+ readonly dispose?: (ctx: CtxOf<TShape> & TProvides & KernelCtx) => MaybePromise<void>;
33
+ };
34
+ export type InitPluginsFactory<TServices extends object> = {
35
+ plugin<const TKeys extends ServiceKeys<TServices> = readonly [], TProvides extends ServiceRecord & NoReservedKeys = EmptyShape>(def: KeyArrayPluginDefinition<TServices, TKeys, TProvides>): Plugin<PickServices<TServices, TKeys>, InferredProvides<TProvides>>;
36
+ plugin<TShape extends NeedsShape & NoReservedKeys, TProvides extends ServiceRecord & NoReservedKeys = EmptyShape>(def: WitnessPluginDefinition<TServices, TShape, TProvides>): Plugin<WireNeeds<TShape>, InferredProvides<TProvides>>;
37
+ needs<const TKeys extends ServiceKeys<TServices>>(...keys: TKeys): WitnessesFor<TServices, TKeys>;
38
+ };
39
+ export declare const initPlugins: {
40
+ context<TServices extends object>(): {
41
+ create(): InitPluginsFactory<TServices>;
42
+ };
43
+ };
44
+ export {};
45
+ //# sourceMappingURL=init-plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-plugins.d.ts","sourceRoot":"","sources":["../src/init-plugins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { plugin as definePlugin, service } from './plugin-contract.js';
2
+ function needsFor(keys) {
3
+ const needs = {};
4
+ for (const key of keys) {
5
+ needs[key] = service();
6
+ }
7
+ return needs;
8
+ }
9
+ function isServiceKeyArray(needs) {
10
+ return Array.isArray(needs);
11
+ }
12
+ function createPluginFactory() {
13
+ const factory = {
14
+ plugin(def) {
15
+ const rawNeeds = def.needs;
16
+ const needs = isServiceKeyArray(rawNeeds)
17
+ ? needsFor(rawNeeds)
18
+ : rawNeeds;
19
+ // Factory seam: key-array authoring is runtime-compiled to the same
20
+ // witness record that the kernel already understands.
21
+ const kernelDef = {
22
+ name: def.name,
23
+ ...(def.version === undefined ? {} : { version: def.version }),
24
+ ...(needs === undefined ? {} : { needs }),
25
+ ...(def.actions === undefined ? {} : { actions: def.actions }),
26
+ ...(def.configure === undefined ? {} : { configure: def.configure }),
27
+ ...(def.boot === undefined ? {} : { boot: def.boot }),
28
+ ...(def.start === undefined ? {} : { start: def.start }),
29
+ ...(def.stop === undefined ? {} : { stop: def.stop }),
30
+ ...(def.dispose === undefined ? {} : { dispose: def.dispose }),
31
+ };
32
+ return definePlugin(kernelDef);
33
+ },
34
+ needs(...keys) {
35
+ return needsFor(keys);
36
+ },
37
+ };
38
+ return factory;
39
+ }
40
+ export const initPlugins = {
41
+ context() {
42
+ return {
43
+ create() {
44
+ return createPluginFactory();
45
+ },
46
+ };
47
+ },
48
+ };
49
+ //# sourceMappingURL=init-plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-plugins.js","sourceRoot":"","sources":["../src/init-plugins.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AA0EvE,SAAS,QAAQ,CACf,IAAW;IAEX,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,EAAyB,CAAC;IAChD,CAAC;IACD,OAAO,KAAuC,CAAC;AACjD,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAiD;IAEjD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,mBAAmB;IAC1B,MAAM,OAAO,GAAG;QACd,MAAM,CAAC,GAAsC;YAC3C,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;YAC3B,MAAM,KAAK,GAAG,iBAAiB,CAAY,QAAQ,CAAC;gBAClD,CAAC,CAAC,QAAQ,CAAoC,QAAQ,CAAC;gBACvD,CAAC,CAAC,QAAQ,CAAC;YACb,oEAAoE;YACpE,sDAAsD;YACtD,MAAM,SAAS,GAA2B;gBACxC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC9D,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;gBACzC,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC9D,GAAG,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;gBACpE,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAsC,EAAE,CAAC;gBACvF,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAwC,EAAE,CAAC;gBAC3F,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAsC,EAAE,CAAC;gBACvF,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAA4C,EAAE,CAAC;aACpG,CAAC;YACF,OAAO,YAAY,CAAC,SAAS,CAAoD,CAAC;QACpF,CAAC;QACD,KAAK,CAA6C,GAAG,IAAW;YAC9D,OAAO,QAAQ,CAAyB,IAAI,CAAC,CAAC;QAChD,CAAC;KACF,CAAC;IACF,OAAO,OAAwC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,OAAO;QACL,OAAO;YACL,MAAM;gBACJ,OAAO,mBAAmB,EAAa,CAAC;YAC1C,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -8,11 +8,11 @@ import type { DotDiagnosticsSnapshot } from '../diagnostics.js';
8
8
  import type { DotLifecycleObserver } from '../lifecycle-observer.js';
9
9
  import type { DotLifecycleState } from '../lifecycle.js';
10
10
  import type { DotAppManifest } from '../manifest.js';
11
- import type { AnyPip } from '../pip-contract.js';
11
+ import type { AnyPlugin } from '../plugin-contract.js';
12
12
  export type DotAppInternalConfig = {
13
13
  appName: string;
14
14
  appVersion?: string;
15
- pips: readonly AnyPip[];
15
+ plugins: readonly AnyPlugin[];
16
16
  /** Runtime config bag passed to every `boot` hook. */
17
17
  config?: Readonly<Record<string, unknown>>;
18
18
  /**
@@ -58,7 +58,7 @@ export declare class DotAppImpl {
58
58
  /** Public dispose(). Idempotent + concurrent-safe. */
59
59
  dispose(): Promise<void>;
60
60
  }
61
- /** Re-export `ServiceKind` and `RouteTransport` for the kernel's internal use. */
62
- export { type RouteTransport, type ServiceKind } from '../manifest.js';
63
- export { type Pip } from '../pip-contract.js';
61
+ /** Re-export `ServiceKind` for the kernel's internal use. */
62
+ export { type ServiceKind } from '../manifest.js';
63
+ export { type Plugin } from '../plugin-contract.js';
64
64
  //# sourceMappingURL=app-instance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-instance.d.ts","sourceRoot":"","sources":["../../src/kernel/app-instance.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAEV,sBAAsB,EAKvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAqB,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,KAAK,EAA4C,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnG,OAAO,KAAK,EAEV,cAAc,EAKf,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAA4C,MAAM,oBAAoB,CAAC;AAkE3F,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,sDAAsD;IACtD,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3C;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC5C,kFAAkF;IAClF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,qBAAa,UAAU;;gBAsET,MAAM,EAAE,oBAAoB;IAqExC;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI;IAuIrD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,iBAAiB,CAE7B;IAED,IAAI,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEtC;IAED,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED,IAAI,WAAW,IAAI,sBAAsB,CAExC;IAED;;;;OAIG;IACH,YAAY,IAAI,IAAI;IA8KpB,oDAAoD;IAC9C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA8T3B,2EAA2E;IACrE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsI5B,mDAAmD;IAC7C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsH3B,sDAAsD;IAChD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CA6T/B;AA0BD,kFAAkF;AAElF,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"app-instance.d.ts","sourceRoot":"","sources":["../../src/kernel/app-instance.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAGV,sBAAsB,EAIvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAqB,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,KAAK,EAA+C,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACtG,OAAO,KAAK,EAGV,cAAc,EAMf,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAA4C,MAAM,uBAAuB,CAAC;AAqEjG,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IAC9B,sDAAsD;IACtD,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3C;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC5C,kFAAkF;IAClF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,qBAAa,UAAU;;gBAsET,MAAM,EAAE,oBAAoB;IAsExC;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI;IAiOrD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,iBAAiB,CAE7B;IAED,IAAI,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEtC;IAED,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED,IAAI,WAAW,IAAI,sBAAsB,CAExC;IAED;;;;OAIG;IACH,YAAY,IAAI,IAAI;IA+MpB,oDAAoD;IAC9C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA8T3B,2EAA2E;IACrE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsI5B,mDAAmD;IAC7C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsH3B,sDAAsD;IAChD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAmU/B;AAqCD,6DAA6D;AAE7D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC"}