@mew-lab/a11y-cli 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/api.js +1 -2
- package/dist/{chunk-Y6KJQSVY.js → chunk-Q5KNFZTF.js} +1562 -1594
- package/dist/index.js +38 -6
- package/package.json +10 -2
- package/dist/api.js.map +0 -1
- package/dist/chunk-Y6KJQSVY.js.map +0 -1
- package/dist/index.js.map +0 -1
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/format.ts"],"sourcesContent":["// CLI 本体。bin/a11y.mjs から run(process.argv) で起動される。\nimport { createRequire } from 'node:module';\nimport { Command, Option } from 'commander';\nimport pc from 'picocolors';\nimport {\n checklist as apiChecklist,\n patternDetail,\n patternList,\n search as apiSearch,\n wcagDetail,\n wcagList,\n} from './api';\nimport {\n formatChecklist,\n formatPatternDetail,\n formatPatternList,\n formatSearch,\n formatWcagDetail,\n formatWcagList,\n} from './format';\nimport { isJsonMode, jsonOut, humanLog, reportError, setJsonMode } from './output';\n\nconst require = createRequire(import.meta.url);\nconst pkg = require('../package.json') as { version: string };\nexport const VERSION = pkg.version;\n\ntype DetailLevel = 'full' | 'compact' | 'brief';\n\ninterface GlobalOpts {\n json?: boolean;\n detail?: DetailLevel;\n}\n\n/** human モードのときだけ整形文字列を出す。 */\nfunction emit(jsonType: string, data: unknown, render: () => string): void {\n if (isJsonMode()) {\n jsonOut(jsonType, data);\n } else {\n console.log(render());\n }\n}\n\nexport function buildProgram(): Command {\n const program = new Command();\n\n program\n .name('a11y')\n .description('WAI-ARIA APG / WCAG 2.2 のアクセシビリティ観点を引く CLI')\n .version(VERSION, '-v, --version', 'バージョンを表示')\n .option('--json', '型付き JSON で出力する(AI エージェント / スクリプト向け)')\n .addOption(\n new Option('--detail <level>', '出力の詳しさ').choices(['full', 'compact', 'brief']).default('full'),\n )\n .showHelpAfterError();\n\n // --json は副作用の前にモードを確定する。\n program.hook('preAction', (thisCommand) => {\n const opts = thisCommand.opts<GlobalOpts>();\n setJsonMode(Boolean(opts.json));\n });\n\n program\n .command('pattern')\n .argument('[slug]', 'パターンの slug(省略すると一覧)')\n .description('APG パターンの観点を表示する(無引数で一覧)')\n .action((slug: string | undefined) => {\n try {\n const detail = program.opts<GlobalOpts>().detail ?? 'full';\n if (slug === undefined) {\n const res = patternList();\n emit(res.type, res.data, () => formatPatternList(res.data));\n } else {\n const res = patternDetail(slug);\n emit(res.type, res.data, () =>\n detail === 'brief'\n ? `${res.data.ja} (${res.data.en}) — ${res.data.slug}`\n : formatPatternDetail(res.data),\n );\n }\n } catch (err) {\n reportError(err);\n }\n });\n\n program\n .command('wcag')\n .argument('[slug]', '達成基準の slug(例: 1-1-1。省略すると一覧)')\n .description('WCAG 2.2 達成基準を表示する(無引数で一覧)')\n .action((slug: string | undefined) => {\n try {\n const detail = program.opts<GlobalOpts>().detail ?? 'full';\n if (slug === undefined) {\n const res = wcagList();\n emit(res.type, res.data, () => formatWcagList(res.data));\n } else {\n const res = wcagDetail(slug);\n emit(res.type, res.data, () =>\n detail === 'brief'\n ? `${res.data.num} ${res.data.ja} (${res.data.en}) — ${res.data.slug}`\n : formatWcagDetail(res.data),\n );\n }\n } catch (err) {\n reportError(err);\n }\n });\n\n program\n .command('search')\n .argument('<query>', '検索キーワード')\n .description('パターン + WCAG を横断検索する')\n .action((query: string) => {\n try {\n const res = apiSearch(query);\n emit(res.type, res.data, () => formatSearch(res.data));\n } catch (err) {\n reportError(err);\n }\n });\n\n program\n .command('checklist')\n .argument('<slug>', 'パターンの slug')\n .description('パターンの実装チェックリストだけを表示する')\n .action((slug: string) => {\n try {\n const res = apiChecklist(slug);\n emit(res.type, res.data, () => formatChecklist(res.data));\n } catch (err) {\n reportError(err);\n }\n });\n\n program\n .command('manifest')\n .description('全コマンド/レスポンス型の構造化 manifest を出力する(AI 向け)')\n .action(() => {\n try {\n const data = buildManifest();\n emit('manifest', data, () => formatManifest(data));\n } catch (err) {\n reportError(err);\n }\n });\n\n program\n .command('doctor')\n .description('実行環境を診断する')\n .action(() => {\n try {\n const data = buildDoctor();\n emit('doctor', data, () => formatDoctor(data));\n } catch (err) {\n reportError(err);\n }\n });\n\n return program;\n}\n\n// ─────────────────────────── manifest ───────────────────────────\n\ninterface ManifestCommand {\n name: string;\n description: string;\n args: { name: string; required: boolean }[];\n json: boolean;\n responseTypes: string[];\n}\n\ninterface ManifestData {\n name: string;\n version: string;\n globalOptions: { flag: string; description: string }[];\n commands: ManifestCommand[];\n}\n\nfunction buildManifest(): ManifestData {\n return {\n name: 'a11y',\n version: VERSION,\n globalOptions: [\n { flag: '--json', description: '型付き JSON で出力する' },\n { flag: '--detail <full|compact|brief>', description: '出力の詳しさ' },\n ],\n commands: [\n {\n name: 'pattern',\n description: 'APG パターンの観点を表示(無引数で一覧)',\n args: [{ name: 'slug', required: false }],\n json: true,\n responseTypes: ['pattern.list', 'pattern.detail'],\n },\n {\n name: 'wcag',\n description: 'WCAG 2.2 達成基準を表示(無引数で一覧)',\n args: [{ name: 'slug', required: false }],\n json: true,\n responseTypes: ['wcag.list', 'wcag.detail'],\n },\n {\n name: 'search',\n description: 'パターン + WCAG を横断検索',\n args: [{ name: 'query', required: true }],\n json: true,\n responseTypes: ['search.results'],\n },\n {\n name: 'checklist',\n description: 'パターンの実装チェックリストを表示',\n args: [{ name: 'slug', required: true }],\n json: true,\n responseTypes: ['pattern.checklist'],\n },\n {\n name: 'manifest',\n description: '構造化 manifest を出力',\n args: [],\n json: true,\n responseTypes: ['manifest'],\n },\n {\n name: 'doctor',\n description: '実行環境を診断',\n args: [],\n json: true,\n responseTypes: ['doctor'],\n },\n ],\n };\n}\n\nfunction formatManifest(data: ManifestData): string {\n const out: string[] = [];\n out.push(pc.bold(`${data.name} v${data.version}`));\n out.push('');\n out.push(pc.cyan('コマンド:'));\n for (const c of data.commands) {\n const args = c.args.map((a) => (a.required ? `<${a.name}>` : `[${a.name}]`)).join(' ');\n out.push(` ${pc.green(c.name)} ${args}`);\n out.push(` ${pc.dim(c.description)}`);\n out.push(` ${pc.dim(`type: ${c.responseTypes.join(', ')}`)}`);\n }\n out.push('');\n out.push(pc.dim('構造化データは `a11y manifest --json` で取得できます。'));\n return out.join('\\n');\n}\n\n// ─────────────────────────── doctor ───────────────────────────\n\ninterface DoctorData {\n cliVersion: string;\n node: string;\n nodeSupported: boolean;\n platform: string;\n arch: string;\n}\n\nfunction buildDoctor(): DoctorData {\n const [major] = process.versions.node.split('.').map((n) => Number.parseInt(n, 10));\n return {\n cliVersion: VERSION,\n node: process.versions.node,\n nodeSupported: (major ?? 0) >= 18,\n platform: process.platform,\n arch: process.arch,\n };\n}\n\nfunction formatDoctor(data: DoctorData): string {\n const ok = data.nodeSupported ? pc.green('OK') : pc.red('要更新 (Node 18+ が必要)');\n return [\n pc.bold('a11y doctor'),\n ` CLI バージョン : ${data.cliVersion}`,\n ` Node.js : ${data.node} ${ok}`,\n ` プラットフォーム: ${data.platform} / ${data.arch}`,\n ].join('\\n');\n}\n\n// ─────────────────────────── run ───────────────────────────\n\nexport async function run(argv: string[]): Promise<void> {\n const program = buildProgram();\n // 引数なしで起動されたらヘルプを出す。\n if (argv.length <= 2) {\n humanLog(program.helpInformation());\n return;\n }\n await program.parseAsync(argv);\n}\n","// 人間向けの整形出力。色は picocolors(極小)。重いテーブル lib は使わない。\nimport pc from 'picocolors';\nimport type { CriterionDetail, PatternDetail, Requirement, SearchHit } from '@mew-lab/a11y-core';\nimport type { ChecklistData, PatternListData, SearchData, WcagListData } from './api';\n\nconst REQUIREMENT_LABEL: Record<Requirement, string> = {\n required: '必須',\n recommended: '推奨',\n optional: '任意',\n};\n\n// 全角(CJK 等)を2幅として数える簡易表示幅。\nfunction displayWidth(s: string): number {\n let w = 0;\n for (const ch of s) {\n const code = ch.codePointAt(0) ?? 0;\n const wide =\n (code >= 0x1100 && code <= 0x115f) ||\n (code >= 0x2e80 && code <= 0xa4cf) ||\n (code >= 0xac00 && code <= 0xd7a3) ||\n (code >= 0xf900 && code <= 0xfaff) ||\n (code >= 0xff00 && code <= 0xff60) ||\n (code >= 0xffe0 && code <= 0xffe6) ||\n (code >= 0x20000 && code <= 0x3fffd);\n w += wide ? 2 : 1;\n }\n return w;\n}\n\nfunction pad(s: string, width: number): string {\n const diff = width - displayWidth(s);\n return diff > 0 ? s + ' '.repeat(diff) : s;\n}\n\n/** 行配列を桁揃えして返す(各列の最大幅に合わせる)。 */\nfunction table(rows: string[][]): string[] {\n if (rows.length === 0) return [];\n const cols = Math.max(...rows.map((r) => r.length));\n const widths: number[] = [];\n for (let c = 0; c < cols; c++) {\n widths[c] = Math.max(...rows.map((r) => displayWidth(r[c] ?? '')));\n }\n return rows.map((r) =>\n r\n .map((cell, c) => (c === r.length - 1 ? cell : pad(cell ?? '', widths[c] ?? 0)))\n .join(' ')\n .trimEnd(),\n );\n}\n\nfunction heading(text: string): string {\n return pc.bold(pc.cyan(text));\n}\n\nfunction levelBadge(level: string): string {\n return pc.bgBlue(pc.white(` ${level} `));\n}\n\n// ─────────────────────────── pattern ───────────────────────────\n\nexport function formatPatternList(data: PatternListData): string {\n const out: string[] = [];\n out.push(pc.bold(`APG パターン(${data.total}件)`));\n for (const g of data.categories) {\n if (g.items.length === 0) continue;\n out.push('');\n out.push(heading(`■ ${g.category}`));\n for (const line of table(g.items.map((p) => [` ${pc.green(p.slug)}`, p.ja]))) {\n out.push(line);\n }\n }\n out.push('');\n out.push(pc.dim('詳細: a11y pattern <slug>'));\n return out.join('\\n');\n}\n\nexport function formatPatternDetail(d: PatternDetail): string {\n const out: string[] = [];\n out.push(`${pc.bold(d.ja)} ${pc.dim(`(${d.en})`)} ${pc.green(d.slug)}`);\n out.push(pc.dim(`カテゴリ: ${d.category}`));\n out.push('');\n out.push(d.summary);\n\n const vp = d.viewpoint;\n if (vp) {\n if (vp.keyboard.length > 0) {\n out.push('');\n out.push(heading('キーボード操作'));\n for (const line of table(\n vp.keyboard.map((r) => [` ${r.keys}`, r.action, pc.dim(REQUIREMENT_LABEL[r.requirement])]),\n )) {\n out.push(line);\n }\n }\n if (vp.aria.length > 0) {\n out.push('');\n out.push(heading('必要な WAI-ARIA / ロール'));\n for (const line of table(\n vp.aria.map((r) => [` ${r.target}`, pc.yellow(r.attr), r.meaning]),\n )) {\n out.push(line);\n }\n }\n if (vp.antipatterns.length > 0) {\n out.push('');\n out.push(heading('アンチパターン'));\n for (const a of vp.antipatterns) {\n out.push(` ${pc.red('✗')} ${pc.bold(a.title)}`);\n out.push(` ${pc.dim(a.why)}`);\n }\n }\n if (vp.checklist.length > 0) {\n out.push('');\n out.push(heading('実装チェックリスト'));\n for (const item of vp.checklist) {\n out.push(` ${pc.green('☐')} ${item}`);\n }\n }\n if (vp.notes && vp.notes.length > 0) {\n out.push('');\n out.push(heading('メモ'));\n for (const note of vp.notes) {\n out.push(` - ${note}`);\n }\n }\n } else {\n out.push('');\n out.push(pc.dim('(このパターンの構造化観点データは準備中です)'));\n }\n\n if (d.criteria.length > 0) {\n out.push('');\n out.push(heading('関連する WCAG 2.2 達成基準'));\n for (const c of d.criteria) {\n out.push(` ${levelBadge(c.level)} ${pc.green(c.slug)} ${c.num} ${c.ja}`);\n }\n }\n return out.join('\\n');\n}\n\n// ─────────────────────────── wcag ───────────────────────────\n\nexport function formatWcagList(data: WcagListData): string {\n const out: string[] = [];\n out.push(pc.bold(`WCAG 2.2 達成基準(${data.total}件・本サイト収録分)`));\n for (const g of data.principles) {\n if (g.items.length === 0) continue;\n out.push('');\n out.push(heading(`■ ${g.principle}`));\n for (const line of table(\n g.items.map((c) => [` ${pc.green(c.slug)}`, `${c.num} ${c.ja}`, levelBadge(c.level)]),\n )) {\n out.push(line);\n }\n }\n out.push('');\n out.push(pc.dim('詳細: a11y wcag <slug>'));\n return out.join('\\n');\n}\n\nexport function formatWcagDetail(d: CriterionDetail): string {\n const out: string[] = [];\n const isNew = d.isNew22 ? ` ${pc.bgGreen(pc.black(' 2.2 新設 '))}` : '';\n out.push(`${levelBadge(d.level)} ${pc.bold(`${d.num} ${d.ja}`)} ${pc.dim(`(${d.en})`)}${isNew}`);\n out.push(pc.dim(`${d.principle} / ${d.guideline} ${pc.green(d.slug)}`));\n out.push('');\n out.push(d.summary);\n out.push('');\n out.push(heading('参照'));\n out.push(` 規範訳(waic.jp): ${pc.underline(d.waicUrl)}`);\n out.push(` Understanding : ${pc.underline(d.understandingUrl)}`);\n if (d.relatedPatterns.length > 0) {\n out.push('');\n out.push(heading('関連する APG パターン'));\n for (const line of table(\n d.relatedPatterns.map((p) => [` ${pc.green(p.slug)}`, p.ja]),\n )) {\n out.push(line);\n }\n }\n return out.join('\\n');\n}\n\n// ─────────────────────────── search / checklist ───────────────────────────\n\nfunction hitLabel(hit: SearchHit): string {\n return hit.kind === 'pattern' ? pc.blue('[pattern]') : pc.magenta('[wcag]');\n}\n\nexport function formatSearch(data: SearchData): string {\n if (data.total === 0) {\n return pc.dim(`「${data.query}」に一致する項目はありませんでした。`);\n }\n const out: string[] = [];\n out.push(pc.bold(`「${data.query}」の検索結果(${data.total}件)`));\n out.push('');\n for (const hit of data.hits) {\n out.push(`${hitLabel(hit)} ${pc.green(hit.slug)} ${hit.title}`);\n out.push(` ${pc.dim(hit.subtitle)}`);\n }\n return out.join('\\n');\n}\n\nexport function formatChecklist(data: ChecklistData): string {\n const out: string[] = [];\n out.push(pc.bold(`${data.ja} 実装チェックリスト`));\n out.push('');\n if (data.checklist.length === 0) {\n out.push(pc.dim('(チェックリストは準備中です)'));\n } else {\n for (const item of data.checklist) {\n out.push(`${pc.green('☐')} ${item}`);\n }\n }\n return out.join('\\n');\n}\n"],"mappings":"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","names":["pc","require","pc"]}
|