Skip to content

Commit b147e4c

Browse files
committed
fix(log-feature): log deconstructed function parameter
1 parent c14d936 commit b147e4c

File tree

19 files changed

+246
-102
lines changed

19 files changed

+246
-102
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
All notable changes to the "turbo-console-log" extension will be documented in this file.
44

5+
## [2.10.4]
6+
7+
### Fixed
8+
9+
- Enhanced Turbo Console Log to accurately insert log messages for deconstructed function arguments in TypeScript and JavaScript files. This update ensures more reliable and precise logging capabilities, particularly in complex code structures involving destructuring within function parameters.
10+
511
## [2.10.3]
612

713
- Update README website links

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "turbo-console-log",
33
"displayName": "Turbo Console Log",
44
"description": "Automating the process of writing meaningful log messages.",
5-
"version": "2.10.3",
5+
"version": "2.10.4",
66
"publisher": "ChakrounAnas",
77
"engines": {
88
"vscode": "^1.50.0"

src/debug-message/js/JSDebugMessage.ts

Lines changed: 111 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import {
66
LogMessageType,
77
Message,
88
LogMessage,
9-
LogBracketMetadata,
109
MultilineContextVariable,
1110
} from '../../entities';
1211
import { LineCodeProcessing } from '../../line-code-processing';
@@ -15,19 +14,22 @@ import { DebugMessage } from '../DebugMessage';
1514
import { DebugMessageLine } from '../DebugMessageLine';
1615
import {
1716
getMultiLineContextVariable,
18-
closingBracketLine,
17+
closingContextLine,
1918
} from '../../utilities';
2019
import { JSDebugMessageAnonymous } from './JSDebugMessageAnonymous';
2120
import {
22-
LogParenthesisMetadata,
21+
LogContextMetadata,
2322
NamedFunctionMetadata,
2423
} from '../../entities/extension/logMessage';
2524

2625
const logMessageTypeVerificationPriority = _.sortBy(
2726
[
2827
{ logMessageType: LogMessageType.ArrayAssignment, priority: 2 },
2928
{ logMessageType: LogMessageType.ObjectLiteral, priority: 3 },
30-
{ logMessageType: LogMessageType.ObjectFunctionCall, priority: 4 },
29+
{
30+
logMessageType: LogMessageType.ObjectFunctionCallAssignment,
31+
priority: 4,
32+
},
3133
{ logMessageType: LogMessageType.NamedFunction, priority: 6 },
3234
{ logMessageType: LogMessageType.NamedFunctionAssignment, priority: 5 },
3335
{ logMessageType: LogMessageType.MultiLineAnonymousFunction, priority: 7 },
@@ -74,8 +76,7 @@ export class JSDebugMessage extends DebugMessage {
7476
return /\){.*}/.test(
7577
document
7678
.lineAt(
77-
(logMessage.metadata as LogParenthesisMetadata)
78-
.closingParenthesisLine,
79+
(logMessage.metadata as LogContextMetadata).closingContextLine,
7980
)
8081
.text.replace(/\s/g, ''),
8182
);
@@ -204,7 +205,7 @@ export class JSDebugMessage extends DebugMessage {
204205
if (multilineBracesVariable) {
205206
return this.deepObjectProperty(
206207
document,
207-
multilineBracesVariable.openingBracketLine,
208+
multilineBracesVariable.openingContextLine,
208209
`${propertyNameRegexMatch[1]}.${path}`,
209210
);
210211
}
@@ -219,7 +220,7 @@ export class JSDebugMessage extends DebugMessage {
219220
.text.split('=')[0]
220221
.replace(/(const|let|var)/, '')
221222
.trim()}.${path}`,
222-
line: closingBracketLine(document, line, BracketType.CURLY_BRACES),
223+
line: closingContextLine(document, line, BracketType.CURLY_BRACES),
223224
};
224225
}
225226
return null;
@@ -232,29 +233,29 @@ export class JSDebugMessage extends DebugMessage {
232233
tabSize: number,
233234
extensionProperties: ExtensionProperties,
234235
): void {
235-
const logMsg: LogMessage = this.logMessage(document, lineOfSelectedVar);
236-
const deepObjectProperty =
237-
LogMessageType.MultilineBraces === logMsg.logMessageType
238-
? this.deepObjectProperty(
239-
document,
240-
(logMsg.metadata as LogBracketMetadata).openingBracketLine,
241-
selectedVar,
242-
)
243-
: null;
236+
const logMsg: LogMessage = this.logMessage(
237+
document,
238+
lineOfSelectedVar,
239+
selectedVar,
240+
);
244241
const lineOfLogMsg: number = this.line(
245242
document,
246-
deepObjectProperty ? deepObjectProperty.line : lineOfSelectedVar,
243+
lineOfSelectedVar,
247244
selectedVar,
248245
logMsg,
249246
);
250247
const spacesBeforeMsg: string = this.spacesBeforeLogMsg(
251248
document,
252-
deepObjectProperty ? deepObjectProperty.line : lineOfSelectedVar,
249+
(logMsg.metadata as LogContextMetadata)?.deepObjectLine
250+
? (logMsg.metadata as LogContextMetadata)?.deepObjectLine
251+
: lineOfSelectedVar,
253252
lineOfLogMsg,
254253
);
255254
const debuggingMsgContent: string = this.constructDebuggingMsgContent(
256255
document,
257-
deepObjectProperty ? deepObjectProperty.path : selectedVar,
256+
(logMsg.metadata as LogContextMetadata)?.deepObjectPath
257+
? (logMsg.metadata as LogContextMetadata)?.deepObjectPath
258+
: selectedVar,
258259
lineOfSelectedVar,
259260
lineOfLogMsg,
260261
omit(extensionProperties, [
@@ -273,8 +274,7 @@ export class JSDebugMessage extends DebugMessage {
273274
const emptyBlockLine =
274275
logMsg.logMessageType === LogMessageType.MultilineParenthesis
275276
? document.lineAt(
276-
(logMsg.metadata as LogParenthesisMetadata)
277-
.closingParenthesisLine,
277+
(logMsg.metadata as LogContextMetadata).closingContextLine,
278278
)
279279
: document.lineAt((logMsg.metadata as NamedFunctionMetadata).line);
280280
this.emptyBlockDebuggingMsg(
@@ -312,7 +312,11 @@ export class JSDebugMessage extends DebugMessage {
312312
extensionProperties.insertEmptyLineAfterLogMessage,
313313
);
314314
}
315-
logMessage(document: TextDocument, selectionLine: number): LogMessage {
315+
logMessage(
316+
document: TextDocument,
317+
selectionLine: number,
318+
selectedVar: string,
319+
): LogMessage {
316320
const currentLineText: string = document.lineAt(selectionLine).text;
317321
const multilineParenthesisVariable = getMultiLineContextVariable(
318322
document,
@@ -402,34 +406,90 @@ export class JSDebugMessage extends DebugMessage {
402406
};
403407
},
404408
[LogMessageType.MultilineBraces]: () => {
409+
const isChecked =
410+
multilineBracesVariable !== null &&
411+
!this.lineCodeProcessing.isAssignedToVariable(currentLineText) &&
412+
!this.lineCodeProcessing.isAffectationToVariable(currentLineText);
413+
// FIXME: No need for multilineBracesVariable !== null since it contribute already in the value of isChecked boolean
414+
if (isChecked && multilineBracesVariable !== null) {
415+
const deepObjectProperty = this.deepObjectProperty(
416+
document,
417+
multilineBracesVariable?.openingContextLine,
418+
selectedVar,
419+
);
420+
if (deepObjectProperty) {
421+
const multilineBracesObjectScope = getMultiLineContextVariable(
422+
document,
423+
deepObjectProperty.line,
424+
BracketType.CURLY_BRACES,
425+
);
426+
return {
427+
isChecked: true,
428+
metadata: {
429+
openingContextLine:
430+
multilineBracesObjectScope?.openingContextLine as number,
431+
closingContextLine:
432+
multilineBracesObjectScope?.closingContextLine as number,
433+
deepObjectLine: deepObjectProperty.line,
434+
deepObjectPath: deepObjectProperty.path,
435+
} as Pick<LogMessage, 'metadata'>,
436+
};
437+
}
438+
return {
439+
isChecked: true,
440+
metadata: {
441+
openingContextLine:
442+
multilineBracesVariable?.openingContextLine as number,
443+
closingContextLine:
444+
multilineBracesVariable?.closingContextLine as number,
445+
} as Pick<LogMessage, 'metadata'>,
446+
};
447+
}
405448
return {
406-
isChecked:
407-
multilineBracesVariable !== null &&
408-
!this.lineCodeProcessing.isAssignedToVariable(currentLineText),
409-
metadata: {
410-
openingBracketLine:
411-
multilineBracesVariable?.openingBracketLine as number,
412-
closingBracketLine:
413-
multilineBracesVariable?.closingBracketLine as number,
414-
} as Pick<LogMessage, 'metadata'>,
449+
isChecked: false,
415450
};
416451
},
417452
[LogMessageType.MultilineParenthesis]: () => {
453+
const isChecked = multilineParenthesisVariable !== null;
454+
if (isChecked) {
455+
const isOpeningCurlyBraceContext = document
456+
.lineAt(multilineParenthesisVariable?.closingContextLine as number)
457+
.text.includes('{');
458+
const isOpeningParenthesisContext = document
459+
.lineAt(selectionLine)
460+
.text.includes('(');
461+
if (isOpeningCurlyBraceContext || isOpeningParenthesisContext) {
462+
if (this.lineCodeProcessing.isAssignedToVariable(currentLineText)) {
463+
return {
464+
isChecked: true,
465+
metadata: {
466+
openingContextLine: selectionLine,
467+
closingContextLine: closingContextLine(
468+
document,
469+
multilineParenthesisVariable?.closingContextLine as number,
470+
isOpeningCurlyBraceContext
471+
? BracketType.CURLY_BRACES
472+
: BracketType.PARENTHESIS,
473+
),
474+
} as Pick<LogMessage, 'metadata'>,
475+
};
476+
}
477+
return {
478+
isChecked: true,
479+
metadata: {
480+
openingContextLine:
481+
multilineParenthesisVariable?.openingContextLine as number,
482+
closingContextLine:
483+
multilineParenthesisVariable?.closingContextLine as number,
484+
} as Pick<LogMessage, 'metadata'>,
485+
};
486+
}
487+
}
418488
return {
419-
isChecked:
420-
multilineParenthesisVariable !== null &&
421-
document
422-
.lineAt(multilineParenthesisVariable.closingBracketLine)
423-
.text.includes('{'),
424-
metadata: {
425-
openingParenthesisLine:
426-
multilineParenthesisVariable?.openingBracketLine as number,
427-
closingParenthesisLine:
428-
multilineParenthesisVariable?.closingBracketLine as number,
429-
} as Pick<LogMessage, 'metadata'>,
489+
isChecked: false,
430490
};
431491
},
432-
[LogMessageType.ObjectFunctionCall]: () => {
492+
[LogMessageType.ObjectFunctionCallAssignment]: () => {
433493
if (document.lineCount === selectionLine + 1) {
434494
return {
435495
isChecked: false,
@@ -439,9 +499,10 @@ export class JSDebugMessage extends DebugMessage {
439499
.lineAt(selectionLine + 1)
440500
.text.replace(/\s/g, '');
441501
return {
442-
isChecked: this.lineCodeProcessing.isObjectFunctionCall(
443-
`${currentLineText}\n${nextLineText}`,
444-
),
502+
isChecked:
503+
this.lineCodeProcessing.isObjectFunctionCall(
504+
`${currentLineText}\n${nextLineText}`,
505+
) && this.lineCodeProcessing.isAssignedToVariable(currentLineText),
445506
};
446507
},
447508
[LogMessageType.NamedFunction]: () => {
@@ -513,7 +574,7 @@ export class JSDebugMessage extends DebugMessage {
513574
if (
514575
lineOfSelectedVar > currentLineNum &&
515576
lineOfSelectedVar <
516-
closingBracketLine(
577+
closingContextLine(
517578
document,
518579
currentLineNum,
519580
BracketType.CURLY_BRACES,
@@ -535,7 +596,7 @@ export class JSDebugMessage extends DebugMessage {
535596
if (
536597
lineOfSelectedVar >= currentLineNum &&
537598
lineOfSelectedVar <
538-
closingBracketLine(
599+
closingContextLine(
539600
document,
540601
currentLineNum,
541602
BracketType.CURLY_BRACES,
@@ -576,7 +637,7 @@ export class JSDebugMessage extends DebugMessage {
576637
lines: [],
577638
};
578639
logMessage.spaces = this.spacesBeforeLogMsg(document, i, i);
579-
const closedParenthesisLine = closingBracketLine(
640+
const closedParenthesisLine = closingContextLine(
580641
document,
581642
i,
582643
BracketType.PARENTHESIS,

src/debug-message/js/JSDebugMessageAnonymous.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Position, TextDocument, TextEditorEdit, TextLine } from 'vscode';
22
import { BracketType } from '../../entities';
33
import { LineCodeProcessing } from '../../line-code-processing';
4-
import { spacesBeforeLine, closingBracketLine } from '../../utilities';
4+
import { spacesBeforeLine, closingContextLine } from '../../utilities';
55

66
export class JSDebugMessageAnonymous {
77
lineCodeProcessing: LineCodeProcessing;
@@ -51,7 +51,7 @@ export class JSDebugMessageAnonymous {
5151
.lineAt(selectedPropLine.lineNumber + 1)
5252
.text.trim()
5353
.startsWith('.');
54-
const anonymousFunctionClosedParenthesisLine = closingBracketLine(
54+
const anonymousFunctionClosedParenthesisLine = closingContextLine(
5555
document,
5656
selectedPropLine.lineNumber,
5757
BracketType.PARENTHESIS,

src/debug-message/js/JSDebugMessageLine.ts

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
import { TextDocument } from 'vscode';
2-
import { BracketType, LogMessage, LogMessageType } from '../../entities';
2+
import {
3+
BracketType,
4+
LogContextMetadata,
5+
LogMessage,
6+
LogMessageType,
7+
} from '../../entities';
38
import { DebugMessageLine } from '../DebugMessageLine';
49
import { getMultiLineContextVariable } from '../../utilities';
510
import { LineCodeProcessing } from '../../line-code-processing';
@@ -15,16 +20,6 @@ export class JSDebugMessageLine implements DebugMessageLine {
1520
selectedVar: string,
1621
logMsg: LogMessage,
1722
): number {
18-
const multilineParenthesisVariable = getMultiLineContextVariable(
19-
document,
20-
selectionLine,
21-
BracketType.PARENTHESIS,
22-
);
23-
const multilineBracesVariable = getMultiLineContextVariable(
24-
document,
25-
selectionLine,
26-
BracketType.CURLY_BRACES,
27-
);
2823
switch (logMsg.logMessageType) {
2924
case LogMessageType.ObjectLiteral:
3025
return this.objectLiteralLine(document, selectionLine);
@@ -41,7 +36,7 @@ export class JSDebugMessageLine implements DebugMessageLine {
4136
selectionLine,
4237
BracketType.PARENTHESIS,
4338
false,
44-
)?.closingBracketLine || selectionLine) + 1
39+
)?.closingContextLine || selectionLine) + 1
4540
);
4641
case LogMessageType.MultiLineAnonymousFunction:
4742
return (
@@ -51,7 +46,7 @@ export class JSDebugMessageLine implements DebugMessageLine {
5146
BracketType.CURLY_BRACES,
5247
) + 1
5348
);
54-
case LogMessageType.ObjectFunctionCall:
49+
case LogMessageType.ObjectFunctionCallAssignment:
5550
return this.objectFunctionCallLine(
5651
document,
5752
selectionLine,
@@ -61,15 +56,17 @@ export class JSDebugMessageLine implements DebugMessageLine {
6156
return this.arrayLine(document, selectionLine);
6257
case LogMessageType.MultilineParenthesis:
6358
return (
64-
(multilineParenthesisVariable?.closingBracketLine || selectionLine) +
65-
1
59+
((logMsg?.metadata as LogContextMetadata)?.closingContextLine ||
60+
selectionLine) + 1
6661
);
6762
case LogMessageType.Ternary:
6863
return this.templateStringLine(document, selectionLine);
6964
case LogMessageType.MultilineBraces:
7065
// Deconstructing assignment
71-
if (multilineBracesVariable?.closingBracketLine) {
72-
return multilineBracesVariable.closingBracketLine + 1;
66+
if ((logMsg?.metadata as LogContextMetadata)?.closingContextLine) {
67+
return (
68+
(logMsg?.metadata as LogContextMetadata)?.closingContextLine + 1
69+
);
7370
}
7471
return selectionLine + 1;
7572
default:
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
export type MultilineContextVariable = {
2-
openingBracketLine: number;
3-
closingBracketLine: number;
2+
openingContextLine: number;
3+
closingContextLine: number;
44
};

0 commit comments

Comments
 (0)