brel 0.1.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.
- package/.gitignore +2 -0
- package/README.md +138 -0
- package/binary-install.js +212 -0
- package/binary.js +126 -0
- package/install.js +4 -0
- package/npm-shrinkwrap.json +519 -0
- package/package.json +105 -0
- package/run-brel.js +4 -0
package/.gitignore
ADDED
package/README.md
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# brel
|
|
2
|
+
|
|
3
|
+
`brel` is a CLI that scaffolds and runs the better-releases workflow.
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
- `brel init` generates a managed GitHub Actions workflow.
|
|
8
|
+
- `brel release-pr` computes the next version, updates configured files, commits, pushes, and creates/updates a release PR.
|
|
9
|
+
|
|
10
|
+
## `release-pr` Prerequisites
|
|
11
|
+
|
|
12
|
+
- `git` must be available.
|
|
13
|
+
- `gh` (GitHub CLI) must be available.
|
|
14
|
+
- A GitHub token must be present in `GH_TOKEN` or `GITHUB_TOKEN`.
|
|
15
|
+
- The workflow generated by `brel init` sets `GH_TOKEN: ${{ github.token }}` automatically.
|
|
16
|
+
|
|
17
|
+
## Config File
|
|
18
|
+
|
|
19
|
+
`brel` discovers config in this order:
|
|
20
|
+
|
|
21
|
+
1. `--config <path>` (when provided)
|
|
22
|
+
2. `brel.toml`
|
|
23
|
+
3. `.brel.toml`
|
|
24
|
+
|
|
25
|
+
### Minimal `release-pr` config
|
|
26
|
+
|
|
27
|
+
```toml
|
|
28
|
+
provider = "github"
|
|
29
|
+
default_branch = "main"
|
|
30
|
+
|
|
31
|
+
[release_pr.version_updates]
|
|
32
|
+
"package.json" = ["version"]
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Full `release_pr` config
|
|
36
|
+
|
|
37
|
+
```toml
|
|
38
|
+
[release_pr.version_updates]
|
|
39
|
+
"package.json" = ["version"]
|
|
40
|
+
"Cargo.toml" = ["package.version"]
|
|
41
|
+
|
|
42
|
+
[release_pr.format_overrides]
|
|
43
|
+
"Cargo.toml" = "toml"
|
|
44
|
+
|
|
45
|
+
[release_pr]
|
|
46
|
+
release_branch_pattern = "brel/release/v{{version}}"
|
|
47
|
+
pr_template_file = ".github/brel/release-pr-body.hbs"
|
|
48
|
+
|
|
49
|
+
[release_pr.commit_author]
|
|
50
|
+
name = "brel[bot]"
|
|
51
|
+
email = "brel[bot]@users.noreply.github.com"
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## How Versioning Works
|
|
55
|
+
|
|
56
|
+
When you run `brel release-pr`:
|
|
57
|
+
|
|
58
|
+
1. It finds the highest stable SemVer tag (`vX.Y.Z` or `X.Y.Z`).
|
|
59
|
+
2. If no valid tag exists, it uses `0.0.0`.
|
|
60
|
+
3. It scans commits since that tag (or all commits when no tag exists).
|
|
61
|
+
4. It picks one bump level from Conventional Commit signals:
|
|
62
|
+
- major: `BREAKING CHANGE` in body/footer, or `!` in the type/scope prefix.
|
|
63
|
+
- minor: `feat: ...`
|
|
64
|
+
- patch: `fix: ...`
|
|
65
|
+
5. If no releasable commits are found, it exits successfully with no changes.
|
|
66
|
+
|
|
67
|
+
## How File Updates Work
|
|
68
|
+
|
|
69
|
+
- `release_pr.version_updates` maps exact repo-relative file paths to dot-separated key paths.
|
|
70
|
+
- Supported file formats:
|
|
71
|
+
- inferred from extension (`.json`, `.toml`)
|
|
72
|
+
- or forced via `release_pr.format_overrides`
|
|
73
|
+
- Updates are fail-fast. The command errors if:
|
|
74
|
+
- a file is missing,
|
|
75
|
+
- format cannot be determined,
|
|
76
|
+
- parse fails,
|
|
77
|
+
- a key path does not exist,
|
|
78
|
+
- target value is not scalar.
|
|
79
|
+
|
|
80
|
+
Example key paths:
|
|
81
|
+
|
|
82
|
+
- JSON: `"package.json" = ["version", "tooling.release.version"]`
|
|
83
|
+
- TOML: `"Cargo.toml" = ["package.version"]`
|
|
84
|
+
|
|
85
|
+
## Branch / Commit / PR Behavior
|
|
86
|
+
|
|
87
|
+
- Default branch pattern: `brel/release/v{{version}}`
|
|
88
|
+
- Only `{{version}}` is supported as a token.
|
|
89
|
+
- Commit message: `chore(release): vX.Y.Z`
|
|
90
|
+
- Commit author defaults to:
|
|
91
|
+
- `name = "brel[bot]"`
|
|
92
|
+
- `email = "brel[bot]@users.noreply.github.com"`
|
|
93
|
+
- Push strategy: `--force-with-lease` to `origin`.
|
|
94
|
+
|
|
95
|
+
For PRs:
|
|
96
|
+
|
|
97
|
+
- `brel` uses `gh pr list` to find an open managed release PR.
|
|
98
|
+
- If found, it updates that PR (continuity wins over recomputing branch name).
|
|
99
|
+
- If not found, it creates a new PR.
|
|
100
|
+
|
|
101
|
+
## PR Body Templates
|
|
102
|
+
|
|
103
|
+
If `release_pr.pr_template_file` is set, `brel` renders that Handlebars template.
|
|
104
|
+
|
|
105
|
+
Available variables:
|
|
106
|
+
|
|
107
|
+
- `version`
|
|
108
|
+
- `base_branch`
|
|
109
|
+
- `release_branch`
|
|
110
|
+
- `commits` (array of `{ sha_short, subject }`)
|
|
111
|
+
|
|
112
|
+
Important: include this marker in your template so future runs can detect and update the same PR:
|
|
113
|
+
|
|
114
|
+
```html
|
|
115
|
+
<!-- managed-by: brel -->
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
If rendering fails, `brel release-pr` exits with an error.
|
|
119
|
+
|
|
120
|
+
## Typical Usage
|
|
121
|
+
|
|
122
|
+
Generate workflow once:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
brel init --yes
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Run release locally:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
GH_TOKEN=... brel release-pr
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Run with explicit config:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
brel release-pr --config ./configs/release.toml
|
|
138
|
+
```
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
const { createWriteStream, existsSync, mkdirSync, mkdtemp } = require("fs");
|
|
2
|
+
const { join, sep } = require("path");
|
|
3
|
+
const { spawnSync } = require("child_process");
|
|
4
|
+
const { tmpdir } = require("os");
|
|
5
|
+
|
|
6
|
+
const axios = require("axios");
|
|
7
|
+
const rimraf = require("rimraf");
|
|
8
|
+
const tmpDir = tmpdir();
|
|
9
|
+
|
|
10
|
+
const error = (msg) => {
|
|
11
|
+
console.error(msg);
|
|
12
|
+
process.exit(1);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
class Package {
|
|
16
|
+
constructor(platform, name, url, filename, zipExt, binaries) {
|
|
17
|
+
let errors = [];
|
|
18
|
+
if (typeof url !== "string") {
|
|
19
|
+
errors.push("url must be a string");
|
|
20
|
+
} else {
|
|
21
|
+
try {
|
|
22
|
+
new URL(url);
|
|
23
|
+
} catch (e) {
|
|
24
|
+
errors.push(e);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (name && typeof name !== "string") {
|
|
28
|
+
errors.push("package name must be a string");
|
|
29
|
+
}
|
|
30
|
+
if (!name) {
|
|
31
|
+
errors.push("You must specify the name of your package");
|
|
32
|
+
}
|
|
33
|
+
if (binaries && typeof binaries !== "object") {
|
|
34
|
+
errors.push("binaries must be a string => string map");
|
|
35
|
+
}
|
|
36
|
+
if (!binaries) {
|
|
37
|
+
errors.push("You must specify the binaries in the package");
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (errors.length > 0) {
|
|
41
|
+
let errorMsg =
|
|
42
|
+
"One or more of the parameters you passed to the Binary constructor are invalid:\n";
|
|
43
|
+
errors.forEach((error) => {
|
|
44
|
+
errorMsg += error;
|
|
45
|
+
});
|
|
46
|
+
errorMsg +=
|
|
47
|
+
'\n\nCorrect usage: new Package("my-binary", "https://example.com/binary/download.tar.gz", {"my-binary": "my-binary"})';
|
|
48
|
+
error(errorMsg);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
this.platform = platform;
|
|
52
|
+
this.url = url;
|
|
53
|
+
this.name = name;
|
|
54
|
+
this.filename = filename;
|
|
55
|
+
this.zipExt = zipExt;
|
|
56
|
+
this.installDirectory = join(__dirname, "node_modules", ".bin_real");
|
|
57
|
+
this.binaries = binaries;
|
|
58
|
+
|
|
59
|
+
if (!existsSync(this.installDirectory)) {
|
|
60
|
+
mkdirSync(this.installDirectory, { recursive: true });
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
exists() {
|
|
65
|
+
for (const binaryName in this.binaries) {
|
|
66
|
+
const binRelPath = this.binaries[binaryName];
|
|
67
|
+
const binPath = join(this.installDirectory, binRelPath);
|
|
68
|
+
if (!existsSync(binPath)) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
install(fetchOptions, suppressLogs = false) {
|
|
76
|
+
if (this.exists()) {
|
|
77
|
+
if (!suppressLogs) {
|
|
78
|
+
console.error(
|
|
79
|
+
`${this.name} is already installed, skipping installation.`,
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
return Promise.resolve();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (existsSync(this.installDirectory)) {
|
|
86
|
+
rimraf.sync(this.installDirectory);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
mkdirSync(this.installDirectory, { recursive: true });
|
|
90
|
+
|
|
91
|
+
if (!suppressLogs) {
|
|
92
|
+
console.error(`Downloading release from ${this.url}`);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return axios({ ...fetchOptions, url: this.url, responseType: "stream" })
|
|
96
|
+
.then((res) => {
|
|
97
|
+
return new Promise((resolve, reject) => {
|
|
98
|
+
mkdtemp(`${tmpDir}${sep}`, (err, directory) => {
|
|
99
|
+
let tempFile = join(directory, this.filename);
|
|
100
|
+
const sink = res.data.pipe(createWriteStream(tempFile));
|
|
101
|
+
sink.on("error", (err) => reject(err));
|
|
102
|
+
sink.on("close", () => {
|
|
103
|
+
if (/\.tar\.*/.test(this.zipExt)) {
|
|
104
|
+
const result = spawnSync("tar", [
|
|
105
|
+
"xf",
|
|
106
|
+
tempFile,
|
|
107
|
+
// The tarballs are stored with a leading directory
|
|
108
|
+
// component; we strip one component in the
|
|
109
|
+
// shell installers too.
|
|
110
|
+
"--strip-components",
|
|
111
|
+
"1",
|
|
112
|
+
"-C",
|
|
113
|
+
this.installDirectory,
|
|
114
|
+
]);
|
|
115
|
+
if (result.status == 0) {
|
|
116
|
+
resolve();
|
|
117
|
+
} else if (result.error) {
|
|
118
|
+
reject(result.error);
|
|
119
|
+
} else {
|
|
120
|
+
reject(
|
|
121
|
+
new Error(
|
|
122
|
+
`An error occurred untarring the artifact: stdout: ${result.stdout}; stderr: ${result.stderr}`,
|
|
123
|
+
),
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
} else if (this.zipExt == ".zip") {
|
|
127
|
+
let result;
|
|
128
|
+
if (this.platform.artifactName.includes("windows")) {
|
|
129
|
+
// Windows does not have "unzip" by default on many installations, instead
|
|
130
|
+
// we use Expand-Archive from powershell
|
|
131
|
+
result = spawnSync("powershell.exe", [
|
|
132
|
+
"-NoProfile",
|
|
133
|
+
"-NonInteractive",
|
|
134
|
+
"-Command",
|
|
135
|
+
`& {
|
|
136
|
+
param([string]$LiteralPath, [string]$DestinationPath)
|
|
137
|
+
Expand-Archive -LiteralPath $LiteralPath -DestinationPath $DestinationPath -Force
|
|
138
|
+
}`,
|
|
139
|
+
tempFile,
|
|
140
|
+
this.installDirectory,
|
|
141
|
+
]);
|
|
142
|
+
} else {
|
|
143
|
+
result = spawnSync("unzip", [
|
|
144
|
+
"-q",
|
|
145
|
+
tempFile,
|
|
146
|
+
"-d",
|
|
147
|
+
this.installDirectory,
|
|
148
|
+
]);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (result.status == 0) {
|
|
152
|
+
resolve();
|
|
153
|
+
} else if (result.error) {
|
|
154
|
+
reject(result.error);
|
|
155
|
+
} else {
|
|
156
|
+
reject(
|
|
157
|
+
new Error(
|
|
158
|
+
`An error occurred unzipping the artifact: stdout: ${result.stdout}; stderr: ${result.stderr}`,
|
|
159
|
+
),
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
} else {
|
|
163
|
+
reject(
|
|
164
|
+
new Error(`Unrecognized file extension: ${this.zipExt}`),
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
})
|
|
171
|
+
.then(() => {
|
|
172
|
+
if (!suppressLogs) {
|
|
173
|
+
console.error(`${this.name} has been installed!`);
|
|
174
|
+
}
|
|
175
|
+
})
|
|
176
|
+
.catch((e) => {
|
|
177
|
+
error(`Error fetching release: ${e.message}`);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
run(binaryName, fetchOptions) {
|
|
182
|
+
const promise = !this.exists()
|
|
183
|
+
? this.install(fetchOptions, true)
|
|
184
|
+
: Promise.resolve();
|
|
185
|
+
|
|
186
|
+
promise
|
|
187
|
+
.then(() => {
|
|
188
|
+
const [, , ...args] = process.argv;
|
|
189
|
+
|
|
190
|
+
const options = { cwd: process.cwd(), stdio: "inherit" };
|
|
191
|
+
|
|
192
|
+
const binRelPath = this.binaries[binaryName];
|
|
193
|
+
if (!binRelPath) {
|
|
194
|
+
error(`${binaryName} is not a known binary in ${this.name}`);
|
|
195
|
+
}
|
|
196
|
+
const binPath = join(this.installDirectory, binRelPath);
|
|
197
|
+
const result = spawnSync(binPath, args, options);
|
|
198
|
+
|
|
199
|
+
if (result.error) {
|
|
200
|
+
error(result.error);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
process.exit(result.status);
|
|
204
|
+
})
|
|
205
|
+
.catch((e) => {
|
|
206
|
+
error(e.message);
|
|
207
|
+
process.exit(1);
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
module.exports.Package = Package;
|
package/binary.js
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
const { Package } = require("./binary-install");
|
|
2
|
+
const os = require("os");
|
|
3
|
+
const cTable = require("console.table");
|
|
4
|
+
const libc = require("detect-libc");
|
|
5
|
+
const { configureProxy } = require("axios-proxy-builder");
|
|
6
|
+
|
|
7
|
+
const error = (msg) => {
|
|
8
|
+
console.error(msg);
|
|
9
|
+
process.exit(1);
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const {
|
|
13
|
+
name,
|
|
14
|
+
artifactDownloadUrl,
|
|
15
|
+
supportedPlatforms,
|
|
16
|
+
glibcMinimum,
|
|
17
|
+
} = require("./package.json");
|
|
18
|
+
|
|
19
|
+
const builderGlibcMajorVersion = glibcMinimum.major;
|
|
20
|
+
const builderGlibcMInorVersion = glibcMinimum.series;
|
|
21
|
+
|
|
22
|
+
const getPlatform = () => {
|
|
23
|
+
const rawOsType = os.type();
|
|
24
|
+
const rawArchitecture = os.arch();
|
|
25
|
+
|
|
26
|
+
// We want to use rust-style target triples as the canonical key
|
|
27
|
+
// for a platform, so translate the "os" library's concepts into rust ones
|
|
28
|
+
let osType = "";
|
|
29
|
+
switch (rawOsType) {
|
|
30
|
+
case "Windows_NT":
|
|
31
|
+
osType = "pc-windows-msvc";
|
|
32
|
+
break;
|
|
33
|
+
case "Darwin":
|
|
34
|
+
osType = "apple-darwin";
|
|
35
|
+
break;
|
|
36
|
+
case "Linux":
|
|
37
|
+
osType = "unknown-linux-gnu";
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
let arch = "";
|
|
42
|
+
switch (rawArchitecture) {
|
|
43
|
+
case "x64":
|
|
44
|
+
arch = "x86_64";
|
|
45
|
+
break;
|
|
46
|
+
case "arm64":
|
|
47
|
+
arch = "aarch64";
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (rawOsType === "Linux") {
|
|
52
|
+
if (libc.familySync() == "musl") {
|
|
53
|
+
osType = "unknown-linux-musl-dynamic";
|
|
54
|
+
} else if (libc.isNonGlibcLinuxSync()) {
|
|
55
|
+
console.warn(
|
|
56
|
+
"Your libc is neither glibc nor musl; trying static musl binary instead",
|
|
57
|
+
);
|
|
58
|
+
osType = "unknown-linux-musl-static";
|
|
59
|
+
} else {
|
|
60
|
+
let libcVersion = libc.versionSync();
|
|
61
|
+
let splitLibcVersion = libcVersion.split(".");
|
|
62
|
+
let libcMajorVersion = splitLibcVersion[0];
|
|
63
|
+
let libcMinorVersion = splitLibcVersion[1];
|
|
64
|
+
if (
|
|
65
|
+
libcMajorVersion != builderGlibcMajorVersion ||
|
|
66
|
+
libcMinorVersion < builderGlibcMInorVersion
|
|
67
|
+
) {
|
|
68
|
+
// We can't run the glibc binaries, but we can run the static musl ones
|
|
69
|
+
// if they exist
|
|
70
|
+
console.warn(
|
|
71
|
+
"Your glibc isn't compatible; trying static musl binary instead",
|
|
72
|
+
);
|
|
73
|
+
osType = "unknown-linux-musl-static";
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Assume the above succeeded and build a target triple to look things up with.
|
|
79
|
+
// If any of it failed, this lookup will fail and we'll handle it like normal.
|
|
80
|
+
let targetTriple = `${arch}-${osType}`;
|
|
81
|
+
let platform = supportedPlatforms[targetTriple];
|
|
82
|
+
|
|
83
|
+
if (!platform) {
|
|
84
|
+
error(
|
|
85
|
+
`Platform with type "${rawOsType}" and architecture "${rawArchitecture}" is not supported by ${name}.\nYour system must be one of the following:\n\n${Object.keys(
|
|
86
|
+
supportedPlatforms,
|
|
87
|
+
).join(",")}`,
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return platform;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
const getPackage = () => {
|
|
95
|
+
const platform = getPlatform();
|
|
96
|
+
const url = `${artifactDownloadUrl}/${platform.artifactName}`;
|
|
97
|
+
let filename = platform.artifactName;
|
|
98
|
+
let ext = platform.zipExt;
|
|
99
|
+
let binary = new Package(platform, name, url, filename, ext, platform.bins);
|
|
100
|
+
|
|
101
|
+
return binary;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
const install = (suppressLogs) => {
|
|
105
|
+
if (!artifactDownloadUrl || artifactDownloadUrl.length === 0) {
|
|
106
|
+
console.warn("in demo mode, not installing binaries");
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const package = getPackage();
|
|
110
|
+
const proxy = configureProxy(package.url);
|
|
111
|
+
|
|
112
|
+
return package.install(proxy, suppressLogs);
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
const run = (binaryName) => {
|
|
116
|
+
const package = getPackage();
|
|
117
|
+
const proxy = configureProxy(package.url);
|
|
118
|
+
|
|
119
|
+
package.run(binaryName, proxy);
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
module.exports = {
|
|
123
|
+
install,
|
|
124
|
+
run,
|
|
125
|
+
getPackage,
|
|
126
|
+
};
|
package/install.js
ADDED
|
@@ -0,0 +1,519 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lockfileVersion": 3,
|
|
3
|
+
"name": "brel",
|
|
4
|
+
"packages": {
|
|
5
|
+
"": {
|
|
6
|
+
"bin": {
|
|
7
|
+
"brel": "run-brel.js"
|
|
8
|
+
},
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"axios": "^1.13.2",
|
|
11
|
+
"axios-proxy-builder": "^0.1.2",
|
|
12
|
+
"console.table": "^0.10.0",
|
|
13
|
+
"detect-libc": "^2.1.2",
|
|
14
|
+
"rimraf": "^6.1.2"
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"prettier": "^3.7.4"
|
|
18
|
+
},
|
|
19
|
+
"engines": {
|
|
20
|
+
"node": ">=14",
|
|
21
|
+
"npm": ">=6"
|
|
22
|
+
},
|
|
23
|
+
"hasInstallScript": true,
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"name": "brel",
|
|
26
|
+
"version": "0.1.1"
|
|
27
|
+
},
|
|
28
|
+
"node_modules/@isaacs/balanced-match": {
|
|
29
|
+
"engines": {
|
|
30
|
+
"node": "20 || >=22"
|
|
31
|
+
},
|
|
32
|
+
"integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
|
|
33
|
+
"license": "MIT",
|
|
34
|
+
"resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
|
|
35
|
+
"version": "4.0.1"
|
|
36
|
+
},
|
|
37
|
+
"node_modules/@isaacs/brace-expansion": {
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@isaacs/balanced-match": "^4.0.1"
|
|
40
|
+
},
|
|
41
|
+
"engines": {
|
|
42
|
+
"node": "20 || >=22"
|
|
43
|
+
},
|
|
44
|
+
"integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
|
|
45
|
+
"license": "MIT",
|
|
46
|
+
"resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
|
|
47
|
+
"version": "5.0.0"
|
|
48
|
+
},
|
|
49
|
+
"node_modules/asynckit": {
|
|
50
|
+
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
|
|
51
|
+
"license": "MIT",
|
|
52
|
+
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
|
53
|
+
"version": "0.4.0"
|
|
54
|
+
},
|
|
55
|
+
"node_modules/axios": {
|
|
56
|
+
"dependencies": {
|
|
57
|
+
"follow-redirects": "^1.15.6",
|
|
58
|
+
"form-data": "^4.0.4",
|
|
59
|
+
"proxy-from-env": "^1.1.0"
|
|
60
|
+
},
|
|
61
|
+
"integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==",
|
|
62
|
+
"license": "MIT",
|
|
63
|
+
"resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz",
|
|
64
|
+
"version": "1.13.2"
|
|
65
|
+
},
|
|
66
|
+
"node_modules/axios-proxy-builder": {
|
|
67
|
+
"dependencies": {
|
|
68
|
+
"tunnel": "^0.0.6"
|
|
69
|
+
},
|
|
70
|
+
"integrity": "sha512-6uBVsBZzkB3tCC8iyx59mCjQckhB8+GQrI9Cop8eC7ybIsvs/KtnNgEBfRMSEa7GqK2VBGUzgjNYMdPIfotyPA==",
|
|
71
|
+
"license": "MIT",
|
|
72
|
+
"resolved": "https://registry.npmjs.org/axios-proxy-builder/-/axios-proxy-builder-0.1.2.tgz",
|
|
73
|
+
"version": "0.1.2"
|
|
74
|
+
},
|
|
75
|
+
"node_modules/call-bind-apply-helpers": {
|
|
76
|
+
"dependencies": {
|
|
77
|
+
"es-errors": "^1.3.0",
|
|
78
|
+
"function-bind": "^1.1.2"
|
|
79
|
+
},
|
|
80
|
+
"engines": {
|
|
81
|
+
"node": ">= 0.4"
|
|
82
|
+
},
|
|
83
|
+
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
|
|
84
|
+
"license": "MIT",
|
|
85
|
+
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
|
|
86
|
+
"version": "1.0.2"
|
|
87
|
+
},
|
|
88
|
+
"node_modules/clone": {
|
|
89
|
+
"engines": {
|
|
90
|
+
"node": ">=0.8"
|
|
91
|
+
},
|
|
92
|
+
"integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
|
|
93
|
+
"license": "MIT",
|
|
94
|
+
"optional": true,
|
|
95
|
+
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
|
|
96
|
+
"version": "1.0.4"
|
|
97
|
+
},
|
|
98
|
+
"node_modules/combined-stream": {
|
|
99
|
+
"dependencies": {
|
|
100
|
+
"delayed-stream": "~1.0.0"
|
|
101
|
+
},
|
|
102
|
+
"engines": {
|
|
103
|
+
"node": ">= 0.8"
|
|
104
|
+
},
|
|
105
|
+
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
|
106
|
+
"license": "MIT",
|
|
107
|
+
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
|
108
|
+
"version": "1.0.8"
|
|
109
|
+
},
|
|
110
|
+
"node_modules/console.table": {
|
|
111
|
+
"dependencies": {
|
|
112
|
+
"easy-table": "1.1.0"
|
|
113
|
+
},
|
|
114
|
+
"engines": {
|
|
115
|
+
"node": "> 0.10"
|
|
116
|
+
},
|
|
117
|
+
"integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==",
|
|
118
|
+
"license": "MIT",
|
|
119
|
+
"resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz",
|
|
120
|
+
"version": "0.10.0"
|
|
121
|
+
},
|
|
122
|
+
"node_modules/defaults": {
|
|
123
|
+
"dependencies": {
|
|
124
|
+
"clone": "^1.0.2"
|
|
125
|
+
},
|
|
126
|
+
"funding": {
|
|
127
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
128
|
+
},
|
|
129
|
+
"integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
|
|
130
|
+
"license": "MIT",
|
|
131
|
+
"optional": true,
|
|
132
|
+
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
|
|
133
|
+
"version": "1.0.4"
|
|
134
|
+
},
|
|
135
|
+
"node_modules/delayed-stream": {
|
|
136
|
+
"engines": {
|
|
137
|
+
"node": ">=0.4.0"
|
|
138
|
+
},
|
|
139
|
+
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
|
|
140
|
+
"license": "MIT",
|
|
141
|
+
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
|
142
|
+
"version": "1.0.0"
|
|
143
|
+
},
|
|
144
|
+
"node_modules/detect-libc": {
|
|
145
|
+
"engines": {
|
|
146
|
+
"node": ">=8"
|
|
147
|
+
},
|
|
148
|
+
"integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
|
|
149
|
+
"license": "Apache-2.0",
|
|
150
|
+
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
|
|
151
|
+
"version": "2.1.2"
|
|
152
|
+
},
|
|
153
|
+
"node_modules/dunder-proto": {
|
|
154
|
+
"dependencies": {
|
|
155
|
+
"call-bind-apply-helpers": "^1.0.1",
|
|
156
|
+
"es-errors": "^1.3.0",
|
|
157
|
+
"gopd": "^1.2.0"
|
|
158
|
+
},
|
|
159
|
+
"engines": {
|
|
160
|
+
"node": ">= 0.4"
|
|
161
|
+
},
|
|
162
|
+
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
|
|
163
|
+
"license": "MIT",
|
|
164
|
+
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
|
|
165
|
+
"version": "1.0.1"
|
|
166
|
+
},
|
|
167
|
+
"node_modules/easy-table": {
|
|
168
|
+
"integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==",
|
|
169
|
+
"license": "MIT",
|
|
170
|
+
"optionalDependencies": {
|
|
171
|
+
"wcwidth": ">=1.0.1"
|
|
172
|
+
},
|
|
173
|
+
"resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz",
|
|
174
|
+
"version": "1.1.0"
|
|
175
|
+
},
|
|
176
|
+
"node_modules/es-define-property": {
|
|
177
|
+
"engines": {
|
|
178
|
+
"node": ">= 0.4"
|
|
179
|
+
},
|
|
180
|
+
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
|
|
181
|
+
"license": "MIT",
|
|
182
|
+
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
|
|
183
|
+
"version": "1.0.1"
|
|
184
|
+
},
|
|
185
|
+
"node_modules/es-errors": {
|
|
186
|
+
"engines": {
|
|
187
|
+
"node": ">= 0.4"
|
|
188
|
+
},
|
|
189
|
+
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
|
|
190
|
+
"license": "MIT",
|
|
191
|
+
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
|
|
192
|
+
"version": "1.3.0"
|
|
193
|
+
},
|
|
194
|
+
"node_modules/es-object-atoms": {
|
|
195
|
+
"dependencies": {
|
|
196
|
+
"es-errors": "^1.3.0"
|
|
197
|
+
},
|
|
198
|
+
"engines": {
|
|
199
|
+
"node": ">= 0.4"
|
|
200
|
+
},
|
|
201
|
+
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
|
|
202
|
+
"license": "MIT",
|
|
203
|
+
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
|
|
204
|
+
"version": "1.1.1"
|
|
205
|
+
},
|
|
206
|
+
"node_modules/es-set-tostringtag": {
|
|
207
|
+
"dependencies": {
|
|
208
|
+
"es-errors": "^1.3.0",
|
|
209
|
+
"get-intrinsic": "^1.2.6",
|
|
210
|
+
"has-tostringtag": "^1.0.2",
|
|
211
|
+
"hasown": "^2.0.2"
|
|
212
|
+
},
|
|
213
|
+
"engines": {
|
|
214
|
+
"node": ">= 0.4"
|
|
215
|
+
},
|
|
216
|
+
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
|
|
217
|
+
"license": "MIT",
|
|
218
|
+
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
|
|
219
|
+
"version": "2.1.0"
|
|
220
|
+
},
|
|
221
|
+
"node_modules/follow-redirects": {
|
|
222
|
+
"engines": {
|
|
223
|
+
"node": ">=4.0"
|
|
224
|
+
},
|
|
225
|
+
"funding": [
|
|
226
|
+
{
|
|
227
|
+
"type": "individual",
|
|
228
|
+
"url": "https://github.com/sponsors/RubenVerborgh"
|
|
229
|
+
}
|
|
230
|
+
],
|
|
231
|
+
"integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
|
|
232
|
+
"license": "MIT",
|
|
233
|
+
"peerDependenciesMeta": {
|
|
234
|
+
"debug": {
|
|
235
|
+
"optional": true
|
|
236
|
+
}
|
|
237
|
+
},
|
|
238
|
+
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
|
|
239
|
+
"version": "1.15.6"
|
|
240
|
+
},
|
|
241
|
+
"node_modules/form-data": {
|
|
242
|
+
"dependencies": {
|
|
243
|
+
"asynckit": "^0.4.0",
|
|
244
|
+
"combined-stream": "^1.0.8",
|
|
245
|
+
"es-set-tostringtag": "^2.1.0",
|
|
246
|
+
"hasown": "^2.0.2",
|
|
247
|
+
"mime-types": "^2.1.12"
|
|
248
|
+
},
|
|
249
|
+
"engines": {
|
|
250
|
+
"node": ">= 6"
|
|
251
|
+
},
|
|
252
|
+
"integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
|
|
253
|
+
"license": "MIT",
|
|
254
|
+
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
|
|
255
|
+
"version": "4.0.4"
|
|
256
|
+
},
|
|
257
|
+
"node_modules/function-bind": {
|
|
258
|
+
"funding": {
|
|
259
|
+
"url": "https://github.com/sponsors/ljharb"
|
|
260
|
+
},
|
|
261
|
+
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
|
|
262
|
+
"license": "MIT",
|
|
263
|
+
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
|
|
264
|
+
"version": "1.1.2"
|
|
265
|
+
},
|
|
266
|
+
"node_modules/get-intrinsic": {
|
|
267
|
+
"dependencies": {
|
|
268
|
+
"call-bind-apply-helpers": "^1.0.2",
|
|
269
|
+
"es-define-property": "^1.0.1",
|
|
270
|
+
"es-errors": "^1.3.0",
|
|
271
|
+
"es-object-atoms": "^1.1.1",
|
|
272
|
+
"function-bind": "^1.1.2",
|
|
273
|
+
"get-proto": "^1.0.1",
|
|
274
|
+
"gopd": "^1.2.0",
|
|
275
|
+
"has-symbols": "^1.1.0",
|
|
276
|
+
"hasown": "^2.0.2",
|
|
277
|
+
"math-intrinsics": "^1.1.0"
|
|
278
|
+
},
|
|
279
|
+
"engines": {
|
|
280
|
+
"node": ">= 0.4"
|
|
281
|
+
},
|
|
282
|
+
"funding": {
|
|
283
|
+
"url": "https://github.com/sponsors/ljharb"
|
|
284
|
+
},
|
|
285
|
+
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
|
|
286
|
+
"license": "MIT",
|
|
287
|
+
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
|
|
288
|
+
"version": "1.3.0"
|
|
289
|
+
},
|
|
290
|
+
"node_modules/get-proto": {
|
|
291
|
+
"dependencies": {
|
|
292
|
+
"dunder-proto": "^1.0.1",
|
|
293
|
+
"es-object-atoms": "^1.0.0"
|
|
294
|
+
},
|
|
295
|
+
"engines": {
|
|
296
|
+
"node": ">= 0.4"
|
|
297
|
+
},
|
|
298
|
+
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
|
|
299
|
+
"license": "MIT",
|
|
300
|
+
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
|
|
301
|
+
"version": "1.0.1"
|
|
302
|
+
},
|
|
303
|
+
"node_modules/glob": {
|
|
304
|
+
"dependencies": {
|
|
305
|
+
"minimatch": "^10.1.1",
|
|
306
|
+
"minipass": "^7.1.2",
|
|
307
|
+
"path-scurry": "^2.0.0"
|
|
308
|
+
},
|
|
309
|
+
"engines": {
|
|
310
|
+
"node": "20 || >=22"
|
|
311
|
+
},
|
|
312
|
+
"funding": {
|
|
313
|
+
"url": "https://github.com/sponsors/isaacs"
|
|
314
|
+
},
|
|
315
|
+
"integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==",
|
|
316
|
+
"license": "BlueOak-1.0.0",
|
|
317
|
+
"resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz",
|
|
318
|
+
"version": "13.0.0"
|
|
319
|
+
},
|
|
320
|
+
"node_modules/gopd": {
|
|
321
|
+
"engines": {
|
|
322
|
+
"node": ">= 0.4"
|
|
323
|
+
},
|
|
324
|
+
"funding": {
|
|
325
|
+
"url": "https://github.com/sponsors/ljharb"
|
|
326
|
+
},
|
|
327
|
+
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
|
|
328
|
+
"license": "MIT",
|
|
329
|
+
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
|
|
330
|
+
"version": "1.2.0"
|
|
331
|
+
},
|
|
332
|
+
"node_modules/has-symbols": {
|
|
333
|
+
"engines": {
|
|
334
|
+
"node": ">= 0.4"
|
|
335
|
+
},
|
|
336
|
+
"funding": {
|
|
337
|
+
"url": "https://github.com/sponsors/ljharb"
|
|
338
|
+
},
|
|
339
|
+
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
|
|
340
|
+
"license": "MIT",
|
|
341
|
+
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
|
|
342
|
+
"version": "1.1.0"
|
|
343
|
+
},
|
|
344
|
+
"node_modules/has-tostringtag": {
|
|
345
|
+
"dependencies": {
|
|
346
|
+
"has-symbols": "^1.0.3"
|
|
347
|
+
},
|
|
348
|
+
"engines": {
|
|
349
|
+
"node": ">= 0.4"
|
|
350
|
+
},
|
|
351
|
+
"funding": {
|
|
352
|
+
"url": "https://github.com/sponsors/ljharb"
|
|
353
|
+
},
|
|
354
|
+
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
|
|
355
|
+
"license": "MIT",
|
|
356
|
+
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
|
|
357
|
+
"version": "1.0.2"
|
|
358
|
+
},
|
|
359
|
+
"node_modules/hasown": {
|
|
360
|
+
"dependencies": {
|
|
361
|
+
"function-bind": "^1.1.2"
|
|
362
|
+
},
|
|
363
|
+
"engines": {
|
|
364
|
+
"node": ">= 0.4"
|
|
365
|
+
},
|
|
366
|
+
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
|
|
367
|
+
"license": "MIT",
|
|
368
|
+
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
|
|
369
|
+
"version": "2.0.2"
|
|
370
|
+
},
|
|
371
|
+
"node_modules/lru-cache": {
|
|
372
|
+
"engines": {
|
|
373
|
+
"node": "20 || >=22"
|
|
374
|
+
},
|
|
375
|
+
"integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==",
|
|
376
|
+
"license": "BlueOak-1.0.0",
|
|
377
|
+
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz",
|
|
378
|
+
"version": "11.2.4"
|
|
379
|
+
},
|
|
380
|
+
"node_modules/math-intrinsics": {
|
|
381
|
+
"engines": {
|
|
382
|
+
"node": ">= 0.4"
|
|
383
|
+
},
|
|
384
|
+
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
|
|
385
|
+
"license": "MIT",
|
|
386
|
+
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
|
|
387
|
+
"version": "1.1.0"
|
|
388
|
+
},
|
|
389
|
+
"node_modules/mime-db": {
|
|
390
|
+
"engines": {
|
|
391
|
+
"node": ">= 0.6"
|
|
392
|
+
},
|
|
393
|
+
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
|
|
394
|
+
"license": "MIT",
|
|
395
|
+
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
|
396
|
+
"version": "1.52.0"
|
|
397
|
+
},
|
|
398
|
+
"node_modules/mime-types": {
|
|
399
|
+
"dependencies": {
|
|
400
|
+
"mime-db": "1.52.0"
|
|
401
|
+
},
|
|
402
|
+
"engines": {
|
|
403
|
+
"node": ">= 0.6"
|
|
404
|
+
},
|
|
405
|
+
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
|
|
406
|
+
"license": "MIT",
|
|
407
|
+
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
|
|
408
|
+
"version": "2.1.35"
|
|
409
|
+
},
|
|
410
|
+
"node_modules/minimatch": {
|
|
411
|
+
"dependencies": {
|
|
412
|
+
"@isaacs/brace-expansion": "^5.0.0"
|
|
413
|
+
},
|
|
414
|
+
"engines": {
|
|
415
|
+
"node": "20 || >=22"
|
|
416
|
+
},
|
|
417
|
+
"funding": {
|
|
418
|
+
"url": "https://github.com/sponsors/isaacs"
|
|
419
|
+
},
|
|
420
|
+
"integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
|
|
421
|
+
"license": "BlueOak-1.0.0",
|
|
422
|
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz",
|
|
423
|
+
"version": "10.1.1"
|
|
424
|
+
},
|
|
425
|
+
"node_modules/minipass": {
|
|
426
|
+
"engines": {
|
|
427
|
+
"node": ">=16 || 14 >=14.17"
|
|
428
|
+
},
|
|
429
|
+
"integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
|
|
430
|
+
"license": "ISC",
|
|
431
|
+
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
|
|
432
|
+
"version": "7.1.2"
|
|
433
|
+
},
|
|
434
|
+
"node_modules/package-json-from-dist": {
|
|
435
|
+
"integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
|
|
436
|
+
"license": "BlueOak-1.0.0",
|
|
437
|
+
"resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
|
|
438
|
+
"version": "1.0.1"
|
|
439
|
+
},
|
|
440
|
+
"node_modules/path-scurry": {
|
|
441
|
+
"dependencies": {
|
|
442
|
+
"lru-cache": "^11.0.0",
|
|
443
|
+
"minipass": "^7.1.2"
|
|
444
|
+
},
|
|
445
|
+
"engines": {
|
|
446
|
+
"node": "20 || >=22"
|
|
447
|
+
},
|
|
448
|
+
"funding": {
|
|
449
|
+
"url": "https://github.com/sponsors/isaacs"
|
|
450
|
+
},
|
|
451
|
+
"integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==",
|
|
452
|
+
"license": "BlueOak-1.0.0",
|
|
453
|
+
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz",
|
|
454
|
+
"version": "2.0.1"
|
|
455
|
+
},
|
|
456
|
+
"node_modules/prettier": {
|
|
457
|
+
"bin": {
|
|
458
|
+
"prettier": "bin/prettier.cjs"
|
|
459
|
+
},
|
|
460
|
+
"dev": true,
|
|
461
|
+
"engines": {
|
|
462
|
+
"node": ">=14"
|
|
463
|
+
},
|
|
464
|
+
"funding": {
|
|
465
|
+
"url": "https://github.com/prettier/prettier?sponsor=1"
|
|
466
|
+
},
|
|
467
|
+
"integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==",
|
|
468
|
+
"license": "MIT",
|
|
469
|
+
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz",
|
|
470
|
+
"version": "3.7.4"
|
|
471
|
+
},
|
|
472
|
+
"node_modules/proxy-from-env": {
|
|
473
|
+
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
|
|
474
|
+
"license": "MIT",
|
|
475
|
+
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
|
|
476
|
+
"version": "1.1.0"
|
|
477
|
+
},
|
|
478
|
+
"node_modules/rimraf": {
|
|
479
|
+
"bin": {
|
|
480
|
+
"rimraf": "dist/esm/bin.mjs"
|
|
481
|
+
},
|
|
482
|
+
"dependencies": {
|
|
483
|
+
"glob": "^13.0.0",
|
|
484
|
+
"package-json-from-dist": "^1.0.1"
|
|
485
|
+
},
|
|
486
|
+
"engines": {
|
|
487
|
+
"node": "20 || >=22"
|
|
488
|
+
},
|
|
489
|
+
"funding": {
|
|
490
|
+
"url": "https://github.com/sponsors/isaacs"
|
|
491
|
+
},
|
|
492
|
+
"integrity": "sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==",
|
|
493
|
+
"license": "BlueOak-1.0.0",
|
|
494
|
+
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.2.tgz",
|
|
495
|
+
"version": "6.1.2"
|
|
496
|
+
},
|
|
497
|
+
"node_modules/tunnel": {
|
|
498
|
+
"engines": {
|
|
499
|
+
"node": ">=0.6.11 <=0.7.0 || >=0.7.3"
|
|
500
|
+
},
|
|
501
|
+
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
|
|
502
|
+
"license": "MIT",
|
|
503
|
+
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
|
|
504
|
+
"version": "0.0.6"
|
|
505
|
+
},
|
|
506
|
+
"node_modules/wcwidth": {
|
|
507
|
+
"dependencies": {
|
|
508
|
+
"defaults": "^1.0.3"
|
|
509
|
+
},
|
|
510
|
+
"integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
|
|
511
|
+
"license": "MIT",
|
|
512
|
+
"optional": true,
|
|
513
|
+
"resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
|
|
514
|
+
"version": "1.0.1"
|
|
515
|
+
}
|
|
516
|
+
},
|
|
517
|
+
"requires": true,
|
|
518
|
+
"version": "0.1.1"
|
|
519
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
{
|
|
2
|
+
"artifactDownloadUrl": "https://github.com/better-releases/brel/releases/download/0.1.1",
|
|
3
|
+
"bin": {
|
|
4
|
+
"brel": "run-brel.js"
|
|
5
|
+
},
|
|
6
|
+
"dependencies": {
|
|
7
|
+
"axios": "^1.13.2",
|
|
8
|
+
"axios-proxy-builder": "^0.1.2",
|
|
9
|
+
"console.table": "^0.10.0",
|
|
10
|
+
"detect-libc": "^2.1.2",
|
|
11
|
+
"rimraf": "^6.1.2"
|
|
12
|
+
},
|
|
13
|
+
"description": "better-releases cli tool",
|
|
14
|
+
"devDependencies": {
|
|
15
|
+
"prettier": "^3.7.4"
|
|
16
|
+
},
|
|
17
|
+
"engines": {
|
|
18
|
+
"node": ">=14",
|
|
19
|
+
"npm": ">=6"
|
|
20
|
+
},
|
|
21
|
+
"glibcMinimum": {
|
|
22
|
+
"major": 2,
|
|
23
|
+
"series": 35
|
|
24
|
+
},
|
|
25
|
+
"homepage": "https://better-releases.com",
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"name": "brel",
|
|
28
|
+
"preferUnplugged": true,
|
|
29
|
+
"repository": "https://github.com/better-releases/brel",
|
|
30
|
+
"scripts": {
|
|
31
|
+
"fmt": "prettier --write **/*.js",
|
|
32
|
+
"fmt:check": "prettier --check **/*.js",
|
|
33
|
+
"postinstall": "node ./install.js"
|
|
34
|
+
},
|
|
35
|
+
"supportedPlatforms": {
|
|
36
|
+
"aarch64-apple-darwin": {
|
|
37
|
+
"artifactName": "brel-aarch64-apple-darwin.tar.xz",
|
|
38
|
+
"bins": {
|
|
39
|
+
"brel": "brel"
|
|
40
|
+
},
|
|
41
|
+
"zipExt": ".tar.xz"
|
|
42
|
+
},
|
|
43
|
+
"aarch64-pc-windows-msvc": {
|
|
44
|
+
"artifactName": "brel-x86_64-pc-windows-msvc.zip",
|
|
45
|
+
"bins": {
|
|
46
|
+
"brel": "brel.exe"
|
|
47
|
+
},
|
|
48
|
+
"zipExt": ".zip"
|
|
49
|
+
},
|
|
50
|
+
"aarch64-unknown-linux-gnu": {
|
|
51
|
+
"artifactName": "brel-aarch64-unknown-linux-gnu.tar.xz",
|
|
52
|
+
"bins": {
|
|
53
|
+
"brel": "brel"
|
|
54
|
+
},
|
|
55
|
+
"zipExt": ".tar.xz"
|
|
56
|
+
},
|
|
57
|
+
"x86_64-apple-darwin": {
|
|
58
|
+
"artifactName": "brel-x86_64-apple-darwin.tar.xz",
|
|
59
|
+
"bins": {
|
|
60
|
+
"brel": "brel"
|
|
61
|
+
},
|
|
62
|
+
"zipExt": ".tar.xz"
|
|
63
|
+
},
|
|
64
|
+
"x86_64-pc-windows-gnu": {
|
|
65
|
+
"artifactName": "brel-x86_64-pc-windows-msvc.zip",
|
|
66
|
+
"bins": {
|
|
67
|
+
"brel": "brel.exe"
|
|
68
|
+
},
|
|
69
|
+
"zipExt": ".zip"
|
|
70
|
+
},
|
|
71
|
+
"x86_64-pc-windows-msvc": {
|
|
72
|
+
"artifactName": "brel-x86_64-pc-windows-msvc.zip",
|
|
73
|
+
"bins": {
|
|
74
|
+
"brel": "brel.exe"
|
|
75
|
+
},
|
|
76
|
+
"zipExt": ".zip"
|
|
77
|
+
},
|
|
78
|
+
"x86_64-unknown-linux-gnu": {
|
|
79
|
+
"artifactName": "brel-x86_64-unknown-linux-gnu.tar.xz",
|
|
80
|
+
"bins": {
|
|
81
|
+
"brel": "brel"
|
|
82
|
+
},
|
|
83
|
+
"zipExt": ".tar.xz"
|
|
84
|
+
},
|
|
85
|
+
"x86_64-unknown-linux-musl-dynamic": {
|
|
86
|
+
"artifactName": "brel-x86_64-unknown-linux-musl.tar.xz",
|
|
87
|
+
"bins": {
|
|
88
|
+
"brel": "brel"
|
|
89
|
+
},
|
|
90
|
+
"zipExt": ".tar.xz"
|
|
91
|
+
},
|
|
92
|
+
"x86_64-unknown-linux-musl-static": {
|
|
93
|
+
"artifactName": "brel-x86_64-unknown-linux-musl.tar.xz",
|
|
94
|
+
"bins": {
|
|
95
|
+
"brel": "brel"
|
|
96
|
+
},
|
|
97
|
+
"zipExt": ".tar.xz"
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"version": "0.1.1",
|
|
101
|
+
"volta": {
|
|
102
|
+
"node": "18.14.1",
|
|
103
|
+
"npm": "9.5.0"
|
|
104
|
+
}
|
|
105
|
+
}
|
package/run-brel.js
ADDED