Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
502e56e
Add multi-package proposal and fingerprint script
kvz Jan 15, 2026
130eacd
Update proposal for zod3 and types strategy
kvz Jan 15, 2026
bfe042f
Refine proposal for zod versioning and type generation
kvz Jan 15, 2026
7ad5884
Add type generation scaffold and equality check
kvz Jan 15, 2026
cb65d1a
chore: monorepo structure and fingerprinting
kvz Jan 15, 2026
36114fb
chore: align types version with node and transloadit
kvz Jan 15, 2026
f989dc1
chore: add changeset for monorepo alignment
kvz Jan 15, 2026
54cad4a
chore: version packages with changesets
kvz Jan 15, 2026
c8089f6
docs: add cross-repo schema validation todo
kvz Jan 16, 2026
2e8049a
docs: mark cross-repo schema validation complete
kvz Jan 16, 2026
b7665a4
chore: sync transloadit wrapper packaging
kvz Jan 16, 2026
6e4ad08
fix: align codecov path and schema exports
kvz Jan 16, 2026
963bb5a
fix: pack job and types exports
kvz Jan 16, 2026
cbb660d
refactor: unify pack flow and exports
kvz Jan 16, 2026
4b96cde
docs: add dual zod v3/v4 generation plan
kvz Jan 16, 2026
64dbe6b
chore(zod): add v4 sync and parity checks
kvz Jan 16, 2026
06c0a82
docs: rename plan and harden zod fixtures
kvz Jan 16, 2026
32f1c52
test: guard zod export parity
kvz Jan 16, 2026
4976e0e
test: add assembly status parity fixtures
kvz Jan 16, 2026
f9b29fb
chore: slim transloadit pack output
kvz Jan 16, 2026
69963f9
docs: note legacy transloadit packaging
kvz Jan 16, 2026
df764e4
fix: stabilize e2e tooling paths
kvz Jan 16, 2026
c63cfff
chore: expand yarn check scope
kvz Jan 16, 2026
d90a343
fix: harden zod scripts and tooling
kvz Jan 16, 2026
8badb83
fix: normalize type export paths
kvz Jan 16, 2026
b3b9b6a
fix: guard zod sync patching
kvz Jan 17, 2026
0ff6c28
docs(ci): note Node 24 requirement for root tests
kvz Jan 17, 2026
c4bfdb1
chore: update tooling requirements and parity checks
kvz Jan 17, 2026
102fd5c
chore: apply yarn check formatting
kvz Jan 17, 2026
b760f8e
fix: restore biome and sync before zod tests
kvz Jan 17, 2026
eb644e1
chore: update yarn.lock
kvz Jan 17, 2026
83db9f9
Fix Biome lint after yarn install
kvz Jan 17, 2026
94c008b
Consolidate toolchain devDependencies
kvz Jan 17, 2026
e059ebd
Run knip from yarn check
kvz Jan 17, 2026
0d4dbcb
Run knip across workspaces
kvz Jan 17, 2026
bb07235
Add root knip dep scripts
kvz Jan 17, 2026
b8feec6
Run knip deps check in CI
kvz Jan 17, 2026
839192e
Add CI checks for parity and zod types
kvz Jan 17, 2026
afd002a
Refine verify scripts and CI wiring
kvz Jan 17, 2026
d1945b6
Fix CI types build and CLI bin naming
kvz Jan 17, 2026
d05e81e
Sync zod sources before typecheck
kvz Jan 17, 2026
968528b
Release patch versions
kvz Jan 17, 2026
98e88a1
Align transloadit bin entry
kvz Jan 17, 2026
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
6 changes: 3 additions & 3 deletions .ai/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ This document serves as a quick reference for agentic coding assistants working

## Check your work

After making changes, always run `corepack yarn check`, this lints with typescript, formats code,
and runs quick unit tests. Remember that this formats code and may make changes, that you are to
commit if you were working on those files.
After making changes, always run `corepack yarn check`, which runs Knip (with fixes/removals),
lints TypeScript, formats code, and runs quick unit tests. Remember that Knip and formatting may
make changes that you must review and commit when you touched the affected files.

## When running in GitHub Actions

Expand Down
3 changes: 3 additions & 0 deletions .changeset/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Changesets

Run `yarn changeset` to add a release note for your change.
16 changes: 16 additions & 0 deletions .changeset/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"$schema": "https://unpkg.com/@changesets/[email protected]/schema.json",
"changelog": [
"@changesets/cli/changelog",
{
"repo": "transloadit/node-sdk"
}
],
"commit": false,
"fixed": [["@transloadit/node", "transloadit", "@transloadit/types", "@transloadit/zod"]],
"linked": [],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": []
}
55 changes: 25 additions & 30 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,44 +21,33 @@ jobs:
with:
node-version: 22
- run: corepack yarn
- run: corepack yarn pack
- run: corepack yarn run pack
- uses: actions/upload-artifact@v4
with:
name: package
path: '*.tgz'

biome:
name: Lint (Biome)
verify:
name: Verify (fast)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: corepack yarn
- run: corepack yarn lint:js

knip:
name: Knip
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
node-version: 24
- run: corepack yarn
- run: corepack yarn knip
- run: corepack yarn verify

typescript:
name: Lint (TypeScript)
verify-full:
name: Verify (full)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
node-version: 24
- run: corepack yarn
- run: corepack yarn lint:ts
- run: corepack yarn verify:full

unit:
name: Unit tests (Node ${{ matrix.node }})
Expand All @@ -75,13 +64,18 @@ jobs:
with:
node-version: ${{ matrix.node }}
- run: corepack yarn
# Root unit tests execute TypeScript scripts via Node's strip-types support.
# Keep those on Node 24+; Node 20/22 only run @transloadit/node unit tests.
- run: corepack yarn test:unit
if: matrix.node == 24
- run: corepack yarn workspace @transloadit/node test:unit
if: matrix.node != 24
- name: Upload coverage reports artifact
if: matrix.node == 24
uses: actions/upload-artifact@v4
with:
name: coverage-reports
path: coverage/
path: packages/node/coverage/

e2e:
name: E2E tests
Expand Down Expand Up @@ -111,14 +105,14 @@ jobs:
TRANSLOADIT_KEY: ${{ secrets.TRANSLOADIT_KEY }}
TRANSLOADIT_SECRET: ${{ secrets.TRANSLOADIT_SECRET }}
NODE_OPTIONS: --trace-deprecation --trace-warnings
CLOUDFLARED_PATH: ./cloudflared-linux-amd64
CLOUDFLARED_PATH: ${{ github.workspace }}/cloudflared-linux-amd64
DEBUG: 'transloadit:*'

- name: Generate the badge from the json-summary
run: node --experimental-strip-types test/generate-coverage-badge.ts coverage/coverage-summary.json
run: node --experimental-strip-types packages/node/test/generate-coverage-badge.ts packages/node/coverage/coverage-summary.json
- name: Move HTML report and badge to the correct location
run: |
mv coverage/lcov-report static-build
mv packages/node/coverage/lcov-report static-build
mv coverage-badge.svg static-build/
# *** BEGIN PUBLISH STATIC SITE STEPS ***
# Use the standard checkout action to check out the destination repo to a separate directory
Expand Down Expand Up @@ -180,8 +174,8 @@ jobs:
runs-on: ubuntu-latest
needs:
- pack
- biome
- typescript
- verify
- verify-full
- unit
if: startsWith(github.ref, 'refs/tags/')
permissions:
Expand All @@ -191,11 +185,12 @@ jobs:
- uses: softprops/action-gh-release@v1
with:
draft: true
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
registry-url: https://registry.npmjs.org
- uses: actions/download-artifact@v4
with: { name: package }
- run: npm install -g npm@^11.5.1
- run: npm publish *.tgz --provenance
- run: corepack yarn
- run: corepack yarn changeset publish
env:
NPM_CONFIG_PROVENANCE: "true"
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ sample.js
npm-debug.log
env.sh
/coverage
packages/node/coverage

.pnp.*
.yarn/*
Expand All @@ -19,3 +20,10 @@ env.sh
.aider*
.DS_Store
.env
packages/types/src/generated
packages/zod/src/v3
packages/zod/src/v4
packages/transloadit/src
packages/transloadit/README.md
packages/transloadit/CHANGELOG.md
packages/transloadit/LICENSE
39 changes: 29 additions & 10 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ To check for updates, run:
yarn upgrade-interactive
```

## Tooling requirements

Local tooling (the TypeScript scripts in `scripts/` and package tests) requires Node 22.18+ so `node file.ts` works without flags. The published packages still support Node 20+ at runtime.

## Linting

This project is linted using Biome. You can lint the project by running:
Expand Down Expand Up @@ -79,19 +83,34 @@ Coverage reports are:

View the coverage report locally by opening `coverage/index.html` in your browser.

## Releasing
## Packaging the legacy `transloadit` package

Only maintainers can make releases. Releases to [npm](https://www.npmjs.com) are automated using GitHub actions. To make a release, perform the following steps:
The `packages/transloadit` folder is a generated legacy wrapper. The `src` directory and top-level `README.md`, `CHANGELOG.md`, and `LICENSE` are produced during packing by `scripts/prepare-transloadit.ts` and are not tracked in git. If you need to validate the legacy package contents, run:

1. Update `CHANGELOG.md` with a new entry describing the release. And `git add CHANGELOG.md && git commit -m "Update CHANGELOG.md"`.
2. Update the version using npm. This will update the version in the `package.json` file and create a git tag. E.g.:
```sh
yarn pack
```

- `npm version patch`
- OR, for pre-releases: `npm version prerelease`
## Releasing

3. Push the tag to GitHub: `git push origin main --tags`
4. If the tests pass, GitHub actions will now publish the new version to npm.
Only maintainers can make releases. Releases to [npm](https://www.npmjs.com) are automated using GitHub actions and Changesets (including the legacy `transloadit` package). To make a release, perform the following steps:

1. Create a changeset:
- `yarn changeset`
2. Version packages (updates `CHANGELOG.md` + workspace `package.json` files):
- `yarn changeset version`
- `git add -A && git commit -m "chore: version packages"`
3. Push the version commit and tags:
- `git push origin main`
4. Publish (maintainers only; GitHub Actions handles the release):
- `yarn changeset publish`
5. When successful add [release notes](https://github.com/transloadit/node-sdk/releases).
6. If this was a pre-release, remember to run this to reset the [npm `latest` tag](https://www.npmjs.com/package/transloadit?activeTab=versions) to the previous version (replace `x.y.z` with previous version):
6. Scoped packages publish with the `experimental` dist-tag by default. If you need to promote a scoped package to `latest`, update the tag manually.
7. If this was a pre-release, remember to reset the [npm `latest` tag](https://www.npmjs.com/package/transloadit?activeTab=versions) to the previous version (replace `x.y.z` with previous version):
- `npm dist-tag add [email protected] latest`

### Release FAQ

- `npm dist-tag add [email protected] latest`
- **Lockstep versions:** Changesets use a fixed group, so version bumps and releases are always in lock‑step across `transloadit`, `@transloadit/node`, `@transloadit/types`, and `@transloadit/zod`.
- **Legacy parity:** `transloadit` is generated from `@transloadit/node` artifacts via `scripts/prepare-transloadit.ts`, then verified with `yarn parity:transloadit`. Only `package.json` metadata drift is allowed; any other drift fails.
- **Experimental packages:** Scoped packages (`@transloadit/node`, `@transloadit/types`, `@transloadit/zod`) publish with the `experimental` dist-tag. The unscoped `transloadit` package remains stable.
11 changes: 9 additions & 2 deletions biome.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
{
"$schema": "https://biomejs.dev/schemas/2.2.4/schema.json",
"$schema": "https://biomejs.dev/schemas/2.3.11/schema.json",
"vcs": { "enabled": true, "clientKind": "git", "useIgnoreFile": true },
"files": {
"ignoreUnknown": false,
"includes": [
"**",
"!package.json",
"!coverage",
"!**/coverage",
"!dist",
"!fixture",
"!.vscode",
"!src/alphalib"
"!packages/**/dist",
"!packages/**/node_modules",
"!packages/node/src/alphalib"
]
},
"formatter": {
Expand Down Expand Up @@ -93,6 +96,10 @@
"actions": { "source": { "organizeImports": "on" } }
},
"overrides": [
{
"includes": ["**/package.json"],
"formatter": { "expand": "always" }
},
{
"includes": ["*.html"],
"javascript": { "formatter": { "quoteStyle": "double" } }
Expand Down
Loading