mb-run 1.0.3 → 1.0.4
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/CHANGELOG.md +14 -0
- package/README.md +7 -1
- package/dist/eslint.js +1 -1
- package/dist/oxfmt.js +1 -1
- package/dist/oxlint.js +1 -1
- package/dist/prettier.js +1 -1
- package/dist/test.js +2 -2
- package/dist/upgrade.js +30 -3
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -2
- package/{vendor → template}/.agents/rules/testing.instructions.md +1 -1
- package/{vendor → template}/.agents-plugin/rules/testing.instructions.md +1 -1
- package/{vendor → template}/.devcontainer-plugin/README.md +1 -1
- package/{vendor → template}/.github/workflows/build.yml +1 -1
- package/{vendor → template}/.github/workflows/codecov.yml +1 -1
- package/{vendor → template}/.github/workflows/publish.yml +2 -2
- package/{vendor → template}/.github-plugin/workflows/build.yml +1 -1
- package/{vendor → template}/.github-plugin/workflows/codecov.yml +1 -1
- package/{vendor → template}/.github-plugin/workflows/publish.yml +2 -2
- package/{vendor → template}/.gitignore.txt +1 -5
- package/{vendor → template}/.oxfmtrc.root.json +5 -10
- package/{vendor → template}/.oxlintrc.root.json +5 -10
- package/{vendor → template}/.prettierignore +1 -1
- package/{vendor → template}/.vscode/settings.json +2 -1
- package/{vendor → template}/bunfig.toml +2 -2
- package/{vendor → template}/eslint.config.js +1 -1
- package/{vendor → template}/jest.config.js +2 -2
- package/{vendor/vite.config.ts → template/vitest.config.ts} +8 -4
- /package/{vendor → template}/.agents/README.md +0 -0
- /package/{vendor → template}/.agents/skills/verify-agent-context/SKILL.md +0 -0
- /package/{vendor → template}/.agents-plugin/README.md +0 -0
- /package/{vendor → template}/.agents-plugin/rules/chip-tests.instructions.md +0 -0
- /package/{vendor → template}/.agents-plugin/rules/matterbridge.instructions.md +0 -0
- /package/{vendor → template}/.agents-plugin/rules/plugin-frontend.instructions.md +0 -0
- /package/{vendor → template}/.agents-plugin/skills/verify-agent-context/SKILL.md +0 -0
- /package/{vendor → template}/.antigravity/settings.json +0 -0
- /package/{vendor → template}/.claude/rules/testing/testing.instructions.md +0 -0
- /package/{vendor → template}/.claude/settings.json +0 -0
- /package/{vendor → template}/.claude/skills/verify-agent-context/SKILL.md +0 -0
- /package/{vendor → template}/.claude-plugin/rules/chip-tests/chip-tests.instructions.md +0 -0
- /package/{vendor → template}/.claude-plugin/rules/matterbridge/matterbridge.instructions.md +0 -0
- /package/{vendor → template}/.claude-plugin/rules/plugin-frontend/plugin-frontend.instructions.md +0 -0
- /package/{vendor → template}/.claude-plugin/rules/testing/testing.instructions.md +0 -0
- /package/{vendor → template}/.claude-plugin/settings.json +0 -0
- /package/{vendor → template}/.claude-plugin/skills/verify-agent-context/SKILL.md +0 -0
- /package/{vendor → template}/.codex/config.toml +0 -0
- /package/{vendor → template}/.codex/rules/default.rules +0 -0
- /package/{vendor → template}/.devcontainer/README.md +0 -0
- /package/{vendor → template}/.devcontainer/bun/devcontainer.json +0 -0
- /package/{vendor → template}/.devcontainer/node/devcontainer.json +0 -0
- /package/{vendor → template}/.devcontainer-plugin/bun/devcontainer.json +0 -0
- /package/{vendor → template}/.devcontainer-plugin/node/devcontainer.json +0 -0
- /package/{vendor → template}/.gitattributes +0 -0
- /package/{vendor → template}/.github/FUNDING.yml +0 -0
- /package/{vendor → template}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- /package/{vendor → template}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- /package/{vendor → template}/.github/commit-message-instructions.md +0 -0
- /package/{vendor → template}/.github/copilot-instructions.md +0 -0
- /package/{vendor → template}/.github/instructions/testing/testing.instructions.md +0 -0
- /package/{vendor → template}/.github/skills/verify-agent-context/SKILL.md +0 -0
- /package/{vendor → template}/.github/workflows/codeql.yml +0 -0
- /package/{vendor → template}/.github-plugin/FUNDING.yml +0 -0
- /package/{vendor → template}/.github-plugin/ISSUE_TEMPLATE/bug_report.md +0 -0
- /package/{vendor → template}/.github-plugin/ISSUE_TEMPLATE/feature_request.md +0 -0
- /package/{vendor → template}/.github-plugin/commit-message-instructions.md +0 -0
- /package/{vendor → template}/.github-plugin/copilot-instructions.md +0 -0
- /package/{vendor → template}/.github-plugin/instructions/chip-tests/chip-tests.instructions.md +0 -0
- /package/{vendor → template}/.github-plugin/instructions/matterbridge/matterbridge.instructions.md +0 -0
- /package/{vendor → template}/.github-plugin/instructions/plugin-frontend/plugin-frontend.instructions.md +0 -0
- /package/{vendor → template}/.github-plugin/instructions/testing/testing.instructions.md +0 -0
- /package/{vendor → template}/.github-plugin/skills/verify-agent-context/SKILL.md +0 -0
- /package/{vendor → template}/.github-plugin/workflows/chip-tests.yml +0 -0
- /package/{vendor → template}/.github-plugin/workflows/codeql.yml +0 -0
- /package/{vendor → template}/.vscode/extensions.json +0 -0
- /package/{vendor → template}/.vscode/tasks.json +0 -0
- /package/{vendor → template}/AGENTS.md +0 -0
- /package/{vendor → template}/AGENTS.plugin.md +0 -0
- /package/{vendor → template}/Branch protection.json +0 -0
- /package/{vendor → template}/CHANGELOG.md +0 -0
- /package/{vendor → template}/CLAUDE.md +0 -0
- /package/{vendor → template}/CODEOWNERS +0 -0
- /package/{vendor → template}/CODE_OF_CONDUCT.md +0 -0
- /package/{vendor → template}/CONTRIBUTING.md +0 -0
- /package/{vendor → template}/GEMINI.md +0 -0
- /package/{vendor → template}/LICENSE +0 -0
- /package/{vendor → template}/README.md +0 -0
- /package/{vendor → template}/STYLEGUIDE.md +0 -0
- /package/{vendor → template}/frontend/src/.oxfmtrc.json +0 -0
- /package/{vendor → template}/frontend/src/.oxlintrc.json +0 -0
- /package/{vendor → template}/frontend/src/index.html +0 -0
- /package/{vendor → template}/frontend/src/package.json +0 -0
- /package/{vendor → template}/frontend/src/src/App.tsx +0 -0
- /package/{vendor → template}/frontend/src/src/assets/matterbridge.svg +0 -0
- /package/{vendor → template}/frontend/src/src/main.tsx +0 -0
- /package/{vendor → template}/frontend/src/src/theme.ts +0 -0
- /package/{vendor → template}/frontend/src/tsconfig.json +0 -0
- /package/{vendor → template}/frontend/src/vite.config.ts +0 -0
- /package/{vendor → template}/matterbridge.svg +0 -0
- /package/{vendor → template}/prettier.config.js +0 -0
- /package/{vendor → template}/scripts/bun-bundle.mjs +0 -0
- /package/{vendor → template}/scripts/clean.mjs +0 -0
- /package/{vendor → template}/scripts/create-release.mjs +0 -0
- /package/{vendor → template}/scripts/deep-clean.mjs +0 -0
- /package/{vendor → template}/scripts/downloads.mjs +0 -0
- /package/{vendor → template}/scripts/esbuild.mjs +0 -0
- /package/{vendor → template}/scripts/git-status.mjs +0 -0
- /package/{vendor → template}/scripts/git-sync-dev.mjs +0 -0
- /package/{vendor → template}/scripts/prepublish-clean.mjs +0 -0
- /package/{vendor → template}/scripts/prune-releases.mjs +0 -0
- /package/{vendor → template}/scripts/prune-tags.mjs +0 -0
- /package/{vendor → template}/scripts/remove-workflows.mjs +0 -0
- /package/{vendor → template}/scripts/run-chip-tests.mjs +0 -0
- /package/{vendor → template}/scripts/version.mjs +0 -0
- /package/{vendor → template}/tsconfig.base.json +0 -0
- /package/{vendor → template}/tsconfig.build.json +0 -0
- /package/{vendor → template}/tsconfig.build.production.json +0 -0
- /package/{vendor → template}/tsconfig.build.production.library.json +0 -0
- /package/{vendor → template}/tsconfig.build.production.monorepo.json +0 -0
- /package/{vendor → template}/tsconfig.jest.json +0 -0
- /package/{vendor → template}/tsconfig.json +0 -0
- /package/{vendor → template}/tsconfig.vitest.json +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -23,6 +23,20 @@ If you like this project and find it useful, please consider giving it a star on
|
|
|
23
23
|
|
|
24
24
|
<a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="120"></a>
|
|
25
25
|
|
|
26
|
+
## [1.0.4] - 2026-10-03
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- [upgrade]: Replace the legacy `vite.config.ts` with `vitest.config.ts` and update test-runner detection.
|
|
31
|
+
- [template]: Rename the bundled vendor directory to template and update runtime paths, package files and exclusions.
|
|
32
|
+
- [upgrade]: Merge local `.oxfmtignore` and `.oxlintignore` patterns into the generated configurations.
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
|
|
36
|
+
- [devcontainer]: Remove the `apps/frontend/node_modules` volume from the plugin `devcontainer.json` files (node and bun) when the plugin has no `apps/frontend/package.json`, so Docker no longer creates an empty `apps/frontend` in the workspace.
|
|
37
|
+
|
|
38
|
+
<a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a>
|
|
39
|
+
|
|
26
40
|
## [1.0.3] - 2026-10-02
|
|
27
41
|
|
|
28
42
|
### Added
|
package/README.md
CHANGED
|
@@ -75,7 +75,7 @@ Multiple flags can be combined. They are always executed in this fixed order reg
|
|
|
75
75
|
| `--build --production` | Compiles for production. Prefers `tsconfig.build.production.json`, falls back to `tsconfig.build.json`, then `tsconfig.json`. |
|
|
76
76
|
| `--typecheck` | Type-checks with `tsc` using the root `tsconfig.json` and `--noEmit`. |
|
|
77
77
|
| `--watch` | Runs `tsc` in watch mode using the build tsconfig. |
|
|
78
|
-
| `--test [verbose\|watch\|coverage...]` | Runs each eligible test runner: Jest requires `jest.config.js` and its local binary; Vitest requires `
|
|
78
|
+
| `--test [verbose\|watch\|coverage...]` | Runs each eligible test runner: Jest requires `jest.config.js` and its local binary; Vitest requires `vitest.config.ts` and its local binary. When both qualify, Jest runs first, then Vitest. The optional keywords enable verbose output, watch mode, and coverage. Jest receives `NODE_OPTIONS="--experimental-vm-modules --no-warnings"` automatically. |
|
|
79
79
|
| `--format` | Formats with `oxfmt`, falling back to `prettier`. |
|
|
80
80
|
| `--format --check` | Checks formatting instead of writing changes (combine `--format` with `--check`). |
|
|
81
81
|
| `--lint` | Lints with `oxlint`, falling back to `eslint`. |
|
|
@@ -90,6 +90,12 @@ Multiple flags can be combined. They are always executed in this fixed order reg
|
|
|
90
90
|
| `--version`, `-v` | Prints the mb-run version and exits without changing any file. Use `--set-version` to update the package version. |
|
|
91
91
|
| `--help`, `-h` | Prints usage text. |
|
|
92
92
|
|
|
93
|
+
Bundled scaffolding and fallback lint/format configurations are shipped in the `template/` directory.
|
|
94
|
+
|
|
95
|
+
`--upgrade vitest` copies `vitest.config.ts` and removes the legacy `vite.config.ts`.
|
|
96
|
+
|
|
97
|
+
`--upgrade` inserts the contents of local `.oxfmtignore` and `.oxlintignore` files verbatim after the final shared ignore pattern in the corresponding configuration. These files should contain JSON array entries.
|
|
98
|
+
|
|
93
99
|
## Version tags
|
|
94
100
|
|
|
95
101
|
The `--set-version` flag accepts the following prerelease tags:
|
package/dist/eslint.js
CHANGED
|
@@ -10,7 +10,7 @@ export async function runEsLint(opts) {
|
|
|
10
10
|
}
|
|
11
11
|
else {
|
|
12
12
|
const selfDir = path.dirname(url.fileURLToPath(import.meta.url));
|
|
13
|
-
configPath = path.join(selfDir, '..', '
|
|
13
|
+
configPath = path.join(selfDir, '..', 'template', 'eslint.config.js');
|
|
14
14
|
}
|
|
15
15
|
await runBin('eslint', ['--config', configPath, '--cache', '--cache-location', '.cache/.eslintcache', ...(opts.fix ? ['--fix'] : []), '--max-warnings=0', '.'], {
|
|
16
16
|
rootDir: opts.rootDir,
|
package/dist/oxfmt.js
CHANGED
|
@@ -10,7 +10,7 @@ export async function runOxFormat(opts) {
|
|
|
10
10
|
}
|
|
11
11
|
else {
|
|
12
12
|
const selfDir = path.dirname(url.fileURLToPath(import.meta.url));
|
|
13
|
-
configPath = path.join(selfDir, '..', '
|
|
13
|
+
configPath = path.join(selfDir, '..', 'template', '.oxfmtrc.root.json');
|
|
14
14
|
}
|
|
15
15
|
await runBin('oxfmt', ['-c', configPath, opts.check ? '--check' : '--write'], {
|
|
16
16
|
rootDir: opts.rootDir,
|
package/dist/oxlint.js
CHANGED
|
@@ -10,7 +10,7 @@ export async function runOxLint(opts) {
|
|
|
10
10
|
}
|
|
11
11
|
else {
|
|
12
12
|
const selfDir = path.dirname(url.fileURLToPath(import.meta.url));
|
|
13
|
-
configPath = path.join(selfDir, '..', '
|
|
13
|
+
configPath = path.join(selfDir, '..', 'template', '.oxlintrc.root.json');
|
|
14
14
|
}
|
|
15
15
|
await runBin('oxlint', ['-c', configPath, ...(opts.fix ? ['--fix'] : [])], {
|
|
16
16
|
rootDir: opts.rootDir,
|
package/dist/prettier.js
CHANGED
|
@@ -10,7 +10,7 @@ export async function runPrettier(opts) {
|
|
|
10
10
|
}
|
|
11
11
|
else {
|
|
12
12
|
const selfDir = path.dirname(url.fileURLToPath(import.meta.url));
|
|
13
|
-
configPath = path.join(selfDir, '..', '
|
|
13
|
+
configPath = path.join(selfDir, '..', 'template', 'prettier.config.js');
|
|
14
14
|
}
|
|
15
15
|
await runBin('prettier', ['--config', configPath, '--log-level=silent', '--cache', '--cache-location', '.cache/.prettiercache', opts.check ? '--check' : '--write', '.'], {
|
|
16
16
|
rootDir: opts.rootDir,
|
package/dist/test.js
CHANGED
|
@@ -7,14 +7,14 @@ import { runVitest } from './vitest.js';
|
|
|
7
7
|
export async function runTests(opts) {
|
|
8
8
|
const [hasJestConfig, hasVitestConfig, hasJestBin, hasVitestBin] = await Promise.all([
|
|
9
9
|
fileExists(path.join(opts.rootDir, 'jest.config.js')),
|
|
10
|
-
fileExists(path.join(opts.rootDir, '
|
|
10
|
+
fileExists(path.join(opts.rootDir, 'vitest.config.ts')),
|
|
11
11
|
binExists('jest', opts),
|
|
12
12
|
binExists('vitest', opts),
|
|
13
13
|
]);
|
|
14
14
|
const shouldRunJest = hasJestConfig && hasJestBin;
|
|
15
15
|
const shouldRunVitest = hasVitestConfig && hasVitestBin;
|
|
16
16
|
if (!shouldRunJest && !shouldRunVitest) {
|
|
17
|
-
throw new ExitError(1, 'No test runner found: install Jest with jest.config.js or Vitest with
|
|
17
|
+
throw new ExitError(1, 'No test runner found: install Jest with jest.config.js or Vitest with vitest.config.ts.');
|
|
18
18
|
}
|
|
19
19
|
if (shouldRunJest)
|
|
20
20
|
await runJest(opts);
|
package/dist/upgrade.js
CHANGED
|
@@ -9,7 +9,7 @@ import { fileExists } from './clean.js';
|
|
|
9
9
|
import { getErrorMessage } from './error.js';
|
|
10
10
|
import { isLibrary, isMonorepo, isPlugin, parsePackageJson } from './helpers.js';
|
|
11
11
|
const configDirname = path.dirname(url.fileURLToPath(import.meta.url));
|
|
12
|
-
const srcDir = path.join(configDirname, '..', '
|
|
12
|
+
const srcDir = path.join(configDirname, '..', 'template');
|
|
13
13
|
const commandFailures = [];
|
|
14
14
|
let dstDir;
|
|
15
15
|
export async function runUpgrade(opts) {
|
|
@@ -151,8 +151,13 @@ export async function runPackageJsonUpgrade(opts, pkgPath, pkgJson, isMonorepo =
|
|
|
151
151
|
}
|
|
152
152
|
if (!isWorkspace && automator?.skipDevContainer !== true) {
|
|
153
153
|
removeDirSafe(path.join(dstDir, '.devcontainer'));
|
|
154
|
-
if (isPlugin)
|
|
154
|
+
if (isPlugin) {
|
|
155
155
|
copyRecursive('.devcontainer-plugin', '.devcontainer');
|
|
156
|
+
if (!existsSync(path.join(dstDir, 'apps', 'frontend', 'package.json'))) {
|
|
157
|
+
for (const runtime of ['node', 'bun'])
|
|
158
|
+
removeFrontendMount(path.join('.devcontainer', runtime, 'devcontainer.json'));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
156
161
|
else
|
|
157
162
|
copyRecursive('.devcontainer', '.devcontainer');
|
|
158
163
|
}
|
|
@@ -209,6 +214,13 @@ export async function runPackageJsonUpgrade(opts, pkgPath, pkgJson, isMonorepo =
|
|
|
209
214
|
appendFileToFileIfExists('.gitlocalignore', '.gitignore');
|
|
210
215
|
copyRecursive('.oxlintrc.root.json', '.oxlintrc.json');
|
|
211
216
|
copyRecursive('.oxfmtrc.root.json', '.oxfmtrc.json');
|
|
217
|
+
for (const tool of ['oxlint', 'oxfmt']) {
|
|
218
|
+
const ignorePath = resolveDstPath(`.${tool}ignore`);
|
|
219
|
+
if (!existsSync(ignorePath))
|
|
220
|
+
continue;
|
|
221
|
+
const replacement = `"**/bun.lock",\n${readFileSync(ignorePath, 'utf8')}`;
|
|
222
|
+
fileReplace(`.${tool}rc.json`, '"**/bun.lock"', replacement.replaceAll('$', '$$$$'));
|
|
223
|
+
}
|
|
212
224
|
unlinkSafe('.prettierignore');
|
|
213
225
|
unlinkSafe('eslint.config.js');
|
|
214
226
|
unlinkSafe('prettier.config.js');
|
|
@@ -224,7 +236,8 @@ export async function runPackageJsonUpgrade(opts, pkgPath, pkgJson, isMonorepo =
|
|
|
224
236
|
unlinkSafe('jest.config.js');
|
|
225
237
|
}
|
|
226
238
|
if (opts.enableVitest) {
|
|
227
|
-
copyRecursive('
|
|
239
|
+
copyRecursive('vitest.config.ts', 'vitest.config.ts');
|
|
240
|
+
unlinkSafe('vite.config.ts');
|
|
228
241
|
mkDirSafe(path.join(dstDir, 'vitest'));
|
|
229
242
|
}
|
|
230
243
|
else {
|
|
@@ -233,6 +246,8 @@ export async function runPackageJsonUpgrade(opts, pkgPath, pkgJson, isMonorepo =
|
|
|
233
246
|
unlinkSafe('tsconfig.vitest.json');
|
|
234
247
|
if (!isMonorepo)
|
|
235
248
|
unlinkSafe('vite.config.ts');
|
|
249
|
+
if (!isMonorepo)
|
|
250
|
+
unlinkSafe('vitest.config.ts');
|
|
236
251
|
}
|
|
237
252
|
if (opts.enableBuntest) {
|
|
238
253
|
copyRecursive('bunfig.toml', 'bunfig.toml');
|
|
@@ -665,6 +680,18 @@ export function unlinkSafe(filePath) {
|
|
|
665
680
|
log(`${green('Deleted:')} ${path.relative(process.cwd(), resolvedPath)}`);
|
|
666
681
|
return true;
|
|
667
682
|
}
|
|
683
|
+
export function removeFrontendMount(filePath) {
|
|
684
|
+
const resolvedPath = resolveDstPath(filePath);
|
|
685
|
+
if (!existsSync(resolvedPath))
|
|
686
|
+
return false;
|
|
687
|
+
const lines = readFileSync(resolvedPath, 'utf8').split('\n');
|
|
688
|
+
const kept = lines.filter((line) => !(line.trimStart().startsWith('"source=') && line.includes('/apps/frontend/node_modules,')));
|
|
689
|
+
if (kept.length === lines.length)
|
|
690
|
+
return false;
|
|
691
|
+
writeFileSync(resolvedPath, kept.join('\n'));
|
|
692
|
+
log(`${green('Removed:')} the apps/frontend/node_modules volume from ${path.relative(process.cwd(), resolvedPath)}`);
|
|
693
|
+
return true;
|
|
694
|
+
}
|
|
668
695
|
export function removeDirSafe(dirPath) {
|
|
669
696
|
const resolvedPath = resolveDstPath(dirPath);
|
|
670
697
|
if (!existsSync(resolvedPath))
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mb-run",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "mb-run",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.4",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"cross-spawn": "7.0.6",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mb-run",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Matterbridge command line executor",
|
|
5
5
|
"author": "https://github.com/Luligu",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"files": [
|
|
62
62
|
"bin",
|
|
63
63
|
"dist",
|
|
64
|
-
"
|
|
64
|
+
"template",
|
|
65
65
|
"npm-shrinkwrap.json",
|
|
66
66
|
"CHANGELOG.md"
|
|
67
67
|
],
|
|
@@ -7,7 +7,7 @@ description: 'Testing standards for unit tests in the project v.1.0.5'
|
|
|
7
7
|
## 1. Test Framework
|
|
8
8
|
|
|
9
9
|
- Jest is available in the repository when the file `jest.config.js` exists.
|
|
10
|
-
- Vitest is available in the repository when the file `
|
|
10
|
+
- Vitest is available in the repository when the file `vitest.config.ts` exists.
|
|
11
11
|
- Bun test is available in the repository when the file `bunfig.toml` exists.
|
|
12
12
|
- Jest tests live in `test` folders. Follow the existing convention in the repository for test file placement.
|
|
13
13
|
- Vitest tests live in `vitest` folders. Follow the existing convention in the repository for test file placement.
|
|
@@ -7,7 +7,7 @@ description: 'Testing standards for unit tests in the project v.1.0.5'
|
|
|
7
7
|
## 1. Test Framework
|
|
8
8
|
|
|
9
9
|
- Jest is available in the repository when the file `jest.config.js` exists.
|
|
10
|
-
- Vitest is available in the repository when the file `
|
|
10
|
+
- Vitest is available in the repository when the file `vitest.config.ts` exists.
|
|
11
11
|
- Bun test is available in the repository when the file `bunfig.toml` exists.
|
|
12
12
|
- Jest tests live in `test` folders. Follow the existing convention in the repository for test file placement.
|
|
13
13
|
- Vitest tests live in `vitest` folders. Follow the existing convention in the repository for test file placement.
|
|
@@ -17,7 +17,7 @@ Node and Bun configurations for Matterbridge plugins, aligned with Matterbridge
|
|
|
17
17
|
- Creation prepares ownership and installs/builds Matterbridge from the dev branch into the shared runtime-specific /workspaces/matterbridge volume, then links it globally.
|
|
18
18
|
- Creation also installs plugin dependencies, links Matterbridge, builds the plugin and its optional apps/frontend, registers the plugin with Matterbridge, and checks for outdated packages.
|
|
19
19
|
- Each start installs plugin dependencies, links Matterbridge, and builds the plugin and its optional apps/frontend.
|
|
20
|
-
-
|
|
20
|
+
- Matterbridge runtime state also uses named volumes, and so do the frontend dependencies when the plugin has an apps/frontend (mb-run adds the apps/frontend/node_modules volume only then, so no empty apps/frontend is created otherwise). Port 8283 exposes the Matterbridge frontend over IPv4 and IPv6.
|
|
21
21
|
|
|
22
22
|
## Docker VMM host setup
|
|
23
23
|
|
|
@@ -56,7 +56,7 @@ jobs:
|
|
|
56
56
|
shell: bash
|
|
57
57
|
run: |
|
|
58
58
|
echo "has_jest=$(test -f jest.config.js && echo true || echo false)" >> $GITHUB_OUTPUT
|
|
59
|
-
echo "has_vitest=$(test -f
|
|
59
|
+
echo "has_vitest=$(test -f vitest.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
|
|
60
60
|
|
|
61
61
|
- name: Run Jest tests
|
|
62
62
|
if: steps.check_configs.outputs.has_jest == 'true'
|
|
@@ -46,7 +46,7 @@ jobs:
|
|
|
46
46
|
shell: bash
|
|
47
47
|
run: |
|
|
48
48
|
echo "has_jest=$(test -f jest.config.js && echo true || echo false)" >> $GITHUB_OUTPUT
|
|
49
|
-
echo "has_vitest=$(test -f
|
|
49
|
+
echo "has_vitest=$(test -f vitest.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
|
|
50
50
|
|
|
51
51
|
- name: Run Jest tests
|
|
52
52
|
if: steps.check_configs.outputs.has_jest == 'true'
|
|
@@ -60,7 +60,7 @@ jobs:
|
|
|
60
60
|
shell: bash
|
|
61
61
|
run: |
|
|
62
62
|
echo "has_jest=$(test -f jest.config.js && echo true || echo false)" >> $GITHUB_OUTPUT
|
|
63
|
-
echo "has_vitest=$(test -f
|
|
63
|
+
echo "has_vitest=$(test -f vitest.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
|
|
64
64
|
|
|
65
65
|
- name: Run Jest tests
|
|
66
66
|
if: steps.check_configs.outputs.has_jest == 'true'
|
|
@@ -147,7 +147,7 @@ jobs:
|
|
|
147
147
|
shell: bash
|
|
148
148
|
run: |
|
|
149
149
|
echo "has_jest=$(test -f jest.config.js && echo true || echo false)" >> $GITHUB_OUTPUT
|
|
150
|
-
echo "has_vitest=$(test -f
|
|
150
|
+
echo "has_vitest=$(test -f vitest.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
|
|
151
151
|
|
|
152
152
|
- name: Run Jest tests
|
|
153
153
|
if: steps.check_configs.outputs.has_jest == 'true'
|
|
@@ -112,7 +112,7 @@ jobs:
|
|
|
112
112
|
shell: bash
|
|
113
113
|
run: |
|
|
114
114
|
echo "has_jest=$(test -f jest.config.js && echo true || echo false)" >> $GITHUB_OUTPUT
|
|
115
|
-
echo "has_vitest=$(test -f
|
|
115
|
+
echo "has_vitest=$(test -f vitest.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
|
|
116
116
|
|
|
117
117
|
- name: Run Jest tests
|
|
118
118
|
if: steps.check_configs.outputs.has_jest == 'true'
|
|
@@ -99,7 +99,7 @@ jobs:
|
|
|
99
99
|
shell: bash
|
|
100
100
|
run: |
|
|
101
101
|
echo "has_jest=$(test -f jest.config.js && echo true || echo false)" >> $GITHUB_OUTPUT
|
|
102
|
-
echo "has_vitest=$(test -f
|
|
102
|
+
echo "has_vitest=$(test -f vitest.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
|
|
103
103
|
|
|
104
104
|
- name: Run Jest tests
|
|
105
105
|
if: steps.check_configs.outputs.has_jest == 'true'
|
|
@@ -112,7 +112,7 @@ jobs:
|
|
|
112
112
|
shell: bash
|
|
113
113
|
run: |
|
|
114
114
|
echo "has_jest=$(test -f jest.config.js && echo true || echo false)" >> $GITHUB_OUTPUT
|
|
115
|
-
echo "has_vitest=$(test -f
|
|
115
|
+
echo "has_vitest=$(test -f vitest.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
|
|
116
116
|
|
|
117
117
|
- name: Run Jest tests
|
|
118
118
|
if: steps.check_configs.outputs.has_jest == 'true'
|
|
@@ -263,7 +263,7 @@ jobs:
|
|
|
263
263
|
shell: bash
|
|
264
264
|
run: |
|
|
265
265
|
echo "has_jest=$(test -f jest.config.js && echo true || echo false)" >> $GITHUB_OUTPUT
|
|
266
|
-
echo "has_vitest=$(test -f
|
|
266
|
+
echo "has_vitest=$(test -f vitest.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
|
|
267
267
|
|
|
268
268
|
- name: Run Jest tests
|
|
269
269
|
if: steps.check_configs.outputs.has_jest == 'true'
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
# .gitignore 1.0.
|
|
1
|
+
# .gitignore 1.0.5
|
|
2
2
|
|
|
3
3
|
# This file specifies intentionally untracked directories and files that Git should ignore.
|
|
4
4
|
|
|
5
5
|
# Specific directories that should be ignored
|
|
6
6
|
.cache/
|
|
7
|
-
.cottontail-tmp/
|
|
8
|
-
.hutch/
|
|
9
|
-
artifacts/
|
|
10
7
|
build/
|
|
11
|
-
chip/
|
|
12
8
|
coverage/
|
|
13
9
|
dist/
|
|
14
10
|
node_modules/
|
|
@@ -1,28 +1,23 @@
|
|
|
1
|
-
// .oxfmtrc.json 1.0
|
|
1
|
+
// .oxfmtrc.json 1.1.0
|
|
2
2
|
|
|
3
3
|
// This Oxfmt configuration (shared between all matterbridge packages) is designed for a TypeScript project using ESM modules.
|
|
4
|
+
// Oxfmt respect .gitignore.
|
|
5
|
+
// Package specific directories and files that should be ignored are merged from the .oxfmtignore files in each package.
|
|
4
6
|
{
|
|
5
7
|
"$schema": "./node_modules/oxfmt/configuration_schema.json",
|
|
6
8
|
"ignorePatterns": [
|
|
7
9
|
"**/.cache/**",
|
|
8
|
-
"**/.cottontail-tmp/**",
|
|
9
10
|
"**/.git/**",
|
|
10
|
-
"**/.hutch/**",
|
|
11
11
|
"apps/**",
|
|
12
|
-
"**/artifacts/**",
|
|
13
12
|
"**/build/**",
|
|
14
|
-
"**/chip/**",
|
|
15
13
|
"**/coverage/**",
|
|
16
|
-
"docs/**",
|
|
17
14
|
"**/dist/**",
|
|
18
|
-
"**/temp/**",
|
|
19
|
-
"**/tmp/**",
|
|
20
15
|
"**/node_modules/**",
|
|
21
16
|
"**/out/**",
|
|
22
17
|
"**/screenshots/**",
|
|
23
|
-
"**/xmls/**",
|
|
24
18
|
"**/scripts/**",
|
|
25
|
-
"
|
|
19
|
+
"**/temp/**",
|
|
20
|
+
"**/tmp/**",
|
|
26
21
|
"**/package-lock.json",
|
|
27
22
|
"**/bun.lock"
|
|
28
23
|
],
|
|
@@ -1,28 +1,23 @@
|
|
|
1
|
-
// .oxlintrc.json 1.0
|
|
1
|
+
// .oxlintrc.json 1.1.0
|
|
2
2
|
|
|
3
3
|
// This Oxlint configuration (shared between all matterbridge packages) is designed for a TypeScript project using ESM modules.
|
|
4
|
+
// Oxlint respect .gitignore.
|
|
5
|
+
// Package specific directories and files that should be ignored are merged from the .oxlintignore files in each package.
|
|
4
6
|
{
|
|
5
7
|
"$schema": "./node_modules/oxlint/configuration_schema.json",
|
|
6
8
|
"ignorePatterns": [
|
|
7
9
|
"**/.cache/**",
|
|
8
|
-
"**/.cottontail-tmp/**",
|
|
9
10
|
"**/.git/**",
|
|
10
|
-
"**/.hutch/**",
|
|
11
11
|
"apps/**",
|
|
12
|
-
"**/artifacts/**",
|
|
13
12
|
"**/build/**",
|
|
14
|
-
"**/chip/**",
|
|
15
13
|
"**/coverage/**",
|
|
16
|
-
"docs/**",
|
|
17
14
|
"**/dist/**",
|
|
18
|
-
"**/temp/**",
|
|
19
|
-
"**/tmp/**",
|
|
20
15
|
"**/node_modules/**",
|
|
21
16
|
"**/out/**",
|
|
22
17
|
"**/screenshots/**",
|
|
23
|
-
"**/xmls/**",
|
|
24
18
|
"**/scripts/**",
|
|
25
|
-
"
|
|
19
|
+
"**/temp/**",
|
|
20
|
+
"**/tmp/**",
|
|
26
21
|
"**/package-lock.json",
|
|
27
22
|
"**/bun.lock"
|
|
28
23
|
],
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// VS Code settings v.1.0.
|
|
1
|
+
// VS Code settings v.1.0.15
|
|
2
2
|
{
|
|
3
3
|
"eslint.enable": false,
|
|
4
4
|
"prettier.enable": false,
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"source.format.oxc": "always",
|
|
21
21
|
"source.fixAll.oxc": "always"
|
|
22
22
|
},
|
|
23
|
+
"vitest.configSearchPatternExclude": "{**/node_modules/**,**/template/**}",
|
|
23
24
|
"diffEditor.ignoreTrimWhitespace": false,
|
|
24
25
|
"files.eol": "\n",
|
|
25
26
|
"files.insertFinalNewline": true,
|
|
@@ -18,7 +18,7 @@ pathIgnorePatterns = [
|
|
|
18
18
|
'**/src/',
|
|
19
19
|
'**/temp/',
|
|
20
20
|
'**/test/',
|
|
21
|
-
'**/
|
|
21
|
+
'**/template/',
|
|
22
22
|
'**/vitest/',
|
|
23
23
|
]
|
|
24
24
|
|
|
@@ -34,7 +34,7 @@ coveragePathIgnorePatterns = [
|
|
|
34
34
|
'**/scripts/',
|
|
35
35
|
'**/src/mock/',
|
|
36
36
|
'**/temp/',
|
|
37
|
-
'**/
|
|
37
|
+
'**/template/',
|
|
38
38
|
'**/vitest/**',
|
|
39
39
|
'**/src/**/*.d.ts',
|
|
40
40
|
'**/src/**/*.{spec,test}.{ts,mts,cts}',
|
|
@@ -27,7 +27,7 @@ const configDirname = path.dirname(url.fileURLToPath(import.meta.url));
|
|
|
27
27
|
export default defineConfig([
|
|
28
28
|
{
|
|
29
29
|
name: 'Global Ignores',
|
|
30
|
-
ignores: ['**/.cache', '**/apps', '**/build', '**/chip', '**/coverage', '**/dist', '**/jest', '**/mock', '**/node_modules', '**/screenshots', '**/temp', '**/
|
|
30
|
+
ignores: ['**/.cache', '**/apps', '**/build', '**/chip', '**/coverage', '**/dist', '**/jest', '**/mock', '**/node_modules', '**/screenshots', '**/temp', '**/template'],
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
name: 'JavaScript & TypeScript Source Files',
|
|
@@ -40,7 +40,7 @@ const jestConfig = {
|
|
|
40
40
|
'/scripts/',
|
|
41
41
|
'/src/mock/',
|
|
42
42
|
'/temp/',
|
|
43
|
-
'/
|
|
43
|
+
'/template/',
|
|
44
44
|
'/vitest/',
|
|
45
45
|
],
|
|
46
46
|
collectCoverageFrom: ['**/src/**/*.{ts,mts,cts}'],
|
|
@@ -59,7 +59,7 @@ const jestConfig = {
|
|
|
59
59
|
'/scripts/',
|
|
60
60
|
'/src/mock/',
|
|
61
61
|
'/temp/',
|
|
62
|
-
'/
|
|
62
|
+
'/template/',
|
|
63
63
|
'/vitest/',
|
|
64
64
|
'/src/.*\\.d\\.ts$',
|
|
65
65
|
],
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//
|
|
1
|
+
// vitest.config.ts 2.0.8
|
|
2
2
|
|
|
3
3
|
// This Vitest configuration is designed for a TypeScript project.
|
|
4
4
|
|
|
@@ -17,11 +17,13 @@ export default defineConfig({
|
|
|
17
17
|
'**/coverage/',
|
|
18
18
|
'**/dist/',
|
|
19
19
|
'**/node_modules/',
|
|
20
|
+
'**/out/',
|
|
20
21
|
'**/screenshots/',
|
|
21
22
|
'**/scripts/',
|
|
22
23
|
'**/src/mock/',
|
|
23
24
|
'**/temp/',
|
|
24
|
-
'**/
|
|
25
|
+
'**/tmp/',
|
|
26
|
+
'**/template/',
|
|
25
27
|
],
|
|
26
28
|
globals: true,
|
|
27
29
|
clearMocks: false,
|
|
@@ -41,13 +43,15 @@ export default defineConfig({
|
|
|
41
43
|
'**/coverage/',
|
|
42
44
|
'**/dist/',
|
|
43
45
|
'**/node_modules/',
|
|
46
|
+
'**/out/',
|
|
44
47
|
'**/screenshots/',
|
|
45
48
|
'**/scripts/',
|
|
46
49
|
'**/src/mock/',
|
|
50
|
+
'**/src/**/*.d.ts',
|
|
47
51
|
'**/temp/',
|
|
48
|
-
'**/
|
|
52
|
+
'**/tmp/',
|
|
53
|
+
'**/template/',
|
|
49
54
|
'**/vitest/**',
|
|
50
|
-
'**/src/**/*.d.ts',
|
|
51
55
|
],
|
|
52
56
|
},
|
|
53
57
|
},
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/{vendor → template}/.claude-plugin/rules/plugin-frontend/plugin-frontend.instructions.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/{vendor → template}/.github-plugin/instructions/chip-tests/chip-tests.instructions.md
RENAMED
|
File without changes
|
/package/{vendor → template}/.github-plugin/instructions/matterbridge/matterbridge.instructions.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|