@michael-nussbaumer/nuxt-directus 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,7 +1,9 @@
1
1
  # @michael-nussbaumer/nuxt-directus
2
2
 
3
- [![npm version](https://img.shields.io/npm/v/@Michael-Nussbaumer/nuxt-directus.svg)](https://www.npmjs.com/package/@michael-nussbaumer/nuxt-directus)
3
+ [![npm version](https://img.shields.io/npm/v/@michael-nussbaumer/nuxt-directus.svg)](https://www.npmjs.com/package/@michael-nussbaumer/nuxt-directus)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+ [![Documentation](https://img.shields.io/badge/docs-live-brightgreen.svg)](https://michael-nussbaumer.github.io/nuxt-directus-module/)
6
+ [![Nuxt](https://img.shields.io/badge/Nuxt-3%20%7C%204-00DC82.svg)](https://nuxt.com)
5
7
 
6
8
  A production-ready Nuxt 4 module that integrates Directus SDK with authentication, configurable global auth middleware, and automatic TypeScript type generation from Directus OpenAPI schema.
7
9
 
@@ -111,15 +113,21 @@ definePageMeta({
111
113
 
112
114
  ## Documentation
113
115
 
116
+ 📚 **[Full Documentation Site](https://michael-nussbaumer.github.io/nuxt-directus-module/)**
117
+
114
118
  Comprehensive guides for all module features:
115
119
 
116
- - **[Getting Started](./docs/getting-started.md)** - Installation, setup, and basic usage
117
- - **[Configuration](./docs/configuration.md)** - Module options and environment variables
118
- - **[Authentication](./docs/authentication.md)** - Login, logout, registration, and user management
119
- - **[API Usage](./docs/api.md)** - CRUD operations, queries, and filtering
120
- - **[Real-time WebSocket](./docs/realtime.md)** - Live subscriptions and event handling
121
- - **[Middleware](./docs/middleware.md)** - Route protection and authentication flows
122
- - **[Type Generation](./docs/type-generation.md)** - Automatic TypeScript types from OpenAPI schema
120
+ - **[Getting Started](https://michael-nussbaumer.github.io/nuxt-directus-module/getting-started)** - Installation, setup, and basic usage
121
+ - **[Configuration](https://michael-nussbaumer.github.io/nuxt-directus-module/configuration)** - Module options and environment variables
122
+ - **[Authentication](https://michael-nussbaumer.github.io/nuxt-directus-module/authentication)** - Login, logout, registration, and user management
123
+ - **[API Usage](https://michael-nussbaumer.github.io/nuxt-directus-module/api)** - CRUD operations, queries, and filtering
124
+ - **[Real-time WebSocket](https://michael-nussbaumer.github.io/nuxt-directus-module/realtime)** - Live subscriptions and event handling
125
+ - **[Middleware](https://michael-nussbaumer.github.io/nuxt-directus-module/middleware)** - Route protection and authentication flows
126
+ - **[Role-Based Permissions](https://michael-nussbaumer.github.io/nuxt-directus-module/role-based-permissions)** - Advanced access control
127
+ - **[Type Generation](https://michael-nussbaumer.github.io/nuxt-directus-module/type-generation)** - Automatic TypeScript types from OpenAPI schema
128
+ - **[Examples](https://michael-nussbaumer.github.io/nuxt-directus-module/examples)** - Code examples and use cases
129
+
130
+ Or browse the [docs folder](./docs) in this repository.
123
131
 
124
132
  ## Quick Reference
125
133
 
@@ -169,7 +177,7 @@ API operations:
169
177
  - `updateMany(collection, ids, data)` - Update multiple items
170
178
  - `deleteOne(collection, id)` - Delete item
171
179
  - `deleteMany(collection, ids)` - Delete multiple items
172
- - `customRequest(method, path, options)` - Custom endpoint
180
+ - `customRequest(path, options)` - Custom endpoint
173
181
 
174
182
  #### `useDirectusRealtime()`
175
183
 
@@ -219,4 +227,10 @@ Contributions are welcome! Please feel free to submit a Pull Request.
219
227
 
220
228
  ## Repository
221
229
 
222
- https://github.com/michael-nussbaumerCommunications/nuxt-directus-module
230
+ https://github.com/Michael-Nussbaumer/nuxt-directus-module
231
+
232
+ ## Documentation Site
233
+
234
+ The documentation is hosted on GitHub Pages. To set it up for the first time, see [GITHUB_PAGES_SETUP.md](./GITHUB_PAGES_SETUP.md).
235
+
236
+ Visit: https://michael-nussbaumer.github.io/nuxt-directus-module/
package/dist/module.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "compatibility": {
5
5
  "nuxt": "^3.0.0 || ^4.0.0"
6
6
  },
7
- "version": "0.2.2",
7
+ "version": "0.2.4",
8
8
  "builder": {
9
9
  "@nuxt/module-builder": "0.8.4",
10
10
  "unbuild": "2.0.0"
@@ -10,10 +10,14 @@ export const useDirectusRealtime = () => {
10
10
  const { collection, query = {}, uid, persistent = false } = options;
11
11
  const subscriptionId = uid || `${collection}-${JSON.stringify(query)}-${Math.random()}`;
12
12
  if (subscriptions.has(subscriptionId)) {
13
- console.warn(`[Directus Realtime] Subscription ${subscriptionId} already exists`);
13
+ if (import.meta.dev) {
14
+ console.warn(`[Directus Realtime] Subscription ${subscriptionId} already exists`);
15
+ }
14
16
  return subscriptions.get(subscriptionId);
15
17
  }
16
- console.log(`[Directus Realtime] Subscribing to ${collection} with ID: ${subscriptionId}`);
18
+ if (import.meta.dev) {
19
+ console.log(`[Directus Realtime] Subscribing to ${collection} with ID: ${subscriptionId}`);
20
+ }
17
21
  try {
18
22
  const { subscription, unsubscribe: unsubscribe2 } = await client.subscribe(collection, {
19
23
  query,
@@ -22,7 +26,9 @@ export const useDirectusRealtime = () => {
22
26
  (async () => {
23
27
  try {
24
28
  for await (const message of subscription) {
25
- console.log(`[Directus Realtime] Event received for ${collection}:`, message);
29
+ if (import.meta.dev) {
30
+ console.log(`[Directus Realtime] Event received for ${collection}:`, message);
31
+ }
26
32
  callback(message);
27
33
  }
28
34
  } catch (error) {
@@ -48,10 +54,14 @@ export const useDirectusRealtime = () => {
48
54
  const unsubscribe = (subscriptionId) => {
49
55
  const handler = subscriptions.get(subscriptionId);
50
56
  if (!handler) {
51
- console.warn(`[Directus Realtime] Subscription ${subscriptionId} not found`);
57
+ if (import.meta.dev) {
58
+ console.warn(`[Directus Realtime] Subscription ${subscriptionId} not found`);
59
+ }
52
60
  return;
53
61
  }
54
- console.log(`[Directus Realtime] Unsubscribing from ${handler.collection} (${subscriptionId})`);
62
+ if (import.meta.dev) {
63
+ console.log(`[Directus Realtime] Unsubscribing from ${handler.collection} (${subscriptionId})`);
64
+ }
55
65
  try {
56
66
  handler.unsubscribe();
57
67
  subscriptions.delete(subscriptionId);
@@ -21,12 +21,12 @@ export default defineNuxtPlugin(async () => {
21
21
  if (!apiUrl) {
22
22
  throw new Error("[Directus] NUXT_PUBLIC_DIRECTUS_URL is not configured. Please set it in your nuxt.config.ts runtimeConfig.public.directusUrl");
23
23
  }
24
- if (import.meta.client) {
24
+ if (import.meta.client && import.meta.dev) {
25
25
  console.log("[Directus] Using API URL:", apiUrl);
26
26
  }
27
27
  const wsBaseUrl = config.public.directusWsUrl || config.public.directusUrl;
28
28
  const wsUrl = wsBaseUrl.replace(/^http/, "ws") + "/websocket";
29
- if (import.meta.client) {
29
+ if (import.meta.client && import.meta.dev) {
30
30
  console.log("[Directus] WebSocket URL:", wsUrl);
31
31
  }
32
32
  const storage = new NuxtCookieStorage();
@@ -44,11 +44,15 @@ export default defineNuxtPlugin(async () => {
44
44
  try {
45
45
  directusClient.connect();
46
46
  directusClient.onWebSocket("open", () => {
47
- console.log("[Directus] WebSocket connection established");
47
+ if (import.meta.dev) {
48
+ console.log("[Directus] WebSocket connection established");
49
+ }
48
50
  isWebSocketConnected.value = true;
49
51
  });
50
52
  directusClient.onWebSocket("close", () => {
51
- console.log("[Directus] WebSocket connection closed");
53
+ if (import.meta.dev) {
54
+ console.log("[Directus] WebSocket connection closed");
55
+ }
52
56
  isWebSocketConnected.value = false;
53
57
  });
54
58
  directusClient.onWebSocket("error", (error) => {
@@ -56,7 +60,9 @@ export default defineNuxtPlugin(async () => {
56
60
  isWebSocketConnected.value = false;
57
61
  });
58
62
  directusClient.onWebSocket("message", (message) => {
59
- console.log("[Directus] WebSocket message:", message);
63
+ if (import.meta.dev) {
64
+ console.log("[Directus] WebSocket message:", message);
65
+ }
60
66
  });
61
67
  } catch (error) {
62
68
  console.error("[Directus] WebSocket connection failed:", error);
@@ -9,7 +9,9 @@ export default defineNuxtRouteMiddleware(async (to, from) => {
9
9
  afterLoginPath: "/"
10
10
  };
11
11
  const enableGlobalMiddleware = config.public.directus?.enableGlobalMiddleware ?? true;
12
- console.log("[directus-auth middleware] from", from.fullPath, "to", to.fullPath);
12
+ if (import.meta.dev) {
13
+ console.log("[directus-auth middleware] from", from.fullPath, "to", to.fullPath);
14
+ }
13
15
  const authMetaRaw = to.meta?.auth;
14
16
  let authMeta;
15
17
  let requiresAuth;
@@ -95,7 +97,9 @@ export default defineNuxtRouteMiddleware(async (to, from) => {
95
97
  if (authMeta.roles && authMeta.roles.length > 0) {
96
98
  const hasPermission = authMeta.roles.some((requiredRole) => userRoles.includes(requiredRole));
97
99
  if (!hasPermission) {
98
- console.warn(`[directus-auth middleware] User roles [${userRoles.join(", ")}] don't match required roles:`, authMeta.roles);
100
+ if (import.meta.dev) {
101
+ console.warn(`[directus-auth middleware] User roles [${userRoles.join(", ")}] don't match required roles:`, authMeta.roles);
102
+ }
99
103
  const unauthorizedRedirect = authMeta.unauthorizedRedirect || "/";
100
104
  return navigateTo(unauthorizedRedirect);
101
105
  }
@@ -103,7 +107,9 @@ export default defineNuxtRouteMiddleware(async (to, from) => {
103
107
  if (authMeta.excludeRoles && authMeta.excludeRoles.length > 0) {
104
108
  const isExcluded = userRoles.some((role) => authMeta.excludeRoles.includes(role));
105
109
  if (isExcluded) {
106
- console.warn(`[directus-auth middleware] User has excluded role in [${userRoles.join(", ")}]:`, authMeta.excludeRoles);
110
+ if (import.meta.dev) {
111
+ console.warn(`[directus-auth middleware] User has excluded role in [${userRoles.join(", ")}]:`, authMeta.excludeRoles);
112
+ }
107
113
  const unauthorizedRedirect = authMeta.unauthorizedRedirect || "/";
108
114
  return navigateTo(unauthorizedRedirect);
109
115
  }
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@michael-nussbaumer/nuxt-directus",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "Nuxt 4 module for Directus SDK with auth and TypeScript type generation",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -22,7 +22,10 @@
22
22
  "prepack": "pnpm run build",
23
23
  "generate:types": "cross-env NODE_ENV=development tsx scripts/generate-directus-types.ts",
24
24
  "lint": "eslint .",
25
- "release": "pnpm run build && npm publish"
25
+ "release": "pnpm run build && npm publish",
26
+ "docs:dev": "cd docs && pnpm install && pnpm run dev",
27
+ "docs:build": "cd docs && pnpm install && pnpm run generate",
28
+ "docs:preview": "cd docs && pnpm run preview"
26
29
  },
27
30
  "dependencies": {
28
31
  "@nuxt/kit": "^3.15.3",