permix
Version:
Permix is a lightweight, framework-agnostic, type-safe permissions management library for JavaScript applications on the client and server sides.
235 lines • 5.88 kB
JSON
{
"name": "permix",
"displayName": "Permix",
"type": "module",
"version": "4.1.1",
"private": false,
"description": "Permix is a lightweight, framework-agnostic, type-safe permissions management library for JavaScript applications on the client and server sides.",
"author": "Valerii Strilets",
"license": "MIT",
"funding": "https://github.com/sponsors/letstri",
"homepage": "https://permix.letstri.dev",
"repository": {
"type": "git",
"url": "git+https://github.com/letstri/permix.git",
"directory": "permix"
},
"bugs": {
"url": "https://github.com/letstri/permix/issues"
},
"keywords": [
"permissions",
"authorization",
"acl",
"access-control",
"typescript",
"react",
"nextjs",
"vue",
"solid",
"svelte",
"type-safe",
"rbac",
"security",
"permissions-management",
"frontend",
"javascript",
"tanstack-intent"
],
"intent": {
"repo": "letstri/permix",
"docs": "../docs/content/docs"
},
"exports": {
".": {
"types": "./dist/core/index.d.mts",
"import": "./dist/core/index.mjs"
},
"./react": {
"types": "./dist/react/index.d.mts",
"import": "./dist/react/index.mjs"
},
"./vue": {
"types": "./dist/vue/index.d.mts",
"import": "./dist/vue/index.mjs"
},
"./trpc": {
"types": "./dist/trpc/index.d.mts",
"import": "./dist/trpc/index.mjs"
},
"./orpc": {
"types": "./dist/orpc/index.d.mts",
"import": "./dist/orpc/index.mjs"
},
"./express": {
"types": "./dist/express/index.d.mts",
"import": "./dist/express/index.mjs"
},
"./hono": {
"types": "./dist/hono/index.d.mts",
"import": "./dist/hono/index.mjs"
},
"./node": {
"types": "./dist/node/index.d.mts",
"import": "./dist/node/index.mjs"
},
"./server": {
"types": "./dist/server/index.d.mts",
"import": "./dist/server/index.mjs"
},
"./elysia": {
"types": "./dist/elysia/index.d.mts",
"import": "./dist/elysia/index.mjs"
},
"./fastify": {
"types": "./dist/fastify/index.d.mts",
"import": "./dist/fastify/index.mjs"
},
"./solid": {
"types": "./dist/solid/index.d.mts",
"import": "./dist/solid/index.mjs"
},
"./svelte": {
"types": "./dist/svelte/index.d.ts",
"svelte": "./dist/svelte/index.js",
"import": "./dist/svelte/index.js",
"default": "./dist/svelte/index.js"
},
"./drizzle": {
"types": "./dist/drizzle/index.d.mts",
"import": "./dist/drizzle/index.mjs"
},
"./drizzle/legacy": {
"types": "./dist/drizzle/legacy/index.d.mts",
"import": "./dist/drizzle/legacy/index.mjs"
},
"./effect": {
"types": "./dist/effect/index.d.mts",
"import": "./dist/effect/index.mjs"
},
"./next": {
"types": "./dist/next/index.d.mts",
"import": "./dist/next/index.mjs"
},
"./tanstack-start": {
"types": "./dist/tanstack-start/index.d.mts",
"import": "./dist/tanstack-start/index.mjs"
}
},
"main": "./dist/core/index.mjs",
"types": "./dist/core/index.d.mts",
"files": [
"dist",
"skills"
],
"engines": {
"node": ">=22"
},
"peerDependencies": {
"@orpc/server": ">=1",
"@tanstack/react-start": ">=1",
"@trpc/server": ">=11",
"drizzle-orm": ">=0.30.0 || >=1.0.0-rc.3",
"effect": ">=3",
"elysia": ">=1",
"express": ">=4",
"fastify": ">=5",
"fastify-plugin": ">=5",
"hono": ">=4",
"next": ">=14",
"react": ">=18",
"react-dom": ">=18",
"solid-js": ">=1",
"svelte": ">=5",
"vue": ">=3"
},
"peerDependenciesMeta": {
"@orpc/server": {
"optional": true
},
"@tanstack/react-start": {
"optional": true
},
"@trpc/server": {
"optional": true
},
"drizzle-orm": {
"optional": true
},
"effect": {
"optional": true
},
"elysia": {
"optional": true
},
"express": {
"optional": true
},
"fastify": {
"optional": true
},
"fastify-plugin": {
"optional": true
},
"hono": {
"optional": true
},
"next": {
"optional": true
},
"react": {
"optional": true
},
"react-dom": {
"optional": true
},
"solid-js": {
"optional": true
},
"svelte": {
"optional": true
},
"vue": {
"optional": true
}
},
"devDependencies": {
"@solidjs/testing-library": "^0.8.10",
"@sveltejs/package": "^2.5.7",
"@sveltejs/vite-plugin-svelte": "^7.1.2",
"@tanstack/intent": "^0.0.42",
"@tanstack/react-start": "^1.168.18",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.2",
"@testing-library/svelte": "^5.3.1",
"@types/express": "^5.0.6",
"@types/node": "^25.9.1",
"@types/react": "^19.2.15",
"@types/supertest": "^7.2.0",
"@vitejs/plugin-react": "^6.0.2",
"@vitest/coverage-v8": "^4.1.8",
"@vue/test-utils": "^2.4.10",
"drizzle-orm": "1.0.0-rc.3",
"effect": "^3.21.2",
"happy-dom": "^20.9.0",
"react-dom": "^19.2.6",
"supertest": "^7.2.2",
"svelte": "^5.56.0",
"svelte-check": "^4.5.0",
"tsdown": "^0.22.1",
"typescript": "^6.0.3",
"vite-plugin-solid": "^2.11.12",
"vitest": "^4.1.8",
"vue": "^3.5.17",
"zod": "^4.4.3"
},
"scripts": {
"build": "tsdown && pnpm run build:svelte",
"build:svelte": "svelte-package -i src/svelte -o dist/svelte && node ./scripts/build-svelte.ts",
"test": "vitest run",
"check-types": "tsc --build && svelte-check --tsconfig ./tsconfig.svelte.json",
"scripts:copy-readme": "node ./scripts/copy-readme.ts",
"skills:validate": "intent validate skills",
"skills:stale": "intent stale skills"
}
}