diff --git a/.eslintrc.js b/.eslintrc.js index ffe9866a8..b16c5637f 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -11,6 +11,7 @@ module.exports = { ], extends: [ '@concepta/eslint-config/nest', + 'plugin:jsdoc/recommended-typescript', ], ignorePatterns: [ 'packages/*/dist/**', @@ -30,7 +31,8 @@ module.exports = { rules: { 'import/no-extraneous-dependencies': 'error', '@darraghor/nestjs-typed/param-decorator-name-matches-route-param': 'off', - 'tsdoc/syntax': 'warn', + 'jsdoc/tag-lines': ['error', 'any', { startLines: 1 }], + 'tsdoc/syntax': 'error', }, overrides: [ { @@ -40,11 +42,21 @@ module.exports = { jsonSyntax: 'JSON', }, }, + { + files: ['*.ts'], + rules: { + 'jsdoc/require-jsdoc': 'off', + 'jsdoc/require-param': 'off', + 'jsdoc/require-returns': 'off', + }, + }, { files: ['*.spec.ts', '*.fixture.ts'], rules: { '@darraghor/nestjs-typed/controllers-should-supply-api-tags': 'off', '@darraghor/nestjs-typed/api-method-should-specify-api-response': 'off', + 'plugin:jsdoc/recommended-typescript': 'off', + 'jsdoc/tag-lines': 'off', 'tsdoc/syntax': 'off', }, }, diff --git a/package.json b/package.json index b872b35cf..ff6cf46c7 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "eslint": "^8.6.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-import": "^2.25.4", + "eslint-plugin-jsdoc": "^48.5.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^4.0.0", "eslint-plugin-tsdoc": "^0.3.0", diff --git a/packages/nestjs-access-control/src/decorators/access-control-create-many.decorator.ts b/packages/nestjs-access-control/src/decorators/access-control-create-many.decorator.ts index f14f1f8fb..98b35d2ac 100644 --- a/packages/nestjs-access-control/src/decorators/access-control-create-many.decorator.ts +++ b/packages/nestjs-access-control/src/decorators/access-control-create-many.decorator.ts @@ -3,7 +3,7 @@ import { AccessControlCreateOne } from './access-control-create-one.decorator'; /** * Create many resource grant shortcut. * - * @param string - resource The grant resource. + * @param resource - The grant resource. */ export const AccessControlCreateMany = (resource: string) => AccessControlCreateOne(resource); diff --git a/packages/nestjs-access-control/src/decorators/access-control-create-one.decorator.ts b/packages/nestjs-access-control/src/decorators/access-control-create-one.decorator.ts index 8ff6545bc..fea99f716 100644 --- a/packages/nestjs-access-control/src/decorators/access-control-create-one.decorator.ts +++ b/packages/nestjs-access-control/src/decorators/access-control-create-one.decorator.ts @@ -5,7 +5,7 @@ import { applyDecorators } from '@nestjs/common'; /** * Create one resource grant shortcut. * - * @param string - resource The grant resource. + * @param resource - The grant resource. * @returns Decorator function */ export const AccessControlCreateOne = ( diff --git a/packages/nestjs-access-control/src/decorators/access-control-delete-one.decorator.ts b/packages/nestjs-access-control/src/decorators/access-control-delete-one.decorator.ts index 4d48c7116..80374d2b7 100644 --- a/packages/nestjs-access-control/src/decorators/access-control-delete-one.decorator.ts +++ b/packages/nestjs-access-control/src/decorators/access-control-delete-one.decorator.ts @@ -3,9 +3,9 @@ import { applyDecorators } from '@nestjs/common'; import { ActionEnum } from '../enums/action.enum'; /** - * Delete one resource grant shortcut + * Delete one resource grant shortcut. * - * @param string - resource The grant resource. + * @param resource - The grant resource. * @returns Decorator function */ export const AccessControlDeleteOne = ( diff --git a/packages/nestjs-access-control/src/decorators/access-control-read-many.decorator.ts b/packages/nestjs-access-control/src/decorators/access-control-read-many.decorator.ts index 239d7f79a..82fd7075b 100644 --- a/packages/nestjs-access-control/src/decorators/access-control-read-many.decorator.ts +++ b/packages/nestjs-access-control/src/decorators/access-control-read-many.decorator.ts @@ -5,7 +5,7 @@ import { AccessControlGrant } from './access-control-grant.decorator'; /** * Read many resource grant shortcut. * - * @param string - resource The grant resource. + * @param resource - The grant resource. * @returns Decorator function */ export const AccessControlReadMany = ( diff --git a/packages/nestjs-access-control/src/decorators/access-control-read-one.decorator.ts b/packages/nestjs-access-control/src/decorators/access-control-read-one.decorator.ts index 3ef237850..52fa28e6c 100644 --- a/packages/nestjs-access-control/src/decorators/access-control-read-one.decorator.ts +++ b/packages/nestjs-access-control/src/decorators/access-control-read-one.decorator.ts @@ -5,7 +5,7 @@ import { AccessControlGrant } from './access-control-grant.decorator'; /** * Read one resource grant shortcut * - * @param string - resource The grant resource. + * @param resource - The grant resource. * @returns Decorator function */ export const AccessControlReadOne = ( diff --git a/packages/nestjs-access-control/src/decorators/access-control-recover-one.decorator.ts b/packages/nestjs-access-control/src/decorators/access-control-recover-one.decorator.ts index 64a000419..c2c735eee 100644 --- a/packages/nestjs-access-control/src/decorators/access-control-recover-one.decorator.ts +++ b/packages/nestjs-access-control/src/decorators/access-control-recover-one.decorator.ts @@ -3,7 +3,7 @@ import { AccessControlCreateOne } from './access-control-create-one.decorator'; /** * Recover one resource grant shortcut. * - * @param string - resource The grant resource. + * @param resource - The grant resource. */ export const AccessControlRecoverOne = (resource: string) => AccessControlCreateOne(resource); diff --git a/packages/nestjs-access-control/src/decorators/access-control-replace-one.decorator.ts b/packages/nestjs-access-control/src/decorators/access-control-replace-one.decorator.ts index 690cd0511..f53c7054a 100644 --- a/packages/nestjs-access-control/src/decorators/access-control-replace-one.decorator.ts +++ b/packages/nestjs-access-control/src/decorators/access-control-replace-one.decorator.ts @@ -1,9 +1,9 @@ import { AccessControlUpdateOne } from './access-control-update-one.decorator'; /** - * Update one resource grant shortcut + * Update one resource grant shortcut. * - * @param string - resource The grant resource. + * @param resource - The grant resource. */ export const AccessControlReplaceOne = (resource: string) => AccessControlUpdateOne(resource); diff --git a/packages/nestjs-access-control/src/decorators/access-control-update-one.decorator.ts b/packages/nestjs-access-control/src/decorators/access-control-update-one.decorator.ts index 4f06cc66a..e82f2a04d 100644 --- a/packages/nestjs-access-control/src/decorators/access-control-update-one.decorator.ts +++ b/packages/nestjs-access-control/src/decorators/access-control-update-one.decorator.ts @@ -3,9 +3,9 @@ import { ActionEnum } from '../enums/action.enum'; import { AccessControlGrant } from './access-control-grant.decorator'; /** - * Update one resource grant shortcut + * Update one resource grant shortcut. * - * @param string - resource The grant resource. + * @param resource - The grant resource. * @returns Decorator function */ export const AccessControlUpdateOne = ( diff --git a/packages/nestjs-auth-local/src/auth-local.strategy.ts b/packages/nestjs-auth-local/src/auth-local.strategy.ts index 2b5575f89..14429979e 100644 --- a/packages/nestjs-auth-local/src/auth-local.strategy.ts +++ b/packages/nestjs-auth-local/src/auth-local.strategy.ts @@ -30,10 +30,8 @@ export class AuthLocalStrategy extends PassportStrategyFactory( AUTH_LOCAL_STRATEGY_NAME, ) { /** - * - * @param userLookupService - The service used to get the user * @param settings - The settings for the local strategy - * @param passwordStorageService - The service used to hash and validate passwords + * @param validateUserService - The service used validate passwords */ constructor( @Inject(AUTH_LOCAL_MODULE_SETTINGS_TOKEN) diff --git a/packages/nestjs-authentication/src/services/issue-token.service.ts b/packages/nestjs-authentication/src/services/issue-token.service.ts index e07bc8b5a..6666494d2 100644 --- a/packages/nestjs-authentication/src/services/issue-token.service.ts +++ b/packages/nestjs-authentication/src/services/issue-token.service.ts @@ -26,7 +26,7 @@ export class IssueTokenService implements IssueTokenServiceInterface { /** * Generate the response payload. * - * @param identifier - user id or name for `sub` claim + * @param id - user id or name for `sub` claim */ async responsePayload( id: ReferenceId, diff --git a/packages/nestjs-cache/src/controllers/cache-crud.controller.ts b/packages/nestjs-cache/src/controllers/cache-crud.controller.ts index 5827a9263..31df075cf 100644 --- a/packages/nestjs-cache/src/controllers/cache-crud.controller.ts +++ b/packages/nestjs-cache/src/controllers/cache-crud.controller.ts @@ -70,7 +70,9 @@ export class CacheCrudController /** * Constructor. * + * @param settings - cache settings * @param allCrudServices - instances of all crud services + * @param cacheService - instance of cache service */ constructor( @Inject(CACHE_MODULE_SETTINGS_TOKEN) diff --git a/packages/nestjs-crud/src/__fixtures__/photo/photo.controller.fixture.ts b/packages/nestjs-crud/src/__fixtures__/photo/photo.controller.fixture.ts index a43f8f6cc..4b2ba5f34 100644 --- a/packages/nestjs-crud/src/__fixtures__/photo/photo.controller.fixture.ts +++ b/packages/nestjs-crud/src/__fixtures__/photo/photo.controller.fixture.ts @@ -42,14 +42,12 @@ export class PhotoControllerFixture { /** * Constructor. - * * @param photoService instance of the photo crud service */ constructor(private photoService: PhotoServiceFixture) {} /** * Get many - * * @param crudRequest the CRUD request object */ @CrudReadAll() @@ -59,7 +57,6 @@ export class PhotoControllerFixture /** * Get one - * * @param crudRequest the CRUD request object */ @CrudReadOne() @@ -69,7 +66,6 @@ export class PhotoControllerFixture /** * Create many - * * @param crudRequest the CRUD request object * @param photoCreateManyDto photo create many dto */ @@ -83,7 +79,6 @@ export class PhotoControllerFixture /** * Create one - * * @param crudRequest the CRUD request object * @param photoCreateDto photo create dto */ @@ -97,7 +92,6 @@ export class PhotoControllerFixture /** * Update one - * * @param crudRequest the CRUD request object * @param photoUpdateDto photo update dto */ @@ -111,7 +105,6 @@ export class PhotoControllerFixture /** * Replace one - * * @param crudRequest the CRUD request object */ @CrudReplaceOne() @@ -124,7 +117,6 @@ export class PhotoControllerFixture /** * Delete one - * * @param crudRequest the CRUD request object */ @CrudDeleteOne() @@ -134,7 +126,6 @@ export class PhotoControllerFixture /** * Delete one (soft) - * * @param crudRequest the CRUD request object */ @CrudDeleteOne({ path: 'soft/:id' }) @@ -145,7 +136,6 @@ export class PhotoControllerFixture /** * Recover one - * * @param crudRequest the CRUD request object */ @CrudRecoverOne() diff --git a/packages/nestjs-event/src/services/event-dispatch.service.ts b/packages/nestjs-event/src/services/event-dispatch.service.ts index 0c618bade..70e663662 100644 --- a/packages/nestjs-event/src/services/event-dispatch.service.ts +++ b/packages/nestjs-event/src/services/event-dispatch.service.ts @@ -41,14 +41,14 @@ export class EventDispatchService { * * @Injectable() * class MyClass { - * constructor(private eventDispatchService: EventDispatchService) {} + * constructor(private eventDispatchService: EventDispatchService) {} * - * didSomething() { - * // event instance - * const myEvent = new MyEvent({id: 1234}); - * // dispatch the event - * this.eventDispatchService.sync(myEvent); - * } + * didSomething() { + * // event instance + * const myEvent = new MyEvent({id: 1234}); + * // dispatch the event + * this.eventDispatchService.sync(myEvent); + * } * } * ``` * @@ -82,25 +82,25 @@ export class EventDispatchService { * * @Injectable() * class MyClass { - * constructor(private eventDispatchService: EventDispatchService) {} + * constructor(private eventDispatchService: EventDispatchService) {} * - * // allow any listener to activate object - * async maybeActivate(myPayloadType: MyPayloadType): MyPayloadType { - * // event instance - * const myEvent = new MyEvent({...myPayloadType, active: false}); - * // dispatch the event - * const allPayloads: MyPayloadType[] = - * await this.eventDispatchService.async(myEvent); - * // merge it - * allPayloads.forEach((payload) => { - * // did any listener set it to true? - * if (payload.active) { - * myPayloadType.active = true; - * } - * }); - * // return possibly modified object - * return myPayloadType; - * } + * // allow any listener to activate object + * async maybeActivate(myPayloadType: MyPayloadType): MyPayloadType { + * // event instance + * const myEvent = new MyEvent({...myPayloadType, active: false}); + * // dispatch the event + * const allPayloads: MyPayloadType[] = + * await this.eventDispatchService.async(myEvent); + * // merge it + * allPayloads.forEach((payload) => { + * // did any listener set it to true? + * if (payload.active) { + * myPayloadType.active = true; + * } + * }); + * // return possibly modified object + * return myPayloadType; + * } * } * ``` * diff --git a/packages/nestjs-event/src/services/event-listen.service.ts b/packages/nestjs-event/src/services/event-listen.service.ts index 61497205f..918ae9326 100644 --- a/packages/nestjs-event/src/services/event-listen.service.ts +++ b/packages/nestjs-event/src/services/event-listen.service.ts @@ -41,21 +41,21 @@ export class EventListenService { * import { TargetEvent } from 'target-module'; * * class MyListener extends EventListenerOn { - * listen(event: TargetEvent) { - * console.log(event.payload); - * } + * listen(event: TargetEvent) { + * console.log(event.payload); + * } * } * * @Injectable() * class MyClass implements OnModuleInit { - * constructor(private eventListenService: EventListenService) {} + * constructor(private eventListenService: EventListenService) {} * - * onModuleInit() { - * // listener instance - * const listener = new MyListener(); - * // register the listener - * this.eventListenService.on(TargetEvent, listener); - * } + * onModuleInit() { + * // listener instance + * const listener = new MyListener(); + * // register the listener + * this.eventListenService.on(TargetEvent, listener); + * } * } * ``` * diff --git a/packages/nestjs-logger/src/logger-request.interceptor.ts b/packages/nestjs-logger/src/logger-request.interceptor.ts index b354f8da9..95f280a7d 100644 --- a/packages/nestjs-logger/src/logger-request.interceptor.ts +++ b/packages/nestjs-logger/src/logger-request.interceptor.ts @@ -82,7 +82,6 @@ export class LoggerRequestInterceptor implements NestInterceptor { * @param res - Response * @param startDate - Start date * @param error - Error instance - * @returns */ responseError(req: Request, res: Response, startDate: Date, error: Error) { // format the message diff --git a/packages/nestjs-logger/src/utils/message-format.util.ts b/packages/nestjs-logger/src/utils/message-format.util.ts index a1eb6e0a3..0f22aa793 100644 --- a/packages/nestjs-logger/src/utils/message-format.util.ts +++ b/packages/nestjs-logger/src/utils/message-format.util.ts @@ -13,7 +13,6 @@ export class MessageFormatUtil { * Function to format message from request. * * @param req - request - * @returns */ static formatRequestMessage(req: Request): string { const { method, url } = req; @@ -29,7 +28,6 @@ export class MessageFormatUtil { * @param res - response * @param startDate - start date * @param error - error - * @returns */ static formatResponseMessage( req: Request, diff --git a/packages/nestjs-password/src/services/password-creation.service.ts b/packages/nestjs-password/src/services/password-creation.service.ts index 7e7e71f73..7c1694e67 100644 --- a/packages/nestjs-password/src/services/password-creation.service.ts +++ b/packages/nestjs-password/src/services/password-creation.service.ts @@ -113,6 +113,7 @@ export class PasswordCreationService /** * Check if number of current attempt is allowed based on the amount of attempts left * if the number of attempts left is greater then + * * @returns Number of attempts user has to try */ checkAttempt(numOfAttempts = 0): boolean { @@ -121,8 +122,8 @@ export class PasswordCreationService /** * Check number of attempts of using password + * * @param numOfAttempts - number of attempts - * @returns */ checkAttemptLeft(numOfAttempts = 0): number { // Get number of max attempts allowed diff --git a/packages/nestjs-password/src/utils/crypt.util.ts b/packages/nestjs-password/src/utils/crypt.util.ts index 68a6663db..537da5c69 100644 --- a/packages/nestjs-password/src/utils/crypt.util.ts +++ b/packages/nestjs-password/src/utils/crypt.util.ts @@ -6,6 +6,7 @@ import * as bcrypt from 'bcrypt'; export abstract class CryptUtil { /** * Generate Salt + * * @returns Generate */ static async generateSalt(): Promise { @@ -15,7 +16,6 @@ export abstract class CryptUtil { /** * @param password - The plain text password to hash * @param salt - The salt to use when hashing the password - * @returns */ static async hashPassword(password: string, salt: string): Promise { // must have a password @@ -30,10 +30,10 @@ export abstract class CryptUtil { /** * Validate password with the hash password + * * @param passwordPlain - The plain password - * @param passwordCrypt - The encrypted password + * @param passwordHash - The encrypted password * @param passwordSalt - The salt - * @returns */ static async validatePassword( passwordPlain: string, diff --git a/packages/nestjs-role/src/role-assignment.controller.ts b/packages/nestjs-role/src/role-assignment.controller.ts index cc4412b0e..0a30496c1 100644 --- a/packages/nestjs-role/src/role-assignment.controller.ts +++ b/packages/nestjs-role/src/role-assignment.controller.ts @@ -69,6 +69,7 @@ export class RoleAssignmentController /** * Constructor. * + * @param settings - role settings * @param allCrudServices - instances of all crud services */ constructor( diff --git a/packages/ts-common/src/cache/interfaces/cache-delete.interface.ts b/packages/ts-common/src/cache/interfaces/cache-delete.interface.ts index d6cb7bb8c..dd605e8db 100644 --- a/packages/ts-common/src/cache/interfaces/cache-delete.interface.ts +++ b/packages/ts-common/src/cache/interfaces/cache-delete.interface.ts @@ -9,6 +9,7 @@ export interface CacheDeleteInterface< > { /** * Delete a cache based on params + * * @param assignment - The cache assignment * @param cache - The dto with unique keys to delete */ diff --git a/packages/ts-common/src/cache/interfaces/cache-get-one.interface.ts b/packages/ts-common/src/cache/interfaces/cache-get-one.interface.ts index 4ae3ca4fd..3dd51376d 100644 --- a/packages/ts-common/src/cache/interfaces/cache-get-one.interface.ts +++ b/packages/ts-common/src/cache/interfaces/cache-get-one.interface.ts @@ -9,6 +9,7 @@ export interface CacheGetOneInterface< > { /** * Get One cache based on params + * * @param assignment - The cache assignment * @param cache - The dto with unique keys to delete */ diff --git a/packages/ts-common/src/cache/interfaces/cache-update.interface.ts b/packages/ts-common/src/cache/interfaces/cache-update.interface.ts index a50a7469b..5d2bfb5df 100644 --- a/packages/ts-common/src/cache/interfaces/cache-update.interface.ts +++ b/packages/ts-common/src/cache/interfaces/cache-update.interface.ts @@ -10,6 +10,7 @@ export interface CacheUpdateInterface< > { /** * Update a cache based on params + * * @param assignment - The cache assignment * @param cache - The dto with unique keys to delete */ diff --git a/yarn.lock b/yarn.lock index 07698a573..b09655bf0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -536,6 +536,18 @@ eslint-module-utils "2.8.0" reflect-metadata "0.1.13" +"@es-joy/jsdoccomment@~0.43.1": + version "0.43.1" + resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.43.1.tgz#4b1979b7b4ff8b596fb19a3aa696a438e44608d7" + integrity sha512-I238eDtOolvCuvtxrnqtlBaw0BwdQuYqK7eA6XIonicMdOOOb75mqdIzkGDUbS04+1Di007rgm9snFRNeVrOog== + dependencies: + "@types/eslint" "^8.56.5" + "@types/estree" "^1.0.5" + "@typescript-eslint/types" "^7.2.0" + comment-parser "1.4.1" + esquery "^1.5.0" + jsdoc-type-pratt-parser "~4.0.0" + "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -2062,6 +2074,11 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@pkgr/core@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" + integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== + "@selderee/plugin-htmlparser2@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.11.0.tgz#d5b5e29a7ba6d3958a1972c7be16f4b2c188c517" @@ -2251,11 +2268,24 @@ "@types/estree" "*" "@types/json-schema" "*" +"@types/eslint@^8.56.5": + version "8.56.10" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.10.tgz#eb2370a73bf04a901eeba8f22595c7ee0f7eb58d" + integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + "@types/estree@*", "@types/estree@^1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== +"@types/estree@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + "@types/express-serve-static-core@^4.17.33": version "4.17.35" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz#c95dd4424f0d32e525d23812aa8ab8e4d3906c4f" @@ -2640,6 +2670,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.14.0.tgz#935307f7a931016b7a5eb25d494ea3e1f613e929" integrity sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA== +"@typescript-eslint/types@^7.2.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.15.0.tgz#fb894373a6e3882cbb37671ffddce44f934f62fc" + integrity sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw== + "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" @@ -3119,6 +3154,11 @@ archy@^1.0.0: resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== +are-docs-informative@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/are-docs-informative/-/are-docs-informative-0.0.2.tgz#387f0e93f5d45280373d387a59d34c96db321963" + integrity sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig== + are-we-there-yet@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" @@ -4152,6 +4192,11 @@ commander@^6.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== +comment-parser@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.4.1.tgz#bdafead37961ac079be11eb7ec65c4d021eaf9cc" + integrity sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg== + compare-func@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" @@ -5205,6 +5250,11 @@ es-module-lexer@^1.2.1: resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.0.tgz#6be9c9e0b4543a60cd166ff6f8b4e9dae0b0c16f" integrity sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA== +es-module-lexer@^1.5.3: + version "1.5.4" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz#a8efec3a3da991e60efa6b633a7cad6ab8d26b78" + integrity sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw== + es-set-tostringtag@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" @@ -5353,6 +5403,22 @@ eslint-plugin-import@^2.25.4: semver "^6.3.1" tsconfig-paths "^3.14.2" +eslint-plugin-jsdoc@^48.5.0: + version "48.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.5.0.tgz#24e2026d1e7ba97214ee21bb16fd5162cd6487c8" + integrity sha512-ukXPNpGby3KjCveCizIS8t1EbuJEHYEu/tBg8GCbn/YbHcXwphyvYCdvRZ/oMRfTscGSSzfsWoZ+ZkAP0/6YMQ== + dependencies: + "@es-joy/jsdoccomment" "~0.43.1" + are-docs-informative "^0.0.2" + comment-parser "1.4.1" + debug "^4.3.4" + escape-string-regexp "^4.0.0" + esquery "^1.5.0" + parse-imports "^2.1.0" + semver "^7.6.2" + spdx-expression-parse "^4.0.0" + synckit "^0.9.0" + eslint-plugin-node@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" @@ -5475,7 +5541,7 @@ esprima@^4.0.0, esprima@^4.0.1: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.2: +esquery@^1.4.2, esquery@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== @@ -8061,6 +8127,11 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== +jsdoc-type-pratt-parser@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz#136f0571a99c184d84ec84662c45c29ceff71114" + integrity sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ== + jsdom@^16.6.0: version "16.7.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" @@ -10180,6 +10251,14 @@ parse-github-repo-url@^1.3.0: resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" integrity sha512-bSWyzBKqcSL4RrncTpGsEKoJ7H8a4L3++ifTAbTFeMHyq2wRV+42DGmQcHIrJIvdcacjIOxEuKH/w4tthF17gg== +parse-imports@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/parse-imports/-/parse-imports-2.1.0.tgz#22a152f4503da34e8fb89c902383895f59e93d2d" + integrity sha512-JQWgmK2o4w8leUkZeZPatWdAny6vXGU/3siIUvMF6J2rDCud9aTt8h/px9oZJ6U3EcfhngBJ635uPFI0q0VAeA== + dependencies: + es-module-lexer "^1.5.3" + slashes "^3.0.12" + parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -11507,6 +11586,11 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== +semver@^7.6.2: + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + send@0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" @@ -11660,6 +11744,11 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slashes@^3.0.12: + version "3.0.12" + resolved "https://registry.yarnpkg.com/slashes/-/slashes-3.0.12.tgz#3d664c877ad542dc1509eaf2c50f38d483a6435a" + integrity sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA== + slick@^1.12.2: version "1.12.2" resolved "https://registry.yarnpkg.com/slick/-/slick-1.12.2.tgz#bd048ddb74de7d1ca6915faa4a57570b3550c2d7" @@ -11820,6 +11909,14 @@ spdx-expression-parse@^3.0.0: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" +spdx-expression-parse@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz#a23af9f3132115465dac215c099303e4ceac5794" + integrity sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + spdx-license-ids@^3.0.0: version "3.0.13" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" @@ -12264,6 +12361,14 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +synckit@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.0.tgz#5b33b458b3775e4466a5b377fba69c63572ae449" + integrity sha512-7RnqIMq572L8PeEzKeBINYEJDDxpcH8JEgLwUqBd3TkofhFRbkq4QLR0u+36avGAhCRbk2nnmjcW9SE531hPDg== + dependencies: + "@pkgr/core" "^0.1.0" + tslib "^2.6.2" + tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" @@ -12640,6 +12745,11 @@ tslib@^2.0.1, tslib@^2.1.0, tslib@^2.5.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== +tslib@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"