[chore] migrate to eslint@8 and run --fix (#2256)

closes https://github.com/TryGhost/Admin/pull/2107

- updated related babel dependencies
- bumped eslint
- ran `yarn lint:js --fix`
- added eslint ignore comments for some required non-camel-case properties
This commit is contained in:
Gabriel Csapo 2022-02-10 02:41:36 -08:00 committed by GitHub
parent c7383b446d
commit 15f0aa7355
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
93 changed files with 323 additions and 326 deletions

View File

@ -1,12 +1,18 @@
/* eslint-env node */
module.exports = {
root: true,
parser: 'babel-eslint',
parser: '@babel/eslint-parser',
parserOptions: {
ecmaVersion: 2018,
sourceType: 'module',
allowImportExportEverywhere: false,
ecmaFeatures: {
globalReturn: false,
legacyDecorators: true
},
requireConfigFile: false,
babelOptions: {
plugins: ['@babel/plugin-proposal-class-properties', ['@babel/plugin-proposal-decorators', {legacy: true}]]
}
},
plugins: [

View File

@ -11,5 +11,5 @@ export default class GhAlerts extends Component {
@service notifications;
@alias('notifications.alerts')
messages;
messages;
}

View File

@ -2,7 +2,7 @@ import BasicDropdown from 'ember-basic-dropdown/components/basic-dropdown';
import {inject as service} from '@ember/service';
class GhBasicDropdown extends BasicDropdown {
@service dropdown
@service dropdown;
constructor() {
super(...arguments);

View File

@ -15,7 +15,7 @@ export default class GhBillingUpdateButton extends Component {
subscription = null;
@reads('billing.subscription.isActiveTrial')
showUpgradeButton;
showUpgradeButton;
@action
openBilling() {

View File

@ -33,7 +33,7 @@ class CmEditorComponent extends Component {
update = () => {};
@boundOneWay('value')
_value; // make sure a value exists
_value; // make sure a value exists
didReceiveAttrs() {
super.didReceiveAttrs(...arguments);
@ -77,7 +77,7 @@ class CmEditorComponent extends Component {
scheduleOnce('afterRender', this, this._initCodeMirror);
})
initCodeMirror;
initCodeMirror;
_initCodeMirror() {
let options = this.getProperties('lineNumbers', 'lineWrapping', 'indentUnit', 'mode', 'theme', 'autofocus');

View File

@ -32,10 +32,10 @@ export default class GhDateTimePicker extends Component {
setTypedDateError() {}
@reads('settings.timezone')
blogTimezone;
blogTimezone;
@or('dateError', 'timeError')
hasError;
hasError;
@computed('_date', '_scratchDate')
get dateValue() {

View File

@ -13,7 +13,6 @@ export default class GhLaunchWizardConnectStripeComponent extends Component {
@service ghostPaths;
@service settings;
@service store;
@service settings;
@tracked hasActiveStripeSubscriptions = false;
@tracked showDisconnectStripeConnectModal = false;

View File

@ -19,7 +19,7 @@ class MemberActivity {
iconClass: 'red-d2',
tooltip: 'Email delivery failed'
}
}
};
constructor(props) {
Object.assign(this, props);

View File

@ -7,12 +7,12 @@ import {task} from 'ember-concurrency';
import {tracked} from '@glimmer/tracking';
export default class extends Component {
@service membersUtils
@service ghostPaths
@service ajax
@service store
@service feature
@service settings
@service membersUtils;
@service ghostPaths;
@service ajax;
@service store;
@service feature;
@service settings;
constructor(...args) {
super(...args);

View File

@ -13,10 +13,10 @@ export default class Footer extends Component {
@service feature;
@and('config.clientExtensions.dropdown', 'session.user.isOwnerOnly')
showDropdownExtension;
showDropdownExtension;
@match('router.currentRouteName', /^settings/)
isSettingsRoute;
isSettingsRoute;
// equivalent to "left: auto; right: -20px"
userDropdownPosition(trigger, dropdown) {

View File

@ -34,27 +34,27 @@ export default class Main extends Component.extend(ShortcutsMixin) {
shortcuts = null;
@match('router.currentRouteName', /^settings\.integration/)
isIntegrationRoute;
isIntegrationRoute;
// HACK: {{link-to}} should be doing this automatically but there appears to
// be a bug in Ember that's preventing it from working immediately after login
@equal('router.currentRouteName', 'site')
isOnSite;
isOnSite;
@or('session.user.isAdmin', 'session.user.isEditor')
showTagsNavigation;
showTagsNavigation;
@and('config.clientExtensions.menu', 'session.user.isOwnerOnly')
showMenuExtension;
showMenuExtension;
@and('config.clientExtensions.script', 'session.user.isOwnerOnly')
showScriptExtension;
showScriptExtension;
@reads('config.hostSettings.billing.enabled')
showBilling;
showBilling;
@reads('settings.stripeConnectAccountId')
isStripeConnected;
isStripeConnected;
init() {
super.init(...arguments);
@ -123,7 +123,7 @@ export default class Main extends Component.extend(ShortcutsMixin) {
return false;
}
})
_loadMemberCountsTask;
_loadMemberCountsTask;
_setIconStyle() {
let icon = this.icon;

View File

@ -11,5 +11,5 @@ export default class GhNotifications extends Component {
@service notifications;
@alias('notifications.notifications')
messages;
messages;
}

View File

@ -77,7 +77,7 @@ export default class GhPortalLinks extends Component {
});
}
})
fetchProducts;
fetchProducts;
@task(function* (id) {
this.set('copiedPrice', id);
@ -90,7 +90,7 @@ export default class GhPortalLinks extends Component {
copyTextToClipboard(data);
yield timeout(this.isTesting ? 50 : 3000);
})
copyStaticLink;
copyStaticLink;
@task(function* (interval) {
this.set('copiedSignupInterval', interval);
@ -103,5 +103,5 @@ export default class GhPortalLinks extends Component {
copyTextToClipboard(data);
yield timeout(this.isTesting ? 50 : 3000);
})
copyProductSignupLink;
copyProductSignupLink;
}

View File

@ -25,43 +25,43 @@ export default class GhPostSettingsMenu extends Component {
isViewingSubview = false;
@alias('post.canonicalUrlScratch')
canonicalUrlScratch;
canonicalUrlScratch;
@alias('post.customExcerptScratch')
customExcerptScratch;
customExcerptScratch;
@alias('post.codeinjectionFootScratch')
codeinjectionFootScratch;
codeinjectionFootScratch;
@alias('post.codeinjectionHeadScratch')
codeinjectionHeadScratch;
codeinjectionHeadScratch;
@alias('post.metaDescriptionScratch')
metaDescriptionScratch;
metaDescriptionScratch;
@alias('post.metaTitleScratch')
metaTitleScratch;
metaTitleScratch;
@alias('post.ogDescriptionScratch')
ogDescriptionScratch;
ogDescriptionScratch;
@alias('post.ogTitleScratch')
ogTitleScratch;
ogTitleScratch;
@alias('post.twitterDescriptionScratch')
twitterDescriptionScratch;
twitterDescriptionScratch;
@alias('post.twitterTitleScratch')
twitterTitleScratch;
twitterTitleScratch;
@boundOneWay('post.slug')
slugValue;
slugValue;
@boundOneWay('post.uuid')
uuidValue;
uuidValue;
@or('metaDescriptionScratch', 'customExcerptScratch', 'post.excerpt')
seoDescription;
seoDescription;
@or(
'ogDescriptionScratch',
@ -71,7 +71,7 @@ export default class GhPostSettingsMenu extends Component {
'settings.description',
''
)
facebookDescription;
facebookDescription;
@or(
'post.ogImage',
@ -79,10 +79,10 @@ export default class GhPostSettingsMenu extends Component {
'settings.ogImage',
'settings.coverImage'
)
facebookImage;
facebookImage;
@or('ogTitleScratch', 'seoTitle')
facebookTitle;
facebookTitle;
@or(
'twitterDescriptionScratch',
@ -92,7 +92,7 @@ export default class GhPostSettingsMenu extends Component {
'settings.description',
''
)
twitterDescription;
twitterDescription;
@or(
'post.twitterImage',
@ -100,24 +100,24 @@ export default class GhPostSettingsMenu extends Component {
'settings.twitterImage',
'settings.coverImage'
)
twitterImage;
twitterImage;
@or('twitterTitleScratch', 'seoTitle')
twitterTitle;
twitterTitle;
@or(
'session.user.isOwnerOnly',
'session.user.isAdminOnly',
'session.user.isEditor'
)
showVisibilityInput;
showVisibilityInput;
@or(
'session.user.isOwnerOnly',
'session.user.isAdminOnly',
'session.user.isEditor'
)
showEmailNewsletter;
showEmailNewsletter;
@computed('metaTitleScratch', 'post.titleScratch')
get seoTitle() {

View File

@ -26,16 +26,16 @@ export default class Email extends Component {
close() {}
@or('emailSubjectScratch', 'post.title')
emailSubject;
emailSubject;
@alias('post.emailSubjectScratch')
emailSubjectScratch;
emailSubjectScratch;
@oneWay('session.user.email')
testEmailAddress;
testEmailAddress;
@not('mailgunIsEnabled')
mailgunError;
mailgunError;
@computed(
'settings.{mailgunApiKey,mailgunDomain,mailgunBaseUrl}',
@ -109,7 +109,7 @@ export default class Email extends Component {
}
}
}).drop())
sendTestEmail;
sendTestEmail;
@task(function* () {
let {email} = this.post;
@ -136,5 +136,5 @@ export default class Email extends Component {
return true;
})
retryEmail;
retryEmail;
}

View File

@ -20,7 +20,7 @@ export default class GhPsmTagsInput extends Component {
// ignorePunctuation means the # in internal tag names is ignored
return tagA.name.localeCompare(tagB.name, undefined, {ignorePunctuation: true});
})
availableTags;
availableTags;
@computed('availableTags.@each.name')
get availableTagNames() {

View File

@ -75,5 +75,5 @@ export default class GhPsmTemplateSelect extends Component {
this.set('activeTheme', activeTheme);
})
loadActiveTheme;
loadActiveTheme;
}

View File

@ -42,7 +42,7 @@ export default class GhSearchInputComponent extends Component {
fields: ['slug', 'name'],
idField: 'slug',
titleField: 'name'
}]
}];
@action
openSelected(selected) {

View File

@ -117,5 +117,5 @@ export default class GhSimplemde extends TextArea {
this.onEditorInit(this._editor);
})
initSimpleMDE;
initSimpleMDE;
}

View File

@ -18,7 +18,7 @@ export default class GhTimezoneSelect extends Component {
update = () => {};
@mapBy('availableTimezones', 'name')
availableTimezoneNames;
availableTimezoneNames;
@computed('timezone', 'availableTimezoneNames')
get hasTimezoneOverride() {

View File

@ -10,7 +10,7 @@ import {readOnly} from '@ember/object/computed';
@classNameBindings('internal:tag-token--internal')
export default class TagToken extends DraggableObject {
@readOnly('content.isInternal')
internal;
internal;
@computed('idx', 'internal')
get primary() {

View File

@ -118,7 +118,7 @@ class Filter {
}
export default class MembersFilter extends Component {
@service session
@service session;
@tracked filters = A([
new Filter({

View File

@ -35,7 +35,7 @@ export default class ModalCustomViewForm extends ModalComponent {
this.send('closeModal');
return view;
})
saveTask;
saveTask;
@task(function* () {
let view = yield this.customViews.deleteViewTask.perform(this.model);
@ -44,7 +44,7 @@ export default class ModalCustomViewForm extends ModalComponent {
this.router.transitionTo(routeName, {queryParams: resetQueryParams(routeName)});
return view;
})
deleteTask;
deleteTask;
// this is a hack to get around radio buttons not working with liquid-fire.
// The DOM is duplicated whilst animating-in so browsers end up setting the
@ -54,5 +54,5 @@ export default class ModalCustomViewForm extends ModalComponent {
yield timeout(200);
this.set('delayedModelColor', this.model.color);
})
_setDelayedModelColor;
_setDelayedModelColor;
}

View File

@ -41,7 +41,7 @@ export default class ModalFreeMembershipSettings extends ModalBase {
validateFreeSignupRedirect() {
return this._validateSignupRedirect(this.freeSignupRedirect, 'membersFreeSignupRedirect');
}
}
};
@task({drop: true})
*save() {

View File

@ -4,12 +4,12 @@ import {action} from '@ember/object';
import {tracked} from '@glimmer/tracking';
export default class CsvFileSelect extends Component {
labelText = 'Select or drop a CSV file'
labelText = 'Select or drop a CSV file';
@tracked
error = null
error = null;
@tracked
dragClass = null
dragClass = null;
/*
constructor(...args) {

View File

@ -105,5 +105,5 @@ export default class ModalMemberProduct extends ModalComponent {
closeModal() {
this.close();
}
}
};
}

View File

@ -139,5 +139,5 @@ export default class ModalProductPrice extends ModalBase {
closeModal() {
this.close();
}
}
};
}

View File

@ -32,7 +32,7 @@ export default class ModalProductPrice extends ModalBase {
@tracked stripePlanError = '';
@tracked benefits = emberA([]);
@tracked newBenefit = null;
@tracked welcomePageURL
@tracked welcomePageURL;
confirm() {}
@ -99,6 +99,7 @@ export default class ModalProductPrice extends ModalBase {
return this.config.get('blogUrl');
}
// eslint-disable-next-line no-dupe-class-members
get welcomePageURL() {
return this.model.product.welcomePageURL;
}
@ -257,5 +258,5 @@ export default class ModalProductPrice extends ModalBase {
closeModal() {
this.close();
}
}
};
}

View File

@ -35,5 +35,5 @@ export default class ModalPostPreviewComponent extends ModalBase {
closeModal() {
this.close();
}
}
};
}

View File

@ -56,5 +56,5 @@ export default class ModalStripeConnect extends ModalBase {
closeModal() {
this.close();
}
}
};
}

View File

@ -202,7 +202,7 @@ export default class MembersEmail extends Component {
return false;
}
}).drop())
updateFromAddress;
updateFromAddress;
_getDerivedRecipientsSelectValue() {
const defaultEmailRecipients = this.settings.get('editorDefaultEmailRecipients');

View File

@ -17,7 +17,7 @@ export default class ApplicationController extends Controller {
@service ui;
@reads('config.hostSettings.billing.enabled')
showBilling;
showBilling;
@computed(
'router.currentRouteName',

View File

@ -8,5 +8,5 @@ export default class BillingController extends Controller {
action = null;
@alias('model')
guid;
guid;
}

View File

@ -123,15 +123,15 @@ export default class EditorController extends Controller {
/* computed properties ---------------------------------------------------*/
@alias('model')
post;
post;
// store the desired post status locally without updating the model,
// the model will only be updated when a save occurs
@boundOneWay('post.isPublished')
willPublish;
willPublish;
@boundOneWay('post.isScheduled')
willSchedule;
willSchedule;
// updateSlugTask and saveTask should always be enqueued so that we don't run into
// problems with concurrency, for example when Cmd-S is pressed whilst the
@ -139,10 +139,10 @@ export default class EditorController extends Controller {
// slug update and save resulting in ember data errors and inconsistent save
// results
@(taskGroup().enqueue())
saveTasks;
saveTasks;
@mapBy('post.tags', 'name')
_tagNames;
_tagNames;
@computed(...watchedProps)
get hasDirtyAttributes() {
@ -950,7 +950,7 @@ export default class EditorController extends Controller {
yield timeout(AUTOSAVE_TIMEOUT);
this.autosaveTask.perform();
}).restartable())
_autosaveTask;
_autosaveTask;
// save at 60 seconds even if the user doesn't stop typing
@(task(function* () {
@ -963,7 +963,7 @@ export default class EditorController extends Controller {
this.autosaveTask.perform();
}
}).drop())
_timedSaveTask;
_timedSaveTask;
/* Private methods -------------------------------------------------------*/

View File

@ -8,7 +8,7 @@ export default class ErrorController extends Controller {
stack = false;
@readOnly('model')
error;
error;
@computed('error.status')
get code() {

View File

@ -7,7 +7,7 @@ import {inject as service} from '@ember/service';
@classic
export default class PagesLoadingController extends PostsLoadingController {
@controller('pages')
postsController;
postsController;
@service ui;
}

View File

@ -7,39 +7,39 @@ import {inject as service} from '@ember/service';
@classic
export default class PostsLoadingController extends Controller {
@controller('posts')
postsController;
postsController;
@service session;
@service ui;
@service config;
@readOnly('postsController.availableTypes')
availableTypes;
availableTypes;
@readOnly('postsController.selectedType')
selectedType;
selectedType;
@readOnly('postsController.selectedVisibility')
selectedVisibility;
selectedVisibility;
@readOnly('postsController.availableVisibilities')
availableVisibilities;
availableVisibilities;
@readOnly('postsController.availableTags')
availableTags;
availableTags;
@readOnly('postsController.selectedTag')
selectedTag;
selectedTag;
@readOnly('postsController.availableAuthors')
availableAuthors;
availableAuthors;
@readOnly('postsController.selectedAuthor')
selectedAuthor;
selectedAuthor;
@readOnly('postsController.availableOrders')
availableOrders;
availableOrders;
@readOnly('postsController.selectedOrder')
selectedOrder;
selectedOrder;
}

View File

@ -81,7 +81,7 @@ export default class PostsController extends Controller {
}
@alias('model')
postsInfinityModel;
postsInfinityModel;
@computed('type', 'author', 'tag')
get showingAll() {

View File

@ -66,5 +66,5 @@ export default class CodeInjectionController extends Controller {
throw error;
}
})
saveTask;
saveTask;
}

View File

@ -102,7 +102,7 @@ export default class ChangeThemeController extends Controller {
previewUrl: 'https://london.ghost.io',
ref: 'TryGhost/London',
image: 'assets/img/themes/London.jpg'
}]
}];
get themesList() {
const activeTheme = this.themes.findBy('active', true);

View File

@ -298,5 +298,5 @@ export default class GeneralController extends Controller {
throw error;
}
})
saveTask;
saveTask;
}

View File

@ -31,7 +31,7 @@ export default class IntegrationController extends Controller {
}
@alias('model')
integration;
integration;
@computed
get apiUrl() {
@ -188,23 +188,23 @@ export default class IntegrationController extends Controller {
@task(function* () {
return yield this.integration.save();
})
saveTask;
saveTask;
@task(function* () {
copyTextToClipboard(this.integration.contentKey.secret);
yield timeout(this.isTesting ? 50 : 3000);
})
copyContentKey;
copyContentKey;
@task(function* () {
copyTextToClipboard(this.integration.adminKey.secret);
yield timeout(this.isTesting ? 50 : 3000);
})
copyAdminKey;
copyAdminKey;
@task(function* () {
copyTextToClipboard(this.apiUrl);
yield timeout(this.isTesting ? 50 : 3000);
})
copyApiUrl;
copyApiUrl;
}

View File

@ -6,7 +6,7 @@ import {alias} from '@ember/object/computed';
@classic
export default class EditController extends Controller {
@alias('model')
webhook;
webhook;
@action
save() {

View File

@ -6,7 +6,7 @@ import {alias} from '@ember/object/computed';
@classic
export default class NewController extends Controller {
@alias('model')
webhook;
webhook;
@action
save() {

View File

@ -38,7 +38,7 @@ export default class IntegrationsController extends Controller {
@task(function* () {
return yield this.store.findAll('integration');
})
fetchIntegrations;
fetchIntegrations;
// used by individual integration routes' `model` hooks
integrationModelHook(prop, value, route, transition) {

View File

@ -72,5 +72,5 @@ export default class AmpController extends Controller {
throw error;
}
}).drop())
saveTask;
saveTask;
}

View File

@ -72,5 +72,5 @@ export default class FirstpromoterController extends Controller {
throw error;
}
}).drop())
saveTask;
saveTask;
}

View File

@ -24,10 +24,10 @@ export default class SlackController extends Controller {
}
@boundOneWay('settings.slack.firstObject')
slackSettings;
slackSettings;
@empty('slackSettings.url')
testNotificationDisabled;
testNotificationDisabled;
@action
save() {
@ -122,7 +122,7 @@ export default class SlackController extends Controller {
}
}
}).drop())
saveTask;
saveTask;
@(task(function* () {
let notifications = this.notifications;
@ -141,5 +141,5 @@ export default class SlackController extends Controller {
}
}
}).drop())
sendTestNotification;
sendTestNotification;
}

View File

@ -72,5 +72,5 @@ export default class UnsplashController extends Controller {
throw error;
}
}).drop())
saveTask;
saveTask;
}

View File

@ -23,7 +23,7 @@ export default class ZapierController extends Controller {
}
@alias('model')
integration;
integration;
@computed
get apiUrl() {
@ -63,11 +63,11 @@ export default class ZapierController extends Controller {
copyTextToClipboard(this.integration.adminKey.secret);
yield timeout(this.isTesting ? 50 : 3000);
})
copyAdminKey;
copyAdminKey;
@task(function* () {
copyTextToClipboard(this.apiUrl);
yield timeout(this.isTesting ? 50 : 3000);
})
copyApiUrl;
copyApiUrl;
}

View File

@ -243,7 +243,7 @@ export default class LabsController extends Controller {
this.set('redirectFailure', null);
return true;
}).drop())
redirectUploadResult;
redirectUploadResult;
@(task(function* (success) {
this.set('routesSuccess', success);
@ -255,7 +255,7 @@ export default class LabsController extends Controller {
this.set('routesFailure', null);
return true;
}).drop())
routesUploadResult;
routesUploadResult;
reset() {
this.set('importErrors', null);

View File

@ -9,7 +9,7 @@ export default class MembersEmailController extends Controller {
@service session;
@service settings;
queryParams = ['showEmailDesignSettings']
queryParams = ['showEmailDesignSettings'];
// from/supportAddress are set here so that they can be reset to saved values on save
// to avoid it looking like they've been saved when they have a separate update process

View File

@ -24,19 +24,19 @@ export default class IndexController extends Controller {
}
@alias('model')
currentUser;
currentUser;
@sort('filteredInvites', 'inviteOrder')
sortedInvites;
sortedInvites;
@sort('activeUsers', 'userOrder')
sortedActiveUsers;
sortedActiveUsers;
@sort('suspendedUsers', 'userOrder')
sortedSuspendedUsers;
sortedSuspendedUsers;
@filterBy('invites', 'isNew', false)
filteredInvites;
filteredInvites;
@computed
get invites() {
@ -82,12 +82,12 @@ export default class IndexController extends Controller {
this.send('error', error);
}
})
backgroundUpdate;
backgroundUpdate;
@task(function* () {
yield this.store.query('user', {limit: 'all'});
})
fetchUsers;
fetchUsers;
@task(function* () {
if (this.currentUser.isAuthorOrContributor) {
@ -101,5 +101,5 @@ export default class IndexController extends Controller {
return yield this.store.query('invite', {limit: 'all'});
})
fetchInvites;
fetchInvites;
}

View File

@ -11,7 +11,7 @@ export default class SetupController extends Controller {
@service router;
@match('router.currentRouteName', /^setup\.(two|three)$/)
showBackLink;
showBackLink;
@computed('router.currentRouteName')
get backRoute() {

View File

@ -52,7 +52,7 @@ export default class TwoController extends Controller.extend(ValidationEngine) {
@task(function* () {
return yield this._passwordSetup();
})
setupTask;
setupTask;
@task(function* (authStrategy, authentication) {
// we don't want to redirect after sign-in during setup
@ -82,7 +82,7 @@ export default class TwoController extends Controller.extend(ValidationEngine) {
}
}
})
authenticate;
authenticate;
/**
* Uploads the given data image, then sends the changed user image property to the server

View File

@ -16,7 +16,7 @@ import {task} from 'ember-concurrency';
@classic
export default class SigninController extends Controller.extend(ValidationEngine) {
@controller
application;
application;
@service ajax;
@service config;
@ -40,7 +40,7 @@ export default class SigninController extends Controller.extend(ValidationEngine
}
@alias('model')
signin;
signin;
@computed('config.accent_color')
get accentColor() {
@ -106,7 +106,7 @@ export default class SigninController extends Controller.extend(ValidationEngine
return false;
}
}).drop())
authenticateTask;
authenticateTask;
@(task(function* () {
let signin = this.signin;
@ -128,7 +128,7 @@ export default class SigninController extends Controller.extend(ValidationEngine
this.set('flowErrors', 'Please fill out the form to sign in.');
}
}).drop())
validateAndAuthenticate;
validateAndAuthenticate;
@task(function* () {
let email = this.get('signin.identification');
@ -170,5 +170,5 @@ export default class SigninController extends Controller.extend(ValidationEngine
}
}
})
forgotten;
forgotten;
}

View File

@ -5,5 +5,5 @@ import {alias} from '@ember/object/computed';
@classic
export default class SiteController extends Controller {
@alias('model')
guid;
guid;
}

View File

@ -17,7 +17,7 @@ export default class TagController extends Controller {
showDeleteTagModal = false;
@alias('model')
tag;
tag;
@computed('tag')
get scratchTag() {
@ -111,7 +111,7 @@ export default class TagController extends Controller {
}
}
}).drop())
saveTask;
saveTask;
@task(function* (slug) {
this.set('isLoading', true);
@ -122,7 +122,7 @@ export default class TagController extends Controller {
return tag;
});
})
fetchTag;
fetchTag;
_saveTagProperty(propKey, newValue) {
let tag = this.tag;

View File

@ -12,7 +12,7 @@ export default class TagsController extends Controller {
type = 'public';
@alias('model')
tags;
tags;
@computed('tags.@each.isNew', 'type')
get filteredTags() {
@ -26,7 +26,7 @@ export default class TagsController extends Controller {
// ignorePunctuation means the # in internal tag names is ignored
return tagA.name.localeCompare(tagB.name, undefined, {ignorePunctuation: true});
})
sortedTags;
sortedTags;
@action
changeType(type) {

View File

@ -24,6 +24,7 @@ export default class EditRoute extends AuthenticatedRoute {
}
let query = {
// eslint-disable-next-line camelcase
id: post_id
};

View File

@ -24,7 +24,7 @@ export default class MembershipSettingsRoute extends AdminRoute {
willTransition(transition) {
return this.controller.leaveRoute(transition);
}
}
};
buildRouteInfoMetadata() {
return {

View File

@ -3,7 +3,7 @@ import {action} from '@ember/object';
import {inject as service} from '@ember/service';
export default class ProductRoute extends AdminRoute {
@service store
@service store;
@service router;
_requiresBackgroundRefresh = true;

View File

@ -2,7 +2,7 @@ import AdminRoute from 'ghost-admin/routes/admin';
import {inject as service} from '@ember/service';
export default class ProductsRoute extends AdminRoute {
@service store
@service store;
buildRouteInfoMetadata() {
return {

View File

@ -4,5 +4,5 @@ import ApplicationSerializer from 'ghost-admin/serializers/application';
export default class ActionSerializer extends ApplicationSerializer {
attrs = {
createdAtUTC: {key: 'created_at'}
}
};
}

View File

@ -5,5 +5,5 @@ export default class ApiKeySerializer extends ApplicationSerializer {
lastSeenAtUTC: {key: 'last_seen_at'},
createdAtUTC: {key: 'created_at'},
updatedAtUTC: {key: 'updated_at'}
}
};
}

View File

@ -4,7 +4,7 @@ import {EmbeddedRecordsMixin} from '@ember-data/serializer/rest';
export default class CustomThemeSettingList extends ApplicationSerializer.extend(EmbeddedRecordsMixin) {
attrs = {
customThemeSettings: {embedded: 'always'}
}
};
serializeIntoHash(hash, type, record, options) {
// replace the whole request hash with the embedded custom_theme_settings array

View File

@ -9,5 +9,5 @@ export default class EmailRecipientSerializer extends ApplicationSerializer.exte
openedAtUTC: {key: 'opened_at'},
failedAtUTC: {key: 'failed_at'},
email: {embedded: 'always'}
}
};
}

View File

@ -6,5 +6,5 @@ export default class EmailSerializer extends ApplicationSerializer {
createdAtUTC: {key: 'created_at'},
updatedAtUTC: {key: 'updated_at'},
submittedAtUTC: {key: 'submitted_at'}
}
};
}

View File

@ -7,5 +7,5 @@ export default class IntegrationSerializer extends ApplicationSerializer.extend(
webhooks: {embedded: 'always'},
createdAtUTC: {key: 'created_at'},
updatedAtUTC: {key: 'updated_at'}
}
};
}

View File

@ -4,5 +4,5 @@ export default class InviteSerializer extends ApplicationSerializer {
attrs = {
createdAtUTC: {key: 'created_at'},
updatedAtUTC: {key: 'updated_at'}
}
};
}

View File

@ -6,7 +6,7 @@ export default class LabelSerializer extends ApplicationSerializer {
attrs = {
createdAtUTC: {key: 'created_at'},
updatedAtUTC: {key: 'updated_at'}
}
};
serialize(/*snapshot, options*/) {
let json = super.serialize(...arguments);

View File

@ -7,7 +7,7 @@ export default class MemberSerializer extends ApplicationSerializer.extend(Embed
createdAtUTC: {key: 'created_at'},
labels: {embedded: 'always'},
emailRecipients: {embedded: 'always'}
}
};
serialize(/*snapshot, options*/) {
let json = super.serialize(...arguments);

View File

@ -3,5 +3,5 @@ import ApplicationSerializer from 'ghost-admin/serializers/application';
export default class NotificationSerializer extends ApplicationSerializer {
attrs = {
key: {key: 'location'}
}
};
}

View File

@ -12,7 +12,7 @@ export default class PostSerializer extends ApplicationSerializer.extend(Embedde
createdAtUTC: {key: 'created_at'},
updatedAtUTC: {key: 'updated_at'},
email: {embedded: 'always'}
}
};
normalizeSingleResponse(store, primaryModelClass, payload) {
let root = this.keyForAttribute(primaryModelClass.modelName);

View File

@ -4,5 +4,5 @@ export default class ActionSerializer extends ApplicationSerializer {
attrs = {
createdAtUTC: {key: 'created_at'},
updatedAtUTC: {key: 'updated_at'}
}
};
}

View File

@ -6,7 +6,7 @@ export default class TagSerializer extends ApplicationSerializer {
attrs = {
createdAtUTC: {key: 'created_at'},
updatedAtUTC: {key: 'updated_at'}
}
};
serialize(/*snapshot, options*/) {
let json = super.serialize(...arguments);

View File

@ -8,7 +8,7 @@ export default class UserSerializer extends ApplicationSerializer.extend(Embedde
lastLoginUTC: {key: 'last_seen'},
createdAtUTC: {key: 'created_at'},
updatedAtUTC: {key: 'updated_at'}
}
};
extractSingle(store, primaryType, payload) {
let root = this.keyForAttribute(primaryType.modelName);

View File

@ -5,5 +5,5 @@ export default class ActionSerializer extends ApplicationSerializer {
lastTriggeredAtUTC: {key: 'last_triggered_at'},
createdAtUTC: {key: 'created_at'},
updatedAtUTC: {key: 'updated_at'}
}
};
}

View File

@ -50,42 +50,42 @@ export default class FeatureService extends Service {
// features
@feature('emailAnalytics')
emailAnalytics;
emailAnalytics;
// user-specific flags
@feature('nightShift', {user: true, onChange: '_setAdminTheme'})
nightShift;
nightShift;
@feature('dashboardHideGettingStarted', {user: true})
dashboardHideGettingStarted;
dashboardHideGettingStarted;
// labs flags
@feature('multipleProducts')
multipleProducts;
multipleProducts;
@feature('oauthLogin')
oauthLogin;
oauthLogin;
@feature('membersActivity')
membersActivity;
membersActivity;
@feature('urlCache')
urlCache;
urlCache;
@feature('beforeAfterCard')
beforeAfterCard;
beforeAfterCard;
@feature('tweetGridCard')
tweetGridCard;
tweetGridCard;
@feature('membersActivityFeed')
membersActivityFeed;
membersActivityFeed;
@feature('improvedOnboarding')
improvedOnboarding;
improvedOnboarding;
@feature('tierWelcomePages')
tierWelcomePages;
tierWelcomePages;
@feature('tierName')
tierName;

View File

@ -8,7 +8,7 @@ export default class ModalsService extends EPMModalsService {
DEFAULT_OPTIONS = {
className: 'fullscreen-modal-action fullscreen-modal-wide'
}
};
MODAL_OPTIONS = {
'modals/custom-view-form': {
@ -28,7 +28,7 @@ export default class ModalsService extends EPMModalsService {
className: 'fullscreen-modal-total-overlay',
omitBackdrop: true
}
}
};
// we manually close modals on backdrop clicks and escape rather than letting focus-trap
// handle it so we can intercept/abort closing for things like unsaved change confirmations

View File

@ -39,13 +39,13 @@ export default class NotificationsService extends Service {
let status = get(notification, 'status');
return status === 'alert';
})
alerts;
alerts;
@filter('content', function (notification) {
let status = get(notification, 'status');
return status === 'notification';
})
notifications;
notifications;
handleNotification(message, delayed) {
// If this is an alert message from the server, treat it as html safe

View File

@ -28,7 +28,7 @@ export default class ThemeManagementService extends Service {
}, {
name: 'post',
label: 'Post'
}]
}];
get latestPublishedPost() {
return this.allPosts.toArray().filterBy('status', 'published').sort((a, b) => {

View File

@ -48,7 +48,7 @@ export default class KoenigCardAudioComponent extends Component {
audioMimeTypes = AUDIO_MIME_TYPES;
imageExtensions = IMAGE_EXTENSIONS;
imageMimeTypes = IMAGE_MIME_TYPES;
placeholder = PLACEHOLDERS[Math.floor(Math.random() * PLACEHOLDERS.length)]
placeholder = PLACEHOLDERS[Math.floor(Math.random() * PLACEHOLDERS.length)];
payloadAudioAttrs = ['src', 'title', 'duration', 'mimeType', 'thumbnailSrc'];

View File

@ -177,7 +177,7 @@ export default class KoenigCardBookmark extends Component {
this.set('hasError', true);
}
}).drop())
convertUrl;
convertUrl;
_focusInput() {
let urlInput = this.element.querySelector('[name="url"]');

View File

@ -210,7 +210,7 @@ export default class KoenigCardEmbed extends Component {
this.set('hasError', true);
}
}).drop())
convertUrl;
convertUrl;
_focusInput() {
let urlInput = this.element.querySelector('[name="url"]');

View File

@ -33,7 +33,7 @@ export default class KoenigCardFileComponent extends Component {
// at which point it will be saved to the real payload and the preview deleted
@tracked previewPayload = new TrackedObject({});
placeholder = PLACEHOLDERS[Math.floor(Math.random() * PLACEHOLDERS.length)]
placeholder = PLACEHOLDERS[Math.floor(Math.random() * PLACEHOLDERS.length)];
payloadFileAttrs = ['src', 'fileName', 'fileTitle', 'fileCaption', 'fileSize', 'mimeType'];

View File

@ -233,5 +233,5 @@ export default class KoenigCardMarkdown extends Component {
yield timeout(500);
this.set('preventClick', false);
})
_preventAccidentalClick;
_preventAccidentalClick;
}

View File

@ -58,7 +58,7 @@ export default class KoenigCardVideoComponent extends Component {
imageExtensions = IMAGE_EXTENSIONS;
imageMimeTypes = IMAGE_MIME_TYPES;
placeholder = PLACEHOLDERS[Math.floor(Math.random() * PLACEHOLDERS.length)]
placeholder = PLACEHOLDERS[Math.floor(Math.random() * PLACEHOLDERS.length)];
payloadVideoAttrs = ['src', 'fileName', 'width', 'height', 'duration', 'mimeType', 'thumbnailSrc', 'thumbnailWidth', 'thumbnailHeight'];

View File

@ -1327,7 +1327,7 @@ export default class KoenigEditor extends Component {
this._cleanupScheduled = false;
})
_cleanupTask;
_cleanupTask;
// nested editor.run loops will create additional undo steps so this is a
// shortcut for when we already have a postEditor

View File

@ -187,7 +187,7 @@ export default class KoenigToolbar extends Component {
this._skipMousemove = false;
}).restartable())
_toggleVisibility;
_toggleVisibility;
_handleMousedown(event) {
// we only care about the left mouse button

View File

@ -29,7 +29,9 @@ export default function providers() {
let domain = hostname ? hostname.replace('www.', '') : '';
return {
// eslint-disable-next-line camelcase
provider_name,
// eslint-disable-next-line camelcase
provider_url,
schemes,
domain,

View File

@ -26,6 +26,9 @@
"node": "^12.22.1 || ^14.17.0 || ^16.13.0"
},
"devDependencies": {
"@babel/eslint-parser": "^7.17.0",
"@babel/plugin-proposal-class-properties": "^7.16.7",
"@babel/plugin-proposal-decorators": "^7.17.2",
"@ember/jquery": "2.0.0",
"@ember/optional-features": "2.0.0",
"@ember/render-modifiers": "2.0.4",
@ -45,7 +48,6 @@
"@tryghost/string": "0.1.22",
"@tryghost/timezone-data": "0.2.55",
"autoprefixer": "9.8.6",
"babel-eslint": "10.1.0",
"blueimp-md5": "2.19.0",
"broccoli-asset-rev": "3.0.0",
"broccoli-concat": "4.2.5",
@ -116,7 +118,7 @@
"ember-truth-helpers": "3.0.0",
"ember-useragent": "0.11.0",
"emberx-file-input": "1.2.1",
"eslint": "7.32.0",
"eslint": "8.8.0",
"eslint-plugin-ghost": "2.12.0",
"faker": "5.5.3",
"fs-extra": "10.0.0",

254
yarn.lock
View File

@ -2,13 +2,6 @@
# yarn lockfile v1
"@babel/code-frame@7.12.11":
version "7.12.11"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
dependencies:
"@babel/highlight" "^7.10.4"
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789"
@ -63,6 +56,15 @@
semver "^6.3.0"
source-map "^0.5.0"
"@babel/eslint-parser@^7.17.0":
version "7.17.0"
resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz#eabb24ad9f0afa80e5849f8240d0e5facc2d90d6"
integrity sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==
dependencies:
eslint-scope "^5.1.1"
eslint-visitor-keys "^2.1.0"
semver "^6.3.0"
"@babel/generator@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.7.tgz#b42bf46a3079fa65e1544135f32e7958f048adbb"
@ -119,6 +121,19 @@
"@babel/helper-replace-supers" "^7.16.7"
"@babel/helper-split-export-declaration" "^7.16.7"
"@babel/helper-create-class-features-plugin@^7.17.1":
version "7.17.1"
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz#9699f14a88833a7e055ce57dcd3ffdcd25186b21"
integrity sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ==
dependencies:
"@babel/helper-annotate-as-pure" "^7.16.7"
"@babel/helper-environment-visitor" "^7.16.7"
"@babel/helper-function-name" "^7.16.7"
"@babel/helper-member-expression-to-functions" "^7.16.7"
"@babel/helper-optimise-call-expression" "^7.16.7"
"@babel/helper-replace-supers" "^7.16.7"
"@babel/helper-split-export-declaration" "^7.16.7"
"@babel/helper-create-regexp-features-plugin@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48"
@ -288,7 +303,7 @@
"@babel/traverse" "^7.16.7"
"@babel/types" "^7.16.7"
"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7":
"@babel/highlight@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.7.tgz#81a01d7d675046f0d96f82450d9d9578bdfd6b0b"
integrity sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==
@ -297,7 +312,7 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
"@babel/parser@^7.12.3", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.4.5", "@babel/parser@^7.7.0":
"@babel/parser@^7.12.3", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.4.5":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.7.tgz#d372dda9c89fcec340a82630a9f533f2fe15877e"
integrity sha512-sR4eaSrnM7BV7QPzGfEX5paG/6wrZM3I0HDzfIAK06ESvo9oy3xBuVBxE3MbQaKNhvg8g/ixjMWo2CGpzpHsDA==
@ -358,6 +373,17 @@
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-decorators" "^7.16.7"
"@babel/plugin-proposal-decorators@^7.17.2":
version "7.17.2"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.2.tgz#c36372ddfe0360cac1ee331a238310bddca11493"
integrity sha512-WH8Z95CwTq/W8rFbMqb9p3hicpt4RX4f0K659ax2VHxgOyT6qQmUaEVEjIh4WR9Eh9NymkVn5vwsrE68fAQNUw==
dependencies:
"@babel/helper-create-class-features-plugin" "^7.17.1"
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/helper-replace-supers" "^7.16.7"
"@babel/plugin-syntax-decorators" "^7.17.0"
charcodes "^0.2.0"
"@babel/plugin-proposal-dynamic-import@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2"
@ -488,6 +514,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-decorators@^7.17.0":
version "7.17.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz#a2be3b2c9fe7d78bd4994e790896bc411e2f166d"
integrity sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-dynamic-import@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
@ -998,7 +1031,7 @@
"@babel/parser" "^7.16.7"
"@babel/types" "^7.16.7"
"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0":
"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.4.5":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.7.tgz#dac01236a72c2560073658dd1a285fe4e0865d76"
integrity sha512-8KWJPIb8c2VvY8AJrydh6+fVRo2ODx1wYBU2398xJVq0JomuLBZmVQzLPBblJgHIGYG4znCpUZUZ0Pt2vdmVYQ==
@ -1030,7 +1063,7 @@
debug "^4.1.0"
globals "^11.1.0"
"@babel/types@^7.1.6", "@babel/types@^7.12.1", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.7.2":
"@babel/types@^7.1.6", "@babel/types@^7.12.1", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.4.4", "@babel/types@^7.7.2":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.7.tgz#4ed19d51f840ed4bd5645be6ce40775fecf03159"
integrity sha512-E8HuV7FO9qLpx6OtoGfUQ2cjIYnbFwvZWYBS+87EwtdMvmUPJSwykpovFB+8insbpF0uJcpr8KMUi64XZntZcg==
@ -1614,18 +1647,18 @@
broccoli-funnel "^3.0.5"
ember-cli-babel "^7.23.1"
"@eslint/eslintrc@^0.4.3":
version "0.4.3"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==
"@eslint/eslintrc@^1.0.5":
version "1.0.5"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.0.5.tgz#33f1b838dbf1f923bfa517e008362b78ddbbf318"
integrity sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==
dependencies:
ajv "^6.12.4"
debug "^4.1.1"
espree "^7.3.0"
debug "^4.3.2"
espree "^9.2.0"
globals "^13.9.0"
ignore "^4.0.6"
import-fresh "^3.2.1"
js-yaml "^3.13.1"
js-yaml "^4.1.0"
minimatch "^3.0.4"
strip-json-comments "^3.1.1"
@ -1853,16 +1886,16 @@
ember-compatibility-helpers "^1.2.1"
ember-raf-scheduler "0.2.0"
"@humanwhocodes/config-array@^0.5.0":
version "0.5.0"
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9"
integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==
"@humanwhocodes/config-array@^0.9.2":
version "0.9.3"
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.3.tgz#f2564c744b387775b436418491f15fce6601f63e"
integrity sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==
dependencies:
"@humanwhocodes/object-schema" "^1.2.0"
"@humanwhocodes/object-schema" "^1.2.1"
debug "^4.1.1"
minimatch "^3.0.4"
"@humanwhocodes/object-schema@^1.2.0":
"@humanwhocodes/object-schema@^1.2.1":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
@ -2540,12 +2573,12 @@ acorn@^6.0.7, acorn@^6.4.1:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0:
acorn@^7.1.0, acorn@^7.1.1:
version "7.4.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
acorn@^8.2.4:
acorn@^8.2.4, acorn@^8.7.0:
version "8.7.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==
@ -2577,16 +2610,6 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.9.1:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
ajv@^8.0.1:
version "8.8.2"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.8.2.tgz#01b4fef2007a28bf75f0b7fc009f62679de4abbb"
integrity sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==
dependencies:
fast-deep-equal "^3.1.1"
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
uri-js "^4.2.2"
alphanum-sort@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
@ -2612,11 +2635,6 @@ amdefine@>=0.0.4:
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
ansi-colors@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
ansi-escapes@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
@ -2850,11 +2868,6 @@ astral-regex@^1.0.0:
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
astral-regex@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
async-disk-cache@^1.2.1:
version "1.3.5"
resolved "https://registry.yarnpkg.com/async-disk-cache/-/async-disk-cache-1.3.5.tgz#cc6206ed79bb6982b878fc52e0505e4f52b62a02"
@ -2996,18 +3009,6 @@ babel-core@^6.26.0, babel-core@^6.26.3:
slash "^1.0.0"
source-map "^0.5.7"
babel-eslint@10.1.0:
version "10.1.0"
resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232"
integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==
dependencies:
"@babel/code-frame" "^7.0.0"
"@babel/parser" "^7.7.0"
"@babel/traverse" "^7.7.0"
"@babel/types" "^7.7.0"
eslint-visitor-keys "^1.0.0"
resolve "^1.12.0"
babel-generator@^6.26.0:
version "6.26.1"
resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90"
@ -4857,6 +4858,11 @@ chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2, chalk@~4.1.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
charcodes@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/charcodes/-/charcodes-0.2.0.tgz#5208d327e6cc05f99eb80ffc814707572d1f14e4"
integrity sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==
chardet@^0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
@ -5788,7 +5794,7 @@ debug@2.6.9, debug@^2.1.0, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.3.
dependencies:
ms "2.0.0"
debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@~4.3.1, debug@~4.3.2:
debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.2, debug@~4.3.1, debug@~4.3.2:
version "4.3.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
@ -7592,13 +7598,6 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.5.0:
memory-fs "^0.5.0"
tapable "^1.0.0"
enquirer@^2.3.5:
version "2.3.6"
resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
dependencies:
ansi-colors "^4.1.1"
ensure-posix-path@^1.0.0, ensure-posix-path@^1.0.1, ensure-posix-path@^1.0.2, ensure-posix-path@^1.1.0, ensure-posix-path@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ensure-posix-path/-/ensure-posix-path-1.1.1.tgz#3c62bdb19fa4681544289edb2b382adc029179ce"
@ -7823,6 +7822,14 @@ eslint-scope@^5.1.1:
esrecurse "^4.3.0"
estraverse "^4.1.1"
eslint-scope@^7.1.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.0.tgz#c1f6ea30ac583031f203d65c73e723b01298f153"
integrity sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==
dependencies:
esrecurse "^4.3.0"
estraverse "^5.2.0"
eslint-utils@^1.3.1:
version "1.4.3"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f"
@ -7830,7 +7837,7 @@ eslint-utils@^1.3.1:
dependencies:
eslint-visitor-keys "^1.1.0"
eslint-utils@^2.0.0, eslint-utils@^2.1.0:
eslint-utils@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
@ -7844,59 +7851,59 @@ eslint-utils@^3.0.0:
dependencies:
eslint-visitor-keys "^2.0.0"
eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
eslint-visitor-keys@^2.0.0:
eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
eslint@7.32.0:
version "7.32.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d"
integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==
eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz#6fbb166a6798ee5991358bc2daa1ba76cc1254a1"
integrity sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==
eslint@8.8.0:
version "8.8.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.8.0.tgz#9762b49abad0cb4952539ffdb0a046392e571a2d"
integrity sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==
dependencies:
"@babel/code-frame" "7.12.11"
"@eslint/eslintrc" "^0.4.3"
"@humanwhocodes/config-array" "^0.5.0"
"@eslint/eslintrc" "^1.0.5"
"@humanwhocodes/config-array" "^0.9.2"
ajv "^6.10.0"
chalk "^4.0.0"
cross-spawn "^7.0.2"
debug "^4.0.1"
debug "^4.3.2"
doctrine "^3.0.0"
enquirer "^2.3.5"
escape-string-regexp "^4.0.0"
eslint-scope "^5.1.1"
eslint-utils "^2.1.0"
eslint-visitor-keys "^2.0.0"
espree "^7.3.1"
eslint-scope "^7.1.0"
eslint-utils "^3.0.0"
eslint-visitor-keys "^3.2.0"
espree "^9.3.0"
esquery "^1.4.0"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
file-entry-cache "^6.0.1"
functional-red-black-tree "^1.0.1"
glob-parent "^5.1.2"
glob-parent "^6.0.1"
globals "^13.6.0"
ignore "^4.0.6"
ignore "^5.2.0"
import-fresh "^3.0.0"
imurmurhash "^0.1.4"
is-glob "^4.0.0"
js-yaml "^3.13.1"
js-yaml "^4.1.0"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.4.1"
lodash.merge "^4.6.2"
minimatch "^3.0.4"
natural-compare "^1.4.0"
optionator "^0.9.1"
progress "^2.0.0"
regexpp "^3.1.0"
semver "^7.2.1"
strip-ansi "^6.0.0"
regexpp "^3.2.0"
strip-ansi "^6.0.1"
strip-json-comments "^3.1.0"
table "^6.0.9"
text-table "^0.2.0"
v8-compile-cache "^2.0.3"
@ -7956,14 +7963,14 @@ espree@^5.0.1:
acorn-jsx "^5.0.0"
eslint-visitor-keys "^1.0.0"
espree@^7.3.0, espree@^7.3.1:
version "7.3.1"
resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==
espree@^9.2.0, espree@^9.3.0:
version "9.3.0"
resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.0.tgz#c1240d79183b72aaee6ccfa5a90bc9111df085a8"
integrity sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==
dependencies:
acorn "^7.4.0"
acorn "^8.7.0"
acorn-jsx "^5.3.1"
eslint-visitor-keys "^1.3.0"
eslint-visitor-keys "^3.1.0"
esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0:
version "4.0.1"
@ -9004,6 +9011,13 @@ glob-parent@^5.1.2, glob-parent@~5.1.2:
dependencies:
is-glob "^4.0.1"
glob-parent@^6.0.1:
version "6.0.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
dependencies:
is-glob "^4.0.3"
glob@3.2.11:
version "3.2.11"
resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d"
@ -10261,6 +10275,13 @@ js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.14.0, js-yaml@^3.2.5, js-yaml@^3.2.
argparse "^1.0.7"
esprima "^4.0.0"
js-yaml@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
dependencies:
argparse "^2.0.1"
jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
@ -10334,11 +10355,6 @@ json-schema-traverse@^0.4.1:
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
json-schema-traverse@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
json-schema@0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5"
@ -10911,11 +10927,6 @@ lodash.templatesettings@^4.0.0:
dependencies:
lodash._reinterpolate "^3.0.0"
lodash.truncate@^4.4.2:
version "4.4.2"
resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=
lodash.uniq@^4.2.0, lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
@ -13430,7 +13441,7 @@ regexpp@^2.0.1:
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
regexpp@^3.0.0, regexpp@^3.1.0:
regexpp@^3.0.0, regexpp@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
@ -13533,11 +13544,6 @@ require-directory@^2.1.1:
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
require-from-string@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
require-relative@^0.8.7:
version "0.8.7"
resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de"
@ -13630,7 +13636,7 @@ resolve-url@^0.2.1:
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.15.1, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0:
resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.1, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.15.1, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0:
version "1.20.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
@ -13881,7 +13887,7 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5:
semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5:
version "7.3.5"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
@ -14069,15 +14075,6 @@ slice-ansi@^2.1.0:
astral-regex "^1.0.0"
is-fullwidth-code-point "^2.0.0"
slice-ansi@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
dependencies:
ansi-styles "^4.0.0"
astral-regex "^2.0.0"
is-fullwidth-code-point "^3.0.0"
snake-case@^3.0.3:
version "3.0.4"
resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c"
@ -14665,17 +14662,6 @@ table@^5.2.3:
slice-ansi "^2.1.0"
string-width "^3.0.0"
table@^6.0.9:
version "6.7.5"
resolved "https://registry.yarnpkg.com/table/-/table-6.7.5.tgz#f04478c351ef3d8c7904f0e8be90a1b62417d238"
integrity sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw==
dependencies:
ajv "^8.0.1"
lodash.truncate "^4.4.2"
slice-ansi "^4.0.0"
string-width "^4.2.3"
strip-ansi "^6.0.1"
tap-parser@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-7.0.0.tgz#54db35302fda2c2ccc21954ad3be22b2cba42721"