@storybook/addon-svelte-csf 3.0.0-next.0 → 3.0.0-next.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/.babelrc.js +3 -4
- package/.eslintrc.js +6 -0
- package/README.md +21 -3
- package/dist/cjs/components/context.js +8 -16
- package/dist/cjs/constants.js +1 -1
- package/dist/cjs/index.js +8 -8
- package/dist/cjs/jest-transform.js +11 -7
- package/dist/cjs/parser/collect-stories.js +43 -58
- package/dist/cjs/parser/collect-stories.test.js +30 -10
- package/dist/cjs/parser/extract-id.js +8 -13
- package/dist/cjs/parser/extract-id.test.js +5 -5
- package/dist/cjs/parser/extract-stories.js +41 -44
- package/dist/cjs/parser/extract-stories.test.js +235 -17
- package/dist/cjs/parser/svelte-stories-loader.js +24 -31
- package/dist/cjs/plugins/vite-svelte-csf.js +66 -0
- package/dist/cjs/preset/index.js +49 -41
- package/dist/cjs/preset/indexer.js +14 -54
- package/dist/cjs/preset/manager.js +1 -1
- package/dist/esm/components/context.js +8 -14
- package/dist/esm/constants.js +1 -1
- package/dist/esm/jest-transform.js +11 -7
- package/dist/esm/parser/collect-stories.js +39 -55
- package/dist/esm/parser/collect-stories.test.js +30 -10
- package/dist/esm/parser/extract-id.js +8 -13
- package/dist/esm/parser/extract-id.test.js +5 -5
- package/dist/esm/parser/extract-stories.js +38 -39
- package/dist/esm/parser/extract-stories.test.js +235 -17
- package/dist/esm/parser/svelte-stories-loader.js +22 -28
- package/dist/esm/plugins/vite-svelte-csf.js +48 -0
- package/dist/esm/preset/index.js +46 -39
- package/dist/esm/preset/indexer.js +14 -51
- package/dist/esm/preset/manager.js +1 -1
- package/package.json +23 -13
package/.babelrc.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
module.exports = {
|
|
2
|
-
presets: ['@babel/preset-env', '@babel/preset-typescript'],
|
|
3
|
-
plugins: [
|
|
4
|
-
"@babel/plugin-transform-runtime"
|
|
5
|
-
],
|
|
2
|
+
presets: [['@babel/preset-env', { targets: { node: '16' } }], '@babel/preset-typescript'],
|
|
3
|
+
plugins: ['@babel/plugin-transform-runtime'],
|
|
6
4
|
env: {
|
|
7
5
|
esm: {
|
|
8
6
|
presets: [
|
|
@@ -10,6 +8,7 @@ module.exports = {
|
|
|
10
8
|
'@babel/env',
|
|
11
9
|
{
|
|
12
10
|
modules: false,
|
|
11
|
+
targets: { chrome: '100' },
|
|
13
12
|
},
|
|
14
13
|
],
|
|
15
14
|
],
|
package/.eslintrc.js
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
module.exports = {
|
|
2
2
|
root: true,
|
|
3
3
|
extends: ['@storybook/eslint-config-storybook'],
|
|
4
|
+
rules: {
|
|
5
|
+
'@typescript-eslint/dot-notation': 'off',
|
|
6
|
+
'@typescript-eslint/no-implied-eval': 'off',
|
|
7
|
+
'@typescript-eslint/no-throw-literal': 'off',
|
|
8
|
+
'@typescript-eslint/return-await': 'off',
|
|
9
|
+
},
|
|
4
10
|
overrides: [],
|
|
5
11
|
};
|
package/README.md
CHANGED
|
@@ -45,6 +45,24 @@ It supports:
|
|
|
45
45
|
|
|
46
46
|
# Getting Started
|
|
47
47
|
|
|
48
|
-
1.
|
|
49
|
-
2. In `.storybook/main.js`, add
|
|
50
|
-
3. In `.storybook/main.js`, add
|
|
48
|
+
1. `npm install --save-dev @storybook/addon-svelte-csf` or `yarn add --dev @storybook/addon-svelte-csf`
|
|
49
|
+
2. In `.storybook/main.js`, add `@storybook/addon-svelte-csf` to the addons array
|
|
50
|
+
3. In `.storybook/main.js`, add `*.stories.svelte` to the stories patterns
|
|
51
|
+
|
|
52
|
+
An example `main.js` configuration could look like this:
|
|
53
|
+
|
|
54
|
+
```js
|
|
55
|
+
module.exports = {
|
|
56
|
+
stories: ['../src/**/*.stories.@(js|jsx|ts|tsx|svelte)'],
|
|
57
|
+
addons: [
|
|
58
|
+
'@storybook/addon-links',
|
|
59
|
+
'@storybook/addon-essentials',
|
|
60
|
+
'@storybook/addon-interactions',
|
|
61
|
+
'@storybook/addon-svelte-csf',
|
|
62
|
+
],
|
|
63
|
+
framework: '@storybook/svelte-vite',
|
|
64
|
+
};
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
> **Warning**
|
|
68
|
+
> v3 and above of this addon requires at least Storybook v7. If you're using Storybook between v6.4.20 and v7.0.0, you should instead use v2 of this addon with `npm install --save-dev @storybook/addon-svelte-csf@^2.0.10` or `yarn add --dev @storybook/addon-svelte-csf@^2.0.10`
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
@@ -9,30 +7,24 @@ exports.createRegistrationContext = createRegistrationContext;
|
|
|
9
7
|
exports.createRenderContext = createRenderContext;
|
|
10
8
|
exports.useContext = useContext;
|
|
11
9
|
|
|
12
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
-
|
|
14
10
|
var _svelte = require("svelte");
|
|
15
11
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
19
|
-
|
|
20
|
-
var CONTEXT_KEY = "storybook-registration-context";
|
|
12
|
+
const CONTEXT_KEY = "storybook-registration-context";
|
|
21
13
|
|
|
22
|
-
function createRenderContext() {
|
|
23
|
-
|
|
24
|
-
(0, _svelte.setContext)(CONTEXT_KEY, _objectSpread({
|
|
14
|
+
function createRenderContext(props = {}) {
|
|
15
|
+
(0, _svelte.setContext)(CONTEXT_KEY, {
|
|
25
16
|
render: true,
|
|
26
|
-
register:
|
|
17
|
+
register: () => {},
|
|
27
18
|
meta: {},
|
|
28
|
-
args: {}
|
|
29
|
-
|
|
19
|
+
args: {},
|
|
20
|
+
...props
|
|
21
|
+
});
|
|
30
22
|
}
|
|
31
23
|
|
|
32
24
|
function createRegistrationContext(repositories) {
|
|
33
25
|
(0, _svelte.setContext)(CONTEXT_KEY, {
|
|
34
26
|
render: false,
|
|
35
|
-
register:
|
|
27
|
+
register: story => {
|
|
36
28
|
repositories.stories.push(story);
|
|
37
29
|
},
|
|
38
30
|
|
package/dist/cjs/constants.js
CHANGED
package/dist/cjs/index.js
CHANGED
|
@@ -7,23 +7,23 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
Object.defineProperty(exports, "Meta", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function
|
|
11
|
-
return _Meta
|
|
10
|
+
get: function () {
|
|
11
|
+
return _Meta.default;
|
|
12
12
|
}
|
|
13
13
|
});
|
|
14
14
|
Object.defineProperty(exports, "Story", {
|
|
15
15
|
enumerable: true,
|
|
16
|
-
get: function
|
|
17
|
-
return _Story
|
|
16
|
+
get: function () {
|
|
17
|
+
return _Story.default;
|
|
18
18
|
}
|
|
19
19
|
});
|
|
20
20
|
Object.defineProperty(exports, "Template", {
|
|
21
21
|
enumerable: true,
|
|
22
|
-
get: function
|
|
23
|
-
return _Template
|
|
22
|
+
get: function () {
|
|
23
|
+
return _Template.default;
|
|
24
24
|
}
|
|
25
25
|
});
|
|
26
|
-
exports
|
|
26
|
+
exports.default = void 0;
|
|
27
27
|
|
|
28
28
|
var _Meta = _interopRequireDefault(require("./components/Meta.svelte"));
|
|
29
29
|
|
|
@@ -37,4 +37,4 @@ if (module && module.hot && module.hot.decline) {
|
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
var _default = {};
|
|
40
|
-
exports
|
|
40
|
+
exports.default = _default;
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const svelte = require('svelte/compiler');
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
const parser = require.resolve('./parser/collect-stories').replace(/[/\\]/g, '/');
|
|
6
6
|
|
|
7
7
|
function process(src, filename) {
|
|
8
|
-
|
|
8
|
+
const result = svelte.compile(src, {
|
|
9
9
|
format: 'cjs',
|
|
10
|
-
filename
|
|
10
|
+
filename,
|
|
11
11
|
dev: true
|
|
12
12
|
});
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
code:
|
|
13
|
+
const code = result.js ? result.js.code : result.code;
|
|
14
|
+
const z = {
|
|
15
|
+
code: `${code}
|
|
16
|
+
const { default: parser } = require('${parser}');
|
|
17
|
+
const md = parser(module.exports.default, {});
|
|
18
|
+
module.exports = { default: md.meta, ...md.stories };
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });`,
|
|
16
20
|
map: result.js ? result.js.map : result.map
|
|
17
21
|
};
|
|
18
22
|
return z;
|
|
@@ -5,11 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports
|
|
9
|
-
|
|
10
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
-
|
|
12
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
8
|
+
exports.default = void 0;
|
|
13
9
|
|
|
14
10
|
var _clientLogger = require("@storybook/client-logger");
|
|
15
11
|
|
|
@@ -21,7 +17,7 @@ var _RegisterContext = _interopRequireDefault(require("../components/RegisterCon
|
|
|
21
17
|
|
|
22
18
|
var _RenderContext = _interopRequireDefault(require("../components/RenderContext.svelte"));
|
|
23
19
|
|
|
24
|
-
|
|
20
|
+
/* eslint-env browser */
|
|
25
21
|
|
|
26
22
|
/* Called from a webpack loader and a jest transformation.
|
|
27
23
|
*
|
|
@@ -33,35 +29,33 @@ var _excluded = ["id", "name", "template", "component", "source"];
|
|
|
33
29
|
* instantiate the main Stories component: Every Story but
|
|
34
30
|
* the one selected is disabled.
|
|
35
31
|
*/
|
|
36
|
-
|
|
37
|
-
return document.createDocumentFragment();
|
|
38
|
-
} : function () {
|
|
39
|
-
return document.createElement('div');
|
|
40
|
-
};
|
|
32
|
+
const createFragment = document.createDocumentFragment ? () => document.createDocumentFragment() : () => document.createElement('div');
|
|
41
33
|
|
|
42
|
-
var _default =
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
34
|
+
var _default = (StoriesComponent, {
|
|
35
|
+
stories = {},
|
|
36
|
+
allocatedIds
|
|
37
|
+
}) => {
|
|
38
|
+
const repositories = {
|
|
47
39
|
meta: null,
|
|
48
40
|
stories: []
|
|
49
41
|
}; // extract all stories
|
|
50
42
|
|
|
51
43
|
try {
|
|
52
|
-
|
|
44
|
+
const context = new _RegisterContext.default({
|
|
53
45
|
target: createFragment(),
|
|
54
46
|
props: {
|
|
55
47
|
Stories: StoriesComponent,
|
|
56
|
-
repositories
|
|
48
|
+
repositories
|
|
57
49
|
}
|
|
58
50
|
});
|
|
59
51
|
context.$destroy();
|
|
60
52
|
} catch (e) {
|
|
61
|
-
_clientLogger.logger.error(
|
|
53
|
+
_clientLogger.logger.error(`Error extracting stories ${e.toString()}`, e);
|
|
62
54
|
}
|
|
63
55
|
|
|
64
|
-
|
|
56
|
+
const {
|
|
57
|
+
meta
|
|
58
|
+
} = repositories;
|
|
65
59
|
|
|
66
60
|
if (!meta) {
|
|
67
61
|
_clientLogger.logger.error('Missing <Meta/> tag');
|
|
@@ -69,73 +63,64 @@ var _default = function _default(StoriesComponent, _ref) {
|
|
|
69
63
|
return {};
|
|
70
64
|
}
|
|
71
65
|
|
|
72
|
-
|
|
66
|
+
const {
|
|
67
|
+
component: globalComponent
|
|
68
|
+
} = meta; // collect templates id
|
|
73
69
|
|
|
74
|
-
|
|
75
|
-
return story.isTemplate;
|
|
76
|
-
}).map(function (story) {
|
|
77
|
-
return story.id;
|
|
78
|
-
}); // check for duplicate templates
|
|
70
|
+
const templatesId = repositories.stories.filter(story => story.isTemplate).map(story => story.id); // check for duplicate templates
|
|
79
71
|
|
|
80
|
-
|
|
81
|
-
return templatesId.indexOf(item) !== index;
|
|
82
|
-
});
|
|
72
|
+
const duplicateTemplatesId = templatesId.filter((item, index) => templatesId.indexOf(item) !== index);
|
|
83
73
|
|
|
84
74
|
if (duplicateTemplatesId.length > 0) {
|
|
85
|
-
_clientLogger.logger.warn(
|
|
75
|
+
_clientLogger.logger.warn(`Found duplicates templates id for stories '${meta.name}': ${duplicateTemplatesId}`);
|
|
86
76
|
}
|
|
87
77
|
|
|
88
78
|
return {
|
|
89
|
-
meta
|
|
90
|
-
stories: repositories.stories.filter(
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
var storyId = (0, _extractId.extractId)(story, allocatedIds);
|
|
79
|
+
meta,
|
|
80
|
+
stories: repositories.stories.filter(story => !story.isTemplate).reduce((all, story) => {
|
|
81
|
+
const {
|
|
82
|
+
id,
|
|
83
|
+
name,
|
|
84
|
+
template,
|
|
85
|
+
component,
|
|
86
|
+
source = false,
|
|
87
|
+
...props
|
|
88
|
+
} = story;
|
|
89
|
+
const storyId = (0, _extractId.extractId)(story, allocatedIds);
|
|
101
90
|
|
|
102
91
|
if (!storyId) {
|
|
103
92
|
return all;
|
|
104
93
|
}
|
|
105
94
|
|
|
106
|
-
|
|
95
|
+
const unknownTemplate = template != null && templatesId.indexOf(template) < 0;
|
|
107
96
|
|
|
108
|
-
|
|
97
|
+
const storyFn = (args, storyContext) => {
|
|
109
98
|
if (unknownTemplate) {
|
|
110
|
-
throw new Error(
|
|
99
|
+
throw new Error(`Story ${name} is referencing an unknown template ${template}`);
|
|
111
100
|
}
|
|
112
101
|
|
|
113
102
|
return {
|
|
114
|
-
Component: _RenderContext
|
|
103
|
+
Component: _RenderContext.default,
|
|
115
104
|
props: {
|
|
116
105
|
Stories: StoriesComponent,
|
|
117
106
|
storyName: name,
|
|
118
107
|
templateId: template,
|
|
119
|
-
args
|
|
120
|
-
storyContext
|
|
108
|
+
args,
|
|
109
|
+
storyContext,
|
|
121
110
|
sourceComponent: component || globalComponent
|
|
122
111
|
}
|
|
123
112
|
};
|
|
124
113
|
};
|
|
125
114
|
|
|
126
115
|
storyFn.storyName = name;
|
|
127
|
-
Object.entries(props).forEach(
|
|
128
|
-
var _ref3 = (0, _slicedToArray2["default"])(_ref2, 2),
|
|
129
|
-
k = _ref3[0],
|
|
130
|
-
v = _ref3[1];
|
|
131
|
-
|
|
116
|
+
Object.entries(props).forEach(([k, v]) => {
|
|
132
117
|
storyFn[k] = v;
|
|
133
118
|
}); // inject story sources
|
|
134
119
|
|
|
135
|
-
|
|
136
|
-
|
|
120
|
+
const storyDef = stories[template ? `tpl:${template}` : storyId];
|
|
121
|
+
const hasArgs = storyDef ? storyDef.hasArgs : true; // inject source snippet
|
|
137
122
|
|
|
138
|
-
|
|
123
|
+
const rawSource = storyDef ? storyDef.source : null;
|
|
139
124
|
|
|
140
125
|
if (rawSource) {
|
|
141
126
|
storyFn.parameters = (0, _clientApi.combineParameters)(storyFn.parameters || {}, {
|
|
@@ -145,7 +130,7 @@ var _default = function _default(StoriesComponent, _ref) {
|
|
|
145
130
|
});
|
|
146
131
|
}
|
|
147
132
|
|
|
148
|
-
|
|
133
|
+
let snippet;
|
|
149
134
|
|
|
150
135
|
if (source === true || source === false && !hasArgs) {
|
|
151
136
|
snippet = rawSource;
|
|
@@ -170,4 +155,4 @@ var _default = function _default(StoriesComponent, _ref) {
|
|
|
170
155
|
};
|
|
171
156
|
};
|
|
172
157
|
|
|
173
|
-
exports
|
|
158
|
+
exports.default = _default;
|
|
@@ -6,22 +6,42 @@ var _collectStories = _interopRequireDefault(require("./collect-stories"));
|
|
|
6
6
|
|
|
7
7
|
var _TestStories = _interopRequireDefault(require("../components/__tests__/TestStories.svelte"));
|
|
8
8
|
|
|
9
|
-
describe('parse-stories',
|
|
10
|
-
test('Extract Stories',
|
|
11
|
-
|
|
9
|
+
describe('parse-stories', () => {
|
|
10
|
+
test('Extract Stories', () => {
|
|
11
|
+
const data = (0, _collectStories.default)(_TestStories.default, {
|
|
12
12
|
stories: {
|
|
13
13
|
'tpl:tpl2': 'tpl2src'
|
|
14
14
|
}
|
|
15
15
|
});
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
const {
|
|
17
|
+
stories,
|
|
18
|
+
meta
|
|
19
|
+
} = data;
|
|
20
|
+
expect(meta).toMatchInlineSnapshot(`
|
|
21
|
+
Object {
|
|
22
|
+
"title": "Test",
|
|
23
|
+
}
|
|
24
|
+
`);
|
|
25
|
+
expect(stories).toMatchInlineSnapshot(`
|
|
26
|
+
Object {
|
|
27
|
+
"Story1": [Function],
|
|
28
|
+
"Story2": [Function],
|
|
29
|
+
"Story3": [Function],
|
|
30
|
+
}
|
|
31
|
+
`);
|
|
20
32
|
expect(stories.Story1.storyName).toBe('Story1');
|
|
21
|
-
expect(stories.Story1.parameters).toMatchInlineSnapshot(
|
|
33
|
+
expect(stories.Story1.parameters).toMatchInlineSnapshot(`undefined`);
|
|
22
34
|
expect(stories.Story2.storyName).toBe('Story2');
|
|
23
|
-
expect(stories.Story2.parameters).toMatchInlineSnapshot(
|
|
35
|
+
expect(stories.Story2.parameters).toMatchInlineSnapshot(`undefined`);
|
|
24
36
|
expect(stories.Story3.storyName).toBe('Story3');
|
|
25
|
-
expect(stories.Story3.parameters).toMatchInlineSnapshot(
|
|
37
|
+
expect(stories.Story3.parameters).toMatchInlineSnapshot(`
|
|
38
|
+
Object {
|
|
39
|
+
"docs": Object {
|
|
40
|
+
"source": Object {
|
|
41
|
+
"code": "xyz",
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
}
|
|
45
|
+
`);
|
|
26
46
|
});
|
|
27
47
|
});
|
|
@@ -8,19 +8,16 @@ exports.extractId = extractId;
|
|
|
8
8
|
var _clientLogger = require("@storybook/client-logger");
|
|
9
9
|
|
|
10
10
|
function hashCode(str) {
|
|
11
|
-
|
|
12
|
-
.reduce(
|
|
13
|
-
return (prevHash << 5) - prevHash + currVal.charCodeAt(0) | 0;
|
|
14
|
-
}, 0);
|
|
11
|
+
const h = str.split('') // eslint-disable-next-line no-bitwise
|
|
12
|
+
.reduce((prevHash, currVal) => (prevHash << 5) - prevHash + currVal.charCodeAt(0) | 0, 0);
|
|
15
13
|
return Math.abs(h).toString(16);
|
|
16
14
|
} // extract a story id
|
|
17
15
|
|
|
18
16
|
|
|
19
|
-
function extractId(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
17
|
+
function extractId({
|
|
18
|
+
id,
|
|
19
|
+
name
|
|
20
|
+
}, allocatedIds = []) {
|
|
24
21
|
if (id) {
|
|
25
22
|
return id;
|
|
26
23
|
}
|
|
@@ -29,12 +26,10 @@ function extractId(_ref) {
|
|
|
29
26
|
throw new Error("Id or Name should be specified");
|
|
30
27
|
}
|
|
31
28
|
|
|
32
|
-
|
|
33
|
-
return chr.toUpperCase();
|
|
34
|
-
});
|
|
29
|
+
let generated = name.replace(/\W+(.|$)/g, (_, chr) => chr.toUpperCase());
|
|
35
30
|
|
|
36
31
|
if (allocatedIds.indexOf(generated) >= 0) {
|
|
37
|
-
_clientLogger.logger.warn(
|
|
32
|
+
_clientLogger.logger.warn(`Story name conflict with exports - Please add an explicit id for story ${name}`);
|
|
38
33
|
|
|
39
34
|
generated += hashCode(name);
|
|
40
35
|
}
|
|
@@ -2,23 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
var _extractId = require("./extract-id");
|
|
4
4
|
|
|
5
|
-
describe('extract-id',
|
|
6
|
-
test('name with spaces',
|
|
5
|
+
describe('extract-id', () => {
|
|
6
|
+
test('name with spaces', () => {
|
|
7
7
|
expect((0, _extractId.extractId)({
|
|
8
8
|
name: 'Name with spaces'
|
|
9
9
|
})).toBe('NameWithSpaces');
|
|
10
10
|
});
|
|
11
|
-
test('name with parenthesis',
|
|
11
|
+
test('name with parenthesis', () => {
|
|
12
12
|
expect((0, _extractId.extractId)({
|
|
13
13
|
name: 'Name with (parenthesis)'
|
|
14
14
|
})).toBe('NameWithParenthesis');
|
|
15
15
|
});
|
|
16
|
-
test('duplicates id',
|
|
16
|
+
test('duplicates id', () => {
|
|
17
17
|
expect((0, _extractId.extractId)({
|
|
18
18
|
name: 'Button'
|
|
19
19
|
}, ['Button'])).toBe('Button77471352');
|
|
20
20
|
});
|
|
21
|
-
test('No negative hash',
|
|
21
|
+
test('No negative hash', () => {
|
|
22
22
|
expect((0, _extractId.extractId)({
|
|
23
23
|
name: 'Navbar'
|
|
24
24
|
}, ['Navbar'])).toBe('Navbar7557f7d0');
|