@salesforce/apex-node 6.0.1 → 6.1.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.
Files changed (59) hide show
  1. package/lib/src/execute/executeService.js +2 -1
  2. package/lib/src/execute/executeService.js.map +1 -1
  3. package/lib/src/reporters/coverageReporter.js +6 -5
  4. package/lib/src/reporters/coverageReporter.js.map +1 -1
  5. package/lib/src/reporters/humanFormatTransform.d.ts +1 -0
  6. package/lib/src/reporters/humanFormatTransform.js +38 -4
  7. package/lib/src/reporters/humanFormatTransform.js.map +1 -1
  8. package/lib/src/reporters/humanReporter.js +42 -12
  9. package/lib/src/reporters/humanReporter.js.map +1 -1
  10. package/lib/src/reporters/index.d.ts +2 -1
  11. package/lib/src/reporters/index.js +5 -3
  12. package/lib/src/reporters/index.js.map +1 -1
  13. package/lib/src/reporters/junitFormatTransformer.d.ts +8 -1
  14. package/lib/src/reporters/junitFormatTransformer.js +48 -19
  15. package/lib/src/reporters/junitFormatTransformer.js.map +1 -1
  16. package/lib/src/reporters/junitReporter.js +21 -15
  17. package/lib/src/reporters/junitReporter.js.map +1 -1
  18. package/lib/src/reporters/tapFormatTransform.d.ts +8 -1
  19. package/lib/src/reporters/tapFormatTransform.js +50 -5
  20. package/lib/src/reporters/tapFormatTransform.js.map +1 -1
  21. package/lib/src/reporters/tapReporter.js +48 -18
  22. package/lib/src/reporters/tapReporter.js.map +1 -1
  23. package/lib/src/streaming/index.d.ts +1 -2
  24. package/lib/src/streaming/index.js +1 -4
  25. package/lib/src/streaming/index.js.map +1 -1
  26. package/lib/src/streaming/testResultStringifyStream.d.ts +10 -2
  27. package/lib/src/streaming/testResultStringifyStream.js +68 -29
  28. package/lib/src/streaming/testResultStringifyStream.js.map +1 -1
  29. package/lib/src/streaming/utils.d.ts +0 -3
  30. package/lib/src/streaming/utils.js +7 -14
  31. package/lib/src/streaming/utils.js.map +1 -1
  32. package/lib/src/tests/asyncTests.d.ts +3 -0
  33. package/lib/src/tests/asyncTests.js +197 -134
  34. package/lib/src/tests/asyncTests.js.map +1 -1
  35. package/lib/src/tests/codeCoverage.js +86 -68
  36. package/lib/src/tests/codeCoverage.js.map +1 -1
  37. package/lib/src/tests/syncTests.js +113 -98
  38. package/lib/src/tests/syncTests.js.map +1 -1
  39. package/lib/src/tests/testService.d.ts +5 -0
  40. package/lib/src/tests/testService.js +119 -96
  41. package/lib/src/tests/testService.js.map +1 -1
  42. package/lib/src/tests/utils.d.ts +3 -0
  43. package/lib/src/tests/utils.js +53 -1
  44. package/lib/src/tests/utils.js.map +1 -1
  45. package/lib/src/utils/heapMonitor.d.ts +72 -0
  46. package/lib/src/utils/heapMonitor.js +164 -0
  47. package/lib/src/utils/heapMonitor.js.map +1 -0
  48. package/lib/src/utils/index.d.ts +1 -0
  49. package/lib/src/utils/index.js +3 -1
  50. package/lib/src/utils/index.js.map +1 -1
  51. package/lib/src/utils/tableWritableStream.js +33 -5
  52. package/lib/src/utils/tableWritableStream.js.map +1 -1
  53. package/package.json +15 -14
  54. package/lib/src/streaming/codeCoverageStringifyStream.d.ts +0 -12
  55. package/lib/src/streaming/codeCoverageStringifyStream.js +0 -80
  56. package/lib/src/streaming/codeCoverageStringifyStream.js.map +0 -1
  57. package/lib/src/streaming/jsonStringifyStream.d.ts +0 -18
  58. package/lib/src/streaming/jsonStringifyStream.js +0 -118
  59. package/lib/src/streaming/jsonStringifyStream.js.map +0 -1
@@ -16,13 +16,14 @@ const asyncTests_1 = require("./asyncTests");
16
16
  const syncTests_1 = require("./syncTests");
17
17
  const diagnosticUtil_1 = require("./diagnosticUtil");
18
18
  const promises_1 = require("node:fs/promises");
19
- const node_fs_1 = require("node:fs");
20
19
  const node_stream_1 = require("node:stream");
21
- const promises_2 = require("node:stream/promises");
22
20
  const streaming_1 = require("../streaming");
23
- const codeCoverageStringifyStream_1 = require("../streaming/codeCoverageStringifyStream");
24
21
  const utils_2 = require("../utils");
25
22
  const narrowing_1 = require("../narrowing");
23
+ const promises_2 = require("node:stream/promises");
24
+ const node_fs_1 = require("node:fs");
25
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
26
+ const bfj = require('bfj');
26
27
  class TestService {
27
28
  connection;
28
29
  asyncService;
@@ -130,7 +131,13 @@ class TestService {
130
131
  * @param token cancellation token
131
132
  */
132
133
  async runTestSynchronous(options, codeCoverage = false, token) {
133
- return await this.syncService.runTests(options, codeCoverage, token);
134
+ utils_2.HeapMonitor.getInstance().startMonitoring();
135
+ try {
136
+ return await this.syncService.runTests(options, codeCoverage, token);
137
+ }
138
+ finally {
139
+ utils_2.HeapMonitor.getInstance().stopMonitoring();
140
+ }
134
141
  }
135
142
  /**
136
143
  * Asynchronous Test Runs
@@ -139,9 +146,16 @@ class TestService {
139
146
  * @param immediatelyReturn should not wait for test run to complete, return test run id immediately
140
147
  * @param progress progress reporter
141
148
  * @param token cancellation token
149
+ * @param timeout
142
150
  */
143
151
  async runTestAsynchronous(options, codeCoverage = false, immediatelyReturn = false, progress, token, timeout) {
144
- return await this.asyncService.runTests(options, codeCoverage, immediatelyReturn, progress, token, timeout);
152
+ utils_2.HeapMonitor.getInstance().startMonitoring();
153
+ try {
154
+ return await this.asyncService.runTests(options, codeCoverage, immediatelyReturn, progress, token, timeout);
155
+ }
156
+ finally {
157
+ utils_2.HeapMonitor.getInstance().stopMonitoring();
158
+ }
145
159
  }
146
160
  /**
147
161
  * Report Asynchronous Test Run Results
@@ -150,7 +164,13 @@ class TestService {
150
164
  * @param token cancellation token
151
165
  */
152
166
  async reportAsyncResults(testRunId, codeCoverage = false, token) {
153
- return await this.asyncService.reportAsyncResults(testRunId, codeCoverage, token);
167
+ utils_2.HeapMonitor.getInstance().startMonitoring();
168
+ try {
169
+ return await this.asyncService.reportAsyncResults(testRunId, codeCoverage, token);
170
+ }
171
+ finally {
172
+ utils_2.HeapMonitor.getInstance().stopMonitoring();
173
+ }
154
174
  }
155
175
  /**
156
176
  *
@@ -160,101 +180,91 @@ class TestService {
160
180
  * @returns list of result files created
161
181
  */
162
182
  async writeResultFiles(result, outputDirConfig, codeCoverage = false) {
163
- const filesWritten = [];
164
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
165
- const { dirPath, resultFormats, fileInfos } = outputDirConfig;
166
- // ensure supplied result formats are support here
167
- if (resultFormats &&
168
- !resultFormats.every((format) => format in types_1.ResultFormat)) {
169
- throw new Error(i18n_1.nls.localize('resultFormatErr'));
170
- }
171
- const testRunId = (0, narrowing_1.isTestResult)(result)
172
- ? result.summary.testRunId
173
- : result.testRunId;
174
- const pipeThese = [];
175
- await (0, promises_1.mkdir)(dirPath, { recursive: true });
176
- pipeThese.push([
177
- node_stream_1.Readable.from([testRunId]),
178
- (0, node_fs_1.createWriteStream)((0, path_1.join)(dirPath, 'test-run-id.txt'), 'utf8')
179
- ]);
180
- filesWritten.push((0, path_1.join)(dirPath, 'test-run-id.txt'));
181
- // produce result formats
182
- if (resultFormats) {
183
- if (!(0, narrowing_1.isTestResult)(result)) {
184
- throw new Error(i18n_1.nls.localize('runIdFormatErr'));
183
+ utils_2.HeapMonitor.getInstance().startMonitoring();
184
+ utils_2.HeapMonitor.getInstance().checkHeapSize('testService.writeResultFiles');
185
+ try {
186
+ const filesWritten = [];
187
+ const { dirPath, resultFormats, fileInfos } = outputDirConfig;
188
+ if (resultFormats &&
189
+ !resultFormats.every((format) => format in types_1.ResultFormat)) {
190
+ throw new Error(i18n_1.nls.localize('resultFormatErr'));
185
191
  }
186
- for (const format of resultFormats) {
187
- switch (format) {
188
- case types_1.ResultFormat.json:
189
- // Create a readable stream from the JSON object
190
- const jsonFilePath = (0, path_1.join)(dirPath, testRunId ? `test-result-${testRunId}.json` : `test-result.json`);
191
- filesWritten.push(jsonFilePath);
192
- pipeThese.push([
193
- streaming_1.TestResultStringifyStream.fromTestResult(result),
194
- (0, node_fs_1.createWriteStream)(jsonFilePath)
195
- ]);
196
- break;
197
- case types_1.ResultFormat.tap:
198
- const tapFilePath = (0, path_1.join)(dirPath, `test-result-${testRunId}-tap.txt`);
199
- filesWritten.push(tapFilePath);
200
- pipeThese.push([
201
- new reporters_1.TapFormatTransformer(result),
202
- (0, node_fs_1.createWriteStream)(tapFilePath)
203
- ]);
204
- break;
205
- case types_1.ResultFormat.junit:
206
- const filePath = (0, path_1.join)(dirPath, testRunId
207
- ? `test-result-${testRunId}-junit.xml`
208
- : `test-result-junit.xml`);
209
- filesWritten.push(filePath);
210
- pipeThese.push([
211
- new reporters_1.JUnitFormatTransformer(result),
212
- (0, node_fs_1.createWriteStream)(filePath)
213
- ]);
214
- break;
215
- }
192
+ await (0, promises_1.mkdir)(dirPath, { recursive: true });
193
+ const testRunId = (0, narrowing_1.isTestResult)(result)
194
+ ? result.summary.testRunId
195
+ : result.testRunId;
196
+ try {
197
+ await (0, promises_1.writeFile)((0, path_1.join)(dirPath, 'test-run-id.txt'), testRunId);
198
+ filesWritten.push((0, path_1.join)(dirPath, 'test-run-id.txt'));
216
199
  }
217
- }
218
- // produce code coverage
219
- if (codeCoverage) {
220
- if (!(0, narrowing_1.isTestResult)(result)) {
221
- throw new Error(i18n_1.nls.localize('covIdFormatErr'));
200
+ catch (err) {
201
+ console.error(`Error writing file: ${err}`);
222
202
  }
223
- const filePath = (0, path_1.join)(dirPath, `test-result-${testRunId}-codecoverage.json`);
224
- const c = result.tests
225
- .map((record) => {
226
- return record.perClassCoverage;
227
- })
228
- .filter((pcc) => pcc?.length);
229
- pipeThese.push([
230
- node_stream_1.Readable.from(c),
231
- new codeCoverageStringifyStream_1.CodeCoverageStringifyStream(),
232
- (0, node_fs_1.createWriteStream)(filePath)
233
- ]);
234
- filesWritten.push(filePath);
235
- }
236
- fileInfos?.forEach((fileInfo) => {
237
- const fileInfoPath = (0, path_1.join)(dirPath, fileInfo.filename);
238
- if (typeof fileInfo.content === 'string') {
239
- pipeThese.push([
240
- node_stream_1.Readable.from([fileInfo.content]),
241
- (0, node_fs_1.createWriteStream)(fileInfoPath)
242
- ]);
203
+ if (resultFormats) {
204
+ if (!(0, narrowing_1.isTestResult)(result)) {
205
+ throw new Error(i18n_1.nls.localize('runIdFormatErr'));
206
+ }
207
+ for (const format of resultFormats) {
208
+ let filePath;
209
+ let readable;
210
+ switch (format) {
211
+ case types_1.ResultFormat.json:
212
+ filePath = (0, path_1.join)(dirPath, `test-result-${testRunId || 'default'}.json`);
213
+ readable = streaming_1.TestResultStringifyStream.fromTestResult(result, {
214
+ bufferSize: (0, utils_1.getBufferSize)()
215
+ });
216
+ break;
217
+ case types_1.ResultFormat.tap:
218
+ filePath = (0, path_1.join)(dirPath, `test-result-${testRunId}-tap.txt`);
219
+ readable = new reporters_1.TapFormatTransformer(result, undefined, {
220
+ bufferSize: (0, utils_1.getBufferSize)()
221
+ });
222
+ break;
223
+ case types_1.ResultFormat.junit:
224
+ filePath = (0, path_1.join)(dirPath, `test-result-${testRunId || 'default'}-junit.xml`);
225
+ readable = new reporters_1.JUnitFormatTransformer(result, {
226
+ bufferSize: (0, utils_1.getBufferSize)()
227
+ });
228
+ break;
229
+ }
230
+ if (filePath && readable) {
231
+ filesWritten.push(await this.runPipeline(readable, filePath));
232
+ }
233
+ }
243
234
  }
244
- else {
245
- pipeThese.push([
246
- streaming_1.JSONStringifyStream.from(fileInfo.content),
247
- (0, node_fs_1.createWriteStream)(fileInfoPath)
248
- ]);
235
+ if (codeCoverage) {
236
+ if (!(0, narrowing_1.isTestResult)(result)) {
237
+ throw new Error(i18n_1.nls.localize('covIdFormatErr'));
238
+ }
239
+ const filePath = (0, path_1.join)(dirPath, `test-result-${testRunId}-codecoverage.json`);
240
+ const c = result.tests
241
+ .map((record) => record.perClassCoverage)
242
+ .filter((pcc) => pcc?.length);
243
+ filesWritten.push(await this.runPipeline(bfj.stringify(c, {
244
+ bufferLength: (0, utils_1.getBufferSize)(),
245
+ iterables: 'ignore',
246
+ space: (0, utils_1.getJsonIndent)()
247
+ }), filePath));
249
248
  }
250
- filesWritten.push(fileInfoPath);
251
- });
252
- await Promise.all(pipeThese.map((streams) => (0, promises_2.pipeline)(streams))).catch((err) => {
253
- const error = new Error('An error occurred writing files');
254
- error.stack = err.stack;
255
- throw error;
256
- });
257
- return filesWritten;
249
+ if (fileInfos) {
250
+ for (const fileInfo of fileInfos) {
251
+ const filePath = (0, path_1.join)(dirPath, fileInfo.filename);
252
+ const readable = typeof fileInfo.content === 'string'
253
+ ? node_stream_1.Readable.from([fileInfo.content])
254
+ : bfj.stringify(fileInfo.content, {
255
+ bufferLength: (0, utils_1.getBufferSize)(),
256
+ iterables: 'ignore',
257
+ space: (0, utils_1.getJsonIndent)()
258
+ });
259
+ filesWritten.push(await this.runPipeline(readable, filePath));
260
+ }
261
+ }
262
+ return filesWritten;
263
+ }
264
+ finally {
265
+ utils_2.HeapMonitor.getInstance().checkHeapSize('testService.writeResultFiles');
266
+ utils_2.HeapMonitor.getInstance().stopMonitoring();
267
+ }
258
268
  }
259
269
  // utils to build test run payloads that may contain namespaces
260
270
  async buildSyncPayload(testLevel, tests, classnames) {
@@ -389,6 +399,19 @@ class TestService {
389
399
  testLevel: "RunSpecifiedTests" /* TestLevel.RunSpecifiedTests */
390
400
  };
391
401
  }
402
+ async runPipeline(readable, filePath, transform) {
403
+ const writable = this.createStream(filePath);
404
+ if (transform) {
405
+ await (0, promises_2.pipeline)(readable, transform, writable);
406
+ }
407
+ else {
408
+ await (0, promises_2.pipeline)(readable, writable);
409
+ }
410
+ return filePath;
411
+ }
412
+ createStream(filePath) {
413
+ return (0, node_fs_1.createWriteStream)(filePath, 'utf8');
414
+ }
392
415
  }
393
416
  exports.TestService = TestService;
394
417
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"testService.js","sourceRoot":"","sources":["../../../src/tests/testService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testService.js","sourceRoot":"","sources":["../../../src/tests/testService.ts"],"names":[],"mappings":"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"}
@@ -5,3 +5,6 @@ export declare function calculatePercentage(dividend: number, divisor: number):
5
5
  export declare function stringify(jsonObj: object): string;
6
6
  export declare function queryNamespaces(connection: Connection): Promise<NamespaceInfo[]>;
7
7
  export declare const queryAll: <R>(connection: Connection, query: string, tooling?: boolean) => Promise<QueryResult<R>>;
8
+ export declare const getJsonIndent: () => number | undefined;
9
+ export declare const getBufferSize: () => number;
10
+ export declare const resetLimitsForTesting: () => void;
@@ -6,7 +6,16 @@
6
6
  * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.queryAll = exports.queryNamespaces = exports.stringify = exports.calculatePercentage = void 0;
9
+ exports.resetLimitsForTesting = exports.getBufferSize = exports.getJsonIndent = exports.queryAll = exports.queryNamespaces = exports.stringify = exports.calculatePercentage = void 0;
10
+ const core_1 = require("@salesforce/core");
11
+ const DEFAULT_BUFFER_SIZE = 256;
12
+ const MIN_BUFFER_SIZE = 256;
13
+ const MAX_BUFFER_SIZE = 32_768;
14
+ const DEFAULT_JSON_INDENT = undefined;
15
+ const MIN_JSON_INDENT = 0;
16
+ const MAX_JSON_INDENT = 8;
17
+ let jsonIndent = null;
18
+ let bufferSize = null;
10
19
  function calculatePercentage(dividend, divisor) {
11
20
  let percentage = '0%';
12
21
  if (dividend > 0) {
@@ -51,4 +60,47 @@ const queryAll = async (connection, query, tooling = false) => {
51
60
  };
52
61
  };
53
62
  exports.queryAll = queryAll;
63
+ const getJsonIndent = () => {
64
+ if (jsonIndent !== null) {
65
+ return jsonIndent;
66
+ }
67
+ let jsonIndentNum = DEFAULT_JSON_INDENT;
68
+ const envJsonIndent = process.env.SF_APEX_RESULTS_JSON_INDENT;
69
+ if (envJsonIndent && Number.isInteger(Number(envJsonIndent))) {
70
+ jsonIndentNum = Number(envJsonIndent);
71
+ }
72
+ if (jsonIndentNum < MIN_JSON_INDENT || jsonIndentNum > MAX_JSON_INDENT) {
73
+ const logger = core_1.Logger.childFromRoot('utils');
74
+ logger.warn(`Json indent ${jsonIndentNum} is outside of the valid range (${MIN_JSON_INDENT}-${MAX_JSON_INDENT}). Using default json indent of ${DEFAULT_JSON_INDENT}.`);
75
+ jsonIndentNum = DEFAULT_JSON_INDENT;
76
+ }
77
+ jsonIndent = jsonIndentNum;
78
+ return jsonIndent;
79
+ };
80
+ exports.getJsonIndent = getJsonIndent;
81
+ const getBufferSize = () => {
82
+ if (bufferSize !== null) {
83
+ return bufferSize;
84
+ }
85
+ let bufferSizeNum = DEFAULT_BUFFER_SIZE;
86
+ const jsonBufferSize = process.env.SF_APEX_JSON_BUFFER_SIZE;
87
+ if (jsonBufferSize && Number.isInteger(Number(jsonBufferSize))) {
88
+ bufferSizeNum = Number(jsonBufferSize);
89
+ }
90
+ if (bufferSizeNum < MIN_BUFFER_SIZE || bufferSizeNum > MAX_BUFFER_SIZE) {
91
+ const logger = core_1.Logger.childFromRoot('utils');
92
+ logger.warn(`Buffer size ${bufferSizeNum} is outside of the valid range (${MIN_BUFFER_SIZE}-${MAX_BUFFER_SIZE}). Using default buffer size of ${DEFAULT_BUFFER_SIZE}.`);
93
+ bufferSizeNum = DEFAULT_BUFFER_SIZE;
94
+ }
95
+ bufferSize = bufferSizeNum;
96
+ JSON.stringify(bufferSize);
97
+ return bufferSize;
98
+ };
99
+ exports.getBufferSize = getBufferSize;
100
+ // exported for testing
101
+ const resetLimitsForTesting = () => {
102
+ bufferSize = null;
103
+ jsonIndent = null;
104
+ };
105
+ exports.resetLimitsForTesting = resetLimitsForTesting;
54
106
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/tests/utils.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAMH,SAAgB,mBAAmB,CAAC,QAAgB,EAAE,OAAe;IACnE,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QACvD,UAAU,GAAG,GAAG,OAAO,GAAG,CAAC;IAC7B,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAPD,kDAOC;AAED,SAAgB,SAAS,CAAC,OAAe;IACvC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAFD,8BAEC;AAEM,KAAK,UAAU,eAAe,CACnC,UAAsB;IAEtB,MAAM,gBAAgB,GAAG,4CAA4C,CAAC;IACtE,MAAM,kBAAkB,GAAG,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,0CAA0C,CAAC;IAC9D,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAElD,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC;IAC5E,MAAM,mBAAmB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAClE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;IAClE,CAAC,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5D,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,aAAa,EAAE,GAAG,mBAAmB,CAAC,CAAC;AACpD,CAAC;AAjBD,0CAiBC;AAEM,MAAM,QAAQ,GAAG,KAAK,EAC3B,UAAsB,EACtB,KAAa,EACb,OAAO,GAAG,KAAK,EACU,EAAE;IAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;IACvD,MAAM,UAAU,GAAQ,EAAE,CAAC;IAC3B,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAI,KAAK,CAAC,CAAC;IACxC,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAmB,CAAC;QACzE,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,OAAO;QACL,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,UAAU,CAAC,MAAM;QAC5B,OAAO,EAAE,UAAU;KACpB,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,QAAQ,YAmBnB"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/tests/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /// <reference types="node" />
2
+ export declare class NullHeapMonitor implements Disposable {
3
+ checkHeapSize(): void;
4
+ startMonitoring(): void;
5
+ stopMonitoring(): void;
6
+ [Symbol.dispose](): void;
7
+ }
8
+ /**
9
+ * Class responsible for monitoring heap memory usage.
10
+ */
11
+ export declare class HeapMonitor implements Disposable {
12
+ private static instance;
13
+ private logger;
14
+ private intervalId?;
15
+ private isMonitoring;
16
+ private interval;
17
+ /**
18
+ * Private constructor to enforce singleton pattern.
19
+ */
20
+ private constructor();
21
+ /**
22
+ * Returns the singleton instance of HeapMonitor.
23
+ * @returns The singleton instance.
24
+ */
25
+ static getInstance(): HeapMonitor | NullHeapMonitor;
26
+ /**
27
+ * Checks the current heap size and logs the details.
28
+ * @param [applicationArea] - Optional application area to be included in the log.
29
+ */
30
+ checkHeapSize(applicationArea?: string): void;
31
+ /**
32
+ * Starts monitoring the heap memory usage at regular intervals.
33
+ * WARNING: Monitoring is done on a schedule interval, which must stopped/cleared
34
+ * or the monitor will continue to run. The symptom of this will be a node process
35
+ * that seems to be hanging.
36
+ *
37
+ * One must call stopMonitoring or capture the instance in a scope with the
38
+ * Typescript "using"
39
+ * @example
40
+ * ```typescript
41
+ * async function main() {
42
+ * await using(HeapMonitor.getInstance(), async (heapMonitor) => {
43
+ * heapMonitor.startMonitoring();
44
+ *
45
+ * // Simulate some work
46
+ * await new Promise(resolve => setTimeout(resolve, 2000));
47
+ *
48
+ * // No need to explicitly call dispose, it will be called automatically
49
+ * });
50
+ * }
51
+ *
52
+ * main().catch(console.error);
53
+ * ```
54
+ **/
55
+ startMonitoring(): void;
56
+ /**
57
+ * Stops monitoring the heap memory usage.
58
+ *
59
+ * WARNING: It is imperative that a heap monitor be stopped
60
+ * before the node process exits.
61
+ *
62
+ * See @{link startMonitoring}
63
+ */
64
+ stopMonitoring(): void;
65
+ /**
66
+ * dispose method that will be called when instance of HeapMonitor
67
+ * is captured by Typescript "using" keyword.
68
+ *
69
+ * See {@link startMonitoring}
70
+ */
71
+ [Symbol.dispose](): void;
72
+ }
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.HeapMonitor = exports.NullHeapMonitor = void 0;
7
+ /*
8
+ * Copyright (c) 2024, salesforce.com, inc.
9
+ * All rights reserved.
10
+ * Licensed under the BSD 3-Clause license.
11
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
12
+ */
13
+ const core_1 = require("@salesforce/core");
14
+ const node_v8_1 = __importDefault(require("node:v8"));
15
+ const node_timers_1 = require("node:timers");
16
+ const INTERVAL_DEFAULT = 500;
17
+ const INTERVAL_MIN = 100;
18
+ const INTERVAL_MAX = 10_000;
19
+ class NullHeapMonitor {
20
+ checkHeapSize() { }
21
+ startMonitoring() { }
22
+ stopMonitoring() { }
23
+ [Symbol.dispose]() { }
24
+ }
25
+ exports.NullHeapMonitor = NullHeapMonitor;
26
+ /**
27
+ * Class responsible for monitoring heap memory usage.
28
+ */
29
+ class HeapMonitor {
30
+ static instance;
31
+ logger;
32
+ intervalId;
33
+ isMonitoring;
34
+ interval;
35
+ /**
36
+ * Private constructor to enforce singleton pattern.
37
+ */
38
+ constructor() {
39
+ this.logger = core_1.Logger.childFromRoot('heap-monitor', {
40
+ tag: 'heap-monitor'
41
+ });
42
+ this.isMonitoring = false;
43
+ // Check for SF_HEAP_MONITOR_INTERVAL environment variable
44
+ this.interval = INTERVAL_DEFAULT; // default value
45
+ const envInterval = process.env.SF_HEAP_MONITOR_INTERVAL;
46
+ if (envInterval && Number.isInteger(Number(envInterval))) {
47
+ this.interval = Number(envInterval);
48
+ }
49
+ if (this.interval < INTERVAL_MIN || this.interval > INTERVAL_MAX) {
50
+ this.logger.warn(`Interval if ${this.interval} found in SF_HEAP_MONITOR_INTERVAL must be between: ${INTERVAL_MIN} and ${INTERVAL_MAX}. Using default of ${INTERVAL_DEFAULT}`);
51
+ this.interval = INTERVAL_DEFAULT;
52
+ }
53
+ }
54
+ /**
55
+ * Returns the singleton instance of HeapMonitor.
56
+ * @returns The singleton instance.
57
+ */
58
+ static getInstance() {
59
+ if (!HeapMonitor.instance) {
60
+ if (core_1.Logger.getRoot().shouldLog(core_1.LoggerLevel.DEBUG)) {
61
+ HeapMonitor.instance = new HeapMonitor();
62
+ }
63
+ else {
64
+ HeapMonitor.instance = new NullHeapMonitor();
65
+ }
66
+ }
67
+ return HeapMonitor.instance;
68
+ }
69
+ /**
70
+ * Checks the current heap size and logs the details.
71
+ * @param [applicationArea] - Optional application area to be included in the log.
72
+ */
73
+ checkHeapSize(applicationArea) {
74
+ if (!this.logger.shouldLog(core_1.LoggerLevel.DEBUG)) {
75
+ return;
76
+ }
77
+ const heapStats = node_v8_1.default.getHeapStatistics();
78
+ const heapSpaceStats = node_v8_1.default.getHeapSpaceStatistics();
79
+ const memoryUsage = process.memoryUsage();
80
+ const logRecord = {
81
+ msg: 'Memory usage',
82
+ applicationArea,
83
+ rss: Number(memoryUsage.rss),
84
+ heapTotal: Number(memoryUsage.heapTotal),
85
+ heapUsed: Number(memoryUsage.heapUsed),
86
+ external: Number(memoryUsage.external)
87
+ };
88
+ // Convert heapStats properties to numbers and add to logRecord
89
+ for (const [key, value] of Object.entries(heapStats)) {
90
+ logRecord[key] = Number(value);
91
+ }
92
+ // Flatten heapSpaces into individual properties
93
+ heapSpaceStats.forEach((space) => {
94
+ logRecord[`${space.space_name}_total`] = Number(space.space_size);
95
+ logRecord[`${space.space_name}_used`] = Number(space.space_used_size);
96
+ logRecord[`${space.space_name}_available`] = Number(space.space_available_size);
97
+ });
98
+ this.logger.debug(logRecord);
99
+ }
100
+ /**
101
+ * Starts monitoring the heap memory usage at regular intervals.
102
+ * WARNING: Monitoring is done on a schedule interval, which must stopped/cleared
103
+ * or the monitor will continue to run. The symptom of this will be a node process
104
+ * that seems to be hanging.
105
+ *
106
+ * One must call stopMonitoring or capture the instance in a scope with the
107
+ * Typescript "using"
108
+ * @example
109
+ * ```typescript
110
+ * async function main() {
111
+ * await using(HeapMonitor.getInstance(), async (heapMonitor) => {
112
+ * heapMonitor.startMonitoring();
113
+ *
114
+ * // Simulate some work
115
+ * await new Promise(resolve => setTimeout(resolve, 2000));
116
+ *
117
+ * // No need to explicitly call dispose, it will be called automatically
118
+ * });
119
+ * }
120
+ *
121
+ * main().catch(console.error);
122
+ * ```
123
+ **/
124
+ startMonitoring() {
125
+ if (!this.isMonitoring) {
126
+ this.isMonitoring = true;
127
+ if (!this.logger.shouldLog(core_1.LoggerLevel.DEBUG)) {
128
+ return;
129
+ }
130
+ this.checkHeapSize();
131
+ this.intervalId = setInterval(() => this.checkHeapSize(), this.interval);
132
+ }
133
+ }
134
+ /**
135
+ * Stops monitoring the heap memory usage.
136
+ *
137
+ * WARNING: It is imperative that a heap monitor be stopped
138
+ * before the node process exits.
139
+ *
140
+ * See @{link startMonitoring}
141
+ */
142
+ stopMonitoring() {
143
+ if (this.isMonitoring) {
144
+ this.isMonitoring = false;
145
+ if (this.intervalId) {
146
+ (0, node_timers_1.clearInterval)(this.intervalId);
147
+ this.intervalId = undefined;
148
+ }
149
+ }
150
+ }
151
+ /**
152
+ * dispose method that will be called when instance of HeapMonitor
153
+ * is captured by Typescript "using" keyword.
154
+ *
155
+ * See {@link startMonitoring}
156
+ */
157
+ [Symbol.dispose]() {
158
+ this.stopMonitoring();
159
+ this.logger.debug('HeapMonitor disposed');
160
+ HeapMonitor.instance = null;
161
+ }
162
+ }
163
+ exports.HeapMonitor = HeapMonitor;
164
+ //# sourceMappingURL=heapMonitor.js.map