Independent technology for modern publishing, memberships, subscriptions and newsletters.
600 matches across 8 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | ghost/core/core/frontend/web/site.js | 179 | siteApp.use(function ghostAnalyticsHeaderMiddleware(req, res, next) { |
| LOW | …st/core/core/frontend/web/routers/serve-public-file.js | 32 | function createPublicFileMiddleware(location, file, mime, maxAge, options = {}) { |
| LOW | …st/core/core/frontend/web/routers/serve-public-file.js | 44 | return function servePublicFileMiddleware(req, res, next) { |
| LOW | …st/core/core/frontend/web/routers/serve-public-file.js | 109 | return function servePublicFileMiddleware(req, res, next) { |
| LOW | …/core/core/frontend/web/middleware/frontend-caching.js | 46 | function setFrontendCacheHeadersMiddleware(req, res, next) { |
| LOW | …/core/frontend/apps/private-blogging/lib/middleware.js | 59 | function authenticatePrivateSession(req, res, next) { |
| LOW | …/core/frontend/apps/private-blogging/lib/middleware.js | 143 | redirectPrivateToHomeIfLoggedIn: function redirectPrivateToHomeIfLoggedIn(req, res, next) { |
| LOW | ghost/core/core/frontend/helpers/get.js | 208 | function optimiseFilterCacheability(resource, options) { |
| LOW | ghost/core/core/frontend/helpers/ghost_head.js | 175 | function getWebmentionDiscoveryLink() { |
| LOW | …eme-engine/middleware/update-local-template-options.js | 8 | function updateLocalTemplateOptions(req, res, next) { |
| LOW | …me-engine/middleware/update-global-template-options.js | 22 | async function updateGlobalTemplateOptions(req, res, next) { |
| LOW | …ost/core/core/frontend/services/rendering/templates.js | 23 | _private.getErrorTemplateHierarchy = function getErrorTemplateHierarchy(statusCode) { |
| LOW | …ost/core/core/frontend/services/rendering/templates.js | 48 | _private.getEntriesTemplateHierarchy = function getEntriesTemplateHierarchy(routerOptions, requestOptions) { |
| LOW | …ost/core/core/frontend/services/rendering/templates.js | 85 | _private.getEntryTemplateHierarchy = function getEntryTemplateHierarchy(postObject, context) { |
| LOW | ghost/core/core/frontend/services/llms/service.js | 88 | async function appendBoundedSectionPaginated(prefix, heading, type) { |
| LOW | ghost/core/core/frontend/services/llms/handler.js | 8 | function handleDisabledLlmsRequest(req, res, next) { |
| LOW | ghost/core/core/frontend/services/llms/markdown.js | 42 | function getResourcePathFromMarkdownPath(pathname) { |
| LOW | ghost/core/core/frontend/services/llms/markdown.js | 56 | function getAcceptedMarkdownContentType(req) { |
| LOW | …/core/frontend/services/data/match-permalink-params.js | 6 | function constrainHyphenatedPermalinkParams(permalinks) { |
| LOW | ghost/core/core/server/web/shared/utils.js | 20 | module.exports.removeOpenRedirectFromUrl = function removeOpenRedirectFromUrl(urlString) { |
| LOW | …/core/core/server/web/shared/middleware/pretty-urls.js | 22 | function skipSlashesForLlmsExtensions(req, res, next) { |
| LOW | …ore/server/web/api/middleware/update-user-last-seen.js | 1 | module.exports = function updateUserLastSeenMiddleware(req, res, next) { |
| LOW | ghost/core/core/server/web/members/app.js | 104 | membersApp.post('/api/create-stripe-checkout-session', function lazyCreateCheckoutSessionMw(req, res, next) { |
| LOW | ghost/core/core/server/web/members/app.js | 107 | membersApp.post('/api/create-stripe-update-session', function lazyCreateCheckoutSetupSessionMw(req, res, next) { |
| LOW | ghost/core/core/server/web/members/app.js | 110 | membersApp.post('/api/create-stripe-billing-portal-session', function lazyCreateBillingPortalSessionMw(req, res, nex |
| LOW | ghost/core/core/server/models/post.js | 525 | handleStatusForAttachedModels: function handleStatusForAttachedModels(model, options) { |
| LOW | ghost/core/core/server/models/post.js | 808 | ops.push(function ensureSendEmailWhenPublishedIsUnchanged() { |
| LOW | ghost/core/core/server/models/role-utils.js | 5 | function checkUserPermissionsForRole(loadedPermissions, roleName) { |
| LOW | ghost/core/core/server/models/comment.js | 10 | function getDisplayableCommentIdsQuery(excludedStatuses, {parentId, parentIds, postId} = {}) { |
| LOW | ghost/core/core/server/models/newsletter.js | 207 | getNextAvailableSortOrder: async function getNextAvailableSortOrder(unfilteredOptions = {}) { |
| LOW | …core/server/models/base/plugins/filtered-collection.js | 21 | getFilteredCollectionQuery: function getFilteredCollectionQuery(options) { |
| LOW | ghost/core/core/server/adapters/storage/utils.js | 16 | exports.getLocalImagesStoragePath = function getLocalImagesStoragePath(imagePath) { |
| LOW | ghost/core/core/server/lib/request-external.js | 167 | async function errorIfHostnameResolvesToPrivateIp(options) { |
| LOW | ghost/core/core/server/api/endpoints/posts.js | 28 | function getCacheHeaderFromEventString(event, dto) { |
| LOW | ghost/core/core/server/api/endpoints/users.js | 37 | async function rotateSessionForSelfPasswordChange(frame, user) { |
| LOW | ghost/core/core/server/api/endpoints/users.js | 65 | function shouldInvalidateCacheAfterChange(model) { |
| LOW | …/server/api/endpoints/utils/serializers/input/posts.js | 80 | function forceUrlRelationsWhenLazy(frame) { |
| LOW | …erver/api/endpoints/utils/serializers/input/members.js | 18 | function mapSubscribedFlagToNewsletterRelation(frame) { |
| LOW | …/server/api/endpoints/utils/serializers/input/pages.js | 56 | function forceUrlRelationsWhenLazy(frame) { |
| LOW | …-analytics/jobs/update-member-email-analytics/index.js | 10 | module.exports = async function updateMemberEmailAnalytics({memberId}) { |
| LOW | …t/core/core/server/services/settings/settings-utils.js | 41 | function getOrGenerateSiteUuid() { |
| LOW | …e/server/services/settings/private-site-access-code.js | 16 | function generatePrivateSiteAccessCode() { |
| LOW | ghost/core/core/server/services/auth/api-key/admin.js | 67 | const authenticateWithUrl = function apiKeyAuthenticateWithUrl(req, res, next) { |
| LOW | ghost/core/core/server/services/auth/api-key/admin.js | 79 | async function wrappedAuthenticateWithToken(req, res, next, options) { |
| LOW | ghost/core/core/server/services/auth/api-key/admin.js | 104 | const authenticateWithToken = async function apiKeyAuthenticateWithToken(originalUrl, token, ignoreMaxAge) { |
| LOW | ghost/core/core/server/services/auth/api-key/content.js | 12 | const authenticateContentApiKey = async function authenticateContentApiKey(req, res, next) { |
| LOW | …e/core/server/services/auth/session/express-session.js | 13 | function getExpressSessionMiddleware() { |
| LOW | …e/core/server/services/auth/session/session-service.js | 93 | function invalidateAuthCodeChallenge(session) { |
| LOW | …e/core/server/services/auth/session/session-service.js | 98 | function hasValidAuthCodeChallenge(session) { |
| LOW | …e/core/server/services/auth/session/session-service.js | 231 | async function createVerifiedSessionForUser(req, res, user) { |
| LOW | …e/core/server/services/auth/session/session-service.js | 242 | async function assignVerifiedUserToSession({ |
| LOW | …e/core/server/services/auth/session/session-service.js | 271 | async function rotateAndAssignVerifiedUserToSession({req, user, ip}) { |
| LOW | …vices/koenig/node-renderers/horizontalrule-renderer.js | 4 | function horizontalRuleFrontendTemplate() { |
| LOW | …vices/koenig/node-renderers/horizontalrule-renderer.js | 8 | function horizontalRuleEmailTemplate() { |
| LOW | …r/services/koenig/node-renderers/header-v2-renderer.js | 71 | function generateMSOSplitHeaderImage(nodeData) { |
| LOW | …r/services/koenig/node-renderers/header-v2-renderer.js | 97 | function generateMSOContentWrapper(nodeData) { |
| LOW | …r/services/koenig/node-renderers/header-v2-renderer.js | 123 | function generateMSOContentClosing(nodeData) { |
| LOW | …nig/render-utils/build-clean-basic-html-for-element.js | 3 | function buildCleanBasicHtmlForElement(domNode) { |
| LOW | …er/services/koenig/render-utils/replacement-strings.js | 37 | function removeCodeWrappersFromHelpers(html, document) { |
| LOW | …core/server/services/koenig/render-utils/visibility.js | 76 | function migrateOldVisibilityFormat(visibility) { |
| 227 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …server/services/automations/temporary-fake-database.js | 34 | text: 'Lorem ipsum.' |
| LOW | …/server/data/importer/importers/revue-importer.test.js | 118 | const result = RevueImporter.importPosts({items: '[]', issues: 'id,description,sent_at,subject,preheader\n12 |
| LOW | …/server/data/importer/importers/revue-importer.test.js | 118 | const result = RevueImporter.importPosts({items: '[]', issues: 'id,description,sent_at,subject,preheader\n12 |
| LOW | …/server/data/importer/importers/revue-importer.test.js | 123 | title: 'Lorem Ipsum Dolor Sit Amet Consectetur Adipiscing Elit Mauris Convallis Et Metus Eu Blandit |
| LOW | …/server/data/importer/importers/revue-importer.test.js | 123 | title: 'Lorem Ipsum Dolor Sit Amet Consectetur Adipiscing Elit Mauris Convallis Et Metus Eu Blandit |
| LOW | …re/test/unit/server/services/mail/ghost-mailer.test.js | 171 | to: 'user@example.com', |
| LOW | …re/test/unit/server/services/mail/ghost-mailer.test.js | 192 | to: 'user@example.com', |
| LOW | …re/test/unit/server/services/mail/ghost-mailer.test.js | 205 | to: 'user@example.com', |
| LOW | …re/test/unit/server/services/mail/ghost-mailer.test.js | 218 | to: 'user@example.com', |
| LOW | …re/test/unit/server/services/mail/ghost-mailer.test.js | 234 | to: 'user@example.com', |
| LOW | …re/test/unit/server/services/mail/ghost-mailer.test.js | 253 | to: 'user@example.com', |
| LOW | …re/test/unit/server/services/mail/ghost-mailer.test.js | 272 | to: 'user@example.com', |
| LOW | …re/test/unit/server/services/mail/ghost-mailer.test.js | 283 | to: 'user@example.com', |
| LOW | …re/test/unit/server/services/mail/ghost-mailer.test.js | 300 | to: 'user@example.com', |
| LOW | …re/test/unit/server/services/mail/ghost-mailer.test.js | 310 | to: 'user@example.com', |
| LOW | …re/test/unit/server/services/mail/ghost-mailer.test.js | 328 | to: 'user@example.com', |
| LOW | …re/test/unit/server/services/mail/ghost-mailer.test.js | 354 | to: 'user@example.com', |
| LOW | …re/test/unit/server/services/mail/ghost-mailer.test.js | 377 | to: 'user@example.com', |
| LOW | …re/test/unit/server/services/mail/ghost-mailer.test.js | 400 | to: 'user@example.com', |
| LOW | …re/test/unit/server/services/mail/ghost-mailer.test.js | 421 | to: 'user@example.com', |
| LOW | …re/test/unit/server/services/mail/ghost-mailer.test.js | 446 | to: 'user@example.com', |
| LOW | …re/test/unit/server/services/mail/ghost-mailer.test.js | 485 | to: 'user@example.com', |
| LOW | …re/test/unit/server/services/mail/ghost-mailer.test.js | 505 | to: 'user@example.com', |
| LOW | …ices/media-inliner/test/external-media-inliner.test.js | 126 | postStub.withArgs('mobiledoc').returns(`{"version":"0.3.1","atoms":[],"cards":[["html",{"html":"<img src="${ |
| LOW | …ices/media-inliner/test/external-media-inliner.test.js | 159 | mobiledoc: `{"version":"0.3.1","atoms":[],"cards":[["html",{"html":"<img src="__GHOST_URL__/content/imag |
| LOW | …ices/media-inliner/test/external-media-inliner.test.js | 225 | postStub.withArgs('lexical').returns(`{"root":{"children":[{"type":"html","version":1,"html":"<img src="${im |
| LOW | …ices/media-inliner/test/external-media-inliner.test.js | 257 | lexical: `{"root":{"children":[{"type":"html","version":1,"html":"<img src="__GHOST_URL__/content/images |
| LOW | …/email-suppression-list/email-suppression-list.test.js | 31 | emailAddress: 'test@test.com', |
| LOW | …ices/members/members-api/utils/normalize-email.test.js | 12 | assert.equal(normalizeEmail('user@example.com'), 'user@example.com'); |
| LOW | …ost/core/test/unit/server/services/stats/posts.test.js | 331 | await _createUser('user1', 'John Doe'); |
| LOW | …r-welcome-emails/member-welcome-email-renderer.test.js | 78 | member: {name: 'John Doe', email: 'john@example.com'}, |
| LOW | …r-welcome-emails/member-welcome-email-renderer.test.js | 142 | member: {name: 'John Doe', email: 'john@example.com'}, |
| LOW | …r-welcome-emails/member-welcome-email-renderer.test.js | 412 | member: {name: 'John Doe', email: 'john@example.com'}, |
| LOW | …r-welcome-emails/member-welcome-email-renderer.test.js | 428 | member: {name: 'John Doe', email: 'john@example.com'}, |
| LOW | ghost/core/test/unit/api/endpoints/db.test.js | 26 | get: sinon.stub().returns('user@example.com') |
| LOW | ghost/core/test/unit/api/endpoints/db.test.js | 38 | user: {email: 'user@example.com'} |
| LOW | ghost/core/test/unit/api/endpoints/members.test.js | 44 | get: sinon.stub().returns('user@example.com') |
| LOW | ghost/core/test/unit/api/endpoints/members.test.js | 57 | user: {email: 'user@example.com'} |
| LOW | ghost/core/test/e2e-frontend/helpers/get.test.js | 21 | name: 'John Doe', |
| LOW | ghost/core/test/e2e-frontend/helpers/next-post.test.js | 18 | name: 'John Doe', |
| LOW | ghost/core/test/e2e-api/webmentions/webmentions.test.js | 43 | <html><head><title>Test Page</title><meta name="description" content="Test description"><meta name="auth |
| LOW | ghost/core/test/e2e-api/webmentions/webmentions.test.js | 72 | assert.equal(mention.get('source_author'), 'John Doe'); |
| LOW | ghost/core/test/e2e-api/webmentions/webmentions.test.js | 84 | <html><head><title>Test Page</title><meta name="description" content="Test description"><meta name=" |
| LOW | ghost/core/test/e2e-api/webmentions/webmentions.test.js | 110 | assert.equal(mention.get('source_author'), 'John Doe'); |
| LOW | ghost/core/test/e2e-api/webmentions/webmentions.test.js | 156 | <html><head><title>Test Page</title><meta name="description" content="Test description"><meta name="author" |
| LOW | ghost/core/test/e2e-api/webmentions/webmentions.test.js | 179 | assert.equal(mention.get('source_author'), 'John Doe'); |
| LOW | ghost/core/test/e2e-api/webmentions/webmentions.test.js | 219 | <html><head><title>Test Page</title><meta name="description" content="Test description"><meta name="auth |
| LOW | ghost/core/test/e2e-api/webmentions/webmentions.test.js | 246 | assert.equal(mention.get('source_author'), 'John Doe'); |
| LOW | ghost/core/test/e2e-api/webmentions/webmentions.test.js | 254 | <html><head><title>Test Page</title><meta name="description" content="Test description"><meta name="auth |
| LOW | ghost/core/test/e2e-api/webmentions/webmentions.test.js | 285 | <html><head><title>Test Page</title><meta name="description" content="Test description"><meta name="auth |
| LOW | ghost/core/test/e2e-api/webmentions/webmentions.test.js | 316 | <html><head><title>Test Page</title><meta name="description" content="Test description"><meta name="auth |
| LOW | ghost/core/test/e2e-api/webmentions/webmentions.test.js | 347 | <html><head><title>Test Page</title><meta name="description" content="Test description"><meta name="auth |
| LOW | ghost/core/test/e2e-api/webmentions/webmentions.test.js | 377 | <html><head><title>Test Page</title><meta name="description" content="Test description"><meta name="auth |
| LOW | ghost/core/test/e2e-api/webmentions/webmentions.test.js | 407 | <html><head><title>Test Page</title><meta name="description" content="Test description"><meta name="auth |
| LOW | ghost/core/test/e2e-api/webmentions/webmentions.test.js | 441 | <html><head><title>Test Page</title><meta name="description" content="Test description"><meta name="auth |
| LOW | ghost/core/test/e2e-api/members/send-magic-link.test.js | 474 | const asciiEmail = 'user@example.com'; |
| LOW | …ion/services/email-service/email-event-storage.test.js | 638 | sender: 'test@test.com', |
| LOW | …ion/services/email-service/email-event-storage.test.js | 640 | targets: 'test@test.com' |
| LOW | …ion/services/email-service/email-event-storage.test.js | 646 | from: 'test@test.com', |
| LOW | …ion/services/email-service/email-event-storage.test.js | 746 | sender: 'test@test.com', |
| 65 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | .devcontainer/devcontainer.json | 21 | // control over the host Docker daemon (spawn privileged containers, mount |
| LOW | ghost/core/tsconfig.json | 1 | { |
| LOW | ghost/core/tsconfig.json | 21 | // "noLib": true, /* Disable including any library files, including the defau |
| LOW | ghost/core/tsconfig.json | 41 | // "noResolve": true, /* Disallow 'import's, 'require's or '<reference>'s from ex |
| LOW | ghost/core/tsconfig.json | 61 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted |
| LOW | ghost/core/tsconfig.json | 81 | // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefi |
| LOW | ghost/core/vitest.config.ts | 1 | import path from 'node:path'; |
| LOW | ghost/core/core/boot.js | 1 | // The Ghost Boot Sequence |
| LOW | ghost/core/core/frontend/helpers/reading_time.js | 1 | // # Reading Time Helper |
| LOW | ghost/core/core/frontend/helpers/t.js | 1 | // # t helper |
| LOW | ghost/core/core/frontend/helpers/price.js | 1 | // # {{price}} helper |
| LOW | ghost/core/core/frontend/helpers/content.js | 1 | // # Content Helper |
| LOW | ghost/core/core/frontend/helpers/social_accounts.js | 1 | // # Social Accounts Helper |
| LOW | ghost/core/core/frontend/helpers/plural.js | 1 | // # Plural Helper |
| LOW | …ore/core/frontend/services/sitemap/site-map-manager.js | 181 | } |
| LOW | …/frontend/src/member-attribution/member-attribution.js | 21 | // { |
| LOW | …core/core/server/web/shared/middleware/uncapitalise.js | 1 | // # uncapitalise Middleware |
| LOW | ghost/core/core/server/models/base/index.js | 1 | // # Base Model |
| LOW | ghost/core/core/server/lib/image/image-size.js | 141 | // getImageSizeFromUrl returns an Object like this |
| LOW | …/core/server/data/seeders/importers/offers-importer.js | 81 | // product_id: {type: 'string', maxlength: 24, nullable: false, references: 'products.id'}, |
| LOW | …core/server/data/tinybird/scripts/compare-top-pages.sh | 1 | #!/bin/bash |
| LOW | …core/server/services/koenig/render-utils/visibility.js | 41 | } else { |
| LOW | …core/server/services/koenig/render-utils/visibility.js | 61 | // |
| LOW | …e/core/server/services/email-service/email-renderer.js | 161 | |
| LOW | …re/core/server/services/email-service/email-service.js | 21 | missingNewsletterError: 'The post does not have a newsletter relation', |
| LOW | …server/services/email-service/batch-sending-service.js | 21 | * @typedef {object} Post |
| LOW | ghost/core/core/server/services/lib/link-replacer.js | 21 | // interface IToken { |
| LOW | …rver/services/comments/comments-service-emails.test.js | 181 | }); |
| LOW | ghost/core/test/e2e-api/admin/members-importer.test.js | 101 | // sinon.stub(Date, 'now').returns(new Date('2021-03-30T17:21:00.000Z')); |
| LOW | ghost/core/test/e2e-api/admin/members-importer.test.js | 121 | |
| LOW | ghost/core/test/e2e-api/admin/members-importer.test.js | 141 | // // perform the bulk delete |
| LOW | ghost/core/test/e2e-api/admin/members-importer.test.js | 161 | // return request.get(localUtils.API.getApiQuery(`members/?filter=label:${importLabel.slug}`)) |
| LOW | ghost/core/test/e2e-api/admin/members.test.js | 1061 | |
| LOW | ghost/core/test/utils/e2e-framework.js | 1 | // Set of common function that should be main building blocks for e2e tests. |
| LOW | ghost/core/test/utils/vitest-setup.ts | 1 | // Vitest setup — mirrors the behavior of ./overrides.js (used by mocha |
| LOW | ghost/core/scripts/pack.js | 61 | for (const [key, val] of Object.entries(pkg[section])) { |
| LOW | ghost/core/scripts/pack.js | 141 | // `pnpm.overrides`. We deliberately do NOT also write pnpm.overrides here: |
| LOW | ghost/admin/app/controllers/lexical-editor.js | 1201 | // clean up blank cards when leaving the editor if we have a draft post |
| LOW | ghost/admin/app/services/ui.js | 141 | // events allowing us to have interactive elements "underneath" drop zones |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 1 | // import EmberObject from '@ember/object'; |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 21 | // it('slugValue is one-way bound to post.slug', function () { |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 41 | // expect(component.get('slugValue')).to.equal('changed-directly'); |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 61 | // expect(component.get('metaTitleScratch')).to.equal('a title'); |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 81 | // }); |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 101 | // run(function () { |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 121 | // metaTitle: 'a meta-title', |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 141 | // post: EmberObject.extend({ |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 161 | |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 181 | |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 201 | // let component = this.subject({ |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 221 | // }); |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 241 | |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 261 | // it('should update when the post slug changes', function () { |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 281 | // post: EmberObject.create({slug: longSlug}) |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 301 | // }) |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 321 | // }); |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 341 | // }); |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 361 | // // unchanged |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 381 | // component.send('updateSlug', component.get('slugValue')); |
| LOW | …in/tests/unit/components/gh-post-settings-menu-test.js | 401 | |
| 90 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| CRITICAL | ghost/core/core/server/api/endpoints/authentication.js | 200 | web.shared.middleware.api.spamPrevention.userLogin().reset(frame.options.ip, `${tokenParts.email}login`); |
| CRITICAL | ghost/core/test/e2e-api/admin/members.test.js | 41 | models.Base.Model.prototype.serialize.call(subscription), |
| CRITICAL | ghost/core/test/e2e-api/members/webhooks.test.js | 52 | const serialized = models.Base.Model.prototype.serialize.call(subscription); |
| CRITICAL | ghost/admin/app/components/posts-list/context-menu.js | 404 | this.selectionList.infinityModel.draftInfinityModel.content.unshiftObject(model); |
| CRITICAL | …ditor/modals/publish-flow/complete-with-email-error.js | 34 | let email = yield this.args.publishOptions.post.email.retry(); |
| CRITICAL | apps/admin-toolbar/test/admin-toolbar.test.js | 150 | assert.ok(dom.window.document.body.style.paddingBottom.includes('--gh-admin-toolbar-bottom-offset')); |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …ore/core/frontend/web/middleware/handle-image-sizes.js | 94 | // CASE: When formatting, we need to check if the imageTransform package supports this specific format |
| LOW | …ore/core/frontend/web/middleware/handle-image-sizes.js | 101 | // CASE: when transforming is supported, we need to check if it is desired |
| LOW | ghost/core/core/frontend/helpers/comments.js | 15 | * We need to check if comments enabled, because the theme might not be using the other available helpers to check |
| LOW | ghost/core/core/server/data/importer/import-manager.js | 499 | // Step 1: Handle converting the file to usable data |
| LOW | ghost/core/core/server/data/importer/import-manager.js | 519 | // Step 2: Let the importers pre-process the data |
| LOW | ghost/core/core/server/data/importer/import-manager.js | 522 | // Step 3: Actually do the import |
| LOW | ghost/core/core/server/data/importer/import-manager.js | 526 | // Step 4: Report on the import |
| LOW | ghost/core/core/server/data/importer/import-manager.js | 534 | // Step 5: Cleanup any files |
| LOW | ghost/core/core/server/data/importer/import-manager.js | 538 | // Step 6: Send email |
| LOW | …server/services/email-service/email-event-processor.js | 295 | // Step 1: Resolve all providerId -> emailId mappings |
| LOW | …server/services/email-service/email-event-processor.js | 312 | // Step 2: Build list of (email, emailId) pairs to lookup |
| LOW | …server/services/email-service/email-event-processor.js | 328 | // Step 3: Batch query all recipients with OR conditions |
| LOW | …server/services/email-service/email-event-processor.js | 345 | // Step 4: Build cache map keyed by "email:emailId" |
| LOW | …re/core/server/services/stats/content-stats-service.js | 61 | // Step 1: Get raw data from Tinybird |
| LOW | …re/core/server/services/stats/content-stats-service.js | 68 | // Step 2: Enrich the data with titles |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | docker/tb-cli/entrypoint.sh | 19 | # Check if workspace ID is valid |
| LOW | docker/tb-cli/entrypoint.sh | 28 | # Check if workspace token is valid |
| LOW | docker/tb-cli/entrypoint.sh | 61 | # Check if admin token is valid |
| LOW | docker/tb-cli/entrypoint.sh | 73 | # Check if tracker token is valid |
| LOW | docker/stripe/entrypoint.sh | 29 | # Check if STRIPE_SECRET_KEY is set |
| LOW | docker/stripe/entrypoint.sh | 48 | # Check if we got a timeout |
| LOW | docker/stripe/entrypoint.sh | 55 | # Check if we got a valid secret (should start with "whsec_") |
| LOW | …e/core/server/data/tinybird/scripts/configure-ghost.sh | 15 | # Check if workspace ID is valid |
| LOW | …e/core/server/data/tinybird/scripts/configure-ghost.sh | 25 | # Check if workspace token is valid |
| LOW | …e/core/server/data/tinybird/scripts/configure-ghost.sh | 35 | # Check if admin token is valid |
| LOW | …e/core/server/data/tinybird/scripts/configure-ghost.sh | 46 | # Check if tracker token is valid |
| LOW | .github/workflows/deploy-to-staging.yml | 65 | # Check if Docker build job specifically succeeded (paginate — CI has 30+ jobs) |
| LOW | .github/hooks/commit-msg.bash | 32 | # Check if second line is blank |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | docker/tb-cli/entrypoint.sh | 47 | # Find admin token by looking for ADMIN scope (more robust than name matching) |
| MEDIUM | apps/stats/src/utils/chart-helpers.ts | 86 | // Calculate median instead of mean to be more robust against extreme outliers |
| MEDIUM | apps/stats/src/utils/chart-helpers.ts | 90 | // Calculate MAD (Median Absolute Deviation) which is more robust than standard deviation |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | docker/analytics/entrypoint.sh | 28 | # This file is created by the `tb-cli` service and mounted into the Analytics service container |