@lupinum/nuxt-pdf 0.3.0 → 0.3.1

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/CHANGELOG.md CHANGED
@@ -4,7 +4,31 @@ All notable changes to `@lupinum/nuxt-pdf` are recorded here. The format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the project adheres
5
5
  to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
- ## Unreleased
7
+ ## 0.3.1 - 2026-08-13
8
+
9
+ ### Fixed
10
+
11
+ - Prepare the Nuxt type files before clean package and documentation builds.
12
+ - Normalize compiler and package paths on Windows.
13
+ - Preserve literal title markers in public documentation.
14
+
15
+ ### Changed
16
+
17
+ - Move the package, repository, documentation, contribution, and support
18
+ surfaces to the shared Lupinum standard.
19
+ - Update the documentation site to Ginko Content `0.4.0-rc.2` and Ginko Docs
20
+ `0.3.0-rc.5`.
21
+ - Add privacy-friendly Plausible analytics and page feedback to the
22
+ documentation site.
23
+ - Stabilize the table-of-contents raster evidence across supported runners.
24
+
25
+ ### Security
26
+
27
+ - Replace source publishing with a protected workflow that certifies one
28
+ immutable tarball, publishes it through npm trusted publishing with
29
+ provenance, and creates the matching GitHub release.
30
+ - Add full dependency audits, CodeQL, package previews, and explicit
31
+ repository policy checks.
8
32
 
9
33
  ## 0.3.0 - 2026-08-11
10
34
 
package/CONFORMANCE.md CHANGED
@@ -1,11 +1,11 @@
1
- # Nuxt PDF 0.3.0 conformance
1
+ # Nuxt PDF 0.3.1 conformance
2
2
 
3
3
  Nuxt PDF claims behavioral compatibility for a deliberately small, tested
4
4
  corpus. It does not claim full React PDF API or test-suite compatibility.
5
5
 
6
6
  ## Version boundary
7
7
 
8
- | Layer | 0.3.0 boundary |
8
+ | Layer | 0.3.1 boundary |
9
9
  |---|---|
10
10
  | Node.js | `^22.14.0`, `^24.0.0`, or `^26.0.0` |
11
11
  | Nuxt | `^4.4.8` |
@@ -202,7 +202,7 @@ checking.
202
202
 
203
203
  ### Vue and Nuxt authoring
204
204
 
205
- The 0.3.0 tests verify:
205
+ The 0.3.1 tests verify:
206
206
 
207
207
  - `PdfDocument`, `PdfPage`, `PdfView`, `PdfText`, `PdfImage`, `PdfLink`, and
208
208
  `PdfNote`;
@@ -432,7 +432,7 @@ parser, not two. Claimed:
432
432
  Verified end-to-end against a real rendered template, including assertion
433
433
  failure messages, in `test/test-utils-public.test.ts`.
434
434
 
435
- ## Explicitly not claimed in 0.3.0
435
+ ## Explicitly not claimed in 0.3.1
436
436
 
437
437
  - Full React PDF component, hook, browser-helper, or test-suite parity.
438
438
  - React runtime compatibility or React-shaped dynamic callback results.
package/README.md CHANGED
@@ -19,10 +19,17 @@
19
19
  > release, but a minor release can contain documented breaking changes before
20
20
  > version 1.0.
21
21
 
22
+ ## Why use Nuxt PDF?
23
+
22
24
  Nuxt PDF discovers Vue Single File Components in `pdfs/`. It renders these
23
25
  components on the Node server through a PDF layout engine. The client bundle
24
26
  does not contain the renderer or document templates.
25
27
 
28
+ This approach gives you typed document props, reusable Vue components, stable
29
+ server output, and PDF-specific test helpers in one Nuxt module.
30
+
31
+ ## When to use it
32
+
26
33
  Use Nuxt PDF for structured documents such as invoices, reports,
27
34
  certificates, tickets, and labels.
28
35
 
@@ -38,7 +45,7 @@ edit and sign an existing PDF.
38
45
  Nuxt 3, Node 20, browser rendering, and edge rendering are outside the current
39
46
  support boundary.
40
47
 
41
- ## Install
48
+ ## Installation
42
49
 
43
50
  Install the module in a Nuxt 4 application:
44
51
 
@@ -54,7 +61,7 @@ export default defineNuxtConfig({
54
61
  })
55
62
  ```
56
63
 
57
- ## Render a document
64
+ ## Quick start
58
65
 
59
66
  Create `pdfs/invoice.vue`:
60
67
 
@@ -125,7 +132,7 @@ Start Nuxt. Open these development routes:
125
132
  Restart `nuxt dev` after you first enable the module. This action generates
126
133
  the typed `#pdf` registry.
127
134
 
128
- ## Authoring model
135
+ ## How it works
129
136
 
130
137
  PDF templates use typed props, interpolation, `v-if`, keyed `v-for`, slots,
131
138
  and local Vue components. Nuxt PDF provides document, page, text, image, link,
@@ -138,11 +145,6 @@ Load request data before the render and pass it through typed props.
138
145
  Nuxt PDF supports local images and fonts. Remote images are disabled until an
139
146
  operator configures an explicit HTTPS allowlist.
140
147
 
141
- Read the [documentation](https://nuxt-pdf.lupinum.com) for authoring, assets,
142
- links, bookmarks, tables of contents, testing, and the complete API reference.
143
- Read [CONFORMANCE.md](./CONFORMANCE.md) for the exact tested behavior and known
144
- limitations.
145
-
146
148
  ## Test a document
147
149
 
148
150
  Install the optional test dependencies:
@@ -172,16 +174,24 @@ expectPdf(parsed)
172
174
  The test entry can also inspect links, bookmarks, page geometry, and raster
173
175
  baselines.
174
176
 
175
- ## Develop Nuxt PDF
177
+ ## Documentation
178
+
179
+ Read the [Nuxt PDF documentation](https://nuxt-pdf.lupinum.com) for authoring,
180
+ assets, links, bookmarks, tables of contents, testing, and the complete API
181
+ reference. Read [CONFORMANCE.md](./CONFORMANCE.md) for the exact tested behavior
182
+ and known limitations.
183
+
184
+ ## Contributing and development
176
185
 
177
186
  ```bash
178
187
  pnpm install --frozen-lockfile
179
188
  pnpm dev
180
- pnpm check
189
+ pnpm verify
181
190
  ```
182
191
 
183
- Use `pnpm docs:dev` to run the documentation site. Use
184
- `pnpm release:verify` only for release preparation.
192
+ Use `pnpm docs:dev` to run the documentation site. Run `pnpm docs:build` before
193
+ you hand off a documentation change. Use `pnpm release:verify` only for release
194
+ preparation.
185
195
 
186
196
  Read [CONTRIBUTING.md](./CONTRIBUTING.md) before you open a pull request.
187
197
  Maintainers use [MAINTAINING.md](./MAINTAINING.md) for release and recovery
@@ -191,8 +201,10 @@ procedures.
191
201
 
192
202
  - Read the [documentation](https://nuxt-pdf.lupinum.com).
193
203
  - Join the [Lupinum OSS Discord](https://discord.gg/RPH6SeA36N).
194
- - Open a [GitHub issue](https://github.com/lupinum-dev/nuxt-pdf/issues) for a
195
- reproducible defect.
204
+ - Open a [bug report](https://github.com/lupinum-dev/nuxt-pdf/issues/new?template=bug.md)
205
+ for a reproducible defect.
206
+ - Open a [feature request](https://github.com/lupinum-dev/nuxt-pdf/issues/new?template=proposal.md)
207
+ before you plan a larger change.
196
208
  - Follow [SECURITY.md](./SECURITY.md) for a private vulnerability report.
197
209
 
198
210
  ## License
package/dist/module.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "compatibility": {
5
5
  "nuxt": "^4.4.8"
6
6
  },
7
- "version": "0.3.0",
7
+ "version": "0.3.1",
8
8
  "builder": {
9
9
  "@nuxt/module-builder": "1.0.2",
10
10
  "unbuild": "unknown"
@@ -3,7 +3,7 @@ import {
3
3
  readonly
4
4
  } from "vue";
5
5
  import { NuxtPdfError, PDF_ERROR_CODES } from "../shared/errors.js";
6
- export const PDF_PAGE_NUMBERS_KEY = Symbol.for("@lupinum/nuxt-pdf:page-numbers");
6
+ export const PDF_PAGE_NUMBERS_KEY = /* @__PURE__ */ Symbol.for("@lupinum/nuxt-pdf:page-numbers");
7
7
  export const usePdfPageNumbers = () => {
8
8
  const context = inject(PDF_PAGE_NUMBERS_KEY, null);
9
9
  if (!context) {
@@ -25,7 +25,7 @@ export const PDF_PRIMITIVE_NAMES = {
25
25
  [PDF_PRIMITIVES.RadialGradient]: "PdfRadialGradient",
26
26
  [PDF_PRIMITIVES.Stop]: "PdfStop"
27
27
  };
28
- export const PDF_COMMENT = Symbol("nuxt-pdf-comment");
28
+ export const PDF_COMMENT = /* @__PURE__ */ Symbol("nuxt-pdf-comment");
29
29
  const ELEMENT_TYPES = /* @__PURE__ */ new Set([
30
30
  PDF_PRIMITIVES.Document,
31
31
  PDF_PRIMITIVES.Page,
package/dist/test.mjs CHANGED
@@ -268,7 +268,6 @@ async function withPdfDocument(data, read) {
268
268
  const loadingTask = pdfJs.getDocument({
269
269
  CanvasFactory: NapiCanvasFactory,
270
270
  data: copyPdfData(data),
271
- isEvalSupported: false,
272
271
  stopAtErrors: true,
273
272
  useWorkerFetch: false,
274
273
  verbosity: 0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lupinum/nuxt-pdf",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Author and render PDFs with Vue components in Nuxt",
5
5
  "keywords": [
6
6
  "nuxt",
@@ -55,15 +55,19 @@
55
55
  "dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxt prepare playground",
56
56
  "build": "nuxt prepare && nuxt-module-build build",
57
57
  "api:write": "node scripts/check-api-report.mjs --write",
58
- "docs:build": "pnpm --dir docs build",
58
+ "changelog": "changelogen --no-output",
59
+ "docs:build": "pnpm build && pnpm --dir docs build",
60
+ "docs:build:vercel": "node scripts/build-docs-vercel.mjs",
59
61
  "docs:dev": "pnpm --dir docs dev",
60
62
  "format": "eslint . --fix",
61
63
  "format:check": "eslint .",
62
64
  "lint": "eslint .",
63
65
  "test": "pnpm test:prepare && vitest run",
64
66
  "test:api": "node scripts/check-api-report.mjs",
67
+ "release:notes": "node scripts/write-release-notes.mjs",
65
68
  "release:pack": "pnpm build && node scripts/check-release-artifact.mjs release-artifacts",
66
- "release:verify": "pnpm check && pnpm release:pack",
69
+ "release:prepare": "changelogen --bump --clean",
70
+ "release:verify": "pnpm verify && pnpm release:pack",
67
71
  "test:artifact": "node scripts/check-release-artifact.mjs",
68
72
  "test:dependencies": "node scripts/check-production-dependencies.mjs",
69
73
  "test:docs": "node scripts/check-documentation.mjs && pnpm --dir docs check",
@@ -75,14 +79,18 @@
75
79
  "test:quickstart": "node scripts/test-package-quickstart.mjs",
76
80
  "test:raster": "vitest run --config vitest.raster.config.ts",
77
81
  "test:version-headings": "node scripts/check-version-headings.mjs",
82
+ "test:workflows": "node scripts/check-workflow-policy.mjs",
83
+ "check:vercel": "node scripts/check-vercel-config.mjs",
78
84
  "test:serverless": "vitest run --config vitest.serverless.config.ts",
79
85
  "test:watch": "vitest watch",
80
86
  "typecheck": "nuxt prepare && vue-tsc --noEmit && nuxt prepare test/fixtures/basic && vue-tsc --noEmit -p test/fixtures/basic/tsconfig.json && pnpm test:prepare && pnpm --dir playground exec vue-tsc --noEmit",
81
- "check": "pnpm format:check && pnpm typecheck && pnpm test:docs && pnpm test:version-headings && pnpm test:dependencies && pnpm test && pnpm test:production && pnpm test:serverless && pnpm build && pnpm test:package-metadata && pnpm dev:build && pnpm test:artifact"
87
+ "audit:all": "pnpm audit",
88
+ "verify": "pnpm audit:all && pnpm check",
89
+ "check": "pnpm format:check && pnpm check:vercel && pnpm typecheck && pnpm test:docs && pnpm test:version-headings && pnpm test:workflows && pnpm test:dependencies && pnpm test && pnpm test:production && pnpm test:serverless && pnpm build && pnpm test:package-metadata && pnpm dev:build && pnpm test:artifact"
82
90
  },
83
91
  "dependencies": {
84
92
  "@jridgewell/remapping": "2.3.5",
85
- "@nuxt/kit": "^4.4.8",
93
+ "@nuxt/kit": "^4.5.2",
86
94
  "@react-pdf/font": "4.0.8",
87
95
  "@react-pdf/layout": "4.6.1",
88
96
  "@react-pdf/pdfkit": "5.1.1",
@@ -97,7 +105,7 @@
97
105
  "peerDependencies": {
98
106
  "@napi-rs/canvas": "^0.1.97",
99
107
  "nuxt": "^4.4.8",
100
- "pdfjs-dist": "^5.6.205",
108
+ "pdfjs-dist": "^5.6.205 || ^6.2.108",
101
109
  "vue": "^3.5.0"
102
110
  },
103
111
  "peerDependenciesMeta": {
@@ -112,18 +120,19 @@
112
120
  "@arethetypeswrong/cli": "^0.18.5",
113
121
  "@jridgewell/trace-mapping": "0.3.31",
114
122
  "@napi-rs/canvas": "0.1.97",
115
- "@nuxt/devtools": "^3.2.4",
123
+ "@nuxt/devtools": "^3.3.1",
116
124
  "@nuxt/eslint-config": "^1.15.2",
117
125
  "@nuxt/module-builder": "^1.0.2",
118
- "@nuxt/schema": "^4.4.8",
126
+ "@nuxt/schema": "^4.5.2",
119
127
  "@nuxt/test-utils": "^4.0.3",
120
128
  "@react-pdf/renderer": "4.5.1",
121
129
  "@types/node": "26.1.1",
122
130
  "@types/react": "19.2.14",
123
- "changelogen": "^0.6.2",
131
+ "changelogen": "0.6.2",
124
132
  "eslint": "^10.4.1",
125
- "nuxt": "^4.4.8",
126
- "pdfjs-dist": "5.6.205",
133
+ "nuxt": "^4.5.2",
134
+ "pdfjs-dist": "6.2.108",
135
+ "pkg-pr-new": "0.0.87",
127
136
  "publint": "^0.3.21",
128
137
  "react": "19.2.0",
129
138
  "source-code-pro": "2.42.0",