ghost 5.86.1 → 5.87.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/components/tryghost-adapter-cache-memory-ttl-5.87.0.tgz +0 -0
- package/components/{tryghost-adapter-cache-redis-5.86.1.tgz → tryghost-adapter-cache-redis-5.87.0.tgz} +0 -0
- package/components/tryghost-adapter-manager-5.87.0.tgz +0 -0
- package/components/tryghost-announcement-bar-settings-5.87.0.tgz +0 -0
- package/components/{tryghost-api-framework-5.86.1.tgz → tryghost-api-framework-5.87.0.tgz} +0 -0
- package/components/tryghost-api-version-compatibility-service-5.87.0.tgz +0 -0
- package/components/tryghost-audience-feedback-5.87.0.tgz +0 -0
- package/components/tryghost-bookshelf-repository-5.87.0.tgz +0 -0
- package/components/tryghost-bootstrap-socket-5.87.0.tgz +0 -0
- package/components/tryghost-collections-5.87.0.tgz +0 -0
- package/components/tryghost-constants-5.87.0.tgz +0 -0
- package/components/tryghost-custom-theme-settings-service-5.87.0.tgz +0 -0
- package/components/{tryghost-data-generator-5.86.1.tgz → tryghost-data-generator-5.87.0.tgz} +0 -0
- package/components/{tryghost-domain-events-5.86.1.tgz → tryghost-domain-events-5.87.0.tgz} +0 -0
- package/components/tryghost-donations-5.87.0.tgz +0 -0
- package/components/tryghost-dynamic-routing-events-5.87.0.tgz +0 -0
- package/components/tryghost-email-addresses-5.87.0.tgz +0 -0
- package/components/tryghost-email-analytics-provider-mailgun-5.87.0.tgz +0 -0
- package/components/{tryghost-email-analytics-service-5.86.1.tgz → tryghost-email-analytics-service-5.87.0.tgz} +0 -0
- package/components/tryghost-email-content-generator-5.87.0.tgz +0 -0
- package/components/{tryghost-email-events-5.86.1.tgz → tryghost-email-events-5.87.0.tgz} +0 -0
- package/components/{tryghost-email-service-5.86.1.tgz → tryghost-email-service-5.87.0.tgz} +0 -0
- package/components/tryghost-email-suppression-list-5.87.0.tgz +0 -0
- package/components/tryghost-express-dynamic-redirects-5.87.0.tgz +0 -0
- package/components/tryghost-external-media-inliner-5.87.0.tgz +0 -0
- package/components/tryghost-extract-api-key-5.87.0.tgz +0 -0
- package/components/tryghost-ghost-5.87.0.tgz +0 -0
- package/components/tryghost-html-to-plaintext-5.87.0.tgz +0 -0
- package/components/tryghost-i18n-5.87.0.tgz +0 -0
- package/components/{tryghost-importer-handler-content-files-5.86.1.tgz → tryghost-importer-handler-content-files-5.87.0.tgz} +0 -0
- package/components/tryghost-importer-revue-5.87.0.tgz +0 -0
- package/components/tryghost-in-memory-repository-5.87.0.tgz +0 -0
- package/components/{tryghost-job-manager-5.86.1.tgz → tryghost-job-manager-5.87.0.tgz} +0 -0
- package/components/tryghost-link-redirects-5.87.0.tgz +0 -0
- package/components/tryghost-link-replacer-5.87.0.tgz +0 -0
- package/components/tryghost-link-tracking-5.87.0.tgz +0 -0
- package/components/{tryghost-magic-link-5.86.1.tgz → tryghost-magic-link-5.87.0.tgz} +0 -0
- package/components/{tryghost-mail-events-5.86.1.tgz → tryghost-mail-events-5.87.0.tgz} +0 -0
- package/components/{tryghost-mailgun-client-5.86.1.tgz → tryghost-mailgun-client-5.87.0.tgz} +0 -0
- package/components/tryghost-member-attribution-5.87.0.tgz +0 -0
- package/components/{tryghost-member-events-5.86.1.tgz → tryghost-member-events-5.87.0.tgz} +0 -0
- package/components/tryghost-members-api-5.87.0.tgz +0 -0
- package/components/tryghost-members-csv-5.87.0.tgz +0 -0
- package/components/tryghost-members-events-service-5.87.0.tgz +0 -0
- package/components/tryghost-members-importer-5.87.0.tgz +0 -0
- package/components/{tryghost-members-offers-5.86.1.tgz → tryghost-members-offers-5.87.0.tgz} +0 -0
- package/components/tryghost-members-payments-5.87.0.tgz +0 -0
- package/components/tryghost-members-ssr-5.87.0.tgz +0 -0
- package/components/{tryghost-members-stripe-service-5.86.1.tgz → tryghost-members-stripe-service-5.87.0.tgz} +0 -0
- package/components/tryghost-mentions-email-report-5.87.0.tgz +0 -0
- package/components/tryghost-milestones-5.87.0.tgz +0 -0
- package/components/tryghost-minifier-5.87.0.tgz +0 -0
- package/components/tryghost-model-to-domain-event-interceptor-5.87.0.tgz +0 -0
- package/components/tryghost-mw-api-version-mismatch-5.87.0.tgz +0 -0
- package/components/tryghost-mw-cache-control-5.87.0.tgz +0 -0
- package/components/tryghost-mw-error-handler-5.87.0.tgz +0 -0
- package/components/tryghost-mw-session-from-token-5.87.0.tgz +0 -0
- package/components/tryghost-mw-update-user-last-seen-5.87.0.tgz +0 -0
- package/components/tryghost-mw-version-match-5.87.0.tgz +0 -0
- package/components/tryghost-mw-vhost-5.87.0.tgz +0 -0
- package/components/{tryghost-nql-filter-expansions-5.86.1.tgz → tryghost-nql-filter-expansions-5.87.0.tgz} +0 -0
- package/components/tryghost-oembed-service-5.87.0.tgz +0 -0
- package/components/tryghost-package-json-5.87.0.tgz +0 -0
- package/components/tryghost-post-events-5.87.0.tgz +0 -0
- package/components/tryghost-post-revisions-5.87.0.tgz +0 -0
- package/components/tryghost-posts-service-5.87.0.tgz +0 -0
- package/components/tryghost-recommendations-5.87.0.tgz +0 -0
- package/components/tryghost-referrers-5.87.0.tgz +0 -0
- package/components/{tryghost-security-5.86.1.tgz → tryghost-security-5.87.0.tgz} +0 -0
- package/components/tryghost-session-service-5.87.0.tgz +0 -0
- package/components/tryghost-settings-path-manager-5.87.0.tgz +0 -0
- package/components/tryghost-slack-notifications-5.87.0.tgz +0 -0
- package/components/tryghost-staff-service-5.87.0.tgz +0 -0
- package/components/tryghost-stats-service-5.87.0.tgz +0 -0
- package/components/{tryghost-tiers-5.86.1.tgz → tryghost-tiers-5.87.0.tgz} +0 -0
- package/components/{tryghost-update-check-service-5.86.1.tgz → tryghost-update-check-service-5.87.0.tgz} +0 -0
- package/components/tryghost-verification-trigger-5.87.0.tgz +0 -0
- package/components/tryghost-version-notifications-data-service-5.87.0.tgz +0 -0
- package/components/tryghost-webmentions-5.87.0.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-8aaa062c.mjs → index-adf6f50d.mjs} +1907 -1876
- package/core/built/admin/assets/admin-x-activitypub/{modals-124e649f.mjs → modals-c796922a.mjs} +210 -220
- package/core/built/admin/assets/admin-x-settings/{CodeEditorView-7dd72fff.mjs → CodeEditorView-18434b62.mjs} +2 -2
- package/core/built/admin/assets/admin-x-settings/admin-x-settings.js +1 -1
- package/core/built/admin/assets/admin-x-settings/{index-3b15dfb3.mjs → index-26c4c463.mjs} +2 -2
- package/core/built/admin/assets/admin-x-settings/{index-8b8bf7d6.mjs → index-c8f7240c.mjs} +25 -26
- package/core/built/admin/assets/admin-x-settings/{modals-71f5a60d.mjs → modals-bef82301.mjs} +4 -5
- package/core/built/admin/assets/{chunk.524.1f4d5090856e8f276abe.js → chunk.524.d2e0fcb8c19f3c1a3b30.js} +5 -5
- package/core/built/admin/assets/{chunk.582.591841f06bb7c4fb603e.js → chunk.582.21faf5b79ae545480852.js} +6 -6
- package/core/built/admin/assets/{ghost-cc7512accd98e0fa3cc0906c52204a55.js → ghost-7cd5e5705abfd8aa74248fc44aec54b5.js} +34 -33
- package/core/built/admin/assets/ghost-ce50e3eb300a8e297d8b1f8b372c25d6.css +1 -0
- package/core/built/admin/assets/ghost-dark-4b969016a590f3112196d4ba3da7843a.css +1 -0
- package/core/built/admin/assets/koenig-lexical/index.css +1 -1
- package/core/built/admin/assets/koenig-lexical/koenig-lexical.js +16061 -15986
- package/core/built/admin/assets/koenig-lexical/koenig-lexical.umd.js +122 -124
- package/core/built/admin/assets/{vendor-232fd88c6ffbd896b34c449112793e93.js → vendor-104fd33edb243021ce2f1a3797d513ef.js} +4 -4
- package/core/built/admin/index.html +5 -5
- package/core/frontend/helpers/get.js +7 -5
- package/core/frontend/src/cards/css/bookmark.css +2 -0
- package/core/server/api/endpoints/utils/serializers/input/pages.js +32 -1
- package/core/server/api/endpoints/utils/serializers/input/posts.js +2 -2
- package/core/server/data/migrations/versions/5.87/2024-06-25-12-08-20-add-posts-tags-post-tag-index.js +26 -0
- package/core/server/data/migrations/versions/5.87/2024-06-25-12-08-45-add-posts-type-status-updated-at-index.js +4 -0
- package/core/server/data/schema/schema.js +7 -1
- package/core/server/models/base/plugins/crud.js +5 -0
- package/core/server/web/parent/app.js +1 -1
- package/package.json +151 -151
- package/yarn.lock +381 -359
- package/components/tryghost-adapter-cache-memory-ttl-5.86.1.tgz +0 -0
- package/components/tryghost-adapter-manager-5.86.1.tgz +0 -0
- package/components/tryghost-announcement-bar-settings-5.86.1.tgz +0 -0
- package/components/tryghost-api-version-compatibility-service-5.86.1.tgz +0 -0
- package/components/tryghost-audience-feedback-5.86.1.tgz +0 -0
- package/components/tryghost-bookshelf-repository-5.86.1.tgz +0 -0
- package/components/tryghost-bootstrap-socket-5.86.1.tgz +0 -0
- package/components/tryghost-collections-5.86.1.tgz +0 -0
- package/components/tryghost-constants-5.86.1.tgz +0 -0
- package/components/tryghost-custom-theme-settings-service-5.86.1.tgz +0 -0
- package/components/tryghost-donations-5.86.1.tgz +0 -0
- package/components/tryghost-dynamic-routing-events-5.86.1.tgz +0 -0
- package/components/tryghost-email-addresses-5.86.1.tgz +0 -0
- package/components/tryghost-email-analytics-provider-mailgun-5.86.1.tgz +0 -0
- package/components/tryghost-email-content-generator-5.86.1.tgz +0 -0
- package/components/tryghost-email-suppression-list-5.86.1.tgz +0 -0
- package/components/tryghost-express-dynamic-redirects-5.86.1.tgz +0 -0
- package/components/tryghost-external-media-inliner-5.86.1.tgz +0 -0
- package/components/tryghost-extract-api-key-5.86.1.tgz +0 -0
- package/components/tryghost-ghost-5.86.1.tgz +0 -0
- package/components/tryghost-html-to-plaintext-5.86.1.tgz +0 -0
- package/components/tryghost-i18n-5.86.1.tgz +0 -0
- package/components/tryghost-importer-revue-5.86.1.tgz +0 -0
- package/components/tryghost-in-memory-repository-5.86.1.tgz +0 -0
- package/components/tryghost-link-redirects-5.86.1.tgz +0 -0
- package/components/tryghost-link-replacer-5.86.1.tgz +0 -0
- package/components/tryghost-link-tracking-5.86.1.tgz +0 -0
- package/components/tryghost-member-attribution-5.86.1.tgz +0 -0
- package/components/tryghost-members-api-5.86.1.tgz +0 -0
- package/components/tryghost-members-csv-5.86.1.tgz +0 -0
- package/components/tryghost-members-events-service-5.86.1.tgz +0 -0
- package/components/tryghost-members-importer-5.86.1.tgz +0 -0
- package/components/tryghost-members-payments-5.86.1.tgz +0 -0
- package/components/tryghost-members-ssr-5.86.1.tgz +0 -0
- package/components/tryghost-mentions-email-report-5.86.1.tgz +0 -0
- package/components/tryghost-milestones-5.86.1.tgz +0 -0
- package/components/tryghost-minifier-5.86.1.tgz +0 -0
- package/components/tryghost-model-to-domain-event-interceptor-5.86.1.tgz +0 -0
- package/components/tryghost-mw-api-version-mismatch-5.86.1.tgz +0 -0
- package/components/tryghost-mw-cache-control-5.86.1.tgz +0 -0
- package/components/tryghost-mw-error-handler-5.86.1.tgz +0 -0
- package/components/tryghost-mw-session-from-token-5.86.1.tgz +0 -0
- package/components/tryghost-mw-update-user-last-seen-5.86.1.tgz +0 -0
- package/components/tryghost-mw-version-match-5.86.1.tgz +0 -0
- package/components/tryghost-mw-vhost-5.86.1.tgz +0 -0
- package/components/tryghost-oembed-service-5.86.1.tgz +0 -0
- package/components/tryghost-package-json-5.86.1.tgz +0 -0
- package/components/tryghost-post-events-5.86.1.tgz +0 -0
- package/components/tryghost-post-revisions-5.86.1.tgz +0 -0
- package/components/tryghost-posts-service-5.86.1.tgz +0 -0
- package/components/tryghost-recommendations-5.86.1.tgz +0 -0
- package/components/tryghost-referrers-5.86.1.tgz +0 -0
- package/components/tryghost-session-service-5.86.1.tgz +0 -0
- package/components/tryghost-settings-path-manager-5.86.1.tgz +0 -0
- package/components/tryghost-slack-notifications-5.86.1.tgz +0 -0
- package/components/tryghost-staff-service-5.86.1.tgz +0 -0
- package/components/tryghost-stats-service-5.86.1.tgz +0 -0
- package/components/tryghost-verification-trigger-5.86.1.tgz +0 -0
- package/components/tryghost-version-notifications-data-service-5.86.1.tgz +0 -0
- package/components/tryghost-webmentions-5.86.1.tgz +0 -0
- package/core/built/admin/assets/ghost-117facae643a21dde076079b84fce471.css +0 -1
- package/core/built/admin/assets/ghost-dark-031957661056b00048f03aac0618c480.css +0 -1
|
@@ -9172,11 +9172,11 @@ e.default={content:'<defs><style>.info_svg__a{fill:none;stroke:currentColor;stro
|
|
|
9172
9172
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
9173
9173
|
e.default={content:'<g stroke="#343f44" fill="none" fill-rule="evenodd"><path d="M-1-3h48v48H-1z" stroke="none"/><g stroke-linecap="round" stroke-linejoin="round"><path d="M32.932 6.574c.713.428 1.069 1.057 1.068 1.888v9.278l-11 7.076-11-7.076V8.462c0-.831.355-1.46 1.068-1.888l8.8-5.28c.755-.453 1.51-.453 2.264 0l8.8 5.28zM23 13.816v11"/><path d="M34 31.416l-11-6.6 11-7.076 10 6.426c.669.435 1.002 1.052 1 1.85v8.124c.002.798-.331 1.415-1 1.85l-8.8 5.66c-.793.51-1.587.51-2.38 0L23 35.34V24.816m11 6.6V42M23 24.816V35.34l-9.8 6.31c-.793.51-1.587.51-2.38 0l-8.8-5.66c-.678-.43-1.018-1.047-1.02-1.85v-8.124c-.002-.798.331-1.415 1-1.85l10-6.426 11 7.076-11 6.6m0 0L1.262 24.974M12 31.416V42m11-28.184L12.282 7.384m21.436 0L23 13.816m21.738 11.158L34 31.416"/></g></g>',attrs:{viewBox:"0 0 46 43"}}})),define("ember-svg-jar/inlined/keyboard",["exports"],(function(e){"use strict"
|
|
9174
9174
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
9175
|
-
e.default={content:'<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M21 5H3a2 2 0 00-2 2v11a2 2 0 002 2h18a2 2 0 002-2V7a2 2 0 00-2-2zM5 10h2m4 0h2m4 0h2M5 15h2m4 0h8"/>',attrs:{fill:"none",viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/koenig/kg-
|
|
9175
|
+
e.default={content:'<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M21 5H3a2 2 0 00-2 2v11a2 2 0 002 2h18a2 2 0 002-2V7a2 2 0 00-2-2zM5 10h2m4 0h2m4 0h2M5 15h2m4 0h8"/>',attrs:{fill:"none",viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/koenig/kg-trash",["exports"],(function(e){"use strict"
|
|
9176
9176
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
9177
|
-
e.default={content:'<
|
|
9177
|
+
e.default={content:'<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M1.917 5.583h20.166m-8.02-3.666H9.936a1.375 1.375 0 00-1.374 1.375v2.291h6.874V3.292a1.375 1.375 0 00-1.374-1.375zM9.938 17.27v-6.874m4.125 6.874v-6.874"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M18.288 20.818a1.366 1.366 0 01-1.366 1.265H7.077a1.366 1.366 0 01-1.365-1.265L4.438 5.583h15.125l-1.275 15.235z"/>',attrs:{fill:"none",viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/koenig/kg-wand",["exports"],(function(e){"use strict"
|
|
9178
9178
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
9179
|
-
e.default={content:'<
|
|
9179
|
+
e.default={content:'<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M1 21.094L3.913 24 17 10.906 14.125 8 1 21.094zM11 11l3 3M5.25 4.25a2.5 2.5 0 002.5-2.5 2.5 2.5 0 002.5 2.5 2.5 2.5 0 00-2.5 2.5 2.5 2.5 0 00-2.5-2.5zm12 0a2.5 2.5 0 002.5-2.5 2.5 2.5 0 002.5 2.5 2.5 2.5 0 00-2.5 2.5 2.5 2.5 0 00-2.5-2.5zm0 11.99a2.5 2.5 0 002.5-2.5 2.5 2.5 0 002.5 2.5 2.5 2.5 0 00-2.5 2.5 2.5 2.5 0 00-2.5-2.5z"/>',attrs:{fill:"none",viewBox:"0 0 24 25"}}})),define("ember-svg-jar/inlined/labs",["exports"],(function(e){"use strict"
|
|
9180
9180
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
9181
9181
|
e.default={content:'<defs><style>.labs_svg__a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px}</style></defs><path class="labs_svg__a" d="M6.726.75h10.5m-1.5 7.5V.75h-7.5v7.5L1.489 18.615A3 3 0 004 23.25h15.948a3 3 0 002.515-4.635zm-10.425 4.5h13.35m-4.425 4.5h3m-1.5-1.5v3"/><path class="labs_svg__a" d="M6.726 19.125a.375.375 0 01.374.375m-.749 0a.375.375 0 01.375-.375m0 .75a.375.375 0 01-.375-.375"/><path class="labs_svg__a" d="M7.1 19.5a.375.375 0 01-.375.375m3.001-3.75a.375.375 0 01.375.375m-.75 0a.375.375 0 01.375-.375m0 .75a.375.375 0 01-.375-.375"/><path class="labs_svg__a" d="M10.1 16.5a.375.375 0 01-.375.375M15.726 3.75h-3m3 3h-3"/>',attrs:{viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/link",["exports"],(function(e){"use strict"
|
|
9182
9182
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
@@ -9937,4 +9937,4 @@ e.default=class{constructor(e){if(this._data=new t.default,e)for(let t=0;t<e.len
|
|
|
9937
9937
|
return this}get(e){let t=this._data[e]
|
|
9938
9938
|
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}}}))
|
|
9939
9939
|
|
|
9940
|
-
//# sourceMappingURL=vendor-
|
|
9940
|
+
//# sourceMappingURL=vendor-d98d3e3e85163f4632ac6537fe4406cb.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.
|
|
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.87%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22ember-websockets%22%3A%7B%22socketIO%22%3Atrue%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%228266664e32%22%2C%22adminXDemoFilename%22%3A%22admin-x-demo.js%22%2C%22adminXDemoHash%22%3A%224245030234%22%2C%22adminXSettingsFilename%22%3A%22admin-x-settings.js%22%2C%22adminXSettingsHash%22%3A%2265275a5bdb%22%2C%22adminXActivitypubFilename%22%3A%22admin-x-activitypub.js%22%2C%22adminXActivitypubHash%22%3A%22c9a754a9f6%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-ce50e3eb300a8e297d8b1f8b372c25d6.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-
|
|
59
|
+
<script src="assets/vendor-104fd33edb243021ce2f1a3797d513ef.js"></script>
|
|
60
60
|
<script src="assets/chunk.216.1641331b33471771559d.js"></script>
|
|
61
|
-
<script src="assets/chunk.524.
|
|
62
|
-
<script src="assets/ghost-
|
|
61
|
+
<script src="assets/chunk.524.d2e0fcb8c19f3c1a3b30.js"></script>
|
|
62
|
+
<script src="assets/ghost-7cd5e5705abfd8aa74248fc44aec54b5.js"></script>
|
|
63
63
|
</body>
|
|
64
64
|
</html>
|
|
@@ -299,7 +299,7 @@ module.exports = async function get(resource, options) {
|
|
|
299
299
|
try {
|
|
300
300
|
const spanName = `{{#get "${resource}"${apiOptionsString}}} ${data.member ? 'member' : 'public'}`;
|
|
301
301
|
const result = await Sentry.startSpan({
|
|
302
|
-
op: 'frontend.helpers.get',
|
|
302
|
+
op: 'frontend.helpers.get',
|
|
303
303
|
name: spanName,
|
|
304
304
|
tags: {
|
|
305
305
|
resource,
|
|
@@ -313,11 +313,11 @@ module.exports = async function get(resource, options) {
|
|
|
313
313
|
if (response[resource] && response[resource].length) {
|
|
314
314
|
response[resource].forEach(prepareContextResource);
|
|
315
315
|
}
|
|
316
|
-
|
|
316
|
+
|
|
317
317
|
// used for logging details of slow requests
|
|
318
318
|
returnedRowsCount = response[resource] && response[resource].length;
|
|
319
319
|
span?.setTag('returnedRows', returnedRowsCount);
|
|
320
|
-
|
|
320
|
+
|
|
321
321
|
// block params allows the theme developer to name the data using something like
|
|
322
322
|
// `{{#get "posts" as |result pageInfo|}}`
|
|
323
323
|
const blockParams = [response[resource]];
|
|
@@ -325,7 +325,7 @@ module.exports = async function get(resource, options) {
|
|
|
325
325
|
response.pagination = response.meta.pagination;
|
|
326
326
|
blockParams.push(response.meta.pagination);
|
|
327
327
|
}
|
|
328
|
-
|
|
328
|
+
|
|
329
329
|
// Call the main template function
|
|
330
330
|
const rendered = options.fn(response, {
|
|
331
331
|
data: data,
|
|
@@ -357,7 +357,9 @@ module.exports = async function get(resource, options) {
|
|
|
357
357
|
apiOptions,
|
|
358
358
|
returnedRows: returnedRowsCount
|
|
359
359
|
}
|
|
360
|
-
})
|
|
360
|
+
}), {
|
|
361
|
+
time: totalMs
|
|
362
|
+
});
|
|
361
363
|
}
|
|
362
364
|
}
|
|
363
365
|
}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
.kg-bookmark-card a.kg-bookmark-container,
|
|
13
13
|
.kg-bookmark-card a.kg-bookmark-container:hover {
|
|
14
14
|
display: flex;
|
|
15
|
+
background: #fff;
|
|
15
16
|
text-decoration: none;
|
|
16
17
|
border-radius: 6px;
|
|
17
18
|
border: 1px solid rgb(124 139 154 / 25%);
|
|
@@ -28,6 +29,7 @@
|
|
|
28
29
|
justify-content: flex-start;
|
|
29
30
|
padding: 20px;
|
|
30
31
|
overflow: hidden;
|
|
32
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
|
|
31
33
|
}
|
|
32
34
|
|
|
33
35
|
.kg-bookmark-title {
|
|
@@ -7,6 +7,7 @@ const slugFilterOrder = require('./utils/slug-filter-order');
|
|
|
7
7
|
const localUtils = require('../../index');
|
|
8
8
|
const mobiledoc = require('../../../../../lib/mobiledoc');
|
|
9
9
|
const postsMetaSchema = require('../../../../../data/schema').tables.posts_meta;
|
|
10
|
+
const postsSchema = require('../../../../../data/schema').tables.posts;
|
|
10
11
|
const clean = require('./utils/clean');
|
|
11
12
|
const lexical = require('../../../../../lib/lexical');
|
|
12
13
|
const sentry = require('../../../../../../shared/sentry');
|
|
@@ -24,6 +25,33 @@ function removeSourceFormats(frame) {
|
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
27
|
|
|
28
|
+
/**
|
|
29
|
+
* Selects all allowed columns for the given frame.
|
|
30
|
+
*
|
|
31
|
+
* This removes the lexical and mobiledoc columns from the query. This is a performance improvement as we never intend
|
|
32
|
+
* to expose those columns in the content API and they are very large datasets to be passing around and de/serializing.
|
|
33
|
+
*
|
|
34
|
+
* NOTE: This is only intended for the Content API. We need these fields within Admin API responses.
|
|
35
|
+
*
|
|
36
|
+
* @param {Object} frame - The frame object.
|
|
37
|
+
*/
|
|
38
|
+
function selectAllAllowedColumns(frame) {
|
|
39
|
+
if (!frame.options.columns && !frame.options.selectRaw) {
|
|
40
|
+
// Because we're returning columns directly from the schema we need to remove info columns like @@UNIQUE_CONSTRAINTS@@ and @@INDEXES@@
|
|
41
|
+
frame.options.selectRaw = _.keys(_.omit(postsSchema, ['lexical','mobiledoc','@@INDEXES@@','@@UNIQUE_CONSTRAINTS@@'])).join(',');
|
|
42
|
+
} else if (frame.options.columns) {
|
|
43
|
+
frame.options.columns = frame.options.columns.filter((column) => {
|
|
44
|
+
return !['mobiledoc', 'lexical'].includes(column);
|
|
45
|
+
});
|
|
46
|
+
} else if (frame.options.selectRaw) {
|
|
47
|
+
frame.options.selectRaw = frame.options.selectRaw.split(',').map((column) => {
|
|
48
|
+
return column.trim();
|
|
49
|
+
}).filter((column) => {
|
|
50
|
+
return !['mobiledoc', 'lexical'].includes(column);
|
|
51
|
+
}).join(',');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
27
55
|
function defaultRelations(frame) {
|
|
28
56
|
if (frame.options.withRelated) {
|
|
29
57
|
return;
|
|
@@ -97,7 +125,10 @@ module.exports = {
|
|
|
97
125
|
forcePageFilter(frame);
|
|
98
126
|
|
|
99
127
|
if (localUtils.isContentAPI(frame)) {
|
|
100
|
-
|
|
128
|
+
// CASE: the content api endpoint for posts should not return mobiledoc or lexical
|
|
129
|
+
removeSourceFormats(frame); // remove from the format field
|
|
130
|
+
selectAllAllowedColumns(frame); // remove from any specified column or selectRaw options
|
|
131
|
+
|
|
101
132
|
setDefaultOrder(frame);
|
|
102
133
|
forceVisibilityColumn(frame);
|
|
103
134
|
}
|
|
@@ -47,8 +47,8 @@ function removeSourceFormats(frame) {
|
|
|
47
47
|
*/
|
|
48
48
|
function selectAllAllowedColumns(frame) {
|
|
49
49
|
if (!frame.options.columns && !frame.options.selectRaw) {
|
|
50
|
-
// Because we're returning columns directly from the
|
|
51
|
-
frame.options.selectRaw = _.keys(_.omit(postsSchema, ['lexical','mobiledoc','@@UNIQUE_CONSTRAINTS@@'])).join(',');
|
|
50
|
+
// Because we're returning columns directly from the schema we need to remove info columns like @@UNIQUE_CONSTRAINTS@@ and @@INDEXES@@
|
|
51
|
+
frame.options.selectRaw = _.keys(_.omit(postsSchema, ['lexical','mobiledoc','@@INDEXES@@','@@UNIQUE_CONSTRAINTS@@'])).join(',');
|
|
52
52
|
} else if (frame.options.columns) {
|
|
53
53
|
frame.options.columns = frame.options.columns.filter((column) => {
|
|
54
54
|
return !['mobiledoc', 'lexical'].includes(column);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const logging = require('@tryghost/logging');
|
|
2
|
+
const {createNonTransactionalMigration} = require('../../utils');
|
|
3
|
+
const {addIndex, dropIndex} = require('../../../schema/commands');
|
|
4
|
+
|
|
5
|
+
module.exports = createNonTransactionalMigration(
|
|
6
|
+
async function up(knex) {
|
|
7
|
+
await addIndex('posts_tags', ['post_id', 'tag_id'], knex);
|
|
8
|
+
},
|
|
9
|
+
async function down(knex) {
|
|
10
|
+
try {
|
|
11
|
+
await dropIndex('posts_tags', ['post_id', 'tag_id'], knex);
|
|
12
|
+
} catch (err) {
|
|
13
|
+
if (err.code === 'ER_DROP_INDEX_FK') {
|
|
14
|
+
logging.error({
|
|
15
|
+
message: 'Error dropping index over posts_tags(post_id, tag_id), re-adding index for post_id'
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
await addIndex('posts_tags', ['post_id'], knex);
|
|
19
|
+
await dropIndex('posts_tags', ['post_id', 'tag_id'], knex);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
throw err;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
);
|
|
@@ -93,6 +93,9 @@ module.exports = {
|
|
|
93
93
|
canonical_url: {type: 'text', maxlength: 2000, nullable: true},
|
|
94
94
|
newsletter_id: {type: 'string', maxlength: 24, nullable: true, references: 'newsletters.id'},
|
|
95
95
|
show_title_and_feature_image: {type: 'boolean', nullable: false, defaultTo: true},
|
|
96
|
+
'@@INDEXES@@': [
|
|
97
|
+
['type','status','updated_at']
|
|
98
|
+
],
|
|
96
99
|
'@@UNIQUE_CONSTRAINTS@@': [
|
|
97
100
|
['slug', 'type']
|
|
98
101
|
]
|
|
@@ -295,7 +298,10 @@ module.exports = {
|
|
|
295
298
|
id: {type: 'string', maxlength: 24, nullable: false, primary: true},
|
|
296
299
|
post_id: {type: 'string', maxlength: 24, nullable: false, references: 'posts.id'},
|
|
297
300
|
tag_id: {type: 'string', maxlength: 24, nullable: false, references: 'tags.id'},
|
|
298
|
-
sort_order: {type: 'integer', nullable: false, unsigned: true, defaultTo: 0}
|
|
301
|
+
sort_order: {type: 'integer', nullable: false, unsigned: true, defaultTo: 0},
|
|
302
|
+
'@@INDEXES@@': [
|
|
303
|
+
['post_id','tag_id']
|
|
304
|
+
]
|
|
299
305
|
},
|
|
300
306
|
invites: {
|
|
301
307
|
id: {type: 'string', maxlength: 24, nullable: false, primary: true},
|
|
@@ -120,6 +120,11 @@ module.exports = function (Bookshelf) {
|
|
|
120
120
|
});
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
+
//option param to skip distinct from count query, distinct adds a lot of latency and in this case the result set will always be unique.
|
|
124
|
+
if (unfilteredOptions.useBasicCount) {
|
|
125
|
+
options.useBasicCount = unfilteredOptions.useBasicCount;
|
|
126
|
+
}
|
|
127
|
+
|
|
123
128
|
const response = await itemCollection.fetchPage(options);
|
|
124
129
|
// Attributes are being filtered here, so they are not leaked into calling layer
|
|
125
130
|
// where models are serialized to json and do not do more filtering.
|
|
@@ -29,7 +29,7 @@ module.exports = function setupParentApp() {
|
|
|
29
29
|
// Enable request queuing if configured
|
|
30
30
|
const queueConfig = config.get('optimization:requestQueue');
|
|
31
31
|
|
|
32
|
-
if (queueConfig
|
|
32
|
+
if (queueConfig) {
|
|
33
33
|
parentApp.use(mw.queueRequest(queueConfig));
|
|
34
34
|
}
|
|
35
35
|
|