{
	"name": "remix-utils",
	"version": "9.3.1",
	"keywords": [
		"client IP address",
		"client locale",
		"client-only",
		"cors",
		"csrf",
		"hydrated",
		"json hash",
		"named action",
		"prefetch",
		"react",
		"redirect-back",
		"remix",
		"remix.run",
		"request",
		"response",
		"rolling cookie",
		"safe redirect",
		"server-only",
		"typed cookie",
		"typed session",
		"utils"
	],
	"license": "MIT",
	"author": {
		"name": "Sergio Xalambrí",
		"email": "hello@sergiodxa.com",
		"url": "https://sergiodxa.com"
	},
	"repository": {
		"type": "git",
		"url": "https://github.com/sergiodxa/remix-utils"
	},
	"funding": [
		"https://github.com/sponsors/sergiodxa"
	],
	"files": [
		"build",
		"package.json",
		"README.md"
	],
	"type": "module",
	"sideEffects": false,
	"exports": {
		"./package.json": "./package.json",
		"./middleware/basic-auth": {
			"types": "./build/server/middleware/basic-auth.d.ts",
			"default": "./build/server/middleware/basic-auth.js"
		},
		"./middleware/batcher": {
			"types": "./build/server/middleware/batcher.d.ts",
			"default": "./build/server/middleware/batcher.js"
		},
		"./middleware/context-storage": {
			"types": "./build/server/middleware/context-storage.d.ts",
			"default": "./build/server/middleware/context-storage.js"
		},
		"./middleware/cors": {
			"types": "./build/server/middleware/cors.d.ts",
			"default": "./build/server/middleware/cors.js"
		},
		"./middleware/csrf": {
			"types": "./build/server/middleware/csrf.d.ts",
			"default": "./build/server/middleware/csrf.js"
		},
		"./middleware/csrf-token": {
			"types": "./build/server/middleware/csrf-token.d.ts",
			"default": "./build/server/middleware/csrf-token.js"
		},
		"./middleware/honeypot": {
			"types": "./build/server/middleware/honeypot.d.ts",
			"default": "./build/server/middleware/honeypot.js"
		},
		"./middleware/jwk-auth": {
			"types": "./build/server/middleware/jwk-auth.d.ts",
			"default": "./build/server/middleware/jwk-auth.js"
		},
		"./middleware/logger": {
			"types": "./build/server/middleware/logger.d.ts",
			"default": "./build/server/middleware/logger.js"
		},
		"./middleware/request-id": {
			"types": "./build/server/middleware/request-id.d.ts",
			"default": "./build/server/middleware/request-id.js"
		},
		"./middleware/rolling-cookie": {
			"types": "./build/server/middleware/rolling-cookie.d.ts",
			"default": "./build/server/middleware/rolling-cookie.js"
		},
		"./middleware/secure-headers": {
			"types": "./build/server/middleware/secure-headers.d.ts",
			"default": "./build/server/middleware/secure-headers.js"
		},
		"./middleware/server-timing": {
			"types": "./build/server/middleware/server-timing.d.ts",
			"default": "./build/server/middleware/server-timing.js"
		},
		"./middleware/session": {
			"types": "./build/server/middleware/session.d.ts",
			"default": "./build/server/middleware/session.js"
		},
		"./middleware/singleton": {
			"types": "./build/server/middleware/singleton.d.ts",
			"default": "./build/server/middleware/singleton.js"
		},
		"./promise": {
			"types": "./build/common/promise.d.ts",
			"default": "./build/common/promise.js"
		},
		"./cache-assets": {
			"types": "./build/client/cache-assets.d.ts",
			"default": "./build/client/cache-assets.js"
		},
		"./cors": {
			"types": "./build/server/cors.d.ts",
			"default": "./build/server/cors.js"
		},
		"./get-client-ip-address": {
			"types": "./build/server/get-client-ip-address.d.ts",
			"default": "./build/server/get-client-ip-address.js"
		},
		"./is-prefetch": {
			"types": "./build/server/is-prefetch.d.ts",
			"default": "./build/server/is-prefetch.js"
		},
		"./json-hash": {
			"types": "./build/server/json-hash.d.ts",
			"default": "./build/server/json-hash.js"
		},
		"./named-action": {
			"types": "./build/server/named-action.d.ts",
			"default": "./build/server/named-action.js"
		},
		"./parse-accept-header": {
			"types": "./build/server/parse-accept-header.d.ts",
			"default": "./build/server/parse-accept-header.js"
		},
		"./preload-route-assets": {
			"types": "./build/server/preload-route-assets.d.ts",
			"default": "./build/server/preload-route-assets.js"
		},
		"./redirect-back": {
			"types": "./build/server/redirect-back.d.ts",
			"default": "./build/server/redirect-back.js"
		},
		"./respond-to": {
			"types": "./build/server/respond-to.d.ts",
			"default": "./build/server/respond-to.js"
		},
		"./responses": {
			"types": "./build/server/responses.d.ts",
			"default": "./build/server/responses.js"
		},
		"./rolling-cookie": {
			"types": "./build/server/rolling-cookie.d.ts",
			"default": "./build/server/rolling-cookie.js"
		},
		"./safe-redirect": {
			"types": "./build/server/safe-redirect.d.ts",
			"default": "./build/server/safe-redirect.js"
		},
		"./typed-cookie": {
			"types": "./build/server/typed-cookie.d.ts",
			"default": "./build/server/typed-cookie.js"
		},
		"./client-only": {
			"types": "./build/react/client-only.d.ts",
			"default": "./build/react/client-only.js"
		},
		"./existing-search-params": {
			"types": "./build/react/existing-search-params.d.ts",
			"default": "./build/react/existing-search-params.js"
		},
		"./external-scripts": {
			"types": "./build/react/external-scripts.d.ts",
			"default": "./build/react/external-scripts.js"
		},
		"./fetcher-type": {
			"types": "./build/react/fetcher-type.d.ts",
			"default": "./build/react/fetcher-type.js"
		},
		"./server-only": {
			"types": "./build/react/server-only.d.ts",
			"default": "./build/react/server-only.js"
		},
		"./use-debounce-fetcher": {
			"types": "./build/react/use-debounce-fetcher.d.ts",
			"default": "./build/react/use-debounce-fetcher.js"
		},
		"./use-debounce-submit": {
			"types": "./build/react/use-debounce-submit.d.ts",
			"default": "./build/react/use-debounce-submit.js"
		},
		"./use-delegated-anchors": {
			"types": "./build/react/use-delegated-anchors.d.ts",
			"default": "./build/react/use-delegated-anchors.js"
		},
		"./use-global-navigation-state": {
			"types": "./build/react/use-global-navigation-state.d.ts",
			"default": "./build/react/use-global-navigation-state.js"
		},
		"./use-hydrated": {
			"types": "./build/react/use-hydrated.d.ts",
			"default": "./build/react/use-hydrated.js"
		},
		"./use-should-hydrate": {
			"types": "./build/react/use-should-hydrate.d.ts",
			"default": "./build/react/use-should-hydrate.js"
		},
		"./sse/server": {
			"types": "./build/server/event-stream.d.ts",
			"default": "./build/server/event-stream.js"
		},
		"./sse/react": {
			"types": "./build/react/use-event-source.d.ts",
			"default": "./build/react/use-event-source.js"
		},
		"./locales/server": {
			"types": "./build/server/get-client-locales.d.ts",
			"default": "./build/server/get-client-locales.js"
		},
		"./locales/react": {
			"types": "./build/react/use-locales.d.ts",
			"default": "./build/react/use-locales.js"
		},
		"./honeypot/server": {
			"types": "./build/server/honeypot.d.ts",
			"default": "./build/server/honeypot.js"
		},
		"./honeypot/react": {
			"types": "./build/react/honeypot.d.ts",
			"default": "./build/react/honeypot.js"
		},
		"./csrf/server": {
			"types": "./build/server/csrf.d.ts",
			"default": "./build/server/csrf.js"
		},
		"./csrf/react": {
			"types": "./build/react/authenticity-token.d.ts",
			"default": "./build/react/authenticity-token.js"
		},
		"./sec-fetch": {
			"types": "./build/server/sec-fetch.d.ts",
			"default": "./build/server/sec-fetch.js"
		},
		"./timers": {
			"types": "./build/common/timers.d.ts",
			"default": "./build/common/timers.js"
		}
	},
	"scripts": {
		"build": "tsc",
		"build:registry": "shadcn build",
		"build:docs": "typedoc && shadcn build --output pages/r",
		"typecheck": "tsc --noEmit",
		"lint": "oxlint --ignore-path .gitignore --deny-warnings .",
		"lint:fix": "oxlint --ignore-path .gitignore --deny-warnings --fix .",
		"format": "oxfmt --check .",
		"format:fix": "oxfmt .",
		"quality": "bun run lint && bun run format",
		"quality:fix": "bun run lint:fix && bun run format:fix",
		"exports": "bun run ./scripts/exports.ts"
	},
	"dependencies": {
		"type-fest": "^5.4.4"
	},
	"devDependencies": {
		"@arethetypeswrong/cli": "^0.18.2",
		"@edgefirst-dev/batcher": "^1.0.1",
		"@edgefirst-dev/jwt": "^1.3.0",
		"@edgefirst-dev/server-timing": "^0.0.1",
		"@happy-dom/global-registrator": "^20.8.3",
		"@oslojs/crypto": "^1.0.1",
		"@oslojs/encoding": "^1.1.0",
		"@remix-run/file-storage": "^0.13.3",
		"@standard-schema/spec": "^1.1.0",
		"@testing-library/jest-dom": "^6.9.1",
		"@testing-library/react": "^16.3.2",
		"@testing-library/user-event": "^14.6.1",
		"@total-typescript/tsconfig": "^1.0.4",
		"@types/bun": "^1.3.10",
		"@types/react": "^19.2.14",
		"intl-parse-accept-language": "^1.0.0",
		"is-ip": "5.0.1",
		"msw": "^2.12.10",
		"oxfmt": "^0.37.0",
		"oxlint": "^1.52.0",
		"react": "^19.2.4",
		"react-dom": "^19.2.4",
		"react-router": "^7.13.1",
		"shadcn": "^4.0.3",
		"ts-node": "^10.9.2",
		"typedoc": "^0.28.17",
		"typedoc-plugin-mdn-links": "^5.1.1",
		"typescript": "^5.9.3",
		"zod": "^4.3.6"
	},
	"peerDependencies": {
		"@edgefirst-dev/batcher": "^1.0.0",
		"@edgefirst-dev/jwt": "^1.2.0",
		"@edgefirst-dev/server-timing": "^0.0.1",
		"@oslojs/crypto": "^1.0.1",
		"@oslojs/encoding": "^1.1.0",
		"@standard-schema/spec": "^1.0.0",
		"intl-parse-accept-language": "^1.0.0",
		"is-ip": "^5.0.1",
		"react": "^18.0.0 || ^19.0.0",
		"react-router": "^7.0.0"
	},
	"peerDependenciesMeta": {
		"@edgefirst-dev/batcher": {
			"optional": true
		},
		"@edgefirst-dev/jwt": {
			"optional": true
		},
		"@edgefirst-dev/server-timing": {
			"optional": true
		},
		"@oslojs/crypto": {
			"optional": true
		},
		"@oslojs/encoding": {
			"optional": true
		},
		"@standard-schema/spec": {
			"optional": true
		},
		"react-router": {
			"optional": true
		},
		"intl-parse-accept-language": {
			"optional": true
		},
		"is-ip": {
			"optional": true
		},
		"react": {
			"optional": true
		}
	},
	"engines": {
		"node": ">=20.0.0"
	}
}
