@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 +25 -1
- package/CONFORMANCE.md +4 -4
- package/README.md +26 -14
- package/dist/module.json +1 -1
- package/dist/runtime/composables/use-pdf-page-numbers.js +1 -1
- package/dist/runtime/renderer/types.js +1 -1
- package/dist/test.mjs +0 -1
- package/package.json +20 -11
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
|
-
##
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
##
|
|
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
|
-
##
|
|
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
|
-
##
|
|
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
|
-
##
|
|
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
|
|
189
|
+
pnpm verify
|
|
181
190
|
```
|
|
182
191
|
|
|
183
|
-
Use `pnpm docs:dev` to run the documentation site.
|
|
184
|
-
`pnpm release:verify` only for release
|
|
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 [
|
|
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
|
@@ -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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lupinum/nuxt-pdf",
|
|
3
|
-
"version": "0.3.
|
|
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
|
-
"
|
|
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:
|
|
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
|
-
"
|
|
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.
|
|
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.
|
|
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.
|
|
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": "
|
|
131
|
+
"changelogen": "0.6.2",
|
|
124
132
|
"eslint": "^10.4.1",
|
|
125
|
-
"nuxt": "^4.
|
|
126
|
-
"pdfjs-dist": "
|
|
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",
|