ghost 5.50.4 → 5.51.1
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-cache-memory-ttl-5.51.1.tgz +0 -0
- package/components/{tryghost-adapter-cache-redis-5.50.4.tgz → tryghost-adapter-cache-redis-5.51.1.tgz} +0 -0
- package/components/{tryghost-adapter-manager-5.50.4.tgz → tryghost-adapter-manager-5.51.1.tgz} +0 -0
- package/components/tryghost-announcement-bar-settings-5.51.1.tgz +0 -0
- package/components/{tryghost-api-framework-5.50.4.tgz → tryghost-api-framework-5.51.1.tgz} +0 -0
- package/components/{tryghost-api-version-compatibility-service-5.50.4.tgz → tryghost-api-version-compatibility-service-5.51.1.tgz} +0 -0
- package/components/{tryghost-audience-feedback-5.50.4.tgz → tryghost-audience-feedback-5.51.1.tgz} +0 -0
- package/components/{tryghost-bootstrap-socket-5.50.4.tgz → tryghost-bootstrap-socket-5.51.1.tgz} +0 -0
- package/components/tryghost-collections-5.51.1.tgz +0 -0
- package/components/{tryghost-constants-5.50.4.tgz → tryghost-constants-5.51.1.tgz} +0 -0
- package/components/{tryghost-custom-theme-settings-service-5.50.4.tgz → tryghost-custom-theme-settings-service-5.51.1.tgz} +0 -0
- package/components/{tryghost-data-generator-5.50.4.tgz → tryghost-data-generator-5.51.1.tgz} +0 -0
- package/components/tryghost-domain-events-5.51.1.tgz +0 -0
- package/components/tryghost-dynamic-routing-events-5.51.1.tgz +0 -0
- package/components/tryghost-email-analytics-provider-mailgun-5.51.1.tgz +0 -0
- package/components/{tryghost-email-analytics-service-5.50.4.tgz → tryghost-email-analytics-service-5.51.1.tgz} +0 -0
- package/components/tryghost-email-content-generator-5.51.1.tgz +0 -0
- package/components/{tryghost-email-events-5.50.4.tgz → tryghost-email-events-5.51.1.tgz} +0 -0
- package/components/tryghost-email-service-5.51.1.tgz +0 -0
- package/components/tryghost-email-suppression-list-5.51.1.tgz +0 -0
- package/components/tryghost-event-aware-cache-wrapper-5.51.1.tgz +0 -0
- package/components/{tryghost-express-dynamic-redirects-5.50.4.tgz → tryghost-express-dynamic-redirects-5.51.1.tgz} +0 -0
- package/components/{tryghost-external-media-inliner-5.50.4.tgz → tryghost-external-media-inliner-5.51.1.tgz} +0 -0
- package/components/tryghost-extract-api-key-5.51.1.tgz +0 -0
- package/components/{tryghost-html-to-plaintext-5.50.4.tgz → tryghost-html-to-plaintext-5.51.1.tgz} +0 -0
- package/components/tryghost-i18n-5.51.1.tgz +0 -0
- package/components/tryghost-importer-handler-content-files-5.51.1.tgz +0 -0
- package/components/{tryghost-importer-revue-5.50.4.tgz → tryghost-importer-revue-5.51.1.tgz} +0 -0
- package/components/tryghost-in-memory-repository-5.51.1.tgz +0 -0
- package/components/{tryghost-job-manager-5.50.4.tgz → tryghost-job-manager-5.51.1.tgz} +0 -0
- package/components/{tryghost-link-redirects-5.50.4.tgz → tryghost-link-redirects-5.51.1.tgz} +0 -0
- package/components/tryghost-link-replacer-5.51.1.tgz +0 -0
- package/components/{tryghost-link-tracking-5.50.4.tgz → tryghost-link-tracking-5.51.1.tgz} +0 -0
- package/components/{tryghost-magic-link-5.50.4.tgz → tryghost-magic-link-5.51.1.tgz} +0 -0
- package/components/tryghost-mailgun-client-5.51.1.tgz +0 -0
- package/components/{tryghost-member-attribution-5.50.4.tgz → tryghost-member-attribution-5.51.1.tgz} +0 -0
- package/components/tryghost-member-events-5.51.1.tgz +0 -0
- package/components/{tryghost-members-api-5.50.4.tgz → tryghost-members-api-5.51.1.tgz} +0 -0
- package/components/tryghost-members-csv-5.51.1.tgz +0 -0
- package/components/tryghost-members-events-service-5.51.1.tgz +0 -0
- package/components/tryghost-members-importer-5.51.1.tgz +0 -0
- package/components/tryghost-members-offers-5.51.1.tgz +0 -0
- package/components/tryghost-members-payments-5.51.1.tgz +0 -0
- package/components/{tryghost-members-ssr-5.50.4.tgz → tryghost-members-ssr-5.51.1.tgz} +0 -0
- package/components/tryghost-members-stripe-service-5.51.1.tgz +0 -0
- package/components/{tryghost-mentions-email-report-5.50.4.tgz → tryghost-mentions-email-report-5.51.1.tgz} +0 -0
- package/components/tryghost-milestones-5.51.1.tgz +0 -0
- package/components/tryghost-minifier-5.51.1.tgz +0 -0
- package/components/tryghost-mw-api-version-mismatch-5.51.1.tgz +0 -0
- package/components/tryghost-mw-cache-control-5.51.1.tgz +0 -0
- package/components/{tryghost-mw-error-handler-5.50.4.tgz → tryghost-mw-error-handler-5.51.1.tgz} +0 -0
- package/components/{tryghost-mw-session-from-token-5.50.4.tgz → tryghost-mw-session-from-token-5.51.1.tgz} +0 -0
- package/components/tryghost-mw-update-user-last-seen-5.51.1.tgz +0 -0
- package/components/tryghost-mw-version-match-5.51.1.tgz +0 -0
- package/components/tryghost-mw-vhost-5.51.1.tgz +0 -0
- package/components/tryghost-oembed-service-5.51.1.tgz +0 -0
- package/components/{tryghost-package-json-5.50.4.tgz → tryghost-package-json-5.51.1.tgz} +0 -0
- package/components/{tryghost-post-revisions-5.50.4.tgz → tryghost-post-revisions-5.51.1.tgz} +0 -0
- package/components/tryghost-posts-service-5.51.1.tgz +0 -0
- package/components/tryghost-referrers-5.51.1.tgz +0 -0
- package/components/{tryghost-security-5.50.4.tgz → tryghost-security-5.51.1.tgz} +0 -0
- package/components/{tryghost-session-service-5.50.4.tgz → tryghost-session-service-5.51.1.tgz} +0 -0
- package/components/tryghost-settings-path-manager-5.51.1.tgz +0 -0
- package/components/{tryghost-slack-notifications-5.50.4.tgz → tryghost-slack-notifications-5.51.1.tgz} +0 -0
- package/components/{tryghost-staff-service-5.50.4.tgz → tryghost-staff-service-5.51.1.tgz} +0 -0
- package/components/tryghost-stats-service-5.51.1.tgz +0 -0
- package/components/tryghost-tiers-5.51.1.tgz +0 -0
- package/components/{tryghost-update-check-service-5.50.4.tgz → tryghost-update-check-service-5.51.1.tgz} +0 -0
- package/components/tryghost-verification-trigger-5.51.1.tgz +0 -0
- package/components/tryghost-version-notifications-data-service-5.51.1.tgz +0 -0
- package/components/{tryghost-webmentions-5.50.4.tgz → tryghost-webmentions-5.51.1.tgz} +0 -0
- package/core/boot.js +2 -0
- package/core/built/admin/assets/{chunk.143.23853432ad84ee830e79.js → chunk.143.2abd91420b3fa24e7b4f.js} +5 -5
- package/core/built/admin/assets/{chunk.178.ba5d7ae82760044bc225.js → chunk.178.94ee303c70d2d9d12bc5.js} +4 -4
- package/core/built/admin/assets/{chunk.976.c3f393d6685c89bbaaca.js → chunk.976.1491bdc7009987ddde87.js} +4 -4
- package/core/built/admin/assets/{ghost-27882ad9ebdf26d6c539be33e8f8c9ed.js → ghost-22c9d9cef7aa0ff08294f8ea69c344dd.js} +3695 -3689
- package/core/built/admin/assets/ghost-dark-2ec2e32362fa867723379a286fd0f0bd.css +1 -0
- package/core/built/admin/assets/ghost-e6482a0a19b228a9b9e71a9c5ea134ba.css +1 -0
- package/core/built/admin/index.html +5 -5
- package/core/frontend/src/cards/css/signup.css +1 -1
- package/core/server/api/endpoints/actions.js +3 -0
- package/core/server/api/endpoints/announcements.js +3 -0
- package/core/server/api/endpoints/authentication.js +18 -0
- package/core/server/api/endpoints/authors-public.js +6 -0
- package/core/server/api/endpoints/collections.js +31 -25
- package/core/server/api/endpoints/comments-members.js +30 -1
- package/core/server/api/endpoints/comments.js +3 -0
- package/core/server/api/endpoints/config.js +3 -0
- package/core/server/api/endpoints/custom-theme-settings.js +3 -0
- package/core/server/api/endpoints/db.js +8 -1
- package/core/server/api/endpoints/email-post.js +3 -0
- package/core/server/api/endpoints/email-previews.js +6 -1
- package/core/server/api/endpoints/emails.js +24 -0
- package/core/server/api/endpoints/explore.js +3 -0
- package/core/server/api/endpoints/feedback-members.js +3 -0
- package/core/server/api/endpoints/files.js +3 -0
- package/core/server/api/endpoints/identities.js +3 -0
- package/core/server/api/endpoints/images.js +3 -0
- package/core/server/api/endpoints/integrations.js +15 -0
- package/core/server/api/endpoints/invites.js +12 -0
- package/core/server/api/endpoints/labels.js +12 -2
- package/core/server/api/endpoints/links.js +3 -0
- package/core/server/api/endpoints/mail.js +3 -0
- package/core/server/api/endpoints/media.js +6 -0
- package/core/server/api/endpoints/member-signin-urls.js +3 -0
- package/core/server/api/endpoints/members-stripe-connect.js +3 -0
- package/core/server/api/endpoints/members.js +41 -9
- package/core/server/api/endpoints/mentions.js +6 -1
- package/core/server/api/endpoints/newsletters-public.js +3 -0
- package/core/server/api/endpoints/newsletters.js +9 -0
- package/core/server/api/endpoints/notifications.js +12 -0
- package/core/server/api/endpoints/oembed.js +3 -0
- package/core/server/api/endpoints/offers-public.js +3 -0
- package/core/server/api/endpoints/offers.js +6 -0
- package/core/server/api/endpoints/pages-public.js +6 -0
- package/core/server/api/endpoints/pages.js +15 -6
- package/core/server/api/endpoints/posts-public.js +6 -0
- package/core/server/api/endpoints/posts.js +17 -20
- package/core/server/api/endpoints/previews.js +3 -0
- package/core/server/api/endpoints/redirects.js +2 -1
- package/core/server/api/endpoints/roles.js +3 -0
- package/core/server/api/endpoints/schedules.js +6 -1
- package/core/server/api/endpoints/settings-public.js +3 -0
- package/core/server/api/endpoints/settings.js +11 -1
- package/core/server/api/endpoints/site.js +3 -0
- package/core/server/api/endpoints/slack.js +3 -0
- package/core/server/api/endpoints/snippets.js +15 -4
- package/core/server/api/endpoints/stats.js +15 -0
- package/core/server/api/endpoints/tags-public.js +6 -0
- package/core/server/api/endpoints/tags.js +9 -1
- package/core/server/api/endpoints/themes.js +15 -2
- package/core/server/api/endpoints/tiers-public.js +3 -0
- package/core/server/api/endpoints/tiers.js +6 -0
- package/core/server/api/endpoints/users.js +21 -1
- package/core/server/api/endpoints/utils/serializers/output/mappers/posts.js +13 -1
- package/core/server/api/endpoints/utils/serializers/output/settings.js +1 -1
- package/core/server/api/endpoints/webhooks.js +8 -2
- package/core/server/data/migrations/versions/5.51/2023-05-30-19-03-update-pintura-setting.js +19 -0
- package/core/server/data/migrations/versions/5.51/2023-06-07-10-17-add-collections-crud-persmissions.js +54 -0
- package/core/server/data/schema/default-settings/default-settings.json +1 -1
- package/core/server/data/schema/fixtures/FixtureManager.js +1 -0
- package/core/server/data/schema/fixtures/fixtures.json +35 -5
- package/core/server/services/collections/built-in-collections.js +8 -0
- package/core/server/services/collections/index.js +34 -10
- package/core/server/services/collections/update-events.js +15 -0
- package/core/server/services/posts/posts-service.js +3 -1
- package/core/server/services/segment/DomainEventsAnalytics.js +83 -0
- package/core/server/services/segment/ModelEventsAnalytics.js +108 -0
- package/core/server/services/segment/index.js +26 -38
- package/core/server/web/api/endpoints/admin/middleware.js +4 -0
- package/core/shared/config/defaults.json +1 -1
- package/core/shared/config/overrides.json +1 -0
- package/core/shared/labs.js +3 -3
- package/package.json +139 -139
- package/yarn.lock +55 -40
- package/components/tryghost-adapter-cache-memory-ttl-5.50.4.tgz +0 -0
- package/components/tryghost-announcement-bar-settings-5.50.4.tgz +0 -0
- package/components/tryghost-collections-5.50.4.tgz +0 -0
- package/components/tryghost-domain-events-5.50.4.tgz +0 -0
- package/components/tryghost-dynamic-routing-events-5.50.4.tgz +0 -0
- package/components/tryghost-email-analytics-provider-mailgun-5.50.4.tgz +0 -0
- package/components/tryghost-email-content-generator-5.50.4.tgz +0 -0
- package/components/tryghost-email-service-5.50.4.tgz +0 -0
- package/components/tryghost-email-suppression-list-5.50.4.tgz +0 -0
- package/components/tryghost-event-aware-cache-wrapper-5.50.4.tgz +0 -0
- package/components/tryghost-extract-api-key-5.50.4.tgz +0 -0
- package/components/tryghost-i18n-5.50.4.tgz +0 -0
- package/components/tryghost-importer-handler-content-files-5.50.4.tgz +0 -0
- package/components/tryghost-in-memory-repository-5.50.4.tgz +0 -0
- package/components/tryghost-link-replacer-5.50.4.tgz +0 -0
- package/components/tryghost-mailgun-client-5.50.4.tgz +0 -0
- package/components/tryghost-member-events-5.50.4.tgz +0 -0
- package/components/tryghost-members-csv-5.50.4.tgz +0 -0
- package/components/tryghost-members-events-service-5.50.4.tgz +0 -0
- package/components/tryghost-members-importer-5.50.4.tgz +0 -0
- package/components/tryghost-members-offers-5.50.4.tgz +0 -0
- package/components/tryghost-members-payments-5.50.4.tgz +0 -0
- package/components/tryghost-members-stripe-service-5.50.4.tgz +0 -0
- package/components/tryghost-milestones-5.50.4.tgz +0 -0
- package/components/tryghost-minifier-5.50.4.tgz +0 -0
- package/components/tryghost-mw-api-version-mismatch-5.50.4.tgz +0 -0
- package/components/tryghost-mw-cache-control-5.50.4.tgz +0 -0
- package/components/tryghost-mw-update-user-last-seen-5.50.4.tgz +0 -0
- package/components/tryghost-mw-version-match-5.50.4.tgz +0 -0
- package/components/tryghost-mw-vhost-5.50.4.tgz +0 -0
- package/components/tryghost-oembed-service-5.50.4.tgz +0 -0
- package/components/tryghost-posts-service-5.50.4.tgz +0 -0
- package/components/tryghost-referrers-5.50.4.tgz +0 -0
- package/components/tryghost-settings-path-manager-5.50.4.tgz +0 -0
- package/components/tryghost-stats-service-5.50.4.tgz +0 -0
- package/components/tryghost-tiers-5.50.4.tgz +0 -0
- package/components/tryghost-verification-trigger-5.50.4.tgz +0 -0
- package/components/tryghost-version-notifications-data-service-5.50.4.tgz +0 -0
- package/core/built/admin/assets/ghost-01b4eb0cff8ee8478af9d4074a256756.css +0 -1
- package/core/built/admin/assets/ghost-dark-8dd7d236d17be6dbef26039409d0c34d.css +0 -1
- /package/core/built/admin/assets/{chunk.976.c3f393d6685c89bbaaca.js.LICENSE.txt → chunk.976.1491bdc7009987ddde87.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
const {MilestoneCreatedEvent} = require('@tryghost/milestones');
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @typedef {import('@tryghost/logging')} logging
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @typedef {import('analytics-node')} analytics
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @typedef {object} IExceptionHandler
|
|
13
|
+
* @prop {(err: Error) => void} captureException
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @typedef {import('@tryghost/domain-events')} DomainEvents
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @typedef {object} IDomainEventsAnalytics
|
|
22
|
+
* @param {analytics} analytics
|
|
23
|
+
* @param {logging} logging
|
|
24
|
+
* @param {object} trackDefaults
|
|
25
|
+
* @param {string} prefix
|
|
26
|
+
* @param {IExceptionHandler} exceptionHandler
|
|
27
|
+
* @param {DomainEvents} DomainEvents
|
|
28
|
+
* @prop {} subscribeToEvents
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
module.exports = class DomainEventsAnalytics {
|
|
32
|
+
/** @type {analytics} */
|
|
33
|
+
#analytics;
|
|
34
|
+
/** @type {object} */
|
|
35
|
+
#trackDefaults;
|
|
36
|
+
/** @type {string} */
|
|
37
|
+
#prefix;
|
|
38
|
+
/** @type {IExceptionHandler} */
|
|
39
|
+
#exceptionHandler;
|
|
40
|
+
/** @type {logging} */
|
|
41
|
+
#logging;
|
|
42
|
+
/** @type {DomainEvents} */
|
|
43
|
+
#DomainEvents;
|
|
44
|
+
|
|
45
|
+
constructor(deps) {
|
|
46
|
+
this.#analytics = deps.analytics;
|
|
47
|
+
this.#trackDefaults = deps.trackDefaults;
|
|
48
|
+
this.#prefix = deps.prefix;
|
|
49
|
+
this.#exceptionHandler = deps.exceptionHandler;
|
|
50
|
+
this.#logging = deps.logging;
|
|
51
|
+
this.#DomainEvents = deps.DomainEvents;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
*
|
|
56
|
+
* @param {object} event
|
|
57
|
+
* @param {object} event.data
|
|
58
|
+
* @param {object} event.data.milestone
|
|
59
|
+
* @param {number} event.data.milestone.value
|
|
60
|
+
* @param {string} event.data.milestone.type
|
|
61
|
+
* @returns {Promise<void>}
|
|
62
|
+
*/
|
|
63
|
+
async #handleMilestoneCreatedEvent(event) {
|
|
64
|
+
if (event.data.milestone
|
|
65
|
+
&& event.data.milestone.value === 100
|
|
66
|
+
) {
|
|
67
|
+
const eventName = event.data.milestone.type === 'arr' ? '$100 MRR reached' : '100 Members reached';
|
|
68
|
+
|
|
69
|
+
try {
|
|
70
|
+
this.#analytics.track(Object.assign(this.#trackDefaults, {}, {event: this.#prefix + eventName}));
|
|
71
|
+
} catch (err) {
|
|
72
|
+
this.#logging.error(err);
|
|
73
|
+
this.#exceptionHandler.captureException(err);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
subscribeToEvents() {
|
|
79
|
+
this.#DomainEvents.subscribe(MilestoneCreatedEvent, async (event) => {
|
|
80
|
+
await this.#handleMilestoneCreatedEvent(event);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
const _ = require('lodash');
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @typedef {import('@tryghost/logging')} logging
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @typedef {import('analytics-node')} analytics
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @typedef {object} IExceptionHandler
|
|
13
|
+
* @prop {(err: Error) => void} captureException
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @typedef {import('../../lib/common/events')} events
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @typedef {object} IModelEventsAnalytics
|
|
22
|
+
* @param {analytics} analytics
|
|
23
|
+
* @param {logging} logging
|
|
24
|
+
* @param {object} trackDefaults
|
|
25
|
+
* @param {string} prefix
|
|
26
|
+
* @param {IExceptionHandler} exceptionHandler
|
|
27
|
+
* @param {events} events
|
|
28
|
+
* @prop {} subscribeToEvents
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Listens to model events to layer on analytics - also uses the "fake" theme.uploaded
|
|
33
|
+
* event from the theme API
|
|
34
|
+
*/
|
|
35
|
+
module.exports = class ModelEventsAnalytics {
|
|
36
|
+
/** @type {analytics} */
|
|
37
|
+
#analytics;
|
|
38
|
+
/** @type {object} */
|
|
39
|
+
#trackDefaults;
|
|
40
|
+
/** @type {string} */
|
|
41
|
+
#prefix;
|
|
42
|
+
/** @type {IExceptionHandler} */
|
|
43
|
+
#exceptionHandler;
|
|
44
|
+
/** @type {events} */
|
|
45
|
+
#events;
|
|
46
|
+
/** @type {logging} */
|
|
47
|
+
#logging;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @type {Array<{event: string, name: string, data?: object}>}
|
|
51
|
+
*/
|
|
52
|
+
#toTrack = [
|
|
53
|
+
{
|
|
54
|
+
event: 'post.published',
|
|
55
|
+
name: 'Post Published'
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
event: 'page.published',
|
|
59
|
+
name: 'Page Published'
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
event: 'theme.uploaded',
|
|
63
|
+
name: 'Theme Uploaded',
|
|
64
|
+
// {keyOnSuppliedEventData: keyOnTrackedEventData}
|
|
65
|
+
// - used to extract specific properties from event data and give them meaningful names
|
|
66
|
+
data: {name: 'name'}
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
event: 'integration.added',
|
|
70
|
+
name: 'Custom Integration Added'
|
|
71
|
+
}
|
|
72
|
+
];
|
|
73
|
+
|
|
74
|
+
constructor(deps) {
|
|
75
|
+
this.#analytics = deps.analytics;
|
|
76
|
+
this.#trackDefaults = deps.trackDefaults;
|
|
77
|
+
this.#prefix = deps.prefix;
|
|
78
|
+
this.#exceptionHandler = deps.exceptionHandler;
|
|
79
|
+
this.#events = deps.events;
|
|
80
|
+
this.#logging = deps.logging;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
async #handleEvent(event) {
|
|
84
|
+
try {
|
|
85
|
+
this.#analytics.track(event);
|
|
86
|
+
} catch (err) {
|
|
87
|
+
this.#logging.error(err);
|
|
88
|
+
this.#exceptionHandler.captureException(err);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
subscribeToEvents() {
|
|
93
|
+
this.#toTrack.forEach(({event, name, data = {}}) => {
|
|
94
|
+
this.#events.on(event, async (eventData = {}) => {
|
|
95
|
+
// extract desired properties from eventData and rename keys if necessary
|
|
96
|
+
const mappedData = _.mapValues(data || {}, v => eventData[v]);
|
|
97
|
+
|
|
98
|
+
const eventToTrack = {
|
|
99
|
+
...this.#trackDefaults,
|
|
100
|
+
event: this.#prefix + name,
|
|
101
|
+
...mappedData
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
await this.#handleEvent(eventToTrack);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
};
|
|
@@ -1,51 +1,39 @@
|
|
|
1
|
-
const _ = require('lodash');
|
|
2
1
|
const Analytics = require('analytics-node');
|
|
3
|
-
const logging = require('@tryghost/logging');
|
|
4
|
-
|
|
5
2
|
const config = require('../../../shared/config');
|
|
6
3
|
const sentry = require('../../../shared/sentry');
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
const logging = require('@tryghost/logging');
|
|
5
|
+
const DomainEvents = require('@tryghost/domain-events');
|
|
9
6
|
const events = require('../../lib/common/events');
|
|
10
7
|
|
|
8
|
+
const ModelEventsAnalytics = require('./ModelEventsAnalytics');
|
|
9
|
+
const DomainEventsAnalytics = require('./DomainEventsAnalytics');
|
|
10
|
+
|
|
11
11
|
module.exports.init = function () {
|
|
12
12
|
const analytics = new Analytics(config.get('segment:key'));
|
|
13
13
|
const trackDefaults = config.get('segment:trackDefaults') || {};
|
|
14
14
|
const prefix = config.get('segment:prefix') || '';
|
|
15
15
|
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
event: 'theme.uploaded',
|
|
27
|
-
name: 'Theme Uploaded',
|
|
28
|
-
// {keyOnSuppliedEventData: keyOnTrackedEventData}
|
|
29
|
-
// - used to extract specific properties from event data and give them meaningful names
|
|
30
|
-
data: {name: 'name'}
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
event: 'integration.added',
|
|
34
|
-
name: 'Custom Integration Added'
|
|
35
|
-
}
|
|
36
|
-
];
|
|
37
|
-
|
|
38
|
-
_.each(toTrack, function (track) {
|
|
39
|
-
events.on(track.event, function (eventData = {}) {
|
|
40
|
-
// extract desired properties from eventData and rename keys if necessary
|
|
41
|
-
const data = _.mapValues(track.data || {}, v => eventData[v]);
|
|
16
|
+
const subscribeToDomainEvents = new DomainEventsAnalytics({
|
|
17
|
+
analytics,
|
|
18
|
+
trackDefaults,
|
|
19
|
+
prefix,
|
|
20
|
+
exceptionHandler: sentry,
|
|
21
|
+
DomainEvents,
|
|
22
|
+
logging
|
|
23
|
+
});
|
|
42
24
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
25
|
+
const modelEventsAnalytics = new ModelEventsAnalytics({
|
|
26
|
+
analytics,
|
|
27
|
+
trackDefaults,
|
|
28
|
+
prefix,
|
|
29
|
+
exceptionHandler: sentry,
|
|
30
|
+
events,
|
|
31
|
+
logging
|
|
50
32
|
});
|
|
33
|
+
|
|
34
|
+
// Listen to model events
|
|
35
|
+
modelEventsAnalytics.subscribeToEvents();
|
|
36
|
+
|
|
37
|
+
// Listen to domain events
|
|
38
|
+
subscribeToDomainEvents.subscribeToEvents();
|
|
51
39
|
};
|
|
@@ -14,6 +14,10 @@ const notImplemented = function (req, res, next) {
|
|
|
14
14
|
return next();
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
if (req.query.god_mode === 'true' && process.env.NODE_ENV === 'development') {
|
|
18
|
+
return next();
|
|
19
|
+
}
|
|
20
|
+
|
|
17
21
|
// @NOTE: integrations & staff tokens have limited access to the API
|
|
18
22
|
const allowlisted = {
|
|
19
23
|
site: ['GET'],
|
|
@@ -121,6 +121,7 @@
|
|
|
121
121
|
},
|
|
122
122
|
"internalImageSizes": {
|
|
123
123
|
"icon": {"width": 256, "height": 256},
|
|
124
|
+
"signup-form-icon": {"width": 192, "height": 192},
|
|
124
125
|
"email-header-image": {"width": 1200},
|
|
125
126
|
"email-latest-posts-image": {"width": 200, "height": 200},
|
|
126
127
|
"email-latest-posts-image-mobile": {"width": 1200, "height": 960}
|
package/core/shared/labs.js
CHANGED
|
@@ -18,7 +18,8 @@ const GA_FEATURES = [
|
|
|
18
18
|
'audienceFeedback',
|
|
19
19
|
'themeErrorsNotification',
|
|
20
20
|
'outboundLinkTagging',
|
|
21
|
-
'announcementBar'
|
|
21
|
+
'announcementBar',
|
|
22
|
+
'signupForm'
|
|
22
23
|
];
|
|
23
24
|
|
|
24
25
|
// NOTE: this allowlist is meant to be used to filter out any unexpected
|
|
@@ -38,8 +39,7 @@ const ALPHA_FEATURES = [
|
|
|
38
39
|
'emailCustomization',
|
|
39
40
|
'signupCard',
|
|
40
41
|
'collections',
|
|
41
|
-
'adminXSettings'
|
|
42
|
-
'signupForm'
|
|
42
|
+
'adminXSettings'
|
|
43
43
|
];
|
|
44
44
|
|
|
45
45
|
module.exports.GA_KEYS = [...GA_FEATURES];
|