ghost 4.41.3 → 4.43.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.
- package/content/themes/casper/package.json +2 -3
- package/content/themes/casper/partials/post-card.hbs +1 -1
- package/core/built/assets/ghost-dark-1933079797e24ccb8839657020830be5.css +1 -0
- package/core/built/assets/{ghost.min-1abf114ca26a71e8e1f09054f3592614.js → ghost.min-2a278873d60d6a13a4c05a396e5bed5e.js} +533 -398
- package/core/built/assets/ghost.min-38f3c38c0c6a1864f57079b068a0b0ce.css +1 -0
- package/core/built/assets/{vendor.min-9094db77ba3190cb10876f8e42e1d90d.js → vendor.min-21f79c68a284acb1b70039f3f63e5507.js} +68 -68
- package/core/built/assets/{vendor.min-2c8ad32b7960bb605ebc20097fee5ebd.css → vendor.min-ba66b98f7c24fa40e061c7ffc94f4e23.css} +214 -0
- package/core/frontend/apps/amp/lib/helpers/amp_analytics.js +1 -1
- package/core/frontend/apps/amp/lib/helpers/amp_components.js +1 -1
- package/core/frontend/apps/amp/lib/helpers/amp_content.js +1 -1
- package/core/frontend/apps/amp/lib/helpers/amp_style.js +1 -1
- package/core/frontend/apps/amp/lib/router.js +6 -5
- package/core/frontend/apps/private-blogging/lib/helpers/input_password.js +1 -1
- package/core/frontend/apps/private-blogging/lib/router.js +2 -2
- package/core/frontend/helpers/asset.js +1 -1
- package/core/frontend/helpers/author.js +1 -1
- package/core/frontend/helpers/authors.js +1 -1
- package/core/frontend/helpers/body_class.js +1 -1
- package/core/frontend/helpers/cancel_link.js +1 -1
- package/core/frontend/helpers/concat.js +1 -1
- package/core/frontend/helpers/content.js +1 -1
- package/core/frontend/helpers/date.js +1 -1
- package/core/frontend/helpers/encode.js +1 -1
- package/core/frontend/helpers/excerpt.js +1 -1
- package/core/frontend/helpers/facebook_url.js +1 -1
- package/core/frontend/helpers/foreach.js +2 -2
- package/core/frontend/helpers/get.js +1 -1
- package/core/frontend/helpers/ghost_foot.js +1 -1
- package/core/frontend/helpers/ghost_head.js +1 -1
- package/core/frontend/helpers/lang.js +1 -1
- package/core/frontend/helpers/link.js +1 -1
- package/core/frontend/helpers/link_class.js +1 -1
- package/core/frontend/helpers/match.js +1 -1
- package/core/frontend/helpers/navigation.js +1 -1
- package/core/frontend/helpers/pagination.js +1 -1
- package/core/frontend/helpers/plural.js +1 -1
- package/core/frontend/helpers/post_class.js +1 -1
- package/core/frontend/helpers/prev_post.js +6 -5
- package/core/frontend/helpers/price.js +1 -0
- package/core/frontend/helpers/products.js +1 -1
- package/core/frontend/helpers/reading_time.js +2 -2
- package/core/frontend/helpers/t.js +1 -1
- package/core/frontend/helpers/tags.js +1 -1
- package/core/frontend/helpers/tiers.js +1 -1
- package/core/frontend/helpers/title.js +1 -1
- package/core/frontend/helpers/twitter_url.js +1 -1
- package/core/frontend/helpers/url.js +1 -1
- package/core/frontend/meta/url.js +4 -4
- package/core/{server/data/schema → frontend/services/data}/checks.js +4 -4
- package/core/frontend/services/{routing/helpers → data}/entry-lookup.js +3 -3
- package/core/frontend/services/{routing/helpers → data}/fetch-data.js +3 -3
- package/core/frontend/services/data/index.js +5 -0
- package/core/frontend/services/{rendering.js → handlebars.js} +2 -1
- package/core/frontend/services/helpers/handlebars.js +1 -1
- package/core/frontend/services/proxy.js +2 -4
- package/core/frontend/services/{routing/helpers → rendering}/context.js +0 -0
- package/core/frontend/services/{routing/helpers → rendering}/error.js +0 -0
- package/core/frontend/services/{routing/helpers → rendering}/format-response.js +1 -1
- package/core/frontend/services/{routing/helpers → rendering}/index.js +0 -8
- package/core/frontend/services/{routing/helpers → rendering}/render-entries.js +1 -1
- package/core/frontend/services/{routing/helpers → rendering}/render-entry.js +1 -1
- package/core/frontend/services/{routing/helpers → rendering}/renderer.js +1 -1
- package/core/frontend/services/{routing/helpers → rendering}/secure.js +0 -0
- package/core/frontend/services/{routing/helpers → rendering}/templates.js +2 -2
- package/core/frontend/services/routing/CollectionRouter.js +1 -1
- package/core/frontend/services/routing/controllers/channel.js +9 -9
- package/core/frontend/services/routing/controllers/collection.js +9 -9
- package/core/frontend/services/routing/controllers/email-post.js +5 -6
- package/core/frontend/services/routing/controllers/entry.js +6 -6
- package/core/frontend/services/routing/controllers/preview.js +5 -6
- package/core/frontend/services/routing/controllers/rss.js +4 -3
- package/core/frontend/services/routing/controllers/static.js +5 -5
- package/core/frontend/services/routing/controllers/unsubscribe.js +2 -2
- package/core/frontend/services/routing/index.js +0 -4
- package/core/frontend/web/middleware/error-handler.js +2 -2
- package/core/server/api/canary/email-preview.js +2 -1
- package/core/server/api/canary/{email.js → emails.js} +0 -0
- package/core/server/api/canary/index.js +9 -1
- package/core/server/api/canary/members.js +0 -45
- package/core/server/api/canary/newsletters.js +45 -0
- package/core/server/api/canary/stats.js +23 -0
- package/core/server/api/canary/utils/serializers/output/email-previews.js +7 -0
- package/core/server/api/canary/utils/serializers/output/index.js +2 -22
- package/core/server/api/canary/utils/serializers/output/mappers/index.js +1 -0
- package/core/server/api/canary/utils/serializers/output/mappers/snippets.js +36 -0
- package/core/server/api/canary/utils/serializers/output/members.js +5 -2
- package/core/server/api/canary/utils/serializers/output/oembed.js +2 -2
- package/core/server/api/canary/utils/serializers/output/redirects.js +2 -2
- package/core/server/api/canary/utils/serializers/output/schedules.js +2 -2
- package/core/server/api/canary/utils/serializers/output/slack.js +2 -2
- package/core/server/api/canary/utils/serializers/output/themes.js +2 -2
- package/core/server/api/canary/utils/serializers/output/users.js +0 -23
- package/core/server/api/canary/utils/validators/input/index.js +6 -0
- package/core/server/api/shared/http.js +52 -51
- package/core/server/api/shared/serializers/handle.js +25 -26
- package/core/server/data/exporter/table-lists.js +2 -0
- package/core/server/data/migrations/utils.js +34 -2
- package/core/server/data/migrations/versions/4.42/2022-03-21-17-17-add.js +25 -0
- package/core/server/data/migrations/versions/4.42/2022-03-30-15-44-add-newsletter-permissions.js +28 -0
- package/core/server/data/migrations/versions/4.43/2022-03-28-19-26-recreate-newsletter-table.js +29 -0
- package/core/server/data/migrations/versions/4.43/2022-03-29-14-45-add-members-newsletters-table.js +7 -0
- package/core/server/data/migrations/versions/4.43/2022-04-01-10-13-add-post-newsletter-relation.js +108 -0
- package/core/server/data/migrations/versions/4.43/2022-04-06-09-47-add-type-column-to-paid-subscription-events.js +7 -0
- package/core/server/data/migrations/versions/4.43/2022-04-06-14-56-add-email-newsletter-relation.js +8 -0
- package/core/server/data/migrations/versions/4.43/2022-04-08-10-45-add-subscription-id-to-mrr-events.js +7 -0
- package/core/server/data/schema/commands.js +19 -14
- package/core/server/data/schema/index.js +0 -1
- package/core/server/data/schema/schema.js +36 -0
- package/core/server/models/base/bookshelf.js +1 -1
- package/core/server/models/base/plugins/crud.js +8 -0
- package/core/server/models/member.js +18 -1
- package/core/server/models/newsletter.js +43 -0
- package/core/server/models/post.js +4 -1
- package/core/server/services/auth/setup.js +4 -1
- package/core/server/services/mega/template.js +25 -13
- package/core/server/services/members/api.js +3 -1
- package/core/server/services/members/middleware.js +13 -3
- package/core/server/services/members/service.js +2 -1
- package/core/server/services/members/utils.js +13 -1
- package/core/server/services/newsletters/index.js +10 -0
- package/core/server/services/newsletters/service.js +24 -0
- package/core/server/services/slack.js +11 -3
- package/core/server/services/stats/index.js +1 -0
- package/core/server/services/stats/lib/members-stats-service.js +161 -0
- package/core/server/services/stats/lib/mrr-stats-service.js +154 -0
- package/core/server/services/stats/service.js +8 -0
- package/core/server/services/stripe/service.js +1 -0
- package/core/server/services/webhooks/webhooks-service.js +3 -1
- package/core/server/web/admin/views/default-prod.html +5 -5
- package/core/server/web/admin/views/default.html +5 -5
- package/core/server/web/api/canary/admin/routes.js +9 -2
- package/core/shared/config/defaults.json +2 -2
- package/core/shared/config/env/config.development.json +26 -0
- package/core/shared/config/env/config.production.json +21 -0
- package/core/shared/config/env/config.testing-mysql.json +59 -0
- package/core/shared/config/env/config.testing.json +58 -0
- package/package.json +50 -50
- package/yarn.lock +700 -769
- package/content/themes/casper/assets/css/csscomb.json +0 -240
- package/core/built/assets/ghost-dark-146c4c688b47d45c4aa018ee0f79cebc.css +0 -1
- package/core/built/assets/ghost.min-a73b150c7eecc4641d377cc73fb5eecd.css +0 -1
- package/core/server/api/canary/utils/serializers/output/email-preview.js +0 -10
- package/core/server/api/canary/utils/serializers/output/emails.js +0 -22
- package/core/server/api/canary/utils/serializers/output/identities.js +0 -7
- package/core/server/api/canary/utils/serializers/output/member-signin-urls.js +0 -7
- package/core/server/api/canary/utils/serializers/output/snippets.js +0 -107
- package/core/server/api/canary/utils/serializers/output/webhooks.js +0 -15
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
const mappers = require('./mappers');
|
|
2
|
-
|
|
3
|
-
module.exports = {
|
|
4
|
-
read(email, apiConfig, frame) {
|
|
5
|
-
frame.response = {
|
|
6
|
-
emails: [mappers.emails(email, frame)]
|
|
7
|
-
};
|
|
8
|
-
},
|
|
9
|
-
|
|
10
|
-
browse(page, apiConfig, frame) {
|
|
11
|
-
const data = {
|
|
12
|
-
emails: page.data.map(model => mappers.emails(model, frame)),
|
|
13
|
-
meta: page.meta
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
frame.response = data;
|
|
17
|
-
},
|
|
18
|
-
|
|
19
|
-
get retry() {
|
|
20
|
-
return this.read;
|
|
21
|
-
}
|
|
22
|
-
};
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
//@ts-check
|
|
2
|
-
const debug = require('@tryghost/debug')('api:canary:utils:serializers:output:snippets');
|
|
3
|
-
|
|
4
|
-
module.exports = {
|
|
5
|
-
browse: createSerializer('browse', paginatedSnippets),
|
|
6
|
-
read: createSerializer('read', singleSnippet),
|
|
7
|
-
edit: createSerializer('edit', singleSnippet),
|
|
8
|
-
add: createSerializer('add', singleSnippet),
|
|
9
|
-
destroy: createSerializer('destroy', passthrough)
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* @template PageMeta
|
|
14
|
-
*
|
|
15
|
-
* @param {{data: import('bookshelf').Model[], meta: PageMeta}} page
|
|
16
|
-
* @param {APIConfig} _apiConfig
|
|
17
|
-
* @param {Frame} frame
|
|
18
|
-
*
|
|
19
|
-
* @returns {{snippets: SerializedSnippet[], meta: PageMeta}}
|
|
20
|
-
*/
|
|
21
|
-
function paginatedSnippets(page, _apiConfig, frame) {
|
|
22
|
-
return {
|
|
23
|
-
snippets: page.data.map(model => serializeSnippet(model, frame.options)),
|
|
24
|
-
meta: page.meta
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* @param {import('bookshelf').Model} model
|
|
30
|
-
* @param {APIConfig} _apiConfig
|
|
31
|
-
* @param {Frame} frame
|
|
32
|
-
*
|
|
33
|
-
* @returns {{snippets: SerializedSnippet[]}}
|
|
34
|
-
*/
|
|
35
|
-
function singleSnippet(model, _apiConfig, frame) {
|
|
36
|
-
return {
|
|
37
|
-
snippets: [serializeSnippet(model, frame.options)]
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* @template Data
|
|
43
|
-
* @param {Data} data
|
|
44
|
-
* @returns Data
|
|
45
|
-
*/
|
|
46
|
-
function passthrough(data) {
|
|
47
|
-
return data;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* @template Data
|
|
52
|
-
* @template Response
|
|
53
|
-
* @param {string} debugString
|
|
54
|
-
* @param {(data: Data, apiConfig: APIConfig, frame: Frame) => Response} serialize - A function to serialize the data into an object suitable for API response
|
|
55
|
-
*
|
|
56
|
-
* @returns {(data: Data, apiConfig: APIConfig, frame: Frame) => void}
|
|
57
|
-
*/
|
|
58
|
-
function createSerializer(debugString, serialize) {
|
|
59
|
-
return function serializer(data, apiConfig, frame) {
|
|
60
|
-
debug(debugString);
|
|
61
|
-
const response = serialize(data, apiConfig, frame);
|
|
62
|
-
frame.response = response;
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* @param {import('bookshelf').Model} snippet
|
|
68
|
-
* @param {object} options
|
|
69
|
-
*
|
|
70
|
-
* @returns {SerializedSnippet}
|
|
71
|
-
*/
|
|
72
|
-
function serializeSnippet(snippet, options) {
|
|
73
|
-
const json = snippet.toJSON(options);
|
|
74
|
-
|
|
75
|
-
return {
|
|
76
|
-
id: json.id,
|
|
77
|
-
name: json.name,
|
|
78
|
-
// @ts-ignore
|
|
79
|
-
mobiledoc: json.mobiledoc,
|
|
80
|
-
created_at: json.created_at,
|
|
81
|
-
updated_at: json.updated_at,
|
|
82
|
-
created_by: json.created_by,
|
|
83
|
-
updated_by: json.updated_by
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* @typedef {Object} SerializedSnippet
|
|
89
|
-
* @prop {string} id
|
|
90
|
-
* @prop {string=} name
|
|
91
|
-
* @prop {string=} mobiledoc
|
|
92
|
-
* @prop {string} created_at
|
|
93
|
-
* @prop {string} updated_at
|
|
94
|
-
* @prop {string} created_by
|
|
95
|
-
* @prop {string} updated_by
|
|
96
|
-
*/
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* @typedef {Object} APIConfig
|
|
100
|
-
* @prop {string} docName
|
|
101
|
-
* @prop {string} method
|
|
102
|
-
*/
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* @typedef {Object<string, any>} Frame
|
|
106
|
-
* @prop {Object} options
|
|
107
|
-
*/
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
const debug = require('@tryghost/debug')('api:canary:utils:serializers:output:webhooks');
|
|
2
|
-
|
|
3
|
-
module.exports = {
|
|
4
|
-
all(models, apiConfig, frame) {
|
|
5
|
-
debug('all');
|
|
6
|
-
// CASE: e.g. destroy returns null
|
|
7
|
-
if (!models) {
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
frame.response = {
|
|
12
|
-
webhooks: [models.toJSON(frame.options)]
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
};
|