@salesforce/apex-node 3.1.0 → 4.0.2

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 (79) hide show
  1. package/lib/src/execute/executeService.js +1 -0
  2. package/lib/src/execute/executeService.js.map +1 -1
  3. package/lib/src/i18n/i18n.d.ts +1 -0
  4. package/lib/src/i18n/i18n.js +2 -1
  5. package/lib/src/i18n/i18n.js.map +1 -1
  6. package/lib/src/i18n/index.js +2 -2
  7. package/lib/src/i18n/index.js.map +1 -1
  8. package/lib/src/index.d.ts +2 -2
  9. package/lib/src/index.js +3 -1
  10. package/lib/src/index.js.map +1 -1
  11. package/lib/src/narrowing/index.d.ts +1 -0
  12. package/lib/src/narrowing/index.js +27 -0
  13. package/lib/src/narrowing/index.js.map +1 -0
  14. package/lib/src/narrowing/narrowing.d.ts +18 -0
  15. package/lib/src/narrowing/narrowing.js +82 -0
  16. package/lib/src/narrowing/narrowing.js.map +1 -0
  17. package/lib/src/reporters/humanFormatTransform.d.ts +15 -0
  18. package/lib/src/reporters/humanFormatTransform.js +240 -0
  19. package/lib/src/reporters/humanFormatTransform.js.map +1 -0
  20. package/lib/src/reporters/humanReporter.js +7 -9
  21. package/lib/src/reporters/humanReporter.js.map +1 -1
  22. package/lib/src/reporters/index.d.ts +2 -0
  23. package/lib/src/reporters/index.js +6 -2
  24. package/lib/src/reporters/index.js.map +1 -1
  25. package/lib/src/reporters/junitFormatTransformer.d.ts +12 -0
  26. package/lib/src/reporters/junitFormatTransformer.js +106 -0
  27. package/lib/src/reporters/junitFormatTransformer.js.map +1 -0
  28. package/lib/src/reporters/junitReporter.d.ts +1 -2
  29. package/lib/src/reporters/junitReporter.js +7 -15
  30. package/lib/src/reporters/junitReporter.js.map +1 -1
  31. package/lib/src/reporters/tapFormatTransform.d.ts +18 -0
  32. package/lib/src/reporters/tapFormatTransform.js +86 -0
  33. package/lib/src/reporters/tapFormatTransform.js.map +1 -0
  34. package/lib/src/reporters/tapReporter.d.ts +1 -1
  35. package/lib/src/streaming/codeCoverageStringifyStream.d.ts +12 -0
  36. package/lib/src/streaming/codeCoverageStringifyStream.js +80 -0
  37. package/lib/src/streaming/codeCoverageStringifyStream.js.map +1 -0
  38. package/lib/src/streaming/index.d.ts +3 -0
  39. package/lib/src/streaming/index.js +11 -1
  40. package/lib/src/streaming/index.js.map +1 -1
  41. package/lib/src/streaming/jsonStringifyStream.d.ts +18 -0
  42. package/lib/src/streaming/jsonStringifyStream.js +118 -0
  43. package/lib/src/streaming/jsonStringifyStream.js.map +1 -0
  44. package/lib/src/streaming/streamingClient.js +12 -12
  45. package/lib/src/streaming/streamingClient.js.map +1 -1
  46. package/lib/src/streaming/testResultStringifyStream.d.ts +12 -0
  47. package/lib/src/streaming/testResultStringifyStream.js +102 -0
  48. package/lib/src/streaming/testResultStringifyStream.js.map +1 -0
  49. package/lib/src/streaming/utils.d.ts +8 -0
  50. package/lib/src/streaming/utils.js +43 -0
  51. package/lib/src/streaming/utils.js.map +1 -0
  52. package/lib/src/tests/asyncTests.d.ts +6 -3
  53. package/lib/src/tests/asyncTests.js +32 -35
  54. package/lib/src/tests/asyncTests.js.map +1 -1
  55. package/lib/src/tests/index.d.ts +1 -1
  56. package/lib/src/tests/index.js +2 -2
  57. package/lib/src/tests/index.js.map +1 -1
  58. package/lib/src/tests/testService.d.ts +2 -2
  59. package/lib/src/tests/testService.js +99 -69
  60. package/lib/src/tests/testService.js.map +1 -1
  61. package/lib/src/tests/types.d.ts +4 -9
  62. package/lib/src/tests/types.js.map +1 -1
  63. package/lib/src/tests/utils.d.ts +0 -2
  64. package/lib/src/tests/utils.js +1 -12
  65. package/lib/src/tests/utils.js.map +1 -1
  66. package/lib/src/utils/dateUtil.d.ts +1 -1
  67. package/lib/src/utils/dateUtil.js +3 -0
  68. package/lib/src/utils/dateUtil.js.map +1 -1
  69. package/lib/src/utils/elapsedTime.d.ts +1 -1
  70. package/lib/src/utils/elapsedTime.js.map +1 -1
  71. package/lib/src/utils/index.d.ts +2 -2
  72. package/lib/src/utils/index.js.map +1 -1
  73. package/lib/src/utils/table.d.ts +1 -7
  74. package/lib/src/utils/table.js.map +1 -1
  75. package/lib/src/utils/tableWritableStream.d.ts +16 -0
  76. package/lib/src/utils/tableWritableStream.js +111 -0
  77. package/lib/src/utils/tableWritableStream.js.map +1 -0
  78. package/lib/src/utils/types.d.ts +13 -0
  79. package/package.json +1 -1
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JUnitFormatTransformer = exports.TapFormatTransformer = exports.DefaultWatermarks = exports.DefaultReportOptions = exports.CoverageReporter = exports.HumanReporter = exports.JUnitReporter = exports.TapReporter = void 0;
2
4
  /*
3
5
  * Copyright (c) 2020, salesforce.com, inc.
4
6
  * All rights reserved.
5
7
  * Licensed under the BSD 3-Clause license.
6
8
  * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
9
  */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.DefaultWatermarks = exports.DefaultReportOptions = exports.CoverageReporter = exports.HumanReporter = exports.JUnitReporter = exports.TapReporter = void 0;
10
10
  var tapReporter_1 = require("./tapReporter");
11
11
  Object.defineProperty(exports, "TapReporter", { enumerable: true, get: function () { return tapReporter_1.TapReporter; } });
12
12
  var junitReporter_1 = require("./junitReporter");
@@ -17,4 +17,8 @@ var coverageReporter_1 = require("./coverageReporter");
17
17
  Object.defineProperty(exports, "CoverageReporter", { enumerable: true, get: function () { return coverageReporter_1.CoverageReporter; } });
18
18
  Object.defineProperty(exports, "DefaultReportOptions", { enumerable: true, get: function () { return coverageReporter_1.DefaultReportOptions; } });
19
19
  Object.defineProperty(exports, "DefaultWatermarks", { enumerable: true, get: function () { return coverageReporter_1.DefaultWatermarks; } });
20
+ var tapFormatTransform_1 = require("./tapFormatTransform");
21
+ Object.defineProperty(exports, "TapFormatTransformer", { enumerable: true, get: function () { return tapFormatTransform_1.TapFormatTransformer; } });
22
+ var junitFormatTransformer_1 = require("./junitFormatTransformer");
23
+ Object.defineProperty(exports, "JUnitFormatTransformer", { enumerable: true, get: function () { return junitFormatTransformer_1.JUnitFormatTransformer; } });
20
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/reporters/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,uDAM4B;AAL1B,oHAAA,gBAAgB,OAAA;AAGhB,wHAAA,oBAAoB,OAAA;AACpB,qHAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/reporters/index.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,uDAM4B;AAL1B,oHAAA,gBAAgB,OAAA;AAGhB,wHAAA,oBAAoB,OAAA;AACpB,qHAAA,iBAAiB,OAAA;AAEnB,2DAA4D;AAAnD,0HAAA,oBAAoB,OAAA;AAC7B,mEAAkE;AAAzD,gIAAA,sBAAsB,OAAA"}
@@ -0,0 +1,12 @@
1
+ /// <reference types="node" />
2
+ import { TestResult } from '../tests';
3
+ import { Readable, ReadableOptions } from 'node:stream';
4
+ export declare class JUnitFormatTransformer extends Readable {
5
+ private readonly testResult;
6
+ constructor(testResult: TestResult, options?: ReadableOptions);
7
+ _read(): void;
8
+ format(): void;
9
+ buildProperties(): void;
10
+ buildTestCases(): void;
11
+ private static xmlEscape;
12
+ }
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.JUnitFormatTransformer = void 0;
10
+ const utils_1 = require("../utils");
11
+ const node_stream_1 = require("node:stream");
12
+ const narrowing_1 = require("../narrowing");
13
+ // cli currently has spaces in multiples of four for junit format
14
+ const tab = ' ';
15
+ const timeProperties = [
16
+ 'testExecutionTimeInMs',
17
+ 'testTotalTimeInMs',
18
+ 'commandTimeInMs'
19
+ ];
20
+ // properties not in cli junit spec
21
+ const skippedProperties = ['skipRate', 'totalLines', 'linesCovered'];
22
+ class JUnitFormatTransformer extends node_stream_1.Readable {
23
+ testResult;
24
+ constructor(testResult, options) {
25
+ super(options);
26
+ this.testResult = testResult;
27
+ this.testResult = testResult;
28
+ }
29
+ _read() {
30
+ this.format();
31
+ this.push(null); // Signal the end of the stream
32
+ }
33
+ format() {
34
+ const { summary } = this.testResult;
35
+ this.push(`<?xml version="1.0" encoding="UTF-8"?>\n`);
36
+ this.push(`<testsuites>\n`);
37
+ this.push(`${tab}<testsuite name="force.apex" `);
38
+ this.push(`timestamp="${summary.testStartTime}" `);
39
+ this.push(`hostname="${summary.hostname}" `);
40
+ this.push(`tests="${summary.testsRan}" `);
41
+ this.push(`failures="${summary.failing}" `);
42
+ this.push(`errors="0" `);
43
+ this.push(`time="${(0, utils_1.msToSecond)(summary.testExecutionTimeInMs)}">\n`);
44
+ this.buildProperties();
45
+ this.buildTestCases();
46
+ this.push(`${tab}</testsuite>\n`);
47
+ this.push(`</testsuites>\n`);
48
+ }
49
+ buildProperties() {
50
+ this.push(`${tab}${tab}<properties>\n`);
51
+ Object.entries(this.testResult.summary).forEach(([key, value]) => {
52
+ if ((0, narrowing_1.isEmpty)(value) || skippedProperties.includes(key)) {
53
+ return;
54
+ }
55
+ if (timeProperties.includes(key)) {
56
+ value = `${(0, utils_1.msToSecond)(value)} s`;
57
+ key = key.replace('InMs', '');
58
+ }
59
+ if (key === 'outcome' && value === 'Passed') {
60
+ value = 'Successful';
61
+ }
62
+ if (key === 'testStartTime') {
63
+ value = (0, utils_1.formatStartTime)(value);
64
+ }
65
+ this.push(`${tab}${tab}${tab}<property name="${key}" value="${value}"/>\n`);
66
+ });
67
+ this.push(`${tab}${tab}</properties>\n`);
68
+ }
69
+ buildTestCases() {
70
+ const testCases = this.testResult.tests;
71
+ for (const testCase of testCases) {
72
+ const methodName = JUnitFormatTransformer.xmlEscape(testCase.methodName);
73
+ this.push(`${tab}${tab}<testcase name="${methodName}" classname="${testCase.apexClass.fullName}" time="${(0, utils_1.msToSecond)(testCase.runTime)}">\n`);
74
+ if (testCase.outcome === "Fail" /* ApexTestResultOutcome.Fail */ ||
75
+ testCase.outcome === "CompileFail" /* ApexTestResultOutcome.CompileFail */) {
76
+ let message = (0, narrowing_1.isEmpty)(testCase.message) ? '' : testCase.message;
77
+ message = JUnitFormatTransformer.xmlEscape(message);
78
+ this.push(`${tab}${tab}${tab}<failure message="${message}">`);
79
+ if (testCase.stackTrace) {
80
+ this.push(`<![CDATA[${testCase.stackTrace}]]>`);
81
+ }
82
+ this.push(`</failure>\n`);
83
+ }
84
+ this.push(`${tab}${tab}</testcase>\n`);
85
+ }
86
+ }
87
+ static xmlEscape(value) {
88
+ return value
89
+ .replace(/&/g, '&amp;')
90
+ .replace(/</g, '&lt;')
91
+ .replace(/>/g, '&gt;')
92
+ .replace(/"/g, '&quot;')
93
+ .replace(/'/g, '&apos;');
94
+ }
95
+ }
96
+ exports.JUnitFormatTransformer = JUnitFormatTransformer;
97
+ __decorate([
98
+ (0, utils_1.elapsedTime)()
99
+ ], JUnitFormatTransformer.prototype, "format", null);
100
+ __decorate([
101
+ (0, utils_1.elapsedTime)()
102
+ ], JUnitFormatTransformer.prototype, "buildProperties", null);
103
+ __decorate([
104
+ (0, utils_1.elapsedTime)()
105
+ ], JUnitFormatTransformer.prototype, "buildTestCases", null);
106
+ //# sourceMappingURL=junitFormatTransformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"junitFormatTransformer.js","sourceRoot":"","sources":["../../../src/reporters/junitFormatTransformer.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
- import { TestResult } from '../tests/types';
1
+ import { TestResult } from '../tests';
2
2
  export declare class JUnitReporter {
3
3
  format(testResult: TestResult): string;
4
4
  private buildProperties;
5
5
  private buildTestCases;
6
6
  private xmlEscape;
7
- private isEmpty;
8
7
  }
@@ -8,8 +8,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.JUnitReporter = void 0;
10
10
  const utils_1 = require("../utils");
11
- const elapsedTime_1 = require("../utils/elapsedTime");
12
11
  const core_1 = require("@salesforce/core");
12
+ const narrowing_1 = require("../narrowing");
13
13
  // cli currently has spaces in multiples of four for junit format
14
14
  const tab = ' ';
15
15
  const timeProperties = [
@@ -40,7 +40,7 @@ class JUnitReporter {
40
40
  buildProperties(testResult) {
41
41
  let junitProperties = `${tab}${tab}<properties>\n`;
42
42
  Object.entries(testResult.summary).forEach(([key, value]) => {
43
- if (this.isEmpty(value) || skippedProperties.includes(key)) {
43
+ if ((0, narrowing_1.isEmpty)(value) || skippedProperties.includes(key)) {
44
44
  return;
45
45
  }
46
46
  if (timeProperties.includes(key)) {
@@ -65,7 +65,7 @@ class JUnitReporter {
65
65
  junitTests += `${tab}${tab}<testcase name="${methodName}" classname="${testCase.apexClass.fullName}" time="${(0, utils_1.msToSecond)(testCase.runTime)}">\n`;
66
66
  if (testCase.outcome === "Fail" /* ApexTestResultOutcome.Fail */ ||
67
67
  testCase.outcome === "CompileFail" /* ApexTestResultOutcome.CompileFail */) {
68
- let message = this.isEmpty(testCase.message) ? '' : testCase.message;
68
+ let message = (0, narrowing_1.isEmpty)(testCase.message) ? '' : testCase.message;
69
69
  message = this.xmlEscape(message);
70
70
  junitTests += `${tab}${tab}${tab}<failure message="${message}">`;
71
71
  if (testCase.stackTrace) {
@@ -85,26 +85,18 @@ class JUnitReporter {
85
85
  .replace(/"/g, '&quot;')
86
86
  .replace(/'/g, '&apos;');
87
87
  }
88
- isEmpty(value) {
89
- if (value === null ||
90
- value === undefined ||
91
- (typeof value === 'string' && value.length === 0)) {
92
- return true;
93
- }
94
- return false;
95
- }
96
88
  }
97
89
  exports.JUnitReporter = JUnitReporter;
98
90
  __decorate([
99
- (0, elapsedTime_1.elapsedTime)()
91
+ (0, utils_1.elapsedTime)()
100
92
  ], JUnitReporter.prototype, "format", null);
101
93
  __decorate([
102
- (0, elapsedTime_1.elapsedTime)()
94
+ (0, utils_1.elapsedTime)()
103
95
  ], JUnitReporter.prototype, "buildProperties", null);
104
96
  __decorate([
105
- (0, elapsedTime_1.elapsedTime)()
97
+ (0, utils_1.elapsedTime)()
106
98
  ], JUnitReporter.prototype, "buildTestCases", null);
107
99
  __decorate([
108
- (0, elapsedTime_1.elapsedTime)('elapsedTime', core_1.LoggerLevel.TRACE)
100
+ (0, utils_1.elapsedTime)('elapsedTime', core_1.LoggerLevel.TRACE)
109
101
  ], JUnitReporter.prototype, "xmlEscape", null);
110
102
  //# sourceMappingURL=junitReporter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"junitReporter.js","sourceRoot":"","sources":["../../../src/reporters/junitReporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"junitReporter.js","sourceRoot":"","sources":["../../../src/reporters/junitReporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /// <reference types="node" />
2
+ import { Readable, ReadableOptions } from 'node:stream';
3
+ import { TestResult } from '../tests';
4
+ export interface TapResult {
5
+ description: string;
6
+ diagnostics: string[];
7
+ outcome: string;
8
+ testNumber: number;
9
+ }
10
+ export declare class TapFormatTransformer extends Readable {
11
+ private testResult;
12
+ private epilogue?;
13
+ constructor(testResult: TestResult, epilogue?: string[], options?: ReadableOptions);
14
+ _read(): void;
15
+ format(): void;
16
+ buildTapResults(): void;
17
+ private buildTapDiagnostics;
18
+ }
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.TapFormatTransformer = void 0;
10
+ /*
11
+ * Copyright (c) 2024, salesforce.com, inc.
12
+ * All rights reserved.
13
+ * Licensed under the BSD 3-Clause license.
14
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
15
+ */
16
+ const node_stream_1 = require("node:stream");
17
+ const utils_1 = require("../utils");
18
+ class TapFormatTransformer extends node_stream_1.Readable {
19
+ testResult;
20
+ epilogue;
21
+ constructor(testResult, epilogue, options) {
22
+ super(options);
23
+ this.testResult = testResult;
24
+ this.epilogue = epilogue;
25
+ }
26
+ _read() {
27
+ this.format();
28
+ this.push(null); // Signal the end of the stream
29
+ }
30
+ format() {
31
+ const testPointCount = this.testResult.tests.length;
32
+ this.push(`1..${testPointCount}\n`);
33
+ this.buildTapResults();
34
+ this.epilogue?.forEach((c) => {
35
+ this.push(`# ${c}\n`);
36
+ });
37
+ }
38
+ buildTapResults() {
39
+ this.testResult.tests.forEach((test, index) => {
40
+ const testNumber = index + 1;
41
+ const outcome = test.outcome === "Pass" /* ApexTestResultOutcome.Pass */ ? 'ok' : 'not ok';
42
+ this.push(`${outcome} ${testNumber} ${test.fullName}\n`);
43
+ this.buildTapDiagnostics(test).forEach((s) => {
44
+ this.push(`# ${s}\n`);
45
+ });
46
+ });
47
+ }
48
+ buildTapDiagnostics(testResult) {
49
+ const message = [];
50
+ if (testResult.outcome !== 'Pass') {
51
+ if (testResult.message) {
52
+ const startsWithNewlineRegex = new RegExp(/^[/\r\n|\r|\n]\w*/gim);
53
+ if (startsWithNewlineRegex.test(testResult.message)) {
54
+ testResult.message.split(/\r\n|\r|\n/g).forEach((msg) => {
55
+ if (msg && msg.length > 0) {
56
+ message.push(msg.trim());
57
+ }
58
+ });
59
+ }
60
+ else {
61
+ message.push(testResult.message);
62
+ }
63
+ }
64
+ else {
65
+ message.push('Unknown error');
66
+ }
67
+ if (testResult.stackTrace) {
68
+ testResult.stackTrace.split('\n').forEach((line) => {
69
+ message.push(line);
70
+ });
71
+ }
72
+ }
73
+ return message;
74
+ }
75
+ }
76
+ exports.TapFormatTransformer = TapFormatTransformer;
77
+ __decorate([
78
+ (0, utils_1.elapsedTime)()
79
+ ], TapFormatTransformer.prototype, "format", null);
80
+ __decorate([
81
+ (0, utils_1.elapsedTime)()
82
+ ], TapFormatTransformer.prototype, "buildTapResults", null);
83
+ __decorate([
84
+ (0, utils_1.elapsedTime)()
85
+ ], TapFormatTransformer.prototype, "buildTapDiagnostics", null);
86
+ //# sourceMappingURL=tapFormatTransform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tapFormatTransform.js","sourceRoot":"","sources":["../../../src/reporters/tapFormatTransform.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { TestResult } from '../tests/types';
1
+ import { TestResult } from '../tests';
2
2
  export interface TapResult {
3
3
  description: string;
4
4
  diagnostics: string[];
@@ -0,0 +1,12 @@
1
+ /// <reference types="node" />
2
+ import { Transform, TransformCallback } from 'stream';
3
+ import { PerClassCoverage } from '../tests';
4
+ import { TransformOptions } from 'node:stream';
5
+ export declare class CodeCoverageStringifyStream extends Transform {
6
+ private outerPushed;
7
+ private pushedInner;
8
+ constructor(options?: TransformOptions);
9
+ _transform(chunk: PerClassCoverage[], encoding: string, callback: TransformCallback): void;
10
+ _flush(callback: TransformCallback): void;
11
+ private transformCoverage;
12
+ }
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.CodeCoverageStringifyStream = void 0;
10
+ /*
11
+ * Copyright (c) 2024, salesforce.com, inc.
12
+ * All rights reserved.
13
+ * Licensed under the BSD 3-Clause license.
14
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
15
+ */
16
+ const stream_1 = require("stream");
17
+ const utils_1 = require("./utils");
18
+ const utils_2 = require("../utils");
19
+ const core_1 = require("@salesforce/core"); // replace with your actual import
20
+ class CodeCoverageStringifyStream extends stream_1.Transform {
21
+ outerPushed = false;
22
+ pushedInner = false;
23
+ constructor(options) {
24
+ super({ ...options, objectMode: true });
25
+ }
26
+ _transform(chunk, encoding, callback) {
27
+ try {
28
+ // push '[' once to encapsulate the entire result as an array
29
+ if (!this.outerPushed) {
30
+ this.push('[');
31
+ this.outerPushed = true;
32
+ }
33
+ // push a comma between each chunk except for the first one.
34
+ if (this.pushedInner) {
35
+ this.push(',');
36
+ }
37
+ this.pushedInner = true;
38
+ this.push('[');
39
+ // Loop over each PerClassCoverage object in the array
40
+ chunk.forEach((coverage, index) => {
41
+ // Transform the PerClassCoverage object and push it to the readable side of the stream
42
+ this.transformCoverage(coverage);
43
+ if (index < chunk.length - 1) {
44
+ this.push(',');
45
+ }
46
+ });
47
+ this.push(']');
48
+ callback();
49
+ }
50
+ catch (error) {
51
+ callback(error);
52
+ }
53
+ }
54
+ _flush(callback) {
55
+ // push the closing ']' when the source stream is complete
56
+ if (this.outerPushed) {
57
+ this.push(']');
58
+ }
59
+ callback();
60
+ }
61
+ transformCoverage(perClassCoverage) {
62
+ // Manually construct the string representation of the PerClassCoverage object
63
+ const transformedData = '{';
64
+ const { coverage, ...theRest } = perClassCoverage;
65
+ // stringify all properties except coverage and strip off the closing '}'
66
+ this.push(JSON.stringify(theRest).slice(0, -1));
67
+ this.push(',"coverage": {');
68
+ this.push('"coveredLines": [');
69
+ (0, utils_1.pushArrayToStream)(coverage.coveredLines ?? [], this);
70
+ this.push('],"uncoveredLines": [');
71
+ (0, utils_1.pushArrayToStream)(coverage.uncoveredLines ?? [], this);
72
+ this.push(']}}');
73
+ return transformedData;
74
+ }
75
+ }
76
+ exports.CodeCoverageStringifyStream = CodeCoverageStringifyStream;
77
+ __decorate([
78
+ (0, utils_2.elapsedTime)('elapsedTime', core_1.LoggerLevel.TRACE)
79
+ ], CodeCoverageStringifyStream.prototype, "transformCoverage", null);
80
+ //# sourceMappingURL=codeCoverageStringifyStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codeCoverageStringifyStream.js","sourceRoot":"","sources":["../../../src/streaming/codeCoverageStringifyStream.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;;;;GAKG;AACH,mCAAsD;AAGtD,mCAA4C;AAC5C,oCAAuC;AACvC,2CAA+C,CAAC,kCAAkC;AAElF,MAAa,2BAA4B,SAAQ,kBAAS;IAChD,WAAW,GAAG,KAAK,CAAC;IACpB,WAAW,GAAG,KAAK,CAAC;IAC5B,YAAY,OAA0B;QACpC,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,UAAU,CACR,KAAyB,EACzB,QAAgB,EAChB,QAA2B;QAE3B,IAAI,CAAC;YACH,6DAA6D;YAC7D,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACf,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC1B,CAAC;YACD,4DAA4D;YAC5D,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;YACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,sDAAsD;YACtD,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;gBAChC,uFAAuF;gBACvF,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gBACjC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,QAAQ,EAAE,CAAC;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,CAAC,QAA2B;QAChC,0DAA0D;QAC1D,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;QACD,QAAQ,EAAE,CAAC;IACb,CAAC;IAGO,iBAAiB,CAAC,gBAAkC;QAC1D,8EAA8E;QAC9E,MAAM,eAAe,GAAG,GAAG,CAAC;QAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,GAAG,gBAAgB,CAAC;QAClD,yEAAyE;QACzE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC/B,IAAA,yBAAiB,EAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACnC,IAAA,yBAAiB,EAAC,QAAQ,CAAC,cAAc,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjB,OAAO,eAAe,CAAC;IACzB,CAAC;CACF;AA/DD,kEA+DC;AAfS;IADP,IAAA,mBAAW,EAAC,aAAa,EAAE,kBAAW,CAAC,KAAK,CAAC;oEAe7C"}
@@ -1 +1,4 @@
1
1
  export { AsyncTestRun, StreamingClient } from './streamingClient';
2
+ export { JSONStringifyStream } from './jsonStringifyStream';
3
+ export { TestResultStringifyStream } from './testResultStringifyStream';
4
+ export { determineType, getArrayEntries, getPrimitiveEntries, getObjectEntries, pushArrayToStream } from './utils';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StreamingClient = void 0;
3
+ exports.pushArrayToStream = exports.getObjectEntries = exports.getPrimitiveEntries = exports.getArrayEntries = exports.determineType = exports.TestResultStringifyStream = exports.JSONStringifyStream = exports.StreamingClient = void 0;
4
4
  /*
5
5
  * Copyright (c) 2020, salesforce.com, inc.
6
6
  * All rights reserved.
@@ -9,4 +9,14 @@ exports.StreamingClient = void 0;
9
9
  */
10
10
  var streamingClient_1 = require("./streamingClient");
11
11
  Object.defineProperty(exports, "StreamingClient", { enumerable: true, get: function () { return streamingClient_1.StreamingClient; } });
12
+ var jsonStringifyStream_1 = require("./jsonStringifyStream");
13
+ Object.defineProperty(exports, "JSONStringifyStream", { enumerable: true, get: function () { return jsonStringifyStream_1.JSONStringifyStream; } });
14
+ var testResultStringifyStream_1 = require("./testResultStringifyStream");
15
+ Object.defineProperty(exports, "TestResultStringifyStream", { enumerable: true, get: function () { return testResultStringifyStream_1.TestResultStringifyStream; } });
16
+ var utils_1 = require("./utils");
17
+ Object.defineProperty(exports, "determineType", { enumerable: true, get: function () { return utils_1.determineType; } });
18
+ Object.defineProperty(exports, "getArrayEntries", { enumerable: true, get: function () { return utils_1.getArrayEntries; } });
19
+ Object.defineProperty(exports, "getPrimitiveEntries", { enumerable: true, get: function () { return utils_1.getPrimitiveEntries; } });
20
+ Object.defineProperty(exports, "getObjectEntries", { enumerable: true, get: function () { return utils_1.getObjectEntries; } });
21
+ Object.defineProperty(exports, "pushArrayToStream", { enumerable: true, get: function () { return utils_1.pushArrayToStream; } });
12
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/streaming/index.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,qDAAkE;AAA3C,kHAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/streaming/index.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,qDAAkE;AAA3C,kHAAA,eAAe,OAAA;AACtC,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA;AAClC,iCAMiB;AALf,sGAAA,aAAa,OAAA;AACb,wGAAA,eAAe,OAAA;AACf,4GAAA,mBAAmB,OAAA;AACnB,yGAAA,gBAAgB,OAAA;AAChB,0GAAA,iBAAiB,OAAA"}
@@ -0,0 +1,18 @@
1
+ /// <reference types="node" />
2
+ import { Readable, ReadableOptions } from 'stream';
3
+ interface JSONStringifyStreamOptions extends ReadableOptions {
4
+ object: unknown;
5
+ }
6
+ export declare class JSONStringifyStream extends Readable {
7
+ private sent;
8
+ private lastYielded;
9
+ private readonly object;
10
+ constructor(options: JSONStringifyStreamOptions);
11
+ private stringify;
12
+ private yieldWithTracking;
13
+ private handleObject;
14
+ private handleArray;
15
+ _read(): void;
16
+ static from(json: unknown): JSONStringifyStream;
17
+ }
18
+ export {};
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.JSONStringifyStream = void 0;
10
+ /*
11
+ * Copyright (c) 2021, salesforce.com, inc.
12
+ * All rights reserved.
13
+ * Licensed under the BSD 3-Clause license.
14
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
15
+ */
16
+ const stream_1 = require("stream");
17
+ const utils_1 = require("../utils");
18
+ const core_1 = require("@salesforce/core");
19
+ const narrowing_1 = require("../narrowing");
20
+ class JSONStringifyStream extends stream_1.Readable {
21
+ sent = false;
22
+ lastYielded;
23
+ object;
24
+ constructor(options) {
25
+ super({ ...options, objectMode: false });
26
+ this.object = options.object;
27
+ }
28
+ *stringify(obj) {
29
+ if ((0, narrowing_1.isObject)(obj)) {
30
+ yield* this.handleObject(obj, true);
31
+ }
32
+ else if ((0, narrowing_1.isArray)(obj)) {
33
+ yield* this.handleArray(obj, true);
34
+ }
35
+ else if ((0, narrowing_1.isPrimitive)(obj)) {
36
+ yield JSON.stringify(obj);
37
+ }
38
+ }
39
+ *yieldWithTracking(value) {
40
+ this.lastYielded = value;
41
+ yield value;
42
+ }
43
+ *handleObject(obj, isLast) {
44
+ yield* this.yieldWithTracking('{');
45
+ const entries = Object.entries(obj);
46
+ for (let index = 0; index < entries.length; index++) {
47
+ const [key, value] = entries[index];
48
+ yield* this.yieldWithTracking(`"${key}":`);
49
+ if ((0, narrowing_1.isObject)(value)) {
50
+ yield* this.handleObject(value, index === entries.length - 1);
51
+ }
52
+ else if ((0, narrowing_1.isArray)(value)) {
53
+ yield* this.handleArray(value, index === entries.length - 1);
54
+ }
55
+ else {
56
+ yield* this.yieldWithTracking(JSON.stringify(value));
57
+ }
58
+ if (index !== entries.length - 1 && this.lastYielded !== ',') {
59
+ yield* this.yieldWithTracking(',');
60
+ }
61
+ }
62
+ yield* this.yieldWithTracking('}');
63
+ if (!isLast && this.lastYielded !== ',') {
64
+ yield* this.yieldWithTracking(',');
65
+ }
66
+ }
67
+ *handleArray(unknownArray, isLast) {
68
+ yield* this.yieldWithTracking('[');
69
+ for (let index = 0; index < unknownArray.length; index++) {
70
+ const entry = unknownArray[index];
71
+ if ((0, narrowing_1.isObject)(entry)) {
72
+ yield* this.handleObject(entry, index === unknownArray.length - 1);
73
+ }
74
+ else if ((0, narrowing_1.isArray)(entry)) {
75
+ yield* this.handleArray(entry, index === unknownArray.length - 1);
76
+ }
77
+ else {
78
+ yield* this.yieldWithTracking(JSON.stringify(entry));
79
+ }
80
+ if (index !== unknownArray.length - 1 && this.lastYielded !== ',') {
81
+ yield* this.yieldWithTracking(',');
82
+ }
83
+ }
84
+ yield* this.yieldWithTracking(']');
85
+ if (!isLast && this.lastYielded !== ',') {
86
+ yield* this.yieldWithTracking(',');
87
+ }
88
+ }
89
+ _read() {
90
+ if (!this.sent) {
91
+ const generator = this.stringify(this.object);
92
+ for (const chunk of generator) {
93
+ this.push(chunk);
94
+ }
95
+ this.sent = true;
96
+ }
97
+ else {
98
+ this.push(null);
99
+ }
100
+ }
101
+ static from(json) {
102
+ return new JSONStringifyStream({ object: json });
103
+ }
104
+ }
105
+ exports.JSONStringifyStream = JSONStringifyStream;
106
+ __decorate([
107
+ (0, utils_1.elapsedTime)('elapsedTime', core_1.LoggerLevel.TRACE)
108
+ ], JSONStringifyStream.prototype, "stringify", null);
109
+ __decorate([
110
+ (0, utils_1.elapsedTime)('elapsedTime', core_1.LoggerLevel.TRACE)
111
+ ], JSONStringifyStream.prototype, "yieldWithTracking", null);
112
+ __decorate([
113
+ (0, utils_1.elapsedTime)('elapsedTime', core_1.LoggerLevel.TRACE)
114
+ ], JSONStringifyStream.prototype, "handleObject", null);
115
+ __decorate([
116
+ (0, utils_1.elapsedTime)('elapsedTime', core_1.LoggerLevel.TRACE)
117
+ ], JSONStringifyStream.prototype, "handleArray", null);
118
+ //# sourceMappingURL=jsonStringifyStream.js.map