├── .editorconfig ├── .github └── workflows │ └── main.yml ├── .gitignore ├── .npmrc ├── .prettierignore ├── build.js ├── funding.yml ├── index.js ├── license ├── package.json ├── readme.md ├── test.js └── tsconfig.json /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: main 2 | on: 3 | - pull_request 4 | - push 5 | jobs: 6 | main: 7 | name: ${{matrix.node}} 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v3 11 | - uses: actions/setup-node@v3 12 | with: 13 | node-version: ${{matrix.node}} 14 | - run: npm install 15 | - run: npm test 16 | - uses: codecov/codecov-action@v1 17 | strategy: 18 | matrix: 19 | node: 20 | - lts/hydrogen 21 | - node 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | coverage/ 2 | node_modules/ 3 | *.d.ts 4 | *.log 5 | .DS_Store 6 | yarn.lock 7 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | coverage/ 2 | *.md 3 | -------------------------------------------------------------------------------- /build.js: -------------------------------------------------------------------------------- 1 | import assert from 'node:assert/strict' 2 | import fs from 'node:fs/promises' 3 | import fetch from 'node-fetch' 4 | import {fromHtml} from 'hast-util-from-html' 5 | import {select, selectAll} from 'hast-util-select' 6 | import {toString} from 'hast-util-to-string' 7 | import {metaName} from './index.js' 8 | 9 | const response = await fetch('https://wiki.whatwg.org/wiki/MetaExtensions') 10 | const text = await response.text() 11 | const tree = fromHtml(text) 12 | 13 | const table = select('table', tree) 14 | assert(table, 'expected `table`') 15 | const cells = selectAll('tbody tr td:first-child', table) 16 | let index = -1 17 | 18 | while (++index < cells.length) { 19 | const data = toString(cells[index]).trim().toLowerCase() 20 | 21 | if (data) { 22 | metaName.push(data) 23 | } 24 | } 25 | 26 | const list = [...new Set(metaName)].sort() 27 | 28 | await fs.writeFile( 29 | 'index.js', 30 | [ 31 | '/**', 32 | ' * List of values that can be used as `name`s on HTML `meta` elements.', 33 | ' *', 34 | ' * @type {Array}', 35 | ' */', 36 | 'export const metaName = ', 37 | JSON.stringify(list, null, 2), 38 | '' 39 | ].join('\n') 40 | ) 41 | -------------------------------------------------------------------------------- /funding.yml: -------------------------------------------------------------------------------- 1 | github: wooorm 2 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * List of values that can be used as `name`s on HTML `meta` elements. 3 | * 4 | * @type {Array} 5 | */ 6 | export const metaName = [ 7 | 'aglsterms.accessibility', 8 | 'aglsterms.accessmode', 9 | 'aglsterms.act', 10 | 'aglsterms.aggregationlevel', 11 | 'aglsterms.allow-search', 12 | 'aglsterms.availability', 13 | 'aglsterms.case', 14 | 'aglsterms.category', 15 | 'aglsterms.datelicensed', 16 | 'aglsterms.documenttype', 17 | 'aglsterms.function', 18 | 'aglsterms.isbasedon', 19 | 'aglsterms.isbasisfor', 20 | 'aglsterms.jurisdiction', 21 | 'aglsterms.mandate', 22 | 'aglsterms.protectivemarking', 23 | 'aglsterms.regulation', 24 | 'aglsterms.servicetype', 25 | 'alexaverifyid', 26 | 'apple-itunes-app', 27 | 'apple-mobile-web-app-capable', 28 | 'apple-mobile-web-app-status-bar-style', 29 | 'apple-mobile-web-app-title', 30 | 'apple-touch-fullscreen', 31 | 'application-name', 32 | 'application-url', 33 | 'application-version', 34 | 'appstore:bundle_id', 35 | 'appstore:developer_url', 36 | 'appstore:store_id', 37 | 'audience', 38 | 'baiduspider', 39 | 'bitcoin', 40 | 'blazerr-secure', 41 | 'blazerr-seo', 42 | 'blazerr-ssl', 43 | 'blazerr-support-id-noncookies', 44 | 'blazerr-support-identifier', 45 | 'bug.blocked', 46 | 'bug.comment', 47 | 'bug.component', 48 | 'bug.product', 49 | 'bug.short_desc', 50 | 'cfia.gdr.activity', 51 | 'cfia.gdr.commodity', 52 | 'cfia.gdr.include', 53 | 'cfia.gdr.program', 54 | 'citation_author', 55 | 'citation_author_email', 56 | 'citation_author_institution', 57 | 'citation_conference_title', 58 | 'citation_date', 59 | 'citation_dissertation_institution', 60 | 'citation_doi', 61 | 'citation_firstpage', 62 | 'citation_fulltext_html_url', 63 | 'citation_isbn', 64 | 'citation_issn', 65 | 'citation_issue', 66 | 'citation_journal_abbrev', 67 | 'citation_journal_title', 68 | 'citation_keywords', 69 | 'citation_language', 70 | 'citation_lastpage', 71 | 'citation_pdf_url', 72 | 'citation_publication_date', 73 | 'citation_publisher', 74 | 'citation_technical_report_institution', 75 | 'citation_technical_report_number', 76 | 'citation_title', 77 | 'citation_volume', 78 | 'citeseerxbot', 79 | 'collection', 80 | 'contact', 81 | 'creator', 82 | 'csrf-param', 83 | 'csrf-token', 84 | 'da_anonymiseip', 85 | 'da_contactcompany', 86 | 'da_contactemail', 87 | 'da_contactfirstname', 88 | 'da_contactlastname', 89 | 'da_contactname', 90 | 'da_contacttelephone', 91 | 'da_conversioncurrency', 92 | 'da_conversionid', 93 | 'da_conversionvalue', 94 | 'da_goalcurrency', 95 | 'da_goalid', 96 | 'da_goalvalue', 97 | 'da_interactionselector', 98 | 'da_pagerole', 99 | 'da_pagetaxonomy', 100 | 'da_pagetitle', 101 | 'da_pageversion', 102 | 'da_sessionid', 103 | 'da_userid', 104 | 'dc.created', 105 | 'dc.creator', 106 | 'dc.date.issued', 107 | 'dc.datecopyrighted', 108 | 'dc.datesubmitted', 109 | 'dc.description', 110 | 'dc.language', 111 | 'dc.license', 112 | 'dc.mediator', 113 | 'dc.medium', 114 | 'dc.modified', 115 | 'dc.provenance', 116 | 'dc.publisher', 117 | 'dc.references', 118 | 'dc.temporal', 119 | 'dc.title', 120 | 'dc.type', 121 | 'dc.valid', 122 | 'dcs.dcssta', 123 | 'dcterms.abstract', 124 | 'dcterms.accessrights', 125 | 'dcterms.accrualmethod', 126 | 'dcterms.accrualperiodicity', 127 | 'dcterms.accrualpolicy', 128 | 'dcterms.alternative', 129 | 'dcterms.audience', 130 | 'dcterms.available', 131 | 'dcterms.bibliographiccitation', 132 | 'dcterms.collection', 133 | 'dcterms.conformsto', 134 | 'dcterms.contributor', 135 | 'dcterms.coverage', 136 | 'dcterms.created', 137 | 'dcterms.creator', 138 | 'dcterms.date', 139 | 'dcterms.dateaccepted', 140 | 'dcterms.datecopyrighted', 141 | 'dcterms.datesubmitted', 142 | 'dcterms.description', 143 | 'dcterms.educationlevel', 144 | 'dcterms.extent', 145 | 'dcterms.format', 146 | 'dcterms.hasformat', 147 | 'dcterms.haspart', 148 | 'dcterms.hasversion', 149 | 'dcterms.identifier', 150 | 'dcterms.instructionalmethod', 151 | 'dcterms.isformatof', 152 | 'dcterms.ispartof', 153 | 'dcterms.isreferencedby', 154 | 'dcterms.isreplacedby', 155 | 'dcterms.isrequiredby', 156 | 'dcterms.issued', 157 | 'dcterms.isversionof', 158 | 'dcterms.language', 159 | 'dcterms.license', 160 | 'dcterms.mediator', 161 | 'dcterms.medium', 162 | 'dcterms.modified', 163 | 'dcterms.provenance', 164 | 'dcterms.publisher', 165 | 'dcterms.references', 166 | 'dcterms.relation', 167 | 'dcterms.replaces', 168 | 'dcterms.requires', 169 | 'dcterms.rights', 170 | 'dcterms.rightsholder', 171 | 'dcterms.source', 172 | 'dcterms.spatial', 173 | 'dcterms.subject', 174 | 'dcterms.tableofcontents', 175 | 'dcterms.temporal', 176 | 'dcterms.title', 177 | 'dcterms.type', 178 | 'dcterms.valid', 179 | 'designer', 180 | 'detectify-verification', 181 | 'entity', 182 | 'essaydirectory', 183 | 'fdse-description', 184 | 'fdse-index-as', 185 | 'fdse-keywords', 186 | 'fdse-refresh', 187 | 'fdse-robots', 188 | 'flblogauthor', 189 | 'format-detection', 190 | 'format-print', 191 | 'fragment', 192 | 'fsdatecreation', 193 | 'fsdatepublish', 194 | 'fsflcontent', 195 | 'fslanguage', 196 | 'fsonsitemap', 197 | 'fspagedescription', 198 | 'fspagename', 199 | 'fssearchable', 200 | 'fssection', 201 | 'fswritertoolpagetype', 202 | 'gcterms.topictaxonomy', 203 | 'geo.a1', 204 | 'geo.a2', 205 | 'geo.a3', 206 | 'geo.country', 207 | 'geo.lmk', 208 | 'geo.placename', 209 | 'geo.position', 210 | 'geo.region', 211 | 'globrix.bathrooms', 212 | 'globrix.bedrooms', 213 | 'globrix.condition', 214 | 'globrix.features', 215 | 'globrix.instruction', 216 | 'globrix.latitude', 217 | 'globrix.longitude', 218 | 'globrix.outsidespace', 219 | 'globrix.parking', 220 | 'globrix.period', 221 | 'globrix.poa', 222 | 'globrix.postcode', 223 | 'globrix.price', 224 | 'globrix.priceproximity', 225 | 'globrix.tenure', 226 | 'globrix.type', 227 | 'globrix.underoffer', 228 | 'go-import', 229 | 'google', 230 | 'google-play-app', 231 | 'google-site-verification', 232 | 'googlebot', 233 | 'googlebot-mobile', 234 | 'gwt:property', 235 | 'handheldfriendly', 236 | 'icas.datetime', 237 | 'icas.datetime.abbr', 238 | 'icas.datetime.day', 239 | 'icas.datetime.long', 240 | 'icbm', 241 | 'ie_rm_off', 242 | 'itemsperpage', 243 | 'keywords-not', 244 | 'license', 245 | 'license:uri', 246 | 'meta_date', 247 | 'microtip', 248 | 'mobile-agent', 249 | 'mobile-web-app-capable', 250 | 'mobileoptimized', 251 | 'msapplication-config', 252 | 'msapplication-navbutton-color', 253 | 'msapplication-notification', 254 | 'msapplication-square150x150logo', 255 | 'msapplication-square310x310logo', 256 | 'msapplication-square70x70logo', 257 | 'msapplication-starturl', 258 | 'msapplication-tap-highlight', 259 | 'msapplication-task', 260 | 'msapplication-tilecolor', 261 | 'msapplication-tileimage', 262 | 'msapplication-tooltip', 263 | 'msapplication-wide310x150logo', 264 | 'msapplication-window', 265 | 'mssmarttagspreventparsing', 266 | 'msvalidate.01', 267 | 'nonfiction', 268 | 'norton-safeweb-site-verification', 269 | 'origin', 270 | 'origin-trials', 271 | 'p:domain_verify', 272 | 'page-version', 273 | 'pingdom', 274 | 'pinterest', 275 | 'prism:alternatetitle', 276 | 'pro', 277 | 'pro-auth', 278 | 'pro-auth-field', 279 | 'pro-auth-fragment', 280 | 'rating', 281 | 'referrer', 282 | 'repostusapikey', 283 | 'resourceloaderdynamicstyles', 284 | 'review_date', 285 | 'revision', 286 | 'revisit-after', 287 | 'rights', 288 | 'rights-standard', 289 | 'robots', 290 | 'rpuplugin', 291 | 'rqid', 292 | 'shareaholic:analytics', 293 | 'shareaholic:article_author', 294 | 'shareaholic:article_author_name', 295 | 'shareaholic:article_modified_time', 296 | 'shareaholic:article_published_time', 297 | 'shareaholic:article_visibility', 298 | 'shareaholic:drupal_version', 299 | 'shareaholic:image', 300 | 'shareaholic:keywords', 301 | 'shareaholic:language', 302 | 'shareaholic:outstreamads', 303 | 'shareaholic:shareable_page', 304 | 'shareaholic:site_id', 305 | 'shareaholic:site_name', 306 | 'shareaholic:title', 307 | 'shareaholic:url', 308 | 'shareaholic:wp_version', 309 | 'signet:authors', 310 | 'signet:links', 311 | 'skype_toolbar', 312 | 'slurp', 313 | 'startindex', 314 | 'startver', 315 | 'subject-datetime', 316 | 'subject-system', 317 | 'supported-media', 318 | 'teoma', 319 | 'theme-color', 320 | 'thumbnail', 321 | 'topper', 322 | 'topper-major', 323 | 'topper-minor', 324 | 'totalresults', 325 | 'translator', 326 | 'twitter:app:country', 327 | 'twitter:app:id:googleplay', 328 | 'twitter:app:id:ipad', 329 | 'twitter:app:id:iphone', 330 | 'twitter:app:name:googleplay', 331 | 'twitter:app:name:ipad', 332 | 'twitter:app:name:iphone', 333 | 'twitter:app:url:googleplay', 334 | 'twitter:app:url:ipad', 335 | 'twitter:app:url:iphone', 336 | 'twitter:card', 337 | 'twitter:creator', 338 | 'twitter:creator:id', 339 | 'twitter:data1', 340 | 'twitter:data2', 341 | 'twitter:description', 342 | 'twitter:domain', 343 | 'twitter:image', 344 | 'twitter:image0', 345 | 'twitter:image1', 346 | 'twitter:image2', 347 | 'twitter:image3', 348 | 'twitter:image:height', 349 | 'twitter:image:src', 350 | 'twitter:image:width', 351 | 'twitter:label1', 352 | 'twitter:label2', 353 | 'twitter:player', 354 | 'twitter:player:height', 355 | 'twitter:player:stream', 356 | 'twitter:player:stream:content_type', 357 | 'twitter:player:width', 358 | 'twitter:site', 359 | 'twitter:site:id', 360 | 'twitter:title', 361 | 'twitter:url', 362 | 'typemetal.formatprefs', 363 | 'verify-v1', 364 | 'version', 365 | 'vfb-version', 366 | 'viewport', 367 | 'web_author', 368 | 'witget', 369 | 'wot-verification', 370 | 'wt.ac', 371 | 'wt.ad', 372 | 'wt.cg_n', 373 | 'wt.cg_s', 374 | 'wt.mc_id', 375 | 'wt.si_n', 376 | 'wt.si_p', 377 | 'wt.si_x', 378 | 'wt.sv', 379 | 'wt.ti', 380 | 'y_key', 381 | 'yandex-verification', 382 | 'zoomcategory', 383 | 'zoomdescription', 384 | 'zoomimage', 385 | 'zoompageboost', 386 | 'zoomtitle', 387 | 'zoomwords' 388 | ] 389 | -------------------------------------------------------------------------------- /license: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2016 Titus Wormer 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | 'Software'), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "meta-name", 3 | "version": "2.0.1", 4 | "description": "List of values that can be used as `name`s on HTML `meta` elements", 5 | "license": "MIT", 6 | "keywords": [ 7 | "html", 8 | "meta", 9 | "name", 10 | "attribute", 11 | "w3c" 12 | ], 13 | "repository": "wooorm/meta-name", 14 | "bugs": "https://github.com/wooorm/meta-name/issues", 15 | "funding": { 16 | "type": "github", 17 | "url": "https://github.com/sponsors/wooorm" 18 | }, 19 | "author": "Titus Wormer (https://wooorm.com)", 20 | "contributors": [ 21 | "Titus Wormer (https://wooorm.com)" 22 | ], 23 | "sideEffects": false, 24 | "type": "module", 25 | "main": "index.js", 26 | "types": "index.d.ts", 27 | "files": [ 28 | "index.d.ts", 29 | "index.js" 30 | ], 31 | "devDependencies": { 32 | "@types/node": "^18.0.0", 33 | "@types/tape": "^4.0.0", 34 | "c8": "^7.0.0", 35 | "hast-util-from-html": "^1.0.0", 36 | "hast-util-select": "^5.0.0", 37 | "hast-util-to-string": "^2.0.0", 38 | "node-fetch": "^3.0.0", 39 | "prettier": "^2.0.0", 40 | "remark-cli": "^11.0.0", 41 | "remark-preset-wooorm": "^9.0.0", 42 | "tape": "^5.0.0", 43 | "type-coverage": "^2.0.0", 44 | "typescript": "^4.0.0", 45 | "xo": "^0.52.0" 46 | }, 47 | "scripts": { 48 | "prepack": "npm run build && npm run format", 49 | "generate": "node --conditions development build.js", 50 | "build": "tsc --build --clean && tsc --build && type-coverage", 51 | "format": "remark . -qfo && prettier . -w --loglevel warn && xo --fix", 52 | "test-api": "node --conditions development test.js", 53 | "test-coverage": "c8 --check-coverage --100 --reporter lcov npm run test-api", 54 | "test": "npm run generate && npm run build && npm run format && npm run test-coverage" 55 | }, 56 | "prettier": { 57 | "tabWidth": 2, 58 | "useTabs": false, 59 | "singleQuote": true, 60 | "bracketSpacing": false, 61 | "semi": false, 62 | "trailingComma": "none" 63 | }, 64 | "xo": { 65 | "prettier": true 66 | }, 67 | "remarkConfig": { 68 | "plugins": [ 69 | "preset-wooorm" 70 | ] 71 | }, 72 | "typeCoverage": { 73 | "atLeast": 100, 74 | "detail": true, 75 | "strict": true, 76 | "ignoreCatch": true 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # meta-name 2 | 3 | [![Build][build-badge]][build] 4 | [![Coverage][coverage-badge]][coverage] 5 | [![Downloads][downloads-badge]][downloads] 6 | [![Size][size-badge]][size] 7 | 8 | List of values that can be used as `name`s on HTML `meta` elements. 9 | 10 | ## Contents 11 | 12 | * [What is this?](#what-is-this) 13 | * [When should I use this?](#when-should-i-use-this) 14 | * [Install](#install) 15 | * [Use](#use) 16 | * [API](#api) 17 | * [`metaName`](#metaname) 18 | * [Types](#types) 19 | * [Compatibility](#compatibility) 20 | * [Security](#security) 21 | * [Related](#related) 22 | * [Contribute](#contribute) 23 | * [License](#license) 24 | 25 | ## What is this? 26 | 27 | This is a small package that lists all the valid values for `name` attributes on 28 | HTML `` elements. 29 | Those are defined by [MetaExtensions][extensions]. 30 | 31 | ## When should I use this? 32 | 33 | Probably never. 34 | Maybe as inspiration for when you’re writing meta or researching SEO and such. 35 | Or, when you’re making an HTML linter. 36 | 37 | ## Install 38 | 39 | This package is [ESM only][esm]. 40 | In Node.js (version 14.14+, 16.0+), install with [npm][]: 41 | 42 | ```sh 43 | npm install meta-name 44 | ``` 45 | 46 | In Deno with [`esm.sh`][esmsh]: 47 | 48 | ```js 49 | import {metaName} from 'https://esm.sh/meta-name@3' 50 | ``` 51 | 52 | In browsers with [`esm.sh`][esmsh]: 53 | 54 | ```html 55 | 58 | ``` 59 | 60 | ## Use 61 | 62 | ```js 63 | import {metaName} from 'meta-name' 64 | 65 | console.log(metaName.length) //=> 379 66 | 67 | console.log(metaName.slice(0, 10)) 68 | ``` 69 | 70 | Yields: 71 | 72 | ```js 73 | [ 74 | 'aglsterms.accessibility', 75 | 'aglsterms.accessmode', 76 | 'aglsterms.act', 77 | 'aglsterms.aggregationlevel', 78 | 'aglsterms.allow-search', 79 | 'aglsterms.availability', 80 | 'aglsterms.case', 81 | 'aglsterms.category', 82 | 'aglsterms.datelicensed', 83 | 'aglsterms.documenttype' 84 | ] 85 | ``` 86 | 87 | ## API 88 | 89 | This package exports the identifier `metaName`. 90 | There is no default export. 91 | 92 | ### `metaName` 93 | 94 | List of values that can be used as `name`s on HTML `meta` elements 95 | (`Array`). 96 | 97 | ## Types 98 | 99 | This package is fully typed with [TypeScript][]. 100 | It exports no additional types. 101 | 102 | ## Compatibility 103 | 104 | This package is at least compatible with all maintained versions of Node.js. 105 | As of now, that is Node.js 14.14+ and 16.0+. 106 | It also works in Deno and modern browsers. 107 | 108 | ## Security 109 | 110 | This package is safe. 111 | 112 | ## Related 113 | 114 | * [`wooorm/a-rel`](https://github.com/wooorm/a-rel) 115 | — list of link types for `rel` on `a` and `area` 116 | * [`wooorm/link-rel`](https://github.com/wooorm/link-rel) 117 | — list of link types for `rel` on `link` 118 | * [`wooorm/html-link-types`](https://github.com/wooorm/html-link-types) 119 | — list of link types as used in HTML 120 | 121 | ## Contribute 122 | 123 | Yes please! 124 | See [How to Contribute to Open Source][contribute]. 125 | 126 | ## License 127 | 128 | [MIT][license] © [Titus Wormer][author] 129 | 130 | 131 | 132 | [build-badge]: https://github.com/wooorm/meta-name/workflows/main/badge.svg 133 | 134 | [build]: https://github.com/wooorm/meta-name/actions 135 | 136 | [coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/meta-name.svg 137 | 138 | [coverage]: https://codecov.io/github/wooorm/meta-name 139 | 140 | [downloads-badge]: https://img.shields.io/npm/dm/meta-name.svg 141 | 142 | [downloads]: https://www.npmjs.com/package/meta-name 143 | 144 | [size-badge]: https://img.shields.io/bundlephobia/minzip/meta-name.svg 145 | 146 | [size]: https://bundlephobia.com/result?p=meta-name 147 | 148 | [npm]: https://docs.npmjs.com/cli/install 149 | 150 | [esmsh]: https://esm.sh 151 | 152 | [license]: license 153 | 154 | [author]: https://wooorm.com 155 | 156 | [esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c 157 | 158 | [typescript]: https://www.typescriptlang.org 159 | 160 | [contribute]: https://opensource.guide/how-to-contribute/ 161 | 162 | [extensions]: https://wiki.whatwg.org/wiki/MetaExtensions 163 | -------------------------------------------------------------------------------- /test.js: -------------------------------------------------------------------------------- 1 | import assert from 'node:assert/strict' 2 | import test from 'node:test' 3 | import {metaName} from './index.js' 4 | 5 | test('metaName', function () { 6 | assert.ok(Array.isArray(metaName), 'should be an `array`') 7 | 8 | let index = -1 9 | while (++index < metaName.length) { 10 | assert.strictEqual(typeof metaName[index], 'string', metaName[index]) 11 | } 12 | }) 13 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": ["**/**.js"], 3 | "exclude": ["coverage", "node_modules"], 4 | "compilerOptions": { 5 | "checkJs": true, 6 | "declaration": true, 7 | "emitDeclarationOnly": true, 8 | "exactOptionalPropertyTypes": true, 9 | "forceConsistentCasingInFileNames": true, 10 | "lib": ["es2020"], 11 | "module": "node16", 12 | "newLine": "lf", 13 | "skipLibCheck": true, 14 | "strict": true, 15 | "target": "es2020" 16 | } 17 | } 18 | --------------------------------------------------------------------------------