Skip to content

chore: alpha to main#378

Merged
dtfiedler merged 11 commits into
mainfrom
alpha
Jan 21, 2026
Merged

chore: alpha to main#378
dtfiedler merged 11 commits into
mainfrom
alpha

Conversation

@dtfiedler

@dtfiedler dtfiedler commented Jan 21, 2026

Copy link
Copy Markdown
Contributor

Merge new repo structure to main. Packages will be published in future PRs.

Summary by CodeRabbit

  • New Features

    • Introduced a monorepo layout and added placeholder signer packages for Ethereum, KYVE, and Solana.
  • Chores

    • Scoped CI/CD and release workflows to package-level builds and artifacts.
    • Converted top-level manifest to a workspace root and consolidated scripts/dependencies.
    • Removed the pull request template and simplified commit hook tasks.
  • Style/Config

    • Broadened lint/coverage ignore patterns and added package-specific TypeScript and ESLint configs.

✏️ Tip: You can customize this high-level summary in your review settings.

dtfiedler and others added 8 commits January 16, 2026 16:43
chore: main back to alpha
- Move turbo-sdk source to packages/turbo-sdk
- Add yarn workspaces configuration to root package.json
- Create placeholder packages for signer extraction:
  - @ardrive/turbo-signer-ethereum
  - @ardrive/turbo-signer-polygon
  - @ardrive/turbo-signer-base
  - @ardrive/turbo-signer-solana
  - @ardrive/turbo-signer-kyve
- Update CI workflows for monorepo structure
- Update eslint and release configs for new paths
- Remove yarn docs from commit-msg hook (moved to package)

PE-8848

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update signer package scripts to no-op placeholders (prevents build failures)
- Fix workspace dependency syntax for yarn 1.x compatibility
- Update codecov ignore paths for new package location

PE-8848

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move license.header.js to root resources/ directory
- Create package-specific .eslintrc in turbo-sdk that extends root
- Add ignorePatterns for test files and examples
- Fix parserOptions.project path for package context

PE-8848

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@dtfiedler dtfiedler requested a review from a team as a code owner January 21, 2026 03:56
@coderabbitai

coderabbitai Bot commented Jan 21, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Restructures the repository into a private monorepo (@ardrive/turbo-monorepo) with workspaces, adds packages/turbo-sdk and three signer packages, moves configs/workflows/release tooling to package-scoped paths, and adjusts ESLint, TypeScript, and CI settings to the new layout. (50 words)

Changes

Cohort / File(s) Summary
Root manifests & configs
package.json, tsconfig.json, /.eslintrc, /.eslintignore, codecov.yml, /.releaserc
Convert root to a private monorepo (workspaces: ["packages/*"]), slim root deps, switch tsconfig to project references, change eslint ignore globs to recursive patterns, and scope Codecov/Release ignore/asset paths to packages/turbo-sdk.
GitHub workflows
.github/workflows/build.yml, .github/workflows/release.yml
Scope build/test/release commands to yarn workspace @ardrive/turbo-sdk ...; update version source, git add paths, git user config, and add dist/tag push steps.
Husky hooks & PR template
.husky/commit-msg, .github/pull_request_template.md
Remove docs invocation from commit-msg hook; delete PR template file.
turbo-sdk package
packages/turbo-sdk/package.json, packages/turbo-sdk/tsconfig.json, packages/turbo-sdk/.eslintrc, packages/turbo-sdk/tests/...
Add standalone @ardrive/turbo-sdk package manifest, package-level tsconfig and ESLint, and minor test file formatting update.
New signer packages (manifests)
packages/turbo-signer-ethereum/package.json, packages/turbo-signer-kyve/package.json, packages/turbo-signer-solana/package.json
Add package.json manifests for Ethereum, KYVE, and Solana signer packages (exports, engines, deps, placeholder scripts).
New signer packages (sources & tsconfigs)
packages/*/src/index.ts, packages/*/tsconfig*.json
Add placeholder src/index.ts files and ESM/CJS/typing tsconfig variants for each new signer package.
Release/version scripts
packages/turbo-sdk/update-version.sh
Prefix file paths with ./ for sed/rm operations; no logic changes.
CI/Coverage rules
codecov.yml, .eslintignore
Update ignore patterns to target package-scoped paths and add *.cjs/*.mjs ignores.

Sequence Diagram(s)

(omitted)

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Possibly related PRs

Suggested labels

released on @alpha``, released

Suggested reviewers

  • fedellen
  • arielmelendez

Poem

🐰 I hopped from root into a workspace glade,
Split SDK and signers where new modules are made,
Tweaked configs and scripts, kept each carrot neat,
A monorepo patchwork—small hops, big feat! 🥕✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2
❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description is extremely brief and lacks detail about the monorepo restructuring, package organization, and migration scope required by the template guidelines. Expand the description to explain the monorepo structure, list the new packages created, detail migration impacts, and address how this affects publishing and testing workflows.
Title check ❓ Inconclusive The title 'chore: alpha to main' is vague and does not clearly convey the substantial structural changes being made, such as the monorepo migration. Consider a more descriptive title like 'chore: restructure to monorepo with multiple packages' to better reflect the scope of changes.
✅ Passed checks (1 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/turbo-sdk/tests/wallets/BTV1zY7njS5an91v9nphCK48d2vnMuecEgHLYiP25ycj.sol.sk.json (1)

1-6: Add documentation clarifying this is a test-only fixture.

This file contains a test wallet used exclusively in test suites (via testSolWallet in helpers.ts). While the naming convention and test-only usage context are clear, add an explicit comment or documentation note clarifying its test-only status. This would strengthen the safety posture and prevent any ambiguity about the wallet's intended scope, especially for contributors unfamiliar with the codebase structure.

Consider adding a comment to helpers.ts or in a tests/wallets README documenting that these are fixture wallets used only for testing and not production-ready.

🤖 Fix all issues with AI agents
In `@packages/turbo-signer-ethereum/package.json`:
- Around line 5-29: The package currently sets "type": "module" while
advertising a CJS entry "./lib/cjs/index.js" (see "main" and "exports" entries),
which will be treated as ESM; resolve this by updating your build to either emit
CJS files with .cjs extensions for the CJS entry or ensure the CJS folder
contains its own package.json with "type": "commonjs" (e.g., create
lib/cjs/package.json) and/or change the "main" export to point to .cjs output so
"./lib/cjs/index.js" is correctly interpreted as CommonJS at runtime.

In `@packages/turbo-signer-ethereum/tsconfig.json`:
- Around line 2-23: Add "composite": true to the tsconfig's compilerOptions to
satisfy TypeScript project reference requirements: update the existing
"compilerOptions" object (which already contains "outDir": "./lib/esm",
"module": "nodenext", etc.) to include "composite": true so the package can be
referenced by the root tsconfig and be built with tsc -b.

In `@packages/turbo-signer-kyve/package.json`:
- Around line 5-29: The package.json currently sets "type": "module" while
pointing "main" and the "exports.require" entry at "./lib/cjs/index.js", which
will be interpreted as ESM; fix by either producing CommonJS files with a .cjs
extension and updating "main" and the "exports.require" path to
"./lib/cjs/index.cjs" (and ensure your build emits .cjs), or add a nested
package.json under lib/cjs with "type": "commonjs" so ./lib/cjs/index.js is
treated as CJS; update the "main" and "exports" entries (and your build config
that emits the runtime files) to match whichever approach you choose.
🧹 Nitpick comments (6)
packages/turbo-signer-kyve/src/index.ts (1)

1-20: Placeholder structure looks good.

The scaffolding is appropriate for a new package. The export {} pattern correctly makes this a valid ES module while the implementation is pending.

Minor nit: The copyright year range ends in 2024, but consider updating to 2026 for new files.

packages/turbo-signer-ethereum/src/index.ts (1)

17-20: Placeholder module is fine for now; track TODO before publish.

Given this will be a public package later, make sure the TODO is resolved before release so consumers don’t import an empty module.

If you want, I can sketch an initial Ethereum signer scaffold.

.github/workflows/release.yml (1)

46-57: Guard dist publish pathspecs after relocation.

The git add pathspecs now point to packages/turbo-sdk/lib/** and packages/turbo-sdk/bundles/**. If either directory isn’t produced by the build, this step will fail with a pathspec error. Consider asserting the directories exist (or conditionally adding them) so failures are explicit.

♻️ Suggested guard to make missing outputs explicit
       - name: Publish Dist Tag
         run: |
+          for path in packages/turbo-sdk/lib packages/turbo-sdk/bundles; do
+            if [ ! -d "$path" ]; then
+              echo "Error: missing build output at $path"
+              exit 1
+            fi
+          done
           VERSION=$(cat packages/turbo-sdk/package.json | jq -r .version)
           if [ -z "$VERSION" ] || [ "$VERSION" = "null" ]; then
             echo "Error: Failed to extract version from package.json"
             exit 1
           fi
packages/turbo-signer-solana/package.json (3)

19-23: Non-standard field in author object.

The author object uses "website" which is non-standard. The npm specification uses "url" for this field. While this won't break anything, tools that parse package metadata may not recognize it.

Suggested change
   "author": {
     "name": "Permanent Data Solutions Inc",
     "email": "info@ardrive.io",
-    "website": "https://ardrive.io"
+    "url": "https://ardrive.io"
   },

42-44: Use workspace protocol for internal dependency.

All signer packages currently use "*" for @ardrive/turbo-sdk, which is ambiguous in a yarn workspaces monorepo. Since @ardrive/turbo-sdk is a local workspace package, use the explicit workspace protocol instead:

Suggested change
   "dependencies": {
-    "@ardrive/turbo-sdk": "*"
+    "@ardrive/turbo-sdk": "workspace:*"
   },

This pattern should be applied to all signer packages (ethereum, kyve, solana) to ensure consistent and explicit workspace resolution.


45-49: Peer dependency version specifications allow current releases.

The versions are correctly constrained with caret (^) notation, which automatically permits compatible updates:

  • tweetnacl is at the latest version (1.0.3)
  • @solana/web3.js ^1.91.7 permits the current 1.98.4
  • @dha-team/arbundles ^1.0.1 permits the current 1.0.4

No changes required—the peer dependencies can resolve to stable releases currently available.

Comment on lines +5 to +29
"main": "./lib/cjs/index.js",
"types": "./lib/types/index.d.ts",
"module": "./lib/esm/index.js",
"type": "module",
"repository": {
"type": "git",
"url": "https://github.com/ardriveapp/turbo-sdk.git",
"directory": "packages/turbo-signer-ethereum"
},
"files": [
"lib",
"LICENSE",
"README.md"
],
"author": {
"name": "Permanent Data Solutions Inc",
"email": "info@ardrive.io",
"website": "https://ardrive.io"
},
"exports": {
".": {
"types": "./lib/types/index.d.ts",
"import": "./lib/esm/index.js",
"require": "./lib/cjs/index.js"
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

# First, find the package.json file and examine the directory structure
find . -path "*/turbo-signer-ethereum*" -type f -name "package.json" | head -5

Repository: ardriveapp/turbo-sdk

Length of output: 184


🏁 Script executed:

# Look at the turbo-signer-ethereum directory structure
git ls-files | grep "turbo-signer-ethereum" | head -20

Repository: ardriveapp/turbo-sdk

Length of output: 296


🏁 Script executed:

# Check the build scripts and tsconfig in the package
fd -t f "tsconfig\|build\|rollup\|webpack" packages/turbo-signer-ethereum

Repository: ardriveapp/turbo-sdk

Length of output: 46


🏁 Script executed:

# Read the full package.json for turbo-signer-ethereum
cat packages/turbo-signer-ethereum/package.json

Repository: ardriveapp/turbo-sdk

Length of output: 1401


🏁 Script executed:

# Check the tsconfig.cjs.json to understand the build output
cat packages/turbo-signer-ethereum/tsconfig.cjs.json

Repository: ardriveapp/turbo-sdk

Length of output: 210


🏁 Script executed:

# Check if there's a lib/cjs/package.json or any package.json in lib
find packages/turbo-signer-ethereum -name "package.json" -o -type d -name "lib"

Repository: ardriveapp/turbo-sdk

Length of output: 107


CJS entry conflicts with "type": "module"
Under "type": "module", ./lib/cjs/index.js will be interpreted as ESM unless you emit .cjs files or add lib/cjs/package.json with "type": "commonjs". The build scripts are currently placeholder implementations; ensure the CJS/ESM conflict is resolved during build implementation before publishing.

💡 Example: using .cjs output
-  "main": "./lib/cjs/index.js",
+  "main": "./lib/cjs/index.cjs",
...
-      "require": "./lib/cjs/index.cjs"
+      "require": "./lib/cjs/index.cjs"

Alternatively, configure the build to emit lib/cjs/package.json with "type": "commonjs" alongside .js files.

🤖 Prompt for AI Agents
In `@packages/turbo-signer-ethereum/package.json` around lines 5 - 29, The package
currently sets "type": "module" while advertising a CJS entry
"./lib/cjs/index.js" (see "main" and "exports" entries), which will be treated
as ESM; resolve this by updating your build to either emit CJS files with .cjs
extensions for the CJS entry or ensure the CJS folder contains its own
package.json with "type": "commonjs" (e.g., create lib/cjs/package.json) and/or
change the "main" export to point to .cjs output so "./lib/cjs/index.js" is
correctly interpreted as CommonJS at runtime.

Comment on lines +2 to +23
"compilerOptions": {
"target": "es2021",
"allowSyntheticDefaultImports": true,
"lib": ["esnext", "dom"],
"outDir": "./lib/esm",
"listEmittedFiles": false,
"listFiles": false,
"moduleResolution": "nodenext",
"module": "nodenext",
"alwaysStrict": true,
"types": ["node"],
"forceConsistentCasingInFileNames": true,
"esModuleInterop": true,
"resolveJsonModule": true,
"pretty": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"skipLibCheck": true,
"strictNullChecks": true
},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# Find tsconfig.json files in the repository
find . -name "tsconfig.json" -type f | head -20

Repository: ardriveapp/turbo-sdk

Length of output: 470


🏁 Script executed:

# Read the root tsconfig.json to check if it references packages/turbo-signer-ethereum
cat -n ./tsconfig.json

Repository: ardriveapp/turbo-sdk

Length of output: 1206


🏁 Script executed:

# Read the full tsconfig.json for packages/turbo-signer-ethereum
cat -n ./packages/turbo-signer-ethereum/tsconfig.json

Repository: ardriveapp/turbo-sdk

Length of output: 957


🏁 Script executed:

# Check if other packages in the monorepo have composite: true
for tsconfig in ./packages/*/tsconfig.json; do
  echo "=== $tsconfig ==="
  grep -E '"composite"' "$tsconfig" || echo "No composite field"
done

Repository: ardriveapp/turbo-sdk

Length of output: 341


🏁 Script executed:

# Check if there's a build script or CI configuration that uses tsc -b
find . -maxdepth 2 -name "package.json" -type f | xargs grep -l "tsc -b" 2>/dev/null

Repository: ardriveapp/turbo-sdk

Length of output: 48


🏁 Script executed:

# Check the build-related content in root package.json and example packages
cat -n ./package.json | grep -A 10 -B 2 '"build"\|"tsc"'

Repository: ardriveapp/turbo-sdk

Length of output: 555


🏁 Script executed:

# Look for any documentation or comments about the project structure
find . -maxdepth 2 -name "README*" -type f | head -5

Repository: ardriveapp/turbo-sdk

Length of output: 75


🏁 Script executed:

# Check if tsc is used anywhere in the build process or if there are any TypeScript build configurations
grep -r "tsc" ./package.json ./packages/*/package.json 2>/dev/null | grep -v node_modules

Repository: ardriveapp/turbo-sdk

Length of output: 373


🏁 Script executed:

# Search for any references to composite in the repo
rg "composite" --type json

Repository: ardriveapp/turbo-sdk

Length of output: 46


🏁 Script executed:

# Check TypeScript version to understand best practices for this version
cat ./package.json | grep -A 2 '"typescript"'

Repository: ardriveapp/turbo-sdk

Length of output: 114


🏁 Script executed:

# Let's check if tsc -b would work or fail with current config
# First, check the TypeScript behavior documentation by looking at any build output logs or CI configs
find . -maxdepth 2 -name "*.yml" -o -name "*.yaml" | head -10

Repository: ardriveapp/turbo-sdk

Length of output: 77


🏁 Script executed:

# Check if there are any GitHub Actions or CI workflows that might use tsc -b
find . -path ./node_modules -prune -o -type f \( -name "*.yml" -o -name "*.yaml" \) -print

Repository: ardriveapp/turbo-sdk

Length of output: 327


🏁 Script executed:

# Check the build and PR workflows to see if they use tsc -b
cat ./.github/workflows/build.yml

Repository: ardriveapp/turbo-sdk

Length of output: 1647


🏁 Script executed:

# Also check the PR workflow
cat ./.github/workflows/pr.yml

Repository: ardriveapp/turbo-sdk

Length of output: 936


Add composite: true to align with TypeScript project reference requirements.

The root tsconfig.json defines project references to this package, which requires it to have "composite": true per TypeScript's project reference specification. While the current build uses Yarn workspaces and doesn't fail without this setting, adding it ensures proper TypeScript configuration and prevents future issues if tsc -b is adopted.

🛠️ Suggested fix
   "compilerOptions": {
+    "composite": true,
     "target": "es2021",
     "allowSyntheticDefaultImports": true,
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"compilerOptions": {
"target": "es2021",
"allowSyntheticDefaultImports": true,
"lib": ["esnext", "dom"],
"outDir": "./lib/esm",
"listEmittedFiles": false,
"listFiles": false,
"moduleResolution": "nodenext",
"module": "nodenext",
"alwaysStrict": true,
"types": ["node"],
"forceConsistentCasingInFileNames": true,
"esModuleInterop": true,
"resolveJsonModule": true,
"pretty": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"skipLibCheck": true,
"strictNullChecks": true
},
"compilerOptions": {
"composite": true,
"target": "es2021",
"allowSyntheticDefaultImports": true,
"lib": ["esnext", "dom"],
"outDir": "./lib/esm",
"listEmittedFiles": false,
"listFiles": false,
"moduleResolution": "nodenext",
"module": "nodenext",
"alwaysStrict": true,
"types": ["node"],
"forceConsistentCasingInFileNames": true,
"esModuleInterop": true,
"resolveJsonModule": true,
"pretty": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"skipLibCheck": true,
"strictNullChecks": true
},
🤖 Prompt for AI Agents
In `@packages/turbo-signer-ethereum/tsconfig.json` around lines 2 - 23, Add
"composite": true to the tsconfig's compilerOptions to satisfy TypeScript
project reference requirements: update the existing "compilerOptions" object
(which already contains "outDir": "./lib/esm", "module": "nodenext", etc.) to
include "composite": true so the package can be referenced by the root tsconfig
and be built with tsc -b.

Comment on lines +5 to +29
"main": "./lib/cjs/index.js",
"types": "./lib/types/index.d.ts",
"module": "./lib/esm/index.js",
"type": "module",
"repository": {
"type": "git",
"url": "https://github.com/ardriveapp/turbo-sdk.git",
"directory": "packages/turbo-signer-kyve"
},
"files": [
"lib",
"LICENSE",
"README.md"
],
"author": {
"name": "Permanent Data Solutions Inc",
"email": "info@ardrive.io",
"website": "https://ardrive.io"
},
"exports": {
".": {
"types": "./lib/types/index.d.ts",
"import": "./lib/esm/index.js",
"require": "./lib/cjs/index.js"
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

# Explore the repository structure
find packages/turbo-signer-kyve -type f -name "*.json" | head -20

Repository: ardriveapp/turbo-sdk

Length of output: 236


🏁 Script executed:

# Check if there's a build config and what the actual structure looks like
ls -la packages/turbo-signer-kyve/

Repository: ardriveapp/turbo-sdk

Length of output: 489


🏁 Script executed:

# Look for tsconfig, esbuild config, or build scripts
find packages/turbo-signer-kyve -type f \( -name "tsconfig.json" -o -name "*.config.*" -o -name "build*" \) | head -20

Repository: ardriveapp/turbo-sdk

Length of output: 104


🏁 Script executed:

# Check the full package.json to see build scripts
cat packages/turbo-signer-kyve/package.json

Repository: ardriveapp/turbo-sdk

Length of output: 1402


🏁 Script executed:

# Check if lib directory exists and what's in it
ls -la packages/turbo-signer-kyve/lib/ 2>/dev/null || echo "lib directory does not exist or is not accessible"

Repository: ardriveapp/turbo-sdk

Length of output: 113


🏁 Script executed:

cat packages/turbo-signer-kyve/tsconfig.cjs.json

Repository: ardriveapp/turbo-sdk

Length of output: 210


🏁 Script executed:

cat packages/turbo-signer-kyve/tsconfig.json

Repository: ardriveapp/turbo-sdk

Length of output: 775


🏁 Script executed:

# Check parent package.json or turbo config for build tooling
ls -la packages/turbo-signer-kyve/../../

Repository: ardriveapp/turbo-sdk

Length of output: 1916


🏁 Script executed:

# Check if there's a shared build config or root tsup config
find . -maxdepth 3 -name "tsup.config.*" -o -name ".build*" 2>/dev/null | head -10

Repository: ardriveapp/turbo-sdk

Length of output: 46


🏁 Script executed:

# Check how other packages in the monorepo handle CJS/ESM
find packages -maxdepth 2 -name "package.json" -exec grep -l '"type": "module"' {} \;

Repository: ardriveapp/turbo-sdk

Length of output: 221


🏁 Script executed:

# See if any other packages use .cjs files or nested package.json
find packages -type f \( -name "*.cjs" -o -path "*/lib/cjs/package.json" \)

Repository: ardriveapp/turbo-sdk

Length of output: 46


🏁 Script executed:

# Check the root package.json for context
cat package.json

Repository: ardriveapp/turbo-sdk

Length of output: 1305


CJS entry conflicts with "type": "module"

With "type": "module", the CommonJS output at ./lib/cjs/index.js will be treated as ESM by Node.js. When you implement the build step, TypeScript will emit .js files (not .cjs), and these will be interpreted as ESM modules due to the root "type": "module" setting. Align the CJS output/exports before publishing by either using .cjs extension or adding lib/cjs/package.json with "type": "commonjs".

💡 Example manifest tweak (requires .cjs output)
-  "main": "./lib/cjs/index.js",
+  "main": "./lib/cjs/index.cjs",
...
-      "require": "./lib/cjs/index.js"
+      "require": "./lib/cjs/index.cjs"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"main": "./lib/cjs/index.js",
"types": "./lib/types/index.d.ts",
"module": "./lib/esm/index.js",
"type": "module",
"repository": {
"type": "git",
"url": "https://github.com/ardriveapp/turbo-sdk.git",
"directory": "packages/turbo-signer-kyve"
},
"files": [
"lib",
"LICENSE",
"README.md"
],
"author": {
"name": "Permanent Data Solutions Inc",
"email": "info@ardrive.io",
"website": "https://ardrive.io"
},
"exports": {
".": {
"types": "./lib/types/index.d.ts",
"import": "./lib/esm/index.js",
"require": "./lib/cjs/index.js"
}
"main": "./lib/cjs/index.cjs",
"types": "./lib/types/index.d.ts",
"module": "./lib/esm/index.js",
"type": "module",
"repository": {
"type": "git",
"url": "https://github.com/ardriveapp/turbo-sdk.git",
"directory": "packages/turbo-signer-kyve"
},
"files": [
"lib",
"LICENSE",
"README.md"
],
"author": {
"name": "Permanent Data Solutions Inc",
"email": "info@ardrive.io",
"website": "https://ardrive.io"
},
"exports": {
".": {
"types": "./lib/types/index.d.ts",
"import": "./lib/esm/index.js",
"require": "./lib/cjs/index.cjs"
}
🤖 Prompt for AI Agents
In `@packages/turbo-signer-kyve/package.json` around lines 5 - 29, The
package.json currently sets "type": "module" while pointing "main" and the
"exports.require" entry at "./lib/cjs/index.js", which will be interpreted as
ESM; fix by either producing CommonJS files with a .cjs extension and updating
"main" and the "exports.require" path to "./lib/cjs/index.cjs" (and ensure your
build emits .cjs), or add a nested package.json under lib/cjs with "type":
"commonjs" so ./lib/cjs/index.js is treated as CJS; update the "main" and
"exports" entries (and your build config that emits the runtime files) to match
whichever approach you choose.

@codecov

codecov Bot commented Jan 21, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 89.53%. Comparing base (b0bc366) to head (3ca93ca).
⚠️ Report is 13 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #378   +/-   ##
=======================================
  Coverage   89.53%   89.53%           
=======================================
  Files          26       26           
  Lines        6562     6562           
  Branches      422      422           
=======================================
  Hits         5875     5875           
  Misses        686      686           
  Partials        1        1           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@fedellen

Copy link
Copy Markdown
Contributor

would rather have the release workflow working on alpha before going to main. keeps main ready for hotfixes if we need to quickly patch something

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@packages/turbo-sdk/update-version.sh`:
- Around line 9-10: The rm command has a typo "l./ib/cjs/version.js.bak" so the
backup created by sed -i.bak isn't removed; update the cleanup to remove the
actual backup path created by the sed invocation (./lib/cjs/version.js.bak)
after running sed -i.bak -e "s/exports.version = '.*';/exports.version =
'${nextRelease_version}';/" ./lib/cjs/version.js.bak, ensuring the rm target
matches the backup filename produced by sed (./lib/cjs/version.js.bak).

Comment thread packages/turbo-sdk/update-version.sh Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@packages/turbo-sdk/package.json`:
- Around line 109-110: The package.json has a major-version mismatch:
"@typescript-eslint/eslint-plugin" is ^5.62.0 while "@typescript-eslint/parser"
is ^6.4.0; update both package entries to the same major version (v6) so they
are compatible (e.g., set "@typescript-eslint/eslint-plugin" and
"@typescript-eslint/parser" to matching ^6.x versions), then run install/update
(npm/yarn/pnpm) and re-run lint to ensure no parse errors; target the two
package names to locate the entries.
🧹 Nitpick comments (2)
packages/turbo-sdk/package.json (1)

53-53: Non-standard rimraf syntax.

The clean script uses rimraf [ lib coverage bundles ] with brackets. Modern rimraf (v4+) uses glob patterns without brackets: rimraf lib coverage bundles.

♻️ Suggested fix
-    "clean": "rimraf [ lib coverage bundles ]",
+    "clean": "rimraf lib coverage bundles",
.github/workflows/release.yml (1)

58-60: Quote the VERSION variable to prevent word splitting.

Per shellcheck SC2086, $VERSION should be quoted to prevent potential issues with word splitting.

♻️ Suggested fix
-          git commit -m "chore(dist): release version v${VERSION} [skip ci]" --no-verify
+          git commit -m "chore(dist): release version v\"${VERSION}\" [skip ci]" --no-verify
           git push origin dist --force
-          git tag v${VERSION}-dist --force
-          git push origin v${VERSION}-dist --force
+          git tag "v${VERSION}-dist" --force
+          git push origin "v${VERSION}-dist" --force

Comment on lines +109 to +110
"@typescript-eslint/eslint-plugin": "^5.62.0",
"@typescript-eslint/parser": "^6.4.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🌐 Web query:

@typescript-eslint eslint-plugin v5 parser v6 compatibility

💡 Result:

Short answer: they are not compatible—@typescript-eslint/eslint-plugin v5 expects the v5 parser. You should upgrade both packages together to the same major (v6) to avoid breaking/parse errors (or install the v6 release-candidate packages during the beta). See the official v6 announcement and beta notes for breaking changes and upgrade instructions. [1][2]

Sources:

  • typescript-eslint v6 announcement (upgrade instructions, breaking changes). [1]
  • typescript-eslint v6 beta post (install @rc-v6 during beta; notes on replacing both plugin and parser). [2]

Version mismatch between @typescript-eslint packages.

@typescript-eslint/eslint-plugin is at ^5.62.0 while @typescript-eslint/parser is at ^6.4.0. These packages are not compatible across major versions and must be upgraded together. Upgrade both to v6 to avoid parse errors.

🤖 Prompt for AI Agents
In `@packages/turbo-sdk/package.json` around lines 109 - 110, The package.json has
a major-version mismatch: "@typescript-eslint/eslint-plugin" is ^5.62.0 while
"@typescript-eslint/parser" is ^6.4.0; update both package entries to the same
major version (v6) so they are compatible (e.g., set
"@typescript-eslint/eslint-plugin" and "@typescript-eslint/parser" to matching
^6.x versions), then run install/update (npm/yarn/pnpm) and re-run lint to
ensure no parse errors; target the two package names to locate the entries.

@dtfiedler

Copy link
Copy Markdown
Contributor Author

🎉 This PR is included in version 1.40.1-alpha.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

@fedellen fedellen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LFG(et rid of this bloat)!

@dtfiedler dtfiedler merged commit ecded57 into main Jan 21, 2026
30 checks passed
@dtfiedler

Copy link
Copy Markdown
Contributor Author

🎉 This PR is included in version 1.40.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants