Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 33 additions & 4 deletions eslint.config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { exadevConfig } from "@exadev/eslint-config";
import { defineConfig } from "eslint/config";
import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended";
import globals from "globals";
import type { Rule } from "eslint";
Expand All @@ -23,12 +24,13 @@ const noStrykerDisable: Rule.RuleModule = {
});
}
}

return {};
},
};

export default exadevConfig(
{},
export default defineConfig(
...exadevConfig(),
{
ignores: [
"dist",
Expand All @@ -50,6 +52,7 @@ export default exadevConfig(
},
},
{
files: ["**/*.{ts,tsx,mts,cts}"],
rules: {
"@typescript-eslint/consistent-type-imports": [
"error",
Expand All @@ -58,16 +61,42 @@ export default exadevConfig(
},
},
{
files: ["**/*.{ts,tsx,mts,cts,js,jsx,mjs,cjs}"],
plugins: {
local: { rules: { "no-stryker-disable": noStrykerDisable } },
},
rules: { "local/no-stryker-disable": "error" },
},
/* Test fixtures legitimately encode raw protocol values (16-byte tokens,
24-hex hop ids, chain lengths); naming them would obscure the fixture. */
24-hex hop ids, chain lengths); naming them would obscure the fixture.
Polling for an event and draining a stream are sequential by definition:
each iteration depends on the observation made by the previous one. */
{
files: ["**/*.test.ts"],
rules: { "@typescript-eslint/no-magic-numbers": "off" },
rules: {
"@typescript-eslint/no-magic-numbers": "off",
"no-await-in-loop": "off",
},
},
/* readLines is an async generator over a socket: each line is awaited
before the next can be produced, so the loop cannot be parallelised. */
{
files: ["src/adapters/node/uds-transport.ts"],
rules: { "no-await-in-loop": "off" },
},
/* Registry entries are read one at a time so the listing order and the
number of open file handles stay bounded by one, whatever the directory
holds. */
{
files: ["src/adapters/node/fs-registry-store.ts"],
rules: { "no-await-in-loop": "off" },
},
/* The spool sweep stats and unlinks one file at a time so removal order
and open handles stay bounded by one, and the first failed unlink stops
the pass exactly as before. */
{
files: ["src/domain/file-transfer.ts"],
rules: { "no-await-in-loop": "off" },
},
/* defineSchema attaches a guard to a live Zod class instance; spread would
destroy the prototype, so Object.assign is the only correct tool there. */
Expand Down
120 changes: 60 additions & 60 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,26 +1,54 @@
{
"name": "cc-peer",
"version": "1.6.5",
"description": "Communicate with local Claude Code instances over their native cross-session peer messaging: send and receive messages, register as a named discoverable peer, receipts, idle subscriptions, and a REST facade via `npx cc-peer`.",
"type": "module",
"license": "MIT",
"version": "1.6.5",
"author": "Joseph Mearman <joseph@mearman.co.uk>",
"repository": {
"type": "git",
"url": "git+https://github.com/ExaDev/cc-peer.git"
"bin": {
"cc-peer": "./dist/bin/cc-peer.mjs"
},
"homepage": "https://github.com/ExaDev/cc-peer#readme",
"bugs": {
"url": "https://github.com/ExaDev/cc-peer/issues"
},
"sideEffects": false,
"dependencies": {
"zod": "4.5.4"
},
"devDependencies": {
"@anthropic-ai/claude-code": "2.1.261",
"@arethetypeswrong/cli": "0.18.5",
"@commitlint/config-conventional": "21.2.2",
"@commitlint/types": "21.2.0",
"@exadev/eslint-config": "3.0.0",
"@semantic-release/changelog": "7.0.0",
"@semantic-release/commit-analyzer": "13.0.1",
"@semantic-release/exec": "7.1.0",
"@semantic-release/git": "11.0.1",
"@semantic-release/github": "12.0.9",
"@semantic-release/npm": "13.1.5",
"@semantic-release/release-notes-generator": "14.1.1",
"@stryker-mutator/core": "10.0.0",
"@stryker-mutator/vitest-runner": "10.0.0",
"@types/node": "26.4.1",
"@vitest/coverage-v8": "4.1.11",
"commitlint": "21.2.2",
"eslint": "10.10.0",
"eslint-config-prettier": "10.1.8",
"eslint-plugin-prettier": "5.5.6",
"globals": "17.12.0",
"husky": "9.1.7",
"jiti": "2.7.0",
"lint-staged": "17.5.0",
"prettier": "3.9.6",
"publint": "0.3.24",
"semantic-release": "25.0.9",
"tsdown": "0.23.0",
"tsx": "4.23.13",
"turbo": "2.11.5",
"typescript": "6.0.3",
"vitest": "4.1.11"
},
"engines": {
"node": ">=20"
},
"packageManager": "pnpm@12.4.1+sha512.2e81e399d73fe8390dab25e06aa788ab7a5908248d2f5a370f82b481147a6a7a367bf8048f9a6fdb6460f21a66f0542dedb8b94ca2c8723596741920b1656d4c",
"bin": {
"cc-peer": "./dist/bin/cc-peer.mjs"
},
"exports": {
".": {
"import": {
Expand All @@ -45,69 +73,41 @@
"./schemas/*.schema.json": "./schemas/*.schema.json",
"./package.json": "./package.json"
},
"main": "./dist/cc-peer.cjs",
"types": "./dist/cc-peer.d.mts",
"files": [
"dist",
"schemas",
"docs"
],
"homepage": "https://github.com/ExaDev/cc-peer#readme",
"license": "MIT",
"main": "./dist/cc-peer.cjs",
"packageManager": "pnpm@12.4.1+sha512.2e81e399d73fe8390dab25e06aa788ab7a5908248d2f5a370f82b481147a6a7a367bf8048f9a6fdb6460f21a66f0542dedb8b94ca2c8723596741920b1656d4c",
"publishConfig": {
"provenance": true,
"access": "public"
},
"repository": {
"type": "git",
"url": "git+https://github.com/ExaDev/cc-peer.git"
},
"scripts": {
"build": "turbo run _build",
"_build": "tsdown && tsx scripts/generate-json-schema.ts",
"lint": "turbo run _lint",
"_lint": "eslint . --cache --fix",
"typecheck": "turbo run _typecheck",
"_typecheck": "tsc --noEmit",
"build": "turbo run _build",
"lint": "turbo run _lint",
"prepare": "husky",
"prepublishOnly": "pnpm lint && pnpm typecheck && pnpm test:coverage && pnpm build && publint && attw --pack --profile node16",
"test": "vitest run",
"test:watch": "vitest",
"test:unit": "vitest run --project unit",
"test:integration": "vitest run --project integration",
"test:coverage": "vitest run --coverage",
"test:e2e": "vitest run --config vitest.e2e.config.ts",
"test:integration": "vitest run --project integration",
"test:mutation": "stryker run stryker.config.ts",
"prepublishOnly": "pnpm lint && pnpm typecheck && pnpm test:coverage && pnpm build && publint && attw --pack --profile node16",
"prepare": "husky",
"test:coverage": "vitest run --coverage"
},
"dependencies": {
"zod": "4.5.4"
"test:unit": "vitest run --project unit",
"test:watch": "vitest",
"typecheck": "turbo run _typecheck"
},
"devDependencies": {
"@anthropic-ai/claude-code": "2.1.261",
"@arethetypeswrong/cli": "0.18.5",
"@commitlint/config-conventional": "21.2.2",
"@commitlint/types": "21.2.0",
"@exadev/eslint-config": "2.12.1",
"@semantic-release/changelog": "7.0.0",
"@semantic-release/commit-analyzer": "13.0.1",
"@semantic-release/exec": "7.1.0",
"@semantic-release/git": "11.0.1",
"@semantic-release/github": "12.0.9",
"@semantic-release/npm": "13.1.5",
"@semantic-release/release-notes-generator": "14.1.1",
"@stryker-mutator/core": "10.0.0",
"@stryker-mutator/vitest-runner": "10.0.0",
"@types/node": "26.4.1",
"@vitest/coverage-v8": "4.1.11",
"commitlint": "21.2.2",
"eslint": "10.10.0",
"eslint-config-prettier": "10.1.8",
"eslint-plugin-prettier": "5.5.6",
"globals": "17.12.0",
"husky": "9.1.7",
"jiti": "2.7.0",
"lint-staged": "17.5.0",
"prettier": "3.9.6",
"publint": "0.3.24",
"semantic-release": "25.0.9",
"tsdown": "0.23.0",
"tsx": "4.23.13",
"turbo": "2.11.5",
"typescript": "6.0.3",
"vitest": "4.1.11"
}
"sideEffects": false,
"type": "module",
"types": "./dist/cc-peer.d.mts"
}
Loading
Loading