@microagi/alchemy-gcp 0.3.0 → 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.
Files changed (91) hide show
  1. package/CHANGELOG.md +124 -0
  2. package/lib/ArtifactRegistry/Operations.d.ts +47 -0
  3. package/lib/ArtifactRegistry/Operations.d.ts.map +1 -0
  4. package/lib/ArtifactRegistry/Operations.js +47 -0
  5. package/lib/ArtifactRegistry/Operations.js.map +1 -0
  6. package/lib/ArtifactRegistry/Repository.d.ts +263 -0
  7. package/lib/ArtifactRegistry/Repository.d.ts.map +1 -0
  8. package/lib/ArtifactRegistry/Repository.js +256 -0
  9. package/lib/ArtifactRegistry/Repository.js.map +1 -0
  10. package/lib/ArtifactRegistry/Types.d.ts +32 -0
  11. package/lib/ArtifactRegistry/Types.d.ts.map +1 -0
  12. package/lib/ArtifactRegistry/Types.js +12 -0
  13. package/lib/ArtifactRegistry/Types.js.map +1 -0
  14. package/lib/ArtifactRegistry/Validation.d.ts +43 -0
  15. package/lib/ArtifactRegistry/Validation.d.ts.map +1 -0
  16. package/lib/ArtifactRegistry/Validation.js +95 -0
  17. package/lib/ArtifactRegistry/Validation.js.map +1 -0
  18. package/lib/ArtifactRegistry/index.d.ts +4 -0
  19. package/lib/ArtifactRegistry/index.d.ts.map +1 -0
  20. package/lib/ArtifactRegistry/index.js +2 -0
  21. package/lib/ArtifactRegistry/index.js.map +1 -0
  22. package/lib/Auth/Credentials.d.ts +2 -1
  23. package/lib/Auth/Credentials.d.ts.map +1 -1
  24. package/lib/Auth/Credentials.js +3 -2
  25. package/lib/Auth/Credentials.js.map +1 -1
  26. package/lib/CloudResourceManager/Project.d.ts +1 -1
  27. package/lib/Compute/GlobalAddress.d.ts +1 -1
  28. package/lib/Compute/Network.d.ts +1 -1
  29. package/lib/Compute/SharedVpcHost.d.ts +1 -1
  30. package/lib/Compute/SharedVpcServiceProject.d.ts +1 -1
  31. package/lib/Compute/Subnetwork.d.ts +1 -1
  32. package/lib/Container/Cluster.d.ts +1 -1
  33. package/lib/Container/NodePool.d.ts +1 -1
  34. package/lib/ManagedLustre/Instance.d.ts +1 -1
  35. package/lib/Providers.d.ts +1 -1
  36. package/lib/Providers.d.ts.map +1 -1
  37. package/lib/Providers.js +9 -1
  38. package/lib/Providers.js.map +1 -1
  39. package/lib/Run/Job.d.ts +1 -1
  40. package/lib/Run/Service.d.ts +1 -1
  41. package/lib/ServiceNetworking/PsaConnection.d.ts +1 -1
  42. package/lib/ServiceUsage/ApiEnable.d.ts +1 -1
  43. package/lib/Sqladmin/Database.d.ts +82 -0
  44. package/lib/Sqladmin/Database.d.ts.map +1 -0
  45. package/lib/Sqladmin/Database.js +87 -0
  46. package/lib/Sqladmin/Database.js.map +1 -0
  47. package/lib/Sqladmin/Instance.d.ts +234 -0
  48. package/lib/Sqladmin/Instance.d.ts.map +1 -0
  49. package/lib/Sqladmin/Instance.js +251 -0
  50. package/lib/Sqladmin/Instance.js.map +1 -0
  51. package/lib/Sqladmin/Operations.d.ts +41 -0
  52. package/lib/Sqladmin/Operations.d.ts.map +1 -0
  53. package/lib/Sqladmin/Operations.js +42 -0
  54. package/lib/Sqladmin/Operations.js.map +1 -0
  55. package/lib/Sqladmin/Types.d.ts +82 -0
  56. package/lib/Sqladmin/Types.d.ts.map +1 -0
  57. package/lib/Sqladmin/Types.js +28 -0
  58. package/lib/Sqladmin/Types.js.map +1 -0
  59. package/lib/Sqladmin/User.d.ts +110 -0
  60. package/lib/Sqladmin/User.d.ts.map +1 -0
  61. package/lib/Sqladmin/User.js +156 -0
  62. package/lib/Sqladmin/User.js.map +1 -0
  63. package/lib/Sqladmin/Validation.d.ts +60 -0
  64. package/lib/Sqladmin/Validation.d.ts.map +1 -0
  65. package/lib/Sqladmin/Validation.js +125 -0
  66. package/lib/Sqladmin/Validation.js.map +1 -0
  67. package/lib/Sqladmin/index.d.ts +9 -0
  68. package/lib/Sqladmin/index.d.ts.map +1 -0
  69. package/lib/Sqladmin/index.js +5 -0
  70. package/lib/Sqladmin/index.js.map +1 -0
  71. package/lib/Tags.d.ts +4 -4
  72. package/lib/index.d.ts +2 -0
  73. package/lib/index.d.ts.map +1 -1
  74. package/lib/index.js +2 -0
  75. package/lib/index.js.map +1 -1
  76. package/package.json +2 -2
  77. package/src/ArtifactRegistry/Operations.ts +79 -0
  78. package/src/ArtifactRegistry/Repository.ts +628 -0
  79. package/src/ArtifactRegistry/Types.ts +49 -0
  80. package/src/ArtifactRegistry/Validation.ts +112 -0
  81. package/src/ArtifactRegistry/index.ts +10 -0
  82. package/src/Auth/Credentials.ts +3 -2
  83. package/src/Providers.ts +15 -0
  84. package/src/Sqladmin/Database.ts +209 -0
  85. package/src/Sqladmin/Instance.ts +620 -0
  86. package/src/Sqladmin/Operations.ts +73 -0
  87. package/src/Sqladmin/Types.ts +101 -0
  88. package/src/Sqladmin/User.ts +333 -0
  89. package/src/Sqladmin/Validation.ts +148 -0
  90. package/src/Sqladmin/index.ts +19 -0
  91. package/src/index.ts +2 -0
@@ -0,0 +1,256 @@
1
+ import * as ar from "@distilled.cloud/gcp/artifactregistry-v1";
2
+ import { Resource } from "alchemy";
3
+ import { Unowned } from "alchemy/AdoptPolicy";
4
+ import { deepEqual, isResolved, somePropsAreDifferent } from "alchemy/Diff";
5
+ import { createPhysicalName } from "alchemy/PhysicalName";
6
+ import * as Provider from "alchemy/Provider";
7
+ import { diffTags } from "alchemy/Tags";
8
+ import * as Duration from "effect/Duration";
9
+ import * as Effect from "effect/Effect";
10
+ import * as Schedule from "effect/Schedule";
11
+ import { gcpInternalLabels, hasAlchemyLabels } from "../Tags.js";
12
+ import { makeAwaitOperation } from "./Operations.js";
13
+ import { reshapeBadRequest, validateModeConfig, validateRepositoryName, } from "./Validation.js";
14
+ export const ArtifactRegistryRepository = Resource("GCP.ArtifactRegistryRepository");
15
+ const fqName = (project, location, name) => `projects/${project}/locations/${location}/repositories/${name}`;
16
+ const parent = (project, location) => `projects/${project}/locations/${location}`;
17
+ const toDockerRepositoryBody = (upstream) => {
18
+ if (upstream.publicRepository !== undefined) {
19
+ return { publicRepository: upstream.publicRepository };
20
+ }
21
+ if (upstream.customRepository !== undefined) {
22
+ return { customRepository: { uri: upstream.customRepository.uri } };
23
+ }
24
+ // Unreachable per the discriminated union, but validation also
25
+ // rejects an empty dockerRepository at plan time.
26
+ return {};
27
+ };
28
+ const toRemoteRepositoryConfigBody = (cfg) => ({
29
+ ...(cfg.description !== undefined ? { description: cfg.description } : {}),
30
+ ...(cfg.dockerRepository
31
+ ? { dockerRepository: toDockerRepositoryBody(cfg.dockerRepository) }
32
+ : {}),
33
+ ...(cfg.disableUpstreamValidation !== undefined
34
+ ? { disableUpstreamValidation: cfg.disableUpstreamValidation }
35
+ : {}),
36
+ ...(cfg.upstreamCredentials
37
+ ? {
38
+ upstreamCredentials: {
39
+ ...(cfg.upstreamCredentials.usernamePasswordCredentials
40
+ ? {
41
+ usernamePasswordCredentials: {
42
+ ...(cfg.upstreamCredentials.usernamePasswordCredentials
43
+ .username !== undefined
44
+ ? {
45
+ username: cfg.upstreamCredentials.usernamePasswordCredentials
46
+ .username,
47
+ }
48
+ : {}),
49
+ ...(cfg.upstreamCredentials.usernamePasswordCredentials
50
+ .passwordSecretVersion !== undefined
51
+ ? {
52
+ passwordSecretVersion: cfg.upstreamCredentials.usernamePasswordCredentials
53
+ .passwordSecretVersion,
54
+ }
55
+ : {}),
56
+ },
57
+ }
58
+ : {}),
59
+ },
60
+ }
61
+ : {}),
62
+ });
63
+ const toRepositoryBody = (props, desiredLabels) => ({
64
+ format: props.format,
65
+ ...(props.mode ? { mode: props.mode } : {}),
66
+ ...(props.description !== undefined
67
+ ? { description: props.description }
68
+ : {}),
69
+ labels: desiredLabels,
70
+ ...(props.kmsKeyName ? { kmsKeyName: props.kmsKeyName } : {}),
71
+ ...(props.dockerConfig
72
+ ? {
73
+ dockerConfig: {
74
+ ...(props.dockerConfig.immutableTags !== undefined
75
+ ? { immutableTags: props.dockerConfig.immutableTags }
76
+ : {}),
77
+ },
78
+ }
79
+ : {}),
80
+ ...(props.remoteRepositoryConfig
81
+ ? {
82
+ remoteRepositoryConfig: toRemoteRepositoryConfigBody(props.remoteRepositoryConfig),
83
+ }
84
+ : {}),
85
+ ...(props.cleanupPolicies
86
+ ? { cleanupPolicies: props.cleanupPolicies }
87
+ : {}),
88
+ ...(props.cleanupPolicyDryRun !== undefined
89
+ ? { cleanupPolicyDryRun: props.cleanupPolicyDryRun }
90
+ : {}),
91
+ });
92
+ const toAttributes = (r, parentArgs) => ({
93
+ name: parentArgs.name,
94
+ fullyQualifiedName: fqName(parentArgs.project, parentArgs.location, parentArgs.name),
95
+ project: parentArgs.project,
96
+ location: parentArgs.location,
97
+ format: r.format ?? "",
98
+ mode: r.mode ?? "STANDARD_REPOSITORY",
99
+ registryUri: r.registryUri,
100
+ sizeBytes: r.sizeBytes,
101
+ satisfiesPzs: r.satisfiesPzs,
102
+ satisfiesPzi: r.satisfiesPzi,
103
+ labels: { ...(r.labels ?? {}) },
104
+ createTime: r.createTime ?? "",
105
+ updateTime: r.updateTime ?? "",
106
+ });
107
+ export const ArtifactRegistryRepositoryProvider = () => Provider.effect(ArtifactRegistryRepository, Effect.gen(function* () {
108
+ const getRepository = yield* ar.getProjectsLocationsRepositories;
109
+ const createRepository = yield* ar.createProjectsLocationsRepositories;
110
+ const patchRepository = yield* ar.patchProjectsLocationsRepositories;
111
+ const deleteRepository = yield* ar.deleteProjectsLocationsRepositories;
112
+ const getOperations = yield* ar.getProjectsLocationsOperations;
113
+ const awaitOperation = makeAwaitOperation(getOperations);
114
+ const observe = (project, location, name) => getRepository({ name: fqName(project, location, name) }).pipe(Effect.catchTag("NotFound", () => Effect.succeed(undefined)), Effect.catchTag("Forbidden", () => Effect.succeed(undefined)));
115
+ const syncMutable = Effect.fn(function* (args) {
116
+ const fields = [];
117
+ const body = {};
118
+ if ((args.observed.description ?? "") !== (args.news.description ?? "")) {
119
+ fields.push("description");
120
+ body.description = args.news.description ?? "";
121
+ }
122
+ const labelDiff = diffTags({ ...(args.observed.labels ?? {}) }, args.desiredLabels);
123
+ if (labelDiff.removed.length > 0 || labelDiff.upsert.length > 0) {
124
+ fields.push("labels");
125
+ body.labels = args.desiredLabels;
126
+ }
127
+ const desiredDockerConfig = args.news.dockerConfig
128
+ ? {
129
+ ...(args.news.dockerConfig.immutableTags !== undefined
130
+ ? { immutableTags: args.news.dockerConfig.immutableTags }
131
+ : {}),
132
+ }
133
+ : undefined;
134
+ if (!deepEqual(args.observed.dockerConfig, desiredDockerConfig)) {
135
+ fields.push("dockerConfig");
136
+ if (desiredDockerConfig)
137
+ body.dockerConfig = desiredDockerConfig;
138
+ }
139
+ if (!deepEqual(args.observed.cleanupPolicies ?? {}, args.news.cleanupPolicies ?? {})) {
140
+ fields.push("cleanupPolicies");
141
+ if (args.news.cleanupPolicies)
142
+ body.cleanupPolicies = args.news.cleanupPolicies;
143
+ }
144
+ if ((args.observed.cleanupPolicyDryRun ?? false) !==
145
+ (args.news.cleanupPolicyDryRun ?? false)) {
146
+ fields.push("cleanupPolicyDryRun");
147
+ body.cleanupPolicyDryRun = args.news.cleanupPolicyDryRun ?? false;
148
+ }
149
+ if (fields.length === 0)
150
+ return;
151
+ // Patch returns the Repository synchronously (NOT an LRO per
152
+ // `PatchProjectsLocationsRepositoriesResponse = Repository`).
153
+ // No operation to await.
154
+ yield* patchRepository({
155
+ name: args.name,
156
+ updateMask: fields.join(","),
157
+ body,
158
+ }).pipe(Effect.catchTag("BadRequest", reshapeBadRequest("patch")));
159
+ });
160
+ return {
161
+ stables: [
162
+ "name",
163
+ "fullyQualifiedName",
164
+ "project",
165
+ "location",
166
+ "format",
167
+ "mode",
168
+ ],
169
+ diff: Effect.fn(function* ({ news, olds = {} }) {
170
+ if (!isResolved(news))
171
+ return undefined;
172
+ // String-typed stables are reference-comparable.
173
+ if (somePropsAreDifferent(olds, news, ["project", "location", "name", "format", "mode", "kmsKeyName"])) {
174
+ return { action: "replace" };
175
+ }
176
+ // Object-typed stables must use deep equality — JSON-deserialized
177
+ // state never `===` a freshly-built literal even when content matches.
178
+ const oldsTyped = olds;
179
+ if (!deepEqual(oldsTyped.remoteRepositoryConfig, news.remoteRepositoryConfig)) {
180
+ return { action: "replace" };
181
+ }
182
+ return undefined;
183
+ }),
184
+ reconcile: Effect.fn(function* ({ id, news, session }) {
185
+ const internalLabels = yield* gcpInternalLabels(id);
186
+ const desiredName = news.name ??
187
+ (yield* createPhysicalName({ id, maxLength: 63 })).toLowerCase();
188
+ yield* validateRepositoryName(desiredName);
189
+ yield* validateModeConfig(news);
190
+ const desiredLabels = {
191
+ ...(news.labels ?? {}),
192
+ ...internalLabels,
193
+ };
194
+ const name = fqName(news.project, news.location, desiredName);
195
+ // 1. Observe — collapse 403 to "missing" alongside 404.
196
+ let observed = yield* observe(news.project, news.location, desiredName);
197
+ // 2. Ensure — create LRO. Same API-enable race as Cloud Run /
198
+ // Cloud SQL: a create can fire before ApiEnable's effect
199
+ // propagates and the server returns 403 with "If you
200
+ // enabled this API recently, wait …". Retry that specific
201
+ // 403 for ~5 min; other Forbiddens propagate.
202
+ if (!observed) {
203
+ const op = yield* createRepository({
204
+ parent: parent(news.project, news.location),
205
+ repositoryId: desiredName,
206
+ body: toRepositoryBody(news, desiredLabels),
207
+ }).pipe(Effect.retry({
208
+ while: (e) => e?._tag === "Forbidden" &&
209
+ /enabled this API recently|has not been used/i.test(e.message ?? ""),
210
+ schedule: Schedule.spaced(Duration.seconds(15)).pipe(Schedule.both(Schedule.recurs(20)), Schedule.tapOutput(() => session.note("Waiting for Artifact Registry API enablement to propagate…"))),
211
+ }), Effect.catchTag("Conflict", () => Effect.succeed(undefined)), Effect.catchTag("BadRequest", reshapeBadRequest("create")));
212
+ if (op?.name)
213
+ yield* awaitOperation(op.name, session);
214
+ observed = yield* getRepository({ name });
215
+ }
216
+ // 3. Sync — single patch with an updateMask of changed
217
+ // top-level fields. `remoteRepositoryConfig` is NOT
218
+ // patched here: GCP refuses updates to it, so changes
219
+ // trigger a replace via `diff` above.
220
+ yield* syncMutable({
221
+ name,
222
+ observed,
223
+ news,
224
+ desiredLabels,
225
+ session,
226
+ });
227
+ const final = yield* getRepository({ name });
228
+ return toAttributes(final, {
229
+ project: news.project,
230
+ location: news.location,
231
+ name: desiredName,
232
+ });
233
+ }),
234
+ delete: Effect.fn(function* ({ output, session }) {
235
+ const name = fqName(output.project, output.location, output.name);
236
+ yield* deleteRepository({ name }).pipe(Effect.flatMap((op) => op.name ? awaitOperation(op.name, session) : Effect.succeed(op)), Effect.catchTag("NotFound", () => Effect.void), Effect.catchTag("BadRequest", reshapeBadRequest("delete")));
237
+ }),
238
+ read: Effect.fn(function* ({ id, output, olds }) {
239
+ const project = output?.project ?? olds?.project;
240
+ const location = output?.location ?? olds?.location;
241
+ if (!project || !location)
242
+ return undefined;
243
+ const name = output?.name ??
244
+ olds?.name ??
245
+ (yield* createPhysicalName({ id, maxLength: 63 })).toLowerCase();
246
+ const observed = yield* observe(project, location, name);
247
+ if (!observed)
248
+ return undefined;
249
+ const attrs = toAttributes(observed, { project, location, name });
250
+ return (yield* hasAlchemyLabels(id, observed.labels))
251
+ ? attrs
252
+ : Unowned(attrs);
253
+ }),
254
+ };
255
+ }));
256
+ //# sourceMappingURL=Repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Repository.js","sourceRoot":"","sources":["../../src/ArtifactRegistry/Repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Branded literal-union types for Artifact Registry repository props.
3
+ *
4
+ * Distilled's generated `format` and `mode` fields are open-tailed
5
+ * unions (`"DOCKER" | … | (string & {})`) so the GCP server can ship
6
+ * new variants without breaking SDK consumers. We mirror that shape
7
+ * here so consumers get autocomplete for the values we expect to use
8
+ * while still leaving the tail open for forward compatibility.
9
+ *
10
+ * @see https://cloud.google.com/artifact-registry/docs/reference/rest/v1/projects.locations.repositories#Repository
11
+ */
12
+ /**
13
+ * Repository package format. Artifact Registry supports many formats
14
+ * (Maven, NPM, APT, …); we keep the full enum-tail open but only
15
+ * exercise `DOCKER` in this provider today. Other formats are still
16
+ * reachable via the `(string & {})` tail.
17
+ *
18
+ * @see https://cloud.google.com/artifact-registry/docs/reference/rest/v1/projects.locations.repositories#Format
19
+ */
20
+ export type ArtifactRegistryFormat = "DOCKER" | "MAVEN" | "NPM" | "APT" | "YUM" | "GOOGET" | "PYTHON" | "KFP" | "GO" | "GENERIC" | "RUBY" | (string & {});
21
+ /**
22
+ * Repository mode. `STANDARD_REPOSITORY` hosts artifacts uploaded by
23
+ * the user; `REMOTE_REPOSITORY` is a pull-through cache for an
24
+ * upstream registry; `VIRTUAL_REPOSITORY` aggregates multiple upstreams
25
+ * behind one URL. The provider does not type-check `VIRTUAL_REPOSITORY`
26
+ * config today — pass it through via the `remoteRepositoryConfig`
27
+ * field with a mode override, or wait for explicit support.
28
+ *
29
+ * @see https://cloud.google.com/artifact-registry/docs/reference/rest/v1/projects.locations.repositories#Mode
30
+ */
31
+ export type ArtifactRegistryMode = "STANDARD_REPOSITORY" | "REMOTE_REPOSITORY" | "VIRTUAL_REPOSITORY" | (string & {});
32
+ //# sourceMappingURL=Types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Types.d.ts","sourceRoot":"","sources":["../../src/ArtifactRegistry/Types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;;;GAOG;AACH,MAAM,MAAM,sBAAsB,GAC9B,QAAQ,GACR,OAAO,GACP,KAAK,GACL,KAAK,GACL,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,KAAK,GACL,IAAI,GACJ,SAAS,GACT,MAAM,GACN,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB;;;;;;;;;GASG;AACH,MAAM,MAAM,oBAAoB,GAC5B,qBAAqB,GACrB,mBAAmB,GACnB,oBAAoB,GACpB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Branded literal-union types for Artifact Registry repository props.
3
+ *
4
+ * Distilled's generated `format` and `mode` fields are open-tailed
5
+ * unions (`"DOCKER" | … | (string & {})`) so the GCP server can ship
6
+ * new variants without breaking SDK consumers. We mirror that shape
7
+ * here so consumers get autocomplete for the values we expect to use
8
+ * while still leaving the tail open for forward compatibility.
9
+ *
10
+ * @see https://cloud.google.com/artifact-registry/docs/reference/rest/v1/projects.locations.repositories#Repository
11
+ */
12
+ //# sourceMappingURL=Types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Types.js","sourceRoot":"","sources":["../../src/ArtifactRegistry/Types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
@@ -0,0 +1,43 @@
1
+ import { ConfigError } from "@distilled.cloud/gcp";
2
+ import * as Effect from "effect/Effect";
3
+ import type { ArtifactRegistryRepositoryProps } from "./Repository.ts";
4
+ /**
5
+ * Validate an Artifact Registry repository ID.
6
+ *
7
+ * @see https://cloud.google.com/artifact-registry/docs/repositories/create-repos#create
8
+ */
9
+ export declare const validateRepositoryName: (name: string) => Effect.Effect<void, ConfigError>;
10
+ /**
11
+ * Validate the `mode` ↔ `remoteRepositoryConfig` invariant. Artifact
12
+ * Registry rejects (with an opaque 400) any combination where:
13
+ *
14
+ * - `mode === "REMOTE_REPOSITORY"` but no `remoteRepositoryConfig`
15
+ * is supplied — the server has no upstream to point at.
16
+ * - `mode === "STANDARD_REPOSITORY"` but a `remoteRepositoryConfig`
17
+ * IS supplied — standard repositories don't have an upstream.
18
+ *
19
+ * `VIRTUAL_REPOSITORY` is not validated here; pass-through for now.
20
+ *
21
+ * @see https://cloud.google.com/artifact-registry/docs/repositories/remote-repo
22
+ */
23
+ export declare const validateModeConfig: (props: ArtifactRegistryRepositoryProps) => Effect.Effect<void, ConfigError>;
24
+ /**
25
+ * Reshape a `BadRequest` from an Artifact Registry create/patch/delete
26
+ * into a `ConfigError` with a remediation hint for the top failure
27
+ * modes:
28
+ *
29
+ * 1. **Upstream validation failure** — `disableUpstreamValidation` is
30
+ * `false` (default) and AR's pre-flight HEAD request against the
31
+ * remote upstream failed. Surface the underlying message; the user
32
+ * can retry with `disableUpstreamValidation: true` if the upstream
33
+ * is intentionally gated.
34
+ * 2. **KMS key not accessible** — the AR service agent does not have
35
+ * `cloudkms.cryptoKeyEncrypterDecrypter` on the supplied key.
36
+ *
37
+ * Anything else propagates verbatim — the underlying GCP message is
38
+ * usually clear enough.
39
+ */
40
+ export declare const reshapeBadRequest: (op: "create" | "patch" | "delete") => (e: {
41
+ message?: string;
42
+ }) => Effect.Effect<never, ConfigError>;
43
+ //# sourceMappingURL=Validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Validation.d.ts","sourceRoot":"","sources":["../../src/ArtifactRegistry/Validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,iBAAiB,CAAC;AAsBvE;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,MAAM,MAAM,KACX,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAOjC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,+BAA+B,KACrC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAqBjC,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,iBAAiB,GAC3B,IAAI,QAAQ,GAAG,OAAO,GAAG,QAAQ,MACjC,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,KAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAe1D,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { ConfigError } from "@distilled.cloud/gcp";
2
+ import * as Effect from "effect/Effect";
3
+ /**
4
+ * Plan-time validation for Artifact Registry resource props. Failing
5
+ * fast with a typed `ConfigError` is friendlier than letting the user
6
+ * wait for the API to reject the request, and unlike server-side
7
+ * errors these surface before any state mutation happens.
8
+ *
9
+ * @see https://cloud.google.com/artifact-registry/docs/reference/rest/v1/projects.locations.repositories
10
+ */
11
+ /**
12
+ * Repository ID regex per
13
+ * <https://cloud.google.com/artifact-registry/docs/repositories/create-repos#create>:
14
+ * lowercase letters, digits and hyphens; must start with a letter or
15
+ * digit; 1–63 chars total. The REST API documents up to 63; we cap at
16
+ * 63 to match.
17
+ *
18
+ * @internal
19
+ */
20
+ const REPOSITORY_NAME_RE = /^[a-z0-9][a-z0-9-]{0,62}$/;
21
+ /**
22
+ * Validate an Artifact Registry repository ID.
23
+ *
24
+ * @see https://cloud.google.com/artifact-registry/docs/repositories/create-repos#create
25
+ */
26
+ export const validateRepositoryName = (name) => {
27
+ if (REPOSITORY_NAME_RE.test(name))
28
+ return Effect.void;
29
+ return Effect.fail(new ConfigError({
30
+ message: `Artifact Registry repository name ${JSON.stringify(name)} is invalid: must match /^[a-z0-9][a-z0-9-]{0,62}$/ (1–63 lowercase letters/digits/hyphens, starting with a letter or digit).`,
31
+ }));
32
+ };
33
+ /**
34
+ * Validate the `mode` ↔ `remoteRepositoryConfig` invariant. Artifact
35
+ * Registry rejects (with an opaque 400) any combination where:
36
+ *
37
+ * - `mode === "REMOTE_REPOSITORY"` but no `remoteRepositoryConfig`
38
+ * is supplied — the server has no upstream to point at.
39
+ * - `mode === "STANDARD_REPOSITORY"` but a `remoteRepositoryConfig`
40
+ * IS supplied — standard repositories don't have an upstream.
41
+ *
42
+ * `VIRTUAL_REPOSITORY` is not validated here; pass-through for now.
43
+ *
44
+ * @see https://cloud.google.com/artifact-registry/docs/repositories/remote-repo
45
+ */
46
+ export const validateModeConfig = (props) => {
47
+ const mode = props.mode ?? "STANDARD_REPOSITORY";
48
+ if (mode === "REMOTE_REPOSITORY") {
49
+ const docker = props.remoteRepositoryConfig?.dockerRepository;
50
+ if (!docker) {
51
+ return Effect.fail(new ConfigError({
52
+ message: `Artifact Registry repository has mode "REMOTE_REPOSITORY" but no \`remoteRepositoryConfig.dockerRepository\` was provided. Pass either \`{ publicRepository: "DOCKER_HUB" }\` or \`{ customRepository: { uri: "https://nvcr.io" } }\`.`,
53
+ }));
54
+ }
55
+ return Effect.void;
56
+ }
57
+ if (mode === "STANDARD_REPOSITORY" && props.remoteRepositoryConfig) {
58
+ return Effect.fail(new ConfigError({
59
+ message: `Artifact Registry repository has mode "STANDARD_REPOSITORY" but \`remoteRepositoryConfig\` was supplied. Drop \`remoteRepositoryConfig\` or set \`mode: "REMOTE_REPOSITORY"\`.`,
60
+ }));
61
+ }
62
+ return Effect.void;
63
+ };
64
+ /**
65
+ * Reshape a `BadRequest` from an Artifact Registry create/patch/delete
66
+ * into a `ConfigError` with a remediation hint for the top failure
67
+ * modes:
68
+ *
69
+ * 1. **Upstream validation failure** — `disableUpstreamValidation` is
70
+ * `false` (default) and AR's pre-flight HEAD request against the
71
+ * remote upstream failed. Surface the underlying message; the user
72
+ * can retry with `disableUpstreamValidation: true` if the upstream
73
+ * is intentionally gated.
74
+ * 2. **KMS key not accessible** — the AR service agent does not have
75
+ * `cloudkms.cryptoKeyEncrypterDecrypter` on the supplied key.
76
+ *
77
+ * Anything else propagates verbatim — the underlying GCP message is
78
+ * usually clear enough.
79
+ */
80
+ export const reshapeBadRequest = (op) => (e) => {
81
+ const underlying = e.message ?? `unknown 400 from Repository ${op}`;
82
+ let hint = "";
83
+ if (/upstream|remote.*validation|HEAD/i.test(underlying)) {
84
+ hint =
85
+ " Artifact Registry validates the upstream remote on create. If the upstream rejects unauthenticated HEAD requests (private nvcr.io paths, etc.), supply `remoteRepositoryConfig.disableUpstreamValidation: true` or attach credentials via `upstreamCredentials`.";
86
+ }
87
+ else if (/kms|crypto.*key|encrypt/i.test(underlying)) {
88
+ hint =
89
+ " Grant `roles/cloudkms.cryptoKeyEncrypterDecrypter` on the supplied `kmsKeyName` to the Artifact Registry service agent (`service-{projectNumber}@gcp-sa-artifactregistry.iam.gserviceaccount.com`).";
90
+ }
91
+ return Effect.fail(new ConfigError({
92
+ message: `Artifact Registry Repository ${op} rejected: ${underlying}.${hint}`,
93
+ }));
94
+ };
95
+ //# sourceMappingURL=Validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Validation.js","sourceRoot":"","sources":["../../src/ArtifactRegistry/Validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC;;;;;;;GAOG;AAEH;;;;;;;;GAQG;AACH,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,IAAY,EACsB,EAAE;IACpC,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IACtD,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,WAAW,CAAC;QACd,OAAO,EAAE,qCAAqC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,+HAA+H;KAClM,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,KAAsC,EACJ,EAAE;IACpC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,qBAAqB,CAAC;IACjD,IAAI,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,KAAK,CAAC,sBAAsB,EAAE,gBAAgB,CAAC;QAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,WAAW,CAAC;gBACd,OAAO,EAAE,wOAAwO;aAClP,CAAC,CACH,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,IAAI,IAAI,KAAK,qBAAqB,IAAI,KAAK,CAAC,sBAAsB,EAAE,CAAC;QACnE,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,WAAW,CAAC;YACd,OAAO,EAAE,gLAAgL;SAC1L,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAC5B,CAAC,EAAiC,EAAE,EAAE,CACtC,CAAC,CAAuB,EAAqC,EAAE;IAC7D,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,IAAI,+BAA+B,EAAE,EAAE,CAAC;IACpE,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,mCAAmC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACzD,IAAI;YACF,mQAAmQ,CAAC;IACxQ,CAAC;SAAM,IAAI,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACvD,IAAI;YACF,sMAAsM,CAAC;IAC3M,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,WAAW,CAAC;QACd,OAAO,EAAE,gCAAgC,EAAE,cAAc,UAAU,IAAI,IAAI,EAAE;KAC9E,CAAC,CACH,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { ArtifactRegistryRepository, ArtifactRegistryRepositoryProvider, } from "./Repository.ts";
2
+ export type { ArtifactRegistryDockerUpstream, ArtifactRegistryRepositoryAttributes, ArtifactRegistryRepositoryProps, } from "./Repository.ts";
3
+ export type { ArtifactRegistryFormat, ArtifactRegistryMode } from "./Types.ts";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ArtifactRegistry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,kCAAkC,GACnC,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,8BAA8B,EAC9B,oCAAoC,EACpC,+BAA+B,GAChC,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { ArtifactRegistryRepository, ArtifactRegistryRepositoryProvider, } from "./Repository.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ArtifactRegistry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,kCAAkC,GACnC,MAAM,iBAAiB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { ConfigError, Credentials } from "@distilled.cloud/gcp";
2
+ import { Profile } from "alchemy/Auth/Profile";
2
3
  import * as Config from "effect/Config";
3
4
  import * as Layer from "effect/Layer";
4
5
  export { Credentials } from "@distilled.cloud/gcp";
@@ -24,5 +25,5 @@ export declare const fromADC: (project?: string) => Layer.Layer<Credentials, Con
24
25
  * ultimately call `mintToken`, which is just a thin wrapper over
25
26
  * `google-auth-library`.
26
27
  */
27
- export declare const fromAuthProvider: () => Layer.Layer<Credentials, Config.ConfigError | import("alchemy/Auth/AuthProvider").AuthError | ConfigError, import("effect/FileSystem").FileSystem | import("alchemy").AuthProviders>;
28
+ export declare const fromAuthProvider: () => Layer.Layer<Credentials, ConfigError | Config.ConfigError | import("alchemy/Auth/AuthProvider").AuthError, import("alchemy").AuthProviders | Profile>;
28
29
  //# sourceMappingURL=Credentials.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Credentials.d.ts","sourceRoot":"","sources":["../../src/Auth/Credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGhE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAQtC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AASnD;;;;;;;;;GASG;AACH,eAAO,MAAM,OAAO,GAAI,UAAU,MAAM,iDAIrC,CAAC;AAEJ;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,4LAmB1B,CAAC"}
1
+ {"version":3,"file":"Credentials.d.ts","sourceRoot":"","sources":["../../src/Auth/Credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEhE,OAAO,EAAmB,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAQtC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AASnD;;;;;;;;;GASG;AACH,eAAO,MAAM,OAAO,GAAI,UAAU,MAAM,iDAIrC,CAAC;AAEJ;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,6JAoB1B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { ConfigError, Credentials } from "@distilled.cloud/gcp";
2
2
  import { getAuthProvider } from "alchemy/Auth/AuthProvider";
3
- import { ALCHEMY_PROFILE, loadOrConfigure } from "alchemy/Auth/Profile";
3
+ import { ALCHEMY_PROFILE, Profile } from "alchemy/Auth/Profile";
4
4
  import * as Config from "effect/Config";
5
5
  import * as Effect from "effect/Effect";
6
6
  import * as Layer from "effect/Layer";
@@ -32,10 +32,11 @@ export const fromADC = (project) => Layer.effect(Credentials, mintToken({ projec
32
32
  * `google-auth-library`.
33
33
  */
34
34
  export const fromAuthProvider = () => Layer.effect(Credentials, Effect.gen(function* () {
35
+ const profile = yield* Profile;
35
36
  const auth = yield* getAuthProvider(GCP_AUTH_PROVIDER_NAME);
36
37
  const profileName = yield* ALCHEMY_PROFILE;
37
38
  const ci = yield* Config.boolean("CI").pipe(Config.withDefault(false));
38
39
  const ctx = yield* Effect.context();
39
- return yield* loadOrConfigure(auth, profileName, { ci }).pipe(Effect.flatMap((cfg) => auth.read(profileName, cfg)), Effect.map(({ accessToken, project }) => ({ accessToken, project })), Effect.mapError(toConfigError), Effect.provide(ctx));
40
+ return yield* profile.loadOrConfigure(auth, profileName, { ci }).pipe(Effect.flatMap((cfg) => auth.read(profileName, cfg)), Effect.map(({ accessToken, project }) => ({ accessToken, project })), Effect.mapError(toConfigError), Effect.provide(ctx));
40
41
  }));
41
42
  //# sourceMappingURL=Credentials.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Credentials.js","sourceRoot":"","sources":["../../src/Auth/Credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,sBAAsB,EAGtB,SAAS,GACV,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,aAAa,GAAG,CAAC,CAAiC,EAAE,EAAE,CAC1D,IAAI,WAAW,CAAC;IACd,OAAO,EAAE,sCACN,CAA0B,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAClD,EAAE;CACH,CAAC,CAAC;AAEL;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAE,EAAE,CAC1C,KAAK,CAAC,MAAM,CACV,WAAW,EACX,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAC5D,CAAC;AAEJ;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE,CACnC,KAAK,CAAC,MAAM,CACV,WAAW,EACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,eAAe,CAGjC,sBAAsB,CAAC,CAAC;IAC1B,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC;IAC3C,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAAS,CAAC;IAE3C,OAAO,KAAK,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAC3D,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAoB,CAAC,CAAC,EACrE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,EACpE,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAC9B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CACpB,CAAC;AACJ,CAAC,CAAC,CACH,CAAC"}
1
+ {"version":3,"file":"Credentials.js","sourceRoot":"","sources":["../../src/Auth/Credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,sBAAsB,EAGtB,SAAS,GACV,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,aAAa,GAAG,CAAC,CAAiC,EAAE,EAAE,CAC1D,IAAI,WAAW,CAAC;IACd,OAAO,EAAE,sCACN,CAA0B,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAClD,EAAE;CACH,CAAC,CAAC;AAEL;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAE,EAAE,CAC1C,KAAK,CAAC,MAAM,CACV,WAAW,EACX,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAC5D,CAAC;AAEJ;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE,CACnC,KAAK,CAAC,MAAM,CACV,WAAW,EACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,eAAe,CAGjC,sBAAsB,CAAC,CAAC;IAC1B,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC;IAC3C,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAAS,CAAC;IAE3C,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CACnE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAoB,CAAC,CAAC,EACrE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,EACpE,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAC9B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CACpB,CAAC;AACJ,CAAC,CAAC,CACH,CAAC"}
@@ -154,5 +154,5 @@ export type Project = Resource<"GCP.Project", ProjectProps, {
154
154
  billingEnabled: boolean;
155
155
  }, ProjectBindingContract, GCP.Providers>;
156
156
  export declare const Project: import("alchemy").ResourceClass<Project>;
157
- export declare const ProjectProvider: () => import("effect/Layer").Layer<Provider.Provider<Project>, never, import("effect/unstable/http/HttpClient").HttpClient | import("alchemy").Stage | import("alchemy").Stack | import("@distilled.cloud/gcp").Credentials>;
157
+ export declare const ProjectProvider: () => import("effect/Layer").Layer<Provider.Provider<Project>, never, import("alchemy").Stack | import("alchemy").Stage | import("@distilled.cloud/gcp").Credentials | import("effect/unstable/http/HttpClient").HttpClient>;
158
158
  //# sourceMappingURL=Project.d.ts.map
@@ -97,5 +97,5 @@ export type GlobalAddressAttributes = {
97
97
  };
98
98
  export type GlobalAddress = Resource<"GCP.GlobalAddress", GlobalAddressProps, GlobalAddressAttributes, never, GCP.Providers>;
99
99
  export declare const GlobalAddress: import("alchemy").ResourceClass<GlobalAddress>;
100
- export declare const GlobalAddressProvider: () => import("effect/Layer").Layer<Provider.Provider<GlobalAddress>, never, import("effect/unstable/http/HttpClient").HttpClient | import("alchemy").Stage | import("alchemy").Stack | import("@distilled.cloud/gcp").Credentials>;
100
+ export declare const GlobalAddressProvider: () => import("effect/Layer").Layer<Provider.Provider<GlobalAddress>, never, import("alchemy").Stack | import("alchemy").Stage | import("@distilled.cloud/gcp").Credentials | import("effect/unstable/http/HttpClient").HttpClient>;
101
101
  //# sourceMappingURL=GlobalAddress.d.ts.map
@@ -146,6 +146,6 @@ export type NetworkAttributes = {
146
146
  };
147
147
  export type Network = Resource<"GCP.Network", NetworkProps, NetworkAttributes, never, GCP.Providers>;
148
148
  export declare const Network: import("alchemy").ResourceClass<Network>;
149
- export declare const NetworkProvider: () => import("effect/Layer").Layer<Provider.Provider<Network>, never, import("effect/unstable/http/HttpClient").HttpClient | import("alchemy").Stage | import("alchemy").Stack | import("@distilled.cloud/gcp").Credentials>;
149
+ export declare const NetworkProvider: () => import("effect/Layer").Layer<Provider.Provider<Network>, never, import("alchemy").Stack | import("alchemy").Stage | import("@distilled.cloud/gcp").Credentials | import("effect/unstable/http/HttpClient").HttpClient>;
150
150
  export {};
151
151
  //# sourceMappingURL=Network.d.ts.map
@@ -40,5 +40,5 @@ export type SharedVpcHostAttributes = {
40
40
  };
41
41
  export type SharedVpcHost = Resource<"GCP.SharedVpcHost", SharedVpcHostProps, SharedVpcHostAttributes, never, GCP.Providers>;
42
42
  export declare const SharedVpcHost: import("alchemy").ResourceClass<SharedVpcHost>;
43
- export declare const SharedVpcHostProvider: () => import("effect/Layer").Layer<Provider.Provider<SharedVpcHost>, never, import("effect/unstable/http/HttpClient").HttpClient | import("@distilled.cloud/gcp").Credentials>;
43
+ export declare const SharedVpcHostProvider: () => import("effect/Layer").Layer<Provider.Provider<SharedVpcHost>, never, import("@distilled.cloud/gcp").Credentials | import("effect/unstable/http/HttpClient").HttpClient>;
44
44
  //# sourceMappingURL=SharedVpcHost.d.ts.map
@@ -42,5 +42,5 @@ export type SharedVpcServiceProjectAttributes = {
42
42
  };
43
43
  export type SharedVpcServiceProject = Resource<"GCP.SharedVpcServiceProject", SharedVpcServiceProjectProps, SharedVpcServiceProjectAttributes, never, GCP.Providers>;
44
44
  export declare const SharedVpcServiceProject: import("alchemy").ResourceClass<SharedVpcServiceProject>;
45
- export declare const SharedVpcServiceProjectProvider: () => import("effect/Layer").Layer<Provider.Provider<SharedVpcServiceProject>, never, import("effect/unstable/http/HttpClient").HttpClient | import("@distilled.cloud/gcp").Credentials>;
45
+ export declare const SharedVpcServiceProjectProvider: () => import("effect/Layer").Layer<Provider.Provider<SharedVpcServiceProject>, never, import("@distilled.cloud/gcp").Credentials | import("effect/unstable/http/HttpClient").HttpClient>;
46
46
  //# sourceMappingURL=SharedVpcServiceProject.d.ts.map
@@ -119,5 +119,5 @@ export type SubnetworkBindingContract = {
119
119
  };
120
120
  export type Subnetwork = Resource<"GCP.Subnetwork", SubnetworkProps, SubnetworkAttributes, SubnetworkBindingContract, GCP.Providers>;
121
121
  export declare const Subnetwork: import("alchemy").ResourceClass<Subnetwork>;
122
- export declare const SubnetworkProvider: () => import("effect/Layer").Layer<Provider.Provider<Subnetwork>, never, import("effect/unstable/http/HttpClient").HttpClient | import("alchemy").Stage | import("alchemy").Stack | import("@distilled.cloud/gcp").Credentials>;
122
+ export declare const SubnetworkProvider: () => import("effect/Layer").Layer<Provider.Provider<Subnetwork>, never, import("alchemy").Stack | import("alchemy").Stage | import("@distilled.cloud/gcp").Credentials | import("effect/unstable/http/HttpClient").HttpClient>;
123
123
  //# sourceMappingURL=Subnetwork.d.ts.map
@@ -237,5 +237,5 @@ export type ClusterAttributes = {
237
237
  */
238
238
  export type Cluster = Resource<"GCP.Cluster", ClusterProps, ClusterAttributes, never, GCP.Providers>;
239
239
  export declare const Cluster: import("alchemy").ResourceClass<Cluster>;
240
- export declare const ClusterProvider: () => import("effect/Layer").Layer<Provider.Provider<Cluster>, never, import("effect/unstable/http/HttpClient").HttpClient | import("alchemy").Stage | import("alchemy").Stack | import("@distilled.cloud/gcp").Credentials>;
240
+ export declare const ClusterProvider: () => import("effect/Layer").Layer<Provider.Provider<Cluster>, never, import("alchemy").Stack | import("alchemy").Stage | import("@distilled.cloud/gcp").Credentials | import("effect/unstable/http/HttpClient").HttpClient>;
241
241
  //# sourceMappingURL=Cluster.d.ts.map
@@ -210,5 +210,5 @@ export declare const NodePool: import("alchemy").ResourceClass<NodePool>;
210
210
  * `Cluster.toInitialNodePoolBody`.
211
211
  */
212
212
  export declare const toNodeConfigCreateBody: (config: NodePoolProps["config"], desiredResourceLabels: Record<string, string>) => cont.NodeConfig;
213
- export declare const NodePoolProvider: () => import("effect/Layer").Layer<Provider.Provider<NodePool>, never, import("effect/unstable/http/HttpClient").HttpClient | import("alchemy").Stage | import("alchemy").Stack | import("@distilled.cloud/gcp").Credentials>;
213
+ export declare const NodePoolProvider: () => import("effect/Layer").Layer<Provider.Provider<NodePool>, never, import("alchemy").Stack | import("alchemy").Stage | import("@distilled.cloud/gcp").Credentials | import("effect/unstable/http/HttpClient").HttpClient>;
214
214
  //# sourceMappingURL=NodePool.d.ts.map