Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .changeset/sweet-eggs-joke.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@tryghost/adapter-base-scheduling": patch
---

Update dependency Sinon to v22.1.0
1 change: 1 addition & 0 deletions .github/scripts/i18n-review/eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ export default defineConfig([
// ESLint 9 flipped the caughtErrors default to 'all'; keep unused
// catch bindings tolerated, as the rest of the repo does.
'no-unused-vars': ['error', { caughtErrors: 'none' }],
'prefer-const': ['error', { destructuring: 'all' }],
},
},
]);
4 changes: 1 addition & 3 deletions apps/admin-toolbar/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ const AUTH_FRAME_LOAD_TIMEOUT = 5000;

function waitForFrameLoad(frame) {
return new Promise((resolve, reject) => {
let timeout;

function cleanup() {
window.clearTimeout(timeout);
frame.removeEventListener('load', handleLoad);
Expand All @@ -30,7 +28,7 @@ function waitForFrameLoad(frame) {
reject(new Error('auth_frame_load_error'));
}

timeout = window.setTimeout(() => {
const timeout = window.setTimeout(() => {
cleanup();
reject(new Error('auth_frame_load_timeout'));
}, AUTH_FRAME_LOAD_TIMEOUT);
Expand Down
2 changes: 1 addition & 1 deletion apps/announcement-bar/src/components/announcement-bar.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export function AnnouncementBar({ settings = {} }) {
return null;
}

let className = 'gh-announcement-bar ' + settings.announcement_background;
const className = 'gh-announcement-bar ' + settings.announcement_background;
return (
<div className={className}>
<div
Expand Down
2 changes: 1 addition & 1 deletion apps/announcement-bar/src/utils/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ function setupGhostApi({ apiUrl }) {
};

api.init = async () => {
let { announcement } = await api.announcementSettings.browse();
const { announcement } = await api.announcementSettings.browse();
return announcement[0];
};

Expand Down
2 changes: 1 addition & 1 deletion apps/ember-admin/app/adapters/api-key.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export default class ApiKey extends ApplicationAdapter {
return super.queryRecord(...arguments);
}

let url = `${this.buildURL('users', 'me')}token/`;
const url = `${this.buildURL('users', 'me')}token/`;
return this.ajax(url, 'GET', {data: {}}).then((data) => {
return data;
});
Expand Down
4 changes: 2 additions & 2 deletions apps/ember-admin/app/adapters/base.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ export default RESTAdapter.extend(AjaxServiceSupport, {

buildURL() {
// Ensure trailing slashes
let url = this._super(...arguments);
let parsedUrl = new URL(url);
const url = this._super(...arguments);
const parsedUrl = new URL(url);

if (!parsedUrl.pathname.endsWith('/')) {
parsedUrl.pathname += '/';
Expand Down
2 changes: 1 addition & 1 deletion apps/ember-admin/app/adapters/collection.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import SlugUrl from 'ghost-admin/utils/slug-url';

export default class Tag extends ApplicationAdapter {
buildURL(_modelName, _id, _snapshot, _requestType, query) {
let url = super.buildURL(...arguments);
const url = super.buildURL(...arguments);

return SlugUrl(url, query);
}
Expand Down
2 changes: 1 addition & 1 deletion apps/ember-admin/app/adapters/email.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import ApplicationAdapter from './application';

export default class Email extends ApplicationAdapter {
retry(model) {
let url = `${this.buildURL('email', model.get('id'))}retry/`;
const url = `${this.buildURL('email', model.get('id'))}retry/`;

return this.ajax(url, 'PUT', {data: {}}).then((data) => {
this.store.pushPayload(data);
Expand Down
30 changes: 15 additions & 15 deletions apps/ember-admin/app/adapters/embedded-relation-adapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@ export default class EmbeddedRelationAdapter extends BaseAdapter {
}

findAll(store, type, sinceToken) {
let query, url;
let query;

if (sinceToken) {
query = {since: sinceToken};
}

url = this.buildIncludeURL(store, type.modelName, null, null, 'findAll');
const url = this.buildIncludeURL(store, type.modelName, null, null, 'findAll');

return this.ajax(url, 'GET', {data: query});
}
Expand Down Expand Up @@ -137,7 +137,7 @@ export default class EmbeddedRelationAdapter extends BaseAdapter {
}

updateRecord(store, type, snapshot) {
let options = {
const options = {
method: 'PUT',
id: get(snapshot, 'id')
};
Expand All @@ -149,9 +149,9 @@ export default class EmbeddedRelationAdapter extends BaseAdapter {
}

saveRecord(store, type, snapshot, options, requestType) {
let _options = options || {};
let url = this.buildIncludeURL(store, type.modelName, _options.id, snapshot, requestType);
let payload = this.preparePayload(store, type, snapshot);
const _options = options || {};
const url = this.buildIncludeURL(store, type.modelName, _options.id, snapshot, requestType);
const payload = this.preparePayload(store, type, snapshot);

return this.ajax(url, _options.method, payload);
}
Expand All @@ -164,18 +164,18 @@ export default class EmbeddedRelationAdapter extends BaseAdapter {
}

preparePayload(store, type, snapshot) {
let serializer = store.serializerFor(type.modelName);
let payload = {};
const serializer = store.serializerFor(type.modelName);
const payload = {};

serializer.serializeIntoHash(payload, type, snapshot);

return {data: payload};
}

buildIncludeURL(store, modelName, id, snapshot, requestType, query) {
let includes = this.getEmbeddedRelations(store, modelName);
let url = this.buildURL(modelName, id, snapshot, requestType, query);
let parsedUrl = new URL(url);
const includes = this.getEmbeddedRelations(store, modelName);
const url = this.buildURL(modelName, id, snapshot, requestType, query);
const parsedUrl = new URL(url);

if (includes.length) {
parsedUrl.searchParams.append('include', includes.map(underscore).join(','));
Expand All @@ -185,7 +185,7 @@ export default class EmbeddedRelationAdapter extends BaseAdapter {
}

buildQuery(store, modelName, options) {
let deDupe = {};
const deDupe = {};
let toInclude = this.getEmbeddedRelations(store, modelName);
let query = options || {};

Expand Down Expand Up @@ -215,9 +215,9 @@ export default class EmbeddedRelationAdapter extends BaseAdapter {
}

getEmbeddedRelations(store, modelName) {
let model = store.modelFor(modelName);
let ret = [];
let embedded = [];
const model = store.modelFor(modelName);
const ret = [];
const embedded = [];

// Iterate through the model's relationships and build a list
// of those that need to be pulled in via "include" from the API
Expand Down
2 changes: 1 addition & 1 deletion apps/ember-admin/app/adapters/label.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import SlugUrl from 'ghost-admin/utils/slug-url';

export default class Label extends ApplicationAdapter {
buildURL(_modelName, _id, _snapshot, _requestType, query) {
let url = super.buildURL(...arguments);
const url = super.buildURL(...arguments);

return SlugUrl(url, query);
}
Expand Down
8 changes: 4 additions & 4 deletions apps/ember-admin/app/adapters/member.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,18 @@ import ApplicationAdapter from 'ghost-admin/adapters/application';
export default class Member extends ApplicationAdapter {
queryRecord(store, type, query) {
if (query && query.id) {
let {id} = query;
const {id} = query;
delete query.id;
let url = this.buildURL(type.modelName, id, query, 'findRecord');
const url = this.buildURL(type.modelName, id, query, 'findRecord');
return this.ajax(url, 'GET', {data: query});
}

return super.queryRecord(...arguments);
}

urlForDeleteRecord(id, modelName, snapshot) {
let url = super.urlForDeleteRecord(...arguments);
let parsedUrl = new URL(url);
const url = super.urlForDeleteRecord(...arguments);
const parsedUrl = new URL(url);

if (snapshot && snapshot.adapterOptions && snapshot.adapterOptions.cancel) {
parsedUrl.searchParams.set('cancel', 'true');
Expand Down
6 changes: 3 additions & 3 deletions apps/ember-admin/app/adapters/setting.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import {pluralize} from 'ember-inflector';

export default class Setting extends ApplicationAdapter {
updateRecord(store, type, record) {
let data = {};
let serializer = store.serializerFor(type.modelName);
const data = {};
const serializer = store.serializerFor(type.modelName);

// remove the fake id that we added onto the model.
delete record.id;
Expand All @@ -16,7 +16,7 @@ export default class Setting extends ApplicationAdapter {
// Do not send empty data to the API
// This can probably be removed then this is fixed:
// https://github.com/TryGhost/Ghost/blob/main/ghost/api-framework/lib/validators/input/all.js#L128
let root = pluralize(type.modelName);
const root = pluralize(type.modelName);
if (data[root].length === 0) {
return Promise.resolve();
}
Expand Down
2 changes: 1 addition & 1 deletion apps/ember-admin/app/adapters/tag.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import SlugUrl from 'ghost-admin/utils/slug-url';

export default class Tag extends ApplicationAdapter {
buildURL(_modelName, _id, _snapshot, _requestType, query) {
let url = super.buildURL(...arguments);
const url = super.buildURL(...arguments);

return SlugUrl(url, query);
}
Expand Down
4 changes: 2 additions & 2 deletions apps/ember-admin/app/adapters/theme.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import ApplicationAdapter from './application';

export default class Theme extends ApplicationAdapter {
activate(model) {
let url = `${this.buildURL('theme', model.get('id'))}activate/`;
const url = `${this.buildURL('theme', model.get('id'))}activate/`;

return this.ajax(url, 'PUT', {data: {}}).then((data) => {
this.store.pushPayload(data);
Expand All @@ -11,7 +11,7 @@ export default class Theme extends ApplicationAdapter {
}

active() {
let url = `${this.buildURL('theme', 'active')}`;
const url = `${this.buildURL('theme', 'active')}`;

return this.ajax(url, 'GET', {data: {}}).then((data) => {
this.store.pushPayload('theme', data);
Expand Down
8 changes: 4 additions & 4 deletions apps/ember-admin/app/adapters/tier.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,18 @@ import ApplicationAdapter from 'ghost-admin/adapters/application';
export default class Tier extends ApplicationAdapter {
queryRecord(store, type, query) {
if (query && query.id) {
let {id} = query;
const {id} = query;
delete query.id;
let url = this.buildURL(type.modelName, id, query, 'findRecord');
const url = this.buildURL(type.modelName, id, query, 'findRecord');
return this.ajax(url, 'GET', {data: query});
}

return super.queryRecord(...arguments);
}

urlForDeleteRecord() {
let url = super.urlForDeleteRecord(...arguments);
let parsedUrl = new URL(url);
const url = super.urlForDeleteRecord(...arguments);
const parsedUrl = new URL(url);

return parsedUrl.toString();
}
Expand Down
4 changes: 2 additions & 2 deletions apps/ember-admin/app/adapters/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import SlugUrl from 'ghost-admin/utils/slug-url';

export default class User extends ApplicationAdapter {
buildURL(_modelName, _id, _snapshot, _requestType, query) {
let url = super.buildURL(...arguments);
const url = super.buildURL(...arguments);

return SlugUrl(url, query);
}
Expand All @@ -13,7 +13,7 @@ export default class User extends ApplicationAdapter {
return super.queryRecord(...arguments);
}

let url = this.buildURL(type.modelName, 'me', null, 'findRecord');
const url = this.buildURL(type.modelName, 'me', null, 'findRecord');

return this.ajax(url, 'GET', {data: {include: 'roles'}});
}
Expand Down
2 changes: 1 addition & 1 deletion apps/ember-admin/app/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ const App = Application.extend({

// TODO: remove once the validations refactor is complete
registerWarnHandler((message, options, next) => {
let skip = [
const skip = [
'ds.errors.add',
'ds.errors.remove',
'ds.errors.clear'
Expand Down
16 changes: 8 additions & 8 deletions apps/ember-admin/app/components/editor/modals/preview/email.js
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ export default class ModalPostPreviewEmailComponent extends Component {

async _fetchEmailData() {
let {html, subject, newsletter} = this;
let {post} = this.args;
const {post} = this.args;
const {memberStatus, memberTier} = this.args;

if (html && subject && memberStatus === this._lastMemberStatus && memberTier === this._lastMemberTier && newsletter.slug === this._lastNewsletterSlug) {
Expand All @@ -159,23 +159,23 @@ export default class ModalPostPreviewEmailComponent extends Component {
subject = post.email.subject;
// model is a post, fetch email preview
} else {
let url = new URL(this.ghostPaths.url.api('/email_previews/posts', post.id), window.location.href);
const url = new URL(this.ghostPaths.url.api('/email_previews/posts', post.id), window.location.href);
for (const [param, value] of Object.entries(this._audienceParams)) {
url.searchParams.set(param, value);
}
url.searchParams.set('newsletter', this.newsletter.slug);

let response = await this.ajax.request(url.href);
let [emailPreview] = response.email_previews;
const response = await this.ajax.request(url.href);
const [emailPreview] = response.email_previews;
html = emailPreview.html;
subject = emailPreview.subject;
}

// inject extra CSS so the preview behaves consistently inside the iframe
let domParser = new DOMParser();
let htmlDoc = domParser.parseFromString(html, 'text/html');
let stylesheet = htmlDoc.querySelector('style');
let originalCss = stylesheet.innerHTML;
const domParser = new DOMParser();
const htmlDoc = domParser.parseFromString(html, 'text/html');
const stylesheet = htmlDoc.querySelector('style');
const originalCss = stylesheet.innerHTML;
stylesheet.innerHTML = `${originalCss}\n\n${INJECTED_CSS}`;

const doctype = new XMLSerializer().serializeToString(htmlDoc.doctype);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ export default class EmailSubject extends Component {
}

// Grab the post and current stored email subject
let emailSubject = event.target.value;
let post = this.args.post;
let currentEmailSubject = post.get('emailSubject');
const emailSubject = event.target.value;
const post = this.args.post;
const currentEmailSubject = post.get('emailSubject');

// If the subject entered matches the stored email subject, do nothing
if (currentEmailSubject === emailSubject) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ export default class ReAuthenticateModal extends Component {
}

if (isTwoFactorTokenRequiredError(error)) {
let errorCode = error.payload?.errors[0]?.code;
const errorCode = error.payload?.errors[0]?.code;
// login was successful, but 2FA verification is required
this.session.set('errorCode', errorCode);
yield this.modals.open('editor/modals/re-verify');
Expand Down
Loading
Loading