123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548 |
- exports.id = 726;
- exports.ids = [726,85];
- exports.modules = {
- /***/ 94378:
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
- try {
- var util = __webpack_require__(31669);
- /* istanbul ignore next */
- if (typeof util.inherits !== 'function') throw '';
- module.exports = util.inherits;
- } catch (e) {
- /* istanbul ignore next */
- module.exports = __webpack_require__(35717);
- }
- /***/ }),
- /***/ 35717:
- /***/ ((module) => {
- if (typeof Object.create === 'function') {
- // implementation from standard node.js 'util' module
- module.exports = function inherits(ctor, superCtor) {
- if (superCtor) {
- ctor.super_ = superCtor
- ctor.prototype = Object.create(superCtor.prototype, {
- constructor: {
- value: ctor,
- enumerable: false,
- writable: true,
- configurable: true
- }
- })
- }
- };
- } else {
- // old school shim for old browsers
- module.exports = function inherits(ctor, superCtor) {
- if (superCtor) {
- ctor.super_ = superCtor
- var TempCtor = function () {}
- TempCtor.prototype = superCtor.prototype
- ctor.prototype = new TempCtor()
- ctor.prototype.constructor = ctor
- }
- }
- }
- /***/ }),
- /***/ 70919:
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- const process_command_args_1 = __webpack_require__(52369);
- const legacyError = __webpack_require__(79407);
- const drift_1 = __webpack_require__(26445);
- const get_iac_org_settings_1 = __webpack_require__(11693);
- const assert_iac_options_flag_1 = __webpack_require__(33111);
- const config_1 = __webpack_require__(25425);
- const analytics_1 = __webpack_require__(41519);
- const analytics = __webpack_require__(82744);
- const policy_1 = __webpack_require__(32615);
- const describe_required_argument_error_1 = __webpack_require__(37541);
- const help_1 = __webpack_require__(21085);
- const driftctl_1 = __webpack_require__(3659);
- exports.default = async (...args) => {
- var _a, _b;
- const { options } = process_command_args_1.processCommandArgs(...args);
- // Ensure that this describe command can only be runned when using `snyk iac describe`
- // Avoid `snyk describe` direct usage
- if (options.iac != true) {
- return legacyError('describe');
- }
- // Ensure that we are allowed to run that command
- // by checking the entitlement
- const orgPublicId = (_a = options.org) !== null && _a !== void 0 ? _a : config_1.default.org;
- const iacOrgSettings = await get_iac_org_settings_1.getIacOrgSettings(orgPublicId);
- if (!((_b = iacOrgSettings.entitlements) === null || _b === void 0 ? void 0 : _b.iacDrift)) {
- throw new assert_iac_options_flag_1.UnsupportedEntitlementCommandError('drift', 'iacDrift');
- }
- const policy = await policy_1.findAndLoadPolicy(process.cwd(), 'iac', options);
- const driftIgnore = drift_1.driftignoreFromPolicy(policy);
- try {
- const describe = await driftctl_1.runDriftCTL({
- options: { ...options, kind: 'describe' },
- driftIgnore: driftIgnore,
- });
- process.exitCode = describe.code;
- analytics.add('is-iac-drift', true);
- analytics.add('iac-drift-exit-code', describe.code);
- if (describe.code === driftctl_1.DCTL_EXIT_CODES.EXIT_ERROR) {
- throw new Error();
- }
- // Parse analysis JSON and add to analytics
- const analysis = drift_1.parseDriftAnalysisResults(describe.stdout);
- analytics_1.addIacDriftAnalytics(analysis, options);
- const output = await drift_1.processAnalysis(options, describe);
- process.stdout.write(output);
- }
- catch (e) {
- if (e instanceof describe_required_argument_error_1.DescribeRequiredArgumentError) {
- // when missing a required arg we will display help to explain
- const helpMsg = await help_1.default('iac', 'describe');
- console.log(helpMsg);
- }
- return Promise.reject(e);
- }
- };
- /***/ }),
- /***/ 21085:
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.findHelpFile = void 0;
- const fs = __webpack_require__(35747);
- const path = __webpack_require__(85622);
- const markdown_renderer_1 = __webpack_require__(99387);
- function findHelpFile(helpArgs, helpFolderPath = '../../help/cli-commands') {
- while (helpArgs.length > 0) {
- // cleanse the filename to only contain letters
- // aka: /\W/g but figured this was easier to read
- const file = `${helpArgs.join('-').replace(/[^a-z0-9-]/gi, '')}.md`;
- const testHelpAbsolutePath = path.resolve(__dirname, helpFolderPath, file);
- if (fs.existsSync(testHelpAbsolutePath)) {
- return testHelpAbsolutePath;
- }
- helpArgs = helpArgs.slice(0, -1);
- }
- return path.resolve(__dirname, helpFolderPath, `README.md`); // Default help file
- }
- exports.findHelpFile = findHelpFile;
- async function help(...args) {
- const helpArgs = args.filter((arg) => typeof arg === 'string');
- const helpFileAbsolutePath = findHelpFile(helpArgs);
- return markdown_renderer_1.renderMarkdown(fs.readFileSync(helpFileAbsolutePath, 'utf8'));
- }
- exports.default = help;
- /***/ }),
- /***/ 99387:
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.renderMarkdown = void 0;
- const marked_1 = __webpack_require__(30970);
- const chalk_1 = __webpack_require__(32589);
- const reflow_text_1 = __webpack_require__(67211);
- // stateful variable to control left-padding by header level
- let currentHeader = 1;
- const listItemSeparator = 'LISTITEMSEPARATOR'; // Helper string for rendering ListItems
- /**
- * @description get padding spaces depending on the last header level used
- * @returns string
- */
- function getLeftTextPadding() {
- return ' '.repeat(currentHeader === 1 || currentHeader === 2 ? 1 : currentHeader - 1);
- }
- /**
- * @description Reads current terminal width if available to limit column width for text-reflowing
- * @returns {number}
- */
- const defaultMaximumLineWidth = 100;
- function getIdealTextWidth(maximumLineWidth = defaultMaximumLineWidth) {
- if (typeof process.stdout.columns === 'number') {
- if (process.stdout.columns < maximumLineWidth) {
- return process.stdout.columns - getLeftTextPadding().length - 5;
- }
- }
- return maximumLineWidth - getLeftTextPadding().length;
- }
- // Marked custom renderer class
- const renderer = {
- em(text) {
- return chalk_1.default.italic(text);
- },
- strong(text) {
- return chalk_1.default.bold(text);
- },
- link(href, title, text) {
- // Don't render links to relative paths (like local files)
- if (href.startsWith('./') || !href.includes('://')) {
- return text;
- }
- const renderedLink = chalk_1.default.bold.blueBright(href);
- if (text && text !== href) {
- return `${text} ${renderedLink}`;
- }
- return renderedLink;
- },
- blockquote(quote) {
- return quote;
- },
- list(body, ordered, start) {
- return (body
- .split(listItemSeparator)
- .map((listItem, listItemIndex) => {
- const bulletPoint = ordered ? `${listItemIndex + start}. ` : '- ';
- return reflow_text_1.reflowText(listItem, getIdealTextWidth())
- .split('\n')
- .map((listItemLine, listItemLineIndex) => {
- if (!listItemLine) {
- return '';
- }
- return `${getLeftTextPadding()}${listItemLineIndex === 0 ? bulletPoint : ' '}${listItemLine}`;
- })
- .join('\n');
- })
- .join('\n') + '\n');
- },
- listitem(text) {
- return text + listItemSeparator;
- },
- paragraph(text) {
- return (reflow_text_1.reflowText(text, getIdealTextWidth())
- .split('\n')
- .map((s) => getLeftTextPadding() + chalk_1.default.reset() + s)
- .join('\n') + '\n\n');
- },
- codespan(text) {
- return chalk_1.default.italic.blueBright(`${text}`);
- },
- code(code) {
- return (code
- .split('\n')
- .map((s) => getLeftTextPadding() + chalk_1.default.reset() + s)
- .join('\n') + '\n\n');
- },
- heading(text, level) {
- currentHeader = level;
- let coloring;
- switch (level) {
- case 1:
- coloring = chalk_1.default.bold.underline;
- break;
- case 3:
- case 4:
- coloring = chalk_1.default;
- break;
- default:
- coloring = chalk_1.default.bold;
- break;
- }
- return `${' '.repeat(level === 1 ? 0 : currentHeader - 2)}${coloring(text)}\n`;
- },
- };
- marked_1.marked.use({ renderer });
- marked_1.marked.setOptions({
- mangle: false,
- });
- const htmlUnescapes = {
- '&': '&',
- '<': '<',
- '>': '>',
- '"': '"',
- ''': "'",
- '`': '`',
- ' ': '',
- };
- /**
- * @description Replace HTML entities with their non-encoded variant
- * @param {string} text
- * @returns {string}
- */
- function unescape(text) {
- Object.entries(htmlUnescapes).forEach(([escapedChar, unescapedChar]) => {
- const escapedCharRegExp = new RegExp(escapedChar, 'g');
- text = text.replace(escapedCharRegExp, unescapedChar);
- });
- return text;
- }
- function renderMarkdown(markdown) {
- return unescape(marked_1.marked.parse(markdown));
- }
- exports.renderMarkdown = renderMarkdown;
- /***/ }),
- /***/ 67211:
- /***/ ((__unused_webpack_module, exports) => {
- "use strict";
- /**
- Code in this file is adapted from mikaelbr/marked-terminal
- https://github.com/mikaelbr/marked-terminal/blob/7501b8bb24a5ed52ec7d9114d4aeefa14f1bf5e6/index.js#L234-L330
- MIT License
- Copyright (c) 2017 Mikael Brevik
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
- */
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.reflowText = void 0;
- // Compute length of str not including ANSI escape codes.
- // See http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
- function textLength(str) {
- // eslint-disable-next-line no-control-regex
- return str.replace(/\u001b\[(?:\d{1,3})(?:;\d{1,3})*m/g, '').length;
- }
- // Munge \n's and spaces in "text" so that the number of
- // characters between \n's is less than or equal to "width".
- function reflowText(text, width) {
- const HARD_RETURN = '\r|\n';
- const HARD_RETURN_GFM_RE = new RegExp(HARD_RETURN + '|<br ?/?>');
- const splitRe = HARD_RETURN_GFM_RE;
- const sections = text.split(splitRe);
- const reflowed = [];
- sections.forEach((section) => {
- // Split the section by escape codes so that we can
- // deal with them separately.
- // eslint-disable-next-line no-control-regex
- const fragments = section.split(/(\u001b\[(?:\d{1,3})(?:;\d{1,3})*m)/g);
- let column = 0;
- let currentLine = '';
- let lastWasEscapeChar = false;
- while (fragments.length) {
- const fragment = fragments[0];
- if (fragment === '') {
- fragments.splice(0, 1);
- lastWasEscapeChar = false;
- continue;
- }
- // This is an escape code - leave it whole and
- // move to the next fragment.
- if (!textLength(fragment)) {
- currentLine += fragment;
- fragments.splice(0, 1);
- lastWasEscapeChar = true;
- continue;
- }
- const words = fragment.split(/[ \t\n]+/);
- for (let i = 0; i < words.length; i++) {
- let word = words[i];
- let addSpace = column != 0;
- if (lastWasEscapeChar)
- addSpace = false;
- // If adding the new word overflows the required width
- if (column + word.length > width) {
- if (word.length <= width) {
- // If the new word is smaller than the required width
- // just add it at the beginning of a new line
- reflowed.push(currentLine);
- currentLine = word;
- column = word.length;
- }
- else {
- // If the new word is longer than the required width
- // split this word into smaller parts.
- const w = word.substr(0, width - column);
- if (addSpace)
- currentLine += ' ';
- currentLine += w;
- reflowed.push(currentLine);
- currentLine = '';
- column = 0;
- word = word.substr(w.length);
- while (word.length) {
- const w = word.substr(0, width);
- if (!w.length)
- break;
- if (w.length < width) {
- currentLine = w;
- column = w.length;
- break;
- }
- else {
- reflowed.push(w);
- word = word.substr(width);
- }
- }
- }
- }
- else {
- if (addSpace) {
- currentLine += ' ';
- column++;
- }
- currentLine += word;
- column += word.length;
- }
- lastWasEscapeChar = false;
- }
- fragments.splice(0, 1);
- }
- if (textLength(currentLine))
- reflowed.push(currentLine);
- });
- return reflowed.join('\n');
- }
- exports.reflowText = reflowText;
- /***/ }),
- /***/ 52369:
- /***/ ((__unused_webpack_module, exports) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.processCommandArgs = void 0;
- function processCommandArgs(...args) {
- let options = {};
- if (typeof args[args.length - 1] === 'object') {
- options = args.pop();
- }
- args = args.filter(Boolean);
- // For repository scanning, populate with default path (cwd) if no path given
- if (args.length === 0 && !options.docker) {
- args.unshift(process.cwd());
- }
- return { options, paths: args };
- }
- exports.processCommandArgs = processCommandArgs;
- /***/ }),
- /***/ 8820:
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.findAndLoadPolicy = void 0;
- const snykPolicyLib = __webpack_require__(70535);
- const debugModule = __webpack_require__(15158);
- const _1 = __webpack_require__(32615);
- const analytics = __webpack_require__(82744);
- const debug = debugModule('snyk');
- async function findAndLoadPolicy(root, scanType, options, pkg, scannedProjectFolder) {
- const isDocker = scanType === 'docker';
- const isNodeProject = ['npm', 'yarn'].includes(scanType);
- // monitor
- let policyLocations = [
- options['policy-path'] || scannedProjectFolder || root,
- ];
- if (isDocker) {
- policyLocations = policyLocations.filter((loc) => loc !== root);
- }
- else if (isNodeProject) {
- // TODO: pluckPolicies expects a package.json object to
- // find and apply policies in node_modules
- policyLocations = policyLocations.concat(_1.pluckPolicies(pkg));
- }
- debug('Potential policy locations found:', policyLocations);
- analytics.add('policies', policyLocations.length);
- analytics.add('policyLocations', policyLocations);
- if (policyLocations.length === 0) {
- return;
- }
- let policy;
- try {
- policy = await snykPolicyLib.load(policyLocations, options);
- }
- catch (err) {
- // note: inline catch, to handle error from .load
- // if the .snyk file wasn't found, it is fine
- if (err.code !== 'ENOENT' && err.code !== 'ENOTDIR') {
- throw err;
- }
- }
- return policy;
- }
- exports.findAndLoadPolicy = findAndLoadPolicy;
- /***/ }),
- /***/ 32615:
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var pluck_policies_1 = __webpack_require__(68247);
- Object.defineProperty(exports, "pluckPolicies", ({ enumerable: true, get: function () { return pluck_policies_1.pluckPolicies; } }));
- var find_and_load_policy_1 = __webpack_require__(8820);
- Object.defineProperty(exports, "findAndLoadPolicy", ({ enumerable: true, get: function () { return find_and_load_policy_1.findAndLoadPolicy; } }));
- /***/ }),
- /***/ 68247:
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.pluckPolicies = void 0;
- const flatten = __webpack_require__(5800);
- function pluckPolicies(pkg) {
- if (!pkg) {
- return [];
- }
- if (pkg.snyk) {
- return pkg.snyk;
- }
- if (!pkg.dependencies) {
- return [];
- }
- return flatten(Object.keys(pkg.dependencies)
- .map((name) => pluckPolicies(pkg.dependencies[name]))
- .filter(Boolean));
- }
- exports.pluckPolicies = pluckPolicies;
- /***/ })
- };
- ;
- //# sourceMappingURL=726.index.js.map
|