@mannyc1/ts-release 0.0.1 → 0.0.2

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 (117) hide show
  1. package/ARCHITECTURE.md +53 -0
  2. package/README.md +177 -34
  3. package/SPEC.md +8 -1
  4. package/dist/cli/command.d.ts +1 -1
  5. package/dist/cli/command.d.ts.map +1 -1
  6. package/dist/cli/command.js +101 -53
  7. package/dist/cli/command.js.map +1 -1
  8. package/dist/cli/main.js +3 -9
  9. package/dist/cli/main.js.map +1 -1
  10. package/dist/domain/operation.d.ts.map +1 -1
  11. package/dist/domain/operation.js +31 -1
  12. package/dist/domain/operation.js.map +1 -1
  13. package/dist/domain/remote-state.d.ts +90 -0
  14. package/dist/domain/remote-state.d.ts.map +1 -0
  15. package/dist/domain/remote-state.js +85 -0
  16. package/dist/domain/remote-state.js.map +1 -0
  17. package/dist/domain/status.d.ts +43 -0
  18. package/dist/domain/status.d.ts.map +1 -0
  19. package/dist/domain/status.js +50 -0
  20. package/dist/domain/status.js.map +1 -0
  21. package/dist/domain/target.d.ts +32 -2
  22. package/dist/domain/target.d.ts.map +1 -1
  23. package/dist/domain/target.js +35 -2
  24. package/dist/domain/target.js.map +1 -1
  25. package/dist/host/host.d.ts +7 -23
  26. package/dist/host/host.d.ts.map +1 -1
  27. package/dist/host/host.js +3 -22
  28. package/dist/host/host.js.map +1 -1
  29. package/dist/host/http-live.d.ts +1 -2
  30. package/dist/host/http-live.d.ts.map +1 -1
  31. package/dist/host/http-live.js +15 -9
  32. package/dist/host/http-live.js.map +1 -1
  33. package/dist/host/platform.d.ts +10 -0
  34. package/dist/host/platform.d.ts.map +1 -0
  35. package/dist/host/platform.js +121 -0
  36. package/dist/host/platform.js.map +1 -0
  37. package/dist/host/test.d.ts +6 -3
  38. package/dist/host/test.d.ts.map +1 -1
  39. package/dist/host/test.js +111 -25
  40. package/dist/host/test.js.map +1 -1
  41. package/dist/planner/artifact-inventory.d.ts +9 -0
  42. package/dist/planner/artifact-inventory.d.ts.map +1 -0
  43. package/dist/planner/artifact-inventory.js +66 -0
  44. package/dist/planner/artifact-inventory.js.map +1 -0
  45. package/dist/planner/create-release-plan.d.ts +1 -1
  46. package/dist/planner/create-release-plan.d.ts.map +1 -1
  47. package/dist/planner/errors.d.ts +37 -1
  48. package/dist/planner/errors.d.ts.map +1 -1
  49. package/dist/planner/errors.js +30 -0
  50. package/dist/planner/errors.js.map +1 -1
  51. package/dist/planner/evidence-recorder.d.ts +13 -8
  52. package/dist/planner/evidence-recorder.d.ts.map +1 -1
  53. package/dist/planner/evidence-recorder.js +98 -18
  54. package/dist/planner/evidence-recorder.js.map +1 -1
  55. package/dist/planner/executor.d.ts +31 -19
  56. package/dist/planner/executor.d.ts.map +1 -1
  57. package/dist/planner/executor.js +19 -6
  58. package/dist/planner/executor.js.map +1 -1
  59. package/dist/planner/normalize-release.d.ts +2 -2
  60. package/dist/planner/normalize-release.d.ts.map +1 -1
  61. package/dist/planner/normalize-release.js +40 -43
  62. package/dist/planner/normalize-release.js.map +1 -1
  63. package/dist/planner/reconcile.d.ts +17 -0
  64. package/dist/planner/reconcile.d.ts.map +1 -0
  65. package/dist/planner/reconcile.js +280 -0
  66. package/dist/planner/reconcile.js.map +1 -0
  67. package/dist/planner/release-eligibility.d.ts +33 -0
  68. package/dist/planner/release-eligibility.d.ts.map +1 -0
  69. package/dist/planner/release-eligibility.js +172 -0
  70. package/dist/planner/release-eligibility.js.map +1 -0
  71. package/dist/planner/render-plan.d.ts.map +1 -1
  72. package/dist/planner/render-plan.js +21 -0
  73. package/dist/planner/render-plan.js.map +1 -1
  74. package/dist/planner/status.d.ts +40 -0
  75. package/dist/planner/status.d.ts.map +1 -0
  76. package/dist/planner/status.js +336 -0
  77. package/dist/planner/status.js.map +1 -0
  78. package/dist/runtime/bun.d.ts +9 -0
  79. package/dist/runtime/bun.d.ts.map +1 -0
  80. package/dist/runtime/bun.js +10 -0
  81. package/dist/runtime/bun.js.map +1 -0
  82. package/dist/targets/github.d.ts.map +1 -1
  83. package/dist/targets/github.js +17 -13
  84. package/dist/targets/github.js.map +1 -1
  85. package/dist/targets/npm.d.ts +2 -2
  86. package/dist/targets/npm.d.ts.map +1 -1
  87. package/dist/targets/npm.js +74 -14
  88. package/dist/targets/npm.js.map +1 -1
  89. package/dist/version.d.ts +2 -0
  90. package/dist/version.d.ts.map +1 -0
  91. package/dist/version.js +2 -0
  92. package/dist/version.js.map +1 -0
  93. package/dist/workflows/config.d.ts +81 -0
  94. package/dist/workflows/config.d.ts.map +1 -0
  95. package/dist/workflows/config.js +191 -0
  96. package/dist/workflows/config.js.map +1 -0
  97. package/dist/workflows/evidence.d.ts +21 -0
  98. package/dist/workflows/evidence.d.ts.map +1 -0
  99. package/dist/workflows/evidence.js +45 -0
  100. package/dist/workflows/evidence.js.map +1 -0
  101. package/dist/workflows/live.d.ts +7 -0
  102. package/dist/workflows/live.d.ts.map +1 -0
  103. package/dist/workflows/live.js +5 -0
  104. package/dist/workflows/live.js.map +1 -0
  105. package/examples/README.md +6 -3
  106. package/examples/multi-target/release.config.json +6 -1
  107. package/examples/npm-first-publish/release.config.json +32 -0
  108. package/examples/npm-only/release.config.json +6 -1
  109. package/package.json +31 -9
  110. package/dist/cli/programmatic.d.ts +0 -25
  111. package/dist/cli/programmatic.d.ts.map +0 -1
  112. package/dist/cli/programmatic.js +0 -53
  113. package/dist/cli/programmatic.js.map +0 -1
  114. package/dist/host/bun.d.ts +0 -9
  115. package/dist/host/bun.d.ts.map +0 -1
  116. package/dist/host/bun.js +0 -156
  117. package/dist/host/bun.js.map +0 -1
@@ -0,0 +1,50 @@
1
+ import * as Schema from "effect/Schema";
2
+ import { OperationId, OperationRisk } from "./operation.js";
3
+ import { TargetId } from "./target.js";
4
+ export const ReleaseWorkflowPhase = Schema.Literals(["render", "validation", "execution", "verification"]);
5
+ export const ReleaseOperationStatus = Schema.Literals([
6
+ "pending",
7
+ "passed",
8
+ "warning",
9
+ "skipped",
10
+ "failed",
11
+ "blocked"
12
+ ]);
13
+ export const ReleaseOverallStatus = Schema.Literals([
14
+ "not-started",
15
+ "in-progress",
16
+ "failed",
17
+ "blocked",
18
+ "complete"
19
+ ]);
20
+ export const ReleaseResumeAction = Schema.Literals(["skip", "run", "retry-read-only", "block"]);
21
+ export class ReleaseOperationStatusRecord extends Schema.Class("ReleaseOperationStatusRecord")({
22
+ operationId: OperationId,
23
+ targetId: Schema.optionalKey(TargetId),
24
+ phase: ReleaseWorkflowPhase,
25
+ risk: OperationRisk,
26
+ status: ReleaseOperationStatus,
27
+ resumeAction: ReleaseResumeAction,
28
+ evidenceId: Schema.optionalKey(Schema.String),
29
+ reason: Schema.optionalKey(Schema.String)
30
+ }) {
31
+ }
32
+ export class ReleasePhaseStatusRecord extends Schema.Class("ReleasePhaseStatusRecord")({
33
+ phase: ReleaseWorkflowPhase,
34
+ status: ReleaseOperationStatus,
35
+ completed: Schema.Number,
36
+ total: Schema.Number
37
+ }) {
38
+ }
39
+ export class ReleaseStatusReport extends Schema.Class("ReleaseStatusReport")({
40
+ schemaVersion: Schema.Literal("release-status/v1"),
41
+ releaseName: Schema.String,
42
+ releaseVersion: Schema.String,
43
+ overallStatus: ReleaseOverallStatus,
44
+ canResume: Schema.Boolean,
45
+ evidenceDirectory: Schema.String,
46
+ phases: Schema.Array(ReleasePhaseStatusRecord),
47
+ operations: Schema.Array(ReleaseOperationStatusRecord)
48
+ }) {
49
+ }
50
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/domain/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAItC,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC,CAAA;AAG1G,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,QAAQ,CAAC;IACpD,SAAS;IACT,QAAQ;IACR,SAAS;IACT,SAAS;IACT,QAAQ;IACR,SAAS;CACV,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,QAAQ,CAAC;IAClD,aAAa;IACb,aAAa;IACb,QAAQ;IACR,SAAS;IACT,UAAU;CACX,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAA;AAG/F,MAAM,OAAO,4BAA6B,SAAQ,MAAM,CAAC,KAAK,CAC5D,8BAA8B,CAC/B,CAAC;IACA,WAAW,EAAE,WAAW;IACxB,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;IACtC,KAAK,EAAE,oBAAoB;IAC3B,IAAI,EAAE,aAAa;IACnB,MAAM,EAAE,sBAAsB;IAC9B,YAAY,EAAE,mBAAmB;IACjC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;CAC1C,CAAC;CAAG;AAEL,MAAM,OAAO,wBAAyB,SAAQ,MAAM,CAAC,KAAK,CAA2B,0BAA0B,CAAC,CAAC;IAC/G,KAAK,EAAE,oBAAoB;IAC3B,MAAM,EAAE,sBAAsB;IAC9B,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,KAAK,EAAE,MAAM,CAAC,MAAM;CACrB,CAAC;CAAG;AAEL,MAAM,OAAO,mBAAoB,SAAQ,MAAM,CAAC,KAAK,CAAsB,qBAAqB,CAAC,CAAC;IAChG,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC;IAClD,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,cAAc,EAAE,MAAM,CAAC,MAAM;IAC7B,aAAa,EAAE,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC,OAAO;IACzB,iBAAiB,EAAE,MAAM,CAAC,MAAM;IAChC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC;IAC9C,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC;CACvD,CAAC;CAAG"}
@@ -2,7 +2,7 @@ import * as Schema from "effect/Schema";
2
2
  export type * from "../types/effect-internal.js";
3
3
  export declare const TargetId: Schema.String;
4
4
  export type TargetId = typeof TargetId.Type;
5
- export declare const TargetAuthRequirement: Schema.Literals<readonly ["none", "env-token", "cli-auth"]>;
5
+ export declare const TargetAuthRequirement: Schema.Literals<readonly ["none", "env-token", "cli-auth", "trusted-publishing"]>;
6
6
  export type TargetAuthRequirement = typeof TargetAuthRequirement.Type;
7
7
  export declare const TargetDryRunSupport: Schema.Literals<readonly ["none", "native", "simulated"]>;
8
8
  export type TargetDryRunSupport = typeof TargetDryRunSupport.Type;
@@ -14,11 +14,23 @@ export declare const TargetValidationStrategy: Schema.Literals<readonly ["native
14
14
  export type TargetValidationStrategy = typeof TargetValidationStrategy.Type;
15
15
  export declare const NpmAccess: Schema.Literals<readonly ["public", "restricted"]>;
16
16
  export type NpmAccess = typeof NpmAccess.Type;
17
+ export declare const NpmTrustedPublishingProvider: Schema.Literals<readonly ["github-actions"]>;
18
+ export type NpmTrustedPublishingProvider = typeof NpmTrustedPublishingProvider.Type;
19
+ declare const NpmTrustedPublishingConfig_base: Schema.Class<NpmTrustedPublishingConfig, Schema.Struct<{
20
+ readonly provider: Schema.Literals<readonly ["github-actions"]>;
21
+ readonly workflow: Schema.String;
22
+ readonly packageExists: Schema.Literal<true>;
23
+ readonly verifyPackageExists: Schema.optionalKey<Schema.Boolean>;
24
+ }>, {}>;
25
+ export declare class NpmTrustedPublishingConfig extends NpmTrustedPublishingConfig_base {
26
+ }
17
27
  declare const NpmRegistryTarget_base: Schema.Class<NpmRegistryTarget, Schema.TaggedStruct<"NpmRegistryTarget", {
18
28
  readonly id: Schema.String;
19
29
  readonly registry: Schema.String;
30
+ readonly packageName: Schema.String;
20
31
  readonly packagePath: Schema.String;
21
32
  readonly tokenEnv: Schema.optionalKey<Schema.String>;
33
+ readonly trustedPublishing: Schema.optionalKey<typeof NpmTrustedPublishingConfig>;
22
34
  readonly access: Schema.optionalKey<Schema.Literals<readonly ["public", "restricted"]>>;
23
35
  readonly provenance: Schema.optionalKey<Schema.Boolean>;
24
36
  readonly dryRunSupport: Schema.Literals<readonly ["none", "native", "simulated"]>;
@@ -88,14 +100,32 @@ export declare class ScoopBucketTarget extends ScoopBucketTarget_base {
88
100
  }
89
101
  export declare const TargetConfig: Schema.Union<readonly [typeof NpmRegistryTarget, typeof GitHubReleaseTarget, typeof HomebrewTapTarget, typeof PyPiRegistryTarget, typeof ScoopBucketTarget]>;
90
102
  export type TargetConfig = typeof TargetConfig.Type;
103
+ export declare const TargetRunsIn: Schema.Literals<readonly ["ci"]>;
104
+ export type TargetRunsIn = typeof TargetRunsIn.Type;
105
+ declare const TargetRequiredPermission_base: Schema.Class<TargetRequiredPermission, Schema.Struct<{
106
+ readonly name: Schema.String;
107
+ readonly value: Schema.String;
108
+ }>, {}>;
109
+ export declare class TargetRequiredPermission extends TargetRequiredPermission_base {
110
+ }
111
+ declare const TargetAuthSetup_base: Schema.Class<TargetAuthSetup, Schema.Struct<{
112
+ readonly runsIn: Schema.Literals<readonly ["ci"]>;
113
+ readonly provider: Schema.Literals<readonly ["github-actions"]>;
114
+ readonly workflow: Schema.String;
115
+ readonly requiredPermissions: Schema.$Array<typeof TargetRequiredPermission>;
116
+ readonly prerequisites: Schema.$Array<Schema.String>;
117
+ }>, {}>;
118
+ export declare class TargetAuthSetup extends TargetAuthSetup_base {
119
+ }
91
120
  declare const TargetCapabilities_base: Schema.Class<TargetCapabilities, Schema.Struct<{
92
121
  readonly targetId: Schema.String;
93
122
  readonly targetTag: Schema.String;
94
- readonly authRequirement: Schema.Literals<readonly ["none", "env-token", "cli-auth"]>;
123
+ readonly authRequirement: Schema.Literals<readonly ["none", "env-token", "cli-auth", "trusted-publishing"]>;
95
124
  readonly dryRunSupport: Schema.Literals<readonly ["none", "native", "simulated"]>;
96
125
  readonly mutability: Schema.Literals<readonly ["immutable", "mutable-release", "mutable-index"]>;
97
126
  readonly recovery: Schema.Literals<readonly ["publish-new-version", "delete-and-recreate", "manual"]>;
98
127
  readonly validationStrategy: Schema.Literals<readonly ["native-command", "simulated-plan", "skipped"]>;
128
+ readonly authSetup: Schema.optionalKey<typeof TargetAuthSetup>;
99
129
  }>, {}>;
100
130
  export declare class TargetCapabilities extends TargetCapabilities_base {
101
131
  }
@@ -1 +1 @@
1
- {"version":3,"file":"target.d.ts","sourceRoot":"","sources":["../../src/domain/target.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,QAAQ,eAAgB,CAAA;AACrC,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAA;AAE3C,eAAO,MAAM,qBAAqB,6DAAqD,CAAA;AACvF,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAC,IAAI,CAAA;AAErE,eAAO,MAAM,mBAAmB,2DAAmD,CAAA;AACnF,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAA;AAEjE,eAAO,MAAM,gBAAgB,6EAAqE,CAAA;AAClG,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAA;AAE3D,eAAO,MAAM,cAAc,oFAA4E,CAAA;AACvG,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAA;AAEvD,eAAO,MAAM,wBAAwB,2EAAmE,CAAA;AACxG,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAC,IAAI,CAAA;AAE3E,eAAO,MAAM,SAAS,oDAA4C,CAAA;AAClE,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA;;;;;;;;;;;;AAE7C,qBAAa,iBAAkB,SAAQ,sBAUrC;CAAG;;;;;;;;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBASvC;CAAG;;;;;;;;;;;;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAcrC;CAAG;;;;;;;;;;AAEL,qBAAa,kBAAmB,SAAQ,uBAQtC;CAAG;;;;;;;;;;;;;;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAgBrC;CAAG;AAEL,eAAO,MAAM,YAAY,8JAMvB,CAAA;AACF,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAA;;;;;;;;;;AAEnD,qBAAa,kBAAmB,SAAQ,uBAQtC;CAAG;AAEL,eAAO,MAAM,WAAW,GAAI,MAAM,YAAY,EAAE,OAAO,YAAY,KAAG,MACrC,CAAA;AAEjC,eAAO,MAAM,uBAAuB,GAAI,MAAM,kBAAkB,EAAE,OAAO,kBAAkB,KAAG,MACjD,CAAA;AAE7C,eAAO,MAAM,qBAAqB,GAAI,QAAQ,YAAY,KAAG,qBAQ5D,CAAA"}
1
+ {"version":3,"file":"target.d.ts","sourceRoot":"","sources":["../../src/domain/target.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,QAAQ,eAAgB,CAAA;AACrC,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAA;AAE3C,eAAO,MAAM,qBAAqB,mFAKhC,CAAA;AACF,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAC,IAAI,CAAA;AAErE,eAAO,MAAM,mBAAmB,2DAAmD,CAAA;AACnF,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAA;AAEjE,eAAO,MAAM,gBAAgB,6EAAqE,CAAA;AAClG,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAA;AAE3D,eAAO,MAAM,cAAc,oFAA4E,CAAA;AACvG,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAA;AAEvD,eAAO,MAAM,wBAAwB,2EAAmE,CAAA;AACxG,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAC,IAAI,CAAA;AAE3E,eAAO,MAAM,SAAS,oDAA4C,CAAA;AAClE,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA;AAE7C,eAAO,MAAM,4BAA4B,8CAAsC,CAAA;AAC/E,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAC,IAAI,CAAA;;;;;;;AAEnF,qBAAa,0BAA2B,SAAQ,+BAO9C;CAAG;;;;;;;;;;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAYrC;CAAG;;;;;;;;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBASvC;CAAG;;;;;;;;;;;;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAcrC;CAAG;;;;;;;;;;AAEL,qBAAa,kBAAmB,SAAQ,uBAQtC;CAAG;;;;;;;;;;;;;;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAgBrC;CAAG;AAEL,eAAO,MAAM,YAAY,8JAMvB,CAAA;AACF,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAA;AAEnD,eAAO,MAAM,YAAY,kCAA0B,CAAA;AACnD,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAA;;;;;AAEnD,qBAAa,wBAAyB,SAAQ,6BAG5C;CAAG;;;;;;;;AAEL,qBAAa,eAAgB,SAAQ,oBAMnC;CAAG;;;;;;;;;;;AAEL,qBAAa,kBAAmB,SAAQ,uBAStC;CAAG;AAEL,eAAO,MAAM,WAAW,GAAI,MAAM,YAAY,EAAE,OAAO,YAAY,KAAG,MACrC,CAAA;AAEjC,eAAO,MAAM,uBAAuB,GAAI,MAAM,kBAAkB,EAAE,OAAO,kBAAkB,KAAG,MACjD,CAAA;AAE7C,eAAO,MAAM,qBAAqB,GAAI,QAAQ,YAAY,KAAG,qBAW5D,CAAA"}
@@ -1,16 +1,31 @@
1
1
  import * as Schema from "effect/Schema";
2
2
  export const TargetId = Schema.String;
3
- export const TargetAuthRequirement = Schema.Literals(["none", "env-token", "cli-auth"]);
3
+ export const TargetAuthRequirement = Schema.Literals([
4
+ "none",
5
+ "env-token",
6
+ "cli-auth",
7
+ "trusted-publishing"
8
+ ]);
4
9
  export const TargetDryRunSupport = Schema.Literals(["none", "native", "simulated"]);
5
10
  export const TargetMutability = Schema.Literals(["immutable", "mutable-release", "mutable-index"]);
6
11
  export const TargetRecovery = Schema.Literals(["publish-new-version", "delete-and-recreate", "manual"]);
7
12
  export const TargetValidationStrategy = Schema.Literals(["native-command", "simulated-plan", "skipped"]);
8
13
  export const NpmAccess = Schema.Literals(["public", "restricted"]);
14
+ export const NpmTrustedPublishingProvider = Schema.Literals(["github-actions"]);
15
+ export class NpmTrustedPublishingConfig extends Schema.Class("NpmTrustedPublishingConfig")({
16
+ provider: NpmTrustedPublishingProvider,
17
+ workflow: Schema.String,
18
+ packageExists: Schema.Literal(true),
19
+ verifyPackageExists: Schema.optionalKey(Schema.Boolean)
20
+ }) {
21
+ }
9
22
  export class NpmRegistryTarget extends Schema.TaggedClass()("NpmRegistryTarget", {
10
23
  id: TargetId,
11
24
  registry: Schema.String,
25
+ packageName: Schema.String,
12
26
  packagePath: Schema.String,
13
27
  tokenEnv: Schema.optionalKey(Schema.String),
28
+ trustedPublishing: Schema.optionalKey(NpmTrustedPublishingConfig),
14
29
  access: Schema.optionalKey(NpmAccess),
15
30
  provenance: Schema.optionalKey(Schema.Boolean),
16
31
  dryRunSupport: TargetDryRunSupport,
@@ -80,6 +95,20 @@ export const TargetConfig = Schema.Union([
80
95
  PyPiRegistryTarget,
81
96
  ScoopBucketTarget
82
97
  ]);
98
+ export const TargetRunsIn = Schema.Literals(["ci"]);
99
+ export class TargetRequiredPermission extends Schema.Class("TargetRequiredPermission")({
100
+ name: Schema.String,
101
+ value: Schema.String
102
+ }) {
103
+ }
104
+ export class TargetAuthSetup extends Schema.Class("TargetAuthSetup")({
105
+ runsIn: TargetRunsIn,
106
+ provider: NpmTrustedPublishingProvider,
107
+ workflow: Schema.String,
108
+ requiredPermissions: Schema.Array(TargetRequiredPermission),
109
+ prerequisites: Schema.Array(Schema.String)
110
+ }) {
111
+ }
83
112
  export class TargetCapabilities extends Schema.Class("TargetCapabilities")({
84
113
  targetId: TargetId,
85
114
  targetTag: Schema.String,
@@ -87,12 +116,16 @@ export class TargetCapabilities extends Schema.Class("TargetCapabilities")({
87
116
  dryRunSupport: TargetDryRunSupport,
88
117
  mutability: TargetMutability,
89
118
  recovery: TargetRecovery,
90
- validationStrategy: TargetValidationStrategy
119
+ validationStrategy: TargetValidationStrategy,
120
+ authSetup: Schema.optionalKey(TargetAuthSetup)
91
121
  }) {
92
122
  }
93
123
  export const targetOrder = (left, right) => left.id.localeCompare(right.id);
94
124
  export const targetCapabilitiesOrder = (left, right) => left.targetId.localeCompare(right.targetId);
95
125
  export const targetAuthRequirement = (target) => {
126
+ if (target._tag === "NpmRegistryTarget" && target.trustedPublishing !== undefined) {
127
+ return "trusted-publishing";
128
+ }
96
129
  if (target._tag === "PyPiRegistryTarget") {
97
130
  return target.usernameEnv === undefined && target.passwordEnv === undefined ? "cli-auth" : "env-token";
98
131
  }
@@ -1 +1 @@
1
- {"version":3,"file":"target.js","sourceRoot":"","sources":["../../src/domain/target.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"target.js","sourceRoot":"","sources":["../../src/domain/target.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAA;AAGrC,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,QAAQ,CAAC;IACnD,MAAM;IACN,WAAW;IACX,UAAU;IACV,oBAAoB;CACrB,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAA;AAGnF,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC,CAAA;AAGlG,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,QAAQ,CAAC,CAAC,CAAA;AAGvG,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAA;AAGxG,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAA;AAGlE,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAA;AAG/E,MAAM,OAAO,0BAA2B,SAAQ,MAAM,CAAC,KAAK,CAC1D,4BAA4B,CAC7B,CAAC;IACA,QAAQ,EAAE,4BAA4B;IACtC,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IACnC,mBAAmB,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;CACxD,CAAC;CAAG;AAEL,MAAM,OAAO,iBAAkB,SAAQ,MAAM,CAAC,WAAW,EAAqB,CAAC,mBAAmB,EAAE;IAClG,EAAE,EAAE,QAAQ;IACZ,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,iBAAiB,EAAE,MAAM,CAAC,WAAW,CAAC,0BAA0B,CAAC;IACjE,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;IAC9C,aAAa,EAAE,mBAAmB;IAClC,UAAU,EAAE,gBAAgB;IAC5B,QAAQ,EAAE,cAAc;CACzB,CAAC;CAAG;AAEL,MAAM,OAAO,mBAAoB,SAAQ,MAAM,CAAC,WAAW,EAAuB,CAAC,qBAAqB,EAAE;IACxG,EAAE,EAAE,QAAQ;IACZ,UAAU,EAAE,MAAM,CAAC,MAAM;IACzB,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;IAC9C,aAAa,EAAE,mBAAmB;IAClC,UAAU,EAAE,gBAAgB;IAC5B,QAAQ,EAAE,cAAc;CACzB,CAAC;CAAG;AAEL,MAAM,OAAO,iBAAkB,SAAQ,MAAM,CAAC,WAAW,EAAqB,CAAC,mBAAmB,EAAE;IAClG,EAAE,EAAE,QAAQ;IACZ,UAAU,EAAE,MAAM,CAAC,MAAM;IACzB,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,UAAU,EAAE,MAAM,CAAC,MAAM;IACzB,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC/C,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9C,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,aAAa,EAAE,mBAAmB;IAClC,UAAU,EAAE,gBAAgB;IAC5B,QAAQ,EAAE,cAAc;CACzB,CAAC;CAAG;AAEL,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,WAAW,EAAsB,CAAC,oBAAoB,EAAE;IACrG,EAAE,EAAE,QAAQ;IACZ,aAAa,EAAE,MAAM,CAAC,MAAM;IAC5B,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9C,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9C,aAAa,EAAE,mBAAmB;IAClC,UAAU,EAAE,gBAAgB;IAC5B,QAAQ,EAAE,cAAc;CACzB,CAAC;CAAG;AAEL,MAAM,OAAO,iBAAkB,SAAQ,MAAM,CAAC,WAAW,EAAqB,CAAC,mBAAmB,EAAE;IAClG,EAAE,EAAE,QAAQ;IACZ,UAAU,EAAE,MAAM,CAAC,MAAM;IACzB,YAAY,EAAE,MAAM,CAAC,MAAM;IAC3B,YAAY,EAAE,MAAM,CAAC,MAAM;IAC3B,UAAU,EAAE,MAAM,CAAC,MAAM;IACzB,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC1C,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAClD,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,aAAa,EAAE,mBAAmB;IAClC,UAAU,EAAE,gBAAgB;IAC5B,QAAQ,EAAE,cAAc;CACzB,CAAC;CAAG;AAEL,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;IACvC,iBAAiB;IACjB,mBAAmB;IACnB,iBAAiB;IACjB,kBAAkB;IAClB,iBAAiB;CAClB,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AAGnD,MAAM,OAAO,wBAAyB,SAAQ,MAAM,CAAC,KAAK,CAA2B,0BAA0B,CAAC,CAAC;IAC/G,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM;CACrB,CAAC;CAAG;AAEL,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,KAAK,CAAkB,iBAAiB,CAAC,CAAC;IACpF,MAAM,EAAE,YAAY;IACpB,QAAQ,EAAE,4BAA4B;IACtC,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,mBAAmB,EAAE,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC;IAC3D,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;CAC3C,CAAC;CAAG;AAEL,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,KAAK,CAAqB,oBAAoB,CAAC,CAAC;IAC7F,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,eAAe,EAAE,qBAAqB;IACtC,aAAa,EAAE,mBAAmB;IAClC,UAAU,EAAE,gBAAgB;IAC5B,QAAQ,EAAE,cAAc;IACxB,kBAAkB,EAAE,wBAAwB;IAC5C,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC;CAC/C,CAAC;CAAG;AAEL,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAkB,EAAE,KAAmB,EAAU,EAAE,CAC7E,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AAEjC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAAwB,EAAE,KAAyB,EAAU,EAAE,CACrG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;AAE7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAoB,EAAyB,EAAE;IACnF,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAClF,OAAO,oBAAoB,CAAA;IAC7B,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;QACzC,OAAO,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAA;IACxG,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QAC/E,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAA;AACjE,CAAC,CAAA"}
@@ -2,22 +2,13 @@ import * as Context from "effect/Context";
2
2
  import * as Effect from "effect/Effect";
3
3
  import * as Layer from "effect/Layer";
4
4
  import * as Schema from "effect/Schema";
5
- import { ChecksumAlgorithm } from "../domain/artifact.js";
6
5
  import { CommandSpec } from "../domain/operation.js";
7
6
  export type * from "../types/effect-internal.js";
8
- declare const HostError_base: Schema.Class<HostError, Schema.TaggedStruct<"HostError", {
7
+ declare const CommandRunnerError_base: Schema.Class<CommandRunnerError, Schema.TaggedStruct<"CommandRunnerError", {
9
8
  readonly operation: Schema.String;
10
- readonly path: Schema.optionalKey<Schema.String>;
11
9
  readonly reason: Schema.String;
12
10
  }>, import("effect/Cause").YieldableError>;
13
- export declare class HostError extends HostError_base {
14
- }
15
- declare const FileInfo_base: Schema.Class<FileInfo, Schema.Struct<{
16
- readonly path: Schema.String;
17
- readonly sizeBytes: Schema.Number;
18
- readonly kind: Schema.Literals<readonly ["file", "directory", "other"]>;
19
- }>, {}>;
20
- export declare class FileInfo extends FileInfo_base {
11
+ export declare class CommandRunnerError extends CommandRunnerError_base {
21
12
  }
22
13
  declare const CommandResult_base: Schema.Class<CommandResult, Schema.Struct<{
23
14
  readonly command: typeof CommandSpec;
@@ -30,18 +21,11 @@ declare const CommandResult_base: Schema.Class<CommandResult, Schema.Struct<{
30
21
  }>, {}>;
31
22
  export declare class CommandResult extends CommandResult_base {
32
23
  }
33
- export interface ReleaseHostShape {
34
- readonly readFileString: (path: string) => Effect.Effect<string, HostError>;
35
- readonly writeFileString: (path: string, contents: string) => Effect.Effect<void, HostError>;
36
- readonly stat: (path: string) => Effect.Effect<FileInfo, HostError>;
37
- readonly hashFile: (path: string, algorithm: ChecksumAlgorithm) => Effect.Effect<string, HostError>;
38
- readonly readEnv: (name: string) => Effect.Effect<string | undefined, never>;
39
- readonly runCommand: (command: CommandSpec) => Effect.Effect<CommandResult, HostError>;
40
- readonly now: Effect.Effect<string, never>;
24
+ export interface ReleaseCommandRunnerShape {
25
+ readonly runCommand: (command: CommandSpec) => Effect.Effect<CommandResult, CommandRunnerError>;
41
26
  }
42
- declare const ReleaseHost_base: Context.ServiceClass<ReleaseHost, "ReleaseHost", ReleaseHostShape>;
43
- export declare class ReleaseHost extends ReleaseHost_base {
27
+ declare const ReleaseCommandRunner_base: Context.ServiceClass<ReleaseCommandRunner, "ReleaseCommandRunner", ReleaseCommandRunnerShape>;
28
+ export declare class ReleaseCommandRunner extends ReleaseCommandRunner_base {
44
29
  }
45
- export declare const ReleaseHostTest: (host: ReleaseHostShape) => Layer.Layer<ReleaseHost>;
46
- export declare const missingEnvNames: (command: CommandSpec) => Effect.Effect<string[], never, ReleaseHost>;
30
+ export declare const ReleaseCommandRunnerTestLayer: (commandRunner: ReleaseCommandRunnerShape) => Layer.Layer<ReleaseCommandRunner>;
47
31
  //# sourceMappingURL=host.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/host/host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,mBAAmB,6BAA6B,CAAA;;;;;;AAEhD,qBAAa,SAAU,SAAQ,cAI7B;CAAG;;;;;;AAEL,qBAAa,QAAS,SAAQ,aAI5B;CAAG;;;;;;;;;;AAEL,qBAAa,aAAc,SAAQ,kBAQjC;CAAG;AAEL,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC3E,QAAQ,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAC5F,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IACnE,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACnG,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,KAAK,CAAC,CAAA;IAC5E,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;IACtF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAC3C;;AAED,qBAAa,WAAY,SAAQ,gBAA+D;CAAG;AAEnG,eAAO,MAAM,eAAe,GAAI,MAAM,gBAAgB,KAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAC9C,CAAA;AAElC,eAAO,MAAM,eAAe,uEAU1B,CAAA"}
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/host/host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,mBAAmB,6BAA6B,CAAA;;;;;AAEhD,qBAAa,kBAAmB,SAAQ,uBAGtC;CAAG;;;;;;;;;;AAEL,qBAAa,aAAc,SAAQ,kBAQjC;CAAG;AAEL,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAA;CAChG;;AAED,qBAAa,oBAAqB,SAAQ,yBAGf;CAAG;AAE9B,eAAO,MAAM,6BAA6B,GACxC,eAAe,yBAAyB,KACvC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CACiB,CAAA"}
package/dist/host/host.js CHANGED
@@ -1,20 +1,12 @@
1
1
  import * as Context from "effect/Context";
2
- import * as Effect from "effect/Effect";
3
2
  import * as Layer from "effect/Layer";
4
3
  import * as Schema from "effect/Schema";
5
4
  import { CommandSpec } from "../domain/operation.js";
6
- export class HostError extends Schema.TaggedErrorClass()("HostError", {
5
+ export class CommandRunnerError extends Schema.TaggedErrorClass()("CommandRunnerError", {
7
6
  operation: Schema.String,
8
- path: Schema.optionalKey(Schema.String),
9
7
  reason: Schema.String
10
8
  }) {
11
9
  }
12
- export class FileInfo extends Schema.Class("FileInfo")({
13
- path: Schema.String,
14
- sizeBytes: Schema.Number,
15
- kind: Schema.Literals(["file", "directory", "other"])
16
- }) {
17
- }
18
10
  export class CommandResult extends Schema.Class("CommandResult")({
19
11
  command: CommandSpec,
20
12
  exitCode: Schema.Number,
@@ -25,18 +17,7 @@ export class CommandResult extends Schema.Class("CommandResult")({
25
17
  durationMillis: Schema.Number
26
18
  }) {
27
19
  }
28
- export class ReleaseHost extends Context.Service()("ReleaseHost") {
20
+ export class ReleaseCommandRunner extends Context.Service()("ReleaseCommandRunner") {
29
21
  }
30
- export const ReleaseHostTest = (host) => Layer.succeed(ReleaseHost)(host);
31
- export const missingEnvNames = Effect.fn("missingEnvNames")(function* (command) {
32
- const host = yield* ReleaseHost;
33
- const missing = [];
34
- for (const name of command.requiredEnv) {
35
- const value = yield* host.readEnv(name);
36
- if (value === undefined) {
37
- missing.push(name);
38
- }
39
- }
40
- return missing;
41
- });
22
+ export const ReleaseCommandRunnerTestLayer = (commandRunner) => Layer.succeed(ReleaseCommandRunner)(commandRunner);
42
23
  //# sourceMappingURL=host.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"host.js","sourceRoot":"","sources":["../../src/host/host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAIpD,MAAM,OAAO,SAAU,SAAQ,MAAM,CAAC,gBAAgB,EAAa,CAAC,WAAW,EAAE;IAC/E,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG;AAEL,MAAM,OAAO,QAAS,SAAQ,MAAM,CAAC,KAAK,CAAW,UAAU,CAAC,CAAC;IAC/D,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;CACtD,CAAC;CAAG;AAEL,MAAM,OAAO,aAAc,SAAQ,MAAM,CAAC,KAAK,CAAgB,eAAe,CAAC,CAAC;IAC9E,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,cAAc,EAAE,MAAM,CAAC,MAAM;CAC9B,CAAC;CAAG;AAYL,MAAM,OAAO,WAAY,SAAQ,OAAO,CAAC,OAAO,EAAiC,CAAC,aAAa,CAAC;CAAG;AAEnG,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAsB,EAA4B,EAAE,CAClF,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAA;AAElC,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,EAAC,OAAoB;IACxF,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,WAAW,CAAA;IAC/B,MAAM,OAAO,GAAkB,EAAE,CAAA;IACjC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACvC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"host.js","sourceRoot":"","sources":["../../src/host/host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAIpD,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,gBAAgB,EAAsB,CAAC,oBAAoB,EAAE;IAC1G,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG;AAEL,MAAM,OAAO,aAAc,SAAQ,MAAM,CAAC,KAAK,CAAgB,eAAe,CAAC,CAAC;IAC9E,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,cAAc,EAAE,MAAM,CAAC,MAAM;CAC9B,CAAC;CAAG;AAML,MAAM,OAAO,oBAAqB,SAAQ,OAAO,CAAC,OAAO,EAGtD,CAAC,sBAAsB,CAAC;CAAG;AAE9B,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,aAAwC,EACL,EAAE,CACrC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,aAAa,CAAC,CAAA"}
@@ -1,7 +1,6 @@
1
1
  import * as Layer from "effect/Layer";
2
2
  import * as HttpClient from "effect/unstable/http/HttpClient";
3
- import { ReleaseHost } from "./host.js";
4
3
  import { ReleaseHttp } from "./http.js";
5
4
  export type * from "../types/effect-internal.js";
6
- export declare const LiveReleaseHttpLayer: Layer.Layer<ReleaseHttp, never, ReleaseHost | HttpClient.HttpClient>;
5
+ export declare const LiveReleaseHttpLayer: Layer.Layer<ReleaseHttp, never, HttpClient.HttpClient>;
7
6
  //# sourceMappingURL=http-live.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-live.d.ts","sourceRoot":"","sources":["../../src/host/http-live.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAG7D,OAAO,EAAE,WAAW,EAAoB,MAAM,WAAW,CAAA;AACzD,OAAO,EAAyB,WAAW,EAAE,MAAM,WAAW,CAAA;AAE9D,mBAAmB,6BAA6B,CAAA;AA2ChD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,UAAU,CAAC,UAAU,CA4CnG,CAAA"}
1
+ {"version":3,"file":"http-live.d.ts","sourceRoot":"","sources":["../../src/host/http-live.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAG7D,OAAO,EAAyB,WAAW,EAAE,MAAM,WAAW,CAAA;AAE9D,mBAAmB,6BAA6B,CAAA;AAsDhD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CA4CrF,CAAA"}
@@ -1,11 +1,17 @@
1
+ import * as Config from "effect/Config";
1
2
  import * as Effect from "effect/Effect";
2
3
  import * as Layer from "effect/Layer";
4
+ import * as Option from "effect/Option";
3
5
  import * as HttpClient from "effect/unstable/http/HttpClient";
4
6
  import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";
5
- import { ReleaseHost } from "./host.js";
6
7
  import { HttpError, HttpResult, ReleaseHttp } from "./http.js";
7
8
  const formatUnknown = (cause) => cause instanceof Error ? cause.message : String(cause);
8
- const resolveHeaders = Effect.fn("resolveHeaders")(function* (host, request) {
9
+ const nowIso = Effect.fn("http.nowIso")(function* () {
10
+ const millis = yield* Effect.clockWith((clock) => clock.currentTimeMillis);
11
+ return new Date(millis).toISOString();
12
+ });
13
+ const readOptionalEnv = (name) => Config.string(name).pipe(Effect.option, Effect.map(Option.getOrUndefined));
14
+ const resolveHeaders = Effect.fn("resolveHeaders")(function* (request) {
9
15
  const envNames = new Set([
10
16
  ...request.requiredEnv,
11
17
  ...request.envHeaders.map((header) => header.valueEnv)
@@ -13,7 +19,7 @@ const resolveHeaders = Effect.fn("resolveHeaders")(function* (host, request) {
13
19
  const env = new Map();
14
20
  const missing = [];
15
21
  for (const name of envNames) {
16
- const value = yield* host.readEnv(name);
22
+ const value = yield* readOptionalEnv(name);
17
23
  if (value === undefined) {
18
24
  missing.push(name);
19
25
  }
@@ -41,13 +47,12 @@ const resolveHeaders = Effect.fn("resolveHeaders")(function* (host, request) {
41
47
  return headers;
42
48
  });
43
49
  export const LiveReleaseHttpLayer = Layer.effect(ReleaseHttp)(Effect.gen(function* () {
44
- const host = yield* ReleaseHost;
45
50
  const client = yield* HttpClient.HttpClient;
46
51
  return {
47
52
  runJson: (request) => Effect.gen(function* () {
48
- const headers = yield* resolveHeaders(host, request);
49
- const startedAt = new Date().toISOString();
50
- const started = performance.now();
53
+ const headers = yield* resolveHeaders(request);
54
+ const startedAt = yield* nowIso();
55
+ const started = yield* Effect.clockWith((clock) => clock.currentTimeMillis);
51
56
  const httpRequest = HttpClientRequest.make(request.method)(request.url, { headers });
52
57
  const response = yield* client.execute(httpRequest).pipe(Effect.mapError((error) => HttpError.make({
53
58
  operation: "execute",
@@ -61,14 +66,15 @@ export const LiveReleaseHttpLayer = Layer.effect(ReleaseHttp)(Effect.gen(functio
61
66
  url: request.url,
62
67
  reason: formatUnknown(error)
63
68
  })));
64
- const endedAt = new Date().toISOString();
69
+ const endedAt = yield* nowIso();
70
+ const ended = yield* Effect.clockWith((clock) => clock.currentTimeMillis);
65
71
  return HttpResult.make({
66
72
  request,
67
73
  status: response.status,
68
74
  json,
69
75
  startedAt,
70
76
  endedAt,
71
- durationMillis: Math.round(performance.now() - started)
77
+ durationMillis: Math.max(0, ended - started)
72
78
  });
73
79
  })
74
80
  };
@@ -1 +1 @@
1
- {"version":3,"file":"http-live.js","sourceRoot":"","sources":["../../src/host/http-live.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-live.js","sourceRoot":"","sources":["../../src/host/http-live.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import * as Layer from "effect/Layer";
2
+ import { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner";
3
+ import { ReleaseCommandRunner } from "./host.js";
4
+ export type * from "../types/effect-internal.js";
5
+ export interface PlatformCommandRunnerOptions {
6
+ readonly root?: string | undefined;
7
+ }
8
+ export declare const makePlatformCommandRunnerLayer: (options?: PlatformCommandRunnerOptions) => Layer.Layer<ReleaseCommandRunner, never, ChildProcessSpawner>;
9
+ export declare const PlatformCommandRunnerLayer: Layer.Layer<ReleaseCommandRunner, never, ChildProcessSpawner>;
10
+ //# sourceMappingURL=platform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/host/platform.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAIrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAA;AAEjF,OAAO,EAAqC,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAEnF,mBAAmB,6BAA6B,CAAA;AAEhD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACnC;AAoFD,eAAO,MAAM,8BAA8B,GACzC,UAAS,4BAAiC,KACzC,KAAK,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,EAAE,mBAAmB,CAyD5D,CAAA;AAEH,eAAO,MAAM,0BAA0B,EAAE,KAAK,CAAC,KAAK,CAClD,oBAAoB,EACpB,KAAK,EACL,mBAAmB,CACe,CAAA"}
@@ -0,0 +1,121 @@
1
+ import * as Config from "effect/Config";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Layer from "effect/Layer";
4
+ import * as Option from "effect/Option";
5
+ import * as Stream from "effect/Stream";
6
+ import * as ChildProcess from "effect/unstable/process/ChildProcess";
7
+ import { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner";
8
+ import { CommandResult, CommandRunnerError, ReleaseCommandRunner } from "./host.js";
9
+ const inheritedEnvNames = [
10
+ "PATH",
11
+ "HOME",
12
+ "USERPROFILE",
13
+ "SystemRoot",
14
+ "TEMP",
15
+ "TMP",
16
+ "CI",
17
+ "GITHUB_ACTIONS",
18
+ "GITHUB_API_URL",
19
+ "GITHUB_EVENT_NAME",
20
+ "GITHUB_GRAPHQL_URL",
21
+ "GITHUB_REF",
22
+ "GITHUB_REF_NAME",
23
+ "GITHUB_REF_TYPE",
24
+ "GITHUB_REPOSITORY",
25
+ "GITHUB_REPOSITORY_ID",
26
+ "GITHUB_REPOSITORY_OWNER",
27
+ "GITHUB_REPOSITORY_OWNER_ID",
28
+ "GITHUB_RUN_ATTEMPT",
29
+ "GITHUB_RUN_ID",
30
+ "GITHUB_RUN_NUMBER",
31
+ "GITHUB_SERVER_URL",
32
+ "GITHUB_SHA",
33
+ "GITHUB_WORKFLOW",
34
+ "GITHUB_WORKFLOW_REF",
35
+ "GITHUB_WORKFLOW_SHA",
36
+ "RUNNER_ENVIRONMENT",
37
+ "RUNNER_OS"
38
+ ];
39
+ const formatUnknown = (cause) => cause instanceof Error ? cause.message : String(cause);
40
+ const readOptionalEnv = (name) => Config.string(name).pipe(Effect.option, Effect.map(Option.getOrUndefined));
41
+ const commandEnv = Effect.fn("platform.commandEnv")(function* (command) {
42
+ const names = new Set([
43
+ ...inheritedEnvNames,
44
+ ...command.requiredEnv
45
+ ]);
46
+ const env = {};
47
+ for (const name of names) {
48
+ const value = yield* readOptionalEnv(name);
49
+ if (value !== undefined) {
50
+ env[name] = value;
51
+ }
52
+ }
53
+ return env;
54
+ });
55
+ const validateEnv = (command) => Effect.gen(function* () {
56
+ const missing = [];
57
+ for (const name of command.requiredEnv) {
58
+ const value = yield* readOptionalEnv(name);
59
+ if (value === undefined) {
60
+ missing.push(name);
61
+ }
62
+ }
63
+ if (missing.length > 0) {
64
+ return yield* Effect.fail(CommandRunnerError.make({
65
+ operation: "runCommand",
66
+ reason: `Missing required environment variables: ${missing.join(", ")}`
67
+ }));
68
+ }
69
+ });
70
+ const nowIso = Effect.fn("platform.nowIso")(function* () {
71
+ const millis = yield* Effect.clockWith((clock) => clock.currentTimeMillis);
72
+ return new Date(millis).toISOString();
73
+ });
74
+ const commandOutput = (stream) => Stream.mkString(Stream.decodeText(stream));
75
+ export const makePlatformCommandRunnerLayer = (options = {}) => Layer.effect(ReleaseCommandRunner)(Effect.gen(function* () {
76
+ const spawner = yield* ChildProcessSpawner;
77
+ const commandCwd = (command) => command.cwd === undefined
78
+ ? options.root
79
+ : command.cwd;
80
+ return {
81
+ runCommand: (command) => Effect.gen(function* () {
82
+ yield* validateEnv(command);
83
+ const startedAt = yield* nowIso();
84
+ const startedMillis = yield* Effect.clockWith((clock) => clock.currentTimeMillis);
85
+ const env = yield* commandEnv(command);
86
+ const cwd = commandCwd(command);
87
+ const childCommand = ChildProcess.make(command.executable, command.args, {
88
+ ...(cwd === undefined ? {} : { cwd }),
89
+ env,
90
+ extendEnv: false,
91
+ stdin: "ignore",
92
+ stdout: "pipe",
93
+ stderr: "pipe"
94
+ });
95
+ const output = yield* Effect.scoped(Effect.gen(function* () {
96
+ const handle = yield* spawner.spawn(childCommand);
97
+ return yield* Effect.all({
98
+ stdout: commandOutput(handle.stdout),
99
+ stderr: commandOutput(handle.stderr),
100
+ exitCode: handle.exitCode
101
+ }, { concurrency: "unbounded" });
102
+ })).pipe(Effect.mapError((cause) => CommandRunnerError.make({
103
+ operation: "runCommand",
104
+ reason: formatUnknown(cause)
105
+ })));
106
+ const endedAt = yield* nowIso();
107
+ const endedMillis = yield* Effect.clockWith((clock) => clock.currentTimeMillis);
108
+ return CommandResult.make({
109
+ command,
110
+ exitCode: Number(output.exitCode),
111
+ stdout: output.stdout,
112
+ stderr: output.stderr,
113
+ startedAt,
114
+ endedAt,
115
+ durationMillis: Math.max(0, endedMillis - startedMillis)
116
+ });
117
+ })
118
+ };
119
+ }));
120
+ export const PlatformCommandRunnerLayer = makePlatformCommandRunnerLayer();
121
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/host/platform.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,16 @@
1
+ import * as Crypto from "effect/Crypto";
2
+ import * as FileSystem from "effect/FileSystem";
1
3
  import * as Layer from "effect/Layer";
4
+ import * as Path from "effect/Path";
2
5
  import { CommandSpec } from "../domain/operation.js";
3
- import { ReleaseHost } from "./host.js";
6
+ import { ReleaseCommandRunner } from "./host.js";
4
7
  export type * from "../types/effect-internal.js";
5
8
  export interface TestCommandResponse {
6
9
  readonly exitCode: number;
7
10
  readonly stdout: string;
8
11
  readonly stderr: string;
9
12
  }
10
- export interface TestReleaseHostOptions {
13
+ export interface TestCommandRunnerOptions {
11
14
  readonly files?: ReadonlyMap<string, string> | undefined;
12
15
  readonly directories?: ReadonlySet<string> | undefined;
13
16
  readonly env?: ReadonlyMap<string, string> | undefined;
@@ -15,5 +18,5 @@ export interface TestReleaseHostOptions {
15
18
  readonly timestamps?: ReadonlyArray<string> | undefined;
16
19
  }
17
20
  export declare const commandKey: (command: CommandSpec) => string;
18
- export declare const makeTestReleaseHostLayer: (options?: TestReleaseHostOptions) => Layer.Layer<ReleaseHost>;
21
+ export declare const makeTestCommandRunnerLayer: (options?: TestCommandRunnerOptions) => Layer.Layer<FileSystem.FileSystem | Path.Path | ReleaseCommandRunner | Crypto.Crypto, never, never>;
19
22
  //# sourceMappingURL=test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/host/test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAsC,WAAW,EAAE,MAAM,WAAW,CAAA;AAE3E,mBAAmB,6BAA6B,CAAA;AAEhD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;IACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IACtD,QAAQ,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,SAAS,CAAA;IACxE,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;CACxD;AAED,eAAO,MAAM,UAAU,GAAI,SAAS,WAAW,KAAG,MACI,CAAA;AAKtD,eAAO,MAAM,wBAAwB,GACnC,UAAS,sBAA2B,KACnC,KAAK,CAAC,KAAK,CAAC,WAAW,CAgGzB,CAAA"}
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/host/test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AAEnC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAqC,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAEnF,mBAAmB,6BAA6B,CAAA;AAEhD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;IACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IACtD,QAAQ,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,SAAS,CAAA;IACxE,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;CACxD;AAED,eAAO,MAAM,UAAU,GAAI,SAAS,WAAW,KAAG,MACI,CAAA;AAiFtD,eAAO,MAAM,0BAA0B,GACrC,UAAS,wBAA6B,wGAqHvC,CAAA"}