ghost 5.25.1 → 5.25.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/{tryghost-adapter-manager-5.25.1.tgz → tryghost-adapter-manager-5.25.3.tgz} +0 -0
- package/components/{tryghost-api-framework-5.25.1.tgz → tryghost-api-framework-5.25.3.tgz} +0 -0
- package/components/{tryghost-api-version-compatibility-service-5.25.1.tgz → tryghost-api-version-compatibility-service-5.25.3.tgz} +0 -0
- package/components/{tryghost-audience-feedback-5.25.1.tgz → tryghost-audience-feedback-5.25.3.tgz} +0 -0
- package/components/{tryghost-bootstrap-socket-5.25.1.tgz → tryghost-bootstrap-socket-5.25.3.tgz} +0 -0
- package/components/tryghost-constants-5.25.3.tgz +0 -0
- package/components/tryghost-custom-theme-settings-service-5.25.3.tgz +0 -0
- package/components/{tryghost-data-generator-5.25.1.tgz → tryghost-data-generator-5.25.3.tgz} +0 -0
- package/components/tryghost-domain-events-5.25.3.tgz +0 -0
- package/components/tryghost-email-analytics-provider-mailgun-5.25.3.tgz +0 -0
- package/components/{tryghost-email-analytics-service-5.25.1.tgz → tryghost-email-analytics-service-5.25.3.tgz} +0 -0
- package/components/tryghost-email-content-generator-5.25.3.tgz +0 -0
- package/components/tryghost-email-events-5.25.3.tgz +0 -0
- package/components/tryghost-email-service-5.25.3.tgz +0 -0
- package/components/tryghost-email-suppression-list-5.25.3.tgz +0 -0
- package/components/{tryghost-express-dynamic-redirects-5.25.1.tgz → tryghost-express-dynamic-redirects-5.25.3.tgz} +0 -0
- package/components/{tryghost-extract-api-key-5.25.1.tgz → tryghost-extract-api-key-5.25.3.tgz} +0 -0
- package/components/tryghost-html-to-plaintext-5.25.3.tgz +0 -0
- package/components/{tryghost-job-manager-5.25.1.tgz → tryghost-job-manager-5.25.3.tgz} +0 -0
- package/components/{tryghost-link-redirects-5.25.1.tgz → tryghost-link-redirects-5.25.3.tgz} +0 -0
- package/components/tryghost-link-replacer-5.25.3.tgz +0 -0
- package/components/{tryghost-link-tracking-5.25.1.tgz → tryghost-link-tracking-5.25.3.tgz} +0 -0
- package/components/{tryghost-magic-link-5.25.1.tgz → tryghost-magic-link-5.25.3.tgz} +0 -0
- package/components/tryghost-mailgun-client-5.25.3.tgz +0 -0
- package/components/{tryghost-member-attribution-5.25.1.tgz → tryghost-member-attribution-5.25.3.tgz} +0 -0
- package/components/{tryghost-member-events-5.25.1.tgz → tryghost-member-events-5.25.3.tgz} +0 -0
- package/components/tryghost-members-api-5.25.3.tgz +0 -0
- package/components/{tryghost-members-csv-5.25.1.tgz → tryghost-members-csv-5.25.3.tgz} +0 -0
- package/components/tryghost-members-events-service-5.25.3.tgz +0 -0
- package/components/{tryghost-members-importer-5.25.1.tgz → tryghost-members-importer-5.25.3.tgz} +0 -0
- package/components/{tryghost-members-offers-5.25.1.tgz → tryghost-members-offers-5.25.3.tgz} +0 -0
- package/components/tryghost-members-payments-5.25.3.tgz +0 -0
- package/components/{tryghost-members-ssr-5.25.1.tgz → tryghost-members-ssr-5.25.3.tgz} +0 -0
- package/components/{tryghost-members-stripe-service-5.25.1.tgz → tryghost-members-stripe-service-5.25.3.tgz} +0 -0
- package/components/{tryghost-minifier-5.25.1.tgz → tryghost-minifier-5.25.3.tgz} +0 -0
- package/components/tryghost-mw-api-version-mismatch-5.25.3.tgz +0 -0
- package/components/{tryghost-mw-cache-control-5.25.1.tgz → tryghost-mw-cache-control-5.25.3.tgz} +0 -0
- package/components/{tryghost-mw-error-handler-5.25.1.tgz → tryghost-mw-error-handler-5.25.3.tgz} +0 -0
- package/components/{tryghost-mw-session-from-token-5.25.1.tgz → tryghost-mw-session-from-token-5.25.3.tgz} +0 -0
- package/components/tryghost-mw-update-user-last-seen-5.25.3.tgz +0 -0
- package/components/tryghost-mw-vhost-5.25.3.tgz +0 -0
- package/components/tryghost-oembed-service-5.25.3.tgz +0 -0
- package/components/{tryghost-package-json-5.25.1.tgz → tryghost-package-json-5.25.3.tgz} +0 -0
- package/components/tryghost-referrers-5.25.3.tgz +0 -0
- package/components/tryghost-security-5.25.3.tgz +0 -0
- package/components/{tryghost-session-service-5.25.1.tgz → tryghost-session-service-5.25.3.tgz} +0 -0
- package/components/{tryghost-settings-path-manager-5.25.1.tgz → tryghost-settings-path-manager-5.25.3.tgz} +0 -0
- package/components/{tryghost-staff-service-5.25.1.tgz → tryghost-staff-service-5.25.3.tgz} +0 -0
- package/components/{tryghost-stats-service-5.25.1.tgz → tryghost-stats-service-5.25.3.tgz} +0 -0
- package/components/tryghost-tiers-5.25.3.tgz +0 -0
- package/components/{tryghost-update-check-service-5.25.1.tgz → tryghost-update-check-service-5.25.3.tgz} +0 -0
- package/components/{tryghost-verification-trigger-5.25.1.tgz → tryghost-verification-trigger-5.25.3.tgz} +0 -0
- package/components/{tryghost-version-notifications-data-service-5.25.1.tgz → tryghost-version-notifications-data-service-5.25.3.tgz} +0 -0
- package/core/built/admin/assets/{chunk.143.0dc2fb34377630cd95b4.js → chunk.143.37f5727f90df66ade091.js} +19 -19
- package/core/built/admin/assets/{chunk.178.fee48b8b52dc3ad83ba1.js → chunk.178.fbba40422427964e79c9.js} +4 -4
- package/core/built/admin/assets/{chunk.507.37279ad3a2f6aeb82302.js → chunk.507.f7ed7e0b5ac069083e0c.js} +105 -104
- package/core/built/admin/assets/{chunk.613.a29fe5699dd5f7fb05f1.js → chunk.613.551c7c3e872b9a811863.js} +229 -227
- package/core/built/admin/assets/{chunk.613.a29fe5699dd5f7fb05f1.js.LICENSE.txt → chunk.613.551c7c3e872b9a811863.js.LICENSE.txt} +0 -0
- package/core/built/admin/assets/codemirror/{codemirror-1b460af155bb0ecaab9591678ac8c942.js → codemirror-a81c0653d8e57286b75c5a1792f80779.js} +1 -1
- package/core/built/admin/assets/{ghost-a66ff073d219101414fa7b344095c1ca.js → ghost-15f77300dbb6762873d6692e0485a37a.js} +316 -314
- package/core/built/admin/assets/{ghost-16dd31e7747e2dce6313f4362842b7b7.css → ghost-86cf21b24691d4fe9a73bcf84e5b36fe.css} +1 -1
- package/core/built/admin/assets/{ghost-dark-1117e1c672c39d594cdd1dfdf3d1c1ac.css → ghost-dark-2e0bf27a167574e0b2ca9dce1c9ec188.css} +1 -1
- package/core/built/admin/assets/simplemde/{simplemde-0cd04dbb388ed0cf571a6808464ea57e.js → simplemde-2885e4a40ed66fcae974595584efe50b.js} +1 -1
- package/core/built/admin/assets/{vendor-a767da2d0322ba6e801e0d719ccf5a26.js → vendor-0d29a566ca9747f2cfba9d7c98e39f53.js} +530 -525
- package/core/built/admin/index.html +5 -5
- package/core/cli/record-test.js +9 -26
- package/core/server/services/email-service/wrapper.js +2 -0
- package/core/server/services/email-suppression-list/MailgunEmailSuppressionList.js +10 -5
- package/core/server/services/mega/mega.js +0 -10
- package/core/server/services/mega/post-email-serializer.js +4 -3
- package/core/server/services/members/middleware.js +3 -2
- package/core/server/services/stripe/service.js +2 -1
- package/core/shared/config/defaults.json +1 -1
- package/core/shared/config/env/config.development.json +3 -0
- package/core/shared/config/env/config.testing-browser.json +58 -0
- package/core/shared/config/env/config.testing.json +0 -5
- package/core/shared/config/loader.js +1 -1
- package/core/shared/config/overrides.json +4 -3
- package/core/shared/sentry.js +1 -0
- package/package.json +111 -108
- package/yarn.lock +49 -49
- package/components/tryghost-constants-5.25.1.tgz +0 -0
- package/components/tryghost-custom-theme-settings-service-5.25.1.tgz +0 -0
- package/components/tryghost-domain-events-5.25.1.tgz +0 -0
- package/components/tryghost-email-analytics-provider-mailgun-5.25.1.tgz +0 -0
- package/components/tryghost-email-content-generator-5.25.1.tgz +0 -0
- package/components/tryghost-email-events-5.25.1.tgz +0 -0
- package/components/tryghost-email-service-5.25.1.tgz +0 -0
- package/components/tryghost-email-suppression-list-5.25.1.tgz +0 -0
- package/components/tryghost-html-to-plaintext-5.25.1.tgz +0 -0
- package/components/tryghost-link-replacer-5.25.1.tgz +0 -0
- package/components/tryghost-mailgun-client-5.25.1.tgz +0 -0
- package/components/tryghost-members-api-5.25.1.tgz +0 -0
- package/components/tryghost-members-events-service-5.25.1.tgz +0 -0
- package/components/tryghost-members-payments-5.25.1.tgz +0 -0
- package/components/tryghost-mw-api-version-mismatch-5.25.1.tgz +0 -0
- package/components/tryghost-mw-update-user-last-seen-5.25.1.tgz +0 -0
- package/components/tryghost-mw-vhost-5.25.1.tgz +0 -0
- package/components/tryghost-oembed-service-5.25.1.tgz +0 -0
- package/components/tryghost-referrers-5.25.1.tgz +0 -0
- package/components/tryghost-security-5.25.1.tgz +0 -0
- package/components/tryghost-tiers-5.25.1.tgz +0 -0
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
</style>
|
|
38
38
|
|
|
39
39
|
<link integrity="" rel="stylesheet" href="assets/vendor-3e6947aa681f0fb82b193090e520dc73.css">
|
|
40
|
-
<link integrity="" rel="stylesheet" href="assets/ghost-
|
|
40
|
+
<link integrity="" rel="stylesheet" href="assets/ghost-86cf21b24691d4fe9a73bcf84e5b36fe.css" title="light">
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
</head>
|
|
@@ -56,9 +56,9 @@
|
|
|
56
56
|
|
|
57
57
|
<div id="ember-basic-dropdown-wormhole"></div>
|
|
58
58
|
|
|
59
|
-
<script src="assets/vendor-
|
|
60
|
-
<script src="assets/chunk.613.
|
|
61
|
-
<script src="assets/chunk.143.
|
|
62
|
-
<script src="assets/ghost-
|
|
59
|
+
<script src="assets/vendor-0d29a566ca9747f2cfba9d7c98e39f53.js"></script>
|
|
60
|
+
<script src="assets/chunk.613.551c7c3e872b9a811863.js"></script>
|
|
61
|
+
<script src="assets/chunk.143.37f5727f90df66ade091.js"></script>
|
|
62
|
+
<script src="assets/ghost-15f77300dbb6762873d6692e0485a37a.js"></script>
|
|
63
63
|
</body>
|
|
64
64
|
</html>
|
package/core/cli/record-test.js
CHANGED
|
@@ -1,46 +1,29 @@
|
|
|
1
1
|
const {chromium} = require('@playwright/test');
|
|
2
2
|
const Command = require('./command');
|
|
3
|
-
const
|
|
3
|
+
const playwrightConfig = require('../../playwright.config');
|
|
4
|
+
const {globalSetup} = require('../../test/e2e-browser/utils');
|
|
4
5
|
|
|
5
6
|
module.exports = class RecordTest extends Command {
|
|
6
7
|
setup() {
|
|
7
8
|
this.help('Use PlayWright to record a browser-based test');
|
|
8
|
-
this.argument('--admin', {type: 'boolean', defaultValue: false, desc: 'Start browser-based test in Ghost admin'});
|
|
9
|
-
this.argument('--no-setup', {type: 'boolean', defaultValue: false, desc: 'Disable the default setup, for testing Ghost admin setup'});
|
|
10
|
-
this.argument('--fixtures', {type: 'array', defaultValue: [], delimiter: ',', desc: 'A list of comma-separated fixtures to include'});
|
|
11
9
|
}
|
|
12
10
|
|
|
13
11
|
permittedEnvironments() {
|
|
14
|
-
return ['
|
|
12
|
+
return ['testing-browser'];
|
|
15
13
|
}
|
|
16
14
|
|
|
17
|
-
async handle(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
await testUtils.initFixtures(...argv.fixtures);
|
|
22
|
-
}
|
|
15
|
+
async handle() {
|
|
16
|
+
await globalSetup({
|
|
17
|
+
projects: [playwrightConfig]
|
|
18
|
+
});
|
|
23
19
|
|
|
24
20
|
const browser = await chromium.launch({headless: false});
|
|
25
21
|
|
|
26
|
-
const
|
|
27
|
-
const context = await browser.newContext({
|
|
28
|
-
baseURL
|
|
29
|
-
});
|
|
22
|
+
const context = await browser.newContext(playwrightConfig.use);
|
|
30
23
|
|
|
31
24
|
// Pause the page, and start recording manually.
|
|
32
25
|
const page = await context.newPage();
|
|
33
|
-
await page.goto('');
|
|
34
|
-
|
|
35
|
-
if (argv.admin && !argv['no-setup']) {
|
|
36
|
-
await page.getByPlaceholder('The Daily Awesome').click();
|
|
37
|
-
await page.getByPlaceholder('The Daily Awesome').fill('The Local Test');
|
|
38
|
-
await page.getByPlaceholder('Jamie Larson').fill('Testy McTesterson');
|
|
39
|
-
await page.getByPlaceholder('jamie@example.com').fill('testy@example.com');
|
|
40
|
-
await page.getByPlaceholder('At least 10 characters').fill('Mc.T3ster$0n');
|
|
41
|
-
await page.getByPlaceholder('At least 10 characters').press('Enter');
|
|
42
|
-
await page.locator('.gh-done-pink').click();
|
|
43
|
-
}
|
|
26
|
+
await page.goto('/ghost');
|
|
44
27
|
|
|
45
28
|
await page.pause();
|
|
46
29
|
}
|
|
@@ -34,6 +34,7 @@ class EmailServiceWrapper {
|
|
|
34
34
|
const linkReplacer = require('@tryghost/link-replacer');
|
|
35
35
|
const linkTracking = require('../link-tracking');
|
|
36
36
|
const audienceFeedback = require('../audience-feedback');
|
|
37
|
+
const storageUtils = require('../../adapters/storage/utils');
|
|
37
38
|
|
|
38
39
|
// capture errors from mailgun client and log them in sentry
|
|
39
40
|
const errorHandler = (error) => {
|
|
@@ -60,6 +61,7 @@ class EmailServiceWrapper {
|
|
|
60
61
|
},
|
|
61
62
|
imageSize: null,
|
|
62
63
|
urlUtils,
|
|
64
|
+
storageUtils,
|
|
63
65
|
getPostUrl: this.getPostUrl,
|
|
64
66
|
linkReplacer,
|
|
65
67
|
linkTracking,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const {AbstractEmailSuppressionList, EmailSuppressionData} = require('@tryghost/email-suppression-list');
|
|
1
|
+
const {AbstractEmailSuppressionList, EmailSuppressionData, EmailSuppressedEvent} = require('@tryghost/email-suppression-list');
|
|
2
2
|
const {SpamComplaintEvent, EmailBouncedEvent} = require('@tryghost/email-events');
|
|
3
3
|
const DomainEvents = require('@tryghost/domain-events');
|
|
4
4
|
const logging = require('@tryghost/logging');
|
|
@@ -95,22 +95,27 @@ class MailgunEmailSuppressionList extends AbstractEmailSuppressionList {
|
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
async init() {
|
|
98
|
-
const handleEvent = async (event) => {
|
|
98
|
+
const handleEvent = reason => async (event) => {
|
|
99
99
|
try {
|
|
100
100
|
await this.Suppression.add({
|
|
101
101
|
email_address: event.email,
|
|
102
102
|
email_id: event.emailId,
|
|
103
|
-
reason:
|
|
103
|
+
reason: reason,
|
|
104
104
|
created_at: event.timestamp
|
|
105
105
|
});
|
|
106
|
+
DomainEvents.dispatch(EmailSuppressedEvent.create({
|
|
107
|
+
emailAddress: event.email,
|
|
108
|
+
emailId: event.emailId,
|
|
109
|
+
reason: reason
|
|
110
|
+
}, event.timestamp));
|
|
106
111
|
} catch (err) {
|
|
107
112
|
if (err.code !== 'ER_DUP_ENTRY') {
|
|
108
113
|
logging.error(err);
|
|
109
114
|
}
|
|
110
115
|
}
|
|
111
116
|
};
|
|
112
|
-
DomainEvents.subscribe(EmailBouncedEvent, handleEvent);
|
|
113
|
-
DomainEvents.subscribe(SpamComplaintEvent, handleEvent);
|
|
117
|
+
DomainEvents.subscribe(EmailBouncedEvent, handleEvent('bounce'));
|
|
118
|
+
DomainEvents.subscribe(SpamComplaintEvent, handleEvent('spam'));
|
|
114
119
|
}
|
|
115
120
|
}
|
|
116
121
|
|
|
@@ -15,7 +15,6 @@ const db = require('../../data/db');
|
|
|
15
15
|
const models = require('../../models');
|
|
16
16
|
const postEmailSerializer = require('./post-email-serializer');
|
|
17
17
|
const {getSegmentsFromHtml} = require('./segment-parser');
|
|
18
|
-
const emailSuppressionList = require('../email-suppression-list');
|
|
19
18
|
const labs = require('../../../shared/labs');
|
|
20
19
|
|
|
21
20
|
// Used to listen to email.added and email.edited model events originally, I think to offload this - ideally would just use jobs now if possible
|
|
@@ -564,15 +563,6 @@ async function createEmailBatches({emailModel, memberRows, memberSegment, option
|
|
|
564
563
|
debug('createEmailBatches: storing recipient list');
|
|
565
564
|
const startOfRecipientStorage = Date.now();
|
|
566
565
|
let rowsToBatch = memberRows;
|
|
567
|
-
if (labs.isSet('suppressionList')) {
|
|
568
|
-
const emails = memberRows.map(row => row.email);
|
|
569
|
-
const emailSuppressionData = await emailSuppressionList.getBulkSuppressionData(emails);
|
|
570
|
-
const emailSuppressedLookup = _.zipObject(emails, emailSuppressionData);
|
|
571
|
-
const filteredRows = memberRows.filter((row) => {
|
|
572
|
-
return emailSuppressedLookup[row.email].suppressed === false;
|
|
573
|
-
});
|
|
574
|
-
rowsToBatch = filteredRows;
|
|
575
|
-
}
|
|
576
566
|
const batches = _.chunk(rowsToBatch, bulkEmailService.BATCH_SIZE);
|
|
577
567
|
const batchIds = await Promise.mapSeries(batches, storeRecipientBatch);
|
|
578
568
|
debug(`createEmailBatches: stored recipient list (${Date.now() - startOfRecipientStorage}ms)`);
|
|
@@ -10,7 +10,7 @@ const mobiledocLib = require('../../lib/mobiledoc');
|
|
|
10
10
|
const lexicalLib = require('../../lib/lexical');
|
|
11
11
|
const htmlToPlaintext = require('@tryghost/html-to-plaintext');
|
|
12
12
|
const membersService = require('../members');
|
|
13
|
-
const {isUnsplashImage
|
|
13
|
+
const {isUnsplashImage} = require('@tryghost/kg-default-cards/lib/utils');
|
|
14
14
|
const {textColorForBackgroundColor, darkenToContrastThreshold} = require('@tryghost/color-utils');
|
|
15
15
|
const logging = require('@tryghost/logging');
|
|
16
16
|
const urlService = require('../../services/url');
|
|
@@ -19,6 +19,7 @@ const linkTracking = require('../link-tracking');
|
|
|
19
19
|
const memberAttribution = require('../member-attribution');
|
|
20
20
|
const feedbackButtons = require('./feedback-buttons');
|
|
21
21
|
const labs = require('../../../shared/labs');
|
|
22
|
+
const storageUtils = require('../../adapters/storage/utils');
|
|
22
23
|
|
|
23
24
|
const ALLOWED_REPLACEMENTS = ['first_name', 'uuid'];
|
|
24
25
|
|
|
@@ -261,7 +262,7 @@ const PostEmailSerializer = {
|
|
|
261
262
|
templateSettings.headerImageWidth = 600;
|
|
262
263
|
}
|
|
263
264
|
|
|
264
|
-
if (
|
|
265
|
+
if (storageUtils.isLocalImage(templateSettings.headerImage)) {
|
|
265
266
|
// we can safely request a 1200px image - Ghost will serve the original if it's smaller
|
|
266
267
|
templateSettings.headerImage = templateSettings.headerImage.replace(/\/content\/images\//, '/content/images/size/w1200/');
|
|
267
268
|
}
|
|
@@ -348,7 +349,7 @@ const PostEmailSerializer = {
|
|
|
348
349
|
post.feature_image_width = 600;
|
|
349
350
|
}
|
|
350
351
|
|
|
351
|
-
if (
|
|
352
|
+
if (storageUtils.isLocalImage(post.feature_image)) {
|
|
352
353
|
// we can safely request a 1200px image - Ghost will serve the original if it's smaller
|
|
353
354
|
post.feature_image = post.feature_image.replace(/\/content\/images\//, '/content/images/size/w1200/');
|
|
354
355
|
}
|
|
@@ -180,9 +180,10 @@ const updateMemberData = async function (req, res) {
|
|
|
180
180
|
id: member.id,
|
|
181
181
|
withRelated: ['stripeSubscriptions', 'stripeSubscriptions.customer', 'stripeSubscriptions.stripePrice', 'newsletters']
|
|
182
182
|
};
|
|
183
|
-
|
|
183
|
+
await membersService.api.members.update(data, options);
|
|
184
|
+
const updatedMember = await membersService.ssr.getMemberDataFromSession(req, res);
|
|
184
185
|
|
|
185
|
-
res.json(formattedMemberResponse(updatedMember
|
|
186
|
+
res.json(formattedMemberResponse(updatedMember));
|
|
186
187
|
} else {
|
|
187
188
|
res.json(null);
|
|
188
189
|
}
|
|
@@ -13,7 +13,8 @@ const settingsHelpers = require('../settings-helpers');
|
|
|
13
13
|
async function configureApi() {
|
|
14
14
|
const cfg = getConfig({settingsHelpers, config, urlUtils});
|
|
15
15
|
if (cfg) {
|
|
16
|
-
|
|
16
|
+
// @NOTE: to not start test mode when running playwright suite
|
|
17
|
+
cfg.testEnv = process.env.NODE_ENV.startsWith('test') && process.env.NODE_ENV !== 'testing-browser';
|
|
17
18
|
await module.exports.configure(cfg);
|
|
18
19
|
return true;
|
|
19
20
|
}
|
|
@@ -161,7 +161,7 @@
|
|
|
161
161
|
},
|
|
162
162
|
"portal": {
|
|
163
163
|
"url": "https://cdn.jsdelivr.net/ghost/portal@~{version}/umd/portal.min.js",
|
|
164
|
-
"version": "2.
|
|
164
|
+
"version": "2.21"
|
|
165
165
|
},
|
|
166
166
|
"sodoSearch": {
|
|
167
167
|
"url": "https://cdn.jsdelivr.net/ghost/sodo-search@~{version}/umd/sodo-search.min.js",
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"url": "http://127.0.0.1:2369",
|
|
3
|
+
"database": {
|
|
4
|
+
"client": "sqlite3",
|
|
5
|
+
"connection": {
|
|
6
|
+
"filename": "/tmp/ghost-test.db"
|
|
7
|
+
},
|
|
8
|
+
"useNullAsDefault": true,
|
|
9
|
+
"debug": false
|
|
10
|
+
},
|
|
11
|
+
"server": {
|
|
12
|
+
"port": 2369
|
|
13
|
+
},
|
|
14
|
+
"logging": {
|
|
15
|
+
"level": "fatal"
|
|
16
|
+
},
|
|
17
|
+
"spam": {
|
|
18
|
+
"user_login": {
|
|
19
|
+
"minWait": 600000,
|
|
20
|
+
"maxWait": 604800000,
|
|
21
|
+
"freeRetries": 3
|
|
22
|
+
},
|
|
23
|
+
"user_reset": {
|
|
24
|
+
"minWait": 3600000,
|
|
25
|
+
"maxWait": 3600000,
|
|
26
|
+
"lifetime": 3600,
|
|
27
|
+
"freeRetries": 4
|
|
28
|
+
},
|
|
29
|
+
"global_reset": {
|
|
30
|
+
"minWait": 3600000,
|
|
31
|
+
"maxWait": 3600000,
|
|
32
|
+
"lifetime": 3600,
|
|
33
|
+
"freeRetries":4
|
|
34
|
+
},
|
|
35
|
+
"global_block": {
|
|
36
|
+
"minWait": 3600000,
|
|
37
|
+
"maxWait": 3600000,
|
|
38
|
+
"lifetime": 3600,
|
|
39
|
+
"freeRetries":4
|
|
40
|
+
},
|
|
41
|
+
"private_block": {
|
|
42
|
+
"minWait": 3600000,
|
|
43
|
+
"maxWait": 3600000,
|
|
44
|
+
"lifetime": 3600,
|
|
45
|
+
"freeRetries":99
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"privacy": {
|
|
49
|
+
"useTinfoil": true,
|
|
50
|
+
"useStructuredData": true
|
|
51
|
+
},
|
|
52
|
+
"useMinFiles": false,
|
|
53
|
+
"paths": {
|
|
54
|
+
"fixtures": "test/utils/fixtures/fixtures",
|
|
55
|
+
"defaultSettings": "test/utils/fixtures/default-settings-browser.json",
|
|
56
|
+
"urlCache": "test/utils/fixtures/urls"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -54,10 +54,5 @@
|
|
|
54
54
|
"fixtures": "test/utils/fixtures/fixtures",
|
|
55
55
|
"defaultSettings": "test/utils/fixtures/default-settings.json",
|
|
56
56
|
"urlCache": "test/utils/fixtures/urls"
|
|
57
|
-
},
|
|
58
|
-
"sodoSearch": {
|
|
59
|
-
"url": "https://cdn.jsdelivr.net/npm/@tryghost/sodo-search@~{version}/umd/sodo-search.min.js",
|
|
60
|
-
"styles": "https://cdn.jsdelivr.net/npm/@tryghost/sodo-search@~{version}/umd/main.css",
|
|
61
|
-
"version": "1.0"
|
|
62
57
|
}
|
|
63
58
|
}
|
|
@@ -30,7 +30,7 @@ function loadNconf(options) {
|
|
|
30
30
|
|
|
31
31
|
// Now load various config json files
|
|
32
32
|
nconf.file('custom-env', path.join(customConfigPath, 'config.' + env + '.json'));
|
|
33
|
-
if (env
|
|
33
|
+
if (!env.startsWith('testing')) {
|
|
34
34
|
nconf.file('local-env', path.join(customConfigPath, 'config.local.json'));
|
|
35
35
|
}
|
|
36
36
|
nconf.file('default-env', path.join(baseConfigPath, 'env', 'config.' + env + '.json'));
|
|
@@ -70,8 +70,8 @@
|
|
|
70
70
|
}
|
|
71
71
|
},
|
|
72
72
|
"times": {
|
|
73
|
-
"cannotScheduleAPostBeforeInMinutes": 2,
|
|
74
|
-
"publishAPostBySchedulerToleranceInMinutes":
|
|
73
|
+
"cannotScheduleAPostBeforeInMinutes": -2,
|
|
74
|
+
"publishAPostBySchedulerToleranceInMinutes": 5,
|
|
75
75
|
"getImageSizeTimeoutInMS": 5000
|
|
76
76
|
},
|
|
77
77
|
"maintenance": {
|
|
@@ -86,7 +86,8 @@
|
|
|
86
86
|
"w2400": {"width": 2400}
|
|
87
87
|
},
|
|
88
88
|
"internalImageSizes": {
|
|
89
|
-
"icon": {"width": 256, "height": 256}
|
|
89
|
+
"icon": {"width": 256, "height": 256},
|
|
90
|
+
"email-header-image": {"width": 1200}
|
|
90
91
|
}
|
|
91
92
|
}
|
|
92
93
|
}
|
package/core/shared/sentry.js
CHANGED