@percy/cli-exec 1.0.0-beta.76 → 1.0.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/README.md CHANGED
@@ -32,6 +32,7 @@ Percy options:
32
32
  -c, --config <file> Config file path
33
33
  -d, --dry-run Print snapshot names only
34
34
  -h, --allowed-hostname <hostname> Allowed hostnames to capture in asset discovery
35
+ --disallowed-hostname <hostname> Disallowed hostnames to abort in asset discovery
35
36
  -t, --network-idle-timeout <ms> Asset discovery network idle timeout
36
37
  --disable-cache Disable asset discovery caches
37
38
  --debug Debug asset discovery and do not upload snapshots
@@ -62,6 +63,7 @@ Percy options:
62
63
  -c, --config <file> Config file path
63
64
  -d, --dry-run Print snapshot names only
64
65
  -h, --allowed-hostname <hostname> Allowed hostnames to capture in asset discovery
66
+ --disallowed-hostname <hostname> Disallowed hostnames to abort in asset discovery
65
67
  -t, --network-idle-timeout <ms> Asset discovery network idle timeout
66
68
  --disable-cache Disable asset discovery caches
67
69
  --debug Debug asset discovery and do not upload snapshots
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@percy/cli-exec",
3
- "version": "1.0.0-beta.76",
3
+ "version": "1.0.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -10,13 +10,15 @@
10
10
  "publishConfig": {
11
11
  "access": "public"
12
12
  },
13
- "main": "dist/index.js",
14
- "files": [
15
- "dist"
16
- ],
17
13
  "engines": {
18
- "node": ">=12"
14
+ "node": ">=14"
19
15
  },
16
+ "files": [
17
+ "./dist"
18
+ ],
19
+ "main": "./dist/index.js",
20
+ "type": "module",
21
+ "exports": "./dist/index.js",
20
22
  "scripts": {
21
23
  "build": "node ../../scripts/build",
22
24
  "lint": "eslint --ignore-path ../../.gitignore .",
@@ -30,10 +32,9 @@
30
32
  ]
31
33
  },
32
34
  "dependencies": {
33
- "@percy/cli-command": "1.0.0-beta.76",
34
- "@percy/core": "1.0.0-beta.76",
35
+ "@percy/cli-command": "1.0.0",
35
36
  "cross-spawn": "^7.0.3",
36
37
  "which": "^2.0.2"
37
38
  },
38
- "gitHead": "445af68d8e270e2a35fc74e26422ed5d3c91d2ae"
39
+ "gitHead": "6df509421a60144e4f9f5d59dc57a5675372a0b2"
39
40
  }
package/dist/common.js DELETED
@@ -1,17 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.flags = void 0;
7
- const flags = [{
8
- name: 'port',
9
- description: 'Local CLI server port',
10
- env: 'PERCY_SERVER_PORT',
11
- percyrc: 'port',
12
- type: 'number',
13
- parse: Number,
14
- default: 5338,
15
- short: 'P'
16
- }];
17
- exports.flags = flags;
package/dist/exec.js DELETED
@@ -1,133 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.exec = exports.default = void 0;
7
-
8
- var _cliCommand = _interopRequireDefault(require("@percy/cli-command"));
9
-
10
- var common = _interopRequireWildcard(require("./common"));
11
-
12
- var _start = _interopRequireDefault(require("./start"));
13
-
14
- var _stop = _interopRequireDefault(require("./stop"));
15
-
16
- var _ping = _interopRequireDefault(require("./ping"));
17
-
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
-
22
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
-
24
- const exec = (0, _cliCommand.default)('exec', {
25
- description: 'Start and stop Percy around a supplied command',
26
- usage: '[options] -- <command>',
27
- commands: [_start.default, _stop.default, _ping.default],
28
- flags: [...common.flags, {
29
- name: 'parallel',
30
- description: 'Marks the build as one of many parallel builds',
31
- parse: () => {
32
- var _process$env;
33
-
34
- return !!((_process$env = process.env).PERCY_PARALLEL_TOTAL || (_process$env.PERCY_PARALLEL_TOTAL = '-1'));
35
- }
36
- }, {
37
- name: 'partial',
38
- description: 'Marks the build as a partial build',
39
- parse: () => {
40
- var _process$env2;
41
-
42
- return !!((_process$env2 = process.env).PERCY_PARTIAL_BUILD || (_process$env2.PERCY_PARTIAL_BUILD = '1'));
43
- }
44
- }],
45
- examples: ['$0 -- echo "percy is running around this echo command"', '$0 -- yarn test'],
46
- loose: ['Warning: Missing command separator (--),', 'some command options may not work as expected'].join(' '),
47
- percy: {
48
- server: true
49
- }
50
- }, async function* ({
51
- flags,
52
- argv,
53
- env,
54
- percy,
55
- log,
56
- exit
57
- }) {
58
- let [command, ...args] = argv; // command is required
59
-
60
- if (!command) {
61
- log.error("You must supply a command to run after '--'");
62
- log.info('Example:');
63
- log.info(' $ percy exec -- npm test');
64
- exit(1);
65
- } // verify the provided command exists
66
-
67
-
68
- let which = await Promise.resolve().then(() => _interopRequireWildcard(require('which')));
69
-
70
- if (!which.sync(command, {
71
- nothrow: true
72
- })) {
73
- exit(127, `Command not found "${command}"`);
74
- } // attempt to start percy if enabled
75
-
76
-
77
- if (!percy) {
78
- log.warn('Percy is disabled');
79
- } else {
80
- try {
81
- yield* percy.start();
82
- } catch (error) {
83
- if (error.canceled) throw error;
84
- log.warn('Skipping visual tests');
85
- log.error(error);
86
- }
87
- } // provide SDKs with useful env vars
88
-
89
-
90
- env.PERCY_SERVER_ADDRESS = percy === null || percy === void 0 ? void 0 : percy.address();
91
- env.PERCY_LOGLEVEL = log.loglevel(); // run the provided command
92
-
93
- log.info(`Running "${[command, ...args].join(' ')}"`);
94
- let [status, error] = yield* spawn(command, args); // stop percy if running (force stop if there is an error);
95
-
96
- await (percy === null || percy === void 0 ? void 0 : percy.stop(!!error)); // forward any returned status code
97
-
98
- if (status) exit(status, error);
99
- }); // Spawn a command with cross-spawn and return an array containing the resulting status code along
100
- // with any error encountered while running. Uses a generator pattern to handle interupt signals.
101
-
102
- exports.exec = exec;
103
-
104
- async function* spawn(cmd, args) {
105
- let {
106
- default: crossSpawn
107
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('cross-spawn')));
108
- let proc, closed, error;
109
-
110
- try {
111
- proc = crossSpawn(cmd, args, {
112
- stdio: 'inherit'
113
- });
114
- proc.on('close', code => closed = code);
115
- proc.on('error', err => error = err); // run until an event is triggered
116
-
117
- /* eslint-disable-next-line no-unmodified-loop-condition */
118
-
119
- while (closed == null && error == null) {
120
- yield new Promise(r => setImmediate(r));
121
- }
122
-
123
- if (error) throw error;
124
- return [closed];
125
- } catch (err) {
126
- if (!err.signal) return [1, err];
127
- proc.kill(err.signal);
128
- return [0, err];
129
- }
130
- }
131
-
132
- var _default = exec;
133
- exports.default = _default;
package/dist/index.js DELETED
@@ -1,47 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "default", {
7
- enumerable: true,
8
- get: function () {
9
- return _exec.default;
10
- }
11
- });
12
- Object.defineProperty(exports, "exec", {
13
- enumerable: true,
14
- get: function () {
15
- return _exec.exec;
16
- }
17
- });
18
- Object.defineProperty(exports, "ping", {
19
- enumerable: true,
20
- get: function () {
21
- return _ping.ping;
22
- }
23
- });
24
- Object.defineProperty(exports, "start", {
25
- enumerable: true,
26
- get: function () {
27
- return _start.start;
28
- }
29
- });
30
- Object.defineProperty(exports, "stop", {
31
- enumerable: true,
32
- get: function () {
33
- return _stop.stop;
34
- }
35
- });
36
-
37
- var _exec = _interopRequireWildcard(require("./exec"));
38
-
39
- var _start = require("./start");
40
-
41
- var _stop = require("./stop");
42
-
43
- var _ping = require("./ping");
44
-
45
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
46
-
47
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
package/dist/ping.js DELETED
@@ -1,49 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.ping = exports.default = void 0;
7
-
8
- var _cliCommand = _interopRequireDefault(require("@percy/cli-command"));
9
-
10
- var common = _interopRequireWildcard(require("./common"));
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
-
16
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
-
18
- const ping = (0, _cliCommand.default)('ping', {
19
- description: 'Pings a local running Percy snapshot server',
20
- flags: common.flags,
21
- percy: true
22
- }, async ({
23
- flags,
24
- percy,
25
- log,
26
- exit
27
- }) => {
28
- if (!percy) exit(0, 'Percy is disabled');
29
- let {
30
- request
31
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('@percy/core/dist/utils')));
32
- let ping = `http://localhost:${flags.port}/percy/healthcheck`;
33
-
34
- try {
35
- await request(ping, {
36
- retryNotFound: true,
37
- noProxy: true
38
- });
39
- } catch (err) {
40
- log.error('Percy is not running');
41
- log.debug(err);
42
- exit(1);
43
- }
44
-
45
- log.info('Percy is running');
46
- });
47
- exports.ping = ping;
48
- var _default = ping;
49
- exports.default = _default;
package/dist/start.js DELETED
@@ -1,45 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.start = exports.default = void 0;
7
-
8
- var _cliCommand = _interopRequireDefault(require("@percy/cli-command"));
9
-
10
- var common = _interopRequireWildcard(require("./common"));
11
-
12
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
-
14
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- const start = (0, _cliCommand.default)('start', {
19
- description: 'Starts a local Percy snapshot server',
20
- flags: common.flags,
21
- examples: ['$0 &> percy.log'],
22
- percy: {
23
- server: true
24
- }
25
- }, async function* ({
26
- percy,
27
- exit
28
- }) {
29
- if (!percy) exit(0, 'Percy is disabled'); // start percy
30
-
31
- yield* percy.start();
32
-
33
- try {
34
- // run until stopped or terminated
35
- while (percy.readyState < 3) {
36
- yield new Promise(r => setImmediate(r));
37
- }
38
- } catch (error) {
39
- await percy.stop(true);
40
- throw error;
41
- }
42
- });
43
- exports.start = start;
44
- var _default = start;
45
- exports.default = _default;
package/dist/stop.js DELETED
@@ -1,56 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.stop = exports.default = void 0;
7
-
8
- var _cliCommand = _interopRequireDefault(require("@percy/cli-command"));
9
-
10
- var common = _interopRequireWildcard(require("./common"));
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
-
16
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
-
18
- const stop = (0, _cliCommand.default)('stop', {
19
- description: 'Stops a local running Percy snapshot server',
20
- flags: common.flags,
21
- percy: true
22
- }, async ({
23
- flags,
24
- percy,
25
- log,
26
- exit
27
- }) => {
28
- if (!percy) exit(0, 'Percy is disabled');
29
- let {
30
- request
31
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('@percy/core/dist/utils')));
32
- let stop = `http://localhost:${flags.port}/percy/stop`;
33
- let ping = `http://localhost:${flags.port}/percy/healthcheck`;
34
-
35
- try {
36
- await request(stop, {
37
- method: 'POST',
38
- noProxy: true
39
- });
40
- } catch (err) {
41
- log.error('Percy is not running');
42
- log.debug(err);
43
- exit(1);
44
- } // retry heathcheck until it fails
45
-
46
-
47
- await new Promise(function check(resolve) {
48
- return request(ping, {
49
- noProxy: true
50
- }).then(() => setTimeout(check, 100, resolve)).catch(resolve);
51
- });
52
- log.info('Percy has stopped');
53
- });
54
- exports.stop = stop;
55
- var _default = stop;
56
- exports.default = _default;