@percy/sdk-utils 1.10.3 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.js +58 -36
- package/dist/flush-snapshots.js +28 -0
- package/dist/index.js +16 -0
- package/dist/logger.js +26 -37
- package/dist/post-comparison.js +31 -0
- package/dist/post-snapshot.js +2 -2
- package/package.json +2 -2
- package/test/client.js +30 -1
- package/test/helpers.js +27 -1
package/dist/bundle.js
CHANGED
|
@@ -24,43 +24,34 @@
|
|
|
24
24
|
return logger.log(namespace, lvl, ...a);
|
|
25
25
|
}
|
|
26
26
|
}), {});
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
if (!process.env.__PERCY_BROWSERIFIED__) label = `\u001b[95m${label}\u001b[39m`;
|
|
53
|
-
msg = `[${label}] ${err && debug && msg.stack || msg}`;
|
|
54
|
-
|
|
55
|
-
if (process.env.__PERCY_BROWSERIFIED__) {
|
|
56
|
-
// use console[warn|error|log] in browsers
|
|
57
|
-
console[['warn', 'error'].includes(lvl) ? lvl : 'log'](msg);
|
|
58
|
-
} else {
|
|
59
|
-
// use process[stdout|stderr].write in node
|
|
60
|
-
process[lvl === 'info' ? 'stdout' : 'stderr'].write(msg + '\n');
|
|
27
|
+
}
|
|
28
|
+
Object.assign(logger, {
|
|
29
|
+
// Set and/or return the local loglevel
|
|
30
|
+
loglevel: function () {
|
|
31
|
+
let lvl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : logger.loglevel.lvl;
|
|
32
|
+
return logger.loglevel.lvl = lvl || process.env.PERCY_LOGLEVEL || 'info';
|
|
33
|
+
},
|
|
34
|
+
// Track and send/write logs for the specified namespace and log level
|
|
35
|
+
log: (ns, lvl, msg, meta) => {
|
|
36
|
+
let err = typeof msg !== 'string' && (lvl === 'error' || lvl === 'debug'); // check if the specific level is within the local loglevel range
|
|
37
|
+
|
|
38
|
+
if (LOG_LEVELS[lvl] != null && LOG_LEVELS[lvl] >= LOG_LEVELS[logger.loglevel()]) {
|
|
39
|
+
let debug = logger.loglevel() === 'debug';
|
|
40
|
+
let label = debug ? `percy:${ns}` : 'percy'; // colorize the label when possible for consistency with the CLI logger
|
|
41
|
+
|
|
42
|
+
if (!process.env.__PERCY_BROWSERIFIED__) label = `\u001b[95m${label}\u001b[39m`;
|
|
43
|
+
msg = `[${label}] ${err && debug && msg.stack || msg}`;
|
|
44
|
+
|
|
45
|
+
if (process.env.__PERCY_BROWSERIFIED__) {
|
|
46
|
+
// use console[warn|error|log] in browsers
|
|
47
|
+
console[['warn', 'error'].includes(lvl) ? lvl : 'log'](msg);
|
|
48
|
+
} else {
|
|
49
|
+
// use process[stdout|stderr].write in node
|
|
50
|
+
process[lvl === 'info' ? 'stdout' : 'stderr'].write(msg + '\n');
|
|
51
|
+
}
|
|
61
52
|
}
|
|
62
53
|
}
|
|
63
|
-
};
|
|
54
|
+
});
|
|
64
55
|
|
|
65
56
|
// helper to create a version object from a string
|
|
66
57
|
function toVersion(str) {
|
|
@@ -232,7 +223,7 @@
|
|
|
232
223
|
return info.domScript;
|
|
233
224
|
}
|
|
234
225
|
|
|
235
|
-
//
|
|
226
|
+
// indicate that Percy has been disabled.
|
|
236
227
|
|
|
237
228
|
async function postSnapshot(options, params) {
|
|
238
229
|
let query = params ? `?${new URLSearchParams(params)}` : '';
|
|
@@ -247,6 +238,33 @@
|
|
|
247
238
|
});
|
|
248
239
|
}
|
|
249
240
|
|
|
241
|
+
// indicate that Percy has been disabled.
|
|
242
|
+
|
|
243
|
+
async function postComparison(options, params) {
|
|
244
|
+
let query = params ? `?${new URLSearchParams(params)}` : '';
|
|
245
|
+
await request.post(`/percy/comparison${query}`, options).catch(err => {
|
|
246
|
+
var _err$response, _err$response$body, _err$response$body$bu;
|
|
247
|
+
|
|
248
|
+
if ((_err$response = err.response) !== null && _err$response !== void 0 && (_err$response$body = _err$response.body) !== null && _err$response$body !== void 0 && (_err$response$body$bu = _err$response$body.build) !== null && _err$response$body$bu !== void 0 && _err$response$body$bu.error) {
|
|
249
|
+
info.enabled = false;
|
|
250
|
+
} else {
|
|
251
|
+
throw err;
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
// will be flushed. Does nothing when Percy is not enabled.
|
|
257
|
+
|
|
258
|
+
async function flushSnapshots(options) {
|
|
259
|
+
if (info.enabled) {
|
|
260
|
+
// accept one or more snapshot names
|
|
261
|
+
options && (options = [].concat(options).map(o => typeof o === 'string' ? {
|
|
262
|
+
name: o
|
|
263
|
+
} : o));
|
|
264
|
+
await request.post('/percy/flush', options);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
250
268
|
var index = /*#__PURE__*/Object.freeze({
|
|
251
269
|
__proto__: null,
|
|
252
270
|
logger: logger,
|
|
@@ -256,14 +274,18 @@
|
|
|
256
274
|
waitForPercyIdle: waitForPercyIdle,
|
|
257
275
|
fetchPercyDOM: fetchPercyDOM,
|
|
258
276
|
postSnapshot: postSnapshot,
|
|
277
|
+
postComparison: postComparison,
|
|
278
|
+
flushSnapshots: flushSnapshots,
|
|
259
279
|
'default': index
|
|
260
280
|
});
|
|
261
281
|
|
|
262
282
|
exports["default"] = index;
|
|
263
283
|
exports.fetchPercyDOM = fetchPercyDOM;
|
|
284
|
+
exports.flushSnapshots = flushSnapshots;
|
|
264
285
|
exports.isPercyEnabled = isPercyEnabled;
|
|
265
286
|
exports.logger = logger;
|
|
266
287
|
exports.percy = info;
|
|
288
|
+
exports.postComparison = postComparison;
|
|
267
289
|
exports.postSnapshot = postSnapshot;
|
|
268
290
|
exports.request = request;
|
|
269
291
|
exports.waitForPercyIdle = waitForPercyIdle;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
exports.flushSnapshots = flushSnapshots;
|
|
8
|
+
|
|
9
|
+
var _percyInfo = _interopRequireDefault(require("./percy-info.js"));
|
|
10
|
+
|
|
11
|
+
var _request = _interopRequireDefault(require("./request.js"));
|
|
12
|
+
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
|
|
15
|
+
// Posts to the local Percy server one or more snapshots to flush. Given no arguments, all snapshots
|
|
16
|
+
// will be flushed. Does nothing when Percy is not enabled.
|
|
17
|
+
async function flushSnapshots(options) {
|
|
18
|
+
if (_percyInfo.default.enabled) {
|
|
19
|
+
// accept one or more snapshot names
|
|
20
|
+
options && (options = [].concat(options).map(o => typeof o === 'string' ? {
|
|
21
|
+
name: o
|
|
22
|
+
} : o));
|
|
23
|
+
await _request.default.post('/percy/flush', options);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
var _default = flushSnapshots;
|
|
28
|
+
exports.default = _default;
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,12 @@ Object.defineProperty(exports, "fetchPercyDOM", {
|
|
|
10
10
|
return _percyDom.default;
|
|
11
11
|
}
|
|
12
12
|
});
|
|
13
|
+
Object.defineProperty(exports, "flushSnapshots", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () {
|
|
16
|
+
return _flushSnapshots.default;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
13
19
|
Object.defineProperty(exports, "isPercyEnabled", {
|
|
14
20
|
enumerable: true,
|
|
15
21
|
get: function () {
|
|
@@ -28,6 +34,12 @@ Object.defineProperty(exports, "percy", {
|
|
|
28
34
|
return _percyInfo.default;
|
|
29
35
|
}
|
|
30
36
|
});
|
|
37
|
+
Object.defineProperty(exports, "postComparison", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
get: function () {
|
|
40
|
+
return _postComparison.default;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
31
43
|
Object.defineProperty(exports, "postSnapshot", {
|
|
32
44
|
enumerable: true,
|
|
33
45
|
get: function () {
|
|
@@ -61,6 +73,10 @@ var _percyDom = _interopRequireDefault(require("./percy-dom.js"));
|
|
|
61
73
|
|
|
62
74
|
var _postSnapshot = _interopRequireDefault(require("./post-snapshot.js"));
|
|
63
75
|
|
|
76
|
+
var _postComparison = _interopRequireDefault(require("./post-comparison.js"));
|
|
77
|
+
|
|
78
|
+
var _flushSnapshots = _interopRequireDefault(require("./flush-snapshots.js"));
|
|
79
|
+
|
|
64
80
|
var _default = _interopRequireWildcard(require("./index.js"));
|
|
65
81
|
|
|
66
82
|
exports.default = _default;
|
package/dist/logger.js
CHANGED
|
@@ -17,44 +17,33 @@ function logger(namespace) {
|
|
|
17
17
|
return Object.keys(LOG_LEVELS).reduce((ns, lvl) => Object.assign(ns, {
|
|
18
18
|
[lvl]: (...a) => logger.log(namespace, lvl, ...a)
|
|
19
19
|
}), {});
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (!process.env.__PERCY_BROWSERIFIED__) label = `\u001b[95m${label}\u001b[39m`;
|
|
47
|
-
msg = `[${label}] ${err && debug && msg.stack || msg}`;
|
|
48
|
-
|
|
49
|
-
if (process.env.__PERCY_BROWSERIFIED__) {
|
|
50
|
-
// use console[warn|error|log] in browsers
|
|
51
|
-
console[['warn', 'error'].includes(lvl) ? lvl : 'log'](msg);
|
|
52
|
-
} else {
|
|
53
|
-
// use process[stdout|stderr].write in node
|
|
54
|
-
process[lvl === 'info' ? 'stdout' : 'stderr'].write(msg + '\n');
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
Object.assign(logger, {
|
|
23
|
+
// Set and/or return the local loglevel
|
|
24
|
+
loglevel: (lvl = logger.loglevel.lvl) => {
|
|
25
|
+
return logger.loglevel.lvl = lvl || process.env.PERCY_LOGLEVEL || 'info';
|
|
26
|
+
},
|
|
27
|
+
// Track and send/write logs for the specified namespace and log level
|
|
28
|
+
log: (ns, lvl, msg, meta) => {
|
|
29
|
+
let err = typeof msg !== 'string' && (lvl === 'error' || lvl === 'debug'); // check if the specific level is within the local loglevel range
|
|
30
|
+
|
|
31
|
+
if (LOG_LEVELS[lvl] != null && LOG_LEVELS[lvl] >= LOG_LEVELS[logger.loglevel()]) {
|
|
32
|
+
let debug = logger.loglevel() === 'debug';
|
|
33
|
+
let label = debug ? `percy:${ns}` : 'percy'; // colorize the label when possible for consistency with the CLI logger
|
|
34
|
+
|
|
35
|
+
if (!process.env.__PERCY_BROWSERIFIED__) label = `\u001b[95m${label}\u001b[39m`;
|
|
36
|
+
msg = `[${label}] ${err && debug && msg.stack || msg}`;
|
|
37
|
+
|
|
38
|
+
if (process.env.__PERCY_BROWSERIFIED__) {
|
|
39
|
+
// use console[warn|error|log] in browsers
|
|
40
|
+
console[['warn', 'error'].includes(lvl) ? lvl : 'log'](msg);
|
|
41
|
+
} else {
|
|
42
|
+
// use process[stdout|stderr].write in node
|
|
43
|
+
process[lvl === 'info' ? 'stdout' : 'stderr'].write(msg + '\n');
|
|
44
|
+
}
|
|
55
45
|
}
|
|
56
46
|
}
|
|
57
|
-
};
|
|
58
|
-
|
|
47
|
+
});
|
|
59
48
|
var _default = logger;
|
|
60
49
|
exports.default = _default;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
exports.postComparison = postComparison;
|
|
8
|
+
|
|
9
|
+
var _percyInfo = _interopRequireDefault(require("./percy-info.js"));
|
|
10
|
+
|
|
11
|
+
var _request = _interopRequireDefault(require("./request.js"));
|
|
12
|
+
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
|
|
15
|
+
// Post snapshot data to the CLI snapshot endpoint. If the endpoint responds with a build error,
|
|
16
|
+
// indicate that Percy has been disabled.
|
|
17
|
+
async function postComparison(options, params) {
|
|
18
|
+
let query = params ? `?${new URLSearchParams(params)}` : '';
|
|
19
|
+
await _request.default.post(`/percy/comparison${query}`, options).catch(err => {
|
|
20
|
+
var _err$response, _err$response$body, _err$response$body$bu;
|
|
21
|
+
|
|
22
|
+
if ((_err$response = err.response) !== null && _err$response !== void 0 && (_err$response$body = _err$response.body) !== null && _err$response$body !== void 0 && (_err$response$body$bu = _err$response$body.build) !== null && _err$response$body$bu !== void 0 && _err$response$body$bu.error) {
|
|
23
|
+
_percyInfo.default.enabled = false;
|
|
24
|
+
} else {
|
|
25
|
+
throw err;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
var _default = postComparison;
|
|
31
|
+
exports.default = _default;
|
package/dist/post-snapshot.js
CHANGED
|
@@ -12,8 +12,8 @@ var _request = _interopRequireDefault(require("./request.js"));
|
|
|
12
12
|
|
|
13
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
14
|
|
|
15
|
-
// Post snapshot data to the snapshot endpoint. If the
|
|
16
|
-
//
|
|
15
|
+
// Post snapshot data to the CLI snapshot endpoint. If the endpoint responds with a build error,
|
|
16
|
+
// indicate that Percy has been disabled.
|
|
17
17
|
async function postSnapshot(options, params) {
|
|
18
18
|
let query = params ? `?${new URLSearchParams(params)}` : '';
|
|
19
19
|
await _request.default.post(`/percy/snapshot${query}`, options).catch(err => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@percy/sdk-utils",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -50,5 +50,5 @@
|
|
|
50
50
|
]
|
|
51
51
|
}
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "0a5043cd677266390889063924f342af9b347055"
|
|
54
54
|
}
|
package/test/client.js
CHANGED
|
@@ -16,6 +16,9 @@
|
|
|
16
16
|
const utils = require$$0__default["default"];
|
|
17
17
|
const helpers = {
|
|
18
18
|
async setupTest() {
|
|
19
|
+
let {
|
|
20
|
+
logger = true
|
|
21
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
19
22
|
utils.percy.version = '';
|
|
20
23
|
delete utils.percy.config;
|
|
21
24
|
delete utils.percy.enabled;
|
|
@@ -24,6 +27,8 @@
|
|
|
24
27
|
delete utils.logger.loglevel.lvl;
|
|
25
28
|
delete process.env.PERCY_LOGLEVEL;
|
|
26
29
|
delete process.env.PERCY_SERVER_ADDRESS;
|
|
30
|
+
utils.logger.log = helpers.logger.__log__;
|
|
31
|
+
if (logger) helpers.logger.mock();
|
|
27
32
|
await helpers.test('reset');
|
|
28
33
|
},
|
|
29
34
|
|
|
@@ -40,8 +45,32 @@
|
|
|
40
45
|
|
|
41
46
|
get testSnapshotURL() {
|
|
42
47
|
return `${utils.percy.address}/test/snapshot`;
|
|
43
|
-
}
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
logger: {
|
|
51
|
+
__log__: utils.logger.log,
|
|
52
|
+
loglevel: utils.logger.loglevel,
|
|
53
|
+
stdout: [],
|
|
54
|
+
stderr: [],
|
|
55
|
+
|
|
56
|
+
mock() {
|
|
57
|
+
helpers.logger.reset();
|
|
44
58
|
|
|
59
|
+
utils.logger.log = (ns, lvl, msg) => {
|
|
60
|
+
if (lvl === 'debug' && helpers.logger.loglevel.lvl !== 'debug') return;
|
|
61
|
+
msg = `[percy${lvl === 'debug' ? `:${ns}` : ''}] ${msg}`;
|
|
62
|
+
let io = lvl === 'info' ? 'stdout' : 'stderr';
|
|
63
|
+
helpers.logger[io].push(msg);
|
|
64
|
+
};
|
|
65
|
+
},
|
|
66
|
+
|
|
67
|
+
reset() {
|
|
68
|
+
helpers.logger.stdout = [];
|
|
69
|
+
helpers.logger.stderr = [];
|
|
70
|
+
helpers.logger.loglevel('info');
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
}
|
|
45
74
|
};
|
|
46
75
|
var helpers_1 = helpers;
|
|
47
76
|
|
package/test/helpers.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const utils = require('@percy/sdk-utils');
|
|
2
2
|
|
|
3
3
|
const helpers = {
|
|
4
|
-
async setupTest() {
|
|
4
|
+
async setupTest({ logger = true } = {}) {
|
|
5
5
|
utils.percy.version = '';
|
|
6
6
|
delete utils.percy.config;
|
|
7
7
|
delete utils.percy.enabled;
|
|
@@ -10,6 +10,8 @@ const helpers = {
|
|
|
10
10
|
delete utils.logger.loglevel.lvl;
|
|
11
11
|
delete process.env.PERCY_LOGLEVEL;
|
|
12
12
|
delete process.env.PERCY_SERVER_ADDRESS;
|
|
13
|
+
utils.logger.log = helpers.logger.__log__;
|
|
14
|
+
if (logger) helpers.logger.mock();
|
|
13
15
|
await helpers.test('reset');
|
|
14
16
|
},
|
|
15
17
|
|
|
@@ -26,6 +28,30 @@ const helpers = {
|
|
|
26
28
|
|
|
27
29
|
get testSnapshotURL() {
|
|
28
30
|
return `${utils.percy.address}/test/snapshot`;
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
logger: {
|
|
34
|
+
__log__: utils.logger.log,
|
|
35
|
+
loglevel: utils.logger.loglevel,
|
|
36
|
+
stdout: [],
|
|
37
|
+
stderr: [],
|
|
38
|
+
|
|
39
|
+
mock() {
|
|
40
|
+
helpers.logger.reset();
|
|
41
|
+
|
|
42
|
+
utils.logger.log = (ns, lvl, msg) => {
|
|
43
|
+
if (lvl === 'debug' && helpers.logger.loglevel.lvl !== 'debug') return;
|
|
44
|
+
msg = `[percy${lvl === 'debug' ? `:${ns}` : ''}] ${msg}`;
|
|
45
|
+
let io = (lvl === 'info') ? 'stdout' : 'stderr';
|
|
46
|
+
helpers.logger[io].push(msg);
|
|
47
|
+
};
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
reset() {
|
|
51
|
+
helpers.logger.stdout = [];
|
|
52
|
+
helpers.logger.stderr = [];
|
|
53
|
+
helpers.logger.loglevel('info');
|
|
54
|
+
}
|
|
29
55
|
}
|
|
30
56
|
};
|
|
31
57
|
|