diff --git a/package-lock.json b/package-lock.json index 0eb3b1db..46384a42 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "open-props", - "version": "1.3.12", + "version": "1.3.16", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "open-props", - "version": "1.3.12", + "version": "1.3.16", "license": "MIT", "devDependencies": { "ava": "^3.15.0", @@ -19,7 +19,8 @@ "postcss-cli": "^8.3.1", "postcss-combine-duplicated-selectors": "^10.0.3", "postcss-import": "^14.0.2", - "postcss-preset-env": "6.7.x" + "postcss-preset-env": "6.7.x", + "type-fest": "^2.12.2" } }, "node_modules/@babel/code-frame": { @@ -7508,6 +7509,15 @@ "node": ">=8" } }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -8557,12 +8567,15 @@ "dev": true }, "node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.2.tgz", + "integrity": "sha512-qt6ylCGpLjZ7AaODxbpyBZSs9fCI9SkL3Z9q2oxMBQhs/uyY+VD8jHA8ULCGmWQJlBgqvO3EJeAngOHD8zQCrQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/typedarray-to-buffer": { @@ -14907,6 +14920,14 @@ "normalize-package-data": "^2.5.0", "parse-json": "^5.0.0", "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } } }, "readable-stream": { @@ -15754,9 +15775,9 @@ "dev": true }, "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.2.tgz", + "integrity": "sha512-qt6ylCGpLjZ7AaODxbpyBZSs9fCI9SkL3Z9q2oxMBQhs/uyY+VD8jHA8ULCGmWQJlBgqvO3EJeAngOHD8zQCrQ==", "dev": true }, "typedarray-to-buffer": { diff --git a/package.json b/package.json index 002a24dc..82b41903 100644 --- a/package.json +++ b/package.json @@ -20,10 +20,12 @@ "main": "dist/open-props.cjs", "unpkg": "open-props.min.css", "module": "dist/open-props.module.js", + "types": "dist/types/index.d.ts", "exports": { ".": { "import": "./dist/open-props.module.js", "require": "./dist/open-props.cjs", + "types": "./dist/types/index.d.ts", "default": "./dist/open-props.cjs" }, "./src": "./src/index.js", @@ -153,6 +155,7 @@ "postcss-cli": "^8.3.1", "postcss-combine-duplicated-selectors": "^10.0.3", "postcss-import": "^14.0.2", - "postcss-preset-env": "6.7.x" + "postcss-preset-env": "6.7.x", + "type-fest": "^2.12.2" } } diff --git a/src/index.js b/src/index.js index 9ee06628..ce0eabcf 100644 --- a/src/index.js +++ b/src/index.js @@ -18,13 +18,18 @@ const camelize = text => { return text.substr(0, 1).toLowerCase() + text.substr(1) } -const mapToObjectNotation = props => { +/** + * @template T + * @param {T} props + * @returns {T & import("type-fest").CamelCasedPropertiesDeep} + */ +const keysToCamelCase = (props) => { for (var prop in props) props[camelize(prop)] = props[prop] return props } -const OpenProps = mapToObjectNotation({ +const OpenProps = keysToCamelCase({ ...Animations, ...Sizes, ...Colors, diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..f144613a --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "rootDir": "src", + "declarationDir": "dist/types", + "allowJs": true, + "declaration": true, + "emitDeclarationOnly": true, + "esModuleInterop": true + }, + "include": ["src"], + "exclude": ["node_modules", "dist"] +}