alchemy 2.0.0-beta.64 → 2.0.0-beta.65
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/lib/AWS/EC2/InternetGateway.d.ts.map +1 -1
- package/lib/AWS/EC2/InternetGateway.js +8 -3
- package/lib/AWS/EC2/InternetGateway.js.map +1 -1
- package/lib/AWS/EC2/LingeringEnis.d.ts +26 -0
- package/lib/AWS/EC2/LingeringEnis.d.ts.map +1 -0
- package/lib/AWS/EC2/LingeringEnis.js +128 -0
- package/lib/AWS/EC2/LingeringEnis.js.map +1 -0
- package/lib/AWS/EC2/SecurityGroup.d.ts.map +1 -1
- package/lib/AWS/EC2/SecurityGroup.js +14 -14
- package/lib/AWS/EC2/SecurityGroup.js.map +1 -1
- package/lib/AWS/EC2/Subnet.d.ts.map +1 -1
- package/lib/AWS/EC2/Subnet.js +13 -21
- package/lib/AWS/EC2/Subnet.js.map +1 -1
- package/lib/AWS/ECR/Image.d.ts +1 -0
- package/lib/AWS/ECR/Image.d.ts.map +1 -1
- package/lib/AWS/EKS/Addon.d.ts.map +1 -1
- package/lib/AWS/EKS/Addon.js +15 -3
- package/lib/AWS/EKS/Addon.js.map +1 -1
- package/lib/AWS/EKS/Deployment.d.ts +10 -1
- package/lib/AWS/EKS/Deployment.d.ts.map +1 -1
- package/lib/AWS/EKS/Deployment.js +10 -4
- package/lib/AWS/EKS/Deployment.js.map +1 -1
- package/lib/AWS/EKS/HyperPod.d.ts +57 -0
- package/lib/AWS/EKS/HyperPod.d.ts.map +1 -0
- package/lib/AWS/EKS/HyperPod.js +46 -0
- package/lib/AWS/EKS/HyperPod.js.map +1 -0
- package/lib/AWS/EKS/Job.d.ts +10 -1
- package/lib/AWS/EKS/Job.d.ts.map +1 -1
- package/lib/AWS/EKS/Job.js +16 -6
- package/lib/AWS/EKS/Job.js.map +1 -1
- package/lib/AWS/EKS/internal/client.d.ts +4 -3
- package/lib/AWS/EKS/internal/client.d.ts.map +1 -1
- package/lib/AWS/EKS/internal/client.js +33 -2
- package/lib/AWS/EKS/internal/client.js.map +1 -1
- package/lib/AWS/Lambda/Function.d.ts.map +1 -1
- package/lib/AWS/Lambda/Function.js +1 -1
- package/lib/AWS/Lambda/Function.js.map +1 -1
- package/lib/AWS/Providers.d.ts.map +1 -1
- package/lib/AWS/Providers.js +4 -1
- package/lib/AWS/Providers.js.map +1 -1
- package/lib/AWS/SageMaker/Cluster.d.ts +327 -0
- package/lib/AWS/SageMaker/Cluster.d.ts.map +1 -0
- package/lib/AWS/SageMaker/Cluster.js +469 -0
- package/lib/AWS/SageMaker/Cluster.js.map +1 -0
- package/lib/AWS/SageMaker/ClusterSchedulerConfig.d.ts +96 -0
- package/lib/AWS/SageMaker/ClusterSchedulerConfig.d.ts.map +1 -0
- package/lib/AWS/SageMaker/ClusterSchedulerConfig.js +270 -0
- package/lib/AWS/SageMaker/ClusterSchedulerConfig.js.map +1 -0
- package/lib/AWS/SageMaker/ComputeQuota.d.ts +106 -0
- package/lib/AWS/SageMaker/ComputeQuota.d.ts.map +1 -0
- package/lib/AWS/SageMaker/ComputeQuota.js +268 -0
- package/lib/AWS/SageMaker/ComputeQuota.js.map +1 -0
- package/lib/AWS/SageMaker/index.d.ts +3 -0
- package/lib/AWS/SageMaker/index.d.ts.map +1 -1
- package/lib/AWS/SageMaker/index.js +3 -0
- package/lib/AWS/SageMaker/index.js.map +1 -1
- package/lib/Bundle/PurePlugin.d.ts +29 -7
- package/lib/Bundle/PurePlugin.d.ts.map +1 -1
- package/lib/Bundle/PurePlugin.js +56 -33
- package/lib/Bundle/PurePlugin.js.map +1 -1
- package/lib/Cli/commands/nuke.d.ts.map +1 -1
- package/lib/Cli/commands/nuke.js +231 -37
- package/lib/Cli/commands/nuke.js.map +1 -1
- package/lib/Cloudflare/StateStore/Api.d.ts +1 -1
- package/lib/Cloudflare/Workers/Assets.d.ts +26 -8
- package/lib/Cloudflare/Workers/Assets.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Assets.js +46 -1
- package/lib/Cloudflare/Workers/Assets.js.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts +2 -2
- package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js +39 -6
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
- package/lib/Cloudflare/Workers/Worker.d.ts +7 -5
- package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.js +0 -1
- package/lib/Cloudflare/Workers/Worker.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBinding.d.ts +2 -2
- package/lib/Cloudflare/Workers/WorkerBundle.d.ts +20 -1
- package/lib/Cloudflare/Workers/WorkerBundle.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBundle.js +11 -0
- package/lib/Cloudflare/Workers/WorkerBundle.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerProvider.js +10 -4
- package/lib/Cloudflare/Workers/WorkerProvider.js.map +1 -1
- package/lib/Cloudflare/Workflows/WorkflowBridge.d.ts +2 -1
- package/lib/Cloudflare/Workflows/WorkflowBridge.d.ts.map +1 -1
- package/lib/Cloudflare/Workflows/WorkflowBridge.js +5 -5
- package/lib/Cloudflare/Workflows/WorkflowBridge.js.map +1 -1
- package/lib/Cloudflare/Workflows/index.d.ts +1 -1
- package/lib/Cloudflare/Workflows/index.d.ts.map +1 -1
- package/lib/Cloudflare/Workflows/index.js +1 -1
- package/lib/Cloudflare/Workflows/index.js.map +1 -1
- package/lib/Docker/Container.d.ts +26 -0
- package/lib/Docker/Container.d.ts.map +1 -1
- package/lib/Docker/Container.js +20 -1
- package/lib/Docker/Container.js.map +1 -1
- package/lib/Docker/Docker.d.ts +2 -0
- package/lib/Docker/Docker.d.ts.map +1 -1
- package/lib/Docker/Docker.js.map +1 -1
- package/lib/Output.d.ts +4 -1
- package/lib/Output.d.ts.map +1 -1
- package/lib/Output.js.map +1 -1
- package/lib/Provider.d.ts +20 -0
- package/lib/Provider.d.ts.map +1 -1
- package/lib/Provider.js.map +1 -1
- package/lib/Random.d.ts +1 -1
- package/lib/Random.d.ts.map +1 -1
- package/lib/Resource.d.ts +14 -1
- package/lib/Resource.d.ts.map +1 -1
- package/lib/Resource.js.map +1 -1
- package/lib/SQL/D1.d.ts +1 -1
- package/lib/SQL/D1.js +1 -1
- package/lib/SQL/Postgres.d.ts +1 -1
- package/lib/SQL/Postgres.js +1 -1
- package/lib/State/HttpStateApi.d.ts +11 -11
- package/lib/Test/Alchemy.d.ts +1 -1
- package/lib/Test/Alchemy.js +1 -1
- package/lib/Test/Vitest.d.ts +58 -0
- package/lib/Test/Vitest.d.ts.map +1 -0
- package/lib/Test/Vitest.js +114 -0
- package/lib/Test/Vitest.js.map +1 -0
- package/lib/Util/proxy-chain.d.ts +5 -0
- package/lib/Util/proxy-chain.d.ts.map +1 -1
- package/lib/Util/proxy-chain.js +52 -4
- package/lib/Util/proxy-chain.js.map +1 -1
- package/package.json +23 -15
- package/src/AWS/EC2/InternetGateway.ts +8 -3
- package/src/AWS/EC2/LingeringEnis.ts +169 -0
- package/src/AWS/EC2/SecurityGroup.ts +24 -28
- package/src/AWS/EC2/Subnet.ts +23 -34
- package/src/AWS/EKS/Addon.ts +17 -4
- package/src/AWS/EKS/Deployment.ts +26 -5
- package/src/AWS/EKS/HyperPod.ts +97 -0
- package/src/AWS/EKS/Job.ts +32 -7
- package/src/AWS/EKS/internal/client.ts +40 -3
- package/src/AWS/Lambda/Function.ts +5 -3
- package/src/AWS/Providers.ts +6 -0
- package/src/AWS/SageMaker/Cluster.ts +775 -0
- package/src/AWS/SageMaker/ClusterSchedulerConfig.ts +430 -0
- package/src/AWS/SageMaker/ComputeQuota.ts +426 -0
- package/src/AWS/SageMaker/index.ts +3 -0
- package/src/Bundle/PurePlugin.ts +92 -39
- package/src/Cli/commands/nuke.ts +295 -56
- package/src/Cloudflare/Workers/Assets.ts +53 -1
- package/src/Cloudflare/Workers/LocalWorkerProvider.ts +46 -7
- package/src/Cloudflare/Workers/Worker.ts +7 -5
- package/src/Cloudflare/Workers/WorkerBundle.ts +31 -1
- package/src/Cloudflare/Workers/WorkerProvider.ts +18 -4
- package/src/Cloudflare/Workflows/WorkflowBridge.ts +5 -5
- package/src/Cloudflare/Workflows/index.ts +1 -1
- package/src/Docker/Container.ts +30 -1
- package/src/Docker/Docker.ts +2 -0
- package/src/Output.ts +19 -11
- package/src/Provider.ts +20 -0
- package/src/Resource.ts +18 -1
- package/src/SQL/D1.ts +1 -1
- package/src/SQL/Postgres.ts +1 -1
- package/src/Test/Alchemy.ts +1 -1
- package/src/Test/Vitest.ts +244 -0
- package/src/Util/proxy-chain.ts +73 -4
- package/lib/SQL/index.d.ts +0 -4
- package/lib/SQL/index.d.ts.map +0 -1
- package/lib/SQL/index.js +0 -4
- package/lib/SQL/index.js.map +0 -1
- package/src/SQL/index.ts +0 -3
package/src/Util/proxy-chain.ts
CHANGED
|
@@ -5,13 +5,31 @@ type Op =
|
|
|
5
5
|
| { kind: "get"; prop: PropertyKey }
|
|
6
6
|
| { kind: "call"; args: unknown[] };
|
|
7
7
|
|
|
8
|
+
interface ChainState {
|
|
9
|
+
readonly cached: Effect.Effect<unknown, any, any>;
|
|
10
|
+
readonly ops: ReadonlyArray<Op>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Every proxy produced by {@link chain} is registered here so that a chain
|
|
15
|
+
* passed as an *argument* to another chain over the same `cached` effect
|
|
16
|
+
* (e.g. `` sql`... ${sql.insert(row)}` `` — the nested `sql.insert(row)` is
|
|
17
|
+
* itself a proxy) can be recognized and replayed against the same resolved
|
|
18
|
+
* root instead of being handed to the real client as an opaque proxy.
|
|
19
|
+
*/
|
|
20
|
+
const chainStates = new WeakMap<object, ChainState>();
|
|
21
|
+
|
|
8
22
|
/**
|
|
9
23
|
* Replay an op chain against a real value. `get` reads a property,
|
|
10
24
|
* `call` invokes — bound to the previous receiver so `this` resolves
|
|
11
25
|
* to the object the method was read from (drizzle's `select()` etc.
|
|
12
26
|
* read `this._.session`, so dropping `this` would throw).
|
|
13
27
|
*/
|
|
14
|
-
const replay = (
|
|
28
|
+
const replay = (
|
|
29
|
+
root: unknown,
|
|
30
|
+
ops: ReadonlyArray<Op>,
|
|
31
|
+
cached: Effect.Effect<unknown, any, any>,
|
|
32
|
+
): unknown => {
|
|
15
33
|
let cur: any = root;
|
|
16
34
|
let receiver: any = root;
|
|
17
35
|
for (const op of ops) {
|
|
@@ -19,13 +37,56 @@ const replay = (root: unknown, ops: ReadonlyArray<Op>): unknown => {
|
|
|
19
37
|
receiver = cur;
|
|
20
38
|
cur = cur[op.prop];
|
|
21
39
|
} else {
|
|
22
|
-
cur = cur.apply(receiver, op.args);
|
|
40
|
+
cur = cur.apply(receiver, replayArgs(root, op.args, cached));
|
|
23
41
|
receiver = cur;
|
|
24
42
|
}
|
|
25
43
|
}
|
|
26
44
|
return cur;
|
|
27
45
|
};
|
|
28
46
|
|
|
47
|
+
/**
|
|
48
|
+
* Resolve nested chain proxies inside a call's arguments. Only proxies over
|
|
49
|
+
* the *same* `cached` effect can be replayed synchronously (the root is
|
|
50
|
+
* already resolved); proxies over a different effect pass through untouched.
|
|
51
|
+
* Returns the original array when nothing needed resolving, so identity-
|
|
52
|
+
* sensitive values (e.g. a `TemplateStringsArray` with its `raw` property)
|
|
53
|
+
* are preserved.
|
|
54
|
+
*/
|
|
55
|
+
const replayArgs = (
|
|
56
|
+
root: unknown,
|
|
57
|
+
args: ReadonlyArray<unknown>,
|
|
58
|
+
cached: Effect.Effect<unknown, any, any>,
|
|
59
|
+
): ReadonlyArray<unknown> => {
|
|
60
|
+
let out: unknown[] | undefined;
|
|
61
|
+
for (let i = 0; i < args.length; i++) {
|
|
62
|
+
const resolved = replayArg(root, args[i], cached);
|
|
63
|
+
if (resolved !== args[i]) {
|
|
64
|
+
out ??= [...args];
|
|
65
|
+
out[i] = resolved;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return out ?? args;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
const replayArg = (
|
|
72
|
+
root: unknown,
|
|
73
|
+
arg: unknown,
|
|
74
|
+
cached: Effect.Effect<unknown, any, any>,
|
|
75
|
+
): unknown => {
|
|
76
|
+
if (arg === null || (typeof arg !== "object" && typeof arg !== "function")) {
|
|
77
|
+
return arg;
|
|
78
|
+
}
|
|
79
|
+
const state = chainStates.get(arg);
|
|
80
|
+
if (state?.cached === cached) {
|
|
81
|
+
return replay(root, state.ops, cached);
|
|
82
|
+
}
|
|
83
|
+
// Fragments may arrive wrapped in arrays (e.g. `sql.and([a, b])`).
|
|
84
|
+
if (Array.isArray(arg)) {
|
|
85
|
+
return replayArgs(root, arg, cached);
|
|
86
|
+
}
|
|
87
|
+
return arg;
|
|
88
|
+
};
|
|
89
|
+
|
|
29
90
|
/**
|
|
30
91
|
* Wrap a cached `Effect<T>` in a chainable Proxy so callers can use the
|
|
31
92
|
* returned value as if it were `T` itself — every property read and call
|
|
@@ -52,6 +113,11 @@ const replay = (root: unknown, ops: ReadonlyArray<Op>): unknown => {
|
|
|
52
113
|
* The chain ends when the proxy is yielded as an Effect — the resolved
|
|
53
114
|
* value at that point must be a `Yieldable` (an Effect, drizzle query
|
|
54
115
|
* builder, etc). Anything before that is recorded as ops.
|
|
116
|
+
*
|
|
117
|
+
* A chain passed as an *argument* to another chain over the same effect —
|
|
118
|
+
* e.g. `` sql`INSERT INTO users ${sql.insert(row)}` ``, where `sql.insert(row)`
|
|
119
|
+
* is itself a deferred proxy — is replayed against the same resolved root
|
|
120
|
+
* before the outer call runs, so synchronous fragment helpers compose.
|
|
55
121
|
*/
|
|
56
122
|
export const proxyChain = <T>(cached: Effect.Effect<T, any, any>): T =>
|
|
57
123
|
chain(cached) as T;
|
|
@@ -62,9 +128,10 @@ const chain = (
|
|
|
62
128
|
): unknown => {
|
|
63
129
|
const effect = Effect.flatMap(
|
|
64
130
|
cached,
|
|
65
|
-
(root) =>
|
|
131
|
+
(root) =>
|
|
132
|
+
replay(root, ops, cached) as Effect.Effect<unknown, unknown, unknown>,
|
|
66
133
|
);
|
|
67
|
-
|
|
134
|
+
const proxy = new Proxy(function () {}, {
|
|
68
135
|
get(_, prop) {
|
|
69
136
|
if (Reflect.has(effect, prop)) {
|
|
70
137
|
return Reflect.get(effect, prop);
|
|
@@ -78,4 +145,6 @@ const chain = (
|
|
|
78
145
|
return chain(cached, [...ops, { kind: "call", args }]);
|
|
79
146
|
},
|
|
80
147
|
});
|
|
148
|
+
chainStates.set(proxy, { cached, ops });
|
|
149
|
+
return proxy;
|
|
81
150
|
};
|
package/lib/SQL/index.d.ts
DELETED
package/lib/SQL/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/SQL/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
|
package/lib/SQL/index.js
DELETED
package/lib/SQL/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/SQL/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
|
package/src/SQL/index.ts
DELETED