@gun-vue/composables
Gun-Vue: Composables
GitHub (@gun-vue/composables) • npm • Docs • API
Reusable logic built with the Vue 3 Composition API use functions. Manages Gun database interactions, SEA encryption, and reactive state. Check out Gun-Vue: Features (/src) for an overview.
This code is part of Gun-Vue: The Peer-to-Peer Web App Toolkit.
=======
Composables
Identity & Access
- User - the
gun.user()system management - Account - user profile interface
- Password - some elaborations on reimagining password system in a p2p graph environment
Data, Storage, & Networking
- Crypto - the main cryptographic primitives like e2e encrypted messaging and more
- Date Tree - the very performant concept of Date Tree graphs from gun-util made reactive and easy to use
- Relay - Gun relay peer connection monitoring
- File - some bindings to manage file uploads and downloads
- Hash - everything you need to hash data and work with the hashes in a reliable way (i.e. URL-safe conversion)
Content & Collaboration
- Chat - Public group chat
- Dictionary - we find ourselves in great power if we have verified concepts to collaborate with
- Private Messages - E2EE Messaging
- Posts - hashed immutable data in the root of the db as a fun experiment, but with deep observations about freedom of speech and ways to explore the vastness of the public graph space available with Gun
- Room - private signed collaborative spaces with a certificate system for access management. (TBD)
- Rooms - cryptographic data collections
- Space - An endless 2D space for the users to set their positions and draw shared pictures. Can be used to meet with people and verify their identity.
UI & Visual
- Mouse - some basic bindings to reliably locate mouse pointer in an SVG - may be useful for many online games
... and more!
How-to Use
- Install the library:
npm i @gun-vue/composables
- Import any of the functions you need:
import { useAccount } from "@gun-vue/composables";
- Instantiate the function inside your Vue SFC
const { account, auth, leave } = useAccount();
- Use the reactive state in your template to drive the component:
<div v-for="(data,field) in account.profile" :key="field">
{{ field }} - {{ data }}
</div>
SSR/SSG (Nuxt, VitePress, etc.)
Gun-Vue is client-side only and may cause errors during SSR/SSG builds. To avoid issues, consider one of these approaches:
Note: We plan to refactor the code to be more usable and tree-shakeable in SSG environments. Help needed!
Approach A: Make your component async
<script setup async>
const { useAccount } = await import("@gun-vue/composables");
const { account } = useAccount();
</script>
<template>
<div>{{ account.profile?.name }}</div>
</template>
Approach B: Load only on the client side
<ClientOnly>
<Suspense>
<YourComponent />
</Suspense>
</ClientOnly>
This prevents Gun-Vue from running during build time.
Related Packages
@gun-vue/components
3,003
101
Version History
| Version | Released | Vue | License |
|---|---|---|---|
| 0.25.1 | 3.5.15 | MIT | |
| 0.25.0 | 3.5.13 | MIT | |
| 0.24.2 | 3.5.13 | MIT | |
| 0.24.1 | 3.5.13 | MIT | |
| 0.24.0 | 3.5.13 | MIT | |
| 0.23.0 | 3.5.13 | MIT | |
| 0.22.6 | 3.5.13 | MIT | |
| 0.22.5 | 3.5.13 | MIT | |
| 0.22.4 | 3.5.13 | MIT | |
| 0.22.3 | 3.5.13 | MIT | |
| 0.22.2 | 3.5.13 | MIT | |
| 0.22.0 | 3.5.13 | MIT | |
| 0.21.5 | 3.5.13 | MIT | |
| 0.21.4 | 3.5.13 | MIT | |
| 0.21.3 | 3.5.13 | MIT | |
| 0.21.2 | 3.5.12 | MIT | |
| 0.21.0 | 3.4.37 | MIT | |
| 0.20.0 | 3.4.31 | MIT | |
| 0.18.4 | ^3.4.31 | MIT | |
| 0.18.3 | ^3.4.1 | MIT | |
| 0.18.2 | 3.3.8 | MIT | |
| 0.18.1 | 3.3.2 | MIT | |
| 0.18.0 | 3.2.47 | MIT | |
| 0.17.3 | 3.2.47 | MIT | |
| 0.17.1 | 3.2.47 | MIT | |
| 0.17.0 | 3.2.47 | MIT | |
| 0.16.10 | 3.2.47 | MIT | |
| 0.16.9 | 3.2.47 | MIT | |
| 0.16.8 | 3.2.47 | MIT | |
| 0.16.7 | 3.2.47 | MIT |
Showing the latest 30 of 139. See every release on npm