From 3982329ac766f501099e34b771a70eaad0179e42 Mon Sep 17 00:00:00 2001
From: "tryghost-renovate[bot]"
<269725441+tryghost-renovate[bot]@users.noreply.github.com>
Date: Thu, 13 Aug 2026 23:31:44 +0000
Subject: [PATCH 01/13] Update dependency @xyflow/react to v12.11.2 (#29591)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@xyflow/react](https://reactflow.dev)
([source](https://redirect.github.com/xyflow/xyflow/tree/HEAD/packages/react))
| [`12.11.1` →
`12.11.2`](https://renovatebot.com/diffs/npm/@xyflow%2freact/12.11.1/12.11.2)
|

|

|
---
### Release Notes
xyflow/xyflow (@xyflow/react)
###
[`v12.11.2`](https://redirect.github.com/xyflow/xyflow/blob/HEAD/packages/react/CHANGELOG.md#12112)
[Compare
Source](https://redirect.github.com/xyflow/xyflow/compare/@xyflow/react@12.11.1...@xyflow/react@12.11.2)
##### Patch Changes
- [#5825](https://redirect.github.com/xyflow/xyflow/pull/5825)
[`5072914`](https://redirect.github.com/xyflow/xyflow/commit/5072914791f89d99e4484f1d36c9b6781a0a2c36)
- Only create an `XYDrag` instance for draggable nodes.
- [#5847](https://redirect.github.com/xyflow/xyflow/pull/5847)
[`742860c`](https://redirect.github.com/xyflow/xyflow/commit/742860c2939f1b5cba2fced275487fdaeee8a091)
- Stop the `MiniMap` from re-rendering on every store update.
- [#5846](https://redirect.github.com/xyflow/xyflow/pull/5846)
[`17c64a1`](https://redirect.github.com/xyflow/xyflow/commit/17c64a158554b2a6172f6030e6c280b1dd12786c)
- Apply the viewport pan/zoom transform imperatively so the `Viewport`
component only renders once.
- Updated dependencies
\[[`c707267`](https://redirect.github.com/xyflow/xyflow/commit/c707267bc80bc954fdc69a08c9e00c98068dd613),
[`0c0cebc`](https://redirect.github.com/xyflow/xyflow/commit/0c0cebc08cc34d2852d1ea429df638732b3edf68),
[`56cf3b0`](https://redirect.github.com/xyflow/xyflow/commit/56cf3b00369a680a71743e4fb277db26e861d4b0),
[`a01bb6b`](https://redirect.github.com/xyflow/xyflow/commit/a01bb6bf51e2de4eeee052187f3ce533c0e77754),
[`9b3f390`](https://redirect.github.com/xyflow/xyflow/commit/9b3f390e21c1801832449389b069c4e5a13b4d7f),
[`cdfcbeb`](https://redirect.github.com/xyflow/xyflow/commit/cdfcbeb9618437b2e7c35336db157e36a5a0731e)]:
-
[@xyflow/system](https://redirect.github.com/xyflow/system)@0.0.79
---
### Configuration
📅 **Schedule**: (in timezone Etc/UTC)
- Branch creation
- Only on Sunday and Saturday (`* * * * 0,6`)
- Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`)
- Between 12:00 AM and 05:59 AM, Monday through Saturday (`* 0-5 * *
1-6`)
- Automerge
- Only on Sunday and Saturday (`* * * * 0,6`)
- Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`)
- Between 12:00 AM and 05:59 AM, Monday through Saturday (`* 0-5 * *
1-6`)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR has been generated by [Mend Renovate
CLI](https://redirect.github.com/renovatebot/renovate).
Co-authored-by: tryghost-renovate[bot] <269725441+tryghost-renovate[bot]@users.noreply.github.com>
---
apps/admin/package.json | 2 +-
pnpm-lock.yaml | 18 +++++++++---------
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/apps/admin/package.json b/apps/admin/package.json
index 681dca9bc8e..e778f87b099 100644
--- a/apps/admin/package.json
+++ b/apps/admin/package.json
@@ -45,7 +45,7 @@
"@tryghost/string": "catalog:",
"@tryghost/timezone-data": "catalog:",
"@uiw/react-codemirror": "catalog:",
- "@xyflow/react": "12.11.1",
+ "@xyflow/react": "12.11.2",
"clsx": "catalog:",
"dequal": "catalog:",
"i18n-iso-countries": "7.14.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 033b25ec17a..67088094001 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -769,8 +769,8 @@ importers:
specifier: 'catalog:'
version: 4.25.11(@babel/runtime@7.29.7)(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/lint@6.9.7)(@codemirror/search@6.7.1)(@codemirror/state@6.7.1)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.43.6)(codemirror@6.0.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@xyflow/react':
- specifier: 12.11.1
- version: 12.11.1(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: 12.11.2
+ version: 12.11.2(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
clsx:
specifier: 'catalog:'
version: 2.1.1
@@ -10218,8 +10218,8 @@ packages:
'@xtuc/long@4.2.2':
resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
- '@xyflow/react@12.11.1':
- resolution: {integrity: sha512-L+zBoLGSXham0MnlY8QqjfR7/C5JNw0zxkaey5aZ5XmCgJBAdH4+WRIu8CR40d3l/BdU635V6YbhBK1jMo8/6Q==}
+ '@xyflow/react@12.11.2':
+ resolution: {integrity: sha512-eLAlDWJfWnQEhJwGMjlWdAXO9eYllKpliUmPQlAmOLxz6mExXuzMVDUKLMquixgkrtmMFFtug3jGKmYYld12cA==}
peerDependencies:
'@types/react': '>=17'
'@types/react-dom': '>=17'
@@ -10231,8 +10231,8 @@ packages:
'@types/react-dom':
optional: true
- '@xyflow/system@0.0.78':
- resolution: {integrity: sha512-lY0z2qP33fUhTva9Vaxrk0lqZta2pkbxB1trHAx1omnJqRtPvDlAQYV2r5fhS6AdpkulYmbNW0svy+A4/t4B/g==}
+ '@xyflow/system@0.0.79':
+ resolution: {integrity: sha512-czLyOh91NF0hIzbNzwi8I6GlqG23BHh2435OddfI6uiaLH3xdrdygO93gqgH1Bv9mhy8XPFQJOBn1FTq4LvEWA==}
'@yarnpkg/lockfile@1.1.0':
resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==}
@@ -30640,9 +30640,9 @@ snapshots:
'@xtuc/long@4.2.2': {}
- '@xyflow/react@12.11.1(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@xyflow/react@12.11.2(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@xyflow/system': 0.0.78
+ '@xyflow/system': 0.0.79
classcat: 5.0.5
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -30653,7 +30653,7 @@ snapshots:
transitivePeerDependencies:
- immer
- '@xyflow/system@0.0.78':
+ '@xyflow/system@0.0.79':
dependencies:
'@types/d3-drag': 3.0.7
'@types/d3-interpolate': 3.0.4
From 87558c7bc93eb05d61de1acc193e3c5c51ed37a5 Mon Sep 17 00:00:00 2001
From: "tryghost-renovate[bot]"
<269725441+tryghost-renovate[bot]@users.noreply.github.com>
Date: Fri, 14 Aug 2026 00:41:44 +0000
Subject: [PATCH 02/13] Update tryghost/actions digest to 12da067 (#29972)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [tryghost/actions](https://redirect.github.com/tryghost/actions)
([changelog](https://redirect.github.com/tryghost/actions/compare/d5080c41ac3ab68c4115bcd11fad5379778a7c70..12da0671df2e249a65c467340262e6c4251d9565))
| action | digest | `d5080c4` → `12da067` |
---
### Configuration
📅 **Schedule**: (in timezone Etc/UTC)
- Branch creation
- Only on Sunday and Saturday (`* * * * 0,6`)
- Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`)
- Between 12:00 AM and 05:59 AM, Monday through Saturday (`* 0-5 * *
1-6`)
- Automerge
- Only on Sunday and Saturday (`* * * * 0,6`)
- Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`)
- Between 12:00 AM and 05:59 AM, Monday through Saturday (`* 0-5 * *
1-6`)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR has been generated by [Mend
Renovate](https://redirect.github.com/renovatebot/renovate).
Co-authored-by: tryghost-renovate[bot] <269725441+tryghost-renovate[bot]@users.noreply.github.com>
---
.github/workflows/ci.yml | 20 ++++++++++----------
.github/workflows/label-actions.yml | 2 +-
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 677da159217..250aa9ce79f 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -410,7 +410,7 @@ jobs:
- name: Lint boundaries
run: pnpm nx run ghost-monorepo:lint:boundaries
- - uses: tryghost/actions/actions/slack-build@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main
+ - uses: tryghost/actions/actions/slack-build@12da0671df2e249a65c467340262e6c4251d9565 # main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
@@ -511,7 +511,7 @@ jobs:
name: admin-coverage
path: apps/*/coverage/cobertura-coverage.xml
- - uses: tryghost/actions/actions/slack-build@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main
+ - uses: tryghost/actions/actions/slack-build@12da0671df2e249a65c467340262e6c4251d9565 # main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
@@ -729,7 +729,7 @@ jobs:
exit 1
fi
- - uses: tryghost/actions/actions/slack-build@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main
+ - uses: tryghost/actions/actions/slack-build@12da0671df2e249a65c467340262e6c4251d9565 # main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
@@ -878,7 +878,7 @@ jobs:
ghost/*/coverage-e2e/cobertura-coverage.xml
ghost/*/coverage-integration/cobertura-coverage.xml
- - uses: tryghost/actions/actions/slack-build@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main
+ - uses: tryghost/actions/actions/slack-build@12da0671df2e249a65c467340262e6c4251d9565 # main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
@@ -968,7 +968,7 @@ jobs:
exit 1
fi
- - uses: tryghost/actions/actions/slack-build@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main
+ - uses: tryghost/actions/actions/slack-build@12da0671df2e249a65c467340262e6c4251d9565 # main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
@@ -1054,7 +1054,7 @@ jobs:
path: ${{ steps.app_name.outputs.root }}/playwright-report
retention-days: 30
- - uses: tryghost/actions/actions/slack-build@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main
+ - uses: tryghost/actions/actions/slack-build@12da0671df2e249a65c467340262e6c4251d9565 # main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
@@ -1125,7 +1125,7 @@ jobs:
run: |
[ -f ~/.ghost/logs/*.log ] && cat ~/.ghost/logs/*.log
- - uses: tryghost/actions/actions/slack-build@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main
+ - uses: tryghost/actions/actions/slack-build@12da0671df2e249a65c467340262e6c4251d9565 # main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
@@ -1207,7 +1207,7 @@ jobs:
retention-days: 7
if-no-files-found: error
- - uses: tryghost/actions/actions/slack-build@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main
+ - uses: tryghost/actions/actions/slack-build@12da0671df2e249a65c467340262e6c4251d9565 # main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
@@ -1290,7 +1290,7 @@ jobs:
retention-days: 7
if-no-files-found: error
- - uses: tryghost/actions/actions/slack-build@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main
+ - uses: tryghost/actions/actions/slack-build@12da0671df2e249a65c467340262e6c4251d9565 # main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
@@ -1927,7 +1927,7 @@ jobs:
path: e2e/test-results
retention-days: 7
- - uses: tryghost/actions/actions/slack-build@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main
+ - uses: tryghost/actions/actions/slack-build@12da0671df2e249a65c467340262e6c4251d9565 # main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
diff --git a/.github/workflows/label-actions.yml b/.github/workflows/label-actions.yml
index c4893032ca5..47263cbecc6 100644
--- a/.github/workflows/label-actions.yml
+++ b/.github/workflows/label-actions.yml
@@ -18,4 +18,4 @@ jobs:
runs-on: ubuntu-slim
if: github.repository_owner == 'TryGhost'
steps:
- - uses: tryghost/actions/actions/label-actions@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main
+ - uses: tryghost/actions/actions/label-actions@12da0671df2e249a65c467340262e6c4251d9565 # main
From d656bf3debe535a7aa2f1d1400e6e205c6e8dcaa Mon Sep 17 00:00:00 2001
From: Austin Burdine
Date: Thu, 13 Aug 2026 16:05:20 -0400
Subject: [PATCH 03/13] Removed unnecessary intl dep
no ref
- intl has been included in Node (with full-icu as of 13+) meaning we don't need it anymore as a dependency
---
.../services/theme-engine/i18n/i18n.js | 33 -------------------
ghost/core/package.json | 1 -
pnpm-lock.yaml | 8 -----
3 files changed, 42 deletions(-)
diff --git a/ghost/core/core/frontend/services/theme-engine/i18n/i18n.js b/ghost/core/core/frontend/services/theme-engine/i18n/i18n.js
index 975b7474a05..7f23811114d 100644
--- a/ghost/core/core/frontend/services/theme-engine/i18n/i18n.js
+++ b/ghost/core/core/frontend/services/theme-engine/i18n/i18n.js
@@ -46,10 +46,6 @@ class I18n {
return 'en';
}
- supportedLocales() {
- return [this.defaultLocale()];
- }
-
/**
* Exporting the current locale (e.g. "en") to make it available for other files as well,
* such as core/frontend/helpers/date.js and core/frontend/helpers/lang.js
@@ -92,8 +88,6 @@ class I18n {
*/
init() {
this._strings = this._loadStrings();
-
- this._initializeIntl();
}
/**
@@ -228,33 +222,6 @@ class I18n {
return msg;
}
- /**
- * [Private] Setup i18n support:
- * - Polyfill node.js if it does not have Intl support or support for a particular locale
- */
- _initializeIntl() {
- let hasBuiltInLocaleData;
- let IntlPolyfill;
-
- if (global.Intl) {
- // Determine if the built-in `Intl` has the locale data we need.
- hasBuiltInLocaleData = this.supportedLocales().every(function (locale) {
- return Intl.NumberFormat.supportedLocalesOf(locale)[0] === locale &&
- Intl.DateTimeFormat.supportedLocalesOf(locale)[0] === locale;
- });
- if (!hasBuiltInLocaleData) {
- // `Intl` exists, but it doesn't have the data we need, so load the
- // polyfill and replace the constructors with need with the polyfill's.
- IntlPolyfill = require('intl');
- Intl.NumberFormat = IntlPolyfill.NumberFormat;
- Intl.DateTimeFormat = IntlPolyfill.DateTimeFormat;
- }
- } else {
- // No `Intl`, so use and load the polyfill.
- global.Intl = require('intl');
- }
- }
-
_handleUninitialisedError(key) {
logging.warn(`i18n was used before it was initialised with key ${key}`);
this.init();
diff --git a/ghost/core/package.json b/ghost/core/package.json
index 5afb7abd4dc..e74043a7baa 100644
--- a/ghost/core/package.json
+++ b/ghost/core/package.json
@@ -185,7 +185,6 @@
"human-number": "3.0.0",
"iconv-lite": "0.7.2",
"image-size": "1.2.1",
- "intl": "1.2.5",
"intl-messageformat": "5.4.3",
"js-yaml": "catalog:",
"jsdom": "catalog:",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 67088094001..ebd635a9bd4 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -2478,9 +2478,6 @@ importers:
image-size:
specifier: 1.2.1
version: 1.2.1
- intl:
- specifier: 1.2.5
- version: 1.2.5
intl-messageformat:
specifier: 5.4.3
version: 5.4.3
@@ -15789,9 +15786,6 @@ packages:
intl-messageformat@5.4.3:
resolution: {integrity: sha512-wiGIeeokY6D/TFC6JYoBIUmZJ2AzkTHJuWp5QulDH4h77aghFTBm+8MvjTLIUiQ/z7xiY3SUQN2UBG7EtwYTAg==}
- intl@1.2.5:
- resolution: {integrity: sha512-rK0KcPHeBFBcqsErKSpvZnrOmWOj+EmDkyJ57e90YWaQNqbcivcqmKDlHEeNprDWOsKzPsh1BfSpPQdDvclHVw==}
-
invariant@2.2.4:
resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
@@ -38635,8 +38629,6 @@ snapshots:
intl-format-cache: 4.3.1
intl-messageformat-parser: 2.1.3
- intl@1.2.5: {}
-
invariant@2.2.4:
dependencies:
loose-envify: 1.4.0
From 65c3621f77b10db5b4f288fc6f954f9c821277a3 Mon Sep 17 00:00:00 2001
From: Austin Burdine
Date: Thu, 13 Aug 2026 16:32:29 -0400
Subject: [PATCH 04/13] Added override for consolidate template dependency
no ref
- nodemailer-mailgun-transport pulled in consolidate v0.15.x, which pulled in the entire babel runtime into core dependencies
- a pull request (https://github.com/orliesaurus/nodemailer-mailgun-transport/pull/126) has been merged upstream but not released, the override allows us to use the new version until it is
---
pnpm-lock.yaml | 200 ++------------------------------------------
pnpm-workspace.yaml | 4 +
2 files changed, 12 insertions(+), 192 deletions(-)
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ebd635a9bd4..4203f7e4a1d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -503,6 +503,7 @@ overrides:
braces@<3.0.3: ^3.0.3
clean-css@<4.1.11: ^4.1.11
codemirror@<5.58.2: ^5.58.2
+ consolidate@0.15.1: ^1.0.4
debug@>=4.0.0 <4.3.1: ^4.3.1
debug@<2.6.9: ^2.6.9
diff@<3.5.1: ^3.5.1
@@ -2288,7 +2289,7 @@ importers:
version: 1.0.6
'@tryghost/nodemailer':
specifier: 2.3.1
- version: 2.3.1(babel-core@6.26.3(supports-color@10.2.2))(debug@4.4.3(supports-color@10.2.2))(handlebars@4.7.9)(lodash@4.18.1)(supports-color@10.2.2)(underscore@1.13.8)
+ version: 2.3.1(@babel/core@7.29.7(supports-color@10.2.2))(debug@4.4.3(supports-color@10.2.2))(handlebars@4.7.9)(lodash@4.18.1)(mustache@4.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@10.2.2)(underscore@1.13.8)
'@tryghost/nql':
specifier: 'catalog:'
version: 0.13.1(supports-color@10.2.2)
@@ -12223,172 +12224,6 @@ packages:
resolution: {integrity: sha512-+5j3R4wZJcEYZeXk30whc4ZU/+fWW9JMTNntVuMYpjZJ9n26Cxr0tUBXco1NRjVZRpRVvZ4DDKKKIHNYeUG9Dw==}
engines: {node: 6.* || 8.* || >= 10.*}
- consolidate@0.15.1:
- resolution: {integrity: sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==}
- engines: {node: '>= 0.10.0'}
- deprecated: Please upgrade to consolidate v1.0.0+ as it has been modernized with several long-awaited fixes implemented. Maintenance is supported by Forward Email at https://forwardemail.net ; follow/watch https://github.com/ladjs/consolidate for updates and release changelog
- peerDependencies:
- arc-templates: ^0.5.3
- atpl: '>=0.7.6'
- babel-core: ^6.26.3
- bracket-template: ^1.1.5
- coffee-script: ^1.12.7
- dot: ^1.1.3
- dust: ^0.3.0
- dustjs-helpers: ^1.7.4
- dustjs-linkedin: ^2.7.5
- eco: ^1.1.0-rc-3
- ect: ^0.5.9
- ejs: ^3.1.5
- haml-coffee: ^1.14.1
- hamlet: ^0.3.3
- hamljs: ^0.6.2
- handlebars: ^4.7.9
- hogan.js: ^3.0.2
- htmling: ^0.0.8
- jade: ^1.11.0
- jazz: ^0.0.18
- jqtpl: ~1.1.0
- just: ^0.1.8
- liquid-node: ^3.0.1
- liquor: ^0.0.5
- lodash: ^4.18.0
- marko: ^3.14.4
- mote: ^0.2.0
- mustache: ^3.0.0
- nunjucks: ^3.2.2
- plates: ~0.4.11
- pug: ^3.0.0
- qejs: ^3.0.5
- ractive: ^1.3.12
- razor-tmpl: ^1.3.1
- react: ^16.13.1
- react-dom: ^16.13.1
- slm: ^2.0.0
- squirrelly: ^5.1.0
- swig: ^1.4.2
- swig-templates: ^2.0.3
- teacup: ^2.0.0
- templayed: '>=0.2.3'
- then-jade: '*'
- then-pug: '*'
- tinyliquid: ^0.2.34
- toffee: ^0.3.6
- twig: ^1.15.2
- twing: ^5.0.2
- underscore: ^1.12.1
- vash: ^0.13.0
- velocityjs: ^2.0.1
- walrus: ^0.10.1
- whiskers: ^0.4.0
- peerDependenciesMeta:
- arc-templates:
- optional: true
- atpl:
- optional: true
- babel-core:
- optional: true
- bracket-template:
- optional: true
- coffee-script:
- optional: true
- dot:
- optional: true
- dust:
- optional: true
- dustjs-helpers:
- optional: true
- dustjs-linkedin:
- optional: true
- eco:
- optional: true
- ect:
- optional: true
- ejs:
- optional: true
- haml-coffee:
- optional: true
- hamlet:
- optional: true
- hamljs:
- optional: true
- handlebars:
- optional: true
- hogan.js:
- optional: true
- htmling:
- optional: true
- jade:
- optional: true
- jazz:
- optional: true
- jqtpl:
- optional: true
- just:
- optional: true
- liquid-node:
- optional: true
- liquor:
- optional: true
- lodash:
- optional: true
- marko:
- optional: true
- mote:
- optional: true
- mustache:
- optional: true
- nunjucks:
- optional: true
- plates:
- optional: true
- pug:
- optional: true
- qejs:
- optional: true
- ractive:
- optional: true
- razor-tmpl:
- optional: true
- react:
- optional: true
- react-dom:
- optional: true
- slm:
- optional: true
- squirrelly:
- optional: true
- swig:
- optional: true
- swig-templates:
- optional: true
- teacup:
- optional: true
- templayed:
- optional: true
- then-jade:
- optional: true
- then-pug:
- optional: true
- tinyliquid:
- optional: true
- toffee:
- optional: true
- twig:
- optional: true
- twing:
- optional: true
- underscore:
- optional: true
- vash:
- optional: true
- velocityjs:
- optional: true
- walrus:
- optional: true
- whiskers:
- optional: true
-
consolidate@1.0.4:
resolution: {integrity: sha512-RuZ3xnqEDsxiwaoIkqVeeK3gg9qxw7+YKYX2tKhLs1eukVKMgSr4VYI3iYFsRHi4TloHYDlugrz3kvkjs3nynA==}
engines: {node: '>=14'}
@@ -28990,18 +28825,18 @@ snapshots:
'@tryghost/mw-vhost@1.0.6': {}
- '@tryghost/nodemailer@2.3.1(babel-core@6.26.3(supports-color@10.2.2))(debug@4.4.3(supports-color@10.2.2))(handlebars@4.7.9)(lodash@4.18.1)(supports-color@10.2.2)(underscore@1.13.8)':
+ '@tryghost/nodemailer@2.3.1(@babel/core@7.29.7(supports-color@10.2.2))(debug@4.4.3(supports-color@10.2.2))(handlebars@4.7.9)(lodash@4.18.1)(mustache@4.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@10.2.2)(underscore@1.13.8)':
dependencies:
'@aws-sdk/client-sesv2': 3.1073.0
'@tryghost/errors': 3.3.5
'@tryghost/tpl': 2.3.1
nodemailer: 9.0.1
- nodemailer-mailgun-transport: 2.1.5(babel-core@6.26.3(supports-color@10.2.2))(debug@4.4.3(supports-color@10.2.2))(handlebars@4.7.9)(lodash@4.18.1)(supports-color@10.2.2)(underscore@1.13.8)
+ nodemailer-mailgun-transport: 2.1.5(@babel/core@7.29.7(supports-color@10.2.2))(debug@4.4.3(supports-color@10.2.2))(handlebars@4.7.9)(lodash@4.18.1)(mustache@4.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@10.2.2)(underscore@1.13.8)
nodemailer-stub-transport: 1.1.0
transitivePeerDependencies:
+ - '@babel/core'
- arc-templates
- atpl
- - babel-core
- bracket-template
- coffee-script
- debug
@@ -29018,14 +28853,12 @@ snapshots:
- handlebars
- hogan.js
- htmling
- - jade
- jazz
- jqtpl
- just
- liquid-node
- liquor
- lodash
- - marko
- mote
- mustache
- nunjucks
@@ -29033,17 +28866,14 @@ snapshots:
- pug
- qejs
- ractive
- - razor-tmpl
- react
- react-dom
- slm
- - squirrelly
- supports-color
- swig
- swig-templates
- teacup
- templayed
- - then-jade
- then-pug
- tinyliquid
- toffee
@@ -33460,15 +33290,6 @@ snapshots:
ora: 3.4.0
through2: 3.0.2
- consolidate@0.15.1(babel-core@6.26.3(supports-color@10.2.2))(handlebars@4.7.9)(lodash@4.18.1)(underscore@1.13.8):
- dependencies:
- bluebird: 3.7.2
- optionalDependencies:
- babel-core: 6.26.3(supports-color@10.2.2)
- handlebars: 4.7.9
- lodash: 4.18.1
- underscore: 1.13.8
-
consolidate@1.0.4(@babel/core@7.29.7(supports-color@10.2.2))(handlebars@4.7.9)(lodash@4.18.1)(mustache@4.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(underscore@1.13.8):
optionalDependencies:
'@babel/core': 7.29.7(supports-color@10.2.2)
@@ -41734,15 +41555,15 @@ snapshots:
node@runtime:22.23.1: {}
- nodemailer-mailgun-transport@2.1.5(babel-core@6.26.3(supports-color@10.2.2))(debug@4.4.3(supports-color@10.2.2))(handlebars@4.7.9)(lodash@4.18.1)(supports-color@10.2.2)(underscore@1.13.8):
+ nodemailer-mailgun-transport@2.1.5(@babel/core@7.29.7(supports-color@10.2.2))(debug@4.4.3(supports-color@10.2.2))(handlebars@4.7.9)(lodash@4.18.1)(mustache@4.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@10.2.2)(underscore@1.13.8):
dependencies:
- consolidate: 0.15.1(babel-core@6.26.3(supports-color@10.2.2))(handlebars@4.7.9)(lodash@4.18.1)(underscore@1.13.8)
+ consolidate: 1.0.4(@babel/core@7.29.7(supports-color@10.2.2))(handlebars@4.7.9)(lodash@4.18.1)(mustache@4.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(underscore@1.13.8)
form-data: 4.0.6
mailgun.js: 8.2.2(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)
transitivePeerDependencies:
+ - '@babel/core'
- arc-templates
- atpl
- - babel-core
- bracket-template
- coffee-script
- debug
@@ -41759,14 +41580,12 @@ snapshots:
- handlebars
- hogan.js
- htmling
- - jade
- jazz
- jqtpl
- just
- liquid-node
- liquor
- lodash
- - marko
- mote
- mustache
- nunjucks
@@ -41774,17 +41593,14 @@ snapshots:
- pug
- qejs
- ractive
- - razor-tmpl
- react
- react-dom
- slm
- - squirrelly
- supports-color
- swig
- swig-templates
- teacup
- templayed
- - then-jade
- then-pug
- tinyliquid
- toffee
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 3a7ed41136e..2bb04b36485 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -241,6 +241,10 @@ overrides:
'braces@<3.0.3': ^3.0.3
'clean-css@<4.1.11': ^4.1.11
'codemirror@<5.58.2': ^5.58.2
+ # consolidate 0.15 pulls in a bunch of legacy dependencies that ultimately
+ # make their way into the Ghost docker image, forcing a 1.x upgrade trims
+ # the final dependency list
+ 'consolidate@0.15.1': ^1.0.4
'debug@>=4.0.0 <4.3.1': ^4.3.1
'debug@<2.6.9': ^2.6.9
'diff@<3.5.1': ^3.5.1
From 9851cc4b983b780363c172ac27934e849834811b Mon Sep 17 00:00:00 2001
From: Austin Burdine
Date: Thu, 13 Aug 2026 16:46:53 -0400
Subject: [PATCH 05/13] Added pnpmfile override for consolidate peer deps
no ref
- removing peer deps from consolidate trims Ghost's production node_modules graph a decent amount
---
.pnpmfile.mjs | 27 +++-
pnpm-lock.yaml | 381 +++----------------------------------------------
2 files changed, 42 insertions(+), 366 deletions(-)
diff --git a/.pnpmfile.mjs b/.pnpmfile.mjs
index 2c5e2257fff..fc02e31acf3 100644
--- a/.pnpmfile.mjs
+++ b/.pnpmfile.mjs
@@ -2,10 +2,10 @@ import {glob, readFile} from 'node:fs/promises';
// Global pnpm hooks for the Ghost monorepo.
//
-// Only `beforePacking` is defined. It runs during `pnpm pack` / `pnpm publish`
-// and mutates the package.json written *into the tarball* — the on-disk
-// manifest is never touched, and dependency resolution / the shared lockfile
-// are unaffected (no `readPackage`/`afterAllResolved` hook here).
+// `beforePacking` runs during `pnpm pack` / `pnpm publish` and mutates the
+// package.json written *into the tarball* — the on-disk manifest is never
+// touched. `readPackage` runs during resolution, so it *does* feed the shared
+// lockfile.
//
// Applied to every packed/published package:
// - drop `nx` — Nx target config, meaningless to consumers
@@ -65,6 +65,23 @@ function beforePacking(pkg) {
return pkg;
}
+/**
+ * consolidate declares 48 template engines as optional peers. pnpm links any
+ * that another workspace package happens to satisfy, so react, react-dom and
+ * @babel/core rode into ghost's production deploy closure via
+ * nodemailer-mailgun-transport — the only thing that pulls consolidate in, and
+ * it never renders through it. packageExtensions can only add, so dropping the
+ * peers outright needs this hook.
+ */
+function readPackage(pkg) {
+ if (pkg.name === 'consolidate') {
+ delete pkg.peerDependencies;
+ delete pkg.peerDependenciesMeta;
+ }
+
+ return pkg;
+}
+
/**
* Dynamic config update function to automatically exclude "private" packages
* from pnpm's changelog detection. We can't remove the version fields
@@ -105,4 +122,4 @@ async function updateConfig(config) {
return config;
}
-export const hooks = {beforePacking, updateConfig};
+export const hooks = {beforePacking, readPackage, updateConfig};
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4203f7e4a1d..01e8a1e7697 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -540,7 +540,7 @@ overrides:
packageExtensionsChecksum: sha256-gFsvptlcVXY90ntXWh9ANUP1/LYyeqXjWoDGw6BCfOY=
-pnpmfileChecksum: sha256-Ql0UP36A/aSGPgCeRfBqGbTHOVB+Rs4TPOe+11tcwYo=
+pnpmfileChecksum: sha256-gutEFryPq8qNZymn5sjxjuENXrXNXkOXcc6pRnglPE0=
importers:
@@ -1368,7 +1368,7 @@ importers:
version: 3.0.1(supports-color@10.2.2)
ember-cli:
specifier: 3.24.0
- version: 3.24.0(debug@4.4.3(supports-color@10.2.2))(encoding@0.1.13)(handlebars@4.7.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@10.2.2)(underscore@1.13.8)
+ version: 3.24.0(debug@4.4.3(supports-color@10.2.2))(encoding@0.1.13)(supports-color@10.2.2)
ember-cli-app-version:
specifier: 5.0.0
version: 5.0.0(supports-color@10.2.2)
@@ -1383,7 +1383,7 @@ importers:
version: 1.0.3(supports-color@10.2.2)
ember-cli-dependency-checker:
specifier: 3.3.2
- version: 3.3.2(ember-cli@3.24.0(debug@4.4.3(supports-color@10.2.2))(encoding@0.1.13)(handlebars@4.7.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@10.2.2)(underscore@1.13.8))
+ version: 3.3.2(ember-cli@3.24.0(debug@4.4.3(supports-color@10.2.2))(encoding@0.1.13)(supports-color@10.2.2))
ember-cli-deprecation-workflow:
specifier: 2.2.0
version: 2.2.0(supports-color@10.2.2)
@@ -1593,7 +1593,7 @@ importers:
version: 4.0.1(chai@4.5.0)(sinon@22.0.0)
testem:
specifier: 3.19.1
- version: 3.19.1(@babel/core@7.29.7(supports-color@10.2.2))(debug@4.4.3(supports-color@10.2.2))(handlebars@4.7.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@10.2.2)(underscore@1.13.8)
+ version: 3.19.1(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)
tracked-built-ins:
specifier: 3.4.0
version: 3.4.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
@@ -2289,7 +2289,7 @@ importers:
version: 1.0.6
'@tryghost/nodemailer':
specifier: 2.3.1
- version: 2.3.1(@babel/core@7.29.7(supports-color@10.2.2))(debug@4.4.3(supports-color@10.2.2))(handlebars@4.7.9)(lodash@4.18.1)(mustache@4.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@10.2.2)(underscore@1.13.8)
+ version: 2.3.1(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)
'@tryghost/nql':
specifier: 'catalog:'
version: 0.13.1(supports-color@10.2.2)
@@ -12227,152 +12227,6 @@ packages:
consolidate@1.0.4:
resolution: {integrity: sha512-RuZ3xnqEDsxiwaoIkqVeeK3gg9qxw7+YKYX2tKhLs1eukVKMgSr4VYI3iYFsRHi4TloHYDlugrz3kvkjs3nynA==}
engines: {node: '>=14'}
- peerDependencies:
- '@babel/core': ^7.22.5
- arc-templates: ^0.5.3
- atpl: '>=0.7.6'
- bracket-template: ^1.1.5
- coffee-script: ^1.12.7
- dot: ^1.1.3
- dust: ^0.3.0
- dustjs-helpers: ^1.7.4
- dustjs-linkedin: ^2.7.5
- eco: ^1.1.0-rc-3
- ect: ^0.5.9
- ejs: ^3.1.5
- haml-coffee: ^1.14.1
- hamlet: ^0.3.3
- hamljs: ^0.6.2
- handlebars: ^4.7.9
- hogan.js: ^3.0.2
- htmling: ^0.0.8
- jazz: ^0.0.18
- jqtpl: ~1.1.0
- just: ^0.1.8
- liquid-node: ^3.0.1
- liquor: ^0.0.5
- lodash: ^4.18.0
- mote: ^0.2.0
- mustache: ^4.0.1
- nunjucks: ^3.2.2
- plates: ~0.4.11
- pug: ^3.0.0
- qejs: ^3.0.5
- ractive: ^1.3.12
- react: '>=16.13.1'
- react-dom: '>=16.13.1'
- slm: ^2.0.0
- swig: ^1.4.2
- swig-templates: ^2.0.3
- teacup: ^2.0.0
- templayed: '>=0.2.3'
- then-pug: '*'
- tinyliquid: ^0.2.34
- toffee: ^0.3.6
- twig: ^1.15.2
- twing: ^5.0.2
- underscore: ^1.12.1
- vash: ^0.13.0
- velocityjs: ^2.0.1
- walrus: ^0.10.1
- whiskers: ^0.4.0
- peerDependenciesMeta:
- '@babel/core':
- optional: true
- arc-templates:
- optional: true
- atpl:
- optional: true
- bracket-template:
- optional: true
- coffee-script:
- optional: true
- dot:
- optional: true
- dust:
- optional: true
- dustjs-helpers:
- optional: true
- dustjs-linkedin:
- optional: true
- eco:
- optional: true
- ect:
- optional: true
- ejs:
- optional: true
- haml-coffee:
- optional: true
- hamlet:
- optional: true
- hamljs:
- optional: true
- handlebars:
- optional: true
- hogan.js:
- optional: true
- htmling:
- optional: true
- jazz:
- optional: true
- jqtpl:
- optional: true
- just:
- optional: true
- liquid-node:
- optional: true
- liquor:
- optional: true
- lodash:
- optional: true
- mote:
- optional: true
- mustache:
- optional: true
- nunjucks:
- optional: true
- plates:
- optional: true
- pug:
- optional: true
- qejs:
- optional: true
- ractive:
- optional: true
- react:
- optional: true
- react-dom:
- optional: true
- slm:
- optional: true
- swig:
- optional: true
- swig-templates:
- optional: true
- teacup:
- optional: true
- templayed:
- optional: true
- then-pug:
- optional: true
- tinyliquid:
- optional: true
- toffee:
- optional: true
- twig:
- optional: true
- twing:
- optional: true
- underscore:
- optional: true
- vash:
- optional: true
- velocityjs:
- optional: true
- walrus:
- optional: true
- whiskers:
- optional: true
constants-browserify@1.0.0:
resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==}
@@ -28825,65 +28679,17 @@ snapshots:
'@tryghost/mw-vhost@1.0.6': {}
- '@tryghost/nodemailer@2.3.1(@babel/core@7.29.7(supports-color@10.2.2))(debug@4.4.3(supports-color@10.2.2))(handlebars@4.7.9)(lodash@4.18.1)(mustache@4.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@10.2.2)(underscore@1.13.8)':
+ '@tryghost/nodemailer@2.3.1(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)':
dependencies:
'@aws-sdk/client-sesv2': 3.1073.0
'@tryghost/errors': 3.3.5
'@tryghost/tpl': 2.3.1
nodemailer: 9.0.1
- nodemailer-mailgun-transport: 2.1.5(@babel/core@7.29.7(supports-color@10.2.2))(debug@4.4.3(supports-color@10.2.2))(handlebars@4.7.9)(lodash@4.18.1)(mustache@4.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@10.2.2)(underscore@1.13.8)
+ nodemailer-mailgun-transport: 2.1.5(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)
nodemailer-stub-transport: 1.1.0
transitivePeerDependencies:
- - '@babel/core'
- - arc-templates
- - atpl
- - bracket-template
- - coffee-script
- debug
- - dot
- - dust
- - dustjs-helpers
- - dustjs-linkedin
- - eco
- - ect
- - ejs
- - haml-coffee
- - hamlet
- - hamljs
- - handlebars
- - hogan.js
- - htmling
- - jazz
- - jqtpl
- - just
- - liquid-node
- - liquor
- - lodash
- - mote
- - mustache
- - nunjucks
- - plates
- - pug
- - qejs
- - ractive
- - react
- - react-dom
- - slm
- - supports-color
- - swig
- - swig-templates
- - teacup
- - templayed
- - then-pug
- - tinyliquid
- - toffee
- - twig
- - twing
- - underscore
- - vash
- - velocityjs
- - walrus
- - whiskers
+ - supports-color
'@tryghost/nql-lang@0.6.6':
dependencies:
@@ -33290,15 +33096,7 @@ snapshots:
ora: 3.4.0
through2: 3.0.2
- consolidate@1.0.4(@babel/core@7.29.7(supports-color@10.2.2))(handlebars@4.7.9)(lodash@4.18.1)(mustache@4.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(underscore@1.13.8):
- optionalDependencies:
- '@babel/core': 7.29.7(supports-color@10.2.2)
- handlebars: 4.7.9
- lodash: 4.18.1
- mustache: 4.2.0
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- underscore: 1.13.8
+ consolidate@1.0.4: {}
constants-browserify@1.0.0: {}
@@ -34569,10 +34367,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
- ember-cli-dependency-checker@3.3.2(ember-cli@3.24.0(debug@4.4.3(supports-color@10.2.2))(encoding@0.1.13)(handlebars@4.7.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@10.2.2)(underscore@1.13.8)):
+ ember-cli-dependency-checker@3.3.2(ember-cli@3.24.0(debug@4.4.3(supports-color@10.2.2))(encoding@0.1.13)(supports-color@10.2.2)):
dependencies:
chalk: 2.4.2
- ember-cli: 3.24.0(debug@4.4.3(supports-color@10.2.2))(encoding@0.1.13)(handlebars@4.7.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@10.2.2)(underscore@1.13.8)
+ ember-cli: 3.24.0(debug@4.4.3(supports-color@10.2.2))(encoding@0.1.13)(supports-color@10.2.2)
find-yarn-workspace-root: 1.2.1
is-git-url: 1.0.0
resolve: 1.22.12
@@ -34905,7 +34703,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- ember-cli@3.24.0(debug@4.4.3(supports-color@10.2.2))(encoding@0.1.13)(handlebars@4.7.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@10.2.2)(underscore@1.13.8):
+ ember-cli@3.24.0(debug@4.4.3(supports-color@10.2.2))(encoding@0.1.13)(supports-color@10.2.2):
dependencies:
'@babel/core': 7.29.7(supports-color@10.2.2)
'@babel/plugin-transform-modules-amd': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
@@ -34990,7 +34788,7 @@ snapshots:
sort-package-json: 1.57.0
symlink-or-copy: 1.3.1
temp: 0.9.4
- testem: 3.19.1(@babel/core@7.29.7(supports-color@10.2.2))(debug@4.4.3(supports-color@10.2.2))(handlebars@4.7.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@10.2.2)(underscore@1.13.8)
+ testem: 3.19.1(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)
tiny-lr: 2.0.0(supports-color@10.2.2)
tree-sync: 2.1.0(supports-color@10.2.2)
uuid: 8.3.2
@@ -34999,56 +34797,11 @@ snapshots:
workerpool: 6.5.1
yam: 1.0.0
transitivePeerDependencies:
- - arc-templates
- - atpl
- - bracket-template
- bufferutil
- - coffee-script
- debug
- - dot
- - dust
- - dustjs-helpers
- - dustjs-linkedin
- - eco
- - ect
- - ejs
- encoding
- - haml-coffee
- - hamlet
- - hamljs
- - handlebars
- - hogan.js
- - htmling
- - jazz
- - jqtpl
- - just
- - liquid-node
- - liquor
- - mote
- - nunjucks
- - plates
- - pug
- - qejs
- - ractive
- - react
- - react-dom
- - slm
- - supports-color
- - swig
- - swig-templates
- - teacup
- - templayed
- - then-pug
- - tinyliquid
- - toffee
- - twig
- - twing
- - underscore
+ - supports-color
- utf-8-validate
- - vash
- - velocityjs
- - walrus
- - whiskers
ember-compatibility-helpers@1.2.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2):
dependencies:
@@ -41555,62 +41308,14 @@ snapshots:
node@runtime:22.23.1: {}
- nodemailer-mailgun-transport@2.1.5(@babel/core@7.29.7(supports-color@10.2.2))(debug@4.4.3(supports-color@10.2.2))(handlebars@4.7.9)(lodash@4.18.1)(mustache@4.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@10.2.2)(underscore@1.13.8):
+ nodemailer-mailgun-transport@2.1.5(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2):
dependencies:
- consolidate: 1.0.4(@babel/core@7.29.7(supports-color@10.2.2))(handlebars@4.7.9)(lodash@4.18.1)(mustache@4.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(underscore@1.13.8)
+ consolidate: 1.0.4
form-data: 4.0.6
mailgun.js: 8.2.2(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)
transitivePeerDependencies:
- - '@babel/core'
- - arc-templates
- - atpl
- - bracket-template
- - coffee-script
- debug
- - dot
- - dust
- - dustjs-helpers
- - dustjs-linkedin
- - eco
- - ect
- - ejs
- - haml-coffee
- - hamlet
- - hamljs
- - handlebars
- - hogan.js
- - htmling
- - jazz
- - jqtpl
- - just
- - liquid-node
- - liquor
- - lodash
- - mote
- - mustache
- - nunjucks
- - plates
- - pug
- - qejs
- - ractive
- - react
- - react-dom
- - slm
- - supports-color
- - swig
- - swig-templates
- - teacup
- - templayed
- - then-pug
- - tinyliquid
- - toffee
- - twig
- - twing
- - underscore
- - vash
- - velocityjs
- - walrus
- - whiskers
+ - supports-color
nodemailer-stub-transport@1.1.0: {}
@@ -45678,14 +45383,14 @@ snapshots:
glob: 13.0.6
minimatch: 10.2.5
- testem@3.19.1(@babel/core@7.29.7(supports-color@10.2.2))(debug@4.4.3(supports-color@10.2.2))(handlebars@4.7.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@10.2.2)(underscore@1.13.8):
+ testem@3.19.1(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2):
dependencies:
'@xmldom/xmldom': 0.9.10
backbone: 1.6.1
charm: 1.0.2
commander: 2.20.3
compression: 1.8.1(supports-color@10.2.2)
- consolidate: 1.0.4(@babel/core@7.29.7(supports-color@10.2.2))(handlebars@4.7.9)(lodash@4.18.1)(mustache@4.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(underscore@1.13.8)
+ consolidate: 1.0.4
execa: 9.6.1
express: 4.22.2(supports-color@10.2.2)
fireworm: 0.7.2
@@ -45705,56 +45410,10 @@ snapshots:
tap-parser: 7.0.0
tmp: 0.2.7
transitivePeerDependencies:
- - '@babel/core'
- - arc-templates
- - atpl
- - bracket-template
- bufferutil
- - coffee-script
- debug
- - dot
- - dust
- - dustjs-helpers
- - dustjs-linkedin
- - eco
- - ect
- - ejs
- - haml-coffee
- - hamlet
- - hamljs
- - handlebars
- - hogan.js
- - htmling
- - jazz
- - jqtpl
- - just
- - liquid-node
- - liquor
- - mote
- - nunjucks
- - plates
- - pug
- - qejs
- - ractive
- - react
- - react-dom
- - slm
- - supports-color
- - swig
- - swig-templates
- - teacup
- - templayed
- - then-pug
- - tinyliquid
- - toffee
- - twig
- - twing
- - underscore
+ - supports-color
- utf-8-validate
- - vash
- - velocityjs
- - walrus
- - whiskers
text-decoder@1.2.7:
dependencies:
From 22bd9ed1d0fdbd06ecf1f93cd2f3047b0193e921 Mon Sep 17 00:00:00 2001
From: Austin Burdine
Date: Thu, 13 Aug 2026 17:08:52 -0400
Subject: [PATCH 06/13] Updated docker/pack scripts to prune source ts files
no ref
- prune ts files, md files, sourcemaps, etc from source in pack.mjs as well as docker build
- in the docker build, shipped .ts files are almost half of the files in `/home/ghost`, stripping them simplifies a lot
---
Dockerfile.production | 6 ++
ghost/core/scripts/pack.mjs | 13 ++-
ghost/core/scripts/prune.mts | 196 +++++++++++++++++++++++++++++++++++
3 files changed, 212 insertions(+), 3 deletions(-)
create mode 100644 ghost/core/scripts/prune.mts
diff --git a/Dockerfile.production b/Dockerfile.production
index 94163a7e1f1..161dd0f7236 100644
--- a/Dockerfile.production
+++ b/Dockerfile.production
@@ -74,6 +74,12 @@ RUN pnpm --filter-prod "ghost^..." -r run build && \
RUN --mount=type=cache,target=/root/.local/share/pnpm/store,id=pnpm-store \
pnpm --filter=ghost --config.inject-workspace-packages=true deploy --prod /home/ghost
+# Strip type-time, doc and native-build-input files the runtime never loads — see
+# ghost/core/scripts/prune.mts for the rules and the exclusions they carry. The COPY
+# layer below is extracted single-threaded, once per CI E2E shard, and that cost
+# scales with file count: this removes roughly half of them.
+RUN node ghost/core/scripts/prune.mts /home/ghost --profile=image
+
# Fail the build now if the native module didn't install correctly (missing/broken
# prebuilt binary) rather than at container runtime.
RUN cd /home/ghost && node -e "require('better-sqlite3'); console.log('better-sqlite3 OK')"
diff --git a/ghost/core/scripts/pack.mjs b/ghost/core/scripts/pack.mjs
index 502c62204b6..eb81da7c614 100644
--- a/ghost/core/scripts/pack.mjs
+++ b/ghost/core/scripts/pack.mjs
@@ -28,6 +28,7 @@ import os from 'node:os';
import {execFile} from 'node:child_process';
import {promisify} from 'node:util';
import yaml from 'js-yaml';
+import {prune, reportPrune} from './prune.mts';
const execFileAsync = promisify(execFile);
@@ -205,9 +206,16 @@ await pnpm(
{cwd: BUILD_DIR}
);
-// 5. Validate before tarring — guard against a valid-looking but broken archive.
+// 5. Prune, then validate — the checks below have to see the tree that actually
+// ships, so a prune that ate the entry point, the install metadata or a component
+// tarball fails here rather than at a consumer's install.
+await fs.rm(path.join(BUILD_DIR, 'node_modules'), {recursive: true, force: true});
+
+console.log('\nPruning build output...');
+reportPrune(await prune(BUILD_DIR, {profile: 'archive'}));
+
console.log('\nValidating build output...');
-const requiredFiles = ['pnpm-workspace.yaml', 'pnpm-lock.yaml', 'package.json'];
+const requiredFiles = ['pnpm-workspace.yaml', 'pnpm-lock.yaml', 'package.json', 'index.js'];
const [packagedPkg, packagedWorkspace, missingFiles, componentTgzCount, packagedFiles] = await Promise.all([
readJson(pkgPath),
readYaml(path.join(BUILD_DIR, 'pnpm-workspace.yaml')),
@@ -249,7 +257,6 @@ if (!packagedWorkspace?.overrides || Object.keys(packagedWorkspace.overrides).le
// 6. Create the tarball (npm layout: top-level package/ dir, no node_modules).
const version = pkg.version;
const tgzPath = path.join(CORE_DIR, `ghost-${version}.tgz`);
-await fs.rm(path.join(BUILD_DIR, 'node_modules'), {recursive: true, force: true});
console.log(`\nCreating tarball: ghost-${version}.tgz`);
await execFileAsync('tar', ['czf', tgzPath, 'package'], {cwd: CORE_DIR});
diff --git a/ghost/core/scripts/prune.mts b/ghost/core/scripts/prune.mts
new file mode 100644
index 00000000000..45124059963
--- /dev/null
+++ b/ghost/core/scripts/prune.mts
@@ -0,0 +1,196 @@
+#!/usr/bin/env node
+
+/**
+ * prune.mts — Strip files no consumer loads from a built Ghost tree.
+ *
+ * Two callers, two profiles:
+ *
+ * image — Dockerfile.production's deploy stage, against /home/ghost (Ghost's
+ * `files` set + a resolved production node_modules). The COPY layer
+ * that follows is extracted single-threaded, once per CI E2E shard,
+ * and that cost scales with file count rather than bytes.
+ * archive — scripts/pack.mjs, against the extracted package/ dir. No
+ * node_modules there (the consumer installs its own), so only the
+ * source rules apply.
+ *
+ * Run directly by node (type stripping, no build step) — `scripts/` is outside
+ * the tsconfig `include`, so nothing compiles this.
+ *
+ * The exclusions below are load-bearing — each is something a naive version of
+ * the rule deleted and broke. Keep them, and prefer `--dry-run` over reasoning
+ * about a glob.
+ */
+
+import fs from 'node:fs/promises';
+import path from 'node:path';
+import {parseArgs} from 'node:util';
+
+export type Profile = 'image' | 'archive';
+
+interface Rule {
+ name: string;
+ profiles: Profile[];
+ summary: string;
+ match: (rel: string) => boolean;
+}
+
+export interface PruneResult {
+ total: number;
+ removed: number;
+ bytes: number;
+ byRule: Record;
+}
+
+// Script files are never build inputs, whatever directory they sit in.
+const isScript = (base: string): boolean => /\.(js|json|mjs|cjs|node)$/.test(base);
+
+const RULES: Rule[] = [
+ {
+ name: 'source',
+ profiles: ['image', 'archive'],
+ summary: 'TypeScript sources, declarations and sourcemaps',
+ // build:tsc emits a .js beside every .ts in the shipped set, and nothing
+ // runs node with --enable-source-maps (Sentry resolves frames from maps
+ // uploaded at release time, not from disk). `.ts` covers `.d.ts`.
+ match: rel => /\.(tsx?|map)$/.test(rel)
+ },
+ {
+ name: 'docs',
+ profiles: ['image'],
+ summary: 'Dependency READMEs, changelogs and contributor lists',
+ match(rel) {
+ // Scoped to the app roots: content/'s READMEs ship deliberately (they
+ // are ghost/core `files` entries, and what a self-hoster sees in each
+ // content dir).
+ if (!['node_modules/', 'core/', 'bin/'].some(root => rel.startsWith(root))) {
+ return false;
+ }
+
+ // Self-hosters deploy their own Tinybird from these datafiles, so the
+ // docs explaining how are not ours to drop.
+ if (rel.includes('/data/tinybird/')) {
+ return false;
+ }
+
+ const base = path.basename(rel);
+ if (/^(licen[sc]e|notice)/i.test(base)) {
+ return false;
+ }
+
+ return /\.md$/i.test(base) || /^(history|authors)$/i.test(base);
+ }
+ },
+ {
+ name: 'native',
+ profiles: ['image'],
+ summary: 'Vendored C/C++ trees and addon sources',
+ match(rel) {
+ if (!rel.startsWith('node_modules/')) {
+ return false;
+ }
+
+ const base = path.basename(rel);
+
+ // vendor/ is not always C: no-case, chalk and @sentry/* ship runtime
+ // .js under one.
+ if (rel.includes('/vendor/')) {
+ return !isScript(base);
+ }
+
+ // The prebuilt .node binaries stay — only their build inputs go. A
+ // node-gyp rebuild is already impossible in the image (no toolchain
+ // is installed, deliberately), so nothing reads these.
+ return /\.(cc|cpp|cxx|c|h|hpp|hxx|gyp|gypi)$/.test(base);
+ }
+ }
+];
+
+export const PROFILES: Profile[] = ['image', 'archive'];
+
+/**
+ * Walk `dir` and yield every regular file, as a path relative to `dir`.
+ * Symlinks are never followed — pnpm's virtual store is full of them, and each
+ * target is reached once via .pnpm anyway.
+ */
+async function* walk(dir: string, prefix = ''): AsyncGenerator {
+ const entries = await fs.readdir(path.join(dir, prefix), {withFileTypes: true});
+
+ for (const entry of entries) {
+ const rel = prefix ? `${prefix}/${entry.name}` : entry.name;
+ if (entry.isDirectory()) {
+ yield* walk(dir, rel);
+ } else if (entry.isFile()) {
+ yield rel;
+ }
+ }
+}
+
+export async function prune(target: string, {profile, dryRun = false}: {profile: Profile, dryRun?: boolean}): Promise {
+ if (!PROFILES.includes(profile)) {
+ throw new Error(`Unknown profile "${profile}" (expected one of: ${PROFILES.join(', ')})`);
+ }
+
+ const rules = RULES.filter(rule => rule.profiles.includes(profile));
+ const byRule = Object.fromEntries(rules.map(rule => [rule.name, {files: 0, bytes: 0}]));
+ let total = 0;
+ let removed = 0;
+ let bytes = 0;
+
+ for await (const rel of walk(target)) {
+ total += 1;
+ const rule = rules.find(r => r.match(rel));
+ if (!rule) {
+ continue;
+ }
+
+ const absolute = path.join(target, rel);
+ const {size} = await fs.stat(absolute);
+ if (!dryRun) {
+ await fs.rm(absolute);
+ }
+
+ byRule[rule.name].files += 1;
+ byRule[rule.name].bytes += size;
+ removed += 1;
+ bytes += size;
+ }
+
+ return {total, removed, bytes, byRule};
+}
+
+const mib = (value: number): string => `${(value / 1024 / 1024).toFixed(1)} MiB`;
+
+/**
+ * Print a per-rule breakdown. Callers embed this in their own build output, so
+ * it takes no leading label of its own.
+ */
+export function reportPrune(result: PruneResult, {dryRun = false} = {}): void {
+ for (const rule of RULES) {
+ const stats = result.byRule[rule.name];
+ if (stats) {
+ console.log(` ${rule.name.padEnd(7)} ${String(stats.files).padStart(6)} files ${mib(stats.bytes).padStart(9)} ${rule.summary}`);
+ }
+ }
+ console.log(` ${dryRun ? 'would remove' : 'removed'} ${result.removed} of ${result.total} files (${mib(result.bytes)})`);
+}
+
+if (import.meta.main) {
+ const {values, positionals} = parseArgs({
+ allowPositionals: true,
+ options: {
+ profile: {type: 'string'},
+ 'dry-run': {type: 'boolean', default: false}
+ }
+ });
+
+ const [target] = positionals;
+ const profile = values.profile as Profile | undefined;
+ if (!target || !profile) {
+ console.error('Usage: prune.mts --profile= [--dry-run]');
+ process.exit(1);
+ }
+
+ console.log(`Pruning ${target} (profile: ${profile})`);
+ const result = await prune(path.resolve(target), {profile, dryRun: values['dry-run']});
+ reportPrune(result, {dryRun: values['dry-run']});
+}
From d24289156243ec32178105919b880020d631de6c Mon Sep 17 00:00:00 2001
From: Austin Burdine
Date: Thu, 13 Aug 2026 19:33:11 -0400
Subject: [PATCH 07/13] Removed more unnecessary prod dependencies
no ref
- trim sqlite3 and typescript from ghost prod image build, pulled in via transitive optional peer deps
---
.pnpmfile.mjs | 34 ++-
ghost/core/scripts/pack.mjs | 8 +-
ghost/core/scripts/prune.mts | 5 +-
pnpm-lock.yaml | 495 +++--------------------------------
pnpm-workspace.yaml | 6 +-
5 files changed, 78 insertions(+), 470 deletions(-)
diff --git a/.pnpmfile.mjs b/.pnpmfile.mjs
index fc02e31acf3..9b50b6d8539 100644
--- a/.pnpmfile.mjs
+++ b/.pnpmfile.mjs
@@ -65,20 +65,38 @@ function beforePacking(pkg) {
return pkg;
}
-/**
- * consolidate declares 48 template engines as optional peers. pnpm links any
- * that another workspace package happens to satisfy, so react, react-dom and
- * @babel/core rode into ghost's production deploy closure via
- * nodemailer-mailgun-transport — the only thing that pulls consolidate in, and
- * it never renders through it. packageExtensions can only add, so dropping the
- * peers outright needs this hook.
- */
function readPackage(pkg) {
+ // consolidate declares 48 template engines as optional peers. pnpm links any
+ // that another workspace package happens to satisfy, so react, react-dom and
+ // @babel/core rode into ghost's production deploy closure via
+ // nodemailer-mailgun-transport — the only thing that pulls consolidate in, and
+ // it never renders through it. packageExtensions can only add, so dropping the
+ // peers outright needs this hook.
if (pkg.name === 'consolidate') {
delete pkg.peerDependencies;
delete pkg.peerDependenciesMeta;
}
+ // knex declares sqlite3 as an optional peer dep, and we don't use it/don't
+ // want to install it in production, so we'll remove it from the knex peer
+ // deps
+ if (pkg.name === 'knex') {
+ delete pkg.peerDependencies?.sqlite3;
+ delete pkg.peerDependenciesMeta?.sqlite3;
+ }
+
+ // these deps pull in typescript as an optional peer dep, which ends up
+ // being included in Ghost's production image because of the way pnpm hoists
+ // optional peers. We don't want to ship ts in the prod image so we delete
+ // it from the manifest
+ //
+ // NOTE: auto-install-peers: false doesn't solve the problem here unfortunately,
+ // and it causes more issues with other deps
+ if (['viem', 'ox', 'abitype'].includes(pkg.name)) {
+ delete pkg.peerDependencies?.typescript;
+ delete pkg.peerDependenciesMeta?.typescript;
+ }
+
return pkg;
}
diff --git a/ghost/core/scripts/pack.mjs b/ghost/core/scripts/pack.mjs
index eb81da7c614..cca3ff8b5c0 100644
--- a/ghost/core/scripts/pack.mjs
+++ b/ghost/core/scripts/pack.mjs
@@ -170,6 +170,12 @@ if (!buildFiles.some(isLicenseFile)) {
// native module post-install scripts like better-sqlite3, sharp, re2)
// - overrides + packageExtensions (root dependency policy must apply to the
// standalone install too)
+// - ignoredOptionalDependencies: the archive gets no .pnpmfile.mjs, so the
+// readPackage hook that strips knex's optional sqlite3 peer never runs here.
+// This is what keeps sqlite3 out — dropping the provider (knex-migrator's
+// optionalDependencies) leaves knex's optional peer with nothing to bind to.
+// Without it the end-user install pulls sqlite3 back in and fails on
+// ERR_PNPM_IGNORED_BUILDS, since allowBuilds no longer permits its build.
// We drop:
// - packages: relative paths that don't exist in the standalone dir
// - minimumReleaseAge, blockExoticSubdeps, catalogMode: source-repo
@@ -177,7 +183,7 @@ if (!buildFiles.some(isLicenseFile)) {
// @tryghost/* component tarballs aren't on npm, so an age check would 404)
console.log('\nWriting pnpm-workspace.yaml...');
const buildWorkspace = {};
-for (const key of ['catalog', 'catalogs', 'allowBuilds', 'strictDepBuilds', 'overrides', 'packageExtensions']) {
+for (const key of ['catalog', 'catalogs', 'allowBuilds', 'strictDepBuilds', 'overrides', 'packageExtensions', 'ignoredOptionalDependencies']) {
if (rootWorkspace[key] !== undefined) {
buildWorkspace[key] = rootWorkspace[key];
}
diff --git a/ghost/core/scripts/prune.mts b/ghost/core/scripts/prune.mts
index 45124059963..e45a58782eb 100644
--- a/ghost/core/scripts/prune.mts
+++ b/ghost/core/scripts/prune.mts
@@ -51,8 +51,9 @@ const RULES: Rule[] = [
summary: 'TypeScript sources, declarations and sourcemaps',
// build:tsc emits a .js beside every .ts in the shipped set, and nothing
// runs node with --enable-source-maps (Sentry resolves frames from maps
- // uploaded at release time, not from disk). `.ts` covers `.d.ts`.
- match: rel => /\.(tsx?|map)$/.test(rel)
+ // uploaded at release time, not from disk). `[cm]?ts` covers the
+ // declaration variants too — .d.ts, .d.mts, .d.cts.
+ match: rel => /\.(?:[cm]?ts|tsx|map)$/.test(rel)
},
{
name: 'docs',
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 01e8a1e7697..5579fbc2978 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -540,7 +540,7 @@ overrides:
packageExtensionsChecksum: sha256-gFsvptlcVXY90ntXWh9ANUP1/LYyeqXjWoDGw6BCfOY=
-pnpmfileChecksum: sha256-gutEFryPq8qNZymn5sjxjuENXrXNXkOXcc6pRnglPE0=
+pnpmfileChecksum: sha256-PElECk3o63aDDp91sRvCC2j0iZmO2E7A0goI70M/xOs=
importers:
@@ -2148,7 +2148,7 @@ importers:
version: 4.22.2(supports-color@10.2.2)
knex:
specifier: 3.1.0
- version: 3.1.0(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@26.0.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)
+ version: 3.1.0(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@26.0.0))(supports-color@10.2.2)
stripe:
specifier: 8.222.0
version: 8.222.0
@@ -2205,7 +2205,7 @@ importers:
version: 2.3.8(supports-color@10.2.2)
'@tryghost/brute-knex':
specifier: 'catalog:'
- version: 3.2.1(better-sqlite3@12.11.1)(express@4.22.2(supports-color@10.2.2))(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)
+ version: 3.2.1(better-sqlite3@12.11.1)(express@4.22.2(supports-color@10.2.2))(mysql2@3.22.5(@types/node@22.20.1))(supports-color@10.2.2)
'@tryghost/color-utils':
specifier: 'catalog:'
version: 0.2.20
@@ -2349,10 +2349,10 @@ importers:
version: 1.20.5(supports-color@10.2.2)
bookshelf:
specifier: 1.2.0
- version: 1.2.0(knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2))
+ version: 1.2.0(knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(supports-color@10.2.2))
bookshelf-relations:
specifier: 2.8.0
- version: 2.8.0(bookshelf@1.2.0(knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)))(supports-color@10.2.2)
+ version: 2.8.0(bookshelf@1.2.0(knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(supports-color@10.2.2)))(supports-color@10.2.2)
bson-objectid:
specifier: 'catalog:'
version: 2.0.4
@@ -2502,10 +2502,10 @@ importers:
version: 1.0.4
knex:
specifier: 2.4.2
- version: 2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)
+ version: 2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(supports-color@10.2.2)
knex-migrator:
specifier: 'catalog:'
- version: 5.4.1(@types/node@22.20.1)(bluebird@3.7.2)(supports-color@10.2.2)
+ version: 5.4.1(@types/node@22.20.1)(supports-color@10.2.2)
leaky-bucket:
specifier: 2.2.0
version: 2.2.0
@@ -2562,7 +2562,7 @@ importers:
version: 0.5.45
mppx:
specifier: 'catalog:'
- version: 0.6.20(@typescript/typescript6@6.0.2)(express@4.22.2(supports-color@10.2.2))(hono@4.12.18)(viem@2.55.11(@typescript/typescript6@6.0.2)(zod@4.4.3))
+ version: 0.6.20(express@4.22.2(supports-color@10.2.2))(hono@4.12.18)(viem@2.55.11(zod@4.4.3))
multer:
specifier: 2.2.0
version: 2.2.0
@@ -2659,7 +2659,7 @@ importers:
version: 2.1.0
'@types/bookshelf':
specifier: 1.2.9
- version: 1.2.9(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)
+ version: 1.2.9(mysql2@3.22.5(@types/node@22.20.1))(supports-color@10.2.2)
'@types/common-tags':
specifier: 1.8.4
version: 1.8.4
@@ -5834,9 +5834,6 @@ packages:
'@floating-ui/utils@0.2.11':
resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==}
- '@gar/promisify@1.1.3':
- resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==}
-
'@glimmer/component@1.1.2':
resolution: {integrity: sha512-XyAsEEa4kWOPy+gIdMjJ8XlzA3qrGH55ZDv6nA16ibalCR17k74BI0CztxuRds+Rm6CtbUVgheCVlcCULuqD7A==}
engines: {node: 6.* || 8.* || >= 10.*}
@@ -6597,14 +6594,6 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
- '@npmcli/fs@1.1.1':
- resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==}
-
- '@npmcli/move-file@1.1.2':
- resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==}
- engines: {node: '>=10'}
- deprecated: This functionality has been moved to @npmcli/fs
-
'@number-flow/react@0.6.2':
resolution: {integrity: sha512-WjZuV4aA+vhRCgCF+adGLgFVVAJ8vdvq6EchRT2FiBIgElTXtDOA3YgkcMr9UHpvpS9v4H70AB5wZv0D9jc3QA==}
peerDependencies:
@@ -10257,22 +10246,16 @@ packages:
abitype@1.2.3:
resolution: {integrity: sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==}
peerDependencies:
- typescript: '>=5.0.4'
zod: ^3.22.0 || ^4.0.0
peerDependenciesMeta:
- typescript:
- optional: true
zod:
optional: true
abitype@1.3.0:
resolution: {integrity: sha512-fk6Te+bojIFrMvMZrnOO+SxCB+RUksTGOzq/60ZRvs1L+BVzvi2bqt9L3W/17ZLdZsyM1FuYf65P5nlmoiH1Bg==}
peerDependencies:
- typescript: '>=5.0.4'
zod: ^3.22.0 || ^4.0.0
peerDependenciesMeta:
- typescript:
- optional: true
zod:
optional: true
@@ -10358,14 +10341,6 @@ packages:
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
engines: {node: '>= 6.0.0'}
- agentkeepalive@4.6.0:
- resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==}
- engines: {node: '>= 8.0.0'}
-
- aggregate-error@3.1.0:
- resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
- engines: {node: '>=8'}
-
ajv-errors@1.0.1:
resolution: {integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==}
peerDependencies:
@@ -10517,9 +10492,6 @@ packages:
aproba@1.2.0:
resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==}
- aproba@2.1.0:
- resolution: {integrity: sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew==}
-
archiver@8.0.0:
resolution: {integrity: sha512-fV1orZfsnPn9BaSByR/qE67rJCLJEy2Ox5bq7nJh+jquWaNh6Sfec75kJ2T6PtdGUbPQlrVoSVCEOa5SdiTQ1g==}
engines: {node: '>=18'}
@@ -10528,11 +10500,6 @@ packages:
resolution: {integrity: sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==}
deprecated: This package is no longer supported.
- are-we-there-yet@3.0.1:
- resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==}
- engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
- deprecated: This package is no longer supported.
-
arg@5.0.2:
resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
@@ -11602,10 +11569,6 @@ packages:
cacache@12.0.4:
resolution: {integrity: sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==}
- cacache@15.3.0:
- resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==}
- engines: {node: '>= 10'}
-
cache-manager-ioredis@2.1.0:
resolution: {integrity: sha512-TCxbp9ceuFveTKWuNaCX8QjoC41rAlHen4s63u9Yd+iXlw3efYmimc/u935PKPxSdhkXpnMes4mxtK3/yb0L4g==}
engines: {node: '>=6.0.0'}
@@ -11837,10 +11800,6 @@ packages:
chownr@1.1.4:
resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
- chownr@2.0.0:
- resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
- engines: {node: '>=10'}
-
chownr@3.0.0:
resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==}
engines: {node: '>=18'}
@@ -12042,10 +12001,6 @@ packages:
resolution: {integrity: sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==}
engines: {node: '>=18'}
- color-support@1.1.3:
- resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
- hasBin: true
-
color@3.2.1:
resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==}
@@ -13727,9 +13682,6 @@ packages:
eol@0.9.1:
resolution: {integrity: sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==}
- err-code@2.0.3:
- resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==}
-
errno@0.1.8:
resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
hasBin: true
@@ -14636,10 +14588,6 @@ packages:
fs-merger@3.2.1:
resolution: {integrity: sha512-AN6sX12liy0JE7C2evclwoo0aCG3PFulLjrTLsJpWh/2mM+DinhpSGqYLbHBBbIW1PLRNcFhJG8Axtz8mQW3ug==}
- fs-minipass@2.1.0:
- resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
- engines: {node: '>= 8'}
-
fs-mkdirp-stream@2.0.1:
resolution: {integrity: sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw==}
engines: {node: '>=10.13.0'}
@@ -14696,11 +14644,6 @@ packages:
resolution: {integrity: sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==}
deprecated: This package is no longer supported.
- gauge@4.0.4:
- resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==}
- engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
- deprecated: This package is no longer supported.
-
gelf-stream@1.1.1:
resolution: {integrity: sha512-kCzCfI6DJ8+aaDhwMcsNm2l6CsBj6y4Is6CCxH2W9sYnZGcXg9WmJ/iZMoJVO6uTwTRL7dbIioAS8lCuGUXSFA==}
@@ -15266,9 +15209,6 @@ packages:
resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==}
engines: {node: '>=18.18.0'}
- humanize-ms@1.2.1:
- resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
-
husky@9.1.7:
resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==}
engines: {node: '>=18'}
@@ -15482,10 +15422,6 @@ packages:
resolution: {integrity: sha512-tVrCrc4LWJwX82GD79dZ0teZQGq+5KJEGpXJRgzHOrhHtLgF9ME6rTwDV5+HN5bjnvmtrnS8ioXhflY16sy2HQ==}
engines: {node: '>=6'}
- ip-address@10.2.0:
- resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==}
- engines: {node: '>= 12'}
-
ip-regex@4.3.0:
resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==}
engines: {node: '>=8'}
@@ -15682,9 +15618,6 @@ packages:
resolution: {integrity: sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==}
engines: {node: '>=0.10.0'}
- is-lambda@1.0.1:
- resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==}
-
is-language-code@2.0.0:
resolution: {integrity: sha512-6xKmRRcP2YdmMBZMVS3uiJRPQgcMYolkD6hFw2Y4KjqyIyaJlCGxUt56tuu0iIV8q9r8kMEo0Gjd/GFwKrgjbw==}
@@ -16381,7 +16314,6 @@ packages:
mysql: ^2.18.1
mysql2: ^2.1.0
pg: ^8.3.0
- sqlite3: ^5.0.0
peerDependenciesMeta:
mssql:
optional: true
@@ -16391,8 +16323,6 @@ packages:
optional: true
pg:
optional: true
- sqlite3:
- optional: true
knex@2.4.2:
resolution: {integrity: sha512-tMI1M7a+xwHhPxjbl/H9K1kHX+VncEYcvCx5K00M16bWvpYPKAZd6QrCu68PtHAdIZNQPWZn0GVhqVBEthGWCg==}
@@ -16404,7 +16334,6 @@ packages:
mysql2: '*'
pg: '*'
pg-native: '*'
- sqlite3: '*'
tedious: '*'
peerDependenciesMeta:
better-sqlite3:
@@ -16417,8 +16346,6 @@ packages:
optional: true
pg-native:
optional: true
- sqlite3:
- optional: true
tedious:
optional: true
@@ -16432,7 +16359,6 @@ packages:
mysql2: '*'
pg: '*'
pg-native: '*'
- sqlite3: '*'
tedious: '*'
peerDependenciesMeta:
better-sqlite3:
@@ -16445,8 +16371,6 @@ packages:
optional: true
pg-native:
optional: true
- sqlite3:
- optional: true
tedious:
optional: true
@@ -16982,10 +16906,6 @@ packages:
resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
engines: {node: '>=10'}
- make-fetch-happen@9.1.0:
- resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==}
- engines: {node: '>= 10'}
-
make-iterator@1.0.1:
resolution: {integrity: sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==}
engines: {node: '>=0.10.0'}
@@ -17471,33 +17391,9 @@ packages:
minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
- minipass-collect@1.0.2:
- resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==}
- engines: {node: '>= 8'}
-
- minipass-fetch@1.4.1:
- resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==}
- engines: {node: '>=8'}
-
- minipass-flush@1.0.7:
- resolution: {integrity: sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==}
- engines: {node: '>= 8'}
-
- minipass-pipeline@1.2.4:
- resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==}
- engines: {node: '>=8'}
-
- minipass-sized@1.0.3:
- resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==}
- engines: {node: '>=8'}
-
minipass@2.9.0:
resolution: {integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==}
- minipass@3.3.6:
- resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==}
- engines: {node: '>=8'}
-
minipass@4.2.8:
resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==}
engines: {node: '>=8'}
@@ -17506,10 +17402,6 @@ packages:
resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==}
engines: {node: '>=16 || 14 >=14.17'}
- minizlib@2.1.2:
- resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
- engines: {node: '>= 8'}
-
minizlib@3.1.0:
resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==}
engines: {node: '>= 18'}
@@ -17742,9 +17634,6 @@ packages:
resolution: {integrity: sha512-KdHvFWZjEKDf0cakgFjebl371GPsISX2oZHcuyKqM7DtogIsHrqKeLTo8wBHxaXRAQlY2PsPlZmfo+9ZCxEREQ==}
engines: {node: '>=10'}
- node-addon-api@7.1.1:
- resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
-
node-dir@0.1.17:
resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==}
engines: {node: '>= 0.10.5'}
@@ -17771,11 +17660,6 @@ packages:
engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0}
hasBin: true
- node-gyp@8.4.1:
- resolution: {integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==}
- engines: {node: '>= 10.12.0'}
- hasBin: true
-
node-html-markdown@2.0.0:
resolution: {integrity: sha512-DqUC3GGP7pwSYxS93SwHoP+qCw78xcMP6C6H2DuC8rPD2AweJRjBzQb5SdXpKtDlqAQ7hVotJcfhgU7hU5Gthw==}
engines: {node: '>=20.0.0'}
@@ -17976,11 +17860,6 @@ packages:
resolution: {integrity: sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==}
hasBin: true
- nopt@5.0.0:
- resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==}
- engines: {node: '>=6'}
- hasBin: true
-
nopt@7.2.1:
resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
@@ -18055,11 +17934,6 @@ packages:
resolution: {integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==}
deprecated: This package is no longer supported.
- npmlog@6.0.2:
- resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==}
- engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
- deprecated: This package is no longer supported.
-
nth-check@2.1.1:
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
@@ -18232,19 +18106,9 @@ packages:
ox@0.14.20:
resolution: {integrity: sha512-rby38C3nDn8eQkf29Zgw4hkCZJ64Qqi0zRPWL8ENUQ7JVuoITqrVtwWQgM/He19SCMUEc7hS/Sjw0jIOSLJhOw==}
- peerDependencies:
- typescript: '>=5.4.0'
- peerDependenciesMeta:
- typescript:
- optional: true
ox@0.14.33:
resolution: {integrity: sha512-rooA/4o7bBof4Ge2VH/eovfNPb/AEEYyrNj03wggc55g5HZD8Pjs/OeWhttgjic3dDcqn0r29bDuvQEdTiUemQ==}
- peerDependencies:
- typescript: '>=5.4.0'
- peerDependenciesMeta:
- typescript:
- optional: true
oxc-parser@0.127.0:
resolution: {integrity: sha512-bkgD4qHlN7WxLdX8bLXdaU54TtQtAIg/ZBAfm0aje/mo3MRDo3P0hZSgr4U7O3xfX+fQmR5AP04JS/TGcZLcFA==}
@@ -18325,10 +18189,6 @@ packages:
resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==}
engines: {node: '>=6'}
- p-map@4.0.0:
- resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
- engines: {node: '>=10'}
-
p-map@7.0.6:
resolution: {integrity: sha512-I4Prw6ivkd6p8PiYR1tXASOAOBzIJwu0TB7fqaX0c/8c3QAehNYmX57EijyGGGBt3c/BIowGwV03RVBtXvHEVg==}
engines: {node: '>=18'}
@@ -19397,10 +19257,6 @@ packages:
resolution: {integrity: sha512-3npG2NGhTc8BWBolLLf8l/92OxMGaRLbqvIh9wjCHhDXNvk4zsxaTaCpiCunW09qWPrN2zeNSNwRLVBrQQtutA==}
engines: {node: 10.* || >= 12.*}
- promise-retry@2.0.1:
- resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==}
- engines: {node: '>=10'}
-
promise.hash.helper@1.0.8:
resolution: {integrity: sha512-KYcnXctWUWyVD3W3Ye0ZDuA1N8Szrh85cVCxpG6xYrOk/0CttRtYCmU30nWsUch0NuExQQ63QXvzRE6FLimZmg==}
engines: {node: 10.* || >= 12.*}
@@ -20551,10 +20407,6 @@ packages:
slick@1.12.2:
resolution: {integrity: sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A==}
- smart-buffer@4.2.0:
- resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
- engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
-
smartquotes@2.3.2:
resolution: {integrity: sha512-0R6YJ5hLpDH4mZR7N5eZ12oCMLspvGOHL9A9SEm2e3b/CQmQidekW4SWSKEmor/3x6m3NCBBEqLzikcZC9VJNQ==}
engines: {node: '>=4.0.0'}
@@ -20581,14 +20433,6 @@ packages:
resolution: {integrity: sha512-2Dd78bqzzjE6KPkD5fHZmDAKRNe3J15q+YHDrIsy9WEkqttc7GY+kT9OBLSMaPbQaEd0x1BjcmtMtXkfpc+T5A==}
engines: {node: '>=10.2.0'}
- socks-proxy-agent@6.2.1:
- resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==}
- engines: {node: '>= 10'}
-
- socks@2.8.9:
- resolution: {integrity: sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==}
- engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
-
sonner@2.0.7:
resolution: {integrity: sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==}
peerDependencies:
@@ -20689,9 +20533,6 @@ packages:
resolution: {integrity: sha512-BsTCV265VpTp8tm1wyIm1xqQCS+Q9NHx2Sr+WcnUrgLrQ6yiDIvHYJV5gHxsj1lMBy2zm5twLaZao8Jd+S8JJw==}
engines: {bun: '>=1.0.0', deno: '>=2.0.0', node: '>=12.0.0'}
- sqlite3@5.1.7:
- resolution: {integrity: sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==}
-
ssh2@1.17.0:
resolution: {integrity: sha512-wPldCk3asibAjQ/kziWQQt1Wh3PgDFpC0XpwclzKcdT1vql6KeYxf5LIt4nlFkUeR8WuphYMKqUA56X4rjbfgQ==}
engines: {node: '>=10.16.0'}
@@ -20699,10 +20540,6 @@ packages:
ssri@6.0.2:
resolution: {integrity: sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==}
- ssri@8.0.1:
- resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==}
- engines: {node: '>= 8'}
-
stable@0.1.8:
resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
@@ -21982,11 +21819,6 @@ packages:
viem@2.55.11:
resolution: {integrity: sha512-RR5MwtdUnFfqw6ZGoFptizywyLOkLuhTL7UafoP3Irf2upXpANakQkLgGqY4H7A7+8JBxjUs6lElGF5zuGjMEw==}
- peerDependencies:
- typescript: '>=5.0.4'
- peerDependenciesMeta:
- typescript:
- optional: true
vinyl-contents@2.0.0:
resolution: {integrity: sha512-cHq6NnGyi2pZ7xwdHSW1v4Jfnho4TEGtxZHw01cmnc8+i7jgR6bRnED/LbrKan/Q7CvVLbnvA5OepnhbpjBZ5Q==}
@@ -22586,6 +22418,9 @@ packages:
zwitch@2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
+ignoredOptionalDependencies:
+ - sqlite3
+
snapshots:
'@adobe/css-tools@4.5.0': {}
@@ -24803,9 +24638,6 @@ snapshots:
'@floating-ui/utils@0.2.11': {}
- '@gar/promisify@1.1.3':
- optional: true
-
'@glimmer/component@1.1.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
dependencies:
'@glimmer/di': 0.1.11
@@ -25851,18 +25683,6 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.20.1
- '@npmcli/fs@1.1.1':
- dependencies:
- '@gar/promisify': 1.1.3
- semver: 7.8.5
- optional: true
-
- '@npmcli/move-file@1.1.2':
- dependencies:
- mkdirp: 1.0.4
- rimraf: 3.0.2
- optional: true
-
'@number-flow/react@0.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
esm-env: 1.2.2
@@ -28441,10 +28261,10 @@ snapshots:
'@tryghost/bookshelf-transaction-events@2.3.7': {}
- '@tryghost/brute-knex@3.2.1(better-sqlite3@12.11.1)(express@4.22.2(supports-color@10.2.2))(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)':
+ '@tryghost/brute-knex@3.2.1(better-sqlite3@12.11.1)(express@4.22.2(supports-color@10.2.2))(mysql2@3.22.5(@types/node@22.20.1))(supports-color@10.2.2)':
dependencies:
express-brute: 1.0.1(express@4.22.2(supports-color@10.2.2))
- knex: 2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)
+ knex: 2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(supports-color@10.2.2)
transitivePeerDependencies:
- better-sqlite3
- express
@@ -28452,7 +28272,6 @@ snapshots:
- mysql2
- pg
- pg-native
- - sqlite3
- supports-color
- tedious
@@ -28972,18 +28791,17 @@ snapshots:
'@types/connect': 3.4.38
'@types/node': 26.0.0
- '@types/bookshelf@1.2.9(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)':
+ '@types/bookshelf@1.2.9(mysql2@3.22.5(@types/node@22.20.1))(supports-color@10.2.2)':
dependencies:
'@types/bluebird': 3.5.42
'@types/create-error': 0.3.33
'@types/lodash': 4.17.24
- knex: 0.21.21(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)
+ knex: 0.21.21(mysql2@3.22.5(@types/node@22.20.1))(supports-color@10.2.2)
transitivePeerDependencies:
- mssql
- mysql
- mysql2
- pg
- - sqlite3
- supports-color
'@types/broccoli-plugin@1.3.0': {}
@@ -30310,14 +30128,12 @@ snapshots:
abbrev@5.0.0: {}
- abitype@1.2.3(@typescript/typescript6@6.0.2)(zod@4.4.3):
+ abitype@1.2.3(zod@4.4.3):
optionalDependencies:
- typescript: '@typescript/typescript6@6.0.2'
zod: 4.4.3
- abitype@1.3.0(@typescript/typescript6@6.0.2)(zod@4.4.3):
+ abitype@1.3.0(zod@4.4.3):
optionalDependencies:
- typescript: '@typescript/typescript6@6.0.2'
zod: 4.4.3
abort-controller@3.0.0:
@@ -30389,17 +30205,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- agentkeepalive@4.6.0:
- dependencies:
- humanize-ms: 1.2.1
- optional: true
-
- aggregate-error@3.1.0:
- dependencies:
- clean-stack: 2.2.0
- indent-string: 4.0.0
- optional: true
-
ajv-errors@1.0.1(ajv@6.15.0):
dependencies:
ajv: 6.15.0
@@ -30534,9 +30339,6 @@ snapshots:
aproba@1.2.0: {}
- aproba@2.1.0:
- optional: true
-
archiver@8.0.0:
dependencies:
async: 3.2.6
@@ -30558,12 +30360,6 @@ snapshots:
delegates: 1.0.0
readable-stream: 2.3.8
- are-we-there-yet@3.0.1:
- dependencies:
- delegates: 1.0.0
- readable-stream: 3.6.2
- optional: true
-
arg@5.0.2: {}
argparse@1.0.10:
@@ -31605,22 +31401,22 @@ snapshots:
fast-safe-stringify: 2.1.1
individual: 3.0.0
- bookshelf-relations@2.8.0(bookshelf@1.2.0(knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)))(supports-color@10.2.2):
+ bookshelf-relations@2.8.0(bookshelf@1.2.0(knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(supports-color@10.2.2)))(supports-color@10.2.2):
dependencies:
'@tryghost/debug': 0.1.40(supports-color@10.2.2)
'@tryghost/errors': 3.3.5
bluebird: 3.7.2
- bookshelf: 1.2.0(knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2))
+ bookshelf: 1.2.0(knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(supports-color@10.2.2))
lodash: 4.18.1
transitivePeerDependencies:
- supports-color
- bookshelf@1.2.0(knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)):
+ bookshelf@1.2.0(knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(supports-color@10.2.2)):
dependencies:
bluebird: 3.7.2
create-error: 0.3.1
inflection: 1.13.4
- knex: 2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)
+ knex: 2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(supports-color@10.2.2)
lodash: 4.18.1
boolbase@1.0.0: {}
@@ -32393,30 +32189,6 @@ snapshots:
unique-filename: 1.1.1
y18n: 4.0.3
- cacache@15.3.0(bluebird@3.7.2):
- dependencies:
- '@npmcli/fs': 1.1.1
- '@npmcli/move-file': 1.1.2
- chownr: 2.0.0
- fs-minipass: 2.1.0
- glob: 7.2.3
- infer-owner: 1.0.4
- lru-cache: 6.0.0
- minipass: 3.3.6
- minipass-collect: 1.0.2
- minipass-flush: 1.0.7
- minipass-pipeline: 1.2.4
- mkdirp: 1.0.4
- p-map: 4.0.0
- promise-inflight: 1.0.1(bluebird@3.7.2)
- rimraf: 3.0.2
- ssri: 8.0.1
- tar: 7.5.16
- unique-filename: 1.1.1
- transitivePeerDependencies:
- - bluebird
- optional: true
-
cache-manager-ioredis@2.1.0(supports-color@10.2.2):
dependencies:
ioredis: 4.31.0(supports-color@10.2.2)
@@ -32725,9 +32497,6 @@ snapshots:
chownr@1.1.4: {}
- chownr@2.0.0:
- optional: true
-
chownr@3.0.0: {}
chrome-trace-event@1.0.4: {}
@@ -32917,9 +32686,6 @@ snapshots:
dependencies:
color-name: 2.1.0
- color-support@1.1.3:
- optional: true
-
color@3.2.1:
dependencies:
color-convert: 1.9.3
@@ -35573,9 +35339,6 @@ snapshots:
eol@0.9.1: {}
- err-code@2.0.3:
- optional: true
-
errno@0.1.8:
dependencies:
prr: 1.0.1
@@ -37127,11 +36890,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- fs-minipass@2.1.0:
- dependencies:
- minipass: 3.3.6
- optional: true
-
fs-mkdirp-stream@2.0.1:
dependencies:
graceful-fs: 4.2.11
@@ -37219,18 +36977,6 @@ snapshots:
strip-ansi: 3.0.1
wide-align: 1.1.5
- gauge@4.0.4:
- dependencies:
- aproba: 2.1.0
- color-support: 1.1.3
- console-control-strings: 1.1.0
- has-unicode: 2.0.1
- signal-exit: 3.0.7
- string-width: 4.2.3
- strip-ansi: 6.0.1
- wide-align: 1.1.5
- optional: true
-
gelf-stream@1.1.1:
dependencies:
gelfling: 0.3.1
@@ -37969,11 +37715,6 @@ snapshots:
human-signals@8.0.1: {}
- humanize-ms@1.2.1:
- dependencies:
- ms: 2.1.3
- optional: true
-
husky@9.1.7: {}
i18n-iso-countries@7.14.0:
@@ -38223,9 +37964,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- ip-address@10.2.0:
- optional: true
-
ip-regex@4.3.0: {}
ipaddr.js@1.9.1: {}
@@ -38405,9 +38143,6 @@ snapshots:
dependencies:
is-glob: 2.0.1
- is-lambda@1.0.1:
- optional: true
-
is-language-code@2.0.0: {}
is-map@2.0.3: {}
@@ -39414,7 +39149,7 @@ snapshots:
kleur@4.1.5: {}
- knex-migrator@5.4.1(@types/node@22.20.1)(bluebird@3.7.2)(supports-color@10.2.2):
+ knex-migrator@5.4.1(@types/node@22.20.1)(supports-color@10.2.2):
dependencies:
'@tryghost/database-info': 0.3.35
'@tryghost/errors': 3.3.5
@@ -39423,7 +39158,7 @@ snapshots:
commander: 5.1.0
compare-ver: 2.0.2
debug: 4.4.3(supports-color@10.2.2)
- knex: 2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)
+ knex: 2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(supports-color@10.2.2)
lodash: 4.18.1
moment: 2.30.1
mysql2: 3.22.5(@types/node@22.20.1)
@@ -39431,18 +39166,16 @@ snapshots:
resolve: 1.22.12
optionalDependencies:
better-sqlite3: 12.11.1
- sqlite3: 5.1.7(bluebird@3.7.2)(supports-color@10.2.2)
transitivePeerDependencies:
- '@75lb/nature'
- '@types/node'
- - bluebird
- mysql
- pg
- pg-native
- supports-color
- tedious
- knex@0.21.21(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2):
+ knex@0.21.21(mysql2@3.22.5(@types/node@22.20.1))(supports-color@10.2.2):
dependencies:
colorette: 1.2.1
commander: 6.2.1
@@ -39458,11 +39191,10 @@ snapshots:
v8flags: 3.2.0
optionalDependencies:
mysql2: 3.22.5(@types/node@22.20.1)
- sqlite3: 5.1.7(bluebird@3.7.2)(supports-color@10.2.2)
transitivePeerDependencies:
- supports-color
- knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2):
+ knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(supports-color@10.2.2):
dependencies:
colorette: 2.0.19
commander: 9.5.0
@@ -39481,11 +39213,10 @@ snapshots:
optionalDependencies:
better-sqlite3: 12.11.1
mysql2: 3.22.5(@types/node@22.20.1)
- sqlite3: 5.1.7(bluebird@3.7.2)(supports-color@10.2.2)
transitivePeerDependencies:
- supports-color
- knex@3.1.0(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@26.0.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2):
+ knex@3.1.0(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@26.0.0))(supports-color@10.2.2):
dependencies:
colorette: 2.0.19
commander: 10.0.1
@@ -39504,7 +39235,6 @@ snapshots:
optionalDependencies:
better-sqlite3: 12.11.1
mysql2: 3.22.5(@types/node@26.0.0)
- sqlite3: 5.1.7(bluebird@3.7.2)(supports-color@10.2.2)
transitivePeerDependencies:
- supports-color
@@ -40044,29 +39774,6 @@ snapshots:
dependencies:
semver: 7.8.5
- make-fetch-happen@9.1.0(bluebird@3.7.2)(supports-color@10.2.2):
- dependencies:
- agentkeepalive: 4.6.0
- cacache: 15.3.0(bluebird@3.7.2)
- http-cache-semantics: 4.2.0
- http-proxy-agent: 4.0.1(supports-color@10.2.2)
- https-proxy-agent: 5.0.1(supports-color@10.2.2)
- is-lambda: 1.0.1
- lru-cache: 6.0.0
- minipass: 3.3.6
- minipass-collect: 1.0.2
- minipass-fetch: 1.4.1
- minipass-flush: 1.0.7
- minipass-pipeline: 1.2.4
- negotiator: 0.6.4
- promise-retry: 2.0.1
- socks-proxy-agent: 6.2.1(supports-color@10.2.2)
- ssri: 8.0.1
- transitivePeerDependencies:
- - bluebird
- - supports-color
- optional: true
-
make-iterator@1.0.1:
dependencies:
kind-of: 6.0.3
@@ -40837,55 +40544,15 @@ snapshots:
minimist@1.2.8: {}
- minipass-collect@1.0.2:
- dependencies:
- minipass: 3.3.6
- optional: true
-
- minipass-fetch@1.4.1:
- dependencies:
- minipass: 3.3.6
- minipass-sized: 1.0.3
- minizlib: 2.1.2
- optionalDependencies:
- encoding: 0.1.13
- optional: true
-
- minipass-flush@1.0.7:
- dependencies:
- minipass: 3.3.6
- optional: true
-
- minipass-pipeline@1.2.4:
- dependencies:
- minipass: 3.3.6
- optional: true
-
- minipass-sized@1.0.3:
- dependencies:
- minipass: 3.3.6
- optional: true
-
minipass@2.9.0:
dependencies:
safe-buffer: 5.2.1
yallist: 3.1.1
- minipass@3.3.6:
- dependencies:
- yallist: 4.0.0
- optional: true
-
minipass@4.2.8: {}
minipass@7.1.3: {}
- minizlib@2.1.2:
- dependencies:
- minipass: 3.3.6
- yallist: 4.0.0
- optional: true
-
minizlib@3.1.0:
dependencies:
minipass: 7.1.3
@@ -40979,17 +40646,15 @@ snapshots:
rimraf: 2.7.1
run-queue: 1.0.3
- mppx@0.6.20(@typescript/typescript6@6.0.2)(express@4.22.2(supports-color@10.2.2))(hono@4.12.18)(viem@2.55.11(@typescript/typescript6@6.0.2)(zod@4.4.3)):
+ mppx@0.6.20(express@4.22.2(supports-color@10.2.2))(hono@4.12.18)(viem@2.55.11(zod@4.4.3)):
dependencies:
incur: 0.4.26
- ox: 0.14.20(@typescript/typescript6@6.0.2)(zod@4.4.3)
- viem: 2.55.11(@typescript/typescript6@6.0.2)(zod@4.4.3)
+ ox: 0.14.20(zod@4.4.3)
+ viem: 2.55.11(zod@4.4.3)
zod: 4.4.3
optionalDependencies:
express: 4.22.2(supports-color@10.2.2)
hono: 4.12.18
- transitivePeerDependencies:
- - typescript
mrmime@2.0.1: {}
@@ -41190,9 +40855,6 @@ snapshots:
semver: 7.8.5
optional: true
- node-addon-api@7.1.1:
- optional: true
-
node-dir@0.1.17:
dependencies:
minimatch: 3.1.5
@@ -41225,23 +40887,6 @@ snapshots:
undici: 6.27.0
which: 7.0.0
- node-gyp@8.4.1(bluebird@3.7.2)(supports-color@10.2.2):
- dependencies:
- env-paths: 2.2.1
- glob: 7.2.3
- graceful-fs: 4.2.11
- make-fetch-happen: 9.1.0(bluebird@3.7.2)(supports-color@10.2.2)
- nopt: 5.0.0
- npmlog: 6.0.2
- rimraf: 3.0.2
- semver: 7.8.5
- tar: 7.5.16
- which: 2.0.2
- transitivePeerDependencies:
- - bluebird
- - supports-color
- optional: true
-
node-html-markdown@2.0.0:
dependencies:
node-html-parser: 6.1.13
@@ -41344,11 +40989,6 @@ snapshots:
dependencies:
abbrev: 1.1.1
- nopt@5.0.0:
- dependencies:
- abbrev: 1.1.1
- optional: true
-
nopt@7.2.1:
dependencies:
abbrev: 2.0.0
@@ -41421,14 +41061,6 @@ snapshots:
gauge: 2.7.4
set-blocking: 2.0.0
- npmlog@6.0.2:
- dependencies:
- are-we-there-yet: 3.0.1
- console-control-strings: 1.1.0
- gauge: 4.0.4
- set-blocking: 2.0.0
- optional: true
-
nth-check@2.1.1:
dependencies:
boolbase: 1.0.0
@@ -41752,7 +41384,7 @@ snapshots:
object-keys: 1.1.1
safe-push-apply: 1.0.0
- ox@0.14.20(@typescript/typescript6@6.0.2)(zod@4.4.3):
+ ox@0.14.20(zod@4.4.3):
dependencies:
'@adraffy/ens-normalize': 1.11.1
'@noble/ciphers': 1.3.0
@@ -41760,14 +41392,12 @@ snapshots:
'@noble/hashes': 1.8.0
'@scure/bip32': 1.7.0
'@scure/bip39': 1.6.0
- abitype: 1.3.0(@typescript/typescript6@6.0.2)(zod@4.4.3)
+ abitype: 1.3.0(zod@4.4.3)
eventemitter3: 5.0.1
- optionalDependencies:
- typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
- zod
- ox@0.14.33(@typescript/typescript6@6.0.2)(zod@4.4.3):
+ ox@0.14.33(zod@4.4.3):
dependencies:
'@adraffy/ens-normalize': 1.11.1
'@noble/ciphers': 1.3.0
@@ -41775,10 +41405,8 @@ snapshots:
'@noble/hashes': 1.8.0
'@scure/bip32': 1.7.0
'@scure/bip39': 1.6.0
- abitype: 1.3.0(@typescript/typescript6@6.0.2)(zod@4.4.3)
+ abitype: 1.3.0(zod@4.4.3)
eventemitter3: 5.0.1
- optionalDependencies:
- typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
- zod
@@ -41908,11 +41536,6 @@ snapshots:
p-map@2.1.0: {}
- p-map@4.0.0:
- dependencies:
- aggregate-error: 3.1.0
- optional: true
-
p-map@7.0.6: {}
p-reflect@2.1.0: {}
@@ -43014,12 +42637,6 @@ snapshots:
promise-map-series@0.3.0: {}
- promise-retry@2.0.1:
- dependencies:
- err-code: 2.0.3
- retry: 0.12.0
- optional: true
-
promise.hash.helper@1.0.8: {}
prompts@2.4.2:
@@ -44507,9 +44124,6 @@ snapshots:
slick@1.12.2: {}
- smart-buffer@4.2.0:
- optional: true
-
smartquotes@2.3.2: {}
smol-toml@1.6.1: {}
@@ -44551,21 +44165,6 @@ snapshots:
- supports-color
- utf-8-validate
- socks-proxy-agent@6.2.1(supports-color@10.2.2):
- dependencies:
- agent-base: 6.0.2(supports-color@10.2.2)
- debug: 4.4.3(supports-color@10.2.2)
- socks: 2.8.9
- transitivePeerDependencies:
- - supports-color
- optional: true
-
- socks@2.8.9:
- dependencies:
- ip-address: 10.2.0
- smart-buffer: 4.2.0
- optional: true
-
sonner@2.0.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
react: 18.3.1
@@ -44658,19 +44257,6 @@ snapshots:
sql-escaper@1.3.3: {}
- sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2):
- dependencies:
- bindings: 1.5.0
- node-addon-api: 7.1.1
- prebuild-install: 7.1.3
- tar: 7.5.16
- optionalDependencies:
- node-gyp: 8.4.1(bluebird@3.7.2)(supports-color@10.2.2)
- transitivePeerDependencies:
- - bluebird
- - supports-color
- optional: true
-
ssh2@1.17.0:
dependencies:
asn1: 0.2.6
@@ -44683,11 +44269,6 @@ snapshots:
dependencies:
figgy-pudding: 3.5.2
- ssri@8.0.1:
- dependencies:
- minipass: 3.3.6
- optional: true
-
stable@0.1.8: {}
stack-utils@2.0.6:
@@ -46224,18 +45805,16 @@ snapshots:
video-extensions@2.0.0: {}
- viem@2.55.11(@typescript/typescript6@6.0.2)(zod@4.4.3):
+ viem@2.55.11(zod@4.4.3):
dependencies:
'@noble/curves': 1.9.1
'@noble/hashes': 1.8.0
'@scure/bip32': 1.7.0
'@scure/bip39': 1.6.0
- abitype: 1.2.3(@typescript/typescript6@6.0.2)(zod@4.4.3)
+ abitype: 1.2.3(zod@4.4.3)
isows: 1.0.7(ws@8.21.0)
- ox: 0.14.33(@typescript/typescript6@6.0.2)(zod@4.4.3)
+ ox: 0.14.33(zod@4.4.3)
ws: 8.21.0
- optionalDependencies:
- typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
- bufferutil
- utf-8-validate
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 2bb04b36485..10343b128c8 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -14,6 +14,11 @@ catalogMode: strict
minimumReleaseAge: 4320 # 3 days in minutes; matches Renovate's minimumReleaseAge
blockExoticSubdeps: true
+ignoredOptionalDependencies:
+ # sqlite3 was replaced by better-sqlite3 so it can be ignored
+ # TODO: remove once knex-migrator no longer depends on sqlite3
+ - sqlite3
+
allowBuilds:
# Permitted builds are version-scoped. Adding or updating a permitted version
# requires an explicit Platform security review.
@@ -33,7 +38,6 @@ allowBuilds:
'protobufjs@7.6.4': true
're2@1.25.0': true
'sharp@0.35.3': true
- 'sqlite3@5.1.7': true
ssh2: false
catalog:
From 6e146ea0b16ce5eab336b9eea289c922ec6ccbee Mon Sep 17 00:00:00 2001
From: "tryghost-renovate[bot]"
<269725441+tryghost-renovate[bot]@users.noreply.github.com>
Date: Fri, 14 Aug 2026 01:58:09 +0000
Subject: [PATCH 08/13] Update dependency @tanstack/react-virtual to v3.14.9
(#29588)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@tanstack/react-virtual](https://tanstack.com/virtual)
([source](https://redirect.github.com/TanStack/virtual/tree/HEAD/packages/react-virtual))
| [`3.14.6` →
`3.14.9`](https://renovatebot.com/diffs/npm/@tanstack%2freact-virtual/3.14.6/3.14.9)
|

|

|
---
### Release Notes
TanStack/virtual (@tanstack/react-virtual)
###
[`v3.14.9`](https://redirect.github.com/TanStack/virtual/blob/HEAD/packages/react-virtual/CHANGELOG.md#3149)
[Compare
Source](https://redirect.github.com/TanStack/virtual/compare/@tanstack/react-virtual@3.14.8...@tanstack/react-virtual@3.14.9)
##### Patch Changes
- Updated dependencies
\[[`a5417b4`](https://redirect.github.com/TanStack/virtual/commit/a5417b4b0d3c82876747bb9635db7239c28d3e44)]:
-
[@tanstack/virtual-core](https://redirect.github.com/tanstack/virtual-core)@3.17.7
###
[`v3.14.8`](https://redirect.github.com/TanStack/virtual/blob/HEAD/packages/react-virtual/CHANGELOG.md#3148)
[Compare
Source](https://redirect.github.com/TanStack/virtual/compare/@tanstack/react-virtual@3.14.7...@tanstack/react-virtual@3.14.8)
##### Patch Changes
- [#1237](https://redirect.github.com/TanStack/virtual/pull/1237)
[`aa536e7`](https://redirect.github.com/TanStack/virtual/commit/aa536e7746a88d9f55ca8a4b50d2f548a888fea6)
- Fix a gap at the top of the list after an end-anchored prepend in
`directDomUpdates` mode. The prepend grows the total size and bumps
`scrollOffset` to the new bottom in the same pass, but the size
container's height was written *after* `_willUpdate` synced the scroll
position — so the browser clamped the `scrollTop` write to the stale
(shorter) `scrollHeight`, leaving whitespace at the top until the next
scroll. The container is now grown before the scroll sync. Only affected
`directDomUpdates` mode (React-rendered sizers receive their height
during render).
- Updated dependencies
\[[`7ae32b5`](https://redirect.github.com/TanStack/virtual/commit/7ae32b55887fd044a48c788546cd940279b338e0)]:
-
[@tanstack/virtual-core](https://redirect.github.com/tanstack/virtual-core)@3.17.6
###
[`v3.14.7`](https://redirect.github.com/TanStack/virtual/blob/HEAD/packages/react-virtual/CHANGELOG.md#3147)
[Compare
Source](https://redirect.github.com/TanStack/virtual/compare/@tanstack/react-virtual@3.14.6...@tanstack/react-virtual@3.14.7)
##### Patch Changes
- Updated dependencies
\[[`1e3b908`](https://redirect.github.com/TanStack/virtual/commit/1e3b908705e04e45be2615f2277580cb09f5cdef),
[`7dcfc07`](https://redirect.github.com/TanStack/virtual/commit/7dcfc07b877479697124157d3124c09537b87a75)]:
-
[@tanstack/virtual-core](https://redirect.github.com/tanstack/virtual-core)@3.17.5
---
### Configuration
📅 **Schedule**: (in timezone Etc/UTC)
- Branch creation
- Only on Sunday and Saturday (`* * * * 0,6`)
- Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`)
- Between 12:00 AM and 05:59 AM, Monday through Saturday (`* 0-5 * *
1-6`)
- Automerge
- Only on Sunday and Saturday (`* * * * 0,6`)
- Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`)
- Between 12:00 AM and 05:59 AM, Monday through Saturday (`* 0-5 * *
1-6`)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR has been generated by [Mend
Renovate](https://redirect.github.com/renovatebot/renovate).
Co-authored-by: tryghost-renovate[bot] <269725441+tryghost-renovate[bot]@users.noreply.github.com>
---
pnpm-lock.yaml | 34 +++++++++++++++++-----------------
pnpm-workspace.yaml | 2 +-
2 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 5579fbc2978..47a7a9db8dd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -142,8 +142,8 @@ catalogs:
specifier: 5.101.4
version: 5.101.4
'@tanstack/react-virtual':
- specifier: 3.14.6
- version: 3.14.6
+ specifier: 3.14.9
+ version: 3.14.9
'@testing-library/jest-dom':
specifier: 6.9.1
version: 6.9.1
@@ -723,7 +723,7 @@ importers:
version: 5.101.4(react@18.3.1)
'@tanstack/react-virtual':
specifier: 'catalog:'
- version: 3.14.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 3.14.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@tryghost/activitypub':
specifier: workspace:*
version: link:../activitypub
@@ -8857,24 +8857,24 @@ packages:
peerDependencies:
react: ^18 || ^19
- '@tanstack/react-virtual@3.14.5':
- resolution: {integrity: sha512-4EKRXh7zBLkbKbFmG3AUVkircuHd+7OdT1pocJSepxtfBd3qnrJgJ5rtPkRYyo9fmyVb2+pI2xPy5oYvMLQy6A==}
+ '@tanstack/react-virtual@3.14.6':
+ resolution: {integrity: sha512-4+Uq8m0/gzO4kMCHUEpTtGX1RnONK0C+g88b2ltwPMWUBiaVarBuWKoPJaz7gj1cKCVRAdyu+U8GcKhwCc2beA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- '@tanstack/react-virtual@3.14.6':
- resolution: {integrity: sha512-4+Uq8m0/gzO4kMCHUEpTtGX1RnONK0C+g88b2ltwPMWUBiaVarBuWKoPJaz7gj1cKCVRAdyu+U8GcKhwCc2beA==}
+ '@tanstack/react-virtual@3.14.9':
+ resolution: {integrity: sha512-qZyr0FZDP8rDC4WBhsryIZmAd9bveJvFGUJJtskWaew6/0dTRS6wZxnR6VQ5bY2KwL3LjerrHqQLk3a0GKcPXQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- '@tanstack/virtual-core@3.17.3':
- resolution: {integrity: sha512-8Np/TFELpI0ySuJoVmjvOrQYXH/8sTX0Biv9szhFhY39xOdAAY+smrMxjxOum/ux3eM8MUJQsEJ0/R0UpvC8dw==}
-
'@tanstack/virtual-core@3.17.4':
resolution: {integrity: sha512-nGm5KteqxasUdThLc2izl6dHUqLv0LQj7Nuyo5gYalTPf/U8a9ermvsl7reT+6ioBW1l8WfpP/mcU338nLXpqw==}
+ '@tanstack/virtual-core@3.17.7':
+ resolution: {integrity: sha512-bp+v10y65sp2H7WpWfIMyxTNfl8ZVfxFTLRjPIFRryi6FV/J33z4IS53WO4pTk36KlvJ4iLiQz+oaydDC1xbcA==}
+
'@testing-library/dom@10.4.1':
resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==}
engines: {node: '>=18'}
@@ -24803,7 +24803,7 @@ snapshots:
'@headlessui/react@1.7.19(react-dom@17.0.2(react@17.0.2))(react@17.0.2)':
dependencies:
- '@tanstack/react-virtual': 3.14.5(react-dom@17.0.2(react@17.0.2))(react@17.0.2)
+ '@tanstack/react-virtual': 3.14.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2)
client-only: 0.0.1
react: 17.0.2
react-dom: 17.0.2(react@17.0.2)
@@ -27956,22 +27956,22 @@ snapshots:
'@tanstack/query-core': 5.101.4
react: 18.3.1
- '@tanstack/react-virtual@3.14.5(react-dom@17.0.2(react@17.0.2))(react@17.0.2)':
+ '@tanstack/react-virtual@3.14.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2)':
dependencies:
- '@tanstack/virtual-core': 3.17.3
+ '@tanstack/virtual-core': 3.17.4
react: 17.0.2
react-dom: 17.0.2(react@17.0.2)
- '@tanstack/react-virtual@3.14.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@tanstack/react-virtual@3.14.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@tanstack/virtual-core': 3.17.4
+ '@tanstack/virtual-core': 3.17.7
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@tanstack/virtual-core@3.17.3': {}
-
'@tanstack/virtual-core@3.17.4': {}
+ '@tanstack/virtual-core@3.17.7': {}
+
'@testing-library/dom@10.4.1':
dependencies:
'@babel/code-frame': 7.29.7
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 10343b128c8..4f473a2d5ac 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -76,7 +76,7 @@ catalog:
'@tailwindcss/postcss': 4.2.2
'@tailwindcss/vite': 4.2.2
'@tanstack/react-query': 5.101.4
- '@tanstack/react-virtual': 3.14.6
+ '@tanstack/react-virtual': 3.14.9
'@testing-library/jest-dom': 6.9.1
'@testing-library/react': 14.3.1
'@tryghost/api-framework': 3.3.5
From a74cb0999fc5a05450a76f3b24efddaf5ec50e78 Mon Sep 17 00:00:00 2001
From: "tryghost-renovate[bot]"
<269725441+tryghost-renovate[bot]@users.noreply.github.com>
Date: Fri, 14 Aug 2026 01:59:24 +0000
Subject: [PATCH 09/13] Update dependency @testing-library/user-event to
v14.6.3 (#29974)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
|
[@testing-library/user-event](https://redirect.github.com/testing-library/user-event)
| [`14.6.1` →
`14.6.3`](https://renovatebot.com/diffs/npm/@testing-library%2fuser-event/14.6.1/14.6.3)
|

|

|
---
### Release Notes
testing-library/user-event
(@testing-library/user-event)
###
[`v14.6.3`](https://redirect.github.com/testing-library/user-event/releases/tag/v14.6.3)
[Compare
Source](https://redirect.github.com/testing-library/user-event/compare/v14.6.1...v14.6.3)
##### Bug Fixes
- **release:** manually release a patch version
([#1321](https://redirect.github.com/testing-library/user-event/issues/1321))
([1d18b1f](https://redirect.github.com/testing-library/user-event/commit/1d18b1fae589eeed8e08838672a4c2de0dcc2b36)),
closes
[#1317](https://redirect.github.com/testing-library/user-event/issues/1317)
---
### Configuration
📅 **Schedule**: (in timezone Etc/UTC)
- Branch creation
- Only on Sunday and Saturday (`* * * * 0,6`)
- Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`)
- Between 12:00 AM and 05:59 AM, Monday through Saturday (`* 0-5 * *
1-6`)
- Automerge
- Only on Sunday and Saturday (`* * * * 0,6`)
- Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`)
- Between 12:00 AM and 05:59 AM, Monday through Saturday (`* 0-5 * *
1-6`)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR has been generated by [Mend
Renovate](https://redirect.github.com/renovatebot/renovate).
Co-authored-by: tryghost-renovate[bot] <269725441+tryghost-renovate[bot]@users.noreply.github.com>
---
apps/portal/package.json | 2 +-
pnpm-lock.yaml | 14 +++++++-------
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/apps/portal/package.json b/apps/portal/package.json
index 85af1adebf2..3f18c0e1041 100644
--- a/apps/portal/package.json
+++ b/apps/portal/package.json
@@ -50,7 +50,7 @@
"@testing-library/jest-dom": "catalog:",
"@testing-library/react": "catalog:react17",
"@types/react": "catalog:react17",
- "@testing-library/user-event": "14.6.1",
+ "@testing-library/user-event": "14.6.3",
"@tryghost/i18n": "workspace:*",
"@vitest/coverage-v8": "catalog:",
"dompurify": "catalog:",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 47a7a9db8dd..aad8b5664fc 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1632,8 +1632,8 @@ importers:
specifier: catalog:react17
version: 12.1.5(@types/react@17.0.93)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)
'@testing-library/user-event':
- specifier: 14.6.1
- version: 14.6.1(@testing-library/dom@10.4.1)
+ specifier: 14.6.3
+ version: 14.6.3(@testing-library/dom@10.4.1)
'@tryghost/i18n':
specifier: workspace:*
version: link:../../packages/i18n
@@ -8920,8 +8920,8 @@ packages:
'@types/react-dom':
optional: true
- '@testing-library/user-event@14.6.1':
- resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==}
+ '@testing-library/user-event@14.6.3':
+ resolution: {integrity: sha512-6dBq67jT8lE+JTE8Exm02Kt6ze43hz1jdiSpSJwtTZiT1xQQ6b7nZYTTQ9njdArdU8XklOwaDp/AbT/eYSKF4g==}
engines: {node: '>=12', npm: '>=6'}
peerDependencies:
'@testing-library/dom': '>=7.21.4'
@@ -28044,7 +28044,7 @@ snapshots:
'@types/react': 18.3.31
'@types/react-dom': 18.3.7(@types/react@18.3.31)
- '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)':
+ '@testing-library/user-event@14.6.3(@testing-library/dom@10.4.1)':
dependencies:
'@testing-library/dom': 10.4.1
@@ -44305,7 +44305,7 @@ snapshots:
'@storybook/global': 5.0.0
'@storybook/icons': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@testing-library/jest-dom': 6.9.1
- '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1)
+ '@testing-library/user-event': 14.6.3(@testing-library/dom@10.4.1)
'@vitest/expect': 3.2.4
'@vitest/spy': 3.2.4
'@webcontainer/env': 1.1.1
@@ -44332,7 +44332,7 @@ snapshots:
'@storybook/global': 5.0.0
'@storybook/icons': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@testing-library/jest-dom': 6.9.1
- '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1)
+ '@testing-library/user-event': 14.6.3(@testing-library/dom@10.4.1)
'@vitest/expect': 3.2.4
'@vitest/spy': 3.2.4
'@webcontainer/env': 1.1.1
From 158426e82e0218c224dbc311a0a755535c74d2d4 Mon Sep 17 00:00:00 2001
From: "tryghost-renovate[bot]"
<269725441+tryghost-renovate[bot]@users.noreply.github.com>
Date: Fri, 14 Aug 2026 02:44:06 +0000
Subject: [PATCH 10/13] Update dependency concurrently to v10.0.4 (#29975)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
|
[concurrently](https://redirect.github.com/open-cli-tools/concurrently)
| [`10.0.3` →
`10.0.4`](https://renovatebot.com/diffs/npm/concurrently/10.0.3/10.0.4)
|

|

|
---
### Release Notes
open-cli-tools/concurrently (concurrently)
###
[`v10.0.4`](https://redirect.github.com/open-cli-tools/concurrently/releases/tag/v10.0.4)
[Compare
Source](https://redirect.github.com/open-cli-tools/concurrently/compare/v10.0.3...v10.0.4)
#### What's Changed
- deps: upgrade shell-quote to 1.9.0 by
[@Mayvis](https://redirect.github.com/Mayvis) in
[#599](https://redirect.github.com/open-cli-tools/concurrently/pull/599)
- fix: avoid kill timeout exit delays by
[@rajanpanth](https://redirect.github.com/rajanpanth) in
[#601](https://redirect.github.com/open-cli-tools/concurrently/pull/601)
#### New Contributors
- [@Mayvis](https://redirect.github.com/Mayvis) made their first
contribution in
[#599](https://redirect.github.com/open-cli-tools/concurrently/pull/599)
- [@rajanpanth](https://redirect.github.com/rajanpanth) made
their first contribution in
[#601](https://redirect.github.com/open-cli-tools/concurrently/pull/601)
**Full Changelog**:
---
### Configuration
📅 **Schedule**: (in timezone Etc/UTC)
- Branch creation
- Only on Sunday and Saturday (`* * * * 0,6`)
- Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`)
- Between 12:00 AM and 05:59 AM, Monday through Saturday (`* 0-5 * *
1-6`)
- Automerge
- Only on Sunday and Saturday (`* * * * 0,6`)
- Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`)
- Between 12:00 AM and 05:59 AM, Monday through Saturday (`* 0-5 * *
1-6`)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR has been generated by [Mend Renovate
CLI](https://redirect.github.com/renovatebot/renovate).
Co-authored-by: tryghost-renovate[bot] <269725441+tryghost-renovate[bot]@users.noreply.github.com>
---
.changeset/funky-rice-shine.md | 5 +++++
pnpm-lock.yaml | 20 ++++++++++----------
pnpm-workspace.yaml | 2 +-
3 files changed, 16 insertions(+), 11 deletions(-)
create mode 100644 .changeset/funky-rice-shine.md
diff --git a/.changeset/funky-rice-shine.md b/.changeset/funky-rice-shine.md
new file mode 100644
index 00000000000..2f762631c3a
--- /dev/null
+++ b/.changeset/funky-rice-shine.md
@@ -0,0 +1,5 @@
+---
+"@tryghost/koenig-lexical": patch
+---
+
+Updated dependencies
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index aad8b5664fc..3e545b28c8d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -274,8 +274,8 @@ catalogs:
specifier: 2.1.1
version: 2.1.1
concurrently:
- specifier: 10.0.3
- version: 10.0.3
+ specifier: 10.0.4
+ version: 10.0.4
country-flag-icons:
specifier: 1.6.20
version: 1.6.20
@@ -3559,7 +3559,7 @@ importers:
version: 2.1.1
concurrently:
specifier: 'catalog:'
- version: 10.0.3
+ version: 10.0.4
dompurify:
specifier: 'catalog:'
version: 3.4.11
@@ -12140,8 +12140,8 @@ packages:
resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==}
engines: {'0': node >= 6.0}
- concurrently@10.0.3:
- resolution: {integrity: sha512-hc3LH4UaKWd/bbyDK/IGVa4RB6PtQ3CUYwtrkzqHn+wIG3Hr5fhpRlk0L/gCa8ZE1L/Ufj50Zho69cI5w8SQBA==}
+ concurrently@10.0.4:
+ resolution: {integrity: sha512-trZql+7l/0+WRAsAnEdctr4+iiOS6ZrViI6H8QWcCF9MFS/LT0dKpe8vluB1to6it+OxSI4VospFTIFMW8DJRw==}
engines: {node: '>=22'}
hasBin: true
@@ -20309,8 +20309,8 @@ packages:
resolution: {integrity: sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==}
engines: {node: '>= 0.4'}
- shell-quote@1.8.4:
- resolution: {integrity: sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ==}
+ shell-quote@1.9.0:
+ resolution: {integrity: sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA==}
engines: {node: '>= 0.4'}
shellwords@0.1.1:
@@ -32809,11 +32809,11 @@ snapshots:
readable-stream: 3.6.2
typedarray: 0.0.6
- concurrently@10.0.3:
+ concurrently@10.0.4:
dependencies:
chalk: 5.6.2
rxjs: 7.8.2
- shell-quote: 1.8.4
+ shell-quote: 1.9.0
supports-color: 10.2.2
tree-kill: 1.2.2
yargs: 18.0.0
@@ -44007,7 +44007,7 @@ snapshots:
shell-quote@1.10.0: {}
- shell-quote@1.8.4: {}
+ shell-quote@1.9.0: {}
shellwords@0.1.1: {}
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 4f473a2d5ac..e883725736e 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -124,7 +124,7 @@ catalog:
chai: 4.5.0
chalk: 4.1.2
clsx: 2.1.1
- concurrently: 10.0.3
+ concurrently: 10.0.4
country-flag-icons: 1.6.20
cross-fetch: 4.1.0
dependency-cruiser: ^18.1.1
From 8c296b53a736492455cc292b365399ae6e7575a0 Mon Sep 17 00:00:00 2001
From: "tryghost-renovate[bot]"
<269725441+tryghost-renovate[bot]@users.noreply.github.com>
Date: Fri, 14 Aug 2026 02:45:18 +0000
Subject: [PATCH 11/13] Update dependency dompurify to v3.4.13 (#29976)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [dompurify](https://redirect.github.com/cure53/DOMPurify) | [`3.4.11`
→ `3.4.13`](https://renovatebot.com/diffs/npm/dompurify/3.4.11/3.4.13) |

|

|
---
### Release Notes
cure53/DOMPurify (dompurify)
###
[`v3.4.13`](https://redirect.github.com/cure53/DOMPurify/releases/tag/3.4.13):
DOMPurify 3.4.13
[Compare
Source](https://redirect.github.com/cure53/DOMPurify/compare/3.4.12...3.4.13)
- Fixed an issue with hook removal during `IN_PLACE` sanitization,
thanks [@koyokr](https://redirect.github.com/koyokr)
- Fixed an issue with hooks potentially bypassing the clone guard,
thanks [@AkshayjainG](https://redirect.github.com/AkshayjainG)
- Fixed an issue with DOM clobbering via `ownerDocument` during
`IN_PLACE`, thanks
[@AkshayjainG](https://redirect.github.com/AkshayjainG)
- Bumped several dependencies where possible
###
[`v3.4.12`](https://redirect.github.com/cure53/DOMPurify/releases/tag/3.4.12):
DOMPurify 3.4.12
[Compare
Source](https://redirect.github.com/cure53/DOMPurify/compare/3.4.11...3.4.12)
- Fixed an issue where a hook would not get called for custom elements,
thanks [@Rikuxx0](https://redirect.github.com/Rikuxx0)
- Hardened the handling of hooks removing elements,
[@mkrause-bee360](https://redirect.github.com/mkrause-bee360)
- Added support for a few new SVG attributes, thanks
[@cbn-falias](https://redirect.github.com/cbn-falias) &
[@Develop-KIM](https://redirect.github.com/Develop-KIM)
- Hardened the handling of declarative partial updates
- Updated the documentation is several spots, README, wiki, etc.
- Bumped several dependencies where possible
---
### Configuration
📅 **Schedule**: (in timezone Etc/UTC)
- Branch creation
- Only on Sunday and Saturday (`* * * * 0,6`)
- Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`)
- Between 12:00 AM and 05:59 AM, Monday through Saturday (`* 0-5 * *
1-6`)
- Automerge
- Only on Sunday and Saturday (`* * * * 0,6`)
- Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`)
- Between 12:00 AM and 05:59 AM, Monday through Saturday (`* 0-5 * *
1-6`)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR has been generated by [Mend Renovate
CLI](https://redirect.github.com/renovatebot/renovate).
Co-authored-by: tryghost-renovate[bot] <269725441+tryghost-renovate[bot]@users.noreply.github.com>
---
.changeset/petite-forks-lick.md | 5 +++++
pnpm-lock.yaml | 20 ++++++++++----------
pnpm-workspace.yaml | 2 +-
3 files changed, 16 insertions(+), 11 deletions(-)
create mode 100644 .changeset/petite-forks-lick.md
diff --git a/.changeset/petite-forks-lick.md b/.changeset/petite-forks-lick.md
new file mode 100644
index 00000000000..2f762631c3a
--- /dev/null
+++ b/.changeset/petite-forks-lick.md
@@ -0,0 +1,5 @@
+---
+"@tryghost/koenig-lexical": patch
+---
+
+Updated dependencies
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3e545b28c8d..b27f6298a94 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -286,8 +286,8 @@ catalogs:
specifier: 2.0.3
version: 2.0.3
dompurify:
- specifier: 3.4.11
- version: 3.4.11
+ specifier: 3.4.13
+ version: 3.4.13
dotenv:
specifier: 17.4.2
version: 17.4.2
@@ -614,7 +614,7 @@ importers:
version: 2.1.1
dompurify:
specifier: 'catalog:'
- version: 3.4.11
+ version: 3.4.13
html2canvas-pro:
specifier: 2.2.1
version: 2.2.1
@@ -1208,7 +1208,7 @@ importers:
dependencies:
dompurify:
specifier: 'catalog:'
- version: 3.4.11
+ version: 3.4.13
lodash:
specifier: 'catalog:'
version: 4.18.1
@@ -1648,7 +1648,7 @@ importers:
version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10)
dompurify:
specifier: 'catalog:'
- version: 3.4.11
+ version: 3.4.13
eslint:
specifier: 'catalog:'
version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2)
@@ -2406,7 +2406,7 @@ importers:
version: 2.0.3
dompurify:
specifier: 'catalog:'
- version: 3.4.11
+ version: 3.4.13
downsize-cjs:
specifier: 1.1.2
version: 1.1.2
@@ -3562,7 +3562,7 @@ importers:
version: 10.0.4
dompurify:
specifier: 'catalog:'
- version: 3.4.11
+ version: 3.4.13
dotenv:
specifier: 'catalog:'
version: 17.4.2
@@ -12970,8 +12970,8 @@ packages:
resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
engines: {node: '>= 4'}
- dompurify@3.4.11:
- resolution: {integrity: sha512-zhlUV12GsaRzMsf9q5M254YhA4+VuF0fG+QFqu6aYpoGlKtz+w8//jBcGVYBgQkR5GHjUomejY84AV+/uPbWdw==}
+ dompurify@3.4.13:
+ resolution: {integrity: sha512-2vmYIoqjze2d+kakP8S/nS5shfsl587kzwEjcGlTdiksUVgFHnFCsLYDVj/JNqJVOQZGSYBTmuycv0PodwmnMQ==}
domutils@1.5.1:
resolution: {integrity: sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==}
@@ -33737,7 +33737,7 @@ snapshots:
dependencies:
domelementtype: 2.3.0
- dompurify@3.4.11:
+ dompurify@3.4.13:
optionalDependencies:
'@types/trusted-types': 2.0.7
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index e883725736e..a888ea30e45 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -129,7 +129,7 @@ catalog:
cross-fetch: 4.1.0
dependency-cruiser: ^18.1.1
dequal: 2.0.3
- dompurify: 3.4.11
+ dompurify: 3.4.13
dotenv: 17.4.2
entities: 4.5.0
esbuild: 0.28.2
From 8a0e0881625edc2c29225b6a3f62e636b1b26b31 Mon Sep 17 00:00:00 2001
From: "tryghost-renovate[bot]"
<269725441+tryghost-renovate[bot]@users.noreply.github.com>
Date: Fri, 14 Aug 2026 03:10:52 +0000
Subject: [PATCH 12/13] Update dependency eslint-plugin-react-refresh to v0.5.4
(#29977)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
|
[eslint-plugin-react-refresh](https://redirect.github.com/ArnaudBarre/eslint-plugin-react-refresh)
| [`0.5.3` →
`0.5.4`](https://renovatebot.com/diffs/npm/eslint-plugin-react-refresh/0.5.3/0.5.4)
|

|

|
---
### Release Notes
ArnaudBarre/eslint-plugin-react-refresh
(eslint-plugin-react-refresh)
###
[`v0.5.4`](https://redirect.github.com/ArnaudBarre/eslint-plugin-react-refresh/blob/HEAD/CHANGELOG.md#054)
[Compare
Source](https://redirect.github.com/ArnaudBarre/eslint-plugin-react-refresh/compare/v0.5.3...v0.5.4)
- Add `instant` to `allowExportNames` in Next config
[#112](https://redirect.github.com/ArnaudBarre/eslint-plugin-react-refresh/pull/112)
---
### Configuration
📅 **Schedule**: (in timezone Etc/UTC)
- Branch creation
- Only on Sunday and Saturday (`* * * * 0,6`)
- Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`)
- Between 12:00 AM and 05:59 AM, Monday through Saturday (`* 0-5 * *
1-6`)
- Automerge
- Only on Sunday and Saturday (`* * * * 0,6`)
- Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`)
- Between 12:00 AM and 05:59 AM, Monday through Saturday (`* 0-5 * *
1-6`)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR has been generated by [Mend
Renovate](https://redirect.github.com/renovatebot/renovate).
Co-authored-by: tryghost-renovate[bot] <269725441+tryghost-renovate[bot]@users.noreply.github.com>
---
.changeset/swift-guests-grin.md | 5 +++++
pnpm-lock.yaml | 16 ++++++++--------
pnpm-workspace.yaml | 2 +-
3 files changed, 14 insertions(+), 9 deletions(-)
create mode 100644 .changeset/swift-guests-grin.md
diff --git a/.changeset/swift-guests-grin.md b/.changeset/swift-guests-grin.md
new file mode 100644
index 00000000000..f26419f3739
--- /dev/null
+++ b/.changeset/swift-guests-grin.md
@@ -0,0 +1,5 @@
+---
+"@tryghost/kg-unsplash-selector": patch
+---
+
+Updated dependencies
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b27f6298a94..39fe47bccc3 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -310,8 +310,8 @@ catalogs:
specifier: 5.2.0
version: 5.2.0
eslint-plugin-react-refresh:
- specifier: 0.5.3
- version: 0.5.3
+ specifier: 0.5.4
+ version: 0.5.4
eslint-plugin-tailwindcss:
specifier: 4.0.4
version: 4.0.4
@@ -2059,7 +2059,7 @@ importers:
version: 5.2.0(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))
eslint-plugin-react-refresh:
specifier: 'catalog:'
- version: 0.5.3(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))
+ version: 0.5.4(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))
eslint-plugin-storybook:
specifier: 10.4.6
version: 10.4.6(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)
@@ -3330,7 +3330,7 @@ importers:
version: 5.2.0(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))
eslint-plugin-react-refresh:
specifier: 'catalog:'
- version: 0.5.3(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))
+ version: 0.5.4(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))
eslint-plugin-tailwindcss:
specifier: catalog:tailwind3
version: 3.18.3(tailwindcss@3.4.19(tsx@4.23.12)(yaml@2.9.0))
@@ -13868,8 +13868,8 @@ packages:
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
- eslint-plugin-react-refresh@0.5.3:
- resolution: {integrity: sha512-5EMmLCV98Pi4o/f/3DP/v/tNqLHMIc9I8LKClNDWhZ9JTho89/kQcitCXQBMG7sAfVRK0Ie3T2EDOzp1YXYiVA==}
+ eslint-plugin-react-refresh@0.5.4:
+ resolution: {integrity: sha512-7bqTKz7T0r+HKWFarNXByDE9/5+73wI2ru+M3zuqGbR7s/b/5/pQJXZoufWlrngqGqoZto73ZkGumCdLxk+4rw==}
peerDependencies:
eslint: ^9 || ^10
@@ -35759,11 +35759,11 @@ snapshots:
dependencies:
eslint: 9.39.4(jiti@2.7.0)(supports-color@10.2.2)
- eslint-plugin-react-refresh@0.5.3(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2)):
+ eslint-plugin-react-refresh@0.5.4(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2)):
dependencies:
eslint: 9.39.4(jiti@1.21.7)(supports-color@10.2.2)
- eslint-plugin-react-refresh@0.5.3(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2)):
+ eslint-plugin-react-refresh@0.5.4(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2)):
dependencies:
eslint: 9.39.4(jiti@2.7.0)(supports-color@10.2.2)
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index a888ea30e45..191f61edb85 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -137,7 +137,7 @@ catalog:
eslint-plugin-ghost: 3.5.0
eslint-plugin-react: 7.37.5
eslint-plugin-react-hooks: 5.2.0
- eslint-plugin-react-refresh: 0.5.3
+ eslint-plugin-react-refresh: 0.5.4
eslint-plugin-tailwindcss: 4.0.4
fs-extra: 11.3.6
glob: 13.0.6
From 407e032dc77e6f738a4f9a79c1cf9f0b2f6466d1 Mon Sep 17 00:00:00 2001
From: "tryghost-renovate[bot]"
<269725441+tryghost-renovate[bot]@users.noreply.github.com>
Date: Fri, 14 Aug 2026 03:16:42 +0000
Subject: [PATCH 13/13] Update Types packages (#29589)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
|
[@types/lodash](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/lodash)
([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash))
| [`4.17.24` →
`4.17.25`](https://renovatebot.com/diffs/npm/@types%2flodash/4.17.24/4.17.25)
|

|

|
|
[@types/semver](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/semver)
([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/semver))
| [`7.7.1` →
`7.8.0`](https://renovatebot.com/diffs/npm/@types%2fsemver/7.7.1/7.8.0)
|

|

|
---
### Configuration
📅 **Schedule**: (in timezone Etc/UTC)
- Branch creation
- Only on Sunday and Saturday (`* * * * 0,6`)
- Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`)
- Between 12:00 AM and 05:59 AM, Monday through Saturday (`* 0-5 * *
1-6`)
- Automerge
- Only on Sunday and Saturday (`* * * * 0,6`)
- Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`)
- Between 12:00 AM and 05:59 AM, Monday through Saturday (`* 0-5 * *
1-6`)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR has been generated by [Mend
Renovate](https://redirect.github.com/renovatebot/renovate).
Co-authored-by: tryghost-renovate[bot] <269725441+tryghost-renovate[bot]@users.noreply.github.com>
---
.changeset/four-rings-relate.md | 6 ++++
ghost/core/package.json | 2 +-
koenig/kg-markdown-html-renderer/package.json | 2 +-
koenig/kg-utils/package.json | 2 +-
pnpm-lock.yaml | 28 ++++++-------------
5 files changed, 18 insertions(+), 22 deletions(-)
create mode 100644 .changeset/four-rings-relate.md
diff --git a/.changeset/four-rings-relate.md b/.changeset/four-rings-relate.md
new file mode 100644
index 00000000000..f2796b8087f
--- /dev/null
+++ b/.changeset/four-rings-relate.md
@@ -0,0 +1,6 @@
+---
+"@tryghost/kg-utils": patch
+"@tryghost/kg-markdown-html-renderer": patch
+---
+
+Updated dependencies
diff --git a/ghost/core/package.json b/ghost/core/package.json
index e74043a7baa..379db371e87 100644
--- a/ghost/core/package.json
+++ b/ghost/core/package.json
@@ -256,7 +256,7 @@
"@types/js-yaml": "4.0.9",
"@types/jsdom": "28.0.3",
"@types/jsonwebtoken": "9.0.10",
- "@types/lodash": "4.17.24",
+ "@types/lodash": "4.17.25",
"@types/lodash-es": "4.17.12",
"@types/mime-types": "3.0.1",
"@types/nconf": "catalog:",
diff --git a/koenig/kg-markdown-html-renderer/package.json b/koenig/kg-markdown-html-renderer/package.json
index 304e7a5ac91..55879fed490 100644
--- a/koenig/kg-markdown-html-renderer/package.json
+++ b/koenig/kg-markdown-html-renderer/package.json
@@ -41,7 +41,7 @@
"@eslint/js": "catalog:",
"@types/markdown-it": "14.1.2",
"@types/node": "catalog:",
- "@types/semver": "7.7.1",
+ "@types/semver": "7.8.0",
"@vitest/coverage-v8": "catalog:",
"eslint-plugin-ghost": "catalog:",
"@typescript/native": "catalog:",
diff --git a/koenig/kg-utils/package.json b/koenig/kg-utils/package.json
index ab7ecc49850..4d408a7bc5c 100644
--- a/koenig/kg-utils/package.json
+++ b/koenig/kg-utils/package.json
@@ -37,7 +37,7 @@
"devDependencies": {
"@eslint/js": "catalog:",
"@types/node": "catalog:",
- "@types/semver": "7.7.1",
+ "@types/semver": "7.8.0",
"@vitest/coverage-v8": "catalog:",
"eslint-plugin-ghost": "catalog:",
"@typescript/native": "catalog:",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 39fe47bccc3..93ae179c56b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -2679,8 +2679,8 @@ importers:
specifier: 9.0.10
version: 9.0.10
'@types/lodash':
- specifier: 4.17.24
- version: 4.17.24
+ specifier: 4.17.25
+ version: 4.17.25
'@types/lodash-es':
specifier: 4.17.12
version: 4.17.12
@@ -3253,8 +3253,8 @@ importers:
specifier: 'catalog:'
version: 22.20.1
'@types/semver':
- specifier: 7.7.1
- version: 7.7.1
+ specifier: 7.8.0
+ version: 7.8.0
'@typescript/native':
specifier: 'catalog:'
version: typescript@7.0.2
@@ -3378,8 +3378,8 @@ importers:
specifier: 'catalog:'
version: 22.20.1
'@types/semver':
- specifier: 7.7.1
- version: 7.7.1
+ specifier: 7.8.0
+ version: 7.8.0
'@typescript/native':
specifier: 'catalog:'
version: typescript@7.0.2
@@ -9523,9 +9523,6 @@ packages:
'@types/lodash-es@4.17.12':
resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
- '@types/lodash@4.17.24':
- resolution: {integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==}
-
'@types/lodash@4.17.25':
resolution: {integrity: sha512-+K1NIO8I+F9/wNulfVvu23QYd0Pe9/OCqRrim4NoYIf1VoEDL90Ve4ClzpyqBLc7NpGGWRvYNCKZ1BE/Jpf8dQ==}
@@ -9645,9 +9642,6 @@ packages:
'@types/scheduler@0.16.8':
resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==}
- '@types/semver@7.7.1':
- resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==}
-
'@types/semver@7.8.0':
resolution: {integrity: sha512-1mAINjtQCXXeLkJ9ehXkwOcBpqtLxiVtKhpUf83DdRNdQKV0iXZpaHYqRr7nj+wvxuJzoAmAwXI+sCNMv1CzLQ==}
@@ -28795,7 +28789,7 @@ snapshots:
dependencies:
'@types/bluebird': 3.5.42
'@types/create-error': 0.3.33
- '@types/lodash': 4.17.24
+ '@types/lodash': 4.17.25
knex: 0.21.21(mysql2@3.22.5(@types/node@22.20.1))(supports-color@10.2.2)
transitivePeerDependencies:
- mssql
@@ -29018,9 +29012,7 @@ snapshots:
'@types/lodash-es@4.17.12':
dependencies:
- '@types/lodash': 4.17.24
-
- '@types/lodash@4.17.24': {}
+ '@types/lodash': 4.17.25
'@types/lodash@4.17.25': {}
@@ -29142,8 +29134,6 @@ snapshots:
'@types/scheduler@0.16.8': {}
- '@types/semver@7.7.1': {}
-
'@types/semver@7.8.0': {}
'@types/send@0.17.6':
@@ -46620,7 +46610,7 @@ snapshots:
yup@0.32.9:
dependencies:
'@babel/runtime': 7.29.7
- '@types/lodash': 4.17.24
+ '@types/lodash': 4.17.25
lodash: 4.18.1
lodash-es: 4.18.1
nanoclone: 0.2.1