@alchemy.run/docker 2.0.0-beta.85 → 2.0.0-beta.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.
Files changed (93) hide show
  1. package/README.md +16 -0
  2. package/lib/Bootstrap.d.ts.map +1 -1
  3. package/lib/Bootstrap.js +2 -1
  4. package/lib/Bootstrap.js.map +1 -1
  5. package/lib/BuildCache.d.ts +87 -0
  6. package/lib/BuildCache.d.ts.map +1 -0
  7. package/lib/BuildCache.js +39 -0
  8. package/lib/BuildCache.js.map +1 -0
  9. package/lib/BuildHash.d.ts +9 -1
  10. package/lib/BuildHash.d.ts.map +1 -1
  11. package/lib/BuildHash.js +51 -19
  12. package/lib/BuildHash.js.map +1 -1
  13. package/lib/BuildPlan.d.ts +202 -0
  14. package/lib/BuildPlan.d.ts.map +1 -0
  15. package/lib/BuildPlan.js +514 -0
  16. package/lib/BuildPlan.js.map +1 -0
  17. package/lib/Container.d.ts +24 -1
  18. package/lib/Container.d.ts.map +1 -1
  19. package/lib/Container.js +14 -0
  20. package/lib/Container.js.map +1 -1
  21. package/lib/Context.d.ts +20 -1
  22. package/lib/Context.d.ts.map +1 -1
  23. package/lib/Context.js +15 -0
  24. package/lib/Context.js.map +1 -1
  25. package/lib/Docker.d.ts +33 -0
  26. package/lib/Docker.d.ts.map +1 -1
  27. package/lib/Docker.js +23 -2
  28. package/lib/Docker.js.map +1 -1
  29. package/lib/Dockerfile.d.ts +0 -2
  30. package/lib/Dockerfile.d.ts.map +1 -1
  31. package/lib/Dockerfile.js.map +1 -1
  32. package/lib/DockerfileParser.d.ts +125 -0
  33. package/lib/DockerfileParser.d.ts.map +1 -0
  34. package/lib/DockerfileParser.js +1040 -0
  35. package/lib/DockerfileParser.js.map +1 -0
  36. package/lib/HealthcheckCommand.d.ts.map +1 -1
  37. package/lib/HealthcheckCommand.js.map +1 -1
  38. package/lib/Image.d.ts +40 -12
  39. package/lib/Image.d.ts.map +1 -1
  40. package/lib/Image.js +41 -9
  41. package/lib/Image.js.map +1 -1
  42. package/lib/ImageArchive.d.ts +41 -0
  43. package/lib/ImageArchive.d.ts.map +1 -0
  44. package/lib/ImageArchive.js +54 -0
  45. package/lib/ImageArchive.js.map +1 -0
  46. package/lib/ImageSource.d.ts +100 -11
  47. package/lib/ImageSource.d.ts.map +1 -1
  48. package/lib/ImageSource.js +219 -73
  49. package/lib/ImageSource.js.map +1 -1
  50. package/lib/Network.d.ts +175 -3
  51. package/lib/Network.d.ts.map +1 -1
  52. package/lib/Network.js +296 -8
  53. package/lib/Network.js.map +1 -1
  54. package/lib/Providers.d.ts.map +1 -1
  55. package/lib/Providers.js.map +1 -1
  56. package/lib/Registry.d.ts.map +1 -1
  57. package/lib/Registry.js.map +1 -1
  58. package/lib/RegistryError.d.ts.map +1 -1
  59. package/lib/RegistryError.js.map +1 -1
  60. package/lib/RemoteImage.d.ts.map +1 -1
  61. package/lib/RemoteImage.js.map +1 -1
  62. package/lib/Service.d.ts.map +1 -1
  63. package/lib/Service.js.map +1 -1
  64. package/lib/ServiceImage.d.ts.map +1 -1
  65. package/lib/ServiceImage.js.map +1 -1
  66. package/lib/ShellWord.d.ts +28 -0
  67. package/lib/ShellWord.d.ts.map +1 -0
  68. package/lib/ShellWord.js +301 -0
  69. package/lib/ShellWord.js.map +1 -0
  70. package/lib/Swarm.d.ts.map +1 -1
  71. package/lib/Swarm.js.map +1 -1
  72. package/lib/Volume.d.ts +24 -1
  73. package/lib/Volume.d.ts.map +1 -1
  74. package/lib/Volume.js +16 -0
  75. package/lib/Volume.js.map +1 -1
  76. package/lib/index.d.ts.map +1 -1
  77. package/lib/index.js.map +1 -1
  78. package/package.json +9 -9
  79. package/src/Bootstrap.ts +2 -0
  80. package/src/BuildCache.ts +111 -0
  81. package/src/BuildHash.ts +73 -24
  82. package/src/BuildPlan.ts +758 -0
  83. package/src/Container.ts +31 -1
  84. package/src/Context.ts +27 -1
  85. package/src/Docker.ts +56 -2
  86. package/src/Dockerfile.ts +0 -2
  87. package/src/DockerfileParser.ts +1152 -0
  88. package/src/Image.ts +45 -14
  89. package/src/ImageArchive.ts +77 -0
  90. package/src/ImageSource.ts +322 -103
  91. package/src/Network.ts +432 -10
  92. package/src/ShellWord.ts +326 -0
  93. package/src/Volume.ts +33 -1
@@ -0,0 +1,301 @@
1
+ /**
2
+ * Docker's word processing (BuildKit `frontend/dockerfile/shell/lex.go`),
3
+ * without an environment: quotes and escapes are resolved and every variable
4
+ * reference is kept as written (`$NAME`, `${NAME:-default}`), as BuildKit
5
+ * does with `SkipUnsetEnv`. Expanding variables is left to the builder.
6
+ */
7
+ import * as Data from "effect/Data";
8
+ import * as Result from "effect/Result";
9
+ /** A word Docker cannot process: an unterminated quote or a bad `${…}`. */
10
+ export class ShellWordError extends Data.TaggedError("ShellWordError") {
11
+ }
12
+ const EOF = undefined;
13
+ const isSpace = (ch) => /\s/u.test(ch);
14
+ const isLetter = (ch) => /\p{L}/u.test(ch);
15
+ const isDigit = (ch) => /\p{Nd}/u.test(ch);
16
+ const isSpecialParam = (ch) => "@*#?-$!0".includes(ch);
17
+ const isWhitespace = (ch) => ch === "\t" || ch === "\r" || ch === " ";
18
+ class Words {
19
+ shared;
20
+ inWord = false;
21
+ constructor(shared) {
22
+ this.shared = shared;
23
+ }
24
+ get buf() {
25
+ return this.shared.value;
26
+ }
27
+ set buf(value) {
28
+ this.shared.value = value;
29
+ }
30
+ words = [];
31
+ addChar(ch) {
32
+ if (isSpace(ch) && this.inWord) {
33
+ if (this.buf.length !== 0) {
34
+ this.words.push(this.buf);
35
+ this.buf = "";
36
+ this.inWord = false;
37
+ }
38
+ }
39
+ else if (!isSpace(ch)) {
40
+ this.addRawChar(ch);
41
+ }
42
+ }
43
+ addRawChar(ch) {
44
+ this.buf += ch;
45
+ this.inWord = true;
46
+ }
47
+ addString(str) {
48
+ for (const ch of str)
49
+ this.addChar(ch);
50
+ }
51
+ addRawString(str) {
52
+ this.buf += str;
53
+ this.inWord = true;
54
+ }
55
+ get() {
56
+ if (this.buf.length > 0) {
57
+ this.words.push(this.buf);
58
+ this.buf = "";
59
+ this.inWord = false;
60
+ }
61
+ return this.words;
62
+ }
63
+ }
64
+ class Lexer {
65
+ options;
66
+ chars;
67
+ pos = 0;
68
+ rawEscapes;
69
+ wordBuffer = { value: "" };
70
+ /** The first error. Failing also ends the input, so every loop stops. */
71
+ error;
72
+ constructor(input, options) {
73
+ this.options = options;
74
+ this.chars = Array.from(input);
75
+ this.rawEscapes = options.rawEscapes ?? false;
76
+ }
77
+ peek() {
78
+ return this.chars[this.pos];
79
+ }
80
+ next() {
81
+ return this.chars[this.pos++];
82
+ }
83
+ fail(message) {
84
+ this.error ??= new ShellWordError({ message });
85
+ this.pos = this.chars.length;
86
+ return "";
87
+ }
88
+ process() {
89
+ return this.processStopOn(EOF, this.rawEscapes, false);
90
+ }
91
+ processStopOn(stop, rawEscapes, preservePatternEscapes) {
92
+ let result = "";
93
+ this.wordBuffer.value = "";
94
+ const words = new Words(this.wordBuffer);
95
+ const saved = this.rawEscapes;
96
+ this.rawEscapes = rawEscapes;
97
+ while (this.peek() !== EOF) {
98
+ const ch = this.peek();
99
+ if (stop !== EOF && ch === stop) {
100
+ this.next();
101
+ this.rawEscapes = saved;
102
+ return { result, words: words.get() };
103
+ }
104
+ if (ch === "$") {
105
+ const tmp = this.processDollar();
106
+ result += tmp;
107
+ words.addString(tmp);
108
+ }
109
+ else if (ch === "<") {
110
+ const tmp = this.processPossibleHeredoc();
111
+ result += tmp;
112
+ words.addRawString(tmp);
113
+ }
114
+ else if (ch === "'") {
115
+ const tmp = this.processSingleQuote(preservePatternEscapes);
116
+ result += tmp;
117
+ words.addRawString(tmp);
118
+ }
119
+ else if (ch === '"') {
120
+ const tmp = this.processDoubleQuote(preservePatternEscapes);
121
+ result += tmp;
122
+ words.addRawString(tmp);
123
+ }
124
+ else {
125
+ let c = this.next();
126
+ if (c === this.options.escape) {
127
+ if (this.rawEscapes) {
128
+ words.addRawChar(c);
129
+ result += c;
130
+ }
131
+ const escaped = this.next();
132
+ if (escaped === EOF)
133
+ break;
134
+ c = escaped;
135
+ words.addRawChar(c);
136
+ }
137
+ else {
138
+ words.addChar(c);
139
+ }
140
+ result += c;
141
+ }
142
+ }
143
+ this.rawEscapes = saved;
144
+ if (stop !== EOF) {
145
+ this.fail(`unexpected end of statement while looking for matching ${stop}`);
146
+ }
147
+ return { result, words: words.get() };
148
+ }
149
+ processSingleQuote(preservePatternEscapes) {
150
+ let result = "";
151
+ const open = this.next();
152
+ if (this.options.rawQuotes)
153
+ result += open;
154
+ for (;;) {
155
+ const ch = this.next();
156
+ if (ch === EOF) {
157
+ return this.fail("unexpected end of statement while looking for matching single-quote");
158
+ }
159
+ if (ch === "'") {
160
+ if (this.options.rawQuotes)
161
+ result += ch;
162
+ return result;
163
+ }
164
+ if (preservePatternEscapes && ch === this.options.escape)
165
+ result += ch;
166
+ result += ch;
167
+ }
168
+ }
169
+ processDoubleQuote(preservePatternEscapes) {
170
+ let result = "";
171
+ const open = this.next();
172
+ if (this.options.rawQuotes)
173
+ result += open;
174
+ for (;;) {
175
+ const peeked = this.peek();
176
+ if (peeked === EOF) {
177
+ return this.fail("unexpected end of statement while looking for matching double-quote");
178
+ }
179
+ if (peeked === '"') {
180
+ const close = this.next();
181
+ if (this.options.rawQuotes)
182
+ result += close;
183
+ return result;
184
+ }
185
+ if (peeked === "$") {
186
+ result += this.processDollar();
187
+ continue;
188
+ }
189
+ let ch = this.next();
190
+ if (ch === this.options.escape) {
191
+ const after = this.peek();
192
+ if (after === EOF)
193
+ continue;
194
+ if (after === '"' || after === "$" || after === this.options.escape) {
195
+ if (this.rawEscapes)
196
+ result += ch;
197
+ ch = this.next();
198
+ }
199
+ else if (this.rawEscapes && (!this.options.rawQuotes || preservePatternEscapes)) {
200
+ result += ch;
201
+ }
202
+ }
203
+ result += ch;
204
+ }
205
+ }
206
+ processDollar() {
207
+ this.next();
208
+ if (this.peek() !== "{") {
209
+ const name = this.processName();
210
+ return name === "" ? "$" : `$${name}`;
211
+ }
212
+ this.next();
213
+ const first = this.peek();
214
+ if (first === EOF)
215
+ return this.fail("syntax error: missing '}'");
216
+ if (first === "{" || first === "}" || first === ":") {
217
+ return this.fail("syntax error: bad substitution");
218
+ }
219
+ const name = this.processName();
220
+ let ch = this.next();
221
+ let chs = ch ?? "\uFFFD";
222
+ let nullIsUnset = false;
223
+ switch (ch) {
224
+ case "}":
225
+ return `\${${name}}`;
226
+ case ":":
227
+ case "+":
228
+ case "-":
229
+ case "?":
230
+ case "#":
231
+ case "%": {
232
+ if (ch === ":") {
233
+ nullIsUnset = true;
234
+ ch = this.next();
235
+ chs += ch ?? "\uFFFD";
236
+ }
237
+ const raw = ch === "#" || ch === "%";
238
+ if (nullIsUnset && raw) {
239
+ return this.fail(`unsupported modifier (${chs}) in substitution`);
240
+ }
241
+ const word = this.substitutionPart("}", raw, raw, "syntax error: missing '}'");
242
+ return `\${${name}${chs}${word}}`;
243
+ }
244
+ case "/": {
245
+ if (this.peek() === "/")
246
+ this.next();
247
+ const pattern = this.substitutionPart("/", true, true, "syntax error: missing '/' in ${}");
248
+ const replacement = this.substitutionPart("}", true, false, "syntax error: missing '}'");
249
+ return `\${${name}/${pattern}/${replacement}}`;
250
+ }
251
+ default:
252
+ return this.fail(`unsupported modifier (${chs}) in substitution`);
253
+ }
254
+ }
255
+ substitutionPart(stop, rawEscapes, preservePatternEscapes, missing) {
256
+ const before = this.error;
257
+ const part = this.processStopOn(stop, rawEscapes, preservePatternEscapes).result;
258
+ // An unterminated part reports the missing closer, as BuildKit does.
259
+ if (before === undefined && this.error?.message.startsWith("unexpected end")) {
260
+ this.error = new ShellWordError({ message: missing });
261
+ }
262
+ return part;
263
+ }
264
+ processName() {
265
+ let name = "";
266
+ while (this.peek() !== EOF) {
267
+ const ch = this.peek();
268
+ if (name.length === 0 && isDigit(ch)) {
269
+ while (this.peek() !== EOF && isDigit(this.peek()))
270
+ name += this.next();
271
+ return name;
272
+ }
273
+ if (name.length === 0 && isSpecialParam(ch))
274
+ return this.next();
275
+ if (!isLetter(ch) && !isDigit(ch) && ch !== "_")
276
+ break;
277
+ name += this.next();
278
+ }
279
+ return name;
280
+ }
281
+ processPossibleHeredoc() {
282
+ this.next();
283
+ if (this.peek() !== "<")
284
+ return "<";
285
+ this.next();
286
+ let space = "";
287
+ while (isWhitespace(this.peek()))
288
+ space += this.next();
289
+ return `<<${space}`;
290
+ }
291
+ }
292
+ const run = (input, options, pick) => {
293
+ const lexer = new Lexer(input, options);
294
+ const out = lexer.process();
295
+ return lexer.error === undefined ? Result.succeed(pick(out)) : Result.fail(lexer.error);
296
+ };
297
+ /** The word with quotes and escapes resolved. */
298
+ export const processWord = (word, options) => run(word, options, (out) => out.result);
299
+ /** The input split into words, as a shell would. */
300
+ export const processWords = (input, options) => run(input, options, (out) => out.words);
301
+ //# sourceMappingURL=ShellWord.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShellWord.js","sources":["../src/ShellWord.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Swarm.d.ts","sourceRoot":"","sources":["../src/Swarm.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAqB,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,UAAU;IACzB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAC5B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,KAAM,SAAQ,QAAQ,CACrC,cAAc,EACd,UAAU,EACV;IACE,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;CACf,EACD,KAAK,EACL,SAAS,CACV;CAAG;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,eAAO,MAAM,KAAK,iDAAkC,CAAC;AAErD,eAAO,MAAM,aAAa,6EAgFvB,CAAC"}
1
+ {"version":3,"file":"Swarm.d.ts","sources":["../src/Swarm.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAqB,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,UAAU;IACzB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAC5B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,KAAM,SAAQ,QAAQ,CACrC,cAAc,EACd,UAAU,EACV;IACE,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;CACf,EACD,KAAK,EACL,SAAS,CACV;CAAG;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,eAAO,MAAM,KAAK,iDAAkC,CAAC;AAErD,eAAO,MAAM,aAAa,6EAgFvB,CAAC"}
package/lib/Swarm.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Swarm.js","sourceRoot":"","sources":["../src/Swarm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAkDxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAQ,cAAc,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE,CAChC,QAAQ,CAAC,MAAM,CACb,KAAK,EACL,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC;IAE7B,mEAAmE;IACnE,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,OAA2B;QAC9D,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC;YACpF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvB,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACzC,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI;gBAAE,OAAO,SAAS,CAAC;YAC5B,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC/C,IAAI,MAAM;gBAAE,OAAO,KAAK,CAAC;YACzB,gEAAgE;YAChE,6DAA6D;YAC7D,6BAA6B;YAC7B,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC,CAAC;QACF,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;YACvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,OAAO,SAAS,CAAC;YACxC,IAAI,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;gBAC1E,OAAO,EAAE,MAAM,EAAE,SAAkB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YAC3D,CAAC;YACD,mEAAmE;YACnE,6DAA6D;YAC7D,OAAO,EAAE,MAAM,EAAE,MAAe,EAAE,CAAC;QACrC,CAAC,CAAC;QACF,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE;YACtC,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,QAAQ;gBAAE,OAAO,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAE1D,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK;iBAChB,IAAI,CAAC;gBACJ,OAAO;gBACP,gBAAgB,EAAE,IAAI,EAAE,aAAa;gBACrC,aAAa,EAAE,IAAI,EAAE,UAAU;gBAC/B,mBAAmB,EAAE,IAAI,EAAE,eAAe;gBAC1C,+BAA+B,EAAE,IAAI,EAAE,UAAU;aAClD,CAAC;iBACD,IAAI;YACH,gEAAgE;YAChE,+DAA+D;YAC/D,MAAM,CAAC,OAAO,CACZ,CAAC,KAAK,EAAE,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EACzD,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAClB,CACF,CAAC;YAEJ,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CACtB,IAAI,KAAK,CACP,mFAAmF,CACpF,CACF,CAAC;YACJ,CAAC;YACD,OAAO,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC,CAAC;QACF,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAC/B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAC3C,MAAM,CAAC,OAAO,CACZ,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EACrD,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAClB,EACD,MAAM,CAAC,MAAM,CACd,CACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CAAC;AAEJ,MAAM,iBAAiB,GAAG,CACxB,IAAsB,EACtB,OAA2B,EACN,EAAE,CAAC,CAAC;IACzB,EAAE,EAAE,IAAI,CAAC,OAAQ,CAAC,EAAE;IACpB,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,OAAO;IACP,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC;IAC5B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;CACvB,CAAC,CAAC"}
1
+ {"version":3,"file":"Swarm.js","sources":["../src/Swarm.ts"],"names":[],"mappings":"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"}
package/lib/Volume.d.ts CHANGED
@@ -39,7 +39,20 @@ export interface Volume extends Resource<"Docker.Volume", VolumeProps, {
39
39
  mountpoint?: string;
40
40
  /** Creation timestamp in milliseconds since epoch. */
41
41
  createdAt: number;
42
- }, never, Providers> {
42
+ }, never, Providers, VolumeLookup> {
43
+ }
44
+ /**
45
+ * Props for {@link Volume.lookup}: find a volume this stack
46
+ * doesn't manage by its name.
47
+ */
48
+ export interface VolumeLookup {
49
+ /** Volume name. */
50
+ name: string;
51
+ /**
52
+ * Docker context the engine is reached through.
53
+ * @default the current context
54
+ */
55
+ context?: string;
43
56
  }
44
57
  /**
45
58
  * A Docker volume managed through the active Docker context.
@@ -85,6 +98,16 @@ export interface Volume extends Resource<"Docker.Volume", VolumeProps, {
85
98
  * });
86
99
  * ```
87
100
  *
101
+ * ### Looking up an existing volume
102
+ * `Volume.lookup` references a volume Alchemy doesn't manage (created with
103
+ * the Docker CLI, Compose or another stack). It is read during plan/deploy,
104
+ * never created, updated or removed.
105
+ *
106
+ * **Example:** Reference an existing volume
107
+ * ```typescript
108
+ * const data = Docker.Volume.lookup({ name: "pgdata" });
109
+ * ```
110
+ *
88
111
  * @resource
89
112
  * @product Volume
90
113
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Volume.d.ts","sourceRoot":"","sources":["../src/Volume.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAI5C,OAAO,EAAE,MAAM,EAAyC,MAAM,aAAa,CAAC;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,WAAW;IAC1B,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,MAAO,SAAQ,QAAQ,CACtC,eAAe,EACf,WAAW,EACX;IACE,0BAA0B;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;CACnB,EACD,KAAK,EACL,SAAS,CACV;CAAG;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,eAAO,MAAM,MAAM,kDAAoC,CAAC;AAExD,eAAO,MAAM,cAAc,8IAiExB,CAAC;AAaJ,eAAO,MAAM,kBAAkB,SAAU,MAAM,CAAC,MAAM,KAAG,MAAM,CAAC,YAAY,CAQ1E,CAAC"}
1
+ {"version":3,"file":"Volume.d.ts","sources":["../src/Volume.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAI5C,OAAO,EAAE,MAAM,EAAyC,MAAM,aAAa,CAAC;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,WAAW;IAC1B,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,MAAO,SAAQ,QAAQ,CACtC,eAAe,EACf,WAAW,EACX;IACE,0BAA0B;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;CACnB,EACD,KAAK,EACL,SAAS,EACT,YAAY,CACb;CAAG;AAEJ;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,eAAO,MAAM,MAAM,kDAAoC,CAAC;AAExD,eAAO,MAAM,cAAc,8IAwExB,CAAC;AAaJ,eAAO,MAAM,kBAAkB,SAAU,MAAM,CAAC,MAAM,KAAG,MAAM,CAAC,YAAY,CAQ1E,CAAC"}
package/lib/Volume.js CHANGED
@@ -50,6 +50,16 @@ import { Docker, dockerContextName, dockerPhysicalName } from "./Docker.js";
50
50
  * });
51
51
  * ```
52
52
  *
53
+ * ### Looking up an existing volume
54
+ * `Volume.lookup` references a volume Alchemy doesn't manage (created with
55
+ * the Docker CLI, Compose or another stack). It is read during plan/deploy,
56
+ * never created, updated or removed.
57
+ *
58
+ * **Example:** Reference an existing volume
59
+ * ```typescript
60
+ * const data = Docker.Volume.lookup({ name: "pgdata" });
61
+ * ```
62
+ *
53
63
  * @resource
54
64
  * @product Volume
55
65
  */
@@ -58,6 +68,12 @@ export const VolumeProvider = () => Provider.effect(Volume, Effect.gen(function*
58
68
  const docker = yield* Docker;
59
69
  return Volume.Provider.of({
60
70
  list: () => Effect.succeed([]),
71
+ lookup: Effect.fn(function* ({ name, context }) {
72
+ const info = yield* docker.volume
73
+ .inspect(name, context)
74
+ .pipe(Effect.catchReason("PlatformError", "NotFound", () => Effect.undefined));
75
+ return info ? toVolumeAttributes(info) : undefined;
76
+ }),
61
77
  read: Effect.fn(function* ({ id, instanceId, olds, output }) {
62
78
  const context = dockerContextName(olds?.context);
63
79
  const name = yield* dockerPhysicalName(id, olds, instanceId);
package/lib/Volume.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Volume.js","sourceRoot":"","sources":["../src/Volume.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAkD5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAS,eAAe,CAAC,CAAC;AAExD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CACjC,QAAQ,CAAC,MAAM,CACb,MAAM,EACN,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC;IAE7B,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxB,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;YACzD,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM;iBAC9B,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;iBACtB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,eAAe,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACjF,IAAI,CAAC,IAAI;gBAAE,OAAO,SAAS,CAAC;YAC5B,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,MAAM;gBAAE,OAAO,KAAK,CAAC;YACzB,sEAAsE;YACtE,uDAAuD;YACvD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC;YAClE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC,CAAC;QACF,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;YAC/D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,OAAO,SAAS,CAAC;YACxC,IAAI,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;gBAC1E,OAAO,EAAE,MAAM,EAAE,SAAkB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YAC3D,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;YACzD,iEAAiE;YACjE,qEAAqE;YACrE,kEAAkE;YAClE,MAAM,WAAW,GAAG,IAAI,EAAE,IAAI,IAAI,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;YAC5D,IACE,MAAM,EAAE,IAAI,KAAK,WAAW;gBAC5B,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC,MAAM;gBAC9B,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;gBACvD,oEAAoE;gBACpE,sDAAsD;gBACtD,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAClE,CAAC;gBACD,OAAO,EAAE,MAAM,EAAE,SAAkB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC;QACF,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;YAC9D,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;YACzD,kEAAkE;YAClE,4DAA4D;YAC5D,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;YACrD,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;gBACzC,GAAG,IAAI;gBACP,IAAI;gBACJ,KAAK,EAAE,EAAE,GAAG,YAAY,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE;gBACzC,OAAO;aACR,CAAC,CAAC;YACH,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAClF,CAAC,CAAC;QACF,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CACrC,MAAM,CAAC,MAAM;aACV,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;aACrD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,eAAe,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAC5E;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CAAC;AAEJ,4EAA4E;AAC5E,MAAM,cAAc,GAAG,CAAC,EAAU,EAAE,KAA8B,EAAE,UAAkB,EAAE,EAAE,CACxF,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,IAAI,CAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAwD,EAAE,CAAC,CAAC;IAC1E,IAAI;IACJ,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,OAAO;IAChC,GAAG,EAAE,KAAK,EAAE,UAAU;IACtB,KAAK,EAAE,KAAK,EAAE,MAAM;CACrB,CAAC,CAAC,CACJ,CAAC;AAEJ,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAmB,EAAwB,EAAE,CAAC,CAAC;IAChF,EAAE,EAAE,IAAI,CAAC,IAAI;IACb,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,UAAU,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;IAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;IACzB,UAAU,EAAE,IAAI,CAAC,UAAU;IAC3B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE;CACpD,CAAC,CAAC"}
1
+ {"version":3,"file":"Volume.js","sources":["../src/Volume.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,KAAK,2BAA2B,GACjC,MAAM,oBAAoB,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,KAAK,2BAA2B,GACjC,MAAM,oBAAoB,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAE1B,MAAM,oBAAoB,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAE1B,MAAM,oBAAoB,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alchemy.run/docker",
3
- "version": "2.0.0-beta.85",
3
+ "version": "2.0.0-beta.86",
4
4
  "description": "Docker images, containers, networks, volumes and registries for Alchemy, and the image builds container platforms share.",
5
5
  "keywords": [
6
6
  "alchemy",
@@ -48,20 +48,20 @@
48
48
  "access": "public"
49
49
  },
50
50
  "dependencies": {
51
- "rolldown": "1.2.13"
51
+ "rolldown": "1.2.16"
52
52
  },
53
53
  "devDependencies": {
54
- "@effect/platform-bun": "^4.1.0",
54
+ "@effect/platform-bun": "^4.1.4",
55
55
  "@types/bun": "1.4.3",
56
56
  "@types/node": "26.6.5",
57
- "alchemy": "2.0.0-beta.85",
58
- "effect": "^4.1.0",
59
- "typescript": "^7.0.2"
57
+ "alchemy": "2.0.0-beta.86",
58
+ "effect": "^4.1.4",
59
+ "typescript": "^7.1.0-dev.20261105.1"
60
60
  },
61
61
  "peerDependencies": {
62
- "@effect/platform-bun": "^4.1.0",
63
- "alchemy": "2.0.0-beta.85",
64
- "effect": "^4.1.0"
62
+ "@effect/platform-bun": "^4.1.4",
63
+ "alchemy": "2.0.0-beta.86",
64
+ "effect": "^4.1.4"
65
65
  },
66
66
  "peerDependenciesMeta": {
67
67
  "@effect/platform-bun": {
package/src/Bootstrap.ts CHANGED
@@ -13,6 +13,7 @@ import {
13
13
  stackFromEnv,
14
14
  } from "alchemy/Runtime/Bootstrap";
15
15
  import * as ConfigProvider from "effect/ConfigProvider";
16
+ import * as SecureRandom from "effect/crypto/SecureRandom";
16
17
  import * as Effect from "effect/Effect";
17
18
  import * as FetchHttpClient from "effect/http/FetchHttpClient";
18
19
  import * as Layer from "effect/Layer";
@@ -27,6 +28,7 @@ export const bootstrap = (entrypoint: unknown): Promise<void> => {
27
28
  const platform = Layer.mergeAll(
28
29
  BunServices.layer,
29
30
  FetchHttpClient.layer,
31
+ SecureRandom.layerWebCrypto,
30
32
  Logger.layer([Logger.consolePretty()]),
31
33
  );
32
34
 
@@ -0,0 +1,111 @@
1
+ /**
2
+ * BuildKit layer-cache configuration shared by every Alchemy resource that
3
+ * builds a container image: `Docker.Image`, `Cloudflare.Container`, the
4
+ * `AWS.ECS`/`AWS.EKS`/`Kubernetes` image sources, `GCP.Run`, `AWS.ECR.Image`
5
+ * and `AWS.Lambda` image functions.
6
+ */
7
+
8
+ import * as Schema from "effect/Schema";
9
+ import type { RegistryCredentials } from "./Docker.ts";
10
+ import { repositoryFromImageRef } from "./Registry.ts";
11
+
12
+ /**
13
+ * Where an image build imports layer caches from and exports them to, as
14
+ * BuildKit's own `--cache-from` / `--cache-to` values, e.g.
15
+ * `"type=gha,scope=app,mode=max"`. See
16
+ * [cache backends](https://docs.docker.com/build/cache/backends/).
17
+ *
18
+ * Exporting a cache needs a builder that supports it: a `docker-container`
19
+ * Buildx builder (what `docker/setup-buildx-action` creates in CI), or the
20
+ * `docker` driver with the containerd image store. Backends such as `gha`
21
+ * and `s3` take credentials from the environment; values reach `docker`'s
22
+ * argv, so never put secrets in them.
23
+ */
24
+ export interface BuildCache {
25
+ /** Cache sources (`--cache-from`), imported in order. */
26
+ from?: ReadonlyArray<string>;
27
+ /** Cache destinations (`--cache-to`). */
28
+ to?: ReadonlyArray<string>;
29
+ }
30
+
31
+ /** Decodes a `cache` option: `true`/`false` or a {@link BuildCache}. */
32
+ export const BuildCacheSchema = Schema.Union([
33
+ Schema.Boolean,
34
+ Schema.Struct({
35
+ from: Schema.String.pipe(Schema.Array, Schema.optionalKey),
36
+ to: Schema.String.pipe(Schema.Array, Schema.optionalKey),
37
+ }),
38
+ ]);
39
+
40
+ /** The `cache` option of an image build. */
41
+ export interface BuildCacheOptions {
42
+ /**
43
+ * Keep the image's build layers in a remote cache, so a builder that has
44
+ * never built it (a fresh CI runner, another machine) skips unchanged
45
+ * steps. Without it, builds reuse only the local BuildKit cache of the
46
+ * machine they run on.
47
+ *
48
+ * `true` imports and exports a registry cache at the `:buildcache` tag of
49
+ * the repository the image is published to, keeping every stage's layers
50
+ * (`mode=max`), not only the final image's. For another backend, pass
51
+ * BuildKit's own `--cache-from` / `--cache-to` values as `from` and `to`.
52
+ * The cache is never part of the image's content hash, so changing it
53
+ * never rebuilds an image.
54
+ *
55
+ * @default false
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * // Registry cache next to the image:
60
+ * build: { cache: true }
61
+ *
62
+ * // GitHub Actions cache:
63
+ * build: {
64
+ * cache: {
65
+ * from: ["type=gha,scope=app"],
66
+ * to: ["type=gha,scope=app,mode=max"],
67
+ * },
68
+ * }
69
+ * ```
70
+ */
71
+ cache?: boolean | BuildCache;
72
+ }
73
+
74
+ /**
75
+ * `--cache-from` / `--cache-to` values for a `cache` option. `true` uses a
76
+ * registry cache at `ref` (the target repository's `:buildcache`), stored as
77
+ * an OCI image manifest, the format every registry accepts (ECR rejects
78
+ * BuildKit's default cache index).
79
+ */
80
+ export const resolveBuildCache = (
81
+ cache: boolean | BuildCache | undefined,
82
+ ref: string,
83
+ ): { "cache-from": string[]; "cache-to": string[] } =>
84
+ cache === true
85
+ ? {
86
+ "cache-from": [`type=registry,ref=${ref}`],
87
+ "cache-to": [`type=registry,ref=${ref},mode=max,image-manifest=true,oci-mediatypes=true`],
88
+ }
89
+ : { "cache-from": [...((cache || {}).from ?? [])], "cache-to": [...((cache || {}).to ?? [])] };
90
+
91
+ /** The `:buildcache` ref in the repository of an image ref (`repo:tag` or `repo@digest`). */
92
+ export const buildCacheRef = (imageRef: string): string =>
93
+ `${repositoryFromImageRef(imageRef)}:buildcache`;
94
+
95
+ /**
96
+ * `docker.image.build` options for the `cache` option of an image published
97
+ * to `imageUri`. The build authenticates with the push `credentials`, so it
98
+ * can import and export a cache in the target registry.
99
+ */
100
+ export const imageBuildCacheOptions = (
101
+ options: BuildCacheOptions | undefined,
102
+ imageUri: string,
103
+ credentials: RegistryCredentials | undefined,
104
+ ): {
105
+ "cache-from"?: string[];
106
+ "cache-to"?: string[];
107
+ credentials?: RegistryCredentials;
108
+ } =>
109
+ options?.cache
110
+ ? { ...resolveBuildCache(options.cache, buildCacheRef(imageUri)), credentials }
111
+ : {};