{"_id":"@scalar/asyncapi-to-markdown","_rev":"7-fc430e3b47e31ce4743ddeafddb6e7e1","name":"@scalar/asyncapi-to-markdown","dist-tags":{"bootstrap":"0.0.0-bootstrap.0","latest":"0.2.5"},"versions":{"0.0.0-stage":{"name":"@scalar/asyncapi-to-markdown","version":"0.0.0-stage","_id":"@scalar/asyncapi-to-markdown@0.0.0-stage","stub":true,"maintainers":[{"name":"hanspagel","email":"mail@hanspagel.com"}],"dist":{"shasum":"ed7e10aa9881a387819ccec00e4c0ea27e10f669","tarball":"https://registry.npmjs.org/@scalar/asyncapi-to-markdown/-/asyncapi-to-markdown-0.0.0-stage.tgz","fileCount":2,"integrity":"sha512-jEENIXpEYczKlE4WKvVgPKL+e6UhIcqAol96/mFOfjoD5/hMCKyIiPRV4FbH7jtWks9GvQwliwyOBQD8If2w/Q==","signatures":[{"sig":"MEYCIQCZv4d0G4vH3/c56HypfmBTrByICD/opbYOoBvARaS3DQIhAJRmBGJKpLokJ5OAHlfe/vj8RsPoQ0W6NwPVduJc6Uhf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":350},"_npmUser":{"name":"hanspagel","email":"mail@hanspagel.com"},"description":"Temporary package placeholder for staged publishing","directories":{}},"0.0.0-bootstrap.0":{"name":"@scalar/asyncapi-to-markdown","version":"0.0.0-bootstrap.0","license":"MIT","_id":"@scalar/asyncapi-to-markdown@0.0.0-bootstrap.0","maintainers":[{"name":"cameronrohani","email":"cam@scalar.com"},{"name":"marclave","email":"marc@scalar.com"},{"name":"scalar_geoff","email":"geoff@scalar.com"},{"name":"hwkr","email":"bn@hwkr.me"},{"name":"hanspagel","email":"mail@hanspagel.com"},{"name":"amritk","email":"amrit@scalar.com"},{"name":"scalar-machine","email":"machine@scalar.com"}],"homepage":"https://github.com/scalar/scalar#readme","bugs":{"url":"https://github.com/scalar/scalar/issues"},"dist":{"shasum":"16e79190f6b815f17a7973813e376c5a036ad7c8","tarball":"https://registry.npmjs.org/@scalar/asyncapi-to-markdown/-/asyncapi-to-markdown-0.0.0-bootstrap.0.tgz","fileCount":2,"integrity":"sha512-Ke8SBgxAlNBy7BvUKbgT9prjXRp6Hl7B8MXp9bFYPyiLY4FVRZjQPAmvbgp/dMUFGc8PoYd8LndQpNvdZRULjg==","signatures":[{"sig":"MEYCIQDCuXlUhZOXhswOrLJl+OSOD5RcKwz0a1CTs+do/SQgFQIhAJdn+EjKrw7fJah29TlxOvyu0ib0fE12s4Ndsp1t8x48","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGCvJcbZZ/bRqiOzTeQtHnNg5KNRZ2SXA+PtZPBZRkDrAiAvnR2srXbe6d2FfD5QjWXAAw28/hZ3Be1mxg2hpt1azA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":650},"_npmUser":{"name":"hanspagel","email":"mail@hanspagel.com"},"repository":{"url":"git+https://github.com/scalar/scalar.git","type":"git","directory":"packages/asyncapi-to-markdown"},"_npmVersion":"11.16.0","description":"Bootstrap placeholder for npm trusted publishing. Not a functional release.","directories":{},"_nodeVersion":"26.3.1","publishConfig":{"tag":"bootstrap","access":"public","provenance":false},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/asyncapi-to-markdown_0.0.0-bootstrap.0_1792154047036_0.3899050390658221","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@scalar/asyncapi-to-markdown","version":"0.2.0","keywords":["asyncapi","markdown","llm"],"author":"Scalar (https://github.com/scalar)","license":"MIT","_id":"@scalar/asyncapi-to-markdown@0.2.0","maintainers":[{"name":"cameronrohani","email":"cam@scalar.com"},{"name":"marclave","email":"marc@scalar.com"},{"name":"scalar_geoff","email":"geoff@scalar.com"},{"name":"hwkr","email":"bn@hwkr.me"},{"name":"hanspagel","email":"mail@hanspagel.com"},{"name":"amritk","email":"amrit@scalar.com"},{"name":"scalar-machine","email":"machine@scalar.com"}],"homepage":"https://github.com/scalar/scalar","bugs":"https://github.com/scalar/scalar/issues/new/choose","dist":{"shasum":"c93c7b54148472bf2fff6257362d4c8da36c8694","tarball":"https://registry.npmjs.org/@scalar/asyncapi-to-markdown/-/asyncapi-to-markdown-0.2.0.tgz","fileCount":46,"integrity":"sha512-yP93PzsEOCDUYftk6gxNDPFtmxT9k30bojOofYOZiJFJV/tyxfJyYoanoUrDBAhqm8j2ylI5AsrbQO/G5LIOZg==","signatures":[{"sig":"MEYCIQDODoeYtS1ZfpbqwL9218DUp1grlvL+TiD1uT1ACL4hLQIhAL2BeghUct8FPzsovDWkKF6xRGZ95dtxHp4lhL1xMP0u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDXdloIQbx5F0YyhXaWcltiBzL9tJAiu5fLSBI37D++mAIhALgwEeZoeyncWNwduq/CXpRcpmJ7PtH2PyGA8PqHWoVB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scalar%2fasyncapi-to-markdown@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":90321},"main":"dist/index.js","type":"module","module":"dist/index.js","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"}},"scripts":{"dev":"cd playground && vite","test":"vitest --run","build":"tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json","benchmark":"tsx benchmarks/run.ts","types:check":"tsgo --noEmit && vue-tsc --noEmit -p playground/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"af67bf94-51a7-4936-98c0-634e80f847ac"}},"repository":{"url":"git+https://github.com/scalar/scalar.git","type":"git","directory":"packages/asyncapi-to-markdown"},"description":"Create plain Markdown from AsyncAPI documents (for LLMs)","directories":{},"dependencies":{"unified":"^11.0.5","remark-gfm":"^4.0.1","@scalar/types":"0.24.0","@scalar/helpers":"0.16.4","remark-stringify":"^11.0.0","@scalar/json-magic":"0.16.0","@scalar/workspace-store":"0.68.4","@scalar/asyncapi-upgrader":"0.1.18","@scalar/openapi-to-markdown":"1.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.4","vue":"^3.5.40","vite":"8.1.5","marked":"^14.0.0","vitest":"4.1.10","vue-tsc":"^3.3.8","tailwindcss":"^4.3.3","@types/mdast":"^4.0.4","rehype-parse":"^9.0.1","@scalar/themes":"0.19.2","rehype-sanitize":"^6.0.0","rehype-stringify":"^10.0.1","@tailwindcss/vite":"^4.3.3","@scalar/components":"0.32.0","@vitejs/plugin-vue":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/asyncapi-to-markdown_0.2.0_1792160934082_0.3541134447971279","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@scalar/asyncapi-to-markdown","version":"0.2.1","keywords":["asyncapi","markdown","llm"],"author":"Scalar (https://github.com/scalar)","license":"MIT","_id":"@scalar/asyncapi-to-markdown@0.2.1","maintainers":[{"name":"cameronrohani","email":"cam@scalar.com"},{"name":"marclave","email":"marc@scalar.com"},{"name":"scalar_geoff","email":"geoff@scalar.com"},{"name":"hwkr","email":"bn@hwkr.me"},{"name":"hanspagel","email":"mail@hanspagel.com"},{"name":"amritk","email":"amrit@scalar.com"},{"name":"scalar-machine","email":"machine@scalar.com"}],"homepage":"https://github.com/scalar/scalar","bugs":"https://github.com/scalar/scalar/issues/new/choose","dist":{"shasum":"8fbbf8660e4b367937a0b2ee936924a7c15b6c0a","tarball":"https://registry.npmjs.org/@scalar/asyncapi-to-markdown/-/asyncapi-to-markdown-0.2.1.tgz","fileCount":46,"integrity":"sha512-sXkq9jSPQwBFab6Voc7HDJnVn7n4xMMqHrJnjqr1G9Q+K2oXG9UpSQbPnuB9sHG3oFQdJjCJ4L4B5RNu3QuNJA==","signatures":[{"sig":"MEQCICnlrCcy12AYPv7SDiZNDTFV+1L5x5HOdcQ74rC+Y2irAiBdsknZ2PgegEFB3VCiLdE25IpWeIj9Usa7XdZ7bCo0og==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCJkId3qm8YqJJT1LJNtTZO8Bq5Qk9ngscyGvHo3kJAjAIhAItG1XbFhHQp332umdFJASUIZxVHFhO3lwCAq2dd0UTx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scalar%2fasyncapi-to-markdown@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":90331},"main":"dist/index.js","type":"module","module":"dist/index.js","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"}},"scripts":{"dev":"cd playground && vite","test":"vitest --run","build":"tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json","benchmark":"tsx benchmarks/run.ts","types:check":"tsgo --noEmit && vue-tsc --noEmit -p playground/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"af67bf94-51a7-4936-98c0-634e80f847ac"}},"repository":{"url":"git+https://github.com/scalar/scalar.git","type":"git","directory":"packages/asyncapi-to-markdown"},"description":"Create plain Markdown from AsyncAPI documents (for LLMs)","directories":{},"dependencies":{"unified":"^11.0.5","remark-gfm":"^4.0.1","@scalar/types":"0.24.0","@scalar/helpers":"0.16.4","remark-stringify":"^11.0.0","@scalar/json-magic":"0.16.1","@scalar/workspace-store":"0.68.5","@scalar/asyncapi-upgrader":"0.1.18","@scalar/openapi-to-markdown":"1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.4","vue":"^3.5.40","vite":"8.1.5","marked":"^14.0.0","vitest":"4.1.10","vue-tsc":"^3.3.8","tailwindcss":"^4.3.3","@types/mdast":"^4.0.4","rehype-parse":"^9.0.1","@scalar/themes":"0.19.2","rehype-sanitize":"^6.0.0","rehype-stringify":"^10.0.1","@tailwindcss/vite":"^4.3.3","@scalar/components":"0.32.1","@vitejs/plugin-vue":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/asyncapi-to-markdown_0.2.1_1792506817470_0.33513973470701863","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@scalar/asyncapi-to-markdown","version":"0.2.2","keywords":["asyncapi","markdown","llm"],"author":"Scalar (https://github.com/scalar)","license":"MIT","_id":"@scalar/asyncapi-to-markdown@0.2.2","maintainers":[{"name":"cameronrohani","email":"cam@scalar.com"},{"name":"marclave","email":"marc@scalar.com"},{"name":"scalar_geoff","email":"geoff@scalar.com"},{"name":"hwkr","email":"bn@hwkr.me"},{"name":"hanspagel","email":"mail@hanspagel.com"},{"name":"amritk","email":"amrit@scalar.com"},{"name":"scalar-machine","email":"machine@scalar.com"}],"homepage":"https://github.com/scalar/scalar","bugs":"https://github.com/scalar/scalar/issues/new/choose","dist":{"shasum":"aa8f053c288534adeb6a7d78e5944d2fc98dac2a","tarball":"https://registry.npmjs.org/@scalar/asyncapi-to-markdown/-/asyncapi-to-markdown-0.2.2.tgz","fileCount":46,"integrity":"sha512-Mh00ggrueL54D6MDGnh2nsqURv1mq/puz0c050ScbOZmsSfza5cJ17zglHKg6P6sjkZ4EMjmGbq41PkrPrVI8w==","signatures":[{"sig":"MEYCIQCAReb1ynjQ6E5fK+hLgaQsWpoM4rTKYXdjNwj0NTpkQgIhAICoGCWvzGsEdZpiHPvF28uOmutOl0K07o1owPo4fmGB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCvWlS33j2d4qfP+ei/H899oyFz7bUcyBs2c871Qc57eQIgdd6aB7/av7or2MNph6xzBwAc/TtGtHPeuJ32Unq1jzs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scalar%2fasyncapi-to-markdown@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":90343},"main":"dist/index.js","type":"module","module":"dist/index.js","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"}},"scripts":{"dev":"cd playground && vite","test":"vitest --run","build":"tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json","benchmark":"tsx benchmarks/run.ts","types:check":"tsgo --noEmit && vue-tsc --noEmit -p playground/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"af67bf94-51a7-4936-98c0-634e80f847ac"}},"repository":{"url":"git+https://github.com/scalar/scalar.git","type":"git","directory":"packages/asyncapi-to-markdown"},"description":"Create plain Markdown from AsyncAPI documents (for LLMs)","directories":{},"dependencies":{"unified":"^11.0.5","remark-gfm":"^4.0.1","@scalar/types":"0.25.0","@scalar/helpers":"0.16.4","remark-stringify":"^11.0.0","@scalar/json-magic":"0.17.0","@scalar/workspace-store":"0.69.0","@scalar/asyncapi-upgrader":"0.1.18","@scalar/openapi-to-markdown":"1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.15","vue":"^3.5.44","vite":"8.3.4","marked":"^18.1.1","vitest":"4.1.12","vue-tsc":"3.3.11","tailwindcss":"^4.3.3","@types/mdast":"^4.0.4","rehype-parse":"^9.0.1","@scalar/themes":"0.19.3","rehype-sanitize":"^6.0.0","rehype-stringify":"^10.0.1","@tailwindcss/vite":"^4.3.3","@scalar/components":"0.33.0","@vitejs/plugin-vue":"^6.0.10"},"_npmOperationalInternal":{"tmp":"tmp/asyncapi-to-markdown_0.2.2_1792750706254_0.45433350320005905","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@scalar/asyncapi-to-markdown","version":"0.2.4","keywords":["asyncapi","markdown","llm"],"author":"Scalar (https://github.com/scalar)","license":"MIT","_id":"@scalar/asyncapi-to-markdown@0.2.4","maintainers":[{"name":"cameronrohani","email":"cam@scalar.com"},{"name":"marclave","email":"marc@scalar.com"},{"name":"scalar_geoff","email":"geoff@scalar.com"},{"name":"hwkr","email":"bn@hwkr.me"},{"name":"hanspagel","email":"mail@hanspagel.com"},{"name":"amritk","email":"amrit@scalar.com"},{"name":"scalar-machine","email":"machine@scalar.com"}],"homepage":"https://github.com/scalar/scalar","bugs":"https://github.com/scalar/scalar/issues/new/choose","dist":{"shasum":"8305ca02648b2b5592a26aef8fe83aa55d27bab1","tarball":"https://registry.npmjs.org/@scalar/asyncapi-to-markdown/-/asyncapi-to-markdown-0.2.4.tgz","fileCount":46,"integrity":"sha512-A+L2vW5Lly46eAn8p96VTQ12UUDpPWAaJAWVowv+lslsXzA6r8JkPAOlG54BlAvtqfPPoAQ1BWdi1w0xbiq8FQ==","signatures":[{"sig":"MEQCIGPlZrpAK1Xloye9U9IcPkDBKTH1oXiayFzpLoZjWRRUAiAoD4zyS/JOf+w78JLlrB0zNJ2vy1YKB43Gd0S0XmX03w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCZPP0UXtvZHL4Z1DGdUfPq8vINlS6WDMg034WqqADUKwIhAOEYMH9dzC1+kCmui0nrHH/lBPFFDInQrQHvAklolDBi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scalar%2fasyncapi-to-markdown@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":90363},"main":"dist/index.js","type":"module","module":"dist/index.js","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"}},"scripts":{"dev":"cd playground && vite","test":"vitest --run","build":"tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json","benchmark":"tsx benchmarks/run.ts","types:check":"tsgo --noEmit && vue-tsc --noEmit -p playground/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"af67bf94-51a7-4936-98c0-634e80f847ac"}},"repository":{"url":"git+https://github.com/scalar/scalar.git","type":"git","directory":"packages/asyncapi-to-markdown"},"description":"Create plain Markdown from AsyncAPI documents (for LLMs)","directories":{},"dependencies":{"unified":"^11.0.5","remark-gfm":"^4.0.1","@scalar/types":"0.25.2","@scalar/helpers":"0.16.4","remark-stringify":"^11.0.0","@scalar/json-magic":"0.17.0","@scalar/workspace-store":"0.69.2","@scalar/asyncapi-upgrader":"0.1.18","@scalar/openapi-to-markdown":"1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.15","vue":"^3.5.44","vite":"8.3.4","marked":"^18.1.1","vitest":"4.1.12","vue-tsc":"3.3.11","tailwindcss":"^4.3.3","@types/mdast":"^4.0.4","rehype-parse":"^9.0.1","@scalar/themes":"0.19.3","rehype-sanitize":"^6.0.0","rehype-stringify":"^10.0.1","@tailwindcss/vite":"^4.3.3","@scalar/components":"0.33.0","@vitejs/plugin-vue":"^6.0.10"},"_npmOperationalInternal":{"tmp":"tmp/asyncapi-to-markdown_0.2.4_1793209563951_0.4031032509228719","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"_id":"@scalar/asyncapi-to-markdown@0.2.5","bugs":"https://github.com/scalar/scalar/issues/new/choose","dist":{"shasum":"5f7c730539666218aef8efbb25be02a38e5e5e13","tarball":"https://registry.npmjs.org/@scalar/asyncapi-to-markdown/-/asyncapi-to-markdown-0.2.5.tgz","fileCount":46,"integrity":"sha512-0t/r4ZtVsuUQhQjsRwaZH1cxBtwsPnTDjQjDAQ6CeA1mneBMwHG0ApexbcV4Hw4C+50romhXFF89jRYUdOvp4g==","signatures":[{"sig":"MEUCIG+4sGtAcBgnxBrUsW94SekGLvrBVQIA1e9iLWYbG7C6AiEA/9lRlCimXrmNNKtAffKx60Qpe61P37LAzIb/BFVt5gA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDFeRfw4uEzyypjR11N8cvcSCdMa8JRtNN/oob181I3XAIgcR3nSnXcbPlnpMQJUfYez8GKSV9tMqKW413FqXssQUI="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scalar%2fasyncapi-to-markdown@0.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":90373},"main":"dist/index.js","name":"@scalar/asyncapi-to-markdown","type":"module","author":"Scalar (https://github.com/scalar)","module":"dist/index.js","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"}},"license":"MIT","scripts":{"dev":"cd playground && vite","test":"vitest --run","build":"tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json","benchmark":"tsx benchmarks/run.ts","types:check":"tsgo --noEmit && vue-tsc --noEmit -p playground/tsconfig.json"},"version":"0.2.5","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"af67bf94-51a7-4936-98c0-634e80f847ac"}},"homepage":"https://github.com/scalar/scalar","keywords":["asyncapi","markdown","llm"],"repository":{"url":"git+https://github.com/scalar/scalar.git","type":"git","directory":"packages/asyncapi-to-markdown"},"description":"Create plain Markdown from AsyncAPI documents (for LLMs)","directories":{},"maintainers":[{"name":"cameronrohani","email":"cam@scalar.com"},{"name":"marclave","email":"marc@scalar.com"},{"name":"scalar_geoff","email":"geoff@scalar.com"},{"name":"hwkr","email":"bn@hwkr.me"},{"name":"hanspagel","email":"mail@hanspagel.com"},{"name":"amritk","email":"amrit@scalar.com"},{"name":"scalar-machine","email":"machine@scalar.com"}],"dependencies":{"unified":"^11.0.5","remark-gfm":"^4.0.1","@scalar/types":"0.26.0","@scalar/helpers":"0.16.4","remark-stringify":"^11.0.0","@scalar/json-magic":"0.17.0","@scalar/workspace-store":"0.69.3","@scalar/asyncapi-upgrader":"0.1.18","@scalar/openapi-to-markdown":"1.7.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.15","vue":"^3.5.44","vite":"8.3.4","marked":"^18.1.1","vitest":"4.1.12","vue-tsc":"3.3.11","tailwindcss":"^4.3.3","@types/mdast":"^4.0.4","rehype-parse":"^9.0.1","@scalar/themes":"0.20.0","rehype-sanitize":"^6.0.0","rehype-stringify":"^10.0.1","@tailwindcss/vite":"^4.3.3","@scalar/components":"0.33.1","@vitejs/plugin-vue":"^6.0.10"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/asyncapi-to-markdown_0.2.5_1793320161919_0.38331972633852485"}}},"time":{"created":"2026-10-16T12:33:30.694Z","modified":"2026-10-30T00:29:22.373Z","0.0.0-stage":"2026-10-16T12:33:30.694Z","0.0.0-bootstrap.0":"2026-10-16T12:34:07.111Z","0.2.0":"2026-10-16T14:28:54.180Z","0.2.1":"2026-10-20T14:33:37.568Z","0.2.2":"2026-10-23T10:18:26.347Z","0.2.4":"2026-10-28T17:46:04.063Z","0.2.5":"2026-10-30T00:29:22.009Z"},"bugs":"https://github.com/scalar/scalar/issues/new/choose","author":"Scalar (https://github.com/scalar)","license":"MIT","homepage":"https://github.com/scalar/scalar","keywords":["asyncapi","markdown","llm"],"repository":{"url":"git+https://github.com/scalar/scalar.git","type":"git","directory":"packages/asyncapi-to-markdown"},"description":"Create plain Markdown from AsyncAPI documents (for LLMs)","maintainers":[{"name":"cameronrohani","email":"cam@scalar.com"},{"name":"marclave","email":"marc@scalar.com"},{"name":"scalar_geoff","email":"geoff@scalar.com"},{"name":"hwkr","email":"bn@hwkr.me"},{"name":"hanspagel","email":"mail@hanspagel.com"},{"name":"amritk","email":"amrit@scalar.com"},{"name":"scalar-machine","email":"machine@scalar.com"}],"readme":"# Scalar AsyncAPI to Markdown\n\nGenerate LLM-friendly Markdown from AsyncAPI descriptions without rendering HTML or Vue.\n\n```sh\nnpm install @scalar/asyncapi-to-markdown\n```\n\n```ts\nimport {\n  createAsyncApiMarkdownRenderer,\n  createMarkdownFromAsyncApi,\n} from '@scalar/asyncapi-to-markdown'\n\nconst markdown = await createMarkdownFromAsyncApi('./asyncapi.yaml')\n\n// Load, upgrade and bundle references once for a documentation build.\nconst renderer = await createAsyncApiMarkdownRenderer('./asyncapi.yaml')\nawait renderer.render() // Complete description\nawait renderer.render({ introduction: true })\nawait renderer.render({ channel: 'orders' })\nawait renderer.render({ operation: 'receiveOrder' })\nawait renderer.render({ message: 'OrderCreated' })\nawait renderer.render({ model: 'Order' })\nawait renderer.render({ tag: 'Orders' })\nawait renderer.render({\n  message: { pointer: '#/channels/orders/messages/created' },\n})\n```\n\nThe Node.js entry point accepts objects, JSON/YAML strings, file paths, and HTTP(S) URLs.\nRelative external references resolve against the source file or URL. Object and inline\nstring inputs need absolute external references. AsyncAPI 1.0–1.2, 2.0–2.6, 3.0 and 3.1\ninputs use Scalar's upgrader to produce a 3.1 document. The original version stays visible\nin the introduction. Input objects are not modified. Create a new renderer to pick up\nsource changes; rendering pages does not fetch the source again.\n\nChoose at most one selector per call. Strings identify exact, case-sensitive map keys:\nchannels, operations, component messages, or component schemas. Channel addresses and\nhuman-readable titles are not selectors. Every map selector also accepts an exact JSON\npointer, with optional `#` and standard `~0` / `~1` escaping. Message pointers can select\nchannel messages as well as component messages. Invalid or missing selections reject\nthat call; the renderer remains usable afterward.\n\nOperation pages include the channel address, parameters, relevant servers, security,\nselected messages, and reply details. Unknown channel addresses are labelled explicitly. Reply messages\nare rendered only when declared; request messages are not inferred as replies. Channel pages include their operations and all\nchannel messages. Selected pages expand each shared schema once and include transitive schema dependencies.\nIntroduction pages contain API metadata, the application identifier, default content type, and servers. Complete exports include channels,\noperations, component messages and schemas. Send/receive direction is from the described\napplication's perspective; legacy publish/subscribe operations are migrated accordingly.\n\nMessage and operation traits are merged before rendering. Authored examples are preserved.\nMissing examples are generated from JSON schemas and labelled by context (**Generated headers example** or\n**Generated payload example**). XML payloads use XML examples, including examples authored on their schemas, while headers use JSON. Repeated generated\nexamples link to their first occurrence within the same media type and context. JSON Schema and AsyncAPI schemas include properties,\nrequired markers, constraints, composition, discriminator fields and mappings, and recursive-reference notices.\nProperty types and annotations share one line, followed by their Markdown descriptions and external\ndocumentation links. Content encoding and media-type annotations are preserved. Other schema\nformats, such as Avro and Protobuf, appear as labelled source blocks. Protocol bindings\nare preserved as JSON. Descriptions preserve Markdown, tables and code blocks using the\nsame sanitization as the OpenAPI converter; images are excluded.\n\n## Navigation and shared models\n\nComplete exports include a contents index with explicit anchors. Shared structured\nmodels render once and their usages link to that definition. Declared tags retain descriptions\nand external documentation links in complete exports. Repeated servers and\nsecurity schemes also link to their first occurrence. Security alternatives are labelled explicitly;\noperation security applies in addition to applicable server security. Primitive schemas remain inline.\nSchema display normalization and description parsing are cached per prepared renderer.\n\nTag pages match exact tag names on channels, operations (including traits), and messages.\nA channel tag includes the channel's operations and messages. An operation tag includes\nthat operation's context. Tags declared in `info.tags` retain descriptions and external links,\neven when unused. Tag pages retain the API introduction, display only the selected tag, and link to\nmessages already rendered on the page. Unknown or duplicate tag declarations reject the render.\n\nFor documentation sites that publish model pages separately:\n\n```ts\nawait renderer.render({\n  operation: 'receiveOrder',\n  schemaReferences: {\n    mode: 'linked',\n    resolveUrl: ({ name }) => `/models/${encodeURIComponent(name)}`,\n    inlinePrimitives: true,\n  },\n})\n```\n\nLinked pages expand root schemas and replace nested structured references with published\nlinks. Returning `undefined` or omitting the callback keeps the model name as plain text.\nSet `inlinePrimitives: false` to link primitive, enum and const references too.\nLinked pages omit the transitive appendix and generated message examples. Selected model\npages still generate a local example with linked structured dependencies left as stubs.\nAuthored examples remain available in linked mode. URL callbacks receive the original reference and\nits model name, preserving aliases. Empty or unsafe URLs render an unlinked name. Composition\nbranches retain their model links. Linked schema usages retain their descriptions, and primitive aliases\nremain available when generating model examples.\n\n## Browser\n\nUse a document already upgraded and resolved by `@scalar/workspace-store`:\n\n```ts\nimport { createMarkdownFromAsyncApi } from '@scalar/asyncapi-to-markdown/browser'\n\nconst markdown = await createMarkdownFromAsyncApi(document, {\n  operation: 'receiveOrder',\n})\n```\n\nThe browser entry point does not read files, fetch references, or upgrade raw documents.\n\n## Limitations\n\nThis is a documentation converter, not a validator. Unsupported versions, failed loads,\nand unresolved references needed for rendering reject with an error. Recursive schema\nexpansion stops at a repeated ancestor, ten levels, or 5,000 schema nodes per expansion,\nwith a visible notice. Generated examples exceeding 10,000 estimated values are omitted\nwith a visible notice. Custom schema\nvocabularies are not interpreted, and output is not a replacement for the original schema.\nPublishing Markdown routes and adding copy buttons to Scalar Docs are separate integrations.\n\n## Playground and benchmarks\n\nRun `pnpm --filter @scalar/asyncapi-to-markdown dev --port 3002 --strictPort`.\nThe playground includes local order events and a shared-schema stress fixture, page\nselection and search, linked/full export modes, sanitized previews, Markdown source,\ncopy/download controls, output size and render timing. Click a published model link to\nopen that model page. It runs conversion in a worker to keep the UI responsive.\n\nRun `pnpm --filter @scalar/asyncapi-to-markdown benchmark` for repeatable preparation,\ncold/warm rendering, output size, and RSS measurements. See [the benchmark method](./benchmarks/README.md).\n\n## Specification coverage\n\nRendering follows the [AsyncAPI 3.1 specification](https://www.asyncapi.com/docs/reference/specification/v3.1.0).\nThe converter covers application metadata, servers and variables, channel parameters, operation and\nmessage traits, request/reply details, security schemes and OAuth flows, tags, external documentation,\nand JSON Schema Draft 7 constraints. All mandatory JSON/YAML schema-format identifiers work for\nboth headers and payloads. Protocol bindings and other schema languages remain available as source\nblocks. Referenced reusable objects render at their usage sites; unused component schemas and\nmessages are also included in complete exports. Custom extension semantics and validation remain\noutside the converter's scope.\n","readmeFilename":""}