diff --git a/.eslintrc.js b/.eslintrc.js index a837ac036..575d03877 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -28,8 +28,8 @@ module.exports = { 'plugin:@typescript-eslint/recommended', ], rules: { - "no-shadow": "off", - "@typescript-eslint/no-shadow": ["error"], + 'no-shadow': 'off', + '@typescript-eslint/no-shadow': ['error'], 'import/no-unresolved': [ 2, { @@ -38,18 +38,20 @@ module.exports = { ], }, ], - } + }, }, ], rules: { 'no-sparse-arrays': 'off', - 'import/no-extraneous-dependencies': ["error", { "packageDir": "./" }], + 'import/no-extraneous-dependencies': ['error', { packageDir: './' }], 'react/jsx-filename-extension': [2, { extensions: ['.js', '.jsx', '.ts', '.tsx'] }], 'import/prefer-default-export': 'off', 'react/prop-types': 'off', 'react/require-default-props': 'off', 'react/no-unused-prop-types': 'off', 'no-underscore-dangle': 'off', + 'no-use-before-define': 'off', + '@typescript-eslint/no-use-before-define': ['error'], 'import/extensions': [ 'error', 'ignorePackages', diff --git a/package.json b/package.json index 948c50fb1..5175c6a7a 100644 --- a/package.json +++ b/package.json @@ -248,19 +248,19 @@ "@types/webpack-dev-middleware": "4.0.0", "@types/webpack-env": "^1.15.3", "@types/webpack-hot-middleware": "2.25.3", - "@typescript-eslint/eslint-plugin": "^4.8.1", - "@typescript-eslint/parser": "4.0.1", + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", "babel-eslint": "^10.0.1", "babel-plugin-ignore-html-and-css-imports": "^0.1.0", "copyfiles": "^2.4.0", "cross-env": "^7.0.2", - "eslint": "^6.8.0", - "eslint-plugin-import": "^2.20.0", - "eslint-plugin-jest": "^23.16.0", - "eslint-plugin-jest-dom": "^3.0.1", - "eslint-plugin-jsx-a11y": "^6.2.1", - "eslint-plugin-react": "^7.18.0", - "eslint-plugin-react-hooks": "^2.3.0", + "eslint": "^8.0.0", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-jest": "^25.0.5", + "eslint-plugin-jest-dom": "^3.9.2", + "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-react": "^7.26.1", + "eslint-plugin-react-hooks": "^4.2.0", "form-data": "^3.0.0", "graphql-request": "^3.4.0", "mongodb": "^3.6.2", @@ -270,7 +270,7 @@ "passport-strategy": "^1.0.0", "release-it": "^14.2.2", "rimraf": "^3.0.2", - "typescript": "^4.1.2" + "typescript": "^4.4.4" }, "files": [ "bin.js", diff --git a/src/admin/components/elements/ListControls/index.tsx b/src/admin/components/elements/ListControls/index.tsx index bedc72695..2ac8f4489 100644 --- a/src/admin/components/elements/ListControls/index.tsx +++ b/src/admin/components/elements/ListControls/index.tsx @@ -1,5 +1,6 @@ import React, { useState } from 'react'; import AnimateHeight from 'react-animate-height'; +import { fieldIsNamed } from '../../../../fields/config/types'; import SearchFilter from '../SearchFilter'; import ColumnSelector from '../ColumnSelector'; import WhereBuilder from '../WhereBuilder'; @@ -8,9 +9,10 @@ import Button from '../Button'; import { Props } from './types'; import { useSearchParams } from '../../utilities/SearchParams'; -import './index.scss'; import validateWhereQuery from '../WhereBuilder/validateWhereQuery'; +import './index.scss'; + const baseClass = 'list-controls'; const ListControls: React.FC = (props) => { @@ -34,17 +36,17 @@ const ListControls: React.FC = (props) => { const params = useSearchParams(); const shouldInitializeWhereOpened = validateWhereQuery(params?.where); - const [titleField] = useState(() => fields.find((field) => field.name === useAsTitle)); + const [titleField] = useState(() => fields.find((field) => fieldIsNamed(field) && field.name === useAsTitle)); const [visibleDrawer, setVisibleDrawer] = useState<'where' | 'sort' | 'columns'>(shouldInitializeWhereOpened ? 'where' : undefined); return (
diff --git a/src/admin/components/elements/SortComplex/index.tsx b/src/admin/components/elements/SortComplex/index.tsx index 083a95f92..ac284790e 100644 --- a/src/admin/components/elements/SortComplex/index.tsx +++ b/src/admin/components/elements/SortComplex/index.tsx @@ -4,9 +4,10 @@ import { useHistory } from 'react-router-dom'; import { Props } from './types'; import ReactSelect from '../ReactSelect'; import sortableFieldTypes from '../../../../fields/sortableFieldTypes'; +import { useSearchParams } from '../../utilities/SearchParams'; +import { fieldIsNamed } from '../../../../fields/config/types'; import './index.scss'; -import { useSearchParams } from '../../utilities/SearchParams'; const baseClass = 'sort-complex'; @@ -23,7 +24,7 @@ const SortComplex: React.FC = (props) => { const params = useSearchParams(); const [sortFields] = useState(() => collection.fields.reduce((fields, field) => { - if (field.name && sortableFieldTypes.indexOf(field.type) > -1) { + if (fieldIsNamed(field) && sortableFieldTypes.indexOf(field.type) > -1) { return [ ...fields, { label: field.label, value: field.name }, diff --git a/src/admin/components/forms/DraggableSection/index.tsx b/src/admin/components/forms/DraggableSection/index.tsx index 45329f2b3..f9381f74b 100644 --- a/src/admin/components/forms/DraggableSection/index.tsx +++ b/src/admin/components/forms/DraggableSection/index.tsx @@ -13,6 +13,7 @@ import { Props } from './types'; import HiddenInput from '../field-types/HiddenInput'; import './index.scss'; +import { fieldIsNamed } from '../../../../fields/config/types'; const baseClass = 'draggable-section'; @@ -111,7 +112,7 @@ const DraggableSection: React.FC = (props) => { permissions={permissions?.fields} fieldSchema={fieldSchema.map((field) => ({ ...field, - path: `${parentPath}.${rowIndex}${field.name ? `.${field.name}` : ''}`, + path: `${parentPath}.${rowIndex}${fieldIsNamed(field) ? `.${field.name}` : ''}`, }))} /> diff --git a/src/admin/components/forms/Form/buildStateFromSchema.ts b/src/admin/components/forms/Form/buildStateFromSchema.ts index d3e9758dc..f214e13af 100644 --- a/src/admin/components/forms/Form/buildStateFromSchema.ts +++ b/src/admin/components/forms/Form/buildStateFromSchema.ts @@ -1,5 +1,5 @@ import ObjectID from 'bson-objectid'; -import { Field as FieldSchema } from '../../../../fields/config/types'; +import { Field as FieldSchema, fieldIsNamed, NamedField } from '../../../../fields/config/types'; import { Fields, Field, Data } from './types'; const buildValidationPromise = async (fieldState: Field, field: FieldSchema) => { @@ -44,13 +44,13 @@ const buildStateFromSchema = async (fieldSchema: FieldSchema[], fullData: Data = let initialData = data; if (!field?.admin?.disabled) { - if (field.name && field.defaultValue && typeof initialData?.[field.name] === 'undefined') { + if (fieldIsNamed(field) && field.defaultValue && typeof initialData?.[field.name] === 'undefined') { initialData = { [field.name]: field.defaultValue }; } const passesCondition = Boolean((field?.admin?.condition ? field.admin.condition(fullData || {}, initialData || {}) : true) && parentPassesCondition); - if (field.name) { + if (fieldIsNamed(field)) { if (field.type === 'relationship' && initialData?.[field.name] === null) { initialData[field.name] = 'null'; } @@ -135,10 +135,12 @@ const buildStateFromSchema = async (fieldSchema: FieldSchema[], fullData: Data = }; } + const namedField = field as NamedField; + // Handle normal fields return { ...state, - [`${path}${field.name}`]: structureFieldState(field, passesCondition, data), + [`${path}${namedField.name}`]: structureFieldState(field, passesCondition, data), }; } diff --git a/src/admin/components/forms/RenderFields/index.tsx b/src/admin/components/forms/RenderFields/index.tsx index d9100e8ce..e002899fa 100644 --- a/src/admin/components/forms/RenderFields/index.tsx +++ b/src/admin/components/forms/RenderFields/index.tsx @@ -2,6 +2,7 @@ import React, { createContext, useEffect, useContext, useState } from 'react'; import RenderCustomComponent from '../../utilities/RenderCustomComponent'; import useIntersect from '../../../hooks/useIntersect'; import { Props, Context } from './types'; +import { fieldIsNamed } from '../../../../fields/config/types'; const baseClass = 'render-fields'; @@ -69,14 +70,16 @@ const RenderFields: React.FC = (props) => { if ((filter && typeof filter === 'function' && filter(field)) || !filter) { const FieldComponent = field?.admin?.hidden ? fieldTypes.hidden : fieldTypes[field.type]; - const fieldPermissions = field?.name ? permissions?.[field.name] : permissions; + const isNamedField = fieldIsNamed(field); + + const fieldPermissions = isNamedField ? permissions?.[field.name] : permissions; let { admin: { readOnly } = {} } = field; if (readOnlyOverride) readOnly = true; - if (permissions?.[field?.name]?.read?.permission !== false) { - if (permissions?.[field?.name]?.[operation]?.permission === false) { + if ((isNamedField && permissions?.[field?.name]?.read?.permission !== false) || !isNamedField) { + if (isNamedField && permissions?.[field?.name]?.[operation]?.permission === false) { readOnly = true; } @@ -88,7 +91,7 @@ const RenderFields: React.FC = (props) => { DefaultComponent={FieldComponent} componentProps={{ ...field, - path: field.path || field.name, + path: field.path || (isNamedField ? field.name : undefined), fieldTypes, admin: { ...(field.admin || {}), diff --git a/src/admin/components/forms/field-types/Group/index.tsx b/src/admin/components/forms/field-types/Group/index.tsx index acbb3e0c8..bcba8b33c 100644 --- a/src/admin/components/forms/field-types/Group/index.tsx +++ b/src/admin/components/forms/field-types/Group/index.tsx @@ -5,6 +5,7 @@ import FieldDescription from '../../FieldDescription'; import FieldTypeGutter from '../../FieldTypeGutter'; import { NegativeFieldGutterProvider } from '../../FieldTypeGutter/context'; import { Props } from './types'; +import { fieldIsNamed } from '../../../../../fields/config/types'; import './index.scss'; @@ -41,7 +42,7 @@ const Group: React.FC = (props) => { width, }} > - { !hideGutter && () } + {!hideGutter && ()}
{(label || description) && ( @@ -63,7 +64,7 @@ const Group: React.FC = (props) => { fieldTypes={fieldTypes} fieldSchema={fields.map((subField) => ({ ...subField, - path: `${path}${subField.name ? `.${subField.name}` : ''}`, + path: `${path}${fieldIsNamed(subField) ? `.${subField.name}` : ''}`, }))} /> diff --git a/src/admin/components/forms/field-types/Row/index.tsx b/src/admin/components/forms/field-types/Row/index.tsx index f15c1611c..864faa093 100644 --- a/src/admin/components/forms/field-types/Row/index.tsx +++ b/src/admin/components/forms/field-types/Row/index.tsx @@ -2,6 +2,7 @@ import React from 'react'; import RenderFields from '../../RenderFields'; import withCondition from '../../withCondition'; import { Props } from './types'; +import { fieldIsNamed } from '../../../../../fields/config/types'; import './index.scss'; @@ -24,7 +25,7 @@ const Row: React.FC = (props) => { fieldTypes={fieldTypes} fieldSchema={fields.map((field) => ({ ...field, - path: `${path ? `${path}.` : ''}${field.name}`, + path: `${path ? `${path}.` : ''}${fieldIsNamed(field) ? field.name : ''}`, }))} /> ); diff --git a/src/admin/components/views/collections/Edit/formatFields.tsx b/src/admin/components/views/collections/Edit/formatFields.tsx index 9b51e5ff0..667de1932 100644 --- a/src/admin/components/views/collections/Edit/formatFields.tsx +++ b/src/admin/components/views/collections/Edit/formatFields.tsx @@ -1,8 +1,8 @@ import { SanitizedCollectionConfig } from '../../../../../collections/config/types'; -import { Field } from '../../../../../fields/config/types'; +import { Field, fieldIsNamed } from '../../../../../fields/config/types'; const formatFields = (collection: SanitizedCollectionConfig, isEditing: boolean): Field[] => (isEditing - ? collection.fields.filter(({ name }) => name !== 'id') + ? collection.fields.filter((field) => fieldIsNamed(field) && field.name !== 'id') : collection.fields); export default formatFields; diff --git a/src/admin/components/views/collections/List/buildColumns.tsx b/src/admin/components/views/collections/List/buildColumns.tsx index cf446b226..12a91dad6 100644 --- a/src/admin/components/views/collections/List/buildColumns.tsx +++ b/src/admin/components/views/collections/List/buildColumns.tsx @@ -3,7 +3,7 @@ import Cell from './Cell'; import SortColumn from '../../../elements/SortColumn'; import { SanitizedCollectionConfig } from '../../../../../collections/config/types'; import { Column } from '../../../elements/Table/types'; -import { fieldHasSubFields, Field } from '../../../../../fields/config/types'; +import { fieldHasSubFields, Field, fieldIsNamed } from '../../../../../fields/config/types'; const buildColumns = (collection: SanitizedCollectionConfig, columns: string[]): Column[] => (columns || []).reduce((cols, col, colIndex) => { let field = null; @@ -28,13 +28,13 @@ const buildColumns = (collection: SanitizedCollectionConfig, columns: string[]): ]; fields.forEach((fieldToCheck) => { - if (fieldToCheck.name === col) { + if (fieldIsNamed(fieldToCheck) && fieldToCheck.name === col) { field = fieldToCheck; } - if (!fieldToCheck.name && fieldHasSubFields(fieldToCheck)) { + if (!fieldIsNamed(fieldToCheck) && fieldHasSubFields(fieldToCheck)) { fieldToCheck.fields.forEach((subField) => { - if (subField.name === col) { + if (fieldIsNamed(subField) && subField.name === col) { field = subField; } }); diff --git a/src/admin/components/views/collections/List/formatFields.tsx b/src/admin/components/views/collections/List/formatFields.tsx index f3e6d1cb0..96c8412e8 100644 --- a/src/admin/components/views/collections/List/formatFields.tsx +++ b/src/admin/components/views/collections/List/formatFields.tsx @@ -1,8 +1,8 @@ import { SanitizedCollectionConfig } from '../../../../../collections/config/types'; -import { Field } from '../../../../../fields/config/types'; +import { Field, fieldIsNamed } from '../../../../../fields/config/types'; const formatFields = (config: SanitizedCollectionConfig): Field[] => { - const hasID = config.fields.findIndex(({ name }) => name === 'id') > -1; + const hasID = config.fields.findIndex((field) => fieldIsNamed(field) && field.name === 'id') > -1; let fields: Field[] = config.fields.reduce((formatted, field) => { if (field.hidden === true || field?.admin?.disabled === true) { return formatted; diff --git a/src/admin/components/views/collections/List/getInitialColumns.ts b/src/admin/components/views/collections/List/getInitialColumns.ts index e17fa461c..42751b48e 100644 --- a/src/admin/components/views/collections/List/getInitialColumns.ts +++ b/src/admin/components/views/collections/List/getInitialColumns.ts @@ -1,4 +1,4 @@ -import { Field, fieldHasSubFields } from '../../../../../fields/config/types'; +import { Field, fieldHasSubFields, fieldIsNamed } from '../../../../../fields/config/types'; const getInitialColumnState = (fields: Field[], useAsTitle: string, defaultColumns: string[]): string[] => { let initialColumns = []; @@ -13,14 +13,23 @@ const getInitialColumnState = (fields: Field[], useAsTitle: string, defaultColum } const remainingColumns = fields.reduce((remaining, field) => { - if (field.name === useAsTitle) { + if (fieldIsNamed(field) && field.name === useAsTitle) { return remaining; } - if (!field.name && fieldHasSubFields(field)) { + if (!fieldIsNamed(field) && fieldHasSubFields(field)) { return [ ...remaining, - ...field.fields.map((subField) => subField.name), + ...field.fields.reduce((subFields, subField) => { + if (fieldIsNamed(subField)) { + return [ + ...subFields, + subField.name + ]; + } + + return subFields; + }, []), ]; } diff --git a/src/auth/operations/login.ts b/src/auth/operations/login.ts index afbed6f18..c85dad5b4 100644 --- a/src/auth/operations/login.ts +++ b/src/auth/operations/login.ts @@ -5,7 +5,7 @@ import { PayloadRequest } from '../../express/types'; import getCookieExpiration from '../../utilities/getCookieExpiration'; import isLocked from '../isLocked'; import sanitizeInternalFields from '../../utilities/sanitizeInternalFields'; -import { Field, fieldHasSubFields } from '../../fields/config/types'; +import { Field, fieldHasSubFields, fieldIsNamed } from '../../fields/config/types'; import { User } from '../types'; import { Collection } from '../../collections/config/types'; @@ -108,15 +108,15 @@ async function login(incomingArgs: Arguments): Promise { ...signedFields, }; - if (!field.name && fieldHasSubFields(field)) { + if (!fieldIsNamed(field) && fieldHasSubFields(field)) { field.fields.forEach((subField) => { - if (subField.saveToJWT) { + if (subField.saveToJWT && fieldIsNamed(subField)) { result[subField.name] = user[subField.name]; } }); } - if (field.saveToJWT) { + if (field.saveToJWT && fieldIsNamed(field)) { result[field.name] = user[field.name]; } diff --git a/src/auth/operations/resetPassword.ts b/src/auth/operations/resetPassword.ts index 77770b362..c04d0552d 100644 --- a/src/auth/operations/resetPassword.ts +++ b/src/auth/operations/resetPassword.ts @@ -4,6 +4,7 @@ import { Collection } from '../../collections/config/types'; import { APIError } from '../../errors'; import getCookieExpiration from '../../utilities/getCookieExpiration'; import { UserDocument } from '../types'; +import { fieldIsNamed } from '../../fields/config/types'; export type Result = { token: string @@ -51,7 +52,7 @@ async function resetPassword(args: Arguments): Promise { await user.authenticate(data.password); const fieldsToSign = collectionConfig.fields.reduce((signedFields, field) => { - if (field.saveToJWT) { + if (field.saveToJWT && fieldIsNamed(field)) { return { ...signedFields, [field.name]: user[field.name], diff --git a/src/collections/config/sanitize.ts b/src/collections/config/sanitize.ts index ad34bab46..ca147f650 100644 --- a/src/collections/config/sanitize.ts +++ b/src/collections/config/sanitize.ts @@ -1,4 +1,5 @@ import merge from 'deepmerge'; +import { fieldIsNamed } from '../../fields/config/types'; import { SanitizedCollectionConfig, CollectionConfig } from './types'; import sanitizeFields from '../../fields/config/sanitize'; import toKebabCase from '../../utilities/toKebabCase'; @@ -75,7 +76,7 @@ const sanitizeCollection = (collections: CollectionConfig[], collection: Collect let uploadFields = baseUploadFields; if (sanitized.upload.mimeTypes) { - uploadFields.find((f) => f.name === 'mimeType').validate = mimeTypeValidator(sanitized.upload.mimeTypes); + uploadFields.find((field) => fieldIsNamed(field) && field.name === 'mimeType').validate = mimeTypeValidator(sanitized.upload.mimeTypes); } if (sanitized.upload.imageSizes && Array.isArray(sanitized.upload.imageSizes)) { diff --git a/src/collections/operations/create.ts b/src/collections/operations/create.ts index 9138fbce2..846ce17e1 100644 --- a/src/collections/operations/create.ts +++ b/src/collections/operations/create.ts @@ -19,6 +19,7 @@ import { PayloadRequest } from '../../express/types'; import { Document } from '../../types'; import { Payload } from '../..'; import saveBufferToFile from '../../uploads/saveBufferToFile'; +import { fieldIsNamed } from '../../fields/config/types'; export type Arguments = { collection: Collection @@ -74,7 +75,7 @@ async function create(this: Payload, incomingArgs: Arguments): Promise // Custom id // ///////////////////////////////////// - const hasIdField = collectionConfig.fields.findIndex(({ name }) => name === 'id') > -1; + const hasIdField = collectionConfig.fields.findIndex((field) => fieldIsNamed(field) && field.name === 'id') > -1; if (hasIdField) { data = { _id: data.id, diff --git a/src/config/validate.ts b/src/config/validate.ts index f9e9bae30..d6d69684c 100644 --- a/src/config/validate.ts +++ b/src/config/validate.ts @@ -7,6 +7,7 @@ import { SanitizedCollectionConfig } from '../collections/config/types'; import fieldSchema, { idField } from '../fields/config/schema'; import { SanitizedGlobalConfig } from '../globals/config/types'; import globalSchema from '../globals/config/schema'; +import { fieldIsNamed } from '../fields/config/types'; const logger = Logger(); @@ -14,19 +15,19 @@ const validateFields = (context: string, entity: SanitizedCollectionConfig | San const errors: string[] = []; entity.fields.forEach((field) => { let idResult: Partial = { error: null }; - if (field.name === 'id') { + if (fieldIsNamed(field) && field.name === 'id') { idResult = idField.validate(field, { abortEarly: false }); } const result = fieldSchema.validate(field, { abortEarly: false }); if (idResult.error) { idResult.error.details.forEach(({ message }) => { - errors.push(`${context} "${entity.slug}" > Field "${field.name}" > ${message}`); + errors.push(`${context} "${entity.slug}" > Field${fieldIsNamed(field) ? `"${field.name}" >` : ''} ${message}`); }); } if (result.error) { result.error.details.forEach(({ message }) => { - errors.push(`${context} "${entity.slug}" > Field "${field.name}" > ${message}`); + errors.push(`${context} "${entity.slug}" > Field${fieldIsNamed(field) ? `"${field.name}" >` : ''} ${message}`); }); } }); diff --git a/src/errors/MissingFieldType.ts b/src/errors/MissingFieldType.ts index ee6c7b2fa..f1d691370 100644 --- a/src/errors/MissingFieldType.ts +++ b/src/errors/MissingFieldType.ts @@ -1,9 +1,9 @@ -import { Field } from '../fields/config/types'; +import { Field, fieldIsNamed } from '../fields/config/types'; import APIError from './APIError'; class MissingFieldType extends APIError { constructor(field: Field) { - super(`Field "${field.name}" is either missing a field type or it does not match an available field type`); + super(`Field${fieldIsNamed(field) ? ` "${field.name}"` : ''} is either missing a field type or it does not match an available field type`); } } diff --git a/src/fields/accessPromise.ts b/src/fields/accessPromise.ts index 5c197f4b6..47a2d7c9e 100644 --- a/src/fields/accessPromise.ts +++ b/src/fields/accessPromise.ts @@ -1,5 +1,5 @@ import { Payload } from '..'; -import { Field, HookName } from './config/types'; +import { HookName, NamedField } from './config/types'; import relationshipPopulationPromise from './relationshipPopulationPromise'; import { Operation } from '../types'; import { PayloadRequest } from '../express/types'; @@ -8,7 +8,7 @@ type Arguments = { data: Record fullData: Record originalDoc: Record - field: Field + field: NamedField operation: Operation overrideAccess: boolean req: PayloadRequest diff --git a/src/fields/config/types.ts b/src/fields/config/types.ts index 09b7f637f..03c88f25e 100644 --- a/src/fields/config/types.ts +++ b/src/fields/config/types.ts @@ -146,7 +146,6 @@ export type RowAdmin = Omit & { }; export type RowField = Omit & { - name?: string; admin?: RowAdmin; type: 'row'; fields: Field[]; @@ -267,6 +266,24 @@ export type Field = | PointField | RowField; +export type NamedField = + TextField + | NumberField + | EmailField + | TextareaField + | CheckboxField + | DateField + | BlockField + | GroupField + | RadioField + | RelationshipField + | ArrayField + | RichTextField + | SelectField + | UploadField + | CodeField + | PointField + export type FieldWithPath = Field & { path?: string } @@ -316,4 +333,8 @@ export function fieldHasMaxDepth(field: Field): field is FieldWithMaxDepth { return (field.type === 'upload' || field.type === 'relationship') && typeof field.maxDepth === 'number'; } +export function fieldIsNamed(field: Field): field is NamedField { + return 'name' in field; +} + export type HookName = 'beforeChange' | 'beforeValidate' | 'afterChange' | 'afterRead'; diff --git a/src/fields/hookPromise.ts b/src/fields/hookPromise.ts index e33639871..ffa23d78d 100644 --- a/src/fields/hookPromise.ts +++ b/src/fields/hookPromise.ts @@ -1,10 +1,10 @@ import { PayloadRequest } from '../express/types'; import { Operation } from '../types'; -import { Field, HookName } from './config/types'; +import { HookName, NamedField } from './config/types'; type Arguments = { data: Record - field: Field + field: NamedField hook: HookName req: PayloadRequest operation: Operation diff --git a/src/fields/relationshipPopulationPromise.ts b/src/fields/relationshipPopulationPromise.ts index 5a9d1fc68..359a46261 100644 --- a/src/fields/relationshipPopulationPromise.ts +++ b/src/fields/relationshipPopulationPromise.ts @@ -1,5 +1,5 @@ import { PayloadRequest } from '../express/types'; -import { Field, RelationshipField, fieldSupportsMany, fieldHasMaxDepth } from './config/types'; +import { RelationshipField, fieldSupportsMany, fieldHasMaxDepth, UploadField } from './config/types'; import { Payload } from '..'; type PopulateArgs = { @@ -9,7 +9,7 @@ type PopulateArgs = { overrideAccess: boolean dataReference: Record data: Record - field: Field + field: RelationshipField | UploadField index?: number payload: Payload } @@ -27,12 +27,11 @@ const populate = async ({ }: PopulateArgs) => { const dataToUpdate = dataReference; - const fieldAsRelationship = field as RelationshipField; - const relation = Array.isArray(fieldAsRelationship.relationTo) ? (data.relationTo as string) : fieldAsRelationship.relationTo; + const relation = Array.isArray(field.relationTo) ? (data.relationTo as string) : field.relationTo; const relatedCollection = payload.collections[relation]; if (relatedCollection) { - let idString = Array.isArray(fieldAsRelationship.relationTo) ? data.value : data; + let idString = Array.isArray(field.relationTo) ? data.value : data; if (typeof idString !== 'string' && typeof idString?.toString === 'function') { idString = idString.toString(); @@ -55,12 +54,12 @@ const populate = async ({ // If populatedRelationship comes back, update value if (populatedRelationship || populatedRelationship === null) { if (typeof index === 'number') { - if (Array.isArray(fieldAsRelationship.relationTo)) { + if (Array.isArray(field.relationTo)) { dataToUpdate[field.name][index].value = populatedRelationship; } else { dataToUpdate[field.name][index] = populatedRelationship; } - } else if (Array.isArray(fieldAsRelationship.relationTo)) { + } else if (Array.isArray(field.relationTo)) { dataToUpdate[field.name].value = populatedRelationship; } else { dataToUpdate[field.name] = populatedRelationship; @@ -71,7 +70,7 @@ const populate = async ({ type PromiseArgs = { data: Record - field: Field + field: RelationshipField | UploadField depth: number currentDepth: number req: PayloadRequest diff --git a/src/fields/traverseFields.ts b/src/fields/traverseFields.ts index 262a7338b..bde0bb1ad 100644 --- a/src/fields/traverseFields.ts +++ b/src/fields/traverseFields.ts @@ -1,7 +1,7 @@ import validationPromise from './validationPromise'; import accessPromise from './accessPromise'; import hookPromise from './hookPromise'; -import { Field, fieldHasSubFields, fieldIsArrayType, fieldIsBlockType, HookName } from './config/types'; +import { Field, fieldHasSubFields, fieldIsArrayType, fieldIsBlockType, fieldIsNamed, HookName } from './config/types'; import { Operation } from '../types'; import { PayloadRequest } from '../express/types'; import { Payload } from '..'; @@ -82,7 +82,7 @@ const traverseFields = (args: Arguments): void => { } } - if (field.hidden && typeof data[field.name] !== 'undefined' && !showHiddenFields) { + if (field.hidden && fieldIsNamed(field) && typeof data[field.name] !== 'undefined' && !showHiddenFields) { delete data[field.name]; } @@ -112,7 +112,7 @@ const traverseFields = (args: Arguments): void => { dataCopy[field.name] = parseFloat(data[field.name]); } - if (field.name === 'id') { + if (fieldIsNamed(field) && field.name === 'id') { if (field.type === 'number' && typeof data[field.name] === 'string') { dataCopy[field.name] = parseFloat(data[field.name]); } @@ -151,7 +151,8 @@ const traverseFields = (args: Arguments): void => { } } - const hasLocalizedValue = (typeof data?.[field.name] === 'object' && data?.[field.name] !== null) + const hasLocalizedValue = fieldIsNamed(field) + && (typeof data?.[field.name] === 'object' && data?.[field.name] !== null) && field.name && field.localized && locale !== 'all' @@ -165,7 +166,7 @@ const traverseFields = (args: Arguments): void => { dataCopy[field.name] = localizedValue; } - if (field.localized && unflattenLocales) { + if (fieldIsNamed(field) && field.localized && unflattenLocales) { unflattenLocaleActions.push(() => { const localeData = payload.config.localization.locales.reduce((locales, localeID) => { let valueToSet; @@ -197,37 +198,40 @@ const traverseFields = (args: Arguments): void => { }); } - accessPromises.push(() => accessPromise({ - data, - fullData, - originalDoc, - field, - operation, - overrideAccess, - req, - id, - relationshipPopulations, - depth, - currentDepth, - hook, - payload, - })); + if (fieldIsNamed(field)) { + accessPromises.push(() => accessPromise({ + data, + fullData, + originalDoc, + field, + operation, + overrideAccess, + req, + id, + relationshipPopulations, + depth, + currentDepth, + hook, + payload, + })); + + hookPromises.push(() => hookPromise({ + data, + field, + hook, + req, + operation, + fullOriginalDoc, + fullData, + })); + } - hookPromises.push(() => hookPromise({ - data, - field, - hook, - req, - operation, - fullOriginalDoc, - fullData, - })); const passesCondition = (field.admin?.condition && hook === 'beforeChange') ? field.admin.condition(fullData, data) : true; const skipValidationFromHere = skipValidation || !passesCondition; if (fieldHasSubFields(field)) { - if (field.name === undefined) { + if (!fieldIsNamed(field)) { traverseFields({ ...args, fields: field.fields, @@ -284,7 +288,7 @@ const traverseFields = (args: Arguments): void => { } } - if (hook === 'beforeChange' && field.name) { + if (hook === 'beforeChange' && fieldIsNamed(field)) { const updatedData = data; if (data?.[field.name] === undefined && originalDoc?.[field.name] === undefined && field.defaultValue) { @@ -296,7 +300,7 @@ const traverseFields = (args: Arguments): void => { if (Array.isArray(dataCopy[field.name])) { dataCopy[field.name].forEach((relatedDoc: {value: unknown, relationTo: string}, i) => { const relatedCollection = payload.config.collections.find((collection) => collection.slug === relatedDoc.relationTo); - const relationshipIDField = relatedCollection.fields.find((collectionField) => collectionField.name === 'id'); + const relationshipIDField = relatedCollection.fields.find((collectionField) => fieldIsNamed(collectionField) && collectionField.name === 'id'); if (relationshipIDField?.type === 'number') { dataCopy[field.name][i] = { ...relatedDoc, value: parseFloat(relatedDoc.value as string) }; } @@ -304,7 +308,7 @@ const traverseFields = (args: Arguments): void => { } if (field.type === 'relationship' && field.hasMany !== true && dataCopy[field.name]?.relationTo) { const relatedCollection = payload.config.collections.find((collection) => collection.slug === dataCopy[field.name].relationTo); - const relationshipIDField = relatedCollection.fields.find((collectionField) => collectionField.name === 'id'); + const relationshipIDField = relatedCollection.fields.find((collectionField) => fieldIsNamed(collectionField) && collectionField.name === 'id'); if (relationshipIDField?.type === 'number') { dataCopy[field.name] = { ...dataCopy[field.name], value: parseFloat(dataCopy[field.name].value as string) }; } @@ -313,7 +317,7 @@ const traverseFields = (args: Arguments): void => { if (Array.isArray(dataCopy[field.name])) { dataCopy[field.name].forEach((relatedDoc: unknown, i) => { const relatedCollection = payload.config.collections.find((collection) => collection.slug === field.relationTo); - const relationshipIDField = relatedCollection.fields.find((collectionField) => collectionField.name === 'id'); + const relationshipIDField = relatedCollection.fields.find((collectionField) => fieldIsNamed(collectionField) && collectionField.name === 'id'); if (relationshipIDField?.type === 'number') { dataCopy[field.name][i] = parseFloat(relatedDoc as string); } @@ -321,7 +325,7 @@ const traverseFields = (args: Arguments): void => { } if (field.type === 'relationship' && field.hasMany !== true && dataCopy[field.name]) { const relatedCollection = payload.config.collections.find((collection) => collection.slug === field.relationTo); - const relationshipIDField = relatedCollection.fields.find((collectionField) => collectionField.name === 'id'); + const relationshipIDField = relatedCollection.fields.find((collectionField) => fieldIsNamed(collectionField) && collectionField.name === 'id'); if (relationshipIDField?.type === 'number') { dataCopy[field.name] = parseFloat(dataCopy[field.name]); } @@ -364,7 +368,7 @@ const traverseFields = (args: Arguments): void => { path, skipValidation: skipValidationFromHere, })); - } else { + } else if (fieldIsNamed(field)) { validationPromises.push(() => validationPromise({ errors, hook, diff --git a/src/fields/validationPromise.ts b/src/fields/validationPromise.ts index e1512ac94..049e80663 100644 --- a/src/fields/validationPromise.ts +++ b/src/fields/validationPromise.ts @@ -1,8 +1,8 @@ -import { Field, HookName } from './config/types'; +import { HookName, NamedField } from './config/types'; type Arguments = { hook: HookName - field: Field + field: NamedField path: string errors: {message: string, field: string}[] newData: Record diff --git a/src/graphql/schema/buildMutationInputType.ts b/src/graphql/schema/buildMutationInputType.ts index ef59ce4ba..68de50cdd 100644 --- a/src/graphql/schema/buildMutationInputType.ts +++ b/src/graphql/schema/buildMutationInputType.ts @@ -15,13 +15,13 @@ import { GraphQLJSON } from 'graphql-type-json'; import withNullableType from './withNullableType'; import formatName from '../utilities/formatName'; import combineParentName from '../utilities/combineParentName'; -import { ArrayField, Field, FieldWithSubFields, GroupField, RelationshipField, RowField, SelectField } from '../../fields/config/types'; +import { ArrayField, CodeField, DateField, EmailField, Field, fieldHasSubFields, fieldIsNamed, GroupField, NumberField, PointField, RadioField, RelationshipField, RichTextField, RowField, SelectField, TextareaField, TextField, UploadField } from '../../fields/config/types'; import { toWords } from '../../utilities/formatLabels'; import payload from '../../index'; import { SanitizedCollectionConfig } from '../../collections/config/types'; export const getCollectionIDType = (config: SanitizedCollectionConfig): GraphQLScalarType => { - const idField = config.fields.find(({ name }) => name === 'id'); + const idField = config.fields.find((field) => fieldIsNamed(field) && field.name === 'id'); if (!idField) return GraphQLString; switch (idField.type) { case 'number': @@ -33,21 +33,19 @@ export const getCollectionIDType = (config: SanitizedCollectionConfig): GraphQLS function buildMutationInputType(name: string, fields: Field[], parentName: string, forceNullable = false): GraphQLInputObjectType { const fieldToSchemaMap = { - number: (field: Field) => { + number: (field: NumberField) => { const type = field.name === 'id' ? GraphQLInt : GraphQLFloat; return { type: withNullableType(field, type, forceNullable) }; }, - text: (field: Field) => ({ type: withNullableType(field, GraphQLString, forceNullable) }), - email: (field: Field) => ({ type: withNullableType(field, GraphQLString, forceNullable) }), - textarea: (field: Field) => ({ type: withNullableType(field, GraphQLString, forceNullable) }), - richText: (field: Field) => ({ type: withNullableType(field, GraphQLJSON, forceNullable) }), - code: (field: Field) => ({ type: withNullableType(field, GraphQLString, forceNullable) }), - date: (field: Field) => ({ type: withNullableType(field, GraphQLString, forceNullable) }), - upload: (field: Field) => ({ type: withNullableType(field, GraphQLString, forceNullable) }), - 'rich-text': (field: Field) => ({ type: withNullableType(field, GraphQLString, forceNullable) }), - html: (field: Field) => ({ type: withNullableType(field, GraphQLString, forceNullable) }), - radio: (field: Field) => ({ type: withNullableType(field, GraphQLString, forceNullable) }), - point: (field: Field) => ({ type: withNullableType(field, GraphQLList(GraphQLFloat), forceNullable) }), + text: (field: TextField) => ({ type: withNullableType(field, GraphQLString, forceNullable) }), + email: (field: EmailField) => ({ type: withNullableType(field, GraphQLString, forceNullable) }), + textarea: (field: TextareaField) => ({ type: withNullableType(field, GraphQLString, forceNullable) }), + richText: (field: RichTextField) => ({ type: withNullableType(field, GraphQLJSON, forceNullable) }), + code: (field: CodeField) => ({ type: withNullableType(field, GraphQLString, forceNullable) }), + date: (field: DateField) => ({ type: withNullableType(field, GraphQLString, forceNullable) }), + upload: (field: UploadField) => ({ type: withNullableType(field, GraphQLString, forceNullable) }), + radio: (field: RadioField) => ({ type: withNullableType(field, GraphQLString, forceNullable) }), + point: (field: PointField) => ({ type: withNullableType(field, GraphQLList(GraphQLFloat), forceNullable) }), checkbox: () => ({ type: GraphQLBoolean }), select: (field: SelectField) => { const formattedName = `${combineParentName(parentName, field.name)}_MutationInput`; @@ -148,16 +146,33 @@ function buildMutationInputType(name: string, fields: Field[], parentName: strin if (getFieldSchema) { const fieldSchema = getFieldSchema(field); - if (Array.isArray(fieldSchema)) { - return fieldSchema.reduce((acc, subField, i) => ({ - ...acc, - [(field as FieldWithSubFields).fields[i].name]: subField, - }), schema); + if (fieldHasSubFields(field) && Array.isArray(fieldSchema)) { + return fieldSchema.reduce((acc, subField, i) => { + const currentSubField = field.fields[i]; + if (fieldIsNamed(currentSubField)) { + return { + ...acc, + [currentSubField.name]: subField, + }; + } + + return { + ...acc, + ...fieldSchema, + }; + }, schema); + } + + if (fieldIsNamed(field)) { + return { + ...schema, + [field.name]: fieldSchema, + }; } return { ...schema, - [field.name]: fieldSchema, + ...fieldSchema, }; } } diff --git a/src/graphql/schema/buildObjectType.ts b/src/graphql/schema/buildObjectType.ts index 43720c458..47f8d6770 100644 --- a/src/graphql/schema/buildObjectType.ts +++ b/src/graphql/schema/buildObjectType.ts @@ -13,7 +13,7 @@ import { GraphQLUnionType, } from 'graphql'; import { DateTimeResolver, EmailAddressResolver } from 'graphql-scalars'; -import { Field, RadioField, RelationshipField, SelectField, UploadField, optionIsObject, ArrayField, GroupField, RichTextField } from '../../fields/config/types'; +import { Field, RadioField, RelationshipField, SelectField, UploadField, optionIsObject, ArrayField, GroupField, RichTextField, fieldIsNamed } from '../../fields/config/types'; import formatName from '../utilities/formatName'; import combineParentName from '../utilities/combineParentName'; import withNullableType from './withNullableType'; @@ -478,7 +478,7 @@ function buildObjectType(name: string, fields: Field[], parentName: string, base if (!field.hidden) { const fieldSchema = fieldToSchemaMap[field.type]; if (fieldSchema) { - if (field.name) { + if (fieldIsNamed(field)) { return { ...schema, [formatName(field.name)]: fieldSchema(field), diff --git a/src/graphql/schema/buildWhereInputType.ts b/src/graphql/schema/buildWhereInputType.ts index 1079cbe1f..4f7f3e894 100644 --- a/src/graphql/schema/buildWhereInputType.ts +++ b/src/graphql/schema/buildWhereInputType.ts @@ -32,6 +32,9 @@ import { TextField, UploadField, PointField, + NamedField, + fieldIsNamed, + fieldHasSubFields, } from '../../fields/config/types'; import formatName from '../utilities/formatName'; import combineParentName from '../utilities/combineParentName'; @@ -47,10 +50,10 @@ import withOperators from './withOperators'; const buildWhereInputType = (name: string, fields: Field[], parentName: string): GraphQLInputObjectType => { // This is the function that builds nested paths for all // field types with nested paths. - const recursivelyBuildNestedPaths = (field: FieldWithSubFields) => { + const recursivelyBuildNestedPaths = (field: FieldWithSubFields & NamedField) => { const nestedPaths = field.fields.reduce((nestedFields, nestedField) => { const getFieldSchema = fieldToSchemaMap[nestedField.type]; - const nestedFieldName = `${field.name}__${nestedField.name}`; + const nestedFieldName = fieldIsNamed(nestedField) ? `${field.name}__${nestedField.name}` : undefined; if (getFieldSchema) { const fieldSchema = getFieldSchema({ @@ -294,7 +297,7 @@ const buildWhereInputType = (name: string, fields: Field[], parentName: string): if (getFieldSchema) { const rowFieldSchema = getFieldSchema(rowField); - if (Array.isArray(rowFieldSchema)) { + if (fieldHasSubFields(rowField)) { return [ ...rowSchema, ...rowFieldSchema, @@ -321,7 +324,7 @@ const buildWhereInputType = (name: string, fields: Field[], parentName: string): if (getFieldSchema) { const fieldSchema = getFieldSchema(field); - if (Array.isArray(fieldSchema)) { + if (fieldHasSubFields(field)) { return { ...schema, ...(fieldSchema.reduce((subFields, subField) => ({ @@ -343,7 +346,7 @@ const buildWhereInputType = (name: string, fields: Field[], parentName: string): fieldTypes.id = { type: withOperators( - { name: 'id' } as Field, + { name: 'id' } as NamedField, GraphQLJSON, parentName, [...operators.equality, ...operators.contains], diff --git a/src/graphql/schema/withOperators.ts b/src/graphql/schema/withOperators.ts index 60a3ebfe6..ad5fb0e9e 100644 --- a/src/graphql/schema/withOperators.ts +++ b/src/graphql/schema/withOperators.ts @@ -1,8 +1,8 @@ import { GraphQLBoolean, GraphQLInputObjectType, GraphQLList, GraphQLType } from 'graphql'; -import { Field } from '../../fields/config/types'; +import { NamedField } from '../../fields/config/types'; import combineParentName from '../utilities/combineParentName'; -const withOperators = (field: Field, type: GraphQLType, parentName: string, operators: string[]): GraphQLInputObjectType => { +const withOperators = (field: NamedField, type: GraphQLType, parentName: string, operators: string[]): GraphQLInputObjectType => { const name = `${combineParentName(parentName, field.name)}_operator`; const listOperators = ['in', 'not_in', 'all']; diff --git a/src/mongoose/buildSchema.ts b/src/mongoose/buildSchema.ts index 1fbd6e3a3..da5aa650d 100644 --- a/src/mongoose/buildSchema.ts +++ b/src/mongoose/buildSchema.ts @@ -1,7 +1,7 @@ /* eslint-disable no-use-before-define */ import { Schema, SchemaDefinition, SchemaOptions } from 'mongoose'; import { SanitizedConfig } from '../config/types'; -import { ArrayField, Block, BlockField, Field, GroupField, RadioField, RelationshipField, RowField, SelectField, UploadField } from '../fields/config/types'; +import { ArrayField, Block, BlockField, CheckboxField, CodeField, DateField, EmailField, Field, fieldIsNamed, GroupField, NumberField, PointField, RadioField, RelationshipField, RichTextField, RowField, SelectField, TextareaField, TextField, UploadField } from '../fields/config/types'; import sortableFieldTypes from '../fields/sortableFieldTypes'; type BuildSchemaOptions = { @@ -76,12 +76,12 @@ const buildSchema = (config: SanitizedConfig, configFields: Field[], buildSchema const indexFields = []; if (!allowIDField) { - const idField = schemaFields.find(({ name }) => name === 'id'); + const idField = schemaFields.find((field) => fieldIsNamed(field) && field.name === 'id'); if (idField) { fields = { _id: idField.type === 'number' ? Number : String, }; - schemaFields = schemaFields.filter(({ name }) => name !== 'id'); + schemaFields = schemaFields.filter((field) => fieldIsNamed(field) && field.name !== 'id'); } } @@ -97,7 +97,7 @@ const buildSchema = (config: SanitizedConfig, configFields: Field[], buildSchema indexFields.push(...fieldIndexMap[field.type](field, config)); } - if (config.indexSortableFields && !buildSchemaOptions.global && !field.index && !field.hidden && sortableFieldTypes.indexOf(field.type) > -1) { + if (config.indexSortableFields && !buildSchemaOptions.global && !field.index && !field.hidden && sortableFieldTypes.indexOf(field.type) > -1 && fieldIsNamed(field)) { indexFields.push({ [field.name]: 1 }); } }); @@ -113,7 +113,7 @@ const buildSchema = (config: SanitizedConfig, configFields: Field[], buildSchema }; const fieldIndexMap = { - point: (field: Field, config: SanitizedConfig) => { + point: (field: PointField, config: SanitizedConfig) => { if (field.localized) { return config.localization.locales.map((locale) => ({ [`${field.name}.${locale}`]: field.index === false ? undefined : field.index || '2dsphere' })); } @@ -122,7 +122,7 @@ const fieldIndexMap = { }; const fieldToSchemaMap = { - number: (field: Field, fields: SchemaDefinition, config: SanitizedConfig, buildSchemaOptions: BuildSchemaOptions): SchemaDefinition => { + number: (field: NumberField, fields: SchemaDefinition, config: SanitizedConfig, buildSchemaOptions: BuildSchemaOptions): SchemaDefinition => { const baseSchema = { ...formatBaseSchema(field, buildSchemaOptions), type: Number }; return { @@ -130,7 +130,7 @@ const fieldToSchemaMap = { [field.name]: localizeSchema(field, baseSchema, config.localization.locales), }; }, - text: (field: Field, fields: SchemaDefinition, config: SanitizedConfig, buildSchemaOptions: BuildSchemaOptions): SchemaDefinition => { + text: (field: TextField, fields: SchemaDefinition, config: SanitizedConfig, buildSchemaOptions: BuildSchemaOptions): SchemaDefinition => { const baseSchema = { ...formatBaseSchema(field, buildSchemaOptions), type: String }; return { @@ -138,7 +138,7 @@ const fieldToSchemaMap = { [field.name]: localizeSchema(field, baseSchema, config.localization.locales), }; }, - email: (field: Field, fields: SchemaDefinition, config: SanitizedConfig, buildSchemaOptions: BuildSchemaOptions): SchemaDefinition => { + email: (field: EmailField, fields: SchemaDefinition, config: SanitizedConfig, buildSchemaOptions: BuildSchemaOptions): SchemaDefinition => { const baseSchema = { ...formatBaseSchema(field, buildSchemaOptions), type: String }; return { @@ -146,7 +146,7 @@ const fieldToSchemaMap = { [field.name]: localizeSchema(field, baseSchema, config.localization.locales), }; }, - textarea: (field: Field, fields: SchemaDefinition, config: SanitizedConfig, buildSchemaOptions: BuildSchemaOptions): SchemaDefinition => { + textarea: (field: TextareaField, fields: SchemaDefinition, config: SanitizedConfig, buildSchemaOptions: BuildSchemaOptions): SchemaDefinition => { const baseSchema = { ...formatBaseSchema(field, buildSchemaOptions), type: String }; return { @@ -154,7 +154,7 @@ const fieldToSchemaMap = { [field.name]: localizeSchema(field, baseSchema, config.localization.locales), }; }, - richText: (field: Field, fields: SchemaDefinition, config: SanitizedConfig, buildSchemaOptions: BuildSchemaOptions): SchemaDefinition => { + richText: (field: RichTextField, fields: SchemaDefinition, config: SanitizedConfig, buildSchemaOptions: BuildSchemaOptions): SchemaDefinition => { const baseSchema = { ...formatBaseSchema(field, buildSchemaOptions), type: Schema.Types.Mixed }; return { @@ -162,7 +162,7 @@ const fieldToSchemaMap = { [field.name]: localizeSchema(field, baseSchema, config.localization.locales), }; }, - code: (field: Field, fields: SchemaDefinition, config: SanitizedConfig, buildSchemaOptions: BuildSchemaOptions): SchemaDefinition => { + code: (field: CodeField, fields: SchemaDefinition, config: SanitizedConfig, buildSchemaOptions: BuildSchemaOptions): SchemaDefinition => { const baseSchema = { ...formatBaseSchema(field, buildSchemaOptions), type: String }; return { @@ -170,7 +170,7 @@ const fieldToSchemaMap = { [field.name]: localizeSchema(field, baseSchema, config.localization.locales), }; }, - point: (field: Field, fields: SchemaDefinition, config: SanitizedConfig): SchemaDefinition => { + point: (field: PointField, fields: SchemaDefinition, config: SanitizedConfig): SchemaDefinition => { const baseSchema = { type: { type: String, @@ -205,7 +205,7 @@ const fieldToSchemaMap = { [field.name]: localizeSchema(field, baseSchema, config.localization.locales), }; }, - checkbox: (field: Field, fields: SchemaDefinition, config: SanitizedConfig, buildSchemaOptions: BuildSchemaOptions): SchemaDefinition => { + checkbox: (field: CheckboxField, fields: SchemaDefinition, config: SanitizedConfig, buildSchemaOptions: BuildSchemaOptions): SchemaDefinition => { const baseSchema = { ...formatBaseSchema(field, buildSchemaOptions), type: Boolean }; return { @@ -213,7 +213,7 @@ const fieldToSchemaMap = { [field.name]: localizeSchema(field, baseSchema, config.localization.locales), }; }, - date: (field: Field, fields: SchemaDefinition, config: SanitizedConfig, buildSchemaOptions: BuildSchemaOptions): SchemaDefinition => { + date: (field: DateField, fields: SchemaDefinition, config: SanitizedConfig, buildSchemaOptions: BuildSchemaOptions): SchemaDefinition => { const baseSchema = { ...formatBaseSchema(field, buildSchemaOptions), type: Date }; return { @@ -294,7 +294,7 @@ const fieldToSchemaMap = { field.fields.forEach((rowField: Field) => { const fieldSchemaMap: FieldSchemaGenerator = fieldToSchemaMap[rowField.type]; - if (fieldSchemaMap) { + if (fieldSchemaMap && fieldIsNamed(rowField)) { const fieldSchema = fieldSchemaMap(rowField, fields, config, buildSchemaOptions); newFields[rowField.name] = fieldSchema[rowField.name]; } diff --git a/tsconfig.json b/tsconfig.json index 206b5ef4f..011ea1142 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -38,6 +38,7 @@ "build", "tests", "**/*.spec.js", - "node_modules" + "node_modules", + ".eslintrc.js" ] } diff --git a/yarn.lock b/yarn.lock index 706816159..ab56ac4f3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1130,6 +1130,21 @@ resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== +"@eslint/eslintrc@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.2.tgz#6044884f7f93c4ecc2d1694c7486cce91ef8f746" + integrity sha512-x1ZXdEFsvTcnbTZgqcWUL9w2ybgZCw/qbKTPQnab+XnYA2bMQpJCh+/bBzCRfDJaJdlrrQlOk49jNtru9gL/6Q== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.0.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + "@faceless-ui/collapsibles@^1.0.0": version "1.0.2" resolved "https://registry.npmjs.org/@faceless-ui/collapsibles/-/collapsibles-1.0.2.tgz#b7a9ad159355cd8133df6a0396b1662556fa8575" @@ -1192,6 +1207,20 @@ dependencies: "@hapi/hoek" "^9.0.0" +"@humanwhocodes/config-array@^0.6.0": + version "0.6.0" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz#b5621fdb3b32309d2d16575456cbc277fa8f021a" + integrity sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" + integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== + "@hutson/parse-repository-url@^3.0.0": version "3.0.2" resolved "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" @@ -2052,11 +2081,16 @@ resolved "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.6.tgz#f1a1cb35aff47bc5cfb05cb0c441ca91e914c26f" integrity sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw== -"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8": +"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8": version "7.0.9" resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + "@types/jsonwebtoken@*", "@types/jsonwebtoken@^8.5.0": version "8.5.4" resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.4.tgz#50ccaf0aa6f5d7b9956e70fe323b76e582991913" @@ -2616,132 +2650,75 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^4.8.1": - version "4.29.2" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.29.2.tgz#f54dc0a32b8f61c6024ab8755da05363b733838d" - integrity sha512-x4EMgn4BTfVd9+Z+r+6rmWxoAzBaapt4QFqE+d8L8sUtYZYLDTK6VG/y/SMMWA5t1/BVU5Kf+20rX4PtWzUYZg== +"@typescript-eslint/eslint-plugin@^5.0.0": + version "5.0.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.0.0.tgz#ecc7cc69d1e6f342beb6ea9cf9fbc02c97a212ac" + integrity sha512-T6V6fCD2U0YesOedvydTnrNtsC8E+c2QzpawIpDdlaObX0OX5dLo7tLU5c64FhTZvA1Xrdim+cXDI7NPsVx8Cg== dependencies: - "@typescript-eslint/experimental-utils" "4.29.2" - "@typescript-eslint/scope-manager" "4.29.2" + "@typescript-eslint/experimental-utils" "5.0.0" + "@typescript-eslint/scope-manager" "5.0.0" debug "^4.3.1" functional-red-black-tree "^1.0.1" + ignore "^5.1.8" regexpp "^3.1.0" semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@4.29.2": - version "4.29.2" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.29.2.tgz#5f67fb5c5757ef2cb3be64817468ba35c9d4e3b7" - integrity sha512-P6mn4pqObhftBBPAv4GQtEK7Yos1fz/MlpT7+YjH9fTxZcALbiiPKuSIfYP/j13CeOjfq8/fr9Thr2glM9ub7A== +"@typescript-eslint/experimental-utils@5.0.0", "@typescript-eslint/experimental-utils@^5.0.0": + version "5.0.0" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.0.0.tgz#c7d7e67443dfb9fd93a5d060fb72c9e9b5638bbc" + integrity sha512-Dnp4dFIsZcPawD6CT1p5NibNUQyGSEz80sULJZkyhyna8AEqArmfwMwJPbmKzWVo4PabqNVzHYlzmcdLQWk+pg== dependencies: "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.29.2" - "@typescript-eslint/types" "4.29.2" - "@typescript-eslint/typescript-estree" "4.29.2" + "@typescript-eslint/scope-manager" "5.0.0" + "@typescript-eslint/types" "5.0.0" + "@typescript-eslint/typescript-estree" "5.0.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/experimental-utils@^2.5.0": - version "2.34.0" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" - integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== +"@typescript-eslint/parser@^5.0.0": + version "5.0.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.0.0.tgz#50d1be2e0def82d73e863cceba74aeeac9973592" + integrity sha512-B6D5rmmQ14I1fdzs71eL3DAuvnPHTY/t7rQABrL9BLnx/H51Un8ox1xqYAchs0/V2trcoyxB1lMJLlrwrJCDgw== dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.34.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" + "@typescript-eslint/scope-manager" "5.0.0" + "@typescript-eslint/types" "5.0.0" + "@typescript-eslint/typescript-estree" "5.0.0" + debug "^4.3.1" -"@typescript-eslint/parser@4.0.1": - version "4.0.1" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.0.1.tgz#73772080db7a7a4534a35d719e006f503e664dc3" - integrity sha512-1+qLmXHNAWSQ7RB6fdSQszAiA7JTwzakj5cNYjBTUmpH2cqilxMZEIV+DRKjVZs8NzP3ALmKexB0w/ExjcK9Iw== +"@typescript-eslint/scope-manager@5.0.0": + version "5.0.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.0.0.tgz#aea0fb0e2480c1169a02e89d9005ac3f2835713f" + integrity sha512-5RFjdA/ain/MDUHYXdF173btOKncIrLuBmA9s6FJhzDrRAyVSA+70BHg0/MW6TE+UiKVyRtX91XpVS0gVNwVDQ== dependencies: - "@typescript-eslint/scope-manager" "4.0.1" - "@typescript-eslint/types" "4.0.1" - "@typescript-eslint/typescript-estree" "4.0.1" - debug "^4.1.1" + "@typescript-eslint/types" "5.0.0" + "@typescript-eslint/visitor-keys" "5.0.0" -"@typescript-eslint/scope-manager@4.0.1": - version "4.0.1" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.0.1.tgz#24d93c3000bdfcc5a157dc4d32b742405a8631b5" - integrity sha512-u3YEXVJ8jsj7QCJk3om0Y457fy2euEOkkzxIB/LKU3MdyI+FJ2gI0M4aKEaXzwCSfNDiZ13a3lDo5DVozc+XLQ== +"@typescript-eslint/types@5.0.0": + version "5.0.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.0.0.tgz#25d93f6d269b2d25fdc51a0407eb81ccba60eb0f" + integrity sha512-dU/pKBUpehdEqYuvkojmlv0FtHuZnLXFBn16zsDmlFF3LXkOpkAQ2vrKc3BidIIve9EMH2zfTlxqw9XM0fFN5w== + +"@typescript-eslint/typescript-estree@5.0.0": + version "5.0.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.0.0.tgz#bc20f413c6e572c7309dbe5fa3be027984952af3" + integrity sha512-V/6w+PPQMhinWKSn+fCiX5jwvd1vRBm7AX7SJQXEGQtwtBvjMPjaU3YTQ1ik2UF1u96X7tsB96HMnulG3eLi9Q== dependencies: - "@typescript-eslint/types" "4.0.1" - "@typescript-eslint/visitor-keys" "4.0.1" - -"@typescript-eslint/scope-manager@4.29.2": - version "4.29.2" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.29.2.tgz#442b0f029d981fa402942715b1718ac7fcd5aa1b" - integrity sha512-mfHmvlQxmfkU8D55CkZO2sQOueTxLqGvzV+mG6S/6fIunDiD2ouwsAoiYCZYDDK73QCibYjIZmGhpvKwAB5BOA== - dependencies: - "@typescript-eslint/types" "4.29.2" - "@typescript-eslint/visitor-keys" "4.29.2" - -"@typescript-eslint/types@4.0.1": - version "4.0.1" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.0.1.tgz#1cf72582f764931f085cb8230ff215980fe467b2" - integrity sha512-S+gD3fgbkZYW2rnbjugNMqibm9HpEjqZBZkTiI3PwbbNGWmAcxolWIUwZ0SKeG4Dy2ktpKKaI/6+HGYVH8Qrlg== - -"@typescript-eslint/types@4.29.2": - version "4.29.2" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.29.2.tgz#fc0489c6b89773f99109fb0aa0aaddff21f52fcd" - integrity sha512-K6ApnEXId+WTGxqnda8z4LhNMa/pZmbTFkDxEBLQAbhLZL50DjeY0VIDCml/0Y3FlcbqXZrABqrcKxq+n0LwzQ== - -"@typescript-eslint/typescript-estree@2.34.0": - version "2.34.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" - integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== - dependencies: - debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/typescript-estree@4.0.1": - version "4.0.1" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.0.1.tgz#29a43c7060641ec51c902d9f50ac7c5866ec479f" - integrity sha512-zGzleORFXrRWRJAMLTB2iJD1IZbCPkg4hsI8mGdpYlKaqzvKYSEWVAYh14eauaR+qIoZVWrXgYSXqLtTlxotiw== - dependencies: - "@typescript-eslint/types" "4.0.1" - "@typescript-eslint/visitor-keys" "4.0.1" - debug "^4.1.1" - globby "^11.0.1" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/typescript-estree@4.29.2": - version "4.29.2" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.29.2.tgz#a0ea8b98b274adbb2577100ba545ddf8bf7dc219" - integrity sha512-TJ0/hEnYxapYn9SGn3dCnETO0r+MjaxtlWZ2xU+EvytF0g4CqTpZL48SqSNn2hXsPolnewF30pdzR9a5Lj3DNg== - dependencies: - "@typescript-eslint/types" "4.29.2" - "@typescript-eslint/visitor-keys" "4.29.2" + "@typescript-eslint/types" "5.0.0" + "@typescript-eslint/visitor-keys" "5.0.0" debug "^4.3.1" globby "^11.0.3" is-glob "^4.0.1" semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/visitor-keys@4.0.1": - version "4.0.1" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.0.1.tgz#d4e8de62775f2a6db71c7e8539633680039fdd6c" - integrity sha512-yBSqd6FjnTzbg5RUy9J+9kJEyQjTI34JdGMJz+9ttlJzLCnGkBikxw+N5n2VDcc3CesbIEJ0MnZc5uRYnrEnCw== +"@typescript-eslint/visitor-keys@5.0.0": + version "5.0.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.0.0.tgz#b789f7cd105e59bee5c0983a353942a5a48f56df" + integrity sha512-yRyd2++o/IrJdyHuYMxyFyBhU762MRHQ/bAGQeTnN3pGikfh+nEmM61XTqaDH1XDp53afZ+waXrk0ZvenoZ6xw== dependencies: - "@typescript-eslint/types" "4.0.1" - eslint-visitor-keys "^2.0.0" - -"@typescript-eslint/visitor-keys@4.29.2": - version "4.29.2" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.29.2.tgz#d2da7341f3519486f50655159f4e5ecdcb2cd1df" - integrity sha512-bDgJLQ86oWHJoZ1ai4TZdgXzJxsea3Ee9u9wsTAvjChdj2WLcVsgWYAPeY7RQMn16tKrlQaBnpKv7KBfs4EQag== - dependencies: - "@typescript-eslint/types" "4.29.2" - eslint-visitor-keys "^2.0.0" + "@typescript-eslint/types" "5.0.0" + eslint-visitor-keys "^3.0.0" "@udecode/slate-plugins-core@^0.71.11": version "0.71.11" @@ -3000,7 +2977,7 @@ acorn-import-assertions@^1.7.6: resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz#580e3ffcae6770eebeec76c3b9723201e9d01f78" integrity sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA== -acorn-jsx@^5.2.0: +acorn-jsx@^5.3.1: version "5.3.2" resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== @@ -3025,6 +3002,11 @@ acorn@^8.0.4, acorn@^8.2.4, acorn@^8.4.1: resolved "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== +acorn@^8.5.0: + version "8.5.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" + integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== + add-stream@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" @@ -3050,7 +3032,7 @@ ajv-keywords@^3.5.2: resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3077,6 +3059,11 @@ ansi-align@^3.0.0: dependencies: string-width "^3.0.0" +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -3169,6 +3156,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + args@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/args/-/args-5.0.1.tgz#4bf298df90a4799a09521362c579278cc2fdd761" @@ -3223,6 +3215,17 @@ array-includes@^3.1.1, array-includes@^3.1.2, array-includes@^3.1.3: get-intrinsic "^1.1.1" is-string "^1.0.5" +array-includes@^3.1.4: + version "3.1.4" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" + integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + is-string "^1.0.7" + array-union@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" @@ -3233,14 +3236,14 @@ array-unique@^0.3.2: resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -array.prototype.flat@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" - integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== +array.prototype.flat@^1.2.5: + version "1.2.5" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" + integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" + es-abstract "^1.19.0" array.prototype.flatmap@^1.2.4: version "1.2.4" @@ -3294,11 +3297,6 @@ ast-types-flow@^0.0.7: resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - async-each@^1.0.1: version "1.0.3" resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" @@ -3934,7 +3932,7 @@ caseless@~0.12.0: resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -4613,7 +4611,7 @@ cross-fetch@^3.0.6: dependencies: node-fetch "2.6.1" -cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -4624,7 +4622,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -4962,7 +4960,7 @@ debug@3.1.0: dependencies: ms "2.0.0" -debug@4, debug@4.3.2, 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, debug@4.3.2, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.2: version "4.3.2" resolved "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== @@ -5058,6 +5056,11 @@ deep-extend@^0.6.0: resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + deep-is@~0.1.3: version "0.1.3" resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -5400,6 +5403,13 @@ enhanced-resolve@^5.8.0: graceful-fs "^4.2.4" tapable "^2.2.0" +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + entities@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" @@ -5452,6 +5462,32 @@ es-abstract@^1.17.2, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es- string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.1" +es-abstract@^1.19.0, es-abstract@^1.19.1: + version "1.19.1" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" + integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.1" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.1" + is-string "^1.0.7" + is-weakref "^1.0.1" + object-inspect "^1.11.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" + es-get-iterator@^1.1.1: version "1.1.2" resolved "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz#9234c54aba713486d7ebde0220864af5e2b283f7" @@ -5510,6 +5546,11 @@ escape-string-regexp@^2.0.0: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + escodegen@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" @@ -5522,7 +5563,7 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-import-resolver-node@^0.3.5: +eslint-import-resolver-node@^0.3.6: version "0.3.6" resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== @@ -5530,52 +5571,51 @@ eslint-import-resolver-node@^0.3.5: debug "^3.2.7" resolve "^1.20.0" -eslint-module-utils@^2.6.2: - version "2.6.2" - resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz#94e5540dd15fe1522e8ffa3ec8db3b7fa7e7a534" - integrity sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q== +eslint-module-utils@^2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.0.tgz#9e97c12688113401259b39d960e6a1f09f966435" + integrity sha512-hqSE88MmHl3ru9SYvDyGrlo0JwROlf9fiEMplEV7j/EAuq9iSlIlyCFbBT6pdULQBSnBYtYKiMLps+hKkyP7Gg== dependencies: debug "^3.2.7" + find-up "^2.1.0" pkg-dir "^2.0.0" -eslint-plugin-import@^2.20.0: - version "2.24.0" - resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.0.tgz#697ffd263e24da5e84e03b282f5fb62251777177" - integrity sha512-Kc6xqT9hiYi2cgybOc0I2vC9OgAYga5o/rAFinam/yF/t5uBqxQbauNPMC6fgb640T/89P0gFoO27FOilJ/Cqg== +eslint-plugin-import@^2.25.2: + version "2.25.2" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.2.tgz#b3b9160efddb702fc1636659e71ba1d10adbe9e9" + integrity sha512-qCwQr9TYfoBHOFcVGKY9C9unq05uOxxdklmBXLVvcwo68y5Hta6/GzCZEMx2zQiu0woKNEER0LE7ZgaOfBU14g== dependencies: - array-includes "^3.1.3" - array.prototype.flat "^1.2.4" + array-includes "^3.1.4" + array.prototype.flat "^1.2.5" debug "^2.6.9" doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.5" - eslint-module-utils "^2.6.2" - find-up "^2.0.0" + eslint-import-resolver-node "^0.3.6" + eslint-module-utils "^2.7.0" has "^1.0.3" - is-core-module "^2.4.0" + is-core-module "^2.7.0" + is-glob "^4.0.3" minimatch "^3.0.4" - object.values "^1.1.3" - pkg-up "^2.0.0" - read-pkg-up "^3.0.0" + object.values "^1.1.5" resolve "^1.20.0" - tsconfig-paths "^3.9.0" + tsconfig-paths "^3.11.0" -eslint-plugin-jest-dom@^3.0.1: - version "3.9.0" - resolved "https://registry.npmjs.org/eslint-plugin-jest-dom/-/eslint-plugin-jest-dom-3.9.0.tgz#dab0b532f1a3e2285b74e3a6d32f7ce197975dcf" - integrity sha512-Ou3cuAAY9s6pYZv+KKPa9XquSzUAWW2CgE5al7cQ0yew25w/kp5kNsUJgESb3Pj00Y6pzvznepppL2sk7UOQKg== +eslint-plugin-jest-dom@^3.9.2: + version "3.9.2" + resolved "https://registry.npmjs.org/eslint-plugin-jest-dom/-/eslint-plugin-jest-dom-3.9.2.tgz#2cc200cabb17d1f5535afad9b49d0ca41b2f05eb" + integrity sha512-DKNW6nxYkBvwv36WcYFxapCalGjOGSWUu5PREpDVuXGbEns3S5jhr+mZ5W2N6MxbOWw/2U61C1JVLH31gwVjOQ== dependencies: "@babel/runtime" "^7.9.6" "@testing-library/dom" "^7.28.1" requireindex "^1.2.0" -eslint-plugin-jest@^23.16.0: - version "23.20.0" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-23.20.0.tgz#e1d69c75f639e99d836642453c4e75ed22da4099" - integrity sha512-+6BGQt85OREevBDWCvhqj1yYA4+BFK4XnRZSGJionuEYmcglMZYLNNBBemwzbqUAckURaHdJSBcjHPyrtypZOw== +eslint-plugin-jest@^25.0.5: + version "25.0.5" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.0.5.tgz#22b0f155aa68aa0932adda104c930c0b1a9ca6ca" + integrity sha512-fMVTvh/pgBHgEyJp643qRjqvyR3TAw3VIldYV0LltepKo4whYZ4oYlsplT0SIqjnclkuNN+PRr841XPMgaOswg== dependencies: - "@typescript-eslint/experimental-utils" "^2.5.0" + "@typescript-eslint/experimental-utils" "^5.0.0" -eslint-plugin-jsx-a11y@^6.2.1: +eslint-plugin-jsx-a11y@^6.4.1: version "6.4.1" resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd" integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg== @@ -5592,30 +5632,32 @@ eslint-plugin-jsx-a11y@^6.2.1: jsx-ast-utils "^3.1.0" language-tags "^1.0.5" -eslint-plugin-react-hooks@^2.3.0: - version "2.5.1" - resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.5.1.tgz#4ef5930592588ce171abeb26f400c7fbcbc23cd0" - integrity sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g== +eslint-plugin-react-hooks@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556" + integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ== -eslint-plugin-react@^7.18.0: - version "7.24.0" - resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.24.0.tgz#eadedfa351a6f36b490aa17f4fa9b14e842b9eb4" - integrity sha512-KJJIx2SYx7PBx3ONe/mEeMz4YE0Lcr7feJTCMyyKb/341NcjuAgim3Acgan89GfPv7nxXK2+0slu0CWXYM4x+Q== +eslint-plugin-react@^7.26.1: + version "7.26.1" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.26.1.tgz#41bcfe3e39e6a5ac040971c1af94437c80daa40e" + integrity sha512-Lug0+NOFXeOE+ORZ5pbsh6mSKjBKXDXItUD2sQoT+5Yl0eoT82DqnXeTMfUare4QVCn9QwXbfzO/dBLjLXwVjQ== dependencies: array-includes "^3.1.3" array.prototype.flatmap "^1.2.4" doctrine "^2.1.0" - has "^1.0.3" + estraverse "^5.2.0" jsx-ast-utils "^2.4.1 || ^3.0.0" minimatch "^3.0.4" object.entries "^1.1.4" object.fromentries "^2.0.4" + object.hasown "^1.0.0" object.values "^1.1.4" prop-types "^15.7.2" resolve "^2.0.0-next.3" + semver "^6.3.0" string.prototype.matchall "^4.0.5" -eslint-scope@5.1.1, eslint-scope@^5.0.0, eslint-scope@^5.1.1: +eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -5623,19 +5665,13 @@ eslint-scope@5.1.1, eslint-scope@^5.0.0, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== +eslint-scope@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-6.0.0.tgz#9cf45b13c5ac8f3d4c50f46a5121f61b3e318978" + integrity sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA== dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" + esrecurse "^4.3.0" + estraverse "^5.2.0" eslint-utils@^3.0.0: version "3.0.0" @@ -5644,7 +5680,7 @@ 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.0.0: version "1.3.0" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== @@ -5654,64 +5690,70 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint@^6.8.0: - version "6.8.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== +eslint-visitor-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz#e32e99c6cdc2eb063f204eda5db67bfe58bb4186" + integrity sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q== + +eslint@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.0.0.tgz#2c2d0ac6353755667ac90c9ff4a9c1315e43fcff" + integrity sha512-03spzPzMAO4pElm44m60Nj08nYonPGQXmw6Ceai/S4QK82IgwWO1EXx1s9namKzVlbVu3Jf81hb+N+8+v21/HQ== dependencies: - "@babel/code-frame" "^7.0.0" + "@eslint/eslintrc" "^1.0.2" + "@humanwhocodes/config-array" "^0.6.0" ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^6.0.0" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.0.0" + espree "^9.0.0" + esquery "^1.4.0" esutils "^2.0.2" - file-entry-cache "^5.0.1" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" + glob-parent "^6.0.1" + globals "^13.6.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^7.0.0" 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.3.0" - lodash "^4.17.14" + levn "^0.4.1" + lodash.merge "^4.6.2" minimatch "^3.0.4" - mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.3" + optionator "^0.9.1" progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" - table "^5.2.3" + regexpp "^3.2.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^6.1.2: - version "6.2.1" - resolved "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== +espree@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/espree/-/espree-9.0.0.tgz#e90a2965698228502e771c7a58489b1a9d107090" + integrity sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ== dependencies: - acorn "^7.1.1" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" + acorn "^8.5.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^3.0.0" esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.1: +esquery@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== @@ -5975,7 +6017,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -6033,12 +6075,12 @@ figures@^3.0.0: dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: - flat-cache "^2.0.1" + flat-cache "^3.0.4" file-loader@^6.2.0: version "6.2.0" @@ -6136,14 +6178,13 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" + flatted "^3.1.0" + rimraf "^3.0.2" flat@^5.0.2: version "5.0.2" @@ -6162,10 +6203,10 @@ flatstr@^1.0.12: resolved "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz#c2ba6a08173edbb6c9640e3055b95e287ceb5931" integrity sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw== -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== +flatted@^3.1.0: + version "3.2.2" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561" + integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== flatten@^1.0.2: version "1.0.3" @@ -6362,6 +6403,14 @@ get-stream@^6.0.0: resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -6428,19 +6477,26 @@ github-from-package@0.0.0: resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= -glob-parent@^5.0.0, glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" +glob-parent@^6.0.1: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.1: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.1.1: version "7.1.7" resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== @@ -6471,14 +6527,14 @@ globals@^11.1.0: resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== +globals@^13.6.0, globals@^13.9.0: + version "13.11.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7" + integrity sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g== dependencies: - type-fest "^0.8.1" + type-fest "^0.20.2" -globby@11.0.4, globby@^11.0.1, globby@^11.0.3: +globby@11.0.4, globby@^11.0.3: version "11.0.4" resolved "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== @@ -6942,7 +6998,7 @@ ignore@^4.0.6: resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.4: +ignore@^5.1.4, ignore@^5.1.8: version "5.1.8" resolved "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== @@ -7080,25 +7136,6 @@ inquirer@8.1.2: strip-ansi "^6.0.0" through "^2.3.6" -inquirer@^7.0.0: - version "7.3.3" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.19" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.6.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - internal-slot@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" @@ -7212,7 +7249,7 @@ is-buffer@^2.0.0: resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-callable@^1.1.4, is-callable@^1.2.3: +is-callable@^1.1.4, is-callable@^1.2.3, is-callable@^1.2.4: version "1.2.4" resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== @@ -7243,13 +7280,20 @@ is-color-stop@^1.0.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" -is-core-module@^2.2.0, is-core-module@^2.4.0, is-core-module@^2.5.0: +is-core-module@^2.2.0, is-core-module@^2.5.0: version "2.6.0" resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz#d7553b2526fe59b92ba3e40c8df757ec8a709e19" integrity sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ== dependencies: has "^1.0.3" +is-core-module@^2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz#3c0ef7d31b4acfc574f80c58409d568a836848e3" + integrity sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -7357,6 +7401,13 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + is-hexadecimal@^1.0.0: version "1.0.4" resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" @@ -7477,7 +7528,7 @@ is-potential-custom-element-name@^1.0.1: resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -is-regex@^1.0.4, is-regex@^1.1.1, is-regex@^1.1.3: +is-regex@^1.0.4, is-regex@^1.1.1, is-regex@^1.1.3, is-regex@^1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== @@ -7495,6 +7546,11 @@ is-set@^2.0.1, is-set@^2.0.2: resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== +is-shared-array-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" + integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== + is-ssh@^1.3.0: version "1.3.3" resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.3.tgz#7f133285ccd7f2c2c7fc897b771b53d95a2b2c7e" @@ -7512,7 +7568,7 @@ is-stream@^2.0.0: resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-string@^1.0.5, is-string@^1.0.6: +is-string@^1.0.5, is-string@^1.0.6, is-string@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== @@ -7559,6 +7615,13 @@ is-weakmap@^2.0.1: resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== +is-weakref@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" + integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== + dependencies: + call-bind "^1.0.0" + is-weakset@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83" @@ -8108,6 +8171,13 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/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.npmjs.org/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -8203,7 +8273,7 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.2, json5@^2.2.0: +json5@^2.1.2: version "2.2.0" resolved "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== @@ -8361,7 +8431,15 @@ leven@^3.1.0: resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -levn@^0.3.0, levn@~0.3.0: +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= @@ -8487,6 +8565,11 @@ lodash.memoize@^4.1.2: resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + lodash.once@^4.0.0: version "4.1.1" resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" @@ -8497,7 +8580,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@4.17.21, lodash@^4.0.0, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.7.0, lodash@~4.17.10: +lodash@4.17.21, lodash@^4.0.0, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.7.0, lodash@~4.17.10: version "4.17.21" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -8924,18 +9007,18 @@ mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: minimist "^1.2.5" -mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - modify-values@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" @@ -9501,6 +9584,14 @@ object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0 define-properties "^1.1.3" es-abstract "^1.18.0-next.2" +object.hasown@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz#7232ed266f34d197d15cac5880232f7a4790afe5" + integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.19.1" + object.pick@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -9508,7 +9599,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0, object.values@^1.1.3, object.values@^1.1.4: +object.values@^1.1.0, object.values@^1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== @@ -9517,6 +9608,15 @@ object.values@^1.1.0, object.values@^1.1.3, object.values@^1.1.4: define-properties "^1.1.3" es-abstract "^1.18.2" +object.values@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -9576,7 +9676,7 @@ optional-require@^1.0.3: dependencies: require-at "^1.0.6" -optionator@^0.8.1, optionator@^0.8.3: +optionator@^0.8.1: version "0.8.3" resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== @@ -9588,6 +9688,18 @@ optionator@^0.8.1, optionator@^0.8.3: type-check "~0.3.2" word-wrap "~1.2.3" +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + ora@5.4.1, ora@^5.3.0: version "5.4.1" resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" @@ -10019,13 +10131,6 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - pluralize@^8.0.0: version "8.0.0" resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" @@ -10674,6 +10779,11 @@ prebuild-install@^6.1.2: tar-fs "^2.0.0" tunnel-agent "^0.6.0" +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -11318,12 +11428,7 @@ regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0, regexp.prototype.f call-bind "^1.0.2" define-properties "^1.1.3" -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpp@^3.1.0: +regexpp@^3.1.0, regexpp@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== @@ -11603,13 +11708,6 @@ rgba-regex@^1.0.0: resolved "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -11641,13 +11739,6 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@^6.6.0: - version "6.6.7" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - rxjs@^7.2.0: version "7.3.0" resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.3.0.tgz#39fe4f3461dc1e50be1475b2b85a0a88c1e938c6" @@ -11814,7 +11905,7 @@ semver@7.0.0: resolved "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.3.5, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: +semver@7.3.5, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -12059,15 +12150,6 @@ slate@^0.66.2: is-plain-object "^5.0.0" tiny-warning "^1.0.3" -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - sliced@1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" @@ -12503,7 +12585,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.0.1, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -12600,16 +12682,6 @@ symbol-tree@^3.2.4: resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -table@^5.2.3: - version "5.4.6" - resolved "https://registry.npmjs.org/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" @@ -12929,16 +13001,17 @@ ts-essentials@^7.0.1: resolved "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== -tsconfig-paths@^3.9.0: - version "3.10.1" - resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.10.1.tgz#79ae67a68c15289fdf5c51cb74f397522d795ed7" - integrity sha512-rETidPDgCpltxF7MjBZlAFPUHv5aHH2MymyPvh+vEyWAED4Eb/WeMbsnD/JDr4OKPOA1TssDHgIcpTN5Kh0p6Q== +tsconfig-paths@^3.11.0: + version "3.11.0" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz#954c1fe973da6339c78e06b03ce2e48810b65f36" + integrity sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA== dependencies: - json5 "^2.2.0" + "@types/json5" "^0.0.29" + json5 "^1.0.1" minimist "^1.2.0" strip-bom "^3.0.0" -tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.10.0, tslib@^1.8.1: version "1.14.1" resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -12958,7 +13031,7 @@ tslib@~2.2.0: resolved "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== -tsutils@^3.17.1, tsutils@^3.21.0: +tsutils@^3.21.0: version "3.21.0" resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== @@ -12977,6 +13050,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -13049,10 +13129,10 @@ typedarray@^0.0.6: resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^4.1.2: - version "4.3.5" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" - integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== +typescript@^4.4.4: + version "4.4.4" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c" + integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA== uglify-js@^3.1.4: version "3.14.1" @@ -13671,7 +13751,7 @@ windows-release@^4.0.0: dependencies: execa "^4.0.2" -word-wrap@~1.2.3: +word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== @@ -13723,13 +13803,6 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -write@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - ws@^7.3.1, ws@^7.4.6: version "7.5.3" resolved "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74"