1.0.0 • Published 4 months ago

access-inspector v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

access-inspector šŸ”

npm version
bundle size
license

šŸš€ Access Inspector is a zero-dependency utility that tracks which properties of an object have been accessed using JavaScript Proxies.

Useful for:
āœ… Debugging & Auditing – find out which properties are actually used
āœ… GraphQL & API Optimization – ensure requested fields are needed


šŸ“¦ Installation

npm install access-inspector
# or
yarn add access-inspector
# or
pnpm add access-inspector

šŸš€ Usage

import { inspectAccesses } from "access-inspector";

const user = {
  id: 1,
  name: "Alice",
  email: "alice@example.com",
};

const [trackedUser, inspector] = inspectAccesses(user);

console.log(trackedUser.name); // "Alice"
console.log(trackedUser.email); // "alice@example.com"

console.log(inspector.fields()); // ["root.id", "root.name", "root.email"]
console.log(inspector.visited()); // ["root.name", "root.email"]
console.log(inspector.unvisited()); // ["root.id"]

It works with arrays and nested objects as well!

import { inspectAccesses } from "access-inspector";

const user = {
  id: 1,
  flags: ["admin", "verified"],
  contacts: {
    phone: "123-456-7890",
    email: "alice@example.com",
  },
};

const [trackedUser, inspector] = inspectAccesses(user);

console.log(trackedUser.flags[0]); // "admin"
console.log(trackedUser.contacts.phone); // "123-456-7890"

console.log(inspector.fields()); // ["root.id", "root.flags", "root.flags.0", "root.flags.1", "root.contacts", "root.contacts.phone", "root.contacts.email"]
console.log(inspector.visited()); // ["root.flags", "root.flags.0", "root.contacts", "root.contacts.phone"]
console.log(inspector.unvisited()); // ["root.id", "root.flags.1", "root.contacts.email"]