@serwist/nuxt 9.1.0-preview.0 → 9.1.0

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.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _nuxt_schema from '@nuxt/schema';
2
- import { PluginOptions } from 'vite-plugin-serwist';
2
+ import { PluginOptions } from '@serwist/vite';
3
3
 
4
4
  /**
5
5
  * Make certain fields in a object type optional
@@ -31,4 +31,5 @@ interface ModuleOptions extends Optional<PluginOptions, "swSrc" | "swDest" | "gl
31
31
 
32
32
  declare const _default: _nuxt_schema.NuxtModule<ModuleOptions, ModuleOptions, false>;
33
33
 
34
- export { type ClientOptions, type ModuleOptions, _default as default };
34
+ export { _default as default };
35
+ export type { ClientOptions, ModuleOptions };
package/dist/module.json CHANGED
@@ -2,12 +2,11 @@
2
2
  "name": "@serwist/nuxt",
3
3
  "configKey": "serwist",
4
4
  "compatibility": {
5
- "nuxt": "^3.8.0",
6
- "bridge": false
5
+ "nuxt": "^3.8.0 || ^4.0.0"
7
6
  },
8
- "version": "9.1.0-preview.0",
7
+ "version": "9.1.0",
9
8
  "builder": {
10
- "@nuxt/module-builder": "0.8.4",
9
+ "@nuxt/module-builder": "1.0.1",
11
10
  "unbuild": "unknown"
12
11
  }
13
12
  }
package/dist/module.mjs CHANGED
@@ -1,23 +1,21 @@
1
1
  import path from 'node:path';
2
2
  import { defineNuxtModule, createResolver, addPlugin, extendWebpackConfig } from '@nuxt/kit';
3
- import { resolveEntry, createContext, main, dev, generateServiceWorker } from 'vite-plugin-serwist';
3
+ import { createContext, createApi, main, dev, resolveEntry } from '@serwist/vite';
4
4
  import { createHash } from 'node:crypto';
5
5
  import { createReadStream } from 'node:fs';
6
6
  import fsp from 'node:fs/promises';
7
7
 
8
- const version = "9.1.0-preview.0";
8
+ const version = "9.1.0";
9
9
 
10
10
  function configurePwaOptions(options, nuxt, nitroConfig) {
11
11
  let buildAssetsDir = nuxt.options.app.buildAssetsDir ?? "_nuxt/";
12
- if (buildAssetsDir[0] === "/")
13
- buildAssetsDir = buildAssetsDir.slice(1);
14
- if (buildAssetsDir[buildAssetsDir.length - 1] !== "/")
15
- buildAssetsDir += "/";
12
+ if (buildAssetsDir[0] === "/") buildAssetsDir = buildAssetsDir.slice(1);
13
+ if (buildAssetsDir[buildAssetsDir.length - 1] !== "/") buildAssetsDir += "/";
16
14
  if (!("dontCacheBustURLsMatching" in options)) {
17
15
  options.dontCacheBustURLsMatching = new RegExp(buildAssetsDir);
18
16
  }
19
17
  if (nuxt.options.experimental.payloadExtraction) {
20
- const enableGlobPatterns = nuxt.options._generate || !!nitroConfig.prerender?.routes?.length || Object.values(nitroConfig.routeRules ?? {}).some((r) => r.prerender);
18
+ const enableGlobPatterns = nuxt.options.nitro.static || nuxt.options._generate || !!nitroConfig.prerender?.routes?.length || Object.values(nitroConfig.routeRules ?? {}).some((r) => r.prerender);
21
19
  if (enableGlobPatterns) {
22
20
  options.globPatterns = options.globPatterns ?? [];
23
21
  options.globPatterns.push("**/_payload.json");
@@ -68,10 +66,8 @@ function createManifestTransform(base, publicDir, appManifestFolder) {
68
66
  });
69
67
  });
70
68
  const latestEntry = entries.find((e) => e.url === latest);
71
- if (latestEntry)
72
- latestEntry.revision = revision;
73
- else
74
- entries.push({ url: latest, revision, size: data.size });
69
+ if (latestEntry) latestEntry.revision = revision;
70
+ else entries.push({ url: latest, revision, size: data.size });
75
71
  } else {
76
72
  entries = entries.filter((e) => e.url !== latest);
77
73
  }
@@ -85,13 +81,12 @@ const module = defineNuxtModule({
85
81
  name: "@serwist/nuxt",
86
82
  configKey: "serwist",
87
83
  compatibility: {
88
- nuxt: "^3.8.0",
89
- bridge: false
84
+ nuxt: "^3.8.0 || ^4.0.0"
90
85
  },
91
86
  version
92
87
  },
93
88
  defaults(nuxt) {
94
- const publicDir = nuxt.options.nitro?.output?.publicDir ? path.resolve(nuxt.options.nitro.output.publicDir) : path.resolve(nuxt.options.buildDir, "../.output/public");
89
+ const publicDir = path.resolve(nuxt.options.rootDir, ".output/public");
95
90
  return {
96
91
  base: nuxt.options.app.baseURL,
97
92
  scope: nuxt.options.app.baseURL,
@@ -110,11 +105,11 @@ const module = defineNuxtModule({
110
105
  async setup(options, nuxt) {
111
106
  const resolver = createResolver(import.meta.url);
112
107
  let ctx;
108
+ let api;
113
109
  const { client: _client, ...userOptions } = options;
114
110
  const client = { registerPlugin: true, ..._client };
115
111
  const runtimeDir = resolver.resolve("./runtime");
116
- if (!nuxt.options.ssr)
117
- nuxt.options.build.transpile.push(runtimeDir);
112
+ if (!nuxt.options.ssr) nuxt.options.build.transpile.push(runtimeDir);
118
113
  if (client.registerPlugin) {
119
114
  addPlugin({
120
115
  src: resolver.resolve(runtimeDir, "plugins/client"),
@@ -128,17 +123,19 @@ const module = defineNuxtModule({
128
123
  configurePwaOptions(options, nuxt, nitro.options);
129
124
  });
130
125
  nuxt.hook("vite:extend", ({ config }) => {
131
- const plugin = config.plugins?.find((p) => p && typeof p === "object" && "name" in p && p.name === "vite-plugin-serwist");
126
+ const plugin = config.plugins?.find((p) => p && typeof p === "object" && "name" in p && p.name === "@serwist/vite");
132
127
  if (plugin) {
133
- throw new Error("Remove 'vite-plugin-serwist' from your Vite configuration! Do not use it alongside '@serwist/nuxt'.");
128
+ throw new Error("Remove '@serwist/vite' from your Vite configuration! Do not use it alongside '@serwist/nuxt'.");
134
129
  }
135
130
  });
136
131
  nuxt.hook("vite:extendConfig", async (viteInlineConfig, { isClient }) => {
137
- if (!viteInlineConfig.plugins)
132
+ if (!viteInlineConfig.plugins) {
138
133
  viteInlineConfig.plugins = [];
139
- const plugin = viteInlineConfig.plugins.find((p) => p && typeof p === "object" && "name" in p && p.name === "vite-plugin-serwist");
140
- if (plugin)
141
- throw new Error("Remove 'vite-plugin-serwist' from your Vite configuration! Do not use it alongside '@serwist/nuxt'.");
134
+ }
135
+ const plugin = viteInlineConfig.plugins.find((p) => p && typeof p === "object" && "name" in p && p.name === "@serwist/vite");
136
+ if (plugin) {
137
+ throw new Error("Remove '@serwist/vite' from your Vite configuration! Do not use it alongside '@serwist/nuxt'.");
138
+ }
142
139
  if (isClient) {
143
140
  const configuration = "virtual:serwist-nuxt-configuration";
144
141
  const resolvedConfiguration = `\0${configuration}`;
@@ -160,15 +157,19 @@ const module = defineNuxtModule({
160
157
  });
161
158
  }
162
159
  ctx = createContext(userOptions, "nuxt");
163
- viteInlineConfig.plugins.push(main(ctx), dev(ctx));
160
+ api = createApi(ctx);
161
+ const plugins = [main(ctx, api), dev(ctx, api)];
162
+ viteInlineConfig.plugins.push(plugins);
164
163
  });
165
164
  extendWebpackConfig(() => {
166
165
  throw new Error("Webpack is not supported: '@serwist/nuxt' can only be used with Vite!");
167
166
  });
168
167
  if (!nuxt.options.dev) {
169
168
  nuxt.hook("nitro:build:public-assets", () => {
170
- if (ctx && !ctx.options.disable)
171
- void generateServiceWorker(ctx);
169
+ if (!api || api.disabled) {
170
+ return;
171
+ }
172
+ void api.generateSW();
172
173
  });
173
174
  }
174
175
  }
@@ -1,2 +1,6 @@
1
- declare const plugin: any;
1
+ import type { Serwist } from "@serwist/window";
2
+ import type { Plugin } from "#app";
3
+ declare const plugin: Plugin<{
4
+ serwist: Serwist | undefined;
5
+ }>;
2
6
  export default plugin;
package/dist/types.d.mts CHANGED
@@ -1 +1,3 @@
1
- export { type ClientOptions, type ModuleOptions, default } from './module.js'
1
+ export { default } from './module.mjs'
2
+
3
+ export { type ClientOptions, type ModuleOptions } from './module.mjs'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serwist/nuxt",
3
- "version": "9.1.0-preview.0",
3
+ "version": "9.1.0",
4
4
  "type": "module",
5
5
  "description": "A Nuxt module that integrates Serwist into your application.",
6
6
  "files": [
@@ -27,7 +27,6 @@
27
27
  "bugs": "https://github.com/serwist/serwist/issues",
28
28
  "homepage": "https://serwist.pages.dev",
29
29
  "main": "./dist/module.mjs",
30
- "types": "./dist/types.d.ts",
31
30
  "exports": {
32
31
  ".": {
33
32
  "types": "./dist/types.d.mts",
@@ -45,29 +44,29 @@
45
44
  "vite",
46
45
  "@nuxt/kit",
47
46
  "@serwist/build",
48
- "vite-plugin-serwist",
47
+ "@serwist/vite",
49
48
  "virtual:serwist-nuxt-configuration",
50
49
  "virtual:serwist"
51
50
  ]
52
51
  },
53
52
  "dependencies": {
54
- "@nuxt/kit": "3.13.2",
55
- "@serwist/build": "9.1.0-preview.0",
56
- "vite-plugin-serwist": "9.1.0-preview.0",
57
- "@serwist/window": "9.1.0-preview.0"
53
+ "@nuxt/kit": "4.0.0",
54
+ "@serwist/build": "9.1.0",
55
+ "@serwist/vite": "9.1.0",
56
+ "@serwist/window": "9.1.0"
58
57
  },
59
58
  "devDependencies": {
60
- "@nuxt/module-builder": "0.8.4",
61
- "@nuxt/schema": "3.13.2",
62
- "@types/node": "22.8.6",
63
- "eslint": "9.14.0",
64
- "nuxt": "3.13.2",
59
+ "@nuxt/module-builder": "1.0.1",
60
+ "@nuxt/schema": "4.0.0",
61
+ "@types/node": "24.0.14",
62
+ "eslint": "9.31.0",
63
+ "nuxt": "4.0.0",
65
64
  "rimraf": "5.0.9",
66
65
  "serve": "14.2.4",
67
- "typescript": "5.6.3",
68
- "vite": "5.4.10",
69
- "vue-tsc": "2.1.10",
70
- "@serwist/configs": "9.1.0-preview.0"
66
+ "typescript": "5.8.3",
67
+ "vite": "7.0.4",
68
+ "vue-tsc": "3.0.1",
69
+ "@serwist/configs": "9.1.0"
71
70
  },
72
71
  "peerDependencies": {
73
72
  "typescript": ">=5.0.0",
package/dist/module.cjs DELETED
@@ -1,5 +0,0 @@
1
- module.exports = function(...args) {
2
- return import('./module.mjs').then(m => m.default.call(this, ...args))
3
- }
4
- const _meta = module.exports.meta = require('./module.json')
5
- module.exports.getMeta = () => Promise.resolve(_meta)
package/dist/module.d.ts DELETED
@@ -1,34 +0,0 @@
1
- import * as _nuxt_schema from '@nuxt/schema';
2
- import { PluginOptions } from 'vite-plugin-serwist';
3
-
4
- /**
5
- * Make certain fields in a object type optional
6
- *
7
- * @example
8
- * interface A {
9
- * a: string;
10
- * b: string;
11
- * c: string;
12
- * }
13
- * type B = Optional<A, "b" | "c">;
14
- * const b: B = { a: "hehe" }; //valid
15
- * const b: B = {}; //invalid
16
- */
17
- type Optional<T, U extends keyof T> = Omit<T, U> & Partial<Pick<T, U>>;
18
-
19
- interface ClientOptions {
20
- /**
21
- * Whether this plugin should be registered.
22
- */
23
- registerPlugin?: boolean;
24
- }
25
- interface ModuleOptions extends Optional<PluginOptions, "swSrc" | "swDest" | "globDirectory"> {
26
- /**
27
- * Options for plugin.
28
- */
29
- client?: ClientOptions;
30
- }
31
-
32
- declare const _default: _nuxt_schema.NuxtModule<ModuleOptions, ModuleOptions, false>;
33
-
34
- export { type ClientOptions, type ModuleOptions, _default as default };
package/dist/types.d.ts DELETED
@@ -1 +0,0 @@
1
- export { type ClientOptions, type ModuleOptions, default } from './module'