@percy/sdk-utils 1.32.0-beta.9 → 1.32.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.js +34 -0
- package/dist/index.js +7 -0
- package/dist/merge-snapshot-options.js +41 -0
- package/package.json +3 -3
package/dist/bundle.js
CHANGED
|
@@ -326,6 +326,38 @@
|
|
|
326
326
|
}
|
|
327
327
|
}
|
|
328
328
|
|
|
329
|
+
function isPlainObject(value) {
|
|
330
|
+
return !!value && typeof value === 'object' && !Array.isArray(value);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
// Recursively merge `override` onto `base`. Plain (non-array) objects are merged
|
|
334
|
+
// key-by-key so overriding one nested key keeps the base's sibling keys; arrays,
|
|
335
|
+
// scalars, null and functions from `override` replace the base value wholesale.
|
|
336
|
+
function deepMerge(base, override) {
|
|
337
|
+
const result = {
|
|
338
|
+
...base
|
|
339
|
+
};
|
|
340
|
+
for (const key of Object.keys(override)) {
|
|
341
|
+
const baseVal = base[key];
|
|
342
|
+
const overrideVal = override[key];
|
|
343
|
+
result[key] = isPlainObject(baseVal) && isPlainObject(overrideVal) ? deepMerge(baseVal, overrideVal) : overrideVal;
|
|
344
|
+
}
|
|
345
|
+
return result;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
// Merges .percy.yml config snapshot options with per-snapshot options.
|
|
349
|
+
// Per-snapshot options take priority over config options.
|
|
350
|
+
//
|
|
351
|
+
// The merge is deep: nested objects (e.g. `discovery`) are merged recursively so
|
|
352
|
+
// a per-snapshot override of one nested key does not drop the config's sibling
|
|
353
|
+
// nested keys. At the leaves, per-snapshot values win; arrays are replaced, not
|
|
354
|
+
// concatenated.
|
|
355
|
+
function mergeSnapshotOptions(options = {}) {
|
|
356
|
+
var _percy$config;
|
|
357
|
+
const configOptions = (info === null || info === void 0 || (_percy$config = info.config) === null || _percy$config === void 0 ? void 0 : _percy$config.snapshot) || {};
|
|
358
|
+
return deepMerge(configOptions, options);
|
|
359
|
+
}
|
|
360
|
+
|
|
329
361
|
// Returns the readiness config for a snapshot.
|
|
330
362
|
// Shallow-merge of global .percy.yml config with per-snapshot overrides:
|
|
331
363
|
// per-snapshot keys win, unspecified keys are inherited from the global config.
|
|
@@ -481,6 +513,7 @@
|
|
|
481
513
|
captureAutomateScreenshot: captureAutomateScreenshot,
|
|
482
514
|
postBuildEvents: postBuildEvents,
|
|
483
515
|
getResponsiveWidths: getResponsiveWidths,
|
|
516
|
+
mergeSnapshotOptions: mergeSnapshotOptions,
|
|
484
517
|
DEFAULT_MAX_IFRAME_DEPTH: DEFAULT_MAX_IFRAME_DEPTH,
|
|
485
518
|
HARD_MAX_IFRAME_DEPTH: HARD_MAX_IFRAME_DEPTH,
|
|
486
519
|
clampIframeDepth: clampIframeDepth,
|
|
@@ -503,6 +536,7 @@
|
|
|
503
536
|
exports.isPercyEnabled = isPercyEnabled;
|
|
504
537
|
exports.isReadinessDisabled = isReadinessDisabled;
|
|
505
538
|
exports.logger = logger;
|
|
539
|
+
exports.mergeSnapshotOptions = mergeSnapshotOptions;
|
|
506
540
|
exports.percy = info;
|
|
507
541
|
exports.postBuildEvents = postBuildEvents;
|
|
508
542
|
exports.postComparison = postComparison;
|
package/dist/index.js
CHANGED
|
@@ -54,6 +54,12 @@ Object.defineProperty(exports, "logger", {
|
|
|
54
54
|
return _logger.default;
|
|
55
55
|
}
|
|
56
56
|
});
|
|
57
|
+
Object.defineProperty(exports, "mergeSnapshotOptions", {
|
|
58
|
+
enumerable: true,
|
|
59
|
+
get: function () {
|
|
60
|
+
return _mergeSnapshotOptions.default;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
57
63
|
Object.defineProperty(exports, "percy", {
|
|
58
64
|
enumerable: true,
|
|
59
65
|
get: function () {
|
|
@@ -114,6 +120,7 @@ var _postBuildEvent = _interopRequireDefault(require("./post-build-event.js"));
|
|
|
114
120
|
var _flushSnapshots = _interopRequireDefault(require("./flush-snapshots.js"));
|
|
115
121
|
var _postScreenshot = _interopRequireDefault(require("./post-screenshot.js"));
|
|
116
122
|
var _getResponsiveWidths = _interopRequireDefault(require("./get-responsive-widths.js"));
|
|
123
|
+
var _mergeSnapshotOptions = _interopRequireDefault(require("./merge-snapshot-options.js"));
|
|
117
124
|
var _serializeDom = require("./serialize-dom.js");
|
|
118
125
|
var _default = _interopRequireWildcard(require("./index.js"));
|
|
119
126
|
exports.default = _default;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
exports.mergeSnapshotOptions = mergeSnapshotOptions;
|
|
8
|
+
var _percyInfo = _interopRequireDefault(require("./percy-info.js"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
function isPlainObject(value) {
|
|
11
|
+
return !!value && typeof value === 'object' && !Array.isArray(value);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// Recursively merge `override` onto `base`. Plain (non-array) objects are merged
|
|
15
|
+
// key-by-key so overriding one nested key keeps the base's sibling keys; arrays,
|
|
16
|
+
// scalars, null and functions from `override` replace the base value wholesale.
|
|
17
|
+
function deepMerge(base, override) {
|
|
18
|
+
const result = {
|
|
19
|
+
...base
|
|
20
|
+
};
|
|
21
|
+
for (const key of Object.keys(override)) {
|
|
22
|
+
const baseVal = base[key];
|
|
23
|
+
const overrideVal = override[key];
|
|
24
|
+
result[key] = isPlainObject(baseVal) && isPlainObject(overrideVal) ? deepMerge(baseVal, overrideVal) : overrideVal;
|
|
25
|
+
}
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Merges .percy.yml config snapshot options with per-snapshot options.
|
|
30
|
+
// Per-snapshot options take priority over config options.
|
|
31
|
+
//
|
|
32
|
+
// The merge is deep: nested objects (e.g. `discovery`) are merged recursively so
|
|
33
|
+
// a per-snapshot override of one nested key does not drop the config's sibling
|
|
34
|
+
// nested keys. At the leaves, per-snapshot values win; arrays are replaced, not
|
|
35
|
+
// concatenated.
|
|
36
|
+
function mergeSnapshotOptions(options = {}) {
|
|
37
|
+
var _percy$config;
|
|
38
|
+
const configOptions = (_percyInfo.default === null || _percyInfo.default === void 0 || (_percy$config = _percyInfo.default.config) === null || _percy$config === void 0 ? void 0 : _percy$config.snapshot) || {};
|
|
39
|
+
return deepMerge(configOptions, options);
|
|
40
|
+
}
|
|
41
|
+
var _default = exports.default = mergeSnapshotOptions;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@percy/sdk-utils",
|
|
3
|
-
"version": "1.32.
|
|
3
|
+
"version": "1.32.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
},
|
|
10
10
|
"publishConfig": {
|
|
11
11
|
"access": "public",
|
|
12
|
-
"tag": "
|
|
12
|
+
"tag": "latest"
|
|
13
13
|
},
|
|
14
14
|
"engines": {
|
|
15
15
|
"node": ">=14"
|
|
@@ -54,5 +54,5 @@
|
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"pac-proxy-agent": "^7.0.2"
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "a6c8730bc89f5ba6a562b2afe317d534fb66d6eb"
|
|
58
58
|
}
|