2
0
mirror of https://github.com/iconify/collections-json.git synced 2024-09-16 17:19:03 +00:00

chore: refactor

This commit is contained in:
Joaquín Sánchez Jiménez 2021-09-16 15:33:04 +02:00
parent d389d11f93
commit 0b0bf01ca6
8 changed files with 72 additions and 64 deletions

View File

@ -1,8 +1,3 @@
{ {
"extends": "@antfu/eslint-config", "extends": "@antfu"
"rules": {
"@typescript-eslint/no-unused-vars": "off",
"react/react-in-jsx-scope": "off",
"react/no-unknown-property": "off"
}
} }

1
.npmrc
View File

@ -1 +0,0 @@
shamefully-hoist=true

View File

@ -1,10 +0,0 @@
import { collection, locate } from './finder'
const test = async(): Promise<void> => {
const fa = locate('fa')
console.log(fa)
const faLib = await collection('fa')
console.log(faLib)
}
test()

View File

@ -16,20 +16,20 @@
"composer.md", "composer.md",
"readme.md" "readme.md"
], ],
"main": "dist/finder.js", "main": "dist/index.js",
"module": "dist/finder.mjs", "module": "dist/index.mjs",
"types": "dist/finder.d.ts", "types": "dist/index.d.ts",
"homepage": "https://iconify.design/icon-sets/", "homepage": "https://iconify.design/icon-sets/",
"bugs": "https://github.com/iconify/collections-json/issues", "bugs": "https://github.com/iconify/collections-json/issues",
"scripts": { "scripts": {
"build": "rimraf dist && tsup lib/finder.ts --format cjs,esm --dts", "build": "rimraf dist && tsup src/index.ts --format cjs,esm --dts",
"test": "esno lib/test.ts" "test": "esno src/test.ts"
}, },
"dependencies": { "dependencies": {
"upath": "^2.0.1" "upath": "^2.0.1"
}, },
"devDependencies": { "devDependencies": {
"@antfu/eslint-config": "^0.8.2", "@antfu/eslint-config": "^0.9.0",
"@types/node": "^16.9.1", "@types/node": "^16.9.1",
"@typescript-eslint/eslint-plugin": "^4.31.0", "@typescript-eslint/eslint-plugin": "^4.31.0",
"eslint": "^7.32.0", "eslint": "^7.32.0",

View File

@ -383,25 +383,24 @@ export interface IconifyJSON extends IconifyOptional, IconifyMetaData {
// This is used to reduce duplication. // This is used to reduce duplication.
} }
/**
* Collection info map
*/
export type IconifyMetaDataCollection = {
[prefix: string]: IconifyMetaData
}
const _dirname = typeof __dirname !== 'undefined' ? __dirname : dirname(fileURLToPath(import.meta.url)) const _dirname = typeof __dirname !== 'undefined' ? __dirname : dirname(fileURLToPath(import.meta.url))
const dir = resolve(_dirname, '..') const dir = resolve(_dirname, '..')
/**
* Get root directory of this package
* (not really useful in Node.js because require can do it, but added anyway to match php code)
*
* @returns {string}
*/
const rootDir = () => dir
/** /**
* Locate JSON file * Locate JSON file
* *
* @param {string} name Collection name * @param {string} name Collection name
* @returns {string} Path to collection json file * @returns {string} Path to collection json file
*/ */
const locate = (name: string): PathLike => `${dir}/json/${name}.json` export const locate = (name: string): PathLike => `${dir}/json/${name}.json`
/** /**
* Loads a collection. * Loads a collection.
@ -419,15 +418,15 @@ export const loadCollection = async(path: PathLike): Promise<IconifyJSON> => {
* @param {string} name The name of the collection * @param {string} name The name of the collection
* @return {Promise<IconifyJSON>} * @return {Promise<IconifyJSON>}
*/ */
export const collection = async(name: string): Promise<IconifyJSON> => { export const lookupCollection = async(name: string): Promise<IconifyJSON> => {
return await loadCollection(locate(name)) return await loadCollection(locate(name))
} }
/** /**
* Get list of collections info. * Get list of collections info.
* *
* @return {Promise<IconifyMetaData[]>} * @return {Promise<IconifyMetaDataCollection>}
*/ */
export const collections = async(): Promise<IconifyMetaData[]> => { export const lookupCollections = async(): Promise<IconifyMetaDataCollection> => {
return JSON.parse(await fs.readFile(`${dir}/collections.json`, 'utf8')) return JSON.parse(await fs.readFile(`${dir}/collections.json`, 'utf8'))
} }

12
src/test.ts Normal file
View File

@ -0,0 +1,12 @@
import { lookupCollection, locate, lookupCollections } from '.'
const test = async(): Promise<void> => {
const fa = locate('fa')
console.log(fa)
const faLib = await lookupCollection('fa')
console.log(faLib)
const allCollections = await lookupCollections()
console.log(allCollections.fa)
}
test()

View File

@ -1,20 +1,19 @@
{ {
"compilerOptions": { "compilerOptions": {
"baseUrl": ".",
"module": "ESNext", "module": "ESNext",
"target": "es2017", "target": "es2017",
"lib": ["ESNext", "DOM"], "lib": ["ESNext"],
"esModuleInterop": true, "esModuleInterop": true,
"strict": true, "strict": true,
"strictNullChecks": true, "strictNullChecks": true,
"moduleResolution": "Node", "moduleResolution": "Node",
"resolveJsonModule": true, "resolveJsonModule": true,
"skipLibCheck": true, "skipLibCheck": true,
"jsx": "preserve"
}, },
"exclude": [ "exclude": [
"**/dist", "**/dist",
"**/node_modules", "**/node_modules",
"**/test" "**/test",
"dist"
] ]
} }

View File

@ -2,10 +2,10 @@
# yarn lockfile v1 # yarn lockfile v1
"@antfu/eslint-config-basic@^0.8.1": "@antfu/eslint-config-basic@^0.9.0":
version "0.8.1" version "0.9.0"
resolved "https://registry.yarnpkg.com/@antfu/eslint-config-basic/-/eslint-config-basic-0.8.1.tgz#38938504c324ab2b210ba6e08d60275e565dae59" resolved "https://registry.yarnpkg.com/@antfu/eslint-config-basic/-/eslint-config-basic-0.9.0.tgz#88e6c272df2e359dbd4e90f824d8959480f7dd92"
integrity sha512-LUukPMgwvUTFxnsdMzi6zGmTCmqOul64BYs57R0YOKKxsza/ZvB/Wx3kwgsTxHUcc8i10mw9pAf8RhpHT35RcQ== integrity sha512-jiNycDenS19pppDvaa0oO3wWr4WDIog5Dz6WernBk+FsCyC7UzPfnG1KB3L/sovNVBB80wLZ7anGXZn0gKEHrQ==
dependencies: dependencies:
eslint-config-standard "^16.0.3" eslint-config-standard "^16.0.3"
eslint-plugin-eslint-comments "^3.2.0" eslint-plugin-eslint-comments "^3.2.0"
@ -19,38 +19,52 @@
jsonc-eslint-parser "^1.3.1" jsonc-eslint-parser "^1.3.1"
yaml-eslint-parser "^0.4.1" yaml-eslint-parser "^0.4.1"
"@antfu/eslint-config-react@^0.8.2": "@antfu/eslint-config-react@^0.9.0":
version "0.8.2" version "0.9.0"
resolved "https://registry.yarnpkg.com/@antfu/eslint-config-react/-/eslint-config-react-0.8.2.tgz#29f68136e7facf3fd7fd86cb5ce66e35d3a853f0" resolved "https://registry.yarnpkg.com/@antfu/eslint-config-react/-/eslint-config-react-0.9.0.tgz#ff5a7fc6466e2d213d2c822498373116400529c2"
integrity sha512-HBneMnAHIwV5UTVIKOcfXWnXnHdEndoIjggra9PyJwQjjQahNhT73N7l8c7IjwcQ6NkDOI151SmOQQxi418Yzw== integrity sha512-5b4PHHamJfMTfzmcUb7rDg9oH34delky8ZmTJ+r5LLfbbPdIthYLS9Ybns5v3q6rjhhTsfHOQz3gxp9604tYbQ==
dependencies: dependencies:
"@antfu/eslint-config-ts" "^0.8.2" "@antfu/eslint-config-ts" "^0.9.0"
eslint-plugin-react "^7.25.1" eslint-plugin-react "^7.25.1"
"@antfu/eslint-config-ts@^0.8.2": "@antfu/eslint-config-ts@^0.9.0":
version "0.8.2" version "0.9.0"
resolved "https://registry.yarnpkg.com/@antfu/eslint-config-ts/-/eslint-config-ts-0.8.2.tgz#b4af9fc21a7fa46cf0839c3dff89c035235d1fd2" resolved "https://registry.yarnpkg.com/@antfu/eslint-config-ts/-/eslint-config-ts-0.9.0.tgz#8a04b56a5694381ff1c8657782185c37c437a91a"
integrity sha512-Rx1pGmt6mFTJ+ZZGZXLdWqYezViPWgbLbyPxajqP7rTctzo7bvd6T3qBTMCL5ZbxV+sdaTlYxM1eFN9t2ug/CA== integrity sha512-FXLLgMVjh5MpBvMteYQeQ9vkeL/cV5vig7IRoAJIpG1E5cbE+ENJt6w1YBf45PLQmoV/eZZID7cnT8ZOJ9VJfQ==
dependencies: dependencies:
"@antfu/eslint-config-basic" "^0.8.1" "@antfu/eslint-config-basic" "^0.9.0"
"@typescript-eslint/eslint-plugin" "^4.31.0" "@typescript-eslint/eslint-plugin" "^4.31.0"
"@typescript-eslint/parser" "^4.31.0" "@typescript-eslint/parser" "^4.31.0"
"@antfu/eslint-config-vue@^0.8.2": "@antfu/eslint-config-vue@^0.9.0":
version "0.8.2" version "0.9.0"
resolved "https://registry.yarnpkg.com/@antfu/eslint-config-vue/-/eslint-config-vue-0.8.2.tgz#3e3ff66f6e30dad9e30fc85429c0dbabdc2cf0e2" resolved "https://registry.yarnpkg.com/@antfu/eslint-config-vue/-/eslint-config-vue-0.9.0.tgz#ea3b625b3af01e441295877dd32934a29010d10a"
integrity sha512-m5HLvnyhbTj2kSrddNeQoUIZ+BY7AgWZel7CVkMPajx8SACh4DpYcNFezuwjCwcCM5A/ZulktSKqdF9rEzKWBg== integrity sha512-h1Ab6TdcZyhQhBJIjr3CrI6U66x/izRddTQeF/OrjEyLz6HjeASbUOMgDQhmH9u47+6RP68cR6Wnjls/rlZb2g==
dependencies: dependencies:
"@antfu/eslint-config-ts" "^0.8.2" "@antfu/eslint-config-ts" "^0.9.0"
eslint-plugin-vue "7.17.0" eslint-plugin-vue "7.17.0"
"@antfu/eslint-config@^0.8.2": "@antfu/eslint-config@^0.9.0":
version "0.8.2" version "0.9.0"
resolved "https://registry.yarnpkg.com/@antfu/eslint-config/-/eslint-config-0.8.2.tgz#aecc0283f65105e42278734e533804c41c88cc0f" resolved "https://registry.yarnpkg.com/@antfu/eslint-config/-/eslint-config-0.9.0.tgz#ed62a2c7c4e88b45356d1f925dd8a85e9aaac950"
integrity sha512-MqNrYl30gIPPIPIKVPqc3aQs5DAi9JVohsZHvBw3KeplbJK0SZujDnlaeGxeC7D0Zp+Z4E/D8KxefgJHz1G8Kw== integrity sha512-oQ6kNRHfF7PqZocX2+mfvY/oNdLGPjysb9huVJzMji7QtLAVL5+25Mm/kzJEIfcFWxRpDqctOcflXLYFnXiroA==
dependencies: dependencies:
"@antfu/eslint-config-react" "^0.8.2" "@antfu/eslint-config-react" "^0.9.0"
"@antfu/eslint-config-vue" "^0.8.2" "@antfu/eslint-config-vue" "^0.9.0"
"@typescript-eslint/eslint-plugin" "^4.31.0"
"@typescript-eslint/parser" "^4.31.0"
eslint-config-standard "^16.0.3"
eslint-plugin-eslint-comments "^3.2.0"
eslint-plugin-html "^6.1.2"
eslint-plugin-import "^2.24.2"
eslint-plugin-jsonc "^1.6.0"
eslint-plugin-node "^11.1.0"
eslint-plugin-promise "^5.1.0"
eslint-plugin-unicorn "^35.0.0"
eslint-plugin-vue "7.17.0"
eslint-plugin-yml "^0.10.0"
jsonc-eslint-parser "^1.3.1"
yaml-eslint-parser "^0.4.1"
"@babel/code-frame@7.12.11": "@babel/code-frame@7.12.11":
version "7.12.11" version "7.12.11"