@rep-protocol/codemod
v0.1.7
Published
Codemods for migrating to the Runtime Environment Protocol (REP).
Downloads
575
Readme
@rep-protocol/codemod
Codemod for migrating frontend codebases to the Runtime Environment Protocol.
Transforms framework-specific env var access (import.meta.env.*, process.env.*) to rep.get() calls using AST transforms — preserving formatting and adding the SDK import automatically.
Install
npm install -D @rep-protocol/codemodOr run without installing:
npx @rep-protocol/codemod --framework vite src/Usage
rep-codemod [options] [files or directories...]Options
| Flag | Default | Description |
|---|---|---|
| -f, --framework <name> | vite | Framework preset: vite, cra, next |
| --dry-run | false | Preview changes without writing files |
| --extensions <list> | ts,tsx,js,jsx | Comma-separated file extensions to process |
Transforms
--framework vite
Transforms Vite public environment variables:
// Before
const apiUrl = import.meta.env.VITE_API_URL;
const flag = import.meta.env.VITE_FEATURE_FLAGS;
// After
import { rep } from '@rep-protocol/sdk';
const apiUrl = rep.get('API_URL');
const flag = rep.get('FEATURE_FLAGS');Note: Vite built-ins (
import.meta.env.MODE,import.meta.env.DEV, etc.) are left untouched.
--framework cra
Transforms Create React App public environment variables:
// Before
const apiUrl = process.env.REACT_APP_API_URL;
// After
import { rep } from '@rep-protocol/sdk';
const apiUrl = rep.get('API_URL');--framework next
Transforms Next.js public environment variables:
// Before
const apiUrl = process.env.NEXT_PUBLIC_API_URL;
// After
import { rep } from '@rep-protocol/sdk';
const apiUrl = rep.get('API_URL');Examples
# Transform all TS/TSX files in src/ (Vite project)
rep-codemod --framework vite src/
# Dry run — see what would change without writing
rep-codemod --framework cra --dry-run src/components/
# Transform specific files
rep-codemod --framework next src/app/page.tsx src/lib/api.ts
# Transform JavaScript files
rep-codemod --framework vite --extensions js,jsx src/Behaviour
- Idempotent: Running the codemod twice on the same file produces the same result as running it once.
- Import management: Adds
import { rep } from '@rep-protocol/sdk'if absent. If the import already exists but lacks therepspecifier, it is added. - Non-destructive: Only
VITE_*,REACT_APP_*, andNEXT_PUBLIC_*prefixed variables are transformed. All otherprocess.env.*andimport.meta.env.*access is left unchanged. - Format-preserving: Uses jscodeshift with recast — original formatting and comments are preserved.
After Migration
- Remove framework-specific type augmentations (e.g.,
vite-env.d.tsImportMetaoverrides). - Run
rep typegento generate typed overloads forrep.get(). - Update your container config to set
REP_PUBLIC_*environment variables.
Specification
Implements REP-RFC-0001 §10.2 — Migration Path.
License
Apache 2.0
