UNPKG

creevey

Version:

creevey is a tool for automated visual testing, that tightly integrated with storybook

116 lines (93 loc) 13.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.shouldSkip = shouldSkip; exports.requireConfig = requireConfig; var _fs = _interopRequireDefault(require("fs")); var _path = _interopRequireDefault(require("path")); var _interpret = require("interpret"); var _types = require("./types"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // NOTE Patch @babel/register hook due issue https://github.com/gulpjs/interpret/issues/61 ['.ts', '.tsx'].forEach(patchExtension => { const moduleDescriptor = _interpret.jsVariants[patchExtension]; if (Array.isArray(moduleDescriptor)) { const babelCompiler = moduleDescriptor.find(ext => typeof ext == 'object' && ext.module == '@babel/register'); if (!babelCompiler) return; const oldRegister = babelCompiler.register; babelCompiler.register = function (hook) { oldRegister(options => // eslint-disable-next-line @typescript-eslint/ban-ts-ignore // @ts-ignore hook({ ...options, extensions: ['.es6', '.es', '.jsx', '.js', '.mjs', '.tsx', '.ts'] })); }; } }); function matchBy(pattern, value) { return typeof pattern == 'string' && pattern == value || Array.isArray(pattern) && pattern.includes(value) || pattern instanceof RegExp && pattern.test(value) || !(0, _types.isDefined)(pattern); } function shouldSkip(meta, skipOptions, test) { if (typeof skipOptions == 'string') { return skipOptions; } if (Array.isArray(skipOptions)) { return skipOptions.map(skipOption => shouldSkip(meta, skipOption, test)).find(Boolean) || false; } const { in: browsers, kinds, stories, tests, reason = true } = skipOptions; const { browser, kind, story } = meta; const skipByBrowser = matchBy(browsers, browser); const skipByKind = matchBy(kinds, kind); const skipByStory = matchBy(stories, story); const skipByTest = !(0, _types.isDefined)(test) || matchBy(tests, test); return skipByBrowser && skipByKind && skipByStory && skipByTest && reason; } function registerCompiler(moduleDescriptor) { if (moduleDescriptor) { if (typeof moduleDescriptor === 'string') { require(moduleDescriptor); } else if (!Array.isArray(moduleDescriptor)) { // eslint-disable-next-line @typescript-eslint/no-var-requires moduleDescriptor.register(require(moduleDescriptor.module)); } else { moduleDescriptor.find(extension => { try { registerCompiler(extension); return true; } catch (e) {// do nothing } }); } } } function requireConfig(configPath) { let ext = _path.default.extname(configPath); if (!ext || ext == '.config') { ext = Object.keys(_interpret.jsVariants).find(key => _fs.default.existsSync(`${configPath}${key}`)) || ext; configPath += ext; } try { require(configPath); } catch (error) { var _childModules$find; const childModules = require.cache[__filename].children; // NOTE If config load failed then the module of config can't have child modules if (((_childModules$find = childModules.find(child => child.filename == configPath)) === null || _childModules$find === void 0 ? void 0 : _childModules$find.children.length) != 0) { throw error; } registerCompiler(_interpret.jsVariants[ext]); } // eslint-disable-next-line @typescript-eslint/no-var-requires const configModule = require(configPath); return configModule && configModule.__esModule ? configModule.default : configModule; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy50cyJdLCJuYW1lcyI6WyJmb3JFYWNoIiwicGF0Y2hFeHRlbnNpb24iLCJtb2R1bGVEZXNjcmlwdG9yIiwianNWYXJpYW50cyIsIkFycmF5IiwiaXNBcnJheSIsImJhYmVsQ29tcGlsZXIiLCJmaW5kIiwiZXh0IiwibW9kdWxlIiwib2xkUmVnaXN0ZXIiLCJyZWdpc3RlciIsImhvb2siLCJvcHRpb25zIiwiZXh0ZW5zaW9ucyIsIm1hdGNoQnkiLCJwYXR0ZXJuIiwidmFsdWUiLCJpbmNsdWRlcyIsIlJlZ0V4cCIsInRlc3QiLCJzaG91bGRTa2lwIiwibWV0YSIsInNraXBPcHRpb25zIiwibWFwIiwic2tpcE9wdGlvbiIsIkJvb2xlYW4iLCJpbiIsImJyb3dzZXJzIiwia2luZHMiLCJzdG9yaWVzIiwidGVzdHMiLCJyZWFzb24iLCJicm93c2VyIiwia2luZCIsInN0b3J5Iiwic2tpcEJ5QnJvd3NlciIsInNraXBCeUtpbmQiLCJza2lwQnlTdG9yeSIsInNraXBCeVRlc3QiLCJyZWdpc3RlckNvbXBpbGVyIiwicmVxdWlyZSIsImV4dGVuc2lvbiIsImUiLCJyZXF1aXJlQ29uZmlnIiwiY29uZmlnUGF0aCIsInBhdGgiLCJleHRuYW1lIiwiT2JqZWN0Iiwia2V5cyIsImtleSIsImZzIiwiZXhpc3RzU3luYyIsImVycm9yIiwiY2hpbGRNb2R1bGVzIiwiY2FjaGUiLCJfX2ZpbGVuYW1lIiwiY2hpbGRyZW4iLCJjaGlsZCIsImZpbGVuYW1lIiwibGVuZ3RoIiwiY29uZmlnTW9kdWxlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFQTtBQUNBLENBQUMsS0FBRCxFQUFRLE1BQVIsRUFBZ0JBLE9BQWhCLENBQXlCQyxjQUFELElBQTRCO0FBQ2xELFFBQU1DLGdCQUFnQixHQUFHQyxzQkFBV0YsY0FBWCxDQUF6Qjs7QUFDQSxNQUFJRyxLQUFLLENBQUNDLE9B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c0Y7QUFDcEYsWUFBTVAsS0FBTjtBQUNEOztBQUNEYixJQUFBQSxnQkFBZ0IsQ0FBQ3JDLHNCQUFXSyxHQUFYLENBQUQsQ0FBaEI7QUFDRCxHQWZxRCxDQWlCdEQ7OztBQUNBLFFBQU1xRCxZQUFZLEdBQUdwQixPQUFPLENBQUNJLFVBQUQsQ0FBNUI7O0FBQ0EsU0FBT2dCLFlBQVksSUFBSUEsWUFBWSxDQUFDQyxVQUE3QixHQUEwQ0QsWUFBWSxDQUFDRSxPQUF2RCxHQUFpRUYsWUFBeEU7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IEV4dGVuc2lvbiwganNWYXJpYW50cywgRXh0ZW5zaW9uRGVzY3JpcHRvciwgSG9vayB9IGZyb20gJ2ludGVycHJldCc7XG5pbXBvcnQgeyBTa2lwT3B0aW9ucywgaXNEZWZpbmVkIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIE5PVEUgUGF0Y2ggQGJhYmVsL3JlZ2lzdGVyIGhvb2sgZHVlIGlzc3VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ndWxwanMvaW50ZXJwcmV0L2lzc3Vlcy82MVxuWycudHMnLCAnLnRzeCddLmZvckVhY2goKHBhdGNoRXh0ZW5zaW9uOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbW9kdWxlRGVzY3JpcHRvciA9IGpzVmFyaWFudHNbcGF0Y2hFeHRlbnNpb25dO1xuICBpZiAoQXJyYXkuaXNBcnJheShtb2R1bGVEZXNjcmlwdG9yKSkge1xuICAgIGNvbnN0IGJhYmVsQ29tcGlsZXIgPSBtb2R1bGVEZXNjcmlwdG9yLmZpbmQoXG4gICAgICAoZXh0KTogZXh0IGlzIEV4dGVuc2lvbkRlc2NyaXB0b3IgPT4gdHlwZW9mIGV4dCA9PSAnb2JqZWN0JyAmJiBleHQubW9kdWxlID09ICdAYmFiZWwvcmVnaXN0ZXInLFxuICAgICk7XG4gICAgaWYgKCFiYWJlbENvbXBpbGVyKSByZXR1cm47XG4gICAgY29uc3Qgb2xkUmVnaXN0ZXIgPSBiYWJlbENvbXBpbGVyLnJlZ2lzdGVyO1xuICAgIGJhYmVsQ29tcGlsZXIucmVnaXN0ZXIgPSBmdW5jdGlvbiAoaG9vaykge1xuICAgICAgb2xkUmVnaXN0ZXIoKChvcHRpb25zKSA9PlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1pZ25vcmVcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBob29rKHsgLi4ub3B0aW9ucywgZXh0ZW5zaW9uczogWycuZXM2JywgJy5lcycsICcuanN4JywgJy5qcycsICcubWpzJywgJy50c3gnLCAnLnRzJ10gfSkpIGFzIEhvb2spO1xuICAgIH07XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBtYXRjaEJ5KHBhdHRlcm46IHN0cmluZyB8IHN0cmluZ1tdIHwgUmVnRXhwIHwgdW5kZWZpbmVkLCB2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgKHR5cGVvZiBwYXR0ZXJuID09ICdzdHJpbmcnICYmIHBhdHRlcm4gPT0gdmFsdWUpIHx8XG4gICAgKEFycmF5LmlzQXJyYXkocGF0dGVybikgJiYgcGF0dGVybi5pbmNsdWRlcyh2YWx1ZSkpIHx8XG4gICAgKHBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHAgJiYgcGF0dGVybi50ZXN0KHZhbHVlKSkgfHxcbiAgICAhaXNEZWZpbmVkKHBhdHRlcm4pXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG91bGRTa2lwKFxuICBtZXRhOiB7XG4gICAgYnJvd3Nlcjogc3RyaW5nO1xuICAgIGtpbmQ6IHN0cmluZztcbiAgICBzdG9yeTogc3RyaW5nO1xuICB9LFxuICBza2lwT3B0aW9uczogU2tpcE9wdGlvbnMsXG4gIHRlc3Q/OiBzdHJpbmcsXG4pOiBzdHJpbmcgfCBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiBza2lwT3B0aW9ucyA9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBza2lwT3B0aW9ucztcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShza2lwT3B0aW9ucykpIHtcbiAgICByZXR1cm4gc2tpcE9wdGlvbnMubWFwKChza2lwT3B0aW9uKSA9PiBzaG91bGRTa2lwKG1ldGEsIHNraXBPcHRpb24sIHRlc3QpKS5maW5kKEJvb2xlYW4pIHx8IGZhbHNlO1xuICB9XG4gIGNvbnN0IHsgaW46IGJyb3dzZXJzLCBraW5kcywgc3RvcmllcywgdGVzdHMsIHJlYXNvbiA9IHRydWUgfSA9IHNraXBPcHRpb25zO1xuICBjb25zdCB7IGJyb3dzZXIsIGtpbmQsIHN0b3J5IH0gPSBtZXRhO1xuICBjb25zdCBza2lwQnlCcm93c2VyID0gbWF0Y2hCeShicm93c2VycywgYnJvd3Nlcik7XG4gIGNvbnN0IHNraXBCeUtpbmQgPSBtYXRjaEJ5KGtpbmRzLCBraW5kKTtcbiAgY29uc3Qgc2tpcEJ5U3RvcnkgPSBtYXRjaEJ5KHN0b3JpZXMsIHN0b3J5KTtcbiAgY29uc3Qgc2tpcEJ5VGVzdCA9ICFpc0RlZmluZWQodGVzdCkgfHwgbWF0Y2hCeSh0ZXN0cywgdGVzdCk7XG5cbiAgcmV0dXJuIHNraXBCeUJyb3dzZXIgJiYgc2tpcEJ5S2luZCAmJiBza2lwQnlTdG9yeSAmJiBza2lwQnlUZXN0ICYmIHJlYXNvbjtcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJDb21waWxlcihtb2R1bGVEZXNjcmlwdG9yOiBFeHRlbnNpb24gfCBudWxsKTogdm9pZCB7XG4gIGlmIChtb2R1bGVEZXNjcmlwdG9yKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVEZXNjcmlwdG9yID09PSAnc3RyaW5nJykge1xuICAgICAgcmVxdWlyZShtb2R1bGVEZXNjcmlwdG9yKTtcbiAgICB9IGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KG1vZHVsZURlc2NyaXB0b3IpKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuICAgICAgbW9kdWxlRGVzY3JpcHRvci5yZWdpc3RlcihyZXF1aXJlKG1vZHVsZURlc2NyaXB0b3IubW9kdWxlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1vZHVsZURlc2NyaXB0b3IuZmluZCgoZXh0ZW5zaW9uKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVnaXN0ZXJDb21waWxlcihleHRlbnNpb24pO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVDb25maWc8VD4oY29uZmlnUGF0aDogc3RyaW5nKTogVCB7XG4gIGxldCBleHQgPSBwYXRoLmV4dG5hbWUoY29uZmlnUGF0aCk7XG4gIGlmICghZXh0IHx8IGV4dCA9PSAnLmNvbmZpZycpIHtcbiAgICBleHQgPSBPYmplY3Qua2V5cyhqc1ZhcmlhbnRzKS5maW5kKChrZXkpID0+IGZzLmV4aXN0c1N5bmMoYCR7Y29uZmlnUGF0aH0ke2tleX1gKSkgfHwgZXh0O1xuICAgIGNvbmZpZ1BhdGggKz0gZXh0O1xuICB9XG4gIHRyeSB7XG4gICAgcmVxdWlyZShjb25maWdQYXRoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zdCBjaGlsZE1vZHVsZXMgPSByZXF1aXJlLmNhY2hlW19fZmlsZW5hbWVdLmNoaWxkcmVuO1xuICAgIC8vIE5PVEUgSWYgY29uZmlnIGxvYWQgZmFpbGVkIHRoZW4gdGhlIG1vZHVsZSBvZiBjb25maWcgY2FuJ3QgaGF2ZSBjaGlsZCBtb2R1bGVzXG4gICAgaWYgKGNoaWxkTW9kdWxlcy5maW5kKChjaGlsZCkgPT4gY2hpbGQuZmlsZW5hbWUgPT0gY29uZmlnUGF0aCk/LmNoaWxkcmVuLmxlbmd0aCAhPSAwKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgcmVnaXN0ZXJDb21waWxlcihqc1ZhcmlhbnRzW2V4dF0pO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXNcbiAgY29uc3QgY29uZmlnTW9kdWxlID0gcmVxdWlyZShjb25maWdQYXRoKTtcbiAgcmV0dXJuIGNvbmZpZ01vZHVsZSAmJiBjb25maWdNb2R1bGUuX19lc01vZHVsZSA/IGNvbmZpZ01vZHVsZS5kZWZhdWx0IDogY29uZmlnTW9kdWxlO1xufVxuIl19