@dougongjs/core 0.2.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.
package/README.md CHANGED
@@ -99,7 +99,7 @@ Node.js ≥ 22; Chrome / Edge 119, Firefox 121 or Safari 17.4 for browsers and W
99
99
  - 文档站 / Documentation: https://tangerg.github.io/dougong/
100
100
  - 仓库 / Repository: https://github.com/Tangerg/dougong
101
101
 
102
- > 早期开发阶段(0.0.x),当前不承诺向后兼容。
103
- > Early development (0.0.x); no backward-compatibility promises yet.
102
+ > 早期 0.x 开发阶段,当前不承诺向后兼容。
103
+ > Early 0.x development; no backward-compatibility promises yet.
104
104
 
105
105
  MIT
@@ -1,15 +1,15 @@
1
- import { ChangeSet, Installation, InstallationUpdate } from './host-api';
1
+ import { ChangeSet, Installation, InstallationUpdate, PluginConfigArguments } from './host-api';
2
2
  import { InstallationRecord } from './installation';
3
- import { ErasedPlugin, Plugin, Provisions, Requirements } from './plugin';
3
+ import { AnyPlugin, NormalizedPlugin } from './plugin';
4
4
  type DeclarationUpdate = {
5
5
  readonly kind: "plugin";
6
- readonly plugin: ErasedPlugin;
6
+ readonly plugin: NormalizedPlugin;
7
7
  } | {
8
8
  readonly kind: "config";
9
9
  readonly config: unknown;
10
10
  } | {
11
11
  readonly kind: "plugin-and-config";
12
- readonly plugin: ErasedPlugin;
12
+ readonly plugin: NormalizedPlugin;
13
13
  readonly config: unknown;
14
14
  };
15
15
  export type ChangeOperation = {
@@ -24,16 +24,19 @@ export type ChangeOperation = {
24
24
  readonly installation: InstallationRecord;
25
25
  };
26
26
  interface ChangePort {
27
- create(plugin: ErasedPlugin, config: unknown): {
27
+ readonly create: (plugin: NormalizedPlugin, config: unknown) => {
28
28
  readonly record: InstallationRecord;
29
- readonly publicInstallation: object;
29
+ readonly facade: Installation<AnyPlugin>;
30
30
  };
31
- resolve(installation: object): InstallationRecord;
32
- execute(operations: ReadonlyArray<ChangeOperation>): Promise<void>;
33
- attach(installation: InstallationRecord): void;
34
- discard(installation: InstallationRecord, error: unknown): void;
31
+ readonly resolve: (installation: object) => InstallationRecord;
32
+ readonly execute: (operations: ReadonlyArray<ChangeOperation>) => Promise<void>;
33
+ readonly attach: (installation: InstallationRecord) => void;
34
+ readonly discard: (installation: InstallationRecord, error: unknown) => void;
35
35
  }
36
+ type DraftInstallationFactory = ChangePort["create"];
36
37
  export declare function discardChangeSetDraft(draft: ChangeSetDraft, error: unknown): void;
38
+ /** Stages explicit ownership into a shared draft without widening the public ChangeSet API. */
39
+ export declare function stageChangeSetInstallation<Declaration extends AnyPlugin>(draft: ChangeSetDraft, plugin: Declaration, config: unknown, create: DraftInstallationFactory): Installation<Declaration>;
37
40
  /**
38
41
  * Rich one-shot draft for the canonical mutation path. It owns target
39
42
  * uniqueness, Installation authority, sealing and commit idempotency before
@@ -42,9 +45,9 @@ export declare function discardChangeSetDraft(draft: ChangeSetDraft, error: unkn
42
45
  export declare class ChangeSetDraft implements ChangeSet {
43
46
  #private;
44
47
  constructor(port: ChangePort);
45
- install<Config, Requires extends Requirements, Provides extends Provisions, ConfigInput>(plugin: Plugin<Config, Requires, Provides, ConfigInput>, ...config: [ConfigInput] extends [void] ? [config?: ConfigInput] : [config: ConfigInput]): Installation<Config, Requires, Provides, ConfigInput>;
46
- update<Config, Requires extends Requirements, Provides extends Provisions, ConfigInput>(installation: Installation<Config, Requires, Provides, ConfigInput>, update: InstallationUpdate<Config, Requires, Provides, ConfigInput>): void;
47
- remove<Config, Requires extends Requirements, Provides extends Provisions, ConfigInput>(installation: Installation<Config, Requires, Provides, ConfigInput>): void;
48
+ install<Declaration extends AnyPlugin>(plugin: Declaration, ...config: PluginConfigArguments<Declaration>): Installation<Declaration>;
49
+ update<Declaration extends AnyPlugin>(installation: Installation<Declaration>, update: InstallationUpdate<Declaration>): void;
50
+ remove<Declaration extends AnyPlugin>(installation: Installation<Declaration>): void;
48
51
  commit(): Promise<void>;
49
52
  }
50
53
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"change-set.d.ts","sourceRoot":"","sources":["../src/change-set.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"change-set.d.ts","sourceRoot":"","sources":["../src/change-set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAAmB,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAElF,KAAK,iBAAiB,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACrD;IACE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B,CAAC;AAIN,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAA;CAAE,GACvE;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;CACzC,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAE3E,UAAU,UAAU;IAClB,QAAQ,CAAC,MAAM,EAAE,CACf,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,OAAO,KACZ;QACH,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;QACpC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;KAC1C,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,kBAAkB,CAAC;IAC/D,QAAQ,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,QAAQ,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC9E;AAED,KAAK,wBAAwB,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAmBrD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,QAE1E;AAED,+FAA+F;AAC/F,wBAAgB,0BAA0B,CAAC,WAAW,SAAS,SAAS,EACtE,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,wBAAwB,6BAKjC;AAED;;;;GAIG;AACH,qBAAa,cAAe,YAAW,SAAS;;gBAIlC,IAAI,EAAE,UAAU;IAS5B,OAAO,CAAC,WAAW,SAAS,SAAS,EACnC,MAAM,EAAE,WAAW,EACnB,GAAG,MAAM,EAAE,qBAAqB,CAAC,WAAW,CAAC,GAC5C,YAAY,CAAC,WAAW,CAAC;IAkB5B,MAAM,CAAC,WAAW,SAAS,SAAS,EAClC,YAAY,EAAE,YAAY,CAAC,WAAW,CAAC,EACvC,MAAM,EAAE,kBAAkB,CAAC,WAAW,CAAC;IA6BzC,MAAM,CAAC,WAAW,SAAS,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,WAAW,CAAC;IAK7E,MAAM;CAqEP"}
@@ -1,12 +1,27 @@
1
- declare const contractType: unique symbol;
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
+ }
2
8
  export type ContractKind = "service" | "extensionPoint" | "event";
3
9
  export interface ContractIdentity {
4
10
  readonly id: string;
5
11
  readonly kind: ContractKind;
6
12
  }
7
- interface Contract<T, K extends ContractKind> extends ContractIdentity {
13
+ interface ContractBrand {
14
+ readonly [contractBrand]: true;
15
+ }
16
+ interface Contract<T, K extends ContractKind> extends ContractIdentity, ContractBrand {
8
17
  readonly kind: K;
9
- readonly [contractType]: T;
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";
10
25
  }
11
26
  export interface Service<T> extends Contract<T, "service"> {
12
27
  }
@@ -14,12 +29,16 @@ export interface ExtensionPoint<T> extends Contract<T, "extensionPoint"> {
14
29
  }
15
30
  export interface Event<T> extends Contract<T, "event"> {
16
31
  }
17
- export interface OptionalService<T> {
32
+ interface OptionalServiceIdentity {
33
+ readonly [optionalBrand]: true;
18
34
  readonly kind: "optional";
35
+ readonly service: ServiceIdentity;
36
+ }
37
+ export interface OptionalService<T> extends OptionalServiceIdentity {
19
38
  readonly service: Service<T>;
20
- readonly [contractType]: T;
39
+ readonly [contractValueSlot]: ContractValueSlot<T>;
21
40
  }
22
- export type Requirement<T = unknown> = Service<T> | ExtensionPoint<T> | OptionalService<T>;
41
+ export type Requirement = ServiceIdentity | ExtensionPointIdentity | OptionalServiceIdentity;
23
42
  export type ContractValue<T> = T extends Contract<infer Value, ContractKind> ? Value : never;
24
43
  export declare function isContract(value: unknown, expected?: ContractKind): value is ContractIdentity;
25
44
  export declare function assertContract(value: unknown, expected?: ContractKind): asserts value is ContractIdentity;
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,YAAY,EAAE,OAAO,MAAwC,CAAC;AAEpE,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,gBAAgB,GAAG,OAAO,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC7B;AAED,UAAU,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,YAAY,CAAE,SAAQ,gBAAgB;IACpE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,OAAO,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC;CAAG;AAC7D,MAAM,WAAW,cAAc,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,EAAE,gBAAgB,CAAC;CAAG;AAC3E,MAAM,WAAW,KAAK,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;CAAG;AAEzD,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,QAAQ,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;CAC5B;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;AAE3F,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,MAAM,KAAK,EAAE,YAAY,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;AAgB7F,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,YAAY,GAAG,KAAK,IAAI,gBAAgB,CAY7F;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,QAAQ,CAAC,EAAE,YAAY,GACtB,OAAO,CAAC,KAAK,IAAI,gBAAgB,CAGnC;AAQD,wBAAgB,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAEjD;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAE7C;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAE/D;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAKjE;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GACrC,KAAK,IAAI,eAAe,CAAC,CAAC,CAAC,CAI7B"}
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,14 @@
1
- import { ExtensionPoint } from './contracts';
1
+ import { Requirement } from './contracts';
2
2
  import { disposeSymbol, Disposable, Publication, StagedResource } from './resource';
3
3
  import { SnapshotView } from './snapshot-view';
4
4
  export interface Contribution<T> extends Disposable {
5
- update(value: T): void;
5
+ readonly update: (value: T) => void;
6
6
  }
7
7
  export type ContributionView<T> = SnapshotView<ReadonlyMap<string, T>>;
8
8
  export type ContributionLeaseKind = "view" | "subscription";
9
+ type ExtensionPointIdentity = Extract<Requirement, {
10
+ readonly kind: "extensionPoint";
11
+ }>;
9
12
  declare class ContributionRecord<T> implements StagedResource<Contribution<T>> {
10
13
  #private;
11
14
  readonly handle: Contribution<T>;
@@ -19,7 +22,7 @@ declare class ContributionRecord<T> implements StagedResource<Contribution<T>> {
19
22
  export declare class ContributionStore<T> {
20
23
  #private;
21
24
  constructor(invalidate: (store: ContributionStore<unknown>) => void, report: (error: unknown) => void, releaseIfUnused: (store: ContributionStore<unknown>) => void);
22
- stage(ownerId: string, key: string, value: T, release: (publication: Publication) => void): ContributionRecord<T>;
25
+ stage(installationId: string, key: string, value: T, release: (publication: Publication) => void): ContributionRecord<T>;
23
26
  view(own: (resource: Disposable, kind: ContributionLeaseKind) => () => void): ContributionView<T>;
24
27
  /** A stable view explicitly owned by the Host for graph-external consumers. */
25
28
  hostView(): ContributionView<T>;
@@ -39,8 +42,8 @@ declare class ContributionSubscription implements Disposable {
39
42
  export declare class ContributionRegistry {
40
43
  #private;
41
44
  constructor(report: (error: unknown) => void);
42
- get<T>(token: ExtensionPoint<T>): ContributionStore<T>;
43
- view<T>(token: ExtensionPoint<T>): ContributionView<T>;
45
+ get<T = unknown>(token: ExtensionPointIdentity): ContributionStore<T>;
46
+ view<T = unknown>(token: ExtensionPointIdentity): ContributionView<T>;
44
47
  beginBatch(): void;
45
48
  endBatch(): void;
46
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"contribution-store.d.ts","sourceRoot":"","sources":["../src/contribution-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contribution-store.d.ts","sourceRoot":"","sources":["../src/contribution-store.ts"],"names":[],"mappings":"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"}
package/dist/engine.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { ExtensionPoint, OptionalService, Service } from './contracts';
2
2
  import { InstallationGraph } from './installation-graph';
3
3
  import { InstallationRecord } from './installation';
4
- import { Logger } from './lifetime';
4
+ import { InstanceCoordinatorPort } from './instance-coordinator';
5
5
  export type TransitionOutcome = {
6
6
  readonly kind: "committed";
7
7
  readonly affected: ReadonlySet<InstallationRecord>;
@@ -10,17 +10,11 @@ export type TransitionOutcome = {
10
10
  readonly affected: ReadonlySet<InstallationRecord>;
11
11
  readonly error: unknown;
12
12
  };
13
- interface EngineOptions {
14
- readonly hostName: string;
15
- readonly logger: Logger;
16
- readonly isInstalled: (installationId: string) => boolean;
17
- readonly report: (error: unknown) => void;
18
- }
19
13
  type ServiceAvailability = "available" | "unavailable";
20
14
  /** Owns the committed plan and its commit, rollback and fail-closed transitions. */
21
15
  export declare class Engine {
22
16
  #private;
23
- constructor(options: EngineOptions);
17
+ constructor(port: InstanceCoordinatorPort);
24
18
  get hasCommittedPlan(): boolean;
25
19
  get<T>(requirement: Service<T> | OptionalService<T>, availability: ServiceAvailability): T | undefined;
26
20
  contributions<T>(token: ExtensionPoint<T>): import('./contribution-store').ContributionView<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,OAAO,EACb,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAA;CAAE,GAClF;IACE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACnD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;AAEN,UAAU,aAAa;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1D,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC3C;AAED,KAAK,mBAAmB,GAAG,WAAW,GAAG,aAAa,CAAC;AAEvD,oFAAoF;AACpF,qBAAa,MAAM;;gBAKL,OAAO,EAAE,aAAa;IAIlC,IAAI,gBAAgB,YAEnB;IAED,GAAG,CAAC,CAAC,EACH,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,EAC5C,YAAY,EAAE,mBAAmB,GAChC,CAAC,GAAG,SAAS;IAoBhB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;IAMzC,SAAS,CAAC,aAAa,EAAE,QAAQ,CAAC,kBAAkB,CAAC;IAI/C,KAAK,CAAC,IAAI,EAAE,iBAAiB;IAY7B,IAAI;IAMJ,UAAU,CACd,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,WAAW,CAAC,kBAAkB,CAAC,EACxC,mBAAmB,EAAE,MAAM,IAAI,GAC9B,OAAO,CAAC,iBAAiB,CAAC;CAsI9B"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,OAAO,EACb,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAA;CAAE,GAClF;IACE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACnD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;AAEN,KAAK,mBAAmB,GAAG,WAAW,GAAG,aAAa,CAAC;AAEvD,oFAAoF;AACpF,qBAAa,MAAM;;gBAKL,IAAI,EAAE,uBAAuB;IAIzC,IAAI,gBAAgB,YAEnB;IAED,GAAG,CAAC,CAAC,EACH,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,EAC5C,YAAY,EAAE,mBAAmB,GAChC,CAAC,GAAG,SAAS;IAoBhB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;IAMzC,SAAS,CAAC,aAAa,EAAE,QAAQ,CAAC,kBAAkB,CAAC;IAI/C,KAAK,CAAC,IAAI,EAAE,iBAAiB;IAY7B,IAAI;IAQJ,UAAU,CACd,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,WAAW,CAAC,kBAAkB,CAAC,EACxC,mBAAmB,EAAE,MAAM,IAAI,GAC9B,OAAO,CAAC,iBAAiB,CAAC;CAsI9B"}
package/dist/errors.d.ts CHANGED
@@ -1,9 +1,18 @@
1
1
  import { StandardSchemaV1 } from '@standard-schema/spec';
2
2
  export declare class DougongError extends Error {
3
- readonly code: string;
4
3
  name: string;
4
+ readonly code: string;
5
5
  constructor(code: string, message: string, options?: ErrorOptions);
6
6
  }
7
+ /**
8
+ * A primitive-only record of an Error for terminal objects that must not retain
9
+ * the original stack, cause, subclass fields or the object graph behind them.
10
+ */
11
+ export declare class ErrorSummary {
12
+ #private;
13
+ constructor(error: Error);
14
+ restore(createCodedError?: (code: string, message: string) => Error): TypeError;
15
+ }
7
16
  /** Preserves explicit Error values and classifies non-Error rejection reasons. */
8
17
  export declare function normalizeFailure(error: unknown, code: string, message: string): Error;
9
18
  /** Classifies the exact signal reason or a conventional AbortError, but only after abort. */
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,qBAAa,YAAa,SAAQ,KAAK;aAInB,IAAI,EAAE,MAAM;IAHrB,IAAI,SAAkB;gBAGb,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,YAAY;CAIzB;AAKD,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAKrF;AAED,6FAA6F;AAC7F,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,WAcvE;AAED,qBAAa,qBAAsB,SAAQ,YAAY;IAC5C,IAAI,SAA2B;IACxC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAE3C,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC;CAQ1D"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,qBAAa,YAAa,SAAQ,KAAK;IAC5B,IAAI,SAAkB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAQlE;AAeD;;;GAGG;AACH,qBAAa,YAAY;;gBAGX,KAAK,EAAE,KAAK;IAsBxB,OAAO,CACL,gBAAgB,GAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,KACpB;CAepC;AAuBD,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAKrF;AAED,6FAA6F;AAC7F,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,WAcvE;AAED,qBAAa,qBAAsB,SAAQ,YAAY;IAC5C,IAAI,SAA2B;IACxC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAE3C,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC;CAQ1D"}
@@ -1,33 +1,33 @@
1
- import { Group, Installation } from './host-api';
1
+ import { Group, Installation, PluginConfigArguments } from './host-api';
2
2
  import { ChangeSetDraft, ChangeOperation } from './change-set';
3
3
  import { GroupConfigurationSession, GroupNode } from './group';
4
4
  import { InstallationRecord } from './installation';
5
5
  import { LifecycleStatus } from './lifecycle-status';
6
- import { ErasedPlugin, Plugin, Provisions, Requirements } from './plugin';
6
+ import { AnyPlugin, NormalizedPlugin } from './plugin';
7
7
  export interface GroupCoordinatorPort {
8
- installations(): Iterable<InstallationRecord>;
9
- createDraft(group: GroupNode, plugin: ErasedPlugin, config: unknown): {
8
+ readonly installations: () => Iterable<InstallationRecord>;
9
+ readonly createDraft: (group: GroupNode, plugin: NormalizedPlugin, config: unknown) => {
10
10
  readonly record: InstallationRecord;
11
- readonly publicInstallation: object;
11
+ readonly facade: Installation<AnyPlugin>;
12
12
  };
13
- resolveInstallation(installation: object): InstallationRecord;
14
- executeChanges(group: GroupNode, operations: ReadonlyArray<ChangeOperation>): Promise<void>;
15
- attachInstallation(installation: InstallationRecord): void;
16
- discardInstallation(installation: InstallationRecord, error: unknown): void;
17
- runExclusive(operation: () => Promise<void>): Promise<void>;
18
- removeInstallations(operations: ReadonlyArray<ChangeOperation>): Promise<void>;
19
- notifyChanged(): void;
13
+ readonly resolveInstallation: (installation: object) => InstallationRecord;
14
+ readonly executeChanges: (group: GroupNode, operations: ReadonlyArray<ChangeOperation>) => Promise<void>;
15
+ readonly attachInstallation: (installation: InstallationRecord) => void;
16
+ readonly discardInstallation: (installation: InstallationRecord, error: unknown) => void;
17
+ readonly runExclusive: (operation: () => Promise<void>) => Promise<void>;
18
+ readonly removeInstallations: (operations: ReadonlyArray<ChangeOperation>) => Promise<void>;
19
+ readonly notifyChanged: () => void;
20
20
  }
21
- declare class GroupImpl implements Group {
21
+ declare class GroupFacade implements Group {
22
22
  #private;
23
23
  constructor(coordinator: GroupCoordinator, node: GroupNode, configuration?: GroupConfigurationSession<ChangeSetDraft>);
24
24
  get id(): string;
25
25
  get name(): string;
26
26
  get status(): LifecycleStatus;
27
27
  ready(): Promise<void>;
28
- install<Config, Requires extends Requirements, Provides extends Provisions, ConfigInput>(plugin: Plugin<Config, Requires, Provides, ConfigInput>, ...config: [ConfigInput] extends [void] ? [config?: ConfigInput] : [config: ConfigInput]): Installation<Config, Requires, Provides, ConfigInput>;
28
+ install<Declaration extends AnyPlugin>(plugin: Declaration, ...config: PluginConfigArguments<Declaration>): Installation<Declaration>;
29
29
  change(): ChangeSetDraft;
30
- group(name: string, configure: (group: Group) => void): GroupImpl;
30
+ group(name: string, configure: (group: Group) => void): GroupFacade;
31
31
  remove(): Promise<void>;
32
32
  }
33
33
  /** Owns the complete structural Group model and compiles it to Installation changes. */
@@ -36,9 +36,10 @@ export declare class GroupCoordinator {
36
36
  readonly root: GroupNode;
37
37
  constructor(rootName: string, port: GroupCoordinatorPort);
38
38
  nodes(): GroupNode[];
39
- install<Config, Requires extends Requirements, Provides extends Provisions, ConfigInput>(group: GroupNode, plugin: Plugin<Config, Requires, Provides, ConfigInput>, ...config: [ConfigInput] extends [void] ? [config?: ConfigInput] : [config: ConfigInput]): Installation<Config, Requires, Provides, ConfigInput>;
39
+ install<Declaration extends AnyPlugin>(group: GroupNode, plugin: Declaration, ...config: PluginConfigArguments<Declaration>): Installation<Declaration>;
40
+ stageConfigurationInstall<Declaration extends AnyPlugin>(group: GroupNode, configuration: GroupConfigurationSession<ChangeSetDraft>, plugin: Declaration, ...config: PluginConfigArguments<Declaration>): Installation<Declaration>;
40
41
  change(group: GroupNode, tracking?: "immediate" | "deferred"): ChangeSetDraft;
41
- create(parent: GroupNode, name: string, configure: (group: Group) => void, inherited?: GroupConfigurationSession<ChangeSetDraft>): GroupImpl;
42
+ create(parent: GroupNode, name: string, configure: (group: Group) => void, inherited?: GroupConfigurationSession<ChangeSetDraft>): GroupFacade;
42
43
  ready(group: GroupNode): Promise<void>;
43
44
  status(group: GroupNode): LifecycleStatus;
44
45
  remove(group: GroupNode): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"group-coordinator.d.ts","sourceRoot":"","sources":["../src/group-coordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"group-coordinator.d.ts","sourceRoot":"","sources":["../src/group-coordinator.ts"],"names":[],"mappings":"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"}
@@ -5,13 +5,24 @@ import { AnyPlugin, Plugin, Provisions, Requirements } from './plugin';
5
5
  import { ExtensionPoint, OptionalService, Service } from './contracts';
6
6
  import { ContributionView } from './contribution-store';
7
7
  import { SnapshotView } from './snapshot-view';
8
- export type InstallationUpdate<Config, Requires extends Requirements = Requirements, Provides extends Provisions = Provisions, ConfigInput = Config> = {
8
+ import { Awaitable } from './resource';
9
+ declare const installationBrand: unique symbol;
10
+ type DeclaredInstallationUpdate<Config, Requires extends Requirements, Provides extends Provisions, ConfigInput> = {
9
11
  readonly plugin: Plugin<Config, Requires, Provides, ConfigInput>;
10
12
  readonly config?: ConfigInput;
11
13
  } | {
12
14
  readonly plugin?: never;
13
15
  readonly config: ConfigInput;
14
16
  };
17
+ type AnyPluginInstallationUpdate = {
18
+ readonly plugin: AnyPlugin;
19
+ readonly config?: unknown;
20
+ } | {
21
+ readonly plugin?: never;
22
+ readonly config: unknown;
23
+ };
24
+ export type InstallationUpdate<Declaration extends AnyPlugin = AnyPlugin> = Declaration extends Plugin<infer Config, infer Requires, infer Provides, infer ConfigInput> ? DeclaredInstallationUpdate<Config, Requires, Provides, ConfigInput> : AnyPluginInstallationUpdate;
25
+ export type PluginConfigArguments<Declaration extends AnyPlugin> = Declaration extends Plugin<infer _Config, infer _Requires, infer _Provides, infer ConfigInput> ? [ConfigInput] extends [void] ? [config?: ConfigInput] : [config: ConfigInput] : [config?: unknown];
15
26
  /**
16
27
  * One installed Plugin, as a stable identity. The declaration behind it may be
17
28
  * replaced; this identity and its position in the ownership tree may not.
@@ -27,30 +38,28 @@ export type InstallationUpdate<Config, Requires extends Requirements = Requireme
27
38
  * }
28
39
  * ```
29
40
  */
30
- export interface Installation<Config = unknown, Requires extends Requirements = Requirements, Provides extends Provisions = Provisions, ConfigInput = Config> {
41
+ export interface Installation<Declaration extends AnyPlugin = AnyPlugin> {
42
+ readonly [installationBrand]: (declaration: Declaration) => Declaration;
31
43
  readonly id: string;
32
44
  readonly groupId: string;
33
45
  readonly status: LifecycleStatus;
34
46
  ready(): Promise<void>;
35
- update(update: InstallationUpdate<Config, Requires, Provides, ConfigInput>): Promise<void>;
47
+ readonly update: (update: InstallationUpdate<Declaration>) => Promise<void>;
36
48
  remove(): Promise<void>;
37
49
  }
38
- export interface ChangeSet {
39
- install<Config, Requires extends Requirements, Provides extends Provisions, ConfigInput>(plugin: Plugin<Config, Requires, Provides, ConfigInput>, ...config: [ConfigInput] extends [void] ? [config?: ConfigInput] : [config: ConfigInput]): Installation<Config, Requires, Provides, ConfigInput>;
40
- install(plugin: AnyPlugin, config?: unknown): Installation;
41
- update<Config, Requires extends Requirements, Provides extends Provisions, ConfigInput>(installation: Installation<Config, Requires, Provides, ConfigInput>, update: InstallationUpdate<Config, Requires, Provides, ConfigInput>): void;
42
- remove<Config, Requires extends Requirements, Provides extends Provisions, ConfigInput>(installation: Installation<Config, Requires, Provides, ConfigInput>): void;
50
+ export interface ChangeSet extends Pick<Installer, "install"> {
51
+ update<Declaration extends AnyPlugin>(installation: Installation<Declaration>, update: InstallationUpdate<Declaration>): void;
52
+ remove<Declaration extends AnyPlugin>(installation: Installation<Declaration>): void;
43
53
  commit(): Promise<void>;
44
54
  }
45
55
  export interface HostOptions {
46
56
  readonly name?: string;
47
57
  readonly logger?: Logger;
48
- readonly onError?: (error: unknown) => void;
58
+ readonly onError?: (error: unknown) => Awaitable<void>;
49
59
  }
50
60
  /** Capability to install into an ownership position without controlling Host execution. */
51
61
  export interface Installer {
52
- install<Config, Requires extends Requirements, Provides extends Provisions, ConfigInput>(plugin: Plugin<Config, Requires, Provides, ConfigInput>, ...config: [ConfigInput] extends [void] ? [config?: ConfigInput] : [config: ConfigInput]): Installation<Config, Requires, Provides, ConfigInput>;
53
- install(plugin: AnyPlugin, config?: unknown): Installation;
62
+ install<Declaration extends AnyPlugin>(plugin: Declaration, ...config: PluginConfigArguments<Declaration>): Installation<Declaration>;
54
63
  group(name: string, configure: (group: Group) => void): Group;
55
64
  change(): ChangeSet;
56
65
  }
@@ -72,4 +81,5 @@ export interface Host extends Installer {
72
81
  start(): Promise<void>;
73
82
  stop(): Promise<void>;
74
83
  }
84
+ export {};
75
85
  //# sourceMappingURL=host-api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"host-api.d.ts","sourceRoot":"","sources":["../src/host-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host-api.d.ts","sourceRoot":"","sources":["../src/host-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,CAAC,MAAM,iBAAiB,EAAE,OAAO,MAAM,CAAC;AAE/C,KAAK,0BAA0B,CAC7B,MAAM,EACN,QAAQ,SAAS,YAAY,EAC7B,QAAQ,SAAS,UAAU,EAC3B,WAAW,IAET;IACE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B,GACD;IACE,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B,CAAC;AAEN,KAAK,2BAA2B,GAC5B;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACzD;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAE1D,MAAM,MAAM,kBAAkB,CAAC,WAAW,SAAS,SAAS,GAAG,SAAS,IACtE,WAAW,SAAS,MAAM,CAAC,MAAM,MAAM,EAAE,MAAM,QAAQ,EAAE,MAAM,QAAQ,EAAE,MAAM,WAAW,CAAC,GACvF,0BAA0B,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,GACnE,2BAA2B,CAAC;AAElC,MAAM,MAAM,qBAAqB,CAAC,WAAW,SAAS,SAAS,IAC7D,WAAW,SAAS,MAAM,CAAC,MAAM,OAAO,EAAE,MAAM,SAAS,EAAE,MAAM,SAAS,EAAE,MAAM,WAAW,CAAC,GAC1F,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,GAC1B,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,GACtB,CAAC,MAAM,EAAE,WAAW,CAAC,GACvB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;AAEzB;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,YAAY,CAAC,WAAW,SAAS,SAAS,GAAG,SAAS;IACrE,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,WAAW,CAAC;IACxE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,kBAAkB,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;IAC3D,MAAM,CAAC,WAAW,SAAS,SAAS,EAClC,YAAY,EAAE,YAAY,CAAC,WAAW,CAAC,EACvC,MAAM,EAAE,kBAAkB,CAAC,WAAW,CAAC,GACtC,IAAI,CAAC;IACR,MAAM,CAAC,WAAW,SAAS,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IACrF,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;CACxD;AAED,2FAA2F;AAC3F,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,WAAW,SAAS,SAAS,EACnC,MAAM,EAAE,WAAW,EACnB,GAAG,MAAM,EAAE,qBAAqB,CAAC,WAAW,CAAC,GAC5C,YAAY,CAAC,WAAW,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC;IAC9D,MAAM,IAAI,SAAS,CAAC;CACrB;AAED,sFAAsF;AACtF,MAAM,WAAW,KAAM,SAAQ,SAAS;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,IAAK,SAAQ,SAAS;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;IACjD,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7B,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IACjD,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAChE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAoB,MAAM,YAAY,CAAC;AAetE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACnG,YAAY,EACV,IAAI,EACJ,WAAW,EACX,SAAS,EACT,SAAS,EACT,KAAK,EACL,YAAY,EACZ,kBAAkB,GACnB,MAAM,YAAY,CAAC;AA4OpB,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAEtD"}
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAA2C,MAAM,YAAY,CAAC;AAe7F,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACnG,YAAY,EACV,IAAI,EACJ,WAAW,EACX,SAAS,EACT,SAAS,EACT,KAAK,EACL,YAAY,EACZ,kBAAkB,GACnB,MAAM,YAAY,CAAC;AA0OpB,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAEtD"}
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@ export { definePlugin, type AnyPlugin, type Awaitable, type PluginContext, type
4
4
  export { isLogger, type BackgroundTask, type Cleanup, type LifetimeContext, type LifetimeOperations, type LifetimePhase, type LifetimeSnapshot, type Logger, type InstanceMeta, type Task, } from './lifetime';
5
5
  export type { Contribution, ContributionView } from './contribution-store';
6
6
  export type { EventListener } from './event-hub';
7
- export { ConfigValidationError, DougongError, isCancellationReason } from './errors';
7
+ export { ConfigValidationError, DougongError, ErrorSummary, isCancellationReason } from './errors';
8
8
  export { asyncDisposeSymbol, disposeSymbol, type AsyncDisposable, type Disposable, } from './resource';
9
9
  export { assertPlainRecord } from './record';
10
10
  export { ReadonlyMapSnapshot } from './readonly-map';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,cAAc,EACd,QAAQ,EACR,OAAO,EACP,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,OAAO,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,UAAU,EACV,KAAK,IAAI,EACT,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACrB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,YAAY,EACZ,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,QAAQ,EACR,KAAK,cAAc,EACnB,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,IAAI,GACV,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,KAAK,eAAe,EACpB,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,cAAc,EACd,QAAQ,EACR,OAAO,EACP,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,OAAO,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,UAAU,EACV,KAAK,IAAI,EACT,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACrB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,YAAY,EACZ,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,QAAQ,EACR,KAAK,cAAc,EACnB,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,IAAI,GACV,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACnG,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,KAAK,eAAe,EACpB,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC"}