ghost 4.41.2 → 4.42.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 (82) hide show
  1. package/core/boot.js +24 -6
  2. package/core/built/assets/ghost-dark-a93afb20027060d760ac6d78f115a76f.css +1 -0
  3. package/core/built/assets/{ghost.min-8e2e6c7a01fde044c566c1650a36bfc2.js → ghost.min-20096eef632760c3a2906e243adbd24b.js} +1035 -841
  4. package/core/built/assets/ghost.min-ce35ef1b76d9a943ab912c076773b132.css +1 -0
  5. package/core/built/assets/{vendor.min-9094db77ba3190cb10876f8e42e1d90d.js → vendor.min-21f79c68a284acb1b70039f3f63e5507.js} +68 -68
  6. package/core/built/assets/{vendor.min-2c8ad32b7960bb605ebc20097fee5ebd.css → vendor.min-ba66b98f7c24fa40e061c7ffc94f4e23.css} +214 -0
  7. package/core/frontend/helpers/price.js +1 -0
  8. package/core/frontend/web/middleware/error-handler.js +5 -3
  9. package/core/server/api/canary/email-preview.js +2 -1
  10. package/core/server/api/canary/{email.js → emails.js} +0 -0
  11. package/core/server/api/canary/index.js +11 -3
  12. package/core/server/api/canary/{memberSigninUrls.js → member-signin-urls.js} +0 -1
  13. package/core/server/api/canary/{membersStripeConnect.js → members-stripe-connect.js} +0 -0
  14. package/core/server/api/canary/members.js +0 -45
  15. package/core/server/api/canary/newsletters.js +45 -0
  16. package/core/server/api/canary/stats.js +14 -0
  17. package/core/server/api/canary/utils/serializers/output/authentication.js +4 -0
  18. package/core/server/api/canary/utils/serializers/output/default.js +35 -0
  19. package/core/server/api/canary/utils/serializers/output/email-previews.js +7 -0
  20. package/core/server/api/canary/utils/serializers/output/index.js +18 -42
  21. package/core/server/api/canary/utils/serializers/output/mappers/authors.js +1 -0
  22. package/core/server/api/canary/utils/serializers/output/mappers/index.js +2 -1
  23. package/core/server/api/canary/utils/serializers/output/mappers/integrations.js +1 -1
  24. package/core/server/api/canary/utils/serializers/output/mappers/snippets.js +36 -0
  25. package/core/server/api/canary/utils/serializers/output/members-stripe-connect.js +6 -0
  26. package/core/server/api/canary/utils/serializers/output/members.js +2 -2
  27. package/core/server/api/canary/utils/serializers/output/oembed.js +2 -2
  28. package/core/server/api/canary/utils/serializers/output/offers.js +8 -0
  29. package/core/server/api/canary/utils/serializers/output/redirects.js +2 -2
  30. package/core/server/api/canary/utils/serializers/output/schedules.js +2 -2
  31. package/core/server/api/canary/utils/serializers/output/session.js +9 -0
  32. package/core/server/api/canary/utils/serializers/output/settings.js +64 -37
  33. package/core/server/api/canary/utils/serializers/output/slack.js +9 -0
  34. package/core/server/api/canary/utils/serializers/output/themes.js +3 -24
  35. package/core/server/api/canary/utils/serializers/output/users.js +0 -23
  36. package/core/server/api/shared/serializers/handle.js +25 -11
  37. package/core/server/data/exporter/table-lists.js +1 -0
  38. package/core/server/data/migrations/utils.js +1 -1
  39. package/core/server/data/migrations/versions/4.42/2022-03-21-17-17-add.js +20 -0
  40. package/core/server/data/migrations/versions/4.42/2022-03-30-15-44-add-newsletter-permissions.js +28 -0
  41. package/core/server/data/schema/commands.js +13 -13
  42. package/core/server/data/schema/schema.js +18 -0
  43. package/core/server/models/newsletter.js +9 -0
  44. package/core/server/services/mega/template.js +25 -13
  45. package/core/server/services/members/service.js +2 -1
  46. package/core/server/services/offers/service.js +11 -8
  47. package/core/server/services/stats/index.js +1 -0
  48. package/core/server/services/stats/lib/members-stats-service.js +165 -0
  49. package/core/server/services/stats/service.js +6 -0
  50. package/core/server/services/themes/validate.js +4 -3
  51. package/core/server/services/webhooks/webhooks-service.js +3 -1
  52. package/core/server/web/admin/app.js +8 -0
  53. package/core/server/web/admin/views/default-prod.html +5 -5
  54. package/core/server/web/admin/views/default.html +5 -5
  55. package/core/server/web/api/canary/admin/routes.js +8 -2
  56. package/core/shared/config/defaults.json +2 -2
  57. package/core/shared/config/env/config.development.json +26 -0
  58. package/core/shared/config/env/config.production.json +21 -0
  59. package/core/shared/config/env/config.testing-mysql.json +59 -0
  60. package/core/shared/config/env/config.testing.json +58 -0
  61. package/core/shared/labs.js +3 -1
  62. package/core/shared/settings-cache/cache.js +1 -1
  63. package/package.json +62 -62
  64. package/yarn.lock +1586 -1757
  65. package/.c8rc.json +0 -34
  66. package/.eslintrc.js +0 -118
  67. package/core/built/assets/ghost-dark-6fbe502f2bb2cde92e15b2f1a9da57a0.css +0 -1
  68. package/core/built/assets/ghost.min-09301e5bd933cf6d24368e98a4d898a9.css +0 -1
  69. package/core/server/api/canary/utils/serializers/output/actions.js +0 -13
  70. package/core/server/api/canary/utils/serializers/output/authors.js +0 -21
  71. package/core/server/api/canary/utils/serializers/output/email-preview.js +0 -7
  72. package/core/server/api/canary/utils/serializers/output/emails.js +0 -22
  73. package/core/server/api/canary/utils/serializers/output/identities.js +0 -7
  74. package/core/server/api/canary/utils/serializers/output/integrations.js +0 -34
  75. package/core/server/api/canary/utils/serializers/output/invites.js +0 -24
  76. package/core/server/api/canary/utils/serializers/output/labels.js +0 -25
  77. package/core/server/api/canary/utils/serializers/output/mappers/labels.js +0 -4
  78. package/core/server/api/canary/utils/serializers/output/member-signin_urls.js +0 -7
  79. package/core/server/api/canary/utils/serializers/output/snippets.js +0 -97
  80. package/core/server/api/canary/utils/serializers/output/tags.js +0 -25
  81. package/core/server/api/canary/utils/serializers/output/webhooks.js +0 -15
  82. package/jsconfig.json +0 -13
package/core/boot.js CHANGED
@@ -25,9 +25,18 @@ class BootLogger {
25
25
  let {logging, startTime} = this;
26
26
  logging.info(`Ghost ${message} in ${(Date.now() - startTime) / 1000}s`);
27
27
  }
28
- metric(name) {
28
+ /**
29
+ * @param {string} name
30
+ * @param {number} [initialTime]
31
+ */
32
+ metric(name, initialTime) {
29
33
  let {metrics, startTime} = this;
30
- metrics.metric(name, Date.now() - startTime);
34
+
35
+ if (!initialTime) {
36
+ initialTime = startTime;
37
+ }
38
+
39
+ metrics.metric(name, Date.now() - initialTime);
31
40
  }
32
41
  }
33
42
 
@@ -126,8 +135,11 @@ async function initCore({ghostServer, config, bootLogger, frontend}) {
126
135
 
127
136
  /**
128
137
  * These are services required by Ghost's frontend.
138
+ * @param {object} options
139
+ * @param {object} options.bootLogger
140
+
129
141
  */
130
- async function initServicesForFrontend() {
142
+ async function initServicesForFrontend({bootLogger}) {
131
143
  debug('Begin: initServicesForFrontend');
132
144
 
133
145
  debug('Begin: Routing Settings');
@@ -144,10 +156,18 @@ async function initServicesForFrontend() {
144
156
  // customThemSettingsService.api must be initialized before any theme activation occurs
145
157
  const customThemeSettingsService = require('./server/services/custom-theme-settings');
146
158
  customThemeSettingsService.init();
159
+
147
160
  const themeService = require('./server/services/themes');
161
+ const themeServiceStart = Date.now();
148
162
  await themeService.init();
163
+ bootLogger.metric('theme-service-init', themeServiceStart);
149
164
  debug('End: Themes');
150
165
 
166
+ debug('Begin: Offers');
167
+ const offers = require('./server/services/offers');
168
+ await offers.init();
169
+ debug('End: Offers');
170
+
151
171
  debug('End: initServicesForFrontend');
152
172
  }
153
173
 
@@ -239,7 +259,6 @@ async function initServices({config}) {
239
259
  debug('Begin: Services');
240
260
  const stripe = require('./server/services/stripe');
241
261
  const members = require('./server/services/members');
242
- const offers = require('./server/services/offers');
243
262
  const permissions = require('./server/services/permissions');
244
263
  const xmlrpc = require('./server/services/xmlrpc');
245
264
  const slack = require('./server/services/slack');
@@ -258,7 +277,6 @@ async function initServices({config}) {
258
277
  // NOTE: Members service depends on these
259
278
  // so they are initialized before it.
260
279
  await stripe.init();
261
- await offers.init();
262
280
 
263
281
  await Promise.all([
264
282
  members.init(),
@@ -398,7 +416,7 @@ async function bootGhost({backend = true, frontend = true, server = true} = {})
398
416
  // Step 4 - Load Ghost with all its services
399
417
  debug('Begin: Load Ghost Services & Apps');
400
418
  await initCore({ghostServer, config, bootLogger, frontend});
401
- await initServicesForFrontend();
419
+ await initServicesForFrontend({bootLogger});
402
420
 
403
421
  if (frontend) {
404
422
  await initFrontend();