kopia lustrzana https://github.com/badgen/badgen.net
				
				
				
			feat: include legacy badge examples in badge builder
							rodzic
							
								
									a1ddd5d253
								
							
						
					
					
						commit
						7b85c086b1
					
				| 
						 | 
				
			
			@ -1,17 +1,33 @@
 | 
			
		|||
import badgeList from '../public/.meta/badge-list.json'
 | 
			
		||||
import badgeListLegacy from '../public/.meta/badges.json'
 | 
			
		||||
 | 
			
		||||
// const examples = [...badgeList.live, ...badgeList.static].reduce((accu, curr) => {
 | 
			
		||||
//   return (accu as any).concat(Object.entries(curr.examples))
 | 
			
		||||
// }, [] as [string, string][])
 | 
			
		||||
 | 
			
		||||
type Examples = [string, string][]
 | 
			
		||||
type BadgeExamples = {
 | 
			
		||||
  [pathname: string]: string
 | 
			
		||||
}
 | 
			
		||||
type BadgeList = {
 | 
			
		||||
  [id: string]: {
 | 
			
		||||
    title: string;
 | 
			
		||||
    examples: BadgeExamples;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function extractExampleList (badgeList): Examples {
 | 
			
		||||
  const examples = []
 | 
			
		||||
 | 
			
		||||
const examples = extractExampleList(badgeList)
 | 
			
		||||
 | 
			
		||||
function extractExampleList (badgeList: BadgeList): BadgeExamples {
 | 
			
		||||
  let examples = {}
 | 
			
		||||
 | 
			
		||||
  Object.entries(badgeList).forEach((x) => {
 | 
			
		||||
    console.log(x)
 | 
			
		||||
    // Object.entries(meta?.examples)
 | 
			
		||||
    examples = { ...examples, ...x[1].examples }
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  // Also apply legacy examples
 | 
			
		||||
  badgeListLegacy.live.forEach((x) => {
 | 
			
		||||
    examples = { ...examples, ...x.examples }
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  return examples
 | 
			
		||||
| 
						 | 
				
			
			@ -24,13 +40,11 @@ interface BuilderHelperProps {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
export default function BuilderHelper ({ badgeURL, onSelect }: BuilderHelperProps) {
 | 
			
		||||
  console.log(2333)
 | 
			
		||||
  if (badgeURL.length < 2) {
 | 
			
		||||
    return <div className='helper' />
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const examples = extractExampleList(badgeList)
 | 
			
		||||
  const matched = examples.filter(eg => eg[0].includes(badgeURL))
 | 
			
		||||
  const matched = Object.entries(examples).filter(eg => eg[0].includes(badgeURL))
 | 
			
		||||
 | 
			
		||||
  const hints = matched.length === 1 && matched[0][0] === '/' + badgeURL ? null : (
 | 
			
		||||
      <div className='suggestions'>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,7 @@ export default function BuilderHints ({ focus, badgeURL }) {
 | 
			
		|||
          overflow: visible;
 | 
			
		||||
          width: 100%;
 | 
			
		||||
          left: -147px;
 | 
			
		||||
          height: 200px;
 | 
			
		||||
          /* height: 200px; */
 | 
			
		||||
          transition: all 200ms cubic-bezier(0.215, 0.61, 0.355, 1);
 | 
			
		||||
        }
 | 
			
		||||
        .hint a {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,82 +7,80 @@ const rel = (...args) => path.resolve(__dirname, ...args)
 | 
			
		|||
export const liveBadgeList = [
 | 
			
		||||
  // // source control
 | 
			
		||||
  // 'github',
 | 
			
		||||
  // 'gitlab',
 | 
			
		||||
  // // release registries
 | 
			
		||||
  // 'npm',
 | 
			
		||||
  // 'david',
 | 
			
		||||
  // 'packagephobia',
 | 
			
		||||
  // 'bundlephobia',
 | 
			
		||||
  // 'crates',
 | 
			
		||||
  // 'docker',
 | 
			
		||||
  // 'homebrew',
 | 
			
		||||
  // 'chrome-web-store',
 | 
			
		||||
  // 'amo',
 | 
			
		||||
  // 'pypi',
 | 
			
		||||
  // 'nuget',
 | 
			
		||||
  // 'packagist',
 | 
			
		||||
  // 'rubygems',
 | 
			
		||||
  // 'apm',
 | 
			
		||||
  // 'hackage',
 | 
			
		||||
  // 'vs-marketplace',
 | 
			
		||||
  // 'melpa',
 | 
			
		||||
  // 'maven',
 | 
			
		||||
  // 'cocoapods',
 | 
			
		||||
  // 'haxelib',
 | 
			
		||||
  // 'opam',
 | 
			
		||||
  // 'cpan',
 | 
			
		||||
  // 'cran',
 | 
			
		||||
  // 'ctan',
 | 
			
		||||
  // 'dub',
 | 
			
		||||
  // 'elm-package',
 | 
			
		||||
  // 'scoop',
 | 
			
		||||
  // 'winget',
 | 
			
		||||
  // 'f-droid',
 | 
			
		||||
  // 'pub',
 | 
			
		||||
  // 'shards',
 | 
			
		||||
  // 'wapm',
 | 
			
		||||
  // 'open-vsx',
 | 
			
		||||
  // 'snapcraft',
 | 
			
		||||
  // // CI
 | 
			
		||||
  // 'travis',
 | 
			
		||||
  // 'circleci',
 | 
			
		||||
  // 'appveyor',
 | 
			
		||||
  // 'codecov',
 | 
			
		||||
  // 'codacy',
 | 
			
		||||
  // 'coveralls',
 | 
			
		||||
  // 'codeclimate',
 | 
			
		||||
  // 'azure-pipelines',
 | 
			
		||||
  // // quality & metrics
 | 
			
		||||
  // 'snyk',
 | 
			
		||||
  // 'lgtm',
 | 
			
		||||
  // 'deepscan',
 | 
			
		||||
  // 'uptime-robot',
 | 
			
		||||
  // 'xo',
 | 
			
		||||
  // 'badgesize',
 | 
			
		||||
  // 'jsdelivr',
 | 
			
		||||
  // // social
 | 
			
		||||
  // 'devrant',
 | 
			
		||||
  // 'peertube',
 | 
			
		||||
  // 'reddit',
 | 
			
		||||
  // // chat
 | 
			
		||||
  // 'discord',
 | 
			
		||||
  // 'gitter',
 | 
			
		||||
  // 'matrix',
 | 
			
		||||
  // // utilities
 | 
			
		||||
  // 'opencollective',
 | 
			
		||||
  // 'keybase',
 | 
			
		||||
  // 'twitter',
 | 
			
		||||
  // 'mastodon',
 | 
			
		||||
  // 'tidelift',
 | 
			
		||||
  // 'jenkins',
 | 
			
		||||
  // 'liberapay',
 | 
			
		||||
  // 'runkit',
 | 
			
		||||
  // 'https',
 | 
			
		||||
  'gitlab',
 | 
			
		||||
  // release registries
 | 
			
		||||
  'npm',
 | 
			
		||||
  'david',
 | 
			
		||||
  'packagephobia',
 | 
			
		||||
  'bundlephobia',
 | 
			
		||||
  'crates',
 | 
			
		||||
  'docker',
 | 
			
		||||
  'homebrew',
 | 
			
		||||
  'chrome-web-store',
 | 
			
		||||
  'amo',
 | 
			
		||||
  'pypi',
 | 
			
		||||
  'nuget',
 | 
			
		||||
  'packagist',
 | 
			
		||||
  'rubygems',
 | 
			
		||||
  'apm',
 | 
			
		||||
  'hackage',
 | 
			
		||||
  'vs-marketplace',
 | 
			
		||||
  'melpa',
 | 
			
		||||
  'maven',
 | 
			
		||||
  'cocoapods',
 | 
			
		||||
  'haxelib',
 | 
			
		||||
  'opam',
 | 
			
		||||
  'cpan',
 | 
			
		||||
  'cran',
 | 
			
		||||
  'ctan',
 | 
			
		||||
  'dub',
 | 
			
		||||
  'elm-package',
 | 
			
		||||
  'scoop',
 | 
			
		||||
  'f-droid',
 | 
			
		||||
  'pub',
 | 
			
		||||
  'shards',
 | 
			
		||||
  'wapm',
 | 
			
		||||
  'open-vsx',
 | 
			
		||||
  'snapcraft',
 | 
			
		||||
  // CI
 | 
			
		||||
  'travis',
 | 
			
		||||
  'circleci',
 | 
			
		||||
  'appveyor',
 | 
			
		||||
  'codecov',
 | 
			
		||||
  'codacy',
 | 
			
		||||
  'coveralls',
 | 
			
		||||
  'codeclimate',
 | 
			
		||||
  'azure-pipelines',
 | 
			
		||||
  // quality & metrics
 | 
			
		||||
  'snyk',
 | 
			
		||||
  'lgtm',
 | 
			
		||||
  'deepscan',
 | 
			
		||||
  'uptime-robot',
 | 
			
		||||
  'badgesize',
 | 
			
		||||
  'jsdelivr',
 | 
			
		||||
  // social
 | 
			
		||||
  'devrant',
 | 
			
		||||
  'peertube',
 | 
			
		||||
  'reddit',
 | 
			
		||||
  // chat
 | 
			
		||||
  'discord',
 | 
			
		||||
  'gitter',
 | 
			
		||||
  'matrix',
 | 
			
		||||
  // utilities
 | 
			
		||||
  'opencollective',
 | 
			
		||||
  'keybase',
 | 
			
		||||
  'twitter',
 | 
			
		||||
  'mastodon',
 | 
			
		||||
  'tidelift',
 | 
			
		||||
  'jenkins',
 | 
			
		||||
  'liberapay',
 | 
			
		||||
  'runkit',
 | 
			
		||||
  'https',
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
export async function loadBadgeMeta () {
 | 
			
		||||
  const liveBadgeExamples = await Promise.all(liveBadgeList.map(async id => {
 | 
			
		||||
    const mod = await import(rel('../api', id))
 | 
			
		||||
    const mod = await import(rel('../api-', id))
 | 
			
		||||
    const { title, examples, handlers } = mod.default.meta
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,11 +6,13 @@ import BadgeList2 from '../libs/badge-list2'
 | 
			
		|||
const rel = (...args) => path.resolve(__dirname, ...args)
 | 
			
		||||
 | 
			
		||||
;(async function main () {
 | 
			
		||||
  // old list
 | 
			
		||||
  const badgeMeta = await loadBadgeMeta()
 | 
			
		||||
  await fse.outputJson(rel('../public/.meta/badges.json'), badgeMeta, {
 | 
			
		||||
    spaces: 2
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  // new list
 | 
			
		||||
  await fse.outputJson(rel('../public/.meta/badge-list.json'), BadgeList2, {
 | 
			
		||||
    spaces: 2
 | 
			
		||||
  })
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue