Emoji favicons for the web
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: add version parser

+52 -10
+2 -2
source/background.ts
··· 3 3 */ 4 4 5 5 import type { Tab, TabChangeInfo } from 'browser'; 6 - import type { Settings, SettingsV1 } from './settings.ts'; 6 + import type { Settings, SettingsV1 } from './utilities/settings.ts'; 7 7 8 8 import browserAPI from 'browser'; 9 9 import { ··· 12 12 LEGACY_STORAGE_KEYS, 13 13 migrateFromV1, 14 14 STORAGE_KEYS, 15 - } from './settings.ts'; 15 + } from './utilities/settings.ts'; 16 16 import FaviconData from './utilities/favicon_data.ts'; 17 17 import Autoselector from './utilities/autoselector.ts'; 18 18
+1 -1
source/options.tsx
··· 3 3 import { Fragment, h, render } from 'preact'; 4 4 import { useCallback } from 'preact/hooks'; 5 5 6 - import { Settings, STORAGE_KEYS } from './settings.ts'; 6 + import { Settings, STORAGE_KEYS } from './utilities/settings.ts'; 7 7 import Header from './components/header.tsx'; 8 8 import Switch from './components/switch.tsx'; 9 9
+1 -1
source/pages/favicons_page.tsx
··· 4 4 import { Fragment, h } from 'preact'; 5 5 import { useEffect } from 'preact/hooks'; 6 6 7 - import { DEFAULT_SETTINGS, Settings } from '../settings.ts'; 7 + import { DEFAULT_SETTINGS, Settings } from '../utilities/settings.ts'; 8 8 import List from '../components/list.tsx'; 9 9 import Only from '../components/only.tsx'; 10 10 import useListState from '../hooks/use_list_state.ts';
+1 -1
source/pages/settings_page.tsx
··· 4 4 import { Fragment, h } from 'preact'; 5 5 import { useCallback } from 'preact/hooks'; 6 6 7 - import { DEFAULT_SETTINGS, Settings } from '../settings.ts'; 7 + import { DEFAULT_SETTINGS, Settings } from '../utilities/settings.ts'; 8 8 import Checkbox, { Target } from '../components/checkbox.tsx'; 9 9 import Only from '../components/only.tsx'; 10 10 import { t } from '../utilities/i18n.ts';
+1 -1
source/popup.tsx
··· 7 7 import FaviconData from './utilities/favicon_data.ts'; 8 8 import useBrowserStorage from './hooks/use_browser_storage.ts'; 9 9 import useStatus from './hooks/use_status.ts'; 10 - import { Settings, STORAGE_KEYS } from './settings.ts'; 10 + import { Settings, STORAGE_KEYS } from './utilities/settings.ts'; 11 11 12 12 const queryOptions = { active: true }; 13 13
+6 -4
source/settings.ts source/utilities/settings.ts
··· 1 - import FaviconData from './utilities/favicon_data.ts'; 2 - import manifest from './manifest.json' assert { type: 'json' }; 3 1 import * as emoji from 'emoji'; 2 + import manifest from '../manifest.json' assert { type: 'json' }; 3 + import FaviconData from './favicon_data.ts'; 4 4 5 5 export interface Settings { 6 6 version: string; ··· 65 65 major: number; 66 66 minor: number; 67 67 patch: number; 68 + descriptor: string; 68 69 } { 69 70 if (!version) throw new Error('No Version Detected'); 70 71 71 - const [major, minor, patch] = version.split('.'); 72 + const [major, minor, patch, ...descriptors] = version.split(/\.|-/); 72 73 73 74 if (major == null || minor == null || patch == null) { 74 - throw new Error(`error parsing version ${version} `); 75 + throw new Error(`Error Parsing Version ${version}`); 75 76 } 76 77 77 78 return { 78 79 major: Number(major), 79 80 minor: Number(minor), 80 81 patch: Number(patch), 82 + descriptor: descriptors.join('-') || '', 81 83 }; 82 84 } 83 85
+40
source/utilities/__tests__/settings.test.ts
··· 1 + import { assertEquals } from 'asserts'; 2 + import { describe, it } from 'bdd'; 3 + 4 + import { parseVersion } from '../settings.ts'; 5 + 6 + describe('parseVersion', () => { 7 + it('should parse version with descriptor', () => { 8 + assertEquals(parseVersion('2.0.0-beta-1'), { 9 + major: 2, 10 + minor: 0, 11 + patch: 0, 12 + descriptor: 'beta-1', 13 + }); 14 + }); 15 + 16 + it('should parse version without descriptor', () => { 17 + assertEquals(parseVersion('1.0.3'), { 18 + major: 1, 19 + minor: 0, 20 + patch: 3, 21 + descriptor: '', 22 + }); 23 + }); 24 + 25 + it('should error if no version', () => { 26 + try { 27 + parseVersion(''); 28 + } catch (e) { 29 + assertEquals(e.message, 'No Version Detected'); 30 + } 31 + }); 32 + 33 + it('should error if invalid version', () => { 34 + try { 35 + parseVersion('51234'); 36 + } catch (e) { 37 + assertEquals(e.message, 'Error Parsing Version 51234'); 38 + } 39 + }); 40 + });