ghost 5.94.0 → 5.94.2
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.94.2.tgz +0 -0
- package/components/{tryghost-adapter-cache-redis-5.94.0.tgz → tryghost-adapter-cache-redis-5.94.2.tgz} +0 -0
- package/components/{tryghost-adapter-manager-5.94.0.tgz → tryghost-adapter-manager-5.94.2.tgz} +0 -0
- package/components/tryghost-announcement-bar-settings-5.94.2.tgz +0 -0
- package/components/{tryghost-api-framework-5.94.0.tgz → tryghost-api-framework-5.94.2.tgz} +0 -0
- package/components/{tryghost-api-version-compatibility-service-5.94.0.tgz → tryghost-api-version-compatibility-service-5.94.2.tgz} +0 -0
- package/components/tryghost-audience-feedback-5.94.2.tgz +0 -0
- package/components/tryghost-bookshelf-repository-5.94.2.tgz +0 -0
- package/components/{tryghost-bootstrap-socket-5.94.0.tgz → tryghost-bootstrap-socket-5.94.2.tgz} +0 -0
- package/components/tryghost-collections-5.94.2.tgz +0 -0
- package/components/tryghost-constants-5.94.2.tgz +0 -0
- package/components/{tryghost-custom-theme-settings-service-5.94.0.tgz → tryghost-custom-theme-settings-service-5.94.2.tgz} +0 -0
- package/components/{tryghost-data-generator-5.94.0.tgz → tryghost-data-generator-5.94.2.tgz} +0 -0
- package/components/tryghost-domain-events-5.94.2.tgz +0 -0
- package/components/{tryghost-donations-5.94.0.tgz → tryghost-donations-5.94.2.tgz} +0 -0
- package/components/tryghost-dynamic-routing-events-5.94.2.tgz +0 -0
- package/components/tryghost-email-addresses-5.94.2.tgz +0 -0
- package/components/tryghost-email-analytics-provider-mailgun-5.94.2.tgz +0 -0
- package/components/tryghost-email-analytics-service-5.94.2.tgz +0 -0
- package/components/{tryghost-email-content-generator-5.94.0.tgz → tryghost-email-content-generator-5.94.2.tgz} +0 -0
- package/components/{tryghost-email-events-5.94.0.tgz → tryghost-email-events-5.94.2.tgz} +0 -0
- package/components/{tryghost-email-service-5.94.0.tgz → tryghost-email-service-5.94.2.tgz} +0 -0
- package/components/tryghost-email-suppression-list-5.94.2.tgz +0 -0
- package/components/tryghost-express-dynamic-redirects-5.94.2.tgz +0 -0
- package/components/tryghost-external-media-inliner-5.94.2.tgz +0 -0
- package/components/tryghost-extract-api-key-5.94.2.tgz +0 -0
- package/components/tryghost-ghost-5.94.2.tgz +0 -0
- package/components/{tryghost-html-to-plaintext-5.94.0.tgz → tryghost-html-to-plaintext-5.94.2.tgz} +0 -0
- package/components/tryghost-i18n-5.94.2.tgz +0 -0
- package/components/tryghost-importer-handler-content-files-5.94.2.tgz +0 -0
- package/components/tryghost-importer-revue-5.94.2.tgz +0 -0
- package/components/tryghost-in-memory-repository-5.94.2.tgz +0 -0
- package/components/{tryghost-job-manager-5.94.0.tgz → tryghost-job-manager-5.94.2.tgz} +0 -0
- package/components/tryghost-link-redirects-5.94.2.tgz +0 -0
- package/components/tryghost-link-replacer-5.94.2.tgz +0 -0
- package/components/{tryghost-link-tracking-5.94.0.tgz → tryghost-link-tracking-5.94.2.tgz} +0 -0
- package/components/{tryghost-magic-link-5.94.0.tgz → tryghost-magic-link-5.94.2.tgz} +0 -0
- package/components/{tryghost-mail-events-5.94.0.tgz → tryghost-mail-events-5.94.2.tgz} +0 -0
- package/components/tryghost-mailgun-client-5.94.2.tgz +0 -0
- package/components/{tryghost-member-attribution-5.94.0.tgz → tryghost-member-attribution-5.94.2.tgz} +0 -0
- package/components/{tryghost-member-events-5.94.0.tgz → tryghost-member-events-5.94.2.tgz} +0 -0
- package/components/tryghost-members-api-5.94.2.tgz +0 -0
- package/components/{tryghost-members-csv-5.94.0.tgz → tryghost-members-csv-5.94.2.tgz} +0 -0
- package/components/tryghost-members-events-service-5.94.2.tgz +0 -0
- package/components/{tryghost-members-importer-5.94.0.tgz → tryghost-members-importer-5.94.2.tgz} +0 -0
- package/components/tryghost-members-offers-5.94.2.tgz +0 -0
- package/components/tryghost-members-payments-5.94.2.tgz +0 -0
- package/components/tryghost-members-ssr-5.94.2.tgz +0 -0
- package/components/tryghost-members-stripe-service-5.94.2.tgz +0 -0
- package/components/{tryghost-mentions-email-report-5.94.0.tgz → tryghost-mentions-email-report-5.94.2.tgz} +0 -0
- package/components/{tryghost-milestones-5.94.0.tgz → tryghost-milestones-5.94.2.tgz} +0 -0
- package/components/tryghost-minifier-5.94.2.tgz +0 -0
- package/components/tryghost-model-to-domain-event-interceptor-5.94.2.tgz +0 -0
- package/components/{tryghost-mw-api-version-mismatch-5.94.0.tgz → tryghost-mw-api-version-mismatch-5.94.2.tgz} +0 -0
- package/components/tryghost-mw-cache-control-5.94.2.tgz +0 -0
- package/components/tryghost-mw-error-handler-5.94.2.tgz +0 -0
- package/components/tryghost-mw-session-from-token-5.94.2.tgz +0 -0
- package/components/tryghost-mw-update-user-last-seen-5.94.2.tgz +0 -0
- package/components/tryghost-mw-version-match-5.94.2.tgz +0 -0
- package/components/tryghost-mw-vhost-5.94.2.tgz +0 -0
- package/components/tryghost-nql-filter-expansions-5.94.2.tgz +0 -0
- package/components/tryghost-oembed-service-5.94.2.tgz +0 -0
- package/components/{tryghost-package-json-5.94.0.tgz → tryghost-package-json-5.94.2.tgz} +0 -0
- package/components/tryghost-post-events-5.94.2.tgz +0 -0
- package/components/tryghost-post-revisions-5.94.2.tgz +0 -0
- package/components/tryghost-posts-service-5.94.2.tgz +0 -0
- package/components/tryghost-recommendations-5.94.2.tgz +0 -0
- package/components/tryghost-referrers-5.94.2.tgz +0 -0
- package/components/{tryghost-security-5.94.0.tgz → tryghost-security-5.94.2.tgz} +0 -0
- package/components/tryghost-session-service-5.94.2.tgz +0 -0
- package/components/tryghost-settings-path-manager-5.94.2.tgz +0 -0
- package/components/tryghost-slack-notifications-5.94.2.tgz +0 -0
- package/components/{tryghost-staff-service-5.94.0.tgz → tryghost-staff-service-5.94.2.tgz} +0 -0
- package/components/tryghost-stats-service-5.94.2.tgz +0 -0
- package/components/{tryghost-tiers-5.94.0.tgz → tryghost-tiers-5.94.2.tgz} +0 -0
- package/components/{tryghost-update-check-service-5.94.0.tgz → tryghost-update-check-service-5.94.2.tgz} +0 -0
- package/components/{tryghost-verification-trigger-5.94.0.tgz → tryghost-verification-trigger-5.94.2.tgz} +0 -0
- package/components/tryghost-version-notifications-data-service-5.94.2.tgz +0 -0
- package/components/{tryghost-webmentions-5.94.0.tgz → tryghost-webmentions-5.94.2.tgz} +0 -0
- package/core/built/admin/assets/admin-x-activitypub/admin-x-activitypub.js +2 -2
- package/core/built/admin/assets/admin-x-activitypub/{index-51277f76.mjs → index-d646c7a1.mjs} +6618 -4913
- package/core/built/admin/assets/admin-x-activitypub/modals-a8aeb643.mjs +342 -0
- package/core/built/admin/assets/admin-x-demo/admin-x-demo.js +2 -2
- package/core/built/admin/assets/admin-x-demo/{index-bfbb9783.mjs → index-140752db.mjs} +1667 -1657
- package/core/built/admin/assets/admin-x-demo/{modals-334b160e.mjs → modals-3979b40c.mjs} +2 -2
- package/core/built/admin/assets/admin-x-settings/{CodeEditorView-6bb10ebd.mjs → CodeEditorView-9ca04b2a.mjs} +2 -2
- package/core/built/admin/assets/admin-x-settings/admin-x-settings.js +2 -2
- package/core/built/admin/assets/admin-x-settings/{index-a57eb33d.mjs → index-5fba7766.mjs} +1907 -1893
- package/core/built/admin/assets/admin-x-settings/{index-52f09138.mjs → index-6c87f26e.mjs} +2 -2
- package/core/built/admin/assets/admin-x-settings/{modals-07c66c7d.mjs → modals-80acb66f.mjs} +2107 -2101
- package/core/built/admin/assets/{chunk.524.b9da8e9c62fc112baf2b.js → chunk.524.cd82d3016052a43d2b44.js} +5 -5
- package/core/built/admin/assets/{chunk.582.27ddbcbd7a6e7a439db8.js → chunk.582.ea2e209b67019b57bff7.js} +6 -6
- package/core/built/admin/assets/{chunk.785.78610bd253a9e2419ec9.js → chunk.602.a3d38ba0a516decd78ce.js} +6089 -6078
- package/core/built/admin/assets/codemirror/{codemirror-91774021e5e17ea08db5cd2ed9f3e664.js → codemirror-730d06e33ae9af4745ddd6a1af2a66bd.js} +809 -810
- package/core/built/admin/assets/{ghost-535088daf62c8cbea78a012bb6bbafc6.js → ghost-27a2284f57455ac2e06f1553344f5ba7.js} +248 -194
- package/core/built/admin/assets/{ghost-d1c51d3a2d840dda5aa7b4ffe6057756.css → ghost-81adcc22c7836b40b08a662812319e01.css} +1 -1
- package/core/built/admin/assets/{ghost-dark-98b3a7e593292a7cb410609e17727a3c.css → ghost-dark-88c10b0aa259d4b666d6a98174c6f5bd.css} +1 -1
- package/core/built/admin/assets/koenig-lexical/koenig-lexical.js +3 -3
- package/core/built/admin/assets/koenig-lexical/koenig-lexical.umd.js +3 -3
- package/core/built/admin/assets/{vendor-649dc64bfd9ecc1bd7361b53680dfdc2.js → vendor-b83f61eee071be0ef00075df9ff7782d.js} +15 -15
- package/core/built/admin/index.html +6 -6
- package/core/server/api/endpoints/utils/serializers/output/mappers/index.js +1 -0
- package/core/server/api/endpoints/utils/serializers/output/mappers/oembed.js +5 -0
- package/core/server/api/endpoints/utils/serializers/output/oembed.js +7 -0
- package/core/server/data/importer/import-manager.js +2 -2
- package/core/server/data/importer/importers/data/PostsImporter.js +2 -2
- package/core/server/data/migrations/versions/4.46/2022-04-13-12-58-fill-uuid-for-newsletters.js +2 -2
- package/core/server/data/migrations/versions/4.46/2022-04-13-13-00-add-default-newsletter.js +2 -2
- package/core/server/models/email.js +2 -2
- package/core/server/models/member.js +3 -3
- package/core/server/models/newsletter.js +2 -2
- package/core/server/models/post.js +2 -2
- package/core/server/models/settings.js +1 -2
- package/core/server/services/email-analytics/lib/queries.js +2 -2
- package/core/server/services/members-events/index.js +20 -2
- package/core/server/web/parent/middleware/request-id.js +2 -2
- package/core/shared/labs.js +2 -1
- package/core/shared/settings-cache/public.js +2 -1
- package/package.json +157 -155
- package/yarn.lock +363 -185
- package/components/tryghost-adapter-cache-memory-ttl-5.94.0.tgz +0 -0
- package/components/tryghost-announcement-bar-settings-5.94.0.tgz +0 -0
- package/components/tryghost-audience-feedback-5.94.0.tgz +0 -0
- package/components/tryghost-bookshelf-repository-5.94.0.tgz +0 -0
- package/components/tryghost-collections-5.94.0.tgz +0 -0
- package/components/tryghost-constants-5.94.0.tgz +0 -0
- package/components/tryghost-domain-events-5.94.0.tgz +0 -0
- package/components/tryghost-dynamic-routing-events-5.94.0.tgz +0 -0
- package/components/tryghost-email-addresses-5.94.0.tgz +0 -0
- package/components/tryghost-email-analytics-provider-mailgun-5.94.0.tgz +0 -0
- package/components/tryghost-email-analytics-service-5.94.0.tgz +0 -0
- package/components/tryghost-email-suppression-list-5.94.0.tgz +0 -0
- package/components/tryghost-express-dynamic-redirects-5.94.0.tgz +0 -0
- package/components/tryghost-external-media-inliner-5.94.0.tgz +0 -0
- package/components/tryghost-extract-api-key-5.94.0.tgz +0 -0
- package/components/tryghost-ghost-5.94.0.tgz +0 -0
- package/components/tryghost-i18n-5.94.0.tgz +0 -0
- package/components/tryghost-importer-handler-content-files-5.94.0.tgz +0 -0
- package/components/tryghost-importer-revue-5.94.0.tgz +0 -0
- package/components/tryghost-in-memory-repository-5.94.0.tgz +0 -0
- package/components/tryghost-link-redirects-5.94.0.tgz +0 -0
- package/components/tryghost-link-replacer-5.94.0.tgz +0 -0
- package/components/tryghost-mailgun-client-5.94.0.tgz +0 -0
- package/components/tryghost-members-api-5.94.0.tgz +0 -0
- package/components/tryghost-members-events-service-5.94.0.tgz +0 -0
- package/components/tryghost-members-offers-5.94.0.tgz +0 -0
- package/components/tryghost-members-payments-5.94.0.tgz +0 -0
- package/components/tryghost-members-ssr-5.94.0.tgz +0 -0
- package/components/tryghost-members-stripe-service-5.94.0.tgz +0 -0
- package/components/tryghost-minifier-5.94.0.tgz +0 -0
- package/components/tryghost-model-to-domain-event-interceptor-5.94.0.tgz +0 -0
- package/components/tryghost-mw-cache-control-5.94.0.tgz +0 -0
- package/components/tryghost-mw-error-handler-5.94.0.tgz +0 -0
- package/components/tryghost-mw-session-from-token-5.94.0.tgz +0 -0
- package/components/tryghost-mw-update-user-last-seen-5.94.0.tgz +0 -0
- package/components/tryghost-mw-version-match-5.94.0.tgz +0 -0
- package/components/tryghost-mw-vhost-5.94.0.tgz +0 -0
- package/components/tryghost-nql-filter-expansions-5.94.0.tgz +0 -0
- package/components/tryghost-oembed-service-5.94.0.tgz +0 -0
- package/components/tryghost-post-events-5.94.0.tgz +0 -0
- package/components/tryghost-post-revisions-5.94.0.tgz +0 -0
- package/components/tryghost-posts-service-5.94.0.tgz +0 -0
- package/components/tryghost-recommendations-5.94.0.tgz +0 -0
- package/components/tryghost-referrers-5.94.0.tgz +0 -0
- package/components/tryghost-session-service-5.94.0.tgz +0 -0
- package/components/tryghost-settings-path-manager-5.94.0.tgz +0 -0
- package/components/tryghost-slack-notifications-5.94.0.tgz +0 -0
- package/components/tryghost-stats-service-5.94.0.tgz +0 -0
- package/components/tryghost-version-notifications-data-service-5.94.0.tgz +0 -0
- package/core/built/admin/assets/admin-x-activitypub/modals-c85985ad.mjs +0 -815
- /package/core/built/admin/assets/{chunk.785.78610bd253a9e2419ec9.js.LICENSE.txt → chunk.602.a3d38ba0a516decd78ce.js.LICENSE.txt} +0 -0
|
@@ -5025,22 +5025,22 @@ i===o-1&&(c&&c.call(s,s),a&&a.resolver(s))},m(e,p,l)}})),d.each(["In","Out"],(fu
|
|
|
5025
5025
|
0!==i&&(l.begin=null),l.complete=i!==o-1?null:function(){u&&u.call(s,s),a&&a.resolver(s)},l.display===n&&(l.display="In"===t?"auto":"none"),m(this,c,l)}})),m}function w(e){var t=d.data(e,"velocity")
|
|
5026
5026
|
return null===t?n:t}function E(e,t){var r=w(e)
|
|
5027
5027
|
r&&r.delayTimer&&!r.delayPaused&&(r.delayRemaining=r.delay-t+r.delayBegin,r.delayPaused=!0,clearTimeout(r.delayTimer.setTimeout))}function x(e,t){var r=w(e)
|
|
5028
|
-
r&&r.delayTimer&&r.delayPaused&&(r.delayPaused=!1,r.delayTimer.setTimeout=setTimeout(r.delayTimer.next,r.delayRemaining))}function k(e){return function(t){return Math.round(t*e)*(1/e)}}function M(e,r,n,i){var o
|
|
5028
|
+
r&&r.delayTimer&&r.delayPaused&&(r.delayPaused=!1,r.delayTimer.setTimeout=setTimeout(r.delayTimer.next,r.delayRemaining))}function k(e){return function(t){return Math.round(t*e)*(1/e)}}function M(e,r,n,i){var o=.1,s="Float32Array"in t
|
|
5029
5029
|
if(4!==arguments.length)return!1
|
|
5030
|
-
for(var
|
|
5030
|
+
for(var a=0;a<4;++a)if("number"!=typeof arguments[a]||isNaN(arguments[a])||!isFinite(arguments[a]))return!1
|
|
5031
5031
|
e=Math.min(e,1),n=Math.min(n,1),e=Math.max(e,0),n=Math.max(n,0)
|
|
5032
|
-
var
|
|
5033
|
-
function
|
|
5034
|
-
var
|
|
5035
|
-
return
|
|
5036
|
-
if(0===
|
|
5037
|
-
r-=(
|
|
5038
|
-
do{(o=
|
|
5039
|
-
return
|
|
5040
|
-
function
|
|
5041
|
-
|
|
5042
|
-
var
|
|
5043
|
-
return
|
|
5032
|
+
var l=s?new Float32Array(11):new Array(11)
|
|
5033
|
+
function u(e,t){return 1-3*t+3*e}function c(e,t){return 3*t-6*e}function d(e){return 3*e}function h(e,t,r){return((u(t,r)*e+c(t,r))*e+d(t))*e}function p(e,t,r){return 3*u(t,r)*e*e+2*c(t,r)*e+d(t)}function f(t){for(var r=0,i=1;10!==i&&l[i]<=t;++i)r+=o;--i
|
|
5034
|
+
var s=r+(t-l[i])/(l[i+1]-l[i])*o,a=p(s,e,n)
|
|
5035
|
+
return a>=.001?function(t,r){for(var i=0;i<4;++i){var o=p(r,e,n)
|
|
5036
|
+
if(0===o)return r
|
|
5037
|
+
r-=(h(r,e,n)-t)/o}return r}(t,s):0===a?s:function(t,r,i){var o,s,a=0
|
|
5038
|
+
do{(o=h(s=r+(i-r)/2,e,n)-t)>0?i=s:r=s}while(Math.abs(o)>1e-7&&++a<10)
|
|
5039
|
+
return s}(t,r,r+o)}var m=!1
|
|
5040
|
+
function g(){m=!0,e===r&&n===i||function(){for(var t=0;t<11;++t)l[t]=h(t*o,e,n)}()}var b=function(t){return m||g(),e===r&&n===i?t:0===t?0:1===t?1:h(f(t),r,i)}
|
|
5041
|
+
b.getControlPoints=function(){return[{x:e,y:r},{x:n,y:i}]}
|
|
5042
|
+
var v="generateBezier("+[e,r,n,i]+")"
|
|
5043
|
+
return b.toString=function(){return v},b}function O(e,t){var r=e
|
|
5044
5044
|
return h.isString(e)?m.Easings[e]||(r=!1):r=h.isArray(e)&&1===e.length?k.apply(null,e):h.isArray(e)&&2===e.length?g.apply(null,e.concat([t])):!(!h.isArray(e)||4!==e.length)&&M.apply(null,e),!1===r&&(r=m.Easings[m.defaults.easing]?m.defaults.easing:f),r}function P(e){if(e){var t=m.timestamp&&!0!==e?e:a.now(),r=m.State.calls.length
|
|
5045
5045
|
r>1e4&&(m.State.calls=function(e){for(var t=-1,r=e?e.length:0,n=[];++t<r;){var i=e[t]
|
|
5046
5046
|
i&&n.push(i)}return n}(m.State.calls),r=m.State.calls.length)
|
|
@@ -9520,4 +9520,4 @@ e.default=class{constructor(e){if(this._data=new t.default,e)for(let t=0;t<e.len
|
|
|
9520
9520
|
return this}get(e){let t=this._data[e]
|
|
9521
9521
|
return t===r.UNDEFINED_KEY?void 0:t}set(e,t){return this._data[e]=t,this}delete(e){return this._data[e]=r.UNDEFINED_KEY,!0}}}))
|
|
9522
9522
|
|
|
9523
|
-
//# sourceMappingURL=vendor-
|
|
9523
|
+
//# sourceMappingURL=vendor-939d4c13e18563bdb323ea7d667d4247.map
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<title>Ghost Admin</title>
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
<meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22cdnUrl%22%3A%22%22%2C%22editorUrl%22%3A%22%22%2C%22rootURL%22%3A%22%22%2C%22locationType%22%3A%22trailing-hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%2C%22Array%22%3Atrue%2C%22String%22%3Atrue%2C%22Function%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_JQUERY_INTEGRATION%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%225.94%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22%40sentry%2Fember%22%3A%7B%22disablePerformance%22%3Atrue%2C%22sentry%22%3A%7B%7D%7D%2C%22ember-cli-mirage%22%3A%7B%22usingProxy%22%3Afalse%2C%22useDefaultPassthroughs%22%3Atrue%7D%2C%22exportApplicationGlobal%22%3Afalse%2C%22ember-load%22%3A%7B%22loadingIndicatorClass%22%3A%22ember-load-indicator%22%7D%2C%22editorFilename%22%3A%22koenig-lexical.umd.js%22%2C%22editorHash%22%3A%
|
|
11
|
+
<meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22cdnUrl%22%3A%22%22%2C%22editorUrl%22%3A%22%22%2C%22rootURL%22%3A%22%22%2C%22locationType%22%3A%22trailing-hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%2C%22Array%22%3Atrue%2C%22String%22%3Atrue%2C%22Function%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_JQUERY_INTEGRATION%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%225.94%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22%40sentry%2Fember%22%3A%7B%22disablePerformance%22%3Atrue%2C%22sentry%22%3A%7B%7D%7D%2C%22ember-cli-mirage%22%3A%7B%22usingProxy%22%3Afalse%2C%22useDefaultPassthroughs%22%3Atrue%7D%2C%22exportApplicationGlobal%22%3Afalse%2C%22ember-load%22%3A%7B%22loadingIndicatorClass%22%3A%22ember-load-indicator%22%7D%2C%22editorFilename%22%3A%22koenig-lexical.umd.js%22%2C%22editorHash%22%3A%22ee37f0b9eb%22%2C%22adminXDemoFilename%22%3A%22admin-x-demo.js%22%2C%22adminXDemoHash%22%3A%22c03d9a88f8%22%2C%22adminXSettingsFilename%22%3A%22admin-x-settings.js%22%2C%22adminXSettingsHash%22%3A%22da80d9972a%22%2C%22adminXActivitypubFilename%22%3A%22admin-x-activitypub.js%22%2C%22adminXActivitypubHash%22%3A%2219aa6f46ae%22%7D" />
|
|
12
12
|
|
|
13
13
|
<meta name="HandheldFriendly" content="True" />
|
|
14
14
|
<meta name="MobileOptimized" content="320" />
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
</style>
|
|
38
38
|
|
|
39
39
|
<link integrity="" rel="stylesheet" href="assets/vendor-0ede59da8efb5e28fa929557f7ff7154.css">
|
|
40
|
-
<link integrity="" rel="stylesheet" href="assets/ghost-
|
|
40
|
+
<link integrity="" rel="stylesheet" href="assets/ghost-81adcc22c7836b40b08a662812319e01.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.
|
|
61
|
-
<script src="assets/chunk.524.
|
|
62
|
-
<script src="assets/ghost-
|
|
59
|
+
<script src="assets/vendor-b83f61eee071be0ef00075df9ff7782d.js"></script>
|
|
60
|
+
<script src="assets/chunk.602.a3d38ba0a516decd78ce.js"></script>
|
|
61
|
+
<script src="assets/chunk.524.cd82d3016052a43d2b44.js"></script>
|
|
62
|
+
<script src="assets/ghost-27a2284f57455ac2e06f1553344f5ba7.js"></script>
|
|
63
63
|
</body>
|
|
64
64
|
</html>
|
|
@@ -9,6 +9,7 @@ module.exports = {
|
|
|
9
9
|
emailFailures: require('./email-failures'),
|
|
10
10
|
images: require('./images'),
|
|
11
11
|
integrations: require('./integrations'),
|
|
12
|
+
oembed: require('./oembed'),
|
|
12
13
|
pages: require('./pages'),
|
|
13
14
|
posts: require('./posts'),
|
|
14
15
|
settings: require('./settings'),
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
const debug = require('@tryghost/debug')('api:endpoints:utils:serializers:output:oembed');
|
|
2
|
+
const mappers = require('./mappers');
|
|
2
3
|
|
|
3
4
|
module.exports = {
|
|
4
5
|
all(data, apiConfig, frame) {
|
|
5
6
|
debug('all');
|
|
7
|
+
if (data?.metadata?.thumbnail) {
|
|
8
|
+
data.metadata.thumbnail = mappers.oembed(data.metadata.thumbnail);
|
|
9
|
+
}
|
|
10
|
+
if (data?.metadata?.icon) {
|
|
11
|
+
data.metadata.icon = mappers.oembed(data.metadata.icon);
|
|
12
|
+
}
|
|
6
13
|
frame.response = data;
|
|
7
14
|
}
|
|
8
15
|
};
|
|
@@ -3,7 +3,7 @@ const fs = require('fs-extra');
|
|
|
3
3
|
const path = require('path');
|
|
4
4
|
const os = require('os');
|
|
5
5
|
const glob = require('glob');
|
|
6
|
-
const
|
|
6
|
+
const crypto = require('crypto');
|
|
7
7
|
const config = require('../../../shared/config');
|
|
8
8
|
const {extract} = require('@tryghost/zip');
|
|
9
9
|
const tpl = require('@tryghost/tpl');
|
|
@@ -220,7 +220,7 @@ class ImportManager {
|
|
|
220
220
|
* @returns {Promise<string>} full path to the extracted folder
|
|
221
221
|
*/
|
|
222
222
|
async extractZip(filePath) {
|
|
223
|
-
const tmpDir = path.join(os.tmpdir(),
|
|
223
|
+
const tmpDir = path.join(os.tmpdir(), crypto.randomUUID());
|
|
224
224
|
this.fileToDelete = tmpDir;
|
|
225
225
|
|
|
226
226
|
try {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const debug = require('@tryghost/debug')('importer:posts');
|
|
2
2
|
const _ = require('lodash');
|
|
3
|
-
const
|
|
3
|
+
const crypto = require('crypto');
|
|
4
4
|
const BaseImporter = require('./Base');
|
|
5
5
|
const mobiledocLib = require('../../../../lib/mobiledoc');
|
|
6
6
|
const validator = require('@tryghost/validator');
|
|
@@ -29,7 +29,7 @@ class PostsImporter extends BaseImporter {
|
|
|
29
29
|
sanitizeAttributes() {
|
|
30
30
|
_.each(this.dataToImport, (obj) => {
|
|
31
31
|
if (!validator.isUUID(obj.uuid || '')) {
|
|
32
|
-
obj.uuid =
|
|
32
|
+
obj.uuid = crypto.randomUUID();
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
// we used to have post.page=true/false
|
package/core/server/data/migrations/versions/4.46/2022-04-13-12-58-fill-uuid-for-newsletters.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const logging = require('@tryghost/logging');
|
|
2
|
-
const
|
|
2
|
+
const crypto = require('crypto');
|
|
3
3
|
const {createTransactionalMigration} = require('../../utils');
|
|
4
4
|
|
|
5
5
|
module.exports = createTransactionalMigration(
|
|
@@ -10,7 +10,7 @@ module.exports = createTransactionalMigration(
|
|
|
10
10
|
|
|
11
11
|
// eslint-disable-next-line no-restricted-syntax
|
|
12
12
|
for (const newsletter of newslettersWithoutUUID) {
|
|
13
|
-
await knex('newsletters').update('uuid',
|
|
13
|
+
await knex('newsletters').update('uuid', crypto.randomUUID()).where('id', newsletter.id);
|
|
14
14
|
}
|
|
15
15
|
},
|
|
16
16
|
async function down() {
|
package/core/server/data/migrations/versions/4.46/2022-04-13-13-00-add-default-newsletter.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const ObjectId = require('bson-objectid').default;
|
|
2
|
-
const
|
|
2
|
+
const crypto = require('crypto');
|
|
3
3
|
const logging = require('@tryghost/logging');
|
|
4
4
|
const startsWith = require('lodash/startsWith');
|
|
5
5
|
const {createTransactionalMigration} = require('../../utils');
|
|
@@ -9,7 +9,7 @@ module.exports = createTransactionalMigration(
|
|
|
9
9
|
// This uses the default settings from core/server/data/schema/default-settings/default-settings.json
|
|
10
10
|
const newsletter = {
|
|
11
11
|
id: (new ObjectId()).toHexString(),
|
|
12
|
-
uuid:
|
|
12
|
+
uuid: crypto.randomUUID(),
|
|
13
13
|
name: 'Ghost',
|
|
14
14
|
description: '',
|
|
15
15
|
slug: 'default-newsletter',
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const
|
|
1
|
+
const crypto = require('crypto');
|
|
2
2
|
const ghostBookshelf = require('./base');
|
|
3
3
|
|
|
4
4
|
const Email = ghostBookshelf.Model.extend({
|
|
@@ -6,7 +6,7 @@ const Email = ghostBookshelf.Model.extend({
|
|
|
6
6
|
|
|
7
7
|
defaults: function defaults() {
|
|
8
8
|
return {
|
|
9
|
-
uuid:
|
|
9
|
+
uuid: crypto.randomUUID(),
|
|
10
10
|
status: 'pending',
|
|
11
11
|
recipient_filter: 'status:-free',
|
|
12
12
|
track_opens: false,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const ghostBookshelf = require('./base');
|
|
2
|
-
const
|
|
2
|
+
const crypto = require('crypto');
|
|
3
3
|
const _ = require('lodash');
|
|
4
4
|
const config = require('../../shared/config');
|
|
5
5
|
const {gravatar} = require('../lib/image');
|
|
@@ -10,8 +10,8 @@ const Member = ghostBookshelf.Model.extend({
|
|
|
10
10
|
defaults() {
|
|
11
11
|
return {
|
|
12
12
|
status: 'free',
|
|
13
|
-
uuid:
|
|
14
|
-
transient_id:
|
|
13
|
+
uuid: crypto.randomUUID(),
|
|
14
|
+
transient_id: crypto.randomUUID(),
|
|
15
15
|
email_count: 0,
|
|
16
16
|
email_opened_count: 0,
|
|
17
17
|
enable_comment_notifications: true
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const ghostBookshelf = require('./base');
|
|
2
2
|
const ObjectID = require('bson-objectid').default;
|
|
3
|
-
const
|
|
3
|
+
const crypto = require('crypto');
|
|
4
4
|
const urlUtils = require('../../shared/url-utils');
|
|
5
5
|
|
|
6
6
|
const Newsletter = ghostBookshelf.Model.extend({
|
|
@@ -8,7 +8,7 @@ const Newsletter = ghostBookshelf.Model.extend({
|
|
|
8
8
|
|
|
9
9
|
defaults: function defaults() {
|
|
10
10
|
return {
|
|
11
|
-
uuid:
|
|
11
|
+
uuid: crypto.randomUUID(),
|
|
12
12
|
sender_reply_to: 'newsletter',
|
|
13
13
|
status: 'active',
|
|
14
14
|
visibility: 'members',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// # Post Model
|
|
2
2
|
const _ = require('lodash');
|
|
3
|
-
const
|
|
3
|
+
const crypto = require('crypto');
|
|
4
4
|
const moment = require('moment');
|
|
5
5
|
const {sequence} = require('@tryghost/promise');
|
|
6
6
|
const tpl = require('@tryghost/tpl');
|
|
@@ -89,7 +89,7 @@ Post = ghostBookshelf.Model.extend({
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
return {
|
|
92
|
-
uuid:
|
|
92
|
+
uuid: crypto.randomUUID(),
|
|
93
93
|
status: 'draft',
|
|
94
94
|
featured: false,
|
|
95
95
|
type: 'post',
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
const _ = require('lodash');
|
|
2
|
-
const uuid = require('uuid');
|
|
3
2
|
const crypto = require('crypto');
|
|
4
3
|
const keypair = require('keypair');
|
|
5
4
|
const ObjectID = require('bson-objectid').default;
|
|
@@ -50,7 +49,7 @@ function parseDefaultSettings() {
|
|
|
50
49
|
const defaultSettingsFlattened = {};
|
|
51
50
|
|
|
52
51
|
const dynamicDefault = {
|
|
53
|
-
db_hash: () =>
|
|
52
|
+
db_hash: () => crypto.randomUUID(),
|
|
54
53
|
public_hash: () => crypto.randomBytes(15).toString('hex'),
|
|
55
54
|
admin_session_secret: () => crypto.randomBytes(32).toString('hex'),
|
|
56
55
|
theme_session_secret: () => crypto.randomBytes(32).toString('hex'),
|
|
@@ -117,8 +117,8 @@ module.exports = {
|
|
|
117
117
|
await db.knex('jobs').insert({
|
|
118
118
|
id: new ObjectID().toHexString(),
|
|
119
119
|
name: jobName,
|
|
120
|
-
[updateField]: date,
|
|
121
|
-
updated_at: date,
|
|
120
|
+
[updateField]: date.toISOString(), // force to iso string for sqlite
|
|
121
|
+
updated_at: date.toISOString(), // force to iso string for sqlite
|
|
122
122
|
status: status
|
|
123
123
|
});
|
|
124
124
|
}
|
|
@@ -12,7 +12,7 @@ class MembersEventsServiceWrapper {
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
// Wire up all the dependencies
|
|
15
|
-
const {EventStorage, LastSeenAtUpdater} = require('@tryghost/members-events-service');
|
|
15
|
+
const {EventStorage, LastSeenAtUpdater, LastSeenAtCache} = require('@tryghost/members-events-service');
|
|
16
16
|
const models = require('../../models');
|
|
17
17
|
|
|
18
18
|
// Listen for events and store them in the database
|
|
@@ -26,6 +26,14 @@ class MembersEventsServiceWrapper {
|
|
|
26
26
|
|
|
27
27
|
const db = require('../../data/db');
|
|
28
28
|
|
|
29
|
+
// Create the last seen at cache and inject it into the last seen at updater
|
|
30
|
+
this.lastSeenAtCache = new LastSeenAtCache({
|
|
31
|
+
services: {
|
|
32
|
+
settingsCache
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// Create the last seen at updater
|
|
29
37
|
this.lastSeenAtUpdater = new LastSeenAtUpdater({
|
|
30
38
|
services: {
|
|
31
39
|
settingsCache
|
|
@@ -34,12 +42,22 @@ class MembersEventsServiceWrapper {
|
|
|
34
42
|
return members.api;
|
|
35
43
|
},
|
|
36
44
|
db,
|
|
37
|
-
events
|
|
45
|
+
events,
|
|
46
|
+
lastSeenAtCache: this.lastSeenAtCache
|
|
38
47
|
});
|
|
39
48
|
|
|
49
|
+
// Subscribe to domain events
|
|
40
50
|
this.eventStorage.subscribe(DomainEvents);
|
|
41
51
|
this.lastSeenAtUpdater.subscribe(DomainEvents);
|
|
42
52
|
}
|
|
53
|
+
|
|
54
|
+
// Clear the last seen at cache
|
|
55
|
+
// Utility used for testing purposes
|
|
56
|
+
clearLastSeenAtCache() {
|
|
57
|
+
if (this.lastSeenAtCache) {
|
|
58
|
+
this.lastSeenAtCache.clear();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
43
61
|
}
|
|
44
62
|
|
|
45
63
|
module.exports = new MembersEventsServiceWrapper();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const
|
|
1
|
+
const crypto = require('crypto');
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @TODO: move this middleware to Framework monorepo?
|
|
@@ -8,7 +8,7 @@ const uuid = require('uuid');
|
|
|
8
8
|
* @param {import('express').NextFunction} next
|
|
9
9
|
*/
|
|
10
10
|
module.exports = function requestIdMw(req, res, next) {
|
|
11
|
-
const requestId = req.get('X-Request-ID') ||
|
|
11
|
+
const requestId = req.get('X-Request-ID') || crypto.randomUUID();
|
|
12
12
|
|
|
13
13
|
// Set a value for internal use
|
|
14
14
|
req.requestId = requestId;
|
package/core/shared/labs.js
CHANGED
|
@@ -46,5 +46,6 @@ module.exports = {
|
|
|
46
46
|
outbound_link_tagging: 'outbound_link_tagging',
|
|
47
47
|
default_email_address: 'default_email_address',
|
|
48
48
|
support_email_address: 'support_email_address',
|
|
49
|
-
editor_default_email_recipients: 'editor_default_email_recipients'
|
|
49
|
+
editor_default_email_recipients: 'editor_default_email_recipients',
|
|
50
|
+
labs: 'labs'
|
|
50
51
|
};
|