ghost 4.19.1 → 4.20.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/.eslintrc.js +9 -8
- package/Gruntfile.js +1 -1
- package/PRIVACY.md +3 -0
- package/content/adapters/README.md +2 -2
- package/core/boot.js +4 -4
- package/core/bridge.js +9 -1
- package/core/built/assets/{chunk.3.0778d8e4d707d2a625f1.js → chunk.3.777d43e2ce954ba8b2f5.js} +1 -1
- package/core/built/assets/codemirror/{codemirror-21a09582262987037db73b152fb35f7c.js → codemirror-d25c379b87ec8b33d54ac7149bc0b6ae.js} +14 -14
- package/core/built/assets/ghost-dark-20e2892d4f30d0d1183c9ac725ea37d0.css +1 -0
- package/core/built/assets/{ghost.min-102753ec485602c8fe80d60a1750bf84.js → ghost.min-07b6a50c54b3e2e190332c28c7255d2f.js} +525 -340
- package/core/built/assets/ghost.min-57e46fd3b1145ecf2cbd185a13611f3b.css +1 -0
- package/core/built/assets/icons/arrow-left-small.svg +0 -4
- package/core/built/assets/img/footer-marketplace-bg-572b6c6486a7e26316954d599eaa9f30.png +0 -0
- package/core/built/assets/img/marketing/offers-1-f2e1b653c4d5bb90eea9d7a2862530f9.jpg +0 -0
- package/core/built/assets/img/marketing/offers-2-28a225d34cc39d133748431536961d00.jpg +0 -0
- package/core/built/assets/img/marketing/offers-3-2094c91ab21a16c37fbe6ec16c140160.jpg +0 -0
- package/core/built/assets/img/themes/Casper-c7e784d7188cc5d7f097d9b6c97b0263.jpg +0 -0
- package/core/built/assets/simplemde/{simplemde-232f69d126310434489071a1891e6d8b.js → simplemde-3ffc0ec9e9fecf29b9a499db678c9e65.js} +14 -14
- package/core/built/assets/{vendor.min-0916203b598271a795909e8e0b1c16c2.js → vendor.min-af502ac4142871500fc424f6a5a254ec.js} +1046 -1043
- package/core/frontend/apps/amp/lib/router.js +1 -1
- package/core/frontend/meta/author-url.js +1 -1
- package/core/frontend/meta/url.js +1 -1
- package/core/{server → frontend}/public/favicon.ico +0 -0
- package/core/{server → frontend}/public/ghost.css +0 -0
- package/core/{server → frontend}/public/ghost.min.css +0 -0
- package/core/{server → frontend}/public/robots.txt +0 -0
- package/core/{server → frontend}/public/sitemap.xsl +0 -0
- package/core/frontend/services/proxy.js +1 -1
- package/core/frontend/services/routing/CollectionRouter.js +3 -49
- package/core/frontend/services/routing/ParentRouter.js +1 -4
- package/core/frontend/services/routing/StaticPagesRouter.js +3 -5
- package/core/frontend/services/routing/StaticRoutesRouter.js +4 -6
- package/core/frontend/services/routing/TaxonomyRouter.js +4 -5
- package/core/frontend/services/routing/controllers/collection.js +2 -2
- package/core/frontend/services/routing/controllers/email-post.js +2 -2
- package/core/frontend/services/routing/controllers/entry.js +2 -2
- package/core/frontend/services/routing/controllers/preview.js +2 -2
- package/core/frontend/services/routing/index.js +6 -12
- package/core/frontend/services/routing/registry.js +13 -0
- package/core/frontend/services/routing/router-manager.js +185 -0
- package/core/frontend/services/rss/generate-feed.js +2 -2
- package/core/frontend/services/theme-engine/i18n/i18n.js +267 -28
- package/core/frontend/services/theme-engine/i18n/index.js +1 -1
- package/core/frontend/services/theme-engine/i18n/theme-i18n.js +73 -0
- package/core/frontend/web/index.js +1 -0
- package/core/{server/web/site → frontend/web}/middleware/handle-image-sizes.js +4 -4
- package/core/{server/web/site → frontend/web}/middleware/index.js +0 -0
- package/core/{server/web/site → frontend/web}/middleware/redirect-ghost-to-admin.js +3 -3
- package/core/{server/web/site → frontend/web}/middleware/serve-favicon.js +6 -6
- package/core/{server/web/site → frontend/web}/middleware/serve-public-file.js +2 -2
- package/core/{server/web/site → frontend/web}/middleware/static-theme.js +3 -3
- package/core/{server/web/site → frontend/web}/routes.js +5 -4
- package/core/{server/web/site/app.js → frontend/web/site.js} +12 -16
- package/core/server/adapters/storage/LocalFileStorage.js +35 -39
- package/core/server/adapters/storage/index.js +12 -2
- package/core/server/api/canary/images.js +1 -1
- package/core/server/api/canary/offers.js +19 -0
- package/core/server/api/canary/utils/serializers/output/settings.js +2 -3
- package/core/server/api/canary/utils/serializers/output/utils/url.js +1 -1
- package/core/server/api/v2/images.js +1 -1
- package/core/server/api/v2/utils/serializers/output/utils/url.js +1 -1
- package/core/server/api/v3/images.js +1 -1
- package/core/server/api/v3/utils/serializers/output/settings.js +2 -3
- package/core/server/api/v3/utils/serializers/output/utils/url.js +1 -1
- package/core/server/data/importer/handlers/image.js +1 -1
- package/core/server/data/importer/importers/image.js +1 -1
- package/core/server/data/migrations/init/1-create-tables.js +7 -8
- package/core/server/data/migrations/init/2-create-fixtures.js +8 -8
- package/core/server/data/migrations/versions/4.20/01-remove-offer-redemptions-table.js +19 -0
- package/core/server/data/migrations/versions/4.20/02-remove-offers-table.js +30 -0
- package/core/server/data/migrations/versions/4.20/03-add-offers-table.js +21 -0
- package/core/server/data/migrations/versions/4.20/04-add-offer-redemptions-table.js +9 -0
- package/core/server/data/migrations/versions/4.20/05-remove-not-null-constraint-from-portal-title.js +41 -0
- package/core/server/data/schema/fixtures/utils.js +150 -143
- package/core/server/data/schema/schema.js +4 -3
- package/core/server/frontend/ghost.min.css +1 -0
- package/core/server/lib/image/image-size.js +2 -2
- package/core/server/lib/mobiledoc.js +3 -2
- package/core/server/models/action.js +7 -4
- package/core/server/models/base/plugins/overrides.js +19 -6
- package/core/server/models/index.js +4 -46
- package/core/server/models/member.js +5 -0
- package/core/server/models/user.js +2 -1
- package/core/server/overrides.js +6 -2
- package/core/server/services/adapter-manager/config.js +1 -0
- package/core/server/services/adapter-manager/index.js +9 -5
- package/core/server/services/adapter-manager/options-resolver.js +18 -0
- package/core/server/services/bulk-email/mailgun.js +1 -1
- package/core/server/services/mega/post-email-serializer.js +2 -2
- package/core/server/services/members/api.js +1 -3
- package/core/server/services/members/emails/signin.js +1 -1
- package/core/server/services/members/emails/signup.js +1 -1
- package/core/server/services/members/emails/subscribe.js +1 -1
- package/core/server/services/members/service.js +2 -1
- package/core/server/services/offers/service.js +1 -1
- package/core/server/services/route-settings/route-settings.js +1 -1
- package/core/server/services/settings/index.js +3 -1
- package/core/server/services/settings/settings-bread-service.js +42 -20
- package/core/server/services/slack.js +1 -1
- package/core/server/services/themes/activate.js +2 -2
- package/core/server/services/themes/activation-bridge.js +6 -6
- package/core/server/services/themes/storage.js +1 -1
- package/core/{frontend → server}/services/url/Queue.js +0 -0
- package/core/{frontend → server}/services/url/Resource.js +0 -0
- package/core/{frontend → server}/services/url/Resources.js +2 -2
- package/core/{frontend → server}/services/url/UrlGenerator.js +14 -14
- package/core/{frontend → server}/services/url/UrlService.js +12 -15
- package/core/{frontend → server}/services/url/Urls.js +1 -1
- package/core/{frontend → server}/services/url/configs/canary.js +0 -0
- package/core/{frontend → server}/services/url/configs/v2.js +0 -0
- package/core/{frontend → server}/services/url/configs/v3.js +0 -0
- package/core/{frontend → server}/services/url/configs/v4.js +0 -0
- package/core/{frontend → server}/services/url/index.js +0 -0
- package/core/server/services/xmlrpc.js +1 -1
- package/core/server/update-check.js +3 -3
- package/core/server/web/admin/controller.js +11 -0
- package/core/server/web/admin/views/default-prod.html +4 -4
- package/core/server/web/admin/views/default.html +4 -4
- package/core/server/web/api/app.js +8 -9
- package/core/server/web/oauth/app.js +4 -2
- package/core/server/web/parent/backend.js +3 -3
- package/core/server/web/parent/frontend.js +2 -2
- package/core/server/web/shared/middlewares/custom-redirects.js +0 -8
- package/core/server/web/shared/middlewares/maintenance.js +1 -1
- package/core/server/web/well-known.js +10 -10
- package/core/shared/config/overrides.json +1 -1
- package/core/shared/express.js +10 -0
- package/core/shared/html-to-plaintext.js +2 -2
- package/core/shared/labs.js +14 -5
- package/package.json +45 -43
- package/yarn.lock +649 -284
- package/core/built/assets/ghost-dark-da8e8eba130fb52f97494e51850d1045.css +0 -1
- package/core/built/assets/ghost.min-0d8f19623e9f077351bce453034daf4d.css +0 -1
- package/core/frontend/services/routing/bootstrap.js +0 -134
- package/core/server/public/404-ghost.png +0 -0
- package/core/server/public/404-ghost@2x.png +0 -0
- package/core/server/web/site/index.js +0 -1
- package/core/shared/i18n/i18n.js +0 -312
- package/core/shared/i18n/index.js +0 -6
|
@@ -12,18 +12,17 @@ module.exports = function setupApiApp() {
|
|
|
12
12
|
apiApp.use(require('./testmode')());
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
apiApp.
|
|
17
|
-
apiApp.use(urlUtils.getVersionPath({version: 'v2', type: 'admin'}), require('./v2/admin/app')());
|
|
15
|
+
apiApp.lazyUse(urlUtils.getVersionPath({version: 'v2', type: 'content'}), require('./v2/content/app'));
|
|
16
|
+
apiApp.lazyUse(urlUtils.getVersionPath({version: 'v2', type: 'admin'}), require('./v2/admin/app'));
|
|
18
17
|
|
|
19
|
-
apiApp.
|
|
20
|
-
apiApp.
|
|
18
|
+
apiApp.lazyUse(urlUtils.getVersionPath({version: 'v3', type: 'content'}), require('./v3/content/app'));
|
|
19
|
+
apiApp.lazyUse(urlUtils.getVersionPath({version: 'v3', type: 'admin'}), require('./v3/admin/app'));
|
|
21
20
|
|
|
22
|
-
apiApp.
|
|
23
|
-
apiApp.
|
|
21
|
+
apiApp.lazyUse(urlUtils.getVersionPath({version: 'v4', type: 'content'}), require('./canary/content/app'));
|
|
22
|
+
apiApp.lazyUse(urlUtils.getVersionPath({version: 'v4', type: 'admin'}), require('./canary/admin/app'));
|
|
24
23
|
|
|
25
|
-
apiApp.
|
|
26
|
-
apiApp.
|
|
24
|
+
apiApp.lazyUse(urlUtils.getVersionPath({version: 'canary', type: 'content'}), require('./canary/content/app'));
|
|
25
|
+
apiApp.lazyUse(urlUtils.getVersionPath({version: 'canary', type: 'admin'}), require('./canary/admin/app'));
|
|
27
26
|
|
|
28
27
|
// Error handling for requests to non-existent API versions
|
|
29
28
|
apiApp.use(errorHandler.resourceNotFound);
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
const debug = require('@tryghost/debug')('web:oauth:app');
|
|
2
2
|
const {URL} = require('url');
|
|
3
|
-
const passport = require('passport');
|
|
4
|
-
const GoogleStrategy = require('passport-google-oauth20').Strategy;
|
|
5
3
|
const express = require('../../../shared/express');
|
|
6
4
|
const urlUtils = require('../../../shared/url-utils');
|
|
7
5
|
const shared = require('../shared');
|
|
@@ -36,6 +34,10 @@ module.exports = function setupOAuthApp() {
|
|
|
36
34
|
*/
|
|
37
35
|
function googleOAuthMiddleware(clientId, secret) {
|
|
38
36
|
return (req, res, next) => {
|
|
37
|
+
// Lazy-required to save boot time
|
|
38
|
+
const passport = require('passport');
|
|
39
|
+
const GoogleStrategy = require('passport-google-oauth20').Strategy;
|
|
40
|
+
|
|
39
41
|
const adminURL = urlUtils.urlFor('admin', true);
|
|
40
42
|
|
|
41
43
|
//Create the callback url to be sent to Google
|
|
@@ -10,9 +10,9 @@ module.exports = () => {
|
|
|
10
10
|
// BACKEND
|
|
11
11
|
// Wrap the admin and API apps into a single express app for use with vhost
|
|
12
12
|
const backendApp = express('backend');
|
|
13
|
-
backendApp.
|
|
14
|
-
backendApp.
|
|
15
|
-
backendApp.
|
|
13
|
+
backendApp.lazyUse('/ghost/api', require('../api'));
|
|
14
|
+
backendApp.lazyUse('/ghost/oauth', require('../oauth'));
|
|
15
|
+
backendApp.lazyUse('/ghost/.well-known', require('../well-known'));
|
|
16
16
|
backendApp.use('/ghost', require('../../services/auth/session').createSessionFromToken, require('../admin')());
|
|
17
17
|
|
|
18
18
|
return backendApp;
|
|
@@ -18,8 +18,8 @@ module.exports = (options) => {
|
|
|
18
18
|
// otherwise we serve assets/pages with http. This can cause mixed content warnings in the admin client.
|
|
19
19
|
frontendApp.use(shared.middlewares.urlRedirects.frontendSSLRedirect);
|
|
20
20
|
|
|
21
|
-
frontendApp.
|
|
22
|
-
frontendApp.use('/', require('
|
|
21
|
+
frontendApp.lazyUse('/members', require('../members'));
|
|
22
|
+
frontendApp.use('/', require('../../../frontend/web')(options));
|
|
23
23
|
|
|
24
24
|
return frontendApp;
|
|
25
25
|
};
|
|
@@ -7,7 +7,6 @@ const urlUtils = require('../../../../shared/url-utils');
|
|
|
7
7
|
const errors = require('@tryghost/errors');
|
|
8
8
|
const logging = require('@tryghost/logging');
|
|
9
9
|
const redirectsService = require('../../../services/redirects');
|
|
10
|
-
const labsService = require('../../../../shared/labs');
|
|
11
10
|
|
|
12
11
|
const messages = {
|
|
13
12
|
customRedirectsRegistrationFailure: 'Could not register custom redirects.'
|
|
@@ -27,13 +26,6 @@ let customRedirectsRouter;
|
|
|
27
26
|
_private.registerRoutes = (router, redirects) => {
|
|
28
27
|
debug('redirects loading');
|
|
29
28
|
|
|
30
|
-
if (labsService.isSet('offers')) {
|
|
31
|
-
redirects.unshift({
|
|
32
|
-
from: '/zimo50',
|
|
33
|
-
to: '/#/portal/offers/abcdefuckoff'
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
|
|
37
29
|
redirects.forEach((redirect) => {
|
|
38
30
|
/**
|
|
39
31
|
* Detect case insensitive modifier when regex is enclosed by
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const errors = require('@tryghost/errors');
|
|
2
2
|
const config = require('../../../../shared/config');
|
|
3
3
|
const tpl = require('@tryghost/tpl');
|
|
4
|
-
const urlService = require('
|
|
4
|
+
const urlService = require('../../../services/url');
|
|
5
5
|
|
|
6
6
|
const messages = {
|
|
7
7
|
maintenance: 'Site is currently undergoing maintenance, please wait a moment then retry.',
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
const express = require('../../shared/express');
|
|
2
2
|
const settings = require('../../shared/settings-cache');
|
|
3
|
-
const jose = require('node-jose');
|
|
4
|
-
|
|
5
|
-
const dangerousPrivateKey = settings.get('ghost_private_key');
|
|
6
|
-
const keyStore = jose.JWK.createKeyStore();
|
|
7
|
-
const keyStoreReady = keyStore.add(dangerousPrivateKey, 'pem');
|
|
8
|
-
|
|
9
|
-
const getSafePublicJWKS = async () => {
|
|
10
|
-
await keyStoreReady;
|
|
11
|
-
return keyStore.toJSON();
|
|
12
|
-
};
|
|
13
3
|
|
|
14
4
|
module.exports = function setupWellKnownApp() {
|
|
15
5
|
const wellKnownApp = express('well-known');
|
|
16
6
|
|
|
7
|
+
const jose = require('node-jose');
|
|
8
|
+
const dangerousPrivateKey = settings.get('ghost_private_key');
|
|
9
|
+
const keyStore = jose.JWK.createKeyStore();
|
|
10
|
+
const keyStoreReady = keyStore.add(dangerousPrivateKey, 'pem');
|
|
11
|
+
|
|
12
|
+
const getSafePublicJWKS = async () => {
|
|
13
|
+
await keyStoreReady;
|
|
14
|
+
return keyStore.toJSON();
|
|
15
|
+
};
|
|
16
|
+
|
|
17
17
|
wellKnownApp.get('/jwks.json', async (req, res) => {
|
|
18
18
|
const jwks = await getSafePublicJWKS();
|
|
19
19
|
res.json(jwks);
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"internalAppPath": "core/frontend/apps/",
|
|
11
11
|
"internalAdaptersPath": "core/server/adapters/",
|
|
12
12
|
"migrationPath": "core/server/data/migrations",
|
|
13
|
-
"publicFilePath": "core/
|
|
13
|
+
"publicFilePath": "core/frontend/public"
|
|
14
14
|
},
|
|
15
15
|
"apps": {
|
|
16
16
|
"internal": [
|
package/core/shared/express.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
const debug = require('@tryghost/debug')('shared:express');
|
|
2
2
|
const express = require('express');
|
|
3
|
+
const {createLazyRouter} = require('express-lazy-router');
|
|
3
4
|
const sentry = require('./sentry');
|
|
4
5
|
|
|
6
|
+
const lazyLoad = createLazyRouter();
|
|
7
|
+
|
|
5
8
|
module.exports = (name) => {
|
|
6
9
|
debug('new app start', name);
|
|
7
10
|
const app = express();
|
|
@@ -14,6 +17,13 @@ module.exports = (name) => {
|
|
|
14
17
|
// Sentry must be our first error handler. Mounting it here means all custom error handlers will come after
|
|
15
18
|
app.use(sentry.errorHandler);
|
|
16
19
|
|
|
20
|
+
app.lazyUse = function lazyUse(mountPath, requireFn) {
|
|
21
|
+
app.use(mountPath, lazyLoad(() => {
|
|
22
|
+
debug(`lazy-loading on ${mountPath}`);
|
|
23
|
+
return Promise.resolve(requireFn());
|
|
24
|
+
}));
|
|
25
|
+
};
|
|
26
|
+
|
|
17
27
|
debug('new app end', name);
|
|
18
28
|
return app;
|
|
19
29
|
};
|
package/core/shared/labs.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
const _ = require('lodash');
|
|
2
2
|
const Promise = require('bluebird');
|
|
3
|
-
const SafeString = require('express-hbs').SafeString;
|
|
4
3
|
const errors = require('@tryghost/errors');
|
|
5
4
|
const logging = require('@tryghost/logging');
|
|
6
5
|
const tpl = require('@tryghost/tpl');
|
|
@@ -14,6 +13,12 @@ const messages = {
|
|
|
14
13
|
errorHelp: 'See {url}'
|
|
15
14
|
};
|
|
16
15
|
|
|
16
|
+
// flags in this list always return `true`, allows quick global enable prior to full flag removal
|
|
17
|
+
const GA_FEATURES = [
|
|
18
|
+
'customThemeSettings',
|
|
19
|
+
'offers'
|
|
20
|
+
];
|
|
21
|
+
|
|
17
22
|
// NOTE: this allowlist is meant to be used to filter out any unexpected
|
|
18
23
|
// input for the "labs" setting value
|
|
19
24
|
const BETA_FEATURES = [
|
|
@@ -23,11 +28,10 @@ const BETA_FEATURES = [
|
|
|
23
28
|
|
|
24
29
|
const ALPHA_FEATURES = [
|
|
25
30
|
'oauthLogin',
|
|
26
|
-
'
|
|
27
|
-
'membersActivity',
|
|
28
|
-
'offers'
|
|
31
|
+
'membersActivity'
|
|
29
32
|
];
|
|
30
33
|
|
|
34
|
+
module.exports.GA_KEYS = [...GA_FEATURES];
|
|
31
35
|
module.exports.WRITABLE_KEYS_ALLOWLIST = [...BETA_FEATURES, ...ALPHA_FEATURES];
|
|
32
36
|
|
|
33
37
|
module.exports.getAll = () => {
|
|
@@ -39,6 +43,10 @@ module.exports.getAll = () => {
|
|
|
39
43
|
}
|
|
40
44
|
});
|
|
41
45
|
|
|
46
|
+
GA_FEATURES.forEach((gaKey) => {
|
|
47
|
+
labs[gaKey] = true;
|
|
48
|
+
});
|
|
49
|
+
|
|
42
50
|
labs.members = settingsCache.get('members_signup_access') !== 'none';
|
|
43
51
|
|
|
44
52
|
return labs;
|
|
@@ -78,7 +86,7 @@ module.exports.enabledHelper = function enabledHelper(options, callback) {
|
|
|
78
86
|
}
|
|
79
87
|
|
|
80
88
|
// Else, the helper is not active and we need to handle this as an error
|
|
81
|
-
errDetails.message = tpl(options.errorMessage || messages.errorMessage, {helperName: options.helperName})
|
|
89
|
+
errDetails.message = tpl(options.errorMessage || messages.errorMessage, {helperName: options.helperName});
|
|
82
90
|
errDetails.context = tpl(options.errorContext || messages.errorContext, {
|
|
83
91
|
helperName: options.helperName,
|
|
84
92
|
flagName: options.flagName
|
|
@@ -87,6 +95,7 @@ module.exports.enabledHelper = function enabledHelper(options, callback) {
|
|
|
87
95
|
|
|
88
96
|
logging.error(new errors.DisabledFeatureError(errDetails));
|
|
89
97
|
|
|
98
|
+
const {SafeString} = require('express-hbs');
|
|
90
99
|
errString = new SafeString(`<script>console.error("${_.values(errDetails).join(' ')}");</script>`);
|
|
91
100
|
|
|
92
101
|
if (options.async) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ghost",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.20.3",
|
|
4
4
|
"description": "The professional publishing platform",
|
|
5
5
|
"author": "Ghost Foundation",
|
|
6
6
|
"homepage": "https://ghost.org",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"test": "mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js --timeout=60000",
|
|
30
30
|
"test:all": "yarn test:unit && yarn test:integration && yarn test:e2e && yarn lint",
|
|
31
31
|
"test:debug": "DEBUG=ghost:test* yarn test",
|
|
32
|
-
"test:unit": "c8 --all -n 'core/{*.js,frontend,server,shared}' --reporter text-summary mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js './test/unit' --timeout=2000",
|
|
32
|
+
"test:unit": "c8 --all -n 'core/{*.js,frontend,server,shared}' --reporter text-summary --reporter cobertura mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js './test/unit' --timeout=2000",
|
|
33
33
|
"test:integration": "mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js './test/integration' --timeout=5000",
|
|
34
34
|
"test:e2e": "mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js './test/e2e-api' './test/e2e-frontend' './test/e2e-server' --timeout=10000",
|
|
35
35
|
"test:regression": "mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js './test/regression' --timeout=60000",
|
|
@@ -55,55 +55,55 @@
|
|
|
55
55
|
"dependencies": {
|
|
56
56
|
"@nexes/nql": "0.6.0",
|
|
57
57
|
"@sentry/node": "6.13.3",
|
|
58
|
-
"@tryghost/adapter-manager": "0.2.
|
|
58
|
+
"@tryghost/adapter-manager": "0.2.18",
|
|
59
59
|
"@tryghost/admin-api-schema": "2.6.0",
|
|
60
|
-
"@tryghost/bookshelf-plugins": "0.3.
|
|
61
|
-
"@tryghost/bootstrap-socket": "0.2.
|
|
60
|
+
"@tryghost/bookshelf-plugins": "0.3.4",
|
|
61
|
+
"@tryghost/bootstrap-socket": "0.2.13",
|
|
62
62
|
"@tryghost/color-utils": "0.1.2",
|
|
63
|
-
"@tryghost/config-url-helpers": "0.1.
|
|
64
|
-
"@tryghost/constants": "0.1.
|
|
65
|
-
"@tryghost/custom-theme-settings-service": "0.
|
|
66
|
-
"@tryghost/debug": "0.1.
|
|
67
|
-
"@tryghost/email-analytics-provider-mailgun": "1.0.
|
|
68
|
-
"@tryghost/email-analytics-service": "1.0.
|
|
69
|
-
"@tryghost/errors": "0.2.
|
|
70
|
-
"@tryghost/express-dynamic-redirects": "0.2.
|
|
63
|
+
"@tryghost/config-url-helpers": "0.1.3",
|
|
64
|
+
"@tryghost/constants": "0.1.12",
|
|
65
|
+
"@tryghost/custom-theme-settings-service": "0.3.0",
|
|
66
|
+
"@tryghost/debug": "0.1.9",
|
|
67
|
+
"@tryghost/email-analytics-provider-mailgun": "1.0.4",
|
|
68
|
+
"@tryghost/email-analytics-service": "1.0.3",
|
|
69
|
+
"@tryghost/errors": "0.2.17",
|
|
70
|
+
"@tryghost/express-dynamic-redirects": "0.2.1",
|
|
71
71
|
"@tryghost/helpers": "1.1.52",
|
|
72
|
-
"@tryghost/image-transform": "1.0.
|
|
73
|
-
"@tryghost/job-manager": "0.8.
|
|
72
|
+
"@tryghost/image-transform": "1.0.17",
|
|
73
|
+
"@tryghost/job-manager": "0.8.11",
|
|
74
74
|
"@tryghost/kg-card-factory": "3.0.4",
|
|
75
75
|
"@tryghost/kg-default-atoms": "3.0.0",
|
|
76
76
|
"@tryghost/kg-default-cards": "5.0.7",
|
|
77
77
|
"@tryghost/kg-markdown-html-renderer": "5.0.5",
|
|
78
78
|
"@tryghost/kg-mobiledoc-html-renderer": "5.1.1",
|
|
79
|
-
"@tryghost/limit-service": "0.6.
|
|
79
|
+
"@tryghost/limit-service": "0.6.5",
|
|
80
80
|
"@tryghost/logging": "0.2.2",
|
|
81
|
-
"@tryghost/magic-link": "1.0.
|
|
82
|
-
"@tryghost/members-api": "2.
|
|
83
|
-
"@tryghost/members-csv": "1.1.
|
|
84
|
-
"@tryghost/members-importer": "0.3.
|
|
85
|
-
"@tryghost/members-offers": "0.
|
|
86
|
-
"@tryghost/members-ssr": "1.0.
|
|
87
|
-
"@tryghost/metrics": "0.2.
|
|
88
|
-
"@tryghost/mw-session-from-token": "0.1.
|
|
89
|
-
"@tryghost/nodemailer": "0.3.
|
|
90
|
-
"@tryghost/package-json": "1.0.
|
|
91
|
-
"@tryghost/promise": "0.1.
|
|
92
|
-
"@tryghost/request": "0.1.
|
|
93
|
-
"@tryghost/root-utils": "0.3.
|
|
94
|
-
"@tryghost/security": "0.2.
|
|
95
|
-
"@tryghost/session-service": "0.1.
|
|
81
|
+
"@tryghost/magic-link": "1.0.14",
|
|
82
|
+
"@tryghost/members-api": "2.4.1",
|
|
83
|
+
"@tryghost/members-csv": "1.1.8",
|
|
84
|
+
"@tryghost/members-importer": "0.3.4",
|
|
85
|
+
"@tryghost/members-offers": "0.10.1",
|
|
86
|
+
"@tryghost/members-ssr": "1.0.15",
|
|
87
|
+
"@tryghost/metrics": "0.2.6",
|
|
88
|
+
"@tryghost/mw-session-from-token": "0.1.26",
|
|
89
|
+
"@tryghost/nodemailer": "0.3.6",
|
|
90
|
+
"@tryghost/package-json": "1.0.6",
|
|
91
|
+
"@tryghost/promise": "0.1.13",
|
|
92
|
+
"@tryghost/request": "0.1.8",
|
|
93
|
+
"@tryghost/root-utils": "0.3.7",
|
|
94
|
+
"@tryghost/security": "0.2.13",
|
|
95
|
+
"@tryghost/session-service": "0.1.28",
|
|
96
96
|
"@tryghost/social-urls": "0.1.26",
|
|
97
97
|
"@tryghost/string": "0.1.20",
|
|
98
|
-
"@tryghost/tpl": "0.1.
|
|
98
|
+
"@tryghost/tpl": "0.1.8",
|
|
99
99
|
"@tryghost/update-check-service": "0.2.4",
|
|
100
100
|
"@tryghost/url-utils": "2.0.2",
|
|
101
|
-
"@tryghost/validator": "0.1.
|
|
102
|
-
"@tryghost/version": "0.1.
|
|
103
|
-
"@tryghost/vhost-middleware": "1.0.
|
|
104
|
-
"@tryghost/zip": "1.1.
|
|
101
|
+
"@tryghost/validator": "0.1.8",
|
|
102
|
+
"@tryghost/version": "0.1.7",
|
|
103
|
+
"@tryghost/vhost-middleware": "1.0.19",
|
|
104
|
+
"@tryghost/zip": "1.1.18",
|
|
105
105
|
"amperize": "0.6.1",
|
|
106
|
-
"analytics-node": "5.1.
|
|
106
|
+
"analytics-node": "5.1.2",
|
|
107
107
|
"bluebird": "3.7.2",
|
|
108
108
|
"body-parser": "1.19.0",
|
|
109
109
|
"bookshelf": "1.2.0",
|
|
@@ -121,13 +121,14 @@
|
|
|
121
121
|
"express-brute": "1.0.1",
|
|
122
122
|
"express-hbs": "2.4.0",
|
|
123
123
|
"express-jwt": "6.1.0",
|
|
124
|
+
"express-lazy-router": "1.0.4",
|
|
124
125
|
"express-query-boolean": "2.0.0",
|
|
125
126
|
"express-session": "1.17.2",
|
|
126
127
|
"fs-extra": "10.0.0",
|
|
127
128
|
"ghost-storage-base": "0.0.6",
|
|
128
129
|
"glob": "7.2.0",
|
|
129
130
|
"got": "9.6.0",
|
|
130
|
-
"gscan": "4.
|
|
131
|
+
"gscan": "4.9.1",
|
|
131
132
|
"html-to-text": "5.1.1",
|
|
132
133
|
"image-size": "1.0.0",
|
|
133
134
|
"intl": "1.2.5",
|
|
@@ -140,6 +141,7 @@
|
|
|
140
141
|
"knex": "0.21.21",
|
|
141
142
|
"knex-migrator": "4.0.5",
|
|
142
143
|
"lodash": "4.17.21",
|
|
144
|
+
"luxon": "2.0.2",
|
|
143
145
|
"mailgun-js": "0.22.0",
|
|
144
146
|
"metascraper": "5.24.9",
|
|
145
147
|
"metascraper-author": "5.24.9",
|
|
@@ -156,7 +158,7 @@
|
|
|
156
158
|
"mysql": "2.18.1",
|
|
157
159
|
"nconf": "0.11.3",
|
|
158
160
|
"node-jose": "2.0.0",
|
|
159
|
-
"oembed-parser": "1.4.
|
|
161
|
+
"oembed-parser": "1.4.9",
|
|
160
162
|
"passport": "0.5.0",
|
|
161
163
|
"passport-google-oauth": "2.0.0",
|
|
162
164
|
"path-match": "1.2.4",
|
|
@@ -179,7 +181,7 @@
|
|
|
179
181
|
"coffeescript": "2.6.1",
|
|
180
182
|
"cssnano": "5.0.8",
|
|
181
183
|
"eslint": "7.32.0",
|
|
182
|
-
"eslint-plugin-ghost": "2.
|
|
184
|
+
"eslint-plugin-ghost": "2.7.0",
|
|
183
185
|
"grunt": "1.4.1",
|
|
184
186
|
"grunt-bg-shell": "2.3.3",
|
|
185
187
|
"grunt-contrib-clean": "2.0.0",
|
|
@@ -191,13 +193,13 @@
|
|
|
191
193
|
"grunt-shell": "3.0.1",
|
|
192
194
|
"grunt-subgrunt": "1.3.0",
|
|
193
195
|
"grunt-update-submodules": "0.4.1",
|
|
194
|
-
"jwks-rsa": "2.0.
|
|
196
|
+
"jwks-rsa": "2.0.5",
|
|
195
197
|
"mocha": "9.1.3",
|
|
196
198
|
"mocha-slow-test-reporter": "0.1.2",
|
|
197
199
|
"mock-knex": "0.4.10",
|
|
198
|
-
"nock": "13.1.
|
|
200
|
+
"nock": "13.1.4",
|
|
199
201
|
"papaparse": "5.3.1",
|
|
200
|
-
"postcss": "8.3.
|
|
202
|
+
"postcss": "8.3.11",
|
|
201
203
|
"rewire": "5.0.0",
|
|
202
204
|
"should": "13.2.3",
|
|
203
205
|
"sinon": "11.1.2",
|