From 8f739807d5191a4c2ea9326ac6fee9107c6c2006 Mon Sep 17 00:00:00 2001 From: Ramy Melo Date: Fri, 4 Mar 2022 11:37:21 -0500 Subject: [PATCH] chore: auto fixed prettier rules in src and tests npx eslint --fix src/**/*.ts npx eslint --fix tests/**/*.ts --- packages/utils/src/loader/custom.ts | 10 ++++-- packages/utils/src/loader/fs.ts | 16 ++++++---- packages/utils/src/loader/loader.ts | 17 +++++----- packages/utils/src/loader/modern.ts | 4 +-- packages/utils/src/loader/types.ts | 16 +++++----- packages/utils/src/loader/utils.ts | 33 +++++++++++++------- packages/utils/src/svg/encode-svg-for-css.ts | 13 ++++++-- packages/utils/tests/get-custom-icon-test.ts | 7 +++-- packages/utils/tests/iconify-icon-test.ts | 32 ++++++++++--------- packages/utils/tests/load-icon-test.ts | 19 ++++++----- 10 files changed, 103 insertions(+), 64 deletions(-) diff --git a/packages/utils/src/loader/custom.ts b/packages/utils/src/loader/custom.ts index 321a6c2..c714bc7 100644 --- a/packages/utils/src/loader/custom.ts +++ b/packages/utils/src/loader/custom.ts @@ -1,5 +1,9 @@ import createDebugger from 'debug'; -import type { CustomIconLoader, IconifyLoaderOptions, InlineCollection } from './types'; +import type { + CustomIconLoader, + IconifyLoaderOptions, + InlineCollection, +} from './types'; import { mergeIconProps } from './utils'; const debug = createDebugger('@iconify-loader:custom'); @@ -11,7 +15,7 @@ export async function getCustomIcon( custom: CustomIconLoader | InlineCollection, collection: string, icon: string, - options?: IconifyLoaderOptions, + options?: IconifyLoaderOptions ): Promise { let result: string | undefined | null; @@ -37,7 +41,7 @@ export async function getCustomIcon( collection, icon, options, - undefined, + undefined ); } } diff --git a/packages/utils/src/loader/fs.ts b/packages/utils/src/loader/fs.ts index 50a12f5..2fe2e58 100644 --- a/packages/utils/src/loader/fs.ts +++ b/packages/utils/src/loader/fs.ts @@ -1,12 +1,15 @@ import { promises as fs, Stats } from 'fs'; -import { isPackageExists, resolveModule } from 'local-pkg' -import type { IconifyJSON } from '@iconify/types' +import { isPackageExists, resolveModule } from 'local-pkg'; +import type { IconifyJSON } from '@iconify/types'; import { tryInstallPkg } from './install-pkg'; const _collections: Record> = {}; const isLegacyExists = isPackageExists('@iconify/json'); -export async function loadCollectionFromFS(name: string, autoInstall = false): Promise { +export async function loadCollectionFromFS( + name: string, + autoInstall = false +): Promise { if (!_collections[name]) { _collections[name] = task(); } @@ -30,9 +33,10 @@ export async function loadCollectionFromFS(name: string, autoInstall = false): P return undefined; } if (stat && stat.isFile()) { - return JSON.parse(await fs.readFile(jsonPath as string, 'utf8')) as IconifyJSON; - } - else { + return JSON.parse( + await fs.readFile(jsonPath as string, 'utf8') + ) as IconifyJSON; + } else { return undefined; } } diff --git a/packages/utils/src/loader/loader.ts b/packages/utils/src/loader/loader.ts index 830a799..3ffed28 100644 --- a/packages/utils/src/loader/loader.ts +++ b/packages/utils/src/loader/loader.ts @@ -3,7 +3,7 @@ import { searchForIcon } from './modern'; import { warnOnce } from './install-pkg'; import type { IconifyLoaderOptions } from './types'; -export const isNode = typeof process < 'u' && typeof process.stdout < 'u' +export const isNode = typeof process < 'u' && typeof process.stdout < 'u'; export async function loadIcon( collection: string, @@ -33,8 +33,7 @@ async function importFsModule(): Promise { try { // cjs environments return require('./fs.js'); - } - catch { + } catch { return undefined; } } @@ -44,12 +43,15 @@ async function loadNodeBuiltinIcon( collection: string, icon: string, options?: IconifyLoaderOptions, - warn = true, + warn = true ): Promise { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore const { loadCollectionFromFS } = await importFsModule(); - const iconSet = await loadCollectionFromFS(collection, options?.autoInstall); + const iconSet = await loadCollectionFromFS( + collection, + options?.autoInstall + ); if (iconSet) { // possible icon names const ids = [ @@ -61,7 +63,8 @@ async function loadNodeBuiltinIcon( } if (warn) { - warnOnce(`failed to load \`@iconify-json/${collection}\`, have you installed it?`); + warnOnce( + `failed to load \`@iconify-json/${collection}\`, have you installed it?` + ); } } - diff --git a/packages/utils/src/loader/modern.ts b/packages/utils/src/loader/modern.ts index a5b5f51..36bc4cc 100644 --- a/packages/utils/src/loader/modern.ts +++ b/packages/utils/src/loader/modern.ts @@ -13,7 +13,7 @@ export async function searchForIcon( iconSet: IconifyJSON, collection: string, ids: string[], - options?: IconifyLoaderOptions, + options?: IconifyLoaderOptions ): Promise { let iconData: FullIconifyIcon | null; const { customize } = options?.customizations ?? {}; @@ -34,7 +34,7 @@ export async function searchForIcon( collection, id, options, - () => attributes, + () => attributes ); } } diff --git a/packages/utils/src/loader/types.ts b/packages/utils/src/loader/types.ts index ce0018c..3fb278c 100644 --- a/packages/utils/src/loader/types.ts +++ b/packages/utils/src/loader/types.ts @@ -80,36 +80,36 @@ export type IconifyLoaderOptions = { * * @default false */ - addXmlNs?: boolean + addXmlNs?: boolean; /** * Scale of icons against 1em */ - scale?: number + scale?: number; /** * Style to apply to icons by default * * @default '' */ - defaultStyle?: string + defaultStyle?: string; /** * Class names to apply to icons by default * * @default '' */ - defaultClass?: string + defaultClass?: string; /** * Loader for custom loaders */ - customCollections?: Record + customCollections?: Record; /** * Icon customizer */ - customizations?: IconCustomizations + customizations?: IconCustomizations; /** * Auto install icon sources package when the usages is detected @@ -118,5 +118,5 @@ export type IconifyLoaderOptions = { * * @default false */ - autoInstall?: boolean -} + autoInstall?: boolean; +}; diff --git a/packages/utils/src/loader/utils.ts b/packages/utils/src/loader/utils.ts index fec837b..c1d0f7e 100644 --- a/packages/utils/src/loader/utils.ts +++ b/packages/utils/src/loader/utils.ts @@ -6,16 +6,21 @@ export async function mergeIconProps( collection: string, icon: string, options?: IconifyLoaderOptions, - propsProvider?: () => Awaitable>, + propsProvider?: () => Awaitable> ): Promise { - const { scale, addXmlNs = false } = options ?? {} - const { - additionalProps = {}, - iconCustomizer, - } = options?.customizations ?? {}; + const { scale, addXmlNs = false } = options ?? {}; + const { additionalProps = {}, iconCustomizer } = + options?.customizations ?? {}; const props: Record = (await propsProvider?.()) ?? {}; - if (!svg.includes(" width=") && !svg.includes(" height=") && typeof scale === 'number') { - if ((typeof props.width === 'undefined' || props.width === null) && (typeof props.height === 'undefined' || props.height === null)) { + if ( + !svg.includes(' width=') && + !svg.includes(' height=') && + typeof scale === 'number' + ) { + if ( + (typeof props.width === 'undefined' || props.width === null) && + (typeof props.height === 'undefined' || props.height === null) + ) { props.width = `${scale}em`; props.height = `${scale}em`; } @@ -33,18 +38,24 @@ export async function mergeIconProps( props['xmlns'] = 'http://www.w3.org/2000/svg'; } // add xmlns:xlink if xlink present and the xmlns missing - if (!svg.includes(' xmlns:xlink=') && svg.includes('xlink:') && !props['xmlns:xlink']) { + if ( + !svg.includes(' xmlns:xlink=') && + svg.includes('xlink:') && + !props['xmlns:xlink'] + ) { props['xmlns:xlink'] = 'http://www.w3.org/1999/xlink'; } } svg = svg.replace( ' `${p}="${props[p]}"`).join(' ')}` + ` `${p}="${props[p]}"`) + .join(' ')}` ); if (svg && options) { - const { defaultStyle, defaultClass } = options + const { defaultStyle, defaultClass } = options; // additional props and iconCustomizer takes precedence if (defaultClass && !svg.includes(' class=')) { svg = svg.replace('') ? svg.replace('', '') : svg; if (!useSvg.includes(' xmlns:xlink=') && useSvg.includes(' xlink:')) { - useSvg = useSvg.replace(' { const result = await getCustomIcon(() => svg, 'a', 'b', { customizations: { transform(icon) { - return icon.replace(' -1).toBeTruthy(); expect(result && result.indexOf('height="1em"') > -1).toBeTruthy(); diff --git a/packages/utils/tests/iconify-icon-test.ts b/packages/utils/tests/iconify-icon-test.ts index 75a284a..ad702cb 100644 --- a/packages/utils/tests/iconify-icon-test.ts +++ b/packages/utils/tests/iconify-icon-test.ts @@ -1,16 +1,17 @@ import { loadIcon } from '../lib'; describe('Testing loadIcon with @iconify-json/flat-color-icons>', () => { - test('loadIcon works', async () => { const result = await loadIcon('flat-color-icons', 'up-right'); expect(result).toBeTruthy(); }); test('loadIcon adds xmlns:xlink', async () => { - const result = await loadIcon('flat-color-icons', 'up-right', { addXmlNs: true }); + const result = await loadIcon('flat-color-icons', 'up-right', { + addXmlNs: true, + }); expect(result).toBeTruthy(); - expect(result && result.indexOf('xmlns:xlink=') > - 1).toBeTruthy(); + expect(result && result.indexOf('xmlns:xlink=') > -1).toBeTruthy(); }); test('loadIcon with customize with default style and class', async () => { @@ -23,13 +24,13 @@ describe('Testing loadIcon with @iconify-json/flat-color-icons>', () => { props.height = '2em'; return props; }, - } + }, }); expect(result).toBeTruthy(); - expect(result && result.indexOf('margin-top: 1rem;') > - 1).toBeTruthy(); - expect(result && result.indexOf('class="clazz"') > - 1).toBeTruthy(); - expect(result && result.indexOf('width="2em"') > - 1).toBeTruthy(); - expect(result && result.indexOf('height="2em"') > - 1).toBeTruthy(); + expect(result && result.indexOf('margin-top: 1rem;') > -1).toBeTruthy(); + expect(result && result.indexOf('class="clazz"') > -1).toBeTruthy(); + expect(result && result.indexOf('width="2em"') > -1).toBeTruthy(); + expect(result && result.indexOf('height="2em"') > -1).toBeTruthy(); }); test('loadIcon preserves customizations order', async () => { @@ -39,16 +40,19 @@ describe('Testing loadIcon with @iconify-json/flat-color-icons>', () => { defaultClass: 'clazz1', customizations: { additionalProps: { - 'width': '2em', - 'height': '2em', - 'style': 'color: blue;', - 'class': 'clazz2', + width: '2em', + height: '2em', + style: 'color: blue;', + class: 'clazz2', }, // it will never be called, it is not a custom icon transform(icon) { - return icon.replace(' { +const loader: CustomIconLoader = async (name) => { return await fs.readFile(`${fixturesDir}/${name}.svg`, 'utf8'); -} +}; describe('Testing loadIcon', () => { test('CustomCollection', async () => { @@ -13,8 +13,8 @@ describe('Testing loadIcon', () => { expect(svg).toBeTruthy(); const result = await loadIcon('a', 'circle', { customCollections: { - 'a': { - 'circle': svg as string, + a: { + circle: svg as string, }, }, }); @@ -27,13 +27,16 @@ describe('Testing loadIcon', () => { expect(svg).toBeTruthy(); const result = await loadIcon('a', 'circle', { customCollections: { - 'a': { - 'circle': svg as string, + a: { + circle: svg as string, }, }, customizations: { transform(icon) { - return icon.replace(' { const result = await loadIcon('a', '1f3eb', { customCollections: { - 'a': { + a: { '1f3eb': svg as string, }, },