ghost 5.66.1 → 5.67.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 (217) hide show
  1. package/components/tryghost-adapter-cache-memory-ttl-5.67.0.tgz +0 -0
  2. package/components/{tryghost-adapter-cache-redis-5.66.1.tgz → tryghost-adapter-cache-redis-5.67.0.tgz} +0 -0
  3. package/components/tryghost-adapter-manager-5.67.0.tgz +0 -0
  4. package/components/tryghost-announcement-bar-settings-5.67.0.tgz +0 -0
  5. package/components/tryghost-api-framework-5.67.0.tgz +0 -0
  6. package/components/tryghost-api-version-compatibility-service-5.67.0.tgz +0 -0
  7. package/components/tryghost-audience-feedback-5.67.0.tgz +0 -0
  8. package/components/tryghost-bookshelf-repository-5.67.0.tgz +0 -0
  9. package/components/{tryghost-bootstrap-socket-5.66.1.tgz → tryghost-bootstrap-socket-5.67.0.tgz} +0 -0
  10. package/components/tryghost-collections-5.67.0.tgz +0 -0
  11. package/components/tryghost-constants-5.67.0.tgz +0 -0
  12. package/components/{tryghost-custom-theme-settings-service-5.66.1.tgz → tryghost-custom-theme-settings-service-5.67.0.tgz} +0 -0
  13. package/components/{tryghost-data-generator-5.66.1.tgz → tryghost-data-generator-5.67.0.tgz} +0 -0
  14. package/components/tryghost-domain-events-5.67.0.tgz +0 -0
  15. package/components/tryghost-donations-5.67.0.tgz +0 -0
  16. package/components/tryghost-dynamic-routing-events-5.67.0.tgz +0 -0
  17. package/components/tryghost-email-analytics-provider-mailgun-5.67.0.tgz +0 -0
  18. package/components/{tryghost-email-analytics-service-5.66.1.tgz → tryghost-email-analytics-service-5.67.0.tgz} +0 -0
  19. package/components/tryghost-email-content-generator-5.67.0.tgz +0 -0
  20. package/components/tryghost-email-events-5.67.0.tgz +0 -0
  21. package/components/{tryghost-email-service-5.66.1.tgz → tryghost-email-service-5.67.0.tgz} +0 -0
  22. package/components/tryghost-email-suppression-list-5.67.0.tgz +0 -0
  23. package/components/tryghost-event-aware-cache-wrapper-5.67.0.tgz +0 -0
  24. package/components/tryghost-express-dynamic-redirects-5.67.0.tgz +0 -0
  25. package/components/tryghost-external-media-inliner-5.67.0.tgz +0 -0
  26. package/components/tryghost-extract-api-key-5.67.0.tgz +0 -0
  27. package/components/{tryghost-html-to-plaintext-5.66.1.tgz → tryghost-html-to-plaintext-5.67.0.tgz} +0 -0
  28. package/components/tryghost-i18n-5.67.0.tgz +0 -0
  29. package/components/tryghost-importer-handler-content-files-5.67.0.tgz +0 -0
  30. package/components/tryghost-importer-revue-5.67.0.tgz +0 -0
  31. package/components/{tryghost-in-memory-repository-5.66.1.tgz → tryghost-in-memory-repository-5.67.0.tgz} +0 -0
  32. package/components/{tryghost-job-manager-5.66.1.tgz → tryghost-job-manager-5.67.0.tgz} +0 -0
  33. package/components/{tryghost-link-redirects-5.66.1.tgz → tryghost-link-redirects-5.67.0.tgz} +0 -0
  34. package/components/tryghost-link-replacer-5.67.0.tgz +0 -0
  35. package/components/{tryghost-link-tracking-5.66.1.tgz → tryghost-link-tracking-5.67.0.tgz} +0 -0
  36. package/components/tryghost-magic-link-5.67.0.tgz +0 -0
  37. package/components/{tryghost-mail-events-5.66.1.tgz → tryghost-mail-events-5.67.0.tgz} +0 -0
  38. package/components/{tryghost-mailgun-client-5.66.1.tgz → tryghost-mailgun-client-5.67.0.tgz} +0 -0
  39. package/components/{tryghost-member-attribution-5.66.1.tgz → tryghost-member-attribution-5.67.0.tgz} +0 -0
  40. package/components/tryghost-member-events-5.67.0.tgz +0 -0
  41. package/components/{tryghost-members-api-5.66.1.tgz → tryghost-members-api-5.67.0.tgz} +0 -0
  42. package/components/{tryghost-members-csv-5.66.1.tgz → tryghost-members-csv-5.67.0.tgz} +0 -0
  43. package/components/{tryghost-members-events-service-5.66.1.tgz → tryghost-members-events-service-5.67.0.tgz} +0 -0
  44. package/components/tryghost-members-importer-5.67.0.tgz +0 -0
  45. package/components/{tryghost-members-offers-5.66.1.tgz → tryghost-members-offers-5.67.0.tgz} +0 -0
  46. package/components/tryghost-members-payments-5.67.0.tgz +0 -0
  47. package/components/tryghost-members-ssr-5.67.0.tgz +0 -0
  48. package/components/{tryghost-members-stripe-service-5.66.1.tgz → tryghost-members-stripe-service-5.67.0.tgz} +0 -0
  49. package/components/tryghost-mentions-email-report-5.67.0.tgz +0 -0
  50. package/components/tryghost-milestones-5.67.0.tgz +0 -0
  51. package/components/tryghost-minifier-5.67.0.tgz +0 -0
  52. package/components/tryghost-model-to-domain-event-interceptor-5.67.0.tgz +0 -0
  53. package/components/tryghost-mw-api-version-mismatch-5.67.0.tgz +0 -0
  54. package/components/tryghost-mw-cache-control-5.67.0.tgz +0 -0
  55. package/components/{tryghost-mw-error-handler-5.66.1.tgz → tryghost-mw-error-handler-5.67.0.tgz} +0 -0
  56. package/components/tryghost-mw-session-from-token-5.67.0.tgz +0 -0
  57. package/components/tryghost-mw-update-user-last-seen-5.67.0.tgz +0 -0
  58. package/components/tryghost-mw-version-match-5.67.0.tgz +0 -0
  59. package/components/tryghost-mw-vhost-5.67.0.tgz +0 -0
  60. package/components/tryghost-nql-filter-expansions-5.67.0.tgz +0 -0
  61. package/components/tryghost-oembed-service-5.67.0.tgz +0 -0
  62. package/components/tryghost-package-json-5.67.0.tgz +0 -0
  63. package/components/{tryghost-post-events-5.66.1.tgz → tryghost-post-events-5.67.0.tgz} +0 -0
  64. package/components/tryghost-post-revisions-5.67.0.tgz +0 -0
  65. package/components/tryghost-posts-service-5.67.0.tgz +0 -0
  66. package/components/tryghost-recommendations-5.67.0.tgz +0 -0
  67. package/components/tryghost-referrers-5.67.0.tgz +0 -0
  68. package/components/{tryghost-security-5.66.1.tgz → tryghost-security-5.67.0.tgz} +0 -0
  69. package/components/tryghost-session-service-5.67.0.tgz +0 -0
  70. package/components/{tryghost-settings-path-manager-5.66.1.tgz → tryghost-settings-path-manager-5.67.0.tgz} +0 -0
  71. package/components/tryghost-slack-notifications-5.67.0.tgz +0 -0
  72. package/components/tryghost-staff-service-5.67.0.tgz +0 -0
  73. package/components/tryghost-stats-service-5.67.0.tgz +0 -0
  74. package/components/tryghost-tiers-5.67.0.tgz +0 -0
  75. package/components/{tryghost-update-check-service-5.66.1.tgz → tryghost-update-check-service-5.67.0.tgz} +0 -0
  76. package/components/tryghost-verification-trigger-5.67.0.tgz +0 -0
  77. package/components/tryghost-version-notifications-data-service-5.67.0.tgz +0 -0
  78. package/components/tryghost-webmentions-5.67.0.tgz +0 -0
  79. package/content/themes/casper/assets/css/screen.css +0 -4
  80. package/content/themes/source/LICENSE +22 -0
  81. package/content/themes/source/README.md +65 -0
  82. package/content/themes/source/assets/built/screen.css +2 -0
  83. package/content/themes/source/assets/built/screen.css.map +1 -0
  84. package/content/themes/source/assets/built/source.js +2 -0
  85. package/content/themes/source/assets/built/source.js.map +1 -0
  86. package/content/themes/source/assets/css/screen.css +3206 -0
  87. package/content/themes/source/assets/fonts/eb-garamond-italic.woff2 +0 -0
  88. package/content/themes/source/assets/fonts/eb-garamond-roman.woff2 +0 -0
  89. package/content/themes/source/assets/fonts/inter-roman.woff2 +0 -0
  90. package/content/themes/source/assets/fonts/jetbrains-mono-italic.woff2 +0 -0
  91. package/content/themes/source/assets/fonts/jetbrains-mono-roman.woff2 +0 -0
  92. package/content/themes/source/assets/images/default-skin.png +0 -0
  93. package/content/themes/source/assets/images/default-skin.svg +1 -0
  94. package/content/themes/source/assets/images/preloader.gif +0 -0
  95. package/content/themes/source/assets/js/casper.js +46 -0
  96. package/content/themes/source/assets/js/dropdown.js +86 -0
  97. package/content/themes/source/assets/js/lib/imagesloaded.pkgd.min.js +7 -0
  98. package/content/themes/source/assets/js/lib/photoswipe-ui-default.min.js +4 -0
  99. package/content/themes/source/assets/js/lib/photoswipe.min.js +4 -0
  100. package/content/themes/source/assets/js/lib/reframe.min.js +1 -0
  101. package/content/themes/source/assets/js/lightbox.js +103 -0
  102. package/content/themes/source/assets/js/pagination.js +95 -0
  103. package/content/themes/source/author.hbs +43 -0
  104. package/content/themes/source/default.hbs +65 -0
  105. package/content/themes/source/gulpfile.js +174 -0
  106. package/content/themes/source/home.hbs +12 -0
  107. package/content/themes/source/index.hbs +6 -0
  108. package/content/themes/source/package.json +202 -0
  109. package/content/themes/source/page.hbs +26 -0
  110. package/content/themes/source/partials/components/cta.hbs +25 -0
  111. package/content/themes/source/partials/components/featured.hbs +14 -0
  112. package/content/themes/source/partials/components/footer.hbs +35 -0
  113. package/content/themes/source/partials/components/header-content.hbs +81 -0
  114. package/content/themes/source/partials/components/header.hbs +19 -0
  115. package/content/themes/source/partials/components/navigation.hbs +53 -0
  116. package/content/themes/source/partials/components/post-list.hbs +114 -0
  117. package/content/themes/source/partials/email-subscription.hbs +8 -0
  118. package/content/themes/source/partials/feature-image.hbs +16 -0
  119. package/content/themes/source/partials/icons/arrow.hbs +1 -0
  120. package/content/themes/source/partials/icons/avatar.hbs +1 -0
  121. package/content/themes/source/partials/icons/burger.hbs +1 -0
  122. package/content/themes/source/partials/icons/checkmark.hbs +24 -0
  123. package/content/themes/source/partials/icons/close.hbs +1 -0
  124. package/content/themes/source/partials/icons/facebook.hbs +1 -0
  125. package/content/themes/source/partials/icons/fire.hbs +3 -0
  126. package/content/themes/source/partials/icons/loader.hbs +17 -0
  127. package/content/themes/source/partials/icons/lock.hbs +5 -0
  128. package/content/themes/source/partials/icons/rss.hbs +1 -0
  129. package/content/themes/source/partials/icons/search.hbs +1 -0
  130. package/content/themes/source/partials/icons/twitter.hbs +1 -0
  131. package/content/themes/source/partials/lightbox.hbs +41 -0
  132. package/content/themes/source/partials/post-card.hbs +37 -0
  133. package/content/themes/source/partials/search-toggle.hbs +3 -0
  134. package/content/themes/source/post.hbs +76 -0
  135. package/content/themes/source/tag.hbs +22 -0
  136. package/core/built/admin/assets/admin-x-settings/{CodeEditorView-b1c6a306.mjs → CodeEditorView-1643e910.mjs} +2 -2
  137. package/core/built/admin/assets/admin-x-settings/admin-x-settings.js +2 -2
  138. package/core/built/admin/assets/admin-x-settings/{index-02567620.mjs → index-b4c2ef5b.mjs} +2248 -2187
  139. package/core/built/admin/assets/admin-x-settings/{limit-service-bf02ec54.mjs → limit-service-c343d244.mjs} +2 -2
  140. package/core/built/admin/assets/admin-x-settings/modals-8b0aeacd.mjs +23887 -0
  141. package/core/built/admin/assets/{chunk.143.6ae91642f45fce60949c.js → chunk.143.da2301d9edb6ad0b5496.js} +5 -5
  142. package/core/built/admin/assets/{chunk.178.4842a4a973bb574d843b.js → chunk.178.efec05ab07e1e216d657.js} +4 -4
  143. package/core/built/admin/assets/{chunk.555.ba02d5a0095b4c4a7700.js → chunk.940.b09a2c2049ed9c373dd0.js} +55 -62
  144. package/core/built/admin/assets/{ghost-b24dd6efffe76ca031de95be6e91b543.js → ghost-193c98abe66483968da753e54917e87a.js} +114 -107
  145. package/core/built/admin/assets/ghost-9e454659c8c0896ed10336b640d1b1eb.css +1 -0
  146. package/core/built/admin/assets/ghost-dark-1d24186396fe74946c926faa9faa247b.css +1 -0
  147. package/core/built/admin/assets/img/themes/Source-Magazine-176385eb99561485ce6385598f7599b0.png +0 -0
  148. package/core/built/admin/assets/img/themes/Source-Newsletter-bb1a8611a326edb78f9ecb8bc1838c81.png +0 -0
  149. package/core/built/admin/assets/img/themes/Source-f29c6d6abe774ea7d5940a7431069fce.png +0 -0
  150. package/core/built/admin/assets/{vendor-5aa07b661eeb443bf7dd2c1de3b3f387.js → vendor-71d23939faaa5d1478ead73d917111b9.js} +48 -40
  151. package/core/built/admin/index.html +6 -6
  152. package/core/server/api/endpoints/recommendations.js +2 -1
  153. package/core/server/data/migrations/versions/5.67/2023-10-03-00-32-32-rollback-source-theme.js +40 -0
  154. package/core/server/data/schema/default-settings/default-settings.json +1 -1
  155. package/core/server/services/auth/setup.js +3 -3
  156. package/core/server/services/recommendations/RecommendationServiceWrapper.js +5 -4
  157. package/core/server/services/themes/storage.js +7 -7
  158. package/package.json +154 -154
  159. package/yarn.lock +221 -255
  160. package/components/tryghost-adapter-cache-memory-ttl-5.66.1.tgz +0 -0
  161. package/components/tryghost-adapter-manager-5.66.1.tgz +0 -0
  162. package/components/tryghost-announcement-bar-settings-5.66.1.tgz +0 -0
  163. package/components/tryghost-api-framework-5.66.1.tgz +0 -0
  164. package/components/tryghost-api-version-compatibility-service-5.66.1.tgz +0 -0
  165. package/components/tryghost-audience-feedback-5.66.1.tgz +0 -0
  166. package/components/tryghost-bookshelf-repository-5.66.1.tgz +0 -0
  167. package/components/tryghost-collections-5.66.1.tgz +0 -0
  168. package/components/tryghost-constants-5.66.1.tgz +0 -0
  169. package/components/tryghost-domain-events-5.66.1.tgz +0 -0
  170. package/components/tryghost-donations-5.66.1.tgz +0 -0
  171. package/components/tryghost-dynamic-routing-events-5.66.1.tgz +0 -0
  172. package/components/tryghost-email-analytics-provider-mailgun-5.66.1.tgz +0 -0
  173. package/components/tryghost-email-content-generator-5.66.1.tgz +0 -0
  174. package/components/tryghost-email-events-5.66.1.tgz +0 -0
  175. package/components/tryghost-email-suppression-list-5.66.1.tgz +0 -0
  176. package/components/tryghost-event-aware-cache-wrapper-5.66.1.tgz +0 -0
  177. package/components/tryghost-express-dynamic-redirects-5.66.1.tgz +0 -0
  178. package/components/tryghost-external-media-inliner-5.66.1.tgz +0 -0
  179. package/components/tryghost-extract-api-key-5.66.1.tgz +0 -0
  180. package/components/tryghost-i18n-5.66.1.tgz +0 -0
  181. package/components/tryghost-importer-handler-content-files-5.66.1.tgz +0 -0
  182. package/components/tryghost-importer-revue-5.66.1.tgz +0 -0
  183. package/components/tryghost-link-replacer-5.66.1.tgz +0 -0
  184. package/components/tryghost-magic-link-5.66.1.tgz +0 -0
  185. package/components/tryghost-member-events-5.66.1.tgz +0 -0
  186. package/components/tryghost-members-importer-5.66.1.tgz +0 -0
  187. package/components/tryghost-members-payments-5.66.1.tgz +0 -0
  188. package/components/tryghost-members-ssr-5.66.1.tgz +0 -0
  189. package/components/tryghost-mentions-email-report-5.66.1.tgz +0 -0
  190. package/components/tryghost-milestones-5.66.1.tgz +0 -0
  191. package/components/tryghost-minifier-5.66.1.tgz +0 -0
  192. package/components/tryghost-model-to-domain-event-interceptor-5.66.1.tgz +0 -0
  193. package/components/tryghost-mw-api-version-mismatch-5.66.1.tgz +0 -0
  194. package/components/tryghost-mw-cache-control-5.66.1.tgz +0 -0
  195. package/components/tryghost-mw-session-from-token-5.66.1.tgz +0 -0
  196. package/components/tryghost-mw-update-user-last-seen-5.66.1.tgz +0 -0
  197. package/components/tryghost-mw-version-match-5.66.1.tgz +0 -0
  198. package/components/tryghost-mw-vhost-5.66.1.tgz +0 -0
  199. package/components/tryghost-nql-filter-expansions-5.66.1.tgz +0 -0
  200. package/components/tryghost-oembed-service-5.66.1.tgz +0 -0
  201. package/components/tryghost-package-json-5.66.1.tgz +0 -0
  202. package/components/tryghost-post-revisions-5.66.1.tgz +0 -0
  203. package/components/tryghost-posts-service-5.66.1.tgz +0 -0
  204. package/components/tryghost-recommendations-5.66.1.tgz +0 -0
  205. package/components/tryghost-referrers-5.66.1.tgz +0 -0
  206. package/components/tryghost-session-service-5.66.1.tgz +0 -0
  207. package/components/tryghost-slack-notifications-5.66.1.tgz +0 -0
  208. package/components/tryghost-staff-service-5.66.1.tgz +0 -0
  209. package/components/tryghost-stats-service-5.66.1.tgz +0 -0
  210. package/components/tryghost-tiers-5.66.1.tgz +0 -0
  211. package/components/tryghost-verification-trigger-5.66.1.tgz +0 -0
  212. package/components/tryghost-version-notifications-data-service-5.66.1.tgz +0 -0
  213. package/components/tryghost-webmentions-5.66.1.tgz +0 -0
  214. package/core/built/admin/assets/admin-x-settings/modals-d2fd552b.mjs +0 -11622
  215. package/core/built/admin/assets/ghost-dark-54c925ac8f527d36132c18af7bef116e.css +0 -1
  216. package/core/built/admin/assets/ghost-f1a535bfec933b08a7a45f607cc245b1.css +0 -1
  217. /package/core/built/admin/assets/{chunk.555.ba02d5a0095b4c4a7700.js.LICENSE.txt → chunk.940.b09a2c2049ed9c373dd0.js.LICENSE.txt} +0 -0
@@ -0,0 +1,174 @@
1
+ const {series, watch, src, dest, parallel} = require('gulp');
2
+ const pump = require('pump');
3
+ const path = require('path');
4
+ const releaseUtils = require('@tryghost/release-utils');
5
+ const inquirer = require('inquirer');
6
+
7
+ // gulp plugins and utils
8
+ const livereload = require('gulp-livereload');
9
+ const postcss = require('gulp-postcss');
10
+ const zip = require('gulp-zip');
11
+ const concat = require('gulp-concat');
12
+ const uglify = require('gulp-uglify');
13
+ const beeper = require('beeper');
14
+ const fs = require('fs');
15
+
16
+ // postcss plugins
17
+ const autoprefixer = require('autoprefixer');
18
+ const cssnano = require('cssnano');
19
+ const easyimport = require('postcss-easy-import');
20
+
21
+ const REPO = 'TryGhost/Source';
22
+ const REPO_READONLY = 'TryGhost/Source';
23
+ const CHANGELOG_PATH = path.join(process.cwd(), '.', 'changelog.md');
24
+
25
+ function serve(done) {
26
+ livereload.listen();
27
+ done();
28
+ }
29
+
30
+ const handleError = (done) => {
31
+ return function (err) {
32
+ if (err) {
33
+ beeper();
34
+ }
35
+ return done(err);
36
+ };
37
+ };
38
+
39
+ function hbs(done) {
40
+ pump([
41
+ src(['*.hbs', 'partials/**/*.hbs']),
42
+ livereload()
43
+ ], handleError(done));
44
+ }
45
+
46
+ function css(done) {
47
+ pump([
48
+ src('assets/css/screen.css', {sourcemaps: true}),
49
+ postcss([
50
+ easyimport,
51
+ autoprefixer(),
52
+ cssnano()
53
+ ]),
54
+ dest('assets/built/', {sourcemaps: '.'}),
55
+ livereload()
56
+ ], handleError(done));
57
+ }
58
+
59
+ function js(done) {
60
+ pump([
61
+ src([
62
+ // pull in lib files first so our own code can depend on it
63
+ 'assets/js/lib/*.js',
64
+ 'assets/js/*.js'
65
+ ], {sourcemaps: true}),
66
+ concat('source.js'),
67
+ uglify(),
68
+ dest('assets/built/', {sourcemaps: '.'}),
69
+ livereload()
70
+ ], handleError(done));
71
+ }
72
+
73
+ function zipper(done) {
74
+ const filename = require('./package.json').name + '.zip';
75
+
76
+ pump([
77
+ src([
78
+ '**',
79
+ '!node_modules', '!node_modules/**',
80
+ '!dist', '!dist/**',
81
+ '!yarn-error.log',
82
+ '!yarn.lock',
83
+ '!gulpfile.js'
84
+ ]),
85
+ zip(filename),
86
+ dest('dist/')
87
+ ], handleError(done));
88
+ }
89
+
90
+ const cssWatcher = () => watch('assets/css/**', css);
91
+ const jsWatcher = () => watch('assets/js/**', js);
92
+ const hbsWatcher = () => watch(['*.hbs', 'partials/**/*.hbs'], hbs);
93
+ const watcher = parallel(cssWatcher, jsWatcher, hbsWatcher);
94
+ const build = series(css, js);
95
+
96
+ exports.build = build;
97
+ exports.zip = series(build, zipper);
98
+ exports.default = series(build, serve, watcher);
99
+
100
+ exports.release = async () => {
101
+ // @NOTE: https://yarnpkg.com/lang/en/docs/cli/version/
102
+ // require(./package.json) can run into caching issues, this re-reads from file everytime on release
103
+ let packageJSON = JSON.parse(fs.readFileSync('./package.json'));
104
+ const newVersion = packageJSON.version;
105
+
106
+ if (!newVersion || newVersion === '') {
107
+ console.log(`Invalid version: ${newVersion}`);
108
+ return;
109
+ }
110
+
111
+ console.log(`\nCreating release for ${newVersion}...`);
112
+
113
+ const githubToken = process.env.GST_TOKEN;
114
+
115
+ if (!githubToken) {
116
+ console.log('Please configure your environment with a GitHub token located in GST_TOKEN');
117
+ return;
118
+ }
119
+
120
+ try {
121
+ const result = await inquirer.prompt([{
122
+ type: 'input',
123
+ name: 'compatibleWithGhost',
124
+ message: 'Which version of Ghost is it compatible with?',
125
+ default: '5.0.0'
126
+ }]);
127
+
128
+ const compatibleWithGhost = result.compatibleWithGhost;
129
+
130
+ const releasesResponse = await releaseUtils.releases.get({
131
+ userAgent: 'Source',
132
+ uri: `https://api.github.com/repos/${REPO_READONLY}/releases`
133
+ });
134
+
135
+ if (!releasesResponse || !releasesResponse) {
136
+ console.log('No releases found. Skipping...');
137
+ return;
138
+ }
139
+
140
+ let previousVersion = releasesResponse[0].tag_name || releasesResponse[0].name;
141
+ console.log(`Previous version: ${previousVersion}`);
142
+
143
+ const changelog = new releaseUtils.Changelog({
144
+ changelogPath: CHANGELOG_PATH,
145
+ folder: path.join(process.cwd(), '.')
146
+ });
147
+
148
+ changelog
149
+ .write({
150
+ githubRepoPath: `https://github.com/${REPO}`,
151
+ lastVersion: previousVersion
152
+ })
153
+ .sort()
154
+ .clean();
155
+
156
+ const newReleaseResponse = await releaseUtils.releases.create({
157
+ draft: true,
158
+ preRelease: false,
159
+ tagName: 'v' + newVersion,
160
+ releaseName: newVersion,
161
+ userAgent: 'Source',
162
+ uri: `https://api.github.com/repos/${REPO}/releases`,
163
+ github: {
164
+ token: githubToken
165
+ },
166
+ content: [`**Compatible with Ghost ≥ ${compatibleWithGhost}**\n\n`],
167
+ changelogPath: CHANGELOG_PATH
168
+ });
169
+ console.log(`\nRelease draft generated: ${newReleaseResponse.releaseUrl}\n`);
170
+ } catch (err) {
171
+ console.error(err);
172
+ process.exit(1);
173
+ }
174
+ };
@@ -0,0 +1,12 @@
1
+ {{!< default}}
2
+ {{!-- The tag above means: insert everything in this file into the body of the default.hbs template --}}
3
+
4
+ {{> "components/header" headerStyle=@custom.header_style}}
5
+
6
+ {{#match @custom.header_style "!=" "Highlight"}}
7
+ {{> "components/featured" showFeatured=@custom.show_featured_posts limit=4}}
8
+ {{/match}}
9
+
10
+ {{> "components/cta"}}
11
+
12
+ {{> "components/post-list" feed="home" postFeedStyle=@custom.post_feed_style showTitle=true showSidebar=@custom.show_publication_info_sidebar}}
@@ -0,0 +1,6 @@
1
+ {{!< default}}
2
+ {{!-- The tag above means: insert everything in this file into the body of the default.hbs template --}}
3
+
4
+ <main class="gh-main">
5
+ {{> "components/post-list" feed="index" postFeedStyle=@custom.post_feed_style showTitle=true showSidebar=@custom.show_publication_info_sidebar}}
6
+ </main>
@@ -0,0 +1,202 @@
1
+ {
2
+ "name": "source",
3
+ "description": "A default theme for the Ghost publishing platform",
4
+ "demo": "https://source.ghost.io",
5
+ "version": "1.0.0",
6
+ "engines": {
7
+ "ghost": ">=5.0.0"
8
+ },
9
+ "license": "MIT",
10
+ "scripts": {
11
+ "dev": "gulp",
12
+ "zip": "gulp zip",
13
+ "test": "gscan .",
14
+ "test:ci": "gscan --fatal --verbose .",
15
+ "pretest": "gulp build",
16
+ "preship": "yarn test",
17
+ "ship": "STATUS=$(git status --porcelain); echo $STATUS; if [ -z \"$STATUS\" ]; then yarn version && git push --follow-tags; else echo \"Uncomitted changes found.\" && exit 1; fi",
18
+ "postship": "git fetch && gulp release"
19
+ },
20
+ "author": {
21
+ "name": "Ghost Foundation",
22
+ "email": "hello@ghost.org",
23
+ "url": "https://ghost.org/"
24
+ },
25
+ "gpm": {
26
+ "type": "theme",
27
+ "categories": [
28
+ "Minimal",
29
+ "Magazine"
30
+ ]
31
+ },
32
+ "keywords": [
33
+ "ghost",
34
+ "theme",
35
+ "ghost-theme"
36
+ ],
37
+ "repository": {
38
+ "type": "git",
39
+ "url": "https://github.com/TryGhost/Source.git"
40
+ },
41
+ "bugs": "https://github.com/TryGhost/Source/issues",
42
+ "contributors": "https://github.com/TryGhost/Source/graphs/contributors",
43
+ "devDependencies": {
44
+ "@tryghost/release-utils": "0.8.1",
45
+ "autoprefixer": "10.4.7",
46
+ "beeper": "2.1.0",
47
+ "cssnano": "5.1.12",
48
+ "gscan": "4.39.4",
49
+ "gulp": "4.0.2",
50
+ "gulp-concat": "2.6.1",
51
+ "gulp-livereload": "4.0.2",
52
+ "gulp-postcss": "9.0.1",
53
+ "gulp-uglify": "3.0.2",
54
+ "gulp-zip": "5.1.0",
55
+ "inquirer": "8.2.4",
56
+ "postcss": "8.2.13",
57
+ "postcss-easy-import": "4.0.0",
58
+ "pump": "3.0.0"
59
+ },
60
+ "browserslist": [
61
+ "defaults"
62
+ ],
63
+ "config": {
64
+ "posts_per_page": 16,
65
+ "image_sizes": {
66
+ "xs": {
67
+ "width": 160
68
+ },
69
+ "s": {
70
+ "width": 320
71
+ },
72
+ "m": {
73
+ "width": 600
74
+ },
75
+ "l": {
76
+ "width": 960
77
+ },
78
+ "xl": {
79
+ "width": 1200
80
+ },
81
+ "xxl": {
82
+ "width": 2000
83
+ }
84
+ },
85
+ "card_assets": true,
86
+ "custom": {
87
+ "navigation_layout": {
88
+ "type": "select",
89
+ "options": [
90
+ "Logo in the middle",
91
+ "Logo on the left",
92
+ "Stacked"
93
+ ],
94
+ "default": "Logo in the middle"
95
+ },
96
+ "site_background_color": {
97
+ "type": "color",
98
+ "default": "#ffffff"
99
+ },
100
+ "header_and_footer_color": {
101
+ "type": "select",
102
+ "options": [
103
+ "Background color",
104
+ "Accent color"
105
+ ],
106
+ "default": "Background color"
107
+ },
108
+ "title_font": {
109
+ "type": "select",
110
+ "options": [
111
+ "Modern sans-serif",
112
+ "Elegant serif",
113
+ "Consistent mono"
114
+ ],
115
+ "default": "Modern sans-serif"
116
+ },
117
+ "body_font": {
118
+ "type": "select",
119
+ "options": [
120
+ "Modern sans-serif",
121
+ "Elegant serif"
122
+ ],
123
+ "default": "Modern sans-serif"
124
+ },
125
+ "signup_heading": {
126
+ "type": "text",
127
+ "description": "Used in your footer across your theme, defaults to site title when empty"
128
+ },
129
+ "signup_subheading": {
130
+ "type": "text",
131
+ "description": "Defaults to site description when empty"
132
+ },
133
+ "header_style": {
134
+ "type": "select",
135
+ "options": [
136
+ "Landing",
137
+ "Highlight",
138
+ "Magazine",
139
+ "Search",
140
+ "Off"
141
+ ],
142
+ "description": "Landing is recommended for all sites, Highlight & Magazine for those with more content",
143
+ "default": "Landing",
144
+ "group": "homepage"
145
+ },
146
+ "header_text": {
147
+ "type": "text",
148
+ "group": "homepage",
149
+ "description": "Defaults to site description when empty",
150
+ "visibility": "header_style:[Landing, Search]"
151
+ },
152
+ "background_image": {
153
+ "type": "boolean",
154
+ "default": true,
155
+ "description": "Use the publication cover set on the Brand tab as your background",
156
+ "group": "homepage",
157
+ "visibility": "header_style:[Landing, Search]"
158
+ },
159
+ "show_featured_posts": {
160
+ "type": "boolean",
161
+ "default": false,
162
+ "group": "homepage",
163
+ "visibility": "header_style:[Highlight, Magazine]"
164
+ },
165
+ "post_feed_style": {
166
+ "type": "select",
167
+ "options": [
168
+ "List",
169
+ "Grid"
170
+ ],
171
+ "default": "List",
172
+ "group": "homepage"
173
+ },
174
+ "show_images_in_feed": {
175
+ "type": "boolean",
176
+ "default": true,
177
+ "group": "homepage",
178
+ "visibility": "post_feed_style:List"
179
+ },
180
+ "show_author": {
181
+ "type": "boolean",
182
+ "default": true,
183
+ "group": "homepage"
184
+ },
185
+ "show_publish_date": {
186
+ "type": "boolean",
187
+ "default": true,
188
+ "group": "homepage"
189
+ },
190
+ "show_publication_info_sidebar": {
191
+ "type": "boolean",
192
+ "default": false,
193
+ "group": "homepage"
194
+ }
195
+ }
196
+ },
197
+ "renovate": {
198
+ "extends": [
199
+ "@tryghost:theme"
200
+ ]
201
+ }
202
+ }
@@ -0,0 +1,26 @@
1
+ {{!< default}}
2
+ {{!-- The tag above means: insert everything in this file into the body of the default.hbs template --}}
3
+
4
+ {{#post}}
5
+
6
+ <main class="gh-main">
7
+ <article class="gh-article {{post_class}}">
8
+
9
+ {{#match @page.show_title_and_feature_image}}
10
+ <header class="gh-article-header gh-canvas">
11
+ <h1 class="gh-article-title is-title">{{title}}</h1>
12
+ {{#if custom_excerpt}}
13
+ <p class="gh-article-excerpt is-body">{{custom_excerpt}}</p>
14
+ {{/if}}
15
+ {{> "feature-image"}}
16
+ </header>
17
+ {{/match}}
18
+
19
+ <section class="gh-content gh-canvas is-body">
20
+ {{content}}
21
+ </section>
22
+
23
+ </article>
24
+ </main>
25
+
26
+ {{/post}}
@@ -0,0 +1,25 @@
1
+ {{#if @site.members_enabled}}
2
+ {{#unless @member}}
3
+ {{#match @custom.header_style "!=" "Landing"}}
4
+ {{#match @custom.header_style "!=" "Search"}}
5
+ {{#match @custom.header_style "!=" "Off"}}
6
+ {{#match posts.length ">=" 7}}
7
+ <section class="gh-cta gh-outer">
8
+ <div class="gh-cta-inner gh-inner">
9
+ <div class="gh-cta-content">
10
+ <h2 class="gh-cta-title is-title">
11
+ {{#if @custom.signup_heading}}{{@custom.signup_heading}}{{else}}{{@site.title}}{{/if}}
12
+ </h2>
13
+ <p class="gh-cta-description is-body">
14
+ {{#if @custom.signup_subheading}}{{@custom.signup_subheading}}{{else}}{{@site.description}}{{/if}}
15
+ </p>
16
+ </div>
17
+ {{> "email-subscription"}}
18
+ </div>
19
+ </section>
20
+ {{/match}}
21
+ {{/match}}
22
+ {{/match}}
23
+ {{/match}}
24
+ {{/unless}}
25
+ {{/if}}
@@ -0,0 +1,14 @@
1
+ {{#if showFeatured}}
2
+ {{#get "posts" filter="featured:true" include="authors" limit=limit as |featured|}}
3
+ <section class="gh-featured gh-outer">
4
+ <div class="gh-featured-inner gh-inner">
5
+ <h2 class="gh-featured-title">Featured</h2>
6
+ <div class="gh-featured-feed">
7
+ {{#foreach featured}}
8
+ {{> "post-card" imageSizes="80px"}}
9
+ {{/foreach}}
10
+ </div>
11
+ </div>
12
+ </section>
13
+ {{/get}}
14
+ {{/if}}
@@ -0,0 +1,35 @@
1
+ <footer class="gh-footer{{#match @custom.header_and_footer_color "Accent color"}} has-accent-color{{/match}} gh-outer">
2
+ <div class="gh-footer-inner gh-inner">
3
+
4
+ <div class="gh-footer-bar">
5
+ <span class="gh-footer-logo is-title">
6
+ {{#if @site.logo}}
7
+ <img src="{{@site.logo}}" alt="{{@site.title}}">
8
+ {{else}}
9
+ {{@site.title}}
10
+ {{/if}}
11
+ </span>
12
+ <nav class="gh-footer-menu">
13
+ {{navigation type="secondary"}}
14
+ </nav>
15
+ <div class="gh-footer-copyright">
16
+ Powered by <a href="https://ghost.org/" target="_blank" rel="noopener">Ghost</a>
17
+ </div>
18
+ </div>
19
+
20
+ {{#if @site.members_enabled}}
21
+ {{#unless @member}}
22
+ <section class="gh-footer-signup">
23
+ <h2 class="gh-footer-signup-header is-title">
24
+ {{#if @custom.signup_heading}}{{@custom.signup_heading}}{{else}}{{@site.title}}{{/if}}
25
+ </h2>
26
+ <p class="gh-footer-signup-subhead is-body">
27
+ {{#if @custom.signup_subheading}}{{@custom.signup_subheading}}{{else}}{{@site.description}}{{/if}}
28
+ </p>
29
+ {{> "email-subscription"}}
30
+ </section>
31
+ {{/unless}}
32
+ {{/if}}
33
+
34
+ </div>
35
+ </footer>
@@ -0,0 +1,81 @@
1
+ <section class="gh-header is-{{#match headerStyle "Magazine"}}magazine{{else match headerStyle "Highlight"}}highlight{{else}}classic{{/match}}{{#if @custom.background_image}}{{#if @site.cover_image}} has-image{{/if}}{{/if}} gh-outer">
2
+
3
+ {{!-- Background image --}}
4
+ {{#if @custom.background_image}}
5
+ {{#match headerStyle "!=" "Magazine"}}
6
+ {{#match headerStyle "!=" "Highlight"}}
7
+ {{#if @site.cover_image}}
8
+ <img class="gh-header-image" src="{{@site.cover_image}}" alt="{{@site.title}}">
9
+ {{/if}}
10
+ {{/match}}
11
+ {{/match}}
12
+ {{/if}}
13
+
14
+ <div class="gh-header-inner gh-inner">
15
+
16
+ {{!-- Highlight layout --}}
17
+ {{#match headerStyle "Highlight"}}
18
+ <div class="gh-header-left">
19
+ {{#foreach posts limit="1"}}
20
+ {{> "post-card" imageSizes="(max-width: 767px) calc(100vw - max(8vmin, 40px)), 640px"}}
21
+ {{/foreach}}
22
+ </div>
23
+ <div class="gh-header-middle">
24
+ {{#foreach posts from="2" limit="3"}}
25
+ {{> "post-card"}}
26
+ {{/foreach}}
27
+ </div>
28
+ <div class="gh-header-right">
29
+ {{#if @custom.show_featured_posts}}
30
+ {{> "components/featured" showFeatured=@custom.show_featured_posts limit=6}}
31
+ {{else}}
32
+ <div class="gh-featured-feed">
33
+ {{#foreach posts from="5" limit="6"}}
34
+ {{> "post-card" imageSizes="80px"}}
35
+ {{/foreach}}
36
+ </div>
37
+ {{/if}}
38
+ </div>
39
+ {{/match}}
40
+
41
+ {{!-- Magazine layout --}}
42
+ {{#match headerStyle "Magazine"}}
43
+ {{#foreach posts limit="7"}}
44
+ {{#match @number 2}}
45
+ <div class="gh-header-left">
46
+ {{/match}}
47
+ {{#match @number 5}}
48
+ <div class="gh-header-right">
49
+ {{/match}}
50
+ {{#if @first}}
51
+ {{> "post-card" imageSizes="640px"}}
52
+ {{else}}
53
+ {{> "post-card"}}
54
+ {{/if}}
55
+ {{#match @number 4}}
56
+ </div>
57
+ {{/match}}
58
+ {{#match @number 7}}
59
+ </div>
60
+ {{/match}}
61
+ {{/foreach}}
62
+ {{/match}}
63
+
64
+ {{!-- Landing layout --}}
65
+ {{#match headerStyle "Landing"}}
66
+ <h1 class="gh-header-title is-title">{{#if @custom.header_text}}{{@custom.header_text}}{{else}}{{@site.description}}{{/if}}</h1>
67
+ {{> "email-subscription"}}
68
+ {{/match}}
69
+
70
+ {{!-- Search layout --}}
71
+ {{#match headerStyle "Search"}}
72
+ <h1 class="gh-header-title is-title">{{#if @custom.header_text}}{{@custom.header_text}}{{else}}{{@site.description}}{{/if}}</h1>
73
+ <form class="gh-form">
74
+ {{> "icons/search"}}
75
+ <button class="gh-form-input" data-ghost-search>Search posts, tags and authors</button>
76
+ </form>
77
+ {{/match}}
78
+
79
+ </div>
80
+
81
+ </section>
@@ -0,0 +1,19 @@
1
+ {{#match headerStyle "!=" "Off"}}
2
+
3
+ {{#match headerStyle "Highlight"}}
4
+ {{> "components/header-content"}}
5
+ {{else match headerStyle "Magazine"}}
6
+ {{> "components/header-content"}}
7
+ {{else}}
8
+ {{#match headerStyle "Landing"}}
9
+ {{#if @site.members_enabled}}
10
+ {{#unless @member}}
11
+ {{> "components/header-content"}}
12
+ {{/unless}}
13
+ {{/if}}
14
+ {{else}}
15
+ {{> "components/header-content"}}
16
+ {{/match}}
17
+ {{/match}}
18
+
19
+ {{/match}}
@@ -0,0 +1,53 @@
1
+ <header id="gh-navigation" class="gh-navigation is-{{#match navigationLayout "Logo on the left"}}left-logo{{else match navigationLayout "Stacked"}}stacked{{else}}middle-logo{{/match}}{{#match @custom.header_and_footer_color "Accent color"}} has-accent-color{{/match}} gh-outer">
2
+ <div class="gh-navigation-inner gh-inner">
3
+
4
+ <div class="gh-navigation-brand">
5
+ <a class="gh-navigation-logo is-title" href="{{@site.url}}">
6
+ {{#if @site.logo}}
7
+ <img src="{{@site.logo}}" alt="{{@site.title}}">
8
+ {{else}}
9
+ {{@site.title}}
10
+ {{/if}}
11
+ </a>
12
+ {{> "search-toggle"}}
13
+ <button class="gh-burger gh-icon-button">
14
+ {{> "icons/burger"}}
15
+ {{> "icons/close"}}
16
+ </button>
17
+ </div>
18
+
19
+ <nav class="gh-navigation-menu">
20
+ {{navigation}}
21
+ {{#unless @site.members_enabled}}
22
+ {{#match navigationLayout "Stacked"}}
23
+ {{> "search-toggle"}}
24
+ {{/match}}
25
+ {{/unless}}
26
+ </nav>
27
+
28
+ <div class="gh-navigation-actions">
29
+ {{#unless @site.members_enabled}}
30
+ {{^match navigationLayout "Stacked"}}
31
+ {{> "search-toggle"}}
32
+ {{/match}}
33
+ {{else}}
34
+ {{> "search-toggle"}}
35
+ <div class="gh-navigation-members">
36
+ {{#unless @member}}
37
+ {{#unless @site.members_invite_only}}
38
+ <a href="#/portal/signin" data-portal="signin">Sign in</a>
39
+ {{#unless hideSubscribeButton}}
40
+ <a class="gh-button" href="#/portal/signup" data-portal="signup">Subscribe</a>
41
+ {{/unless}}
42
+ {{else}}
43
+ <a class="gh-button" href="#/portal/signin" data-portal="signin">Sign in</a>
44
+ {{/unless}}
45
+ {{else}}
46
+ <a class="gh-button" href="#/portal/account" data-portal="account">Account</a>
47
+ {{/unless}}
48
+ </div>
49
+ {{/unless}}
50
+ </div>
51
+
52
+ </div>
53
+ </header>