{
  "name": "@openclaw/fs-safe",
  "version": "0.4.0",
  "description": "Capability-style filesystem roots for Node.js apps that handle untrusted relative paths.",
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/openclaw/fs-safe.git"
  },
  "files": [
    "dist/**/*.js",
    "dist/**/*.d.ts",
    "dist/**/*.d.ts.map",
    "docs/**/*.md",
    "README.md",
    "CHANGELOG.md",
    "SECURITY.md",
    "LICENSE"
  ],
  "type": "module",
  "sideEffects": false,
  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "default": "./dist/index.js"
    },
    "./root": {
      "types": "./dist/root.d.ts",
      "default": "./dist/root.js"
    },
    "./config": {
      "types": "./dist/config.d.ts",
      "default": "./dist/config.js"
    },
    "./path": {
      "types": "./dist/path.d.ts",
      "default": "./dist/path.js"
    },
    "./output": {
      "types": "./dist/output.d.ts",
      "default": "./dist/output.js"
    },
    "./advanced": {
      "types": "./dist/advanced.d.ts",
      "default": "./dist/advanced.js"
    },
    "./json": {
      "types": "./dist/json.d.ts",
      "default": "./dist/json.js"
    },
    "./store": {
      "types": "./dist/store.d.ts",
      "default": "./dist/store.js"
    },
    "./secret": {
      "types": "./dist/secret.d.ts",
      "default": "./dist/secret.js"
    },
    "./permissions": {
      "types": "./dist/permissions-public.d.ts",
      "default": "./dist/permissions-public.js"
    },
    "./secure-file": {
      "types": "./dist/secure-file.d.ts",
      "default": "./dist/secure-file.js"
    },
    "./file-lock": {
      "types": "./dist/file-lock.d.ts",
      "default": "./dist/file-lock.js"
    },
    "./walk": {
      "types": "./dist/walk.d.ts",
      "default": "./dist/walk.js"
    },
    "./temp": {
      "types": "./dist/temp.d.ts",
      "default": "./dist/temp.js"
    },
    "./atomic": {
      "types": "./dist/atomic.d.ts",
      "default": "./dist/atomic.js"
    },
    "./archive": {
      "types": "./dist/archive.d.ts",
      "default": "./dist/archive.js"
    },
    "./errors": {
      "types": "./dist/errors.d.ts",
      "default": "./dist/errors.js"
    },
    "./types": {
      "types": "./dist/types.d.ts",
      "default": "./dist/types.js"
    },
    "./test-hooks": {
      "types": "./dist/test-hooks.d.ts",
      "default": "./dist/test-hooks.js"
    }
  },
  "optionalDependencies": {
    "jszip": "^3.10.1",
    "tar": "7.5.16"
  },
  "devDependencies": {
    "@types/node": "^22.19.20",
    "@vitest/coverage-v8": "4.1.8",
    "typescript": "^5.9.3",
    "vitest": "^4.1.8"
  },
  "engines": {
    "node": ">=22"
  },
  "scripts": {
    "benchmark": "node scripts/benchmark.mjs",
    "build": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.json",
    "lint:file-size": "node scripts/check-file-size.mjs",
    "lint:fs-boundary": "node scripts/check-fs-boundary-primitives.mjs",
    "test": "vitest run",
    "test:coverage": "vitest run --coverage",
    "test:security": "vitest run test/fs-safe.test.ts test/read-boundary-bypass.test.ts test/write-boundary-bypass.test.ts test/additional-boundary-bypass.test.ts test/adversarial-boundary-payloads.test.ts",
    "check": "pnpm lint:file-size && pnpm lint:fs-boundary && pnpm build && pnpm test",
    "docs:site": "node scripts/build-docs-site.mjs",
    "check:changed": "pnpm run check",
    "test:changed": "pnpm run test",
    "crabbox:hydrate": "crabbox actions hydrate",
    "crabbox:run": "crabbox run",
    "crabbox:stop": "crabbox stop",
    "crabbox:warmup": "crabbox warmup"
  }
}