nuxt-directus-sdk 5.0.0-beta.5 → 5.0.0-beta.7

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/dist/module.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nuxt-directus-sdk",
3
- "version": "5.0.0-beta.5",
3
+ "version": "5.0.0-beta.7",
4
4
  "configKey": "directus",
5
5
  "compatibility": {
6
6
  "nuxt": "^4.0.0"
package/dist/module.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { useLogger, defineNuxtModule, createResolver, addServerHandler, addPlugin, addRouteMiddleware, addImportsDir, addComponentsDir, addImportsSources, addTypeTemplate, hasNuxtModule, installModule } from '@nuxt/kit';
1
+ import { useLogger, defineNuxtModule, createResolver, addServerHandler, addPlugin, tryResolveModule, addRouteMiddleware, addImportsDir, addComponentsDir, addImportsSources, addTypeTemplate, hasNuxtModule, installModule } from '@nuxt/kit';
2
2
  import { colors } from 'consola/utils';
3
3
  import { defu } from 'defu';
4
4
  import { joinURL } from 'ufo';
@@ -6,7 +6,7 @@ import { generateTypes } from '../dist/runtime/types/index.js';
6
6
  import { useUrl } from '../dist/runtime/utils/index.js';
7
7
 
8
8
  const name = "nuxt-directus-sdk";
9
- const version = "5.0.0-beta.5";
9
+ const version = "5.0.0-beta.7";
10
10
 
11
11
  const configKey = "directus";
12
12
  const logger = useLogger("nuxt-directus-sdk");
@@ -155,7 +155,10 @@ const module = defineNuxtModule({
155
155
  });
156
156
  }
157
157
  addPlugin(resolver.resolve("./runtime/plugin"));
158
- addPlugin(resolver.resolve("./runtime/plugins/visual-editor.client"));
158
+ const hasVisualEditing = options.visualEditor && await tryResolveModule("@directus/visual-editing", new URL(import.meta.url));
159
+ if (hasVisualEditing) {
160
+ addPlugin(resolver.resolve("./runtime/plugins/visual-editor.client"));
161
+ }
159
162
  addRouteMiddleware({
160
163
  name: "auth",
161
164
  path: resolver.resolve("./runtime/middleware/auth"),
@@ -166,12 +169,14 @@ const module = defineNuxtModule({
166
169
  path: resolver.resolve("./runtime/middleware/guest")
167
170
  });
168
171
  addImportsDir(resolver.resolve("./runtime/composables"));
169
- addComponentsDir({
170
- path: resolver.resolve("./runtime/components"),
171
- pathPrefix: false,
172
- prefix: "",
173
- global: true
174
- });
172
+ if (hasVisualEditing) {
173
+ addComponentsDir({
174
+ path: resolver.resolve("./runtime/components"),
175
+ pathPrefix: false,
176
+ prefix: "",
177
+ global: true
178
+ });
179
+ }
175
180
  const directusSdkImports = {
176
181
  from: "@directus/sdk",
177
182
  imports: [
@@ -10,7 +10,7 @@ export interface DirectusAuth {
10
10
  login: (email: string, password: string, options?: LoginOptions & {
11
11
  redirect?: boolean | RouteLocationRaw;
12
12
  }) => Promise<DirectusUser | null>;
13
- loginWithProvider: (provider: string, redirectOnLogin?: string) => Promise<void>;
13
+ loginWithProvider: (provider: string, redirectOnLogin?: boolean | string) => Promise<void>;
14
14
  logout: (redirect?: boolean | RouteLocationRaw) => Promise<void>;
15
15
  createUser: (data: RegisterUserInput & Partial<Omit<DirectusUser, 'id' | 'email' | 'password'>>) => Promise<Omit<DirectusUser, 'last_access'>>;
16
16
  register: (data: RegisterUserInput & Partial<Omit<DirectusUser, 'id' | 'email' | 'password'>>) => Promise<Omit<DirectusUser, 'last_access'>>;
@@ -1,5 +1,5 @@
1
1
  import { navigateTo, useRouter, useRuntimeConfig } from "#app";
2
- import { computed, useState } from "#imports";
2
+ import { computed, useRequestURL, useState } from "#imports";
3
3
  import {
4
4
  acceptUserInvite as directusAcceptUserInvite,
5
5
  createUser as directusCreateUser,
@@ -9,6 +9,7 @@ import {
9
9
  readMe as directusReadMe,
10
10
  updateMe as directusUpdateMe
11
11
  } from "@directus/sdk";
12
+ import { joinURL, withoutTrailingSlash } from "ufo";
12
13
  import { useDirectus, useDirectusOriginUrl } from "./directus.js";
13
14
  export function useDirectusUser() {
14
15
  return useState("directus.user", () => null);
@@ -57,18 +58,28 @@ export function useDirectusAuth() {
57
58
  if (redirect !== false) {
58
59
  const route = router.currentRoute.value;
59
60
  if (typeof redirect !== "boolean") {
60
- navigateTo(redirect);
61
+ await navigateTo(redirect);
61
62
  } else if (route?.query?.redirect) {
62
- navigateTo({ path: decodeURIComponent(route.query.redirect) });
63
+ await navigateTo({ path: decodeURIComponent(route.query.redirect) });
63
64
  } else {
64
- navigateTo(config.public.directus.auth?.redirect?.home ?? "/");
65
+ await navigateTo(config.public.directus.auth?.redirect?.home ?? "/");
65
66
  }
66
67
  }
67
68
  return user.value;
68
69
  }
69
- async function loginWithProvider(provider, redirectOnLogin) {
70
- const redirect = `${window.location.origin}${redirectOnLogin ?? router.currentRoute.value.fullPath}`;
71
- await navigateTo(useDirectusOriginUrl(`/auth/login/${provider}?redirect=${encodeURIComponent(redirect)}`), { external: true });
70
+ async function loginWithProvider(provider, redirectOnLogin = true) {
71
+ const { origin, href } = useRequestURL();
72
+ let redirectPath;
73
+ if (typeof redirectOnLogin === "boolean") {
74
+ redirectPath = redirectOnLogin ? config.public.directus.auth.redirect.login : href;
75
+ } else if (redirectOnLogin) {
76
+ redirectPath = redirectOnLogin;
77
+ } else {
78
+ redirectPath = href;
79
+ }
80
+ const redirect = joinURL(origin, redirectPath);
81
+ const sanitizedRedirect = withoutTrailingSlash(redirect);
82
+ await navigateTo(useDirectusOriginUrl(`/auth/login/${provider}?redirect=${encodeURIComponent(sanitizedRedirect)}`), { external: true });
72
83
  }
73
84
  async function createUser(data) {
74
85
  const response = await directus.request(directusCreateUser(data));
@@ -96,7 +107,7 @@ export function useDirectusAuth() {
96
107
  user.value = null;
97
108
  }
98
109
  if (redirect) {
99
- const defaultRedirect = config.public.directus.auth?.redirect?.logout ?? config.public.directus.auth?.redirect?.home ?? "/";
110
+ const defaultRedirect = config.public.directus.auth?.redirect?.logout ?? config.public.directus.auth?.redirect?.login ?? "/";
100
111
  const redirectTo = typeof redirect === "boolean" ? defaultRedirect : redirect;
101
112
  await navigateTo(redirectTo);
102
113
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nuxt-directus-sdk",
3
3
  "type": "module",
4
- "version": "5.0.0-beta.5",
4
+ "version": "5.0.0-beta.7",
5
5
  "description": "A Directus nuxt module that uses the Directus SDK",
6
6
  "author": "Matthew Rollinson <matt@rolley.io>",
7
7
  "license": "MIT",
@@ -28,7 +28,7 @@
28
28
  "dev:build": "nuxi build playground",
29
29
  "dev:prepare": "nuxt-module-build --stub && nuxi prepare playground",
30
30
  "release": "npm run lint && npm run prepack && npm publish && git push --follow-tags",
31
- "lint": "eslint .",
31
+ "lint": "eslint . --fix",
32
32
  "test": "vitest run",
33
33
  "test:watch": "vitest watch",
34
34
  "docs:dev": "bun run dev:prepare && vitepress dev docs",
@@ -36,12 +36,15 @@
36
36
  "docs:preview": "vitepress preview docs"
37
37
  },
38
38
  "peerDependencies": {
39
- "@directus/sdk": "^20.0.0",
40
- "@directus/types": "^13.0.0",
41
- "@directus/visual-editing": "^1.1.0",
42
- "@nuxt/image": "^2.0.0"
39
+ "@directus/sdk": ">=20.0.0",
40
+ "@directus/types": ">=13.0.0",
41
+ "@directus/visual-editing": ">=1.1.0",
42
+ "@nuxt/image": ">=2.0.0"
43
43
  },
44
44
  "peerDependenciesMeta": {
45
+ "@directus/types": {
46
+ "optional": true
47
+ },
45
48
  "@directus/visual-editing": {
46
49
  "optional": true
47
50
  },