{"_id":"@elvishscout/mdstory","_rev":"16-1715e92c52c2e17bd55f79b7eb81f179","name":"@elvishscout/mdstory","dist-tags":{"latest":"0.4.5"},"versions":{"0.1.0":{"name":"@elvishscout/mdstory","version":"0.1.0","keywords":["markdown","handlebars"],"author":{"name":"Jiakai Jiang"},"license":"ISC","_id":"@elvishscout/mdstory@0.1.0","maintainers":[{"name":"elvishscout","email":"elvishscoutustc@outlook.com"}],"dist":{"shasum":"c579cd67bbad3d2518f16db4ad1b05e7476552ec","tarball":"https://registry.npmjs.org/@elvishscout/mdstory/-/mdstory-0.1.0.tgz","fileCount":21,"integrity":"sha512-/ErCmMsjILH6mnhtLbTEE2VrkhpSNSN/AiJDKo/X2aOO5G3Wit6vyFEM7CzS3teIhawHejVQsrwZHajoTI9Q9g==","signatures":[{"sig":"MEQCIFJ4BJOYlk3kref21i59uZ5Pl4pL3Wyzi3DroR+hhbw0AiA792UWvrFwkgvcxpwrBWcguf7NIQB1bPNhO4I+QZs6Cw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30010},"main":"./dist/index.js","type":"module","types":"./types","gitHead":"04ed8076ef480bccb18b78e2f7f03a37182b332e","scripts":{"test":"node ./test/index.test.js","build":"tsc"},"_npmUser":{"name":"elvishscout","email":"elvishscoutustc@outlook.com"},"_npmVersion":"10.5.2","description":"An interactive story format based on Markdown and Handlebars with JavaScript support","directories":{},"_nodeVersion":"20.13.1","dependencies":{"zod":"^3.24.3","js-yaml":"^4.1.0","handlebars":"^4.7.8","markdown-it":"^14.1.0","markdown-it-attrs":"^4.3.1","markdown-it-front-matter":"^0.2.4"},"_hasShrinkwrap":false,"devDependencies":{"inquirer":"^12.6.0","typescript":"~5.7.2","@types/node":"^22.14.1","@types/js-yaml":"^4.0.9","@types/markdown-it":"^14.1.2","markdown-it-terminal":"^0.4.0","@types/markdown-it-attrs":"^4.1.3"},"_npmOperationalInternal":{"tmp":"tmp/mdstory_0.1.0_1745639773920_0.3705774178015744","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@elvishscout/mdstory","version":"0.1.1","keywords":["markdown","handlebars"],"author":{"name":"Jiakai Jiang"},"license":"ISC","_id":"@elvishscout/mdstory@0.1.1","maintainers":[{"name":"elvishscout","email":"elvishscoutustc@outlook.com"}],"dist":{"shasum":"8f1b0487f0936711d1c9545193c6f8ed51917384","tarball":"https://registry.npmjs.org/@elvishscout/mdstory/-/mdstory-0.1.1.tgz","fileCount":15,"integrity":"sha512-6B8y29Aiw1unqSNt9Sg8Na3nurS5D8NSNsLeFIBXZNG3uPSVRCe4a9Hfw5QCbNOHnDNSL4EmEwXln95wFh7KrQ==","signatures":[{"sig":"MEUCIQC988aRx6jKBGqtKCnF6JTJb7zKkgMv3wEtGe8UC73WfwIgBSn9YY3jbNkYTBvErFi0aRnLP7b0/Z8GNaw5jukNHNY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22813},"main":"./dist/index.js","type":"module","types":"./types","gitHead":"9d1532cdc0e8c45643433125cbeef5bbda6bae3e","scripts":{"test":"tsx ./test/index.test.ts","build":"tsc"},"_npmUser":{"name":"elvishscout","email":"elvishscoutustc@outlook.com"},"_npmVersion":"10.5.2","description":"An interactive story format based on Markdown and Handlebars with JavaScript support.","directories":{},"_nodeVersion":"20.13.1","dependencies":{"zod":"^3.24.3","js-yaml":"^4.1.0","handlebars":"^4.7.8","markdown-it":"^14.1.0","markdown-it-attrs":"^4.3.1","markdown-it-front-matter":"^0.2.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","inquirer":"^12.6.0","typescript":"~5.7.2","@types/node":"^22.14.1","@types/js-yaml":"^4.0.9","@types/markdown-it":"^14.1.2","markdown-it-terminal":"^0.4.0","@types/markdown-it-attrs":"^4.1.3"},"_npmOperationalInternal":{"tmp":"tmp/mdstory_0.1.1_1745660901419_0.3514612004082174","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@elvishscout/mdstory","version":"0.1.2","keywords":["markdown","handlebars"],"author":{"name":"Jiakai Jiang"},"license":"ISC","_id":"@elvishscout/mdstory@0.1.2","maintainers":[{"name":"elvishscout","email":"elvishscoutustc@outlook.com"}],"dist":{"shasum":"f94dd492c17465ab0dabdf2eecc672047465eaec","tarball":"https://registry.npmjs.org/@elvishscout/mdstory/-/mdstory-0.1.2.tgz","fileCount":17,"integrity":"sha512-Wnqnwbs2RwsKczZQQ50Xhav5nm9OgO3vEiTx0dLnR1pc5M+FJD5EZ3ixR5GiIv6UbqAYpAmkgyO8TGXhKNm3EQ==","signatures":[{"sig":"MEUCIQDLIrZo0uUXloTIgkc3mj/zqogLJOZQ7Mfxm4ggIGCD/gIgW5yA3FSFXbr/VHedT7Y078KeB/qG8YrxdbRS+n3Cl4Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25580},"main":"./dist/index.js","type":"module","types":"./types","gitHead":"4edeb6b376cd2e0d3dc9b348a0f2f3e93151db00","scripts":{"test":"tsx ./test/index.test.ts","build":"tsc"},"_npmUser":{"name":"elvishscout","email":"elvishscoutustc@outlook.com"},"_npmVersion":"10.5.2","description":"An interactive story format based on Markdown and Handlebars with JavaScript support.","directories":{},"_nodeVersion":"20.13.1","dependencies":{"zod":"^3.24.3","js-yaml":"^4.1.0","handlebars":"^4.7.8","markdown-it":"^14.1.0","markdown-it-attrs":"^4.3.1","markdown-it-front-matter":"^0.2.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","inquirer":"^12.6.0","typescript":"~5.7.2","@types/node":"^22.14.1","@types/js-yaml":"^4.0.9","@types/markdown-it":"^14.1.2","markdown-it-terminal":"^0.4.0","@types/markdown-it-attrs":"^4.1.3"},"_npmOperationalInternal":{"tmp":"tmp/mdstory_0.1.2_1745758594036_0.5973935559755685","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@elvishscout/mdstory","version":"0.1.3","keywords":["markdown","handlebars"],"author":{"name":"Jiakai Jiang"},"license":"ISC","_id":"@elvishscout/mdstory@0.1.3","maintainers":[{"name":"elvishscout","email":"elvishscoutustc@outlook.com"}],"homepage":"https://github.com/ElvishScout/mdstory#readme","bugs":{"url":"https://github.com/ElvishScout/mdstory/issues"},"dist":{"shasum":"1f173c2ef9f79b6e82b43df7428650e6d87f176d","tarball":"https://registry.npmjs.org/@elvishscout/mdstory/-/mdstory-0.1.3.tgz","fileCount":17,"integrity":"sha512-zO/qgYKRxY5r+YvNZsVReGylovT0zgkWuPjvw5X9wG9Ma9E/ucxXHoiTEJF9/aOmDO7Co/FbAC6whj5shb244A==","signatures":[{"sig":"MEYCIQCNhYLlWocic/+S4ZCP9JA6/PJv9jpX1hO08Vs7Sb8ycwIhAKlOL9ht6/B0Kv9bkSA8O6P2YZEWSwTJs+gtsd7rg11F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35865},"main":"./dist/index.js","type":"module","types":"./types","gitHead":"013ee95fbe5b360840e88727d52a32d89fe0c239","scripts":{"test":"tsx ./test/index.test.ts","build":"tsc"},"_npmUser":{"name":"elvishscout","email":"elvishscoutustc@outlook.com"},"repository":{"url":"git+https://github.com/ElvishScout/mdstory.git","type":"git"},"_npmVersion":"10.5.2","description":"An interactive fiction scripting format based on Markdown and Handlebars.","directories":{},"_nodeVersion":"20.13.1","dependencies":{"zod":"^3.24.3","js-yaml":"^4.1.0","handlebars":"^4.7.8","markdown-it":"^14.1.0","markdown-it-attrs":"^4.3.1","markdown-it-front-matter":"^0.2.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","inquirer":"^12.6.0","typescript":"~5.7.2","@types/node":"^22.14.1","@types/js-yaml":"^4.0.9","@types/markdown-it":"^14.1.2","markdown-it-terminal":"^0.4.0","@types/markdown-it-attrs":"^4.1.3"},"_npmOperationalInternal":{"tmp":"tmp/mdstory_0.1.3_1746023567118_0.5174873929271351","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@elvishscout/mdstory","version":"0.1.4","keywords":["markdown","handlebars"],"author":{"name":"Jiakai Jiang"},"license":"ISC","_id":"@elvishscout/mdstory@0.1.4","maintainers":[{"name":"elvishscout","email":"elvishscoutustc@outlook.com"}],"homepage":"https://github.com/ElvishScout/mdstory#readme","bugs":{"url":"https://github.com/ElvishScout/mdstory/issues"},"dist":{"shasum":"9b050625bcd655df197a42878c0ce0759db43860","tarball":"https://registry.npmjs.org/@elvishscout/mdstory/-/mdstory-0.1.4.tgz","fileCount":17,"integrity":"sha512-8uQrha98PVlWcEvWe2teJpYDZzCnQ5t+rZWcN/dVdWphXY1aVb5fqsjG82EX5jypBQCnS8fodt/3yN+INvJgvQ==","signatures":[{"sig":"MEQCIEIQYmD7tf0ZydpbQw/ctEDlx6mX2ZRd713zoTt91Vl4AiBiBXuD2p0xJgpi9KTjqqdO/rfpiFGqKzQMHZBAccOovA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38962},"main":"./dist/index.js","type":"module","types":"./types","gitHead":"758f60531b0b0de4a8b9309b9fbd1ed5072ace58","scripts":{"test":"tsx ./test/index.test.ts","build":"tsc"},"_npmUser":{"name":"elvishscout","email":"elvishscoutustc@outlook.com"},"repository":{"url":"git+https://github.com/ElvishScout/mdstory.git","type":"git"},"_npmVersion":"10.5.2","description":"An interactive fiction scripting format based on Markdown and Handlebars.","directories":{},"_nodeVersion":"20.13.1","dependencies":{"zod":"^3.24.3","js-yaml":"^4.1.0","handlebars":"^4.7.8","markdown-it":"^14.1.0","markdown-it-attrs":"^4.3.1","markdown-it-front-matter":"^0.2.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","inquirer":"^12.6.0","typescript":"~5.7.2","@types/node":"^22.14.1","@types/js-yaml":"^4.0.9","@types/markdown-it":"^14.1.2","markdown-it-terminal":"^0.4.0","@types/markdown-it-attrs":"^4.1.3"},"_npmOperationalInternal":{"tmp":"tmp/mdstory_0.1.4_1746089802525_0.5910627258745835","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@elvishscout/mdstory","version":"0.2.0","keywords":["markdown","handlebars"],"author":{"name":"Jiakai Jiang"},"license":"ISC","_id":"@elvishscout/mdstory@0.2.0","maintainers":[{"name":"elvishscout","email":"elvishscoutustc@outlook.com"}],"homepage":"https://github.com/ElvishScout/mdstory#readme","bugs":{"url":"https://github.com/ElvishScout/mdstory/issues"},"bin":{"mdstory":"dist/cli/index.js"},"dist":{"shasum":"370545e13e0dbeb058ec3f09c5752b04192d5f15","tarball":"https://registry.npmjs.org/@elvishscout/mdstory/-/mdstory-0.2.0.tgz","fileCount":38,"integrity":"sha512-R0o9ztMSJwAPN7t1uB2Ws2HwuJRIxW6iPvylswz5Qv4C+oNO5hloOte6gfCDjJuaLmKHGSzNrXrgVHwdj2mgVg==","signatures":[{"sig":"MEQCIANKCTpUG5zoa8JtFcXs1DzKqTd7a+pxTsFl1V8fPGotAiAHwDfYmW1UJwk/V8K50zvCjNG40+KoCvKZ2oiDZQoLQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":440300},"main":"./dist/index.js","type":"module","types":"./types","gitHead":"47ec04720ebf2c1d7411fe773af6659acc32a511","scripts":{"cli":"node ./dist/cli/index.js","build":"tsc -b","prebuild":"shx rm -rf \"dist/*\" \"dist/.*\"","build:all":"npm run build && npm run build:template","build:template":"cd html-template && npm run build"},"_npmUser":{"name":"elvishscout","email":"elvishscoutustc@outlook.com"},"repository":{"url":"git+https://github.com/ElvishScout/mdstory.git","type":"git"},"workspaces":["html-template"],"_npmVersion":"11.6.2","description":"An interactive fiction scripting format based on Markdown and Handlebars.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"zod":"^3.24.3","open":"^10.2.0","nanoid":"^5.1.16","js-yaml":"^4.1.0","inquirer":"^12.6.0","commander":"^15.0.0","handlebars":"^4.7.8","markdown-it":"^14.1.0","markdown-it-mark":"^4.0.0","markdown-it-attrs":"^4.3.1","markdown-it-terminal":"^0.4.0","markdown-it-front-matter":"^0.2.4"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.19.3","typescript":"~5.7.2","@types/node":"^22.20.0","words-count":"^2.0.2","@types/js-yaml":"^4.0.9","@types/markdown-it":"^14.1.2","@types/markdown-it-attrs":"^4.1.3"},"_npmOperationalInternal":{"tmp":"tmp/mdstory_0.2.0_1782550018389_0.16046026088973298","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@elvishscout/mdstory","version":"0.2.1","keywords":["markdown","handlebars"],"author":{"name":"Jiakai Jiang"},"license":"ISC","_id":"@elvishscout/mdstory@0.2.1","maintainers":[{"name":"elvishscout","email":"elvishscoutustc@outlook.com"}],"homepage":"https://github.com/ElvishScout/mdstory#readme","bugs":{"url":"https://github.com/ElvishScout/mdstory/issues"},"bin":{"mdstory":"dist/cli/index.js"},"dist":{"shasum":"c01042dc00614ffd018baa7cd8369fe088a4647c","tarball":"https://registry.npmjs.org/@elvishscout/mdstory/-/mdstory-0.2.1.tgz","fileCount":38,"integrity":"sha512-Ys/oR3N0E5cI8Y/fOCwAMozM9WGsFa/ZcxHWjfEmMEyz6V0He5maFXIlx+8TzjuHWv7ufnaBADFe9bq56PISrw==","signatures":[{"sig":"MEQCIAeajDyEnlN7hrYTkARvR/xH93ItHXgzVX9+BsCSRP5XAiB0lueP2jkTO6/WXHCj3TZsI/g/6zWKK+lI4SGBNJUYnQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":442197},"main":"./dist/index.js","type":"module","types":"./types","gitHead":"5b7a9861545a2c4228ca47eb9d55bf65cfa9803e","scripts":{"cli":"node ./dist/cli/index.js","build":"tsc -b","prebuild":"shx rm -rf \"dist/*\" \"dist/.*\"","build:all":"npm run build && npm run build:template","postbuild":"shx chmod u+x \"dist/cli/index.js\"","build:template":"cd html-template && npm run build"},"_npmUser":{"name":"elvishscout","email":"elvishscoutustc@outlook.com"},"repository":{"url":"git+https://github.com/ElvishScout/mdstory.git","type":"git"},"workspaces":["html-template"],"_npmVersion":"11.6.2","description":"An interactive fiction scripting format based on Markdown and Handlebars.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"zod":"^3.24.3","open":"^10.2.0","nanoid":"^5.1.16","js-yaml":"^4.1.0","inquirer":"^12.6.0","commander":"^15.0.0","handlebars":"^4.7.8","markdown-it":"^14.1.0","markdown-it-mark":"^4.0.0","markdown-it-attrs":"^4.3.1","markdown-it-terminal":"^0.4.0","markdown-it-front-matter":"^0.2.4"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.19.3","typescript":"~5.7.2","@types/node":"^22.20.0","words-count":"^2.0.2","@types/js-yaml":"^4.0.9","@types/markdown-it":"^14.1.2","@types/markdown-it-attrs":"^4.1.3"},"_npmOperationalInternal":{"tmp":"tmp/mdstory_0.2.1_1782551270808_0.798341767669482","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@elvishscout/mdstory","version":"0.2.2","keywords":["markdown","handlebars"],"author":{"name":"Jiakai Jiang"},"license":"ISC","_id":"@elvishscout/mdstory@0.2.2","maintainers":[{"name":"elvishscout","email":"elvishscoutustc@outlook.com"}],"homepage":"https://github.com/ElvishScout/mdstory#readme","bugs":{"url":"https://github.com/ElvishScout/mdstory/issues"},"bin":{"mdstory":"dist/cli/index.js"},"dist":{"shasum":"e1fee9b492ae0a38e0eb7c088b13f9b76e5bd6fe","tarball":"https://registry.npmjs.org/@elvishscout/mdstory/-/mdstory-0.2.2.tgz","fileCount":38,"integrity":"sha512-8xpu9RLinn5eyjQ78YjdlOZG72DdyJIwv+tslec0/0U0qG431OdmA9dA4EsqAwa5uY0bNe6/67VkkSGFaGstpA==","signatures":[{"sig":"MEUCIHFhrpW/vswbzPMvJ0704+32WCpJj8bYP1ou2HvCF4EUAiEA9f/UIK22JbULzTWmDbYEcNPs+DKWARbkBsMdgfkZTfc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":442466},"main":"./dist/index.js","type":"module","types":"./types","gitHead":"bdd4ec4e02ecb3e89c2b537ddbdcd0d820c286d8","scripts":{"cli":"node ./dist/cli/index.js","build":"tsc -b","prebuild":"shx rm -rf \"dist/*\" \"dist/.*\"","build:all":"npm run build && npm run build:template","postbuild":"shx chmod u+x \"dist/cli/index.js\"","build:template":"cd html-template && npm run build"},"_npmUser":{"name":"elvishscout","email":"elvishscoutustc@outlook.com"},"repository":{"url":"git+https://github.com/ElvishScout/mdstory.git","type":"git"},"workspaces":["html-template"],"_npmVersion":"11.6.2","description":"An interactive fiction scripting format based on Markdown and Handlebars.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"zod":"^3.24.3","open":"^10.2.0","nanoid":"^5.1.16","js-yaml":"^4.1.0","inquirer":"^12.6.0","commander":"^15.0.0","handlebars":"^4.7.8","markdown-it":"^14.1.0","markdown-it-mark":"^4.0.0","markdown-it-attrs":"^4.3.1","markdown-it-terminal":"^0.4.0","markdown-it-front-matter":"^0.2.4"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.19.3","typescript":"~5.7.2","@types/node":"^22.20.0","words-count":"^2.0.2","@types/js-yaml":"^4.0.9","@types/markdown-it":"^14.1.2","@types/markdown-it-attrs":"^4.1.3"},"_npmOperationalInternal":{"tmp":"tmp/mdstory_0.2.2_1782782406031_0.9380547897269782","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@elvishscout/mdstory","version":"0.2.3","keywords":["markdown","handlebars"],"author":{"name":"Jiakai Jiang"},"license":"ISC","_id":"@elvishscout/mdstory@0.2.3","maintainers":[{"name":"elvishscout","email":"elvishscoutustc@outlook.com"}],"homepage":"https://github.com/ElvishScout/mdstory#readme","bugs":{"url":"https://github.com/ElvishScout/mdstory/issues"},"bin":{"mdstory":"dist/cli/index.js"},"dist":{"shasum":"e2791ef8e260cdd9e79eaee943ca9409eee07b57","tarball":"https://registry.npmjs.org/@elvishscout/mdstory/-/mdstory-0.2.3.tgz","fileCount":48,"integrity":"sha512-ocCK+aroRFvZ4p+OanQidJTxQhL5MqPerhKihYf9oSGcfrgvUKHOXtOJeQv05dRINL/GPzxrrr7onNvH4Z4ePw==","signatures":[{"sig":"MEQCICTlMD7fWiEAZy0kc6moUiopNO/zwNGRTlsCl0JkgefCAiBBFVeRLngQYUXyZkmaYVyOeG7TI7qYGumPTI0fuYxNVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":512735},"main":"./dist/index.js","type":"module","types":"./types","gitHead":"7946725bd60fead0c835a9ebc9414346688f75fd","scripts":{"cli":"node ./dist/cli/index.js","test":"vitest run","build":"tsc -b","prebuild":"shx rm -rf \"dist/*\" \"dist/.*\"","build:all":"npm run build && npm run build:template","postbuild":"shx chmod u+x \"dist/cli/index.js\"","test:watch":"vitest","build:template":"cd html-template && npm run build"},"_npmUser":{"name":"elvishscout","email":"elvishscoutustc@outlook.com"},"repository":{"url":"git+https://github.com/ElvishScout/mdstory.git","type":"git"},"workspaces":["html-template"],"_npmVersion":"11.6.2","description":"An interactive fiction scripting format based on Markdown and Handlebars.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"zod":"^3.24.3","open":"^10.2.0","nanoid":"^5.1.16","js-yaml":"^4.1.0","inquirer":"^14.0.2","commander":"^15.0.0","handlebars":"^4.7.8","markdown-it":"^14.1.0","markdown-it-mark":"^4.0.0","markdown-it-attrs":"^4.3.1","markdown-it-terminal":"^0.4.0","markdown-it-front-matter":"^0.2.4"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.19.3","vitest":"^4.1.9","typescript":"~5.7.2","@types/node":"^22.20.0","words-count":"^2.0.2","@types/js-yaml":"^4.0.9","@types/markdown-it":"^14.1.2","@types/markdown-it-attrs":"^4.1.3"},"_npmOperationalInternal":{"tmp":"tmp/mdstory_0.2.3_1782896770319_0.38896546756217454","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@elvishscout/mdstory","version":"0.3.0","keywords":["markdown","handlebars"],"author":{"name":"Jiakai Jiang"},"license":"ISC","_id":"@elvishscout/mdstory@0.3.0","maintainers":[{"name":"elvishscout","email":"elvishscoutustc@outlook.com"}],"homepage":"https://github.com/ElvishScout/mdstory#readme","bugs":{"url":"https://github.com/ElvishScout/mdstory/issues"},"bin":{"mdstory":"dist/cli/index.js"},"dist":{"shasum":"fb16937b966e1c5b82a1f427b5e7ca1c02b937f6","tarball":"https://registry.npmjs.org/@elvishscout/mdstory/-/mdstory-0.3.0.tgz","fileCount":52,"integrity":"sha512-mdDsAUjsRQ6dagX7R+NSE+dJptEGGa/HXfKQVUns0Ta33IDE244K4dmnuomwgfLD1Swvz8rcLyaIQxC2VO0Hlw==","signatures":[{"sig":"MEUCIAM+chT1bmq+8a0O4WD6Y5W1fv5vV8CrYmYt9r7A3ifpAiEA/QY9XP6mVjnEsugX4LqWK7AHbiMINSucUo84yZYIRmA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":537951},"main":"./dist/index.js","type":"module","types":"./types","gitHead":"27bdc0f4f5e37e70d7f2484685aa94e6d450a700","scripts":{"cli":"node ./dist/cli/index.js","test":"vitest run","build":"tsc -b","prebuild":"shx rm -rf \"dist/*\" \"dist/.*\"","build:all":"npm run build && npm run build:templates","postbuild":"shx chmod u+x \"dist/cli/index.js\"","test:watch":"vitest","build:templates":"node templates/build.cjs"},"_npmUser":{"name":"elvishscout","email":"elvishscoutustc@outlook.com"},"repository":{"url":"git+https://github.com/ElvishScout/mdstory.git","type":"git"},"workspaces":["templates/*"],"_npmVersion":"11.6.2","description":"An interactive fiction scripting format based on Markdown and Handlebars.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"zod":"^3.24.3","open":"^10.2.0","js-yaml":"^4.1.0","inquirer":"^14.0.2","commander":"^15.0.0","handlebars":"^4.7.8","mime-types":"^3.0.2","markdown-it":"^14.1.0","markdown-it-mark":"^4.0.0","markdown-it-attrs":"^4.3.1","markdown-it-terminal":"^0.4.0","markdown-it-front-matter":"^0.2.4"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","vitest":"^4.1.9","typescript":"~5.7.2","@types/node":"^22.20.0","words-count":"^2.0.2","@types/js-yaml":"^4.0.9","@types/mime-types":"^3.0.1","@types/markdown-it":"^14.1.2","@types/markdown-it-attrs":"^4.1.3"},"_npmOperationalInternal":{"tmp":"tmp/mdstory_0.3.0_1783930658150_0.23677437245004884","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@elvishscout/mdstory","version":"0.4.0","keywords":["markdown","handlebars"],"author":{"name":"Jiakai Jiang"},"license":"ISC","_id":"@elvishscout/mdstory@0.4.0","maintainers":[{"name":"elvishscout","email":"elvishscoutustc@outlook.com"}],"homepage":"https://github.com/ElvishScout/mdstory#readme","bugs":{"url":"https://github.com/ElvishScout/mdstory/issues"},"bin":{"mdstory":"dist/cli/index.js"},"dist":{"shasum":"9b6c6c19c549fbb9e22a69448b7c062337bcf997","tarball":"https://registry.npmjs.org/@elvishscout/mdstory/-/mdstory-0.4.0.tgz","fileCount":52,"integrity":"sha512-mPewk07DGuQJ6aygnVsVTm5obGNOm3riI3th7V+U6QynA97BG2+hbbolMTHYeIAZVOIQSGx9k67kleRJkRqGmw==","signatures":[{"sig":"MEYCIQCOKgamX2KdoNCicbQcewsDwdQiLb9bY08JjTUldnH2AgIhAN3lxENSqSvJufuGGdYdF8+d6bFns9cLQ7n9qSbW8zl/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":526332},"main":"./dist/index.js","type":"module","types":"./types","gitHead":"9f3cdb8a540e1cf01bcde3ca563d5cbc6e8bd648","scripts":{"cli":"node ./dist/cli/index.js","test":"vitest run","build":"tsc -b","prebuild":"shx rm -rf \"dist/*\" \"dist/.*\" \"types/*\" \"types/.*\"","build:all":"npm run build && npm run build:templates","postbuild":"shx chmod u+x \"dist/cli/index.js\"","test:watch":"vitest","build:templates":"node templates/build.cjs"},"_npmUser":{"name":"elvishscout","email":"elvishscoutustc@outlook.com"},"repository":{"url":"git+https://github.com/ElvishScout/mdstory.git","type":"git"},"workspaces":["templates/*"],"_npmVersion":"11.6.2","description":"An interactive fiction scripting format based on Markdown and Handlebars.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"zod":"^3.24.3","open":"^10.2.0","js-yaml":"^4.1.0","commander":"^15.0.0","handlebars":"^4.7.8","mime-types":"^3.0.2","markdown-it":"^14.1.0","words-count":"^2.0.2","markdown-it-mark":"^4.0.0","@inquirer/prompts":"^8.5.2","markdown-it-attrs":"^4.3.1","markdown-it-terminal":"^0.4.0","markdown-it-front-matter":"^0.2.4"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","vitest":"^4.1.9","typescript":"~5.7.2","@types/node":"^22.20.0","@types/js-yaml":"^4.0.9","@types/mime-types":"^3.0.1","@types/markdown-it":"^14.1.2","@types/markdown-it-attrs":"^4.1.3"},"_npmOperationalInternal":{"tmp":"tmp/mdstory_0.4.0_1784191790992_0.802652506262661","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@elvishscout/mdstory","version":"0.4.1","keywords":["markdown","handlebars"],"author":{"name":"Jiakai Jiang"},"license":"ISC","_id":"@elvishscout/mdstory@0.4.1","maintainers":[{"name":"elvishscout","email":"elvishscoutustc@outlook.com"}],"homepage":"https://github.com/ElvishScout/mdstory#readme","bugs":{"url":"https://github.com/ElvishScout/mdstory/issues"},"bin":{"mdstory":"dist/cli/index.js"},"dist":{"shasum":"af365ea352b59b776a3b6909fc2f1671d929ee2b","tarball":"https://registry.npmjs.org/@elvishscout/mdstory/-/mdstory-0.4.1.tgz","fileCount":60,"integrity":"sha512-sigVk/creADwIzfqPSz69mvuuEaj35sjhtkesWuk2JHA0P0R7KwLFmA/7l+1mwc/VnAzmQ/kEwuE4MnHaoyBrg==","signatures":[{"sig":"MEUCIQDox8Rxs3W6DrMoLCxjuZkpwz8jOs9XROpIMmv2XKdxNAIgYVW53ze1YEp1UlwDds4RmdRqWrM7lDfT2HsVteU+vro=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":534229},"main":"./dist/index.js","type":"module","types":"./types","gitHead":"8c401c042aa35e4322ad45526c236ad64bf9c86b","scripts":{"cli":"node ./dist/cli/index.js","test":"vitest run","build":"tsc -b","prebuild":"shx rm -rf \"dist/*\" \"dist/.*\" \"types/*\" \"types/.*\"","build:all":"npm run build && npm run build:templates","postbuild":"shx chmod u+x \"dist/cli/index.js\"","test:watch":"vitest","build:templates":"node templates/build.cjs"},"_npmUser":{"name":"elvishscout","email":"elvishscoutustc@outlook.com"},"repository":{"url":"git+https://github.com/ElvishScout/mdstory.git","type":"git"},"workspaces":["templates/*"],"_npmVersion":"11.6.2","description":"An interactive fiction scripting format based on Markdown and Handlebars.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"zod":"^3.24.3","open":"^10.2.0","js-yaml":"^4.1.0","commander":"^15.0.0","handlebars":"^4.7.8","mime-types":"^3.0.2","markdown-it":"^14.1.0","words-count":"^2.0.2","markdown-it-mark":"^4.0.0","@inquirer/prompts":"^8.5.2","markdown-it-attrs":"^4.3.1","markdown-it-terminal":"^0.4.0","markdown-it-front-matter":"^0.2.4"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","vitest":"^4.1.9","typescript":"~5.7.2","@types/node":"^22.20.0","@types/js-yaml":"^4.0.9","@types/mime-types":"^3.0.1","@types/markdown-it":"^14.1.2","@types/markdown-it-attrs":"^4.1.3"},"_npmOperationalInternal":{"tmp":"tmp/mdstory_0.4.1_1784683027683_0.09630079514191014","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@elvishscout/mdstory","version":"0.4.2","keywords":["markdown","handlebars"],"author":{"name":"Jiakai Jiang"},"license":"ISC","_id":"@elvishscout/mdstory@0.4.2","maintainers":[{"name":"elvishscout","email":"elvishscoutustc@outlook.com"}],"homepage":"https://github.com/ElvishScout/mdstory#readme","bugs":{"url":"https://github.com/ElvishScout/mdstory/issues"},"bin":{"mdstory":"dist/cli/index.js"},"dist":{"shasum":"b85aec7b47609d8aa115f2691dc8cc4a0fc266c0","tarball":"https://registry.npmjs.org/@elvishscout/mdstory/-/mdstory-0.4.2.tgz","fileCount":60,"integrity":"sha512-7+VmrO5sIYZQO7bnNQqDQL5ZNDnzlo6f70Ds8lvQBf0zDGu+2kwIQEJuVvuNvCjqnhUhAFHix3xkvkGL8mrnxA==","signatures":[{"sig":"MEUCIBSQaU3StvrvQBk5rJCcj9ZEO++ajwb7gl8jZnPec42rAiEA1EJDk8KxCyBC9wgCjpaXeh9MibK/+pZka9spV8cGbb0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":537336},"main":"./dist/index.js","type":"module","types":"./types","gitHead":"f2ef4a2bd808e0d23d93e05e08e259bbfe05be39","scripts":{"cli":"node ./dist/cli/index.js","test":"vitest run","build":"tsc -b","prebuild":"shx rm -rf \"dist/*\" \"dist/.*\" \"types/*\" \"types/.*\"","build:all":"npm run build && npm run build:templates","postbuild":"shx chmod u+x \"dist/cli/index.js\"","test:watch":"vitest","build:templates":"node templates/build.cjs"},"_npmUser":{"name":"elvishscout","email":"elvishscoutustc@outlook.com"},"repository":{"url":"git+https://github.com/ElvishScout/mdstory.git","type":"git"},"workspaces":["templates/*"],"_npmVersion":"11.6.2","description":"An interactive fiction scripting format based on Markdown and Handlebars.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"zod":"^3.24.3","open":"^10.2.0","js-yaml":"^4.1.0","commander":"^15.0.0","handlebars":"^4.7.8","mime-types":"^3.0.2","markdown-it":"^14.1.0","words-count":"^2.0.2","markdown-it-mark":"^4.0.0","@inquirer/prompts":"^8.5.2","markdown-it-attrs":"^4.3.1","markdown-it-terminal":"^0.4.0","markdown-it-front-matter":"^0.2.4"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","vitest":"^4.1.9","typescript":"~5.7.2","@types/node":"^22.20.0","@types/js-yaml":"^4.0.9","@types/mime-types":"^3.0.1","@types/markdown-it":"^14.1.2","@types/markdown-it-attrs":"^4.1.3"},"_npmOperationalInternal":{"tmp":"tmp/mdstory_0.4.2_1784714553061_0.04379224926354364","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@elvishscout/mdstory","version":"0.4.3","keywords":["markdown","handlebars"],"author":{"name":"Jiakai Jiang"},"license":"ISC","_id":"@elvishscout/mdstory@0.4.3","maintainers":[{"name":"elvishscout","email":"elvishscoutustc@outlook.com"}],"homepage":"https://github.com/ElvishScout/mdstory#readme","bugs":{"url":"https://github.com/ElvishScout/mdstory/issues"},"bin":{"mdstory":"dist/cli/index.js"},"dist":{"shasum":"da06390d54d33a0f7f08fa63f13afa9ba7c056ab","tarball":"https://registry.npmjs.org/@elvishscout/mdstory/-/mdstory-0.4.3.tgz","fileCount":64,"integrity":"sha512-vagFFbIa9m3ySQPPkHYmX7/UjYmul5N80OFot4b7OMVN4N42RoiWwwfNE/RtRuYjrA0At/sja20zMXcxCIwt0Q==","signatures":[{"sig":"MEUCIHt2YYypFRvG4qxkQ4QokS+WheMq0A2iVwSnAsV1EVOEAiEAoCH6onHQuXDk0roG5WNTkmhUqLfsUQNSv00tXI/MuTc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":541114},"main":"./dist/index.js","type":"module","types":"./types","gitHead":"334765686eb1414950312cc9dc4d4a5a4cc4ef7b","scripts":{"cli":"node ./dist/cli/index.js","test":"vitest run","build":"tsc -b","prebuild":"shx rm -rf \"dist/*\" \"dist/.*\" \"types/*\" \"types/.*\"","build:all":"npm run build && npm run build:templates","postbuild":"shx chmod u+x \"dist/cli/index.js\"","test:watch":"vitest","build:templates":"node templates/build.cjs"},"_npmUser":{"name":"elvishscout","email":"elvishscoutustc@outlook.com"},"repository":{"url":"git+https://github.com/ElvishScout/mdstory.git","type":"git"},"workspaces":["templates/*"],"_npmVersion":"11.6.2","description":"An interactive fiction scripting format based on Markdown and Handlebars.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"zod":"^3.24.3","open":"^10.2.0","js-yaml":"^4.1.0","commander":"^15.0.0","handlebars":"^4.7.8","mime-types":"^3.0.2","markdown-it":"^14.1.0","words-count":"^2.0.2","markdown-it-mark":"^4.0.0","@inquirer/prompts":"^8.5.2","markdown-it-attrs":"^4.3.1","markdown-it-terminal":"^0.4.0","markdown-it-front-matter":"^0.2.4"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","vitest":"^4.1.9","typescript":"~5.7.2","@types/node":"^22.20.0","@types/js-yaml":"^4.0.9","@types/mime-types":"^3.0.1","@types/markdown-it":"^14.1.2","@types/markdown-it-attrs":"^4.1.3"},"_npmOperationalInternal":{"tmp":"tmp/mdstory_0.4.3_1784884201212_0.33338352871592103","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@elvishscout/mdstory","version":"0.4.4","keywords":["markdown","handlebars"],"author":{"name":"Jiakai Jiang"},"license":"ISC","_id":"@elvishscout/mdstory@0.4.4","maintainers":[{"name":"elvishscout","email":"elvishscoutustc@outlook.com"}],"homepage":"https://github.com/ElvishScout/mdstory#readme","bugs":{"url":"https://github.com/ElvishScout/mdstory/issues"},"bin":{"mdstory":"dist/cli/index.js"},"dist":{"shasum":"aa759fd4a45d5697b254f255ce8a6c10ba86660d","tarball":"https://registry.npmjs.org/@elvishscout/mdstory/-/mdstory-0.4.4.tgz","fileCount":64,"integrity":"sha512-JWGPh/7PwsJjDPVKPUeoU+/E7U/mwMzFMT0V5Jo33w6G94bJ2KMchNh57NQ1OW4jI6JPRCwPmnGFU6uPSj8+ug==","signatures":[{"sig":"MEUCIQDpZLwIr/dEw75ShSCsNEuMlWobYVnO6uNImfTLvDESnQIged+f5m7HNhF3zaMgC7KC+BQbj+jYhNzbgLNRh/MuGag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":541248},"main":"./dist/index.js","type":"module","types":"./types","gitHead":"efe63a612e148678921cbf53f5f40884ec7125cc","scripts":{"cli":"node ./dist/cli/index.js","test":"vitest run","build":"tsc -b","prebuild":"shx rm -rf \"dist/*\" \"dist/.*\" \"types/*\" \"types/.*\"","build:all":"npm run build && npm run build:templates","postbuild":"shx chmod u+x \"dist/cli/index.js\"","test:watch":"vitest","build:templates":"node templates/build.cjs"},"_npmUser":{"name":"elvishscout","email":"elvishscoutustc@outlook.com"},"repository":{"url":"git+https://github.com/ElvishScout/mdstory.git","type":"git"},"workspaces":["templates/*"],"_npmVersion":"11.6.2","description":"An interactive fiction scripting format based on Markdown and Handlebars.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"zod":"^3.24.3","open":"^10.2.0","js-yaml":"^4.1.0","commander":"^15.0.0","handlebars":"^4.7.8","mime-types":"^3.0.2","markdown-it":"^14.1.0","words-count":"^2.0.2","markdown-it-mark":"^4.0.0","@inquirer/prompts":"^8.5.2","markdown-it-attrs":"^4.3.1","markdown-it-terminal":"^0.4.0","markdown-it-front-matter":"^0.2.4"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","vitest":"^4.1.9","typescript":"~5.7.2","@types/node":"^22.20.0","@types/js-yaml":"^4.0.9","@types/mime-types":"^3.0.1","@types/markdown-it":"^14.1.2","@types/markdown-it-attrs":"^4.1.3"},"_npmOperationalInternal":{"tmp":"tmp/mdstory_0.4.4_1784886283068_0.03617152814782676","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"workspaces":["templates/*"],"name":"@elvishscout/mdstory","repository":{"type":"git","url":"git+https://github.com/ElvishScout/mdstory.git"},"version":"0.4.5","description":"An interactive fiction scripting format based on Markdown and Handlebars.","main":"./dist/index.js","sideEffects":false,"type":"module","bin":{"mdstory":"dist/cli/index.js"},"scripts":{"prebuild":"shx rm -rf \"dist/*\" \"dist/.*\" \"types/*\" \"types/.*\"","postbuild":"shx chmod u+x \"dist/cli/index.js\"","build":"tsc -b","build:templates":"node templates/build.cjs","build:all":"npm run build && npm run build:templates","cli":"node ./dist/cli/index.js","test":"vitest run","test:watch":"vitest"},"devDependencies":{"@types/js-yaml":"^4.0.9","@types/markdown-it":"^14.1.2","@types/markdown-it-attrs":"^4.1.3","@types/node":"^22.20.0","shx":"^0.4.0","typescript":"~5.7.2","vitest":"^4.1.9"},"dependencies":{"@inquirer/prompts":"^8.5.2","commander":"^15.0.0","handlebars":"^4.7.8","js-yaml":"^4.1.0","markdown-it":"^14.1.0","markdown-it-attrs":"^4.3.1","markdown-it-front-matter":"^0.2.4","markdown-it-mark":"^4.0.0","markdown-it-terminal":"^0.4.0","mime":"^4.1.0","open":"^10.2.0","words-count":"^2.0.2","zod":"^3.24.3"},"types":"./types","keywords":["markdown","handlebars"],"author":{"name":"Jiakai Jiang"},"license":"ISC","gitHead":"a72d3649f0cc5d0f4bdbdf632dadfa007ed4cac6","_id":"@elvishscout/mdstory@0.4.5","bugs":{"url":"https://github.com/ElvishScout/mdstory/issues"},"homepage":"https://github.com/ElvishScout/mdstory#readme","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-1l6KzCjOathWo5VSHJqjHdTXpSis1ozG8gHqzxHY2Fpd7IB06VLdF8OaDdZyd4rw+NQGwjxbvaHDngckWA8oXA==","shasum":"199626fa7039b7fc8eab761d9b7bf4310f01d704","tarball":"https://registry.npmjs.org/@elvishscout/mdstory/-/mdstory-0.4.5.tgz","fileCount":64,"unpackedSize":547261,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCinRmjZSgZDdtTY61FPBR+LqtK67/GJKm6GKg1nfe80QIgIABCx1/XoFhIcJdg4Opa7HcyGYz/doxYLJNY6WVeqhg="}]},"_npmUser":{"name":"elvishscout","email":"elvishscoutustc@outlook.com"},"directories":{},"maintainers":[{"name":"elvishscout","email":"elvishscoutustc@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mdstory_0.4.5_1785332515991_0.40127272286788607"},"_hasShrinkwrap":false}},"time":{"created":"2025-04-26T03:56:13.794Z","modified":"2026-07-29T13:41:56.380Z","0.1.0":"2025-04-26T03:56:14.100Z","0.1.1":"2025-04-26T09:48:21.596Z","0.1.2":"2025-04-27T12:56:34.237Z","0.1.3":"2025-04-30T14:32:47.506Z","0.1.4":"2025-05-01T08:56:42.709Z","0.2.0":"2026-06-27T08:46:58.525Z","0.2.1":"2026-06-27T09:07:51.034Z","0.2.2":"2026-06-30T01:20:06.206Z","0.2.3":"2026-07-01T09:06:10.507Z","0.3.0":"2026-07-13T08:17:38.331Z","0.4.0":"2026-07-16T08:49:51.162Z","0.4.1":"2026-07-22T01:17:07.820Z","0.4.2":"2026-07-22T10:02:33.244Z","0.4.3":"2026-07-24T09:10:01.423Z","0.4.4":"2026-07-24T09:44:43.255Z","0.4.5":"2026-07-29T13:41:56.208Z"},"bugs":{"url":"https://github.com/ElvishScout/mdstory/issues"},"author":{"name":"Jiakai Jiang"},"license":"ISC","homepage":"https://github.com/ElvishScout/mdstory#readme","keywords":["markdown","handlebars"],"repository":{"type":"git","url":"git+https://github.com/ElvishScout/mdstory.git"},"description":"An interactive fiction scripting format based on Markdown and Handlebars.","maintainers":[{"name":"elvishscout","email":"elvishscoutustc@outlook.com"}],"readme":"[English](README.md) | **中文** | [写作规范](WRITING_GUIDE.zh-CN.md)\n\n# MdStory\n\n基于 Markdown 和 Handlebars 的互动小说脚本格式。\n\n在线演示：<https://mdstory.elvish.cc>\n\n## 安装\n\n```bash\nnpm install @elvishscout/mdstory\n```\n\n如需全局使用 `mdstory` 命令：\n\n```bash\nnpm install -g @elvishscout/mdstory\n```\n\n## 快速开始\n\nMdStory 文件是一个 Markdown 文档。每个文件是一个 Section，标题层级（`#` `##` `###` …）产生嵌套子 Section，支持无限层级：\n\n```markdown\n---\ntitle: 岔路口\nscope:\n  name: 旅人\n---\n\n# 岔路口\n\n<script>\nexport default {\n  data() {\n    return { gold: 10 };\n  },\n};\n</script>\n\n## 森林 {#forest}\n\n### 密林深处 {#path}\n\n一个陌生人朝你走来。\n\n{{input \"string\" name=\"旅人\"}}\n\n{{#nav \"river.bridge\"}}过桥{{/nav}}\n{{#nav \"forest.path\"}}走进森林{{/nav}}\n\n## 河流 {#river}\n\n### 老桥 {#bridge}\n\n木桥在你脚下吱嘎作响，{{name}}。\n\n{{#nav \"forest.path\"}}往回走{{/nav}}\n{{#nav null}}走向光明{{/nav}}\n```\n\n保存为 `story.md`，运行：\n\n```bash\nmdstory play story.md\n```\n\n或构建为独立 HTML 文件：\n\n```bash\nmdstory build story.md\n```\n\n## CLI\n\n```bash\n# 在终端中交互式游玩故事\nmdstory play my-story.md\n\n# 可选参数：--debug\nmdstory play my-story.md --debug\n\n# 生成独立 HTML 文件并在浏览器中打开\nmdstory build my-story.md\n\n# 可选参数：-o <path>、-t <name|path>、-O <key=value>、--no-open、--debug\nmdstory build my-story.md -o dist/story.html -t default -O debug=true --no-open\n\n# 以树状图打印故事的章节结构\nmdstory overview my-story.md\n\n# 可选参数：--words、--ids、-d <n>\nmdstory overview my-story.md --words --ids -d 2\n\n# 将 MdStory 写作 skill 安装到 coding agent\nmdstory skills\n\n# 可选参数：-a <name>（指定 agent）、-d <path>（自定义安装目录）、-y（跳过确认）\nmdstory skills -a claude\nmdstory skills -d ./my-skills\n```\n\n## Skills\n\n安装 skill 后，在 coding agent 中使用 `/mdstory-write` 创建互动故事：\n\n```\n/mdstory-write 写一个发生在废弃空间站上的悬疑故事。玩家发现船员失踪的线索。包含多层嵌套结构和多个结局。\n```\n\nagent 会设计故事结构、逐章编写、执行检查清单，并交付完整可玩的故事。\n\n## 指南\n\n### Section 结构\n\nMdStory 中一切皆是 **Section**——文件本身是根 Section，标题层级产生嵌套：\n\n| 标题    | 层级 | 关系              |\n| ------- | ---- | ----------------- |\n| 文件    | 根   | 整个文档          |\n| `#`     | 1    | 根的子 Section    |\n| `##`    | 2    | `#` 的子 Section  |\n| `###`   | 3    | `##` 的子 Section |\n| `####+` | 4+   | 以此类推          |\n\n**进入**：跳转到深层 Section 时，沿路径从外向内（根 → 中层 → 目标）依次渲染模板。每个 Section 进入时 scope 重置、`data()` 执行、`onEnter()` 执行。祖先模板中的 `{{#nav}}` 可在此拦截跳转。\n\n**离开**：`onLeave` 从内向外（最深层 → 祖先）依次触发，随后引擎从共同祖先向外进入目标。\n\n**同分支内跳转**：已在某分支内部时（如 `a.b.c` → `a.b.d`），共同前缀不重进，只进新的 `a.b.d`。跳转到当前 Section 会先离开再重进（\"刷新\"当前场景）。\n\n**Frontmatter** — 文件顶部的 YAML 块，设置元数据和根 Section 初始 scope：\n\n```yaml\n---\ntitle: 我的故事\nscope:\n  name: 小明\n  flags: {}\n---\n```\n\n**显式 id**：推荐为 Section 写显式 id，避免改名导致导航失效：\n\n```markdown\n## 森林 {#forest}\n\n### 密林深处 {#path}\n```\n\n同一个父 Section 下 id 不能重复，不同父 Section 下可以相同。\n\n### 导航\n\n用 `{{#nav target}}标签{{/nav}}` 在 Section 间移动：\n\n```markdown\n{{#nav \"path\"}} 同父下的子节点 {{/nav}}\n{{#nav \"forest.path\"}} 多段路径 {{/nav}}\n{{#nav null}} 结束故事 {{/nav}}\n```\n\n多段路径（含 `.`）解析时按绝对路径→相对当前→向上查找祖先的顺序匹配。`null` 或 `\"\"` 结束故事。\n\n无 `{{#nav}}` 的 Section 自动按深度优先前进到下一节。选中当前 Section 会先离开再重进（\"刷新\"）。\n\n### 输入\n\n`input` 不会暂停故事；离开 Section 时所有输入与导航目标一并提交。变量自动写入拥有该 key 的最近 scope 层：\n\n```markdown\n{{input \"string\" name=\"小明\"}}\n{{input \"number\" age=30}}\n{{input \"boolean\" brave=true}}\n```\n\n模板中用 `{{name}}` 引用变量。\n\n### Hook\n\nHook 是从 `<script>` 标签导出的 JavaScript 函数。每次进入 Section 时都会执行：\n\n| Hook      | 签名                  | 时机                       |\n| --------- | --------------------- | -------------------------- |\n| `data`    | `({ scope })`         | 每次进入时（scope 先重置） |\n| `onEnter` | `({ scope })`         | `data()` 返回后            |\n| `onLeave` | `({ scope, target })` | 离开 Section / 故事结束时  |\n\n`scope` 参数是一个 Proxy——读取时沿层级向上查找最近的 key；写入时修改拥有该 key 的那一层。`scope.flags.x = true`、`scope.health = 50` 都能正确持久化。\n\n**示例**：\n\n```markdown\n## 地下城 {#dungeon}\n\n<script>\nexport default {\n  data() {\n    return { difficulty: 3 };\n  },\n  onEnter({ scope }) {\n    scope.flags.entered = true;\n  },\n};\n</script>\n\n### 宝箱 {#chest}\n\n<script>\nexport default {\n  onLeave({ scope }) {\n    scope.chestOpened = true;\n  },\n};\n</script>\n\n{{#if chestOpened}}\n宝箱是空的。\n{{else}}\n你找到了 50 枚金币！\n{{/if}}\n```\n\n## 作用域与变量\n\nMdStory 的变量存储在 **scope** 中。每个 Section 拥有一层 scope，文件根 Section 的 scope 来自 frontmatter；子 Section 的 scope 在每次进入时由 `data()` 初始化。\n\n从根到当前 Section 的 scope 形成层级。读取变量时沿层级向上查找最近的 key；写入时修改拥有该 key 的那一层，若找不到则写入当前 Section 自己的层。\n\n```markdown\n## 地下城 {#dungeon}\n\n<script>\nexport default {\n  data() {\n    return { difficulty: 3 };\n  },\n  onEnter({ scope }) {\n    // 写入当前层\n    scope.entered = true;\n    // 向上查找并修改 root scope 中的 flags\n    scope.flags.dungeon = true;\n  },\n};\n</script>\n```\n\n> **注意**：scope 中不要包含名为 `$type` 的 key。MdStory 在存档/读档时内部使用 `$type` 标记特殊类型。\n\n## 自定义 Adapter\n\nMdStory 通过可插拔的 adapter 渲染故事。内置的 `markdownAdapter` 与 `htmlAdapter` 已覆盖 CLI 与默认网页输出；当你使用库 API 时，可以通过 `PlayOptions` 传入自定义 `RenderAdapter`，以改变现有 helper 的渲染方式或新增 Handlebars helper。\n\n```ts\nimport { fromSource, htmlAdapter, type RenderAdapter, type StoryPrompt } from \"@elvishscout/mdstory\";\n\nconst story = await fromSource(source);\n\nconst spoilerAdapter: RenderAdapter = {\n  format: \"html\",\n  helpers: {\n    ...htmlAdapter.helpers,\n    spoiler({ children }) {\n      return `<span class=\"spoiler\">${children}</span>`;\n    },\n  },\n};\n\nconst prompt: StoryPrompt = async (props) => {\n  // 渲染 props.text，收集 FormData，返回 { type: \"continue\", data }\n};\n\nawait story.play(prompt, { adapter: spoilerAdapter });\n```\n\n每个 helper 都会收到一个 `HelperParam` 对象：\n\n| 属性       | 类型                  | 说明                                                   |\n| ---------- | --------------------- | ------------------------------------------------------ |\n| `args`     | `any[]`               | 模板传入的位置参数（例如 input 类型）。                |\n| `options`  | `Record<string, any>` | 模板传入的命名参数（例如 `name=\"Alice\"`）。            |\n| `children` | `string \\| undefined` | block helper 的已修剪块内容；inline 时为 `undefined`。 |\n\n在模板中使用自定义 helper 与内置 helper 一样：\n\n```markdown\n{{#spoiler}}凶手是管家。{{/spoiler}}\n```\n\n## 更多资源\n\n- [Examples](./examples/) — 完整故事示例\n- [写作规范](WRITING_GUIDE.zh-CN.md) — 深入写作参考\n- [在线演示](https://mdstory.elvish.cc)\n","readmeFilename":"README.zh-CN.md"}