Ghost/ghost/core/package.json

239 lines
9.2 KiB
JSON
Raw Normal View History

{
"name": "ghost",
2023-02-03 16:41:45 +03:00
"version": "5.33.6",
"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": {
"start": "node index",
"setup": "knex-migrator init",
"build": "npm pack --pack-destination ../..",
"test": "yarn test:unit",
"test:single": "mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js --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": "mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js './test/unit' --timeout=2000",
"test:integration": "mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js './test/integration' --timeout=10000",
"test:e2e": "mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js './test/e2e-api' './test/e2e-frontend' './test/e2e-server' './test/e2e-webhooks' --timeout=15000",
"test:regression": "mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js './test/regression' --timeout=60000",
"test:browser": "NODE_ENV=testing-browser playwright test test/e2e-browser",
"test:browser:single": "NODE_ENV=testing-browser playwright test",
"test:browser:setup": "npx playwright install",
"test:browser:record": "NODE_ENV=testing-browser yarn start record-test",
"test:ci": "c8 -c ./.c8rc.e2e.json yarn test:ci:base",
"test:ci:base": "yarn test:e2e -b && yarn test:integration -b && yarn test:regression -b",
"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 --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'",
"lint:shared": "eslint --ignore-path .eslintignore 'core/shared/**/*.js'",
"lint:frontend": "eslint --ignore-path .eslintignore 'core/frontend/**/*.js'",
"lint:test": "eslint -c test/.eslintrc.js --ignore-path test/.eslintignore 'test/**/*.js'",
"lint:code": "yarn lint:server && yarn lint:shared && yarn lint:frontend",
"lint": "yarn lint:server && yarn lint:shared && yarn lint:frontend && yarn lint:test",
"build:css": "postcss core/frontend/public/ghost.css --no-map --use cssnano -o core/frontend/public/ghost.min.css",
"prepack": "yarn workspace ghost-admin run build:prod && yarn build:css && npx --yes daniellockyer/monobundle"
},
"engines": {
"node": "^14.18.0 || ^16.13.0 || ^18.12.1",
"cli": "^1.17.0"
},
"dependencies": {
"@sentry/node": "7.11.1",
"@tryghost/adapter-base-cache": "0.1.3",
"@tryghost/adapter-manager": "0.0.0",
"@tryghost/admin-api-schema": "4.2.1",
"@tryghost/api-framework": "0.0.0",
"@tryghost/api-version-compatibility-service": "0.0.0",
"@tryghost/audience-feedback": "0.0.0",
"@tryghost/bookshelf-plugins": "0.6.3",
"@tryghost/bootstrap-socket": "0.0.0",
"@tryghost/color-utils": "0.1.22",
"@tryghost/config-url-helpers": "1.0.4",
"@tryghost/constants": "0.0.0",
"@tryghost/custom-theme-settings-service": "0.0.0",
"@tryghost/data-generator": "0.0.0",
"@tryghost/database-info": "0.3.14",
"@tryghost/debug": "0.1.21",
"@tryghost/domain-events": "0.0.0",
"@tryghost/dynamic-routing-events": "0.0.0",
"@tryghost/email-analytics-provider-mailgun": "0.0.0",
"@tryghost/email-analytics-service": "0.0.0",
"@tryghost/email-content-generator": "0.0.0",
"@tryghost/email-mock-receiver": "0.1.0",
2022-11-25 18:00:47 +03:00
"@tryghost/email-service": "0.0.0",
"@tryghost/email-suppression-list": "0.0.0",
"@tryghost/errors": "1.2.20",
"@tryghost/express-dynamic-redirects": "0.0.0",
"@tryghost/helpers": "1.1.75",
"@tryghost/html-to-plaintext": "0.0.0",
"@tryghost/http-cache-utils": "0.1.6",
"@tryghost/image-transform": "1.2.3",
"@tryghost/importer-revue": "0.0.0",
"@tryghost/job-manager": "0.0.0",
"@tryghost/kg-card-factory": "4.0.0",
"@tryghost/kg-default-atoms": "4.0.0",
"@tryghost/kg-default-cards": "6.0.0",
"@tryghost/kg-default-nodes": "0.0.1",
"@tryghost/kg-lexical-html-renderer": "0.0.11",
"@tryghost/kg-mobiledoc-html-renderer": "6.0.0",
"@tryghost/limit-service": "1.2.4",
"@tryghost/link-redirects": "0.0.0",
"@tryghost/link-replacer": "0.0.0",
"@tryghost/link-tracking": "0.0.0",
"@tryghost/logging": "2.4.0",
"@tryghost/magic-link": "0.0.0",
"@tryghost/mailgun-client": "0.0.0",
Added member attribution events and storage (#15243) refs https://github.com/TryGhost/Team/issues/1808 refs https://github.com/TryGhost/Team/issues/1809 refs https://github.com/TryGhost/Team/issues/1820 refs https://github.com/TryGhost/Team/issues/1814 ### Changes in `member-events` package - Added MemberCreatedEvent (event, not model) - Added SubscriptionCreatedEvent (event, not model) ### Added `member-attribution` package (new) - Added the AttributionBuilder class which is able to convert a url history to an attribution object (exposed as getAttribution on the service itself, which handles the dependencies) ``` [{ "path": "/", "time": 123 }] ``` to ``` { "url": "/", "id": null, "type": "url" } ``` - event handler listens for MemberCreatedEvent and SubscriptionCreatedEvent and creates the corresponding models in the database. ### Changes in `members-api` package - Added urlHistory to `sendMagicLink` endpoint body + convert the urlHistory to an attribution object that is stored in the tokenData of the magic link (sent by Portal in this PR: https://github.com/TryGhost/Portal/pull/256). - Added urlHistory to `createCheckoutSession` endpoint + convert the urlHistory to attribution keys that are saved in the Stripe Session metadata (sent by Portal in this PR: https://github.com/TryGhost/Portal/pull/256). - Added attribution data property to member repository's create method (when a member is created) - Dispatch MemberCreatedEvent with attribution ### Changes in `members-stripe-service` package (`ghost/stripe`) - Dispatch SubscriptionCreatedEvent in WebhookController on subscription checkout (with attribution from session metadata)
2022-08-18 18:38:42 +03:00
"@tryghost/member-attribution": "0.0.0",
"@tryghost/member-events": "0.0.0",
"@tryghost/members-api": "0.0.0",
"@tryghost/members-csv": "0.0.0",
"@tryghost/members-events-service": "0.0.0",
"@tryghost/members-importer": "0.0.0",
"@tryghost/members-offers": "0.0.0",
"@tryghost/members-ssr": "0.0.0",
"@tryghost/members-stripe-service": "0.0.0",
"@tryghost/metrics": "1.0.20",
"@tryghost/minifier": "0.0.0",
"@tryghost/mw-api-version-mismatch": "0.0.0",
"@tryghost/mw-cache-control": "0.0.0",
"@tryghost/mw-error-handler": "0.0.0",
"@tryghost/mw-session-from-token": "0.0.0",
"@tryghost/mw-vhost": "0.0.0",
"@tryghost/nodemailer": "0.3.31",
"@tryghost/nql": "0.11.0",
"@tryghost/oembed-service": "0.0.0",
"@tryghost/package-json": "0.0.0",
"@tryghost/pretty-cli": "1.2.33",
"@tryghost/promise": "0.2.1",
"@tryghost/request": "0.1.34",
"@tryghost/security": "0.0.0",
"@tryghost/session-service": "0.0.0",
"@tryghost/settings-path-manager": "0.0.0",
"@tryghost/social-urls": "0.1.34",
2022-08-26 18:00:32 +03:00
"@tryghost/staff-service": "0.0.0",
"@tryghost/stats-service": "0.0.0",
"@tryghost/string": "0.2.2",
"@tryghost/tiers": "0.0.0",
"@tryghost/tpl": "0.1.21",
"@tryghost/update-check-service": "0.0.0",
"@tryghost/url-utils": "4.3.0",
"@tryghost/validator": "0.1.31",
"@tryghost/verification-trigger": "0.0.0",
"@tryghost/version": "0.1.19",
"@tryghost/webmentions": "0.0.0",
"@tryghost/zip": "1.1.31",
"amperize": "0.6.1",
"analytics-node": "6.2.0",
"bluebird": "3.7.2",
"body-parser": "1.20.1",
"bookshelf": "1.2.0",
"bookshelf-relations": "2.5.1",
"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.0.0",
"cors": "2.8.5",
"downsize": "0.0.8",
2022-10-10 05:33:02 +03:00
"express": "4.18.2",
"express-brute": "1.0.1",
"express-hbs": "2.4.0",
"express-jwt": "7.7.7",
"express-lazy-router": "1.0.4",
"express-query-boolean": "2.0.0",
"express-session": "1.17.3",
2022-12-12 20:15:55 +03:00
"fs-extra": "11.1.0",
"ghost-storage-base": "1.0.0",
2023-01-16 03:20:18 +03:00
"glob": "8.1.0",
"got": "9.6.0",
"gscan": "4.36.0",
"human-number": "2.0.1",
"image-size": "1.0.2",
"intl": "1.2.5",
"intl-messageformat": "5.4.3",
"js-yaml": "4.1.0",
"jsonpath": "1.1.1",
"jsonwebtoken": "8.5.1",
2022-08-09 08:03:08 +03:00
"juice": "8.1.0",
"keypair": "1.0.4",
2023-01-23 05:01:58 +03:00
"knex": "2.4.2",
"knex-migrator": "5.1.1",
"lodash": "4.17.21",
"luxon": "3.2.1",
"moment": "2.24.0",
"moment-timezone": "0.5.23",
"multer": "1.4.4",
2023-01-31 08:51:15 +03:00
"mysql2": "3.1.0",
"nconf": "0.12.0",
"node-jose": "2.1.1",
"oembed-parser": "1.4.9",
"path-match": "1.2.4",
"probe-image-size": "7.2.3",
"rss": "1.2.2",
"sanitize-html": "2.9.0",
2022-10-06 01:30:32 +03:00
"semver": "7.3.8",
"stoppable": "1.1.0",
2022-09-06 02:31:04 +03:00
"uuid": "9.0.0",
"xml": "1.0.1"
},
"optionalDependencies": {
"@tryghost/html-to-mobiledoc": "2.0.0",
2022-12-12 20:08:22 +03:00
"sqlite3": "5.1.4"
},
"devDependencies": {
"@playwright/test": "1.30.0",
"@tryghost/express-test": "0.13.0",
"@tryghost/webhook-mock-receiver": "0.2.3",
"@types/common-tags": "1.8.1",
"c8": "7.12.0",
"cli-progress": "3.11.2",
2022-10-28 17:13:51 +03:00
"cssnano": "5.1.14",
2023-01-31 04:19:12 +03:00
"eslint": "8.33.0",
2022-12-05 06:33:18 +03:00
"expect": "^29.0.0",
"html-validate": "7.13.1",
🐛 Fixed storing original files for images (#16117) fixes https://github.com/TryGhost/Team/issues/481 This change fixes an issue when multiple images with the same name are uploaded in parallel. The current system does not guarantee that the original filename is stored under NAME+`_o`, because the upload for the original file and the resized file are happening in parallel. Solution: - Wait for the storage of the resized image (= the image without the _o suffix) before storing the original file. - When that is stored, use the generated file name of the stored image to generate the filename with the _o suffix. This way, it will always match and we don't risk both files to have a different number suffix. We'll also set the `targetDir` argument when saving the file, to avoid storing the original file in a different directory (when uploading a file around midnight both files could be stored in 2023/01 and 2023/02). Some extra optimisations needed with this fix: - Previously when uploading image.jpg, while it already exists, it would store two filenames on e.g., `image-3.jpg` and `image_o-3.jpg`. Note the weird positioning of `_o`. This probably caused bugs when uploading files named `image-3.jpg`, which would store the original in `image-3_o.jpg`, but this original would never be used by the handle-image-sizes middleware (it would look for `image_o-3.jpg`). This fix would solve this weird naming issue, and make it more consistent. But we need to make sure our middlewares (including handle-image-sizes) will be able to handle both file locations to remain compatible with the old format. This isn't additional work, because it would fix the old bug too. - Prevent uploading files that end with `_o`, e.g. by automatically stripping that suffix from uploaded files. To prevent collisions. Advantage(s): - We keep the original file name, which is better for SEO. - No changes required to the storage adapters. Downside(s): - The storage of both files will nog happen parallel any longer. But I expect the performance implications to be minimal. - Changes to the routing: normalize middleware is removed
2023-01-30 18:40:50 +03:00
"form-data": "^4.0.0",
2022-10-24 05:41:53 +03:00
"inquirer": "8.2.5",
2023-01-13 01:06:45 +03:00
"jwks-rsa": "3.0.1",
2022-12-12 16:20:22 +03:00
"mocha": "10.2.0",
"mocha-slow-test-reporter": "0.1.2",
"mock-knex": "TryGhost/mock-knex#8ecb8c227bf463c991c3d820d33f59efc3ab9682",
2023-01-11 00:36:44 +03:00
"nock": "13.3.0",
"papaparse": "5.3.2",
2023-01-17 15:27:23 +03:00
"postcss": "8.4.21",
"postcss-cli": "10.1.0",
"rewire": "6.0.0",
"should": "13.2.3",
2022-11-07 23:39:48 +03:00
"sinon": "14.0.2",
2022-12-08 20:16:37 +03:00
"supertest": "6.3.3",
"tmp": "0.2.1",
"toml": "3.0.0"
},
"resolutions": {
"@elastic/elasticsearch": "8.5.0",
"@tryghost/logging": "2.4.0",
"moment": "2.24.0",
"moment-timezone": "0.5.23"
}
}