{"_id":"@contensu/directus-extension-safe-rename","_rev":"5-f54d5d20efceb59b3062cc4b84efe19c","name":"@contensu/directus-extension-safe-rename","dist-tags":{"latest":"1.0.1"},"versions":{"0.1.0":{"name":"@contensu/directus-extension-safe-rename","version":"0.1.0","keywords":["directus","directus-extension","directus-extension-bundle","schema","rename","migration"],"author":{"name":"contensu-dev"},"license":"MIT","_id":"@contensu/directus-extension-safe-rename@0.1.0","maintainers":[{"name":"contensu-dev","email":"contact@contensu.com"}],"homepage":"https://github.com/contensu/directus-extension-safe-rename","bugs":{"url":"https://github.com/contensu/directus-extension-safe-rename/issues"},"dist":{"shasum":"715b86a88616bbb0be957998c628122a7b141c3d","tarball":"https://registry.npmjs.org/@contensu/directus-extension-safe-rename/-/directus-extension-safe-rename-0.1.0.tgz","fileCount":5,"integrity":"sha512-d/DXbgoo91iwIp7RuMCmP5ZxD/pgCwTraEHkUqwEDd2YmpURAXiyU081pLapGjVDkSnGnPowyW0uaZlFFenieg==","signatures":[{"sig":"MEUCIA6xlGWiPiQUfdY5FuniuEddfiQa9RZX+QaSbFjwm2Z3AiEAv2LdXvaAKGDUOMnH5NPBQW57aiMb4nYTY8wrDoWkP5Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77731},"icon":"drive_file_rename_outline","type":"module","gitHead":"c828960fb2390f5515102f39adc0fcc168e85996","scripts":{"add":"directus-extension add","dev":"directus-extension build -w --no-minify","link":"directus-extension link","build":"directus-extension build","validate":"directus-extension validate"},"_npmUser":{"name":"contensu-dev","email":"contact@contensu.com"},"repository":{"url":"git+https://github.com/contensu/directus-extension-safe-rename.git","type":"git"},"_npmVersion":"10.9.4","description":"Safely rename Directus collections and fields with impact analysis","directories":{},"_nodeVersion":"22.22.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"vue":"3.5.27","knex":"3.1.0","sass":"1.97.3","typescript":"5.9.3","@types/express":"5.0.6","@directus/types":"14.3.0","@directus/extensions-sdk":"17.0.5"},"directus:extension":{"host":"^10.10.0","path":{"api":"dist/api.js","app":"dist/app.js"},"type":"bundle","entries":[{"name":"safe-rename-module","type":"module","source":"src/safe-rename-module/index.ts"},{"name":"safe-rename-endpoint","type":"endpoint","source":"src/safe-rename-endpoint/index.ts"}]},"_npmOperationalInternal":{"tmp":"tmp/directus-extension-safe-rename_0.1.0_1772980627035_0.06016770460594101","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@contensu/directus-extension-safe-rename","version":"0.1.1","keywords":["directus","directus-extension","directus-extension-bundle","schema","rename","migration"],"author":{"name":"contensu-dev"},"license":"MIT","_id":"@contensu/directus-extension-safe-rename@0.1.1","maintainers":[{"name":"contensu-dev","email":"contact@contensu.com"}],"homepage":"https://github.com/contensu/directus-extension-safe-rename","bugs":{"url":"https://github.com/contensu/directus-extension-safe-rename/issues"},"dist":{"shasum":"f4045207e5da98258dfbd967ec5bfc1e68769916","tarball":"https://registry.npmjs.org/@contensu/directus-extension-safe-rename/-/directus-extension-safe-rename-0.1.1.tgz","fileCount":5,"integrity":"sha512-8RDPqLrCs4fGexRYHUAmbNbmFT0lJNhA2b+hfbI+0OfEQUv8JIY0Y0xKvzBZLnpZglJ0jxSAHhw1lH/sTA+pNA==","signatures":[{"sig":"MEUCIFQpRhSwkk0eQCpxLspieghP4LrEKwrYECgjKiWwkl9hAiEA4pddgTMV/8loQJx6pU+yB99pKt3sY9kVEIUsmYMCXnU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77721},"icon":"drive_file_rename_outline","type":"module","gitHead":"e4166ea871a1071f4896adfc7b250598e57348bd","scripts":{"add":"directus-extension add","dev":"directus-extension build -w --no-minify","link":"directus-extension link","build":"directus-extension build","validate":"directus-extension validate"},"_npmUser":{"name":"contensu-dev","email":"contact@contensu.com"},"repository":{"url":"git+https://github.com/contensu/directus-extension-safe-rename.git","type":"git"},"_npmVersion":"10.9.4","description":"Rename collections and fields across all Directus metadata, relations, permissions, and flows.","directories":{},"_nodeVersion":"22.22.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"vue":"3.5.27","knex":"3.1.0","sass":"1.97.3","typescript":"5.9.3","@types/express":"5.0.6","@directus/types":"14.3.0","@directus/extensions-sdk":"17.0.5"},"directus:extension":{"host":"^10.10.0","path":{"api":"dist/api.js","app":"dist/app.js"},"type":"bundle","entries":[{"name":"safe-rename-module","type":"module","source":"src/safe-rename-module/index.ts"},{"name":"safe-rename-endpoint","type":"endpoint","source":"src/safe-rename-endpoint/index.ts"}]},"_npmOperationalInternal":{"tmp":"tmp/directus-extension-safe-rename_0.1.1_1772981132569_0.7312084698257888","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@contensu/directus-extension-safe-rename","version":"0.1.2","keywords":["directus","directus-extension","directus-extension-bundle","schema","rename","migration"],"author":{"name":"contensu-dev"},"license":"MIT","_id":"@contensu/directus-extension-safe-rename@0.1.2","maintainers":[{"name":"contensu-dev","email":"contact@contensu.com"}],"homepage":"https://github.com/contensu/directus-extension-safe-rename","bugs":{"url":"https://github.com/contensu/directus-extension-safe-rename/issues"},"dist":{"shasum":"45b3d16f834c811b0f5a9ba7dd9c9ac8cce0c63e","tarball":"https://registry.npmjs.org/@contensu/directus-extension-safe-rename/-/directus-extension-safe-rename-0.1.2.tgz","fileCount":5,"integrity":"sha512-VBlnJokxLNTwZNnhNPTvJbTg/fwKlMtEi37z05k3YhH47NjHOirReU04ZjpWzSsvyQ2OIKxClQT0kCuz3/Ak3A==","signatures":[{"sig":"MEUCID7n0k1w1tybwgdiyP9NMnCs1R9Kc0EkEPiEhmtcPmEQAiEA8Sn1O6g7ypir4o5cKvF3tOnDGI3U7xf3uEwTQ4+SmI4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77763},"icon":"drive_file_rename_outline","type":"module","gitHead":"c1b865d18984cf20ff89b38049954d99f9f23423","scripts":{"add":"directus-extension add","dev":"directus-extension build -w --no-minify","link":"directus-extension link","build":"directus-extension build","validate":"directus-extension validate"},"_npmUser":{"name":"contensu-dev","email":"contact@contensu.com"},"repository":{"url":"git+https://github.com/contensu/directus-extension-safe-rename.git","type":"git"},"_npmVersion":"10.9.4","description":"Rename collections and fields across all Directus metadata, relations, permissions, and flows.","directories":{},"_nodeVersion":"22.22.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"vue":"3.5.27","knex":"3.1.0","sass":"1.97.3","typescript":"5.9.3","@types/express":"5.0.6","@directus/types":"14.3.0","@directus/extensions-sdk":"17.0.5"},"directus:extension":{"host":"^10.10.0","path":{"api":"dist/api.js","app":"dist/app.js"},"type":"bundle","entries":[{"name":"safe-rename-module","type":"module","source":"src/safe-rename-module/index.ts"},{"name":"safe-rename-endpoint","type":"endpoint","source":"src/safe-rename-endpoint/index.ts"}]},"_npmOperationalInternal":{"tmp":"tmp/directus-extension-safe-rename_0.1.2_1773648831636_0.4890584631686017","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@contensu/directus-extension-safe-rename","version":"1.0.0","keywords":["directus","directus-extension","directus-extension-bundle","schema","rename","migration"],"author":{"name":"contensu-dev"},"license":"MIT","_id":"@contensu/directus-extension-safe-rename@1.0.0","maintainers":[{"name":"contensu-dev","email":"contact@contensu.com"}],"homepage":"https://github.com/contensu/directus-extension-safe-rename","bugs":{"url":"https://github.com/contensu/directus-extension-safe-rename/issues"},"dist":{"shasum":"5fed54fb3be3c8f1ffd58272566c37fe1dbe75d9","tarball":"https://registry.npmjs.org/@contensu/directus-extension-safe-rename/-/directus-extension-safe-rename-1.0.0.tgz","fileCount":5,"integrity":"sha512-PL8YYXgikO48vTlfV+UGcoJFEUpujIIRqMKr+6TbnVFbjQ1x+dMasl7DdXSIQ6k91/TCRIEdgqzA2YTNEmFrgw==","signatures":[{"sig":"MEUCIQCCj8Forxo+gWCzW87aNRJ7tD732hJXO7QFM7zv5R5RMQIgHkiOL6e02KrSrSSW9LSZEiER3E/OY26z7hyAAUuuQJw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80658},"icon":"drive_file_rename_outline","type":"module","gitHead":"26daeb333d0af749e99f65918dc6ffa0ad5a2876","scripts":{"add":"directus-extension add","dev":"directus-extension build -w --no-minify","link":"directus-extension link","test":"vitest run --no-file-parallelism","build":"directus-extension build","validate":"directus-extension validate","test:unit":"vitest run tests/unit","test:integration":"vitest run tests/integration --no-file-parallelism"},"_npmUser":{"name":"contensu-dev","email":"contact@contensu.com"},"repository":{"url":"git+https://github.com/contensu/directus-extension-safe-rename.git","type":"git"},"_npmVersion":"10.8.2","description":"Rename collections and fields across all Directus metadata, relations, permissions, and flows.","directories":{},"_nodeVersion":"20.20.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","vue":"3.5.27","knex":"3.1.0","sass":"1.97.3","vitest":"4.1.0","typescript":"5.9.3","@types/node":"25.5.0","@types/express":"5.0.6","@directus/types":"14.3.0","@directus/extensions-sdk":"17.0.5"},"directus:extension":{"host":"^10.10.0","path":{"api":"dist/api.js","app":"dist/app.js"},"type":"bundle","entries":[{"name":"safe-rename-module","type":"module","source":"src/safe-rename-module/index.ts"},{"name":"safe-rename-endpoint","type":"endpoint","source":"src/safe-rename-endpoint/index.ts"}]},"_npmOperationalInternal":{"tmp":"tmp/directus-extension-safe-rename_1.0.0_1774766242388_0.8869835596879716","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@contensu/directus-extension-safe-rename","description":"Rename collections and fields across all Directus metadata, relations, permissions, and flows.","author":{"name":"contensu-dev"},"license":"MIT","homepage":"https://github.com/contensu/directus-extension-safe-rename","repository":{"type":"git","url":"git+https://github.com/contensu/directus-extension-safe-rename.git"},"bugs":{"url":"https://github.com/contensu/directus-extension-safe-rename/issues"},"icon":"drive_file_rename_outline","version":"1.0.1","keywords":["directus","directus-extension","directus-extension-bundle","schema","rename","migration"],"type":"module","directus:extension":{"type":"bundle","path":{"app":"dist/app.js","api":"dist/api.js"},"entries":[{"type":"module","name":"safe-rename-module","source":"src/safe-rename-module/index.ts"},{"type":"endpoint","name":"safe-rename-endpoint","source":"src/safe-rename-endpoint/index.ts"}],"host":"^10.10.0"},"scripts":{"build":"directus-extension build","dev":"directus-extension build -w --no-minify","link":"directus-extension link","validate":"directus-extension validate","add":"directus-extension add","test":"vitest run --no-file-parallelism","test:unit":"vitest run tests/unit","test:integration":"vitest run tests/integration --no-file-parallelism"},"devDependencies":{"@directus/extensions-sdk":"17.0.5","@directus/types":"14.3.0","@types/express":"5.0.6","@types/node":"25.5.0","knex":"3.1.0","sass":"1.97.3","tsx":"4.21.0","typescript":"5.9.3","vitest":"4.1.0","vue":"3.5.27"},"_id":"@contensu/directus-extension-safe-rename@1.0.1","gitHead":"e29edf64f61dd67374f744b5e8413e2ae0de8d1d","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-xDk5MAXI1REHmLjLK0RsHhii8tOs4st4cSEMNwT5GE5v31uhuN100y1JxzJlliRuTZ88VwJAoW02ntSlLO2xcg==","shasum":"d3b154b7629f964f1b34b318b84d1b8297cf4ad8","tarball":"https://registry.npmjs.org/@contensu/directus-extension-safe-rename/-/directus-extension-safe-rename-1.0.1.tgz","fileCount":5,"unpackedSize":81108,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDU0g4TqVJyC39NV5TWF9wD4F85fP+7gcDgwB2VkHcG4wIhAPVJfDc1s/8gVog53wH0827Pvi/VmKr+q48tKqedq0IN"}]},"_npmUser":{"name":"contensu-dev","email":"contact@contensu.com"},"directories":{},"maintainers":[{"name":"contensu-dev","email":"contact@contensu.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/directus-extension-safe-rename_1.0.1_1784449070372_0.2796923144339303"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-08T14:37:06.934Z","modified":"2026-07-19T08:17:50.750Z","0.1.0":"2026-03-08T14:37:07.183Z","0.1.1":"2026-03-08T14:45:32.728Z","0.1.2":"2026-03-16T08:13:51.796Z","1.0.0":"2026-03-29T06:37:22.519Z","1.0.1":"2026-07-19T08:17:50.517Z"},"bugs":{"url":"https://github.com/contensu/directus-extension-safe-rename/issues"},"author":{"name":"contensu-dev"},"license":"MIT","homepage":"https://github.com/contensu/directus-extension-safe-rename","keywords":["directus","directus-extension","directus-extension-bundle","schema","rename","migration"],"repository":{"type":"git","url":"git+https://github.com/contensu/directus-extension-safe-rename.git"},"description":"Rename collections and fields across all Directus metadata, relations, permissions, and flows.","maintainers":[{"name":"contensu-dev","email":"contact@contensu.com"}],"readme":"# directus-extension-safe-rename\n\nA [Directus](https://directus.io) extension that lets you safely rename collections and fields — updating all metadata, relations, permissions, presets, flows, and more in a single atomic transaction.\n\nBuilt by [Contensu](https://github.com/contensu) — a Directus agency.\n\n---\n\n## Why?\n\nDirectus does not provide a built-in way to rename collections or fields after they are created. Doing it manually means hunting down every reference across a dozen system tables — and missing one breaks your project silently.\n\nThis extension handles all of that automatically.\n\n---\n\n## Features\n\n- 🏷️ **Rename collections** — renames the table and updates all Directus system tables\n- 🔤 **Rename fields** — renames the column and updates all references across metadata, relations, permissions, presets, flows, panels, and more\n- 🔗 **Relation-aware** — updates field references in related collections too (O2M, M2M, M2A)\n- 🔒 **Atomic transactions** — all changes happen in a single DB transaction, rolls back on failure\n- 🧹 **Cache clearing** — automatically clears Directus schema cache after renaming\n- 🛡️ **Protected collections** — prevents renaming of Directus system collections (`directus_*`)\n\n---\n\n## What gets updated\n\n### When renaming a collection\n\n| Table                    | Columns updated                     |\n| ------------------------ | ----------------------------------- |\n| `directus_collections`   | `collection`, `group`               |\n| `directus_fields`        | `collection`                        |\n| `directus_relations`     | `many_collection`, `one_collection` |\n| `directus_permissions`   | `collection`                        |\n| `directus_presets`       | `collection`                        |\n| `directus_shares`        | `collection`                        |\n| `directus_versions`      | `collection`                        |\n| `directus_revisions`     | `collection`, `item`                |\n| `directus_activity`      | `collection`                        |\n| `directus_notifications` | `collection`                        |\n| `directus_comments`      | `collection`                        |\n| `directus_flows`         | `options.collections[]`             |\n| `directus_operations`    | `options.collection`                |\n\n### When renaming a field\n\n| Table                  | Columns updated                                                                   |\n| ---------------------- | --------------------------------------------------------------------------------- |\n| `directus_fields`      | `field`, `group`, `options`, `display_options`, `conditions`, `validation`        |\n| `directus_relations`   | `many_field`, `one_field`, `one_collection_field`, `junction_field`, `sort_field` |\n| `directus_collections` | `archive_field`, `sort_field`, `display_template`, `item_duplication_fields`      |\n| `directus_permissions` | `fields` (CSV), `permissions`, `validation`, `presets` (JSON)                     |\n| `directus_presets`     | `layout_query`, `layout_options`, `filter`                                        |\n| `directus_flows`       | `options`                                                                         |\n| `directus_operations`  | `options`                                                                         |\n| `directus_panels`      | `options`                                                                         |\n\n---\n\n## Requirements\n\n- Directus `^11.0.0`\n- Admin access required\n\n---\n\n## Installation\n\n### Via npm (recommended)\n\n```bash\nnpm install @contensu/directus-extension-safe-rename\n```\n\nThen restart your Directus instance.\n\n### Via Directus Marketplace\n\nThis extension requires direct database access and is classified as a **non-sandboxed** extension. It will **not appear in the Directus Marketplace** by default.\n\nTo enable Marketplace installation, set the following environment variable in your Directus instance:\n\n```env\nMARKETPLACE_TRUST=\"all\"\n```\n\n> ⚠️ This setting allows installation of all non-sandboxed extensions from the Marketplace. Only enable it if you trust the extensions you are installing.\n\nFor more details, see the [Directus self-hosting extensions guide](https://directus.io/docs/self-hosting/including-extensions).\n\n---\n\n## Usage\n\n1. Go to **Settings → Project Settings** and enable the **Schema Rename** module under the Modules bar\n2. The **Schema Rename** module will now appear in the left sidebar — click it\n3. Select a collection from the list\n4. **To rename the collection** — edit the collection name field and click **Rename Collection**\n5. **To rename fields** — edit any field name in the list and click **Rename Fields**\n\n![Rename Collection](https://raw.githubusercontent.com/contensu/directus-extension-safe-rename/main/docs/images/rename-collection.png)\n\n![Rename Fields](https://raw.githubusercontent.com/contensu/directus-extension-safe-rename/main/docs/images/rename-fields.png)\n\n---\n\n## Database Support\n\n| Database      | Status    |\n| ------------- | --------- |\n| PostgreSQL 13 | ✅ Tested |\n| PostgreSQL 16 | ✅ Tested |\n| MySQL 8       | ✅ Tested |\n| MariaDB 11    | ✅ Tested |\n| SQLite        | ✅ Tested |\n\nTested against Directus `11.14.1`, `11.16.1`, and `11.17.0`.\n\n---\n\n## CI & Releases\n\nEvery pull request runs a full integration test suite across **15 jobs** (3 Directus versions × 5 databases) via GitHub Actions. Releases are published to npm automatically when a version tag is pushed.\n\n---\n\n## Roadmap\n\n- [ ] Impact analyzer — preview all changes before applying\n- [ ] Translations support\n\n---\n\n## Contributing\n\nPull requests are welcome. Please open an issue first to discuss what you would like to change.\n\n---\n\n## License\n\nMIT © [Contensu](https://github.com/contensu)\n","readmeFilename":"README.md"}