@knpkv/alchemy-console 0.4.2 → 0.5.1
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 +117 -15
- package/dist/api.d.ts +87 -16
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +7 -0
- package/dist/api.js.map +1 -1
- package/dist/client/assets/{index-CHwWf6VU.css → index-D5bP19PT.css} +1 -1
- package/dist/client/assets/index-D9T2ytki.js +58 -0
- package/dist/client/index.html +2 -2
- package/dist/main.js +2 -1
- package/dist/main.js.map +1 -1
- package/dist/plan.d.ts +109 -0
- package/dist/plan.d.ts.map +1 -0
- package/dist/plan.js +40 -0
- package/dist/plan.js.map +1 -0
- package/dist/presentation/PlanView.d.ts +10 -0
- package/dist/presentation/PlanView.d.ts.map +1 -0
- package/dist/presentation/PlanView.js +70 -0
- package/dist/presentation/PlanView.js.map +1 -0
- package/dist/presentation/StackDetailView.d.ts +4 -1
- package/dist/presentation/StackDetailView.d.ts.map +1 -1
- package/dist/presentation/StackDetailView.js +9 -3
- package/dist/presentation/StackDetailView.js.map +1 -1
- package/dist/presentation/detail-model.d.ts +1 -1
- package/dist/presentation/detail-model.d.ts.map +1 -1
- package/dist/server/Catalog.d.ts +1 -0
- package/dist/server/Catalog.d.ts.map +1 -1
- package/dist/server/Catalog.js +7 -1
- package/dist/server/Catalog.js.map +1 -1
- package/dist/server/HttpApplication.d.ts +2 -1
- package/dist/server/HttpApplication.d.ts.map +1 -1
- package/dist/server/HttpApplication.js +3 -1
- package/dist/server/HttpApplication.js.map +1 -1
- package/dist/server/Launch.d.ts +1 -1
- package/dist/server/Launch.d.ts.map +1 -1
- package/dist/server/PlanReader.d.ts +19 -0
- package/dist/server/PlanReader.d.ts.map +1 -0
- package/dist/server/PlanReader.js +202 -0
- package/dist/server/PlanReader.js.map +1 -0
- package/dist/server/Server.d.ts +1 -1
- package/dist/server/Server.d.ts.map +1 -1
- package/dist/server/plan/archive.d.ts +10 -0
- package/dist/server/plan/archive.d.ts.map +1 -0
- package/dist/server/plan/archive.js +62 -0
- package/dist/server/plan/archive.js.map +1 -0
- package/dist/server/plan/github.d.ts +106 -0
- package/dist/server/plan/github.d.ts.map +1 -0
- package/dist/server/plan/github.js +157 -0
- package/dist/server/plan/github.js.map +1 -0
- package/dist/server/plan/receipt.d.ts +153 -0
- package/dist/server/plan/receipt.d.ts.map +1 -0
- package/dist/server/plan/receipt.js +112 -0
- package/dist/server/plan/receipt.js.map +1 -0
- package/dist/views/index.js +547 -264
- package/dist/views/style.css +1 -1
- package/dist/views.d.ts +3 -0
- package/dist/views.d.ts.map +1 -1
- package/dist/views.js +1 -0
- package/dist/views.js.map +1 -1
- package/package.json +3 -3
- package/dist/client/assets/index-DbklFcSg.js +0 -58
package/dist/client/index.html
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
<meta charset="utf-8" />
|
|
8
8
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
9
9
|
<title>Stacks | Alchemy console</title>
|
|
10
|
-
<script type="module" crossorigin src="/assets/index-
|
|
11
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
10
|
+
<script type="module" crossorigin src="/assets/index-D9T2ytki.js"></script>
|
|
11
|
+
<link rel="stylesheet" crossorigin href="/assets/index-D5bP19PT.css">
|
|
12
12
|
</head>
|
|
13
13
|
<body>
|
|
14
14
|
<div id="root"><p>Signing in…</p></div>
|
package/dist/main.js
CHANGED
|
@@ -10,6 +10,7 @@ import process from "node:process";
|
|
|
10
10
|
import { Catalog } from "./server/Catalog.js";
|
|
11
11
|
import { loadConfig, Port, readPackageVersion, StartupError } from "./server/Config.js";
|
|
12
12
|
import { runConsole } from "./server/Launch.js";
|
|
13
|
+
import { configuredPlanLayer } from "./server/PlanReader.js";
|
|
13
14
|
import { sourceLayer } from "./server/Sources.js";
|
|
14
15
|
import { ssoCredentialsLayer } from "./sso-credentials.js";
|
|
15
16
|
const home = homedir();
|
|
@@ -33,7 +34,7 @@ const login = Command.make("login", flags, ({ noOpen, port }) => run(port, noOpe
|
|
|
33
34
|
const serve = Command.make("serve", flags, ({ noOpen, port }) => run(port, noOpen, true));
|
|
34
35
|
const command = Command.make("alchemy-console", flags, ({ noOpen, port }) => run(port, noOpen, false)).pipe(Command.withDescription("Read-only Alchemy stack API on loopback"), Command.withSubcommands([login, serve]));
|
|
35
36
|
const sources = Layer.unwrap(loadConfig(home).pipe(Effect.mapError(() => new StartupError({ reason: "config" })), Effect.map(sourceLayer))).pipe(Layer.provide(FetchHttpClient.layer), Layer.provide(ssoCredentialsLayer()));
|
|
36
|
-
const services = Layer.
|
|
37
|
+
const services = Layer.mergeAll(Catalog.layer.pipe(Layer.provide(sources)), BrowserOpener.layer, configuredPlanLayer.pipe(Layer.provide(FetchHttpClient.layer))).pipe(Layer.provideMerge(NodeServices.layer));
|
|
37
38
|
const cli = readPackageVersion().pipe(Effect.flatMap((version) => Command.run(command, { version })));
|
|
38
39
|
NodeRuntime.runMain(cli.pipe(Effect.withTracerEnabled(false), Effect.provide(services)));
|
|
39
40
|
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA,wGAAwG;AACxG,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC5E,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAE1D,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;AACtB,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;AACrC,MAAM,YAAY,GAAG;IACnB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO;IAC5B,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;IAClB,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI;CAC3C,CAAA;AAED,MAAM,KAAK,GAAG;IACZ,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;CAC9D,CAAA;AAED,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,EAAC,IAAY,EAAE,MAAe,EAAE,SAAkB;IACrG,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAChD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CACpE,CAAA;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;IAC1G,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA;IAC1D,OAAO,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,GAAG,YAAY,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;AAC1F,CAAC,CAAC,CAAA;AAEF,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;AAC1F,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;AACzF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CACzG,OAAO,CAAC,eAAe,CAAC,yCAAyC,CAAC,EAClE,OAAO,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CACxC,CAAA;AAED,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAC1B,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CACnB,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,EAC7D,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CACxB,CACF,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAA;AAClF,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAC7B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAC1C,aAAa,CAAC,KAAK,EACnB,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAC/D,CAAC,IAAI,CACJ,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CACvC,CAAA;AACD,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;AAErG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAC1B,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAC/B,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CACzB,CAAC,CAAA"}
|
package/dist/plan.d.ts
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/** CI publication metadata and property names cross only the authenticated owner API. No provider values or artifact locators. */
|
|
2
|
+
import { Schema } from "effect";
|
|
3
|
+
export declare const PlanSource: Schema.Struct<{
|
|
4
|
+
readonly pr: Schema.NullOr<Schema.Int>;
|
|
5
|
+
readonly head: Schema.String;
|
|
6
|
+
readonly base: Schema.NullOr<Schema.String>;
|
|
7
|
+
readonly publishedAt: Schema.String;
|
|
8
|
+
readonly ageDays: Schema.Int;
|
|
9
|
+
readonly runHref: Schema.String;
|
|
10
|
+
}>;
|
|
11
|
+
export type PlanSource = typeof PlanSource.Type;
|
|
12
|
+
export declare const PlanRow: Schema.Struct<{
|
|
13
|
+
readonly fqn: Schema.NonEmptyString;
|
|
14
|
+
readonly resourceType: Schema.NonEmptyString;
|
|
15
|
+
readonly action: Schema.Literals<readonly ["noop", "update"]>;
|
|
16
|
+
readonly changedKeys: Schema.$Array<Schema.String>;
|
|
17
|
+
}>;
|
|
18
|
+
export type PlanRow = typeof PlanRow.Type;
|
|
19
|
+
export declare const PublishedPlan: Schema.Struct<{
|
|
20
|
+
readonly source: Schema.Struct<{
|
|
21
|
+
readonly pr: Schema.NullOr<Schema.Int>;
|
|
22
|
+
readonly head: Schema.String;
|
|
23
|
+
readonly base: Schema.NullOr<Schema.String>;
|
|
24
|
+
readonly publishedAt: Schema.String;
|
|
25
|
+
readonly ageDays: Schema.Int;
|
|
26
|
+
readonly runHref: Schema.String;
|
|
27
|
+
}>;
|
|
28
|
+
readonly digest: Schema.String;
|
|
29
|
+
readonly rows: Schema.$Array<Schema.Struct<{
|
|
30
|
+
readonly fqn: Schema.NonEmptyString;
|
|
31
|
+
readonly resourceType: Schema.NonEmptyString;
|
|
32
|
+
readonly action: Schema.Literals<readonly ["noop", "update"]>;
|
|
33
|
+
readonly changedKeys: Schema.$Array<Schema.String>;
|
|
34
|
+
}>>;
|
|
35
|
+
readonly stale: Schema.NullOr<Schema.Literals<readonly ["age", "base", "failed"]>>;
|
|
36
|
+
}>;
|
|
37
|
+
export type PublishedPlan = typeof PublishedPlan.Type;
|
|
38
|
+
export declare const PlanState: Schema.TaggedUnion<{
|
|
39
|
+
readonly Expired: Schema.TaggedStruct<"Expired", {
|
|
40
|
+
readonly source: Schema.NullOr<Schema.Struct<{
|
|
41
|
+
readonly pr: Schema.NullOr<Schema.Int>;
|
|
42
|
+
readonly head: Schema.String;
|
|
43
|
+
readonly base: Schema.NullOr<Schema.String>;
|
|
44
|
+
readonly publishedAt: Schema.String;
|
|
45
|
+
readonly ageDays: Schema.Int;
|
|
46
|
+
readonly runHref: Schema.String;
|
|
47
|
+
}>>;
|
|
48
|
+
}>;
|
|
49
|
+
readonly Failed: Schema.TaggedStruct<"Failed", {
|
|
50
|
+
readonly runHref: Schema.String;
|
|
51
|
+
readonly lastPublished: Schema.NullOr<Schema.Struct<{
|
|
52
|
+
readonly source: Schema.Struct<{
|
|
53
|
+
readonly pr: Schema.NullOr<Schema.Int>;
|
|
54
|
+
readonly head: Schema.String;
|
|
55
|
+
readonly base: Schema.NullOr<Schema.String>;
|
|
56
|
+
readonly publishedAt: Schema.String;
|
|
57
|
+
readonly ageDays: Schema.Int;
|
|
58
|
+
readonly runHref: Schema.String;
|
|
59
|
+
}>;
|
|
60
|
+
readonly digest: Schema.String;
|
|
61
|
+
readonly rows: Schema.$Array<Schema.Struct<{
|
|
62
|
+
readonly fqn: Schema.NonEmptyString;
|
|
63
|
+
readonly resourceType: Schema.NonEmptyString;
|
|
64
|
+
readonly action: Schema.Literals<readonly ["noop", "update"]>;
|
|
65
|
+
readonly changedKeys: Schema.$Array<Schema.String>;
|
|
66
|
+
}>>;
|
|
67
|
+
readonly stale: Schema.NullOr<Schema.Literals<readonly ["age", "base", "failed"]>>;
|
|
68
|
+
}>>;
|
|
69
|
+
}>;
|
|
70
|
+
readonly Loading: Schema.TaggedStruct<"Loading", {}>;
|
|
71
|
+
readonly NotConnected: Schema.TaggedStruct<"NotConnected", {}>;
|
|
72
|
+
readonly NotPublished: Schema.TaggedStruct<"NotPublished", {}>;
|
|
73
|
+
readonly NotPublishing: Schema.TaggedStruct<"NotPublishing", {}>;
|
|
74
|
+
readonly Ready: Schema.TaggedStruct<"Ready", {
|
|
75
|
+
readonly plan: Schema.Struct<{
|
|
76
|
+
readonly source: Schema.Struct<{
|
|
77
|
+
readonly pr: Schema.NullOr<Schema.Int>;
|
|
78
|
+
readonly head: Schema.String;
|
|
79
|
+
readonly base: Schema.NullOr<Schema.String>;
|
|
80
|
+
readonly publishedAt: Schema.String;
|
|
81
|
+
readonly ageDays: Schema.Int;
|
|
82
|
+
readonly runHref: Schema.String;
|
|
83
|
+
}>;
|
|
84
|
+
readonly digest: Schema.String;
|
|
85
|
+
readonly rows: Schema.$Array<Schema.Struct<{
|
|
86
|
+
readonly fqn: Schema.NonEmptyString;
|
|
87
|
+
readonly resourceType: Schema.NonEmptyString;
|
|
88
|
+
readonly action: Schema.Literals<readonly ["noop", "update"]>;
|
|
89
|
+
readonly changedKeys: Schema.$Array<Schema.String>;
|
|
90
|
+
}>>;
|
|
91
|
+
readonly stale: Schema.NullOr<Schema.Literals<readonly ["age", "base", "failed"]>>;
|
|
92
|
+
}>;
|
|
93
|
+
}>;
|
|
94
|
+
readonly Refused: Schema.TaggedStruct<"Refused", {}>;
|
|
95
|
+
readonly Unreachable: Schema.TaggedStruct<"Unreachable", {}>;
|
|
96
|
+
readonly Unverified: Schema.TaggedStruct<"Unverified", {
|
|
97
|
+
readonly reason: Schema.Literals<readonly ["metadata", "provenance", "archive", "digest", "receipt"]>;
|
|
98
|
+
readonly source: Schema.NullOr<Schema.Struct<{
|
|
99
|
+
readonly pr: Schema.NullOr<Schema.Int>;
|
|
100
|
+
readonly head: Schema.String;
|
|
101
|
+
readonly base: Schema.NullOr<Schema.String>;
|
|
102
|
+
readonly publishedAt: Schema.String;
|
|
103
|
+
readonly ageDays: Schema.Int;
|
|
104
|
+
readonly runHref: Schema.String;
|
|
105
|
+
}>>;
|
|
106
|
+
}>;
|
|
107
|
+
}>;
|
|
108
|
+
export type PlanState = typeof PlanState.Type;
|
|
109
|
+
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"AAAA,kIAAkI;AAClI,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAM/B,eAAO,MAAM,UAAU;;;;;;;EAOrB,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAC/C,eAAO,MAAM,OAAO;;;;;EAOlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AACzC,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;EAKxB,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;AAErD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcpB,CAAA;AACF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA"}
|
package/dist/plan.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/** CI publication metadata and property names cross only the authenticated owner API. No provider values or artifact locators. */
|
|
2
|
+
import { Schema } from "effect";
|
|
3
|
+
const ShortSha = Schema.String.check(Schema.isPattern(/^[a-f0-9]{7}$/));
|
|
4
|
+
const RunHref = Schema.String.check(Schema.isPattern(/^https:\/\/github\.com\/knpkv\/infra\/actions\/runs\/[1-9][0-9]*$/));
|
|
5
|
+
export const PlanSource = Schema.Struct({
|
|
6
|
+
pr: Schema.NullOr(Schema.Int.check(Schema.isGreaterThan(0))),
|
|
7
|
+
head: ShortSha,
|
|
8
|
+
base: Schema.NullOr(ShortSha),
|
|
9
|
+
publishedAt: Schema.String,
|
|
10
|
+
ageDays: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),
|
|
11
|
+
runHref: RunHref
|
|
12
|
+
});
|
|
13
|
+
export const PlanRow = Schema.Struct({
|
|
14
|
+
fqn: Schema.NonEmptyString.check(Schema.isMaxLength(1024)),
|
|
15
|
+
resourceType: Schema.NonEmptyString.check(Schema.isMaxLength(256)),
|
|
16
|
+
action: Schema.Literals(["noop", "update"]),
|
|
17
|
+
changedKeys: Schema.Array(Schema.String.check(Schema.isPattern(/^[A-Za-z][A-Za-z0-9_.-]{0,63}$/))).check(Schema.isMaxLength(32))
|
|
18
|
+
});
|
|
19
|
+
export const PublishedPlan = Schema.Struct({
|
|
20
|
+
source: PlanSource,
|
|
21
|
+
digest: Schema.String.check(Schema.isPattern(/^[a-f0-9]{4}…[a-f0-9]{4}$/)),
|
|
22
|
+
rows: Schema.Array(PlanRow).check(Schema.isMaxLength(6)),
|
|
23
|
+
stale: Schema.NullOr(Schema.Literals(["age", "base", "failed"]))
|
|
24
|
+
});
|
|
25
|
+
export const PlanState = Schema.TaggedUnion({
|
|
26
|
+
Loading: {},
|
|
27
|
+
Ready: { plan: PublishedPlan },
|
|
28
|
+
NotPublished: {},
|
|
29
|
+
NotPublishing: {},
|
|
30
|
+
NotConnected: {},
|
|
31
|
+
Expired: { source: Schema.NullOr(PlanSource) },
|
|
32
|
+
Failed: { runHref: RunHref, lastPublished: Schema.NullOr(PublishedPlan) },
|
|
33
|
+
Unverified: {
|
|
34
|
+
reason: Schema.Literals(["metadata", "provenance", "archive", "digest", "receipt"]),
|
|
35
|
+
source: Schema.NullOr(PlanSource)
|
|
36
|
+
},
|
|
37
|
+
Unreachable: {},
|
|
38
|
+
Refused: {}
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=plan.js.map
|
package/dist/plan.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"AAAA,kIAAkI;AAClI,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAA;AACvE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CACjC,MAAM,CAAC,SAAS,CAAC,mEAAmE,CAAC,CACtF,CAAA;AACD,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,EAAE,OAAO;CACjB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;IACnC,GAAG,EAAE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC1D,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,KAAK,CACtG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CACvB;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;IAC1E,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACxD,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;CACjE,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;IAC1C,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;IAC9B,YAAY,EAAE,EAAE;IAChB,aAAa,EAAE,EAAE;IACjB,YAAY,EAAE,EAAE;IAChB,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;IAC9C,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;IACzE,UAAU,EAAE;QACV,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACnF,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;KAClC;IACD,WAAW,EAAE,EAAE;IACf,OAAO,EAAE,EAAE;CACZ,CAAC,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type ReactElement } from "react";
|
|
2
|
+
import type { PlanState } from "../plan.js";
|
|
3
|
+
export interface PlanViewProps {
|
|
4
|
+
readonly state: PlanState;
|
|
5
|
+
/** Re-read CI only. The mounting application never starts a plan through this callback. */
|
|
6
|
+
readonly onReadAgain: () => void;
|
|
7
|
+
}
|
|
8
|
+
/** Controlled CI publication display. Invalid and unavailable states have no resource rows; Retry is a read callback only. */
|
|
9
|
+
export declare const PlanView: ({ onReadAgain, state }: PlanViewProps) => ReactElement;
|
|
10
|
+
//# sourceMappingURL=PlanView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlanView.d.ts","sourceRoot":"","sources":["../../src/presentation/PlanView.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAChD,OAAO,KAAK,EAAc,SAAS,EAAiB,MAAM,YAAY,CAAA;AAEtE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,2FAA2F;IAC3F,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAA;CACjC;AA4KD,8HAA8H;AAC9H,eAAO,MAAM,QAAQ,2BAA4B,aAAa,KAAG,YAgEhE,CAAA"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button, Skeleton, StateLabel, Text } from "@knpkv/rly/primitives";
|
|
3
|
+
import { DateTime, Option, Schema } from "effect";
|
|
4
|
+
import { useId } from "react";
|
|
5
|
+
const RunLink = ({ href }) => (_jsxs("a", { className: "ac-detail-link ac-plan-run", href: href, target: "_blank", rel: "noopener noreferrer", "aria-label": "View run on GitHub, opens in a new tab", children: ["View run on GitHub ", _jsx("span", { "aria-hidden": "true", children: "\u2197" })] }));
|
|
6
|
+
const publishedLabel = (source, expired) => {
|
|
7
|
+
if (expired)
|
|
8
|
+
return `${source.ageDays} days ago`;
|
|
9
|
+
const parsed = Option.getOrNull(Schema.decodeUnknownOption(Schema.DateTimeUtcFromString)(source.publishedAt));
|
|
10
|
+
if (parsed === null)
|
|
11
|
+
return "Unknown";
|
|
12
|
+
const time = DateTime.format(parsed, {
|
|
13
|
+
hour: "2-digit",
|
|
14
|
+
minute: "2-digit",
|
|
15
|
+
hourCycle: "h23",
|
|
16
|
+
timeZone: "UTC",
|
|
17
|
+
locale: "en-GB"
|
|
18
|
+
});
|
|
19
|
+
return source.ageDays === 0
|
|
20
|
+
? `${time} today`
|
|
21
|
+
: `${DateTime.format(parsed, { day: "numeric", month: "short", timeZone: "UTC", locale: "en-GB" })} · ${time}`;
|
|
22
|
+
};
|
|
23
|
+
const SourceLine = ({ expired = false, showBase = true, source }) => (_jsxs("p", { className: "ac-plan-source", children: [source.pr === null ? null : _jsxs("span", { children: ["PR #", source.pr] }), _jsxs("span", { children: ["\u00B7 head ", source.head] }), showBase && source.base !== null ? _jsxs("span", { children: ["\u00B7 base ", source.base] }) : null, showBase || expired ? _jsxs("span", { children: ["\u00B7 published ", publishedLabel(source, expired)] }) : null] }));
|
|
24
|
+
const MobileLabel = ({ children }) => (_jsx("small", { className: "ac-plan-mobile-label", "aria-hidden": "true", children: children }));
|
|
25
|
+
const Published = ({ plan, title }) => {
|
|
26
|
+
const heading = useId();
|
|
27
|
+
const updates = plan.rows.filter((row) => row.action === "update").length;
|
|
28
|
+
const unchanged = plan.rows.length - updates;
|
|
29
|
+
return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "ac-plan-heading", children: [_jsx(Text, { as: "h2", id: heading, className: "ac-plan-title", children: title }), _jsxs("div", { className: "ac-plan-source-row", children: [_jsx(SourceLine, { source: plan.source }), _jsx(RunLink, { href: plan.source.runHref })] }), _jsx("small", { className: "ac-plan-assurance", children: "Published by CI. Plan data was produced by the pull request\u2019s code; this console doesn\u2019t run it." })] }), plan.stale === null ? null : (_jsxs("div", { className: "ac-plan-notice", role: "note", children: [_jsx("b", { children: "This plan may be out of date" }), _jsx("span", { className: "ac-plan-reason", children: plan.stale === "base"
|
|
30
|
+
? "Its base doesn’t match the latest main commit CI has seen."
|
|
31
|
+
: plan.stale === "failed"
|
|
32
|
+
? "A newer plan run failed."
|
|
33
|
+
: `Published ${plan.source.ageDays} ${plan.source.ageDays === 1 ? "day" : "days"} ago.` })] })), _jsx("div", { className: "ac-plan-summary", children: updates === 0
|
|
34
|
+
? "No changes in this plan."
|
|
35
|
+
: `${updates} ${updates === 1 ? "update" : "updates"} · ${unchanged} unchanged` }), _jsxs("table", { role: "table", className: "ac-plan-table", "aria-labelledby": heading, children: [_jsx("thead", { role: "rowgroup", children: _jsxs("tr", { role: "row", children: [_jsx("th", { role: "columnheader", scope: "col", children: "Resource" }), _jsx("th", { role: "columnheader", scope: "col", children: "Type" }), _jsx("th", { role: "columnheader", scope: "col", children: "Change" }), _jsx("th", { role: "columnheader", scope: "col", children: "Changed properties" })] }) }), _jsx("tbody", { role: "rowgroup", children: plan.rows.map((row) => (_jsxs("tr", { role: "row", children: [_jsxs("th", { role: "rowheader", scope: "row", children: [_jsx(MobileLabel, { children: "Resource" }), _jsx("b", { className: "ac-plan-resource", children: row.fqn })] }), _jsxs("td", { role: "cell", children: [_jsx(MobileLabel, { children: "Type" }), _jsx("span", { className: "ac-plan-type", title: row.resourceType, children: row.resourceType })] }), _jsxs("td", { role: "cell", children: [_jsx(MobileLabel, { children: "Change" }), _jsx("span", { children: _jsx(StateLabel, { label: row.action === "update" ? "Update" : "No change", tone: row.action === "update" ? "caution" : "neutral", size: "compact" }) })] }), _jsxs("td", { role: "cell", children: [_jsx(MobileLabel, { children: "Changed properties" }), row.changedKeys.length === 0 ? (_jsx("span", { className: "ac-plan-muted", "aria-label": "None", children: "\u2014" })) : (_jsx("span", { className: "ac-plan-keys", children: row.changedKeys.map((key, index) => (_jsx("code", { children: key }, `${key}-${index}`))) }))] })] }, row.fqn))) })] }), _jsxs("footer", { className: "ac-plan-footer", children: [_jsx("span", { children: "CI publishes property names only; values aren\u2019t shown." }), _jsxs("span", { className: "ac-plan-digest", children: ["Digest ", plan.digest] })] })] }));
|
|
36
|
+
};
|
|
37
|
+
const emptyCopy = {
|
|
38
|
+
NotPublished: [
|
|
39
|
+
"No CI plan for this stack yet.",
|
|
40
|
+
"A plan appears here after CI plans a pull request that touches this stack."
|
|
41
|
+
],
|
|
42
|
+
NotPublishing: [
|
|
43
|
+
"CI isn’t publishing plans right now.",
|
|
44
|
+
"Plans resume here once infrastructure CI publishes them again."
|
|
45
|
+
],
|
|
46
|
+
NotConnected: [
|
|
47
|
+
"CI plans aren’t connected for this stack.",
|
|
48
|
+
"Plans can be shown for stacks that infrastructure CI plans. Set up CI plan reading to see them here."
|
|
49
|
+
],
|
|
50
|
+
Expired: [
|
|
51
|
+
"The latest CI plan has expired.",
|
|
52
|
+
"CI keeps plans for 14 days. A new one appears after the next pull request plan."
|
|
53
|
+
],
|
|
54
|
+
Unverified: ["This CI plan couldn’t be verified, so it isn’t shown.", "Its contents didn’t match what CI recorded."],
|
|
55
|
+
Unreachable: ["Couldn’t reach CI to read plans.", "No plan is shown until CI can be read."],
|
|
56
|
+
Refused: ["CI refused access to plans.", "Ask whoever manages this console’s CI access."]
|
|
57
|
+
};
|
|
58
|
+
/** Controlled CI publication display. Invalid and unavailable states have no resource rows; Retry is a read callback only. */
|
|
59
|
+
export const PlanView = ({ onReadAgain, state }) => {
|
|
60
|
+
if (state._tag === "Ready")
|
|
61
|
+
return (_jsx("section", { className: "ac-plan", "aria-label": "Latest CI plan", children: _jsx(Published, { plan: state.plan, title: "Latest CI plan" }) }));
|
|
62
|
+
if (state._tag === "Loading")
|
|
63
|
+
return (_jsxs("section", { className: "ac-plan", "aria-label": "Latest CI plan", "aria-busy": "true", children: [_jsxs("div", { className: "ac-plan-loading-heading", children: [_jsx(Text, { as: "h2", className: "ac-plan-title", children: "Latest CI plan" }), _jsx(Skeleton, { variant: "text", width: "18rem", decorative: true }), _jsx(Skeleton, { variant: "text", width: "10rem", decorative: true })] }), _jsx("p", { role: "status", className: "ac-plan-loading-copy", children: "Reading the latest CI plan\u2026" }), _jsx("div", { className: "ac-plan-skeletons", children: [1, 2, 3, 4].map((key) => (_jsx(Skeleton, { variant: "block", height: "3.5rem", decorative: true }, key))) })] }));
|
|
64
|
+
if (state._tag === "Failed")
|
|
65
|
+
return (_jsxs("section", { className: "ac-plan", "aria-label": "Latest CI plan", children: [_jsx(Text, { as: "h2", className: "ac-plan-title", children: "Latest CI plan" }), _jsxs("div", { className: "ac-plan-notice ac-plan-failed", role: "status", children: [_jsx(StateLabel, { label: "Failed", tone: "critical", size: "compact" }), _jsx("b", { children: "The latest CI plan run failed." }), _jsx(RunLink, { href: state.runHref })] }), state.lastPublished === null ? null : _jsx(Published, { plan: state.lastPublished, title: "Last published plan" })] }));
|
|
66
|
+
const [title, description] = emptyCopy[state._tag];
|
|
67
|
+
const source = state._tag === "Expired" || state._tag === "Unverified" ? state.source : null;
|
|
68
|
+
return (_jsxs("section", { className: "ac-plan", "aria-label": "Latest CI plan", children: [_jsx(Text, { as: "h2", className: "ac-plan-title", children: "Latest CI plan" }), _jsxs("div", { className: "ac-plan-empty", role: "status", children: [_jsx("h3", { children: title }), _jsx("p", { children: description }), source === null ? null : _jsx(SourceLine, { source: source, expired: state._tag === "Expired", showBase: false }), state._tag === "Unverified" && source !== null ? _jsx(RunLink, { href: source.runHref }) : null, state._tag === "Unreachable" ? (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "secondary", onClick: onReadAgain, children: "Retry" }), _jsx("small", { children: "Retry reads again. It never runs a plan." })] })) : null] })] }));
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=PlanView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlanView.js","sourceRoot":"","sources":["../../src/presentation/PlanView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { type ReactElement } from "react";
|
|
2
|
+
import type { PlanState } from "../plan.js";
|
|
2
3
|
import type { StackListCopy } from "./StackListView.js";
|
|
3
4
|
import type { ResourcePresentation, StackDetailState, StackTab } from "./detail-model.js";
|
|
4
5
|
export interface StackDetailViewProps {
|
|
5
6
|
readonly state: StackDetailState;
|
|
7
|
+
readonly planState?: PlanState;
|
|
8
|
+
readonly onReadPlanAgain?: () => void;
|
|
6
9
|
readonly copy: StackListCopy;
|
|
7
10
|
readonly tab: StackTab;
|
|
8
11
|
readonly onTabChange: (tab: StackTab) => void;
|
|
@@ -11,5 +14,5 @@ export interface StackDetailViewProps {
|
|
|
11
14
|
readonly resourceHref: (resource: ResourcePresentation) => string;
|
|
12
15
|
}
|
|
13
16
|
/** Controlled read-only module. The caller owns reads, owner identity, navigation and output safety proof. */
|
|
14
|
-
export declare const StackDetailView: ({ copy, onReadAgain, onTabChange, resourceHref, state, tab }: StackDetailViewProps) => ReactElement;
|
|
17
|
+
export declare const StackDetailView: ({ copy, onReadAgain, onReadPlanAgain, onTabChange, planState, resourceHref, state, tab }: StackDetailViewProps) => ReactElement;
|
|
15
18
|
//# sourceMappingURL=StackDetailView.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StackDetailView.d.ts","sourceRoot":"","sources":["../../src/presentation/StackDetailView.tsx"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAqB,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAI5G,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAA;IAChC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAA;IAC7C,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAA;IAChC,4GAA4G;IAC5G,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,MAAM,CAAA;CAClE;AAqJD,8GAA8G;AAC9G,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"StackDetailView.d.ts","sourceRoot":"","sources":["../../src/presentation/StackDetailView.tsx"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAqB,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAI5G,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAA;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAA;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;IACrC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAA;IAC7C,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAA;IAChC,4GAA4G;IAC5G,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,MAAM,CAAA;CAClE;AAqJD,8GAA8G;AAC9G,eAAO,MAAM,eAAe,6FASzB,oBAAoB,KAAG,YAwEzB,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Tabs, Text } from "@knpkv/rly/primitives";
|
|
3
3
|
import { useId } from "react";
|
|
4
|
+
import { PlanView } from "./PlanView.js";
|
|
4
5
|
import { DetailBoundary, DetailPanel, Missing, ProviderLink, RecordedTime, ResourceStatus } from "./detail-parts.js";
|
|
5
6
|
import { ResourceTree } from "./ResourceTree.js";
|
|
6
7
|
const Label = ({ children }) => (_jsx("span", { className: "ac-detail-mobile-label", "aria-hidden": "true", children: children }));
|
|
@@ -16,12 +17,12 @@ const Outputs = ({ outputs }) => {
|
|
|
16
17
|
return (_jsxs("section", { className: "ac-detail-section", "aria-labelledby": headingId, children: [_jsxs("div", { className: "ac-detail-section-heading", children: [_jsx(Text, { as: "h2", variant: "section-title", id: headingId, children: "Outputs" }), outputs !== null && outputs.length > 0 ? (_jsxs(Text, { variant: "meta", tone: "secondary", children: [outputs.length, " ", outputs.length === 1 ? "output" : "outputs", " \u00B7 ", hidden, " hidden"] })) : null] }), outputs === null ? (_jsx(DetailPanel, { title: "Not available yet", unavailable: true, children: "The outputs in this stack\u2019s state can\u2019t be read yet." })) : outputs.length === 0 ? (_jsx(DetailPanel, { title: "This stack has no outputs." })) : (_jsx("div", { className: "ac-detail-table-wrap", children: _jsxs("table", { className: "ac-detail-table ac-output-table", "aria-labelledby": headingId, children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: "Key" }), _jsx("th", { scope: "col", children: "Value" }), _jsx("th", { scope: "col", children: "Description" })] }) }), _jsx("tbody", { children: outputs.map((output) => (_jsxs("tr", { children: [_jsxs("th", { scope: "row", children: [_jsx(Label, { children: "Key" }), _jsx("span", { className: "ac-output-key", children: output.key })] }), _jsxs("td", { children: [_jsx(Label, { children: "Value" }), output.value._tag === "Hidden" ? (_jsx("span", { className: "ac-detail-muted", children: "Hidden" })) : (_jsx("span", { className: "ac-output-value", children: output.value.text }))] }), _jsxs("td", { className: "ac-detail-muted", children: [_jsx(Label, { children: "Description" }), output.description ?? _jsx(Missing, {})] })] }, output.key))) })] }) }))] }));
|
|
17
18
|
};
|
|
18
19
|
/** Controlled read-only module. The caller owns reads, owner identity, navigation and output safety proof. */
|
|
19
|
-
export const StackDetailView = ({ copy, onReadAgain, onTabChange, resourceHref, state, tab }) => {
|
|
20
|
+
export const StackDetailView = ({ copy, onReadAgain, onReadPlanAgain, onTabChange, planState = { _tag: "NotConnected" }, resourceHref, state, tab }) => {
|
|
20
21
|
if (state._tag !== "Ready")
|
|
21
22
|
return (_jsx("div", { className: "ac-detail", children: _jsx(DetailBoundary, { state: state, copy: copy, onReadAgain: onReadAgain }) }));
|
|
22
23
|
const stack = state.stack;
|
|
23
|
-
return (_jsxs("div", { className: "ac-detail", children: [_jsxs("header", { className: "ac-detail-header", children: [_jsxs("div", { className: "ac-detail-title-row", children: [_jsx(Text, { as: "h1", variant: "page-title", className: "ac-title", children: stack.app }), _jsx("span", { className: "ac-stage-badge", children: stack.stage })] }), _jsx(Text, { as: "p", tone: "secondary", className: "ac-description", children: "Infrastructure state. Read-only." })] }), _jsxs("dl", { className: "ac-stack-metadata", children: [_jsxs("div", { children: [_jsx("dt", { children: "Region" }), _jsx("dd", { children: "Unknown" })] }), _jsxs("div", { children: [_jsx("dt", { children: "Backend" }), _jsx("dd", { children: stack.backend === "s3" ? "State bucket" : "Local" })] }), _jsxs("div", { children: [_jsx("dt", { children: "Alchemy version" }), _jsx("dd", { className: "ac-resource-id", children: stack.alchemyVersion ?? "Unknown" })] }), _jsxs("div", { children: [_jsx("dt", { children: "Last deploy" }), _jsx("dd", { children: stack.lastDeploy === null ? "Unknown" : _jsx(RecordedTime, { value: stack.lastDeploy }) })] })] }), _jsx(Tabs, { className: "ac-detail-tabs", "aria-label": "Stack state", size: "large", value: tab, "data-mobile-layout": "single-row", onValueChange: (value) => {
|
|
24
|
-
if (value === "resources" || value === "outputs" || value === "state")
|
|
24
|
+
return (_jsxs("div", { className: "ac-detail", "data-plan": tab === "plan" ? "true" : undefined, children: [_jsxs("header", { className: "ac-detail-header", children: [_jsxs("div", { className: "ac-detail-title-row", children: [_jsx(Text, { as: "h1", variant: "page-title", className: "ac-title", children: stack.app }), _jsx("span", { className: "ac-stage-badge", children: stack.stage })] }), _jsx(Text, { as: "p", tone: "secondary", className: "ac-description", children: "Infrastructure state. Read-only." })] }), _jsxs("dl", { className: "ac-stack-metadata", children: [_jsxs("div", { children: [_jsx("dt", { children: "Region" }), _jsx("dd", { children: "Unknown" })] }), _jsxs("div", { children: [_jsx("dt", { children: "Backend" }), _jsx("dd", { children: stack.backend === "s3" ? "State bucket" : "Local" })] }), _jsxs("div", { children: [_jsx("dt", { children: "Alchemy version" }), _jsx("dd", { className: "ac-resource-id", children: stack.alchemyVersion ?? "Unknown" })] }), _jsxs("div", { children: [_jsx("dt", { children: "Last deploy" }), _jsx("dd", { children: stack.lastDeploy === null ? "Unknown" : _jsx(RecordedTime, { value: stack.lastDeploy }) })] })] }), _jsx(Tabs, { className: "ac-detail-tabs", "aria-label": "Stack state", size: "large", value: tab, "data-mobile-layout": "single-row", onValueChange: (value) => {
|
|
25
|
+
if (value === "resources" || value === "outputs" || value === "state" || value === "plan")
|
|
25
26
|
onTabChange(value);
|
|
26
27
|
}, items: [
|
|
27
28
|
{ value: "resources", label: "Resources", content: _jsx(Resources, { stack: stack, resourceHref: resourceHref }) },
|
|
@@ -30,6 +31,11 @@ export const StackDetailView = ({ copy, onReadAgain, onTabChange, resourceHref,
|
|
|
30
31
|
value: "state",
|
|
31
32
|
label: "State",
|
|
32
33
|
content: (_jsx(ResourceTree, { app: stack.app, stage: stack.stage, resources: stack.resources, resourceHref: resourceHref }))
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
value: "plan",
|
|
37
|
+
label: "Plan",
|
|
38
|
+
content: _jsx(PlanView, { state: planState, onReadAgain: onReadPlanAgain ?? onReadAgain })
|
|
33
39
|
}
|
|
34
40
|
] })] }));
|
|
35
41
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StackDetailView.js","sourceRoot":"","sources":["../../src/presentation/StackDetailView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,KAAK,EAAqB,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"StackDetailView.js","sourceRoot":"","sources":["../../src/presentation/StackDetailView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ export interface StackPresentation extends Omit<StackState, "resources" | "outpu
|
|
|
21
21
|
readonly resources: ReadonlyArray<ResourcePresentation>;
|
|
22
22
|
readonly outputs: ReadonlyArray<OutputPresentation> | null;
|
|
23
23
|
}
|
|
24
|
-
export type StackTab = "resources" | "outputs" | "state";
|
|
24
|
+
export type StackTab = "resources" | "outputs" | "state" | "plan";
|
|
25
25
|
/** Refresh and navigation replace the whole state, so a failed read cannot retain the previous stack. */
|
|
26
26
|
export type StackDetailState = {
|
|
27
27
|
readonly _tag: "Loading";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detail-model.d.ts","sourceRoot":"","sources":["../../src/presentation/detail-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE/D,2HAA2H;AAC3H,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC;IAC3E,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAA;CAC7D;AAED,0HAA0H;AAC1H,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAG;QAC5C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;QACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAA;KACzC,CAAA;IACD,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CACpC;AAED,wHAAwH;AACxH,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,SAAS,CAAC;IAClF,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAA;IACvD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAA;CAC3D;AAED,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"detail-model.d.ts","sourceRoot":"","sources":["../../src/presentation/detail-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE/D,2HAA2H;AAC3H,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC;IAC3E,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAA;CAC7D;AAED,0HAA0H;AAC1H,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAG;QAC5C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;QACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAA;KACzC,CAAA;IACD,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CACpC;AAED,wHAAwH;AACxH,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,SAAS,CAAC;IAClF,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAA;IACvD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAA;CAC3D;AAED,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;AAEjE,yGAAyG;AACzG,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,GAC7D;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,mBAAmB,CAAC,IAAI,GAAG,WAAW,GAAG,WAAW,CAAA;CAAE,CAAA"}
|
package/dist/server/Catalog.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export declare class StackSource extends StackSource_base {
|
|
|
18
18
|
}
|
|
19
19
|
declare const Catalog_base: Context.ServiceClass<Catalog, "@knpkv/alchemy-console/Catalog", {
|
|
20
20
|
readonly list: Effect.Effect<StackList, CatalogReadError>;
|
|
21
|
+
readonly identify: (id: StackId) => Effect.Effect<Omit<StackSummary, "id">, StackNotFound>;
|
|
21
22
|
readonly get: (id: StackId) => Effect.Effect<StackDetail, StackNotFound | CatalogReadError>;
|
|
22
23
|
}>;
|
|
23
24
|
export declare class Catalog extends Catalog_base {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Catalog.d.ts","sourceRoot":"","sources":["../../src/server/Catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAA0B,MAAM,QAAQ,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAChF,OAAO,EAA4C,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAExF,8GAA8G;AAC9G,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAA;CAC3D;;uBAGoB,MAAM,CAAC,MAAM,CAAC;QAC/B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,CAAA;QAC/C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;KAC/C,EAAE,gBAAgB,CAAC;;AAJtB,qBAAa,WAAY,SAAQ,gBAKS;CAAG;;mBAG5B,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"Catalog.d.ts","sourceRoot":"","sources":["../../src/server/Catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAA0B,MAAM,QAAQ,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAChF,OAAO,EAA4C,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAExF,8GAA8G;AAC9G,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAA;CAC3D;;uBAGoB,MAAM,CAAC,MAAM,CAAC;QAC/B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,CAAA;QAC/C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;KAC/C,EAAE,gBAAgB,CAAC;;AAJtB,qBAAa,WAAY,SAAQ,gBAKS;CAAG;;mBAG5B,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,gBAAgB,CAAC;uBACtC,CAAC,EAAE,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC;kBAC5E,CAAC,EAAE,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,GAAG,gBAAgB,CAAC;;AAH7F,qBAAa,OAAQ,SAAQ,YAIS;IACpC,MAAM,CAAC,QAAQ,CAAC,KAAK,2DAoFpB;CACF"}
|
package/dist/server/Catalog.js
CHANGED
|
@@ -76,7 +76,13 @@ export class Catalog extends Context.Service()("@knpkv/alchemy-console/Catalog")
|
|
|
76
76
|
}
|
|
77
77
|
};
|
|
78
78
|
});
|
|
79
|
-
|
|
79
|
+
const identify = Effect.fn("AlchemyConsole.catalogIdentify")(function* (id) {
|
|
80
|
+
const entry = (yield* Ref.get(entries)).get(id);
|
|
81
|
+
if (entry === undefined)
|
|
82
|
+
return yield* new StackNotFound({});
|
|
83
|
+
return entry.summary;
|
|
84
|
+
});
|
|
85
|
+
return Catalog.of({ list: list(), get, identify });
|
|
80
86
|
}));
|
|
81
87
|
}
|
|
82
88
|
/** Explicit projection prevents a private reader's extra fields from reaching a transport encoder. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Catalog.js","sourceRoot":"","sources":["../../src/server/Catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAEzE,OAAO,EAA6D,MAAM,cAAc,CAAA;AASxF,MAAM,OAAO,WAAY,SAAQ,OAAO,CAAC,OAAO,EAK5C,CAAC,oCAAoC,CAAC;CAAG;AAE7C,MAAM,OAAO,OAAQ,SAAQ,OAAO,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"Catalog.js","sourceRoot":"","sources":["../../src/server/Catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import * as OwnerSession from "@knpkv/browser-pairing/owner-session";
|
|
|
2
2
|
import { Layer } from "effect";
|
|
3
3
|
import { HttpRouter } from "effect/http";
|
|
4
4
|
import { Catalog } from "./Catalog.js";
|
|
5
|
+
import { PlanReader } from "./PlanReader.js";
|
|
5
6
|
/** Listener, source readers and owner session belong to the executable's runtime layer. */
|
|
6
|
-
export declare const application: Layer.Layer<never, import("effect/PlatformError").BadArgument | import("effect/PlatformError").PlatformError, Catalog | import("effect/FileSystem").FileSystem | import("effect/http/Etag").Generator | import("effect/http/HttpPlatform").HttpPlatform | HttpRouter.HttpRouter | OwnerSession.OwnerSession | import("effect/Path").Path | HttpRouter.Request<"Error", import("effect/http/HttpBody").HttpBodyError>>;
|
|
7
|
+
export declare const application: Layer.Layer<never, import("effect/PlatformError").BadArgument | import("effect/PlatformError").PlatformError, Catalog | import("effect/FileSystem").FileSystem | import("effect/http/Etag").Generator | import("effect/http/HttpPlatform").HttpPlatform | HttpRouter.HttpRouter | OwnerSession.OwnerSession | import("effect/Path").Path | PlanReader | HttpRouter.Request<"Error", import("effect/http/HttpBody").HttpBodyError>>;
|
|
7
8
|
//# sourceMappingURL=HttpApplication.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpApplication.d.ts","sourceRoot":"","sources":["../../src/server/HttpApplication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,sCAAsC,CAAA;AACpE,OAAO,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,UAAU,EAAyC,MAAM,aAAa,CAAA;AAI/E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"HttpApplication.d.ts","sourceRoot":"","sources":["../../src/server/HttpApplication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,sCAAsC,CAAA;AACpE,OAAO,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,UAAU,EAAyC,MAAM,aAAa,CAAA;AAI/E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AA6C5C,2FAA2F;AAC3F,eAAO,MAAM,WAAW,oaAKvB,CAAA"}
|
|
@@ -6,9 +6,11 @@ import { AlchemyConsoleApi } from "../api.js";
|
|
|
6
6
|
import { BootstrapRoutes } from "./Bootstrap.js";
|
|
7
7
|
import { Catalog } from "./Catalog.js";
|
|
8
8
|
import { ownerAuthLayer } from "./OwnerSession.js";
|
|
9
|
+
import { PlanReader } from "./PlanReader.js";
|
|
9
10
|
const handlers = HttpApiBuilder.group(AlchemyConsoleApi, "stacks", (handlers) => Effect.gen(function* () {
|
|
10
11
|
const catalog = yield* Catalog;
|
|
11
|
-
|
|
12
|
+
const plans = yield* PlanReader;
|
|
13
|
+
return handlers.handle("list", () => catalog.list).handle("get", ({ params }) => catalog.get(params.id)).handle("plan", ({ params }) => catalog.identify(params.id).pipe(Effect.flatMap((stack) => plans.read(stack.app, stack.stage))));
|
|
12
14
|
}));
|
|
13
15
|
/** Refuse unsafe/unmatched API requests before handlers; even refusals and missing routes cannot be cached. */
|
|
14
16
|
const boundary = Layer.unwrap(Effect.gen(function* () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpApplication.js","sourceRoot":"","sources":["../../src/server/HttpApplication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,sCAAsC,CAAA;AACpE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"HttpApplication.js","sourceRoot":"","sources":["../../src/server/HttpApplication.ts"],"names":[],"mappings":"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"}
|
package/dist/server/Launch.d.ts
CHANGED
|
@@ -3,5 +3,5 @@ import { Effect, Stdio } from "effect";
|
|
|
3
3
|
import { Catalog } from "./Catalog.js";
|
|
4
4
|
import { type ControlOptions } from "./ControlSocket.js";
|
|
5
5
|
/** The launch helper owns printing/opening; the catalog and server lifetime stay with this foreground process. */
|
|
6
|
-
export declare const runConsole: (options: ControlOptions, launch: BrowserLaunch, printOnly: boolean) => Effect.Effect<void, import("effect/PlatformError").BadArgument | BrowserLaunchOutputError | import("@knpkv/browser-pairing").BrowserPairingError | import("./ControlSocket.js").ControlError | import("@knpkv/browser-pairing").CredentialCookieError | import("effect/PlatformError").PlatformError | import("effect/http/HttpServerError").ServeError | import("@knpkv/browser-pairing/owner-session").UnsafeLoopbackAddressError, import("@knpkv/browser-pairing/launch").BrowserOpener | Catalog | import("effect/Crypto").Crypto | import("effect/FileSystem").FileSystem | import("effect/Path").Path | Stdio.Stdio>;
|
|
6
|
+
export declare const runConsole: (options: ControlOptions, launch: BrowserLaunch, printOnly: boolean) => Effect.Effect<void, import("effect/PlatformError").BadArgument | BrowserLaunchOutputError | import("@knpkv/browser-pairing").BrowserPairingError | import("./ControlSocket.js").ControlError | import("@knpkv/browser-pairing").CredentialCookieError | import("effect/PlatformError").PlatformError | import("effect/http/HttpServerError").ServeError | import("@knpkv/browser-pairing/owner-session").UnsafeLoopbackAddressError, import("@knpkv/browser-pairing/launch").BrowserOpener | Catalog | import("effect/Crypto").Crypto | import("effect/FileSystem").FileSystem | import("effect/Path").Path | import("./PlanReader.ts").PlanReader | Stdio.Stdio>;
|
|
7
7
|
//# sourceMappingURL=Launch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Launch.d.ts","sourceRoot":"","sources":["../../src/server/Launch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,wBAAwB,EAAe,MAAM,+BAA+B,CAAA;AAEzG,OAAO,EAAE,MAAM,EAAS,KAAK,EAAU,MAAM,QAAQ,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,oBAAoB,CAAA;AAGzE,kHAAkH;AAClH,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"Launch.d.ts","sourceRoot":"","sources":["../../src/server/Launch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,wBAAwB,EAAe,MAAM,+BAA+B,CAAA;AAEzG,OAAO,EAAE,MAAM,EAAS,KAAK,EAAU,MAAM,QAAQ,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,oBAAoB,CAAA;AAGzE,kHAAkH;AAClH,eAAO,MAAM,UAAU,2sBAqBrB,CAAA"}
|