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
5 changes: 5 additions & 0 deletions .changeset/friendly-buses-beam.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@rawsql-ts/adapter-node-pg': patch
---

Rename the internal binder dependency to `@rawsql-ts/shared-binder` so npm publish accepts the package metadata.
2 changes: 1 addition & 1 deletion packages/_shared/binder/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# Binder (shared)

Public surface: import from `@rawsql-ts/_shared/binder` only. Keep exports stable via `src/index.ts`.
Public surface: import from `@rawsql-ts/shared-binder` only. Keep exports stable via `src/index.ts`.
2 changes: 1 addition & 1 deletion packages/_shared/binder/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "@rawsql-ts/_shared/binder",
"name": "@rawsql-ts/shared-binder",
"version": "0.0.0",
"private": true,
Comment on lines +2 to 4
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check adapter-node-pg package.json for shared-binder dependency
echo "=== Check adapter-node-pg dependencies ==="
cat packages/adapters/adapter-node-pg/package.json | grep -A 20 '"dependencies"'
echo ""

# Check if shared-binder is imported in adapter source
echo "=== Search for shared-binder imports in adapter-node-pg ==="
rg '@rawsql-ts/shared-binder' packages/adapters/adapter-node-pg/src/
echo ""

# Check if adapter has dist output
echo "=== Check adapter-node-pg dist structure ==="
ls -la packages/adapters/adapter-node-pg/dist 2>/dev/null || echo "No dist directory"
echo ""

# Look for build config
echo "=== Check build configuration ==="
fd -g 'tsup*' -g 'esbuild*' -g 'rollup*' packages/adapters/adapter-node-pg/
cat packages/adapters/adapter-node-pg/tsup.config.ts 2>/dev/null || echo "No tsup config"
echo ""

# Check package.json build/exports fields
echo "=== Check package.json exports and build ==="
cat packages/adapters/adapter-node-pg/package.json | jq '.exports, .main, .types, .scripts.build'

Repository: mk3008/rawsql-ts

Length of output: 1265


"private": true will break adapter-node-pg consumers after publish.

The package is marked "private": true (Line 4), so it will never be published to npm. However, adapter-node-pg (a public package) declares "@rawsql-ts/shared-binder": "workspace:^" as a runtime dependency and actively imports compileNamedParameters from it in PgTestkitClient.ts. The adapter uses plain tsc to compile (no bundling), so the dist output will contain bare require/import statements for @rawsql-ts/shared-binder. When pnpm publishes adapter-node-pg, the workspace: protocol is replaced with a concrete version — but since @rawsql-ts/shared-binder is never published, npm install @rawsql-ts/adapter-node-pg`` will fail for end users.

Common solutions:

  1. Remove "private": true and publish the binder package.
  2. Bundle the binder code into the adapter's dist (e.g., configure tsup with noExternal: ['@rawsql-ts/shared-binder']).
  3. Move the dependency to devDependencies if runtime presence is unnecessary (but it's imported and used).
🤖 Prompt for AI Agents
In `@packages/_shared/binder/package.json` around lines 2 - 4, The package
"@rawsql-ts/shared-binder" is marked "private": true which prevents it being
published and breaks consumers like adapter-node-pg that import
compileNamedParameters from it (see PgTestkitClient.ts and the workspace:^
dependency). Fix by removing the "private": true field from
packages/_shared/binder/package.json and ensure the package has a proper version
and publish settings so it is published to npm; alternatively (if you prefer not
to publish the binder) update the adapter-node-pg build to bundle the binder by
adding noExternal: ['@rawsql-ts/shared-binder'] to the tsup/packager config so
compileNamedParameters is included in the adapter dist.

"main": "dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/adapters/adapter-node-pg/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
"dependencies": {
"@rawsql-ts/testkit-postgres": "workspace:^",
"@rawsql-ts/testkit-core": "workspace:^",
"@rawsql-ts/_shared/binder": "workspace:^",
"@rawsql-ts/shared-binder": "workspace:^",
"pg": "^8.13.1",
"rawsql-ts": "workspace:^"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
type PostgresTestkitClient,
type Row,
} from '@rawsql-ts/testkit-postgres';
import { compileNamedParameters, type NamedParams } from '@rawsql-ts/_shared/binder';
import { compileNamedParameters, type NamedParams } from '@rawsql-ts/shared-binder';
import type { CountableResult } from '@rawsql-ts/testkit-core';
import type {
CreatePgTestkitClientOptions,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { describe, expect, test } from 'vitest';
import { compileNamedParameters } from '@rawsql-ts/_shared/binder';
import { compileNamedParameters } from '@rawsql-ts/shared-binder';

describe('compileNamedParameters constraints', () => {
test('ignores named markers inside string literals', () => {
Expand Down
4 changes: 2 additions & 2 deletions packages/adapters/adapter-node-pg/tsconfig.build.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
"baseUrl": ".",
"paths": {
"@rawsql-ts/testkit-core": ["../../testkit-core/dist/index"],
"@rawsql-ts/_shared/binder": ["../../_shared/binder/dist"],
"@rawsql-ts/_shared/binder/*": ["../../_shared/binder/dist/*"]
"@rawsql-ts/shared-binder": ["../../_shared/binder/dist"],
"@rawsql-ts/shared-binder/*": ["../../_shared/binder/dist/*"]
}
},
"include": ["src/**/*.ts"],
Expand Down
2 changes: 1 addition & 1 deletion pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@
"@rawsql-ts/ztd-cli": ["packages/ztd-cli/src"],
"@rawsql-ts/sqlite-testkit": ["packages/drivers/sqlite-testkit/src"],
"@rawsql-ts/adapter-node-pg": ["packages/adapters/adapter-node-pg/src"],
"@rawsql-ts/_shared/binder": ["packages/_shared/binder/src"],
"@rawsql-ts/_shared/binder/*": ["packages/_shared/binder/src/*"]
"@rawsql-ts/shared-binder": ["packages/_shared/binder/src"],
"@rawsql-ts/shared-binder/*": ["packages/_shared/binder/src/*"]
},
// "rootDir": "./", /* Specify the root folder within your source files. */
// "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */
Expand Down
8 changes: 4 additions & 4 deletions vitest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ export const integrationConfig = defineConfig({
'@rawsql-ts/sql-contract': resolve(__dirname, 'packages/sql-contract/src'),
'@rawsql-ts/adapter-node-pg': resolve(__dirname, 'packages/adapters/adapter-node-pg/src'),
'@rawsql-ts/adapter-node-pg/*': resolve(__dirname, 'packages/adapters/adapter-node-pg/src/*'),
'@rawsql-ts/_shared/binder': resolve(__dirname, 'packages/_shared/binder/src'),
'@rawsql-ts/_shared/binder/*': resolve(__dirname, 'packages/_shared/binder/src/*'),
'@rawsql-ts/shared-binder': resolve(__dirname, 'packages/_shared/binder/src'),
'@rawsql-ts/shared-binder/*': resolve(__dirname, 'packages/_shared/binder/src/*'),
},
},
})
Expand All @@ -67,8 +67,8 @@ export default defineConfig({
'@rawsql-ts/sql-contract': resolve(__dirname, 'packages/sql-contract/src'),
'@rawsql-ts/adapter-node-pg': resolve(__dirname, 'packages/adapters/adapter-node-pg/src'),
'@rawsql-ts/adapter-node-pg/*': resolve(__dirname, 'packages/adapters/adapter-node-pg/src/*'),
'@rawsql-ts/_shared/binder': resolve(__dirname, 'packages/_shared/binder/src'),
'@rawsql-ts/_shared/binder/*': resolve(__dirname, 'packages/_shared/binder/src/*'),
'@rawsql-ts/shared-binder': resolve(__dirname, 'packages/_shared/binder/src'),
'@rawsql-ts/shared-binder/*': resolve(__dirname, 'packages/_shared/binder/src/*'),
},
},
})