diff --git a/@kiva/kv-components/package.json b/@kiva/kv-components/package.json index 127a4e8a..4b90fdec 100644 --- a/@kiva/kv-components/package.json +++ b/@kiva/kv-components/package.json @@ -18,7 +18,9 @@ "@babel/preset-env": "^7.24.8", "@babel/preset-react": "^7.24.7", "@babel/preset-typescript": "^7.24.7", + "@kiva/kv-tokens": "^2.16.1", "@laynezh/vite-plugin-lib-assets": "^0.6.1", + "@mdi/js": "^7.4.47", "@storybook/addon-a11y": "^8.4.7", "@storybook/addon-essentials": "^8.4.7", "@storybook/addon-links": "^8.4.7", @@ -37,21 +39,32 @@ "@vitejs/plugin-vue": "^5.2.1", "@vue/reactivity": "3.2.37", "@vue/vue3-jest": "^27.0.0-alpha.4", + "@vueuse/integrations": "^9.13.0", + "aria-hidden": "^1.2.4", "autoprefixer": "^10.4.2", "babel-core": "^7.0.0-bridge.0", "babel-jest": "^27.0.6", "babel-loader": "^8.2.2", + "change-case": "^4.1.2", "chromatic": "^5.9.2", "css-loader": "^6.0.0", + "date-fns": "^2.30.0", + "embla-carousel": "^8.5.2", + "embla-carousel-autoplay": "^8.5.2", + "embla-carousel-fade": "^8.5.2", "eslint": "^7.26.0", "eslint-config-airbnb-base": "^14.1.0", "eslint-plugin-import": "^2.20.2", "eslint-plugin-storybook": "^0.5.6", "eslint-plugin-vue": "^7.9.0", "flag-icons": "^7.3.0", + "focus-trap": "^6.9.4", "import-meta-loader": "^1.1.0", "jest": "^27.4.3", "jest-axe": "^5.0.1", + "nanoid": "^3.3.8", + "numeral": "^2.0.6", + "popper.js": "^1.16.1", "postcss": "^8.4.5", "postcss-loader": "^7.0.0", "react": "^16.8.0", @@ -75,22 +88,22 @@ "build": "vite build", "postbuild": "mkdir -p ../../dist/kvui && mv -v dist/kvui/* ../../dist/kvui/" }, - "dependencies": { - "@kiva/kv-tokens": "^2.16.1", - "@mdi/js": "^7.4.47", - "@vueuse/integrations": "^9.13.0", - "aria-hidden": "^1.1.3", - "change-case": "^4.1.2", - "date-fns": "^2.30.0", - "embla-carousel": "^8.5.1", - "embla-carousel-autoplay": "^8.5.1", - "embla-carousel-fade": "^8.5.1", - "focus-trap": "^6.7.2", - "nanoid": "^3.1.23", - "numeral": "^2.0.6", - "popper.js": "^1.16.1" - }, "peerDependencies": { - "vue": ">=3.0.0" - } + "@kiva/kv-tokens": "2.x", + "@mdi/js": "7.x", + "@vueuse/integrations": "9.x", + "change-case": "4.x", + "date-fns": "2.x", + "focus-trap": "6.x", + "nanoid": "3.x", + "numeral": "2.x", + "vue": "3.x" + }, + "bundledDependencies": [ + "aria-hidden", + "embla-carousel", + "embla-carousel-autoplay", + "embla-carousel-fade", + "popper.js" + ] } diff --git a/@kiva/kv-components/vite.config.js b/@kiva/kv-components/vite.config.js index 22949f48..721087c1 100644 --- a/@kiva/kv-components/vite.config.js +++ b/@kiva/kv-components/vite.config.js @@ -12,29 +12,39 @@ export default defineConfig({ }, build: { outDir: 'dist', + // Ensure that separate css files are created for each component with styles cssCodeSplit: true, + // Enable Vite library mode lib: { entry: 'src/index.js', formats: ['es'], fileName: (format, entryName) => { + // Add .js or .cjs suffix to entryName based on format const suffix = format === 'es' ? '.js' : '.cjs'; + // Remove .vue extension from entryName for SFCs if (entryName.slice(-4) === '.vue') { return `${entryName.slice(0, -4)}${suffix}`; } + // Return default entryName return `${entryName}${suffix}`; }, }, }, plugins: [ + // Support Vue 3 single-file components vue(), + // Make the output match the src file structure instead of bundling into one large file noBundlePlugin({ + // Dependencies that should be included in the final build. Update package.json bundledDependencies when changing this list. internal: [ + 'aria-hidden', 'embla-carousel', 'embla-carousel-autoplay', 'embla-carousel-fade', 'popper.js', ], }), + // Ensure assets are created in the dist folder when using Vite library mode libAssetsPlugin({ name: '[name].[contenthash:8].[ext]', outputPath: 'kvui', diff --git a/package-lock.json b/package-lock.json index 3d4ce26a..22383fb1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2232,28 +2232,15 @@ }, "@kiva/kv-components": { "version": "4.8.5", - "dependencies": { - "@kiva/kv-tokens": "^2.16.1", - "@mdi/js": "^7.4.47", - "@vueuse/integrations": "^9.13.0", - "aria-hidden": "^1.1.3", - "change-case": "^4.1.2", - "date-fns": "^2.30.0", - "embla-carousel": "^8.5.1", - "embla-carousel-autoplay": "^8.5.1", - "embla-carousel-fade": "^8.5.1", - "focus-trap": "^6.7.2", - "nanoid": "^3.1.23", - "numeral": "^2.0.6", - "popper.js": "^1.16.1" - }, "devDependencies": { "@babel/core": "^7.14.8", "@babel/eslint-parser": "^7.13.14", "@babel/preset-env": "^7.24.8", "@babel/preset-react": "^7.24.7", "@babel/preset-typescript": "^7.24.7", + "@kiva/kv-tokens": "^2.16.1", "@laynezh/vite-plugin-lib-assets": "^0.6.1", + "@mdi/js": "^7.4.47", "@storybook/addon-a11y": "^8.4.7", "@storybook/addon-essentials": "^8.4.7", "@storybook/addon-links": "^8.4.7", @@ -2272,21 +2259,32 @@ "@vitejs/plugin-vue": "^5.2.1", "@vue/reactivity": "3.2.37", "@vue/vue3-jest": "^27.0.0-alpha.4", + "@vueuse/integrations": "^9.13.0", + "aria-hidden": "^1.2.4", "autoprefixer": "^10.4.2", "babel-core": "^7.0.0-bridge.0", "babel-jest": "^27.0.6", "babel-loader": "^8.2.2", + "change-case": "^4.1.2", "chromatic": "^5.9.2", "css-loader": "^6.0.0", + "date-fns": "^2.30.0", + "embla-carousel": "^8.5.2", + "embla-carousel-autoplay": "^8.5.2", + "embla-carousel-fade": "^8.5.2", "eslint": "^7.26.0", "eslint-config-airbnb-base": "^14.1.0", "eslint-plugin-import": "^2.20.2", "eslint-plugin-storybook": "^0.5.6", "eslint-plugin-vue": "^7.9.0", "flag-icons": "^7.3.0", + "focus-trap": "^6.9.4", "import-meta-loader": "^1.1.0", "jest": "^27.4.3", "jest-axe": "^5.0.1", + "nanoid": "^3.3.8", + "numeral": "^2.0.6", + "popper.js": "^1.16.1", "postcss": "^8.4.5", "postcss-loader": "^7.0.0", "react": "^16.8.0", @@ -9697,7 +9695,9 @@ "node_modules/@mdi/js": { "version": "7.4.47", "resolved": "https://registry.npmjs.org/@mdi/js/-/js-7.4.47.tgz", - "integrity": "sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ==" + "integrity": "sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@mdx-js/react": { "version": "3.1.0", @@ -12586,7 +12586,9 @@ "node_modules/@types/web-bluetooth": { "version": "0.0.16", "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", - "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" + "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==", + "dev": true, + "license": "MIT" }, "node_modules/@types/ws": { "version": "7.4.7", @@ -13044,6 +13046,8 @@ "version": "9.13.0", "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz", "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", + "dev": true, + "license": "MIT", "dependencies": { "@types/web-bluetooth": "^0.0.16", "@vueuse/metadata": "9.13.0", @@ -13058,6 +13062,8 @@ "version": "9.13.0", "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-9.13.0.tgz", "integrity": "sha512-I1kX/tsfcvWWLZD7HZaP0LsSfchK13YxReLfharXhk72SFXp87doLbRaTfIF5w8m/gr/vPtcNyQPAXW7Ubpuww==", + "dev": true, + "license": "MIT", "dependencies": { "@vueuse/core": "9.13.0", "@vueuse/shared": "9.13.0", @@ -13119,6 +13125,8 @@ "version": "9.13.0", "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz", "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==", + "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" } @@ -13127,6 +13135,8 @@ "version": "9.13.0", "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz", "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", + "dev": true, + "license": "MIT", "dependencies": { "vue-demi": "*" }, @@ -13679,6 +13689,8 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.0" }, @@ -14068,7 +14080,7 @@ "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "devOptional": true, + "dev": true, "dependencies": { "follow-redirects": "^1.14.0" } @@ -14761,6 +14773,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -14824,6 +14837,8 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -14878,6 +14893,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "dev": true, + "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "capital-case": "^1.0.4", @@ -15507,6 +15524,8 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -16393,6 +16412,8 @@ "version": "2.30.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.21.0" }, @@ -16896,6 +16917,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -17039,24 +17061,30 @@ } }, "node_modules/embla-carousel": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.5.1.tgz", - "integrity": "sha512-JUb5+FOHobSiWQ2EJNaueCNT/cQU9L6XWBbWmorWPQT9bkbk+fhsuLr8wWrzXKagO3oWszBO7MSx+GfaRk4E6A==" + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.5.2.tgz", + "integrity": "sha512-xQ9oVLrun/eCG/7ru3R+I5bJ7shsD8fFwLEY7yPe27/+fDHCNj0OT5EoG5ZbFyOxOcG6yTwW8oTz/dWyFnyGpg==", + "dev": true, + "license": "MIT" }, "node_modules/embla-carousel-autoplay": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/embla-carousel-autoplay/-/embla-carousel-autoplay-8.5.1.tgz", - "integrity": "sha512-FnZklFpePfp8wbj177UwVaGFehgs+ASVcJvYLWTtHuYKURynCc3IdDn2qrn0E5Qpa3g9yeGwCS4p8QkrZmO8xg==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/embla-carousel-autoplay/-/embla-carousel-autoplay-8.5.2.tgz", + "integrity": "sha512-27emJ0px3q/c0kCHCjwRrEbYcyYUPfGO3g5IBWF1i7714TTzE6L9P81V6PHLoSMAKJ1aHoT2e7YFOsuFKCbyag==", + "dev": true, + "license": "MIT", "peerDependencies": { - "embla-carousel": "8.5.1" + "embla-carousel": "8.5.2" } }, "node_modules/embla-carousel-fade": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/embla-carousel-fade/-/embla-carousel-fade-8.5.1.tgz", - "integrity": "sha512-n7vRe2tsTW0vc0Xxtk3APoxhUSXIGh/lGRKYtBJS/SWDeXf9E3qVUst4MfHhwXaHlfu5PLqG3xIEDAr2gwbbNA==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/embla-carousel-fade/-/embla-carousel-fade-8.5.2.tgz", + "integrity": "sha512-QJ46Xy+mpijjquQeIY0d0sPSy34XduREUnz7tn1K20hcKyZYTONNIXQZu3GGNwG59cvhMqYJMw9ki92Rjd14YA==", + "dev": true, + "license": "MIT", "peerDependencies": { - "embla-carousel": "8.5.1" + "embla-carousel": "8.5.2" } }, "node_modules/emittery": { @@ -18542,6 +18570,8 @@ "version": "6.9.4", "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-6.9.4.tgz", "integrity": "sha512-v2NTsZe2FF59Y+sDykKY+XjqZ0cPfhq/hikWVL88BqLivnNiEffAsac6rP6H45ff9wG9LL5ToiDqrLEP9GX9mw==", + "dev": true, + "license": "MIT", "dependencies": { "tabbable": "^5.3.3" } @@ -19642,6 +19672,8 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "dev": true, + "license": "MIT", "dependencies": { "capital-case": "^1.0.4", "tslib": "^2.0.3" @@ -26553,6 +26585,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, "dependencies": { "tslib": "^2.0.3" } @@ -27616,6 +27649,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -27683,6 +27717,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -28355,6 +28390,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", "integrity": "sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==", + "license": "MIT", "engines": { "node": "*" } @@ -29307,6 +29343,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -29396,6 +29433,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -29421,6 +29459,8 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dev": true, + "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -29716,6 +29756,8 @@ "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", + "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -31660,6 +31702,8 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -31996,6 +32040,8 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, + "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -32872,7 +32918,9 @@ "node_modules/tabbable": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.3.3.tgz", - "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==" + "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==", + "dev": true, + "license": "MIT" }, "node_modules/table": { "version": "6.8.2", @@ -34781,6 +34829,8 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -34789,6 +34839,8 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" }