create-mushi-mushi 0.4.0 → 0.5.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/CODE_OF_CONDUCT.md +51 -0
- package/CONTRIBUTING.md +122 -0
- package/README.md +36 -8
- package/SECURITY.md +50 -0
- package/dist/index.js +67 -24
- package/package.json +14 -4
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
AUTO-SYNCED from repo root by scripts/sync-community-files.mjs.
|
|
3
|
+
Do not edit here — edit the canonical file at the repository root and
|
|
4
|
+
re-run `node scripts/sync-community-files.mjs` (pre-commit hook does this
|
|
5
|
+
automatically).
|
|
6
|
+
-->
|
|
7
|
+
|
|
8
|
+
# Contributor Covenant Code of Conduct
|
|
9
|
+
|
|
10
|
+
## Our Pledge
|
|
11
|
+
|
|
12
|
+
We as members, contributors, and leaders pledge to make participation in our
|
|
13
|
+
community a harassment-free experience for everyone, regardless of age, body
|
|
14
|
+
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
|
15
|
+
identity and expression, level of experience, education, socio-economic status,
|
|
16
|
+
nationality, personal appearance, race, caste, color, religion, or sexual
|
|
17
|
+
identity and orientation.
|
|
18
|
+
|
|
19
|
+
We pledge to act and interact in ways that contribute to an open, welcoming,
|
|
20
|
+
diverse, inclusive, and healthy community.
|
|
21
|
+
|
|
22
|
+
## Our Standards
|
|
23
|
+
|
|
24
|
+
Examples of behavior that contributes to a positive environment:
|
|
25
|
+
|
|
26
|
+
- Using welcoming and inclusive language
|
|
27
|
+
- Being respectful of differing viewpoints and experiences
|
|
28
|
+
- Gracefully accepting constructive criticism
|
|
29
|
+
- Focusing on what is best for the community
|
|
30
|
+
- Showing empathy towards other community members
|
|
31
|
+
|
|
32
|
+
Examples of unacceptable behavior:
|
|
33
|
+
|
|
34
|
+
- The use of sexualized language or imagery, and sexual attention or advances of any kind
|
|
35
|
+
- Trolling, insulting or derogatory comments, and personal or political attacks
|
|
36
|
+
- Public or private harassment
|
|
37
|
+
- Publishing others' private information without explicit permission
|
|
38
|
+
- Other conduct which could reasonably be considered inappropriate in a professional setting
|
|
39
|
+
|
|
40
|
+
## Enforcement
|
|
41
|
+
|
|
42
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
43
|
+
reported to the project team at **security@mushimushi.dev**.
|
|
44
|
+
|
|
45
|
+
All complaints will be reviewed and investigated promptly and fairly.
|
|
46
|
+
|
|
47
|
+
## Attribution
|
|
48
|
+
|
|
49
|
+
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/),
|
|
50
|
+
version 2.1, available at
|
|
51
|
+
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
AUTO-SYNCED from repo root by scripts/sync-community-files.mjs.
|
|
3
|
+
Do not edit here — edit the canonical file at the repository root and
|
|
4
|
+
re-run `node scripts/sync-community-files.mjs` (pre-commit hook does this
|
|
5
|
+
automatically).
|
|
6
|
+
-->
|
|
7
|
+
|
|
8
|
+
# Contributing to Mushi Mushi
|
|
9
|
+
|
|
10
|
+
Thanks for wanting to help. Here's everything you need to get started.
|
|
11
|
+
|
|
12
|
+
## Prerequisites
|
|
13
|
+
|
|
14
|
+
- **Node.js >= 22** (see `.node-version`)
|
|
15
|
+
- **pnpm >= 10** — install with `corepack enable`
|
|
16
|
+
|
|
17
|
+
## Setup
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
git clone https://github.com/kensaurus/mushi-mushi.git
|
|
21
|
+
cd mushi-mushi
|
|
22
|
+
pnpm install
|
|
23
|
+
pnpm build
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Development
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
pnpm dev # Start all dev servers (admin on :6464)
|
|
30
|
+
pnpm test # Run Vitest across all packages
|
|
31
|
+
pnpm typecheck # TypeScript checks
|
|
32
|
+
pnpm lint # ESLint
|
|
33
|
+
pnpm format # Prettier
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Working on a single package
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
cd packages/core
|
|
40
|
+
pnpm dev # Watch mode
|
|
41
|
+
pnpm test # Tests for this package only
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Project Structure
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
packages/
|
|
48
|
+
core/ Types, API client, offline queue (MIT)
|
|
49
|
+
web/ Browser SDK — widget, capture (MIT)
|
|
50
|
+
react/ React bindings (MIT)
|
|
51
|
+
vue/ Vue 3 plugin (MIT)
|
|
52
|
+
svelte/ Svelte SDK (MIT)
|
|
53
|
+
angular/ Angular SDK (MIT)
|
|
54
|
+
react-native/ React Native SDK (MIT)
|
|
55
|
+
cli/ CLI tool (MIT)
|
|
56
|
+
mcp/ MCP server for coding agents (MIT)
|
|
57
|
+
server/ Supabase Edge Functions (BSL)
|
|
58
|
+
agents/ Agentic fix pipeline (BSL)
|
|
59
|
+
verify/ Fix verification (BSL)
|
|
60
|
+
apps/
|
|
61
|
+
admin/ Admin dashboard (React + Tailwind)
|
|
62
|
+
docs/ Documentation site (planned)
|
|
63
|
+
tooling/
|
|
64
|
+
eslint-config/ Shared ESLint flat config
|
|
65
|
+
tsconfig/ Shared TypeScript configs
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Making Changes
|
|
69
|
+
|
|
70
|
+
1. Create a feature branch from `master`
|
|
71
|
+
2. Make your changes
|
|
72
|
+
3. Add tests for new functionality
|
|
73
|
+
4. Run `pnpm typecheck && pnpm lint && pnpm test` to verify
|
|
74
|
+
5. Create a changeset if your change affects published packages:
|
|
75
|
+
```bash
|
|
76
|
+
pnpm changeset
|
|
77
|
+
```
|
|
78
|
+
6. Open a pull request
|
|
79
|
+
|
|
80
|
+
## Changesets
|
|
81
|
+
|
|
82
|
+
We use [Changesets](https://github.com/changesets/changesets) for versioning. If your PR modifies a published package (`core`, `web`, `react`, `vue`, `svelte`, `angular`, `react-native`, `cli`, `mcp`), add a changeset:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
pnpm changeset
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Select the affected packages, the semver bump type, and write a summary. The changeset file gets committed with your PR.
|
|
89
|
+
|
|
90
|
+
## Code Style
|
|
91
|
+
|
|
92
|
+
- **TypeScript strict mode** — no `any` unless absolutely necessary
|
|
93
|
+
- **Prettier** formats everything — run `pnpm format` before committing
|
|
94
|
+
- **ESLint** catches bugs — `pnpm lint` must pass
|
|
95
|
+
- **No default exports** in library packages — use named exports
|
|
96
|
+
- **Dual ESM/CJS** builds via tsup for all SDK packages
|
|
97
|
+
|
|
98
|
+
## Commit Messages
|
|
99
|
+
|
|
100
|
+
Use conventional commits:
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
feat(core): add batch report submission
|
|
104
|
+
fix(web): prevent widget from opening during screenshot
|
|
105
|
+
docs(react): update provider usage example
|
|
106
|
+
chore: bump dependencies
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Tests
|
|
110
|
+
|
|
111
|
+
- **Framework:** Vitest
|
|
112
|
+
- **Location:** Co-located with source (`src/foo.test.ts`)
|
|
113
|
+
- **Coverage:** Required for `core`, `web`, `react` — encouraged for all packages
|
|
114
|
+
|
|
115
|
+
## License
|
|
116
|
+
|
|
117
|
+
- SDK packages are MIT — your contributions will be MIT-licensed
|
|
118
|
+
- Server/agents/verify are BSL 1.1 — contributions to those packages fall under BSL
|
|
119
|
+
|
|
120
|
+
## Questions?
|
|
121
|
+
|
|
122
|
+
Open an issue or start a discussion. We're happy to help.
|
package/README.md
CHANGED
|
@@ -10,9 +10,17 @@ yarn create mushi-mushi
|
|
|
10
10
|
bun create mushi-mushi
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
## What it does
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
1. **Detects your framework** — Next.js, Nuxt, SvelteKit, Angular, Expo, Capacitor, plain React/Vue/Svelte, or vanilla JS.
|
|
16
|
+
2. **Picks the right SDK** — `@mushi-mushi/react`, `@mushi-mushi/vue`, `@mushi-mushi/svelte`, `@mushi-mushi/angular`, `@mushi-mushi/react-native`, `@mushi-mushi/capacitor`, or `@mushi-mushi/web`.
|
|
17
|
+
3. **Detects your package manager** — uses `npm`, `pnpm`, `yarn`, or `bun` based on your lockfile.
|
|
18
|
+
4. **Writes env vars** — `MUSHI_PROJECT_ID` and `MUSHI_API_KEY` land in `.env.local` with the right framework prefix (`NEXT_PUBLIC_`, `NUXT_PUBLIC_`, `VITE_`).
|
|
19
|
+
5. **Warns about `.gitignore`** — won't ship secrets if your env file isn't ignored.
|
|
20
|
+
6. **Prints the provider snippet** — framework-specific code to paste in.
|
|
21
|
+
7. **Sends a test report** (opt-in) — closes the loop so you see your first classified bug immediately.
|
|
22
|
+
|
|
23
|
+
This is a **scaffold for existing projects** — it does not generate a new app from scratch. Run it from the project root of an existing app.
|
|
16
24
|
|
|
17
25
|
## Flags
|
|
18
26
|
|
|
@@ -20,22 +28,42 @@ This is a **scaffold for existing projects** — it does not generate a new app
|
|
|
20
28
|
npm create mushi-mushi -- --framework next
|
|
21
29
|
npm create mushi-mushi -- --project-id proj_xxx --api-key mushi_xxx
|
|
22
30
|
npm create mushi-mushi -- --skip-install
|
|
31
|
+
npm create mushi-mushi -- --skip-test-report
|
|
32
|
+
npm create mushi-mushi -- --cwd apps/web
|
|
33
|
+
npm create mushi-mushi -- --endpoint https://mushi.your-company.com
|
|
23
34
|
npm create mushi-mushi -- -y
|
|
24
35
|
npm create mushi-mushi -- --help
|
|
25
36
|
```
|
|
26
37
|
|
|
27
|
-
|
|
38
|
+
> `npm create` and `pnpm create` need the `--` separator before flags. Yarn 1 and Bun do not.
|
|
39
|
+
|
|
40
|
+
## Equivalent commands
|
|
28
41
|
|
|
29
42
|
```bash
|
|
30
|
-
npx mushi-mushi #
|
|
31
|
-
npx @mushi-mushi/cli init #
|
|
43
|
+
npx mushi-mushi # shorter
|
|
44
|
+
npx @mushi-mushi/cli init # scoped name
|
|
32
45
|
```
|
|
33
46
|
|
|
47
|
+
## Troubleshooting
|
|
48
|
+
|
|
49
|
+
- **Wrong framework detected?** Pass `--framework <id>` explicitly. Valid IDs: `next, react, vue, nuxt, svelte, sveltekit, angular, expo, react-native, capacitor, vanilla`.
|
|
50
|
+
- **Running in a monorepo?** `cd` into the package you want Mushi in first, or pass `--cwd apps/web`.
|
|
51
|
+
- **`npx` cache serving an old version?** Run `npm cache clean --force` or `npx mushi-mushi@latest`.
|
|
52
|
+
- **Non-interactive (CI)?** Pass all of `--yes`, `--project-id`, and `--api-key`. The wizard exits with a clear error otherwise.
|
|
53
|
+
- **Key pasted with quotes/whitespace?** The wizard strips them, but still validates against `mushi_[A-Za-z0-9_-]{10,}` / `proj_[A-Za-z0-9_-]{10,}`.
|
|
54
|
+
|
|
55
|
+
## Security
|
|
56
|
+
|
|
57
|
+
- Credentials accepted via `--api-key` flag leak into `ps -ef`. Prefer the interactive prompt on dev machines; on CI, pass them via the environment and an explicit `--api-key "$MUSHI_API_KEY"` at the boundary.
|
|
58
|
+
- The `~/.mushirc` credentials cache is written with mode `0o600` (owner read/write only) on Unix.
|
|
59
|
+
- All env-file writes strip CR/LF/NUL from secrets to prevent accidental `.env` injection.
|
|
60
|
+
|
|
34
61
|
## Links
|
|
35
62
|
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
63
|
+
- [Console](https://kensaur.us/mushi-mushi/)
|
|
64
|
+
- [GitHub](https://github.com/kensaurus/mushi-mushi)
|
|
65
|
+
- [Docs](https://github.com/kensaurus/mushi-mushi#readme)
|
|
66
|
+
- [Report a bug](https://github.com/kensaurus/mushi-mushi/issues)
|
|
39
67
|
|
|
40
68
|
## License
|
|
41
69
|
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
AUTO-SYNCED from repo root by scripts/sync-community-files.mjs.
|
|
3
|
+
Do not edit here — edit the canonical file at the repository root and
|
|
4
|
+
re-run `node scripts/sync-community-files.mjs` (pre-commit hook does this
|
|
5
|
+
automatically).
|
|
6
|
+
-->
|
|
7
|
+
|
|
8
|
+
# Security Policy
|
|
9
|
+
|
|
10
|
+
## Supported Versions
|
|
11
|
+
|
|
12
|
+
| Version | Supported |
|
|
13
|
+
|---------|-----------|
|
|
14
|
+
| 0.x | Yes |
|
|
15
|
+
|
|
16
|
+
## Reporting a Vulnerability
|
|
17
|
+
|
|
18
|
+
If you discover a security vulnerability, please report it responsibly.
|
|
19
|
+
|
|
20
|
+
**Do NOT open a public GitHub issue.**
|
|
21
|
+
|
|
22
|
+
Instead, email: **security@mushimushi.dev**
|
|
23
|
+
|
|
24
|
+
Include:
|
|
25
|
+
- Description of the vulnerability
|
|
26
|
+
- Steps to reproduce
|
|
27
|
+
- Impact assessment
|
|
28
|
+
- Suggested fix (if any)
|
|
29
|
+
|
|
30
|
+
We will acknowledge receipt within 48 hours and aim to release a patch within 7 days for critical issues.
|
|
31
|
+
|
|
32
|
+
## Scope
|
|
33
|
+
|
|
34
|
+
- All `@mushi-mushi/*` npm packages
|
|
35
|
+
- Supabase Edge Functions (server-side)
|
|
36
|
+
- Admin console application
|
|
37
|
+
- CLI tool
|
|
38
|
+
|
|
39
|
+
## Out of Scope
|
|
40
|
+
|
|
41
|
+
- Self-hosted deployments configured by the user
|
|
42
|
+
- Third-party integrations (Jira, Linear, PagerDuty)
|
|
43
|
+
- Vulnerabilities requiring physical access
|
|
44
|
+
|
|
45
|
+
## Security Best Practices for Users
|
|
46
|
+
|
|
47
|
+
- **Never commit your API keys** — use environment variables
|
|
48
|
+
- **Rotate API keys** regularly via the admin console
|
|
49
|
+
- **Enable SSO** for team projects (Enterprise tier)
|
|
50
|
+
- **Review audit logs** periodically for suspicious activity
|
package/dist/index.js
CHANGED
|
@@ -2,44 +2,46 @@
|
|
|
2
2
|
|
|
3
3
|
// src/index.ts
|
|
4
4
|
import { runInit } from "@mushi-mushi/cli/init";
|
|
5
|
+
import { FRAMEWORK_IDS, isFrameworkId } from "@mushi-mushi/cli/detect";
|
|
6
|
+
var VERSION = true ? "0.5.1" : "0.0.0-dev";
|
|
7
|
+
var MIN_NODE_MAJOR = 18;
|
|
8
|
+
var ISSUES_URL = "https://github.com/kensaurus/mushi-mushi/issues";
|
|
5
9
|
var HELP = `create-mushi-mushi \u2014 add Mushi Mushi to your existing project
|
|
6
10
|
|
|
7
11
|
Usage:
|
|
8
12
|
npm create mushi-mushi run the setup wizard
|
|
9
13
|
npm create mushi-mushi -- --help show all flags
|
|
10
14
|
|
|
15
|
+
Note: \`npm create\` requires the \`--\` separator before flags.
|
|
16
|
+
\`yarn create mushi-mushi --help\` works without it on Yarn 1.
|
|
17
|
+
\`pnpm create mushi-mushi -- --help\` mirrors npm.
|
|
18
|
+
\`bun create mushi-mushi --help\` works without it.
|
|
19
|
+
|
|
11
20
|
Flags (forwarded to the wizard):
|
|
12
21
|
--project-id <id> skip the project ID prompt
|
|
13
|
-
--api-key <key> skip the API key prompt
|
|
14
|
-
--framework <id> force a framework (
|
|
15
|
-
svelte, sveltekit, angular, expo,
|
|
16
|
-
react-native, capacitor, vanilla)
|
|
22
|
+
--api-key <key> skip the API key prompt (CI only)
|
|
23
|
+
--framework <id> force a framework (${FRAMEWORK_IDS.join(", ")})
|
|
17
24
|
--skip-install print the install command instead of running it
|
|
25
|
+
--skip-test-report don't offer to send a test report at the end
|
|
26
|
+
--cwd <path> run in a different directory
|
|
27
|
+
--endpoint <url> override the Mushi API endpoint (self-hosted)
|
|
18
28
|
-y, --yes accept the detected framework without prompting
|
|
29
|
+
-v, --version print the version and exit
|
|
19
30
|
|
|
20
31
|
Docs: https://github.com/kensaurus/mushi-mushi
|
|
21
32
|
Console: https://kensaur.us/mushi-mushi/`;
|
|
22
|
-
var VALID_FRAMEWORKS = [
|
|
23
|
-
"next",
|
|
24
|
-
"react",
|
|
25
|
-
"vue",
|
|
26
|
-
"nuxt",
|
|
27
|
-
"svelte",
|
|
28
|
-
"sveltekit",
|
|
29
|
-
"angular",
|
|
30
|
-
"expo",
|
|
31
|
-
"react-native",
|
|
32
|
-
"capacitor",
|
|
33
|
-
"vanilla"
|
|
34
|
-
];
|
|
35
33
|
function parseArgs(args) {
|
|
36
|
-
const out = { showHelp: false };
|
|
34
|
+
const out = { showHelp: false, showVersion: false };
|
|
37
35
|
for (let i = 0; i < args.length; i++) {
|
|
38
36
|
const a = args[i];
|
|
39
37
|
if (a === "-h" || a === "--help") {
|
|
40
38
|
out.showHelp = true;
|
|
41
39
|
continue;
|
|
42
40
|
}
|
|
41
|
+
if (a === "-v" || a === "--version") {
|
|
42
|
+
out.showVersion = true;
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
43
45
|
if (a === "-y" || a === "--yes") {
|
|
44
46
|
out.yes = true;
|
|
45
47
|
continue;
|
|
@@ -48,6 +50,10 @@ function parseArgs(args) {
|
|
|
48
50
|
out.skipInstall = true;
|
|
49
51
|
continue;
|
|
50
52
|
}
|
|
53
|
+
if (a === "--skip-test-report") {
|
|
54
|
+
out.skipTestReport = true;
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
51
57
|
if (a === "--project-id") {
|
|
52
58
|
out.projectId = args[++i];
|
|
53
59
|
continue;
|
|
@@ -56,10 +62,18 @@ function parseArgs(args) {
|
|
|
56
62
|
out.apiKey = args[++i];
|
|
57
63
|
continue;
|
|
58
64
|
}
|
|
65
|
+
if (a === "--cwd") {
|
|
66
|
+
out.cwd = args[++i];
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
if (a === "--endpoint") {
|
|
70
|
+
out.endpoint = args[++i];
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
59
73
|
if (a === "--framework") {
|
|
60
74
|
const fw = args[++i];
|
|
61
|
-
if (!
|
|
62
|
-
throw new Error(`Unknown framework: ${fw}. Valid: ${
|
|
75
|
+
if (!isFrameworkId(fw)) {
|
|
76
|
+
throw new Error(`Unknown framework: ${fw}. Valid: ${FRAMEWORK_IDS.join(", ")}`);
|
|
63
77
|
}
|
|
64
78
|
out.framework = fw;
|
|
65
79
|
continue;
|
|
@@ -70,16 +84,33 @@ function parseArgs(args) {
|
|
|
70
84
|
}
|
|
71
85
|
return out;
|
|
72
86
|
}
|
|
87
|
+
function assertNodeVersion() {
|
|
88
|
+
const major = Number(process.versions.node.split(".")[0]);
|
|
89
|
+
if (!Number.isFinite(major) || major < MIN_NODE_MAJOR) {
|
|
90
|
+
process.stderr.write(
|
|
91
|
+
`create-mushi-mushi requires Node.js ${MIN_NODE_MAJOR} or newer. You are on ${process.versions.node}.
|
|
92
|
+
Upgrade Node (https://nodejs.org/) and try again.
|
|
93
|
+
`
|
|
94
|
+
);
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
73
98
|
async function main() {
|
|
99
|
+
assertNodeVersion();
|
|
74
100
|
let parsed;
|
|
75
101
|
try {
|
|
76
102
|
parsed = parseArgs(process.argv.slice(2));
|
|
77
103
|
} catch (err) {
|
|
78
|
-
|
|
104
|
+
process.stderr.write(`${err instanceof Error ? err.message : String(err)}
|
|
105
|
+
`);
|
|
79
106
|
process.exit(1);
|
|
80
107
|
}
|
|
81
108
|
if (parsed.showHelp) {
|
|
82
|
-
|
|
109
|
+
process.stdout.write(HELP + "\n");
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (parsed.showVersion) {
|
|
113
|
+
process.stdout.write(VERSION + "\n");
|
|
83
114
|
return;
|
|
84
115
|
}
|
|
85
116
|
await runInit({
|
|
@@ -87,10 +118,22 @@ async function main() {
|
|
|
87
118
|
apiKey: parsed.apiKey,
|
|
88
119
|
framework: parsed.framework,
|
|
89
120
|
skipInstall: parsed.skipInstall,
|
|
90
|
-
yes: parsed.yes
|
|
121
|
+
yes: parsed.yes,
|
|
122
|
+
cwd: parsed.cwd,
|
|
123
|
+
endpoint: parsed.endpoint,
|
|
124
|
+
sendTestReport: parsed.skipTestReport ? false : void 0
|
|
91
125
|
});
|
|
92
126
|
}
|
|
93
127
|
main().catch((err) => {
|
|
94
|
-
|
|
128
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
129
|
+
process.stderr.write(`
|
|
130
|
+
create-mushi-mushi: ${message}
|
|
131
|
+
`);
|
|
132
|
+
if (process.env.DEBUG?.includes("mushi") && err instanceof Error && err.stack) {
|
|
133
|
+
process.stderr.write(err.stack + "\n");
|
|
134
|
+
}
|
|
135
|
+
process.stderr.write(`
|
|
136
|
+
If this is a bug, please report it at ${ISSUES_URL}
|
|
137
|
+
`);
|
|
95
138
|
process.exit(1);
|
|
96
139
|
});
|
package/package.json
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-mushi-mushi",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Run `npm create mushi-mushi` to add the Mushi Mushi bug-reporting SDK to your existing project — the wizard auto-detects your framework (React, Vue, Svelte, Angular, React Native, Expo, Capacitor) and installs the right package.",
|
|
6
6
|
"bin": {
|
|
7
7
|
"create-mushi-mushi": "./dist/index.js"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@mushi-mushi/cli": "^0.
|
|
10
|
+
"@mushi-mushi/cli": "^0.5.1"
|
|
11
11
|
},
|
|
12
12
|
"devDependencies": {
|
|
13
13
|
"@types/node": "^22.15.3",
|
|
14
14
|
"eslint": "^10.2.0",
|
|
15
15
|
"tsup": "^8.5.1",
|
|
16
16
|
"typescript": "^6.0.2",
|
|
17
|
+
"vitest": "^4.1.4",
|
|
17
18
|
"@mushi-mushi/eslint-config": "0.0.0"
|
|
18
19
|
},
|
|
19
20
|
"author": "Kenji Sakuramoto",
|
|
@@ -26,13 +27,21 @@
|
|
|
26
27
|
"bugs": {
|
|
27
28
|
"url": "https://github.com/kensaurus/mushi-mushi/issues"
|
|
28
29
|
},
|
|
30
|
+
"funding": {
|
|
31
|
+
"type": "github",
|
|
32
|
+
"url": "https://github.com/sponsors/kensaurus"
|
|
33
|
+
},
|
|
29
34
|
"publishConfig": {
|
|
30
|
-
"access": "public"
|
|
35
|
+
"access": "public",
|
|
36
|
+
"provenance": true
|
|
31
37
|
},
|
|
32
38
|
"files": [
|
|
33
39
|
"dist",
|
|
34
40
|
"README.md",
|
|
35
|
-
"LICENSE"
|
|
41
|
+
"LICENSE",
|
|
42
|
+
"CONTRIBUTING.md",
|
|
43
|
+
"CODE_OF_CONDUCT.md",
|
|
44
|
+
"SECURITY.md"
|
|
36
45
|
],
|
|
37
46
|
"sideEffects": false,
|
|
38
47
|
"keywords": [
|
|
@@ -66,6 +75,7 @@
|
|
|
66
75
|
"scripts": {
|
|
67
76
|
"build": "tsup",
|
|
68
77
|
"lint": "eslint src/",
|
|
78
|
+
"test": "vitest run",
|
|
69
79
|
"typecheck": "tsc --noEmit"
|
|
70
80
|
}
|
|
71
81
|
}
|