版本发布 8
## [1.4.0](https://github.com/arcjet/arcjet-js/compare/v1.3.1...v1.4.0) (2026-04-14) ### 🚀 New Features Introducing Arcjet Guard - protect AI agent tool calls, background jobs, and anything beyond HTTP. [`@arcjet/guard`](https://github.com/arcjet/arcjet-js/tree/main/arcjet-guard) is a new API built for the agentic era: rate limit by any key, detect prompt injection, and catch PII. * **guard:** promote @arcjet/guard from experimental to stable release ([#5996](https://github.com/arcjet/arcjet-js/issues/5996)) ([f511f44](https://github.com/arcjet/arcjet-js/commit/f511f446912d3a677772bf84744b2853b7dc5e49)) ### 📝 Documentation * add @arcjet/guard documentation to root README ([#5993](https://github.com/arcjet/arcjet-js/issues/5993)) ([4be39c8](https://github.com/arcjet/arcjet-js/commit/4be39c8286dbab851583a1c66ce6555246afd92e)) * add MCP server mentions to @arcjet/guard ([#5974](https://github.com/arcjet/arcjet-js/issues/5974)) ([cd398c0](https://github.com/arcjet/arcjet-js/commit/cd398c0fb551e6ea394584e7a8d8cf45a8a88b52)) ### 🧹 Miscellaneous Chores * add `.claude/` to .gitignore ([#5988](https://github.com/arcjet/arcjet-js/issues/5988)) ([6f0f922](https://github.com/arcjet/arcjet-js/commit/6f0f922b5f7bc25a46c5fe4e4faa2eaf863bea13)) * always trigger workflows on release-please branch ([#5998](https://github.com/arcjet/arcjet-js/issues/5998)) ([6554cd1](https://github.com/arcjet/arcjet-js/commit/6554cd190837bc75908a239a350f3b3bc778dcc8)) * delete astro-5 example ([#5995](https://github.com/arcjet/arcjet-js/issues/5995)) ([38487cb](https://github.com/arcjet/arcjet-js/commit/38487cb49b2500c90f0992cfb3ea554adfcaa5cc)) * Deprecate `score` and `threshold` fields in `detectPromptInjection` ([#5987](https://github.com/arcjet/arcjet-js/issues/5987)) ([de46cb7](https://github.com/arcjet/arcjet-js/commit/de46cb78275cda1abcca2e34dc77cd49c4f27049)) * **examples:** Add Astro 5 example, upgrade main Astro example to v6 ([#5975](https://github.com/arcjet/arcjet-js/issues/5975)) ([a77c077](https://github.com/arcjet/arcjet-js/commit/a77c07724bacf65da3af52cd60e56132f99cc4de)) * **guard:** add legacy type resolution for typescript@<=5 ([#5978](https://github.com/arcjet/arcjet-js/issues/5978)) ([fd6ad6d](https://github.com/arcjet/arcjet-js/commit/fd6ad6dff6f32379ec1e119a98675b7577469c56)) * **guard:** introduce arcjet guard js ([#5957](https://github.com/arcjet/arcjet-js/issues/5957)) ([53ff2e2](https://github.com/arcjet/arcjet-js/commit/53ff2e206c665431799e47d43c938b486d6b6eb7)) * **guard:** update protobuf ([#5986](https://github.com/arcjet/arcjet-js/issues/5986)) ([25f0e9e](https://github.com/arcjet/arcjet-js/commit/25f0e9e0d6acd81024addeadb9083b7e78b8a226)) * **proto:** sync generated proto ([#5994](https://github.com/arcjet/arcjet-js/issues/5994)) ([25b11fe](https://github.com/arcjet/arcjet-js/commit/25b11feb2b811749d180cf0c5ed5d81b823aad8d)) * regenerate wasm binaries after aws-lc-rs update ([#5969](https://github.com/arcjet/arcjet-js/issues/5969)) ([bda5448](https://github.com/arcjet/arcjet-js/commit/bda544851f3133be47d5a16863a83dfcb6dbd10d)) ### 🔨 Build System * **deps-dev:** bump vite from 7.3.1 to 7.3.2 ([#5980](https://github.com/arcjet/arcjet-js/issues/5980)) ([8a253f6](https://github.com/arcjet/arcjet-js/commit/8a253f621d30f0e345954863019dd3200c04e0e1)) * **deps-dev:** bump vite from 7.3.1 to 7.3.2 in /examples/react-router ([#5982](https://github.com/arcjet/arcjet-js/issues/5982)) ([ddf3416](https://github.com/arcjet/arcjet-js/commit/ddf34162074df45231279b76c1fa74255139aafc)) * **deps-dev:** bump vite from 7.3.1 to 7.3.2 in /examples/react-router-middleware ([#5985](https://github.com/arcjet/arcjet-js/issues/5985)) ([e36cf35](https://github.com/arcjet/arcjet-js/commit/e36cf3517a624a93d99f0aa27d3b5e510c602f15)) * **deps:** bump @nestjs/core from 11.1.17 to 11.1.18 in /examples/nestjs ([#5983](https://github.com/arcjet/arcjet-js/issues/5983)) ([514ae8b](https://github.com/arcjet/arcjet-js/commit/514ae8b812cf790d55ad0c00fc097a00ef49363a)) * **deps:** bump unhead and @unhead/vue in /examples/nuxt ([#5989](https://github.com/arcjet/arcjet-js/issues/5989)) ([6add894](https://github.com/arcjet/arcjet-js/commit/6add894f9061e03deed4adb6af12daf9b9f8ab62)) * **deps:** bump vite from 7.3.1 to 7.3.2 in /examples/nuxt ([#5981](https://github.com/arcjet/arcjet-js/issues/5981)) ([97138bc](https://github.com/arcjet/arcjet-js/commit/97138bcaf0755bce6cf1bc550c8079b5706e37a5)) * **deps:** bump vite in /examples/remix-express ([#5977](https://github.com/arcjet/arcjet-js/issues/5977)) ([3b97d6f](https://github.com/arcjet/arcjet-js/commit/3b97d6f93a141b63060d14ba65cdadf798736370))
## [1.2.0](https://github.com/arcjet/arcjet-js/compare/v1.1.0...v1.2.0) (2026-03-06) ### 🚀 New Features * add detect_prompt_injection rule ([#5871](https://github.com/arcjet/arcjet-js/issues/5871)) ([b801a6b](https://github.com/arcjet/arcjet-js/commit/b801a6b0f54e910cd13666c3689157bbe1812bc6)) * **filter:** add support for local filter fields ([#5819](https://github.com/arcjet/arcjet-js/issues/5819)) ([42e1a06](https://github.com/arcjet/arcjet-js/commit/42e1a06bd649ed8d9a0d2644b01095f2fcf97835)) ### 🪲 Bug Fixes * **arcjet:** better `protectSignup` error messages ([#5797](https://github.com/arcjet/arcjet-js/issues/5797)) ([06267d9](https://github.com/arcjet/arcjet-js/commit/06267d96ed48b46c9a4596bb296e4e28faa69350)) * **arcjet:** better error w/o `rules` ([#5799](https://github.com/arcjet/arcjet-js/issues/5799)) ([57be82b](https://github.com/arcjet/arcjet-js/commit/57be82bb19ea9ea10552f08d965f316bccfd2a67)) ### 🧹 Miscellaneous Chores * add new bots to well-known bots list ([#5801](https://github.com/arcjet/arcjet-js/issues/5801)) ([b4d3c32](https://github.com/arcjet/arcjet-js/commit/b4d3c326d878dbe849f02dd9f09d0c5210b4f291)) * remove nextjs-14-nextauth-4 example ([#5820](https://github.com/arcjet/arcjet-js/issues/5820)) ([216543f](https://github.com/arcjet/arcjet-js/commit/216543fbcbb94593883c7990c161846c83ccacbd)) * rename to reasonPromptInjection ([#5902](https://github.com/arcjet/arcjet-js/issues/5902)) ([7b78000](https://github.com/arcjet/arcjet-js/commit/7b780004242ec28998a983817ea78ebeab3a34d3)) ### 📚 Tests * **arcjet:** remove unneeded type casts ([#5798](https://github.com/arcjet/arcjet-js/issues/5798)) ([42616a9](https://github.com/arcjet/arcjet-js/commit/42616a9ff6d08a571637adb83042680f0aaec81e))
## [1.0.0-beta.12](https://github.com/arcjet/arcjet-js/compare/v1.0.0-beta.11...v1.0.0-beta.12) (2025-09-22) ### 🚀 New Features * add React Router integration ([#5199](https://github.com/arcjet/arcjet-js/issues/5199)) ([498292e](https://github.com/arcjet/arcjet-js/commit/498292e9a86efd3e1e45b504023e02bcbf227124)) * **analye-wasm, redact-wasm:** ignore dashes in card numbers ([#5210](https://github.com/arcjet/arcjet-js/issues/5210)) ([5c414d6](https://github.com/arcjet/arcjet-js/commit/5c414d605b48dd6c6054c18dc0d0b1d9a0bfbe07)) * **arcjet:** add IP-related fields to filters ([#5170](https://github.com/arcjet/arcjet-js/issues/5170)) ([d0aeb84](https://github.com/arcjet/arcjet-js/commit/d0aeb84ab1d545fd3e34b7ddc20a83c4121e479b)) * **filters:** add limit to 10 expressions, 1024 bytes ([#5212](https://github.com/arcjet/arcjet-js/issues/5212)) ([502288a](https://github.com/arcjet/arcjet-js/commit/502288aabd9b95a3905cf62d1e50e65f25fbfb61)) * **stable-hash, transport:** support `workerd` ([#5077](https://github.com/arcjet/arcjet-js/issues/5077)) ([13c90d6](https://github.com/arcjet/arcjet-js/commit/13c90d6340747f7e5f94768c93b75e353aadac9a)) ### 🪲 Bug Fixes * **arcjet:** show error about incorrect `characteristics` in logs ([#5078](https://github.com/arcjet/arcjet-js/issues/5078)) ([9839c9c](https://github.com/arcjet/arcjet-js/commit/9839c9c5dd3225e14891b6f863d47e27021b85a4)) * **astro:** fix types, zod validation ([#5052](https://github.com/arcjet/arcjet-js/issues/5052)) ([ea82f8f](https://github.com/arcjet/arcjet-js/commit/ea82f8fbf35bed63aadbcd020d9dbe71f73c204f)) * **examples:** add styles to `remix-express` ([#5115](https://github.com/arcjet/arcjet-js/issues/5115)) ([783db87](https://github.com/arcjet/arcjet-js/commit/783db87ac4cb5f76d33531fac96f5cab8aaab8c7)) ### 📝 Documentation * add JSDocs examples to `filter` rule ([#5208](https://github.com/arcjet/arcjet-js/issues/5208)) ([c4e506a](https://github.com/arcjet/arcjet-js/commit/c4e506a756bb1a9ad201d44f3e064d0347c40c51)) ### 🧹 Miscellaneous Chores * **ci:** Remove dependabot groups on examples and apply cooldown to direct deps ([#5202](https://github.com/arcjet/arcjet-js/issues/5202)) ([9058a24](https://github.com/arcjet/arcjet-js/commit/9058a24228e27483857f4bfd23b99fa24a0d73e1)) * **examples:** remove `experimental.nodeMiddleware` from example ([#5124](https://github.com/arcjet/arcjet-js/issues/5124)) ([408a26e](https://github.com/arcjet/arcjet-js/commit/408a26e917bd4b03dd93de52ecfe3070efac4ddd)) ### 📚 Tests * **astro:** add tests ([#5069](https://github.com/arcjet/arcjet-js/issues/5069)) ([e6d9980](https://github.com/arcjet/arcjet-js/commit/e6d9980977af2df067df9ce774e9bee04aa87d69))
## [1.0.0-beta.11](https://github.com/arcjet/arcjet-js/compare/v1.0.0-beta.10...v1.0.0-beta.11) (2025-09-03) ### ⚠ BREAKING CHANGES * **redact:** improve types around custom entities ([#4883](https://github.com/arcjet/arcjet-js/issues/4883)) * **protocol:** remove enum-like objects ([#5053](https://github.com/arcjet/arcjet-js/issues/5053)) * **env:** remove support for explicit port on orb ([#4988](https://github.com/arcjet/arcjet-js/issues/4988)) ### 🚀 New Features * add filter rule ([#4802](https://github.com/arcjet/arcjet-js/issues/4802)) ([40953e1](https://github.com/arcjet/arcjet-js/commit/40953e1c704eea2765a6cb8231a781df547af90c)) * **env:** Support trailing slashes on ARCJET_BASE_URL ([#5035](https://github.com/arcjet/arcjet-js/issues/5035)) ([db1a4ac](https://github.com/arcjet/arcjet-js/commit/db1a4ac2fd713db1f9b03825eb81ea1199fdaa4a)) * **ip:** expose `Cidr` type ([#4877](https://github.com/arcjet/arcjet-js/issues/4877)) ([96674f4](https://github.com/arcjet/arcjet-js/commit/96674f447e4f79d0592453f548bdb706ac30b49a)) ### 🪲 Bug Fixes * **env:** remove support for explicit port on orb ([#4988](https://github.com/arcjet/arcjet-js/issues/4988)) ([3e601d7](https://github.com/arcjet/arcjet-js/commit/3e601d7929c5e3a13160a9c61925465887a80a7b)) * **protocol:** Remove change that disjoined IP details and assertions ([#4859](https://github.com/arcjet/arcjet-js/issues/4859)) ([#4913](https://github.com/arcjet/arcjet-js/issues/4913)) ([3304e9c](https://github.com/arcjet/arcjet-js/commit/3304e9c4280cf616f6a7f6466b8088e796425e53)) * **types:** remove need for `dom.iterable`, `dom`, lib ([#5047](https://github.com/arcjet/arcjet-js/issues/5047)) ([fba8564](https://github.com/arcjet/arcjet-js/commit/fba85640bd24f1ab2906b1e43159d9e8dc89fd37)) ### 📝 Documentation * add info on derivative works to license sections ([#4654](https://github.com/arcjet/arcjet-js/issues/4654)) ([d427c39](https://github.com/arcjet/arcjet-js/commit/d427c394098b4dfde8756a7d8ab25eb291b278a0)) * add JSDocs to exposed API in 10 utilities ([#4741](https://github.com/arcjet/arcjet-js/issues/4741)) ([f836ea2](https://github.com/arcjet/arcjet-js/commit/f836ea2533cf4726a7cacd3462ea1770801e9889)) * **analyze-wasm:** add JSDocs ([#4996](https://github.com/arcjet/arcjet-js/issues/4996)) ([e7a4ba6](https://github.com/arcjet/arcjet-js/commit/e7a4ba6193d63a2b1d95e19eec22f264e86b7c18)) * **arcjet:** add JSDocs ([#4997](https://github.com/arcjet/arcjet-js/issues/4997)) ([de57d5e](https://github.com/arcjet/arcjet-js/commit/de57d5e68864b620c2b9e76c97866565e602afb6)) * **astro:** add JSDocs ([#5015](https://github.com/arcjet/arcjet-js/issues/5015)) ([131e781](https://github.com/arcjet/arcjet-js/commit/131e7814b2ff0cc8ce76e3b2236b581f28efbf9a)) * **bun:** add JSDocs ([#5018](https://github.com/arcjet/arcjet-js/issues/5018)) ([a9e946a](https://github.com/arcjet/arcjet-js/commit/a9e946aac2b59a87431cc19de0d6d6b48a4b1a79)) * **deno:** add JSDocs ([#5031](https://github.com/arcjet/arcjet-js/issues/5031)) ([18a2700](https://github.com/arcjet/arcjet-js/commit/18a27006f2934d9716edf8fd892bf988ed5e74c7)) * **examples:** remove unneeded port from steps ([#4987](https://github.com/arcjet/arcjet-js/issues/4987)) ([a908b16](https://github.com/arcjet/arcjet-js/commit/a908b162aa6f7578d469b569e8bf156927ad178a)) * **fastify:** refactor JSDocs ([#5032](https://github.com/arcjet/arcjet-js/issues/5032)) ([9c7405f](https://github.com/arcjet/arcjet-js/commit/9c7405f4db86353758e4b4e17fc360aff7e512f5)) * **logger:** add JSDocs ([#4839](https://github.com/arcjet/arcjet-js/issues/4839)) ([107c145](https://github.com/arcjet/arcjet-js/commit/107c1455cc2ae36bbc75909097a50c67a4e67129)) * **nest:** add JSDocs ([#5034](https://github.com/arcjet/arcjet-js/issues/5034)) ([0ff6b3f](https://github.com/arcjet/arcjet-js/commit/0ff6b3fc1b74943d8e08e56678646c4ef2785d1b)) * **next:** refactor JSDocs ([#5038](https://github.com/arcjet/arcjet-js/issues/5038)) ([fc61a27](https://github.com/arcjet/arcjet-js/commit/fc61a279906c789a6d5cb7bab12a4cd6135f103a)) * **node:** add JSDocs ([#5039](https://github.com/arcjet/arcjet-js/issues/5039)) ([309738a](https://github.com/arcjet/arcjet-js/commit/309738ac009d3986d27ba34e30dc23604f4e6aba)) * **nosecone-next:** add JSDocs ([#4841](https://github.com/arcjet/arcjet-js/issues/4841)) ([689ea3c](https://github.com/arcjet/arcjet-js/commit/689ea3c94ef75d574466190c5938a016932801bc)) * **nosecone-sveltekit:** add JSDocs ([#4842](https://github.com/arcjet/arcjet-js/issues/4842)) ([de708af](https://github.com/arcjet/arcjet-js/commit/de708af03090b2c6f299067719d3e038d4e44063)) * **nosecone:** add derivative works to readme ([#4854](https://github.com/arcjet/arcjet-js/issues/4854)) ([73f2bcb](https://github.com/arcjet/arcjet-js/commit/73f2bcb87faca426938d5186287321be6e3f8915)) * **nosecone:** add JSDocs ([#4840](https://github.com/arcjet/arcjet-js/issues/4840)) ([ead53e5](https://github.com/arcjet/arcjet-js/commit/ead53e510ecb93ded2400557333868eed63875bb)) * **protocol:** add JSDocs ([#4851](https://github.com/arcjet/arcjet-js/issues/4851)) ([c1021e9](https://github.com/arcjet/arcjet-js/commit/c1021e9b6319297d718f2926fcccab2a28a91a93)) * **readme:** fix list of example apps ([#4891](https://github.com/arcjet/arcjet-js/issues/4891)) ([36ea1ca](https://github.com/arcjet/arcjet-js/commit/36ea1ca0f3adfb05f99f7856b3101d2b7c326075)) * **readme:** fix list of quick start guides ([#4890](https://github.com/arcjet/arcjet-js/issues/4890)) ([e90d6e4](https://github.com/arcjet/arcjet-js/commit/e90d6e4c51848da17b3d082e757563149704a2a0)) * **redact-wasm:** add JSDocs ([#4844](https://github.com/arcjet/arcjet-js/issues/4844)) ([e187ff8](https://github.com/arcjet/arcjet-js/commit/e187ff855e1f4873957b131f747bd7cb876ee25a)) * **redact:** add JSDocs ([#4843](https://github.com/arcjet/arcjet-js/issues/4843)) ([b6b14bb](https://github.com/arcjet/arcjet-js/commit/b6b14bb5e5b161d334a1fcd6eb6ed7f565c49f24)) * **remix:** add JSDocs ([#5049](https://github.com/arcjet/arcjet-js/issues/5049)) ([4a9efcf](https://github.com/arcjet/arcjet-js/commit/4a9efcf377364b20a930f4a4ce7a1b2172fc296d)) * **rollup-config:** add JSDocs ([#4845](https://github.com/arcjet/arcjet-js/issues/4845)) ([3b5b477](https://github.com/arcjet/arcjet-js/commit/3b5b477f6087e3374c778a0749e5cb5c798e5908)) * **runtime:** add JSDocs ([#4846](https://github.com/arcjet/arcjet-js/issues/4846)) ([a740694](https://github.com/arcjet/arcjet-js/commit/a7406942dbeed93304e0724228e745040ee93822)) * **sprintf:** add JSDocs ([#4847](https://github.com/arcjet/arcjet-js/issues/4847)) ([a5b5084](https://github.com/arcjet/arcjet-js/commit/a5b50840f13ee03371166fa2655a54180d30aacc)) * **sprintf:** add JSDocs ([#4848](https://github.com/arcjet/arcjet-js/issues/4848)) ([d9b0adb](https://github.com/arcjet/arcjet-js/commit/d9b0adb94c243cf5894f64005ad722ad4264145d)) * **stable-hash:** add derivative work to readme ([#4858](https://github.com/arcjet/arcjet-js/issues/4858)) ([b693f2b](https://github.com/arcjet/arcjet-js/commit/b693f2b7125076edc19a15b58e5e8f0a8d226175)) * **sveltekit:** add JSDocs ([#5050](https://github.com/arcjet/arcjet-js/issues/5050)) ([8077f9c](https://github.com/arcjet/arcjet-js/commit/8077f9cd7b77f46e9a6d0e318404a94b70ae7151)) * **transport:** add JSDocs ([#4849](https://github.com/arcjet/arcjet-js/issues/4849)) ([a59390b](https://github.com/arcjet/arcjet-js/commit/a59390be6c248d641f910fe4ed4a72f8119fe1f1)) ### 🧹 Miscellaneous Chores * **decorate:** add type errors for invalid values ([#4865](https://github.com/arcjet/arcjet-js/issues/4865)) ([0f73483](https://github.com/arcjet/arcjet-js/commit/0f73483b8e8430af9d327a880a363b54bf4ef2fe)) * **example:** Update Gatsby overrides ([#5036](https://github.com/arcjet/arcjet-js/issues/5036)) ([fd0b115](https://github.com/arcjet/arcjet-js/commit/fd0b11576083691e73669a571458205f9a93f95c)) * **headers:** expose named export, deprecate default ([#4860](https://github.com/arcjet/arcjet-js/issues/4860)) ([8d716b9](https://github.com/arcjet/arcjet-js/commit/8d716b99430470a842f2648092736098abdaab66)) * **ip:** expose named export, deprecate default ([#4876](https://github.com/arcjet/arcjet-js/issues/4876)) ([fcb83a3](https://github.com/arcjet/arcjet-js/commit/fcb83a304e1b9ba16b788e7a1209a61af2193f94)) * **logger:** rename `LoggerOptions` to `Options` ([#4874](https://github.com/arcjet/arcjet-js/issues/4874)) ([78962de](https://github.com/arcjet/arcjet-js/commit/78962de6ef97485f1aa8c24fabbfb70cab414fee)) * normalize `package-lock.json` ([#4794](https://github.com/arcjet/arcjet-js/issues/4794)) ([e17962b](https://github.com/arcjet/arcjet-js/commit/e17962be6f229186817001ff5a4f7f7d78c31e47)) * **nosecone-next:** expose named export, deprecate default ([#4879](https://github.com/arcjet/arcjet-js/issues/4879)) ([605e647](https://github.com/arcjet/arcjet-js/commit/605e647fbc721e841bf037fe59f47a6089ec7f37)) * **nosecone-sveltekit:** expose named export, deprecate default ([#4880](https://github.com/arcjet/arcjet-js/issues/4880)) ([d0e9aaf](https://github.com/arcjet/arcjet-js/commit/d0e9aaf83c7b3fc2609ade169af4641308d8c513)) * **nosecone:** expose `Options`, deprecate `NoseconeOptions` ([#4855](https://github.com/arcjet/arcjet-js/issues/4855)) ([c504315](https://github.com/arcjet/arcjet-js/commit/c5043154836c04d3106be333c418682212b9602f)) * **nosecone:** expose named export, deprecate default ([#4878](https://github.com/arcjet/arcjet-js/issues/4878)) ([e7607de](https://github.com/arcjet/arcjet-js/commit/e7607de8dd79f12ec28f0a50a7fb835955520365)) * **protocol:** add `hasAsn`, deprecate `hasASN` ([#4889](https://github.com/arcjet/arcjet-js/issues/4889)) ([4990e80](https://github.com/arcjet/arcjet-js/commit/4990e8084ae193c20955e76abe7a1619eac82a80)) * **protocol:** remove enum-like objects ([#5053](https://github.com/arcjet/arcjet-js/issues/5053)) ([cc76e1c](https://github.com/arcjet/arcjet-js/commit/cc76e1cf778e8d6d69a3023d61164908d39299ce)) * **sprintf:** expose named export, deprecate default ([#4875](https://github.com/arcjet/arcjet-js/issues/4875)) ([a2624b4](https://github.com/arcjet/arcjet-js/commit/a2624b4998e2e9d05e83b417411eb3cddfcab18b)) * **tsconfig:** remove `@arcjet/tsconfig` ([#5022](https://github.com/arcjet/arcjet-js/issues/5022)) ([fdca6a9](https://github.com/arcjet/arcjet-js/commit/fdca6a9b052fa6711cc56f81b46b19bd6aa7acbb)) ### ⌨️ Code Refactoring * **ip:** rename identifiers to match other casing ([#4723](https://github.com/arcjet/arcjet-js/issues/4723)) ([4cbd844](https://github.com/arcjet/arcjet-js/commit/4cbd84471216eee6183a686774897bc7ce95f348)) * **logger:** replace abbreviations with words ([#4853](https://github.com/arcjet/arcjet-js/issues/4853)) ([de963dc](https://github.com/arcjet/arcjet-js/commit/de963dc45df4ecbd4fe15127ca945f1934466ba0)) * **logger:** use more specific type than `unknown` ([#4873](https://github.com/arcjet/arcjet-js/issues/4873)) ([5025378](https://github.com/arcjet/arcjet-js/commit/5025378577b40a2c6dad9a41929bca94aedf6a4b)) * **protocol:** remove unneeded type utility ([#4859](https://github.com/arcjet/arcjet-js/issues/4859)) ([0a638ae](https://github.com/arcjet/arcjet-js/commit/0a638ae8e2d680fbe3c33556f3011f4ad733f5ad)) * **redact:** improve types around custom entities ([#4883](https://github.com/arcjet/arcjet-js/issues/4883)) ([0b09945](https://github.com/arcjet/arcjet-js/commit/0b0994591a2e344c5102089cf83cf0613d506cfe)) * **redact:** remove repetition in code ([#4881](https://github.com/arcjet/arcjet-js/issues/4881)) ([191ccb7](https://github.com/arcjet/arcjet-js/commit/191ccb7105e6cc6f8e949ff56163dba0758c5d79)) * **redact:** reuse exposed types ([#4856](https://github.com/arcjet/arcjet-js/issues/4856)) ([2380307](https://github.com/arcjet/arcjet-js/commit/2380307a7b82ed1a9dc4c3bb3167475a9cfe12eb)) * **sprintf:** replace abbreviations with words ([#4857](https://github.com/arcjet/arcjet-js/issues/4857)) ([13bac85](https://github.com/arcjet/arcjet-js/commit/13bac85d164ca6b86e78bd8cded03403abb087bc)) ### 📚 Tests * **protocol:** add type guard tests for `ArcjetIpDetails` ([#4888](https://github.com/arcjet/arcjet-js/issues/4888)) ([98072bc](https://github.com/arcjet/arcjet-js/commit/98072bcb146f99f6983f9fe4dbe225b3c7e3fe82)) ### ✅ Continuous Integration * lock actions to shas ([#4971](https://github.com/arcjet/arcjet-js/issues/4971)) ([5efd131](https://github.com/arcjet/arcjet-js/commit/5efd1311852a347f03c8a6e6ee127dfa79b53da4))
## [1.0.0-beta.9](https://github.com/arcjet/arcjet-js/compare/v1.0.0-beta.8...v1.0.0-beta.9) (2025-07-09) ### =� New Features * add Fastify integration ([#4538](https://github.com/arcjet/arcjet-js/issues/4538)) ([d5922e4](https://github.com/arcjet/arcjet-js/commit/d5922e4c40d3485ab111f8ae587c5c6a6fb716e4)) * **protocol:** Add Fastify stack ([#4570](https://github.com/arcjet/arcjet-js/issues/4570)) ([538818d](https://github.com/arcjet/arcjet-js/commit/538818d63b4e4925accab003c0ffdc693b519d82)) ### >� Bug Fixes * **bun:** Rely on connect-web to communicate from Bun runtime ([#4523](https://github.com/arcjet/arcjet-js/issues/4523)) ([c9b26b0](https://github.com/arcjet/arcjet-js/commit/c9b26b0948fe45fd905bd020b9486dd7a6f13c9a)) ### =� Documentation * add compatibility section ([#4517](https://github.com/arcjet/arcjet-js/issues/4517)) ([506da27](https://github.com/arcjet/arcjet-js/commit/506da27fc92944baebc2322ae01b0e4fcd667d7e)) * Add relevant links to each package readme ([#4429](https://github.com/arcjet/arcjet-js/issues/4429)) ([2653ab0](https://github.com/arcjet/arcjet-js/commit/2653ab0ea93eee7a1b921e7cf3ab403a825bef3d)) ### >� Miscellaneous Chores * Add `keywords` to `package.json`s ([#4408](https://github.com/arcjet/arcjet-js/issues/4408)) ([4f09478](https://github.com/arcjet/arcjet-js/commit/4f094781c3e2fb80df4186b92185cbc295880b5c)) * **arcjet:** Reduce timeouts and other transport issues to info log ([#4411](https://github.com/arcjet/arcjet-js/issues/4411)) ([c148bab](https://github.com/arcjet/arcjet-js/commit/c148babca42be753629641c51a8e8a0bac5730c0)) * **astro:** add temporary warning message for fully static sites ([#4278](https://github.com/arcjet/arcjet-js/issues/4278)) ([6d093be](https://github.com/arcjet/arcjet-js/commit/6d093be4508b6898f752f566df832313b0688a56)) * **astro:** Increase minimum peerDependency ([#4432](https://github.com/arcjet/arcjet-js/issues/4432)) ([a0453e2](https://github.com/arcjet/arcjet-js/commit/a0453e246cda9c6abf90c446351a9405c1d873f4)), closes [#3094](https://github.com/arcjet/arcjet-js/issues/3094) * Ensure all sample code checking .isDenied() returns error response. ([#4552](https://github.com/arcjet/arcjet-js/issues/4552)) ([8fc2d2d](https://github.com/arcjet/arcjet-js/commit/8fc2d2d262adee2cb35137939b4a0cb03e60b9a6)) * **example:** fix typo in svelte example ([#4518](https://github.com/arcjet/arcjet-js/issues/4518)) ([6b72298](https://github.com/arcjet/arcjet-js/commit/6b722987bffeff27561d8c873e05f8ed06c86e83)) * Fix `jco` name in dependabot ([#4371](https://github.com/arcjet/arcjet-js/issues/4371)) ([809fe76](https://github.com/arcjet/arcjet-js/commit/809fe7686088c20176cef63f747298e68966a4ef)) * Fix missing file extension in test ([#4407](https://github.com/arcjet/arcjet-js/issues/4407)) ([b694dad](https://github.com/arcjet/arcjet-js/commit/b694dad98657acaebed4424d55b406ece954beff)) * Fix Rollup on Node 24 ([#4406](https://github.com/arcjet/arcjet-js/issues/4406)) ([1853b1a](https://github.com/arcjet/arcjet-js/commit/1853b1ac9f6da42b7ac9852273426ea53df67017)) * improve Astro SDK description ([#4491](https://github.com/arcjet/arcjet-js/issues/4491)) ([00482c5](https://github.com/arcjet/arcjet-js/commit/00482c5a5a1cdb9ae4ad05afdc65c089f6c84d66)) * remove `expect`, references to `jest` ([#4415](https://github.com/arcjet/arcjet-js/issues/4415)) ([2c44c39](https://github.com/arcjet/arcjet-js/commit/2c44c39dfeccee74321a3425a3e5b2d5fa480c42)) ### ( Code Refactoring * Clean `files` fields in `package.json`s ([#4441](https://github.com/arcjet/arcjet-js/issues/4441)) ([fd7913b](https://github.com/arcjet/arcjet-js/commit/fd7913bf0c28d05740d94cf50f5939ee2b6f98fa)) * remove unneeded `nbsp` with regular space ([#4503](https://github.com/arcjet/arcjet-js/issues/4503)) ([274114d](https://github.com/arcjet/arcjet-js/commit/274114df9979da55191226b438ea885c14a643ec)) * rename use of deprecated method name ([#4504](https://github.com/arcjet/arcjet-js/issues/4504)) ([2b30a4d](https://github.com/arcjet/arcjet-js/commit/2b30a4dd2f13dcaaf0391f7192c29e73b585cedb)) ### =� Tests * add actual tests for reasons ([#4516](https://github.com/arcjet/arcjet-js/issues/4516)) ([768f85e](https://github.com/arcjet/arcjet-js/commit/768f85ef46a1372916b322f2c0a085cc4b95714f)) * add tests for `analyze` ([#4564](https://github.com/arcjet/arcjet-js/issues/4564)) ([7ef59bb](https://github.com/arcjet/arcjet-js/commit/7ef59bbaa9531d4b6802339b8f4f9e2a0e13228f)) * clean cache tests ([#4472](https://github.com/arcjet/arcjet-js/issues/4472)) ([92b7335](https://github.com/arcjet/arcjet-js/commit/92b7335cdb5ac41e1f9be91b5ec741e426aa6abc)) * clean protocol tests ([#4479](https://github.com/arcjet/arcjet-js/issues/4479)) ([c67d517](https://github.com/arcjet/arcjet-js/commit/c67d5179a5be2d64fea5e0f046da043f2c6f5b60)) * rename confusing test cases ([#4515](https://github.com/arcjet/arcjet-js/issues/4515)) ([fe20b6d](https://github.com/arcjet/arcjet-js/commit/fe20b6d7e83730302a13e704e9f33c52144f493e)) ### =( Build System * add separate core, coverage tests ([#4480](https://github.com/arcjet/arcjet-js/issues/4480)) ([61c2c50](https://github.com/arcjet/arcjet-js/commit/61c2c50a94ac9712dfebd1a972e067cc0788c44a)) ### Continuous Integration * Add Node.js 22, 24 ([#4414](https://github.com/arcjet/arcjet-js/issues/4414)) ([0fa6743](https://github.com/arcjet/arcjet-js/commit/0fa6743f10402bc082c50a716273165db5a9da22))
## [1.0.0-beta.8](https://github.com/arcjet/arcjet-js/compare/v1.0.0-beta.7...v1.0.0-beta.8) (2025-05-28) ### ⚠ BREAKING CHANGES * **arcjet:** Require every rule to have a validate & protect function ([#4204](https://github.com/arcjet/arcjet-js/issues/4204)) ### 🚀 New Features * **arcjet:** Require every rule to have a validate & protect function ([#4204](https://github.com/arcjet/arcjet-js/issues/4204)) ([c5ee233](https://github.com/arcjet/arcjet-js/commit/c5ee233c69e45866c52f1f7c9876ac5cb81ab246)) * **arcjet:** Segment cache entries by rule ([#4191](https://github.com/arcjet/arcjet-js/issues/4191)) ([2f3c8a8](https://github.com/arcjet/arcjet-js/commit/2f3c8a81bed27608638a8e4a0bfacf3e151b5e8c)), closes [#213](https://github.com/arcjet/arcjet-js/issues/213) * **protocol:** Add fingerprints to rule results ([#4190](https://github.com/arcjet/arcjet-js/issues/4190)) ([143bf2a](https://github.com/arcjet/arcjet-js/commit/143bf2a4575f47391d4fcb31e4d9d9da76cb5a2d)) ### 🪲 Bug Fixes * **arcjet:** Default to client characteristics if not specified on rule ([#4209](https://github.com/arcjet/arcjet-js/issues/4209)) ([e4794da](https://github.com/arcjet/arcjet-js/commit/e4794da626a9491dba9ee8beae9795ced6f6796b)), closes [#4203](https://github.com/arcjet/arcjet-js/issues/4203) ### 🧹 Miscellaneous Chores * Output full logs when turbo runs ([#4226](https://github.com/arcjet/arcjet-js/issues/4226)) ([2ba76ec](https://github.com/arcjet/arcjet-js/commit/2ba76ec057ae3720ca5a32dd800bbc34f568da73)) * Remove reviewers config ([#4103](https://github.com/arcjet/arcjet-js/issues/4103)) ([778afa9](https://github.com/arcjet/arcjet-js/commit/778afa91dc09a2ea03a202014cfe6d79bebab851)) * **stable-hash:** Change describe usage to test usage ([#4066](https://github.com/arcjet/arcjet-js/issues/4066)) ([7335e8b](https://github.com/arcjet/arcjet-js/commit/7335e8bdfec9ea181ba1e943bb6c035e16df2538))
## [1.0.0-beta.7](https://github.com/arcjet/arcjet-js/compare/v1.0.0-beta.6...v1.0.0-beta.7) (2025-05-06) ### 🚀 New Features * **protocol:** Support identifier and version on rules ([#4027](https://github.com/arcjet/arcjet-js/issues/4027)) ([37cd996](https://github.com/arcjet/arcjet-js/commit/37cd996339f167a965e043a35a98a8a35f09ab52)) ### 🪲 Bug Fixes * **arcjet-node:** Ensure `process.env.RENDER` is surfaced ([#3969](https://github.com/arcjet/arcjet-js/issues/3969)) ([18f7383](https://github.com/arcjet/arcjet-js/commit/18f7383f672eee31fbc42bdc2db4b46a60a19e87)), closes [#3899](https://github.com/arcjet/arcjet-js/issues/3899) * **protocol:** Ensure sensitiveInfo rule sends mode ([#4026](https://github.com/arcjet/arcjet-js/issues/4026)) ([3ce22ed](https://github.com/arcjet/arcjet-js/commit/3ce22ed69cffc1e6488fe09aeab49a9adfcaeecd)) ### 🧹 Miscellaneous Chores * Add note about signed commits ([#3958](https://github.com/arcjet/arcjet-js/issues/3958)) ([c76ae28](https://github.com/arcjet/arcjet-js/commit/c76ae2891946227b4245ec8c3d68ea4eff7b38a8)) * **ci:** Add permissions to each job ([#3976](https://github.com/arcjet/arcjet-js/issues/3976)) ([ce55cd7](https://github.com/arcjet/arcjet-js/commit/ce55cd78aaf787f21a33e380aba2e72f521ea927)) * Document devcontainer setup ([cf0ccd6](https://github.com/arcjet/arcjet-js/commit/cf0ccd62ccaeffe38985f1df87213ccff654c92a)) * **protocol:** Increase code coverage on ArcjetStackToProtocol ([#4025](https://github.com/arcjet/arcjet-js/issues/4025)) ([6d89564](https://github.com/arcjet/arcjet-js/commit/6d89564459efaef97bb1eee93c97addf2acda16c))
## [1.0.0-beta.6](https://github.com/arcjet/arcjet-js/compare/v1.0.0-beta.5...v1.0.0-beta.6) (2025-04-17) ### 🚀 New Features * add plaintext param to custom redact ([#3873](https://github.com/arcjet/arcjet-js/issues/3873)) ([dcff4a6](https://github.com/arcjet/arcjet-js/commit/dcff4a6d78d5824d23e5ddb5116afe26b51a3b68)) * Support Render deployments ([#3904](https://github.com/arcjet/arcjet-js/issues/3904)) ([b586318](https://github.com/arcjet/arcjet-js/commit/b58631803d7c94d4e5f9ff32321d4a35fc33b976)), closes [#3899](https://github.com/arcjet/arcjet-js/issues/3899) ### 🪲 Bug Fixes * Ensure local rules return DRY_RUN state in dry run mode ([#3820](https://github.com/arcjet/arcjet-js/issues/3820)) ([ab9e3e5](https://github.com/arcjet/arcjet-js/commit/ab9e3e5bf5be7dc65b98b9624643ebd332e8340d)), closes [#3818](https://github.com/arcjet/arcjet-js/issues/3818) * Only call decide endpoint when a local rule is in dry run mode ([#3822](https://github.com/arcjet/arcjet-js/issues/3822)) ([0530c73](https://github.com/arcjet/arcjet-js/commit/0530c738c112e0a752a662106f2bb1a080e5a70d)), closes [#3821](https://github.com/arcjet/arcjet-js/issues/3821) * **runtime:** Avoid warning during Edge Runtime compilation ([#3905](https://github.com/arcjet/arcjet-js/issues/3905)) ([b156f14](https://github.com/arcjet/arcjet-js/commit/b156f145c183489f9bc2f0be0077bf0a0284620b)), closes [#3876](https://github.com/arcjet/arcjet-js/issues/3876)