dougong 0.8.3 → 0.10.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 (77) hide show
  1. package/README.md +22 -97
  2. package/dist/advanced.d.ts +9 -0
  3. package/dist/advanced.d.ts.map +1 -0
  4. package/dist/advanced.js +39 -0
  5. package/dist/composition/change-set.d.ts +56 -0
  6. package/dist/composition/change-set.d.ts.map +1 -0
  7. package/dist/composition/configuration.d.ts +8 -0
  8. package/dist/composition/configuration.d.ts.map +1 -0
  9. package/dist/composition/declarations.d.ts +60 -0
  10. package/dist/composition/declarations.d.ts.map +1 -0
  11. package/dist/composition/group.d.ts +10 -0
  12. package/dist/composition/group.d.ts.map +1 -0
  13. package/dist/composition/installation-graph.d.ts +17 -0
  14. package/dist/composition/installation-graph.d.ts.map +1 -0
  15. package/dist/composition/installation.d.ts +33 -0
  16. package/dist/composition/installation.d.ts.map +1 -0
  17. package/dist/composition/plan.d.ts +109 -0
  18. package/dist/composition/plan.d.ts.map +1 -0
  19. package/dist/composition/planner.d.ts +18 -0
  20. package/dist/composition/planner.d.ts.map +1 -0
  21. package/dist/composition/plugin-description.d.ts +34 -0
  22. package/dist/composition/plugin-description.d.ts.map +1 -0
  23. package/dist/composition/plugin.d.ts +65 -0
  24. package/dist/composition/plugin.d.ts.map +1 -0
  25. package/dist/contracts/contract-registry.d.ts +18 -0
  26. package/dist/contracts/contract-registry.d.ts.map +1 -0
  27. package/dist/contracts/contracts.d.ts +51 -0
  28. package/dist/contracts/contracts.d.ts.map +1 -0
  29. package/dist/contracts/errors.d.ts +93 -0
  30. package/dist/contracts/errors.d.ts.map +1 -0
  31. package/dist/contracts/logging.d.ts +20 -0
  32. package/dist/contracts/logging.d.ts.map +1 -0
  33. package/dist/contracts/resource.d.ts +16 -0
  34. package/dist/contracts/resource.d.ts.map +1 -0
  35. package/dist/contracts/status.d.ts +3 -0
  36. package/dist/contracts/status.d.ts.map +1 -0
  37. package/dist/contributions/contribution-store.d.ts +51 -0
  38. package/dist/contributions/contribution-store.d.ts.map +1 -0
  39. package/dist/events/event-hub.d.ts +27 -0
  40. package/dist/events/event-hub.d.ts.map +1 -0
  41. package/dist/execution/engine.d.ts +27 -0
  42. package/dist/execution/engine.d.ts.map +1 -0
  43. package/dist/execution/host-api.d.ts +49 -0
  44. package/dist/execution/host-api.d.ts.map +1 -0
  45. package/dist/execution/host.d.ts +4 -0
  46. package/dist/execution/host.d.ts.map +1 -0
  47. package/dist/execution/instance.d.ts +34 -0
  48. package/dist/execution/instance.d.ts.map +1 -0
  49. package/dist/index.d.ts +18 -3
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +2271 -8
  52. package/dist/inspection/diagnostics.d.ts +36 -0
  53. package/dist/inspection/diagnostics.d.ts.map +1 -0
  54. package/dist/internal/abort.d.ts +4 -0
  55. package/dist/internal/abort.d.ts.map +1 -0
  56. package/dist/internal/async-result.d.ts +10 -0
  57. package/dist/internal/async-result.d.ts.map +1 -0
  58. package/dist/internal/data-array.d.ts +3 -0
  59. package/dist/internal/data-array.d.ts.map +1 -0
  60. package/dist/internal/disposal-runtime.d.ts +5 -0
  61. package/dist/internal/disposal-runtime.d.ts.map +1 -0
  62. package/dist/internal/record.d.ts +11 -0
  63. package/dist/internal/record.d.ts.map +1 -0
  64. package/dist/internal/serial-queue.d.ts +7 -0
  65. package/dist/internal/serial-queue.d.ts.map +1 -0
  66. package/dist/lifetime/lifetime-diagnostics.d.ts +21 -0
  67. package/dist/lifetime/lifetime-diagnostics.d.ts.map +1 -0
  68. package/dist/lifetime/lifetime.d.ts +78 -0
  69. package/dist/lifetime/lifetime.d.ts.map +1 -0
  70. package/dist/observation/readonly-map.d.ts +13 -0
  71. package/dist/observation/readonly-map.d.ts.map +1 -0
  72. package/dist/observation/snapshot-view.d.ts +17 -0
  73. package/dist/observation/snapshot-view.d.ts.map +1 -0
  74. package/dist/serial-queue-DjEs2KFf.js +559 -0
  75. package/package.json +17 -8
  76. package/runtime/abort-listener.d.mts +2 -0
  77. package/runtime/abort-listener.mjs +27 -0
@@ -0,0 +1,65 @@
1
+ import { StandardJSONSchemaV1, StandardSchemaV1 } from '@standard-schema/spec';
2
+ import { ExtensionPoint, OptionalService, Requirement, Service } from '../contracts/contracts.js';
3
+ import { ContributionView, ContributionOperations } from '../contributions/contribution-store.js';
4
+ import { LifetimeContext } from '../lifetime/lifetime.js';
5
+ import { Logger } from '../contracts/logging.js';
6
+ import { EventOperations } from '../events/event-hub.js';
7
+ import { Awaitable } from '../contracts/resource.js';
8
+ export type { Awaitable } from '../contracts/resource.js';
9
+ export type Requirements = Readonly<Record<string, Requirement>>;
10
+ export type Provisions = Readonly<Record<string, Extract<Requirement, {
11
+ readonly kind: "service";
12
+ }>>>;
13
+ type ServiceValue<T> = T extends Service<infer Value> ? Value : never;
14
+ export type ResolvedRequirement<T> = T extends OptionalService<infer Value> ? Value | undefined : T extends Service<infer Value> ? Value : T extends ExtensionPoint<infer Value> ? ContributionView<Value> : never;
15
+ export type ResolvedRequirements<T extends Requirements> = {
16
+ readonly [Key in keyof T]: ResolvedRequirement<T[Key]>;
17
+ };
18
+ export type ProvidedServices<T extends Provisions> = {
19
+ readonly [Key in keyof T]: ServiceValue<T[Key]>;
20
+ };
21
+ type SetupOutput<T extends Provisions> = keyof T extends never ? void : ProvidedServices<T>;
22
+ interface PluginSchema<Input, Output> extends StandardSchemaV1<Input, Output> {
23
+ readonly "~standard": StandardSchemaV1.Props<Input, Output> & {
24
+ readonly jsonSchema?: StandardJSONSchemaV1.Converter;
25
+ };
26
+ }
27
+ export interface InstanceMetadata {
28
+ readonly hostName: string;
29
+ readonly installationId: string;
30
+ readonly pluginName: string;
31
+ readonly generation: number;
32
+ readonly groupId: string | undefined;
33
+ }
34
+ export interface PluginContext<T extends Requirements = Requirements> {
35
+ readonly dependencies: ResolvedRequirements<T>;
36
+ readonly lifetime: LifetimeContext;
37
+ readonly events: EventOperations;
38
+ readonly contributions: ContributionOperations;
39
+ readonly metadata: InstanceMetadata;
40
+ readonly logger: Logger;
41
+ }
42
+ declare const configurationInputBrand: unique symbol;
43
+ export interface Plugin<Configuration = void, Requires extends Requirements = {}, Provides extends Provisions = {}, ConfigurationInput = Configuration> {
44
+ readonly [configurationInputBrand]?: (input: ConfigurationInput) => ConfigurationInput;
45
+ readonly name: string;
46
+ readonly configuration?: PluginSchema<ConfigurationInput, Configuration>;
47
+ readonly requires?: Requires;
48
+ readonly provides?: Provides;
49
+ readonly setup: (context: PluginContext<Requires>, configuration: Configuration) => Awaitable<SetupOutput<NoInfer<Provides>>>;
50
+ }
51
+ export interface AnyPlugin extends Omit<Plugin<unknown, Requirements, Provisions>, "configuration" | "setup" | typeof configurationInputBrand> {
52
+ readonly configuration?: unknown;
53
+ readonly setup: (context: never, configuration: never) => unknown;
54
+ }
55
+ export type InstanceContext = Omit<PluginContext<{}>, "dependencies"> & {
56
+ readonly dependencies: Readonly<Record<string, unknown>>;
57
+ };
58
+ export interface NormalizedPlugin extends Omit<Plugin<unknown, Requirements, Provisions>, "requires" | "provides" | "setup"> {
59
+ readonly requires: Requirements;
60
+ readonly provides: Provisions;
61
+ readonly setup: (context: InstanceContext, configuration: unknown) => Awaitable<void | Readonly<Record<string, unknown>>>;
62
+ }
63
+ export declare function definePlugin<Configuration = void, Requires extends Requirements = {}, Provides extends Provisions = {}, ConfigurationInput = Configuration>(plugin: Plugin<Configuration, Requires, Provides, ConfigurationInput>): Plugin<NoInfer<Configuration>, NoInfer<Requires>, NoInfer<Provides>, NoInfer<ConfigurationInput>>;
64
+ export declare function normalizePlugin(plugin: AnyPlugin): NormalizedPlugin;
65
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/composition/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,OAAO,EACb,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAG1D,YAAY,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AAEjE,MAAM,MAAM,UAAU,GAAG,QAAQ,CAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC,CACnE,CAAC;AAEF,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;AAEtE,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAC/B,CAAC,SAAS,eAAe,CAAC,MAAM,KAAK,CAAC,GAClC,KAAK,GAAG,SAAS,GACjB,CAAC,SAAS,OAAO,CAAC,MAAM,KAAK,CAAC,GAC5B,KAAK,GACL,CAAC,SAAS,cAAc,CAAC,MAAM,KAAK,CAAC,GACnC,gBAAgB,CAAC,KAAK,CAAC,GACvB,KAAK,CAAC;AAEhB,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,YAAY,IAAI;IACzD,QAAQ,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,UAAU,IAAI;IACnD,QAAQ,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAChD,CAAC;AAEF,KAAK,WAAW,CAAC,CAAC,SAAS,UAAU,IAAI,MAAM,CAAC,SAAS,KAAK,GAAG,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAE5F,UAAU,YAAY,CAAC,KAAK,EAAE,MAAM,CAAE,SAAQ,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC;IAC3E,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG;QAC5D,QAAQ,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC,SAAS,CAAC;KACtD,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IAClE,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,sBAAsB,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,OAAO,CAAC,MAAM,uBAAuB,EAAE,OAAO,MAAM,CAAC;AAErD,MAAM,WAAW,MAAM,CACrB,aAAa,GAAG,IAAI,EACpB,QAAQ,SAAS,YAAY,GAAG,EAAE,EAClC,QAAQ,SAAS,UAAU,GAAG,EAAE,EAChC,kBAAkB,GAAG,aAAa;IAGlC,QAAQ,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,kBAAkB,CAAC;IACvF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;IACzE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,CACd,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,EAChC,aAAa,EAAE,aAAa,KACzB,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CAChD;AAGD,MAAM,WAAW,SAAU,SAAQ,IAAI,CACrC,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,EACzC,eAAe,GAAG,OAAO,GAAG,OAAO,uBAAuB,CAC3D;IACC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,KAAK,OAAO,CAAC;CACnE;AAED,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,GAAG;IACtE,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAC5C,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,EACzC,UAAU,GAAG,UAAU,GAAG,OAAO,CAClC;IACC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,CACd,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,OAAO,KACnB,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CAC1D;AAiBD,wBAAgB,YAAY,CAC1B,aAAa,GAAG,IAAI,EACpB,QAAQ,SAAS,YAAY,GAAG,EAAE,EAClC,QAAQ,SAAS,UAAU,GAAG,EAAE,EAChC,kBAAkB,GAAG,aAAa,EAElC,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,CAAC,GACpE,MAAM,CACP,OAAO,CAAC,aAAa,CAAC,EACtB,OAAO,CAAC,QAAQ,CAAC,EACjB,OAAO,CAAC,QAAQ,CAAC,EACjB,OAAO,CAAC,kBAAkB,CAAC,CAC5B,CAOA;AAwKD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,gBAAgB,CAGnE"}
@@ -0,0 +1,18 @@
1
+ import { ContractIdentity, ContractKind } from './contracts.js';
2
+ export declare class ContractRegistry {
3
+ #private;
4
+ assertKinds(kinds: ReadonlyMap<string, ContractKind>): void;
5
+ assertCompatible(contract: ContractIdentity): void;
6
+ remember(contract: ContractIdentity): void;
7
+ writer(candidateKinds: ReadonlyMap<string, ContractKind>): ContractRegistryWriter;
8
+ commit(kinds: ReadonlyMap<string, ContractKind>): void;
9
+ }
10
+ export declare class ContractRegistryWriter {
11
+ #private;
12
+ constructor(registry: ContractRegistry, candidateKinds: ReadonlyMap<string, ContractKind>);
13
+ remember(contract: ContractIdentity): void;
14
+ commit(): void;
15
+ discard(): void;
16
+ }
17
+ export declare function rememberContractKind(kinds: Map<string, ContractKind>, contract: ContractIdentity): void;
18
+ //# sourceMappingURL=contract-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-registry.d.ts","sourceRoot":"","sources":["../../src/contracts/contract-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAKrE,qBAAa,gBAAgB;;IAG3B,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC;IAIpD,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB;IAI3C,QAAQ,CAAC,QAAQ,EAAE,gBAAgB;IAInC,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC;IAIxD,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC;CAIhD;AAWD,qBAAa,sBAAsB;;gBAGrB,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC;IAKzF,QAAQ,CAAC,QAAQ,EAAE,gBAAgB;IAenC,MAAM;IAON,OAAO;CAGR;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,gBAAgB,QAGhG"}
@@ -0,0 +1,51 @@
1
+ declare const contractBrand: unique symbol;
2
+ declare const contractValueSlot: unique symbol;
3
+ declare const optionalBrand: unique symbol;
4
+ interface ContractValueSlot<T> {
5
+ readonly value: T;
6
+ readonly accept: (value: T) => void;
7
+ }
8
+ export type ContractKind = "service" | "extensionPoint" | "event";
9
+ export interface ContractIdentity {
10
+ readonly id: string;
11
+ readonly kind: ContractKind;
12
+ }
13
+ interface ContractBrand {
14
+ readonly [contractBrand]: true;
15
+ }
16
+ interface Contract<T, Kind extends ContractKind> extends ContractIdentity, ContractBrand {
17
+ readonly kind: Kind;
18
+ readonly [contractValueSlot]: ContractValueSlot<T>;
19
+ }
20
+ interface ServiceIdentity extends ContractIdentity, ContractBrand {
21
+ readonly kind: "service";
22
+ }
23
+ interface ExtensionPointIdentity extends ContractIdentity, ContractBrand {
24
+ readonly kind: "extensionPoint";
25
+ }
26
+ export interface Service<T> extends Contract<T, "service"> {
27
+ }
28
+ export interface ExtensionPoint<T> extends Contract<T, "extensionPoint"> {
29
+ }
30
+ export interface Event<T> extends Contract<T, "event"> {
31
+ }
32
+ interface OptionalServiceIdentity {
33
+ readonly [optionalBrand]: true;
34
+ readonly kind: "optional";
35
+ readonly service: ServiceIdentity;
36
+ }
37
+ export interface OptionalService<T> extends OptionalServiceIdentity {
38
+ readonly service: Service<T>;
39
+ readonly [contractValueSlot]: ContractValueSlot<T>;
40
+ }
41
+ export type Requirement = ServiceIdentity | ExtensionPointIdentity | OptionalServiceIdentity;
42
+ export type ContractValue<T> = T extends Contract<infer Value, ContractKind> ? Value : never;
43
+ export declare function normalizeContract<T extends ContractIdentity>(value: T, expected?: ContractKind, message?: string): T;
44
+ export declare function normalizeContract(value: unknown, expected?: ContractKind, message?: string): ContractIdentity;
45
+ export declare function service<T>(id: string): Service<T>;
46
+ export declare function event<T>(id: string): Event<T>;
47
+ export declare function extensionPoint<T>(id: string): ExtensionPoint<T>;
48
+ export declare function optional<T>(token: Service<T>): OptionalService<T>;
49
+ export declare function normalizeRequirement(value: unknown, message?: string, optionalMessage?: string): Requirement;
50
+ export {};
51
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/contracts/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import { StandardSchemaV1 } from '@standard-schema/spec';
2
+ export declare const lifetimeBusyCode = "BUSY";
3
+ export declare const changeConflictCode = "CHANGE_CONFLICT";
4
+ export declare const changeForeignCode = "CHANGE_FOREIGN";
5
+ export declare const contractConflictCode = "CONTRACT_CONFLICT";
6
+ export declare const contributionUnavailableCode = "CONTRIBUTION_UNAVAILABLE";
7
+ export declare const eventBeforeCommitCode = "EVENT_BEFORE_COMMIT";
8
+ export declare const groupConflictCode = "GROUP_CONFLICT";
9
+ export declare const groupCycleCode = "GROUP_CYCLE";
10
+ export declare const groupForeignCode = "GROUP_FOREIGN";
11
+ export declare const groupMissingCode = "GROUP_MISSING";
12
+ export declare const groupRemovedCode = "GROUP_REMOVED";
13
+ export declare const hostBusyCode = "HOST_BUSY";
14
+ export declare const hostQuarantinedCode = "HOST_QUARANTINED";
15
+ export declare const installationConflictCode = "INSTALLATION_CONFLICT";
16
+ export declare const installationForeignCode = "INSTALLATION_FOREIGN";
17
+ export declare const installationRemovedCode = "INSTALLATION_REMOVED";
18
+ export declare const lifetimeDisposedCode = "LIFETIME_DISPOSED";
19
+ export declare const planConsumedCode = "PLAN_CONSUMED";
20
+ export declare const planForeignCode = "PLAN_FOREIGN";
21
+ export declare const planStaleCode = "PLAN_STALE";
22
+ export declare const providesInvalidCode = "PROVIDES_INVALID";
23
+ export declare const serviceConflictCode = "SERVICE_CONFLICT";
24
+ export declare const serviceCycleCode = "SERVICE_CYCLE";
25
+ export declare const serviceMissingCode = "SERVICE_MISSING";
26
+ export declare const serviceUnavailableCode = "SERVICE_UNAVAILABLE";
27
+ export declare const shutdownTimeoutCode = "SHUTDOWN_TIMEOUT";
28
+ export declare const transitionFailedCode = "TRANSITION_FAILED";
29
+ declare const detailKinds: {
30
+ readonly outcome: "outcome";
31
+ readonly phase: "text";
32
+ readonly installation: "text";
33
+ readonly contract: "text";
34
+ readonly dependencyPath: "path";
35
+ readonly affectedInstallations: "path";
36
+ readonly stateRevision: "revision";
37
+ readonly expectedRevision: "revision";
38
+ };
39
+ declare const outcomes: readonly ["rejected", "restored", "quarantined"];
40
+ interface DetailValues {
41
+ readonly outcome: (typeof outcomes)[number];
42
+ readonly text: string;
43
+ readonly path: ReadonlyArray<string>;
44
+ readonly revision: number;
45
+ }
46
+ export type ErrorDetails = {
47
+ readonly [Field in keyof typeof detailKinds]?: DetailValues[(typeof detailKinds)[Field]];
48
+ };
49
+ export declare class DougongError<Code extends string = string> extends Error {
50
+ name: string;
51
+ readonly code: Code;
52
+ readonly details: ErrorDetails;
53
+ constructor(code: Code, message: string, options?: ErrorOptions & {
54
+ readonly details?: ErrorDetails;
55
+ });
56
+ }
57
+ export declare function quarantinedHost(revision: number): DougongError<"HOST_QUARANTINED">;
58
+ export interface ErrorSnapshot {
59
+ readonly name: string;
60
+ readonly message: string;
61
+ readonly code?: string;
62
+ readonly stack?: string;
63
+ readonly cause?: ErrorSnapshot;
64
+ readonly error?: ErrorSnapshot;
65
+ readonly suppressed?: ErrorSnapshot;
66
+ readonly errors?: ReadonlyArray<ErrorSnapshot>;
67
+ readonly details?: ErrorDetails;
68
+ readonly fields?: Readonly<Record<string, string | ReadonlyArray<string>>>;
69
+ readonly issues?: ReadonlyArray<{
70
+ readonly message: string;
71
+ readonly path?: ReadonlyArray<string | number>;
72
+ }>;
73
+ readonly truncated?: true;
74
+ }
75
+ export declare class RecordedFailure extends Error {
76
+ #private;
77
+ readonly name = "RecordedFailure";
78
+ readonly code: string | undefined;
79
+ get snapshot(): ErrorSnapshot;
80
+ constructor(error: unknown, fields?: ReadonlyArray<string>);
81
+ }
82
+ export declare function isError(value: unknown): value is Error;
83
+ export declare function normalizeFailure(error: unknown, code: string, message: string): Error;
84
+ export declare function isCancellationReason(signal: AbortSignal, error: unknown): boolean;
85
+ export declare class ConfigurationValidationError extends DougongError {
86
+ name: string;
87
+ readonly issues: ReadonlyArray<StandardSchemaV1.Issue>;
88
+ constructor(issues: ReadonlyArray<StandardSchemaV1.Issue>, options?: ErrorOptions & {
89
+ readonly details?: ErrorDetails;
90
+ });
91
+ }
92
+ export {};
93
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/contracts/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAI9D,eAAO,MAAM,gBAAgB,SAAS,CAAC;AACvC,eAAO,MAAM,kBAAkB,oBAAoB,CAAC;AACpD,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAElD,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AACxD,eAAO,MAAM,2BAA2B,6BAA6B,CAAC;AACtE,eAAO,MAAM,qBAAqB,wBAAwB,CAAC;AAC3D,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAClD,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAC5C,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AACtD,eAAO,MAAM,wBAAwB,0BAA0B,CAAC;AAChE,eAAO,MAAM,uBAAuB,yBAAyB,CAAC;AAC9D,eAAO,MAAM,uBAAuB,yBAAyB,CAAC;AAC9D,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AACxD,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,eAAe,iBAAiB,CAAC;AAC9C,eAAO,MAAM,aAAa,eAAe,CAAC;AAC1C,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AACtD,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AACtD,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,kBAAkB,oBAAoB,CAAC;AACpD,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAC5D,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AACtD,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AAmBxD,QAAA,MAAM,WAAW;;;;;;;;;CASP,CAAC;AACX,QAAA,MAAM,QAAQ,kDAAmD,CAAC;AAElE,UAAU,YAAY;IACpB,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,KAAK,IAAI,MAAM,OAAO,WAAW,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,OAAO,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC;CACzF,CAAC;AA8CF,qBAAa,YAAY,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,KAAK;IAC1D,IAAI,SAAkB;IAC/B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;gBAG7B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;KAAE;CAgB/D;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,oCAI/C;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3E,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;QAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;KAChD,CAAC,CAAC;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;CAC3B;AAGD,qBAAa,eAAgB,SAAQ,KAAK;;IACxC,SAAkB,IAAI,qBAAqB;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAGlC,IAAI,QAAQ,kBAEX;gBAQW,KAAK,EAAE,OAAO,EAAE,MAAM,GAAE,aAAa,CAAC,MAAM,CAAM;CAuB/D;AAmID,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAYtD;AAiCD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAWrF;AAGD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,WAavE;AAED,qBAAa,4BAA6B,SAAQ,YAAY;IACnD,IAAI,SAAkC;IAC/C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAGrD,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAC7C,OAAO,CAAC,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;KAAE;CAU/D"}
@@ -0,0 +1,20 @@
1
+ import { SynchronousResult } from '../internal/async-result.js';
2
+ import { disposeSymbol, Disposable } from './resource.js';
3
+ export interface Logger<Result = SynchronousResult<void>> {
4
+ readonly debug: (message: unknown, ...details: unknown[]) => Result;
5
+ readonly info: (message: unknown, ...details: unknown[]) => Result;
6
+ readonly warn: (message: unknown, ...details: unknown[]) => Result;
7
+ readonly error: (message: unknown, ...details: unknown[]) => Result;
8
+ }
9
+ export declare function captureLogger<Input extends Logger<unknown>>(value: Input): {
10
+ readonly [Level in keyof Logger]: (...arguments_: Parameters<Logger<unknown>[Level]>) => ReturnType<Input[Level]>;
11
+ };
12
+ export declare function captureLogger(value: unknown): Logger<unknown>;
13
+ export declare function isLogger(value: unknown): value is Logger<unknown>;
14
+ export declare class ScopedLogger implements Disposable {
15
+ #private;
16
+ readonly handle: Logger;
17
+ constructor(logger: Logger<unknown>, metadata: Readonly<Record<string, unknown>>);
18
+ [disposeSymbol](): void;
19
+ }
20
+ //# sourceMappingURL=logging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/contracts/logging.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAC/D,MAAM,WAAW,MAAM,CAAC,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC;IACtD,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC;IACpE,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC;IACnE,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC;IACnE,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC;CACrE;AAED,wBAAgB,aAAa,CAAC,KAAK,SAAS,MAAM,CAAC,OAAO,CAAC,EACzD,KAAK,EAAE,KAAK,GACX;IACD,QAAQ,EAAE,KAAK,IAAI,MAAM,MAAM,GAAG,CAChC,GAAG,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAC9C,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;CAC9B,CAAC;AACF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAkB/D,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,CAOjE;AAED,qBAAa,YAAa,YAAW,UAAU;;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAKpB;gBAKS,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIhF,CAAC,aAAa,CAAC;CAYhB"}
@@ -0,0 +1,16 @@
1
+ export type Awaitable<T> = T | PromiseLike<T>;
2
+ export { assertPromiseRuntime, resolveDisposalSymbol, asyncDisposeSymbol, disposeSymbol, } from '../internal/disposal-runtime.js';
3
+ export interface Disposable {
4
+ [Symbol.dispose](): void;
5
+ }
6
+ export interface AsyncDisposable {
7
+ [Symbol.asyncDispose](): PromiseLike<void>;
8
+ }
9
+ export type Resource = Disposable | AsyncDisposable;
10
+ export interface Publication extends Disposable {
11
+ publish(): void;
12
+ }
13
+ export declare function markOwnedControlHandle<T extends Resource>(handle: T): T;
14
+ export declare function claimResource(resource: Resource): () => void;
15
+ export declare function captureDisposer(resource: Resource): () => Awaitable<void>;
16
+ //# sourceMappingURL=resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/contracts/resource.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAE9C,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,GACd,MAAM,iCAAiC,CAAC;AAEzC,MAAM,WAAW,UAAU;IACzB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,eAAe,CAAC;AAEpD,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,OAAO,IAAI,IAAI,CAAC;CACjB;AAUD,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAGvE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,IAAI,CAc5D;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAmBzE"}
@@ -0,0 +1,3 @@
1
+ export type HostStatus = "stopped" | "starting" | "running" | "changing" | "stopping" | "quarantined";
2
+ export type InstallationState = "pending" | "stopped" | "running" | "changing" | "removed" | "quarantined";
3
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/contracts/status.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GACpB,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC;AAC/E,MAAM,MAAM,iBAAiB,GAC3B,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,aAAa,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { ContractIdentity, ExtensionPoint, Requirement } from '../contracts/contracts.js';
2
+ import { Lifetime, LifetimeOwnership } from '../lifetime/lifetime.js';
3
+ import { ResolvedValue } from '../internal/async-result.js';
4
+ import { disposeSymbol, Disposable, Publication, Awaitable } from '../contracts/resource.js';
5
+ import { SnapshotView } from '../observation/snapshot-view.js';
6
+ export interface Contribution<T> extends Disposable {
7
+ readonly update: (value: T) => void;
8
+ }
9
+ export interface ContributionView<T> extends SnapshotView<ReadonlyArray<string>> {
10
+ use<Result>(id: string, callback: (value: T) => Awaitable<Result>): Promise<ResolvedValue<Awaited<Result>>>;
11
+ }
12
+ export interface ContributionOperations {
13
+ add<T>(token: ExtensionPoint<T>, key: string, value: T, options?: LifetimeOwnership): Contribution<T>;
14
+ }
15
+ type ExtensionPointIdentity = Extract<Requirement, {
16
+ readonly kind: "extensionPoint";
17
+ }>;
18
+ declare class ContributionRecord<T> implements Publication {
19
+ #private;
20
+ readonly handle: Contribution<T>;
21
+ constructor(store: ContributionStore<T>, id: string, initialValue: T, owner: Lifetime, detachFromOwner: () => void);
22
+ publish(): void;
23
+ use<Result>(callback: (value: T) => Awaitable<Result>): Promise<ResolvedValue<Awaited<Result>>>;
24
+ update(value: T): void;
25
+ [disposeSymbol](): void;
26
+ }
27
+ export declare class ContributionStore<T> {
28
+ #private;
29
+ constructor(invalidate: (store: ContributionStore<unknown>) => void, report: (error: unknown) => void, releaseIfUnused: (store: ContributionStore<unknown>) => void);
30
+ stage(installationId: string, key: string, value: T, owner: Lifetime, remember?: () => void): Contribution<T>;
31
+ view(own: (resource: Disposable) => () => void, owner?: Lifetime): ContributionView<T>;
32
+ hostView(): ContributionView<T>;
33
+ use<Result>(id: string, callback: (value: T) => Awaitable<Result>): Promise<ResolvedValue<Awaited<Result>>>;
34
+ snapshot(): readonly string[];
35
+ subscribe(listener: () => void, own?: (resource: Disposable) => () => void): Disposable;
36
+ publishClaim(id: string, contribution: ContributionRecord<T>): void;
37
+ valueChanged(id: string, contribution: ContributionRecord<T>): void;
38
+ removeContribution(id: string, contribution: ContributionRecord<T>): void;
39
+ publishSnapshot(): void;
40
+ }
41
+ export declare class ContributionRegistry {
42
+ #private;
43
+ constructor(report: (error: unknown) => void);
44
+ get<T = unknown>(token: ExtensionPointIdentity): ContributionStore<T>;
45
+ view<T = unknown>(token: ExtensionPointIdentity, owner?: Lifetime): ContributionView<T>;
46
+ scope(owner: Lifetime, installationId: string, remember: (token: ContractIdentity) => void): ContributionOperations;
47
+ beginBatch(): void;
48
+ endBatch(): void;
49
+ }
50
+ export {};
51
+ //# sourceMappingURL=contribution-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contribution-store.d.ts","sourceRoot":"","sources":["../../src/contributions/contribution-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { ContractIdentity, Event } from '../contracts/contracts.js';
2
+ import { Lifetime, LifetimeOwnership } from '../lifetime/lifetime.js';
3
+ import { disposeSymbol, Disposable, Publication } from '../contracts/resource.js';
4
+ export type EventListener<T> = (payload: T) => unknown;
5
+ export type EventArguments<T> = [T] extends [void] ? [payload?: T] : [payload: T];
6
+ export interface EventOperations {
7
+ on<T>(token: Event<T>, listener: EventListener<T>, options?: LifetimeOwnership): Disposable;
8
+ emit<T>(token: Event<T>, ...payload: EventArguments<T>): Promise<void>;
9
+ }
10
+ declare class ListenerRegistration<T> implements Publication {
11
+ #private;
12
+ readonly handle: Disposable;
13
+ constructor(hub: EventHub, eventId: string, listener: EventListener<T>, owner: Lifetime, detach: () => void);
14
+ publish(): void;
15
+ invoke(payload: T): Promise<unknown>;
16
+ [disposeSymbol](): void;
17
+ }
18
+ export declare class EventHub {
19
+ #private;
20
+ scope(owner: Lifetime, remember: (token: ContractIdentity) => void): EventOperations;
21
+ stage<T>(eventId: string, listener: EventListener<T>, owner: Lifetime): Disposable;
22
+ add<T>(eventId: string, registration: ListenerRegistration<T>): void;
23
+ delete<T>(eventId: string, registration: ListenerRegistration<T>): void;
24
+ emit<T>(eventId: string, payload: T): Promise<void>;
25
+ }
26
+ export {};
27
+ //# sourceMappingURL=event-hub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-hub.d.ts","sourceRoot":"","sources":["../../src/events/event-hub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,gBAAgB,EAAE,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEjG,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EACL,aAAa,EAEb,KAAK,UAAU,EACf,KAAK,WAAW,EACjB,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC;AACvD,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAElF,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,UAAU,CAAC;IAC5F,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxE;AASD,cAAM,oBAAoB,CAAC,CAAC,CAAE,YAAW,WAAW;;IAGlD,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;gBAG1B,GAAG,EAAE,QAAQ,EACb,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAC1B,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,MAAM,IAAI;IASpB,OAAO;IAMP,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAOpC,CAAC,aAAa,CAAC;CAOhB;AAmDD,qBAAa,QAAQ;;IAGnB,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,eAAe;IAIpF,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,GAAG,UAAU;IAKlF,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAM7D,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAO1D,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAgB1D"}
@@ -0,0 +1,27 @@
1
+ import { Service, OptionalService, ExtensionPoint } from '../contracts/contracts.js';
2
+ import { ResolvedValue } from '../internal/async-result.js';
3
+ import { Plan } from '../composition/plan.js';
4
+ import { ApplyResult, HostOptions } from './host-api.js';
5
+ import { ChangeSet, Group, Installation } from '../composition/declarations.js';
6
+ import { HostStatus } from '../contracts/status.js';
7
+ import { HostSnapshot } from '../inspection/diagnostics.js';
8
+ import { Awaitable } from '../contracts/resource.js';
9
+ export declare class Engine {
10
+ #private;
11
+ readonly name: string;
12
+ constructor(options?: HostOptions);
13
+ get status(): HostStatus;
14
+ get stateRevision(): number;
15
+ get diagnostics(): import('../index.js').SnapshotView<HostSnapshot>;
16
+ installation(id: string): Installation | undefined;
17
+ group(id: string): Group | undefined;
18
+ explain(id: string): readonly import('../index.js').BindingReport[];
19
+ change(): ChangeSet;
20
+ plan(change: ChangeSet, signal?: AbortSignal): Promise<Plan>;
21
+ apply(plan: Plan): Promise<ApplyResult>;
22
+ start(): Promise<ApplyResult>;
23
+ stop(): Promise<ApplyResult>;
24
+ use<T, Result>(requirement: Service<T> | OptionalService<T>, callback: (value: T | undefined) => Awaitable<Result>): Promise<ResolvedValue<Awaited<Result>>>;
25
+ contributions<T>(point: ExtensionPoint<T>): import('../index.js').ContributionView<T>;
26
+ }
27
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/execution/engine.ts"],"names":[],"mappings":"AAiBA,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,2BAA2B,CAAC;AAQnC,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAY/E,OAAO,EAGL,KAAK,IAAI,EAEV,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EACV,SAAS,EACT,KAAK,EACL,YAAY,EAEb,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,wBAAwB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAwB,MAAM,8BAA8B,CAAC;AACvF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAiE1D,qBAAa,MAAM;;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAkBV,OAAO,GAAE,WAAgB;IA0ErC,IAAI,MAAM,IAAI,UAAU,CAEvB;IACD,IAAI,aAAa,WAEhB;IACD,IAAI,WAAW,qDAEd;IAED,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIlD,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAIpC,OAAO,CAAC,EAAE,EAAE,MAAM;IAMlB,MAAM,IAAI,SAAS;IAcb,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAkClE,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;IAMvC,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC;IAG7B,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC;IAI5B,GAAG,CAAC,CAAC,EAAE,MAAM,EACX,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,EAC5C,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,KAAK,SAAS,CAAC,MAAM,CAAC,GACpD,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IA2B1C,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;CAmoB1C"}
@@ -0,0 +1,49 @@
1
+ import { ChangeSet, Group, Installation, InitialInstallation } from '../composition/declarations.js';
2
+ import { HostStatus } from '../contracts/status.js';
3
+ import { Logger } from '../contracts/logging.js';
4
+ import { Service, OptionalService, ExtensionPoint } from '../contracts/contracts.js';
5
+ import { ContributionView } from '../contributions/contribution-store.js';
6
+ import { SnapshotView } from '../observation/snapshot-view.js';
7
+ import { HostSnapshot } from '../inspection/diagnostics.js';
8
+ import { Awaitable } from '../contracts/resource.js';
9
+ import { Plan, BindingReport } from '../composition/plan.js';
10
+ import { AnyPlugin } from '../composition/plugin.js';
11
+ import { ResolvedValue } from '../internal/async-result.js';
12
+ export interface HostOptions<Declarations extends ReadonlyArray<AnyPlugin> = ReadonlyArray<AnyPlugin>> {
13
+ readonly name?: string;
14
+ readonly installations?: {
15
+ readonly [Index in keyof Declarations]: {
16
+ readonly plugin: Declarations[Index];
17
+ } & NoInfer<InitialInstallation<Declarations[Index]>>;
18
+ };
19
+ readonly groups?: ReadonlyArray<{
20
+ readonly id: string;
21
+ readonly parentId?: string;
22
+ }>;
23
+ readonly logger?: Logger;
24
+ readonly onError?: (error: unknown) => Awaitable<void>;
25
+ readonly shutdownTimeoutMilliseconds?: number;
26
+ }
27
+ export interface ApplyResult {
28
+ readonly stateRevision: number;
29
+ readonly affectedInstallations: ReadonlyArray<string>;
30
+ }
31
+ export interface Host {
32
+ readonly name: string;
33
+ readonly status: HostStatus;
34
+ readonly stateRevision: number;
35
+ readonly diagnostics: SnapshotView<HostSnapshot>;
36
+ change(): ChangeSet;
37
+ plan(change: ChangeSet, signal?: AbortSignal): Promise<Plan>;
38
+ apply(plan: Plan): Promise<ApplyResult>;
39
+ start(): Promise<ApplyResult>;
40
+ stop(): Promise<ApplyResult>;
41
+ use<T, Result>(service: Service<T>, callback: (value: T) => Awaitable<Result>): Promise<ResolvedValue<Awaited<Result>>>;
42
+ use<T, Result>(service: OptionalService<T>, callback: (value: T | undefined) => Awaitable<Result>): Promise<ResolvedValue<Awaited<Result>>>;
43
+ contributions<T>(point: ExtensionPoint<T>): ContributionView<T>;
44
+ installation(id: string): Installation | undefined;
45
+ group(id: string): Group | undefined;
46
+ explain(installationId: string): ReadonlyArray<BindingReport>;
47
+ [Symbol.asyncDispose](): Promise<void>;
48
+ }
49
+ //# sourceMappingURL=host-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-api.d.ts","sourceRoot":"","sources":["../../src/execution/host-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Host, HostOptions } from './host-api.js';
2
+ import { AnyPlugin } from '../composition/plugin.js';
3
+ export declare function createHost<const Declarations extends ReadonlyArray<AnyPlugin>>(options?: HostOptions<Declarations>): Host;
4
+ //# sourceMappingURL=host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/execution/host.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,wBAAgB,UAAU,CAAC,KAAK,CAAC,YAAY,SAAS,aAAa,CAAC,SAAS,CAAC,EAC5E,OAAO,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,GAClC,IAAI,CA6BN"}
@@ -0,0 +1,34 @@
1
+ import { ContractRegistryWriter } from '../contracts/contract-registry.js';
2
+ import { Logger } from '../contracts/logging.js';
3
+ import { EventHub } from '../events/event-hub.js';
4
+ import { ContributionRegistry } from '../contributions/contribution-store.js';
5
+ import { Lifetime, ReleaseFailure } from '../lifetime/lifetime.js';
6
+ import { InstallationRecord, InstallationDeclaration } from '../composition/installation.js';
7
+ import { Awaitable } from '../contracts/resource.js';
8
+ export interface InstanceEnvironment {
9
+ readonly hostName: string;
10
+ readonly logger: Logger<unknown>;
11
+ readonly report: (error: unknown) => void;
12
+ readonly releaseFailed: (failure: ReleaseFailure) => void;
13
+ readonly changed: () => void;
14
+ readonly events: EventHub;
15
+ readonly contributions: ContributionRegistry;
16
+ readonly contracts: ContractRegistryWriter;
17
+ readonly startupSignal: AbortSignal;
18
+ readonly shutdownTimeoutMilliseconds: number | undefined;
19
+ }
20
+ export declare class Instance {
21
+ #private;
22
+ readonly installation: InstallationRecord;
23
+ readonly declaration: InstallationDeclaration;
24
+ readonly generation: number;
25
+ private readonly environment;
26
+ readonly lifetime: Lifetime;
27
+ constructor(installation: InstallationRecord, declaration: InstallationDeclaration, generation: number, environment: InstanceEnvironment);
28
+ prepare(dependencies: Readonly<Record<string, unknown>>, configuration: unknown): Promise<void>;
29
+ read(serviceId: string): unknown;
30
+ use<T, Result>(serviceId: string, callback: (value: T) => Awaitable<Result>): Promise<import('../index.js').ResolvedValue<Awaited<Result>>>;
31
+ publish(): void;
32
+ dispose(): Promise<void>;
33
+ }
34
+ //# sourceMappingURL=instance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../../src/execution/instance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAEhF,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAGlG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1D,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,sBAAsB,CAAC;IAC3C,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC;IACpC,QAAQ,CAAC,2BAA2B,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1D;AAED,qBAAa,QAAQ;;IAKjB,QAAQ,CAAC,YAAY,EAAE,kBAAkB;IACzC,QAAQ,CAAC,WAAW,EAAE,uBAAuB;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAP9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBAIjB,YAAY,EAAE,kBAAkB,EAChC,WAAW,EAAE,uBAAuB,EACpC,UAAU,EAAE,MAAM,EACV,WAAW,EAAE,mBAAmB;IAc7C,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO;IAmDrF,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAMhC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC;IAI3E,OAAO;IAKD,OAAO;CAOd"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,19 @@
1
- export * from '@dougongjs/core';
2
- export * from '@dougongjs/platform';
3
- export { batch, computed, observe, signal, type ObservationOwner, type ObservationTask, type Observer, type Readable, type ReadonlySignal, type Signal, } from '@dougongjs/reactive';
1
+ export { service, extensionPoint, event, optional, type ContractKind, type ContractValue, type Service, type ExtensionPoint, type Event, type OptionalService, type Requirement, } from './contracts/contracts.js';
2
+ export { createHost } from './execution/host.js';
3
+ export type { Host, HostOptions, ApplyResult } from './execution/host-api.js';
4
+ export type { HostStatus, InstallationState } from './contracts/status.js';
5
+ export type { ResolvedValue } from './internal/async-result.js';
6
+ export type { ChangeSet, Group, Installation, InstallationOptions, InstallationArguments, InstallationUpdate, InstallationOrigin, InitialInstallation, } from './composition/declarations.js';
7
+ export { definePlugin, type Plugin, type AnyPlugin, type PluginContext, type Requirements, type Provisions, type ResolvedRequirement, type ResolvedRequirements, type ProvidedServices, type InstanceMetadata, } from './composition/plugin.js';
8
+ export { captureConfiguration, type ConfigurationValue } from './composition/configuration.js';
9
+ export { describePlugin, type PluginDescriptor, type PluginConfigurationDescriptor, type PluginDescriptionOptions, } from './composition/plugin-description.js';
10
+ export type { Plan, PlanReport, BindingReport, ImpactReason, PlanOperation, DeclarationSnapshot, } from './composition/plan.js';
11
+ export type { HostSnapshot, InstallationSnapshot, GroupSnapshot, } from './inspection/diagnostics.js';
12
+ export type { SnapshotView } from './observation/snapshot-view.js';
13
+ export type { LifetimeContext, ChildLifetime, LifetimeOwnership, Task, Cleanup, BackgroundTask, LifetimePhase, LifetimeSnapshot, UnresolvedObligation, } from './lifetime/lifetime.js';
14
+ export type { Contribution, ContributionView, ContributionOperations, } from './contributions/contribution-store.js';
15
+ export type { EventListener, EventOperations, EventArguments } from './events/event-hub.js';
16
+ export { isLogger, type Logger } from './contracts/logging.js';
17
+ export { DougongError, ConfigurationValidationError, RecordedFailure, isError, isCancellationReason, type ErrorSnapshot, type ErrorDetails, } from './contracts/errors.js';
18
+ export { disposeSymbol, asyncDisposeSymbol, type Disposable, type AsyncDisposable, type Resource, type Awaitable, } from './contracts/resource.js';
4
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EACL,KAAK,EACL,QAAQ,EACR,OAAO,EACP,MAAM,EACN,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,MAAM,GACZ,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,cAAc,EACd,KAAK,EACL,QAAQ,EACR,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,KAAK,EACV,KAAK,eAAe,EACpB,KAAK,WAAW,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC9E,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC3E,YAAY,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,YAAY,EACV,SAAS,EACT,KAAK,EACL,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,YAAY,EACZ,KAAK,MAAM,EACX,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC/F,OAAO,EACL,cAAc,EACd,KAAK,gBAAgB,EACrB,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,GAC9B,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EACV,IAAI,EACJ,UAAU,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,YAAY,EACZ,oBAAoB,EACpB,aAAa,GACd,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,YAAY,EACV,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,IAAI,EACJ,OAAO,EACP,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EACL,YAAY,EACZ,4BAA4B,EAC5B,eAAe,EACf,OAAO,EACP,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,SAAS,GACf,MAAM,yBAAyB,CAAC"}