validate-element-name
Advanced tools
Comparing version 2.1.1 to 3.0.0
39
cli.js
#!/usr/bin/env node | ||
'use strict'; | ||
var logSymbols = require('log-symbols'); | ||
var meow = require('meow'); | ||
var validate = require('./'); | ||
import logSymbols from 'log-symbols'; | ||
import meow from 'meow'; | ||
import validate from './index.js'; | ||
var cli = meow([ | ||
'Usage', | ||
' $ validate-element-name <element-name>', | ||
'', | ||
'Example', | ||
' $ validate-element-name s-slider', | ||
' ' + logSymbols.success + ' Valid element name.' | ||
]); | ||
const cli = meow(` | ||
Usage | ||
$ validate-element-name <element-name> | ||
Example | ||
$ validate-element-name s-slider | ||
${logSymbols.success} Valid element name | ||
`, { | ||
importMeta: import.meta | ||
}); | ||
if (cli.input.length === 0) { | ||
@@ -21,13 +22,13 @@ console.error('Specify an element name'); | ||
var res = validate(cli.input[0]); | ||
const result = validate(cli.input[0]); | ||
if (res.isValid) { | ||
if (res.message) { | ||
console.log(logSymbols.success + ' Valid element name, but...'); | ||
console.log(logSymbols.warning + ' ' + res.message); | ||
if (result.isValid) { | ||
if (result.message) { | ||
console.log(`${logSymbols.success} Valid element name, but…`); | ||
console.log(`${logSymbols.warning} ${result.message}`); | ||
} else { | ||
console.log(logSymbols.success + ' Valid element name.'); | ||
console.log(`${logSymbols.success} Valid element name.`); | ||
} | ||
} else { | ||
console.error(logSymbols.error + ' ' + res.message); | ||
console.error(`${logSymbols.error} ${result.message}`); | ||
} |
29
index.js
@@ -1,6 +0,5 @@ | ||
'use strict'; | ||
var isPotentialCustomElementName = require('is-potential-custom-element-name'); | ||
import isPotentialCustomElementName from 'is-potential-custom-element-name'; | ||
// https://html.spec.whatwg.org/multipage/scripting.html#valid-custom-element-name | ||
var reservedNames = [ | ||
const reservedNames = new Set([ | ||
'annotation-xml', | ||
@@ -14,3 +13,3 @@ 'color-profile', | ||
'missing-glyph' | ||
]; | ||
]); | ||
@@ -26,3 +25,3 @@ function hasError(name) { | ||
if (name.indexOf('-') === -1) { | ||
if (!name.includes('-')) { | ||
return 'Custom element names must contain a hyphen. Example: unicorn-cake'; | ||
@@ -44,3 +43,3 @@ } | ||
if (reservedNames.indexOf(name) !== -1) { | ||
if (reservedNames.has(name)) { | ||
return 'The supplied element name is reserved and can\'t be used.\nSee: https://html.spec.whatwg.org/multipage/scripting.html#valid-custom-element-name'; | ||
@@ -71,11 +70,11 @@ } | ||
if (/-$/.test(name)) { | ||
if (name.endsWith('-')) { | ||
return 'Custom element names should not end with a hyphen.'; | ||
} | ||
if (/[\.]/.test(name)) { | ||
if (/\./.test(name)) { | ||
return 'Custom element names should not contain a dot character as it would need to be escaped in a CSS selector.'; | ||
} | ||
if (/[^\x20-\x7E]/.test(name)) { | ||
if (/[^\u0020-\u007E]/.test(name)) { | ||
return 'Custom element names should not contain non-ASCII characters.'; | ||
@@ -88,3 +87,3 @@ } | ||
if (/[^a-z0-9]{2}/i.test(name)) { | ||
if (/[^a-z\d]{2}/i.test(name)) { | ||
return 'Custom element names should not contain consecutive non-alpha characters.'; | ||
@@ -94,9 +93,9 @@ } | ||
module.exports = function (name) { | ||
var errMsg = hasError(name); | ||
export default function validateElementName(name) { | ||
const errorMessage = hasError(name); | ||
return { | ||
isValid: !errMsg, | ||
message: errMsg || hasWarning(name) | ||
isValid: !errorMessage, | ||
message: errorMessage || hasWarning(name) | ||
}; | ||
}; | ||
} |
{ | ||
"name": "validate-element-name", | ||
"version": "2.1.1", | ||
"description": "Validate the name of a custom element", | ||
"license": "MIT", | ||
"repository": "sindresorhus/validate-element-name", | ||
"author": { | ||
"name": "Sindre Sorhus", | ||
"email": "sindresorhus@gmail.com", | ||
"url": "sindresorhus.com" | ||
}, | ||
"bin": "cli.js", | ||
"engines": { | ||
"node": ">=0.10.0" | ||
}, | ||
"scripts": { | ||
"test": "xo && ava" | ||
}, | ||
"files": [ | ||
"index.js", | ||
"cli.js" | ||
], | ||
"keywords": [ | ||
"cli-app", | ||
"cli", | ||
"validate", | ||
"validator", | ||
"check", | ||
"custom", | ||
"element", | ||
"elements", | ||
"elem", | ||
"el", | ||
"html", | ||
"tag", | ||
"name", | ||
"wc", | ||
"web", | ||
"components" | ||
], | ||
"dependencies": { | ||
"is-potential-custom-element-name": "^1.0.0", | ||
"log-symbols": "^1.0.0", | ||
"meow": "^3.7.0" | ||
}, | ||
"devDependencies": { | ||
"ava": "*", | ||
"xo": "*" | ||
} | ||
"name": "validate-element-name", | ||
"version": "3.0.0", | ||
"description": "Validate the name of a custom element", | ||
"license": "MIT", | ||
"repository": "sindresorhus/validate-element-name", | ||
"funding": "https://github.com/sponsors/sindresorhus", | ||
"author": { | ||
"name": "Sindre Sorhus", | ||
"email": "sindresorhus@gmail.com", | ||
"url": "https://sindresorhus.com/" | ||
}, | ||
"type": "module", | ||
"exports": "./index.js", | ||
"bin": "./cli.js", | ||
"engines": { | ||
"node": ">=12.20" | ||
}, | ||
"scripts": { | ||
"test": "xo && ava" | ||
}, | ||
"files": [ | ||
"index.js", | ||
"cli.js" | ||
], | ||
"keywords": [ | ||
"cli-app", | ||
"cli", | ||
"validate", | ||
"validator", | ||
"check", | ||
"custom", | ||
"element", | ||
"elements", | ||
"html", | ||
"tag", | ||
"name", | ||
"wc", | ||
"web", | ||
"components" | ||
], | ||
"dependencies": { | ||
"is-potential-custom-element-name": "^1.0.1", | ||
"log-symbols": "^5.0.0", | ||
"meow": "^10.0.1" | ||
}, | ||
"devDependencies": { | ||
"ava": "^3.15.0", | ||
"xo": "^0.40.2" | ||
} | ||
} |
@@ -1,2 +0,2 @@ | ||
# validate-element-name [![Build Status](https://travis-ci.org/sindresorhus/validate-element-name.svg?branch=master)](https://travis-ci.org/sindresorhus/validate-element-name) | ||
# validate-element-name | ||
@@ -9,14 +9,12 @@ > Validate the name of a [custom element](http://www.html5rocks.com/en/tutorials/webcomponents/customelements/) | ||
## Install | ||
``` | ||
$ npm install --save validate-element-name | ||
$ npm install validate-element-name | ||
``` | ||
## Usage | ||
```js | ||
const validate = require('validate-element-name'); | ||
import validateElementName from 'validate-element-name'; | ||
@@ -29,3 +27,2 @@ validate('unicorn'); | ||
## CLI | ||
@@ -47,6 +44,1 @@ | ||
``` | ||
## License | ||
MIT © [Sindre Sorhus](https://sindresorhus.com) |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Yes
6478
103
42
+ Added@babel/code-frame@7.26.2(transitive)
+ Added@babel/helper-validator-identifier@7.25.9(transitive)
+ Added@types/minimist@1.2.5(transitive)
+ Added@types/normalize-package-data@2.4.4(transitive)
+ Addedarrify@1.0.1(transitive)
+ Addedcamelcase@6.3.0(transitive)
+ Addedcamelcase-keys@7.0.2(transitive)
+ Addedchalk@5.4.1(transitive)
+ Addeddecamelize@5.0.1(transitive)
+ Addeddecamelize-keys@1.1.1(transitive)
+ Addedfind-up@5.0.0(transitive)
+ Addedhard-rejection@2.1.0(transitive)
+ Addedhosted-git-info@4.1.0(transitive)
+ Addedindent-string@5.0.0(transitive)
+ Addedis-plain-obj@1.1.0(transitive)
+ Addedis-unicode-supported@1.3.0(transitive)
+ Addedjs-tokens@4.0.0(transitive)
+ Addedjson-parse-even-better-errors@2.3.1(transitive)
+ Addedkind-of@6.0.3(transitive)
+ Addedlines-and-columns@1.2.4(transitive)
+ Addedlocate-path@6.0.0(transitive)
+ Addedlog-symbols@5.1.0(transitive)
+ Addedlru-cache@6.0.0(transitive)
+ Addedmap-obj@4.3.0(transitive)
+ Addedmeow@10.1.5(transitive)
+ Addedmin-indent@1.0.1(transitive)
+ Addedminimist-options@4.1.0(transitive)
+ Addednormalize-package-data@3.0.3(transitive)
+ Addedp-limit@3.1.0(transitive)
+ Addedp-locate@5.0.0(transitive)
+ Addedparse-json@5.2.0(transitive)
+ Addedpath-exists@4.0.0(transitive)
+ Addedpicocolors@1.1.1(transitive)
+ Addedquick-lru@5.1.1(transitive)
+ Addedread-pkg@6.0.0(transitive)
+ Addedread-pkg-up@8.0.0(transitive)
+ Addedredent@4.0.0(transitive)
+ Addedsemver@7.6.3(transitive)
+ Addedstrip-indent@4.0.0(transitive)
+ Addedtrim-newlines@4.1.1(transitive)
+ Addedtype-fest@1.4.0(transitive)
+ Addedyallist@4.0.0(transitive)
+ Addedyargs-parser@20.2.9(transitive)
+ Addedyocto-queue@0.1.0(transitive)
- Removedansi-regex@2.1.1(transitive)
- Removedansi-styles@2.2.1(transitive)
- Removedarray-find-index@1.0.2(transitive)
- Removedcamelcase@2.1.1(transitive)
- Removedcamelcase-keys@2.1.0(transitive)
- Removedchalk@1.1.3(transitive)
- Removedcurrently-unhandled@0.4.1(transitive)
- Removedescape-string-regexp@1.0.5(transitive)
- Removedfind-up@1.1.2(transitive)
- Removedget-stdin@4.0.1(transitive)
- Removedgraceful-fs@4.2.11(transitive)
- Removedhas-ansi@2.0.0(transitive)
- Removedhosted-git-info@2.8.9(transitive)
- Removedindent-string@2.1.0(transitive)
- Removedis-finite@1.1.0(transitive)
- Removedis-utf8@0.2.1(transitive)
- Removedload-json-file@1.1.0(transitive)
- Removedlog-symbols@1.0.2(transitive)
- Removedloud-rejection@1.6.0(transitive)
- Removedmeow@3.7.0(transitive)
- Removedminimist@1.2.8(transitive)
- Removednormalize-package-data@2.5.0(transitive)
- Removedobject-assign@4.1.1(transitive)
- Removedparse-json@2.2.0(transitive)
- Removedpath-exists@2.1.0(transitive)
- Removedpath-parse@1.0.7(transitive)
- Removedpath-type@1.1.0(transitive)
- Removedpify@2.3.0(transitive)
- Removedpinkie@2.0.4(transitive)
- Removedpinkie-promise@2.0.1(transitive)
- Removedread-pkg@1.1.0(transitive)
- Removedread-pkg-up@1.0.1(transitive)
- Removedredent@1.0.0(transitive)
- Removedrepeating@2.0.1(transitive)
- Removedresolve@1.22.10(transitive)
- Removedsemver@5.7.2(transitive)
- Removedsignal-exit@3.0.7(transitive)
- Removedstrip-ansi@3.0.1(transitive)
- Removedstrip-bom@2.0.0(transitive)
- Removedstrip-indent@1.0.1(transitive)
- Removedsupports-color@2.0.0(transitive)
- Removedsupports-preserve-symlinks-flag@1.0.0(transitive)
- Removedtrim-newlines@1.0.0(transitive)
Updatedlog-symbols@^5.0.0
Updatedmeow@^10.0.1