diff --git a/README.md b/README.md
index 58ece70..a486a0a 100644
--- a/README.md
+++ b/README.md
@@ -126,17 +126,47 @@ For more details, see [live examples].
## Options
-| Name | Data type | Default value | Description |
-| ------------------ | ------------------------------------- | --------------------------------------------------- | ---------------------------------------------------------------------------------- |
-| `header` | `boolean` | `true` | Whether to show header or not. |
-| `source` | `boolean` | `true` | Whether to show source(usage) or not. |
-| `wrapperComponent` | `Component` | [default wrapper](src/components/Wrapper/index.vue) | Override inline docs component. |
-| `previewClassName` | `string` | `undefined` | Class name passed down to preview container. |
-| `previewStyle` | Style object | `undefined` | Style passed down to preview container. |
-| `summary` | `string` | `''` | Summary for the story. Accepts Markdown. |
-| `components` | `{ [name: string]: Component }\|null` | `null` | Display info for these components. Same type as component's `components` property. |
-| `docsInPanel` | `boolean` | `true` | Whether to show docs in addon panel. |
-| `useDocgen` | `boolean` | `true` | Whether to use result of vue-docgen-api. |
+| Name | Data type | Default value | Description |
+| ------------------ | --------------------------------------------- | --------------------------------------------------- | ---------------------------------------------------------------------------------- |
+| `header` | `boolean` | `true` | Whether to show header or not. |
+| `source` | `boolean` | `true` | Whether to show source(usage) or not. |
+| `wrapperComponent` | `Component` | [default wrapper](src/components/Wrapper/index.vue) | Override inline docs component. |
+| `previewClassName` | `string` | `undefined` | Class name passed down to preview container. |
+| `previewStyle` | Style object | `undefined` | Style passed down to preview container. |
+| `summary` | `string` | `''` | Summary for the story. Accepts Markdown. |
+| `components` | `{ [name: string]: Component }\|null` | `null` | Display info for these components. Same type as component's `components` property. |
+| `docsInPanel` | `boolean` | `true` | Whether to show docs in addon panel. |
+| `useDocgen` | `boolean` | `true` | Whether to use result of vue-docgen-api. |
+| `casing` | `"kebab" \| "camel" \| "pascal" \| undefined` | `undefined` | Which case to use. For detailed usage, see below. |
+
+### Valid `casing` options
+
+```js
+{
+ // Don't convert names
+ casing: undefined
+}
+
+{
+ // Show names in kebab-case
+ casing 'kebab'
+}
+
+{
+ // Show prop names in camelCase and
+ // Show component names in PascalCase
+ casing: 'camel' // or 'pascal'
+}
+
+{
+ // Show prop names in camelCase and
+ // Show component names in kebab-case
+ casing: {
+ props: 'camel',
+ component: 'kebab'
+ }
+}
+```
In addition to addon options, we have a component option.
diff --git a/example/.storybook/config.js b/example/.storybook/config.js
index c72f5e7..f64b5cc 100644
--- a/example/.storybook/config.js
+++ b/example/.storybook/config.js
@@ -13,10 +13,4 @@ Vue.use(VueI18n)
addDecorator(withInfo)
-const req = require.context('../stories', true, /\.stories\.js$/)
-
-function loadStories() {
- req.keys().forEach(req)
-}
-
-configure(loadStories, module)
+configure(require.context('../stories', true, /\.stories\.js$/), module)
diff --git a/example/stories/issues/122/camel.vue b/example/stories/issues/122/camel.vue
new file mode 100644
index 0000000..4d1fbe6
--- /dev/null
+++ b/example/stories/issues/122/camel.vue
@@ -0,0 +1,14 @@
+
+
+
+ camelCase
+
diff --git a/example/stories/issues/122/index.stories.js b/example/stories/issues/122/index.stories.js
new file mode 100644
index 0000000..a0c6c85
--- /dev/null
+++ b/example/stories/issues/122/index.stories.js
@@ -0,0 +1,80 @@
+import CamelComponent from './camel.vue'
+import KebabComponent from './kebab.vue'
+import MixedComponent from './mixed.vue'
+
+export default {
+ title: 'Issues/#122'
+}
+
+export const camelToKebab = () => {
+ return {
+ components: { CamelComponent },
+ template: ''
+ }
+}
+camelToKebab.story = {
+ title: 'Convert camelCase to kebab-case',
+ parameters: {
+ info: {
+ casing: 'kebab'
+ }
+ }
+}
+
+export const kebabToCamel = () => {
+ return {
+ components: { KebabComponent },
+ template: ''
+ }
+}
+kebabToCamel.story = {
+ title: 'Convert kebab-case to camelCase',
+ parameters: {
+ info: {
+ casing: 'camel'
+ }
+ }
+}
+
+export const mixedToKebab = () => {
+ return {
+ components: { MixedComponent },
+ template: ''
+ }
+}
+mixedToKebab.story = {
+ title: 'Convert to kebab-case (mixed)',
+ parameters: {
+ info: {
+ casing: 'kebab'
+ }
+ }
+}
+
+export const mixedToCamel = () => {
+ return {
+ components: { MixedComponent },
+ template: ''
+ }
+}
+mixedToCamel.story = {
+ title: 'Convert to camelCase (mixed)',
+ parameters: {
+ info: {
+ casing: 'camel'
+ }
+ }
+}
+
+export const preserve = () => {
+ return {
+ components: { MixedComponent },
+ template: ''
+ }
+}
+preserve.story = {
+ title: 'Preserve casing when undefined',
+ parameters: {
+ info: {}
+ }
+}
diff --git a/example/stories/issues/122/kebab.vue b/example/stories/issues/122/kebab.vue
new file mode 100644
index 0000000..5193fc9
--- /dev/null
+++ b/example/stories/issues/122/kebab.vue
@@ -0,0 +1,14 @@
+
+
+
+ kebab-case
+
diff --git a/example/stories/issues/122/mixed.vue b/example/stories/issues/122/mixed.vue
new file mode 100644
index 0000000..627c69d
--- /dev/null
+++ b/example/stories/issues/122/mixed.vue
@@ -0,0 +1,18 @@
+
+
+
+ mIxeD-CaSE
+
diff --git a/package.json b/package.json
index 1f3e0b3..9e2ea6b 100644
--- a/package.json
+++ b/package.json
@@ -102,6 +102,7 @@
]
},
"dependencies": {
+ "change-case": "^4.1.0",
"clone": "^2.1.2",
"dedent-tabs": "^0.8.0",
"highlight.js": "^9.12.0",
diff --git a/rollup.config.js b/rollup.config.js
index bfcb146..bed09ca 100644
--- a/rollup.config.js
+++ b/rollup.config.js
@@ -38,6 +38,7 @@ const commonConfig = {
})
],
external: [
+ 'change-case',
'vue',
'dedent',
'marked',
diff --git a/src/components/Component/index.vue b/src/components/Component/index.vue
index 34f6c78..1da7247 100644
--- a/src/components/Component/index.vue
+++ b/src/components/Component/index.vue
@@ -1,4 +1,5 @@
@@ -51,7 +65,12 @@ export default {
:lang="info.jsxStory ? 'jsx' : 'html'"
/>
-
+
diff --git a/src/extract/decideTargets.ts b/src/extract/decideTargets.ts
index 749a8bf..ff9d70c 100644
--- a/src/extract/decideTargets.ts
+++ b/src/extract/decideTargets.ts
@@ -1,9 +1,9 @@
-import Vue, { AsyncComponent, Component, ComponentOptions } from 'vue'
+import { paramCase } from 'change-case'
+import Vue, { ComponentOptions } from 'vue'
import { InfoAddonOptions } from '../options'
import { ComponentRegistory } from '../types/vue'
import * as getTagNames from '../utils/getTagNames'
-import { hyphenate } from '../utils/hyphenate'
import { lookupGlobalComponent, LookupResult } from './lookup'
@@ -29,7 +29,7 @@ export function decideTargets(
}
const tagNames = story.template
- ? getTagNames.fromTemplate(story.template).map(hyphenate)
+ ? getTagNames.fromTemplate(story.template).map(s => paramCase(s))
: getTagNames.fromJSX(story.render!)
const components = tagNames
diff --git a/src/extract/index.ts b/src/extract/index.ts
index a158f01..be70fef 100644
--- a/src/extract/index.ts
+++ b/src/extract/index.ts
@@ -1,3 +1,4 @@
+import { paramCase } from 'change-case'
import dedent from 'dedent-tabs'
import hljs from 'highlight.js'
import marked from 'marked'
@@ -5,9 +6,7 @@ import Vue, { ComponentOptions } from 'vue'
import { InfoAddonOptions } from '../options'
import { ComponentInfo, StoryInfo } from '../types/info'
-import { AnyComponent } from '../types/vue'
import { getJSXFromRenderFn } from '../utils/getJSXFromRenderFn'
-import { hyphenate } from '../utils/hyphenate'
import { decideTargets } from './decideTargets'
import { extractDocgenInfo } from './extractDocgenInfo'
@@ -26,7 +25,7 @@ export function extract(
const components = Object.keys(targets).map(name => {
const component = targets[name]
- const kebabName = hyphenate(name)
+ const kebabName = paramCase(name)
const propDescriptions =
(descriptions[kebabName] && descriptions[kebabName].props) || {}
@@ -143,7 +142,7 @@ const getDescriptionsFromStory = (story: any): Descriptions | null => {
const ret: Descriptions = {}
for (const component of Object.keys(story.description)) {
- ret[hyphenate(component)] = story.description[component]
+ ret[paramCase(component)] = story.description[component]
}
return ret
@@ -161,7 +160,7 @@ const formatPropsDescription = (story: any): Descriptions => {
const components: Descriptions = {}
for (const component of Object.keys(story.propsDescription)) {
- components[hyphenate(component)] = {
+ components[paramCase(component)] = {
props: story.propsDescription[component]
}
}
diff --git a/src/extract/lookup.ts b/src/extract/lookup.ts
index 424d706..8f897c5 100644
--- a/src/extract/lookup.ts
+++ b/src/extract/lookup.ts
@@ -1,7 +1,6 @@
+import { paramCase } from 'change-case'
import Vue from 'vue'
-import hyphenate from '../utils/hyphenate'
-
import { AnyComponent } from '../types/vue'
export interface LookupResult {
@@ -15,7 +14,7 @@ export interface LookupResult {
*/
export function lookupGlobalComponent(name: string): LookupResult | null {
for (const componentName in (Vue as any).options.components) {
- if (hyphenate(componentName) === name) {
+ if (paramCase(componentName) === name) {
const target = (Vue as any).options.components[componentName]
return {
diff --git a/src/options.ts b/src/options.ts
index 9864d70..6b3f3a9 100644
--- a/src/options.ts
+++ b/src/options.ts
@@ -9,9 +9,19 @@ export const defaultOptions: InfoAddonOptions = {
components: null,
wrapperComponent: DefaultWrapper,
docsInPanel: true,
- useDocgen: true
+ useDocgen: true,
+ casing: undefined
}
+type Casing =
+ | undefined
+ | 'camel'
+ | 'camelCase'
+ | 'kebab'
+ | 'kebab-case'
+ | 'pascal'
+ | 'PascalCase'
+
/**
* Addon options
*/
@@ -53,4 +63,11 @@ export interface InfoAddonOptions {
* Whether to use component infomation generated by vue-docgen-api
*/
useDocgen: boolean
+
+ casing:
+ | Casing
+ | {
+ props: Casing
+ component: Casing
+ }
}
diff --git a/src/utils/hyphenate.spec.ts b/src/utils/hyphenate.spec.ts
deleted file mode 100644
index 3f467d8..0000000
--- a/src/utils/hyphenate.spec.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import hyphenate from './hyphenate'
-
-it('Turns PascalCase into kebab-case', () => {
- expect(hyphenate('FooBar')).toBe('foo-bar')
-
- expect(hyphenate('FOOBAR')).toBe('f-o-o-b-a-r')
-
- expect(hyphenate('Foobar')).toBe('foobar')
-})
diff --git a/src/utils/hyphenate.ts b/src/utils/hyphenate.ts
deleted file mode 100644
index a66f81d..0000000
--- a/src/utils/hyphenate.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * Convert string to kebab-case
- */
-export function hyphenate(input: string): string {
- return input.replace(/\B([A-Z])/g, '-$1').toLowerCase()
-}
-
-export default hyphenate
diff --git a/yarn.lock b/yarn.lock
index f403cc2..b86ddbe 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2634,6 +2634,14 @@ camel-case@3.0.x:
no-case "^2.2.0"
upper-case "^1.1.1"
+camel-case@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.0.tgz#bdfcea5134eb8dc928e13c1ee84fd5635ba65e25"
+ integrity sha512-vmHTVppun53Le+K8wHxA0f4oI192u2i6eL9qHrqByibpxRbdkvI1o1fAA6ozxpLGEnsDS3MBjPJAi7ArJU9ZDg==
+ dependencies:
+ pascal-case "^3.1.0"
+ tslib "^1.10.0"
+
camelcase@^1.0.2:
version "1.2.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
@@ -2664,6 +2672,15 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000929, caniuse-lite@^1.0.30000957, can
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000967.tgz#a5039577806fccee80a04aaafb2c0890b1ee2f73"
integrity sha512-rUBIbap+VJfxTzrM4akJ00lkvVb5/n5v3EGXfWzSH5zT8aJmGzjA8HWhJ4U6kCpzxozUSnB+yvAYDRPY6mRpgQ==
+capital-case@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/capital-case/-/capital-case-1.0.2.tgz#d82a7b3430c521ce700b397bd21b979843a731db"
+ integrity sha512-7dF2q6pv+qqMkFG+AS0c6/UnYAL5ldR2rUbjKoJrHz9S0bn14jOLIpXxwabIeyakcRWNeGguWzNxJRPAGe4lFA==
+ dependencies:
+ no-case "^3.0.2"
+ tslib "^1.10.0"
+ upper-case-first "^2.0.1"
+
capture-exit@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4"
@@ -2709,6 +2726,24 @@ chalk@^1.1.3:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
+change-case@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/change-case/-/change-case-4.1.0.tgz#3db027d8655ee11b0eaf2adf14c1c9449572a857"
+ integrity sha512-jz4NjT8d6J9ggFuGHJ860Trta1IXjtnG+T3HGKdN/9ihDefiN241SQhJlD/fbNdiH4YUwPAp00X030vqc/LRcw==
+ dependencies:
+ camel-case "^4.1.0"
+ capital-case "^1.0.2"
+ constant-case "^3.0.2"
+ dot-case "^3.0.2"
+ header-case "^2.0.2"
+ no-case "^3.0.2"
+ param-case "^3.0.2"
+ pascal-case "^3.1.0"
+ path-case "^3.0.2"
+ sentence-case "^3.0.2"
+ snake-case "^3.0.2"
+ tslib "^1.10.0"
+
change-emitter@^0.1.2:
version "0.1.6"
resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515"
@@ -3046,6 +3081,15 @@ consolidate@^0.15.1:
dependencies:
bluebird "^3.1.1"
+constant-case@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.2.tgz#e05225ae43e872b208b72de655bcb88143db3ec2"
+ integrity sha512-VxthHv7/VKSXl9kToCoulqM5hH6KpLdAdBCRMFj1SzaHTHMZkQYbRlMwEiLHYJfMN7xE8UiUtyBAJjPXOtbjjA==
+ dependencies:
+ no-case "^3.0.2"
+ tslib "^1.10.0"
+ upper-case "^2.0.1"
+
constantinople@^3.0.1:
version "3.1.2"
resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-3.1.2.tgz#d45ed724f57d3d10500017a7d3a889c1381ae647"
@@ -3735,6 +3779,14 @@ domutils@^1.5.1, domutils@^1.7.0:
dom-serializer "0"
domelementtype "1"
+dot-case@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.2.tgz#6758d86d3e7b69adc0fcfad23a845676c329f7d9"
+ integrity sha512-z3vMZEW2o3btKlM9I6FQF0pIWTzBuW+udrAaJr+A6JA3+p62ADZjeFthKxqxKHZlUxQmkKeEWvaKLJdwpc5u6g==
+ dependencies:
+ no-case "^3.0.2"
+ tslib "^1.10.0"
+
dot-prop@^4.1.1:
version "4.2.0"
resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
@@ -4875,6 +4927,14 @@ he@1.2.x, he@^1.1.0:
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+header-case@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/header-case/-/header-case-2.0.2.tgz#0e4105f6a2489afdf40cfb65c6b24728d1d02ab2"
+ integrity sha512-DkrKDkNEXG3ZC3urlbt+O9j9qbwFvJwDB1PSKBQqZLVbh2wr7PKpfjGWo/Dw9cpG1IqZM6QTsnVsB3FwdCuEkg==
+ dependencies:
+ capital-case "^1.0.2"
+ tslib "^1.10.0"
+
hex-color-regex@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
@@ -6376,6 +6436,13 @@ lower-case@^1.1.1:
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw=
+lower-case@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7"
+ integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==
+ dependencies:
+ tslib "^1.10.0"
+
lowlight@~1.9.1:
version "1.9.2"
resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.9.2.tgz#0b9127e3cec2c3021b7795dd81005c709a42fdd1"
@@ -6786,6 +6853,14 @@ no-case@^2.2.0:
dependencies:
lower-case "^1.1.1"
+no-case@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.2.tgz#2b03928510318591854c0423e504d13b21234263"
+ integrity sha512-Yber3mEOA3T9+as7Z70TJUQCUPRmmq6s8NmsZX5aSB1qk+Mt+3a5JVPpnAnONUShLTkMDF4PJY3h0GKlXdRTNA==
+ dependencies:
+ lower-case "^2.0.1"
+ tslib "^1.10.0"
+
node-fetch@^1.0.1:
version "1.7.3"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
@@ -7237,6 +7312,14 @@ param-case@2.1.x:
dependencies:
no-case "^2.2.0"
+param-case@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.2.tgz#2518860c89ef22add388c7293c26e48c4fe90c62"
+ integrity sha512-9UF3HbbJwzBVJlFFOvfBpWUpGFMX01q3dKavdRyv+71HI3GO4UTQIiuG51pckuqPlHzx1jmUijim8J282goaLg==
+ dependencies:
+ dot-case "^3.0.2"
+ tslib "^1.10.0"
+
parse-asn1@^5.0.0:
version "5.1.4"
resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc"
@@ -7279,6 +7362,14 @@ parseurl@~1.3.2:
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
+pascal-case@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.0.tgz#b3cc1273a957ceb0c37c029d2580ed59f585e4df"
+ integrity sha512-7cINxTsRAFym4dLVMdObWx2wr/FjVz8BfCdLPC069kAFLal/5dZhxObpAIM40GwZ/Xik1J37z+Nw6/TVy5fmIg==
+ dependencies:
+ no-case "^3.0.2"
+ tslib "^1.10.0"
+
pascalcase@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
@@ -7289,6 +7380,14 @@ path-browserify@0.0.0:
resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=
+path-case@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.2.tgz#ea7cf681e33e4fa5a8ec31ea91e5f02e22544ecc"
+ integrity sha512-vTXKSmzkegC4tBZTogrHleuSEhdMgtY3+vxqN0wFM8TmVs8+0xy+oh1+07SuxYzDlXl/FO8jwEtRfAQ7G+jxCg==
+ dependencies:
+ dot-case "^3.0.2"
+ tslib "^1.10.0"
+
path-dirname@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
@@ -9095,6 +9194,15 @@ send@0.16.2:
range-parser "~1.2.0"
statuses "~1.4.0"
+sentence-case@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.2.tgz#c0274245ea0eeb9cce54268101ffbd7b98277b08"
+ integrity sha512-15UhaONq0mYjSpFHbrO2VoPjzy/3mo8nAy8/2rr32IjsUg4hCeapON4aS84YEtOL5SOccaAaopThdSPCnndFFQ==
+ dependencies:
+ no-case "^3.0.2"
+ tslib "^1.10.0"
+ upper-case-first "^2.0.1"
+
serialize-javascript@^1.4.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65"
@@ -9244,6 +9352,14 @@ slice-ansi@1.0.0:
dependencies:
is-fullwidth-code-point "^2.0.0"
+snake-case@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.2.tgz#2cc0eacf4edaab998f21af579b5a72b0766f91dd"
+ integrity sha512-1fRJdasXJTcsrGnUkDsnKNjHoP9NGclbIkYyY6Vv0vBVgz32rqhPFPg/Y0yIP4hwOd41Dh8rocCRHjNIuK4EZg==
+ dependencies:
+ dot-case "^3.0.2"
+ tslib "^1.10.0"
+
snapdragon-node@^2.0.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
@@ -9939,6 +10055,11 @@ tslib@1.9.3, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
+tslib@^1.10.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
+ integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
+
tslint-config-prettier@^1.13.0:
version "1.18.0"
resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz#75f140bde947d35d8f0d238e0ebf809d64592c37"
@@ -10138,11 +10259,25 @@ upath@^1.1.1:
resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068"
integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==
+upper-case-first@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-2.0.1.tgz#32ab436747d891cc20ab1e43d601cb4d0a7fbf4a"
+ integrity sha512-105J8XqQ+9RxW3l9gHZtgve5oaiR9TIwvmZAMAIZWRHe00T21cdvewKORTlOJf/zXW6VukuTshM+HXZNWz7N5w==
+ dependencies:
+ tslib "^1.10.0"
+
upper-case@^1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=
+upper-case@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-2.0.1.tgz#6214d05e235dc817822464ccbae85822b3d8665f"
+ integrity sha512-laAsbea9SY5osxrv7S99vH9xAaJKrw5Qpdh4ENRLcaxipjKsiaBwiAsxfa8X5mObKNTQPsupSq0J/VIxsSJe3A==
+ dependencies:
+ tslib "^1.10.0"
+
uri-js@^4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"