reelout 0.0.0 → 0.2.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Fai
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,89 @@
1
+ # ReelOut
2
+
3
+ [![NPM Version](https://img.shields.io/npm/v/reelout)](https://www.npmjs.com/package/reelout)
4
+ [![Codecov](https://img.shields.io/codecov/c/github/aicest/reelout?token=FSP5JC9E16)](https://app.codecov.io/github/aicest/reelout)
5
+
6
+ ReelOut is a plugin-driven release automation tool engineered specifically for monorepos. By analyzing [Conventional Commits](https://conventionalcommits.org), it autonomously calculates version bumps, updates package manifests, generates changelogs, creates tags, and publishes packages to your registry.
7
+
8
+ ## Features
9
+
10
+ | Feature | Semantic Release | Changesets | Release Please | ReelOut |
11
+ | :-------------------------------- | :----------------: | :--------: | :------------: | :----------------: |
12
+ | Monorepo support | ❌ | ✅ | ✅ | ✅ |
13
+ | No extra log files required | ✅ | ❌ | ✅ | ✅ |
14
+ | No release pull requests required | ✅ | ✅ | ❌ | ✅ |
15
+ | Prerelease mode | ✅ | ✅ | ✅ | ✅ |
16
+ | Multi-ecosystem compatibility | ✅ (plugin-driven) | ❌ | ✅ (built-in) | ✅ (plugin-driven) |
17
+
18
+ ## Installation
19
+
20
+ Install with your preferred package manager:
21
+
22
+ ```sh
23
+ npm install -D reelout
24
+ # or
25
+ pnpm add -D reelout
26
+ # or
27
+ yarn add -D reelout
28
+ ```
29
+
30
+ ## Usage
31
+
32
+ ### View available options
33
+
34
+ ```sh
35
+ npx reelout --help
36
+ ```
37
+
38
+ ```text
39
+ Usage: reelout [options]
40
+
41
+ Monorepo release CLI and toolkit.
42
+
43
+ Options:
44
+ --cwd <string> Working directory in which to run the release process.
45
+ --dry-run Preview the planned release without updating files, creating commits, or publishing packages.
46
+ --prerelease [boolean or string] Enable prerelease mode and optionally provide a label (for example, "alpha" or "beta").
47
+ --promote [boolean] Promote development versions to stable production releases.
48
+ --channel [boolean or string] Publish packages to the specified release channel.
49
+ --version Display the version number.
50
+ --help Display help for this command.
51
+ ```
52
+
53
+ ### Preview a release
54
+
55
+ Preview version bumps without modifying files, staging tags, or publishing:
56
+
57
+ ```sh
58
+ npx reelout --dry-run
59
+ ```
60
+
61
+ ### Execute a release
62
+
63
+ Run a production release to parse commits, bump versions, update manifests, generate changelogs, tag, and publish:
64
+
65
+ ```sh
66
+ npx reelout
67
+ ```
68
+
69
+ ### Prereleases and promotions
70
+
71
+ Ship pre-production builds with a custom prerelease identifier:
72
+
73
+ ```sh
74
+ npx reelout --prerelease beta
75
+ ```
76
+
77
+ Once a prerelease version is validated, upgrade it to a stable production release without requiring new commits:
78
+
79
+ ```sh
80
+ npx reelout --promote
81
+ ```
82
+
83
+ ## Documentation
84
+
85
+ View the full documentation at https://reelout.overview.vercel.app/.
86
+
87
+ ## License
88
+
89
+ This project is licensed under the [MIT License](./LICENSE).
package/dist/cli.js ADDED
@@ -0,0 +1,85 @@
1
+ #!/usr/bin/env node
2
+ import { createProcessAbortSignal, createProgram } from "@reelout/cli";
3
+ //#region package.json
4
+ var version = "0.1.0";
5
+ var description = "Monorepo release CLI and toolkit.";
6
+ //#endregion
7
+ //#region \0@oxc-project+runtime@0.152.0/helpers/esm/usingCtx.js
8
+ function _usingCtx$1() {
9
+ var r = "function" == typeof SuppressedError ? SuppressedError : function(r, e) {
10
+ var n = Error();
11
+ return n.name = "SuppressedError", n.error = r, n.suppressed = e, n;
12
+ }, e = {}, n = [];
13
+ function using(r, e) {
14
+ if (null != e) {
15
+ if (Object(e) !== e) throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");
16
+ if (r) var o = e[Symbol.asyncDispose || Symbol["for"]("Symbol.asyncDispose")];
17
+ if (void 0 === o && (o = e[Symbol.dispose || Symbol["for"]("Symbol.dispose")], r)) var t = o;
18
+ if ("function" != typeof o) throw new TypeError("Object is not disposable.");
19
+ t && (o = function o() {
20
+ try {
21
+ t.call(e);
22
+ } catch (r) {
23
+ return Promise.reject(r);
24
+ }
25
+ }), n.push({
26
+ v: e,
27
+ d: o,
28
+ a: r
29
+ });
30
+ } else r && n.push({
31
+ d: e,
32
+ a: r
33
+ });
34
+ return e;
35
+ }
36
+ return {
37
+ e,
38
+ u: using.bind(null, !1),
39
+ a: using.bind(null, !0),
40
+ d: function d() {
41
+ var o, t = this.e, s = 0;
42
+ function next() {
43
+ for (; o = n.pop();) try {
44
+ if (!o.a && 1 === s) return s = 0, n.push(o), Promise.resolve().then(next);
45
+ if (o.d) {
46
+ var r = o.d.call(o.v);
47
+ if (o.a) return s |= 2, Promise.resolve(r).then(next, err);
48
+ } else s |= 1;
49
+ } catch (r) {
50
+ return err(r);
51
+ }
52
+ if (1 === s) return t !== e ? Promise.reject(t) : Promise.resolve();
53
+ if (t !== e) throw t;
54
+ }
55
+ function err(n) {
56
+ return t = t !== e ? new r(n, t) : n, next();
57
+ }
58
+ return next();
59
+ }
60
+ };
61
+ }
62
+ //#endregion
63
+ //#region src/cli.ts
64
+ try {
65
+ var _usingCtx = _usingCtx$1();
66
+ var signal = _usingCtx.u(createProcessAbortSignal());
67
+ await (await createProgram({
68
+ name: "reelout",
69
+ version,
70
+ description,
71
+ cwd: process.cwd(),
72
+ env: process.env,
73
+ stdout: process.stdout,
74
+ stderr: process.stderr,
75
+ signal
76
+ })).parseAsync(process.argv);
77
+ } catch (_) {
78
+ _usingCtx.e = _;
79
+ } finally {
80
+ _usingCtx.d();
81
+ }
82
+ //#endregion
83
+ export {};
84
+
85
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","names":[],"sources":["../package.json","../src/cli.ts"],"sourcesContent":["{\n \"name\": \"reelout\",\n \"version\": \"0.1.0\",\n \"description\": \"Monorepo release CLI and toolkit.\",\n \"keywords\": [\n \"release\",\n \"monorepo\",\n \"versioning\",\n \"changelog\",\n \"npm\",\n \"git\",\n \"github\",\n \"cli\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/aicest/reelout.git\"\n },\n \"license\": \"MIT\",\n \"type\": \"module\",\n \"imports\": {},\n \"exports\": {\n \"./package.json\": {\n \"default\": \"./package.json\"\n },\n \".\": {\n \"module\": \"./src/index.ts\",\n \"development\": \"./src/index.ts\",\n \"types\": \"./src/index.ts\",\n \"default\": \"./dist/index.js\"\n },\n \"./*\": {\n \"module\": \"./src/*.ts\",\n \"development\": \"./src/*.ts\",\n \"types\": \"./src/*.ts\",\n \"default\": \"./dist/*.js\"\n }\n },\n \"bin\": \"dist/cli.js\",\n \"files\": [\n \"./dist\",\n \"./src\"\n ],\n \"scripts\": {\n \"build\": \"pnpm -r build && vite build --ssr --sourcemap\",\n \"clean\": \"rimraf -g **/{*.tsbuildinfo,coverage,dist,generated,storybook-static,test-results}\",\n \"dev\": \"concurrently 'pnpm -r --parallel dev' 'vite build --ssr --watch'\",\n \"format\": \"eslint --fix . && prettier --write .\",\n \"lint\": \"eslint . && prettier --check . && tsx scripts/check.ts .\",\n \"prepare\": \"husky\",\n \"test\": \"vitest\",\n \"validate\": \"pnpm i && pnpm clean && pnpm lint && typedoc --out generated && pnpm build && pnpm test run --coverage\"\n },\n \"dependencies\": {\n \"@reelout/cli\": \"workspace:^\",\n \"@reelout/config\": \"workspace:^\",\n \"@reelout/context\": \"workspace:^\",\n \"@reelout/core\": \"workspace:^\"\n },\n \"devDependencies\": {\n \"@commitlint/cli\": \"catalog:\",\n \"@commitlint/config-conventional\": \"catalog:\",\n \"@commitlint/types\": \"catalog:\",\n \"@eslint/js\": \"catalog:\",\n \"@reelout/github\": \"workspace:^\",\n \"@reelout/npm\": \"workspace:^\",\n \"@testing-library/jest-dom\": \"catalog:\",\n \"@types/node\": \"catalog:\",\n \"@vitest/coverage-istanbul\": \"catalog:\",\n \"concurrently\": \"catalog:\",\n \"consola\": \"catalog:\",\n \"eslint\": \"catalog:\",\n \"eslint-plugin-import\": \"catalog:\",\n \"from-async\": \"catalog:\",\n \"glob\": \"catalog:\",\n \"globals\": \"catalog:\",\n \"husky\": \"catalog:\",\n \"ignore\": \"catalog:\",\n \"jsdom\": \"catalog:\",\n \"lint-staged\": \"catalog:\",\n \"memfs\": \"catalog:\",\n \"prettier\": \"catalog:\",\n \"rimraf\": \"catalog:\",\n \"rollup-plugin-node-externals\": \"catalog:\",\n \"sort-package-json\": \"catalog:\",\n \"tempy\": \"catalog:\",\n \"tslib\": \"catalog:\",\n \"tsx\": \"catalog:\",\n \"typedoc\": \"catalog:\",\n \"typescript\": \"catalog:\",\n \"typescript-eslint\": \"catalog:\",\n \"unionfs\": \"catalog:\",\n \"vite\": \"catalog:\",\n \"vitest\": \"catalog:\"\n },\n \"packageManager\": \"pnpm@12.8.2+sha512.a5941679663d952c5f0ecc38ba98af98b4dc01b95780354f6894f2f873973cef2f7e2989d7db3ee5393938ae21f62fe06bcdf685d475ddad829a62095d2b8b11\",\n \"engines\": {\n \"node\": \">=24.15\"\n }\n}\n","#!/usr/bin/env node\n\n// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 Fai\n\nimport { createProcessAbortSignal, createProgram } from '@reelout/cli'\nimport { description, version } from '../package.json'\n\nusing signal = createProcessAbortSignal()\n\nconst program = await createProgram({\n name: 'reelout',\n version,\n description,\n cwd: process.cwd(),\n env: process.env,\n stdout: process.stdout,\n stderr: process.stderr,\n signal,\n})\n\nawait program.parseAsync(process.argv)\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CCQA,IAAM,SAAA,UAAA,EAAS,yBAAyB,CAAA;CAaxC,OAAM,MAXgB,cAAc;EAClC,MAAM;EACN;EACA;EACA,KAAK,QAAQ,IAAI;EACjB,KAAK,QAAQ;EACb,QAAQ,QAAQ;EAChB,QAAQ,QAAQ;EAChB;CACF,CAAC,EAAA,CAEa,WAAW,QAAQ,IAAI"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export * from "@reelout/cli";
2
+ export * from "@reelout/config";
3
+ export * from "@reelout/context";
4
+ export * from "@reelout/core";
5
+ export {};
package/package.json CHANGED
@@ -1,7 +1,100 @@
1
1
  {
2
2
  "name": "reelout",
3
- "version": "0.0.0",
3
+ "version": "0.2.0",
4
+ "description": "Monorepo release CLI and toolkit.",
5
+ "keywords": [
6
+ "release",
7
+ "monorepo",
8
+ "versioning",
9
+ "changelog",
10
+ "npm",
11
+ "git",
12
+ "github",
13
+ "cli"
14
+ ],
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/aicest/reelout.git"
18
+ },
4
19
  "license": "MIT",
5
20
  "type": "module",
6
- "main": "index.js"
7
- }
21
+ "imports": {},
22
+ "exports": {
23
+ "./package.json": {
24
+ "default": "./package.json"
25
+ },
26
+ ".": {
27
+ "module": "./src/index.ts",
28
+ "development": "./src/index.ts",
29
+ "types": "./src/index.ts",
30
+ "default": "./dist/index.js"
31
+ },
32
+ "./*": {
33
+ "module": "./src/*.ts",
34
+ "development": "./src/*.ts",
35
+ "types": "./src/*.ts",
36
+ "default": "./dist/*.js"
37
+ }
38
+ },
39
+ "bin": {
40
+ "reelout": "dist/cli.js"
41
+ },
42
+ "files": [
43
+ "./dist",
44
+ "./src"
45
+ ],
46
+ "dependencies": {
47
+ "@reelout/cli": "^0.4.1",
48
+ "@reelout/config": "^0.4.1",
49
+ "@reelout/context": "^0.4.1",
50
+ "@reelout/core": "^0.5.0"
51
+ },
52
+ "devDependencies": {
53
+ "@commitlint/cli": "^21.2.3",
54
+ "@commitlint/config-conventional": "^21.2.3",
55
+ "@commitlint/types": "^21.2.3",
56
+ "@eslint/js": "^10.0.1",
57
+ "@reelout/github": "^0.4.1",
58
+ "@reelout/npm": "^0.5.0",
59
+ "@testing-library/jest-dom": "^7.0.1",
60
+ "@types/node": "^24.12.4",
61
+ "@vitest/coverage-istanbul": "^5.0.3",
62
+ "concurrently": "^10.0.5",
63
+ "consola": "^3.4.2",
64
+ "eslint": "^10.12.0",
65
+ "eslint-plugin-import": "^2.32.0",
66
+ "from-async": "^1.1.1",
67
+ "glob": "^13.0.6",
68
+ "globals": "^17.13.0",
69
+ "husky": "^9.1.7",
70
+ "ignore": "^7.0.12",
71
+ "jsdom": "^30.1.2",
72
+ "lint-staged": "^17.6.0",
73
+ "memfs": "^4.80.0",
74
+ "prettier": "^3.9.9",
75
+ "rimraf": "^6.1.3",
76
+ "rollup-plugin-node-externals": "^9.0.1",
77
+ "sort-package-json": "^4.0.0",
78
+ "tempy": "^3.2.0",
79
+ "tslib": "^2.8.1",
80
+ "tsx": "^4.23.15",
81
+ "typedoc": "^0.28.20",
82
+ "typescript": "npm:@typescript/typescript6@^6.0.2",
83
+ "typescript-eslint": "^8.71.1",
84
+ "unionfs": "^4.6.0",
85
+ "vite": "^8.3.3",
86
+ "vitest": "^5.0.3"
87
+ },
88
+ "engines": {
89
+ "node": ">=24.15"
90
+ },
91
+ "scripts": {
92
+ "build": "pnpm -r build && vite build --ssr --sourcemap",
93
+ "clean": "rimraf -g **/{*.tsbuildinfo,coverage,dist,generated,storybook-static,test-results}",
94
+ "dev": "concurrently 'pnpm -r --parallel dev' 'vite build --ssr --watch'",
95
+ "format": "eslint --fix . && prettier --write .",
96
+ "lint": "eslint . && prettier --check . && tsx scripts/check.ts .",
97
+ "test": "vitest",
98
+ "validate": "pnpm i && pnpm clean && pnpm lint && typedoc --out generated && pnpm build && pnpm test run --coverage"
99
+ }
100
+ }
package/src/cli.ts ADDED
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env node
2
+
3
+ // SPDX-License-Identifier: MIT
4
+ // Copyright (c) 2026 Fai
5
+
6
+ import { createProcessAbortSignal, createProgram } from '@reelout/cli'
7
+ import { description, version } from '../package.json'
8
+
9
+ using signal = createProcessAbortSignal()
10
+
11
+ const program = await createProgram({
12
+ name: 'reelout',
13
+ version,
14
+ description,
15
+ cwd: process.cwd(),
16
+ env: process.env,
17
+ stdout: process.stdout,
18
+ stderr: process.stderr,
19
+ signal,
20
+ })
21
+
22
+ await program.parseAsync(process.argv)
package/src/index.ts ADDED
@@ -0,0 +1,7 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // Copyright (c) 2026 Fai
3
+
4
+ export * from '@reelout/cli'
5
+ export * from '@reelout/config'
6
+ export * from '@reelout/context'
7
+ export * from '@reelout/core'
package/index.js DELETED
@@ -1 +0,0 @@
1
- export {}