{"_id":"shiki-processor","_rev":"2979908","name":"shiki-processor","description":"Add processing capabilities to Shiki's highlighter","dist-tags":{"latest":"0.1.3"},"maintainers":[{"name":"innocenzi","email":"enzo@innocenzi.dev"}],"time":{"modified":"2023-06-26T07:12:39.000Z","created":"2022-10-25T12:37:20.259Z","0.1.3":"2023-01-31T09:26:31.498Z","0.1.2":"2022-12-21T12:28:12.663Z","0.1.1":"2022-10-27T09:06:51.199Z","0.1.0":"2022-10-25T12:37:20.259Z"},"users":{},"author":{"name":"Enzo Innocenzi","email":"enzi@innocenzi.dev"},"repository":{"type":"git","url":"git+https://github.com/innocenzi/shiki-processor.git"},"versions":{"0.1.3":{"name":"shiki-processor","version":"0.1.3","description":"Add processing capabilities to Shiki's highlighter","keywords":["shiki","processor"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/innocenzi/shiki-processor.git"},"funding":"https://github.com/sponsors/innocenzi","author":{"name":"Enzo Innocenzi","email":"enzi@innocenzi.dev"},"type":"module","packageManager":"pnpm@7.12.0","homepage":"https://github.com/innocenzi/shiki-processor#readme","bugs":{"url":"https://github.com/innocenzi/shiki-processor/issues"},"sideEffects":false,"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.cjs","import":"./dist/index.mjs"}},"main":"./dist/index.mjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"scripts":{"build":"unbuild","dev":"unbuild --stub","lint":"eslint .","prepublishOnly":"nr build","release":"bumpp && npm publish","start":"esno src/index.ts","test":"vitest","typecheck":"tsc --noEmit"},"peerDependencies":{"shiki":"0.x"},"devDependencies":{"@antfu/ni":"^0.19.0","@antfu/utils":"^0.7.2","@innocenzi/eslint-config":"^0.14.0","@types/node":"^18.11.18","bumpp":"^8.2.1","eslint":"^8.33.0","esno":"^0.16.3","pnpm":"^7.26.2","shiki":"^0.14.0","typescript":"^4.9.5","unbuild":"^1.1.1","vitest":"^0.28.3"},"gitHead":"4dbf2a9184166feeba6e11f96506060269cc13a8","_id":"shiki-processor@0.1.3","_nodeVersion":"19.5.0","_npmVersion":"9.3.1","dist":{"shasum":"a59b855b378246623137c486eabfcd9614705e89","size":4537,"noattachment":false,"key":"/shiki-processor/-/shiki-processor-0.1.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/shiki-processor/download/shiki-processor-0.1.3.tgz"},"_npmUser":{"name":"innocenzi","email":"enzo@innocenzi.dev"},"directories":{},"maintainers":[{"name":"innocenzi","email":"enzo@innocenzi.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/shiki-processor_0.1.3_1675157191336_0.6217310748559248"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-01-31T09:26:31.498Z","publish_time":1675157191498,"_cnpm_publish_time":1675157191498},"0.1.2":{"name":"shiki-processor","version":"0.1.2","description":"Add processing capabilities to Shiki's highlighter","keywords":["shiki","processor"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/innocenzi/shiki-processor.git"},"funding":"https://github.com/sponsors/innocenzi","author":{"name":"Enzo Innocenzi","email":"enzi@innocenzi.dev"},"type":"module","packageManager":"pnpm@7.12.0","homepage":"https://github.com/innocenzi/shiki-processor#readme","bugs":{"url":"https://github.com/innocenzi/shiki-processor/issues"},"sideEffects":false,"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.cjs","import":"./dist/index.mjs"}},"main":"./dist/index.mjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"scripts":{"build":"unbuild","dev":"unbuild --stub","lint":"eslint .","prepublishOnly":"nr build","release":"bumpp && npm publish","start":"esno src/index.ts","test":"vitest","typecheck":"tsc --noEmit"},"peerDependencies":{"shiki":"^0.11.1 || ^0.12.0"},"devDependencies":{"@antfu/ni":"^0.18.2","@antfu/utils":"^0.6.0","@innocenzi/eslint-config":"^0.12.0","@types/node":"^18.11.5","bumpp":"^8.2.1","eslint":"^8.26.0","esno":"^0.16.3","pnpm":"^7.14.0","shiki":"^0.11.1","typescript":"^4.8.4","unbuild":"^0.9.4","vitest":"^0.24.3"},"gitHead":"4e3af2af4dcaf70ae122c07128162a6c3f34a4d4","_id":"shiki-processor@0.1.2","_nodeVersion":"19.2.0","_npmVersion":"8.19.3","dist":{"shasum":"b5758475634cece7b97708206695ac3250dd59cf","size":4537,"noattachment":false,"key":"/shiki-processor/-/shiki-processor-0.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/shiki-processor/download/shiki-processor-0.1.2.tgz"},"_npmUser":{"name":"innocenzi","email":"enzo@innocenzi.dev"},"directories":{},"maintainers":[{"name":"innocenzi","email":"enzo@innocenzi.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/shiki-processor_0.1.2_1671625692493_0.9356879149678425"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-12-21T12:28:22.363Z","publish_time":1671625692663,"_cnpm_publish_time":1671625692663},"0.1.1":{"name":"shiki-processor","version":"0.1.1","description":"Add processing capabilities to Shiki's highlighter","keywords":["shiki","processor"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/innocenzi/shiki-processor.git"},"funding":"https://github.com/sponsors/innocenzi","author":{"name":"Enzo Innocenzi","email":"enzi@innocenzi.dev"},"type":"module","packageManager":"pnpm@7.12.0","homepage":"https://github.com/innocenzi/shiki-processor#readme","bugs":{"url":"https://github.com/innocenzi/shiki-processor/issues"},"sideEffects":false,"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.cjs","import":"./dist/index.mjs"}},"main":"./dist/index.mjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"scripts":{"build":"unbuild","dev":"unbuild --stub","lint":"eslint .","prepublishOnly":"nr build","release":"bumpp && npm publish","start":"esno src/index.ts","test":"vitest","typecheck":"tsc --noEmit"},"peerDependencies":{"shiki":"^0.11.1"},"devDependencies":{"@antfu/ni":"^0.18.2","@antfu/utils":"^0.6.0","@innocenzi/eslint-config":"^0.12.0","@types/node":"^18.11.5","bumpp":"^8.2.1","eslint":"^8.26.0","esno":"^0.16.3","pnpm":"^7.14.0","shiki":"^0.11.1","typescript":"^4.8.4","unbuild":"^0.9.4","vitest":"^0.24.3"},"gitHead":"e9ab834f22f9229f94b68b5055d485cc3e8be5c3","_id":"shiki-processor@0.1.1","_nodeVersion":"18.11.0","_npmVersion":"8.19.2","dist":{"shasum":"9fedeb59369cd034e90c8bd26c8d4a2fac72d68b","size":4530,"noattachment":false,"key":"/shiki-processor/-/shiki-processor-0.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/shiki-processor/download/shiki-processor-0.1.1.tgz"},"_npmUser":{"name":"innocenzi","email":"enzo@innocenzi.dev"},"directories":{},"maintainers":[{"name":"innocenzi","email":"enzo@innocenzi.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/shiki-processor_0.1.1_1666861611034_0.5650609369328656"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-10-27T09:37:47.902Z","publish_time":1666861611199,"_cnpm_publish_time":1666861611199},"0.1.0":{"name":"shiki-processor","version":"0.1.0","description":"Add processing capabilities to Shiki's highlighter","keywords":["shiki","processor"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/innocenzi/shiki-processor.git"},"funding":"https://github.com/sponsors/innocenzi","author":{"name":"Enzo Innocenzi","email":"enzi@innocenzi.dev"},"type":"module","packageManager":"pnpm@7.12.0","homepage":"https://github.com/innocenzi/shiki-processor#readme","bugs":{"url":"https://github.com/innocenzi/shiki-processor/issues"},"sideEffects":false,"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.cjs","import":"./dist/index.mjs"}},"main":"./dist/index.mjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"scripts":{"build":"unbuild","dev":"unbuild --stub","lint":"eslint .","prepublishOnly":"nr build","release":"bumpp && npm publish","start":"esno src/index.ts","test":"vitest","typecheck":"tsc --noEmit"},"peerDependencies":{"shiki":"^0.11.1"},"devDependencies":{"@antfu/ni":"^0.18.2","@antfu/utils":"^0.6.0","@innocenzi/eslint-config":"^0.12.0","@types/node":"^18.11.5","bumpp":"^8.2.1","eslint":"^8.26.0","esno":"^0.16.3","pnpm":"^7.14.0","shiki":"^0.11.1","typescript":"^4.8.4","unbuild":"^0.9.4","vitest":"^0.24.3"},"gitHead":"8a15fabc17c0db6baadcd6352afb3f805c8b4757","_id":"shiki-processor@0.1.0","_nodeVersion":"18.11.0","_npmVersion":"8.19.2","dist":{"shasum":"ebc76e6ba2f1516d0e7afab32a2be879ca6232a5","size":4522,"noattachment":false,"key":"/shiki-processor/-/shiki-processor-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/shiki-processor/download/shiki-processor-0.1.0.tgz"},"_npmUser":{"name":"innocenzi","email":"enzo@innocenzi.dev"},"directories":{},"maintainers":[{"name":"innocenzi","email":"enzo@innocenzi.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/shiki-processor_0.1.0_1666701440087_0.3950503917979211"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-10-25T12:53:07.507Z","publish_time":1666701440259,"_cnpm_publish_time":1666701440259}},"readme":"<h2 align=\"center\">shiki-processor</h2>\n\n<p align=\"center\">\n  <a href=\"https://github.com/innocenzi/shiki-processor/actions?query=workflow%3Aci\">\n    <img alt=\"Status\" src=\"https://github.com/innocenzi/shiki-processor/actions/workflows/ci.yml/badge.svg\">\n  </a>\n  <span>&nbsp;</span>\n  <a href=\"https://www.npmjs.com/package/shiki-processor\">\n    <img alt=\"npm\" src=\"https://img.shields.io/npm/v/shiki-processor\">\n  </a>\n  <br />\n  <br />\n  <p align=\"center\">\n    Add processing capabilities to Shiki's highlighter\n  </p>\n  <pre><div align=\"center\">npm i shiki shiki-processor</div></pre>\n</p>\n\n&nbsp;\n\n## Usage\n\n`shiki-processor` exports a custom `getHighlighter` that provides the same API as the one exported from `shiki`, except it adds a new `processors` option.\n\n```ts\nimport { getHighlighter, createFocusProcessor } from 'shiki-processor'\n\nconst snippet = /** ... */\nconst highlighter = await getHighlighter({\n  processors: [\n    createFocusProcessor(),\n  ],\n})\n\nhighlighter.codeToHtml(snippet, { lang: 'javascript' })\n```\n\nAlternatively, for more flexibility, it is possible to use the `process` and `postProcess` functions directly.\n\n```ts\nimport { getHighlighter } from 'shiki'\nimport { process, postProcess } from 'shiki-processor'\n\nconst theme = 'material-theme-palenight'\nconst lang = 'javascript'\nconst snippet = /** ... */\nconst processors = [\n  createFocusProcessor(),\n]\n\nconst highlighter = await getHighlighter({ theme })\n\nconst { code, lineOptions } = process(processors, snippet, lang)\nconst highlighted = highlighter.codeToHtml(code, {\n\tlang,\n\ttheme,\n\tlineOptions,\n})\n\nreturn postProcess(processors, highlighted, lang)\n```\n\n&nbsp;\n\n## Built-in processors\n\nThere is currently three processors: `focus`, `diff` and `highlight`. Each one of them adds the possibility of adding a `// [!code <tag>]` annotation to a line in a code snipppet.\n\nWhen this annotation is found, it is removed and a class corresponding to the processor is added to the line. The complete code block is also added a class.\n\n```ts\n// Input\nfunction() {\n\tconsole.log('hewwo') // [!code --]\n\tconsole.log('hello') // [!code ++]\n}\n```\n```html\n<!-- Output (stripped of `style` attributes for clarity) -->\n<pre class=\"shiki has-diff\"> <!-- Notice `has-diff` -->\n\t<code>\n\t\t<span class=\"line\"></span>\n\t\t<span class=\"line\"><span>function</span><span>()</span><span></span><span>{</span></span>\n\t\t<span class=\"line diff remove\">  <!-- Notice `diff` and `remove` -->\n\t\t\t<span></span><span>console</span><span>.</span><span>log</span><span>(</span><span>&#39;</span><span>hewwo</span><span>&#39;</span><span>) </span>\n\t\t</span>\n\t\t<span class=\"line diff add\">  <!-- Notice `diff` and `add` -->\n\t\t\t<span></span><span>console</span><span>.</span><span>log</span><span>(</span><span>&#39;</span><span>hello</span><span>&#39;</span><span>) </span>\n\t\t</span>\n\t\t<span class=\"line\"><span></span><span>}</span></span>\n\t\t<span class=\"line\"><span></span></span>\n\t</code>\n</pre>\n```\n\nOptionally, a range can be defined by adding a colon and a number of lines: `// [!code focus:3]`.\n\n\n<p align=\"center\">\n  <br />\n  <br />\n  ·\n  <br />\n  <br />\n  <sub>Built with ❤︎ by <a href=\"https://twitter.com/enzoinnocenzi\">Enzo Innocenzi</a>\n</p>\n","_attachments":{},"homepage":"https://github.com/innocenzi/shiki-processor#readme","bugs":{"url":"https://github.com/innocenzi/shiki-processor/issues"},"license":"MIT"}