ghost 5.79.5 → 5.80.0

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 (187) hide show
  1. package/components/tryghost-adapter-cache-memory-ttl-5.80.0.tgz +0 -0
  2. package/components/tryghost-adapter-cache-redis-5.80.0.tgz +0 -0
  3. package/components/tryghost-adapter-manager-5.80.0.tgz +0 -0
  4. package/components/tryghost-announcement-bar-settings-5.80.0.tgz +0 -0
  5. package/components/tryghost-api-framework-5.80.0.tgz +0 -0
  6. package/components/tryghost-api-version-compatibility-service-5.80.0.tgz +0 -0
  7. package/components/tryghost-audience-feedback-5.80.0.tgz +0 -0
  8. package/components/tryghost-bookshelf-repository-5.80.0.tgz +0 -0
  9. package/components/tryghost-bootstrap-socket-5.80.0.tgz +0 -0
  10. package/components/{tryghost-collections-5.79.5.tgz → tryghost-collections-5.80.0.tgz} +0 -0
  11. package/components/tryghost-constants-5.80.0.tgz +0 -0
  12. package/components/tryghost-custom-theme-settings-service-5.80.0.tgz +0 -0
  13. package/components/{tryghost-data-generator-5.79.5.tgz → tryghost-data-generator-5.80.0.tgz} +0 -0
  14. package/components/tryghost-domain-events-5.80.0.tgz +0 -0
  15. package/components/tryghost-donations-5.80.0.tgz +0 -0
  16. package/components/tryghost-dynamic-routing-events-5.80.0.tgz +0 -0
  17. package/components/tryghost-email-addresses-5.80.0.tgz +0 -0
  18. package/components/tryghost-email-analytics-provider-mailgun-5.80.0.tgz +0 -0
  19. package/components/tryghost-email-analytics-service-5.80.0.tgz +0 -0
  20. package/components/tryghost-email-content-generator-5.80.0.tgz +0 -0
  21. package/components/tryghost-email-events-5.80.0.tgz +0 -0
  22. package/components/tryghost-email-service-5.80.0.tgz +0 -0
  23. package/components/tryghost-email-suppression-list-5.80.0.tgz +0 -0
  24. package/components/tryghost-express-dynamic-redirects-5.80.0.tgz +0 -0
  25. package/components/tryghost-external-media-inliner-5.80.0.tgz +0 -0
  26. package/components/tryghost-extract-api-key-5.80.0.tgz +0 -0
  27. package/components/tryghost-html-to-plaintext-5.80.0.tgz +0 -0
  28. package/components/{tryghost-i18n-5.79.5.tgz → tryghost-i18n-5.80.0.tgz} +0 -0
  29. package/components/tryghost-importer-handler-content-files-5.80.0.tgz +0 -0
  30. package/components/{tryghost-importer-revue-5.79.5.tgz → tryghost-importer-revue-5.80.0.tgz} +0 -0
  31. package/components/tryghost-in-memory-repository-5.80.0.tgz +0 -0
  32. package/components/tryghost-job-manager-5.80.0.tgz +0 -0
  33. package/components/tryghost-link-redirects-5.80.0.tgz +0 -0
  34. package/components/tryghost-link-replacer-5.80.0.tgz +0 -0
  35. package/components/tryghost-link-tracking-5.80.0.tgz +0 -0
  36. package/components/tryghost-magic-link-5.80.0.tgz +0 -0
  37. package/components/tryghost-mail-events-5.80.0.tgz +0 -0
  38. package/components/tryghost-mailgun-client-5.80.0.tgz +0 -0
  39. package/components/tryghost-member-attribution-5.80.0.tgz +0 -0
  40. package/components/tryghost-member-events-5.80.0.tgz +0 -0
  41. package/components/{tryghost-members-api-5.79.5.tgz → tryghost-members-api-5.80.0.tgz} +0 -0
  42. package/components/tryghost-members-csv-5.80.0.tgz +0 -0
  43. package/components/tryghost-members-events-service-5.80.0.tgz +0 -0
  44. package/components/tryghost-members-importer-5.80.0.tgz +0 -0
  45. package/components/tryghost-members-offers-5.80.0.tgz +0 -0
  46. package/components/tryghost-members-payments-5.80.0.tgz +0 -0
  47. package/components/tryghost-members-ssr-5.80.0.tgz +0 -0
  48. package/components/{tryghost-members-stripe-service-5.79.5.tgz → tryghost-members-stripe-service-5.80.0.tgz} +0 -0
  49. package/components/tryghost-mentions-email-report-5.80.0.tgz +0 -0
  50. package/components/tryghost-milestones-5.80.0.tgz +0 -0
  51. package/components/{tryghost-minifier-5.79.5.tgz → tryghost-minifier-5.80.0.tgz} +0 -0
  52. package/components/tryghost-model-to-domain-event-interceptor-5.80.0.tgz +0 -0
  53. package/components/tryghost-mw-api-version-mismatch-5.80.0.tgz +0 -0
  54. package/components/tryghost-mw-cache-control-5.80.0.tgz +0 -0
  55. package/components/tryghost-mw-error-handler-5.80.0.tgz +0 -0
  56. package/components/tryghost-mw-session-from-token-5.80.0.tgz +0 -0
  57. package/components/tryghost-mw-update-user-last-seen-5.80.0.tgz +0 -0
  58. package/components/tryghost-mw-version-match-5.80.0.tgz +0 -0
  59. package/components/tryghost-mw-vhost-5.80.0.tgz +0 -0
  60. package/components/tryghost-nql-filter-expansions-5.80.0.tgz +0 -0
  61. package/components/tryghost-oembed-service-5.80.0.tgz +0 -0
  62. package/components/tryghost-package-json-5.80.0.tgz +0 -0
  63. package/components/tryghost-post-events-5.80.0.tgz +0 -0
  64. package/components/tryghost-post-revisions-5.80.0.tgz +0 -0
  65. package/components/tryghost-posts-service-5.80.0.tgz +0 -0
  66. package/components/tryghost-recommendations-5.80.0.tgz +0 -0
  67. package/components/tryghost-referrers-5.80.0.tgz +0 -0
  68. package/components/tryghost-security-5.80.0.tgz +0 -0
  69. package/components/tryghost-session-service-5.80.0.tgz +0 -0
  70. package/components/tryghost-settings-path-manager-5.80.0.tgz +0 -0
  71. package/components/tryghost-slack-notifications-5.80.0.tgz +0 -0
  72. package/components/tryghost-staff-service-5.80.0.tgz +0 -0
  73. package/components/tryghost-stats-service-5.80.0.tgz +0 -0
  74. package/components/{tryghost-tiers-5.79.5.tgz → tryghost-tiers-5.80.0.tgz} +0 -0
  75. package/components/tryghost-update-check-service-5.80.0.tgz +0 -0
  76. package/components/tryghost-verification-trigger-5.80.0.tgz +0 -0
  77. package/components/tryghost-version-notifications-data-service-5.80.0.tgz +0 -0
  78. package/components/tryghost-webmentions-5.80.0.tgz +0 -0
  79. package/core/built/admin/assets/admin-x-settings/{CodeEditorView-b3cc8695.mjs → CodeEditorView-453ad684.mjs} +2 -2
  80. package/core/built/admin/assets/admin-x-settings/admin-x-settings.js +1 -1
  81. package/core/built/admin/assets/admin-x-settings/{index-426bc247.mjs → index-e0bcf3fa.mjs} +2 -2
  82. package/core/built/admin/assets/admin-x-settings/{index-ad7f71fe.mjs → index-e5a159b3.mjs} +3 -3
  83. package/core/built/admin/assets/admin-x-settings/{modals-199f6fb7.mjs → modals-601aa38c.mjs} +111 -112
  84. package/core/built/admin/assets/{chunk.524.d57a9527e0b3a8c8eca2.js → chunk.524.7a4d83ee591b8022ef58.js} +5 -5
  85. package/core/built/admin/assets/{chunk.582.1e6a11135a677a7684eb.js → chunk.582.709d41019645237a6018.js} +4 -4
  86. package/core/built/admin/assets/{ghost-07813a189c828a5814337fa4fbcb1e3f.js → ghost-ea7a51891dfca9b7a04aacfffe7dea4e.js} +4 -4
  87. package/core/built/admin/assets/koenig-lexical/koenig-lexical.js +2555 -2555
  88. package/core/built/admin/assets/koenig-lexical/koenig-lexical.umd.js +79 -79
  89. package/core/built/admin/index.html +3 -3
  90. package/core/frontend/helpers/get.js +9 -3
  91. package/core/frontend/helpers/tpl/content-cta.hbs +3 -3
  92. package/core/frontend/src/cards/css/audio.css +11 -10
  93. package/core/frontend/src/cards/css/bookmark.css +4 -4
  94. package/core/frontend/src/cards/css/file.css +16 -13
  95. package/core/frontend/src/cards/css/header_v2.css +15 -14
  96. package/core/frontend/src/cards/css/product.css +8 -8
  97. package/core/frontend/src/cards/css/signup.css +18 -16
  98. package/core/frontend/src/cards/css/video.css +3 -3
  99. package/core/server/api/endpoints/collections.js +1 -10
  100. package/core/server/api/endpoints/comments-members.js +1 -0
  101. package/core/server/api/endpoints/labels.js +1 -3
  102. package/core/server/api/endpoints/pages.js +8 -2
  103. package/core/server/api/endpoints/posts.js +8 -5
  104. package/core/server/api/endpoints/schedules.js +7 -2
  105. package/core/server/api/endpoints/settings.js +3 -5
  106. package/core/server/api/endpoints/slugs.js +1 -1
  107. package/core/server/api/endpoints/tags.js +1 -3
  108. package/core/server/api/endpoints/themes.js +2 -3
  109. package/core/server/api/endpoints/users.js +3 -1
  110. package/core/server/api/endpoints/utils/serializers/input/comments.js +14 -0
  111. package/core/server/services/comments/CommentsController.js +86 -16
  112. package/core/server/services/members/api.js +23 -5
  113. package/core/server/services/posts/post-scheduling-service.js +1 -1
  114. package/core/server/web/comments/routes.js +4 -3
  115. package/core/shared/config/defaults.json +1 -1
  116. package/package.json +148 -148
  117. package/yarn.lock +29 -29
  118. package/components/tryghost-adapter-cache-memory-ttl-5.79.5.tgz +0 -0
  119. package/components/tryghost-adapter-cache-redis-5.79.5.tgz +0 -0
  120. package/components/tryghost-adapter-manager-5.79.5.tgz +0 -0
  121. package/components/tryghost-announcement-bar-settings-5.79.5.tgz +0 -0
  122. package/components/tryghost-api-framework-5.79.5.tgz +0 -0
  123. package/components/tryghost-api-version-compatibility-service-5.79.5.tgz +0 -0
  124. package/components/tryghost-audience-feedback-5.79.5.tgz +0 -0
  125. package/components/tryghost-bookshelf-repository-5.79.5.tgz +0 -0
  126. package/components/tryghost-bootstrap-socket-5.79.5.tgz +0 -0
  127. package/components/tryghost-constants-5.79.5.tgz +0 -0
  128. package/components/tryghost-custom-theme-settings-service-5.79.5.tgz +0 -0
  129. package/components/tryghost-domain-events-5.79.5.tgz +0 -0
  130. package/components/tryghost-donations-5.79.5.tgz +0 -0
  131. package/components/tryghost-dynamic-routing-events-5.79.5.tgz +0 -0
  132. package/components/tryghost-email-addresses-5.79.5.tgz +0 -0
  133. package/components/tryghost-email-analytics-provider-mailgun-5.79.5.tgz +0 -0
  134. package/components/tryghost-email-analytics-service-5.79.5.tgz +0 -0
  135. package/components/tryghost-email-content-generator-5.79.5.tgz +0 -0
  136. package/components/tryghost-email-events-5.79.5.tgz +0 -0
  137. package/components/tryghost-email-service-5.79.5.tgz +0 -0
  138. package/components/tryghost-email-suppression-list-5.79.5.tgz +0 -0
  139. package/components/tryghost-express-dynamic-redirects-5.79.5.tgz +0 -0
  140. package/components/tryghost-external-media-inliner-5.79.5.tgz +0 -0
  141. package/components/tryghost-extract-api-key-5.79.5.tgz +0 -0
  142. package/components/tryghost-html-to-plaintext-5.79.5.tgz +0 -0
  143. package/components/tryghost-importer-handler-content-files-5.79.5.tgz +0 -0
  144. package/components/tryghost-in-memory-repository-5.79.5.tgz +0 -0
  145. package/components/tryghost-job-manager-5.79.5.tgz +0 -0
  146. package/components/tryghost-link-redirects-5.79.5.tgz +0 -0
  147. package/components/tryghost-link-replacer-5.79.5.tgz +0 -0
  148. package/components/tryghost-link-tracking-5.79.5.tgz +0 -0
  149. package/components/tryghost-magic-link-5.79.5.tgz +0 -0
  150. package/components/tryghost-mail-events-5.79.5.tgz +0 -0
  151. package/components/tryghost-mailgun-client-5.79.5.tgz +0 -0
  152. package/components/tryghost-member-attribution-5.79.5.tgz +0 -0
  153. package/components/tryghost-member-events-5.79.5.tgz +0 -0
  154. package/components/tryghost-members-csv-5.79.5.tgz +0 -0
  155. package/components/tryghost-members-events-service-5.79.5.tgz +0 -0
  156. package/components/tryghost-members-importer-5.79.5.tgz +0 -0
  157. package/components/tryghost-members-offers-5.79.5.tgz +0 -0
  158. package/components/tryghost-members-payments-5.79.5.tgz +0 -0
  159. package/components/tryghost-members-ssr-5.79.5.tgz +0 -0
  160. package/components/tryghost-mentions-email-report-5.79.5.tgz +0 -0
  161. package/components/tryghost-milestones-5.79.5.tgz +0 -0
  162. package/components/tryghost-model-to-domain-event-interceptor-5.79.5.tgz +0 -0
  163. package/components/tryghost-mw-api-version-mismatch-5.79.5.tgz +0 -0
  164. package/components/tryghost-mw-cache-control-5.79.5.tgz +0 -0
  165. package/components/tryghost-mw-error-handler-5.79.5.tgz +0 -0
  166. package/components/tryghost-mw-session-from-token-5.79.5.tgz +0 -0
  167. package/components/tryghost-mw-update-user-last-seen-5.79.5.tgz +0 -0
  168. package/components/tryghost-mw-version-match-5.79.5.tgz +0 -0
  169. package/components/tryghost-mw-vhost-5.79.5.tgz +0 -0
  170. package/components/tryghost-nql-filter-expansions-5.79.5.tgz +0 -0
  171. package/components/tryghost-oembed-service-5.79.5.tgz +0 -0
  172. package/components/tryghost-package-json-5.79.5.tgz +0 -0
  173. package/components/tryghost-post-events-5.79.5.tgz +0 -0
  174. package/components/tryghost-post-revisions-5.79.5.tgz +0 -0
  175. package/components/tryghost-posts-service-5.79.5.tgz +0 -0
  176. package/components/tryghost-recommendations-5.79.5.tgz +0 -0
  177. package/components/tryghost-referrers-5.79.5.tgz +0 -0
  178. package/components/tryghost-security-5.79.5.tgz +0 -0
  179. package/components/tryghost-session-service-5.79.5.tgz +0 -0
  180. package/components/tryghost-settings-path-manager-5.79.5.tgz +0 -0
  181. package/components/tryghost-slack-notifications-5.79.5.tgz +0 -0
  182. package/components/tryghost-staff-service-5.79.5.tgz +0 -0
  183. package/components/tryghost-stats-service-5.79.5.tgz +0 -0
  184. package/components/tryghost-update-check-service-5.79.5.tgz +0 -0
  185. package/components/tryghost-verification-trigger-5.79.5.tgz +0 -0
  186. package/components/tryghost-version-notifications-data-service-5.79.5.tgz +0 -0
  187. package/components/tryghost-webmentions-5.79.5.tgz +0 -0
@@ -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%22cdnUrl%22%3A%22%22%2C%22editorUrl%22%3A%22%22%2C%22rootURL%22%3A%22%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%225.79%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22ember-websockets%22%3A%7B%22socketIO%22%3Atrue%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%2C%22editorFilename%22%3A%22koenig-lexical.umd.js%22%2C%22editorHash%22%3A%2270b7fc0660%22%2C%22adminXDemoFilename%22%3A%22admin-x-demo.js%22%2C%22adminXDemoHash%22%3A%22d3a1c163cf%22%2C%22adminXSettingsFilename%22%3A%22admin-x-settings.js%22%2C%22adminXSettingsHash%22%3A%22ee4b65b238%22%7D" />
11
+ <meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22cdnUrl%22%3A%22%22%2C%22editorUrl%22%3A%22%22%2C%22rootURL%22%3A%22%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%225.80%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22ember-websockets%22%3A%7B%22socketIO%22%3Atrue%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%2C%22editorFilename%22%3A%22koenig-lexical.umd.js%22%2C%22editorHash%22%3A%22c1a8c8a94f%22%2C%22adminXDemoFilename%22%3A%22admin-x-demo.js%22%2C%22adminXDemoHash%22%3A%22d3a1c163cf%22%2C%22adminXSettingsFilename%22%3A%22admin-x-settings.js%22%2C%22adminXSettingsHash%22%3A%22f5eb003aa4%22%7D" />
12
12
 
13
13
  <meta name="HandheldFriendly" content="True" />
14
14
  <meta name="MobileOptimized" content="320" />
@@ -58,7 +58,7 @@
58
58
 
59
59
  <script src="assets/vendor-6b83da0c6e6fede335947219c59e1543.js"></script>
60
60
  <script src="assets/chunk.763.6b160e403073ecabbfa6.js"></script>
61
- <script src="assets/chunk.524.d57a9527e0b3a8c8eca2.js"></script>
62
- <script src="assets/ghost-07813a189c828a5814337fa4fbcb1e3f.js"></script>
61
+ <script src="assets/chunk.524.7a4d83ee591b8022ef58.js"></script>
62
+ <script src="assets/ghost-ea7a51891dfca9b7a04aacfffe7dea4e.js"></script>
63
63
  </body>
64
64
  </html>
@@ -2,7 +2,7 @@
2
2
  // Usage: `{{#get "posts" limit="5"}}`, `{{#get "tags" limit="all"}}`
3
3
  // Fetches data from the API
4
4
  const {config, api, prepareContextResource} = require('../services/proxy');
5
- const {hbs} = require('../services/handlebars');
5
+ const {hbs, SafeString} = require('../services/handlebars');
6
6
 
7
7
  const logging = require('@tryghost/logging');
8
8
  const errors = require('@tryghost/errors');
@@ -154,7 +154,7 @@ async function makeAPICall(resource, controllerName, action, apiOptions) {
154
154
  }
155
155
  }));
156
156
 
157
- resolve({[resource]: []});
157
+ resolve({[resource]: [], '@@ABORTED_GET_HELPER@@': true});
158
158
  }, threshold);
159
159
  });
160
160
 
@@ -242,10 +242,16 @@ module.exports = async function get(resource, options) {
242
242
  }
243
243
 
244
244
  // Call the main template function
245
- return options.fn(response, {
245
+ const rendered = options.fn(response, {
246
246
  data: data,
247
247
  blockParams: blockParams
248
248
  });
249
+
250
+ if (response['@@ABORTED_GET_HELPER@@']) {
251
+ return new SafeString(`<span data-aborted-get-helper>Could not load content</span>` + rendered);
252
+ } else {
253
+ return rendered;
254
+ }
249
255
  });
250
256
  return result;
251
257
  } catch (error) {
@@ -11,10 +11,10 @@
11
11
  <h2>This {{#is "page"}}page{{else}}post{{/is}} is for subscribers on the {{tiers}} only </h2>
12
12
  {{/has}}
13
13
  {{#if @member}}
14
- <a class="gh-btn" data-portal="account/plans" style="color:{{@site.accent_color}}">Upgrade your account</a>
14
+ <a class="gh-btn" data-portal="account/plans" href="#/portal/account/plans" style="color:{{@site.accent_color}}">Upgrade your account</a>
15
15
  {{else}}
16
- <a class="gh-btn" data-portal="signup" style="color:{{@site.accent_color}}">Subscribe now</a>
17
- <p><small>Already have an account? <a data-portal="signin">Sign in</a></small></p>
16
+ <a class="gh-btn" data-portal="signup" href="#/portal/signup" style="color:{{@site.accent_color}}">Subscribe now</a>
17
+ <p><small>Already have an account? <a data-portal="signin" href="#/portal/signin">Sign in</a></small></p>
18
18
  {{/if}}
19
19
  </div>
20
20
  </aside>
@@ -7,7 +7,8 @@
7
7
  display: flex;
8
8
  width: 100%;
9
9
  min-height: 96px;
10
- border-radius: 3px;
10
+ border-radius: 6px;
11
+ padding: 4px;
11
12
  box-shadow: inset 0 0 0 1px rgba(124, 139, 154, 0.25);
12
13
  }
13
14
 
@@ -25,7 +26,7 @@
25
26
  background: transparent;
26
27
  object-fit: cover;
27
28
  aspect-ratio: 1/1;
28
- border-radius: 2px;
29
+ border-radius: 3px;
29
30
  }
30
31
 
31
32
  .kg-audio-thumbnail.placeholder {
@@ -55,8 +56,8 @@
55
56
  padding: 8px 12px;
56
57
  border: none;
57
58
  font-family: inherit;
58
- font-size: 1.15em;
59
- font-weight: 700;
59
+ font-size: 16px;
60
+ font-weight: 600;
60
61
  line-height: 1.15em;
61
62
  background: transparent;
62
63
  }
@@ -72,9 +73,9 @@
72
73
  min-width: 38px;
73
74
  padding: 0 4px;
74
75
  font-family: inherit;
75
- font-size: .85em;
76
+ font-size: 12.5px;
76
77
  font-weight: 500;
77
- line-height: 1.4em;
78
+ line-height: 1em;
78
79
  white-space: nowrap;
79
80
  }
80
81
 
@@ -82,9 +83,9 @@
82
83
  width: 56px;
83
84
  color: #ababab;
84
85
  font-family: inherit;
85
- font-size: .85em;
86
+ font-size: 12.5px;
86
87
  font-weight: 500;
87
- line-height: 1.4em;
88
+ line-height: 1em;
88
89
  white-space: nowrap;
89
90
  }
90
91
 
@@ -127,9 +128,9 @@
127
128
  min-width: 37px;
128
129
  padding: 0 4px;
129
130
  font-family: inherit;
130
- font-size: .85em;
131
+ font-size: 12.5px;
131
132
  font-weight: 600;
132
- line-height: 1.4em;
133
+ line-height: 1em;
133
134
  text-align: left;
134
135
  background: transparent;
135
136
  white-space: nowrap;
@@ -13,7 +13,7 @@
13
13
  .kg-bookmark-card a.kg-bookmark-container:hover {
14
14
  display: flex;
15
15
  text-decoration: none;
16
- border-radius: 3px;
16
+ border-radius: 6px;
17
17
  border: 1px solid rgb(124 139 154 / 25%);
18
18
  overflow: hidden;
19
19
  color: inherit;
@@ -31,14 +31,14 @@
31
31
  }
32
32
 
33
33
  .kg-bookmark-title {
34
- font-size: 1.5rem;
34
+ font-size: 15px;
35
35
  line-height: 1.4em;
36
36
  font-weight: 600;
37
37
  }
38
38
 
39
39
  .kg-bookmark-description {
40
40
  display: -webkit-box;
41
- font-size: 1.4rem;
41
+ font-size: 14px;
42
42
  line-height: 1.5em;
43
43
  margin-top: 3px;
44
44
  font-weight: 400;
@@ -54,7 +54,7 @@
54
54
  align-items: center;
55
55
  margin-top: 22px;
56
56
  width: 100%;
57
- font-size: 1.4rem;
57
+ font-size: 14px;
58
58
  font-weight: 500;
59
59
  white-space: nowrap;
60
60
  }
@@ -12,10 +12,10 @@
12
12
  align-items: stretch;
13
13
  justify-content: space-between;
14
14
  color: inherit;
15
- padding: 6px;
15
+ padding: 12px;
16
16
  min-height: 92px;
17
17
  border: 1px solid rgb(124 139 154 / 25%);
18
- border-radius: 3px;
18
+ border-radius: 5px;
19
19
  transition: all ease-in-out 0.35s;
20
20
  text-decoration: none;
21
21
  width: 100%;
@@ -34,26 +34,27 @@
34
34
  }
35
35
 
36
36
  .kg-file-card-title {
37
- font-size: 1.15em;
38
- font-weight: 700;
37
+ font-size: 16px;
38
+ font-weight: 600;
39
39
  line-height: 1.3em;
40
40
  }
41
41
 
42
42
  .kg-file-card-caption {
43
- font-size: 0.95em;
43
+ font-size: 14px;
44
44
  line-height: 1.3em;
45
- opacity: 0.6;
45
+ opacity: 0.7;
46
46
  }
47
47
 
48
48
  .kg-file-card-title + .kg-file-card-caption {
49
- margin-top: -3px;
49
+ flex-grow: 1;
50
+ margin-top: 3px;
50
51
  }
51
52
 
52
53
  .kg-file-card-metadata {
53
54
  display: inline;
54
- font-size: 0.825em;
55
+ font-size: 14px;
55
56
  line-height: 1.3em;
56
- margin-top: 2px;
57
+ margin-top: 5px;
57
58
  }
58
59
 
59
60
  .kg-file-card-filename {
@@ -63,14 +64,15 @@
63
64
 
64
65
  .kg-file-card-filesize {
65
66
  display: inline-block;
66
- font-size: 0.925em;
67
+ font-size: 14px;
67
68
  opacity: 0.6;
68
69
  }
69
70
 
70
71
  .kg-file-card-filesize:before {
71
72
  display: inline-block;
72
73
  content: "\2022";
73
- margin-right: 4px;
74
+ margin-left: 6px;
75
+ margin-right: 6px;
74
76
  }
75
77
 
76
78
  .kg-file-card-icon {
@@ -81,6 +83,7 @@
81
83
  width: 80px;
82
84
  min-width: 80px;
83
85
  height: 100%;
86
+ min-height: 80px;
84
87
  }
85
88
 
86
89
  .kg-file-card-icon:before {
@@ -94,7 +97,7 @@
94
97
  background: currentColor;
95
98
  opacity: 0.06;
96
99
  transition: opacity ease-in-out 0.35s;
97
- border-radius: 2px;
100
+ border-radius: 3px;
98
101
  }
99
102
 
100
103
  .kg-file-card a.kg-file-card-container:hover .kg-file-card-icon:before {
@@ -123,7 +126,7 @@
123
126
  }
124
127
 
125
128
  .kg-file-card-small .kg-file-card-metadata {
126
- font-size: 1.0em;
129
+ font-size: 14px;
127
130
  margin-top: 0;
128
131
  }
129
132
 
@@ -104,7 +104,7 @@
104
104
 
105
105
  .kg-content-wide .kg-header-card-content .kg-header-card-image {
106
106
  height: 100%;
107
- padding: 8rem 0;
107
+ padding: 5.6em 0;
108
108
  object-fit: contain;
109
109
  }
110
110
 
@@ -112,22 +112,22 @@
112
112
 
113
113
  .kg-header-card h2.kg-header-card-heading {
114
114
  margin: 0;
115
- font-size: clamp(2.4rem, 4vw, 3.6rem);
115
+ font-size: clamp(1.7em, 4vw, 2.5em);
116
116
  font-weight: 700;
117
- line-height: 1em;
117
+ line-height: 1.05em;
118
118
  letter-spacing: -0.01em;
119
119
  }
120
120
 
121
121
  .kg-header-card.kg-width-wide h2.kg-header-card-heading {
122
- font-size: clamp(2.4rem, 5vw, 4.8rem);
122
+ font-size: clamp(1.7em, 5vw, 3.3em);
123
123
  }
124
124
 
125
125
  .kg-header-card.kg-width-full h2.kg-header-card-heading {
126
- font-size: clamp(2.8rem, 5.6vw, 6rem);
126
+ font-size: clamp(1.9em, 5.6vw, 4.2em);
127
127
  }
128
128
 
129
129
  .kg-header-card.kg-width-full.kg-layout-split h2.kg-header-card-heading {
130
- font-size: clamp(2.8rem, 4vw, 4.8rem);
130
+ font-size: clamp(1.9em, 4vw, 3.3em);
131
131
  }
132
132
 
133
133
  /* Subheading */
@@ -139,7 +139,7 @@
139
139
  .kg-header-card .kg-header-card-subheading {
140
140
  max-width: 40em;
141
141
  margin: 0;
142
- font-size: clamp(1.05em, 2vw, 2rem);
142
+ font-size: clamp(1.05em, 2vw, 1.4em);
143
143
  font-weight: 500;
144
144
  line-height: 1.2em;
145
145
  }
@@ -153,23 +153,24 @@
153
153
  }
154
154
 
155
155
  .kg-header-card.kg-width-wide .kg-header-card-subheading {
156
- font-size: clamp(1.05em, 2vw, 2.2rem);
156
+ font-size: clamp(1.05em, 2vw, 1.55em);
157
157
  }
158
158
 
159
159
  .kg-header-card.kg-width-full .kg-header-card-subheading:not(.kg-layout-split .kg-header-card-subheading) {
160
160
  max-width: min(65vmax, 1200px);
161
- font-size: clamp(1.05em, 2vw, 2.4rem);
161
+ font-size: clamp(1.05em, 2vw, 1.7em);
162
162
  }
163
163
 
164
164
  .kg-header-card.kg-width-full.kg-layout-split .kg-header-card-subheading {
165
- font-size: clamp(1.05em, 2vw, 2.2rem);
165
+ font-size: clamp(1.05em, 2vw, 1.55em);
166
166
  }
167
167
 
168
168
  .kg-header-card.kg-v2 .kg-header-card-button {
169
169
  display: flex;
170
170
  position: relative;
171
171
  align-items: center;
172
- height: 4.6rem;
172
+ height: 2.9em;
173
+ min-height: 46px;
173
174
  padding: 0 1.2em;
174
175
  outline: none;
175
176
  border: none;
@@ -243,15 +244,15 @@
243
244
  }
244
245
 
245
246
  .kg-content-wide .kg-header-card-content .kg-header-card-image {
246
- padding: 2.4rem 0 0;
247
+ padding: 1.7em 0 0;
247
248
  }
248
249
 
249
250
  .kg-content-wide.kg-swapped .kg-header-card-content .kg-header-card-image {
250
- padding: 0 0 2.4rem;
251
+ padding: 0 0 1.7em;
251
252
  }
252
253
 
253
254
  .kg-header-card.kg-v2 .kg-header-card-button {
254
- height: 4.2rem;
255
+ height: 2.9em;
255
256
  }
256
257
 
257
258
  .kg-header-card.kg-v2.kg-width-wide .kg-header-card-button,
@@ -36,8 +36,8 @@
36
36
  .kg-product-card h4.kg-product-card-title {
37
37
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
38
38
  text-decoration: none;
39
- font-weight: 700;
40
- font-size: 1.4em;
39
+ font-weight: 600;
40
+ font-size: 21px;
41
41
  margin-top: 0;
42
42
  margin-bottom: 0;
43
43
  line-height: 1.15em;
@@ -51,7 +51,7 @@
51
51
  .kg-product-card .kg-product-card-description ol,
52
52
  .kg-product-card .kg-product-card-description ul {
53
53
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
54
- font-size: 0.95em;
54
+ font-size: 14px;
55
55
  line-height: 1.5em;
56
56
  opacity: .7;
57
57
  margin-bottom: 0;
@@ -94,7 +94,7 @@
94
94
  }
95
95
 
96
96
  .kg-product-card-rating-star {
97
- height: 28px;
97
+ height: 20px;
98
98
  width: 20px;
99
99
  }
100
100
 
@@ -116,14 +116,14 @@
116
116
  position: static;
117
117
  align-items: center;
118
118
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
119
- font-size: 0.95em;
119
+ font-size: 14px;
120
120
  font-weight: 600;
121
121
  line-height: 1em;
122
122
  text-decoration: none;
123
123
  width: 100%;
124
- height: 2.4em;
125
- border-radius: 5px;
126
- padding: 0 1.2em;
124
+ height: 38px;
125
+ border-radius: 6px;
126
+ padding: 0 12px;
127
127
  transition: opacity 0.2s ease-in-out;
128
128
  }
129
129
 
@@ -97,7 +97,7 @@
97
97
 
98
98
  .kg-content-wide .kg-signup-card-content .kg-signup-card-image {
99
99
  height: 100%;
100
- padding: 8rem 0;
100
+ padding: 5.6em 0;
101
101
  object-fit: contain;
102
102
  }
103
103
 
@@ -105,22 +105,22 @@
105
105
 
106
106
  .kg-signup-card h2.kg-signup-card-heading {
107
107
  margin: 0;
108
- font-size: clamp(2.4rem, 4vw, 3.6rem);
108
+ font-size: clamp(1.7em, 4vw, 2.5em);
109
109
  font-weight: 700;
110
- line-height: 1em;
110
+ line-height: 1.05em;
111
111
  letter-spacing: -0.01em;
112
112
  }
113
113
 
114
114
  .kg-signup-card.kg-width-wide h2.kg-signup-card-heading {
115
- font-size: clamp(2.4rem, 5vw, 4.8rem);
115
+ font-size: clamp(1.7em, 5vw, 3.3em);
116
116
  }
117
117
 
118
118
  .kg-signup-card.kg-width-full h2.kg-signup-card-heading {
119
- font-size: clamp(2.8rem, 5.6vw, 6rem);
119
+ font-size: clamp(1.9em, 5.6vw, 4.2em);
120
120
  }
121
121
 
122
122
  .kg-signup-card.kg-width-full.kg-layout-split h2.kg-signup-card-heading {
123
- font-size: clamp(2.8rem, 4vw, 4.8rem);
123
+ font-size: clamp(1.9em, 4vw, 3.3em);
124
124
  }
125
125
 
126
126
  /* Subheading */
@@ -132,7 +132,7 @@
132
132
  .kg-signup-card .kg-signup-card-subheading {
133
133
  max-width: 40em;
134
134
  margin: 0;
135
- font-size: clamp(1.05em, 2vw, 2rem);
135
+ font-size: clamp(1.05em, 2vw, 1.4em);
136
136
  font-weight: 500;
137
137
  line-height: 1.2em;
138
138
  }
@@ -146,16 +146,16 @@
146
146
  }
147
147
 
148
148
  .kg-signup-card.kg-width-wide .kg-signup-card-subheading {
149
- font-size: clamp(1.05em, 2vw, 2.2rem);
149
+ font-size: clamp(1.05em, 2vw, 1.55em);
150
150
  }
151
151
 
152
152
  .kg-signup-card.kg-width-full .kg-signup-card-subheading:not(.kg-layout-split .kg-signup-card-subheading) {
153
153
  max-width: min(65vmax, 1200px);
154
- font-size: clamp(1.05em, 2vw, 2.4rem);
154
+ font-size: clamp(1.05em, 2vw, 1.7em);
155
155
  }
156
156
 
157
157
  .kg-signup-card.kg-width-full.kg-layout-split .kg-signup-card-subheading {
158
- font-size: clamp(1.05em, 2vw, 2.2rem);
158
+ font-size: clamp(1.05em, 2vw, 1.55em);
159
159
  }
160
160
 
161
161
  /* Subscribe form */
@@ -203,7 +203,8 @@
203
203
 
204
204
  .kg-signup-card-input {
205
205
  width: 100%;
206
- height: 4.6rem;
206
+ height: 2.9em;
207
+ min-height: 46px;
207
208
  margin: 0 3px 0 0;
208
209
  padding: 12px 16px;
209
210
  border: none;
@@ -220,7 +221,8 @@
220
221
  display: flex;
221
222
  position: relative;
222
223
  align-items: center;
223
- height: 4.6rem;
224
+ height: 2.9em;
225
+ min-height: 46px;
224
226
  padding: 0 1.2em;
225
227
  outline: none;
226
228
  border: none;
@@ -355,21 +357,21 @@
355
357
  }
356
358
 
357
359
  .kg-content-wide .kg-signup-card-content .kg-signup-card-image {
358
- padding: 2.4rem 0 0;
360
+ padding: 1.7em 0 0;
359
361
  }
360
362
 
361
363
  .kg-content-wide.kg-swapped .kg-signup-card-content .kg-signup-card-image {
362
- padding: 0 0 2.4rem;
364
+ padding: 0 0 1.7em;
363
365
  }
364
366
 
365
367
  .kg-signup-card-input {
366
- height: 4.2rem;
368
+ height: 2.9em;
367
369
  padding: 6px 12px;
368
370
  font-size: 1em;
369
371
  }
370
372
 
371
373
  .kg-signup-card-button {
372
- height: 4.2rem;
374
+ height: 2.9em;
373
375
  }
374
376
 
375
377
  .kg-signup-card.kg-width-wide .kg-signup-card-button,
@@ -82,7 +82,7 @@
82
82
  padding: 0 4px;
83
83
  color: #fff;
84
84
  font-family: inherit;
85
- font-size: .85em;
85
+ font-size: 12.5px;
86
86
  font-weight: 500;
87
87
  line-height: 1.4em;
88
88
  white-space: nowrap;
@@ -91,7 +91,7 @@
91
91
  .kg-video-time {
92
92
  color: rgba(255, 255, 255, 0.6);
93
93
  font-family: inherit;
94
- font-size: .85em;
94
+ font-size: 12.5px;
95
95
  font-weight: 500;
96
96
  line-height: 1.4em;
97
97
  white-space: nowrap;
@@ -142,7 +142,7 @@
142
142
  padding: 0 4px;
143
143
  color: #fff;
144
144
  font-family: inherit;
145
- font-size: .85em;
145
+ font-size: 12.5px;
146
146
  font-weight: 600;
147
147
  line-height: 1.4em;
148
148
  text-align: left;
@@ -87,7 +87,7 @@ module.exports = {
87
87
 
88
88
  edit: {
89
89
  headers: {
90
- cacheInvalidate: false
90
+ cacheInvalidate: true
91
91
  },
92
92
  options: [
93
93
  'id'
@@ -111,15 +111,6 @@ module.exports = {
111
111
  });
112
112
  }
113
113
 
114
- // @NOTE: cache invalidation has to be done manually for now
115
- // because the model's wasChanged is not returned from
116
- // the service using in-memory repository layer
117
- // if (model.wasChanged()) {
118
- this.headers.cacheInvalidate = true;
119
- // } else {
120
- // this.headers.cacheInvalidate = false;
121
- // }
122
-
123
114
  return model;
124
115
  }
125
116
  },
@@ -10,6 +10,7 @@ module.exports = {
10
10
  cacheInvalidate: false
11
11
  },
12
12
  options: [
13
+ 'post_id',
13
14
  'include',
14
15
  'page',
15
16
  'limit',
@@ -129,9 +129,7 @@ module.exports = {
129
129
  }
130
130
 
131
131
  if (model.wasChanged()) {
132
- this.headers.cacheInvalidate = true;
133
- } else {
134
- this.headers.cacheInvalidate = false;
132
+ frame.setHeader('X-Cache-Invalidate', '/*');
135
133
  }
136
134
 
137
135
  return model;
@@ -122,7 +122,7 @@ module.exports = {
122
122
  return models.Post.add(frame.data.pages[0], frame.options)
123
123
  .then((model) => {
124
124
  if (model.get('status') === 'published') {
125
- this.headers.cacheInvalidate = true;
125
+ frame.setHeader('X-Cache-Invalidate', '/*');
126
126
  }
127
127
 
128
128
  return model;
@@ -166,7 +166,13 @@ module.exports = {
166
166
  async query(frame) {
167
167
  const model = await models.Post.edit(frame.data.pages[0], frame.options);
168
168
 
169
- this.headers.cacheInvalidate = postsService.handleCacheInvalidation(model);
169
+ const cacheInvalidation = postsService.handleCacheInvalidation(model);
170
+
171
+ if (cacheInvalidation === true) {
172
+ frame.setHeader('X-Cache-Invalidate', '/*');
173
+ } else if (cacheInvalidation.value) {
174
+ frame.setHeader('X-Cache-Invalidate', cacheInvalidation.value);
175
+ }
170
176
 
171
177
  return model;
172
178
  }
@@ -167,10 +167,8 @@ module.exports = {
167
167
  query(frame) {
168
168
  return models.Post.add(frame.data.posts[0], frame.options)
169
169
  .then((model) => {
170
- if (model.get('status') !== 'published') {
171
- this.headers.cacheInvalidate = false;
172
- } else {
173
- this.headers.cacheInvalidate = true;
170
+ if (model.get('status') === 'published') {
171
+ frame.setHeader('X-Cache-Invalidate', '/*');
174
172
  }
175
173
 
176
174
  return model;
@@ -216,7 +214,12 @@ module.exports = {
216
214
  async query(frame) {
217
215
  let model = await postsService.editPost(frame, {
218
216
  eventHandler: (event, dto) => {
219
- this.headers.cacheInvalidate = getCacheHeaderFromEventString(event, dto);
217
+ const cacheInvalidate = getCacheHeaderFromEventString(event, dto);
218
+ if (cacheInvalidate === true) {
219
+ frame.setHeader('X-Cache-Invalidate', '/*');
220
+ } else if (cacheInvalidate?.value) {
221
+ frame.setHeader('X-Cache-Invalidate', cacheInvalidate.value);
222
+ }
220
223
  }
221
224
  });
222
225
 
@@ -40,8 +40,13 @@ module.exports = {
40
40
  };
41
41
 
42
42
  const {scheduledResource, preScheduledResource} = await postSchedulingService.publish(resourceType, frame.options.id, frame.data.force, options);
43
- const cacheInvalidate = postSchedulingService.handleCacheInvalidation(scheduledResource, preScheduledResource);
44
- this.headers.cacheInvalidate = cacheInvalidate;
43
+ const cacheInvalidation = postSchedulingService.handleCacheInvalidation(scheduledResource, preScheduledResource);
44
+
45
+ if (cacheInvalidation === true) {
46
+ frame.setHeader('X-Cache-Invalidate', '/*');
47
+ } else if (cacheInvalidation.value) {
48
+ frame.setHeader('X-Cache-Invalidate', cacheInvalidation.value);
49
+ }
45
50
 
46
51
  const response = {};
47
52
  response[resourceType] = [scheduledResource];