refactor: class-methods-use-this
This commit is contained in:
		
							parent
							
								
									a42add7131
								
							
						
					
					
						commit
						af57cb5d71
					
				
					 12 changed files with 48 additions and 45 deletions
				
			
		|  | @ -5,6 +5,25 @@ import { LokiLabels } from 'loki-logger-ts'; | |||
| export class MikroOrmLogger extends DefaultLogger { | ||||
|     private logger: Logger = getLogger(); | ||||
| 
 | ||||
|     static createMessage(namespace: LoggerNamespace, messageArg: string, context?: LogContext): unknown { | ||||
|         const labels: LokiLabels = { | ||||
|             service: 'ORM', | ||||
|         }; | ||||
| 
 | ||||
|         let message: string; | ||||
|         if (context?.label) { | ||||
|             message = `[${namespace}] (${context.label}) ${messageArg}`; | ||||
|         } else { | ||||
|             message = `[${namespace}] ${messageArg}`; | ||||
|         } | ||||
| 
 | ||||
|         return { | ||||
|             message: message, | ||||
|             labels: labels, | ||||
|             context: context, | ||||
|         }; | ||||
|     } | ||||
| 
 | ||||
|     log(namespace: LoggerNamespace, message: string, context?: LogContext): void { | ||||
|         if (!this.isEnabled(namespace, context)) { | ||||
|             return; | ||||
|  | @ -12,28 +31,28 @@ export class MikroOrmLogger extends DefaultLogger { | |||
| 
 | ||||
|         switch (namespace) { | ||||
|             case 'query': | ||||
|                 this.logger.debug(this.createMessage(namespace, message, context)); | ||||
|                 this.logger.debug(MikroOrmLogger.createMessage(namespace, message, context)); | ||||
|                 break; | ||||
|             case 'query-params': | ||||
|                 // TODO Which log level should this be?
 | ||||
|                 this.logger.info(this.createMessage(namespace, message, context)); | ||||
|                 this.logger.info(MikroOrmLogger.createMessage(namespace, message, context)); | ||||
|                 break; | ||||
|             case 'schema': | ||||
|                 this.logger.info(this.createMessage(namespace, message, context)); | ||||
|                 this.logger.info(MikroOrmLogger.createMessage(namespace, message, context)); | ||||
|                 break; | ||||
|             case 'discovery': | ||||
|                 this.logger.debug(this.createMessage(namespace, message, context)); | ||||
|                 this.logger.debug(MikroOrmLogger.createMessage(namespace, message, context)); | ||||
|                 break; | ||||
|             case 'info': | ||||
|                 this.logger.info(this.createMessage(namespace, message, context)); | ||||
|                 this.logger.info(MikroOrmLogger.createMessage(namespace, message, context)); | ||||
|                 break; | ||||
|             case 'deprecated': | ||||
|                 this.logger.warn(this.createMessage(namespace, message, context)); | ||||
|                 this.logger.warn(MikroOrmLogger.createMessage(namespace, message, context)); | ||||
|                 break; | ||||
|             default: | ||||
|                 switch (context?.level) { | ||||
|                     case 'info': | ||||
|                         this.logger.info(this.createMessage(namespace, message, context)); | ||||
|                         this.logger.info(MikroOrmLogger.createMessage(namespace, message, context)); | ||||
|                         break; | ||||
|                     case 'warning': | ||||
|                         this.logger.warn(message); | ||||
|  | @ -47,23 +66,4 @@ export class MikroOrmLogger extends DefaultLogger { | |||
|                 } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private createMessage(namespace: LoggerNamespace, messageArg: string, context?: LogContext): unknown { | ||||
|         const labels: LokiLabels = { | ||||
|             service: 'ORM', | ||||
|         }; | ||||
| 
 | ||||
|         let message: string; | ||||
|         if (context?.label) { | ||||
|             message = `[${namespace}] (${context?.label}) ${messageArg}`; | ||||
|         } else { | ||||
|             message = `[${namespace}] ${messageArg}`; | ||||
|         } | ||||
| 
 | ||||
|         return { | ||||
|             message: message, | ||||
|             labels: labels, | ||||
|             context: context, | ||||
|         }; | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -14,7 +14,7 @@ class AudioProcessor extends StringProcessor { | |||
|         super(DwengoContentType.AUDIO_MPEG); | ||||
|     } | ||||
| 
 | ||||
|     protected renderFn(audioUrl: string): string { | ||||
|     override renderFn(audioUrl: string): string { | ||||
|         return DOMPurify.sanitize(`<audio controls>
 | ||||
|             <source src="${audioUrl}" type=${type}> | ||||
|             Your browser does not support the audio element. | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ import { Category } from 'gift-pegjs'; | |||
| import { ProcessingError } from '../../processing-error.js'; | ||||
| 
 | ||||
| export class CategoryQuestionRenderer extends GIFTQuestionRenderer<Category> { | ||||
|     render(_question: Category, _questionNumber: number): string { | ||||
|     override render(_question: Category, _questionNumber: number): string { | ||||
|         throw new ProcessingError("The question type 'Category' is not supported yet!"); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ import { Description } from 'gift-pegjs'; | |||
| import { ProcessingError } from '../../processing-error.js'; | ||||
| 
 | ||||
| export class DescriptionQuestionRenderer extends GIFTQuestionRenderer<Description> { | ||||
|     render(_question: Description, _questionNumber: number): string { | ||||
|     override render(_question: Description, _questionNumber: number): string { | ||||
|         throw new ProcessingError("The question type 'Description' is not supported yet!"); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ import { GIFTQuestionRenderer } from './gift-question-renderer.js'; | |||
| import { Essay } from 'gift-pegjs'; | ||||
| 
 | ||||
| export class EssayQuestionRenderer extends GIFTQuestionRenderer<Essay> { | ||||
|     render(question: Essay, questionNumber: number): string { | ||||
|     override render(question: Essay, questionNumber: number): string { | ||||
|         let renderedHtml = ''; | ||||
|         if (question.title) { | ||||
|             renderedHtml += `<h2 class='gift-title' id='gift-q${questionNumber}-title'>${question.title}</h2>\n`; | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ import { Matching } from 'gift-pegjs'; | |||
| import { ProcessingError } from '../../processing-error.js'; | ||||
| 
 | ||||
| export class MatchingQuestionRenderer extends GIFTQuestionRenderer<Matching> { | ||||
|     render(_question: Matching, _questionNumber: number): string { | ||||
|     override render(_question: Matching, _questionNumber: number): string { | ||||
|         throw new ProcessingError("The question type 'Matching' is not supported yet!"); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ import { GIFTQuestionRenderer } from './gift-question-renderer.js'; | |||
| import { MultipleChoice } from 'gift-pegjs'; | ||||
| 
 | ||||
| export class MultipleChoiceQuestionRenderer extends GIFTQuestionRenderer<MultipleChoice> { | ||||
|     render(question: MultipleChoice, questionNumber: number): string { | ||||
|     override render(question: MultipleChoice, questionNumber: number): string { | ||||
|         let renderedHtml = ''; | ||||
|         if (question.title) { | ||||
|             renderedHtml += `<h2 class='gift-title' id='gift-q${questionNumber}-title'>${question.title}</h2>\n`; | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ import { Numerical } from 'gift-pegjs'; | |||
| import { ProcessingError } from '../../processing-error.js'; | ||||
| 
 | ||||
| export class NumericalQuestionRenderer extends GIFTQuestionRenderer<Numerical> { | ||||
|     render(_question: Numerical, _questionNumber: number): string { | ||||
|     override render(_question: Numerical, _questionNumber: number): string { | ||||
|         throw new ProcessingError("The question type 'Numerical' is not supported yet!"); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ import { ShortAnswer } from 'gift-pegjs'; | |||
| import { ProcessingError } from '../../processing-error.js'; | ||||
| 
 | ||||
| export class ShortQuestionRenderer extends GIFTQuestionRenderer<ShortAnswer> { | ||||
|     render(_question: ShortAnswer, _questionNumber: number): string { | ||||
|     override render(_question: ShortAnswer, _questionNumber: number): string { | ||||
|         throw new ProcessingError("The question type 'ShortAnswer' is not supported yet!"); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ import { TrueFalse } from 'gift-pegjs'; | |||
| import { ProcessingError } from '../../processing-error.js'; | ||||
| 
 | ||||
| export class TrueFalseQuestionRenderer extends GIFTQuestionRenderer<TrueFalse> { | ||||
|     render(_question: TrueFalse, _questionNumber: number): string { | ||||
|     override render(_question: TrueFalse, _questionNumber: number): string { | ||||
|         throw new ProcessingError("The question type 'TrueFalse' is not supported yet!"); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -15,11 +15,20 @@ class MarkdownProcessor extends StringProcessor { | |||
|         super(DwengoContentType.TEXT_MARKDOWN); | ||||
|     } | ||||
| 
 | ||||
|     static replaceLinks(html: string): string { | ||||
|         const proc = new InlineImageProcessor(); | ||||
|         html = html.replace( | ||||
|             /<img.*?src="(.*?)".*?(alt="(.*?)")?.*?(title="(.*?)")?.*?>/g, | ||||
|             (_match: string, src: string, _alt: string, _altText: string, _title: string, _titleText: string) => proc.render(src) | ||||
|         ); | ||||
|         return html; | ||||
|     } | ||||
| 
 | ||||
|     override renderFn(mdText: string): string { | ||||
|         try { | ||||
|             marked.use({ renderer: dwengoMarkedRenderer }); | ||||
|             const html = marked(mdText, { async: false }); | ||||
|             return this.replaceLinks(html); // Replace html image links path
 | ||||
|             return MarkdownProcessor.replaceLinks(html); // Replace html image links path
 | ||||
|         } catch (e: unknown) { | ||||
|             if (e instanceof YAMLException) { | ||||
|                 throw new ProcessingError(e.message); | ||||
|  | @ -28,15 +37,6 @@ class MarkdownProcessor extends StringProcessor { | |||
|             throw new ProcessingError('Unknown error while processing markdown: ' + e); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     replaceLinks(html: string): string { | ||||
|         const proc = new InlineImageProcessor(); | ||||
|         html = html.replace( | ||||
|             /<img.*?src="(.*?)".*?(alt="(.*?)")?.*?(title="(.*?)")?.*?>/g, | ||||
|             (_match: string, src: string, _alt: string, _altText: string, _title: string, _titleText: string) => proc.render(src) | ||||
|         ); | ||||
|         return html; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| export { MarkdownProcessor }; | ||||
|  |  | |||
|  | @ -35,6 +35,9 @@ export default [ | |||
|             '@typescript-eslint/array-type': 'warn', | ||||
|             '@typescript-eslint/await-thenable': 'error', | ||||
| 
 | ||||
|             'class-methods-use-this': 'off', | ||||
|             '@typescript-eslint/class-methods-use-this': [ 'error', { ignoreOverrideMethods: true } ], | ||||
| 
 | ||||
|             'consistent-return': 'off', | ||||
|             '@typescript-eslint/consistent-return': 'off', | ||||
|             '@typescript-eslint/consistent-type-assertions': 'error', | ||||
|  |  | |||
		Reference in a new issue