alchemy 2.0.0-beta.23 → 2.0.0-beta.25
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/bin/alchemy.js +12574 -2451
- package/bin/alchemy.js.map +1 -1
- package/bin/alchemy.ts +2 -0
- package/bin/cli.js +18 -0
- package/bin/commands/bootstrap.ts +88 -4
- package/bin/commands/deploy.ts +54 -20
- package/bin/commands/dev.ts +45 -0
- package/bin/exec.ts +22 -0
- package/lib/AdoptPolicy.d.ts +2 -2
- package/lib/AdoptPolicy.d.ts.map +1 -1
- package/lib/AdoptPolicy.js.map +1 -1
- package/lib/AlchemyContext.d.ts +1 -0
- package/lib/AlchemyContext.d.ts.map +1 -1
- package/lib/AlchemyContext.js +1 -0
- package/lib/AlchemyContext.js.map +1 -1
- package/lib/Build/Command.d.ts.map +1 -1
- package/lib/Build/Command.js +8 -1
- package/lib/Build/Command.js.map +1 -1
- package/lib/Bundle/Bundle.d.ts +21 -9
- package/lib/Bundle/Bundle.d.ts.map +1 -1
- package/lib/Bundle/Bundle.js +29 -15
- package/lib/Bundle/Bundle.js.map +1 -1
- package/lib/Cloudflare/Local/Sidecar.d.ts +27 -0
- package/lib/Cloudflare/Local/Sidecar.d.ts.map +1 -0
- package/lib/Cloudflare/Local/Sidecar.js +24 -0
- package/lib/Cloudflare/Local/Sidecar.js.map +1 -0
- package/lib/Cloudflare/Local/SidecarHandlers.d.ts +5 -0
- package/lib/Cloudflare/Local/SidecarHandlers.d.ts.map +1 -0
- package/lib/Cloudflare/Local/SidecarHandlers.js +119 -0
- package/lib/Cloudflare/Local/SidecarHandlers.js.map +1 -0
- package/lib/Cloudflare/Local/SidecarServer.d.ts +2 -0
- package/lib/Cloudflare/Local/SidecarServer.d.ts.map +1 -0
- package/lib/Cloudflare/Local/SidecarServer.js +27 -0
- package/lib/Cloudflare/Local/SidecarServer.js.map +1 -0
- package/lib/Cloudflare/SecretsStore/Secret.d.ts.map +1 -1
- package/lib/Cloudflare/SecretsStore/Secret.js +55 -7
- package/lib/Cloudflare/SecretsStore/Secret.js.map +1 -1
- package/lib/Cloudflare/SecretsStore/SecretsStore.d.ts.map +1 -1
- package/lib/Cloudflare/SecretsStore/SecretsStore.js +35 -11
- package/lib/Cloudflare/SecretsStore/SecretsStore.js.map +1 -1
- package/lib/Cloudflare/StateStore/State.d.ts +35 -0
- package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
- package/lib/Cloudflare/StateStore/State.js +187 -45
- package/lib/Cloudflare/StateStore/State.js.map +1 -1
- package/lib/Cloudflare/StateStore/index.d.ts +1 -1
- package/lib/Cloudflare/StateStore/index.d.ts.map +1 -1
- package/lib/Cloudflare/StateStore/index.js +1 -1
- package/lib/Cloudflare/StateStore/index.js.map +1 -1
- package/lib/Cloudflare/Workers/Compatibility.d.ts +6 -0
- package/lib/Cloudflare/Workers/Compatibility.d.ts.map +1 -0
- package/lib/Cloudflare/Workers/Compatibility.js +10 -0
- package/lib/Cloudflare/Workers/Compatibility.js.map +1 -0
- package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts +7 -0
- package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -0
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js +81 -0
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -0
- package/lib/Cloudflare/Workers/Worker.d.ts +3 -1
- package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.js +89 -31
- package/lib/Cloudflare/Workers/Worker.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBundle.d.ts +31 -0
- package/lib/Cloudflare/Workers/WorkerBundle.d.ts.map +1 -0
- package/lib/Cloudflare/Workers/WorkerBundle.js +174 -0
- package/lib/Cloudflare/Workers/WorkerBundle.js.map +1 -0
- package/lib/Cloudflare/Workers/WorkerName.d.ts +3 -0
- package/lib/Cloudflare/Workers/WorkerName.d.ts.map +1 -0
- package/lib/Cloudflare/Workers/WorkerName.js +9 -0
- package/lib/Cloudflare/Workers/WorkerName.js.map +1 -0
- package/lib/Cloudflare/Workers/index.d.ts +1 -0
- package/lib/Cloudflare/Workers/index.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/index.js +1 -0
- package/lib/Cloudflare/Workers/index.js.map +1 -1
- package/lib/Platform.d.ts +1 -1
- package/lib/Platform.d.ts.map +1 -1
- package/lib/Sidecar/Lock.d.ts +24 -0
- package/lib/Sidecar/Lock.d.ts.map +1 -0
- package/lib/Sidecar/Lock.js +102 -0
- package/lib/Sidecar/Lock.js.map +1 -0
- package/lib/Sidecar/RpcClient.d.ts +15 -0
- package/lib/Sidecar/RpcClient.d.ts.map +1 -0
- package/lib/Sidecar/RpcClient.js +75 -0
- package/lib/Sidecar/RpcClient.js.map +1 -0
- package/lib/Sidecar/RpcHandler.d.ts +48 -0
- package/lib/Sidecar/RpcHandler.d.ts.map +1 -0
- package/lib/Sidecar/RpcHandler.js +64 -0
- package/lib/Sidecar/RpcHandler.js.map +1 -0
- package/lib/Sidecar/RpcPaths.d.ts +14 -0
- package/lib/Sidecar/RpcPaths.d.ts.map +1 -0
- package/lib/Sidecar/RpcPaths.js +22 -0
- package/lib/Sidecar/RpcPaths.js.map +1 -0
- package/lib/Sidecar/RpcServer.d.ts +10 -0
- package/lib/Sidecar/RpcServer.d.ts.map +1 -0
- package/lib/Sidecar/RpcServer.js +50 -0
- package/lib/Sidecar/RpcServer.js.map +1 -0
- package/lib/Sidecar/RpcTransport.d.ts +22 -0
- package/lib/Sidecar/RpcTransport.d.ts.map +1 -0
- package/lib/Sidecar/RpcTransport.js +81 -0
- package/lib/Sidecar/RpcTransport.js.map +1 -0
- package/lib/Telemetry/Metrics.d.ts +15 -0
- package/lib/Telemetry/Metrics.d.ts.map +1 -1
- package/lib/Telemetry/Metrics.js +20 -0
- package/lib/Telemetry/Metrics.js.map +1 -1
- package/lib/Util/PlatformServices.d.ts +3 -0
- package/lib/Util/PlatformServices.d.ts.map +1 -1
- package/lib/Util/PlatformServices.js +13 -0
- package/lib/Util/PlatformServices.js.map +1 -1
- package/lib/Util/layer-scoped.d.ts +16 -0
- package/lib/Util/layer-scoped.d.ts.map +1 -0
- package/lib/Util/layer-scoped.js +14 -0
- package/lib/Util/layer-scoped.js.map +1 -0
- package/package.json +4 -2
- package/src/AdoptPolicy.ts +9 -9
- package/src/AlchemyContext.ts +2 -0
- package/src/Build/Command.ts +8 -1
- package/src/Bundle/Bundle.ts +65 -25
- package/src/Cloudflare/Local/Sidecar.ts +44 -0
- package/src/Cloudflare/Local/SidecarHandlers.ts +182 -0
- package/src/Cloudflare/Local/SidecarServer.ts +57 -0
- package/src/Cloudflare/SecretsStore/Secret.ts +78 -7
- package/src/Cloudflare/SecretsStore/SecretsStore.ts +47 -12
- package/src/Cloudflare/StateStore/State.ts +281 -64
- package/src/Cloudflare/StateStore/index.ts +1 -1
- package/src/Cloudflare/Workers/Compatibility.ts +12 -0
- package/src/Cloudflare/Workers/LocalWorkerProvider.ts +93 -0
- package/src/Cloudflare/Workers/Worker.ts +151 -55
- package/src/Cloudflare/Workers/WorkerBundle.ts +234 -0
- package/src/Cloudflare/Workers/WorkerName.ts +10 -0
- package/src/Cloudflare/Workers/index.ts +1 -0
- package/src/Platform.ts +1 -1
- package/src/Sidecar/Lock.ts +190 -0
- package/src/Sidecar/RpcClient.ts +141 -0
- package/src/Sidecar/RpcHandler.ts +169 -0
- package/src/Sidecar/RpcPaths.ts +29 -0
- package/src/Sidecar/RpcServer.ts +80 -0
- package/src/Sidecar/RpcTransport.ts +85 -0
- package/src/Telemetry/Metrics.ts +38 -0
- package/src/Util/PlatformServices.ts +19 -0
- package/src/Util/layer-scoped.ts +25 -0
package/bin/alchemy.ts
CHANGED
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
destroyCommand,
|
|
18
18
|
planCommand,
|
|
19
19
|
} from "./commands/deploy.ts";
|
|
20
|
+
import { devCommand } from "./commands/dev.ts";
|
|
20
21
|
import { loginCommand } from "./commands/login.ts";
|
|
21
22
|
import { logsCommand } from "./commands/logs.ts";
|
|
22
23
|
import { profileCommand } from "./commands/profile.ts";
|
|
@@ -27,6 +28,7 @@ const root = Command.make("alchemy", {}).pipe(
|
|
|
27
28
|
Command.withSubcommands([
|
|
28
29
|
bootstrapCommand,
|
|
29
30
|
deployCommand,
|
|
31
|
+
devCommand,
|
|
30
32
|
destroyCommand,
|
|
31
33
|
planCommand,
|
|
32
34
|
tailCommand,
|
package/bin/cli.js
CHANGED
|
@@ -60,4 +60,22 @@ if (runtime === "bun" && useTs) {
|
|
|
60
60
|
|
|
61
61
|
args.push(useTs ? tsEntry : jsEntry, ...process.argv.slice(2));
|
|
62
62
|
|
|
63
|
+
process.on("uncaughtException", (error) => {
|
|
64
|
+
if (
|
|
65
|
+
error.message.includes(
|
|
66
|
+
"foreground-child watchdog process died unexpectedly!",
|
|
67
|
+
) &&
|
|
68
|
+
typeof error.cause === "object" &&
|
|
69
|
+
error.cause !== null &&
|
|
70
|
+
"watchedProcess" in error.cause &&
|
|
71
|
+
error.cause.watchedProcess !== null &&
|
|
72
|
+
"cmd" in error.cause.watchedProcess &&
|
|
73
|
+
error.cause.signal === "SIGINT"
|
|
74
|
+
) {
|
|
75
|
+
console.log("Interrupted.");
|
|
76
|
+
process.exit(0);
|
|
77
|
+
}
|
|
78
|
+
console.error(error);
|
|
79
|
+
});
|
|
80
|
+
|
|
63
81
|
foregroundChild(runtime, args);
|
|
@@ -18,10 +18,16 @@ import {
|
|
|
18
18
|
import * as AWSCredentials from "../../src/AWS/Credentials.ts";
|
|
19
19
|
import * as AWSEnvironment from "../../src/AWS/Environment.ts";
|
|
20
20
|
import * as AWSRegion from "../../src/AWS/Region.ts";
|
|
21
|
+
import { AuthProviders } from "../../src/Auth/AuthProvider.ts";
|
|
22
|
+
import { withProfileOverride } from "../../src/Auth/Profile.ts";
|
|
23
|
+
import { CloudflareAuth } from "../../src/Cloudflare/Auth/AuthProvider.ts";
|
|
24
|
+
import * as CloudflareCredentials from "../../src/Cloudflare/Credentials.ts";
|
|
25
|
+
import * as CloudflareEnvironment from "../../src/Cloudflare/CloudflareEnvironment.ts";
|
|
26
|
+
import { bootstrap as bootstrapCloudflare } from "../../src/Cloudflare/StateStore/State.ts";
|
|
21
27
|
import { loadConfigProvider } from "../../src/Util/ConfigProvider.ts";
|
|
22
28
|
import { fileLogger } from "../../src/Util/FileLogger.ts";
|
|
23
29
|
|
|
24
|
-
import { envFile, instrumentCommand } from "./_shared.ts";
|
|
30
|
+
import { envFile, instrumentCommand, profile } from "./_shared.ts";
|
|
25
31
|
|
|
26
32
|
const awsProfile = Flag.string("profile").pipe(
|
|
27
33
|
Flag.withDescription("AWS profile to use for credentials"),
|
|
@@ -42,8 +48,8 @@ const bootstrapDestroy = Flag.boolean("destroy").pipe(
|
|
|
42
48
|
Flag.withDefault(false),
|
|
43
49
|
);
|
|
44
50
|
|
|
45
|
-
|
|
46
|
-
"
|
|
51
|
+
const bootstrapAwsCommand = Command.make(
|
|
52
|
+
"aws",
|
|
47
53
|
{
|
|
48
54
|
envFile,
|
|
49
55
|
profile: awsProfile,
|
|
@@ -51,7 +57,7 @@ export const bootstrapCommand = Command.make(
|
|
|
51
57
|
destroy: bootstrapDestroy,
|
|
52
58
|
},
|
|
53
59
|
instrumentCommand(
|
|
54
|
-
"bootstrap",
|
|
60
|
+
"bootstrap.aws",
|
|
55
61
|
(a: { profile: string; region: string | undefined; destroy: boolean }) => ({
|
|
56
62
|
"alchemy.profile": a.profile,
|
|
57
63
|
"alchemy.region": a.region ?? "",
|
|
@@ -124,3 +130,81 @@ export const bootstrapCommand = Command.make(
|
|
|
124
130
|
}),
|
|
125
131
|
),
|
|
126
132
|
);
|
|
133
|
+
|
|
134
|
+
const cloudflareForce = Flag.boolean("force").pipe(
|
|
135
|
+
Flag.withDescription(
|
|
136
|
+
"Force a full redeploy even if the state-store worker already exists. " +
|
|
137
|
+
"Without this flag, an existing worker is adopted and only its credentials are refreshed.",
|
|
138
|
+
),
|
|
139
|
+
Flag.withDefault(false),
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
const cloudflareWorkerName = Flag.string("worker-name").pipe(
|
|
143
|
+
Flag.withDescription(
|
|
144
|
+
"Override the default state-store worker name (advanced; only needed for multiple state stores per account).",
|
|
145
|
+
),
|
|
146
|
+
Flag.optional,
|
|
147
|
+
Flag.map(Option.getOrUndefined),
|
|
148
|
+
);
|
|
149
|
+
|
|
150
|
+
const bootstrapCloudflareCommand = Command.make(
|
|
151
|
+
"cloudflare",
|
|
152
|
+
{
|
|
153
|
+
envFile,
|
|
154
|
+
profile,
|
|
155
|
+
force: cloudflareForce,
|
|
156
|
+
workerName: cloudflareWorkerName,
|
|
157
|
+
},
|
|
158
|
+
instrumentCommand(
|
|
159
|
+
"bootstrap.cloudflare",
|
|
160
|
+
(a: {
|
|
161
|
+
profile: string;
|
|
162
|
+
force: boolean;
|
|
163
|
+
workerName: string | undefined;
|
|
164
|
+
}) => ({
|
|
165
|
+
"alchemy.profile": a.profile,
|
|
166
|
+
"alchemy.force": a.force,
|
|
167
|
+
"alchemy.worker_name": a.workerName ?? "",
|
|
168
|
+
}),
|
|
169
|
+
)(
|
|
170
|
+
Effect.fnUntraced(function* ({ envFile, profile, force, workerName }) {
|
|
171
|
+
const logger = Logger.layer([fileLogger("bootstrap.txt")]);
|
|
172
|
+
|
|
173
|
+
// Wire up the same Cloudflare auth chain that
|
|
174
|
+
// `Cloudflare.state(...)` uses internally. CloudflareAuth is an
|
|
175
|
+
// `effectDiscard` layer that registers itself into the
|
|
176
|
+
// `AuthProviders` registry at build time, and downstream layers
|
|
177
|
+
// (`fromProfile`, `fromAuthProvider`) plus the deploy stack all
|
|
178
|
+
// look the registry back up through `getAuthProvider`. We need
|
|
179
|
+
// the registry to remain visible all the way through, so the
|
|
180
|
+
// composition uses `provideMerge` (provides + re-exports) rather
|
|
181
|
+
// than `provide` (provides + hides).
|
|
182
|
+
const authProviders: AuthProviders["Service"] = {};
|
|
183
|
+
const authRegistry = Layer.succeed(AuthProviders, authProviders);
|
|
184
|
+
const authLayer = Layer.provideMerge(CloudflareAuth, authRegistry);
|
|
185
|
+
const cloudflareLayers = Layer.provideMerge(
|
|
186
|
+
Layer.mergeAll(
|
|
187
|
+
CloudflareCredentials.fromAuthProvider(),
|
|
188
|
+
CloudflareEnvironment.fromProfile(),
|
|
189
|
+
),
|
|
190
|
+
authLayer,
|
|
191
|
+
);
|
|
192
|
+
|
|
193
|
+
const services = Layer.mergeAll(
|
|
194
|
+
cloudflareLayers,
|
|
195
|
+
ConfigProvider.layer(
|
|
196
|
+
withProfileOverride(yield* loadConfigProvider(envFile), profile),
|
|
197
|
+
),
|
|
198
|
+
logger,
|
|
199
|
+
);
|
|
200
|
+
|
|
201
|
+
yield* bootstrapCloudflare({ workerName, force }).pipe(
|
|
202
|
+
Effect.provide(services),
|
|
203
|
+
);
|
|
204
|
+
}),
|
|
205
|
+
),
|
|
206
|
+
);
|
|
207
|
+
|
|
208
|
+
export const bootstrapCommand = Command.make("bootstrap", {}).pipe(
|
|
209
|
+
Command.withSubcommands([bootstrapAwsCommand, bootstrapCloudflareCommand]),
|
|
210
|
+
);
|
package/bin/commands/deploy.ts
CHANGED
|
@@ -4,8 +4,12 @@ import * as Effect from "effect/Effect";
|
|
|
4
4
|
import * as Layer from "effect/Layer";
|
|
5
5
|
import * as Logger from "effect/Logger";
|
|
6
6
|
import * as Option from "effect/Option";
|
|
7
|
+
import * as Schema from "effect/Schema";
|
|
7
8
|
import * as Command from "effect/unstable/cli/Command";
|
|
9
|
+
import * as Flag from "effect/unstable/cli/Flag";
|
|
8
10
|
|
|
11
|
+
import { AdoptPolicy } from "../../src/AdoptPolicy.ts";
|
|
12
|
+
import { AlchemyContext } from "../../src/AlchemyContext.ts";
|
|
9
13
|
import { apply } from "../../src/Apply.ts";
|
|
10
14
|
import { ArtifactStore, createArtifactStore } from "../../src/Artifacts.ts";
|
|
11
15
|
import { AuthProviders } from "../../src/Auth/AuthProvider.ts";
|
|
@@ -28,24 +32,40 @@ import {
|
|
|
28
32
|
yes,
|
|
29
33
|
} from "./_shared.ts";
|
|
30
34
|
|
|
31
|
-
const
|
|
32
|
-
main:
|
|
33
|
-
stage:
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
export const ExecStackOptions = Schema.Struct({
|
|
36
|
+
main: Schema.String,
|
|
37
|
+
stage: Schema.String,
|
|
38
|
+
envFile: Schema.OptionFromOptional(Schema.String),
|
|
39
|
+
profile: Schema.optional(Schema.String),
|
|
40
|
+
dryRun: Schema.optional(Schema.Boolean),
|
|
41
|
+
force: Schema.optional(Schema.Boolean),
|
|
42
|
+
yes: Schema.optional(Schema.Boolean),
|
|
43
|
+
destroy: Schema.optional(Schema.Boolean),
|
|
44
|
+
dev: Schema.optional(Schema.Boolean),
|
|
45
|
+
adopt: Schema.optional(Schema.Boolean),
|
|
46
|
+
});
|
|
47
|
+
export type ExecStackOptions = typeof ExecStackOptions.Type;
|
|
48
|
+
|
|
49
|
+
const stackSpanAttrs = (args: ExecStackOptions) => ({
|
|
40
50
|
"alchemy.stage": args.stage,
|
|
41
51
|
"alchemy.profile": args.profile,
|
|
42
52
|
"alchemy.main": args.main,
|
|
43
53
|
"alchemy.dry_run": !!args.dryRun,
|
|
44
54
|
"alchemy.force": !!args.force,
|
|
45
55
|
"alchemy.destroy": !!args.destroy,
|
|
56
|
+
"alchemy.dev": !!args.dev,
|
|
57
|
+
"alchemy.adopt": !!args.adopt,
|
|
46
58
|
});
|
|
47
59
|
|
|
48
|
-
const
|
|
60
|
+
const adopt = Flag.boolean("adopt").pipe(
|
|
61
|
+
Flag.withDescription(
|
|
62
|
+
"Adopt pre-existing cloud resources that conflict with this stack instead of failing. " +
|
|
63
|
+
"Useful for re-importing infrastructure into a fresh state store.",
|
|
64
|
+
),
|
|
65
|
+
Flag.withDefault(false),
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
export const execStack = Effect.fn(function* ({
|
|
49
69
|
main,
|
|
50
70
|
stage,
|
|
51
71
|
envFile,
|
|
@@ -54,19 +74,28 @@ const execStack = Effect.fn(function* ({
|
|
|
54
74
|
force = false,
|
|
55
75
|
yes = false,
|
|
56
76
|
destroy = false,
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
envFile: Option.Option<string>;
|
|
61
|
-
profile: string;
|
|
62
|
-
dryRun?: boolean;
|
|
63
|
-
force?: boolean;
|
|
64
|
-
yes?: boolean;
|
|
65
|
-
destroy?: boolean;
|
|
66
|
-
}) {
|
|
77
|
+
dev = false,
|
|
78
|
+
adopt = false,
|
|
79
|
+
}: ExecStackOptions) {
|
|
67
80
|
const stackEffect = yield* importStack(main);
|
|
68
81
|
|
|
69
82
|
const services = Layer.mergeAll(
|
|
83
|
+
Layer.effect(
|
|
84
|
+
AlchemyContext,
|
|
85
|
+
AlchemyContext.asEffect().pipe(
|
|
86
|
+
Effect.map((ctx) => ({
|
|
87
|
+
...ctx,
|
|
88
|
+
dev,
|
|
89
|
+
})),
|
|
90
|
+
),
|
|
91
|
+
),
|
|
92
|
+
// `--adopt` opts the entire deploy in to adoption-on-conflict.
|
|
93
|
+
// Resource providers that wire `AdoptPolicy` (Worker domains,
|
|
94
|
+
// Cloudflare.SecretsStore, etc.) will reconcile against
|
|
95
|
+
// pre-existing cloud resources instead of failing on duplicates.
|
|
96
|
+
// Default is `false` so an unintentional collision still surfaces
|
|
97
|
+
// loudly.
|
|
98
|
+
Layer.succeed(AdoptPolicy, adopt),
|
|
70
99
|
Layer.succeed(ArtifactStore, createArtifactStore()),
|
|
71
100
|
Layer.succeed(
|
|
72
101
|
AuthProviders,
|
|
@@ -120,6 +149,10 @@ const execStack = Effect.fn(function* ({
|
|
|
120
149
|
if (outputs !== undefined) {
|
|
121
150
|
yield* Console.log(outputs);
|
|
122
151
|
}
|
|
152
|
+
|
|
153
|
+
if (dev) {
|
|
154
|
+
yield* Effect.never;
|
|
155
|
+
}
|
|
123
156
|
}
|
|
124
157
|
}).pipe(Effect.provide(stack.services));
|
|
125
158
|
}).pipe(Effect.provide(services));
|
|
@@ -135,6 +168,7 @@ export const deployCommand = Command.make(
|
|
|
135
168
|
stage,
|
|
136
169
|
yes,
|
|
137
170
|
profile,
|
|
171
|
+
adopt,
|
|
138
172
|
},
|
|
139
173
|
instrumentCommand("deploy", stackSpanAttrs)(execStack),
|
|
140
174
|
);
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Schema from "effect/Schema";
|
|
3
|
+
import * as Command from "effect/unstable/cli/Command";
|
|
4
|
+
import * as ChildProcess from "effect/unstable/process/ChildProcess";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
import { envFile, force, main, profile, stage } from "./_shared.ts";
|
|
7
|
+
import { ExecStackOptions } from "./deploy.ts";
|
|
8
|
+
|
|
9
|
+
export const devCommand = Command.make(
|
|
10
|
+
"dev",
|
|
11
|
+
{
|
|
12
|
+
force,
|
|
13
|
+
main,
|
|
14
|
+
envFile,
|
|
15
|
+
stage,
|
|
16
|
+
profile,
|
|
17
|
+
},
|
|
18
|
+
Effect.fn(function* (args) {
|
|
19
|
+
const options = yield* Schema.encodeEffect(ExecStackOptions)({
|
|
20
|
+
...args,
|
|
21
|
+
yes: true,
|
|
22
|
+
dev: true,
|
|
23
|
+
});
|
|
24
|
+
const bin = typeof globalThis.Bun !== "undefined" ? "bun" : "node";
|
|
25
|
+
const child = yield* ChildProcess.make(
|
|
26
|
+
bin,
|
|
27
|
+
[
|
|
28
|
+
"run",
|
|
29
|
+
"--watch",
|
|
30
|
+
"--no-clear-screen",
|
|
31
|
+
fileURLToPath(import.meta.resolve("../exec.ts")),
|
|
32
|
+
],
|
|
33
|
+
{
|
|
34
|
+
stdin: "inherit",
|
|
35
|
+
stdout: "inherit",
|
|
36
|
+
stderr: "inherit",
|
|
37
|
+
env: {
|
|
38
|
+
ALCHEMY_EXEC_OPTIONS: JSON.stringify(options),
|
|
39
|
+
},
|
|
40
|
+
extendEnv: true,
|
|
41
|
+
},
|
|
42
|
+
);
|
|
43
|
+
yield* child.exitCode;
|
|
44
|
+
}),
|
|
45
|
+
);
|
package/bin/exec.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as ConfigProvider from "effect/ConfigProvider";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Layer from "effect/Layer";
|
|
4
|
+
import * as Schema from "effect/Schema";
|
|
5
|
+
import * as FetchHttpClient from "effect/unstable/http/FetchHttpClient";
|
|
6
|
+
import { AlchemyContextLive } from "../src/AlchemyContext.ts";
|
|
7
|
+
import { inkCLI } from "../src/Cli/InkCLI.tsx";
|
|
8
|
+
import { PlatformServices, runMain } from "../src/Util/PlatformServices.ts";
|
|
9
|
+
import { execStack, ExecStackOptions } from "./commands/deploy.ts";
|
|
10
|
+
|
|
11
|
+
const services = Layer.mergeAll(
|
|
12
|
+
Layer.provideMerge(AlchemyContextLive, PlatformServices),
|
|
13
|
+
FetchHttpClient.layer,
|
|
14
|
+
ConfigProvider.layer(ConfigProvider.fromEnv()),
|
|
15
|
+
inkCLI(),
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
const options = Schema.decodeSync(ExecStackOptions)(
|
|
19
|
+
JSON.parse(process.env.ALCHEMY_EXEC_OPTIONS!),
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
execStack(options).pipe(Effect.provide(services), Effect.scoped, runMain);
|
package/lib/AdoptPolicy.d.ts
CHANGED
|
@@ -4,8 +4,8 @@ declare const AdoptPolicy_base: Context.ServiceClass<AdoptPolicy, "AdoptPolicy",
|
|
|
4
4
|
export declare class AdoptPolicy extends AdoptPolicy_base {
|
|
5
5
|
}
|
|
6
6
|
export declare const adopt: {
|
|
7
|
-
(enabled?: boolean): <
|
|
8
|
-
<
|
|
7
|
+
(enabled?: boolean): <A, E, R = never>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
8
|
+
<R1 = never>(enabled: Effect.Effect<boolean, never, R1>): <A, E, R2 = never>(effect: Effect.Effect<A, E, R2>) => Effect.Effect<A, E, R1 | R2>;
|
|
9
9
|
};
|
|
10
10
|
export {};
|
|
11
11
|
//# sourceMappingURL=AdoptPolicy.d.ts.map
|
package/lib/AdoptPolicy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdoptPolicy.d.ts","sourceRoot":"","sources":["../src/AdoptPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;;AAExC,qBAAa,WAAY,SAAQ,gBAEhC;CAAG;AAEJ,eAAO,MAAM,KAAK,EAAE;IAClB,CACE,OAAO,CAAC,EAAE,OAAO,GAChB,CAAC,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"AdoptPolicy.d.ts","sourceRoot":"","sources":["../src/AdoptPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;;AAExC,qBAAa,WAAY,SAAQ,gBAEhC;CAAG;AAEJ,eAAO,MAAM,KAAK,EAAE;IAClB,CACE,OAAO,CAAC,EAAE,OAAO,GAChB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC,EAAE,GAAG,KAAK,EACT,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,GACzC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;CAOvB,CAAC"}
|
package/lib/AdoptPolicy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdoptPolicy.js","sourceRoot":"","sources":["../src/AdoptPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,MAAM,OAAO,WAAY,SAAQ,OAAO,CAAC,OAAO,EAAwB,CACtE,aAAa,CACd;CAAG;AAEJ,MAAM,CAAC,MAAM,KAAK,GAWd,CAAC,CAAC,OAAqD,EAAE,EAAE,CAC7D,CAAC,
|
|
1
|
+
{"version":3,"file":"AdoptPolicy.js","sourceRoot":"","sources":["../src/AdoptPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,MAAM,OAAO,WAAY,SAAQ,OAAO,CAAC,OAAO,EAAwB,CACtE,aAAa,CACd;CAAG;AAEJ,MAAM,CAAC,MAAM,KAAK,GAWd,CAAC,CAAC,OAAqD,EAAE,EAAE,CAC7D,CAAC,GAAiC,EAAE,EAAE,CACpC,GAAG,CAAC,IAAI,CACN,OAAO,OAAO,KAAK,SAAS;IAC1B,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,IAAI,IAAI,CAAC;IACrD,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,CACtD,CAAQ,CAAC"}
|
package/lib/AlchemyContext.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import * as Path from "effect/Path";
|
|
|
5
5
|
declare const AlchemyContext_base: EffectContext.ServiceClass<AlchemyContext, "alchemy/Context", {
|
|
6
6
|
dotAlchemy: string;
|
|
7
7
|
updateStateStore: boolean;
|
|
8
|
+
dev: boolean;
|
|
8
9
|
}>;
|
|
9
10
|
export declare class AlchemyContext extends AlchemyContext_base {
|
|
10
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlchemyContext.d.ts","sourceRoot":"","sources":["../src/AlchemyContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;;gBAKpB,MAAM;sBACA,OAAO;;
|
|
1
|
+
{"version":3,"file":"AlchemyContext.d.ts","sourceRoot":"","sources":["../src/AlchemyContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;;gBAKpB,MAAM;sBACA,OAAO;SACpB,OAAO;;AALhB,qBAAa,cAAe,SAAQ,mBAOd;CAAG;AAEzB,eAAO,MAAM,kBAAkB,8GAa9B,CAAC"}
|
package/lib/AlchemyContext.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlchemyContext.js","sourceRoot":"","sources":["../src/AlchemyContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAEpC,MAAM,OAAO,cAAe,SAAQ,aAAa,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"AlchemyContext.js","sourceRoot":"","sources":["../src/AlchemyContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAEpC,MAAM,OAAO,cAAe,SAAQ,aAAa,CAAC,OAAO,EAOtD,CAAC,iBAAiB,CAAC;CAAG;AAEzB,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAC5C,cAAc,EACd,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;IACxC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;IACjD,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,OAAO;QACL,UAAU,EAAE,GAAG;QACf,gBAAgB,EAAE,KAAK;QACvB,GAAG,EAAE,KAAK;KACX,CAAC;AACJ,CAAC,CAAC,CACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Command.d.ts","sourceRoot":"","sources":["../../src/Build/Command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAE5D,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,OAAQ,SAAQ,QAAQ,CACvC,eAAe,EACf,YAAY,EACZ;IACE;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd,CACF;CAAG;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,OAAO,iDAAqC,CAAC;AAE1D,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"Command.d.ts","sourceRoot":"","sources":["../../src/Build/Command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAE5D,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,OAAQ,SAAQ,QAAQ,CACvC,eAAe,EACf,YAAY,EACZ;IACE;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd,CACF;CAAG;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,OAAO,iDAAqC,CAAC;AAE1D,eAAO,MAAM,eAAe,qNA8GzB,CAAC;AAEJ,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,eAAO,MAAM,gBAAgB;;;;0JAa3B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;mHA2B1B,CAAC"}
|
package/lib/Build/Command.js
CHANGED
|
@@ -86,12 +86,19 @@ export const CommandProvider = () => Provider.effect(Command, Effect.gen(functio
|
|
|
86
86
|
if (!output) {
|
|
87
87
|
return undefined;
|
|
88
88
|
}
|
|
89
|
+
// Recompute the output path against the *current* cwd. State
|
|
90
|
+
// may have been written by a different machine (e.g. CI) and
|
|
91
|
+
// the absolute path baked into `output.outdir` won't exist
|
|
92
|
+
// locally. As long as the path resolved against this
|
|
93
|
+
// machine's cwd is present, return the refreshed output so
|
|
94
|
+
// downstream consumers (e.g. `Cloudflare.Worker` assets)
|
|
95
|
+
// don't try to read a stale, foreign-machine path.
|
|
89
96
|
const outputPath = getOutputPath(olds);
|
|
90
97
|
const exists = yield* fs.exists(outputPath);
|
|
91
98
|
if (!exists) {
|
|
92
99
|
return undefined;
|
|
93
100
|
}
|
|
94
|
-
return output;
|
|
101
|
+
return { ...output, outdir: outputPath };
|
|
95
102
|
}),
|
|
96
103
|
create: Effect.fnUntraced(function* ({ news, session }) {
|
|
97
104
|
const hash = yield* hashDirectory(news);
|
package/lib/Build/Command.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Command.js","sourceRoot":"","sources":["../../src/Build/Command.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Command.js","sourceRoot":"","sources":["../../src/Build/Command.ts"],"names":[],"mappings":"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"}
|
package/lib/Bundle/Bundle.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
2
|
import * as Path from "effect/Path";
|
|
3
|
-
import * as
|
|
3
|
+
import * as Schema from "effect/Schema";
|
|
4
4
|
import * as Stream from "effect/Stream";
|
|
5
5
|
import * as rolldown from "rolldown";
|
|
6
6
|
import { type PurePluginOptions } from "./PurePlugin.ts";
|
|
@@ -37,13 +37,25 @@ export interface BundleFile {
|
|
|
37
37
|
readonly content: string | Uint8Array<ArrayBufferLike>;
|
|
38
38
|
readonly hash: string;
|
|
39
39
|
}
|
|
40
|
-
declare const BundleError_base:
|
|
41
|
-
readonly
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
declare const BundleError_base: Schema.Class<BundleError, Schema.TaggedStruct<"BundleError", {
|
|
41
|
+
readonly message: Schema.String;
|
|
42
|
+
readonly cause: Schema.optional<Schema.Defect>;
|
|
43
|
+
}>, import("effect/Cause").YieldableError>;
|
|
44
|
+
export declare class BundleError extends BundleError_base {
|
|
45
|
+
}
|
|
46
|
+
export type BundleWatchEvent = BundleWatchEvent.Start | BundleWatchEvent.Success | BundleWatchEvent.Error;
|
|
47
|
+
export declare namespace BundleWatchEvent {
|
|
48
|
+
interface Start {
|
|
49
|
+
readonly _tag: "Start";
|
|
50
|
+
}
|
|
51
|
+
interface Success {
|
|
52
|
+
readonly _tag: "Success";
|
|
53
|
+
readonly output: BundleOutput;
|
|
54
|
+
}
|
|
55
|
+
interface Error {
|
|
56
|
+
readonly _tag: "Error";
|
|
57
|
+
readonly error: BundleError;
|
|
58
|
+
}
|
|
47
59
|
}
|
|
48
60
|
/**
|
|
49
61
|
* Build a bundle using rolldown from the given input options and output options.
|
|
@@ -58,7 +70,7 @@ export declare const build: (inputOptions: rolldown.InputOptions, outputOptions?
|
|
|
58
70
|
* @param outputOptions - The output options for the bundle.
|
|
59
71
|
* @returns A stream of Result instances containing either the bundle output or an error.
|
|
60
72
|
*/
|
|
61
|
-
export declare const watch: (inputOptions: rolldown.InputOptions, outputOptions?: rolldown.OutputOptions, extra?: BundleExtraOptions) => Stream.Stream<
|
|
73
|
+
export declare const watch: (inputOptions: rolldown.InputOptions, outputOptions?: rolldown.OutputOptions, extra?: BundleExtraOptions) => Stream.Stream<BundleWatchEvent>;
|
|
62
74
|
export declare const virtualEntryPlugin: Effect.Effect<(content: (importPath: string) => string) => {
|
|
63
75
|
name: string;
|
|
64
76
|
options(this: rolldown.MinimalPluginContext, inputOptions: rolldown.InputOptions): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bundle.d.ts","sourceRoot":"","sources":["../../src/Bundle/Bundle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Bundle.d.ts","sourceRoot":"","sources":["../../src/Bundle/Bundle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAEpC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAErC,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAErE;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;OASG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,KAAK,CAAC;CAC3C;AAED,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;IAC9C;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;;;;;AAED,qBAAa,WAAY,SAAQ,gBAMhC;CAAG;AAEJ,MAAM,MAAM,gBAAgB,GACxB,gBAAgB,CAAC,KAAK,GACtB,gBAAgB,CAAC,OAAO,GACxB,gBAAgB,CAAC,KAAK,CAAC;AAE3B,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC,UAAU,KAAK;QACb,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;KACxB;IACD,UAAU,OAAO;QACf,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;QACzB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;KAC/B;IACD,UAAU,KAAK;QACb,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QACvB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;KAC7B;CACF;AAED;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAChB,cAAc,QAAQ,CAAC,YAAY,EACnC,gBAAgB,QAAQ,CAAC,aAAa,EACtC,QAAQ,kBAAkB,KACzB,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAqBvC,CAAC;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAChB,cAAc,QAAQ,CAAC,YAAY,EACnC,gBAAgB,QAAQ,CAAC,aAAa,EACtC,QAAQ,kBAAkB,KACzB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAsE9B,CAAC;AAKJ,eAAO,MAAM,kBAAkB,0BAEZ,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;oBA2B/C,CAAC;AAEH,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,QAAQ,CAAC,YAAY,GAC5B,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAiB1C"}
|
package/lib/Bundle/Bundle.js
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import * as Data from "effect/Data";
|
|
2
1
|
import * as Effect from "effect/Effect";
|
|
3
2
|
import * as Path from "effect/Path";
|
|
4
3
|
import * as Queue from "effect/Queue";
|
|
5
|
-
import * as
|
|
4
|
+
import * as Schema from "effect/Schema";
|
|
6
5
|
import * as Stream from "effect/Stream";
|
|
7
6
|
import assert from "node:assert";
|
|
8
7
|
import * as rolldown from "rolldown";
|
|
9
8
|
import { sha256, sha256Object } from "../Util/sha256.js";
|
|
10
9
|
import { purePlugin } from "./PurePlugin.js";
|
|
11
|
-
export class BundleError extends
|
|
10
|
+
export class BundleError extends Schema.TaggedErrorClass()("BundleError", {
|
|
11
|
+
message: Schema.String,
|
|
12
|
+
cause: Schema.optional(Schema.DefectWithStack),
|
|
13
|
+
}) {
|
|
12
14
|
}
|
|
13
15
|
/**
|
|
14
16
|
* Build a bundle using rolldown from the given input options and output options.
|
|
@@ -48,8 +50,16 @@ export const watch = (inputOptions, outputOptions, extra) => Stream.callback((qu
|
|
|
48
50
|
// The watcher event listener does not receive the bundle output, so we grab it using a plugin.
|
|
49
51
|
{
|
|
50
52
|
name: "alchemy:watch-bundle",
|
|
53
|
+
watchChange() {
|
|
54
|
+
Queue.offerUnsafe(queue, {
|
|
55
|
+
_tag: "Start",
|
|
56
|
+
});
|
|
57
|
+
},
|
|
51
58
|
generateBundle(_outputOptions, bundle) {
|
|
52
|
-
Queue.offerUnsafe(queue,
|
|
59
|
+
Queue.offerUnsafe(queue, {
|
|
60
|
+
_tag: "Success",
|
|
61
|
+
output: bundle,
|
|
62
|
+
});
|
|
53
63
|
},
|
|
54
64
|
},
|
|
55
65
|
],
|
|
@@ -57,7 +67,10 @@ export const watch = (inputOptions, outputOptions, extra) => Stream.callback((qu
|
|
|
57
67
|
});
|
|
58
68
|
watcher.on("event", (event) => {
|
|
59
69
|
if (event.code === "ERROR") {
|
|
60
|
-
Queue.offerUnsafe(queue,
|
|
70
|
+
Queue.offerUnsafe(queue, {
|
|
71
|
+
_tag: "Error",
|
|
72
|
+
error: bundleErrorFromUnknown(event.error),
|
|
73
|
+
});
|
|
61
74
|
}
|
|
62
75
|
else if (event.code === "BUNDLE_END") {
|
|
63
76
|
// This must be called to avoid resource leaks.
|
|
@@ -65,17 +78,18 @@ export const watch = (inputOptions, outputOptions, extra) => Stream.callback((qu
|
|
|
65
78
|
}
|
|
66
79
|
});
|
|
67
80
|
return watcher;
|
|
68
|
-
}), (watcher) => Effect.promise(() => watcher.close()))).pipe(Stream.mapEffect((
|
|
69
|
-
if (
|
|
70
|
-
return
|
|
71
|
-
}
|
|
72
|
-
return yield* bundleOutputFromRolldownOutputBundle(result.success).pipe(Effect.map(Result.succeed), Effect.catch((error) => Effect.succeed(Result.fail(error))));
|
|
73
|
-
})), Stream.changesWith((left, right) => {
|
|
74
|
-
if (left._tag === "Success" && right._tag === "Success") {
|
|
75
|
-
return left.success.hash === right.success.hash;
|
|
81
|
+
}), (watcher) => Effect.promise(() => watcher.close()))).pipe(Stream.mapEffect((event) => Effect.gen(function* () {
|
|
82
|
+
if (event._tag !== "Success") {
|
|
83
|
+
return event;
|
|
76
84
|
}
|
|
77
|
-
return
|
|
78
|
-
|
|
85
|
+
return yield* bundleOutputFromRolldownOutputBundle(event.output).pipe(Effect.map((output) => ({
|
|
86
|
+
_tag: "Success",
|
|
87
|
+
output,
|
|
88
|
+
})), Effect.catch((error) => Effect.succeed({
|
|
89
|
+
_tag: "Error",
|
|
90
|
+
error: bundleErrorFromUnknown(error),
|
|
91
|
+
})));
|
|
92
|
+
})));
|
|
79
93
|
const ENTRY_MODULE_ID = "virtual:alchemy-entry";
|
|
80
94
|
const ENTRY_MODULE_REGEX = new RegExp(`^${ENTRY_MODULE_ID}$`);
|
|
81
95
|
export const virtualEntryPlugin = Effect.gen(function* () {
|
package/lib/Bundle/Bundle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bundle.js","sourceRoot":"","sources":["../../src/Bundle/Bundle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Bundle.js","sourceRoot":"","sources":["../../src/Bundle/Bundle.ts"],"names":[],"mappings":"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"}
|