@fonderie/vue-audit
v0.4.0
Published
Vue 3 composables for Fonderie's audit log — thin bindings over @fonderie/client.
Downloads
595
Maintainers
Readme
@fonderie/vue-audit
Vue 3 composable for Fonderie's audit log — useAuditEvents
(cursor-paginated, filterable by type/actorId/date range, with
loadMore). Thin bindings over
@fonderie/client:
reactive refs for loading/error/data state and the request itself,
nothing else. Bring your own UI.
Install
npm install @fonderie/vue-auditOne client at the root (recommended)
Install the plugin from @fonderie/vue once (or call
provideFonderie(client) in a root setup()) and every composable resolves
the client by injection — no client argument at call sites:
import { FonderiePlugin } from "@fonderie/vue";
createApp(App).use(FonderiePlugin, client).mount("#app");
// in any component setup():
const { ...state } = useAuditEvents();Passing a client explicitly (as below) still works everywhere and takes precedence over injection — handy in tests and multi-client apps.
Use
<script setup>
import { FonderieClient } from '@fonderie/client';
import { useAuditEvents } from '@fonderie/vue-audit';
const client = new FonderieClient({ baseUrl: 'https://api.example.com/v1' });
const { events, hasMore, loadMore } = useAuditEvents(client.audit, { type: 'workspace.updated' });
</script>
<template>
<ul>
<li v-for="e in events" :key="e.id">{{ e.type }} — {{ e.createdAt }}</li>
</ul>
<button v-if="hasMore" @click="loadMore">Load more</button>
</template>useAuditEvents takes the same AuditClient instance (client.audit) —
construct one FonderieClient at the app root and pass it down
(provide/inject or a prop). The client's access token is shared with
client.auth automatically, so signing in via
@fonderie/vue-auth
is enough to authenticate audit requests too. Requests default to the
caller's personal workspace until you call client.audit.setWorkspaceId(id)
to scope them to a team, same as client.billing/client.workspaces.
@fonderie/audit has one route, read-only — there's no create/update/delete
composable because there's no such endpoint; audit events are written
internally by other modules. Filters are read once at setup, same as every
other *-admin/*-workspaces composable's key/environment params in
this SDK — call refresh() yourself after changing filters.
Want a pre-built screen instead of wiring your own log viewer?
See @fonderie/vue-audit-screens.
Why this exists
You've shipped this plumbing before — auth, teams, billing, messaging —
and the next project will ask for it again. Fonderie packages it once:
plain TypeScript modules for
@fonderie/core,
PostgreSQL-backed, self-hosted, MIT. No external control plane, no
per-seat anything. Register the modules you need; skip the ones you don't.
This package owns the Vue binding for the audit log — reactive state
management around @fonderie/client, nothing more. No business logic lives
here; it lives in @fonderie/audit on the server.
Browse the whole set at fonderiejs/sdk · follow @fonderiejs
License
MIT © Fonderie, Inc.
