rflib-plugin 0.3.3 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -0
- package/lib/commands/rflib/logging/apex/instrument.d.ts +4 -13
- package/lib/commands/rflib/logging/apex/instrument.js +161 -150
- package/lib/commands/rflib/logging/apex/instrument.js.map +1 -1
- package/lib/commands/rflib/logging/aura/instrument.d.ts +4 -10
- package/lib/commands/rflib/logging/aura/instrument.js +138 -143
- package/lib/commands/rflib/logging/aura/instrument.js.map +1 -1
- package/lib/commands/rflib/logging/lwc/instrument.d.ts +4 -14
- package/lib/commands/rflib/logging/lwc/instrument.js +129 -117
- package/lib/commands/rflib/logging/lwc/instrument.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/messages/rflib.logging.apex.instrument.md +10 -2
- package/messages/rflib.logging.aura.instrument.md +9 -1
- package/messages/rflib.logging.lwc.instrument.md +8 -0
- package/oclif.lock +134 -11
- package/oclif.manifest.json +25 -1
- package/package.json +11 -5
|
@@ -1,144 +1,97 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
|
|
2
1
|
/* eslint-disable no-await-in-loop */
|
|
3
|
-
/* eslint-disable @typescript-eslint/quotes */
|
|
4
|
-
/* eslint-disable sf-plugin/no-missing-messages */
|
|
5
2
|
import * as fs from 'node:fs';
|
|
6
3
|
import * as path from 'node:path';
|
|
7
4
|
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
8
5
|
import { Messages, Logger } from '@salesforce/core';
|
|
9
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
10
6
|
import * as prettier from 'prettier';
|
|
11
7
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
12
8
|
const messages = Messages.loadMessages('rflib-plugin', 'rflib.logging.aura.instrument');
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
static
|
|
23
|
-
static description = messages.getMessage('description');
|
|
24
|
-
static examples = messages.getMessages('examples');
|
|
25
|
-
static flags = {
|
|
26
|
-
sourcepath: Flags.string({
|
|
27
|
-
char: 's',
|
|
28
|
-
required: true,
|
|
29
|
-
summary: messages.getMessage('flags.sourcepath.summary'),
|
|
30
|
-
description: messages.getMessage('flags.sourcepath.description'),
|
|
31
|
-
}),
|
|
32
|
-
dryrun: Flags.boolean({
|
|
33
|
-
char: 'd',
|
|
34
|
-
default: false,
|
|
35
|
-
summary: messages.getMessage('flags.dryrun.summary'),
|
|
36
|
-
description: messages.getMessage('flags.dryrun.description'),
|
|
37
|
-
}),
|
|
38
|
-
prettier: Flags.boolean({
|
|
39
|
-
char: 'p',
|
|
40
|
-
default: false,
|
|
41
|
-
summary: messages.getMessage('flags.prettier.summary'),
|
|
42
|
-
description: messages.getMessage('flags.prettier.description'),
|
|
43
|
-
}),
|
|
44
|
-
'no-if': Flags.boolean({
|
|
45
|
-
summary: messages.getMessage('flags.no-if.summary'),
|
|
46
|
-
}),
|
|
47
|
-
};
|
|
48
|
-
logger;
|
|
49
|
-
processedFiles = 0;
|
|
50
|
-
modifiedFiles = 0;
|
|
51
|
-
formattedFiles = 0;
|
|
52
|
-
prettierConfig = {
|
|
9
|
+
class AuraInstrumentationService {
|
|
10
|
+
static ATTRIBUTE_REGEX = /<aura:attribute[^>]*>/g;
|
|
11
|
+
static LOGGER_COMPONENT_REGEX = /<c:rflibLoggerCmp\s+aura:id="([^"]+)"\s+name="([^"]+)"\s+appendComponentId="([^"]+)"\s*\/>/;
|
|
12
|
+
static LOGGER_VAR_REGEX = /var\s+(\w+)\s*=\s*\w+\.find\(['"](\w+)['"]\);/;
|
|
13
|
+
static METHOD_REGEX = /(\b\w+)\s*:\s*function\s*\((.*?)\)\s*{((?:[^{}]|{(?:[^{}]|{(?:[^{}]|{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})*})*})*?)}/g;
|
|
14
|
+
static PROMISE_CHAIN_REGEX = /\.(then|catch|finally)\s*\(\s*function\s*\(([^)]*)\)\s*{([\s\S]*?)}/g;
|
|
15
|
+
static TRY_CATCH_BLOCK_REGEX = /try\s*{[\s\S]*?}\s*catch\s*\(([^)]*)\)\s*{/g;
|
|
16
|
+
static IF_STATEMENT_REGEX = /if\s*\((.*?)\)\s*(?:{([^]*?(?:(?<!{){(?:[^]*?)}(?!})[^]*?)*)}|([^{].*?)(?=\s*(?:;|$));)/g;
|
|
17
|
+
static ELSE_REGEX = /}\s*else(?!\s+if\b)\s*(?:{((?:[^{}]|{(?:[^{}]|{[^{}]*})*})*)}|([^{].*?)(?=\n|;|$))/g;
|
|
18
|
+
static PRETTIER_CONFIG = {
|
|
53
19
|
parser: 'babel',
|
|
54
20
|
printWidth: 120,
|
|
55
21
|
tabWidth: 4,
|
|
56
22
|
useTabs: false,
|
|
57
23
|
singleQuote: true,
|
|
58
|
-
trailingComma: 'none'
|
|
24
|
+
trailingComma: 'none'
|
|
59
25
|
};
|
|
60
|
-
static
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
26
|
+
static isInstrumented(content, loggerId) {
|
|
27
|
+
return new RegExp(`\\.find\\(['"]${loggerId}['"]\\)`, 'g').test(content);
|
|
28
|
+
}
|
|
29
|
+
static async formatContent(content) {
|
|
30
|
+
try {
|
|
31
|
+
return await prettier.format(content, this.PRETTIER_CONFIG);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
if (error instanceof Error) {
|
|
35
|
+
throw new Error(`Formatting failed: ${error.message}`);
|
|
36
|
+
}
|
|
37
|
+
throw new Error('Formatting failed with unknown error');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
static processMethodLogging(content, loggerId, isHelper, noIf) {
|
|
41
|
+
return content.replace(this.METHOD_REGEX, (match, methodName, params, body) => {
|
|
42
|
+
const paramList = params.split(',').map((p) => p.trim()).filter(Boolean);
|
|
68
43
|
let loggerVar = 'logger';
|
|
69
44
|
let bodyContent = body;
|
|
70
|
-
// Prepare logging parameters
|
|
71
45
|
const paramsToLog = isHelper ? paramList : paramList.slice(1, 2);
|
|
72
46
|
const placeholders = paramsToLog.map((_, i) => `{${i}}`).join(', ');
|
|
73
47
|
const logParams = paramsToLog.length > 0 ? `, [${paramsToLog.join(', ')}]` : '';
|
|
74
|
-
|
|
75
|
-
const loggerMatch = body.match(loggerVarRegex);
|
|
48
|
+
const loggerMatch = body.match(this.LOGGER_VAR_REGEX);
|
|
76
49
|
if (loggerMatch && loggerMatch[2] === loggerId) {
|
|
77
50
|
loggerVar = loggerMatch[1];
|
|
78
|
-
// Insert log after existing logger declaration
|
|
79
51
|
const loggerIndex = body.indexOf(loggerMatch[0]) + loggerMatch[0].length;
|
|
80
|
-
bodyContent =
|
|
81
|
-
body.slice(0, loggerIndex) +
|
|
82
|
-
`\n ${loggerVar}.info('${methodName}(${placeholders})'${logParams});` +
|
|
83
|
-
body.slice(loggerIndex);
|
|
52
|
+
bodyContent = `${body.slice(0, loggerIndex)}\n ${loggerVar}.info('${methodName}(${placeholders})'${logParams});${body.slice(loggerIndex)}`;
|
|
84
53
|
}
|
|
85
54
|
else {
|
|
86
|
-
// Add new logger and log statement
|
|
87
55
|
const loggerInit = `var ${loggerVar} = ${paramList[0]}.find('${loggerId}');\n`;
|
|
88
56
|
bodyContent = `\n ${loggerInit} ${loggerVar}.info('${methodName}(${placeholders})'${logParams});${body}`;
|
|
89
57
|
}
|
|
90
|
-
|
|
91
|
-
if (!flags.noIf) {
|
|
58
|
+
if (!noIf) {
|
|
92
59
|
bodyContent = this.processIfStatements(bodyContent, loggerVar);
|
|
93
60
|
}
|
|
61
|
+
bodyContent = AuraInstrumentationService.processPromiseChains(bodyContent, loggerVar);
|
|
94
62
|
return `${methodName}: function(${params}) {${bodyContent}}`;
|
|
95
63
|
});
|
|
96
64
|
}
|
|
97
|
-
static processPromiseChains(content) {
|
|
98
|
-
return content.replace(
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
switch (type) {
|
|
102
|
-
case 'then':
|
|
103
|
-
logStatement = `logger.info('Promise resolved. Result={0}', ${paramName});`;
|
|
104
|
-
break;
|
|
105
|
-
case 'catch':
|
|
106
|
-
logStatement = `logger.error('An error occurred', ${paramName});`;
|
|
107
|
-
break;
|
|
108
|
-
case 'finally':
|
|
109
|
-
logStatement = `logger.info('Promise chain completed');`;
|
|
110
|
-
break;
|
|
111
|
-
}
|
|
112
|
-
if (singleLineBody) {
|
|
113
|
-
return `.${type}(${param || paramName} => {
|
|
114
|
-
${logStatement}
|
|
115
|
-
return ${singleLineBody};
|
|
116
|
-
})`;
|
|
117
|
-
}
|
|
118
|
-
if (blockBody) {
|
|
119
|
-
return `.${type}(${param || paramName} => {
|
|
120
|
-
${logStatement}${blockBody}
|
|
121
|
-
})`;
|
|
122
|
-
}
|
|
123
|
-
return match;
|
|
65
|
+
static processPromiseChains(content, loggerVar) {
|
|
66
|
+
return content.replace(this.PROMISE_CHAIN_REGEX, (match, type, param, blockBody) => {
|
|
67
|
+
const logStatement = this.processPromiseType(type, param?.trim() || '', loggerVar);
|
|
68
|
+
return match.replace(blockBody, `\n ${logStatement}\n ${blockBody}`);
|
|
124
69
|
});
|
|
125
70
|
}
|
|
126
71
|
static processTryCatchBlocks(content) {
|
|
127
|
-
return content.replace(
|
|
72
|
+
return content.replace(this.TRY_CATCH_BLOCK_REGEX, (match, exceptionVar) => {
|
|
128
73
|
const errorVar = exceptionVar.trim().split(' ')[0] || 'error';
|
|
129
74
|
return match.replace(/catch\s*\(([^)]*)\)\s*{/, `catch(${exceptionVar}) {
|
|
130
|
-
|
|
75
|
+
logger.error('An error occurred', ${errorVar});`);
|
|
131
76
|
});
|
|
132
77
|
}
|
|
78
|
+
static processPromiseType(type, paramName, loggerVar) {
|
|
79
|
+
switch (type) {
|
|
80
|
+
case 'then':
|
|
81
|
+
return `${loggerVar}.info('Promise resolved. Result={0}', ${paramName});`;
|
|
82
|
+
case 'catch':
|
|
83
|
+
return `${loggerVar}.error('An error occurred', ${paramName});`;
|
|
84
|
+
case 'finally':
|
|
85
|
+
return `${loggerVar}.info('Promise chain completed');`;
|
|
86
|
+
default:
|
|
87
|
+
throw new Error(`Unsupported promise type: ${type}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
133
90
|
static processIfStatements(content, loggerName) {
|
|
134
91
|
const conditions = [];
|
|
135
|
-
|
|
136
|
-
let modified = content.replace(ifStatementRegex, (match, condition, blockBody, singleLineBody, offset) => {
|
|
92
|
+
let modified = content.replace(this.IF_STATEMENT_REGEX, (match, condition, blockBody, singleLineBody, offset) => {
|
|
137
93
|
const cleanedUpCondition = condition.trim().replaceAll("'", "\\'");
|
|
138
|
-
conditions.push({
|
|
139
|
-
condition: cleanedUpCondition,
|
|
140
|
-
position: offset,
|
|
141
|
-
});
|
|
94
|
+
conditions.push({ condition: cleanedUpCondition, position: offset });
|
|
142
95
|
const logStatement = `${loggerName}.debug('if (${cleanedUpCondition})');\n `;
|
|
143
96
|
if (blockBody) {
|
|
144
97
|
return `if (${condition}) {\n ${logStatement}${blockBody}}`;
|
|
@@ -149,9 +102,7 @@ export default class RflibLoggingAuraInstrument extends SfCommand {
|
|
|
149
102
|
}
|
|
150
103
|
return match;
|
|
151
104
|
});
|
|
152
|
-
|
|
153
|
-
modified = modified.replace(elseRegex, (match, blockBody, singleLineBody, offset) => {
|
|
154
|
-
// Find last if statement before this else
|
|
105
|
+
modified = modified.replace(this.ELSE_REGEX, (match, blockBody, singleLineBody, offset) => {
|
|
155
106
|
const nearestIf = conditions
|
|
156
107
|
.filter((c) => c.position < offset)
|
|
157
108
|
.reduce((prev, curr) => (!prev || curr.position > prev.position ? curr : prev));
|
|
@@ -168,55 +119,89 @@ export default class RflibLoggingAuraInstrument extends SfCommand {
|
|
|
168
119
|
});
|
|
169
120
|
return modified;
|
|
170
121
|
}
|
|
122
|
+
}
|
|
123
|
+
export default class RflibLoggingAuraInstrument extends SfCommand {
|
|
124
|
+
static summary = messages.getMessage('summary');
|
|
125
|
+
static description = messages.getMessage('description');
|
|
126
|
+
static examples = messages.getMessages('examples');
|
|
127
|
+
static flags = {
|
|
128
|
+
sourcepath: Flags.string({
|
|
129
|
+
char: 's',
|
|
130
|
+
required: true,
|
|
131
|
+
summary: messages.getMessage('flags.sourcepath.summary'),
|
|
132
|
+
description: messages.getMessage('flags.sourcepath.description')
|
|
133
|
+
}),
|
|
134
|
+
dryrun: Flags.boolean({
|
|
135
|
+
char: 'd',
|
|
136
|
+
default: false,
|
|
137
|
+
summary: messages.getMessage('flags.dryrun.summary'),
|
|
138
|
+
description: messages.getMessage('flags.dryrun.description')
|
|
139
|
+
}),
|
|
140
|
+
prettier: Flags.boolean({
|
|
141
|
+
char: 'p',
|
|
142
|
+
default: false,
|
|
143
|
+
summary: messages.getMessage('flags.prettier.summary'),
|
|
144
|
+
description: messages.getMessage('flags.prettier.description')
|
|
145
|
+
}),
|
|
146
|
+
'no-if': Flags.boolean({
|
|
147
|
+
summary: messages.getMessage('flags.no-if.summary'),
|
|
148
|
+
description: messages.getMessage('flags.no-if.description'),
|
|
149
|
+
default: false
|
|
150
|
+
}),
|
|
151
|
+
'skip-instrumented': Flags.boolean({
|
|
152
|
+
summary: messages.getMessage('flags.skip-instrumented.summary'),
|
|
153
|
+
description: messages.getMessage('flags.skip-instrumented.description'),
|
|
154
|
+
default: false
|
|
155
|
+
})
|
|
156
|
+
};
|
|
157
|
+
logger;
|
|
158
|
+
stats = {
|
|
159
|
+
processedFiles: 0,
|
|
160
|
+
modifiedFiles: 0,
|
|
161
|
+
formattedFiles: 0
|
|
162
|
+
};
|
|
171
163
|
async run() {
|
|
172
164
|
this.logger = await Logger.child(this.ctor.name);
|
|
173
165
|
const { flags } = await this.parse(RflibLoggingAuraInstrument);
|
|
174
|
-
const
|
|
166
|
+
const instrumentationOpts = {
|
|
175
167
|
prettier: flags.prettier,
|
|
176
168
|
noIf: flags['no-if'],
|
|
169
|
+
skipInstrumented: flags['skip-instrumented']
|
|
177
170
|
};
|
|
178
171
|
this.log(`Starting Aura component instrumentation in ${flags.sourcepath}`);
|
|
179
172
|
this.logger.debug(`Dry run mode: ${flags.dryrun}`);
|
|
180
173
|
this.spinner.start('Running...');
|
|
181
|
-
await this.processDirectory(flags.sourcepath, flags.dryrun,
|
|
174
|
+
await this.processDirectory(flags.sourcepath, flags.dryrun, instrumentationOpts);
|
|
182
175
|
this.spinner.stop();
|
|
183
|
-
this.log(
|
|
184
|
-
this.log(`Processed files: ${this.processedFiles}`);
|
|
185
|
-
this.log(`Modified files: ${this.modifiedFiles}`);
|
|
186
|
-
this.log(`Formatted files: ${this.formattedFiles}`);
|
|
187
|
-
return {
|
|
188
|
-
processedFiles: this.processedFiles,
|
|
189
|
-
modifiedFiles: this.modifiedFiles,
|
|
190
|
-
formattedFiles: this.formattedFiles,
|
|
191
|
-
};
|
|
176
|
+
this.log('\nInstrumentation complete.');
|
|
177
|
+
this.log(`Processed files: ${this.stats.processedFiles}`);
|
|
178
|
+
this.log(`Modified files: ${this.stats.modifiedFiles}`);
|
|
179
|
+
this.log(`Formatted files: ${this.stats.formattedFiles}`);
|
|
180
|
+
return { ...this.stats };
|
|
192
181
|
}
|
|
193
|
-
async processDirectory(dirPath, isDryRun,
|
|
182
|
+
async processDirectory(dirPath, isDryRun, instrumentationOpts) {
|
|
194
183
|
this.logger.debug(`Processing directory: ${dirPath}`);
|
|
195
|
-
// Check if path is direct component
|
|
196
184
|
const dirName = path.basename(dirPath);
|
|
197
185
|
const parentDir = path.basename(path.dirname(dirPath));
|
|
198
186
|
if (parentDir === 'aura') {
|
|
199
187
|
this.logger.info(`Processing single component: ${dirName}`);
|
|
200
|
-
await this.processAuraComponent(dirPath, dirName, isDryRun,
|
|
188
|
+
await this.processAuraComponent(dirPath, dirName, isDryRun, instrumentationOpts);
|
|
201
189
|
return;
|
|
202
190
|
}
|
|
203
191
|
const entries = await fs.promises.readdir(dirPath, { withFileTypes: true });
|
|
204
192
|
for (const entry of entries) {
|
|
205
193
|
const fullPath = path.join(dirPath, entry.name);
|
|
206
|
-
this.logger.debug(`Examining entry: ${entry.name}`);
|
|
207
194
|
if (entry.isDirectory()) {
|
|
208
195
|
if (entry.name === 'aura') {
|
|
209
|
-
this.
|
|
210
|
-
await this.processAuraComponents(fullPath, isDryRun, flags);
|
|
196
|
+
await this.processAuraComponents(fullPath, isDryRun, instrumentationOpts);
|
|
211
197
|
}
|
|
212
198
|
else {
|
|
213
|
-
await this.processDirectory(fullPath, isDryRun,
|
|
199
|
+
await this.processDirectory(fullPath, isDryRun, instrumentationOpts);
|
|
214
200
|
}
|
|
215
201
|
}
|
|
216
202
|
}
|
|
217
203
|
}
|
|
218
|
-
async processAuraComponents(auraPath, isDryRun,
|
|
219
|
-
// Check if path is already an aura directory
|
|
204
|
+
async processAuraComponents(auraPath, isDryRun, instrumentationOpts) {
|
|
220
205
|
if (path.basename(auraPath) !== 'aura') {
|
|
221
206
|
this.logger.warn(`Not an aura directory: ${auraPath}`);
|
|
222
207
|
return;
|
|
@@ -225,11 +210,11 @@ export default class RflibLoggingAuraInstrument extends SfCommand {
|
|
|
225
210
|
for (const entry of entries) {
|
|
226
211
|
if (entry.isDirectory()) {
|
|
227
212
|
const componentPath = path.join(auraPath, entry.name);
|
|
228
|
-
await this.processAuraComponent(componentPath, entry.name, isDryRun,
|
|
213
|
+
await this.processAuraComponent(componentPath, entry.name, isDryRun, instrumentationOpts);
|
|
229
214
|
}
|
|
230
215
|
}
|
|
231
216
|
}
|
|
232
|
-
async processAuraComponent(componentPath, componentName, isDryRun,
|
|
217
|
+
async processAuraComponent(componentPath, componentName, isDryRun, instrumentationOpts) {
|
|
233
218
|
this.logger.info(`Processing Aura component: ${componentName}`);
|
|
234
219
|
const cmpPath = path.join(componentPath, `${componentName}.cmp`);
|
|
235
220
|
const controllerPath = path.join(componentPath, `${componentName}Controller.js`);
|
|
@@ -238,12 +223,13 @@ export default class RflibLoggingAuraInstrument extends SfCommand {
|
|
|
238
223
|
try {
|
|
239
224
|
const loggerId = await this.instrumentCmpFile(cmpPath, componentName, isDryRun);
|
|
240
225
|
this.logger.debug(`Using logger ID: ${loggerId}`);
|
|
241
|
-
await this.instrumentJsFile(controllerPath, loggerId, isDryRun,
|
|
242
|
-
await this.instrumentJsFile(helperPath, loggerId, isDryRun,
|
|
243
|
-
await this.instrumentJsFile(rendererPath, loggerId, isDryRun,
|
|
226
|
+
await this.instrumentJsFile(controllerPath, loggerId, isDryRun, instrumentationOpts);
|
|
227
|
+
await this.instrumentJsFile(helperPath, loggerId, isDryRun, instrumentationOpts);
|
|
228
|
+
await this.instrumentJsFile(rendererPath, loggerId, isDryRun, instrumentationOpts);
|
|
244
229
|
}
|
|
245
230
|
catch (error) {
|
|
246
|
-
this.logger.error(`Error processing Aura ${componentName}`, error);
|
|
231
|
+
this.logger.error(`Error processing Aura component ${componentName}`, error);
|
|
232
|
+
throw error;
|
|
247
233
|
}
|
|
248
234
|
}
|
|
249
235
|
async instrumentCmpFile(filePath, componentName, isDryRun) {
|
|
@@ -252,49 +238,58 @@ export default class RflibLoggingAuraInstrument extends SfCommand {
|
|
|
252
238
|
return 'logger';
|
|
253
239
|
}
|
|
254
240
|
this.logger.debug(`Instrumenting component file: ${filePath}`);
|
|
255
|
-
this.processedFiles++;
|
|
241
|
+
this.stats.processedFiles++;
|
|
256
242
|
let content = await fs.promises.readFile(filePath, 'utf8');
|
|
257
243
|
const originalContent = content;
|
|
258
|
-
const loggerMatch = content.match(
|
|
244
|
+
const loggerMatch = content.match(AuraInstrumentationService.LOGGER_COMPONENT_REGEX);
|
|
259
245
|
if (loggerMatch) {
|
|
260
246
|
return loggerMatch[1];
|
|
261
247
|
}
|
|
262
|
-
const lastAttributeMatch = [...content.matchAll(
|
|
248
|
+
const lastAttributeMatch = [...content.matchAll(AuraInstrumentationService.ATTRIBUTE_REGEX)].pop();
|
|
263
249
|
if (lastAttributeMatch) {
|
|
264
250
|
const insertPosition = lastAttributeMatch.index + lastAttributeMatch[0].length;
|
|
265
251
|
const loggerComponent = `\n <c:rflibLoggerCmp aura:id="logger" name="${componentName}" appendComponentId="false" />`;
|
|
266
252
|
content = content.slice(0, insertPosition) + loggerComponent + content.slice(insertPosition);
|
|
267
253
|
}
|
|
268
254
|
if (content !== originalContent) {
|
|
269
|
-
this.modifiedFiles++;
|
|
255
|
+
this.stats.modifiedFiles++;
|
|
270
256
|
if (!isDryRun) {
|
|
271
257
|
await fs.promises.writeFile(filePath, content, 'utf8');
|
|
258
|
+
this.logger.info(`Modified component file: ${filePath}`);
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
this.logger.info(`Would modify component file: ${filePath}`);
|
|
272
262
|
}
|
|
273
263
|
}
|
|
274
264
|
return 'logger';
|
|
275
265
|
}
|
|
276
|
-
async instrumentJsFile(filePath, loggerId, isDryRun,
|
|
266
|
+
async instrumentJsFile(filePath, loggerId, isDryRun, instrumentationOpts) {
|
|
277
267
|
if (!fs.existsSync(filePath)) {
|
|
278
268
|
this.logger.debug(`JavaScript file not found: ${filePath}`);
|
|
279
269
|
return;
|
|
280
270
|
}
|
|
281
271
|
this.logger.debug(`Instrumenting JavaScript file: ${filePath}`);
|
|
282
|
-
this.processedFiles++;
|
|
272
|
+
this.stats.processedFiles++;
|
|
283
273
|
let content = await fs.promises.readFile(filePath, 'utf8');
|
|
274
|
+
if (instrumentationOpts.skipInstrumented && AuraInstrumentationService.isInstrumented(content, loggerId)) {
|
|
275
|
+
this.logger.info(`Skipping instrumented file: ${filePath}`);
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
284
278
|
const originalContent = content;
|
|
285
|
-
const
|
|
286
|
-
// Process methods
|
|
287
|
-
content =
|
|
288
|
-
content =
|
|
289
|
-
content = RflibLoggingAuraInstrument.processTryCatchBlocks(content);
|
|
279
|
+
const isHelper = filePath.endsWith('Helper.js');
|
|
280
|
+
// Process methods and other patterns
|
|
281
|
+
content = AuraInstrumentationService.processMethodLogging(content, loggerId, isHelper, instrumentationOpts.noIf);
|
|
282
|
+
content = AuraInstrumentationService.processTryCatchBlocks(content);
|
|
290
283
|
if (content !== originalContent) {
|
|
291
|
-
this.modifiedFiles++;
|
|
284
|
+
this.stats.modifiedFiles++;
|
|
292
285
|
if (!isDryRun) {
|
|
293
286
|
try {
|
|
294
|
-
const finalContent =
|
|
287
|
+
const finalContent = instrumentationOpts.prettier
|
|
288
|
+
? await AuraInstrumentationService.formatContent(content)
|
|
289
|
+
: content;
|
|
295
290
|
await fs.promises.writeFile(filePath, finalContent);
|
|
296
|
-
if (
|
|
297
|
-
this.formattedFiles++;
|
|
291
|
+
if (instrumentationOpts.prettier) {
|
|
292
|
+
this.stats.formattedFiles++;
|
|
298
293
|
this.logger.info(`Modified and formatted: ${filePath}`);
|
|
299
294
|
}
|
|
300
295
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrument.js","sourceRoot":"","sources":["../../../../../src/commands/rflib/logging/aura/instrument.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"instrument.js","sourceRoot":"","sources":["../../../../../src/commands/rflib/logging/aura/instrument.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-await-in-loop */\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport { SfCommand, Flags } from '@salesforce/sf-plugins-core';\nimport { Messages, Logger } from '@salesforce/core';\nimport * as prettier from 'prettier';\n\ninterface IfCondition {\n readonly condition: string;\n readonly position: number;\n}\n\ninterface InstrumentationOptions {\n readonly prettier: boolean;\n readonly noIf: boolean;\n readonly skipInstrumented: boolean;\n}\n\nexport interface RflibLoggingAuraInstrumentResult {\n processedFiles: number;\n modifiedFiles: number;\n formattedFiles: number;\n}\n\nMessages.importMessagesDirectoryFromMetaUrl(import.meta.url);\nconst messages = Messages.loadMessages('rflib-plugin', 'rflib.logging.aura.instrument');\n\nclass AuraInstrumentationService {\n public static readonly ATTRIBUTE_REGEX = /<aura:attribute[^>]*>/g;\n public static readonly LOGGER_COMPONENT_REGEX = /<c:rflibLoggerCmp\\s+aura:id=\"([^\"]+)\"\\s+name=\"([^\"]+)\"\\s+appendComponentId=\"([^\"]+)\"\\s*\\/>/;\n\n private static readonly LOGGER_VAR_REGEX = /var\\s+(\\w+)\\s*=\\s*\\w+\\.find\\(['\"](\\w+)['\"]\\);/;\n private static readonly METHOD_REGEX = /(\\b\\w+)\\s*:\\s*function\\s*\\((.*?)\\)\\s*{((?:[^{}]|{(?:[^{}]|{(?:[^{}]|{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})*})*})*?)}/g;\n private static readonly PROMISE_CHAIN_REGEX = /\\.(then|catch|finally)\\s*\\(\\s*function\\s*\\(([^)]*)\\)\\s*{([\\s\\S]*?)}/g;\n private static readonly TRY_CATCH_BLOCK_REGEX = /try\\s*{[\\s\\S]*?}\\s*catch\\s*\\(([^)]*)\\)\\s*{/g;\n private static readonly IF_STATEMENT_REGEX = /if\\s*\\((.*?)\\)\\s*(?:{([^]*?(?:(?<!{){(?:[^]*?)}(?!})[^]*?)*)}|([^{].*?)(?=\\s*(?:;|$));)/g;\n private static readonly ELSE_REGEX = /}\\s*else(?!\\s+if\\b)\\s*(?:{((?:[^{}]|{(?:[^{}]|{[^{}]*})*})*)}|([^{].*?)(?=\\n|;|$))/g;\n\n private static readonly PRETTIER_CONFIG: prettier.Options = {\n parser: 'babel',\n printWidth: 120,\n tabWidth: 4,\n useTabs: false,\n singleQuote: true,\n trailingComma: 'none'\n };\n\n public static isInstrumented(content: string, loggerId: string): boolean {\n return new RegExp(`\\\\.find\\\\(['\"]${loggerId}['\"]\\\\)`, 'g').test(content);\n }\n\n public static async formatContent(content: string): Promise<string> {\n try {\n return await prettier.format(content, this.PRETTIER_CONFIG);\n } catch (error) {\n if (error instanceof Error) {\n throw new Error(`Formatting failed: ${error.message}`);\n }\n throw new Error('Formatting failed with unknown error');\n }\n }\n\n public static processMethodLogging(\n content: string,\n loggerId: string,\n isHelper: boolean,\n noIf: boolean\n ): string {\n return content.replace(\n this.METHOD_REGEX,\n (match: string, methodName: string, params: string, body: string) => {\n const paramList = params.split(',').map((p) => p.trim()).filter(Boolean);\n let loggerVar = 'logger';\n let bodyContent = body;\n\n const paramsToLog = isHelper ? paramList : paramList.slice(1, 2);\n const placeholders = paramsToLog.map((_, i) => `{${i}}`).join(', ');\n const logParams = paramsToLog.length > 0 ? `, [${paramsToLog.join(', ')}]` : '';\n\n const loggerMatch = body.match(this.LOGGER_VAR_REGEX);\n if (loggerMatch && loggerMatch[2] === loggerId) {\n loggerVar = loggerMatch[1];\n const loggerIndex = body.indexOf(loggerMatch[0]) + loggerMatch[0].length;\n bodyContent = `${body.slice(0, loggerIndex)}\\n ${loggerVar}.info('${methodName}(${placeholders})'${logParams});${body.slice(loggerIndex)}`;\n } else {\n const loggerInit = `var ${loggerVar} = ${paramList[0]}.find('${loggerId}');\\n`;\n bodyContent = `\\n ${loggerInit} ${loggerVar}.info('${methodName}(${placeholders})'${logParams});${body}`;\n }\n\n if (!noIf) {\n bodyContent = this.processIfStatements(bodyContent, loggerVar);\n }\n\n bodyContent = AuraInstrumentationService.processPromiseChains(bodyContent, loggerVar);\n\n return `${methodName}: function(${params}) {${bodyContent}}`;\n }\n );\n }\n\n public static processPromiseChains(content: string, loggerVar: string): string {\n return content.replace(\n this.PROMISE_CHAIN_REGEX,\n (match: string, type: string, param: string, blockBody: string) => {\n const logStatement = this.processPromiseType(type, param?.trim() || '', loggerVar);\n\n return match.replace(blockBody, `\\n ${logStatement}\\n ${blockBody}`);\n }\n );\n }\n\n public static processTryCatchBlocks(content: string): string {\n return content.replace(\n this.TRY_CATCH_BLOCK_REGEX,\n (match: string, exceptionVar: string) => {\n const errorVar = exceptionVar.trim().split(' ')[0] || 'error';\n return match.replace(\n /catch\\s*\\(([^)]*)\\)\\s*{/,\n `catch(${exceptionVar}) {\n logger.error('An error occurred', ${errorVar});`\n );\n }\n );\n }\n\n private static processPromiseType(type: string, paramName: string, loggerVar: string): string {\n switch (type) {\n case 'then':\n return `${loggerVar}.info('Promise resolved. Result={0}', ${paramName});`;\n case 'catch':\n return `${loggerVar}.error('An error occurred', ${paramName});`;\n case 'finally':\n return `${loggerVar}.info('Promise chain completed');`;\n default:\n throw new Error(`Unsupported promise type: ${type}`);\n }\n }\n\n private static processIfStatements(content: string, loggerName: string): string {\n const conditions: IfCondition[] = [];\n\n let modified = content.replace(\n this.IF_STATEMENT_REGEX,\n (match: string, condition: string, blockBody: string, singleLineBody: string, offset: number) => {\n const cleanedUpCondition = condition.trim().replaceAll(\"'\", \"\\\\'\");\n conditions.push({ condition: cleanedUpCondition, position: offset });\n\n const logStatement = `${loggerName}.debug('if (${cleanedUpCondition})');\\n `;\n\n if (blockBody) {\n return `if (${condition}) {\\n ${logStatement}${blockBody}}`;\n } else if (singleLineBody) {\n const cleanBody = singleLineBody.replace(/;$/, '').trim();\n return `if (${condition}) {\\n ${logStatement}${cleanBody};\\n }`;\n }\n return match;\n }\n );\n\n modified = modified.replace(\n this.ELSE_REGEX,\n (match: string, blockBody: string, singleLineBody: string, offset: number) => {\n const nearestIf = conditions\n .filter((c) => c.position < offset)\n .reduce((prev, curr) => (!prev || curr.position > prev.position ? curr : prev));\n\n const logStatement = nearestIf\n ? `${loggerName}.debug('else for if (${nearestIf.condition})');\\n `\n : `${loggerName}.debug('else statement');\\n `;\n\n if (blockBody) {\n return `} else {\\n ${logStatement}${blockBody}}`;\n } else if (singleLineBody) {\n return `} else {\\n ${logStatement}${singleLineBody};\\n }`;\n }\n return match;\n }\n );\n\n return modified;\n }\n}\n\nexport default class RflibLoggingAuraInstrument extends SfCommand<RflibLoggingAuraInstrumentResult> {\n public static readonly summary = messages.getMessage('summary');\n public static readonly description = messages.getMessage('description');\n public static readonly examples = messages.getMessages('examples');\n\n public static readonly flags = {\n sourcepath: Flags.string({\n char: 's',\n required: true,\n summary: messages.getMessage('flags.sourcepath.summary'),\n description: messages.getMessage('flags.sourcepath.description')\n }),\n dryrun: Flags.boolean({\n char: 'd',\n default: false,\n summary: messages.getMessage('flags.dryrun.summary'),\n description: messages.getMessage('flags.dryrun.description')\n }),\n prettier: Flags.boolean({\n char: 'p',\n default: false,\n summary: messages.getMessage('flags.prettier.summary'),\n description: messages.getMessage('flags.prettier.description')\n }),\n 'no-if': Flags.boolean({\n summary: messages.getMessage('flags.no-if.summary'),\n description: messages.getMessage('flags.no-if.description'),\n default: false\n }),\n 'skip-instrumented': Flags.boolean({\n summary: messages.getMessage('flags.skip-instrumented.summary'),\n description: messages.getMessage('flags.skip-instrumented.description'),\n default: false\n })\n };\n\n private logger!: Logger;\n private readonly stats: RflibLoggingAuraInstrumentResult = {\n processedFiles: 0,\n modifiedFiles: 0,\n formattedFiles: 0\n };\n\n public async run(): Promise<RflibLoggingAuraInstrumentResult> {\n this.logger = await Logger.child(this.ctor.name);\n const { flags } = await this.parse(RflibLoggingAuraInstrument);\n\n const instrumentationOpts: InstrumentationOptions = {\n prettier: flags.prettier,\n noIf: flags['no-if'],\n skipInstrumented: flags['skip-instrumented']\n };\n\n this.log(`Starting Aura component instrumentation in ${flags.sourcepath}`);\n this.logger.debug(`Dry run mode: ${flags.dryrun}`);\n\n this.spinner.start('Running...');\n await this.processDirectory(flags.sourcepath, flags.dryrun, instrumentationOpts);\n this.spinner.stop();\n\n this.log('\\nInstrumentation complete.');\n this.log(`Processed files: ${this.stats.processedFiles}`);\n this.log(`Modified files: ${this.stats.modifiedFiles}`);\n this.log(`Formatted files: ${this.stats.formattedFiles}`);\n\n return { ...this.stats };\n }\n\n private async processDirectory(\n dirPath: string,\n isDryRun: boolean,\n instrumentationOpts: InstrumentationOptions\n ): Promise<void> {\n this.logger.debug(`Processing directory: ${dirPath}`);\n\n const dirName = path.basename(dirPath);\n const parentDir = path.basename(path.dirname(dirPath));\n\n if (parentDir === 'aura') {\n this.logger.info(`Processing single component: ${dirName}`);\n await this.processAuraComponent(dirPath, dirName, isDryRun, instrumentationOpts);\n return;\n }\n\n const entries = await fs.promises.readdir(dirPath, { withFileTypes: true });\n\n for (const entry of entries) {\n const fullPath = path.join(dirPath, entry.name);\n\n if (entry.isDirectory()) {\n if (entry.name === 'aura') {\n await this.processAuraComponents(fullPath, isDryRun, instrumentationOpts);\n } else {\n await this.processDirectory(fullPath, isDryRun, instrumentationOpts);\n }\n }\n }\n }\n\n private async processAuraComponents(\n auraPath: string,\n isDryRun: boolean,\n instrumentationOpts: InstrumentationOptions\n ): Promise<void> {\n if (path.basename(auraPath) !== 'aura') {\n this.logger.warn(`Not an aura directory: ${auraPath}`);\n return;\n }\n\n const entries = await fs.promises.readdir(auraPath, { withFileTypes: true });\n\n for (const entry of entries) {\n if (entry.isDirectory()) {\n const componentPath = path.join(auraPath, entry.name);\n await this.processAuraComponent(componentPath, entry.name, isDryRun, instrumentationOpts);\n }\n }\n }\n\n private async processAuraComponent(\n componentPath: string,\n componentName: string,\n isDryRun: boolean,\n instrumentationOpts: InstrumentationOptions\n ): Promise<void> {\n this.logger.info(`Processing Aura component: ${componentName}`);\n\n const cmpPath = path.join(componentPath, `${componentName}.cmp`);\n const controllerPath = path.join(componentPath, `${componentName}Controller.js`);\n const helperPath = path.join(componentPath, `${componentName}Helper.js`);\n const rendererPath = path.join(componentPath, `${componentName}Renderer.js`);\n\n try {\n const loggerId = await this.instrumentCmpFile(cmpPath, componentName, isDryRun);\n this.logger.debug(`Using logger ID: ${loggerId}`);\n\n await this.instrumentJsFile(controllerPath, loggerId, isDryRun, instrumentationOpts);\n await this.instrumentJsFile(helperPath, loggerId, isDryRun, instrumentationOpts);\n await this.instrumentJsFile(rendererPath, loggerId, isDryRun, instrumentationOpts);\n } catch (error) {\n this.logger.error(`Error processing Aura component ${componentName}`, error);\n throw error;\n }\n }\n\n private async instrumentCmpFile(\n filePath: string,\n componentName: string,\n isDryRun: boolean\n ): Promise<string> {\n if (!fs.existsSync(filePath)) {\n this.logger.warn(`Component file not found: ${filePath}`);\n return 'logger';\n }\n\n this.logger.debug(`Instrumenting component file: ${filePath}`);\n this.stats.processedFiles++;\n\n let content = await fs.promises.readFile(filePath, 'utf8');\n const originalContent = content;\n\n const loggerMatch = content.match(AuraInstrumentationService.LOGGER_COMPONENT_REGEX);\n if (loggerMatch) {\n return loggerMatch[1];\n }\n\n const lastAttributeMatch = [...content.matchAll(AuraInstrumentationService.ATTRIBUTE_REGEX)].pop();\n if (lastAttributeMatch) {\n const insertPosition = lastAttributeMatch.index + lastAttributeMatch[0].length;\n const loggerComponent = `\\n <c:rflibLoggerCmp aura:id=\"logger\" name=\"${componentName}\" appendComponentId=\"false\" />`;\n content = content.slice(0, insertPosition) + loggerComponent + content.slice(insertPosition);\n }\n\n if (content !== originalContent) {\n this.stats.modifiedFiles++;\n if (!isDryRun) {\n await fs.promises.writeFile(filePath, content, 'utf8');\n this.logger.info(`Modified component file: ${filePath}`);\n } else {\n this.logger.info(`Would modify component file: ${filePath}`);\n }\n }\n\n return 'logger';\n }\n\n private async instrumentJsFile(\n filePath: string,\n loggerId: string,\n isDryRun: boolean,\n instrumentationOpts: InstrumentationOptions\n ): Promise<void> {\n if (!fs.existsSync(filePath)) {\n this.logger.debug(`JavaScript file not found: ${filePath}`);\n return;\n }\n\n this.logger.debug(`Instrumenting JavaScript file: ${filePath}`);\n this.stats.processedFiles++;\n\n let content = await fs.promises.readFile(filePath, 'utf8');\n\n if (instrumentationOpts.skipInstrumented && AuraInstrumentationService.isInstrumented(content, loggerId)) {\n this.logger.info(`Skipping instrumented file: ${filePath}`);\n return;\n }\n\n const originalContent = content;\n const isHelper = filePath.endsWith('Helper.js');\n\n // Process methods and other patterns\n content = AuraInstrumentationService.processMethodLogging(\n content,\n loggerId,\n isHelper,\n instrumentationOpts.noIf\n );\n content = AuraInstrumentationService.processTryCatchBlocks(content);\n\n if (content !== originalContent) {\n this.stats.modifiedFiles++;\n if (!isDryRun) {\n try {\n const finalContent = instrumentationOpts.prettier\n ? await AuraInstrumentationService.formatContent(content)\n : content;\n\n await fs.promises.writeFile(filePath, finalContent);\n\n if (instrumentationOpts.prettier) {\n this.stats.formattedFiles++;\n this.logger.info(`Modified and formatted: ${filePath}`);\n } else {\n this.logger.info(`Modified: ${filePath}`);\n }\n } catch (error) {\n this.logger.warn(`Failed to format ${filePath}: ${error instanceof Error ? error.message : String(error)}`);\n await fs.promises.writeFile(filePath, content);\n this.logger.info(`Modified without formatting: ${filePath}`);\n }\n } else {\n this.logger.info(`Would modify: ${filePath}`);\n }\n }\n }\n}"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
2
|
-
export
|
|
2
|
+
export interface RflibLoggingLwcInstrumentResult {
|
|
3
3
|
processedFiles: number;
|
|
4
4
|
modifiedFiles: number;
|
|
5
5
|
formattedFiles: number;
|
|
6
|
-
}
|
|
6
|
+
}
|
|
7
7
|
export default class RflibLoggingLwcInstrument extends SfCommand<RflibLoggingLwcInstrumentResult> {
|
|
8
8
|
static readonly summary: string;
|
|
9
9
|
static readonly description: string;
|
|
@@ -13,20 +13,10 @@ export default class RflibLoggingLwcInstrument extends SfCommand<RflibLoggingLwc
|
|
|
13
13
|
dryrun: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
14
|
prettier: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
15
|
'no-if': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
|
+
'skip-instrumented': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
17
|
};
|
|
17
18
|
private logger;
|
|
18
|
-
private
|
|
19
|
-
private modifiedFiles;
|
|
20
|
-
private formattedFiles;
|
|
21
|
-
private readonly prettierConfig;
|
|
22
|
-
private static detectExistingImport;
|
|
23
|
-
private static detectExistingLogger;
|
|
24
|
-
private static addImportAndLogger;
|
|
25
|
-
private static findEnclosingMethod;
|
|
26
|
-
private static processIfStatements;
|
|
27
|
-
private static processMethodLogging;
|
|
28
|
-
private static processPromiseChains;
|
|
29
|
-
private static processTryCatchBlocks;
|
|
19
|
+
private readonly stats;
|
|
30
20
|
run(): Promise<RflibLoggingLwcInstrumentResult>;
|
|
31
21
|
private processDirectory;
|
|
32
22
|
private instrumentLwcFile;
|