ghost 4.34.2 → 4.36.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +1 -1
  2. package/core/built/assets/ghost-dark-abde961aa8d00ab2696e3ceb0a2ca24b.css +1 -0
  3. package/core/built/assets/ghost.min-46e075517808b53170b8d9ab0b96d796.css +1 -0
  4. package/core/built/assets/{ghost.min-4886fb099a526cb6ca5b733bbfbb5d3a.js → ghost.min-f10401ea8fdfee5dcc88cf4dff785a88.js} +1756 -1487
  5. package/core/built/assets/icons/get-started-members.svg +6 -0
  6. package/core/built/assets/icons/get-started-migrations.svg +6 -0
  7. package/core/built/assets/icons/get-started.svg +3 -0
  8. package/core/built/assets/icons/members-placeholder.svg +5 -1
  9. package/core/built/assets/icons/pages-placeholder.svg +3 -1
  10. package/core/built/assets/icons/posts-placeholder.svg +4 -1
  11. package/core/built/assets/icons/tags-placeholder.svg +5 -1
  12. package/core/built/assets/img/marketing/members-1-8b89a1f48fe7b336754e91a429531f65.jpg +0 -0
  13. package/core/built/assets/img/marketing/members-2-791205c82d5cf221f8c99a74f9ee1739.jpg +0 -0
  14. package/core/built/assets/{vendor.min-079fa61c64e24f0984f2cd7d2ebbf3c3.js → vendor.min-3aa87b4d7b43675386a96b869ed00493.js} +1509 -1441
  15. package/core/frontend/helpers/cancel_link.js +1 -1
  16. package/core/frontend/helpers/prev_post.js +1 -1
  17. package/core/frontend/helpers/products.js +2 -6
  18. package/core/frontend/helpers/tpl/content-cta.hbs +1 -1
  19. package/core/frontend/meta/asset-url.js +11 -0
  20. package/core/frontend/services/routing/controllers/email-post.js +1 -1
  21. package/core/frontend/services/routing/controllers/preview.js +1 -1
  22. package/core/frontend/services/routing/controllers/static.js +1 -1
  23. package/core/frontend/services/routing/helpers/entry-lookup.js +1 -1
  24. package/core/frontend/services/routing/helpers/fetch-data.js +1 -1
  25. package/core/frontend/views/unsubscribe.hbs +4 -2
  26. package/core/server/api/canary/authentication.js +4 -0
  27. package/core/server/api/canary/email-post.js +1 -1
  28. package/core/server/api/canary/pages-public.js +1 -1
  29. package/core/server/api/canary/pages.js +1 -1
  30. package/core/server/api/canary/posts-public.js +1 -1
  31. package/core/server/api/canary/posts.js +1 -1
  32. package/core/server/api/canary/utils/serializers/input/pages.js +1 -9
  33. package/core/server/api/canary/utils/serializers/input/posts.js +1 -9
  34. package/core/server/api/canary/utils/serializers/output/email-posts.js +2 -2
  35. package/core/server/api/canary/utils/serializers/output/pages.js +9 -5
  36. package/core/server/api/canary/utils/serializers/output/posts.js +9 -5
  37. package/core/server/api/canary/utils/serializers/output/preview.js +3 -2
  38. package/core/server/api/canary/utils/serializers/output/products.js +2 -0
  39. package/core/server/api/canary/utils/serializers/output/utils/clean.js +0 -9
  40. package/core/server/api/canary/utils/serializers/output/utils/mapper.js +18 -3
  41. package/core/server/api/canary/utils/validators/input/pages.js +1 -1
  42. package/core/server/api/canary/utils/validators/input/posts.js +1 -1
  43. package/core/server/data/exporter/table-lists.js +1 -0
  44. package/core/server/data/migrations/versions/4.35/2022-01-20-05-55-add-post-products-table.js +8 -0
  45. package/core/server/data/migrations/versions/4.35/2022-01-30-15-17-set-welcome-page-url-from-settings.js +45 -0
  46. package/core/server/data/migrations/versions/4.35/2022-02-01-11-48-update-email-recipient-filter-column-type.js +18 -0
  47. package/core/server/data/migrations/versions/4.35/2022-02-01-12-03-update-recipient-filter-column-type.js +18 -0
  48. package/core/server/data/migrations/versions/4.35/2022-02-02-10-38-add-default-content-visibility-tiers-setting.js +8 -0
  49. package/core/server/data/migrations/versions/4.35/2022-02-02-13-10-transform-specific-tiers-default-content-visibility.js +147 -0
  50. package/core/server/data/migrations/versions/4.35/2022-02-04-04-34-populate-empty-portal-products.js +60 -0
  51. package/core/server/data/migrations/versions/4.36/2022-02-07-14-34-add-last-seen-at-column-to-members.js +10 -0
  52. package/core/server/data/schema/default-settings.json +4 -0
  53. package/core/server/data/schema/schema.js +11 -4
  54. package/core/server/models/post.js +29 -5
  55. package/core/server/models/settings.js +46 -48
  56. package/core/server/services/auth/setup.js +37 -1
  57. package/core/server/services/bulk-email/bulk-email-processor.js +1 -0
  58. package/core/server/services/mega/template.js +1 -1
  59. package/core/server/services/members/content-gating.js +9 -1
  60. package/core/server/services/members/middleware.js +21 -4
  61. package/core/server/services/members/service.js +30 -4
  62. package/core/server/services/posts/posts-service.js +25 -1
  63. package/core/server/web/admin/views/default-prod.html +4 -4
  64. package/core/server/web/admin/views/default.html +4 -4
  65. package/core/shared/labs.js +3 -2
  66. package/jsconfig.json +1 -1
  67. package/package.json +46 -47
  68. package/yarn.lock +1925 -1842
  69. package/core/built/assets/ghost-dark-2de4c728f3d2deae25e45092ea0e811f.css +0 -1
  70. package/core/built/assets/ghost.min-b1d3e45166f2023dd56b35f720636979.css +0 -1
@@ -1,8 +1,10 @@
1
+ const nql = require('@nexes/nql');
1
2
  const {BadRequestError} = require('@tryghost/errors');
2
3
  const tpl = require('@tryghost/tpl');
3
4
 
4
5
  const messages = {
5
- invalidEmailRecipientFilter: 'Invalid filter in email_recipient_filter param.'
6
+ invalidEmailRecipientFilter: 'Invalid filter in email_recipient_filter param.',
7
+ invalidVisibilityFilter: 'Invalid visibility filter.'
6
8
  };
7
9
 
8
10
  class PostsService {
@@ -78,6 +80,28 @@ class PostsService {
78
80
  return model;
79
81
  }
80
82
 
83
+ async getProductsFromVisibilityFilter(visibilityFilter) {
84
+ try {
85
+ const allProducts = await this.models.Product.findAll();
86
+ const visibilityFilterJson = nql(visibilityFilter).toJSON();
87
+ const productsData = (visibilityFilterJson.product ? [visibilityFilterJson] : visibilityFilterJson.$or) || [];
88
+ const tiers = productsData
89
+ .map((data) => {
90
+ return allProducts.find((p) => {
91
+ return p.get('slug') === data.product;
92
+ });
93
+ }).filter(p => !!p).map((d) => {
94
+ return d.toJSON();
95
+ });
96
+ return tiers;
97
+ } catch (err) {
98
+ return Promise.reject(new BadRequestError({
99
+ message: tpl(messages.invalidVisibilityFilter),
100
+ context: err.message
101
+ }));
102
+ }
103
+ }
104
+
81
105
  /**
82
106
  * Calculates if the email should be tried to be sent out
83
107
  * @private
@@ -8,7 +8,7 @@
8
8
  <title>Ghost Admin</title>
9
9
 
10
10
 
11
- <meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%2F%22%2C%22locationType%22%3A%22trailing-hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%2C%22Array%22%3Atrue%2C%22String%22%3Atrue%2C%22Function%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_JQUERY_INTEGRATION%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%224.34%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22moment%22%3A%7B%22includeTimezone%22%3A%22all%22%7D%2C%22%40sentry%2Fember%22%3A%7B%22disablePerformance%22%3Atrue%2C%22sentry%22%3A%7B%7D%7D%2C%22ember-cli-mirage%22%3A%7B%22usingProxy%22%3Afalse%2C%22useDefaultPassthroughs%22%3Atrue%7D%2C%22exportApplicationGlobal%22%3Afalse%2C%22ember-load%22%3A%7B%22loadingIndicatorClass%22%3A%22ember-load-indicator%22%7D%7D" />
11
+ <meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%2F%22%2C%22locationType%22%3A%22trailing-hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%2C%22Array%22%3Atrue%2C%22String%22%3Atrue%2C%22Function%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_JQUERY_INTEGRATION%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%224.36%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22moment%22%3A%7B%22includeTimezone%22%3A%22all%22%7D%2C%22%40sentry%2Fember%22%3A%7B%22disablePerformance%22%3Atrue%2C%22sentry%22%3A%7B%7D%7D%2C%22ember-cli-mirage%22%3A%7B%22usingProxy%22%3Afalse%2C%22useDefaultPassthroughs%22%3Atrue%7D%2C%22exportApplicationGlobal%22%3Afalse%2C%22ember-load%22%3A%7B%22loadingIndicatorClass%22%3A%22ember-load-indicator%22%7D%7D" />
12
12
 
13
13
  <meta name="HandheldFriendly" content="True" />
14
14
  <meta name="MobileOptimized" content="320" />
@@ -38,7 +38,7 @@
38
38
 
39
39
 
40
40
  <link rel="stylesheet" href="assets/vendor.min-2c8ad32b7960bb605ebc20097fee5ebd.css">
41
- <link rel="stylesheet" href="assets/ghost.min-b1d3e45166f2023dd56b35f720636979.css" title="light">
41
+ <link rel="stylesheet" href="assets/ghost.min-46e075517808b53170b8d9ab0b96d796.css" title="light">
42
42
 
43
43
 
44
44
 
@@ -56,8 +56,8 @@
56
56
  <div id="ember-basic-dropdown-wormhole"></div>
57
57
 
58
58
 
59
- <script src="assets/vendor.min-079fa61c64e24f0984f2cd7d2ebbf3c3.js"></script>
60
- <script src="assets/ghost.min-4886fb099a526cb6ca5b733bbfbb5d3a.js"></script>
59
+ <script src="assets/vendor.min-3aa87b4d7b43675386a96b869ed00493.js"></script>
60
+ <script src="assets/ghost.min-f10401ea8fdfee5dcc88cf4dff785a88.js"></script>
61
61
 
62
62
  </body>
63
63
  </html>
@@ -8,7 +8,7 @@
8
8
  <title>Ghost Admin</title>
9
9
 
10
10
 
11
- <meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%2F%22%2C%22locationType%22%3A%22trailing-hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%2C%22Array%22%3Atrue%2C%22String%22%3Atrue%2C%22Function%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_JQUERY_INTEGRATION%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%224.34%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22moment%22%3A%7B%22includeTimezone%22%3A%22all%22%7D%2C%22%40sentry%2Fember%22%3A%7B%22disablePerformance%22%3Atrue%2C%22sentry%22%3A%7B%7D%7D%2C%22ember-cli-mirage%22%3A%7B%22usingProxy%22%3Afalse%2C%22useDefaultPassthroughs%22%3Atrue%7D%2C%22exportApplicationGlobal%22%3Afalse%2C%22ember-load%22%3A%7B%22loadingIndicatorClass%22%3A%22ember-load-indicator%22%7D%7D" />
11
+ <meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%2F%22%2C%22locationType%22%3A%22trailing-hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%2C%22Array%22%3Atrue%2C%22String%22%3Atrue%2C%22Function%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_JQUERY_INTEGRATION%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%224.36%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22moment%22%3A%7B%22includeTimezone%22%3A%22all%22%7D%2C%22%40sentry%2Fember%22%3A%7B%22disablePerformance%22%3Atrue%2C%22sentry%22%3A%7B%7D%7D%2C%22ember-cli-mirage%22%3A%7B%22usingProxy%22%3Afalse%2C%22useDefaultPassthroughs%22%3Atrue%7D%2C%22exportApplicationGlobal%22%3Afalse%2C%22ember-load%22%3A%7B%22loadingIndicatorClass%22%3A%22ember-load-indicator%22%7D%7D" />
12
12
 
13
13
  <meta name="HandheldFriendly" content="True" />
14
14
  <meta name="MobileOptimized" content="320" />
@@ -38,7 +38,7 @@
38
38
 
39
39
 
40
40
  <link rel="stylesheet" href="assets/vendor.min-2c8ad32b7960bb605ebc20097fee5ebd.css">
41
- <link rel="stylesheet" href="assets/ghost.min-b1d3e45166f2023dd56b35f720636979.css" title="light">
41
+ <link rel="stylesheet" href="assets/ghost.min-46e075517808b53170b8d9ab0b96d796.css" title="light">
42
42
 
43
43
 
44
44
 
@@ -56,8 +56,8 @@
56
56
  <div id="ember-basic-dropdown-wormhole"></div>
57
57
 
58
58
 
59
- <script src="assets/vendor.min-079fa61c64e24f0984f2cd7d2ebbf3c3.js"></script>
60
- <script src="assets/ghost.min-4886fb099a526cb6ca5b733bbfbb5d3a.js"></script>
59
+ <script src="assets/vendor.min-3aa87b4d7b43675386a96b869ed00493.js"></script>
60
+ <script src="assets/ghost.min-f10401ea8fdfee5dcc88cf4dff785a88.js"></script>
61
61
 
62
62
  </body>
63
63
  </html>
@@ -27,12 +27,13 @@ const BETA_FEATURES = [
27
27
  const ALPHA_FEATURES = [
28
28
  'oauthLogin',
29
29
  'membersActivity',
30
- 'cardSettingsPanel',
31
30
  'urlCache',
32
31
  'beforeAfterCard',
33
32
  'tweetGridCard',
34
33
  'membersActivityFeed',
35
- 'tierWelcomePages'
34
+ 'improvedOnboarding',
35
+ 'tierWelcomePages',
36
+ 'tierName'
36
37
  ];
37
38
 
38
39
  module.exports.GA_KEYS = [...GA_FEATURES];
package/jsconfig.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "include": ["core/**/*.js"],
2
+ "include": ["core/**/*.js", "test/**/*.js"],
3
3
  "compilerOptions": {
4
4
  "checkJs": true,
5
5
  "module": "commonjs",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ghost",
3
- "version": "4.34.2",
3
+ "version": "4.36.1",
4
4
  "description": "The professional publishing platform",
5
5
  "author": "Ghost Foundation",
6
6
  "homepage": "https://ghost.org",
@@ -32,7 +32,7 @@
32
32
  "test:unit": "c8 --reporter text-summary --reporter cobertura mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js './test/unit' --timeout=2000",
33
33
  "test:integration": "mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js './test/integration' --timeout=5000",
34
34
  "test:e2e": "mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js './test/e2e-api' './test/e2e-frontend' './test/e2e-server' --timeout=10000",
35
- "test:regression": "mocha --require=./test/utils/overrides.js --require=./test/utils/snapshots.js --exit --trace-warnings --recursive --extension=test.js './test/regression' --timeout=60000",
35
+ "test:regression": "mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js './test/regression' --timeout=60000",
36
36
  "test:unit:slow": "yarn test:unit --reporter=mocha-slow-test-reporter",
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",
@@ -54,58 +54,58 @@
54
54
  },
55
55
  "dependencies": {
56
56
  "@nexes/nql": "0.6.0",
57
- "@sentry/node": "6.17.2",
57
+ "@sentry/node": "6.17.6",
58
58
  "@tryghost/adapter-manager": "0.2.27",
59
- "@tryghost/admin-api-schema": "2.7.0",
60
- "@tryghost/bookshelf-plugins": "0.3.7",
59
+ "@tryghost/admin-api-schema": "2.9.0",
60
+ "@tryghost/bookshelf-plugins": "0.3.8",
61
61
  "@tryghost/bootstrap-socket": "0.2.16",
62
- "@tryghost/color-utils": "0.1.6",
62
+ "@tryghost/color-utils": "0.1.7",
63
63
  "@tryghost/config-url-helpers": "0.1.4",
64
64
  "@tryghost/constants": "1.0.1",
65
65
  "@tryghost/custom-theme-settings-service": "0.3.1",
66
66
  "@tryghost/database-info": "0.1.0",
67
- "@tryghost/debug": "0.1.11",
67
+ "@tryghost/debug": "0.1.12",
68
68
  "@tryghost/email-analytics-provider-mailgun": "1.0.7",
69
69
  "@tryghost/email-analytics-service": "1.0.5",
70
70
  "@tryghost/errors": "1.2.1",
71
71
  "@tryghost/express-dynamic-redirects": "0.2.4",
72
- "@tryghost/helpers": "1.1.55",
72
+ "@tryghost/helpers": "1.1.56",
73
73
  "@tryghost/image-transform": "1.0.27",
74
- "@tryghost/job-manager": "0.8.18",
75
- "@tryghost/kg-card-factory": "3.1.1",
74
+ "@tryghost/job-manager": "0.8.19",
75
+ "@tryghost/kg-card-factory": "3.1.2",
76
76
  "@tryghost/kg-default-atoms": "3.1.1",
77
- "@tryghost/kg-default-cards": "5.15.12",
78
- "@tryghost/kg-markdown-html-renderer": "5.1.1",
79
- "@tryghost/kg-mobiledoc-html-renderer": "5.3.2",
77
+ "@tryghost/kg-default-cards": "5.16.1",
78
+ "@tryghost/kg-markdown-html-renderer": "5.1.4",
79
+ "@tryghost/kg-mobiledoc-html-renderer": "5.3.4",
80
80
  "@tryghost/limit-service": "1.0.9",
81
- "@tryghost/logging": "2.0.2",
81
+ "@tryghost/logging": "2.0.3",
82
82
  "@tryghost/magic-link": "1.0.17",
83
- "@tryghost/members-api": "4.8.4",
83
+ "@tryghost/members-api": "4.8.15",
84
84
  "@tryghost/members-importer": "0.5.0",
85
85
  "@tryghost/members-offers": "0.10.6",
86
86
  "@tryghost/members-ssr": "1.0.19",
87
- "@tryghost/members-stripe-service": "0.6.5",
88
- "@tryghost/metrics": "1.0.3",
87
+ "@tryghost/members-stripe-service": "0.7.0",
88
+ "@tryghost/metrics": "1.0.5",
89
89
  "@tryghost/minifier": "0.1.10",
90
90
  "@tryghost/mw-error-handler": "0.1.2",
91
91
  "@tryghost/mw-session-from-token": "0.1.27",
92
- "@tryghost/nodemailer": "0.3.10",
92
+ "@tryghost/nodemailer": "0.3.11",
93
93
  "@tryghost/package-json": "1.0.15",
94
94
  "@tryghost/promise": "0.1.14",
95
- "@tryghost/request": "0.1.12",
96
- "@tryghost/root-utils": "0.3.9",
95
+ "@tryghost/request": "0.1.14",
96
+ "@tryghost/root-utils": "0.3.10",
97
97
  "@tryghost/security": "0.2.14",
98
98
  "@tryghost/session-service": "0.1.37",
99
99
  "@tryghost/settings-path-manager": "0.1.3",
100
100
  "@tryghost/social-urls": "0.1.28",
101
101
  "@tryghost/string": "0.1.22",
102
- "@tryghost/tpl": "0.1.10",
103
- "@tryghost/update-check-service": "0.3.0",
102
+ "@tryghost/tpl": "0.1.11",
103
+ "@tryghost/update-check-service": "0.3.1",
104
104
  "@tryghost/url-utils": "2.0.5",
105
- "@tryghost/validator": "0.1.11",
106
- "@tryghost/verification-trigger": "0.1.0",
107
- "@tryghost/version": "0.1.9",
108
- "@tryghost/vhost-middleware": "1.0.20",
105
+ "@tryghost/validator": "0.1.12",
106
+ "@tryghost/verification-trigger": "0.1.3",
107
+ "@tryghost/version": "0.1.10",
108
+ "@tryghost/vhost-middleware": "1.0.21",
109
109
  "@tryghost/zip": "1.1.19",
110
110
  "amperize": "0.6.1",
111
111
  "analytics-node": "6.0.0",
@@ -148,28 +148,28 @@
148
148
  "lodash": "4.17.21",
149
149
  "luxon": "2.3.0",
150
150
  "mailgun-js": "0.22.0",
151
- "metascraper": "5.25.7",
152
- "metascraper-author": "5.25.7",
153
- "metascraper-description": "5.25.7",
154
- "metascraper-image": "5.25.7",
155
- "metascraper-logo": "5.25.7",
156
- "metascraper-logo-favicon": "5.25.7",
157
- "metascraper-publisher": "5.25.7",
158
- "metascraper-title": "5.25.7",
159
- "metascraper-url": "5.25.7",
151
+ "metascraper": "5.25.8",
152
+ "metascraper-author": "5.25.8",
153
+ "metascraper-description": "5.25.8",
154
+ "metascraper-image": "5.25.8",
155
+ "metascraper-logo": "5.25.8",
156
+ "metascraper-logo-favicon": "5.25.8",
157
+ "metascraper-publisher": "5.25.8",
158
+ "metascraper-title": "5.25.8",
159
+ "metascraper-url": "5.25.8",
160
160
  "moment": "2.24.0",
161
161
  "moment-timezone": "0.5.23",
162
162
  "multer": "1.4.4",
163
163
  "mysql": "2.18.1",
164
164
  "nconf": "0.11.3",
165
- "node-jose": "2.0.0",
165
+ "node-jose": "2.1.0",
166
166
  "oembed-parser": "1.4.9",
167
167
  "passport": "0.5.2",
168
168
  "passport-google-oauth": "2.0.0",
169
169
  "path-match": "1.2.4",
170
170
  "probe-image-size": "5.0.0",
171
171
  "rss": "1.2.2",
172
- "sanitize-html": "2.6.1",
172
+ "sanitize-html": "2.7.0",
173
173
  "semver": "7.3.5",
174
174
  "stoppable": "1.1.0",
175
175
  "tough-cookie": "4.0.0",
@@ -181,15 +181,14 @@
181
181
  "sqlite3": "5.0.2"
182
182
  },
183
183
  "devDependencies": {
184
- "@ethanresnick/chai-jest-snapshot": "3.0.0",
185
184
  "@lodder/grunt-postcss": "3.1.1",
185
+ "@tryghost/express-test": "0.4.1",
186
+ "@tryghost/jest-snapshot": "0.3.1",
186
187
  "c8": "7.11.0",
187
- "chai": "4.3.6",
188
188
  "coffeescript": "2.6.1",
189
- "cssnano": "5.0.16",
190
- "eslint": "7.32.0",
189
+ "cssnano": "5.0.17",
190
+ "eslint": "8.8.0",
191
191
  "eslint-plugin-ghost": "2.12.0",
192
- "expect": "27.4.6",
193
192
  "grunt": "1.4.1",
194
193
  "grunt-bg-shell": "2.3.3",
195
194
  "grunt-contrib-clean": "2.0.0",
@@ -205,17 +204,17 @@
205
204
  "mocha": "9.2.0",
206
205
  "mocha-slow-test-reporter": "0.1.2",
207
206
  "mock-knex": "0.4.10",
208
- "nock": "13.2.2",
207
+ "nock": "13.2.4",
209
208
  "papaparse": "5.3.1",
210
- "postcss": "8.4.5",
211
- "rewire": "5.0.0",
209
+ "postcss": "8.4.6",
210
+ "rewire": "6.0.0",
212
211
  "should": "13.2.3",
213
- "sinon": "11.1.2",
212
+ "sinon": "13.0.1",
214
213
  "supertest": "6.2.2",
215
214
  "tmp": "0.2.1"
216
215
  },
217
216
  "resolutions": {
218
- "@tryghost/logging": "2.0.2",
217
+ "@tryghost/logging": "2.0.3",
219
218
  "moment": "2.24.0",
220
219
  "moment-timezone": "0.5.23"
221
220
  }