ghost 5.95.0 → 5.96.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.96.1.tgz +0 -0
- package/components/{tryghost-adapter-cache-redis-5.95.0.tgz → tryghost-adapter-cache-redis-5.96.1.tgz} +0 -0
- package/components/tryghost-adapter-manager-5.96.1.tgz +0 -0
- package/components/tryghost-announcement-bar-settings-5.96.1.tgz +0 -0
- package/components/{tryghost-api-framework-5.95.0.tgz → tryghost-api-framework-5.96.1.tgz} +0 -0
- package/components/tryghost-api-version-compatibility-service-5.96.1.tgz +0 -0
- package/components/tryghost-audience-feedback-5.96.1.tgz +0 -0
- package/components/tryghost-bookshelf-repository-5.96.1.tgz +0 -0
- package/components/tryghost-bootstrap-socket-5.96.1.tgz +0 -0
- package/components/tryghost-collections-5.96.1.tgz +0 -0
- package/components/tryghost-constants-5.96.1.tgz +0 -0
- package/components/{tryghost-custom-theme-settings-service-5.95.0.tgz → tryghost-custom-theme-settings-service-5.96.1.tgz} +0 -0
- package/components/{tryghost-data-generator-5.95.0.tgz → tryghost-data-generator-5.96.1.tgz} +0 -0
- package/components/{tryghost-domain-events-5.95.0.tgz → tryghost-domain-events-5.96.1.tgz} +0 -0
- package/components/tryghost-donations-5.96.1.tgz +0 -0
- package/components/tryghost-dynamic-routing-events-5.96.1.tgz +0 -0
- package/components/tryghost-email-addresses-5.96.1.tgz +0 -0
- package/components/tryghost-email-analytics-provider-mailgun-5.96.1.tgz +0 -0
- package/components/{tryghost-email-analytics-service-5.95.0.tgz → tryghost-email-analytics-service-5.96.1.tgz} +0 -0
- package/components/tryghost-email-content-generator-5.96.1.tgz +0 -0
- package/components/tryghost-email-events-5.96.1.tgz +0 -0
- package/components/tryghost-email-service-5.96.1.tgz +0 -0
- package/components/tryghost-email-suppression-list-5.96.1.tgz +0 -0
- package/components/tryghost-express-dynamic-redirects-5.96.1.tgz +0 -0
- package/components/{tryghost-external-media-inliner-5.95.0.tgz → tryghost-external-media-inliner-5.96.1.tgz} +0 -0
- package/components/tryghost-extract-api-key-5.96.1.tgz +0 -0
- package/components/tryghost-ghost-5.96.1.tgz +0 -0
- package/components/tryghost-html-to-plaintext-5.96.1.tgz +0 -0
- package/components/tryghost-i18n-5.96.1.tgz +0 -0
- package/components/{tryghost-importer-handler-content-files-5.95.0.tgz → tryghost-importer-handler-content-files-5.96.1.tgz} +0 -0
- package/components/{tryghost-importer-revue-5.95.0.tgz → tryghost-importer-revue-5.96.1.tgz} +0 -0
- package/components/tryghost-in-memory-repository-5.96.1.tgz +0 -0
- package/components/{tryghost-job-manager-5.95.0.tgz → tryghost-job-manager-5.96.1.tgz} +0 -0
- package/components/tryghost-link-redirects-5.96.1.tgz +0 -0
- package/components/tryghost-link-replacer-5.96.1.tgz +0 -0
- package/components/{tryghost-link-tracking-5.95.0.tgz → tryghost-link-tracking-5.96.1.tgz} +0 -0
- package/components/tryghost-magic-link-5.96.1.tgz +0 -0
- package/components/tryghost-mail-events-5.96.1.tgz +0 -0
- package/components/{tryghost-mailgun-client-5.95.0.tgz → tryghost-mailgun-client-5.96.1.tgz} +0 -0
- package/components/{tryghost-member-attribution-5.95.0.tgz → tryghost-member-attribution-5.96.1.tgz} +0 -0
- package/components/tryghost-member-events-5.96.1.tgz +0 -0
- package/components/{tryghost-members-api-5.95.0.tgz → tryghost-members-api-5.96.1.tgz} +0 -0
- package/components/tryghost-members-csv-5.96.1.tgz +0 -0
- package/components/{tryghost-members-events-service-5.95.0.tgz → tryghost-members-events-service-5.96.1.tgz} +0 -0
- package/components/tryghost-members-importer-5.96.1.tgz +0 -0
- package/components/tryghost-members-offers-5.96.1.tgz +0 -0
- package/components/tryghost-members-payments-5.96.1.tgz +0 -0
- package/components/tryghost-members-ssr-5.96.1.tgz +0 -0
- package/components/tryghost-members-stripe-service-5.96.1.tgz +0 -0
- package/components/{tryghost-mentions-email-report-5.95.0.tgz → tryghost-mentions-email-report-5.96.1.tgz} +0 -0
- package/components/tryghost-metrics-server-5.96.1.tgz +0 -0
- package/components/{tryghost-milestones-5.95.0.tgz → tryghost-milestones-5.96.1.tgz} +0 -0
- package/components/tryghost-minifier-5.96.1.tgz +0 -0
- package/components/tryghost-model-to-domain-event-interceptor-5.96.1.tgz +0 -0
- package/components/tryghost-mw-api-version-mismatch-5.96.1.tgz +0 -0
- package/components/tryghost-mw-cache-control-5.96.1.tgz +0 -0
- package/components/tryghost-mw-error-handler-5.96.1.tgz +0 -0
- package/components/{tryghost-mw-session-from-token-5.95.0.tgz → tryghost-mw-session-from-token-5.96.1.tgz} +0 -0
- package/components/tryghost-mw-update-user-last-seen-5.96.1.tgz +0 -0
- package/components/{tryghost-mw-version-match-5.95.0.tgz → tryghost-mw-version-match-5.96.1.tgz} +0 -0
- package/components/tryghost-mw-vhost-5.96.1.tgz +0 -0
- package/components/tryghost-nql-filter-expansions-5.96.1.tgz +0 -0
- package/components/tryghost-oembed-service-5.96.1.tgz +0 -0
- package/components/tryghost-package-json-5.96.1.tgz +0 -0
- package/components/tryghost-post-events-5.96.1.tgz +0 -0
- package/components/{tryghost-post-revisions-5.95.0.tgz → tryghost-post-revisions-5.96.1.tgz} +0 -0
- package/components/tryghost-posts-service-5.96.1.tgz +0 -0
- package/components/tryghost-recommendations-5.96.1.tgz +0 -0
- package/components/tryghost-referrers-5.96.1.tgz +0 -0
- package/components/{tryghost-security-5.95.0.tgz → tryghost-security-5.96.1.tgz} +0 -0
- package/components/{tryghost-session-service-5.95.0.tgz → tryghost-session-service-5.96.1.tgz} +0 -0
- package/components/tryghost-settings-path-manager-5.96.1.tgz +0 -0
- package/components/tryghost-slack-notifications-5.96.1.tgz +0 -0
- package/components/{tryghost-staff-service-5.95.0.tgz → tryghost-staff-service-5.96.1.tgz} +0 -0
- package/components/{tryghost-stats-service-5.95.0.tgz → tryghost-stats-service-5.96.1.tgz} +0 -0
- package/components/{tryghost-tiers-5.95.0.tgz → tryghost-tiers-5.96.1.tgz} +0 -0
- package/components/{tryghost-update-check-service-5.95.0.tgz → tryghost-update-check-service-5.96.1.tgz} +0 -0
- package/components/tryghost-verification-trigger-5.96.1.tgz +0 -0
- package/components/tryghost-version-notifications-data-service-5.96.1.tgz +0 -0
- package/components/tryghost-webmentions-5.96.1.tgz +0 -0
- package/core/boot.js +43 -0
- package/core/bridge.js +11 -8
- package/core/built/admin/assets/admin-x-activitypub/admin-x-activitypub.js +3 -3
- package/core/built/admin/assets/admin-x-activitypub/{index-6868a2ce.mjs → index-def21e23.mjs} +4359 -3811
- package/core/built/admin/assets/admin-x-activitypub/modals-09282c4e.mjs +250 -0
- package/core/built/admin/assets/admin-x-demo/admin-x-demo.js +1 -1
- package/core/built/admin/assets/admin-x-demo/{index-2575d977.mjs → index-3d57e7aa.mjs} +766 -762
- package/core/built/admin/assets/admin-x-demo/{modals-3cdb55d2.mjs → modals-191eb359.mjs} +2 -2
- package/core/built/admin/assets/admin-x-settings/{CodeEditorView-c5fded51.mjs → CodeEditorView-85a3642c.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-baad1fa3.mjs → index-ebbd8de9.mjs} +2939 -2942
- package/core/built/admin/assets/admin-x-settings/{index-b78b238b.mjs → index-eeeca6f6.mjs} +2 -2
- package/core/built/admin/assets/admin-x-settings/{modals-d557f15c.mjs → modals-8a98634b.mjs} +11206 -16095
- package/core/built/admin/assets/chunk.524.9b3ed6b39dd6c575a36f.js +35 -0
- package/core/built/admin/assets/{chunk.582.57a31e68e4e9afe84109.js → chunk.582.5218d47941a18a44ead8.js} +6 -6
- package/core/built/admin/assets/{chunk.602.a3d38ba0a516decd78ce.js → chunk.874.e1d421507701daac30fb.js} +5226 -6255
- package/core/built/admin/assets/{ghost-9397fa4c9aadec9cff772a6d4db6b1f8.js → ghost-286f9a114755e8c3c7e9c37550f624a9.js} +86 -82
- package/core/built/admin/assets/ghost-c75b9d653495f9cfce528f6e10900b3f.css +1 -0
- package/core/built/admin/assets/ghost-dark-6ea629e177f77314f5d75c0ca97190ab.css +1 -0
- package/core/built/admin/assets/{vendor-b83f61eee071be0ef00075df9ff7782d.js → vendor-88cd9f5cf5eba65221e2d2a636531eaa.js} +19 -17
- package/core/built/admin/index.html +6 -6
- package/core/frontend/helpers/content_api_key.js +19 -0
- package/core/frontend/helpers/get.js +24 -41
- package/core/frontend/helpers/ghost_head.js +3 -3
- package/core/frontend/meta/generate-excerpt.js +1 -2
- package/core/frontend/services/{admin-auth-assets/AdminAuthAssetsService.js → assets-minification/AdminAuthAssets.js} +22 -62
- package/core/frontend/services/assets-minification/AssetsMinificationBase.js +79 -0
- package/core/frontend/services/{card-assets/CardAssetService.js → assets-minification/CardAssets.js} +20 -37
- package/core/frontend/services/assets-minification/CommentCountsAssets.js +34 -0
- package/core/frontend/services/assets-minification/MemberAttributionAssets.js +46 -0
- package/core/frontend/services/assets-minification/index.js +16 -0
- package/core/frontend/services/sitemap/BaseSiteMapGenerator.js +4 -1
- package/core/frontend/web/site.js +5 -4
- package/core/server/data/importer/importers/data/PostsImporter.js +2 -2
- package/core/server/data/migrations/versions/4.0/23-regenerate-posts-html.js +1 -1
- package/core/server/data/migrations/versions/4.9/05-fix-missed-mobiledoc-url-transforms.js +1 -1
- package/core/server/data/migrations/versions/5.0/2022-05-21-00-00-regenerate-posts-html.js +1 -1
- package/core/server/data/schema/schema.js +2 -2
- package/core/server/lib/mobiledoc.js +4 -0
- package/core/server/models/member.js +1 -1
- package/core/server/models/post.js +1 -1
- package/core/server/services/email-service/EmailServiceWrapper.js +1 -1
- package/core/server/services/themes/activate.js +2 -2
- package/core/server/services/themes/index.js +4 -1
- package/core/server/services/themes/validate.js +7 -5
- package/core/server/views/maintenance.html +3 -3
- package/core/server/web/admin/app.js +2 -1
- package/core/shared/config/defaults.json +7 -4
- package/core/shared/config/env/config.testing-browser.json +3 -0
- package/core/shared/config/env/config.testing-mysql.json +3 -0
- package/core/shared/config/env/config.testing.json +3 -0
- package/core/shared/config/helpers.js +4 -1
- package/core/shared/config/utils.js +5 -6
- package/core/shared/prometheus-client.js +36 -0
- package/package.json +156 -153
- package/yarn.lock +433 -264
- package/components/tryghost-adapter-cache-memory-ttl-5.95.0.tgz +0 -0
- package/components/tryghost-adapter-manager-5.95.0.tgz +0 -0
- package/components/tryghost-announcement-bar-settings-5.95.0.tgz +0 -0
- package/components/tryghost-api-version-compatibility-service-5.95.0.tgz +0 -0
- package/components/tryghost-audience-feedback-5.95.0.tgz +0 -0
- package/components/tryghost-bookshelf-repository-5.95.0.tgz +0 -0
- package/components/tryghost-bootstrap-socket-5.95.0.tgz +0 -0
- package/components/tryghost-collections-5.95.0.tgz +0 -0
- package/components/tryghost-constants-5.95.0.tgz +0 -0
- package/components/tryghost-donations-5.95.0.tgz +0 -0
- package/components/tryghost-dynamic-routing-events-5.95.0.tgz +0 -0
- package/components/tryghost-email-addresses-5.95.0.tgz +0 -0
- package/components/tryghost-email-analytics-provider-mailgun-5.95.0.tgz +0 -0
- package/components/tryghost-email-content-generator-5.95.0.tgz +0 -0
- package/components/tryghost-email-events-5.95.0.tgz +0 -0
- package/components/tryghost-email-service-5.95.0.tgz +0 -0
- package/components/tryghost-email-suppression-list-5.95.0.tgz +0 -0
- package/components/tryghost-express-dynamic-redirects-5.95.0.tgz +0 -0
- package/components/tryghost-extract-api-key-5.95.0.tgz +0 -0
- package/components/tryghost-ghost-5.95.0.tgz +0 -0
- package/components/tryghost-html-to-plaintext-5.95.0.tgz +0 -0
- package/components/tryghost-i18n-5.95.0.tgz +0 -0
- package/components/tryghost-in-memory-repository-5.95.0.tgz +0 -0
- package/components/tryghost-link-redirects-5.95.0.tgz +0 -0
- package/components/tryghost-link-replacer-5.95.0.tgz +0 -0
- package/components/tryghost-magic-link-5.95.0.tgz +0 -0
- package/components/tryghost-mail-events-5.95.0.tgz +0 -0
- package/components/tryghost-member-events-5.95.0.tgz +0 -0
- package/components/tryghost-members-csv-5.95.0.tgz +0 -0
- package/components/tryghost-members-importer-5.95.0.tgz +0 -0
- package/components/tryghost-members-offers-5.95.0.tgz +0 -0
- package/components/tryghost-members-payments-5.95.0.tgz +0 -0
- package/components/tryghost-members-ssr-5.95.0.tgz +0 -0
- package/components/tryghost-members-stripe-service-5.95.0.tgz +0 -0
- package/components/tryghost-minifier-5.95.0.tgz +0 -0
- package/components/tryghost-model-to-domain-event-interceptor-5.95.0.tgz +0 -0
- package/components/tryghost-mw-api-version-mismatch-5.95.0.tgz +0 -0
- package/components/tryghost-mw-cache-control-5.95.0.tgz +0 -0
- package/components/tryghost-mw-error-handler-5.95.0.tgz +0 -0
- package/components/tryghost-mw-update-user-last-seen-5.95.0.tgz +0 -0
- package/components/tryghost-mw-vhost-5.95.0.tgz +0 -0
- package/components/tryghost-nql-filter-expansions-5.95.0.tgz +0 -0
- package/components/tryghost-oembed-service-5.95.0.tgz +0 -0
- package/components/tryghost-package-json-5.95.0.tgz +0 -0
- package/components/tryghost-post-events-5.95.0.tgz +0 -0
- package/components/tryghost-posts-service-5.95.0.tgz +0 -0
- package/components/tryghost-recommendations-5.95.0.tgz +0 -0
- package/components/tryghost-referrers-5.95.0.tgz +0 -0
- package/components/tryghost-settings-path-manager-5.95.0.tgz +0 -0
- package/components/tryghost-slack-notifications-5.95.0.tgz +0 -0
- package/components/tryghost-verification-trigger-5.95.0.tgz +0 -0
- package/components/tryghost-version-notifications-data-service-5.95.0.tgz +0 -0
- package/components/tryghost-webmentions-5.95.0.tgz +0 -0
- package/core/built/admin/assets/admin-x-activitypub/modals-d56ac37e.mjs +0 -342
- package/core/built/admin/assets/chunk.524.d49d5b3795688b5f880d.js +0 -35
- package/core/built/admin/assets/ghost-8f07a67edb1191d1cdddd8a296bbdc4d.css +0 -1
- package/core/built/admin/assets/ghost-dark-fe1f347ef1a04509da6bbac199a51d23.css +0 -1
- package/core/frontend/services/admin-auth-assets/index.js +0 -4
- package/core/frontend/services/card-assets/index.js +0 -4
- package/core/frontend/services/comment-counts-assets/CommentCountsAssetsService.js +0 -59
- package/core/frontend/services/comment-counts-assets/index.js +0 -4
- package/core/frontend/services/member-attribution-assets/MemberAttributionAssetsService.js +0 -83
- package/core/frontend/services/member-attribution-assets/index.js +0 -4
- /package/core/built/admin/assets/{chunk.602.a3d38ba0a516decd78ce.js.LICENSE.txt → chunk.874.e1d421507701daac30fb.js.LICENSE.txt} +0 -0
|
@@ -8916,7 +8916,9 @@ e.default={content:'<path d="M23.56 8.73a1.51 1.51 0 00-1.41-1h-6.09a.5.5 0 01-.
|
|
|
8916
8916
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
8917
8917
|
e.default={content:'<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12.71 1.436l3.272 6.482 6.296.624a.787.787 0 01.489 1.343l-5.182 5.136 1.921 6.98a.796.796 0 01-1.125.914l-6.383-3.161-6.375 3.157a.794.794 0 01-1.125-.914l1.92-6.98-5.185-5.136a.787.787 0 01.489-1.343l6.296-.624 3.267-6.478a.801.801 0 011.425 0z"/>',attrs:{fill:"none",viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/stats-outline",["exports"],(function(e){"use strict"
|
|
8918
8918
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
8919
|
-
e.default={content:'<path d="M1.836 3.027c-.209.03-.452.108-.659.213-.55.277-.926.774-1.113 1.473l-.052.195v14.256l.054.204c.212.797.778 1.336 1.647 1.568l.195.052h20.256l.204-.054c.112-.029.314-.108.45-.174.2-.099.285-.16.46-.326.118-.113.253-.262.3-.332.19-.287.356-.708.39-.986.008-.072.024-.125.035-.118.012.007.021-3.057.021-6.995 0-4.646-.008-7.013-.024-7.023-.013-.008-.024-.05-.024-.094 0-.134-.092-.449-.194-.662-.273-.572-.76-.954-1.482-1.16l-.184-.052-10.068-.003c-5.596-.002-10.132.006-10.212.018m.101 1.524c-.15.046-.284.181-.356.36l-.057.141V19.02l.057.116c.07.144.2.241.405.304.154.048.24.048 10.048.048 8.88 0 9.906-.004 10.019-.037a.586.586 0 00.366-.362l.057-.141V4.98l-.057-.116c-.07-.144-.2-.241-.405-.304-.154-.048-.238-.048-10.059-.046-8.65.001-9.918.006-10.018.037M.012 12.024c0 3.861.003 5.44.006 3.51.003-1.93.003-5.09 0-7.02-.003-1.93-.006-.351-.006 3.51m20.07-4.511a.746.746 0 00-.37.219c-.054.057-.987 1.438-2.072 3.068a649.896 649.896 0 01-1.995 2.987c-.014.015-.489-.442-1.251-1.202-1.4-1.396-1.334-1.343-1.685-1.324a.72.72 0 00-.301.066c-.074.037-.48.425-1.294 1.237l-1.187 1.183-1.193-2.2c-.656-1.21-1.23-2.242-1.277-2.295a.749.749 0 00-1.065-.05c-.123.118-3.298 5.398-3.36 5.586a.809.809 0 00.039.533.83.83 0 00.377.368c.113.052.157.059.327.051.236-.01.386-.076.52-.228.048-.055.637-1.016 1.307-2.136.671-1.12 1.232-2.049 1.247-2.065.02-.02.303.482 1.131 2.01.607 1.121 1.142 2.09 1.189 2.152.122.165.311.256.551.267.342.016.274.07 1.734-1.385l1.29-1.286 1.278 1.275c.882.88 1.311 1.292 1.386 1.33.077.039.164.057.304.065.174.01.21.004.336-.053a.964.964 0 00.209-.13c.087-.081 4.61-6.86 4.686-7.023.16-.342-.02-.799-.377-.966a.879.879 0 00-.484-.054" fill="currentColor" fill-rule="evenodd"/>',attrs:{viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/stats",["exports"],(function(e){"use strict"
|
|
8919
|
+
e.default={content:'<path d="M1.836 3.027c-.209.03-.452.108-.659.213-.55.277-.926.774-1.113 1.473l-.052.195v14.256l.054.204c.212.797.778 1.336 1.647 1.568l.195.052h20.256l.204-.054c.112-.029.314-.108.45-.174.2-.099.285-.16.46-.326.118-.113.253-.262.3-.332.19-.287.356-.708.39-.986.008-.072.024-.125.035-.118.012.007.021-3.057.021-6.995 0-4.646-.008-7.013-.024-7.023-.013-.008-.024-.05-.024-.094 0-.134-.092-.449-.194-.662-.273-.572-.76-.954-1.482-1.16l-.184-.052-10.068-.003c-5.596-.002-10.132.006-10.212.018m.101 1.524c-.15.046-.284.181-.356.36l-.057.141V19.02l.057.116c.07.144.2.241.405.304.154.048.24.048 10.048.048 8.88 0 9.906-.004 10.019-.037a.586.586 0 00.366-.362l.057-.141V4.98l-.057-.116c-.07-.144-.2-.241-.405-.304-.154-.048-.238-.048-10.059-.046-8.65.001-9.918.006-10.018.037M.012 12.024c0 3.861.003 5.44.006 3.51.003-1.93.003-5.09 0-7.02-.003-1.93-.006-.351-.006 3.51m20.07-4.511a.746.746 0 00-.37.219c-.054.057-.987 1.438-2.072 3.068a649.896 649.896 0 01-1.995 2.987c-.014.015-.489-.442-1.251-1.202-1.4-1.396-1.334-1.343-1.685-1.324a.72.72 0 00-.301.066c-.074.037-.48.425-1.294 1.237l-1.187 1.183-1.193-2.2c-.656-1.21-1.23-2.242-1.277-2.295a.749.749 0 00-1.065-.05c-.123.118-3.298 5.398-3.36 5.586a.809.809 0 00.039.533.83.83 0 00.377.368c.113.052.157.059.327.051.236-.01.386-.076.52-.228.048-.055.637-1.016 1.307-2.136.671-1.12 1.232-2.049 1.247-2.065.02-.02.303.482 1.131 2.01.607 1.121 1.142 2.09 1.189 2.152.122.165.311.256.551.267.342.016.274.07 1.734-1.385l1.29-1.286 1.278 1.275c.882.88 1.311 1.292 1.386 1.33.077.039.164.057.304.065.174.01.21.004.336-.053a.964.964 0 00.209-.13c.087-.081 4.61-6.86 4.686-7.023.16-.342-.02-.799-.377-.966a.879.879 0 00-.484-.054" fill="currentColor" fill-rule="evenodd"/>',attrs:{viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/stats-placeholder",["exports"],(function(e){"use strict"
|
|
8920
|
+
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
8921
|
+
e.default={content:'<desc>Analytics Board Graph Line Streamline Icon: https://streamlinehq.com</desc><path d="M4.313 7.188h37.374s2.876 0 2.876 2.875v25.874s0 2.876-2.876 2.876H4.313s-2.875 0-2.875-2.876V10.064s0-2.876 2.875-2.876" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path d="M7.188 28.75l6.037-10.063 5.463 10.063 5.75-5.75 5.75 5.75 8.625-12.938" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>',attrs:{viewBox:"-1 -1 48 48"}}})),define("ember-svg-jar/inlined/stats",["exports"],(function(e){"use strict"
|
|
8920
8922
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
8921
8923
|
e.default={content:'<path d="M14 3h-4v18h4V3zM5 14H1v7h4v-7zm18-5h-4v12h4V9z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/>',attrs:{fill:"none",viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/stripe-verified-partner-badge",["exports"],(function(e){"use strict"
|
|
8922
8924
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
@@ -8924,10 +8926,10 @@ e.default={content:'<g fill="none"><rect fill="#FFF" width="174" height="28" rx=
|
|
|
8924
8926
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
8925
8927
|
e.default={content:'<g fill="none" fill-rule="evenodd"><path d="M.5.5h173v119H.5z"/><path d="M141.406 39.442a58.61 58.61 0 013.626 20.359c0 32.453-26.347 58.8-58.8 58.8-32.453 0-58.801-26.347-58.801-58.8 0-5.592.782-11.003 2.244-16.13m13.228-23.605C53.655 8.35 69.092 1 86.232 1A58.52 58.52 0 01111.3 6.604" stroke="#9BAEB8"/><path d="M28.25 67.39c1.17-.677 1.966-1.134 3.137-1.134 4.495 0 8.99 6.742 13.485 6.742.256 0 .512-.022.768-.063m3.392-1.466c3.108-1.989 6.217-5.213 9.325-5.213 4.495 0 8.99 6.742 13.485 6.742 4.496 0 8.99-6.742 13.486-6.742 4.495 0 8.99 6.742 13.485 6.742 4.495 0 8.99-6.742 13.485-6.742 4.495 0 8.99 6.742 13.485 6.742 4.496 0 8.99-6.742 13.485-6.742 1.747 0 3.216 1.018 4.963 2.263M29.134 73.677c.75-.314 1.502-.502 2.253-.502 4.495 0 8.99 6.742 13.485 6.742.643 0 1.287-.138 1.93-.375m3.328-1.9c2.742-1.957 5.485-4.467 8.227-4.467 4.495 0 8.99 6.742 13.485 6.742 4.496 0 8.99-6.742 13.486-6.742 4.495 0 8.99 6.742 13.485 6.742 4.495 0 8.99-6.742 13.485-6.742 4.495 0 8.99 6.742 13.485 6.742 4.496 0 8.99-6.742 13.485-6.742 1.292 0 2.584.557 3.876 1.35M31.387 80.934c4.495 0 8.99 6.743 13.485 6.743 1.088 0 2.176-.395 3.264-.994m3.236-2.196c2.329-1.744 4.657-3.553 6.985-3.553 4.495 0 8.99 6.743 13.485 6.743 4.496 0 8.99-6.743 13.486-6.743 4.495 0 8.99 6.743 13.485 6.743 4.495 0 8.99-6.743 13.485-6.743 4.495 0 8.99 6.743 13.485 6.743 4.496 0 8.99-6.743 13.485-6.743.599 0 1.197.12 1.796.327" opacity=".6" stroke="#9BAEB8" stroke-linecap="round" stroke-linejoin="round"/><path d="M37.5 91.958H49m3.648 0h82.802" stroke="#9BAEB8" stroke-linecap="round" stroke-linejoin="round"/><path d="M62.934 98.943h2.915m-2.915 12.633h2.915m-9.658-5.891h2.915m18.072-6.643h2.915m-2.915 12.633h2.915m-9.658-5.891h2.915m18.072-6.644h2.914m-2.914 12.634h2.914m-9.657-5.891h2.915m18.071-6.643h2.915m-2.915 12.633h2.915m-9.657-5.891h2.915m18.072-6.644h2.915m-9.659 6.742h2.916" opacity=".6" stroke="#9BAEB8" stroke-linecap="round" stroke-linejoin="round"/><path d="M124.204 2.259c12.425 0 22.513 10.088 22.513 22.513 0 12.426-10.088 22.514-22.513 22.514-12.426 0-22.514-10.088-22.514-22.514 0-12.425 10.088-22.513 22.514-22.513zM40.658 45.534l9.62 52.937 3.57.033-9.607-53.532" stroke="#9BAEB8" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M1 54.092s4.315-6.154 9.489-7.083c5.173-.929 11.36 3.341 11.36 3.341s4.234-6.14 9.488-7.083c5.254-.942 11.36 3.341 11.36 3.341s4.276-6.147 9.488-7.082c5.213-.936 11.36 3.34 11.36 3.34s4.885-6.256 9.488-7.082c4.604-.826 11.36 3.341 11.36 3.341S65.225 15.665 38.02 20.548C10.813 25.431 1 54.092 1 54.092z" stroke="#9BAEB8" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M21.138 49.682s.187-10.218 3.941-17.137c3.754-6.918 8.836-8.89 12.421-11.407" stroke="#9BAEB8" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M63.025 42.198s-3.728-9.515-9.654-14.696c-5.926-5.182-14.612-6.364-15.871-6.364m1.007 0l4.027 24.802" stroke="#9BAEB8" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></g>',attrs:{viewBox:"0 0 174 120"}}})),define("ember-svg-jar/inlined/sun",["exports"],(function(e){"use strict"
|
|
8926
8928
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
8927
|
-
e.default={content:'<defs><style>.sun_svg__a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px}</style></defs><circle class="sun_svg__a" cx="12" cy="12" r="4.5"/><path class="sun_svg__a" d="M12 .75V4.5m0 15v3.75M23.25 12H19.5m-15 0H.75m19.5-8.25l-3 3m-10.5 10.5l-3 3m16.5 0l-3-3M6.75 6.75l-3-3"/>',attrs:{viewBox:"0 0 24 24"}}}))
|
|
8929
|
+
e.default={content:'<defs><style>.sun_svg__a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px}</style></defs><circle class="sun_svg__a" cx="12" cy="12" r="4.5"/><path class="sun_svg__a" d="M12 .75V4.5m0 15v3.75M23.25 12H19.5m-15 0H.75m19.5-8.25l-3 3m-10.5 10.5l-3 3m16.5 0l-3-3M6.75 6.75l-3-3"/>',attrs:{viewBox:"0 0 24 24"}}}))
|
|
8930
|
+
define("ember-svg-jar/inlined/suppression-notice-bounced",["exports"],(function(e){"use strict"
|
|
8928
8931
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
8929
|
-
e.default={content:'<path d="M37.2 37.127l12.237 12.238M37.2 49.362l12.237-12.237" stroke="red" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round"/><path d="M31.316 53.983l-7.99-7.956-8.58 4.433.334-12.717m0 0L5.033 27.697a4.033 4.033 0 01-1.1-3.667 4.106 4.106 0 012.713-3.15L45.98 7.757a4.106 4.106 0 015.28 5.276L45 30m-29.92 7.743l35.006-29.18" stroke="#CAD1D8" stroke-width="2.8" stroke-linecap="round" stroke-linejoin="round"/>',attrs:{fill:"none",viewBox:"0 0 60 60"}}}))
|
|
8930
|
-
define("ember-svg-jar/inlined/suppression-notice-flagged",["exports"],(function(e){"use strict"
|
|
8932
|
+
e.default={content:'<path d="M37.2 37.127l12.237 12.238M37.2 49.362l12.237-12.237" stroke="red" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round"/><path d="M31.316 53.983l-7.99-7.956-8.58 4.433.334-12.717m0 0L5.033 27.697a4.033 4.033 0 01-1.1-3.667 4.106 4.106 0 012.713-3.15L45.98 7.757a4.106 4.106 0 015.28 5.276L45 30m-29.92 7.743l35.006-29.18" stroke="#CAD1D8" stroke-width="2.8" stroke-linecap="round" stroke-linejoin="round"/>',attrs:{fill:"none",viewBox:"0 0 60 60"}}})),define("ember-svg-jar/inlined/suppression-notice-flagged",["exports"],(function(e){"use strict"
|
|
8931
8933
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
8932
8934
|
e.default={content:'<path d="M31.316 53.983l-7.99-7.956-8.58 4.433.334-12.717m0 0L5.033 27.697a4.033 4.033 0 01-1.1-3.667 4.106 4.106 0 012.713-3.15L45.98 7.757a4.106 4.106 0 015.28 5.276L45 30m-29.92 7.743l35.006-29.18" stroke="#CAD1D8" stroke-width="2.8" stroke-linecap="round" stroke-linejoin="round"/><path d="M41.474 37.2v7.65" stroke="#F50B23" stroke-width="2.8" stroke-linecap="round" stroke-linejoin="round"/><circle cx="41.399" cy="51.1" r="1.5" fill="#F50B23"/>',attrs:{fill:"none",viewBox:"0 0 60 60"}}})),define("ember-svg-jar/inlined/sync",["exports"],(function(e){"use strict"
|
|
8933
8935
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
@@ -8985,7 +8987,8 @@ e.default={content:'<path d="M12 20.251c-.62 0-1.125-.505-1.125-1.125s.505-1.125
|
|
|
8985
8987
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
8986
8988
|
e.default={content:'<desc>Pencil Write Streamline Icon: https://streamlinehq.com</desc><path d="M13.045 14.136l-3.712.531.53-3.713 9.546-9.546a2.25 2.25 0 013.182 3.182zM18.348 2.469l3.182 3.182" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/><path d="M18.75 14.25v7.5a1.5 1.5 0 01-1.5 1.5h-15a1.5 1.5 0 01-1.5-1.5v-15a1.5 1.5 0 011.5-1.5h7.5" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/>',attrs:{viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/x-logo",["exports"],(function(e){"use strict"
|
|
8987
8989
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
8988
|
-
e.default={content:'<path stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M16.769 21.5L2.5 2.5h4.731l14.269 19h-4.731zm4.06-19l-7.522 8.093M3.171 21.5l7.516-8.087"/>',attrs:{fill:"none",viewBox:"0 0 24 24"}}}))
|
|
8990
|
+
e.default={content:'<path stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M16.769 21.5L2.5 2.5h4.731l14.269 19h-4.731zm4.06-19l-7.522 8.093M3.171 21.5l7.516-8.087"/>',attrs:{fill:"none",viewBox:"0 0 24 24"}}}))
|
|
8991
|
+
define("ember-svg-jar/utils/make-svg",["exports"],(function(e){"use strict"
|
|
8989
8992
|
function t(){return([3e7]+-1e3+-4e3+-2e3+-1e11).replace(/[0-3]/g,(e=>(4*e^16*Math.random()>>(2&e)).toString(16)))}Object.defineProperty(e,"__esModule",{value:!0}),e.createAccessibilityElements=a,e.createAriaLabel=l,e.default=function(e,t={},r){if(!e)return void console.warn("ember-svg-jar: asset name should not be undefined or null")
|
|
8990
8993
|
t=s(t=o(t))
|
|
8991
8994
|
let n=0===e.lastIndexOf("#",0)?c(e,t):d(e,r,t)
|
|
@@ -8998,8 +9001,7 @@ return t||n?r.reduce(((t,r)=>e[r]?t.concat(`<${r} id="${e[r].id}">${e[r].text}</
|
|
|
8998
9001
|
return t||n?`aria-labelledby="${r.filter((t=>e[t])).map((t=>e[t].id)).join(" ")}"`:""}function u(e){return Object.keys(e).filter((e=>!r.includes(e))).map((t=>!Ember.isNone(e[t])&&`${t}="${e[t]}"`)).filter((e=>e)).join(" ")}function c(e,t={}){return`<svg ${u(t)}${l(t)}><use xlink:href="${e}" />${a(t)}</svg>`}function d(e,t,r={}){let n=t(e)
|
|
8999
9002
|
if(!n)return void console.warn(`ember-svg-jar: Missing inline SVG for ${e}`)
|
|
9000
9003
|
let i=n.attrs?Object.assign({},n.attrs,r):r,{size:o}=r
|
|
9001
|
-
return o&&(i.width=parseFloat(i.width)*o||i.width,i.height=parseFloat(i.height)*o||i.height,delete i.size),`<svg ${u(i)}${l(r)}>${a(r)}${n.content}</svg>`}}))
|
|
9002
|
-
define("ember-test-waiters/index",["exports","@ember/test-waiters"],(function(e,t){"use strict"
|
|
9004
|
+
return o&&(i.width=parseFloat(i.width)*o||i.width,i.height=parseFloat(i.height)*o||i.height,delete i.size),`<svg ${u(i)}${l(r)}>${a(r)}${n.content}</svg>`}})),define("ember-test-waiters/index",["exports","@ember/test-waiters"],(function(e,t){"use strict"
|
|
9003
9005
|
Object.defineProperty(e,"__esModule",{value:!0}),Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(r in e&&e[r]===t[r]||Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[r]}}))}))})),define("ember-text-measurer/services/text-measurer",["exports"],(function(e){"use strict"
|
|
9004
9006
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
9005
9007
|
e.default=Ember.Service.extend({init(){this._super(...arguments),this.canvas=document.createElement("canvas"),this.ctx=this.canvas.getContext("2d")},width(e,t=null){return t&&(this.ctx.font=t),this.ctx.measureText(e).width},lines(e,t,r=null){r&&(this.ctx.font=r)
|
|
@@ -9141,7 +9143,8 @@ Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
|
9141
9143
|
let r=Ember.Component.extend({layout:t.default,tagName:"",positionalParams:["value"],forwardMatchContext:Ember.computed("matchContext",(function(){let e=this.matchContext
|
|
9142
9144
|
return e||(e={}),e.helperName||(e.helperName="liquid-bind"),e}))})
|
|
9143
9145
|
r.reopenClass({positionalParams:["value"]})
|
|
9144
|
-
e.default=r}))
|
|
9146
|
+
e.default=r}))
|
|
9147
|
+
define("liquid-fire/components/liquid-child",["exports"],(function(e){"use strict"
|
|
9145
9148
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
9146
9149
|
e.default=Ember.Component.extend({classNames:["liquid-child"],init(){this._super(...arguments),this._waitingFor=[]},didInsertElement(){this._super(...arguments),this.element&&(this.element.style.visibility="hidden"),this._waitForAll().then((()=>{if(!this.isDestroying){this._waitingFor=null
|
|
9147
9150
|
const e=this.liquidChildDidRender
|
|
@@ -9149,8 +9152,7 @@ const e=this.liquidChildDidRender
|
|
|
9149
9152
|
this._waitingFor.push(e)
|
|
9150
9153
|
let t=this.nearestWithProperty("_isLiquidChild")
|
|
9151
9154
|
t&&t._waitForMe(e)},_waitForAll(){const e=this._waitingFor
|
|
9152
|
-
return this._waitingFor=[],Ember.RSVP.Promise.all(e).then((()=>{if(this._waitingFor.length>0)return this._waitForAll()}))}})}))
|
|
9153
|
-
define("liquid-fire/components/liquid-container",["exports","liquid-fire/mixins/growable","liquid-fire/components/liquid-measured","liquid-fire/templates/components/liquid-container","jquery"],(function(e,t,r,n,i){"use strict"
|
|
9155
|
+
return this._waitingFor=[],Ember.RSVP.Promise.all(e).then((()=>{if(this._waitingFor.length>0)return this._waitForAll()}))}})})),define("liquid-fire/components/liquid-container",["exports","liquid-fire/mixins/growable","liquid-fire/components/liquid-measured","liquid-fire/templates/components/liquid-container","jquery"],(function(e,t,r,n,i){"use strict"
|
|
9154
9156
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
9155
9157
|
e.default=Ember.Component.extend(t.default,{layout:n.default,classNames:["liquid-container"],lockSize(e,t){e.outerWidth(t.width),e.outerHeight(t.height)},unlockSize(){let e=()=>{this.updateAnimatingClass(!1),this.element&&(this.element.style.width="",this.element.style.height="")}
|
|
9156
9158
|
this._scaling?this._scaling.then(e):e()},updateAnimatingClass(e){this.isDestroyed||(e?this.element.classList.add("liquid-animating"):this.element.classList.remove("liquid-animating"))},didInsertElement(){this._super(...arguments),this._wasInserted=!0},actions:{willTransition(e){if(!this._wasInserted)return
|
|
@@ -9328,10 +9330,10 @@ e.default=Ember.HTMLBars.template({id:"1SjLDrzQ",block:'{"symbols":["&default"],
|
|
|
9328
9330
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
9329
9331
|
e.default=Ember.HTMLBars.template({id:"dS0w+JQh",block:'{"symbols":["container","version","version","&default"],"statements":[[6,[37,0],[[32,0,["containerless"]]],null,[["default","else"],[{"statements":[[6,[37,1],null,[["value","use","rules","matchContext","versionEquality","renderWhenFalse","class"],[[32,0,["value"]],[32,0,["use"]],[32,0,["rules"]],[32,0,["forwardMatchContext"]],[32,0,["versionEquality"]],true,[32,0,["class"]]]],[["default"],[{"statements":[[6,[37,0],[[27,[32,4]]],null,[["default","else"],[{"statements":[[18,4,[[32,3]]]],"parameters":[]},{"statements":[[1,[32,3]]],"parameters":[]}]]]],"parameters":[3]}]]]],"parameters":[]},{"statements":[[6,[37,2],null,[["id","class","growDuration","growPixelsPerSecond","growEasing","shrinkDelay","growDelay","enableGrowth"],[[32,0,["containerId"]],[32,0,["class"]],[32,0,["growDuration"]],[32,0,["growPixelsPerSecond"]],[32,0,["growEasing"]],[32,0,["shrinkDelay"]],[32,0,["growDelay"]],[32,0,["enableGrowth"]]]],[["default"],[{"statements":[[6,[37,1],null,[["value","notify","use","rules","matchContext","versionEquality","renderWhenFalse"],[[32,0,["value"]],[32,1],[32,0,["use"]],[32,0,["rules"]],[32,0,["forwardMatchContext"]],[32,0,["versionEquality"]],true]],[["default"],[{"statements":[[6,[37,0],[[27,[32,4]]],null,[["default","else"],[{"statements":[[18,4,[[32,2]]]],"parameters":[]},{"statements":[[1,[32,2]]],"parameters":[]}]]]],"parameters":[2]}]]]],"parameters":[1]}]]]],"parameters":[]}]]]],"hasEval":false,"upvars":["if","liquid-versions","liquid-container"]}',moduleName:"liquid-fire/templates/components/liquid-bind.hbs"})})),define("liquid-fire/templates/components/liquid-container",["exports"],(function(e){"use strict"
|
|
9330
9332
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
9331
|
-
e.default=Ember.HTMLBars.template({id:"CXFd+X02",block:'{"symbols":["&default"],"statements":[[18,1,[[32,0]]]],"hasEval":false,"upvars":[]}',moduleName:"liquid-fire/templates/components/liquid-container.hbs"})}))
|
|
9333
|
+
e.default=Ember.HTMLBars.template({id:"CXFd+X02",block:'{"symbols":["&default"],"statements":[[18,1,[[32,0]]]],"hasEval":false,"upvars":[]}',moduleName:"liquid-fire/templates/components/liquid-container.hbs"})}))
|
|
9334
|
+
define("liquid-fire/templates/components/liquid-if",["exports"],(function(e){"use strict"
|
|
9332
9335
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
9333
|
-
e.default=Ember.HTMLBars.template({id:"HOnDajqQ",block:'{"symbols":["container","valueVersion","valueVersion","&else","&default"],"statements":[[6,[37,0],[[32,0,["containerless"]]],null,[["default","else"],[{"statements":[[2,"\\n "],[8,"liquid-versions",[],[["@value","@matchContext","@use","@rules","@renderWhenFalse","@class"],[[30,[36,0],[[32,0,["inverted"]],[30,[36,0],[[32,0,["predicate"]],false,true],null],[30,[36,0],[[32,0,["predicate"]],true,false],null]],null],[30,[36,1],null,[["helperName"],[[32,0,["helperName"]]]]],[32,0,["use"]],[32,0,["rules"]],[27,[32,4]],[32,0,["class"]]]],[["default"],[{"statements":[[2,"\\n"],[6,[37,0],[[32,3]],null,[["default","else"],[{"statements":[[2," "],[18,5,null],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[18,4,null],[2,"\\n"]],"parameters":[]}]]],[2," "]],"parameters":[3]}]]],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[8,"liquid-container",[],[["@id","@class","@growDuration","@growPixelsPerSecond","@growEasing","@shrinkDelay","@growDelay","@enableGrowth"],[[32,0,["containerId"]],[32,0,["class"]],[32,0,["growDuration"]],[32,0,["growPixelsPerSecond"]],[32,0,["growEasing"]],[32,0,["shrinkDelay"]],[32,0,["growDelay"]],[32,0,["enableGrowth"]]]],[["default"],[{"statements":[[2,"\\n "],[8,"liquid-versions",[],[["@value","@notify","@matchContext","@use","@rules","@renderWhenFalse"],[[30,[36,0],[[32,0,["inverted"]],[30,[36,0],[[32,0,["predicate"]],false,true],null],[30,[36,0],[[32,0,["predicate"]],true,false],null]],null],[32,1],[30,[36,1],null,[["helperName"],[[32,0,["helperName"]]]]],[32,0,["use"]],[32,0,["rules"]],[27,[32,4]]]],[["default"],[{"statements":[[2,"\\n"],[6,[37,0],[[32,2]],null,[["default","else"],[{"statements":[[2," "],[18,5,null],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[18,4,null],[2,"\\n"]],"parameters":[]}]]],[2," "]],"parameters":[2]}]]],[2,"\\n "]],"parameters":[1]}]]],[2,"\\n"]],"parameters":[]}]]]],"hasEval":false,"upvars":["if","hash"]}',moduleName:"liquid-fire/templates/components/liquid-if.hbs"})}))
|
|
9334
|
-
define("liquid-fire/templates/components/liquid-measured",["exports"],(function(e){"use strict"
|
|
9336
|
+
e.default=Ember.HTMLBars.template({id:"HOnDajqQ",block:'{"symbols":["container","valueVersion","valueVersion","&else","&default"],"statements":[[6,[37,0],[[32,0,["containerless"]]],null,[["default","else"],[{"statements":[[2,"\\n "],[8,"liquid-versions",[],[["@value","@matchContext","@use","@rules","@renderWhenFalse","@class"],[[30,[36,0],[[32,0,["inverted"]],[30,[36,0],[[32,0,["predicate"]],false,true],null],[30,[36,0],[[32,0,["predicate"]],true,false],null]],null],[30,[36,1],null,[["helperName"],[[32,0,["helperName"]]]]],[32,0,["use"]],[32,0,["rules"]],[27,[32,4]],[32,0,["class"]]]],[["default"],[{"statements":[[2,"\\n"],[6,[37,0],[[32,3]],null,[["default","else"],[{"statements":[[2," "],[18,5,null],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[18,4,null],[2,"\\n"]],"parameters":[]}]]],[2," "]],"parameters":[3]}]]],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[8,"liquid-container",[],[["@id","@class","@growDuration","@growPixelsPerSecond","@growEasing","@shrinkDelay","@growDelay","@enableGrowth"],[[32,0,["containerId"]],[32,0,["class"]],[32,0,["growDuration"]],[32,0,["growPixelsPerSecond"]],[32,0,["growEasing"]],[32,0,["shrinkDelay"]],[32,0,["growDelay"]],[32,0,["enableGrowth"]]]],[["default"],[{"statements":[[2,"\\n "],[8,"liquid-versions",[],[["@value","@notify","@matchContext","@use","@rules","@renderWhenFalse"],[[30,[36,0],[[32,0,["inverted"]],[30,[36,0],[[32,0,["predicate"]],false,true],null],[30,[36,0],[[32,0,["predicate"]],true,false],null]],null],[32,1],[30,[36,1],null,[["helperName"],[[32,0,["helperName"]]]]],[32,0,["use"]],[32,0,["rules"]],[27,[32,4]]]],[["default"],[{"statements":[[2,"\\n"],[6,[37,0],[[32,2]],null,[["default","else"],[{"statements":[[2," "],[18,5,null],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[18,4,null],[2,"\\n"]],"parameters":[]}]]],[2," "]],"parameters":[2]}]]],[2,"\\n "]],"parameters":[1]}]]],[2,"\\n"]],"parameters":[]}]]]],"hasEval":false,"upvars":["if","hash"]}',moduleName:"liquid-fire/templates/components/liquid-if.hbs"})})),define("liquid-fire/templates/components/liquid-measured",["exports"],(function(e){"use strict"
|
|
9335
9337
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
9336
9338
|
e.default=Ember.HTMLBars.template({id:"ZXmeP7J9",block:'{"symbols":["&default"],"statements":[[18,1,null],[2,"\\n"]],"hasEval":false,"upvars":[]}',moduleName:"liquid-fire/templates/components/liquid-measured.hbs"})})),define("liquid-fire/templates/components/liquid-outlet",["exports"],(function(e){"use strict"
|
|
9337
9339
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
@@ -9481,10 +9483,10 @@ return r.set("extraClassesString","default-liquid-destination"),e.rootElement?r.
|
|
|
9481
9483
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
9482
9484
|
e.default=Ember.HTMLBars.template({id:"Qr2N4/XN",block:'{"symbols":["@replaceNodes","@notify","@nodes","&default"],"statements":[[2,"\\n"],[11,"div"],[4,[38,0],[[32,0,["_didInsert"]],[32,3],[32,2],[32,1]],null],[4,[38,1],[[32,0,["_didUpdate"]],[32,3],[32,2],[32,1]],null],[12],[2,"\\n "],[18,4,null],[2,"\\n"],[13]],"hasEval":false,"upvars":["did-insert","did-update"]}',moduleName:"liquid-wormhole/templates/components/liquid-append.hbs"})})),define("liquid-wormhole/templates/components/liquid-destination",["exports"],(function(e){"use strict"
|
|
9483
9485
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
9484
|
-
e.default=Ember.HTMLBars.template({id:"P8POU6zX",block:'{"symbols":["stack","item"],"statements":[[10,"div"],[15,0,[31,["liquid-destination ",[32,0,["extraClassesString"]]," ",[30,[36,0],[[32,0,["hasWormholes"]],"has-wormholes"],null]]]],[12],[2,"\\n"],[6,[37,2],[[30,[36,1],[[30,[36,1],[[32,0,["stacks"]]],null]],null]],null,[["default"],[{"statements":[[2," "],[10,"div"],[14,0,"liquid-destination-stack"],[12],[2,"\\n "],[8,"liquid-versions",[],[["@value","@notify","@renderWhenFalse","@name","@matchContext","@stackName"],[[32,1,["lastObject"]],[32,0],true,"liquid-wormhole",[32,0,["matchContext"]],[32,1,["name"]]]],[["default"],[{"statements":[[2,"\\n "],[8,"liquid-append",[],[["@nodes","@replaceNodes","@notify","@click"],[[32,2,["nodes"]],[32,2,["_replaceNodes"]],[32,2,["wormhole"]],[32,2,["wormhole","click"]]]],null],[2,"\\n "]],"parameters":[2]}]]],[2,"\\n "],[13],[2,"\\n"]],"parameters":[1]}]]],[13]],"hasEval":false,"upvars":["if","-track-array","each"]}',moduleName:"liquid-wormhole/templates/components/liquid-destination.hbs"})}))
|
|
9486
|
+
e.default=Ember.HTMLBars.template({id:"P8POU6zX",block:'{"symbols":["stack","item"],"statements":[[10,"div"],[15,0,[31,["liquid-destination ",[32,0,["extraClassesString"]]," ",[30,[36,0],[[32,0,["hasWormholes"]],"has-wormholes"],null]]]],[12],[2,"\\n"],[6,[37,2],[[30,[36,1],[[30,[36,1],[[32,0,["stacks"]]],null]],null]],null,[["default"],[{"statements":[[2," "],[10,"div"],[14,0,"liquid-destination-stack"],[12],[2,"\\n "],[8,"liquid-versions",[],[["@value","@notify","@renderWhenFalse","@name","@matchContext","@stackName"],[[32,1,["lastObject"]],[32,0],true,"liquid-wormhole",[32,0,["matchContext"]],[32,1,["name"]]]],[["default"],[{"statements":[[2,"\\n "],[8,"liquid-append",[],[["@nodes","@replaceNodes","@notify","@click"],[[32,2,["nodes"]],[32,2,["_replaceNodes"]],[32,2,["wormhole"]],[32,2,["wormhole","click"]]]],null],[2,"\\n "]],"parameters":[2]}]]],[2,"\\n "],[13],[2,"\\n"]],"parameters":[1]}]]],[13]],"hasEval":false,"upvars":["if","-track-array","each"]}',moduleName:"liquid-wormhole/templates/components/liquid-destination.hbs"})}))
|
|
9487
|
+
define("liquid-wormhole/templates/components/liquid-wormhole",["exports"],(function(e){"use strict"
|
|
9485
9488
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
|
9486
|
-
e.default=Ember.HTMLBars.template({id:"FcVE2XL/",block:'{"symbols":["details","&default"],"statements":[[6,[37,0],[[32,0,["hasSend"]]],null,[["default","else"],[{"statements":[[6,[37,0],[[27,[32,2]]],null,[["default","else"],[{"statements":[[2," "],[8,[32,0,["sendComponent"]],[[16,1,[32,0,["wormholeId"]]],[16,0,[31,[[32,0,["wormholeClass"]]," liquid-wormhole-element"]]]],[[],[]],[["default"],[{"statements":[[2,"\\n "],[18,2,[[32,1]]],[2,"\\n "]],"parameters":[1]}]]],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[8,[32,0,["sendComponent"]],[[16,1,[32,0,["wormholeId"]]],[16,0,[31,[[32,0,["wormholeClass"]]," liquid-wormhole-element"]]]],[[],[]],null],[2,"\\n"]],"parameters":[]}]]]],"parameters":[]},{"statements":[[2," "],[10,"div"],[15,1,[32,0,["wormholeId"]]],[15,0,[31,[[32,0,["wormholeClass"]]," liquid-wormhole-element"]]],[12],[2,"\\n "],[18,2,null],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]]],"hasEval":false,"upvars":["if"]}',moduleName:"liquid-wormhole/templates/components/liquid-wormhole.hbs"})}))
|
|
9487
|
-
define("liquid-wormhole/transitions/wormhole",["exports"],(function(e){"use strict"
|
|
9489
|
+
e.default=Ember.HTMLBars.template({id:"FcVE2XL/",block:'{"symbols":["details","&default"],"statements":[[6,[37,0],[[32,0,["hasSend"]]],null,[["default","else"],[{"statements":[[6,[37,0],[[27,[32,2]]],null,[["default","else"],[{"statements":[[2," "],[8,[32,0,["sendComponent"]],[[16,1,[32,0,["wormholeId"]]],[16,0,[31,[[32,0,["wormholeClass"]]," liquid-wormhole-element"]]]],[[],[]],[["default"],[{"statements":[[2,"\\n "],[18,2,[[32,1]]],[2,"\\n "]],"parameters":[1]}]]],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[8,[32,0,["sendComponent"]],[[16,1,[32,0,["wormholeId"]]],[16,0,[31,[[32,0,["wormholeClass"]]," liquid-wormhole-element"]]]],[[],[]],null],[2,"\\n"]],"parameters":[]}]]]],"parameters":[]},{"statements":[[2," "],[10,"div"],[15,1,[32,0,["wormholeId"]]],[15,0,[31,[[32,0,["wormholeClass"]]," liquid-wormhole-element"]]],[12],[2,"\\n "],[18,2,null],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]]],"hasEval":false,"upvars":["if"]}',moduleName:"liquid-wormhole/templates/components/liquid-wormhole.hbs"})})),define("liquid-wormhole/transitions/wormhole",["exports"],(function(e){"use strict"
|
|
9488
9490
|
Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(e){let r,n,{use:i}=e
|
|
9489
9491
|
if(this.oldElement&&(r=this.oldElement.find(".liquid-wormhole-element:last-child"),this.oldElement=null,r.length>0)){const e=r.clone()
|
|
9490
9492
|
e.addClass("liquid-wormhole-temp-element"),t(e),r.css({visibility:"hidden"}),r.find(".liquid-child").css({visibility:"hidden"})
|
|
@@ -9520,4 +9522,4 @@ e.default=class{constructor(e){if(this._data=new t.default,e)for(let t=0;t<e.len
|
|
|
9520
9522
|
return this}get(e){let t=this._data[e]
|
|
9521
9523
|
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
9524
|
|
|
9523
|
-
//# sourceMappingURL=vendor-
|
|
9525
|
+
//# sourceMappingURL=vendor-7422d2d850a0590d48b9a941a0c791af.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.96%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%22eb50ad82db%22%2C%22adminXSettingsFilename%22%3A%22admin-x-settings.js%22%2C%22adminXSettingsHash%22%3A%223e886898df%22%2C%22adminXActivitypubFilename%22%3A%22admin-x-activitypub.js%22%2C%22adminXActivitypubHash%22%3A%2268888cb677%22%2C%22adminXActivitypubCustomUrl%22%3A%22https%3A%2F%2Fcdn.jsdelivr.net%2Fnpm%2F%40tryghost%2Fadmin-x-activitypub%400%2Fdist%2Fadmin-x-activitypub.js%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-c75b9d653495f9cfce528f6e10900b3f.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-88cd9f5cf5eba65221e2d2a636531eaa.js"></script>
|
|
60
|
+
<script src="assets/chunk.874.e1d421507701daac30fb.js"></script>
|
|
61
|
+
<script src="assets/chunk.524.9b3ed6b39dd6c575a36f.js"></script>
|
|
62
|
+
<script src="assets/ghost-286f9a114755e8c3c7e9c37550f624a9.js"></script>
|
|
63
63
|
</body>
|
|
64
64
|
</html>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const {SafeString} = require('../services/handlebars');
|
|
2
|
+
const logging = require('@tryghost/logging');
|
|
3
|
+
const {getFrontendKey} = require('../services/proxy');
|
|
4
|
+
|
|
5
|
+
module.exports = async function content_api_key() { // eslint-disable-line camelcase
|
|
6
|
+
try {
|
|
7
|
+
const frontendKey = await getFrontendKey();
|
|
8
|
+
|
|
9
|
+
if (!frontendKey) {
|
|
10
|
+
logging.warn('contentkey: No content key found');
|
|
11
|
+
return '';
|
|
12
|
+
}
|
|
13
|
+
return new SafeString(frontendKey);
|
|
14
|
+
} catch (error) {
|
|
15
|
+
logging.error(error);
|
|
16
|
+
return '';
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
module.exports.async = true;
|
|
@@ -7,7 +7,6 @@ const {hbs, SafeString} = require('../services/handlebars');
|
|
|
7
7
|
const logging = require('@tryghost/logging');
|
|
8
8
|
const errors = require('@tryghost/errors');
|
|
9
9
|
const tpl = require('@tryghost/tpl');
|
|
10
|
-
const Sentry = require('@sentry/node');
|
|
11
10
|
|
|
12
11
|
const _ = require('lodash');
|
|
13
12
|
const jsonpath = require('jsonpath');
|
|
@@ -292,53 +291,37 @@ module.exports = async function get(resource, options) {
|
|
|
292
291
|
|
|
293
292
|
// Parse the options we're going to pass to the API
|
|
294
293
|
apiOptions = parseOptions(ghostGlobals, this, apiOptions);
|
|
295
|
-
let apiOptionsString = Object.entries(apiOptions)
|
|
296
|
-
.map(([key, value]) => ` ${key}="${value}"`)
|
|
297
|
-
.join('');
|
|
298
294
|
apiOptions.context = {member: data.member};
|
|
299
295
|
try {
|
|
300
|
-
const
|
|
301
|
-
const result = await Sentry.startSpan({
|
|
302
|
-
op: 'frontend.helpers.get',
|
|
303
|
-
name: spanName,
|
|
304
|
-
tags: {
|
|
305
|
-
resource,
|
|
306
|
-
...apiOptions,
|
|
307
|
-
context: data.member ? 'member' : 'public'
|
|
308
|
-
}
|
|
309
|
-
}, async (span) => {
|
|
310
|
-
const response = await makeAPICall(resource, controllerName, action, apiOptions);
|
|
311
|
-
|
|
312
|
-
// prepare data properties for use with handlebars
|
|
313
|
-
if (response[resource] && response[resource].length) {
|
|
314
|
-
response[resource].forEach(prepareContextResource);
|
|
315
|
-
}
|
|
296
|
+
const response = await makeAPICall(resource, controllerName, action, apiOptions);
|
|
316
297
|
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
298
|
+
// prepare data properties for use with handlebars
|
|
299
|
+
if (response[resource] && response[resource].length) {
|
|
300
|
+
response[resource].forEach(prepareContextResource);
|
|
301
|
+
}
|
|
320
302
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
const blockParams = [response[resource]];
|
|
324
|
-
if (response.meta && response.meta.pagination) {
|
|
325
|
-
response.pagination = response.meta.pagination;
|
|
326
|
-
blockParams.push(response.meta.pagination);
|
|
327
|
-
}
|
|
303
|
+
// used for logging details of slow requests
|
|
304
|
+
returnedRowsCount = response[resource] && response[resource].length;
|
|
328
305
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
306
|
+
// block params allows the theme developer to name the data using something like
|
|
307
|
+
// `{{#get "posts" as |result pageInfo|}}`
|
|
308
|
+
const blockParams = [response[resource]];
|
|
309
|
+
if (response.meta && response.meta.pagination) {
|
|
310
|
+
response.pagination = response.meta.pagination;
|
|
311
|
+
blockParams.push(response.meta.pagination);
|
|
312
|
+
}
|
|
334
313
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
}
|
|
314
|
+
// Call the main template function
|
|
315
|
+
const rendered = options.fn(response, {
|
|
316
|
+
data: data,
|
|
317
|
+
blockParams: blockParams
|
|
340
318
|
});
|
|
341
|
-
|
|
319
|
+
|
|
320
|
+
if (response['@@ABORTED_GET_HELPER@@']) {
|
|
321
|
+
return new SafeString(`<span data-aborted-get-helper>Could not load content</span>` + rendered);
|
|
322
|
+
} else {
|
|
323
|
+
return rendered;
|
|
324
|
+
}
|
|
342
325
|
} catch (error) {
|
|
343
326
|
logging.error(error);
|
|
344
327
|
data.error = error.message;
|
|
@@ -7,7 +7,7 @@ const {escapeExpression, SafeString} = require('../services/handlebars');
|
|
|
7
7
|
|
|
8
8
|
// BAD REQUIRE
|
|
9
9
|
// @TODO fix this require
|
|
10
|
-
const
|
|
10
|
+
const {cardAssets} = require('../services/assets-minification');
|
|
11
11
|
|
|
12
12
|
const logging = require('@tryghost/logging');
|
|
13
13
|
const _ = require('lodash');
|
|
@@ -297,10 +297,10 @@ module.exports = async function ghost_head(options) { // eslint-disable-line cam
|
|
|
297
297
|
}
|
|
298
298
|
|
|
299
299
|
// @TODO do this in a more "frameworky" way
|
|
300
|
-
if (
|
|
300
|
+
if (cardAssets.hasFile('js')) {
|
|
301
301
|
head.push(`<script defer src="${getAssetUrl('public/cards.min.js')}"></script>`);
|
|
302
302
|
}
|
|
303
|
-
if (
|
|
303
|
+
if (cardAssets.hasFile('css')) {
|
|
304
304
|
head.push(`<link rel="stylesheet" type="text/css" href="${getAssetUrl('public/cards.min.css')}">`);
|
|
305
305
|
}
|
|
306
306
|
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
const downsize = require('downsize');
|
|
2
|
-
|
|
3
1
|
function generateExcerpt(excerpt, truncateOptions) {
|
|
4
2
|
truncateOptions = truncateOptions || {};
|
|
5
3
|
|
|
@@ -8,6 +6,7 @@ function generateExcerpt(excerpt, truncateOptions) {
|
|
|
8
6
|
}
|
|
9
7
|
|
|
10
8
|
// Just uses downsize to truncate, not format
|
|
9
|
+
const downsize = require('downsize');
|
|
11
10
|
return downsize(excerpt, truncateOptions);
|
|
12
11
|
}
|
|
13
12
|
|
|
@@ -1,23 +1,38 @@
|
|
|
1
1
|
// const debug = require('@tryghost/debug')('comments-counts-assets');
|
|
2
2
|
const Minifier = require('@tryghost/minifier');
|
|
3
3
|
const path = require('path');
|
|
4
|
-
const fs = require('fs')
|
|
4
|
+
const fs = require('fs');
|
|
5
5
|
const logging = require('@tryghost/logging');
|
|
6
6
|
const config = require('../../../shared/config');
|
|
7
7
|
const urlUtils = require('../../../shared/url-utils');
|
|
8
|
+
const AssetsMinificationBase = require('./AssetsMinificationBase');
|
|
8
9
|
|
|
9
|
-
class
|
|
10
|
+
module.exports = class AdminAuthAssets extends AssetsMinificationBase {
|
|
10
11
|
constructor(options = {}) {
|
|
11
|
-
|
|
12
|
+
super(options);
|
|
13
|
+
|
|
12
14
|
this.src = options.src || path.join(config.get('paths').assetSrc, 'admin-auth');
|
|
13
15
|
/** @private */
|
|
14
16
|
this.dest = options.dest || path.join(config.getContentPath('public'), 'admin-auth');
|
|
15
|
-
|
|
17
|
+
|
|
16
18
|
this.minifier = new Minifier({src: this.src, dest: this.dest});
|
|
19
|
+
|
|
20
|
+
try {
|
|
21
|
+
// TODO: don't do this synchronously
|
|
22
|
+
fs.mkdirSync(this.dest, {recursive: true});
|
|
23
|
+
fs.copyFileSync(path.join(this.src, 'index.html'), path.join(this.dest, 'index.html'));
|
|
24
|
+
} catch (error) {
|
|
25
|
+
if (error.code === 'EACCES') {
|
|
26
|
+
logging.error('Ghost was not able to write admin-auth asset files due to permissions.');
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
17
32
|
}
|
|
18
33
|
|
|
19
34
|
/**
|
|
20
|
-
* @
|
|
35
|
+
* @override
|
|
21
36
|
*/
|
|
22
37
|
generateGlobs() {
|
|
23
38
|
return {
|
|
@@ -39,62 +54,10 @@ class AdminAuthAssetsService {
|
|
|
39
54
|
};
|
|
40
55
|
}
|
|
41
56
|
|
|
42
|
-
/**
|
|
43
|
-
* @private
|
|
44
|
-
* @returns {Promise<void>}
|
|
45
|
-
*/
|
|
46
|
-
async minify(globs, options) {
|
|
47
|
-
try {
|
|
48
|
-
await this.minifier.minify(globs, options);
|
|
49
|
-
} catch (error) {
|
|
50
|
-
if (error.code === 'EACCES') {
|
|
51
|
-
logging.error('Ghost was not able to write admin-auth asset files due to permissions.');
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
throw error;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* @private
|
|
61
|
-
* @returns {Promise<void>}
|
|
62
|
-
*/
|
|
63
|
-
async copyStatic() {
|
|
64
|
-
try {
|
|
65
|
-
await fs.copyFile(path.join(this.src, 'index.html'), path.join(this.dest, 'index.html'));
|
|
66
|
-
} catch (error) {
|
|
67
|
-
if (error.code === 'EACCES') {
|
|
68
|
-
logging.error('Ghost was not able to write admin-auth asset files due to permissions.');
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
throw error;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* @private
|
|
78
|
-
* @returns {Promise<void>}
|
|
79
|
-
*/
|
|
80
|
-
async clearFiles() {
|
|
81
|
-
const rmFile = async (name) => {
|
|
82
|
-
await fs.unlink(path.join(this.dest, name));
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
let promises = [
|
|
86
|
-
// @deprecated switch this to use fs.rm when we drop support for Node v12
|
|
87
|
-
rmFile('admin-auth.min.js'),
|
|
88
|
-
rmFile('index.html')
|
|
89
|
-
];
|
|
90
|
-
|
|
91
|
-
// We don't care if removing these files fails as it's valid for them to not exist
|
|
92
|
-
await Promise.allSettled(promises);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
57
|
/**
|
|
96
58
|
* Minify, move into the destination directory, and clear existing asset files.
|
|
97
59
|
*
|
|
60
|
+
* @override
|
|
98
61
|
* @returns {Promise<void>}
|
|
99
62
|
*/
|
|
100
63
|
async load() {
|
|
@@ -102,8 +65,5 @@ class AdminAuthAssetsService {
|
|
|
102
65
|
const replacements = this.generateReplacements();
|
|
103
66
|
await this.clearFiles();
|
|
104
67
|
await this.minify(globs, {replacements});
|
|
105
|
-
await this.copyStatic();
|
|
106
68
|
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
module.exports = AdminAuthAssetsService;
|
|
69
|
+
};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
const path = require('path');
|
|
2
|
+
const fs = require('fs').promises;
|
|
3
|
+
const errors = require('@tryghost/errors');
|
|
4
|
+
const logging = require('@tryghost/logging');
|
|
5
|
+
|
|
6
|
+
module.exports = class AssetsMinificationBase {
|
|
7
|
+
minifier;
|
|
8
|
+
|
|
9
|
+
ready = false;
|
|
10
|
+
|
|
11
|
+
constructor(options = {}) {
|
|
12
|
+
this.options = options;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
invalidate() {
|
|
16
|
+
this.ready = false;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
generateGlobs() {
|
|
20
|
+
throw new errors.InternalServerError({
|
|
21
|
+
message: 'generateGlobs not implemented'
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
async load() {
|
|
26
|
+
throw new errors.InternalServerError({
|
|
27
|
+
message: 'load not implemented'
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @returns {Promise<void>}
|
|
33
|
+
*/
|
|
34
|
+
async clearFiles() {
|
|
35
|
+
const rmFile = async (name) => {
|
|
36
|
+
await fs.unlink(path.join(this.dest, name));
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const promises = [];
|
|
40
|
+
for (const key of Object.keys(this.generateGlobs())) {
|
|
41
|
+
// @deprecated switch this to use fs.rm when we drop support for Node v12
|
|
42
|
+
promises.push(rmFile(key));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// We don't care if removing these files fails as it's valid for them to not exist
|
|
46
|
+
await Promise.allSettled(promises);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async minify(globs, options) {
|
|
50
|
+
try {
|
|
51
|
+
return await this.minifier.minify(globs, options);
|
|
52
|
+
} catch (error) {
|
|
53
|
+
if (error.code === 'EACCES') {
|
|
54
|
+
logging.error('Ghost was not able to write asset files due to permissions.');
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
throw error;
|
|
59
|
+
} finally {
|
|
60
|
+
this.ready = true;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
serveMiddleware() {
|
|
65
|
+
const self = this;
|
|
66
|
+
/**
|
|
67
|
+
* @param {import('express').Request} req
|
|
68
|
+
* @param {import('express').Response} res
|
|
69
|
+
* @param {import('express').NextFunction} next
|
|
70
|
+
*/
|
|
71
|
+
return async function serveMiddleware(req, res, next) {
|
|
72
|
+
if (!self.ready) {
|
|
73
|
+
await self.load();
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
next();
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
};
|
package/core/frontend/services/{card-assets/CardAssetService.js → assets-minification/CardAssets.js}
RENAMED
|
@@ -2,12 +2,13 @@ const debug = require('@tryghost/debug')('card-assets');
|
|
|
2
2
|
const Minifier = require('@tryghost/minifier');
|
|
3
3
|
const _ = require('lodash');
|
|
4
4
|
const path = require('path');
|
|
5
|
-
const fs = require('fs').promises;
|
|
6
|
-
const logging = require('@tryghost/logging');
|
|
7
5
|
const config = require('../../../shared/config');
|
|
6
|
+
const AssetsMinificationBase = require('./AssetsMinificationBase');
|
|
8
7
|
|
|
9
|
-
class
|
|
8
|
+
module.exports = class CardAssets extends AssetsMinificationBase {
|
|
10
9
|
constructor(options = {}) {
|
|
10
|
+
super(options);
|
|
11
|
+
|
|
11
12
|
this.src = options.src || path.join(config.get('paths').assetSrc, 'cards');
|
|
12
13
|
this.dest = options.dest || config.getContentPath('public');
|
|
13
14
|
this.minifier = new Minifier({src: this.src, dest: this.dest});
|
|
@@ -19,6 +20,9 @@ class CardAssetService {
|
|
|
19
20
|
this.files = [];
|
|
20
21
|
}
|
|
21
22
|
|
|
23
|
+
/**
|
|
24
|
+
* @override
|
|
25
|
+
*/
|
|
22
26
|
generateGlobs() {
|
|
23
27
|
// CASE: The theme has asked for all card assets to be included by default
|
|
24
28
|
if (this.config === true) {
|
|
@@ -50,52 +54,33 @@ class CardAssetService {
|
|
|
50
54
|
return {};
|
|
51
55
|
}
|
|
52
56
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return
|
|
56
|
-
} catch (error) {
|
|
57
|
-
if (error.code === 'EACCES') {
|
|
58
|
-
logging.error('Ghost was not able to write card asset files due to permissions.');
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
throw error;
|
|
57
|
+
hasFile(type) {
|
|
58
|
+
if (this.files.length) {
|
|
59
|
+
return this.files.indexOf(`cards.min.${type}`) > -1;
|
|
63
60
|
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
async clearFiles() {
|
|
67
|
-
this.files = [];
|
|
68
61
|
|
|
69
|
-
|
|
70
|
-
await fs.unlink(path.join(this.dest, name));
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
let promises = [
|
|
74
|
-
// @deprecated switch this to use fs.rm when we drop support for Node v12
|
|
75
|
-
rmFile('cards.min.css'),
|
|
76
|
-
rmFile('cards.min.js')
|
|
77
|
-
];
|
|
78
|
-
|
|
79
|
-
// We don't care if removing these files fails as it's valid for them to not exist
|
|
80
|
-
return Promise.allSettled(promises);
|
|
62
|
+
return Object.keys(this.generateGlobs()).indexOf(`cards.min.${type}`) > -1;
|
|
81
63
|
}
|
|
82
64
|
|
|
83
|
-
|
|
84
|
-
|
|
65
|
+
invalidate(cardAssetConfig) {
|
|
66
|
+
if (cardAssetConfig) {
|
|
67
|
+
this.config = cardAssetConfig;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return super.invalidate();
|
|
85
71
|
}
|
|
86
72
|
|
|
87
73
|
/**
|
|
88
74
|
* A theme can declare which cards it supports, and we'll do the rest
|
|
89
75
|
*
|
|
90
|
-
* @
|
|
91
|
-
* @returns
|
|
76
|
+
* @override
|
|
92
77
|
*/
|
|
93
78
|
async load(cardAssetConfig) {
|
|
94
79
|
if (cardAssetConfig) {
|
|
95
80
|
this.config = cardAssetConfig;
|
|
96
81
|
}
|
|
97
82
|
|
|
98
|
-
debug('loading with config',
|
|
83
|
+
debug('loading with config', this.config);
|
|
99
84
|
|
|
100
85
|
await this.clearFiles();
|
|
101
86
|
|
|
@@ -105,6 +90,4 @@ class CardAssetService {
|
|
|
105
90
|
|
|
106
91
|
this.files = await this.minify(globs) || [];
|
|
107
92
|
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
module.exports = CardAssetService;
|
|
93
|
+
};
|