@percy/core
Advanced tools
Comparing version 1.8.1 to 1.9.0
109
dist/api.js
@@ -15,2 +15,14 @@ import fs from 'fs'; | ||
.websocket('/(logger)?', ws => { | ||
var _percy$testing, _percy$testing2; | ||
// support sabotaging remote logging connections in testing mode | ||
if (((_percy$testing = percy.testing) === null || _percy$testing === void 0 ? void 0 : _percy$testing.remoteLogging) === false) return ws.terminate(); // track all remote logging connections in testing mode | ||
if (percy.testing) ((_percy$testing2 = percy.testing).remoteLoggers || (_percy$testing2.remoteLoggers = new Set())).add(ws); | ||
ws.addEventListener('close', () => { | ||
var _percy$testing3, _percy$testing3$remot; | ||
return (_percy$testing3 = percy.testing) === null || _percy$testing3 === void 0 ? void 0 : (_percy$testing3$remot = _percy$testing3.remoteLoggers) === null || _percy$testing3$remot === void 0 ? void 0 : _percy$testing3$remot.delete(ws); | ||
}); // listen for messages with specific logging payloads | ||
ws.addEventListener('message', ({ | ||
@@ -27,3 +39,4 @@ data | ||
if (log) logger.instance.log(...log); | ||
}); | ||
}); // respond with the current loglevel | ||
ws.send(JSON.stringify({ | ||
@@ -34,3 +47,3 @@ loglevel: logger.loglevel() | ||
.route((req, res, next) => { | ||
var _percy$testing, _percy$testing3, _percy$testing3$api, _percy$testing4, _percy$testing4$api; | ||
var _percy$testing4, _percy$testing7, _percy$testing7$api, _percy$testing8, _percy$testing8$api; | ||
@@ -44,31 +57,51 @@ // treat all request bodies as json | ||
if (((_percy$testing = percy.testing) === null || _percy$testing === void 0 ? void 0 : _percy$testing.version) !== false) { | ||
var _percy$testing2; | ||
if (((_percy$testing4 = percy.testing) === null || _percy$testing4 === void 0 ? void 0 : _percy$testing4.version) !== false) { | ||
var _percy$testing5; | ||
res.setHeader('X-Percy-Core-Version', ((_percy$testing2 = percy.testing) === null || _percy$testing2 === void 0 ? void 0 : _percy$testing2.version) ?? pkg.version); | ||
res.setHeader('X-Percy-Core-Version', ((_percy$testing5 = percy.testing) === null || _percy$testing5 === void 0 ? void 0 : _percy$testing5.version) ?? pkg.version); | ||
} // track all api reqeusts in testing mode | ||
if (percy.testing && !req.url.pathname.startsWith('/test/')) { | ||
var _percy$testing6; | ||
((_percy$testing6 = percy.testing).requests || (_percy$testing6.requests = [])).push({ | ||
url: `${req.url.pathname}${req.url.search}`, | ||
method: req.method, | ||
body: req.body | ||
}); | ||
} // support sabotaging requests in testing mode | ||
if (((_percy$testing3 = percy.testing) === null || _percy$testing3 === void 0 ? void 0 : (_percy$testing3$api = _percy$testing3.api) === null || _percy$testing3$api === void 0 ? void 0 : _percy$testing3$api[req.url.pathname]) === 'error') { | ||
return res.json(500, { | ||
success: false, | ||
error: 'Error: testing' | ||
}); | ||
} else if (((_percy$testing4 = percy.testing) === null || _percy$testing4 === void 0 ? void 0 : (_percy$testing4$api = _percy$testing4.api) === null || _percy$testing4$api === void 0 ? void 0 : _percy$testing4$api[req.url.pathname]) === 'disconnect') { | ||
return req.connection.destroy(); | ||
if (((_percy$testing7 = percy.testing) === null || _percy$testing7 === void 0 ? void 0 : (_percy$testing7$api = _percy$testing7.api) === null || _percy$testing7$api === void 0 ? void 0 : _percy$testing7$api[req.url.pathname]) === 'error') { | ||
next = () => { | ||
var _percy$testing$build; | ||
return Promise.reject(new Error(((_percy$testing$build = percy.testing.build) === null || _percy$testing$build === void 0 ? void 0 : _percy$testing$build.error) || 'testing')); | ||
}; | ||
} else if (((_percy$testing8 = percy.testing) === null || _percy$testing8 === void 0 ? void 0 : (_percy$testing8$api = _percy$testing8.api) === null || _percy$testing8$api === void 0 ? void 0 : _percy$testing8$api[req.url.pathname]) === 'disconnect') { | ||
next = () => req.connection.destroy(); | ||
} // return json errors | ||
return next().catch(e => res.json(e.status ?? 500, { | ||
build: percy.build, | ||
error: e.message, | ||
success: false | ||
})); | ||
return next().catch(e => { | ||
var _percy$testing9; | ||
return res.json(e.status ?? 500, { | ||
build: ((_percy$testing9 = percy.testing) === null || _percy$testing9 === void 0 ? void 0 : _percy$testing9.build) || percy.build, | ||
error: e.message, | ||
success: false | ||
}); | ||
}); | ||
}) // healthcheck returns basic information | ||
.route('get', '/percy/healthcheck', (req, res) => res.json(200, { | ||
loglevel: percy.loglevel(), | ||
config: percy.config, | ||
build: percy.build, | ||
success: true | ||
})) // get or set config options | ||
.route('get', '/percy/healthcheck', (req, res) => { | ||
var _percy$testing10; | ||
return res.json(200, { | ||
build: ((_percy$testing10 = percy.testing) === null || _percy$testing10 === void 0 ? void 0 : _percy$testing10.build) ?? percy.build, | ||
loglevel: percy.loglevel(), | ||
config: percy.config, | ||
success: true | ||
}); | ||
}) // get or set config options | ||
.route(['get', 'post'], '/percy/config', async (req, res) => res.json(200, { | ||
@@ -114,5 +147,8 @@ config: req.body ? await percy.setConfig(req.body) : percy.config, | ||
if (cmd === 'reset') { | ||
// the reset command will reset testing mode and clear any logs | ||
var _percy$testing$remote; | ||
// the reset command will terminate connections, clear logs, and reset testing mode | ||
(_percy$testing$remote = percy.testing.remoteLoggers) === null || _percy$testing$remote === void 0 ? void 0 : _percy$testing$remote.forEach(ws => ws.terminate()); | ||
logger.instance.messages.clear(); | ||
percy.testing = {}; | ||
logger.instance.messages.clear(); | ||
} else if (cmd === 'version') { | ||
@@ -122,6 +158,18 @@ // the version command will update the api version header for testing | ||
} else if (cmd === 'error' || cmd === 'disconnect') { | ||
var _percy$testing11; | ||
// the error or disconnect commands will cause specific endpoints to fail | ||
percy.testing.api = { ...percy.testing.api, | ||
[body]: cmd | ||
((_percy$testing11 = percy.testing).api || (_percy$testing11.api = {}))[body] = cmd; | ||
} else if (cmd === 'build-failure') { | ||
// the build-failure command will cause api errors to include a failed build | ||
percy.testing.build = { | ||
failed: true, | ||
error: 'Build failed' | ||
}; | ||
} else if (cmd === 'remote-logging') { | ||
var _percy$testing$remote2; | ||
// the remote-logging command will toggle remote logging support | ||
if (body === false) (_percy$testing$remote2 = percy.testing.remoteLoggers) === null || _percy$testing$remote2 === void 0 ? void 0 : _percy$testing$remote2.forEach(ws => ws.terminate()); | ||
percy.testing.remoteLogging = body; | ||
} else { | ||
@@ -133,5 +181,8 @@ // 404 for unknown commands | ||
return res.json(200, { | ||
testing: percy.testing | ||
success: true | ||
}); | ||
}) // returns an array of raw logs from the logger | ||
}) // returns an array of raw requests made to the api | ||
.route('get', '/test/requests', (req, res) => res.json(200, { | ||
requests: percy.testing.requests | ||
})) // returns an array of raw logs from the logger | ||
.route('get', '/test/logs', (req, res) => res.json(200, { | ||
@@ -138,0 +189,0 @@ logs: Array.from(logger.instance.messages) |
{ | ||
"name": "@percy/core", | ||
"version": "1.8.1", | ||
"version": "1.9.0", | ||
"license": "MIT", | ||
@@ -42,6 +42,6 @@ "repository": { | ||
"dependencies": { | ||
"@percy/client": "1.8.1", | ||
"@percy/config": "1.8.1", | ||
"@percy/dom": "1.8.1", | ||
"@percy/logger": "1.8.1", | ||
"@percy/client": "1.9.0", | ||
"@percy/config": "1.9.0", | ||
"@percy/dom": "1.9.0", | ||
"@percy/logger": "1.9.0", | ||
"content-disposition": "^0.5.4", | ||
@@ -57,3 +57,3 @@ "cross-spawn": "^7.0.3", | ||
}, | ||
"gitHead": "497772c62e2fa2d763b350c40a0cfec918f7125f" | ||
"gitHead": "3332a2a63802c58848d0a5fbdd3c7aadc076212b" | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
152683
3365
+ Added@percy/client@1.9.0(transitive)
+ Added@percy/config@1.9.0(transitive)
+ Added@percy/dom@1.9.0(transitive)
+ Added@percy/env@1.9.0(transitive)
+ Added@percy/logger@1.9.0(transitive)
- Removed@percy/client@1.8.1(transitive)
- Removed@percy/config@1.8.1(transitive)
- Removed@percy/dom@1.8.1(transitive)
- Removed@percy/env@1.8.1(transitive)
- Removed@percy/logger@1.8.1(transitive)
Updated@percy/client@1.9.0
Updated@percy/config@1.9.0
Updated@percy/dom@1.9.0
Updated@percy/logger@1.9.0