@containerbase/base 14.45.0 → 14.47.0

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/README.md CHANGED
@@ -33,7 +33,7 @@ The raw data and its json schema are also exported, for consumers which don't us
33
33
  import tools from '@containerbase/base/tools.json' with { type: 'json' };
34
34
  ```
35
35
 
36
- The zod schemas live behind a separate entry point, so the default export stays dependency free:
36
+ The zod schemas live behind a separate entry point, so the default export only depends on `semver`:
37
37
 
38
38
  ```ts
39
39
  import { SupportedTools, ToolName } from '@containerbase/base/zod';
@@ -74,6 +74,38 @@ isToolVersionsFormat(
74
74
  ); // false
75
75
  ```
76
76
 
77
+ The containerbase image embeds the tool-versions data, a reader running in the image can use it when the site can't be reached:
78
+
79
+ ```ts
80
+ import {
81
+ isContainerbase,
82
+ toolVersionsFormatPath,
83
+ toolVersionsPath,
84
+ } from '@containerbase/base';
85
+
86
+ if (isContainerbase()) {
87
+ // eg. '/usr/local/containerbase/tool-versions/v1/node.json'
88
+ const file = `${toolVersionsPath}/${toolVersionsFormatPath}/node.json`;
89
+ }
90
+ ```
91
+
92
+ `isContainerbase()` checks the `CONTAINERBASE` variable the image sets, pass another environment to check that one instead of `process.env`.
93
+
94
+ `validateContainerbaseVersion()` reads the version of the image from `/usr/local/containerbase/version` (`containerbaseVersionFile`) and throws when the image doesn't support everything this package describes: it needs the same major version as this package and the same or a newer minor or patch version.
95
+ Development images, whose version is a git sha or `0.0.0-…`, aren't checked; a missing or empty version file throws.
96
+ Call it on startup when `isContainerbase()` is true; `isCompatibleVersion(imageVersion)` does the comparison without reading the file, and `packageVersion` is the version it compares with:
97
+
98
+ ```ts
99
+ import {
100
+ isContainerbase,
101
+ validateContainerbaseVersion,
102
+ } from '@containerbase/base';
103
+
104
+ if (isContainerbase()) {
105
+ await validateContainerbaseVersion(); // eg. '14.2.0', or throws
106
+ }
107
+ ```
108
+
77
109
  The schemas ignore unknown keys and accept any arch name, so additive changes of the format don't break a reader; readers ignore files of an arch they don't know.
78
110
 
79
111
  ## Contents
package/data/tools.json CHANGED
@@ -1,28 +1,28 @@
1
1
  {
2
2
  "tools": {
3
- "android-sdk-cmdline-tools": { "parent": "java" },
4
- "apko": {},
5
- "apm": {},
6
- "bazelisk": {},
3
+ "android-sdk-cmdline-tools": { "parent": "java", "minVersion": "1" },
4
+ "apko": { "minVersion": "0.1.1" },
5
+ "apm": { "minVersion": "0.4.0" },
6
+ "bazelisk": { "minVersion": "0.0.1" },
7
7
  "bower": { "type": "npm", "parent": "node", "deprecated": true },
8
- "buf": {},
9
- "buildx": { "parent": "docker" },
8
+ "buf": { "minVersion": "0.1.0" },
9
+ "buildx": { "parent": "docker", "minVersion": "0.2.0" },
10
10
  "bun": { "minVersion": "0.5.3" },
11
11
  "bundler": { "type": "gem", "parent": "ruby" },
12
12
  "cabal": { "minVersion": "3.4.1.0" },
13
13
  "checkov": { "type": "pip", "parent": "python" },
14
14
  "cocoapods": { "type": "gem", "parent": "ruby" },
15
- "composer": { "parent": "php" },
15
+ "composer": { "parent": "php", "minVersion": "1.0.0" },
16
16
  "conan": { "type": "pip", "parent": "python" },
17
17
  "copier": { "type": "pip", "parent": "python" },
18
18
  "corepack": { "type": "npm", "parent": "node" },
19
19
  "dart": { "minVersion": "2.0.0" },
20
20
  "deno": { "minVersion": "2.0.1" },
21
- "devbox": {},
21
+ "devbox": { "minVersion": "0.0.6" },
22
22
  "docker": { "minVersion": "20.10.0" },
23
23
  "docker-compose": { "parent": "docker", "minVersion": "2.0.1" },
24
24
  "dotnet": { "minVersion": "6.0.100" },
25
- "elixir": { "parent": "erlang" },
25
+ "elixir": { "parent": "erlang", "minVersion": "1.4.3" },
26
26
  "erlang": { "minVersion": "24.2.0.0" },
27
27
  "flutter": { "minVersion": "1.22.6" },
28
28
  "flux": { "minVersion": "0.6.0" },
@@ -31,28 +31,28 @@
31
31
  "git": { "root": true, "minVersion": "2.48.0" },
32
32
  "git-lfs": { "parent": "git", "minVersion": "2.6.0" },
33
33
  "gleam": { "minVersion": "0.23.0" },
34
- "golang": {},
35
- "gradle": { "parent": "java" },
34
+ "golang": { "minVersion": "1.9.0" },
35
+ "gradle": { "parent": "java", "minVersion": "1.0" },
36
36
  "hashin": { "type": "pip", "parent": "python" },
37
37
  "helm": { "minVersion": "3.1.0" },
38
- "helmfile": {},
38
+ "helmfile": { "minVersion": "0.145.0" },
39
39
  "java": { "minVersion": "8.0.302+8" },
40
40
  "java-jdk": { "minVersion": "8.0.302+8" },
41
41
  "java-jre": { "minVersion": "8.0.302+8" },
42
- "jb": {},
42
+ "jb": { "minVersion": "0.2.0" },
43
43
  "jq": { "minVersion": "1.7.1" },
44
44
  "kas": { "type": "pip", "parent": "python" },
45
45
  "kubectl": { "minVersion": "1.13.11" },
46
46
  "kustomize": { "minVersion": "3.3.0" },
47
47
  "lerna": { "type": "npm", "parent": "node", "deprecated": true },
48
- "maven": { "parent": "java" },
48
+ "maven": { "parent": "java", "minVersion": "3.0.4" },
49
49
  "mise": { "minVersion": "2024.1.0" },
50
- "mono": {},
50
+ "mono": { "minVersion": "6.14.1" },
51
51
  "nix": { "minVersion": "2.10.3" },
52
- "node": {},
52
+ "node": { "minVersion": "8.7.0" },
53
53
  "npm": { "type": "npm", "parent": "node" },
54
- "nub": {},
55
- "nuget": { "parent": "mono" },
54
+ "nub": { "minVersion": "0.0.34" },
55
+ "nuget": { "parent": "mono", "minVersion": "3.4.4" },
56
56
  "paket": { "type": "dotnet", "parent": "dotnet" },
57
57
  "pdm": { "type": "pip", "parent": "python" },
58
58
  "php": {
@@ -69,21 +69,21 @@
69
69
  "python": { "minVersion": "2.7.18" },
70
70
  "renovate": { "type": "npm", "parent": "node" },
71
71
  "ruby": { "minVersion": "2.7.7" },
72
- "rust": {},
72
+ "rust": { "minVersion": "1.7.0" },
73
73
  "sbt": { "parent": "java", "minVersion": "0.13.17" },
74
- "scala": { "parent": "java" },
74
+ "scala": { "parent": "java", "minVersion": "2.11.2" },
75
75
  "skopeo": { "minVersion": "1.14.0" },
76
76
  "sops": { "minVersion": "3.8.0" },
77
77
  "swift": {
78
78
  "minVersion": "5.7",
79
79
  "distroMinVersion": { "resolute": "6.4.0" }
80
80
  },
81
- "terraform": {},
81
+ "terraform": { "minVersion": "0.1.0" },
82
82
  "tofu": { "minVersion": "1.6.3" },
83
83
  "uv": { "type": "pip", "parent": "python" },
84
- "vendir": {},
84
+ "vendir": { "minVersion": "0.4.0" },
85
85
  "vp": { "parent": "node", "minVersion": "0.3.1" },
86
- "wally": {},
86
+ "wally": { "minVersion": "0.3.0" },
87
87
  "yarn": { "type": "npm", "parent": "node" },
88
88
  "yarn-slim": { "type": "npm", "parent": "node" }
89
89
  }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Where the containerbase image embeds the tool-versions data: the extracted
3
+ * release archive, with the root `index.json` and one folder per format, eg.
4
+ * `v1/<tool>.json`.
5
+ */
6
+ export declare const toolVersionsPath = "/usr/local/containerbase/tool-versions";
7
+ /**
8
+ * The file in which the containerbase image records its version.
9
+ */
10
+ export declare const containerbaseVersionFile = "/usr/local/containerbase/version";
11
+ /**
12
+ * The version of this package, which is released with the same version as
13
+ * containerbase itself.
14
+ */
15
+ export declare const packageVersion: string;
16
+ /**
17
+ * Checks if the process runs in a containerbase image, whose environment sets
18
+ * `CONTAINERBASE`.
19
+ *
20
+ * @param env the environment to check, `process.env` by default
21
+ */
22
+ export declare function isContainerbase(env?: Record<string, string | undefined>): boolean;
23
+ /**
24
+ * Checks if a containerbase image supports everything this package describes:
25
+ * the image has the same major version and the same or a newer minor or patch
26
+ * version.
27
+ *
28
+ * @param imageVersion the version of the image, eg. from
29
+ * `containerbaseVersionFile`
30
+ * @param version the version to compare with, this package's by default
31
+ * @returns `false` for another major, an older image or a version which can't
32
+ * be parsed
33
+ */
34
+ export declare function isCompatibleVersion(imageVersion: string, version?: string): boolean;
35
+ /**
36
+ * Reads the version of the containerbase image and throws when it isn't
37
+ * compatible with this package, see `isCompatibleVersion`. Call it only when
38
+ * `isContainerbase()` is true.
39
+ *
40
+ * Development images, whose version is a git sha or `0.0.0-…`, aren't checked.
41
+ * A missing or empty version file still throws.
42
+ *
43
+ * @param file the version file to read, `containerbaseVersionFile` by default
44
+ * @returns the version of the image
45
+ */
46
+ export declare function validateContainerbaseVersion(file?: string): Promise<string>;
@@ -0,0 +1,84 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { createRequire } from 'node:module';
3
+ // semver has no exports map, native ESM needs the file extension
4
+ import semverGte from 'semver/functions/gte.js';
5
+ import semverParse from 'semver/functions/parse.js';
6
+ /**
7
+ * Where the containerbase image embeds the tool-versions data: the extracted
8
+ * release archive, with the root `index.json` and one folder per format, eg.
9
+ * `v1/<tool>.json`.
10
+ */
11
+ export const toolVersionsPath = '/usr/local/containerbase/tool-versions';
12
+ /**
13
+ * The file in which the containerbase image records its version.
14
+ */
15
+ export const containerbaseVersionFile = '/usr/local/containerbase/version';
16
+ /**
17
+ * The version of this package, which is released with the same version as
18
+ * containerbase itself.
19
+ */
20
+ export const packageVersion = createRequire(import.meta.url)('../package.json').version;
21
+ /**
22
+ * Checks if the process runs in a containerbase image, whose environment sets
23
+ * `CONTAINERBASE`.
24
+ *
25
+ * @param env the environment to check, `process.env` by default
26
+ */
27
+ export function isContainerbase(env = process.env) {
28
+ return !!env.CONTAINERBASE;
29
+ }
30
+ /**
31
+ * Checks if a containerbase image supports everything this package describes:
32
+ * the image has the same major version and the same or a newer minor or patch
33
+ * version.
34
+ *
35
+ * @param imageVersion the version of the image, eg. from
36
+ * `containerbaseVersionFile`
37
+ * @param version the version to compare with, this package's by default
38
+ * @returns `false` for another major, an older image or a version which can't
39
+ * be parsed
40
+ */
41
+ export function isCompatibleVersion(imageVersion, version = packageVersion) {
42
+ const image = semverParse(imageVersion.trim());
43
+ const pkg = semverParse(version);
44
+ return !!image && !!pkg && image.major === pkg.major && semverGte(image, pkg);
45
+ }
46
+ /**
47
+ * Checks if an image version comes from a release. Development builds write
48
+ * the git sha or `0.0.0-PLACEHOLDER` instead.
49
+ */
50
+ function isReleaseVersion(imageVersion) {
51
+ const image = semverParse(imageVersion);
52
+ return (!!image && !(image.major === 0 && image.minor === 0 && image.patch === 0));
53
+ }
54
+ /**
55
+ * Reads the version of the containerbase image and throws when it isn't
56
+ * compatible with this package, see `isCompatibleVersion`. Call it only when
57
+ * `isContainerbase()` is true.
58
+ *
59
+ * Development images, whose version is a git sha or `0.0.0-…`, aren't checked.
60
+ * A missing or empty version file still throws.
61
+ *
62
+ * @param file the version file to read, `containerbaseVersionFile` by default
63
+ * @returns the version of the image
64
+ */
65
+ export async function validateContainerbaseVersion(file = containerbaseVersionFile) {
66
+ let content;
67
+ try {
68
+ content = await readFile(file, 'utf8');
69
+ }
70
+ catch (err) {
71
+ const { code, message } = err;
72
+ throw new Error(code === 'ENOENT'
73
+ ? `The containerbase image version file ${file} is missing`
74
+ : `The containerbase image version file ${file} can't be read: ${message}`, { cause: err });
75
+ }
76
+ const imageVersion = content.trim();
77
+ if (!imageVersion) {
78
+ throw new Error(`The containerbase image version file ${file} is empty`);
79
+ }
80
+ if (isReleaseVersion(imageVersion) && !isCompatibleVersion(imageVersion)) {
81
+ throw new Error(`The containerbase image version ${imageVersion} is not compatible with @containerbase/base ${packageVersion}, it needs the same major version and the same or a newer minor or patch version`);
82
+ }
83
+ return imageVersion;
84
+ }
package/dist/data.d.ts CHANGED
@@ -4,18 +4,28 @@
4
4
  export declare const tools: {
5
5
  readonly 'android-sdk-cmdline-tools': {
6
6
  readonly parent: "java";
7
+ readonly minVersion: "1";
8
+ };
9
+ readonly apko: {
10
+ readonly minVersion: "0.1.1";
11
+ };
12
+ readonly apm: {
13
+ readonly minVersion: "0.4.0";
14
+ };
15
+ readonly bazelisk: {
16
+ readonly minVersion: "0.0.1";
7
17
  };
8
- readonly apko: {};
9
- readonly apm: {};
10
- readonly bazelisk: {};
11
18
  readonly bower: {
12
19
  readonly type: "npm";
13
20
  readonly parent: "node";
14
21
  readonly deprecated: true;
15
22
  };
16
- readonly buf: {};
23
+ readonly buf: {
24
+ readonly minVersion: "0.1.0";
25
+ };
17
26
  readonly buildx: {
18
27
  readonly parent: "docker";
28
+ readonly minVersion: "0.2.0";
19
29
  };
20
30
  readonly bun: {
21
31
  readonly minVersion: "0.5.3";
@@ -37,6 +47,7 @@ export declare const tools: {
37
47
  };
38
48
  readonly composer: {
39
49
  readonly parent: "php";
50
+ readonly minVersion: "1.0.0";
40
51
  };
41
52
  readonly conan: {
42
53
  readonly type: "pip";
@@ -56,7 +67,9 @@ export declare const tools: {
56
67
  readonly deno: {
57
68
  readonly minVersion: "2.0.1";
58
69
  };
59
- readonly devbox: {};
70
+ readonly devbox: {
71
+ readonly minVersion: "0.0.6";
72
+ };
60
73
  readonly docker: {
61
74
  readonly minVersion: "20.10.0";
62
75
  };
@@ -69,6 +82,7 @@ export declare const tools: {
69
82
  };
70
83
  readonly elixir: {
71
84
  readonly parent: "erlang";
85
+ readonly minVersion: "1.4.3";
72
86
  };
73
87
  readonly erlang: {
74
88
  readonly minVersion: "24.2.0.0";
@@ -96,9 +110,12 @@ export declare const tools: {
96
110
  readonly gleam: {
97
111
  readonly minVersion: "0.23.0";
98
112
  };
99
- readonly golang: {};
113
+ readonly golang: {
114
+ readonly minVersion: "1.9.0";
115
+ };
100
116
  readonly gradle: {
101
117
  readonly parent: "java";
118
+ readonly minVersion: "1.0";
102
119
  };
103
120
  readonly hashin: {
104
121
  readonly type: "pip";
@@ -107,7 +124,9 @@ export declare const tools: {
107
124
  readonly helm: {
108
125
  readonly minVersion: "3.1.0";
109
126
  };
110
- readonly helmfile: {};
127
+ readonly helmfile: {
128
+ readonly minVersion: "0.145.0";
129
+ };
111
130
  readonly java: {
112
131
  readonly minVersion: "8.0.302+8";
113
132
  };
@@ -117,7 +136,9 @@ export declare const tools: {
117
136
  readonly 'java-jre': {
118
137
  readonly minVersion: "8.0.302+8";
119
138
  };
120
- readonly jb: {};
139
+ readonly jb: {
140
+ readonly minVersion: "0.2.0";
141
+ };
121
142
  readonly jq: {
122
143
  readonly minVersion: "1.7.1";
123
144
  };
@@ -138,22 +159,30 @@ export declare const tools: {
138
159
  };
139
160
  readonly maven: {
140
161
  readonly parent: "java";
162
+ readonly minVersion: "3.0.4";
141
163
  };
142
164
  readonly mise: {
143
165
  readonly minVersion: "2024.1.0";
144
166
  };
145
- readonly mono: {};
167
+ readonly mono: {
168
+ readonly minVersion: "6.14.1";
169
+ };
146
170
  readonly nix: {
147
171
  readonly minVersion: "2.10.3";
148
172
  };
149
- readonly node: {};
173
+ readonly node: {
174
+ readonly minVersion: "8.7.0";
175
+ };
150
176
  readonly npm: {
151
177
  readonly type: "npm";
152
178
  readonly parent: "node";
153
179
  };
154
- readonly nub: {};
180
+ readonly nub: {
181
+ readonly minVersion: "0.0.34";
182
+ };
155
183
  readonly nuget: {
156
184
  readonly parent: "mono";
185
+ readonly minVersion: "3.4.4";
157
186
  };
158
187
  readonly paket: {
159
188
  readonly type: "dotnet";
@@ -204,13 +233,16 @@ export declare const tools: {
204
233
  readonly ruby: {
205
234
  readonly minVersion: "2.7.7";
206
235
  };
207
- readonly rust: {};
236
+ readonly rust: {
237
+ readonly minVersion: "1.7.0";
238
+ };
208
239
  readonly sbt: {
209
240
  readonly parent: "java";
210
241
  readonly minVersion: "0.13.17";
211
242
  };
212
243
  readonly scala: {
213
244
  readonly parent: "java";
245
+ readonly minVersion: "2.11.2";
214
246
  };
215
247
  readonly skopeo: {
216
248
  readonly minVersion: "1.14.0";
@@ -224,7 +256,9 @@ export declare const tools: {
224
256
  readonly resolute: "6.4.0";
225
257
  };
226
258
  };
227
- readonly terraform: {};
259
+ readonly terraform: {
260
+ readonly minVersion: "0.1.0";
261
+ };
228
262
  readonly tofu: {
229
263
  readonly minVersion: "1.6.3";
230
264
  };
@@ -232,12 +266,16 @@ export declare const tools: {
232
266
  readonly type: "pip";
233
267
  readonly parent: "python";
234
268
  };
235
- readonly vendir: {};
269
+ readonly vendir: {
270
+ readonly minVersion: "0.4.0";
271
+ };
236
272
  readonly vp: {
237
273
  readonly parent: "node";
238
274
  readonly minVersion: "0.3.1";
239
275
  };
240
- readonly wally: {};
276
+ readonly wally: {
277
+ readonly minVersion: "0.3.0";
278
+ };
241
279
  readonly yarn: {
242
280
  readonly type: "npm";
243
281
  readonly parent: "node";
package/dist/data.js CHANGED
@@ -2,29 +2,29 @@
2
2
  * All tools `install-tool` supports, sorted by name.
3
3
  */
4
4
  export const tools = {
5
- 'android-sdk-cmdline-tools': { parent: 'java' },
6
- apko: {},
7
- apm: {},
8
- bazelisk: {},
5
+ 'android-sdk-cmdline-tools': { parent: 'java', minVersion: '1' },
6
+ apko: { minVersion: '0.1.1' },
7
+ apm: { minVersion: '0.4.0' },
8
+ bazelisk: { minVersion: '0.0.1' },
9
9
  bower: { type: 'npm', parent: 'node', deprecated: true },
10
- buf: {},
11
- buildx: { parent: 'docker' },
10
+ buf: { minVersion: '0.1.0' },
11
+ buildx: { parent: 'docker', minVersion: '0.2.0' },
12
12
  bun: { minVersion: '0.5.3' },
13
13
  bundler: { type: 'gem', parent: 'ruby' },
14
14
  cabal: { minVersion: '3.4.1.0' },
15
15
  checkov: { type: 'pip', parent: 'python' },
16
16
  cocoapods: { type: 'gem', parent: 'ruby' },
17
- composer: { parent: 'php' },
17
+ composer: { parent: 'php', minVersion: '1.0.0' },
18
18
  conan: { type: 'pip', parent: 'python' },
19
19
  copier: { type: 'pip', parent: 'python' },
20
20
  corepack: { type: 'npm', parent: 'node' },
21
21
  dart: { minVersion: '2.0.0' },
22
22
  deno: { minVersion: '2.0.1' },
23
- devbox: {},
23
+ devbox: { minVersion: '0.0.6' },
24
24
  docker: { minVersion: '20.10.0' },
25
25
  'docker-compose': { parent: 'docker', minVersion: '2.0.1' },
26
26
  dotnet: { minVersion: '6.0.100' },
27
- elixir: { parent: 'erlang' },
27
+ elixir: { parent: 'erlang', minVersion: '1.4.3' },
28
28
  erlang: { minVersion: '24.2.0.0' },
29
29
  flutter: { minVersion: '1.22.6' },
30
30
  flux: { minVersion: '0.6.0' },
@@ -33,28 +33,28 @@ export const tools = {
33
33
  git: { root: true, minVersion: '2.48.0' },
34
34
  'git-lfs': { parent: 'git', minVersion: '2.6.0' },
35
35
  gleam: { minVersion: '0.23.0' },
36
- golang: {},
37
- gradle: { parent: 'java' },
36
+ golang: { minVersion: '1.9.0' },
37
+ gradle: { parent: 'java', minVersion: '1.0' },
38
38
  hashin: { type: 'pip', parent: 'python' },
39
39
  helm: { minVersion: '3.1.0' },
40
- helmfile: {},
40
+ helmfile: { minVersion: '0.145.0' },
41
41
  java: { minVersion: '8.0.302+8' },
42
42
  'java-jdk': { minVersion: '8.0.302+8' },
43
43
  'java-jre': { minVersion: '8.0.302+8' },
44
- jb: {},
44
+ jb: { minVersion: '0.2.0' },
45
45
  jq: { minVersion: '1.7.1' },
46
46
  kas: { type: 'pip', parent: 'python' },
47
47
  kubectl: { minVersion: '1.13.11' },
48
48
  kustomize: { minVersion: '3.3.0' },
49
49
  lerna: { type: 'npm', parent: 'node', deprecated: true },
50
- maven: { parent: 'java' },
50
+ maven: { parent: 'java', minVersion: '3.0.4' },
51
51
  mise: { minVersion: '2024.1.0' },
52
- mono: {},
52
+ mono: { minVersion: '6.14.1' },
53
53
  nix: { minVersion: '2.10.3' },
54
- node: {},
54
+ node: { minVersion: '8.7.0' },
55
55
  npm: { type: 'npm', parent: 'node' },
56
- nub: {},
57
- nuget: { parent: 'mono' },
56
+ nub: { minVersion: '0.0.34' },
57
+ nuget: { parent: 'mono', minVersion: '3.4.4' },
58
58
  paket: { type: 'dotnet', parent: 'dotnet' },
59
59
  pdm: { type: 'pip', parent: 'python' },
60
60
  php: { minVersion: '7.4.0', distroMinVersion: { resolute: '8.1.31' } },
@@ -68,18 +68,18 @@ export const tools = {
68
68
  python: { minVersion: '2.7.18' },
69
69
  renovate: { type: 'npm', parent: 'node' },
70
70
  ruby: { minVersion: '2.7.7' },
71
- rust: {},
71
+ rust: { minVersion: '1.7.0' },
72
72
  sbt: { parent: 'java', minVersion: '0.13.17' },
73
- scala: { parent: 'java' },
73
+ scala: { parent: 'java', minVersion: '2.11.2' },
74
74
  skopeo: { minVersion: '1.14.0' },
75
75
  sops: { minVersion: '3.8.0' },
76
76
  swift: { minVersion: '5.7', distroMinVersion: { resolute: '6.4.0' } },
77
- terraform: {},
77
+ terraform: { minVersion: '0.1.0' },
78
78
  tofu: { minVersion: '1.6.3' },
79
79
  uv: { type: 'pip', parent: 'python' },
80
- vendir: {},
80
+ vendir: { minVersion: '0.4.0' },
81
81
  vp: { parent: 'node', minVersion: '0.3.1' },
82
- wally: {},
82
+ wally: { minVersion: '0.3.0' },
83
83
  yarn: { type: 'npm', parent: 'node' },
84
84
  'yarn-slim': { type: 'npm', parent: 'node' },
85
85
  };
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ import { tools } from './data.ts';
2
2
  import type { DistroCode } from './types.ts';
3
3
  export type { DistroCode, InstallToolType, ToolMetadata, ToolType, } from './types.ts';
4
4
  export type { FileIntegrity, FileReference, FormatIndex, ToolFile, ToolIndex, ToolVersion, ToolVersions, VersionFiles, VersionIntegrity, } from './tool-versions-types.ts';
5
+ export { containerbaseVersionFile, isCompatibleVersion, isContainerbase, packageVersion, toolVersionsPath, validateContainerbaseVersion, } from './containerbase.ts';
5
6
  export { isToolVersionsFormat, toolVersionsFormat, toolVersionsFormatPath, } from './tool-versions-format.ts';
6
7
  export { tools };
7
8
  /**
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { tools } from "./data.js";
2
+ export { containerbaseVersionFile, isCompatibleVersion, isContainerbase, packageVersion, toolVersionsPath, validateContainerbaseVersion, } from "./containerbase.js";
2
3
  export { isToolVersionsFormat, toolVersionsFormat, toolVersionsFormatPath, } from "./tool-versions-format.js";
3
4
  export { tools };
4
5
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@containerbase/base",
3
- "version": "14.45.0",
3
+ "version": "14.47.0",
4
4
  "description": "Metadata about the tools supported by containerbase",
5
5
  "keywords": [
6
6
  "containerbase",
@@ -31,7 +31,11 @@
31
31
  "data",
32
32
  "dist"
33
33
  ],
34
+ "dependencies": {
35
+ "semver": "^7.8.5"
36
+ },
34
37
  "devDependencies": {
38
+ "@types/semver": "7.8.0",
35
39
  "zod": "4.6.7"
36
40
  },
37
41
  "peerDependencies": {