diff --git a/components.d.ts b/components.d.ts index e31119b3..728a1141 100644 --- a/components.d.ts +++ b/components.d.ts @@ -106,6 +106,7 @@ declare module '@vue/runtime-core' { Ipv4RangeExpander: typeof import('./src/tools/ipv4-range-expander/ipv4-range-expander.vue')['default'] Ipv4SubnetCalculator: typeof import('./src/tools/ipv4-subnet-calculator/ipv4-subnet-calculator.vue')['default'] Ipv6UlaGenerator: typeof import('./src/tools/ipv6-ula-generator/ipv6-ula-generator.vue')['default'] + IsbnValidatorAndParser: typeof import('./src/tools/isbn-validator-and-parser/isbn-validator-and-parser.vue')['default'] JsonDiff: typeof import('./src/tools/json-diff/json-diff.vue')['default'] JsonMinify: typeof import('./src/tools/json-minify/json-minify.vue')['default'] JsonToCsv: typeof import('./src/tools/json-to-csv/json-to-csv.vue')['default'] diff --git a/package.json b/package.json index fd6c02e6..58addc4a 100644 --- a/package.json +++ b/package.json @@ -64,6 +64,7 @@ "highlight.js": "^11.7.0", "iarna-toml-esm": "^3.0.5", "ibantools": "^4.3.3", + "isbn3": "^1.1.44", "json5": "^2.2.3", "jwt-decode": "^3.1.2", "libphonenumber-js": "^1.10.28", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bd6c38c9..7415d117 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -92,6 +92,9 @@ dependencies: ibantools: specifier: ^4.3.3 version: 4.3.3 + isbn3: + specifier: ^1.1.44 + version: 1.1.45 json5: specifier: ^2.2.3 version: 2.2.3 @@ -6434,6 +6437,12 @@ packages: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true + /isbn3@1.1.45: + resolution: {integrity: sha512-9oD3yItVFRlYhm/K6RI2K6f+Dti0unzG74X9I7D+xVKMK3TbRl2PMvnWgK6scKnvk4t0BZFyNIznX4H45RrwzQ==} + engines: {node: '>= 6.4.0'} + hasBin: true + dev: false + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true diff --git a/src/tools/index.ts b/src/tools/index.ts index aa861c93..1d1027c9 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -80,6 +80,7 @@ import { tool as urlParser } from './url-parser'; import { tool as uuidGenerator } from './uuid-generator'; import { tool as macAddressLookup } from './mac-address-lookup'; import { tool as xmlFormatter } from './xml-formatter'; +import { tool as isbnValidatorAndParser } from './isbn-validator-and-parser'; import { tool as yamlViewer } from './yaml-viewer'; export const toolsByCategory: ToolCategory[] = [ @@ -176,7 +177,11 @@ export const toolsByCategory: ToolCategory[] = [ }, { name: 'Data', - components: [phoneParserAndFormatter, ibanValidatorAndParser], + components: [ + phoneParserAndFormatter, + ibanValidatorAndParser, + isbnValidatorAndParser, + ], }, ]; diff --git a/src/tools/isbn-validator-and-parser/index.ts b/src/tools/isbn-validator-and-parser/index.ts new file mode 100644 index 00000000..3782ac39 --- /dev/null +++ b/src/tools/isbn-validator-and-parser/index.ts @@ -0,0 +1,12 @@ +import { Books } from '@vicons/tabler'; +import { defineTool } from '../tool'; + +export const tool = defineTool({ + name: 'ISBN Validator and Parser', + path: '/isbn-validator-and-parser', + description: 'Parse, validate, format and get infos for an ISBN', + keywords: ['isbn', 'validator', 'parser', 'formatter'], + component: () => import('./isbn-validator-and-parser.vue'), + icon: Books, + createdAt: new Date('2024-01-10'), +}); diff --git a/src/tools/isbn-validator-and-parser/isbn-validator-and-parser.vue b/src/tools/isbn-validator-and-parser/isbn-validator-and-parser.vue new file mode 100644 index 00000000..23afff1e --- /dev/null +++ b/src/tools/isbn-validator-and-parser/isbn-validator-and-parser.vue @@ -0,0 +1,101 @@ + + +