ghost 4.41.3 → 4.42.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/core/built/assets/ghost-dark-97613c037232aba4490489431ce170ca.css +1 -0
- package/core/built/assets/{ghost.min-1abf114ca26a71e8e1f09054f3592614.js → ghost.min-20096eef632760c3a2906e243adbd24b.js} +400 -323
- package/core/built/assets/ghost.min-c08ce1872f0e09edb63eb13c43606d18.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/helpers/price.js +1 -0
- 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 +14 -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 +0 -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/shared/serializers/handle.js +25 -26
- package/core/server/data/exporter/table-lists.js +1 -0
- package/core/server/data/migrations/utils.js +1 -1
- package/core/server/data/migrations/versions/4.42/2022-03-21-17-17-add.js +20 -0
- package/core/server/data/migrations/versions/4.42/2022-03-30-15-44-add-newsletter-permissions.js +28 -0
- package/core/server/data/schema/commands.js +13 -13
- package/core/server/data/schema/schema.js +18 -0
- package/core/server/models/newsletter.js +9 -0
- package/core/server/services/mega/template.js +25 -13
- package/core/server/services/members/service.js +2 -1
- package/core/server/services/stats/index.js +1 -0
- package/core/server/services/stats/lib/members-stats-service.js +165 -0
- package/core/server/services/stats/service.js +6 -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 +8 -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 +38 -38
- package/yarn.lock +510 -654
- 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
|
-
};
|