ghost 4.21.0 → 4.22.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/.eslintrc.js +6 -0
  2. package/Gruntfile.js +2 -0
  3. package/content/themes/casper/assets/built/screen.css +1 -1
  4. package/content/themes/casper/assets/built/screen.css.map +1 -1
  5. package/content/themes/casper/assets/css/screen.css +263 -50
  6. package/content/themes/casper/default.hbs +12 -3
  7. package/content/themes/casper/index.hbs +25 -23
  8. package/content/themes/casper/package.json +91 -2
  9. package/content/themes/casper/partials/post-card.hbs +1 -1
  10. package/content/themes/casper/post.hbs +18 -14
  11. package/content/themes/casper/yarn.lock +245 -192
  12. package/core/boot.js +8 -0
  13. package/core/bridge.js +14 -0
  14. package/core/built/assets/{chunk.3.065ee3c3bdf674bd81a4.js → chunk.3.324fd0cc598c73650219.js} +59 -59
  15. package/core/built/assets/{ghost-dark-1328db4a7dd128305646305a8731bcfe.css → ghost-dark-39fb496d051565531062d7e047d1c0b1.css} +1 -1
  16. package/core/built/assets/{ghost.min-5abc69c04ad1d5301a857e01009b9c05.css → ghost.min-4207edfc1ae0a3f9f6505ca00d20b0c0.css} +1 -1
  17. package/core/built/assets/{ghost.min-6c546c322127ae6d1d1b0ddbf34be75b.js → ghost.min-7da921f6c6cac3fe10da1ba104575440.js} +1775 -1897
  18. package/core/built/assets/{vendor.min-c6ef90bfd7eff256e10b85583bfe9a74.js → vendor.min-413f887176a041e6dbf88214ca9a7481.js} +6849 -6688
  19. package/core/frontend/helpers/asset.js +9 -1
  20. package/core/frontend/helpers/ghost_head.js +13 -1
  21. package/core/frontend/services/card-assets/index.js +16 -0
  22. package/core/frontend/services/card-assets/service.js +109 -0
  23. package/core/frontend/services/theme-engine/config/defaults.json +4 -1
  24. package/core/frontend/services/theme-engine/config/index.js +1 -1
  25. package/core/frontend/src/cards/css/bookmark.css +83 -0
  26. package/core/frontend/src/cards/css/button.css +30 -0
  27. package/core/frontend/src/cards/css/callout.css +12 -0
  28. package/core/frontend/src/cards/css/gallery.css +36 -0
  29. package/core/frontend/src/cards/css/nft.css +85 -0
  30. package/core/frontend/src/cards/js/gallery.js +8 -0
  31. package/core/frontend/web/middleware/serve-public-file.js +10 -1
  32. package/core/frontend/web/routes.js +0 -1
  33. package/core/frontend/web/site.js +13 -9
  34. package/core/server/adapters/storage/LocalFilesStorage.js +17 -0
  35. package/core/server/adapters/storage/LocalImagesStorage.js +51 -0
  36. package/core/server/adapters/storage/LocalMediaStorage.js +24 -0
  37. package/core/server/adapters/storage/{LocalFileStorage.js → LocalStorageBase.js} +64 -51
  38. package/core/server/adapters/storage/index.js +1 -1
  39. package/core/server/adapters/storage/utils.js +2 -2
  40. package/core/server/api/canary/files.js +19 -0
  41. package/core/server/api/canary/index.js +8 -0
  42. package/core/server/api/canary/media.js +42 -0
  43. package/core/server/api/canary/oembed.js +3 -0
  44. package/core/server/api/canary/redirects.js +1 -6
  45. package/core/server/api/canary/utils/serializers/input/index.js +4 -0
  46. package/core/server/api/canary/utils/serializers/input/media.js +8 -0
  47. package/core/server/api/canary/utils/serializers/input/pages.js +8 -0
  48. package/core/server/api/canary/utils/serializers/output/config.js +21 -14
  49. package/core/server/api/canary/utils/serializers/output/files.js +27 -0
  50. package/core/server/api/canary/utils/serializers/output/index.js +8 -0
  51. package/core/server/api/canary/utils/serializers/output/media.js +37 -0
  52. package/core/server/api/canary/utils/validators/input/files.js +7 -0
  53. package/core/server/api/canary/utils/validators/input/index.js +8 -0
  54. package/core/server/api/canary/utils/validators/input/media.js +11 -0
  55. package/core/server/api/v2/redirects.js +1 -6
  56. package/core/server/api/v3/members.js +5 -1
  57. package/core/server/api/v3/redirects.js +1 -6
  58. package/core/server/data/migrations/utils.js +55 -16
  59. package/core/server/data/migrations/versions/4.22/01-add-is-launch-complete-setting.js +8 -0
  60. package/core/server/data/migrations/versions/4.22/02-update-launch-complete-setting-from-user-data.js +39 -0
  61. package/core/server/data/schema/default-settings.json +8 -0
  62. package/core/server/frontend/ghost.min.css +1 -1
  63. package/core/server/lib/image/blog-icon.js +2 -4
  64. package/core/server/lib/image/image-size.js +1 -1
  65. package/core/server/services/limits.js +3 -6
  66. package/core/server/services/mega/template.js +62 -1
  67. package/core/server/services/nft-oembed.js +71 -0
  68. package/core/server/services/oembed.js +145 -110
  69. package/core/server/services/offers/service.js +1 -31
  70. package/core/server/services/public-config/config.js +2 -1
  71. package/core/server/services/redirects/api.js +270 -0
  72. package/core/server/services/redirects/index.js +27 -12
  73. package/core/server/services/stripe/index.js +4 -2
  74. package/core/server/services/themes/ThemeStorage.js +5 -5
  75. package/core/server/services/url/Resource.js +1 -1
  76. package/core/server/services/url/Resources.js +28 -21
  77. package/core/server/services/url/UrlService.js +66 -8
  78. package/core/server/services/url/Urls.js +7 -2
  79. package/core/server/services/url/index.js +8 -1
  80. package/core/server/web/admin/views/default-prod.html +4 -4
  81. package/core/server/web/admin/views/default.html +4 -4
  82. package/core/server/web/api/canary/admin/routes.js +28 -4
  83. package/core/server/web/api/middleware/cors.js +7 -7
  84. package/core/server/web/api/middleware/upload.js +117 -10
  85. package/core/server/web/members/app.js +1 -1
  86. package/core/server/web/shared/middlewares/index.js +0 -4
  87. package/core/shared/config/defaults.json +5 -1
  88. package/core/shared/config/helpers.js +4 -0
  89. package/core/shared/config/overrides.json +8 -0
  90. package/core/shared/labs.js +12 -3
  91. package/package.json +28 -27
  92. package/urls.json +597 -0
  93. package/yarn.lock +972 -941
  94. package/core/built/assets/img/themes/Editorial-a25a4a34c04dedd858bd5e05ef388b1c.jpg +0 -0
  95. package/core/built/assets/img/themes/Massively-06edf00108429f7fb8e65f190fba34fe.jpg +0 -0
  96. package/core/server/services/redirects/settings.js +0 -234
  97. package/core/server/web/shared/middlewares/custom-redirects.js +0 -128
@@ -23,7 +23,11 @@
23
23
  }
24
24
  },
25
25
  "storage": {
26
- "active": "LocalFileStorage"
26
+ "active": "LocalImagesStorage",
27
+ "media": "LocalMediaStorage",
28
+ "files": "LocalFilesStorage",
29
+ "LocalMediaStorage": {},
30
+ "LocalFilesStorage": {}
27
31
  },
28
32
  "scheduling": {
29
33
  "active": "SchedulingDefault"
@@ -32,6 +32,10 @@ const getContentPath = function getContentPath(type) {
32
32
  switch (type) {
33
33
  case 'images':
34
34
  return path.join(this.get('paths:contentPath'), 'images/');
35
+ case 'media':
36
+ return path.join(this.get('paths:contentPath'), 'media/');
37
+ case 'files':
38
+ return path.join(this.get('paths:contentPath'), 'files/');
35
39
  case 'themes':
36
40
  return path.join(this.get('paths:contentPath'), 'themes/');
37
41
  case 'adapters':
@@ -30,6 +30,14 @@
30
30
  "extensions": [".jpg", ".jpeg", ".gif", ".png", ".svg", ".svgz", ".ico", ".webp"],
31
31
  "contentTypes": ["image/jpeg", "image/png", "image/gif", "image/svg+xml", "image/x-icon", "image/vnd.microsoft.icon", "image/webp"]
32
32
  },
33
+ "media": {
34
+ "extensions": [".mp4",".webm", ".ogv", ".mp3", ".wav", ".ogg"],
35
+ "contentTypes": ["video/mp4", "video/webm", "video/ogg", "audio/mpeg", "audio/vnd.wav", "audio/ogg"]
36
+ },
37
+ "thumbnails": {
38
+ "extensions": [".jpg", ".jpeg", ".gif", ".png", ".svg", ".svgz", ".ico", ".webp"],
39
+ "contentTypes": ["image/jpeg", "image/png", "image/gif", "image/svg+xml", "image/x-icon", "image/vnd.microsoft.icon", "image/webp"]
40
+ },
33
41
  "icons": {
34
42
  "extensions": [".png", ".ico"],
35
43
  "contentTypes": ["image/png", "image/x-icon", "image/vnd.microsoft.icon"]
@@ -15,8 +15,7 @@ const messages = {
15
15
 
16
16
  // flags in this list always return `true`, allows quick global enable prior to full flag removal
17
17
  const GA_FEATURES = [
18
- 'customThemeSettings',
19
- 'offers'
18
+ 'customThemeSettings'
20
19
  ];
21
20
 
22
21
  // NOTE: this allowlist is meant to be used to filter out any unexpected
@@ -28,7 +27,17 @@ const BETA_FEATURES = [
28
27
 
29
28
  const ALPHA_FEATURES = [
30
29
  'oauthLogin',
31
- 'membersActivity'
30
+ 'membersActivity',
31
+ 'cardSettingsPanel',
32
+ 'urlCache',
33
+ 'mediaAPI',
34
+ 'filesAPI',
35
+ 'membersAutoLogin',
36
+ 'buttonCard',
37
+ 'calloutCard',
38
+ 'nftCard',
39
+ 'accordionCard',
40
+ 'gifsCard'
32
41
  ];
33
42
 
34
43
  module.exports.GA_KEYS = [...GA_FEATURES];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ghost",
3
- "version": "4.21.0",
3
+ "version": "4.22.3",
4
4
  "description": "The professional publishing platform",
5
5
  "author": "Ghost Foundation",
6
6
  "homepage": "https://ghost.org",
@@ -37,7 +37,7 @@
37
37
  "test:int:slow": "yarn test:integration --reporter=mocha-slow-test-reporter",
38
38
  "test:e2e:slow": "yarn test:e2e --reporter=mocha-slow-test-reporter",
39
39
  "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",
40
- "cov:unit": "c8 report --all -n 'core/{*.js,frontend,server,shared}' --reporter text --reporter html",
40
+ "cov:unit": "c8 report --all -n 'core/{*.js,frontend,server,shared}' -x 'core/frontend/public' --reporter text --reporter html",
41
41
  "lint:server": "eslint --ignore-path .eslintignore 'core/server/**/*.js' 'core/*.js' '*.js'",
42
42
  "lint:shared": "eslint --ignore-path .eslintignore 'core/shared/**/*.js'",
43
43
  "lint:frontend": "eslint --ignore-path .eslintignore 'core/frontend/**/*.js'",
@@ -54,37 +54,38 @@
54
54
  },
55
55
  "dependencies": {
56
56
  "@nexes/nql": "0.6.0",
57
- "@sentry/node": "6.13.3",
57
+ "@sentry/node": "6.14.3",
58
58
  "@tryghost/adapter-manager": "0.2.18",
59
- "@tryghost/admin-api-schema": "2.6.0",
59
+ "@tryghost/admin-api-schema": "2.6.1",
60
60
  "@tryghost/bookshelf-plugins": "0.3.4",
61
61
  "@tryghost/bootstrap-socket": "0.2.13",
62
- "@tryghost/color-utils": "0.1.2",
62
+ "@tryghost/color-utils": "0.1.4",
63
63
  "@tryghost/config-url-helpers": "0.1.3",
64
- "@tryghost/constants": "0.1.12",
64
+ "@tryghost/constants": "1.0.0",
65
65
  "@tryghost/custom-theme-settings-service": "0.3.1",
66
66
  "@tryghost/debug": "0.1.9",
67
67
  "@tryghost/email-analytics-provider-mailgun": "1.0.5",
68
68
  "@tryghost/email-analytics-service": "1.0.4",
69
69
  "@tryghost/errors": "0.2.17",
70
70
  "@tryghost/express-dynamic-redirects": "0.2.1",
71
- "@tryghost/helpers": "1.1.52",
72
- "@tryghost/image-transform": "1.0.17",
73
- "@tryghost/job-manager": "0.8.11",
71
+ "@tryghost/helpers": "1.1.53",
72
+ "@tryghost/image-transform": "1.0.18",
73
+ "@tryghost/job-manager": "0.8.12",
74
74
  "@tryghost/kg-card-factory": "3.1.0",
75
75
  "@tryghost/kg-default-atoms": "3.1.0",
76
- "@tryghost/kg-default-cards": "5.1.0",
76
+ "@tryghost/kg-default-cards": "5.5.1",
77
77
  "@tryghost/kg-markdown-html-renderer": "5.1.0",
78
78
  "@tryghost/kg-mobiledoc-html-renderer": "5.2.0",
79
- "@tryghost/limit-service": "0.6.5",
79
+ "@tryghost/limit-service": "1.0.0",
80
80
  "@tryghost/logging": "1.0.0",
81
81
  "@tryghost/magic-link": "1.0.14",
82
- "@tryghost/members-api": "2.6.0",
82
+ "@tryghost/members-api": "2.7.4",
83
83
  "@tryghost/members-csv": "1.1.8",
84
84
  "@tryghost/members-importer": "0.3.4",
85
- "@tryghost/members-offers": "0.10.1",
85
+ "@tryghost/members-offers": "0.10.2",
86
86
  "@tryghost/members-ssr": "1.0.15",
87
- "@tryghost/metrics": "0.2.6",
87
+ "@tryghost/metrics": "1.0.0",
88
+ "@tryghost/minifier": "0.1.0",
88
89
  "@tryghost/mw-session-from-token": "0.1.26",
89
90
  "@tryghost/nodemailer": "0.3.6",
90
91
  "@tryghost/package-json": "1.0.6",
@@ -93,11 +94,11 @@
93
94
  "@tryghost/root-utils": "0.3.7",
94
95
  "@tryghost/security": "0.2.13",
95
96
  "@tryghost/session-service": "0.1.28",
96
- "@tryghost/social-urls": "0.1.26",
97
- "@tryghost/string": "0.1.20",
97
+ "@tryghost/social-urls": "0.1.27",
98
+ "@tryghost/string": "0.1.21",
98
99
  "@tryghost/tpl": "0.1.8",
99
100
  "@tryghost/update-check-service": "0.2.5",
100
- "@tryghost/url-utils": "2.0.2",
101
+ "@tryghost/url-utils": "2.0.3",
101
102
  "@tryghost/validator": "0.1.8",
102
103
  "@tryghost/version": "0.1.7",
103
104
  "@tryghost/vhost-middleware": "1.0.19",
@@ -125,10 +126,10 @@
125
126
  "express-query-boolean": "2.0.0",
126
127
  "express-session": "1.17.2",
127
128
  "fs-extra": "10.0.0",
128
- "ghost-storage-base": "0.0.6",
129
+ "ghost-storage-base": "1.0.0",
129
130
  "glob": "7.2.0",
130
131
  "got": "9.6.0",
131
- "gscan": "4.10.0",
132
+ "gscan": "4.10.1",
132
133
  "html-to-text": "5.1.1",
133
134
  "image-size": "1.0.0",
134
135
  "intl": "1.2.5",
@@ -139,9 +140,9 @@
139
140
  "juice": "8.0.0",
140
141
  "keypair": "1.0.4",
141
142
  "knex": "0.21.21",
142
- "knex-migrator": "4.1.0",
143
+ "knex-migrator": "4.1.1",
143
144
  "lodash": "4.17.21",
144
- "luxon": "2.0.2",
145
+ "luxon": "2.1.1",
145
146
  "mailgun-js": "0.22.0",
146
147
  "metascraper": "5.25.0",
147
148
  "metascraper-author": "5.25.0",
@@ -158,13 +159,13 @@
158
159
  "mysql": "2.18.1",
159
160
  "nconf": "0.11.3",
160
161
  "node-jose": "2.0.0",
161
- "oembed-parser": "1.4.9",
162
+ "oembed-parser": "1.5.2",
162
163
  "passport": "0.5.0",
163
164
  "passport-google-oauth": "2.0.0",
164
165
  "path-match": "1.2.4",
165
166
  "probe-image-size": "5.0.0",
166
167
  "rss": "1.2.2",
167
- "sanitize-html": "2.5.2",
168
+ "sanitize-html": "2.5.3",
168
169
  "semver": "7.3.5",
169
170
  "stoppable": "1.1.0",
170
171
  "tough-cookie": "4.0.0",
@@ -172,14 +173,14 @@
172
173
  "xml": "1.0.1"
173
174
  },
174
175
  "optionalDependencies": {
175
- "@tryghost/html-to-mobiledoc": "0.7.17",
176
+ "@tryghost/html-to-mobiledoc": "1.2.2",
176
177
  "sqlite3": "5.0.2"
177
178
  },
178
179
  "devDependencies": {
179
- "@lodder/grunt-postcss": "3.1.0",
180
+ "@lodder/grunt-postcss": "3.1.1",
180
181
  "c8": "7.10.0",
181
182
  "coffeescript": "2.6.1",
182
- "cssnano": "5.0.8",
183
+ "cssnano": "5.0.10",
183
184
  "eslint": "7.32.0",
184
185
  "eslint-plugin-ghost": "2.7.0",
185
186
  "grunt": "1.4.1",
@@ -197,7 +198,7 @@
197
198
  "mocha": "9.1.3",
198
199
  "mocha-slow-test-reporter": "0.1.2",
199
200
  "mock-knex": "0.4.10",
200
- "nock": "13.1.4",
201
+ "nock": "13.2.1",
201
202
  "papaparse": "5.3.1",
202
203
  "postcss": "8.3.11",
203
204
  "rewire": "5.0.0",