{ "name": "ghost", "version": "5.94.2", "description": "The professional publishing platform", "author": "Ghost Foundation", "homepage": "https://ghost.org", "keywords": [ "ghost", "blog", "cms", "headless", "content", "markdown" ], "repository": { "type": "git", "url": "git://github.com/TryGhost/Ghost.git" }, "bugs": "https://github.com/TryGhost/Ghost/issues", "contributors": "https://github.com/TryGhost/Ghost/graphs/contributors", "license": "MIT", "scripts": { "archive": "npm pack", "dev": "node --watch index.js", "build:assets": "postcss core/frontend/public/ghost.css --no-map --use cssnano -o core/frontend/public/ghost.min.css", "test": "yarn test:unit", "test:base": "mocha --reporter dot --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js", "test:single": "yarn test:base --timeout=60000", "test:all": "yarn test:unit && yarn test:integration && yarn test:e2e && yarn lint", "test:debug": "DEBUG=ghost:test* yarn test", "test:unit": "c8 yarn test:unit:base", "test:unit:base": "yarn test:base './test/unit' --timeout=2000", "test:integration": "yarn test:base './test/integration' --timeout=10000", "test:e2e": "yarn test:base ./test/e2e-* --timeout=15000", "test:regression": "yarn test:base './test/regression' --timeout=60000", "test:browser": "NODE_ENV=testing-browser playwright test", "test:browser:admin": "NODE_ENV=testing-browser playwright test test/e2e-browser --project=admin", "test:browser:portal": "NODE_ENV=testing-browser playwright test test/e2e-browser --project=portal", "test:browser:setup": "npx playwright install", "test:ci:e2e": "c8 -c ./.c8rc.e2e.json -o coverage-e2e yarn test:e2e -b --retries=2 --reporter=./test/utils/mocha-retry-reporter.js", "test:ci:regression": "yarn test:regression -b --retries=2 --reporter=./test/utils/mocha-retry-reporter.js", "test:ci:integration": "c8 -c ./.c8rc.e2e.json -o coverage-integration --lines 57 --functions 47 --branches 77 --statements 57 yarn test:integration -b --retries=2 --reporter=./test/utils/mocha-retry-reporter.js", "test:unit:slow": "yarn test:unit --reporter=mocha-slow-test-reporter", "test:int:slow": "yarn test:integration --reporter=mocha-slow-test-reporter", "test:e2e:slow": "yarn test:e2e --reporter=mocha-slow-test-reporter", "test:reg:slow": "mocha --reporter dot --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js './test/regression' --timeout=60000 --reporter=mocha-slow-test-reporter", "lint:server": "eslint --ignore-path .eslintignore 'core/server/**/*.js' 'core/*.js' '*.js' --cache", "lint:shared": "eslint --ignore-path .eslintignore 'core/shared/**/*.js' --cache", "lint:frontend": "eslint --ignore-path .eslintignore 'core/frontend/**/*.js' --cache", "lint:test": "eslint -c test/.eslintrc.js --ignore-path test/.eslintignore 'test/**/*.js' --cache", "lint:code": "yarn lint:server && yarn lint:shared && yarn lint:frontend", "lint": "yarn lint:server && yarn lint:shared && yarn lint:frontend && yarn lint:test", "prepack": "node monobundle.js" }, "engines": { "node": "^18.12.1 || ^20.11.1", "cli": "^1.26.0" }, "dependencies": { "@extractus/oembed-extractor": "3.2.1", "@opentelemetry/api": "1.9.0", "@opentelemetry/exporter-prometheus": "0.52.1", "@opentelemetry/instrumentation-runtime-node": "0.6.0", "@opentelemetry/sdk-metrics": "1.25.1", "@opentelemetry/sdk-node": "0.52.1", "@opentelemetry/sdk-trace-node": "1.25.1", "@sentry/node": "7.119.0", "@slack/webhook": "7.0.3", "@tryghost/adapter-base-cache": "0.1.12", "@tryghost/adapter-cache-redis": "file:components/tryghost-adapter-cache-redis-5.94.2.tgz", "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.94.2.tgz", "@tryghost/admin-api-schema": "4.5.5", "@tryghost/announcement-bar-settings": "file:components/tryghost-announcement-bar-settings-5.94.2.tgz", "@tryghost/api-framework": "file:components/tryghost-api-framework-5.94.2.tgz", "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.94.2.tgz", "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.94.2.tgz", "@tryghost/bookshelf-plugins": "0.6.24", "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.94.2.tgz", "@tryghost/collections": "file:components/tryghost-collections-5.94.2.tgz", "@tryghost/color-utils": "0.2.2", "@tryghost/config-url-helpers": "1.0.12", "@tryghost/constants": "file:components/tryghost-constants-5.94.2.tgz", "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.94.2.tgz", "@tryghost/data-generator": "file:components/tryghost-data-generator-5.94.2.tgz", "@tryghost/database-info": "0.3.27", "@tryghost/debug": "0.1.32", "@tryghost/domain-events": "file:components/tryghost-domain-events-5.94.2.tgz", "@tryghost/donations": "file:components/tryghost-donations-5.94.2.tgz", "@tryghost/dynamic-routing-events": "file:components/tryghost-dynamic-routing-events-5.94.2.tgz", "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.94.2.tgz", "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.94.2.tgz", "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.94.2.tgz", "@tryghost/email-mock-receiver": "0.3.8", "@tryghost/email-service": "file:components/tryghost-email-service-5.94.2.tgz", "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.94.2.tgz", "@tryghost/errors": "1.3.5", "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.94.2.tgz", "@tryghost/external-media-inliner": "file:components/tryghost-external-media-inliner-5.94.2.tgz", "@tryghost/ghost": "file:components/tryghost-ghost-5.94.2.tgz", "@tryghost/helpers": "1.1.90", "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.94.2.tgz", "@tryghost/http-cache-utils": "0.1.17", "@tryghost/i18n": "file:components/tryghost-i18n-5.94.2.tgz", "@tryghost/image-transform": "1.3.0", "@tryghost/importer-handler-content-files": "file:components/tryghost-importer-handler-content-files-5.94.2.tgz", "@tryghost/importer-revue": "file:components/tryghost-importer-revue-5.94.2.tgz", "@tryghost/job-manager": "file:components/tryghost-job-manager-5.94.2.tgz", "@tryghost/kg-card-factory": "5.0.5", "@tryghost/kg-converters": "1.0.7", "@tryghost/kg-default-atoms": "5.0.3", "@tryghost/kg-default-cards": "10.0.9", "@tryghost/kg-default-nodes": "1.1.18", "@tryghost/kg-html-to-lexical": "1.1.19", "@tryghost/kg-lexical-html-renderer": "1.1.21", "@tryghost/kg-mobiledoc-html-renderer": "7.0.6", "@tryghost/limit-service": "1.2.14", "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.94.2.tgz", "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.94.2.tgz", "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.94.2.tgz", "@tryghost/logging": "2.4.18", "@tryghost/magic-link": "file:components/tryghost-magic-link-5.94.2.tgz", "@tryghost/mail-events": "file:components/tryghost-mail-events-5.94.2.tgz", "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.94.2.tgz", "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.94.2.tgz", "@tryghost/member-events": "file:components/tryghost-member-events-5.94.2.tgz", "@tryghost/members-api": "file:components/tryghost-members-api-5.94.2.tgz", "@tryghost/members-csv": "file:components/tryghost-members-csv-5.94.2.tgz", "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.94.2.tgz", "@tryghost/members-importer": "file:components/tryghost-members-importer-5.94.2.tgz", "@tryghost/members-offers": "file:components/tryghost-members-offers-5.94.2.tgz", "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.94.2.tgz", "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.94.2.tgz", "@tryghost/mentions-email-report": "file:components/tryghost-mentions-email-report-5.94.2.tgz", "@tryghost/metrics": "1.0.34", "@tryghost/milestones": "file:components/tryghost-milestones-5.94.2.tgz", "@tryghost/minifier": "file:components/tryghost-minifier-5.94.2.tgz", "@tryghost/model-to-domain-event-interceptor": "file:components/tryghost-model-to-domain-event-interceptor-5.94.2.tgz", "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.94.2.tgz", "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.94.2.tgz", "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.94.2.tgz", "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.94.2.tgz", "@tryghost/mw-version-match": "file:components/tryghost-mw-version-match-5.94.2.tgz", "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.94.2.tgz", "@tryghost/nodemailer": "0.3.45", "@tryghost/nql": "0.12.5", "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.94.2.tgz", "@tryghost/package-json": "file:components/tryghost-package-json-5.94.2.tgz", "@tryghost/post-revisions": "file:components/tryghost-post-revisions-5.94.2.tgz", "@tryghost/posts-service": "file:components/tryghost-posts-service-5.94.2.tgz", "@tryghost/pretty-cli": "1.2.44", "@tryghost/promise": "0.3.12", "@tryghost/recommendations": "file:components/tryghost-recommendations-5.94.2.tgz", "@tryghost/request": "1.0.8", "@tryghost/security": "file:components/tryghost-security-5.94.2.tgz", "@tryghost/session-service": "file:components/tryghost-session-service-5.94.2.tgz", "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.94.2.tgz", "@tryghost/slack-notifications": "file:components/tryghost-slack-notifications-5.94.2.tgz", "@tryghost/social-urls": "0.1.43", "@tryghost/staff-service": "file:components/tryghost-staff-service-5.94.2.tgz", "@tryghost/stats-service": "file:components/tryghost-stats-service-5.94.2.tgz", "@tryghost/string": "0.2.12", "@tryghost/tiers": "file:components/tryghost-tiers-5.94.2.tgz", "@tryghost/tpl": "0.1.32", "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.94.2.tgz", "@tryghost/url-utils": "4.4.8", "@tryghost/validator": "0.2.14", "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.94.2.tgz", "@tryghost/version": "0.1.30", "@tryghost/webmentions": "file:components/tryghost-webmentions-5.94.2.tgz", "@tryghost/zip": "1.1.46", "amperize": "0.6.1", "body-parser": "1.20.3", "bookshelf": "1.2.0", "bookshelf-relations": "2.7.0", "brute-knex": "4.0.1", "bson-objectid": "2.0.4", "chalk": "4.1.2", "cheerio": "0.22.0", "common-tags": "1.8.2", "compression": "1.7.4", "connect-slashes": "1.4.0", "cookie-session": "2.1.0", "cors": "2.8.5", "downsize": "0.0.8", "express": "4.21.0", "express-brute": "1.0.1", "express-hbs": "2.5.0", "express-jwt": "8.4.1", "express-lazy-router": "1.0.6", "express-query-boolean": "2.0.0", "express-queue": "0.0.13", "express-session": "1.18.0", "fs-extra": "11.2.0", "ghost-storage-base": "1.0.0", "glob": "8.1.0", "got": "11.8.6", "gscan": "4.43.5", "human-number": "2.0.4", "image-size": "1.1.1", "intl": "1.2.5", "intl-messageformat": "5.4.3", "js-yaml": "4.1.0", "json-stable-stringify": "1.1.1", "jsonpath": "1.1.1", "jsonwebtoken": "8.5.1", "keypair": "1.0.4", "knex": "2.4.2", "knex-migrator": "5.2.1", "lib0": "0.2.94", "lodash": "4.17.21", "luxon": "3.5.0", "moment": "2.24.0", "moment-timezone": "0.5.45", "multer": "1.4.4", "mysql2": "3.11.0", "nconf": "0.12.1", "node-jose": "2.2.0", "path-match": "1.2.4", "probe-image-size": "7.2.3", "rss": "1.2.2", "sanitize-html": "2.13.0", "semver": "7.6.3", "stoppable": "1.1.0", "superagent": "5.1.0", "superagent-throttle": "1.0.1", "ws": "8.18.0", "xml": "1.0.1", "y-protocols": "1.0.6", "yjs": "13.6.19" }, "optionalDependencies": { "@sentry/profiling-node": "7.119.0", "@tryghost/html-to-mobiledoc": "3.1.2", "sqlite3": "5.1.7" }, "devDependencies": { "@actions/core": "1.10.1", "@playwright/test": "1.46.1", "@tryghost/express-test": "0.13.15", "@tryghost/webhook-mock-receiver": "0.2.14", "@types/common-tags": "1.8.4", "c8": "8.0.1", "cli-progress": "3.12.0", "cssnano": "7.0.4", "detect-indent": "6.1.0", "detect-newline": "3.1.0", "expect": "29.3.1", "find-root": "1.1.0", "form-data": "4.0.0", "inquirer": "8.2.6", "jwks-rsa": "3.1.0", "mocha": "10.2.0", "mocha-slow-test-reporter": "0.1.2", "mock-knex": "TryGhost/mock-knex#d8b93b1c20d4820323477f2c60db016ab3e73192", "nock": "13.3.3", "papaparse": "5.3.2", "postcss": "8.4.39", "postcss-cli": "11.0.0", "rewire": "6.0.0", "should": "13.2.3", "sinon": "15.2.0", "supertest": "6.3.3", "tmp": "0.2.1", "toml": "3.0.0" }, "resolutions": { "@tryghost/errors": "1.3.5", "@tryghost/logging": "2.4.18", "jackspeak": "2.1.1", "moment": "2.24.0", "moment-timezone": "0.5.45", "@tryghost/adapter-cache-memory-ttl": "file:components/tryghost-adapter-cache-memory-ttl-5.94.2.tgz", "@tryghost/adapter-cache-redis": "file:components/tryghost-adapter-cache-redis-5.94.2.tgz", "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.94.2.tgz", "@tryghost/announcement-bar-settings": "file:components/tryghost-announcement-bar-settings-5.94.2.tgz", "@tryghost/api-framework": "file:components/tryghost-api-framework-5.94.2.tgz", "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.94.2.tgz", "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.94.2.tgz", "@tryghost/bookshelf-repository": "file:components/tryghost-bookshelf-repository-5.94.2.tgz", "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.94.2.tgz", "@tryghost/collections": "file:components/tryghost-collections-5.94.2.tgz", "@tryghost/constants": "file:components/tryghost-constants-5.94.2.tgz", "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.94.2.tgz", "@tryghost/data-generator": "file:components/tryghost-data-generator-5.94.2.tgz", "@tryghost/domain-events": "file:components/tryghost-domain-events-5.94.2.tgz", "@tryghost/donations": "file:components/tryghost-donations-5.94.2.tgz", "@tryghost/dynamic-routing-events": "file:components/tryghost-dynamic-routing-events-5.94.2.tgz", "@tryghost/email-addresses": "file:components/tryghost-email-addresses-5.94.2.tgz", "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.94.2.tgz", "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.94.2.tgz", "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.94.2.tgz", "@tryghost/email-events": "file:components/tryghost-email-events-5.94.2.tgz", "@tryghost/email-service": "file:components/tryghost-email-service-5.94.2.tgz", "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.94.2.tgz", "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.94.2.tgz", "@tryghost/external-media-inliner": "file:components/tryghost-external-media-inliner-5.94.2.tgz", "@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-5.94.2.tgz", "@tryghost/ghost": "file:components/tryghost-ghost-5.94.2.tgz", "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.94.2.tgz", "@tryghost/i18n": "file:components/tryghost-i18n-5.94.2.tgz", "@tryghost/importer-handler-content-files": "file:components/tryghost-importer-handler-content-files-5.94.2.tgz", "@tryghost/importer-revue": "file:components/tryghost-importer-revue-5.94.2.tgz", "@tryghost/in-memory-repository": "file:components/tryghost-in-memory-repository-5.94.2.tgz", "@tryghost/job-manager": "file:components/tryghost-job-manager-5.94.2.tgz", "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.94.2.tgz", "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.94.2.tgz", "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.94.2.tgz", "@tryghost/magic-link": "file:components/tryghost-magic-link-5.94.2.tgz", "@tryghost/mail-events": "file:components/tryghost-mail-events-5.94.2.tgz", "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.94.2.tgz", "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.94.2.tgz", "@tryghost/member-events": "file:components/tryghost-member-events-5.94.2.tgz", "@tryghost/members-api": "file:components/tryghost-members-api-5.94.2.tgz", "@tryghost/members-csv": "file:components/tryghost-members-csv-5.94.2.tgz", "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.94.2.tgz", "@tryghost/members-importer": "file:components/tryghost-members-importer-5.94.2.tgz", "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.94.2.tgz", "@tryghost/mentions-email-report": "file:components/tryghost-mentions-email-report-5.94.2.tgz", "@tryghost/milestones": "file:components/tryghost-milestones-5.94.2.tgz", "@tryghost/minifier": "file:components/tryghost-minifier-5.94.2.tgz", "@tryghost/model-to-domain-event-interceptor": "file:components/tryghost-model-to-domain-event-interceptor-5.94.2.tgz", "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.94.2.tgz", "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.94.2.tgz", "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.94.2.tgz", "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.94.2.tgz", "@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-5.94.2.tgz", "@tryghost/mw-version-match": "file:components/tryghost-mw-version-match-5.94.2.tgz", "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.94.2.tgz", "@tryghost/nql-filter-expansions": "file:components/tryghost-nql-filter-expansions-5.94.2.tgz", "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.94.2.tgz", "@tryghost/members-offers": "file:components/tryghost-members-offers-5.94.2.tgz", "@tryghost/package-json": "file:components/tryghost-package-json-5.94.2.tgz", "@tryghost/members-payments": "file:components/tryghost-members-payments-5.94.2.tgz", "@tryghost/post-events": "file:components/tryghost-post-events-5.94.2.tgz", "@tryghost/post-revisions": "file:components/tryghost-post-revisions-5.94.2.tgz", "@tryghost/posts-service": "file:components/tryghost-posts-service-5.94.2.tgz", "@tryghost/recommendations": "file:components/tryghost-recommendations-5.94.2.tgz", "@tryghost/referrers": "file:components/tryghost-referrers-5.94.2.tgz", "@tryghost/security": "file:components/tryghost-security-5.94.2.tgz", "@tryghost/session-service": "file:components/tryghost-session-service-5.94.2.tgz", "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.94.2.tgz", "@tryghost/slack-notifications": "file:components/tryghost-slack-notifications-5.94.2.tgz", "@tryghost/staff-service": "file:components/tryghost-staff-service-5.94.2.tgz", "@tryghost/stats-service": "file:components/tryghost-stats-service-5.94.2.tgz", "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.94.2.tgz", "@tryghost/tiers": "file:components/tryghost-tiers-5.94.2.tgz", "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.94.2.tgz", "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.94.2.tgz", "@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-5.94.2.tgz", "@tryghost/webmentions": "file:components/tryghost-webmentions-5.94.2.tgz" }, "nx": { "targets": { "archive": { "dependsOn": [ "build:assets", "^build:ts", { "projects": [ "ghost-admin" ], "target": "build" } ] }, "dev": { "dependsOn": [ "^build:ts" ] } } } }