{"_id":"@ascii-canvas/protocol","_rev":"2-c229acf8ed24fa19a51addcb159606dd","name":"@ascii-canvas/protocol","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@ascii-canvas/protocol","version":"0.1.0","keywords":["ansi","ascii","parser","protocol","unicode"],"license":"MIT","_id":"@ascii-canvas/protocol@0.1.0","maintainers":[{"name":"h3nryh3","email":"hxk17573904437@gmail.com"}],"homepage":"https://github.com/Sayhi-bzb/AsciiCanvas/tree/main/packages/protocol#readme","bugs":{"url":"https://github.com/Sayhi-bzb/AsciiCanvas/issues"},"dist":{"shasum":"91cbcbcf3bff40ec42816e6b52fbb3475eaa8b07","tarball":"https://registry.npmjs.org/@ascii-canvas/protocol/-/protocol-0.1.0.tgz","fileCount":25,"integrity":"sha512-O65/qCDUgoOmZHCSibC66DsdRo1fsymXWeRWSD8seI96MjwKqJ05cJ/mL2e1RIUbYJrVD/ZTKGfOERf0+9NpVg==","signatures":[{"sig":"MEYCIQDWNJIRZUO1itIKFNotcqhoXbge4bN1NvjNj+J/7ROE2wIhAJY/KVJSiplJL93+GEpQ0P/EuLIMhBs6UiBwwIFl3Cbn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascii-canvas%2fprotocol@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":60539},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"3f0563a2ae4f0f0e1527a56633f1eac7bdccc2d1","scripts":{"test":"vitest run --config vitest.config.ts","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"h3nryh3","email":"hxk17573904437@gmail.com"},"repository":{"url":"git+https://github.com/Sayhi-bzb/AsciiCanvas.git","type":"git","directory":"packages/protocol"},"_npmVersion":"11.19.0","description":"AsciiCanvas Text Protocol parser and Unicode cell-width rules","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/protocol_0.1.0_1785828641329_0.32717809109972773","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package moved to @chardesk/protocol. Install @chardesk/protocol@^0.2.0."}},"time":{"created":"2026-08-04T07:30:41.160Z","modified":"2026-08-12T04:52:29.719Z","0.1.0":"2026-08-04T07:30:41.465Z"},"bugs":{"url":"https://github.com/Sayhi-bzb/AsciiCanvas/issues"},"license":"MIT","homepage":"https://github.com/Sayhi-bzb/AsciiCanvas/tree/main/packages/protocol#readme","keywords":["ansi","ascii","parser","protocol","unicode"],"repository":{"url":"git+https://github.com/Sayhi-bzb/AsciiCanvas.git","type":"git","directory":"packages/protocol"},"description":"AsciiCanvas Text Protocol parser and Unicode cell-width rules","maintainers":[{"name":"h3nryh3","email":"hxk17573904437@gmail.com"}],"readme":"# @ascii-canvas/protocol\n\nParser and conformance data for [AsciiCanvas Text Protocol v1](./spec/v1.md). The package converts plain ASCII/Unicode, standard ANSI, and AsciiCanvas ESC-less ANSI into rendering-neutral cells. It contains no DOM or renderer.\n\n## Install\n\n```sh\nnpm install @ascii-canvas/protocol\n```\n\n## Parse\n\n```ts\nimport { parseAsciiCanvasText } from \"@ascii-canvas/protocol\";\n\nconst document = parseAsciiCanvasText(\n  \"[38;2;255;0;0m+---+[0m\\n| 界 |\",\n  { defaultStyle: { color: \"#111827\" } }\n);\n\nfor (const cell of document.cells) {\n  // cell: { x, y, width, text, color?, bgColor?, attrs?, href? }\n}\n```\n\nUse `document.source` when preserving ANSI copy and `document.plainText` or `stripAsciiCanvasAnsi(source)` for plain-text copy.\n\n## API\n\n- `parseAsciiCanvasText(source, options?)`\n- `stripAsciiCanvasAnsi(source, options?)`\n- `splitGraphemes(text)`\n- `getGraphemeCellWidth(grapheme)`\n- `getTextCellWidth(text)`\n- `ASCII_CANVAS_TEXT_PROTOCOL_VERSION`\n- `UNICODE_DATA_VERSION`\n\nThe default syntax mode is `auto`; use `plain` to disable control parsing or `ansi` to force ESC-less numeric SGR parsing. The default tab size is four cells.\n\nSee [`fixtures/v1.json`](./fixtures/v1.json) for portable conformance cases. Parsed links are untrusted and must be sanitized by the renderer.\n\nFor AsciiCanvas-compatible glyph coverage, renderers may use the optional [`@ascii-canvas/fonts`](https://www.npmjs.com/package/@ascii-canvas/fonts) profile.\n","readmeFilename":"README.md"}