@geekmidas/cli 10.0.0-alpha.84 → 10.0.0-alpha.86
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/dist/{HostingerProvider-dxkwynSs.cjs → HostingerProvider-BCB1QJj1.cjs} +2 -2
- package/dist/{HostingerProvider-dxkwynSs.cjs.map → HostingerProvider-BCB1QJj1.cjs.map} +1 -1
- package/dist/{HostingerProvider-D85ayzTi.mjs → HostingerProvider-CVc3rLPB.mjs} +2 -2
- package/dist/{HostingerProvider-D85ayzTi.mjs.map → HostingerProvider-CVc3rLPB.mjs.map} +1 -1
- package/dist/{LegacyStateStore-CTsUFLNQ.mjs → LegacyStateStore-B0R4LlX_.mjs} +2 -2
- package/dist/{LegacyStateStore-CTsUFLNQ.mjs.map → LegacyStateStore-B0R4LlX_.mjs.map} +1 -1
- package/dist/{LegacyStateStore-EDT2TUSe.cjs → LegacyStateStore-CWG_HVC0.cjs} +7 -7
- package/dist/{LegacyStateStore-EDT2TUSe.cjs.map → LegacyStateStore-CWG_HVC0.cjs.map} +1 -1
- package/dist/{LocalStateStore-CdpzTvPn.cjs → LocalStateStore-CLwa2DpK.cjs} +16 -14
- package/dist/LocalStateStore-CLwa2DpK.cjs.map +1 -0
- package/dist/{LocalStateStore-D1VfxRuK.mjs → LocalStateStore-Q4vXg2ua.mjs} +12 -10
- package/dist/LocalStateStore-Q4vXg2ua.mjs.map +1 -0
- package/dist/{S3StateStore-BPM74zwv.cjs → S3StateStore-Cea9_5gF.cjs} +5 -5
- package/dist/{S3StateStore-BPM74zwv.cjs.map → S3StateStore-Cea9_5gF.cjs.map} +1 -1
- package/dist/{S3StateStore-DVZ1YuGJ.mjs → S3StateStore-CksKYKRa.mjs} +2 -2
- package/dist/{S3StateStore-DVZ1YuGJ.mjs.map → S3StateStore-CksKYKRa.mjs.map} +1 -1
- package/dist/{SSMStateStore-DLvnGyyl.mjs → SSMStateStore-BszSCAS2.mjs} +2 -2
- package/dist/{SSMStateStore-DLvnGyyl.mjs.map → SSMStateStore-BszSCAS2.mjs.map} +1 -1
- package/dist/{SSMStateStore-qerm5c36.cjs → SSMStateStore-aBOTF018.cjs} +9 -9
- package/dist/{SSMStateStore-qerm5c36.cjs.map → SSMStateStore-aBOTF018.cjs.map} +1 -1
- package/dist/{add-BQ8v1ZII.cjs → add-5MZAXybv.cjs} +8 -5
- package/dist/add-5MZAXybv.cjs.map +1 -0
- package/dist/{add-DbnzC7Kl.mjs → add-D_jNqnfZ.mjs} +8 -5
- package/dist/add-D_jNqnfZ.mjs.map +1 -0
- package/dist/{bundler-DjrRffko.cjs → bundler-1REMhKps.cjs} +5 -5
- package/dist/{bundler-DjrRffko.cjs.map → bundler-1REMhKps.cjs.map} +1 -1
- package/dist/{bundler-D4030Afw.mjs → bundler-BMo-JP5s.mjs} +5 -5
- package/dist/{bundler-D4030Afw.mjs.map → bundler-BMo-JP5s.mjs.map} +1 -1
- package/dist/{cli-DwTa9d_8.mjs → cli-7edNFwGk.mjs} +5 -13
- package/dist/cli-7edNFwGk.mjs.map +1 -0
- package/dist/{cli-D8YQAYUX.cjs → cli-BL8ZHsLQ.cjs} +5 -13
- package/dist/cli-BL8ZHsLQ.cjs.map +1 -0
- package/dist/{compose-C5wz8mf9.mjs → compose-DbJhRQlh.mjs} +46 -15
- package/dist/compose-DbJhRQlh.mjs.map +1 -0
- package/dist/{compose-DqWh1TaO.cjs → compose-xw86kVYi.cjs} +55 -24
- package/dist/compose-xw86kVYi.cjs.map +1 -0
- package/dist/{config-BzIfP8a-.d.cts → config-CpjsVxru.d.cts} +3 -3
- package/dist/{config-BzIfP8a-.d.cts.map → config-CpjsVxru.d.cts.map} +1 -1
- package/dist/{config-DhdzmndX.d.mts → config-DrCAyoH5.d.mts} +3 -3
- package/dist/{config-DhdzmndX.d.mts.map → config-DrCAyoH5.d.mts.map} +1 -1
- package/dist/config.cjs +1 -1
- package/dist/config.d.cts +3 -3
- package/dist/config.d.mts +3 -3
- package/dist/config.mjs +1 -1
- package/dist/{credentials-pAtB70k3.mjs → credentials-BgJ5mS_d.mjs} +91 -181
- package/dist/credentials-BgJ5mS_d.mjs.map +1 -0
- package/dist/{credentials-BVs7mrtw.cjs → credentials-tr26-KML.cjs} +122 -188
- package/dist/credentials-tr26-KML.cjs.map +1 -0
- package/dist/deploy/public.cjs +24 -20
- package/dist/deploy/public.cjs.map +1 -1
- package/dist/deploy/public.d.cts +95 -13
- package/dist/deploy/public.d.cts.map +1 -1
- package/dist/deploy/public.d.mts +95 -13
- package/dist/deploy/public.d.mts.map +1 -1
- package/dist/deploy/public.mjs +11 -10
- package/dist/deploy/public.mjs.map +1 -1
- package/dist/{deploy-BwIKGxWH.mjs → deploy-BTfmXd3g.mjs} +9 -9
- package/dist/deploy-BTfmXd3g.mjs.map +1 -0
- package/dist/{deploy-C8sWg81_.cjs → deploy-CtbZj4zN.cjs} +13 -13
- package/dist/deploy-CtbZj4zN.cjs.map +1 -0
- package/dist/{dokploy-BkRxJbfi.cjs → dokploy-TGk3oPwr.cjs} +2 -2
- package/dist/{dokploy-BkRxJbfi.cjs.map → dokploy-TGk3oPwr.cjs.map} +1 -1
- package/dist/{dokploy-ijjms1-h.mjs → dokploy-r69yZaIt.mjs} +2 -2
- package/dist/{dokploy-ijjms1-h.mjs.map → dokploy-r69yZaIt.mjs.map} +1 -1
- package/dist/{encryption-BRcBAmjL.mjs → encryption-C-8Tt5Hh.mjs} +3 -3
- package/dist/{encryption-BRcBAmjL.mjs.map → encryption-C-8Tt5Hh.mjs.map} +1 -1
- package/dist/{encryption-g6PzwwfL.cjs → encryption-CDn7BH5O.cjs} +3 -3
- package/dist/{encryption-g6PzwwfL.cjs.map → encryption-CDn7BH5O.cjs.map} +1 -1
- package/dist/{engine-DLEJsZ3i.cjs → engine-Bt5k_UMq.cjs} +33 -23
- package/dist/engine-Bt5k_UMq.cjs.map +1 -0
- package/dist/{engine-BP0CZ5fh.mjs → engine-jAINgiOB.mjs} +28 -18
- package/dist/engine-jAINgiOB.mjs.map +1 -0
- package/dist/{github-Zs-dVJbR.mjs → github-CZHAtwPT.mjs} +3 -3
- package/dist/{github-Zs-dVJbR.mjs.map → github-CZHAtwPT.mjs.map} +1 -1
- package/dist/{github-B8YjwdLK.cjs → github-DFhuJQlp.cjs} +3 -3
- package/dist/{github-B8YjwdLK.cjs.map → github-DFhuJQlp.cjs.map} +1 -1
- package/dist/{index-f77HdqN5.d.mts → index-MnUJuUlj.d.mts} +2 -2
- package/dist/{index-D1ODeM9s.d.cts.map → index-MnUJuUlj.d.mts.map} +1 -1
- package/dist/{index-D1ODeM9s.d.cts → index-elsLJTUv.d.cts} +2 -2
- package/dist/{index-f77HdqN5.d.mts.map → index-elsLJTUv.d.cts.map} +1 -1
- package/dist/index.cjs +105 -67
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +99 -61
- package/dist/index.mjs.map +1 -1
- package/dist/local-Ciq-bTPr.mjs +224 -0
- package/dist/local-Ciq-bTPr.mjs.map +1 -0
- package/dist/local-Cq8qdgNX.cjs +241 -0
- package/dist/local-Cq8qdgNX.cjs.map +1 -0
- package/dist/{migrate-FoL_mZIz.cjs → migrate-B16qgYTn.cjs} +3 -3
- package/dist/{migrate-FoL_mZIz.cjs.map → migrate-B16qgYTn.cjs.map} +1 -1
- package/dist/{migrate-BfZN1S32.cjs → migrate-B1rVlwj1.cjs} +3 -3
- package/dist/{migrate-BfZN1S32.cjs.map → migrate-B1rVlwj1.cjs.map} +1 -1
- package/dist/{migrate-DOMU4uKe.mjs → migrate-Dn7nK6sh.mjs} +3 -3
- package/dist/{migrate-DOMU4uKe.mjs.map → migrate-Dn7nK6sh.mjs.map} +1 -1
- package/dist/{migrate-CdXcX0XR.mjs → migrate-ggkPVJRC.mjs} +3 -3
- package/dist/{migrate-CdXcX0XR.mjs.map → migrate-ggkPVJRC.mjs.map} +1 -1
- package/dist/openapi.cjs +1 -1
- package/dist/openapi.d.cts +1 -1
- package/dist/openapi.d.mts +1 -1
- package/dist/openapi.mjs +1 -1
- package/dist/reconcile/public.d.cts +1 -1
- package/dist/reconcile/public.d.mts +1 -1
- package/dist/{resolve-r7PAs6ng.mjs → resolve-BSke45k6.mjs} +4 -4
- package/dist/{resolve-r7PAs6ng.mjs.map → resolve-BSke45k6.mjs.map} +1 -1
- package/dist/{resolve-T2I-5FcT.cjs → resolve-BXeXzpmU.cjs} +4 -4
- package/dist/{resolve-T2I-5FcT.cjs.map → resolve-BXeXzpmU.cjs.map} +1 -1
- package/dist/{rollback-BSdxnW3X.mjs → rollback-CEE6dse4.mjs} +6 -6
- package/dist/{rollback-BSdxnW3X.mjs.map → rollback-CEE6dse4.mjs.map} +1 -1
- package/dist/{rollback-CPSDjGse.cjs → rollback-DFMiBWf0.cjs} +8 -8
- package/dist/{rollback-CPSDjGse.cjs.map → rollback-DFMiBWf0.cjs.map} +1 -1
- package/dist/{runtime-CNu2C2hB.d.mts → runtime-D48ZKk8_.d.cts} +2 -2
- package/dist/{runtime-CNu2C2hB.d.mts.map → runtime-D48ZKk8_.d.cts.map} +1 -1
- package/dist/{runtime-DMLgL26v.d.cts → runtime-HabiNBtJ.d.mts} +2 -2
- package/dist/{runtime-DMLgL26v.d.cts.map → runtime-HabiNBtJ.d.mts.map} +1 -1
- package/dist/{seeds-BK8caVMm.mjs → seeds-BYdrtZsC.mjs} +1554 -54
- package/dist/seeds-BYdrtZsC.mjs.map +1 -0
- package/dist/{seeds-DQ0FG57Z.cjs → seeds-CsI0A_Ef.cjs} +1656 -65
- package/dist/seeds-CsI0A_Ef.cjs.map +1 -0
- package/dist/{sniffer-CqE_KTTp.mjs → sniffer-B0EU73bj.mjs} +5 -360
- package/dist/sniffer-B0EU73bj.mjs.map +1 -0
- package/dist/{sniffer-hSf5mRgV.cjs → sniffer-DJYupBeK.cjs} +4 -413
- package/dist/sniffer-DJYupBeK.cjs.map +1 -0
- package/dist/{sst-DRi3H5TB.mjs → sst-D1Qj4sIs.mjs} +3 -3
- package/dist/{sst-DRi3H5TB.mjs.map → sst-D1Qj4sIs.mjs.map} +1 -1
- package/dist/{sst-hBrKouBy.cjs → sst-DAqUoZKG.cjs} +5 -5
- package/dist/{sst-hBrKouBy.cjs.map → sst-DAqUoZKG.cjs.map} +1 -1
- package/dist/{stages-CS1sjcRb.cjs → stages-Brn3vcdy.cjs} +2 -2
- package/dist/{stages-CS1sjcRb.cjs.map → stages-Brn3vcdy.cjs.map} +1 -1
- package/dist/{stages-CSXt7N2b.mjs → stages-DoHHz6pS.mjs} +2 -2
- package/dist/{stages-CSXt7N2b.mjs.map → stages-DoHHz6pS.mjs.map} +1 -1
- package/dist/target/public.cjs +1 -1
- package/dist/target/public.d.cts +2 -2
- package/dist/target/public.d.mts +2 -2
- package/dist/target/public.mjs +1 -1
- package/dist/{terminal-BdvrmkaC.mjs → terminal-BTbZlrFV.mjs} +2 -2
- package/dist/{terminal-BdvrmkaC.mjs.map → terminal-BTbZlrFV.mjs.map} +1 -1
- package/dist/{terminal-BL5E0xbR.cjs → terminal-COv23heb.cjs} +2 -2
- package/dist/{terminal-BL5E0xbR.cjs.map → terminal-COv23heb.cjs.map} +1 -1
- package/dist/{types-BZn-8ssD.d.mts → types-0oAyFOfR.d.cts} +48 -49
- package/dist/types-0oAyFOfR.d.cts.map +1 -0
- package/dist/{types-DiZj6hqp.d.cts → types-BZ01tZs-.d.mts} +47 -50
- package/dist/types-BZ01tZs-.d.mts.map +1 -0
- package/dist/workspace/index.cjs +1 -1
- package/dist/workspace/index.d.cts +2 -2
- package/dist/workspace/index.d.mts +2 -2
- package/dist/workspace/index.mjs +1 -1
- package/dist/{workspace-Bic_R3tz.cjs → workspace-CT0JM3Y8.cjs} +333 -1
- package/dist/workspace-CT0JM3Y8.cjs.map +1 -0
- package/dist/{workspace-Drz4jsvy.mjs → workspace-D2CYLMCW.mjs} +250 -2
- package/dist/workspace-D2CYLMCW.mjs.map +1 -0
- package/package.json +15 -15
- package/dist/LocalStateStore-CdpzTvPn.cjs.map +0 -1
- package/dist/LocalStateStore-D1VfxRuK.mjs.map +0 -1
- package/dist/add-BQ8v1ZII.cjs.map +0 -1
- package/dist/add-DbnzC7Kl.mjs.map +0 -1
- package/dist/cli-D8YQAYUX.cjs.map +0 -1
- package/dist/cli-DwTa9d_8.mjs.map +0 -1
- package/dist/compose-C5wz8mf9.mjs.map +0 -1
- package/dist/compose-DqWh1TaO.cjs.map +0 -1
- package/dist/credentials-BVs7mrtw.cjs.map +0 -1
- package/dist/credentials-pAtB70k3.mjs.map +0 -1
- package/dist/deploy-BwIKGxWH.mjs.map +0 -1
- package/dist/deploy-C8sWg81_.cjs.map +0 -1
- package/dist/engine-BP0CZ5fh.mjs.map +0 -1
- package/dist/engine-DLEJsZ3i.cjs.map +0 -1
- package/dist/run-BJLIerMM.mjs +0 -133
- package/dist/run-BJLIerMM.mjs.map +0 -1
- package/dist/run-fVZ-rLnc.cjs +0 -174
- package/dist/run-fVZ-rLnc.cjs.map +0 -1
- package/dist/seeds-BK8caVMm.mjs.map +0 -1
- package/dist/seeds-DQ0FG57Z.cjs.map +0 -1
- package/dist/sniffer-CqE_KTTp.mjs.map +0 -1
- package/dist/sniffer-hSf5mRgV.cjs.map +0 -1
- package/dist/types-BZn-8ssD.d.mts.map +0 -1
- package/dist/types-DiZj6hqp.d.cts.map +0 -1
- package/dist/workspace-Bic_R3tz.cjs.map +0 -1
- package/dist/workspace-Drz4jsvy.mjs.map +0 -1
|
@@ -118,6 +118,237 @@ function checkComposeStages(config, stages) {
|
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
//#endregion
|
|
121
|
+
//#region src/providers/s3/errors.ts
|
|
122
|
+
/** What the `s3` provider refuses, and how each is put right. */
|
|
123
|
+
/** An `objects` entry for `s3` with a field it does not take or cannot use. */
|
|
124
|
+
var S3ProviderConfigInvalid = class extends Error {
|
|
125
|
+
stage;
|
|
126
|
+
field;
|
|
127
|
+
value;
|
|
128
|
+
expected;
|
|
129
|
+
constructor(stage, field, value, expected) {
|
|
130
|
+
super(`deploy.objects.${stage}.${field} is ${JSON.stringify(value)}; ${expected}.`);
|
|
131
|
+
this.stage = stage;
|
|
132
|
+
this.field = field;
|
|
133
|
+
this.value = value;
|
|
134
|
+
this.expected = expected;
|
|
135
|
+
this.name = "S3ProviderConfigInvalid";
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
/** No region anywhere to create the stage's buckets in. */
|
|
139
|
+
var S3RegionRequired = class extends Error {
|
|
140
|
+
stage;
|
|
141
|
+
constructor(stage) {
|
|
142
|
+
super(`The s3 provider has no region for the stage '${stage}'. Name one in gkm.config.ts: deploy: { objects: { ${stage}: { provider: 's3', region: 'eu-west-1' } } } — or set AWS_REGION.`);
|
|
143
|
+
this.stage = stage;
|
|
144
|
+
this.name = "S3RegionRequired";
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
/** The good name and every suffixed one are taken by other accounts. */
|
|
148
|
+
var BucketNameUnavailable = class extends Error {
|
|
149
|
+
id;
|
|
150
|
+
tried;
|
|
151
|
+
constructor(id, tried) {
|
|
152
|
+
super(`Every name tried for the bucket '${id}' is taken by another AWS account: ${tried.join(", ")}. Set deploy.namespace in gkm.config.ts to something more particular to you, and run the provision again.`);
|
|
153
|
+
this.id = id;
|
|
154
|
+
this.tried = tried;
|
|
155
|
+
this.name = "BucketNameUnavailable";
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
/** A bucket in this account carries another project's tag. */
|
|
159
|
+
var BucketOwnedByAnotherProject = class extends Error {
|
|
160
|
+
bucket;
|
|
161
|
+
owner;
|
|
162
|
+
project;
|
|
163
|
+
constructor(bucket, owner, project) {
|
|
164
|
+
super(`The bucket '${bucket}' is in this account and tagged gkm:project=${owner}, not ${project}: another project's. gkm never adopts it. Set deploy.namespace in gkm.config.ts so this project names its buckets differently.`);
|
|
165
|
+
this.bucket = bucket;
|
|
166
|
+
this.owner = owner;
|
|
167
|
+
this.project = project;
|
|
168
|
+
this.name = "BucketOwnedByAnotherProject";
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
/** The bucket the stage's state names exists, and this account cannot reach it. */
|
|
172
|
+
var RecordedBucketUnreachable = class extends Error {
|
|
173
|
+
id;
|
|
174
|
+
bucket;
|
|
175
|
+
constructor(id, bucket) {
|
|
176
|
+
super(`The stage's state records '${bucket}' as the bucket for '${id}', and this account cannot reach it — it is in another account, or the credentials are not the stage account's. Run with the account that created it (--profile).`);
|
|
177
|
+
this.id = id;
|
|
178
|
+
this.bucket = bucket;
|
|
179
|
+
this.name = "RecordedBucketUnreachable";
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
/** An IAM user by gkm's name exists, and gkm did not create it for this stage. */
|
|
183
|
+
var IamUserNotOwned = class extends Error {
|
|
184
|
+
user;
|
|
185
|
+
project;
|
|
186
|
+
stage;
|
|
187
|
+
constructor(user, project, stage) {
|
|
188
|
+
super(`The IAM user '${user}' exists and is not tagged gkm:project=${project}, gkm:stage=${stage}, so gkm leaves it alone. Rename or delete it, or set deploy.namespace in gkm.config.ts so gkm names its users differently.`);
|
|
189
|
+
this.user = user;
|
|
190
|
+
this.project = project;
|
|
191
|
+
this.stage = stage;
|
|
192
|
+
this.name = "IamUserNotOwned";
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
/** The user already has the two access keys IAM allows. */
|
|
196
|
+
var AccessKeyLimit = class extends Error {
|
|
197
|
+
user;
|
|
198
|
+
keys;
|
|
199
|
+
constructor(user, keys) {
|
|
200
|
+
super(`The IAM user '${user}' already has two access keys (${keys.join(", ")}), the most IAM allows, and gkm needs to issue one. Delete the one the stage does not use (aws iam delete-access-key --user-name ${user} --access-key-id …), then run the provision again.`);
|
|
201
|
+
this.user = user;
|
|
202
|
+
this.keys = keys;
|
|
203
|
+
this.name = "AccessKeyLimit";
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
/** `--rotate-keys` while the last rotation's old key is still active. */
|
|
207
|
+
var RotationInProgress = class extends Error {
|
|
208
|
+
id;
|
|
209
|
+
previous;
|
|
210
|
+
stage;
|
|
211
|
+
constructor(id, previous, stage) {
|
|
212
|
+
super(`The bucket '${id}' is mid-rotation: its old key ${previous} is still active. Deploy '${stage}', then run gkm setup --stage ${stage} — or pass --retire-old-keys to delete it now — before rotating again.`);
|
|
213
|
+
this.id = id;
|
|
214
|
+
this.previous = previous;
|
|
215
|
+
this.stage = stage;
|
|
216
|
+
this.name = "RotationInProgress";
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
/** The stage's secrets point the bucket's key at a bucket gkm did not provision. */
|
|
220
|
+
var BucketKeySetElsewhere = class extends Error {
|
|
221
|
+
key;
|
|
222
|
+
bucket;
|
|
223
|
+
found;
|
|
224
|
+
stage;
|
|
225
|
+
constructor(key, bucket, found, stage) {
|
|
226
|
+
super(`${key} in the stage '${stage}' points at the bucket '${found}', and the s3 provider manages '${bucket}' for it. Remove the key (gkm secrets:unset ${key} --stage ${stage}) to have the provider write its own, or set deploy.objects.${stage} to 'external' to keep yours.`);
|
|
227
|
+
this.key = key;
|
|
228
|
+
this.bucket = bucket;
|
|
229
|
+
this.found = found;
|
|
230
|
+
this.stage = stage;
|
|
231
|
+
this.name = "BucketKeySetElsewhere";
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
/** `verify()`: a provisioned bucket the stage's key cannot reach. */
|
|
235
|
+
var ProvisionedBucketUnreachable = class extends Error {
|
|
236
|
+
id;
|
|
237
|
+
bucket;
|
|
238
|
+
stage;
|
|
239
|
+
reason;
|
|
240
|
+
constructor(id, bucket, stage, reason) {
|
|
241
|
+
super(`The bucket '${bucket}' (${id}) cannot be reached with the key in the stage '${stage}''s secrets: ${reason}. Run gkm setup --stage ${stage} with the stage account's credentials to create or repair it, then deploy again.`);
|
|
242
|
+
this.id = id;
|
|
243
|
+
this.bucket = bucket;
|
|
244
|
+
this.stage = stage;
|
|
245
|
+
this.reason = reason;
|
|
246
|
+
this.name = "ProvisionedBucketUnreachable";
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
//#endregion
|
|
250
|
+
//#region src/providers/s3/config.ts
|
|
251
|
+
const FIELDS = [
|
|
252
|
+
"provider",
|
|
253
|
+
"region",
|
|
254
|
+
"versioning"
|
|
255
|
+
];
|
|
256
|
+
/** An AWS region code: `eu-west-1`, `us-gov-west-1`, `ap-southeast-4`. */
|
|
257
|
+
const REGION = /^[a-z]{2}(-[a-z]+)+-\d+$/;
|
|
258
|
+
function checkS3Config(stage, config) {
|
|
259
|
+
const entry = config;
|
|
260
|
+
for (const field of Object.keys(entry)) if (!FIELDS.includes(field)) throw new S3ProviderConfigInvalid(stage, field, entry[field], `the s3 provider takes ${FIELDS.slice(1).join(" and ")} only`);
|
|
261
|
+
if (entry.region !== void 0) {
|
|
262
|
+
if (typeof entry.region !== "string" || !REGION.test(entry.region)) throw new S3ProviderConfigInvalid(stage, "region", entry.region, "set it to an AWS region code, like 'eu-west-1'");
|
|
263
|
+
}
|
|
264
|
+
if (entry.versioning !== void 0 && typeof entry.versioning !== "boolean") throw new S3ProviderConfigInvalid(stage, "versioning", entry.versioning, "set it to true to keep previous versions of every object, or leave it out");
|
|
265
|
+
return entry;
|
|
266
|
+
}
|
|
267
|
+
/** How the s3 provider's provisioning credentials are supplied. */
|
|
268
|
+
const S3_PROVISIONING = {
|
|
269
|
+
env: [
|
|
270
|
+
"AWS_PROFILE",
|
|
271
|
+
"AWS_ACCESS_KEY_ID",
|
|
272
|
+
"AWS_SECRET_ACCESS_KEY",
|
|
273
|
+
"AWS_SESSION_TOKEN"
|
|
274
|
+
],
|
|
275
|
+
describe: "the stage's AWS account — --profile <name>, AWS_PROFILE, or AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY (in CI, what aws-actions/configure-aws-credentials exports)"
|
|
276
|
+
};
|
|
277
|
+
//#endregion
|
|
278
|
+
//#region src/providers/config.ts
|
|
279
|
+
/**
|
|
280
|
+
* `deploy.<kind>.<stage>`, read: what backs one kind of construct on a stage.
|
|
281
|
+
*
|
|
282
|
+
* Kept free of the providers themselves — of the AWS SDK and the graph — so
|
|
283
|
+
* the workspace schema can check an entry with the words a deploy would use,
|
|
284
|
+
* the way `checkStageTelemetry` does for `deploy.telemetry`.
|
|
285
|
+
*/
|
|
286
|
+
/** Each provider's config check, by kind and name. */
|
|
287
|
+
const CHECKS = { objects: { s3: checkS3Config } };
|
|
288
|
+
/** How each provider's provisioning credentials are supplied, by kind and name. */
|
|
289
|
+
const PROVISIONING = { objects: { s3: S3_PROVISIONING } };
|
|
290
|
+
/** How `name`'s provisioning credentials are supplied, for messages. */
|
|
291
|
+
function provisioningOf(kind, name) {
|
|
292
|
+
return Object.hasOwn(PROVISIONING[kind], name) ? PROVISIONING[kind][name] : void 0;
|
|
293
|
+
}
|
|
294
|
+
/** The `provider:` names a kind accepts. */
|
|
295
|
+
function providerNamesOf(kind) {
|
|
296
|
+
return Object.keys(CHECKS[kind]).sort();
|
|
297
|
+
}
|
|
298
|
+
/** What `deploy.<kind>.<stage>` may be, for messages. */
|
|
299
|
+
function accepted(kind) {
|
|
300
|
+
return [
|
|
301
|
+
"'external'",
|
|
302
|
+
...providerNamesOf(kind).map((name) => `{ provider: '${name}' }`),
|
|
303
|
+
"false"
|
|
304
|
+
].join(", ");
|
|
305
|
+
}
|
|
306
|
+
/** An entry that names no provider gkm has, or is not an entry at all. */
|
|
307
|
+
var UnknownStageProvider = class extends Error {
|
|
308
|
+
kind;
|
|
309
|
+
stage;
|
|
310
|
+
value;
|
|
311
|
+
constructor(kind, stage, value) {
|
|
312
|
+
super(`deploy.${kind}.${stage} is ${JSON.stringify(value)}, which is not a provider gkm has for ${kind}. It takes ${accepted(kind)}.`);
|
|
313
|
+
this.kind = kind;
|
|
314
|
+
this.stage = stage;
|
|
315
|
+
this.value = value;
|
|
316
|
+
this.name = "UnknownStageProvider";
|
|
317
|
+
}
|
|
318
|
+
};
|
|
319
|
+
/**
|
|
320
|
+
* One stage's entry checked: `'external'`, `false`, or a provider's object
|
|
321
|
+
* that its own check accepts.
|
|
322
|
+
*
|
|
323
|
+
* @throws {UnknownStageProvider} for anything else — `'minio'` included
|
|
324
|
+
*/
|
|
325
|
+
function checkStageProvider(kind, stage, value) {
|
|
326
|
+
if (value === "external" || value === false) return value;
|
|
327
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
328
|
+
const name = value.provider;
|
|
329
|
+
const check = typeof name === "string" && Object.hasOwn(CHECKS[kind], name) ? CHECKS[kind][name] : void 0;
|
|
330
|
+
if (check) return check(stage, value);
|
|
331
|
+
}
|
|
332
|
+
throw new UnknownStageProvider(kind, stage, value);
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* What backs `kind` on `stage`: the local stage is always `external` here —
|
|
336
|
+
* `gkm dev` runs its own — and a deployed stage that names nothing is too.
|
|
337
|
+
*/
|
|
338
|
+
function stageProvider(workspace, kind, stage) {
|
|
339
|
+
if (stage === workspace.stages?.local) return { mode: "external" };
|
|
340
|
+
const value = workspace.deploy?.[kind]?.[stage];
|
|
341
|
+
if (value === void 0) return { mode: "external" };
|
|
342
|
+
const entry = checkStageProvider(kind, stage, value);
|
|
343
|
+
if (entry === "external") return { mode: "external" };
|
|
344
|
+
if (entry === false) return { mode: "none" };
|
|
345
|
+
return {
|
|
346
|
+
mode: "provider",
|
|
347
|
+
name: entry.provider,
|
|
348
|
+
config: entry
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
//#endregion
|
|
121
352
|
//#region src/compose/logsConfig.ts
|
|
122
353
|
/**
|
|
123
354
|
* The self-hosted telemetry provider's options, read: how the stack's
|
|
@@ -815,6 +1046,22 @@ const TelemetryConfigSchema = record(string(), union([
|
|
|
815
1046
|
}
|
|
816
1047
|
});
|
|
817
1048
|
/**
|
|
1049
|
+
* `deploy.objects` — what backs each deployed stage's buckets. The rules are
|
|
1050
|
+
* `checkStageProvider`'s, so the schema and a provision run refuse the same
|
|
1051
|
+
* entries with the same words.
|
|
1052
|
+
*/
|
|
1053
|
+
const ObjectsConfigSchema = record(string(), unknown()).superRefine((entries, ctx) => {
|
|
1054
|
+
for (const [stage, value] of Object.entries(entries)) try {
|
|
1055
|
+
checkStageProvider("objects", stage, value);
|
|
1056
|
+
} catch (error) {
|
|
1057
|
+
ctx.addIssue({
|
|
1058
|
+
code: "custom",
|
|
1059
|
+
message: error instanceof Error ? error.message : String(error),
|
|
1060
|
+
path: [stage]
|
|
1061
|
+
});
|
|
1062
|
+
}
|
|
1063
|
+
});
|
|
1064
|
+
/**
|
|
818
1065
|
* Deploy configuration schema.
|
|
819
1066
|
*/
|
|
820
1067
|
const DeployConfigSchema = object({
|
|
@@ -835,6 +1082,7 @@ const DeployConfigSchema = object({
|
|
|
835
1082
|
dokploy: DokployWorkspaceConfigSchema.optional(),
|
|
836
1083
|
compose: ComposeWorkspaceConfigSchema.optional(),
|
|
837
1084
|
telemetry: TelemetryConfigSchema.optional(),
|
|
1085
|
+
objects: ObjectsConfigSchema.optional(),
|
|
838
1086
|
dns: DnsConfigWithLegacySchema.optional(),
|
|
839
1087
|
backups: BackupsConfigSchema.optional()
|
|
840
1088
|
});
|
|
@@ -1505,6 +1753,6 @@ function getEndpointForStage(dokployConfig, stage) {
|
|
|
1505
1753
|
return dokployConfig.endpoint;
|
|
1506
1754
|
}
|
|
1507
1755
|
//#endregion
|
|
1508
|
-
export { UndeclaredStage as A,
|
|
1756
|
+
export { ComposeTlsFileMissing as $, UndeclaredStage as A, provisioningOf as B, getDeployTargetError as C, validateWorkspaceConfig as D, safeValidateWorkspaceConfig as E, resolveStageTelemetry as F, BucketKeySetElsewhere as G, S3_PROVISIONING as H, stageSampleRate as I, IamUserNotOwned as J, BucketNameUnavailable as K, telemetryEnv as L, deployedProblems as M, stageProblems as N, InvalidStages as O, otlpTelemetryEnv as P, S3RegionRequired as Q, LOGS_PORT as R, formatValidationErrors as S, isPhase2DeployTarget as T, checkS3Config as U, stageProvider as V, AccessKeyLimit as W, RecordedBucketUnreachable as X, ProvisionedBucketUnreachable as Y, RotationInProgress as Z, stripPublicPrefix as _, assertNoMovedDeployKeys as a, SUPPORTED_DEPLOY_TARGETS as b, getAppBuildOrder as c, normalizeWorkspace as d, certificateFor as et, processConfig as f, getPublicEnvPrefix as g, PUBLIC_ENV_PREFIXES as h, appConstructGlobs as i, assertDeployedStage as j, TEST_STAGE as k, getAppGkmConfig as l, wrapSingleAppAsWorkspace as m, InvalidWorkspaceConfig as n, SECRETS_STORE_PROVIDERS as nt, constructPatterns as o, workspaceConstructGlobs as p, BucketOwnedByAnotherProject as q, allConstructGlobs as r, UnknownSecretsStoreProvider as rt, defineWorkspace as s, DokployRegistryMoved as t, proxyFor as tt, getEndpointForStage as u, isWorkspaceConfig as v, isDeployTargetSupported as w, WorkspaceConfigSchema as x, PHASE_2_DEPLOY_TARGETS as y, UnknownStageProvider as z };
|
|
1509
1757
|
|
|
1510
|
-
//# sourceMappingURL=workspace-
|
|
1758
|
+
//# sourceMappingURL=workspace-D2CYLMCW.mjs.map
|