@appium/support 2.55.3 → 2.56.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 (55) hide show
  1. package/build/lib/env.js +102 -0
  2. package/build/lib/fs.js +74 -56
  3. package/build/lib/image-util.js +4 -339
  4. package/build/lib/index.js +18 -6
  5. package/build/lib/log-internal.js +2 -4
  6. package/build/lib/logger.js +2 -4
  7. package/build/lib/logging.js +2 -4
  8. package/build/lib/mjpeg.js +2 -4
  9. package/build/lib/mkdirp.js +7 -11
  10. package/build/lib/net.js +2 -4
  11. package/build/lib/node.js +99 -2
  12. package/build/lib/npm.js +240 -0
  13. package/build/lib/plist.js +2 -4
  14. package/build/lib/process.js +2 -4
  15. package/build/lib/system.js +2 -4
  16. package/build/lib/tempdir.js +2 -4
  17. package/build/lib/timing.js +2 -4
  18. package/build/lib/util.js +6 -8
  19. package/build/lib/zip.js +4 -8
  20. package/lib/env.js +162 -0
  21. package/lib/fs.js +193 -69
  22. package/lib/image-util.js +3 -578
  23. package/lib/index.js +8 -2
  24. package/lib/log-internal.js +2 -2
  25. package/lib/logging.js +1 -1
  26. package/lib/mkdirp.js +3 -6
  27. package/lib/net.js +4 -4
  28. package/lib/node.js +104 -1
  29. package/lib/npm.js +335 -0
  30. package/lib/tempdir.js +6 -6
  31. package/lib/util.js +28 -24
  32. package/lib/zip.js +7 -8
  33. package/package.json +21 -9
  34. package/build/test/assets/sample_binary.plist +0 -0
  35. package/build/test/assets/sample_text.plist +0 -28
  36. package/build/test/fs-specs.js +0 -264
  37. package/build/test/helpers.js +0 -35
  38. package/build/test/image-util-e2e-specs.js +0 -227
  39. package/build/test/index-specs.js +0 -49
  40. package/build/test/log-internals-specs.js +0 -97
  41. package/build/test/logger/helpers.js +0 -71
  42. package/build/test/logger/logger-force-specs.js +0 -41
  43. package/build/test/logger/logger-normal-specs.js +0 -113
  44. package/build/test/logger/logger-test-specs.js +0 -40
  45. package/build/test/mjpeg-e2e-specs.js +0 -96
  46. package/build/test/net-e2e-specs.js +0 -32
  47. package/build/test/node-e2e-specs.js +0 -22
  48. package/build/test/plist-specs.js +0 -54
  49. package/build/test/process-specs.js +0 -104
  50. package/build/test/system-specs.js +0 -136
  51. package/build/test/tempdir-specs.js +0 -86
  52. package/build/test/timing-specs.js +0 -125
  53. package/build/test/util-e2e-specs.js +0 -136
  54. package/build/test/util-specs.js +0 -537
  55. package/build/test/zip-e2e-specs.js +0 -233
@@ -1,227 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- require("source-map-support/register");
6
-
7
- var _imageUtil = require("../lib/image-util");
8
-
9
- var _path = _interopRequireDefault(require("path"));
10
-
11
- var _lodash = _interopRequireDefault(require("lodash"));
12
-
13
- var _lib = require("../lib");
14
-
15
- const FIXTURES_ROOT = _path.default.resolve(__dirname, '..', '..', 'test', 'images');
16
-
17
- async function getImage(name) {
18
- const imagePath = _path.default.resolve(FIXTURES_ROOT, name);
19
-
20
- return await _lib.fs.readFile(imagePath, 'utf8');
21
- }
22
-
23
- describe('image-util', function () {
24
- before(function () {
25
- return this.skip();
26
- });
27
- describe('cropBase64Image', function () {
28
- let originalImage = null;
29
- before(async function () {
30
- const originalImage64 = await getImage('full-image.b64');
31
- originalImage = await (0, _imageUtil.base64ToImage)(originalImage64);
32
- originalImage.width.should.be.equal(640, 'unexpected width');
33
- originalImage.height.should.be.equal(1136, 'unexpected height');
34
- });
35
- it('should verify that an image is cropped correctly', async function () {
36
- const croppedImage = await (0, _imageUtil.cropImage)(originalImage, {
37
- left: 35,
38
- top: 107,
39
- width: 323,
40
- height: 485
41
- });
42
- croppedImage.width.should.be.equal(323, 'unexpected width');
43
- croppedImage.height.should.be.equal(485, 'unexpected height');
44
- const croppedImageShouldBe = await getImage('cropped-image.b64');
45
- const croppedImage64 = await (0, _imageUtil.imageToBase64)(croppedImage);
46
- croppedImage64.should.be.equal(croppedImageShouldBe);
47
- });
48
- });
49
- describe('OpenCV helpers', function () {
50
- this.timeout(120000);
51
- let imgFixture = null;
52
- let fullImage = null;
53
- let partialImage = null;
54
- let originalImage = null;
55
- let changedImage = null;
56
- let rotatedImage = null;
57
- let numberImage = null;
58
- before(async function () {
59
- const imagePath = _path.default.resolve(FIXTURES_ROOT, 'full-image.b64');
60
-
61
- imgFixture = Buffer.from(await _lib.fs.readFile(imagePath, 'binary'), 'base64');
62
- fullImage = await _lib.fs.readFile(_path.default.resolve(FIXTURES_ROOT, 'findwaldo.jpg'));
63
- partialImage = await _lib.fs.readFile(_path.default.resolve(FIXTURES_ROOT, 'waldo.jpg'));
64
- originalImage = await _lib.fs.readFile(_path.default.resolve(FIXTURES_ROOT, 'cc1.png'));
65
- changedImage = await _lib.fs.readFile(_path.default.resolve(FIXTURES_ROOT, 'cc2.png'));
66
- numberImage = await _lib.fs.readFile(_path.default.resolve(FIXTURES_ROOT, 'number5.png'));
67
- rotatedImage = await _lib.fs.readFile(_path.default.resolve(FIXTURES_ROOT, 'cc_rotated.png'));
68
- });
69
- describe('getImagesMatches', function () {
70
- it('should calculate the number of matches between two images', async function () {
71
- for (const detectorName of ['AKAZE', 'ORB']) {
72
- const {
73
- count,
74
- totalCount
75
- } = await (0, _imageUtil.getImagesMatches)(fullImage, fullImage, {
76
- detectorName
77
- });
78
- count.should.be.above(0);
79
- totalCount.should.eql(count);
80
- }
81
- });
82
- it('should visualize matches between two images', async function () {
83
- const {
84
- visualization
85
- } = await (0, _imageUtil.getImagesMatches)(fullImage, fullImage, {
86
- visualize: true
87
- });
88
- visualization.should.not.be.empty;
89
- });
90
- it('should visualize matches between two images and apply goodMatchesFactor', async function () {
91
- const {
92
- visualization,
93
- points1,
94
- rect1,
95
- points2,
96
- rect2
97
- } = await (0, _imageUtil.getImagesMatches)(rotatedImage, originalImage, {
98
- visualize: true,
99
- matchFunc: 'BruteForceHamming',
100
- goodMatchesFactor: 40
101
- });
102
- visualization.should.not.be.empty;
103
- points1.length.should.be.above(4);
104
- rect1.x.should.be.above(0);
105
- rect1.y.should.be.above(0);
106
- rect1.width.should.be.above(0);
107
- rect1.height.should.be.above(0);
108
- points2.length.should.be.above(4);
109
- rect2.x.should.be.above(0);
110
- rect2.y.should.be.above(0);
111
- rect2.width.should.be.above(0);
112
- rect2.height.should.be.above(0);
113
- });
114
- });
115
- describe('getImagesSimilarity', function () {
116
- it('should calculate the similarity score between two images', async function () {
117
- const {
118
- score
119
- } = await (0, _imageUtil.getImagesSimilarity)(imgFixture, imgFixture);
120
- score.should.be.above(0);
121
- });
122
- it('should visualize the similarity between two images', async function () {
123
- const {
124
- visualization
125
- } = await (0, _imageUtil.getImagesSimilarity)(originalImage, changedImage, {
126
- visualize: true
127
- });
128
- visualization.should.not.be.empty;
129
- });
130
- });
131
- describe('getImageOccurrence', function () {
132
- it('should calculate the partial image position in the full image', async function () {
133
- const {
134
- rect,
135
- score
136
- } = await (0, _imageUtil.getImageOccurrence)(fullImage, partialImage);
137
- rect.x.should.be.above(0);
138
- rect.y.should.be.above(0);
139
- rect.width.should.be.above(0);
140
- rect.height.should.be.above(0);
141
- score.should.be.above(0);
142
- });
143
- it('should reject matches that fall below a threshold', async function () {
144
- await (0, _imageUtil.getImageOccurrence)(fullImage, partialImage, {
145
- threshold: 1.0
146
- }).should.eventually.be.rejectedWith(/threshold/);
147
- });
148
- it('should visualize the partial image position in the full image', async function () {
149
- const {
150
- visualization
151
- } = await (0, _imageUtil.getImageOccurrence)(fullImage, partialImage, {
152
- visualize: true
153
- });
154
- visualization.should.not.be.empty;
155
- });
156
- describe('multiple', function () {
157
- it('should return matches in the full image', async function () {
158
- const {
159
- multiple
160
- } = await (0, _imageUtil.getImageOccurrence)(originalImage, numberImage, {
161
- threshold: 0.8,
162
- multiple: true
163
- });
164
- multiple.length.should.be.eq(3);
165
-
166
- for (const result of multiple) {
167
- result.rect.x.should.be.above(0);
168
- result.rect.y.should.be.above(0);
169
- result.rect.width.should.be.above(0);
170
- result.rect.height.should.be.above(0);
171
- result.score.should.be.above(0);
172
- }
173
- });
174
- it('should reject matches that fall below a threshold', async function () {
175
- await (0, _imageUtil.getImageOccurrence)(originalImage, numberImage, {
176
- threshold: 1.0,
177
- multiple: true
178
- }).should.eventually.be.rejectedWith(/threshold/);
179
- });
180
- it('should visualize the partial image position in the full image', async function () {
181
- const {
182
- multiple
183
- } = await (0, _imageUtil.getImageOccurrence)(originalImage, numberImage, {
184
- visualize: true,
185
- multiple: true
186
- });
187
-
188
- for (const result of multiple) {
189
- result.visualization.should.not.be.empty;
190
- }
191
- });
192
- });
193
- });
194
- });
195
- describe('Jimp helpers', function () {
196
- it('should get a jimp object using image buffer', async function () {
197
- const base64Image = await getImage('cropped-image.b64');
198
- const imageBuffer = Buffer.from(base64Image, 'base64');
199
- const jimpImg = await (0, _imageUtil.getJimpImage)(imageBuffer);
200
- jimpImg.hash().should.eql('80000000000');
201
- jimpImg.bitmap.height.should.eql(485);
202
- jimpImg.bitmap.width.should.eql(323);
203
- });
204
- it('should get a jimp object using b64 string', async function () {
205
- const base64Image = await getImage('cropped-image.b64');
206
- const jimpImg = await (0, _imageUtil.getJimpImage)(base64Image);
207
- jimpImg.hash().should.eql('80000000000');
208
- jimpImg.bitmap.height.should.eql(485);
209
- jimpImg.bitmap.width.should.eql(323);
210
- });
211
- it('should error with incorrect data type', async function () {
212
- await (0, _imageUtil.getJimpImage)(1234).should.eventually.be.rejectedWith(/string or buffer/);
213
- });
214
- it('should error with incorrect image data', async function () {
215
- await (0, _imageUtil.getJimpImage)('foo').should.eventually.be.rejectedWith(/Could not find MIME for Buffer/);
216
- });
217
- it('should get an image buffer via the overridden getBuffer method', async function () {
218
- const base64Image = await getImage('cropped-image.b64');
219
- const jimpImg = await (0, _imageUtil.getJimpImage)(base64Image);
220
- const buf = await jimpImg.getBuffer(_imageUtil.MIME_PNG);
221
- _lodash.default.isBuffer(buf).should.be.true;
222
- });
223
- });
224
- });require('source-map-support').install();
225
-
226
-
227
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvaW1hZ2UtdXRpbC1lMmUtc3BlY3MuanMiXSwibmFtZXMiOlsiRklYVFVSRVNfUk9PVCIsInBhdGgiLCJyZXNvbHZlIiwiX19kaXJuYW1lIiwiZ2V0SW1hZ2UiLCJuYW1lIiwiaW1hZ2VQYXRoIiwiZnMiLCJyZWFkRmlsZSIsImRlc2NyaWJlIiwiYmVmb3JlIiwic2tpcCIsIm9yaWdpbmFsSW1hZ2UiLCJvcmlnaW5hbEltYWdlNjQiLCJ3aWR0aCIsInNob3VsZCIsImJlIiwiZXF1YWwiLCJoZWlnaHQiLCJpdCIsImNyb3BwZWRJbWFnZSIsImxlZnQiLCJ0b3AiLCJjcm9wcGVkSW1hZ2VTaG91bGRCZSIsImNyb3BwZWRJbWFnZTY0IiwidGltZW91dCIsImltZ0ZpeHR1cmUiLCJmdWxsSW1hZ2UiLCJwYXJ0aWFsSW1hZ2UiLCJjaGFuZ2VkSW1hZ2UiLCJyb3RhdGVkSW1hZ2UiLCJudW1iZXJJbWFnZSIsIkJ1ZmZlciIsImZyb20iLCJkZXRlY3Rvck5hbWUiLCJjb3VudCIsInRvdGFsQ291bnQiLCJhYm92ZSIsImVxbCIsInZpc3VhbGl6YXRpb24iLCJ2aXN1YWxpemUiLCJub3QiLCJlbXB0eSIsInBvaW50czEiLCJyZWN0MSIsInBvaW50czIiLCJyZWN0MiIsIm1hdGNoRnVuYyIsImdvb2RNYXRjaGVzRmFjdG9yIiwibGVuZ3RoIiwieCIsInkiLCJzY29yZSIsInJlY3QiLCJ0aHJlc2hvbGQiLCJldmVudHVhbGx5IiwicmVqZWN0ZWRXaXRoIiwibXVsdGlwbGUiLCJlcSIsInJlc3VsdCIsImJhc2U2NEltYWdlIiwiaW1hZ2VCdWZmZXIiLCJqaW1wSW1nIiwiaGFzaCIsImJpdG1hcCIsImJ1ZiIsImdldEJ1ZmZlciIsIk1JTUVfUE5HIiwiXyIsImlzQnVmZmVyIiwidHJ1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBS0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsYUFBYSxHQUFHQyxjQUFLQyxPQUFMLENBQWFDLFNBQWIsRUFBd0IsSUFBeEIs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QXJDLElBQUFBLEVBQUUsQ0FBQyx3Q0FBRCxFQUEyQyxrQkFBa0I7QUFDN0QsWUFBTSw2QkFBYSxLQUFiLEVBQW9CSixNQUFwQixDQUEyQndDLFVBQTNCLENBQXNDdkMsRUFBdEMsQ0FBeUN3QyxZQUF6QyxDQUFzRCxnQ0FBdEQsQ0FBTjtBQUNELEtBRkMsQ0FBRjtBQUdBckMsSUFBQUEsRUFBRSxDQUFDLGdFQUFELEVBQW1FLGtCQUFrQjtBQUNyRixZQUFNeUMsV0FBVyxHQUFHLE1BQU14RCxRQUFRLENBQUMsbUJBQUQsQ0FBbEM7QUFDQSxZQUFNMEQsT0FBTyxHQUFHLE1BQU0sNkJBQWFGLFdBQWIsQ0FBdEI7QUFDQSxZQUFNSyxHQUFHLEdBQUcsTUFBTUgsT0FBTyxDQUFDSSxTQUFSLENBQWtCQyxtQkFBbEIsQ0FBbEI7QUFDQUMsc0JBQUVDLFFBQUYsQ0FBV0osR0FBWCxFQUFnQmxELE1BQWhCLENBQXVCQyxFQUF2QixDQUEwQnNELElBQTFCO0FBQ0QsS0FMQyxDQUFGO0FBTUQsR0E1Qk8sQ0FBUjtBQTZCRCxDQXBMTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYmFzZTY0VG9JbWFnZSwgaW1hZ2VUb0Jhc2U2NCwgY3JvcEltYWdlLFxuICBnZXRJbWFnZXNNYXRjaGVzLCBnZXRJbWFnZXNTaW1pbGFyaXR5LCBnZXRJbWFnZU9jY3VycmVuY2UsXG4gIGdldEppbXBJbWFnZSwgTUlNRV9QTkcsXG59IGZyb20gJy4uL2xpYi9pbWFnZS11dGlsJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGZzIH0gZnJvbSAnLi4vbGliJztcblxuXG5jb25zdCBGSVhUVVJFU19ST09UID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ3Rlc3QnLCAnaW1hZ2VzJyk7XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEltYWdlIChuYW1lKSB7XG4gIGNvbnN0IGltYWdlUGF0aCA9IHBhdGgucmVzb2x2ZShGSVhUVVJFU19ST09ULCBuYW1lKTtcbiAgcmV0dXJuIGF3YWl0IGZzLnJlYWRGaWxlKGltYWdlUGF0aCwgJ3V0ZjgnKTtcbn1cblxuZGVzY3JpYmUoJ2ltYWdlLXV0aWwnLCBmdW5jdGlvbiAoKSB7XG4gIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgLy8gVE9ETzogcmVtb3ZlIHdoZW4gb3BlbmN2NG5vZGVqcyBpcyBmaXhlZFxuICAgIHJldHVybiB0aGlzLnNraXAoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2Nyb3BCYXNlNjRJbWFnZScsIGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgb3JpZ2luYWxJbWFnZSA9IG51bGw7XG5cbiAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgb3JpZ2luYWxJbWFnZTY0ID0gYXdhaXQgZ2V0SW1hZ2UoJ2Z1bGwtaW1hZ2UuYjY0Jyk7XG4gICAgICBvcmlnaW5hbEltYWdlID0gYXdhaXQgYmFzZTY0VG9JbWFnZShvcmlnaW5hbEltYWdlNjQpO1xuXG4gICAgICAvLyB2ZXJpZnkgb3JpZ2luYWwgaW1hZ2Ugc2l6ZSwgdG8gYmUgc3VyZSB0aGF0IG9yaWdpbmFsIGltYWdlIGlzIGNvcnJlY3RcbiAgICAgIG9yaWdpbmFsSW1hZ2Uud2lkdGguc2hvdWxkLmJlLmVxdWFsKDY0MCwgJ3VuZXhwZWN0ZWQgd2lkdGgnKTtcbiAgICAgIG9yaWdpbmFsSW1hZ2UuaGVpZ2h0LnNob3VsZC5iZS5lcXVhbCgxMTM2LCAndW5leHBlY3RlZCBoZWlnaHQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IHRoYXQgYW4gaW1hZ2UgaXMgY3JvcHBlZCBjb3JyZWN0bHknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjcm9wcGVkSW1hZ2UgPSBhd2FpdCBjcm9wSW1hZ2Uob3JpZ2luYWxJbWFnZSwge2xlZnQ6IDM1LCB0b3A6IDEwNywgd2lkdGg6IDMyMywgaGVpZ2h0OiA0ODV9KTtcblxuICAgICAgLy8gdmVyaWZ5IGNyb3BwZWQgaW1hZ2Ugc2l6ZSwgaXQgc2hvdWxkIGJlIGxlc3MgdGhhbiBvcmlnaW5hbCBpbWFnZSBhY2NvcmRpbmcgdG8gY3JvcCByZWdpb25cbiAgICAgIGNyb3BwZWRJbWFnZS53aWR0aC5zaG91bGQuYmUuZXF1YWwoMzIzLCAndW5leHBlY3RlZCB3aWR0aCcpO1xuICAgICAgY3JvcHBlZEltYWdlLmhlaWdodC5zaG91bGQuYmUuZXF1YWwoNDg1LCAndW5leHBlY3RlZCBoZWlnaHQnKTtcblxuICAgICAgLy8gdmVyaWZ5IHRoYXQgaW1hZ2UgY3JvcHBlZCwgY29tcGFyZSBiYXNlNjQgcmVwcmVzZW50YXRpb25cbiAgICAgIGNvbnN0IGNyb3BwZWRJbWFnZVNob3VsZEJlID0gYXdhaXQgZ2V0SW1hZ2UoJ2Nyb3BwZWQtaW1hZ2UuYjY0Jyk7XG4gICAgICBjb25zdCBjcm9wcGVkSW1hZ2U2NCA9IGF3YWl0IGltYWdlVG9CYXNlNjQoY3JvcHBlZEltYWdlKTtcbiAgICAgIGNyb3BwZWRJbWFnZTY0LnNob3VsZC5iZS5lcXVhbChjcm9wcGVkSW1hZ2VTaG91bGRCZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdPcGVuQ1YgaGVscGVycycsIGZ1bmN0aW9uICgpIHtcbiAgICAvLyBPcGVuQ1YgbmVlZHMgc2V2ZXJhbCBzZWNvbmRzIGZvciBpbml0aWFsaXphdGlvblxuICAgIHRoaXMudGltZW91dCgxMjAwMDApO1xuXG4gICAgbGV0IGltZ0ZpeHR1cmUgPSBudWxsO1xuICAgIGxldCBmdWxsSW1hZ2UgPSBudWxsO1xuICAgIGxldCBwYXJ0aWFsSW1hZ2UgPSBudWxsO1xuICAgIGxldCBvcmlnaW5hbEltYWdlID0gbnVsbDtcbiAgICBsZXQgY2hhbmdlZEltYWdlID0gbnVsbDtcbiAgICBsZXQgcm90YXRlZEltYWdlID0gbnVsbDtcbiAgICBsZXQgbnVtYmVySW1hZ2UgPSBudWxsO1xuXG4gICAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGltYWdlUGF0aCA9IHBhdGgucmVzb2x2ZShGSVhUVVJFU19ST09ULCAnZnVsbC1pbWFnZS5iNjQnKTtcbiAgICAgIGltZ0ZpeHR1cmUgPSBCdWZmZXIuZnJvbShhd2FpdCBmcy5yZWFkRmlsZShpbWFnZVBhdGgsICdiaW5hcnknKSwgJ2Jhc2U2NCcpO1xuICAgICAgZnVsbEltYWdlID0gYXdhaXQgZnMucmVhZEZpbGUocGF0aC5yZXNvbHZlKEZJWFRVUkVTX1JPT1QsICdmaW5kd2FsZG8uanBnJykpO1xuICAgICAgcGFydGlhbEltYWdlID0gYXdhaXQgZnMucmVhZEZpbGUocGF0aC5yZXNvbHZlKEZJWFRVUkVTX1JPT1QsICd3YWxkby5qcGcnKSk7XG4gICAgICBvcmlnaW5hbEltYWdlID0gYXdhaXQgZnMucmVhZEZpbGUocGF0aC5yZXNvbHZlKEZJWFRVUkVTX1JPT1QsICdjYzEucG5nJykpO1xuICAgICAgY2hhbmdlZEltYWdlID0gYXdhaXQgZnMucmVhZEZpbGUocGF0aC5yZXNvbHZlKEZJWFRVUkVTX1JPT1QsICdjYzIucG5nJykpO1xuICAgICAgbnVtYmVySW1hZ2UgPSBhd2FpdCBmcy5yZWFkRmlsZShwYXRoLnJlc29sdmUoRklYVFVSRVNfUk9PVCwgJ251bWJlcjUucG5nJykpO1xuICAgICAgcm90YXRlZEltYWdlID0gYXdhaXQgZnMucmVhZEZpbGUocGF0aC5yZXNvbHZlKEZJWFRVUkVTX1JPT1QsICdjY19yb3RhdGVkLnBuZycpKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdnZXRJbWFnZXNNYXRjaGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBtYXRjaGVzIGJldHdlZW4gdHdvIGltYWdlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yIChjb25zdCBkZXRlY3Rvck5hbWUgb2YgWydBS0FaRScsICdPUkInXSkge1xuICAgICAgICAgIGNvbnN0IHtjb3VudCwgdG90YWxDb3VudH0gPSBhd2FpdCBnZXRJbWFnZXNNYXRjaGVzKGZ1bGxJbWFnZSwgZnVsbEltYWdlLCB7ZGV0ZWN0b3JOYW1lfSk7XG4gICAgICAgICAgY291bnQuc2hvdWxkLmJlLmFib3ZlKDApO1xuICAgICAgICAgIHRvdGFsQ291bnQuc2hvdWxkLmVxbChjb3VudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHZpc3VhbGl6ZSBtYXRjaGVzIGJldHdlZW4gdHdvIGltYWdlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3Qge3Zpc3VhbGl6YXRpb259ID0gYXdhaXQgZ2V0SW1hZ2VzTWF0Y2hlcyhmdWxsSW1hZ2UsIGZ1bGxJbWFnZSwge3Zpc3VhbGl6ZTogdHJ1ZX0pO1xuICAgICAgICB2aXN1YWxpemF0aW9uLnNob3VsZC5ub3QuYmUuZW1wdHk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB2aXN1YWxpemUgbWF0Y2hlcyBiZXR3ZWVuIHR3byBpbWFnZXMgYW5kIGFwcGx5IGdvb2RNYXRjaGVzRmFjdG9yJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB7dmlzdWFsaXphdGlvbiwgcG9pbnRzMSwgcmVjdDEsIHBvaW50czIsIHJlY3QyfSA9IGF3YWl0IGdldEltYWdlc01hdGNoZXMocm90YXRlZEltYWdlLCBvcmlnaW5hbEltYWdlLCB7XG4gICAgICAgICAgdmlzdWFsaXplOiB0cnVlLFxuICAgICAgICAgIG1hdGNoRnVuYzogJ0JydXRlRm9yY2VIYW1taW5nJyxcbiAgICAgICAgICBnb29kTWF0Y2hlc0ZhY3RvcjogNDBcbiAgICAgICAgfSk7XG4gICAgICAgIHZpc3VhbGl6YXRpb24uc2hvdWxkLm5vdC5iZS5lbXB0eTtcbiAgICAgICAgcG9pbnRzMS5sZW5ndGguc2hvdWxkLmJlLmFib3ZlKDQpO1xuICAgICAgICByZWN0MS54LnNob3VsZC5iZS5hYm92ZSgwKTtcbiAgICAgICAgcmVjdDEueS5zaG91bGQuYmUuYWJvdmUoMCk7XG4gICAgICAgIHJlY3QxLndpZHRoLnNob3VsZC5iZS5hYm92ZSgwKTtcbiAgICAgICAgcmVjdDEuaGVpZ2h0LnNob3VsZC5iZS5hYm92ZSgwKTtcbiAgICAgICAgcG9pbnRzMi5sZW5ndGguc2hvdWxkLmJlLmFib3ZlKDQpO1xuICAgICAgICByZWN0Mi54LnNob3VsZC5iZS5hYm92ZSgwKTtcbiAgICAgICAgcmVjdDIueS5zaG91bGQuYmUuYWJvdmUoMCk7XG4gICAgICAgIHJlY3QyLndpZHRoLnNob3VsZC5iZS5hYm92ZSgwKTtcbiAgICAgICAgcmVjdDIuaGVpZ2h0LnNob3VsZC5iZS5hYm92ZSgwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2dldEltYWdlc1NpbWlsYXJpdHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIGNhbGN1bGF0ZSB0aGUgc2ltaWxhcml0eSBzY29yZSBiZXR3ZWVuIHR3byBpbWFnZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHtzY29yZX0gPSBhd2FpdCBnZXRJbWFnZXNTaW1pbGFyaXR5KGltZ0ZpeHR1cmUsIGltZ0ZpeHR1cmUpO1xuICAgICAgICBzY29yZS5zaG91bGQuYmUuYWJvdmUoMCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB2aXN1YWxpemUgdGhlIHNpbWlsYXJpdHkgYmV0d2VlbiB0d28gaW1hZ2VzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB7dmlzdWFsaXphdGlvbn0gPSBhd2FpdCBnZXRJbWFnZXNTaW1pbGFyaXR5KG9yaWdpbmFsSW1hZ2UsIGNoYW5nZWRJbWFnZSwge3Zpc3VhbGl6ZTogdHJ1ZX0pO1xuICAgICAgICB2aXN1YWxpemF0aW9uLnNob3VsZC5ub3QuYmUuZW1wdHk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdnZXRJbWFnZU9jY3VycmVuY2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIGNhbGN1bGF0ZSB0aGUgcGFydGlhbCBpbWFnZSBwb3NpdGlvbiBpbiB0aGUgZnVsbCBpbWFnZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3Qge3JlY3QsIHNjb3JlfSA9IGF3YWl0IGdldEltYWdlT2NjdXJyZW5jZShmdWxsSW1hZ2UsIHBhcnRpYWxJbWFnZSk7XG4gICAgICAgIHJlY3QueC5zaG91bGQuYmUuYWJvdmUoMCk7XG4gICAgICAgIHJlY3QueS5zaG91bGQuYmUuYWJvdmUoMCk7XG4gICAgICAgIHJlY3Qud2lkdGguc2hvdWxkLmJlLmFib3ZlKDApO1xuICAgICAgICByZWN0LmhlaWdodC5zaG91bGQuYmUuYWJvdmUoMCk7XG4gICAgICAgIHNjb3JlLnNob3VsZC5iZS5hYm92ZSgwKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHJlamVjdCBtYXRjaGVzIHRoYXQgZmFsbCBiZWxvdyBhIHRocmVzaG9sZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZ2V0SW1hZ2VPY2N1cnJlbmNlKGZ1bGxJbWFnZSwgcGFydGlhbEltYWdlLCB7dGhyZXNob2xkOiAxLjB9KVxuICAgICAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL3RocmVzaG9sZC8pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdmlzdWFsaXplIHRoZSBwYXJ0aWFsIGltYWdlIHBvc2l0aW9uIGluIHRoZSBmdWxsIGltYWdlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB7dmlzdWFsaXphdGlvbn0gPSBhd2FpdCBnZXRJbWFnZU9jY3VycmVuY2UoZnVsbEltYWdlLCBwYXJ0aWFsSW1hZ2UsIHt2aXN1YWxpemU6IHRydWV9KTtcbiAgICAgICAgdmlzdWFsaXphdGlvbi5zaG91bGQubm90LmJlLmVtcHR5O1xuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCdtdWx0aXBsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gbWF0Y2hlcyBpbiB0aGUgZnVsbCBpbWFnZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCB7IG11bHRpcGxlIH0gPSBhd2FpdCBnZXRJbWFnZU9jY3VycmVuY2Uob3JpZ2luYWxJbWFnZSwgbnVtYmVySW1hZ2UsIHt0aHJlc2hvbGQ6IDAuOCwgbXVsdGlwbGU6IHRydWV9KTtcbiAgICAgICAgICBtdWx0aXBsZS5sZW5ndGguc2hvdWxkLmJlLmVxKDMpO1xuXG4gICAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgbXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJlc3VsdC5yZWN0Lnguc2hvdWxkLmJlLmFib3ZlKDApO1xuICAgICAgICAgICAgcmVzdWx0LnJlY3QueS5zaG91bGQuYmUuYWJvdmUoMCk7XG4gICAgICAgICAgICByZXN1bHQucmVjdC53aWR0aC5zaG91bGQuYmUuYWJvdmUoMCk7XG4gICAgICAgICAgICByZXN1bHQucmVjdC5oZWlnaHQuc2hvdWxkLmJlLmFib3ZlKDApO1xuICAgICAgICAgICAgcmVzdWx0LnNjb3JlLnNob3VsZC5iZS5hYm92ZSgwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgcmVqZWN0IG1hdGNoZXMgdGhhdCBmYWxsIGJlbG93IGEgdGhyZXNob2xkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGF3YWl0IGdldEltYWdlT2NjdXJyZW5jZShvcmlnaW5hbEltYWdlLCBudW1iZXJJbWFnZSwge3RocmVzaG9sZDogMS4wLCBtdWx0aXBsZTogdHJ1ZX0pXG4gICAgICAgICAgICAuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC90aHJlc2hvbGQvKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCB2aXN1YWxpemUgdGhlIHBhcnRpYWwgaW1hZ2UgcG9zaXRpb24gaW4gdGhlIGZ1bGwgaW1hZ2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgeyBtdWx0aXBsZSB9ID0gYXdhaXQgZ2V0SW1hZ2VPY2N1cnJlbmNlKG9yaWdpbmFsSW1hZ2UsIG51bWJlckltYWdlLCB7dmlzdWFsaXplOiB0cnVlLCBtdWx0aXBsZTogdHJ1ZX0pO1xuXG4gICAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgbXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJlc3VsdC52aXN1YWxpemF0aW9uLnNob3VsZC5ub3QuYmUuZW1wdHk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnSmltcCBoZWxwZXJzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgZ2V0IGEgamltcCBvYmplY3QgdXNpbmcgaW1hZ2UgYnVmZmVyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYmFzZTY0SW1hZ2UgPSBhd2FpdCBnZXRJbWFnZSgnY3JvcHBlZC1pbWFnZS5iNjQnKTtcbiAgICAgIGNvbnN0IGltYWdlQnVmZmVyID0gQnVmZmVyLmZyb20oYmFzZTY0SW1hZ2UsICdiYXNlNjQnKTtcbiAgICAgIGNvbnN0IGppbXBJbWcgPSBhd2FpdCBnZXRKaW1wSW1hZ2UoaW1hZ2VCdWZmZXIpO1xuICAgICAgamltcEltZy5oYXNoKCkuc2hvdWxkLmVxbCgnODAwMDAwMDAwMDAnKTtcbiAgICAgIGppbXBJbWcuYml0bWFwLmhlaWdodC5zaG91bGQuZXFsKDQ4NSk7XG4gICAgICBqaW1wSW1nLmJpdG1hcC53aWR0aC5zaG91bGQuZXFsKDMyMyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBnZXQgYSBqaW1wIG9iamVjdCB1c2luZyBiNjQgc3RyaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYmFzZTY0SW1hZ2UgPSBhd2FpdCBnZXRJbWFnZSgnY3JvcHBlZC1pbWFnZS5iNjQnKTtcbiAgICAgIGNvbnN0IGppbXBJbWcgPSBhd2FpdCBnZXRKaW1wSW1hZ2UoYmFzZTY0SW1hZ2UpO1xuICAgICAgamltcEltZy5oYXNoKCkuc2hvdWxkLmVxbCgnODAwMDAwMDAwMDAnKTtcbiAgICAgIGppbXBJbWcuYml0bWFwLmhlaWdodC5zaG91bGQuZXFsKDQ4NSk7XG4gICAgICBqaW1wSW1nLmJpdG1hcC53aWR0aC5zaG91bGQuZXFsKDMyMyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBlcnJvciB3aXRoIGluY29ycmVjdCBkYXRhIHR5cGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBnZXRKaW1wSW1hZ2UoMTIzNCkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC9zdHJpbmcgb3IgYnVmZmVyLyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBlcnJvciB3aXRoIGluY29ycmVjdCBpbWFnZSBkYXRhJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZ2V0SmltcEltYWdlKCdmb28nKS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL0NvdWxkIG5vdCBmaW5kIE1JTUUgZm9yIEJ1ZmZlci8pO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgZ2V0IGFuIGltYWdlIGJ1ZmZlciB2aWEgdGhlIG92ZXJyaWRkZW4gZ2V0QnVmZmVyIG1ldGhvZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJhc2U2NEltYWdlID0gYXdhaXQgZ2V0SW1hZ2UoJ2Nyb3BwZWQtaW1hZ2UuYjY0Jyk7XG4gICAgICBjb25zdCBqaW1wSW1nID0gYXdhaXQgZ2V0SmltcEltYWdlKGJhc2U2NEltYWdlKTtcbiAgICAgIGNvbnN0IGJ1ZiA9IGF3YWl0IGppbXBJbWcuZ2V0QnVmZmVyKE1JTUVfUE5HKTtcbiAgICAgIF8uaXNCdWZmZXIoYnVmKS5zaG91bGQuYmUudHJ1ZTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJmaWxlIjoidGVzdC9pbWFnZS11dGlsLWUyZS1zcGVjcy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
@@ -1,49 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- require("source-map-support/register");
6
-
7
- var _index = _interopRequireDefault(require("../lib/index.js"));
8
-
9
- let {
10
- system,
11
- tempDir,
12
- util
13
- } = _index.default;
14
- describe('index', function () {
15
- describe('default', function () {
16
- it('should expose an object', function () {
17
- _index.default.should.exist;
18
-
19
- _index.default.should.be.an.instanceof(Object);
20
- });
21
- it('should expose system object', function () {
22
- _index.default.system.should.exist;
23
-
24
- _index.default.system.should.be.an.instanceof(Object);
25
- });
26
- it('should expose tempDir object', function () {
27
- _index.default.tempDir.should.exist;
28
-
29
- _index.default.tempDir.should.be.an.instanceof(Object);
30
- });
31
- it('should expose util object', function () {
32
- _index.default.util.should.exist;
33
-
34
- _index.default.util.should.be.an.instanceof(Object);
35
- });
36
- });
37
- it('should expose an object as "system" ', function () {
38
- system.should.be.an.instanceof(Object);
39
- });
40
- it('should expose an object as "tempDir" ', function () {
41
- tempDir.should.be.an.instanceof(Object);
42
- });
43
- it('should expose an object as "util" ', function () {
44
- util.should.be.an.instanceof(Object);
45
- });
46
- });require('source-map-support').install();
47
-
48
-
49
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvaW5kZXgtc3BlY3MuanMiXSwibmFtZXMiOlsic3lzdGVtIiwidGVtcERpciIsInV0aWwiLCJBcHBpdW1TdXBwb3J0IiwiZGVzY3JpYmUiLCJpdCIsInNob3VsZCIsImV4aXN0IiwiYmUiLCJhbiIsImluc3RhbmNlb2YiLCJPYmplY3QiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBOztBQUVBLElBQUk7QUFBRUEsRUFBQUEsTUFBRjtBQUFVQyxFQUFBQSxPQUFWO0FBQW1CQyxFQUFBQTtBQUFuQixJQUE0QkMsY0FBaEM7QUFFQUMsUUFBUSxDQUFDLE9BQUQsRUFBVSxZQUFZO0FBQzVCQSxFQUFBQSxRQUFRLENBQUMsU0FBRCxFQUFZLFlBQVk7QUFDOUJDLElBQUFBLEVBQUUsQ0FBQyx5QkFBRCxFQUE0QixZQUFZO0FBQ3hDRixxQkFBY0csTUFBZCxDQUFxQkMsS0FBckI7O0FBQ0FKLHFCQUFjRyxNQUFkLENBQXFCRSxFQUFyQixDQUF3QkMsRUFBeEIsQ0FBMkJDLFVBQTNCLENBQXNDQyxNQUF0QztBQUNELEtBSEMsQ0FBRjtBQUlBTixJQUFBQSxFQUFFLENBQUMsNkJBQUQsRUFBZ0MsWUFBWTtBQUM1Q0YscUJBQWNILE1BQWQsQ0FBcUJNLE1BQXJCLENBQTRCQyxLQUE1Qjs7QUFDQUoscUJBQWNILE1BQWQsQ0FBcUJNLE1BQXJCLENBQTRCRSxFQUE1QixDQUErQkMsRUFBL0IsQ0FBa0NDLFVBQWxDLENBQTZDQyxNQUE3QztBQUNELEtBSEMsQ0FBRjtBQUlBTixJQUFBQSxFQUFFLENBQUMsOEJBQUQsRUFBaUMsWUFBWTtBQUM3Q0YscUJBQWNGLE9BQWQsQ0FBc0JLLE1BQXRCLENBQTZCQyxLQUE3Qjs7QUFDQUoscUJBQWNGLE9BQWQsQ0FBc0JLLE1BQXRCLENBQTZCRSxFQUE3QixDQUFnQ0MsRUFBaEMsQ0FBbUNDLFVBQW5DLENBQThDQyxNQUE5QztBQUNELEtBSEMsQ0FBRjtBQUlBTixJQUFBQSxFQUFFLENBQUMsMkJBQUQsRUFBOEIsWUFBWTtBQUMxQ0YscUJBQWNELElBQWQsQ0FBbUJJLE1BQW5CLENBQTBCQyxLQUExQjs7QUFDQUoscUJBQWNELElBQWQsQ0FBbUJJLE1BQW5CLENBQTBCRSxFQUExQixDQUE2QkMsRUFBN0IsQ0FBZ0NDLFVBQWhDLENBQTJDQyxNQUEzQztBQUNELEtBSEMsQ0FBRjtBQUlELEdBakJPLENBQVI7QUFtQkFOLEVBQUFBLEVBQUUsQ0FBQyxzQ0FBRCxFQUF5QyxZQUFZO0FBQ3JETCxJQUFBQSxNQUFNLENBQUNNLE1BQVAsQ0FBY0UsRUFBZCxDQUFpQkMsRUFBakIsQ0FBb0JDLFVBQXBCLENBQStCQyxNQUEvQjtBQUNELEdBRkMsQ0FBRjtBQUlBTixFQUFBQSxFQUFFLENBQUMsdUNBQUQsRUFBMEMsWUFBWTtBQUN0REosSUFBQUEsT0FBTyxDQUFDSyxNQUFSLENBQWVFLEVBQWYsQ0FBa0JDLEVBQWxCLENBQXFCQyxVQUFyQixDQUFnQ0MsTUFBaEM7QUFDRCxHQUZDLENBQUY7QUFJQU4sRUFBQUEsRUFBRSxDQUFDLG9DQUFELEVBQXVDLFlBQVk7QUFDbkRILElBQUFBLElBQUksQ0FBQ0ksTUFBTCxDQUFZRSxFQUFaLENBQWVDLEVBQWYsQ0FBa0JDLFVBQWxCLENBQTZCQyxNQUE3QjtBQUNELEdBRkMsQ0FBRjtBQUdELENBL0JPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCBBcHBpdW1TdXBwb3J0IGZyb20gJy4uL2xpYi9pbmRleC5qcyc7XG5cbmxldCB7IHN5c3RlbSwgdGVtcERpciwgdXRpbCB9ID0gQXBwaXVtU3VwcG9ydDtcblxuZGVzY3JpYmUoJ2luZGV4JywgZnVuY3Rpb24gKCkge1xuICBkZXNjcmliZSgnZGVmYXVsdCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGV4cG9zZSBhbiBvYmplY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBBcHBpdW1TdXBwb3J0LnNob3VsZC5leGlzdDtcbiAgICAgIEFwcGl1bVN1cHBvcnQuc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoT2JqZWN0KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGV4cG9zZSBzeXN0ZW0gb2JqZWN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgQXBwaXVtU3VwcG9ydC5zeXN0ZW0uc2hvdWxkLmV4aXN0O1xuICAgICAgQXBwaXVtU3VwcG9ydC5zeXN0ZW0uc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoT2JqZWN0KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGV4cG9zZSB0ZW1wRGlyIG9iamVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIEFwcGl1bVN1cHBvcnQudGVtcERpci5zaG91bGQuZXhpc3Q7XG4gICAgICBBcHBpdW1TdXBwb3J0LnRlbXBEaXIuc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoT2JqZWN0KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGV4cG9zZSB1dGlsIG9iamVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIEFwcGl1bVN1cHBvcnQudXRpbC5zaG91bGQuZXhpc3Q7XG4gICAgICBBcHBpdW1TdXBwb3J0LnV0aWwuc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoT2JqZWN0KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBleHBvc2UgYW4gb2JqZWN0IGFzIFwic3lzdGVtXCIgJywgZnVuY3Rpb24gKCkge1xuICAgIHN5c3RlbS5zaG91bGQuYmUuYW4uaW5zdGFuY2VvZihPYmplY3QpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBhbiBvYmplY3QgYXMgXCJ0ZW1wRGlyXCIgJywgZnVuY3Rpb24gKCkge1xuICAgIHRlbXBEaXIuc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoT2JqZWN0KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBleHBvc2UgYW4gb2JqZWN0IGFzIFwidXRpbFwiICcsIGZ1bmN0aW9uICgpIHtcbiAgICB1dGlsLnNob3VsZC5iZS5hbi5pbnN0YW5jZW9mKE9iamVjdCk7XG4gIH0pO1xufSk7XG4iXSwiZmlsZSI6InRlc3QvaW5kZXgtc3BlY3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
@@ -1,97 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- require("source-map-support/register");
6
-
7
- var _index = require("../lib/index");
8
-
9
- var _os = _interopRequireDefault(require("os"));
10
-
11
- var _path = _interopRequireDefault(require("path"));
12
-
13
- var _logInternal = require("../lib/log-internal");
14
-
15
- const CONFIG_PATH = _path.default.resolve(_os.default.tmpdir(), 'rules.json');
16
-
17
- describe('Log Internals', function () {
18
- let preprocessor;
19
- beforeEach(function () {
20
- preprocessor = new _logInternal.SecureValuesPreprocessor();
21
- });
22
- it('should preprocess a string and make replacements', async function () {
23
- const issues = await preprocessor.loadRules(['yolo']);
24
- issues.length.should.eql(0);
25
- preprocessor.rules.length.should.eql(1);
26
- const replacer = preprocessor.rules[0].replacer;
27
- preprocessor.preprocess(':yolo" yo Yolo yyolo').should.eql(`:${replacer}" yo Yolo yyolo`);
28
- });
29
- it('should preprocess a string and make replacements with multiple simple rules', async function () {
30
- const issues = await preprocessor.loadRules(['yolo', 'yo']);
31
- issues.length.should.eql(0);
32
- preprocessor.rules.length.should.eql(2);
33
- const replacer = preprocessor.rules[0].replacer;
34
- preprocessor.preprocess(':yolo" yo Yolo yyolo').should.eql(`:${replacer}" ${replacer} Yolo yyolo`);
35
- });
36
- it('should preprocess a string and make replacements with multiple complex rules', async function () {
37
- const replacer2 = '***';
38
- const issues = await preprocessor.loadRules([{
39
- text: 'yolo',
40
- flags: 'i'
41
- }, {
42
- pattern: '^:',
43
- replacer: replacer2
44
- }]);
45
- issues.length.should.eql(0);
46
- preprocessor.rules.length.should.eql(2);
47
- const replacer = preprocessor.rules[0].replacer;
48
- preprocessor.preprocess(':yolo" yo Yolo yyolo').should.eql(`${replacer2}${replacer}" yo ${replacer} yyolo`);
49
- });
50
- it(`should preprocess a string and apply a rule where 'pattern' has priority over 'text'`, async function () {
51
- const replacer = '***';
52
- const issues = await preprocessor.loadRules([{
53
- pattern: '^:',
54
- text: 'yo',
55
- replacer
56
- }]);
57
- issues.length.should.eql(0);
58
- preprocessor.rules.length.should.eql(1);
59
- preprocessor.preprocess(':yolo" yo Yolo yyolo').should.eql(`${replacer}yolo" yo Yolo yyolo`);
60
- });
61
- it('should preprocess a string and make replacements with multiple complex rules and issues', async function () {
62
- const replacer2 = '***';
63
- const issues = await preprocessor.loadRules([{
64
- text: 'yolo',
65
- flags: 'i'
66
- }, {
67
- pattern: '^:(',
68
- replacer: replacer2
69
- }]);
70
- issues.length.should.eql(1);
71
- preprocessor.rules.length.should.eql(1);
72
- const replacer = preprocessor.rules[0].replacer;
73
- preprocessor.preprocess(':yolo" yo Yolo yyolo').should.eql(`:${replacer}" yo ${replacer} yyolo`);
74
- });
75
- it('should leave the string unchanged if all rules have issues', async function () {
76
- const replacer2 = '***';
77
- const issues = await preprocessor.loadRules([null, {
78
- flags: 'i'
79
- }, {
80
- pattern: '^:(',
81
- replacer: replacer2
82
- }]);
83
- issues.length.should.eql(3);
84
- preprocessor.rules.length.should.eql(0);
85
- preprocessor.preprocess(':yolo" yo Yolo yyolo').should.eql(':yolo" yo Yolo yyolo');
86
- });
87
- it('should fail if rules cannot be accessed', async function () {
88
- await preprocessor.loadRules('bla').should.eventually.be.rejected;
89
- });
90
- it('should fail if rules JSON cannot be parsed', async function () {
91
- await _index.fs.writeFile(CONFIG_PATH, 'blabla', 'utf8');
92
- await preprocessor.loadRules(CONFIG_PATH).should.eventually.be.rejected;
93
- });
94
- });require('source-map-support').install();
95
-
96
-
97
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvbG9nLWludGVybmFscy1zcGVjcy5qcyJdLCJuYW1lcyI6WyJDT05GSUdfUEFUSCIsInBhdGgiLCJyZXNvbHZlIiwib3MiLCJ0bXBkaXIiLCJkZXNjcmliZSIsInByZXByb2Nlc3NvciIsImJlZm9yZUVhY2giLCJTZWN1cmVWYWx1ZXNQcmVwcm9jZXNzb3IiLCJpdCIsImlzc3VlcyIsImxvYWRSdWxlcyIsImxlbmd0aCIsInNob3VsZCIsImVxbCIsInJ1bGVzIiwicmVwbGFjZXIiLCJwcmVwcm9jZXNzIiwicmVwbGFjZXIyIiwidGV4dCIsImZsYWdzIiwicGF0dGVybiIsImV2ZW50dWFsbHkiLCJiZSIsInJlamVjdGVkIiwiZnMiLCJ3cml0ZUZpbGUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUdBLE1BQU1BLFdBQVcsR0FBR0MsY0FBS0MsT0FBTCxDQUFhQyxZQUFHQyxNQUFILEVBQWIsRUFBMEIsWUFBMUIsQ0FBcEI7O0FBS0FDLFFBQVEsQ0FBQyxlQUFELEVBQWtCLFlBQVk7QUFDcEMsTUFBSUMsWUFBSjtBQUVBQyxFQUFBQSxVQUFVLENBQUMsWUFBWTtBQUNyQkQsSUFBQUEsWUFBWSxHQUFHLElBQUlFLHFDQUFKLEVBQWY7QUFDRCxHQUZTLENBQVY7QUFJQUMsRUFBQUEsRUFBRSxDQUFDLGtEQUFELEVBQXFELGtCQUFrQjtBQUN2RSxVQUFNQyxNQUFNLEdBQUcsTUFBTUosWUFBWSxDQUFDSyxTQUFiLENBQXVCLENBQzFDLE1BRDBDLENBQXZCLENBQXJCO0FBR0FELElBQUFBLE1BQU0sQ0FBQ0UsTUFBUCxDQUFjQyxNQUFkLENBQXFCQyxHQUFyQixDQUF5QixDQUF6QjtBQUNBUixJQUFBQSxZQUFZLENBQUNTLEtBQWIsQ0FBbUJILE1BQW5CLENBQTBCQyxNQUExQixDQUFpQ0MsR0FBakMsQ0FBcUMsQ0FBckM7QUFDQSxVQUFNRSxRQUFRLEdBQUdWLFlBQVksQ0FBQ1MsS0FBYixDQUFtQixDQUFuQixFQUFz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QyxDQUFGO0FBWUFMLEVBQUFBLEVBQUUsQ0FBQyx5Q0FBRCxFQUE0QyxrQkFBa0I7QUFDOUQsVUFBTUgsWUFBWSxDQUFDSyxTQUFiLENBQXVCLEtBQXZCLEVBQThCRSxNQUE5QixDQUFxQ1MsVUFBckMsQ0FBZ0RDLEVBQWhELENBQW1EQyxRQUF6RDtBQUNELEdBRkMsQ0FBRjtBQUlBZixFQUFBQSxFQUFFLENBQUMsNENBQUQsRUFBK0Msa0JBQWtCO0FBQ2pFLFVBQU1nQixVQUFHQyxTQUFILENBQWExQixXQUFiLEVBQTBCLFFBQTFCLEVBQW9DLE1BQXBDLENBQU47QUFDQSxVQUFNTSxZQUFZLENBQUNLLFNBQWIsQ0FBdUJYLFdBQXZCLEVBQW9DYSxNQUFwQyxDQUEyQ1MsVUFBM0MsQ0FBc0RDLEVBQXRELENBQXlEQyxRQUEvRDtBQUNELEdBSEMsQ0FBRjtBQUlELENBbEZPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcyB9IGZyb20gJy4uL2xpYi9pbmRleCc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBTZWN1cmVWYWx1ZXNQcmVwcm9jZXNzb3IgfSBmcm9tICcuLi9saWIvbG9nLWludGVybmFsJztcblxuXG5jb25zdCBDT05GSUdfUEFUSCA9IHBhdGgucmVzb2x2ZShvcy50bXBkaXIoKSwgJ3J1bGVzLmpzb24nKTtcblxuXG5cblxuZGVzY3JpYmUoJ0xvZyBJbnRlcm5hbHMnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBwcmVwcm9jZXNzb3I7XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgcHJlcHJvY2Vzc29yID0gbmV3IFNlY3VyZVZhbHVlc1ByZXByb2Nlc3NvcigpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHByZXByb2Nlc3MgYSBzdHJpbmcgYW5kIG1ha2UgcmVwbGFjZW1lbnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGlzc3VlcyA9IGF3YWl0IHByZXByb2Nlc3Nvci5sb2FkUnVsZXMoW1xuICAgICAgJ3lvbG8nLFxuICAgIF0pO1xuICAgIGlzc3Vlcy5sZW5ndGguc2hvdWxkLmVxbCgwKTtcbiAgICBwcmVwcm9jZXNzb3IucnVsZXMubGVuZ3RoLnNob3VsZC5lcWwoMSk7XG4gICAgY29uc3QgcmVwbGFjZXIgPSBwcmVwcm9jZXNzb3IucnVsZXNbMF0ucmVwbGFjZXI7XG4gICAgcHJlcHJvY2Vzc29yLnByZXByb2Nlc3MoJzp5b2xvXCIgeW8gWW9sbyB5eW9sbycpLnNob3VsZC5lcWwoYDoke3JlcGxhY2VyfVwiIHlvIFlvbG8geXlvbG9gKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwcmVwcm9jZXNzIGEgc3RyaW5nIGFuZCBtYWtlIHJlcGxhY2VtZW50cyB3aXRoIG11bHRpcGxlIHNpbXBsZSBydWxlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpc3N1ZXMgPSBhd2FpdCBwcmVwcm9jZXNzb3IubG9hZFJ1bGVzKFtcbiAgICAgICd5b2xvJyxcbiAgICAgICd5bycsXG4gICAgXSk7XG4gICAgaXNzdWVzLmxlbmd0aC5zaG91bGQuZXFsKDApO1xuICAgIHByZXByb2Nlc3Nvci5ydWxlcy5sZW5ndGguc2hvdWxkLmVxbCgyKTtcbiAgICBjb25zdCByZXBsYWNlciA9IHByZXByb2Nlc3Nvci5ydWxlc1swXS5yZXBsYWNlcjtcbiAgICBwcmVwcm9jZXNzb3IucHJlcHJvY2VzcygnOnlvbG9cIiB5byBZb2xvIHl5b2xvJykuc2hvdWxkLmVxbChgOiR7cmVwbGFjZXJ9XCIgJHtyZXBsYWNlcn0gWW9sbyB5eW9sb2ApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHByZXByb2Nlc3MgYSBzdHJpbmcgYW5kIG1ha2UgcmVwbGFjZW1lbnRzIHdpdGggbXVsdGlwbGUgY29tcGxleCBydWxlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCByZXBsYWNlcjIgPSAnKioqJztcbiAgICBjb25zdCBpc3N1ZXMgPSBhd2FpdCBwcmVwcm9jZXNzb3IubG9hZFJ1bGVzKFtcbiAgICAgIHsgdGV4dDogJ3lvbG8nLCBmbGFnczogJ2knIH0sXG4gICAgICB7IHBhdHRlcm46ICdeOicsIHJlcGxhY2VyOiByZXBsYWNlcjIgfSxcbiAgICBdKTtcbiAgICBpc3N1ZXMubGVuZ3RoLnNob3VsZC5lcWwoMCk7XG4gICAgcHJlcHJvY2Vzc29yLnJ1bGVzLmxlbmd0aC5zaG91bGQuZXFsKDIpO1xuICAgIGNvbnN0IHJlcGxhY2VyID0gcHJlcHJvY2Vzc29yLnJ1bGVzWzBdLnJlcGxhY2VyO1xuICAgIHByZXByb2Nlc3Nvci5wcmVwcm9jZXNzKCc6eW9sb1wiIHlvIFlvbG8geXlvbG8nKS5zaG91bGQuZXFsKGAke3JlcGxhY2VyMn0ke3JlcGxhY2VyfVwiIHlvICR7cmVwbGFjZXJ9IHl5b2xvYCk7XG4gIH0pO1xuXG4gIGl0KGBzaG91bGQgcHJlcHJvY2VzcyBhIHN0cmluZyBhbmQgYXBwbHkgYSBydWxlIHdoZXJlICdwYXR0ZXJuJyBoYXMgcHJpb3JpdHkgb3ZlciAndGV4dCdgLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcmVwbGFjZXIgPSAnKioqJztcbiAgICBjb25zdCBpc3N1ZXMgPSBhd2FpdCBwcmVwcm9jZXNzb3IubG9hZFJ1bGVzKFtcbiAgICAgIHsgcGF0dGVybjogJ146JywgdGV4dDogJ3lvJywgcmVwbGFjZXIgfSxcbiAgICBdKTtcbiAgICBpc3N1ZXMubGVuZ3RoLnNob3VsZC5lcWwoMCk7XG4gICAgcHJlcHJvY2Vzc29yLnJ1bGVzLmxlbmd0aC5zaG91bGQuZXFsKDEpO1xuICAgIHByZXByb2Nlc3Nvci5wcmVwcm9jZXNzKCc6eW9sb1wiIHlvIFlvbG8geXlvbG8nKS5zaG91bGQuZXFsKGAke3JlcGxhY2VyfXlvbG9cIiB5byBZb2xvIHl5b2xvYCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcHJlcHJvY2VzcyBhIHN0cmluZyBhbmQgbWFrZSByZXBsYWNlbWVudHMgd2l0aCBtdWx0aXBsZSBjb21wbGV4IHJ1bGVzIGFuZCBpc3N1ZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcmVwbGFjZXIyID0gJyoqKic7XG4gICAgY29uc3QgaXNzdWVzID0gYXdhaXQgcHJlcHJvY2Vzc29yLmxvYWRSdWxlcyhbXG4gICAgICB7IHRleHQ6ICd5b2xvJywgZmxhZ3M6ICdpJyB9LFxuICAgICAgeyBwYXR0ZXJuOiAnXjooJywgcmVwbGFjZXI6IHJlcGxhY2VyMiB9LFxuICAgIF0pO1xuICAgIGlzc3Vlcy5sZW5ndGguc2hvdWxkLmVxbCgxKTtcbiAgICBwcmVwcm9jZXNzb3IucnVsZXMubGVuZ3RoLnNob3VsZC5lcWwoMSk7XG4gICAgY29uc3QgcmVwbGFjZXIgPSBwcmVwcm9jZXNzb3IucnVsZXNbMF0ucmVwbGFjZXI7XG4gICAgcHJlcHJvY2Vzc29yLnByZXByb2Nlc3MoJzp5b2xvXCIgeW8gWW9sbyB5eW9sbycpLnNob3VsZC5lcWwoYDoke3JlcGxhY2VyfVwiIHlvICR7cmVwbGFjZXJ9IHl5b2xvYCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbGVhdmUgdGhlIHN0cmluZyB1bmNoYW5nZWQgaWYgYWxsIHJ1bGVzIGhhdmUgaXNzdWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlcGxhY2VyMiA9ICcqKionO1xuICAgIGNvbnN0IGlzc3VlcyA9IGF3YWl0IHByZXByb2Nlc3Nvci5sb2FkUnVsZXMoW1xuICAgICAgbnVsbCxcbiAgICAgIHsgZmxhZ3M6ICdpJyB9LFxuICAgICAgeyBwYXR0ZXJuOiAnXjooJywgcmVwbGFjZXI6IHJlcGxhY2VyMiB9LFxuICAgIF0pO1xuICAgIGlzc3Vlcy5sZW5ndGguc2hvdWxkLmVxbCgzKTtcbiAgICBwcmVwcm9jZXNzb3IucnVsZXMubGVuZ3RoLnNob3VsZC5lcWwoMCk7XG4gICAgcHJlcHJvY2Vzc29yLnByZXByb2Nlc3MoJzp5b2xvXCIgeW8gWW9sbyB5eW9sbycpLnNob3VsZC5lcWwoJzp5b2xvXCIgeW8gWW9sbyB5eW9sbycpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgaWYgcnVsZXMgY2Fubm90IGJlIGFjY2Vzc2VkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IHByZXByb2Nlc3Nvci5sb2FkUnVsZXMoJ2JsYScpLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgaWYgcnVsZXMgSlNPTiBjYW5ub3QgYmUgcGFyc2VkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZShDT05GSUdfUEFUSCwgJ2JsYWJsYScsICd1dGY4Jyk7XG4gICAgYXdhaXQgcHJlcHJvY2Vzc29yLmxvYWRSdWxlcyhDT05GSUdfUEFUSCkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWQ7XG4gIH0pO1xufSk7XG4iXSwiZmlsZSI6InRlc3QvbG9nLWludGVybmFscy1zcGVjcy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
@@ -1,71 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.assertOutputContains = assertOutputContains;
9
- exports.assertOutputDoesntContain = assertOutputDoesntContain;
10
- exports.getDynamicLogger = getDynamicLogger;
11
- exports.restoreWriters = restoreWriters;
12
- exports.setupWriters = setupWriters;
13
-
14
- require("source-map-support/register");
15
-
16
- var _sinon = _interopRequireDefault(require("sinon"));
17
-
18
- var _lodash = _interopRequireDefault(require("lodash"));
19
-
20
- var _lib = require("../../lib");
21
-
22
- function setupWriters() {
23
- return {
24
- 'stdout': _sinon.default.spy(process.stdout, 'write'),
25
- 'stderr': _sinon.default.spy(process.stderr, 'write')
26
- };
27
- }
28
-
29
- function getDynamicLogger(testingMode, forceLogs, prefix = null) {
30
- process.env._TESTING = testingMode ? '1' : '0';
31
- process.env._FORCE_LOGS = forceLogs ? '1' : '0';
32
- return _lib.logger.getLogger(prefix);
33
- }
34
-
35
- function restoreWriters(writers) {
36
- for (let w of _lodash.default.values(writers)) {
37
- w.restore();
38
- }
39
- }
40
-
41
- function someoneHadOutput(writers, output) {
42
- let hadOutput = false;
43
-
44
- let matchOutput = _sinon.default.match(function (value) {
45
- return value && value.indexOf(output) >= 0;
46
- }, 'matchOutput');
47
-
48
- for (let writer of _lodash.default.values(writers)) {
49
- if (writer.calledWith) {
50
- hadOutput = writer.calledWithMatch(matchOutput);
51
- if (hadOutput) break;
52
- }
53
- }
54
-
55
- return hadOutput;
56
- }
57
-
58
- function assertOutputContains(writers, output) {
59
- if (!someoneHadOutput(writers, output)) {
60
- throw new Error(`Expected something to have been called with: '${output}'`);
61
- }
62
- }
63
-
64
- function assertOutputDoesntContain(writers, output) {
65
- if (someoneHadOutput(writers, output)) {
66
- throw new Error(`Expected nothing to have been called with: '${output}'`);
67
- }
68
- }require('source-map-support').install();
69
-
70
-
71
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvbG9nZ2VyL2hlbHBlcnMuanMiXSwibmFtZXMiOlsic2V0dXBXcml0ZXJzIiwic2lub24iLCJzcHkiLCJwcm9jZXNzIiwic3Rkb3V0Iiwic3RkZXJyIiwiZ2V0RHluYW1pY0xvZ2dlciIsInRlc3RpbmdNb2RlIiwiZm9yY2VMb2dzIiwicHJlZml4IiwiZW52IiwiX1RFU1RJTkciLCJfRk9SQ0VfTE9HUyIsImxvZ2dlciIsImdldExvZ2dlciIsInJlc3RvcmVXcml0ZXJzIiwid3JpdGVycyIsInciLCJfIiwidmFsdWVzIiwicmVzdG9yZSIsInNvbWVvbmVIYWRPdXRwdXQiLCJvdXRwdXQiLCJoYWRPdXRwdXQiLCJtYXRjaE91dHB1dCIsIm1hdGNoIiwidmFsdWUiLCJpbmRleE9mIiwid3JpdGVyIiwiY2FsbGVkV2l0aCIsImNhbGxlZFdpdGhNYXRjaCIsImFzc2VydE91dHB1dENvbnRhaW5zIiwiRXJyb3IiLCJhc3NlcnRPdXRwdXREb2VzbnRDb250YWluIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFJQSxTQUFTQSxZQUFULEdBQXlCO0FBQ3ZCLFNBQU87QUFBQyxjQUFVQyxlQUFNQyxHQUFOLENBQVVDLE9BQU8sQ0FBQ0MsTUFBbEIsRUFBMEIsT0FBMUIsQ0FBWDtBQUNDLGNBQVVILGVBQU1DLEdBQU4sQ0FBVUMsT0FBTyxDQUFDRSxNQUFsQixFQUEwQixPQUExQjtBQURYLEdBQVA7QUFFRDs7QUFFRCxTQUFTQyxnQkFBVCxDQUEyQkMsV0FBM0IsRUFBd0NDLFNBQXhDLEVBQW1EQyxNQUFNLEdBQUcsSUFBNUQsRUFBa0U7QUFDaEVOLEVBQUFBLE9BQU8sQ0FBQ08sR0FBUixDQUFZQyxRQUFaLEdBQXVCSixXQUFXLEdBQUcsR0FBSCxHQUFTLEdBQTNDO0FBQ0FKLEVBQUFBLE9BQU8sQ0FBQ08sR0FBUixDQUFZRSxXQUFaLEdBQTBCSixTQUFTLEdBQUcsR0FBSCxHQUFTLEdBQTVDO0FBQ0EsU0FBT0ssWUFBT0MsU0FBUCxDQUFpQkwsTUFBakIsQ0FBUDtBQUNEOztBQUVELFNBQVNNLGNBQVQsQ0FBeUJDLE9BQXpCLEVBQWtDO0FBQ2hDLE9BQUssSUFBSUMsQ0FBVCxJQUFjQyxnQkFBRUMsTUFBRixDQUFTSCxPQUFULENBQWQsRUFBaUM7QUFDL0JDLElBQUFBLENBQUMsQ0FBQ0csT0FBRjtBQUNEO0FBQ0Y7O0FBRUQsU0FBU0MsZ0JBQVQsQ0FBMkJMLE9BQTNCLEVBQW9DTSxNQUFwQyxFQUE0QztBQUMxQyxNQUFJQyxTQUFTLEdBQUcsS0FBaEI7O0FBQ0EsTUFBSUMsV0FBVyxHQUFHdkIsZUFBTXdCLEtBQU4sQ0FBWSxVQUFVQyxLQUFWLEVBQWlCO0FBQzdDLFdBQU9BLEtBQUssSUFBSUEsS0FBSyxDQUFDQyxPQUFOLENBQWNMLE1BQWQsS0FBeUIsQ0FBekM7QUFDRCxHQUZpQixFQUVmLGFBRmUsQ0FBbEI7O0FBSUEsT0FBSyxJQUFJTSxNQUFULElBQW1CVixnQkFBRUMsTUFBRixDQUFTSCxPQUFULENBQW5CLEVBQXNDO0FBQ3BDLFFBQUlZLE1BQU0sQ0FBQ0MsVUFBWCxFQUF1QjtBQUNyQk4sTUFBQUEsU0FBUyxHQUFHSyxNQUFNLENBQUNFLGVBQVAsQ0FBdUJOLFdBQXZCLENBQVo7QUFDQSxVQUFJRCxTQUFKLEVBQWU7QUFDaEI7QUFDRjs7QUFDRCxTQUFPQSxTQUFQO0FBQ0Q7O0FBRUQsU0FBU1Esb0JBQVQsQ0FBK0JmLE9BQS9CLEVBQXdDTSxNQUF4QyxFQUFnRDtBQUM5QyxNQUFJLENBQUNELGdCQUFnQixDQUFDTCxPQUFELEVBQVVNLE1BQVYsQ0FBckIsRUFBd0M7QUFDdEMsVUFBTSxJQUFJVSxLQUFKLENBQVcsaURBQWdEVixNQUFPLEdBQWxFLENBQU47QUFDRDtBQUNGOztBQUVELFNBQVNXLHlCQUFULENBQW9DakIsT0FBcEMsRUFBNkNNLE1BQTdDLEVBQXFEO0FBQ25ELE1BQUlELGdCQUFnQixDQUFDTCxPQUFELEVBQVVNLE1BQVYsQ0FBcEIsRUFBdUM7QUFDckMsVUFBTSxJQUFJVSxLQUFKLENBQVcsK0NBQThDVixNQUFPLEdBQWhFLENBQU47QUFDRDtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi9saWInO1xuXG5cblxuZnVuY3Rpb24gc2V0dXBXcml0ZXJzICgpIHtcbiAgcmV0dXJuIHsnc3Rkb3V0Jzogc2lub24uc3B5KHByb2Nlc3Muc3Rkb3V0LCAnd3JpdGUnKSxcbiAgICAgICAgICAnc3RkZXJyJzogc2lub24uc3B5KHByb2Nlc3Muc3RkZXJyLCAnd3JpdGUnKX07XG59XG5cbmZ1bmN0aW9uIGdldER5bmFtaWNMb2dnZXIgKHRlc3RpbmdNb2RlLCBmb3JjZUxvZ3MsIHByZWZpeCA9IG51bGwpIHtcbiAgcHJvY2Vzcy5lbnYuX1RFU1RJTkcgPSB0ZXN0aW5nTW9kZSA/ICcxJyA6ICcwJztcbiAgcHJvY2Vzcy5lbnYuX0ZPUkNFX0xPR1MgPSBmb3JjZUxvZ3MgPyAnMScgOiAnMCc7XG4gIHJldHVybiBsb2dnZXIuZ2V0TG9nZ2VyKHByZWZpeCk7XG59XG5cbmZ1bmN0aW9uIHJlc3RvcmVXcml0ZXJzICh3cml0ZXJzKSB7XG4gIGZvciAobGV0IHcgb2YgXy52YWx1ZXMod3JpdGVycykpIHtcbiAgICB3LnJlc3RvcmUoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzb21lb25lSGFkT3V0cHV0ICh3cml0ZXJzLCBvdXRwdXQpIHtcbiAgbGV0IGhhZE91dHB1dCA9IGZhbHNlO1xuICBsZXQgbWF0Y2hPdXRwdXQgPSBzaW5vbi5tYXRjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuaW5kZXhPZihvdXRwdXQpID49IDA7XG4gIH0sICdtYXRjaE91dHB1dCcpO1xuXG4gIGZvciAobGV0IHdyaXRlciBvZiBfLnZhbHVlcyh3cml0ZXJzKSkge1xuICAgIGlmICh3cml0ZXIuY2FsbGVkV2l0aCkge1xuICAgICAgaGFkT3V0cHV0ID0gd3JpdGVyLmNhbGxlZFdpdGhNYXRjaChtYXRjaE91dHB1dCk7XG4gICAgICBpZiAoaGFkT3V0cHV0KSBicmVhazsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuICAgIH1cbiAgfVxuICByZXR1cm4gaGFkT3V0cHV0O1xufVxuXG5mdW5jdGlvbiBhc3NlcnRPdXRwdXRDb250YWlucyAod3JpdGVycywgb3V0cHV0KSB7XG4gIGlmICghc29tZW9uZUhhZE91dHB1dCh3cml0ZXJzLCBvdXRwdXQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBzb21ldGhpbmcgdG8gaGF2ZSBiZWVuIGNhbGxlZCB3aXRoOiAnJHtvdXRwdXR9J2ApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydE91dHB1dERvZXNudENvbnRhaW4gKHdyaXRlcnMsIG91dHB1dCkge1xuICBpZiAoc29tZW9uZUhhZE91dHB1dCh3cml0ZXJzLCBvdXRwdXQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBub3RoaW5nIHRvIGhhdmUgYmVlbiBjYWxsZWQgd2l0aDogJyR7b3V0cHV0fSdgKTtcbiAgfVxufVxuXG5leHBvcnQge1xuICBzZXR1cFdyaXRlcnMsIHJlc3RvcmVXcml0ZXJzLCBhc3NlcnRPdXRwdXRDb250YWlucywgYXNzZXJ0T3V0cHV0RG9lc250Q29udGFpbixcbiAgZ2V0RHluYW1pY0xvZ2dlcixcbn07XG4iXSwiZmlsZSI6InRlc3QvbG9nZ2VyL2hlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -1,41 +0,0 @@
1
- "use strict";
2
-
3
- require("source-map-support/register");
4
-
5
- var _helpers = require("./helpers");
6
-
7
- describe('logger with force log', function () {
8
- let writers, log;
9
- before(function () {
10
- writers = (0, _helpers.setupWriters)();
11
- log = (0, _helpers.getDynamicLogger)(true, true);
12
- log.level = 'silly';
13
- });
14
- after(function () {
15
- (0, _helpers.restoreWriters)(writers);
16
- });
17
- it('should not rewrite log levels even during testing', function () {
18
- log.silly('silly');
19
- (0, _helpers.assertOutputContains)(writers, 'silly');
20
- log.verbose('verbose');
21
- (0, _helpers.assertOutputContains)(writers, 'verbose');
22
- log.verbose('debug');
23
- (0, _helpers.assertOutputContains)(writers, 'debug');
24
- log.info('info');
25
- (0, _helpers.assertOutputContains)(writers, 'info');
26
- log.http('http');
27
- (0, _helpers.assertOutputContains)(writers, 'http');
28
- log.warn('warn');
29
- (0, _helpers.assertOutputContains)(writers, 'warn');
30
- log.error('error');
31
- (0, _helpers.assertOutputContains)(writers, 'error');
32
- (() => {
33
- log.errorAndThrow('msg');
34
- }).should.throw('msg');
35
- (0, _helpers.assertOutputContains)(writers, 'error');
36
- (0, _helpers.assertOutputContains)(writers, 'msg');
37
- });
38
- });require('source-map-support').install();
39
-
40
-
41
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvbG9nZ2VyL2xvZ2dlci1mb3JjZS1zcGVjcy5qcyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsIndyaXRlcnMiLCJsb2ciLCJiZWZvcmUiLCJsZXZlbCIsImFmdGVyIiwiaXQiLCJzaWxseSIsInZlcmJvc2UiLCJpbmZvIiwiaHR0cCIsIndhcm4iLCJlcnJvciIsImVycm9yQW5kVGhyb3ciLCJzaG91bGQiLCJ0aHJvdyJdLCJtYXBwaW5ncyI6Ijs7OztBQUVBOztBQUdBQSxRQUFRLENBQUMsdUJBQUQsRUFBMEIsWUFBWTtBQUM1QyxNQUFJQyxPQUFKLEVBQWFDLEdBQWI7QUFDQUMsRUFBQUEsTUFBTSxDQUFDLFlBQVk7QUFDakJGLElBQUFBLE9BQU8sR0FBRyw0QkFBVjtBQUNBQyxJQUFBQSxHQUFHLEdBQUcsK0JBQWlCLElBQWpCLEVBQXVCLElBQXZCLENBQU47QUFDQUEsSUFBQUEsR0FBRyxDQUFDRSxLQUFKLEdBQVksT0FBWjtBQUNELEdBSkssQ0FBTjtBQU1BQyxFQUFBQSxLQUFLLENBQUMsWUFBWTtBQUNoQixpQ0FBZUosT0FBZjtBQUNELEdBRkksQ0FBTDtBQUlBSyxFQUFBQSxFQUFFLENBQUMsbURBQUQsRUFBc0QsWUFBWTtBQUNsRUosSUFBQUEsR0FBRyxDQUFDSyxLQUFKLENBQVUsT0FBVjtBQUNBLHVDQUFxQk4sT0FBckIsRUFBOEIsT0FBOUI7QUFDQUMsSUFBQUEsR0FBRyxDQUFDTSxPQUFKLENBQVksU0FBWjtBQUNBLHVDQUFxQlAsT0FBckIsRUFBOEIsU0FBOUI7QUFDQUMsSUFBQUEsR0FBRyxDQUFDTSxPQUFKLENBQVksT0FBWjtBQUNBLHVDQUFxQlAsT0FBckIsRUFBOEIsT0FBOUI7QUFDQUMsSUFBQUEsR0FBRyxDQUFDTyxJQUFKLENBQVMsTUFBVDtBQUNBLHVDQUFxQlIsT0FBckIsRUFBOEIsTUFBOUI7QUFDQUMsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVMsTUFBVDtBQUNBLHVDQUFxQlQsT0FBckIsRUFBOEIsTUFBOUI7QUFDQUMsSUFBQUEsR0FBRyxDQUFDUyxJQUFKLENBQVMsTUFBVDtBQUNBLHVDQUFxQlYsT0FBckIsRUFBOEIsTUFBOUI7QUFDQUMsSUFBQUEsR0FBRyxDQUFDVSxLQUFKLENBQVUsT0FBVjtBQUNBLHVDQUFxQlgsT0FBckIsRUFBOEIsT0FBOUI7QUFDQSxLQUFDLE1BQU07QUFBRUMsTUFBQUEsR0FBRyxDQUFDVyxhQUFKLENBQWtCLEtBQWxCO0FBQTJCLEtBQXBDLEVBQXNDQyxNQUF0QyxDQUE2Q0MsS0FBN0MsQ0FBbUQsS0FBbkQ7QUFDQSx1Q0FBcUJkLE9BQXJCLEVBQThCLE9BQTlCO0FBQ0EsdUNBQXFCQSxPQUFyQixFQUE4QixLQUE5QjtBQUNELEdBbEJDLENBQUY7QUFtQkQsQ0EvQk8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRyYW5zcGlsZTptb2NoYVxuXG5pbXBvcnQgeyBnZXREeW5hbWljTG9nZ2VyLCByZXN0b3JlV3JpdGVycywgc2V0dXBXcml0ZXJzLFxuICAgICAgICAgYXNzZXJ0T3V0cHV0Q29udGFpbnMgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5kZXNjcmliZSgnbG9nZ2VyIHdpdGggZm9yY2UgbG9nJywgZnVuY3Rpb24gKCkge1xuICBsZXQgd3JpdGVycywgbG9nO1xuICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgIHdyaXRlcnMgPSBzZXR1cFdyaXRlcnMoKTtcbiAgICBsb2cgPSBnZXREeW5hbWljTG9nZ2VyKHRydWUsIHRydWUpO1xuICAgIGxvZy5sZXZlbCA9ICdzaWxseSc7XG4gIH0pO1xuXG4gIGFmdGVyKGZ1bmN0aW9uICgpIHtcbiAgICByZXN0b3JlV3JpdGVycyh3cml0ZXJzKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgcmV3cml0ZSBsb2cgbGV2ZWxzIGV2ZW4gZHVyaW5nIHRlc3RpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgbG9nLnNpbGx5KCdzaWxseScpO1xuICAgIGFzc2VydE91dHB1dENvbnRhaW5zKHdyaXRlcnMsICdzaWxseScpO1xuICAgIGxvZy52ZXJib3NlKCd2ZXJib3NlJyk7XG4gICAgYXNzZXJ0T3V0cHV0Q29udGFpbnMod3JpdGVycywgJ3ZlcmJvc2UnKTtcbiAgICBsb2cudmVyYm9zZSgnZGVidWcnKTtcbiAgICBhc3NlcnRPdXRwdXRDb250YWlucyh3cml0ZXJzLCAnZGVidWcnKTtcbiAgICBsb2cuaW5mbygnaW5mbycpO1xuICAgIGFzc2VydE91dHB1dENvbnRhaW5zKHdyaXRlcnMsICdpbmZvJyk7XG4gICAgbG9nLmh0dHAoJ2h0dHAnKTtcbiAgICBhc3NlcnRPdXRwdXRDb250YWlucyh3cml0ZXJzLCAnaHR0cCcpO1xuICAgIGxvZy53YXJuKCd3YXJuJyk7XG4gICAgYXNzZXJ0T3V0cHV0Q29udGFpbnMod3JpdGVycywgJ3dhcm4nKTtcbiAgICBsb2cuZXJyb3IoJ2Vycm9yJyk7XG4gICAgYXNzZXJ0T3V0cHV0Q29udGFpbnMod3JpdGVycywgJ2Vycm9yJyk7XG4gICAgKCgpID0+IHsgbG9nLmVycm9yQW5kVGhyb3coJ21zZycpOyB9KS5zaG91bGQudGhyb3coJ21zZycpO1xuICAgIGFzc2VydE91dHB1dENvbnRhaW5zKHdyaXRlcnMsICdlcnJvcicpO1xuICAgIGFzc2VydE91dHB1dENvbnRhaW5zKHdyaXRlcnMsICdtc2cnKTtcbiAgfSk7XG59KTtcbiJdLCJmaWxlIjoidGVzdC9sb2dnZXIvbG9nZ2VyLWZvcmNlLXNwZWNzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=