creevey 0.9.0-beta.0 → 0.9.0-beta.2
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/lib/cjs/client/addon/withCreevey.js +18 -43
- package/lib/cjs/index.js +1 -1
- package/lib/cjs/server/config.js +1 -1
- package/lib/cjs/server/selenium/browser.js +1 -1
- package/lib/cjs/server/storybook/providers/hybrid.js +11 -6
- package/lib/cjs/server/{parser.js → testsFiles/parser.js} +1 -14
- package/lib/cjs/server/testsFiles/register.js +48 -0
- package/lib/cjs/shared.js +58 -41
- package/lib/esm/client/addon/withCreevey.js +19 -42
- package/lib/esm/index.js +1 -1
- package/lib/esm/server/config.js +1 -1
- package/lib/esm/server/selenium/browser.js +1 -1
- package/lib/esm/server/storybook/providers/hybrid.js +7 -6
- package/lib/esm/server/{parser.js → testsFiles/parser.js} +1 -14
- package/lib/esm/server/testsFiles/register.js +35 -0
- package/lib/esm/shared.js +56 -39
- package/lib/types/index.d.ts +0 -1
- package/lib/types/server/config.d.ts +1 -1
- package/lib/types/server/messages.d.ts +0 -1
- package/lib/types/server/{parser.d.ts → testsFiles/parser.d.ts} +1 -1
- package/lib/types/server/testsFiles/register.d.ts +2 -0
- package/lib/types/types.d.ts +3 -2
- package/package.json +5 -2
@@ -10,8 +10,6 @@ var Events = _interopRequireWildcard(require("@storybook/core-events"));
|
|
10
10
|
|
11
11
|
var polyfill = _interopRequireWildcard(require("event-source-polyfill"));
|
12
12
|
|
13
|
-
var _testingLibrary = require("@storybook/testing-library");
|
14
|
-
|
15
13
|
var _addons = require("@storybook/addons");
|
16
14
|
|
17
15
|
var _types = require("../../types");
|
@@ -24,14 +22,6 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
24
22
|
|
25
23
|
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; }
|
26
24
|
|
27
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
28
|
-
|
29
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
30
|
-
|
31
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
32
|
-
|
33
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
34
|
-
|
35
25
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
36
26
|
|
37
27
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
@@ -441,37 +431,23 @@ function withCreevey() {
|
|
441
431
|
window.__CREEVEY_INSERT_IGNORE_STYLES__ = insertIgnoreStyles;
|
442
432
|
window.__CREEVEY_REMOVE_IGNORE_STYLES__ = removeIgnoreStyles;
|
443
433
|
window.__CREEVEY_HAS_PLAY_COMPLETED_YET__ = hasPlayCompletedYet;
|
444
|
-
window.__CREEVEY_SET_READY_FOR_CAPTURE__ = _types.noop;
|
434
|
+
window.__CREEVEY_SET_READY_FOR_CAPTURE__ = _types.noop; // const queryAllByQuery = (container: HTMLElement, query: string): HTMLElement[] =>
|
435
|
+
// [...container.querySelectorAll(query)].filter((e) => e instanceof HTMLElement) as HTMLElement[];
|
436
|
+
// const getMultipleError = (_: Element | null, query: string): string => `Found multiple elements by query: ${query}`;
|
437
|
+
// const getMissingError = (_: Element | null, query: string): string => `Unable to find an element by query: ${query}`;
|
438
|
+
// const [queryByQuery, getAllByQuery, getByQuery, findAllByQuery, findByQuery] = buildQueries(
|
439
|
+
// queryAllByQuery,
|
440
|
+
// getMultipleError,
|
441
|
+
// getMissingError,
|
442
|
+
// );
|
443
|
+
// const queries = {
|
444
|
+
// queryByQuery,
|
445
|
+
// getAllByQuery,
|
446
|
+
// getByQuery,
|
447
|
+
// findAllByQuery,
|
448
|
+
// findByQuery,
|
449
|
+
// };
|
445
450
|
|
446
|
-
var queryAllByQuery = function queryAllByQuery(container, query) {
|
447
|
-
return _toConsumableArray(container.querySelectorAll(query)).filter(function (e) {
|
448
|
-
return e instanceof HTMLElement;
|
449
|
-
});
|
450
|
-
};
|
451
|
-
|
452
|
-
var getMultipleError = function getMultipleError(_, query) {
|
453
|
-
return "Found multiple elements by query: ".concat(query);
|
454
|
-
};
|
455
|
-
|
456
|
-
var getMissingError = function getMissingError(_, query) {
|
457
|
-
return "Unable to find an element by query: ".concat(query);
|
458
|
-
};
|
459
|
-
|
460
|
-
var _buildQueries = (0, _testingLibrary.buildQueries)(queryAllByQuery, getMultipleError, getMissingError),
|
461
|
-
_buildQueries2 = _slicedToArray(_buildQueries, 5),
|
462
|
-
queryByQuery = _buildQueries2[0],
|
463
|
-
getAllByQuery = _buildQueries2[1],
|
464
|
-
getByQuery = _buildQueries2[2],
|
465
|
-
findAllByQuery = _buildQueries2[3],
|
466
|
-
findByQuery = _buildQueries2[4];
|
467
|
-
|
468
|
-
var queries = {
|
469
|
-
queryByQuery: queryByQuery,
|
470
|
-
getAllByQuery: getAllByQuery,
|
471
|
-
getByQuery: getByQuery,
|
472
|
-
findAllByQuery: findAllByQuery,
|
473
|
-
findByQuery: findByQuery
|
474
|
-
};
|
475
451
|
return (0, _addons.makeDecorator)({
|
476
452
|
name: 'withCreevey',
|
477
453
|
parameterName: 'creevey',
|
@@ -490,9 +466,8 @@ function withCreevey() {
|
|
490
466
|
|
491
467
|
case captureElement === null:
|
492
468
|
return Promise.resolve(document.documentElement);
|
493
|
-
|
494
|
-
|
495
|
-
return (0, _testingLibrary.within)(context.canvasElement, queries).findByQuery(captureElement);
|
469
|
+
// case typeof captureElement == 'string':
|
470
|
+
// return within<typeof queries>(context.canvasElement, queries).findByQuery(captureElement as string);
|
496
471
|
|
497
472
|
case typeof captureElement == 'function':
|
498
473
|
// TODO Define type for it
|
package/lib/cjs/index.js
CHANGED
@@ -47,7 +47,7 @@ var _nodejs = require("./server/storybook/providers/nodejs");
|
|
47
47
|
|
48
48
|
var _hybrid = require("./server/storybook/providers/hybrid");
|
49
49
|
|
50
|
-
var _parser = require("./server/parser");
|
50
|
+
var _parser = require("./server/testsFiles/parser");
|
51
51
|
|
52
52
|
Object.keys(_parser).forEach(function (key) {
|
53
53
|
if (key === "default" || key === "__esModule") return;
|
package/lib/cjs/server/config.js
CHANGED
@@ -433,7 +433,7 @@ async function resolveCreeveyHost(browser, port) {
|
|
433
433
|
return new Promise(function (resolve, reject) {
|
434
434
|
setTimeout(reject, 10000); // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
|
435
435
|
|
436
|
-
fetch('
|
436
|
+
fetch('//' + host + ':' + port + '/ping').then(resolve).catch(reject);
|
437
437
|
}).then(function (response) {
|
438
438
|
return response.text();
|
439
439
|
}).then(function (pong) {
|
@@ -11,7 +11,7 @@ var _browser = require("./browser");
|
|
11
11
|
|
12
12
|
var _logger = require("../../logger");
|
13
13
|
|
14
|
-
var _parser = _interopRequireDefault(require("../../parser"));
|
14
|
+
var _parser = _interopRequireDefault(require("../../testsFiles/parser"));
|
15
15
|
|
16
16
|
var _utils = require("../../../server/utils");
|
17
17
|
|
@@ -19,6 +19,10 @@ var _shared = require("../../../shared");
|
|
19
19
|
|
20
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
21
21
|
|
22
|
+
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); }
|
23
|
+
|
24
|
+
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; }
|
25
|
+
|
22
26
|
async function loadStories(_config, {
|
23
27
|
port
|
24
28
|
}, storiesListener) {
|
@@ -54,16 +58,17 @@ async function loadStories(_config, {
|
|
54
58
|
return stories;
|
55
59
|
}
|
56
60
|
|
57
|
-
function parseParams(config, listener) {
|
58
|
-
if (!config.
|
61
|
+
async function parseParams(config, listener) {
|
62
|
+
if (!config.testsDir) {
|
59
63
|
return Promise.resolve({});
|
60
64
|
}
|
61
65
|
|
62
|
-
const testFiles = (0, _utils.readDirRecursive)(config.
|
63
|
-
var _config$
|
66
|
+
const testFiles = (0, _utils.readDirRecursive)(config.testsDir).filter(file => {
|
67
|
+
var _config$testsRegex;
|
64
68
|
|
65
|
-
return (_config$
|
69
|
+
return (_config$testsRegex = config.testsRegex) === null || _config$testsRegex === void 0 ? void 0 : _config$testsRegex.test(file);
|
66
70
|
});
|
71
|
+
await (await Promise.resolve().then(() => _interopRequireWildcard(require('../../testsFiles/register')))).default(config);
|
67
72
|
|
68
73
|
if (listener) {
|
69
74
|
_chokidar.default.watch(testFiles).on('change', filePath => {
|
@@ -13,20 +13,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
13
13
|
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; }
|
14
14
|
|
15
15
|
async function parse(files) {
|
16
|
-
result = {};
|
17
|
-
|
18
|
-
(await Promise.resolve().then(() => _interopRequireWildcard(require('@babel/register')))).default({
|
19
|
-
babelrc: false,
|
20
|
-
rootMode: 'upward-optional',
|
21
|
-
ignore: [/node_modules/],
|
22
|
-
extensions: ['.js', '.jsx', '.ts', '.tsx'],
|
23
|
-
plugins: [['@babel/plugin-transform-runtime']],
|
24
|
-
presets: ['@babel/preset-typescript', ['@babel/preset-env', {
|
25
|
-
targets: {
|
26
|
-
node: '10'
|
27
|
-
}
|
28
|
-
}]]
|
29
|
-
});
|
16
|
+
result = {};
|
30
17
|
await Promise.all(files.map(async file => Promise.resolve(`${file}`).then(s => _interopRequireWildcard(require(s)))));
|
31
18
|
return result;
|
32
19
|
}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = register;
|
7
|
+
|
8
|
+
var _pirates = require("pirates");
|
9
|
+
|
10
|
+
var _getTsconfig = require("get-tsconfig");
|
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
|
+
async function register(config) {
|
17
|
+
(0, _pirates.addHook)(() => '', {
|
18
|
+
exts: ['.jpg', '.jpeg', '.png', '.gif', '.eot', '.otf', '.svg', '.ttf', '.woff', '.woff2', '.css', '.less', '.scss', '.styl'],
|
19
|
+
ignoreNodeModules: false
|
20
|
+
});
|
21
|
+
const {
|
22
|
+
path: tsConfigPath
|
23
|
+
} = (0, _getTsconfig.getTsconfig)(config.tsConfig) || {}; // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
|
24
|
+
|
25
|
+
(await Promise.resolve().then(() => _interopRequireWildcard(require('@babel/register')))).default(config.babelOptions({
|
26
|
+
babelrc: false,
|
27
|
+
rootMode: 'upward-optional',
|
28
|
+
ignore: [/node_modules/],
|
29
|
+
extensions: ['.js', '.jsx', '.ts', '.tsx'],
|
30
|
+
parserOpts: {
|
31
|
+
sourceType: 'module',
|
32
|
+
plugins: ['jsx', 'typescript']
|
33
|
+
},
|
34
|
+
presets: ['@babel/preset-typescript', ['@babel/preset-env', {
|
35
|
+
targets: {
|
36
|
+
node: '10'
|
37
|
+
},
|
38
|
+
modules: 'commonjs'
|
39
|
+
}]],
|
40
|
+
plugins: [['@babel/plugin-transform-runtime'], ['babel-plugin-tsconfig-paths', {
|
41
|
+
tsconfig: tsConfigPath
|
42
|
+
}]]
|
43
|
+
}));
|
44
|
+
(await Promise.resolve().then(() => _interopRequireWildcard(require('ts-node')))).register({
|
45
|
+
project: tsConfigPath,
|
46
|
+
transpileOnly: true
|
47
|
+
});
|
48
|
+
}
|
package/lib/cjs/shared.js
CHANGED
@@ -7,23 +7,37 @@ exports.deserializeStory = exports.deserializeRawStories = exports.serializeRawS
|
|
7
7
|
|
8
8
|
var _lodash = require("lodash");
|
9
9
|
|
10
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
11
|
+
|
12
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
13
|
+
|
14
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
15
|
+
|
16
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
17
|
+
|
10
18
|
// NOTE: Copy-paste from storybook/api
|
11
|
-
|
12
|
-
(
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
19
|
+
var combineParameters = function combineParameters() {
|
20
|
+
for (var _len = arguments.length, parameterSets = new Array(_len), _key = 0; _key < _len; _key++) {
|
21
|
+
parameterSets[_key] = arguments[_key];
|
22
|
+
}
|
23
|
+
|
24
|
+
return (// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
25
|
+
_lodash.mergeWith.apply(void 0, [{}].concat(parameterSets, [function (_, srcValue) {
|
26
|
+
// Treat arrays as scalars:
|
27
|
+
if (Array.isArray(srcValue)) return srcValue;
|
28
|
+
return undefined;
|
29
|
+
}]))
|
30
|
+
);
|
31
|
+
}; // NOTE: Copy-paste from storybook/api
|
17
32
|
|
18
33
|
|
19
34
|
exports.combineParameters = combineParameters;
|
20
35
|
|
21
|
-
|
22
|
-
globalParameters,
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
return (0, _lodash.mapValues)(stories, storyData => {
|
36
|
+
var denormalizeStoryParameters = function denormalizeStoryParameters(_ref) {
|
37
|
+
var globalParameters = _ref.globalParameters,
|
38
|
+
kindParameters = _ref.kindParameters,
|
39
|
+
stories = _ref.stories;
|
40
|
+
return (0, _lodash.mapValues)(stories, function (storyData) {
|
27
41
|
var _globalParameters$cre, _kindParameters$story, _kindParameters$story2;
|
28
42
|
|
29
43
|
storyData.parameters.creevey = combineParameters((_globalParameters$cre = globalParameters.creevey) !== null && _globalParameters$cre !== void 0 ? _globalParameters$cre : {}, (_kindParameters$story = (_kindParameters$story2 = kindParameters[storyData.kind]) === null || _kindParameters$story2 === void 0 ? void 0 : _kindParameters$story2.creevey) !== null && _kindParameters$story !== void 0 ? _kindParameters$story : {}, storyData.parameters.creevey);
|
@@ -33,41 +47,38 @@ const denormalizeStoryParameters = ({
|
|
33
47
|
|
34
48
|
exports.denormalizeStoryParameters = denormalizeStoryParameters;
|
35
49
|
|
36
|
-
|
37
|
-
return
|
50
|
+
var isSerializedRegExp = function isSerializedRegExp(exp) {
|
51
|
+
return _typeof(exp) === 'object' && exp !== null && Reflect.get(exp, '__regexp') === true;
|
38
52
|
};
|
39
53
|
|
40
54
|
exports.isSerializedRegExp = isSerializedRegExp;
|
41
55
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
flags
|
46
|
-
} = exp;
|
56
|
+
var serializeRegExp = function serializeRegExp(exp) {
|
57
|
+
var source = exp.source,
|
58
|
+
flags = exp.flags;
|
47
59
|
return {
|
48
60
|
__regexp: true,
|
49
|
-
source,
|
50
|
-
flags
|
61
|
+
source: source,
|
62
|
+
flags: flags
|
51
63
|
};
|
52
64
|
};
|
53
65
|
|
54
66
|
exports.serializeRegExp = serializeRegExp;
|
55
67
|
|
56
|
-
|
57
|
-
source,
|
58
|
-
|
59
|
-
}) => {
|
68
|
+
var deserializeRegExp = function deserializeRegExp(_ref2) {
|
69
|
+
var source = _ref2.source,
|
70
|
+
flags = _ref2.flags;
|
60
71
|
return new RegExp(source, flags);
|
61
72
|
};
|
62
73
|
|
63
74
|
exports.deserializeRegExp = deserializeRegExp;
|
64
75
|
|
65
|
-
|
66
|
-
return (0, _lodash.mapValues)(stories, storyData
|
67
|
-
|
76
|
+
var serializeRawStories = function serializeRawStories(stories) {
|
77
|
+
return (0, _lodash.mapValues)(stories, function (storyData) {
|
78
|
+
var creevey = storyData.parameters.creevey;
|
68
79
|
|
69
|
-
if (
|
70
|
-
creevey.skip = (0, _lodash.cloneDeepWith)(creevey.skip, value
|
80
|
+
if (creevey !== null && creevey !== void 0 && creevey.skip) {
|
81
|
+
creevey.skip = (0, _lodash.cloneDeepWith)(creevey.skip, function (value) {
|
71
82
|
if (value instanceof RegExp) {
|
72
83
|
return serializeRegExp(value);
|
73
84
|
}
|
@@ -82,22 +93,28 @@ const serializeRawStories = stories => {
|
|
82
93
|
|
83
94
|
exports.serializeRawStories = serializeRawStories;
|
84
95
|
|
85
|
-
|
96
|
+
var deserializeRawStories = function deserializeRawStories(stories) {
|
86
97
|
return (0, _lodash.mapValues)(stories, deserializeStory);
|
87
98
|
};
|
88
99
|
|
89
100
|
exports.deserializeRawStories = deserializeRawStories;
|
90
101
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
if (
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
102
|
+
var deserializeStory = function deserializeStory(story) {
|
103
|
+
var creevey = story.parameters.creevey;
|
104
|
+
|
105
|
+
if (creevey !== null && creevey !== void 0 && creevey.skip) {
|
106
|
+
return _objectSpread(_objectSpread({}, story), {}, {
|
107
|
+
parameters: _objectSpread(_objectSpread({}, story.parameters), {}, {
|
108
|
+
creevey: _objectSpread(_objectSpread({}, creevey), {}, {
|
109
|
+
skip: (0, _lodash.cloneDeepWith)(creevey.skip, function (value) {
|
110
|
+
if (isSerializedRegExp(value)) {
|
111
|
+
return deserializeRegExp(value);
|
112
|
+
}
|
113
|
+
|
114
|
+
return undefined;
|
115
|
+
})
|
116
|
+
})
|
117
|
+
})
|
101
118
|
});
|
102
119
|
}
|
103
120
|
|
@@ -1,11 +1,3 @@
|
|
1
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
2
|
-
|
3
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
4
|
-
|
5
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
6
|
-
|
7
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
8
|
-
|
9
1
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
10
2
|
|
11
3
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
@@ -26,7 +18,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
|
|
26
18
|
|
27
19
|
import * as Events from '@storybook/core-events';
|
28
20
|
import * as polyfill from 'event-source-polyfill';
|
29
|
-
import { buildQueries, within } from '@storybook/testing-library';
|
21
|
+
// import { buildQueries, within } from '@storybook/testing-library';
|
30
22
|
import { addons, makeDecorator } from '@storybook/addons';
|
31
23
|
import { isObject, noop } from '../../types';
|
32
24
|
import { denormalizeStoryParameters, serializeRawStories } from '../../shared';
|
@@ -418,37 +410,23 @@ export function withCreevey() {
|
|
418
410
|
window.__CREEVEY_INSERT_IGNORE_STYLES__ = insertIgnoreStyles;
|
419
411
|
window.__CREEVEY_REMOVE_IGNORE_STYLES__ = removeIgnoreStyles;
|
420
412
|
window.__CREEVEY_HAS_PLAY_COMPLETED_YET__ = hasPlayCompletedYet;
|
421
|
-
window.__CREEVEY_SET_READY_FOR_CAPTURE__ = noop;
|
413
|
+
window.__CREEVEY_SET_READY_FOR_CAPTURE__ = noop; // const queryAllByQuery = (container: HTMLElement, query: string): HTMLElement[] =>
|
414
|
+
// [...container.querySelectorAll(query)].filter((e) => e instanceof HTMLElement) as HTMLElement[];
|
415
|
+
// const getMultipleError = (_: Element | null, query: string): string => `Found multiple elements by query: ${query}`;
|
416
|
+
// const getMissingError = (_: Element | null, query: string): string => `Unable to find an element by query: ${query}`;
|
417
|
+
// const [queryByQuery, getAllByQuery, getByQuery, findAllByQuery, findByQuery] = buildQueries(
|
418
|
+
// queryAllByQuery,
|
419
|
+
// getMultipleError,
|
420
|
+
// getMissingError,
|
421
|
+
// );
|
422
|
+
// const queries = {
|
423
|
+
// queryByQuery,
|
424
|
+
// getAllByQuery,
|
425
|
+
// getByQuery,
|
426
|
+
// findAllByQuery,
|
427
|
+
// findByQuery,
|
428
|
+
// };
|
422
429
|
|
423
|
-
var queryAllByQuery = function queryAllByQuery(container, query) {
|
424
|
-
return _toConsumableArray(container.querySelectorAll(query)).filter(function (e) {
|
425
|
-
return e instanceof HTMLElement;
|
426
|
-
});
|
427
|
-
};
|
428
|
-
|
429
|
-
var getMultipleError = function getMultipleError(_, query) {
|
430
|
-
return "Found multiple elements by query: ".concat(query);
|
431
|
-
};
|
432
|
-
|
433
|
-
var getMissingError = function getMissingError(_, query) {
|
434
|
-
return "Unable to find an element by query: ".concat(query);
|
435
|
-
};
|
436
|
-
|
437
|
-
var _buildQueries = buildQueries(queryAllByQuery, getMultipleError, getMissingError),
|
438
|
-
_buildQueries2 = _slicedToArray(_buildQueries, 5),
|
439
|
-
queryByQuery = _buildQueries2[0],
|
440
|
-
getAllByQuery = _buildQueries2[1],
|
441
|
-
getByQuery = _buildQueries2[2],
|
442
|
-
findAllByQuery = _buildQueries2[3],
|
443
|
-
findByQuery = _buildQueries2[4];
|
444
|
-
|
445
|
-
var queries = {
|
446
|
-
queryByQuery: queryByQuery,
|
447
|
-
getAllByQuery: getAllByQuery,
|
448
|
-
getByQuery: getByQuery,
|
449
|
-
findAllByQuery: findAllByQuery,
|
450
|
-
findByQuery: findByQuery
|
451
|
-
};
|
452
430
|
return makeDecorator({
|
453
431
|
name: 'withCreevey',
|
454
432
|
parameterName: 'creevey',
|
@@ -467,9 +445,8 @@ export function withCreevey() {
|
|
467
445
|
|
468
446
|
case captureElement === null:
|
469
447
|
return Promise.resolve(document.documentElement);
|
470
|
-
|
471
|
-
|
472
|
-
return within(context.canvasElement, queries).findByQuery(captureElement);
|
448
|
+
// case typeof captureElement == 'string':
|
449
|
+
// return within<typeof queries>(context.canvasElement, queries).findByQuery(captureElement as string);
|
473
450
|
|
474
451
|
case typeof captureElement == 'function':
|
475
452
|
// TODO Define type for it
|
package/lib/esm/index.js
CHANGED
@@ -4,4 +4,4 @@ export * from './types'; // export * from './client/addon/withCreevey';
|
|
4
4
|
export { loadStories as browserStoriesProvider } from './server/storybook/providers/browser';
|
5
5
|
export { loadStories as nodejsStoriesProvider } from './server/storybook/providers/nodejs';
|
6
6
|
export { loadStories as hybridStoriesProvider } from './server/storybook/providers/hybrid';
|
7
|
-
export * from './server/parser';
|
7
|
+
export * from './server/testsFiles/parser';
|
package/lib/esm/server/config.js
CHANGED
@@ -405,7 +405,7 @@ async function resolveCreeveyHost(browser, port) {
|
|
405
405
|
return new Promise(function (resolve, reject) {
|
406
406
|
setTimeout(reject, 10000); // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
|
407
407
|
|
408
|
-
fetch('
|
408
|
+
fetch('//' + host + ':' + port + '/ping').then(resolve).catch(reject);
|
409
409
|
}).then(function (response) {
|
410
410
|
return response.text();
|
411
411
|
}).then(function (pong) {
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import chokidar from 'chokidar';
|
2
2
|
import { loadStories as browserProvider } from './browser';
|
3
3
|
import { logger } from '../../logger';
|
4
|
-
import parse from '../../parser';
|
4
|
+
import parse from '../../testsFiles/parser';
|
5
5
|
import { readDirRecursive } from '../../../server/utils';
|
6
6
|
import { combineParameters } from '../../../shared';
|
7
7
|
export async function loadStories(_config, {
|
@@ -39,16 +39,17 @@ export async function loadStories(_config, {
|
|
39
39
|
return stories;
|
40
40
|
}
|
41
41
|
|
42
|
-
function parseParams(config, listener) {
|
43
|
-
if (!config.
|
42
|
+
async function parseParams(config, listener) {
|
43
|
+
if (!config.testsDir) {
|
44
44
|
return Promise.resolve({});
|
45
45
|
}
|
46
46
|
|
47
|
-
const testFiles = readDirRecursive(config.
|
48
|
-
var _config$
|
47
|
+
const testFiles = readDirRecursive(config.testsDir).filter(file => {
|
48
|
+
var _config$testsRegex;
|
49
49
|
|
50
|
-
return (_config$
|
50
|
+
return (_config$testsRegex = config.testsRegex) === null || _config$testsRegex === void 0 ? void 0 : _config$testsRegex.test(file);
|
51
51
|
});
|
52
|
+
await (await import('../../testsFiles/register')).default(config);
|
52
53
|
|
53
54
|
if (listener) {
|
54
55
|
chokidar.watch(testFiles).on('change', filePath => {
|
@@ -1,19 +1,6 @@
|
|
1
1
|
import { toId, storyNameFromExport } from '@storybook/csf';
|
2
2
|
export default async function parse(files) {
|
3
|
-
result = {};
|
4
|
-
|
5
|
-
(await import('@babel/register')).default({
|
6
|
-
babelrc: false,
|
7
|
-
rootMode: 'upward-optional',
|
8
|
-
ignore: [/node_modules/],
|
9
|
-
extensions: ['.js', '.jsx', '.ts', '.tsx'],
|
10
|
-
plugins: [['@babel/plugin-transform-runtime']],
|
11
|
-
presets: ['@babel/preset-typescript', ['@babel/preset-env', {
|
12
|
-
targets: {
|
13
|
-
node: '10'
|
14
|
-
}
|
15
|
-
}]]
|
16
|
-
});
|
3
|
+
result = {};
|
17
4
|
await Promise.all(files.map(async file => import(file)));
|
18
5
|
return result;
|
19
6
|
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import { addHook } from 'pirates';
|
2
|
+
import { getTsconfig } from 'get-tsconfig';
|
3
|
+
export default async function register(config) {
|
4
|
+
addHook(() => '', {
|
5
|
+
exts: ['.jpg', '.jpeg', '.png', '.gif', '.eot', '.otf', '.svg', '.ttf', '.woff', '.woff2', '.css', '.less', '.scss', '.styl'],
|
6
|
+
ignoreNodeModules: false
|
7
|
+
});
|
8
|
+
const {
|
9
|
+
path: tsConfigPath
|
10
|
+
} = getTsconfig(config.tsConfig) || {}; // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
|
11
|
+
|
12
|
+
(await import('@babel/register')).default(config.babelOptions({
|
13
|
+
babelrc: false,
|
14
|
+
rootMode: 'upward-optional',
|
15
|
+
ignore: [/node_modules/],
|
16
|
+
extensions: ['.js', '.jsx', '.ts', '.tsx'],
|
17
|
+
parserOpts: {
|
18
|
+
sourceType: 'module',
|
19
|
+
plugins: ['jsx', 'typescript']
|
20
|
+
},
|
21
|
+
presets: ['@babel/preset-typescript', ['@babel/preset-env', {
|
22
|
+
targets: {
|
23
|
+
node: '10'
|
24
|
+
},
|
25
|
+
modules: 'commonjs'
|
26
|
+
}]],
|
27
|
+
plugins: [['@babel/plugin-transform-runtime'], ['babel-plugin-tsconfig-paths', {
|
28
|
+
tsconfig: tsConfigPath
|
29
|
+
}]]
|
30
|
+
}));
|
31
|
+
(await import('ts-node')).register({
|
32
|
+
project: tsConfigPath,
|
33
|
+
transpileOnly: true
|
34
|
+
});
|
35
|
+
}
|
package/lib/esm/shared.js
CHANGED
@@ -1,50 +1,61 @@
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
2
|
+
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
4
|
+
|
5
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
6
|
+
|
7
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
8
|
+
|
1
9
|
import { mapValues, mergeWith, cloneDeepWith } from 'lodash';
|
2
10
|
// NOTE: Copy-paste from storybook/api
|
3
|
-
export
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
11
|
+
export var combineParameters = function combineParameters() {
|
12
|
+
for (var _len = arguments.length, parameterSets = new Array(_len), _key = 0; _key < _len; _key++) {
|
13
|
+
parameterSets[_key] = arguments[_key];
|
14
|
+
}
|
15
|
+
|
16
|
+
return (// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
17
|
+
mergeWith.apply(void 0, [{}].concat(parameterSets, [function (_, srcValue) {
|
18
|
+
// Treat arrays as scalars:
|
19
|
+
if (Array.isArray(srcValue)) return srcValue;
|
20
|
+
return undefined;
|
21
|
+
}]))
|
22
|
+
);
|
23
|
+
}; // NOTE: Copy-paste from storybook/api
|
9
24
|
|
10
|
-
export
|
11
|
-
globalParameters,
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
return mapValues(stories, storyData => {
|
25
|
+
export var denormalizeStoryParameters = function denormalizeStoryParameters(_ref) {
|
26
|
+
var globalParameters = _ref.globalParameters,
|
27
|
+
kindParameters = _ref.kindParameters,
|
28
|
+
stories = _ref.stories;
|
29
|
+
return mapValues(stories, function (storyData) {
|
16
30
|
var _globalParameters$cre, _kindParameters$story, _kindParameters$story2;
|
17
31
|
|
18
32
|
storyData.parameters.creevey = combineParameters((_globalParameters$cre = globalParameters.creevey) !== null && _globalParameters$cre !== void 0 ? _globalParameters$cre : {}, (_kindParameters$story = (_kindParameters$story2 = kindParameters[storyData.kind]) === null || _kindParameters$story2 === void 0 ? void 0 : _kindParameters$story2.creevey) !== null && _kindParameters$story !== void 0 ? _kindParameters$story : {}, storyData.parameters.creevey);
|
19
33
|
return storyData;
|
20
34
|
});
|
21
35
|
};
|
22
|
-
export
|
23
|
-
return
|
36
|
+
export var isSerializedRegExp = function isSerializedRegExp(exp) {
|
37
|
+
return _typeof(exp) === 'object' && exp !== null && Reflect.get(exp, '__regexp') === true;
|
24
38
|
};
|
25
|
-
export
|
26
|
-
|
27
|
-
|
28
|
-
flags
|
29
|
-
} = exp;
|
39
|
+
export var serializeRegExp = function serializeRegExp(exp) {
|
40
|
+
var source = exp.source,
|
41
|
+
flags = exp.flags;
|
30
42
|
return {
|
31
43
|
__regexp: true,
|
32
|
-
source,
|
33
|
-
flags
|
44
|
+
source: source,
|
45
|
+
flags: flags
|
34
46
|
};
|
35
47
|
};
|
36
|
-
export
|
37
|
-
source,
|
38
|
-
|
39
|
-
}) => {
|
48
|
+
export var deserializeRegExp = function deserializeRegExp(_ref2) {
|
49
|
+
var source = _ref2.source,
|
50
|
+
flags = _ref2.flags;
|
40
51
|
return new RegExp(source, flags);
|
41
52
|
};
|
42
|
-
export
|
43
|
-
return mapValues(stories, storyData
|
44
|
-
|
53
|
+
export var serializeRawStories = function serializeRawStories(stories) {
|
54
|
+
return mapValues(stories, function (storyData) {
|
55
|
+
var creevey = storyData.parameters.creevey;
|
45
56
|
|
46
|
-
if (
|
47
|
-
creevey.skip = cloneDeepWith(creevey.skip, value
|
57
|
+
if (creevey !== null && creevey !== void 0 && creevey.skip) {
|
58
|
+
creevey.skip = cloneDeepWith(creevey.skip, function (value) {
|
48
59
|
if (value instanceof RegExp) {
|
49
60
|
return serializeRegExp(value);
|
50
61
|
}
|
@@ -56,19 +67,25 @@ export const serializeRawStories = stories => {
|
|
56
67
|
return storyData;
|
57
68
|
});
|
58
69
|
};
|
59
|
-
export
|
70
|
+
export var deserializeRawStories = function deserializeRawStories(stories) {
|
60
71
|
return mapValues(stories, deserializeStory);
|
61
72
|
};
|
62
|
-
export
|
63
|
-
|
73
|
+
export var deserializeStory = function deserializeStory(story) {
|
74
|
+
var creevey = story.parameters.creevey;
|
64
75
|
|
65
|
-
if (
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
76
|
+
if (creevey !== null && creevey !== void 0 && creevey.skip) {
|
77
|
+
return _objectSpread(_objectSpread({}, story), {}, {
|
78
|
+
parameters: _objectSpread(_objectSpread({}, story.parameters), {}, {
|
79
|
+
creevey: _objectSpread(_objectSpread({}, creevey), {}, {
|
80
|
+
skip: cloneDeepWith(creevey.skip, function (value) {
|
81
|
+
if (isSerializedRegExp(value)) {
|
82
|
+
return deserializeRegExp(value);
|
83
|
+
}
|
70
84
|
|
71
|
-
|
85
|
+
return undefined;
|
86
|
+
})
|
87
|
+
})
|
88
|
+
})
|
72
89
|
});
|
73
90
|
}
|
74
91
|
|
package/lib/types/index.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
import { Config, Options } from '../types';
|
2
2
|
export declare const defaultBrowser = "chrome";
|
3
|
-
export declare const defaultConfig: Omit<Config, 'gridUrl' | 'storiesProvider' | '
|
3
|
+
export declare const defaultConfig: Omit<Config, 'gridUrl' | 'storiesProvider' | 'testsDir' | 'tsConfig'>;
|
4
4
|
export declare function readConfig(options: Options): Promise<Config>;
|
@@ -1,4 +1,3 @@
|
|
1
|
-
/// <reference types="webpack-env" />
|
2
1
|
/// <reference types="node" />
|
3
2
|
import cluster from 'cluster';
|
4
3
|
import { WorkerMessage, StoriesMessage, TestMessage, WebpackMessage, DockerMessage, WorkerHandler, StoriesHandler, TestHandler, WebpackHandler, DockerHandler, ShutdownHandler } from '../types';
|
package/lib/types/types.d.ts
CHANGED
@@ -246,8 +246,9 @@ export interface Config {
|
|
246
246
|
* Specify platform for docker images
|
247
247
|
*/
|
248
248
|
dockerImagePlatform: string;
|
249
|
-
|
250
|
-
|
249
|
+
testsRegex?: RegExp;
|
250
|
+
testsDir?: string;
|
251
|
+
tsConfig?: string;
|
251
252
|
}
|
252
253
|
export declare type CreeveyConfig = Partial<Config>;
|
253
254
|
export interface Options {
|
package/package.json
CHANGED
@@ -13,7 +13,7 @@
|
|
13
13
|
"addon",
|
14
14
|
"test"
|
15
15
|
],
|
16
|
-
"version": "0.9.0-beta.
|
16
|
+
"version": "0.9.0-beta.2",
|
17
17
|
"bin": {
|
18
18
|
"creevey": "./lib/cjs/cli.js"
|
19
19
|
},
|
@@ -75,6 +75,7 @@
|
|
75
75
|
"@babel/parser": "^7.15.3",
|
76
76
|
"@babel/plugin-transform-runtime": "^7.15.0",
|
77
77
|
"@babel/preset-env": "^7.15.0",
|
78
|
+
"@babel/preset-typescript": "^7.15.0",
|
78
79
|
"@babel/register": "^7.15.3",
|
79
80
|
"@babel/runtime-corejs3": "^7.15.3",
|
80
81
|
"@babel/traverse": "^7.15.0",
|
@@ -88,6 +89,7 @@
|
|
88
89
|
"@types/chai": "^4.2.15",
|
89
90
|
"@types/selenium-webdriver": "^4.0.12",
|
90
91
|
"airbnb-js-shims": "^2.2.1",
|
92
|
+
"babel-plugin-tsconfig-paths": "^1.0.3",
|
91
93
|
"chai": "^4.3.4",
|
92
94
|
"chalk": "^4.1.2",
|
93
95
|
"chokidar": "^3.5.1",
|
@@ -95,6 +97,7 @@
|
|
95
97
|
"dockerode": "^3.2.1",
|
96
98
|
"event-source-polyfill": "1.0.25",
|
97
99
|
"find-cache-dir": "^3.3.1",
|
100
|
+
"get-tsconfig": "^4.2.0",
|
98
101
|
"global-jsdom": "8.3.0",
|
99
102
|
"jsdom": "^16.5.2",
|
100
103
|
"koa": "^2.13.1",
|
@@ -120,6 +123,7 @@
|
|
120
123
|
"schema-utils": "^3.0.0",
|
121
124
|
"selenium-webdriver": "^4.0.0-beta.3",
|
122
125
|
"shelljs": "^0.8.4",
|
126
|
+
"ts-node": "^10.9.1",
|
123
127
|
"tsconfig-paths": "^3.11.0",
|
124
128
|
"webpack-node-externals": "^3.0.0",
|
125
129
|
"ws": "^7.4.6"
|
@@ -129,7 +133,6 @@
|
|
129
133
|
"@babel/core": "^7.15.0",
|
130
134
|
"@babel/plugin-proposal-class-properties": "^7.13.0",
|
131
135
|
"@babel/preset-react": "^7.13.13",
|
132
|
-
"@babel/preset-typescript": "^7.15.0",
|
133
136
|
"@mdx-js/mdx": "^1.6.22",
|
134
137
|
"@storybook/addon-essentials": "^6.4.19",
|
135
138
|
"@storybook/addon-postcss": "^2.0.0",
|