{"_id":"@bobfrankston/msgapidefs","_rev":"43-23c76ecf88eff4e968f29267c06d66fd","name":"@bobfrankston/msgapidefs","dist-tags":{"latest":"0.1.42"},"versions":{"0.1.0":{"name":"@bobfrankston/msgapidefs","version":"0.1.0","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.0","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"6cf49e95adcbb0ae8e96ac8b0c6bd9ce1730a82c","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.0.tgz","fileCount":6,"integrity":"sha512-4b6KKONXXT3amaIeZH4y7qh1NKPiut+BgKTV943bj60bNESmTetistCZsdQbYVnG0p5voENqVmh7ACeXTpsLdQ==","signatures":[{"sig":"MEUCIQD8RmeNDwjEdyEQzb6HjzWD72ez/jQNqe6+SUGyjCPnUwIgCf7GZiUyFDTT3TajN8JzmjIkh+Z/fU+DAzBzQrE8xTk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50208},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"958d482f1f01ad28d3dd932244de1e044cfd58c7","_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.5.2","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.0_1763510582638_0.2815967520799152","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@bobfrankston/msgapidefs","version":"0.1.1","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.1","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"f072bedfeb0640c4e7b2abaa7abe37bded1e14ef","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.1.tgz","fileCount":6,"integrity":"sha512-JD0Vwbo2JFBSZKGDwVNoHU5wntMKzjOGQXYXPwhfbRHx432/Vnc+M8qODlADaskfT2B55gSixruLuRAi3QuVhA==","signatures":[{"sig":"MEUCIQDj9XK6AoPaRMmN8L0OVUynS8QcHGmSc56Hkh7HuJEL6wIgR+AiInpTmk29K2pFgK66R2yU9w5+zmOKuq9HWDyL/hQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50308},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"da5c436d4e39f3bfd6cf6b14ce57657d0717ac34","scripts":{"release":"git add -A && git commit -m \"Pre-release commit\" && npm version patch && git push && git push --tags && npm publish --quiet"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.5.2","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.1_1764006141524_0.5999874330488002","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@bobfrankston/msgapidefs","version":"0.1.2","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.2","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"0d7112c4089f93a2ff5d4d988dc2ae04896cc05b","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.2.tgz","fileCount":13,"integrity":"sha512-mTHZYU9Xb89kA+Kilzo4Zs/GTMMH8ewI562Isnl2qQAuKGmjBg5HVlC6HnBJAHQPvBU9Ho9XH1ue5J5eMmr82g==","signatures":[{"sig":"MEQCIDa3yOXrvmeXRXh2jQtaBxEmhAxxZ+juz9P4wOpxcpbCAiBr0KwyvOwsXhATDVUQl6862Ns/0XwAvGxAWs6CuTgFCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52413},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"2d7ee29b054f4cf4f623cb52250df3d07fcf1b73","scripts":{"release":"git add -A && git commit -m \"Pre-release commit\" && npm version patch && git push && git push --tags && npm publish --quiet"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.5.2","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.2_1764015929186_0.2740363692691219","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@bobfrankston/msgapidefs","version":"0.1.3","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.3","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"15043a0b456d70c3c07b6da3c4d4b34cb4be3b67","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.3.tgz","fileCount":13,"integrity":"sha512-uDci7BGvgN/SYf8xlyn6pBVMlUfE6L0FmfxQL4mhWO2XgX9V91kwTq9DRblFR7/S27YOcT8tVj/OlBBT8TPmLw==","signatures":[{"sig":"MEYCIQDbgTuYA6dBfB1HF40P5jy1PQYdlkMwTrmtct9HAAZ2JgIhAJmyR932Oufl1j4odZ6/4Qv3sAmdtBqZv5ignTrCwPj4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46591},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"9e00fbf612bee07b4bac08332dfeda2218476de7","scripts":{"release":"git add -A && git commit -m \"Pre-release commit\" && npm version patch && git push && git push --tags && npm publish --quiet"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.5.2","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.3_1764086886253_0.20520390894394325","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@bobfrankston/msgapidefs","version":"0.1.4","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.4","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"fe613ab60db91b4b3eec1c2ca6ac551ad3e9ec72","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.4.tgz","fileCount":13,"integrity":"sha512-soFY7WRBLx7jB+nmt5QRbAMU1L6akBOMxBVelmv9RsUG5NYY/TDu2uGpy/4GhtONV9wTP0xBJe1uunv24m/usg==","signatures":[{"sig":"MEQCIC6ceyDQyFsrnVrVqFO0KnxxT7Qc+APUvckFvaNLR8htAiBju3TVP+P8GbxneZOJX1Ig3Iw5SlgqdEdzjhpG1kzhJg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47027},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"ac6f22e1fa0394d2c1bec59b2417cf48ddb0da37","scripts":{"release":"git add -A && git commit -m \"Pre-release commit\" && npm version patch && git push && git push --tags && npm publish --quiet"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.4_1764128624123_0.08994147658277574","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@bobfrankston/msgapidefs","version":"0.1.5","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.5","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"785f3cc499e34af66cdf5583be36f72f720b21c6","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.5.tgz","fileCount":9,"integrity":"sha512-o2vkrc4glPS7aWMrqFqmu8seNFLPrMMDfVfzAkefkPI01t4mxcMsOZ2E+fDnuyWGnFHOKb7aPz00ZdAVuZV1LA==","signatures":[{"sig":"MEYCIQC88FGdAPA4JZyViA6LNs1eTSAhb9HQ3xExCjW6q01GkgIhAMKtD/UukWh4gP9YvEq0uUA+yy87Cy34b2uhgSEJ5UVN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38244},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"95470b518ca09b16359a8e6056cbe0e217cd431f","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.5_1764463031369_0.5447744974089299","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@bobfrankston/msgapidefs","version":"0.1.6","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.6","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"d9459d64b730f63d091bd3824bb67df70a58e89e","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.6.tgz","fileCount":9,"integrity":"sha512-HQAQJDwp/Tt0ewcS7DGD+SL9MlvNBntXEsHQcco9XSTU68IuXYAgZbfTYyKtJMYUL+C1iLA4/wJ8P85DPQeVBQ==","signatures":[{"sig":"MEQCIHumkyTHSYrQT+F/+3x0Y7/SOxgJA+EFwbMIp8As5f7AAiBGB4mqZjFUq/OWsmqVQ78XM0iWWooK25jcQ8PCLohNhQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38244},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"4fd1ba9c208851e375da27a0f9ff5f1acc072b80","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.6_1764463375316_0.4444117897686981","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@bobfrankston/msgapidefs","version":"0.1.7","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.7","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"d125912d2cfdfb33e89934a705aea8e541afb078","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.7.tgz","fileCount":9,"integrity":"sha512-nkGzvlRi8vgKSAInxSBrnbWOOg+bOaDqdzlgqyGZV93H8Spy3mKGLhpmgERrqpJ030G9f8mEX3d1yaVapVKK6g==","signatures":[{"sig":"MEUCIQCw8bgcwsNB11s9wGU7DV19+RZgkM1WgjdpFiQ5JHNa0QIgPE+EOxtdJuxQbgjuObEyVyA4SvEH0rQQB9W6XJjIu1w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38244},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"ed9f296d459e08567547ceb6d0ab811f205e497a","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.7_1764464256998_0.8990024684313722","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@bobfrankston/msgapidefs","version":"0.1.8","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.8","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"d0b473551930baadae314d1e90338b56d4061524","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.8.tgz","fileCount":9,"integrity":"sha512-h6nYCA70blCtxLBv+PEwJ8tRhH70u0FBRceNzoPpywEYTD9KPHvYFFWJgEOLeq7jMYJbgljn3RGQZ6Nw1pz2mA==","signatures":[{"sig":"MEUCIDP4eaIguwNZ4eD0lwvpE98qkC8DQ4wPxFjUiSPoM5lcAiEA3NMQz5B3Epx0B5JA9mQFZkpZvGFB6Hzk7XhxdILeB4I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38244},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"b3ede89f892507d33595a040587d6af1a7a690a4","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.8_1764468046186_0.6086073525434439","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@bobfrankston/msgapidefs","version":"0.1.9","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.9","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"2666a3aea8fe93dbca8eabcfbc5956c06dcef73f","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.9.tgz","fileCount":9,"integrity":"sha512-hvqV+LbSRYM0umWZBd6mDzzKIYUliRjQIMDTwhSeKpMNnHQxHEaMPnbY/nnNU2JzLtDnc8+ALchcS9yQXoE5Gg==","signatures":[{"sig":"MEYCIQD6odp6kEGIcybbWcVHxGS3znXh5YzrXZOfRLjgyZHdWgIhAP16jg8h02m9N0kLFlHx+wUbNc5mBfaj7u7cU5jv49/i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38244},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"1c4e61ba9a6822b3580a318f805196841976666e","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.9_1764468360030_0.45594555568646644","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@bobfrankston/msgapidefs","version":"0.1.10","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.10","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"c096d34991cf8562f1dc3716f5019258e043643d","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.10.tgz","fileCount":9,"integrity":"sha512-DDe3jRfKjtUk3SCfy1a33ldpo/ucCm80mciCd4XTu+NUDnWh+D87WeYj6Mneh77Xa6ZzpF8nXpkYMwWM4LEB1A==","signatures":[{"sig":"MEUCIQD7m5aCRUxBsFmA22Fw/YybEOA2z6mF57LbbbIhf8TIcgIgTDIv3jfNkO0NBbgPOXlsBw4uIQ55WE0y85xgi94FTVE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38245},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"3ae23db2a318aac5d2060961d4efb35eec3a5100","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.10_1764471492249_0.2475795974765569","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@bobfrankston/msgapidefs","version":"0.1.11","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.11","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"b93b67f858579d0c7ea675ccacdcc4de49249660","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.11.tgz","fileCount":9,"integrity":"sha512-/IuBQhfkRvnlcBscCBHibUqsS9bEJZ0pPNikW8l4g2yG0jQez3o8AO4vJ61fRJ4JfKHVJVM8uLwoIDtCV2+Brw==","signatures":[{"sig":"MEYCIQCS6LmvsO9Bnp9MNqwWPHjRq8348Z9Oyv5CvpDOCPswPgIhANTFbaPPjAnjqX13cfFEzT+OVRmJ97DKvZqcoYgNU4Bz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38245},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"4cd7255c5e89acf7dcc07f9e772b6c94a5649fc8","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.11_1764472613499_0.1921587257032482","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@bobfrankston/msgapidefs","version":"0.1.12","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.12","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"cf7cb476c75f0c8a5462629597b963c3927e8de9","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.12.tgz","fileCount":9,"integrity":"sha512-tKj7G4oacCFxkgV/93KbJ+kfXwr2g8BZJldjLJIVaib0oP8h8chPoRNh2bf7BIfp5+gDk7V8P9g/OKZh9gEeNA==","signatures":[{"sig":"MEUCIQDc5LtQqgBpLDrMjHLKQZV/hcfe/IC10IXh1j/ViGe5DAIgXsh1aRHHZHeEpFpdm91M5a5dSkfq+yfD53nFQHi0v5E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38245},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"75e53f9276479408dc960c36d4366bea29850c53","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.12_1764474026843_0.3210407941532649","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@bobfrankston/msgapidefs","version":"0.1.13","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.13","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"03a9fb8636327fe691623dfa8f0bdedd9e731064","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.13.tgz","fileCount":9,"integrity":"sha512-PN7GGmeuJZdELYdENEt3KoQRvwN9JG7neJ5VipLeo9jLcopaT4svsFUBGDSVP8i6x3RU8My7KyzLXVnIt6/PrQ==","signatures":[{"sig":"MEYCIQDxFLfGQcQhjqmtFulr8kWYHIbTSuJKHJeFvY/nqfpwsQIhAOpm53RXTsMHEprdF3mqVSYNVTaJLBuDyJhYGnjcTDqT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38245},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"cb18e18b8c6eb08a4a9dcd702b154f1233089b64","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.13_1764534516815_0.8310761998103517","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@bobfrankston/msgapidefs","version":"0.1.14","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.14","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"adc2ec7818246418f5e80d58e4e558674ae90dc9","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.14.tgz","fileCount":9,"integrity":"sha512-/ILU0dtF8XgIWZGtMoEW93/jy1zIj1r+CSQLadYLc37o4A6nIbynZCI4f4ybiIEnKe51Wt2uWcMaS+kHLj/RmQ==","signatures":[{"sig":"MEYCIQCsL6yGrraL7PyOP5wuPyZhw+zx4jEhzXQ03dhv8/x3YQIhAOSJpWsLEVIBkOspEpOsLOca7gCzeLQSH8LP7ZvwAYj+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38245},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"f1824b5a59506acac9e374ba50d0f2deab4c4921","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.14_1764534732946_0.5101255356777687","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@bobfrankston/msgapidefs","version":"0.1.15","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.15","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"3bc58751d3da447b5e2d182fc5c1f767dd551b65","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.15.tgz","fileCount":9,"integrity":"sha512-SPFy01HmjMdD6kC+ZUpgMa7IWeD9M5rJkitsOMRogn10vOyLfEz8sjrgAEl9LYfctr5IEpnb4Ox5HPw2ouCu0g==","signatures":[{"sig":"MEYCIQCkEDstPysVs1qk3UiUGfvS4qgudPBTDU28YelJNHSJUwIhAICbiByhTGKRA6jENCHDaV1Uf1wGDFvBnunqy2y0sH7z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38245},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"86b3532e6d97465a343aca2e7860670b67ae8fb7","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.15_1764538501317_0.05322711767360744","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"@bobfrankston/msgapidefs","version":"0.1.16","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.16","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"98503b1c976ea369e80ee88fcc3c0a2558380529","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.16.tgz","fileCount":9,"integrity":"sha512-ECLUGIUFR7y3QPyQV3VBVw0k3x43W0mDkFES1Jfmb2B15rD/Ukex2vaW2Wd4BW5yHsPcYlp5cFvhtejaaePAuQ==","signatures":[{"sig":"MEUCIHq1Sm/llrRjyBUoEN+FTn67lu8gfziTIgbetms0mzr4AiEApWz5CIXLgxu2uN5AOJoDd9/nkIZLSKZPv8cI/ZHY0Xg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38245},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"2446860cc5065e87759c2a6ab1e1cf9dad2319bf","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.16_1764540643422_0.678509053266197","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@bobfrankston/msgapidefs","version":"0.1.17","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.17","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"dff9661f63833e4368dc7feb9614d26cdaf41f01","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.17.tgz","fileCount":9,"integrity":"sha512-3G/+lt6SSHmj00bZxLeZm6cOQ+n9t3/mKjlAQCLBOmJmWWHHre+19kUUY28cuf0D/zCV/Bkqyk9Nef+euj23tw==","signatures":[{"sig":"MEUCIQC+2EDslrZLDoUxzfy5jQkdT5LRtzp2Fu4pXspaMLF0LwIgTB81LADXIVw3/WsZwtMhH+yXU4cxBhUpDdmEasn8Dbw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38245},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"98430db3117c2789c9497f7ae08a7698c937da70","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.17_1764601493189_0.42901542021843064","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"@bobfrankston/msgapidefs","version":"0.1.18","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.18","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"130eed711e4d33dcd4006526b5ae16d34a2feefd","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.18.tgz","fileCount":9,"integrity":"sha512-2yCyV9FRdcjHH7aAa7wLuQEluvb3V1ihhKgPEZYUoTZJg08QTLDQmxx0NQ6CMbODBybKz+R8zULycnsFPEB3nA==","signatures":[{"sig":"MEQCIBRcSsmaXe9uQZgV1mUEW5D+wsQFtoYZPFUxSK6IBLtnAiBfDfN/H+ERaOaNdCaDE0+sAx8FSwk9pb/+cZ18rCGf4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38245},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"95d4a7c595a953e68e6aef666f513c31a0c7eb77","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.18_1764602240905_0.17087189598146924","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"@bobfrankston/msgapidefs","version":"0.1.19","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.19","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"d2f56a37bdb324de87f42c72a01f5d75baf449fb","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.19.tgz","fileCount":9,"integrity":"sha512-gKgg9HiNdg8dLZCZH/Rkn4kDeiWMBrSazrMeYzzlOR5aFNQ/DWysqBlbg6ltkAopDErawBrO1fHhnMZPNsOJuw==","signatures":[{"sig":"MEYCIQD3aX6Hg1EzjNIeLS77pvqiZ/fldqZVOoEDjtTe/LR15AIhAKEEmFrreGdrhQxPvpUZF5mdtb23AbebDcjI4gf4JxC1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38245},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"45928f1faae20bb8addd36d0bbe6aa7533fe3911","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.19_1764617223332_0.36508243209430224","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"@bobfrankston/msgapidefs","version":"0.1.20","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.20","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"7c299e982919273e19be630d8cf08c22d4b262f8","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.20.tgz","fileCount":9,"integrity":"sha512-BPwmmUTXkJpv2PZW101pySonnt0OblV6gJY5YvI5oxwusu2zmhGWo4Wn2mNmTF7Og1xfWcbRykdHoLdLG6woJg==","signatures":[{"sig":"MEUCIQCz6teJNElV/6562BL1vcRc2iHlV0ijSqmu24sTAZvgewIgYUcX8qrgD5vRL4cFzDZVHwyWo40DPUu7hnfDPSXZFJs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38245},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"afa148e034c830c3348c64c78fe645c2dd548f04","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.20_1764618591509_0.676695746666059","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"@bobfrankston/msgapidefs","version":"0.1.21","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.21","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"6d62c1d2913eb6dcd8990cbaec7177ce483cdde3","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.21.tgz","fileCount":9,"integrity":"sha512-/25kGLNzFo5uKQiynxrEtWHYSl+xuAiIPpNfJTbXok1TOy1FVhzeszc7g//6ZmJJWLvR92yCOPUcNYnys6C/Cg==","signatures":[{"sig":"MEUCIQCQOo13ecM6g+JQqG5sh5wNa49HynkRR1J91GHLIoM1SQIgI31ppTwI57zUNdKWcfO8DUz1kQL4jVRQWosO2QwaMv8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38245},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"edff8d4f21058fa2fcf4c4290f3da862c1cbcdb2","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.21_1764634620284_0.7237952736551776","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"@bobfrankston/msgapidefs","version":"0.1.22","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.22","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"53a87137a3de926d9e3124e8717493560e527b38","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.22.tgz","fileCount":9,"integrity":"sha512-SN9yuHA+DZGFRe9L1/CpOdDB++oq7CDNkP5BR7HMjeh3PnJXTHJ8fxMuNu1IobzvIm7YLEZz4j2e/uiCkgDjOg==","signatures":[{"sig":"MEUCIBkaUhNT7zgzmwVVtHW2fiHbGawX8fqrxkoj2MB+CmJ9AiEAmqYQaRc5pM6d99TDYigfqiIxjA5J/84sL2l8woY0ig4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38245},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"3628493abe91b86e2927f7647c9d9042a7ce297a","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.22_1764643261217_0.9980276075146237","host":"s3://npm-registry-packages-npm-production"}},"0.1.23":{"name":"@bobfrankston/msgapidefs","version":"0.1.23","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.23","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"4a0aeb4b8847d07b5b9bdece0e409d8551a1e7ae","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.23.tgz","fileCount":9,"integrity":"sha512-/8x6hbGK5mLFTlt1OhDVP+YZY0JMrFlDcc7CTcsgKzIhMZNQo9ap+JCrKKY2XRUDjNWq/KaL/ynWa/HQeb8Rww==","signatures":[{"sig":"MEQCIEJyhOrzOAbyRXEOAYjr6LI7eJiTR8+96/jTPBmaRxhaAiBbbSqzcSWaYe0UYwCiuYwFa7SAVY9kcaaoCYHFhF6MfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38245},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"f91c492ff2139485d133c8ce5e9229e0f430e8c4","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.23_1764644422284_0.26946541248773137","host":"s3://npm-registry-packages-npm-production"}},"0.1.24":{"name":"@bobfrankston/msgapidefs","version":"0.1.24","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.24","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"04d15606d868b3c931328a686226648b64cd9340","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.24.tgz","fileCount":9,"integrity":"sha512-WYPLq9jmxxZZhsp/Q/VQB4iIG2odOodTFu78k+VUCs4S+ygUiSWPtnFY2suEME60qjtYTl5Md22IZ1EjY+tlrA==","signatures":[{"sig":"MEQCIEpELv2nuDCs1UGj93Ixl05i21KtVL8g6GJiwkHX1/f7AiB3TnznEEUAjlTLGSES2/QrUSB40743ZGSdnLBBDNKKTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38245},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"1bd1e6a3c476913bb2b182ec42081c41dcc16259","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.24_1764647421647_0.969147372318937","host":"s3://npm-registry-packages-npm-production"}},"0.1.25":{"name":"@bobfrankston/msgapidefs","version":"0.1.25","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.25","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"42404d66bf457e48be5dd2bcfd1f7bcd1aaae58b","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.25.tgz","fileCount":11,"integrity":"sha512-E996pHlXobOKQH+/5Rcl2Af3ychdboDcZ3gqXw71j6r2SDXFmeV7BOmWvfsZSXdXC/AvDADTuW7+Rd+qSb60GQ==","signatures":[{"sig":"MEQCIFoNxm4ca0r4bHxHfRUqj5crKVMt6tW5pl7aXg09Ac5VAiA1oeeDkM61TnouJ4uGVSSpX+bcE3dJUADA3yGccPOQwQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59493},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"a3bf8dcd4bf0cd2b1efd776fd6d9331473044e24","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.25_1764810083072_0.5157363866075748","host":"s3://npm-registry-packages-npm-production"}},"0.1.26":{"name":"@bobfrankston/msgapidefs","version":"0.1.26","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.26","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"d498c31344256d7becdb6c7fc6a67021f923258b","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.26.tgz","fileCount":11,"integrity":"sha512-xA7hwNzK+FNiJ+61/iWYp69rIR7mLG+4XtsLgAAPBEUCq1gtHPoP4AttA7cMVS/LlSEQD4XF0nB+Dsb/Y6iLQg==","signatures":[{"sig":"MEUCIQCsBD77+AhidWs+HK9ClPWiaM+vO500K3f74xtKVwjjmQIgIzkVErvofoS/Yac5nTrstVJ0KSOmpFjwX6rFa6maSPc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59493},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"335b9095da08ab9da5132fe3159fee51c6dbabe2","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.26_1764816112014_0.7869629804621499","host":"s3://npm-registry-packages-npm-production"}},"0.1.27":{"name":"@bobfrankston/msgapidefs","version":"0.1.27","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.27","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"c5893c410230b2c27ec20bee0a680c2833cb4ee9","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.27.tgz","fileCount":11,"integrity":"sha512-2ky41MSAmo2IRt2QjVyNMWEY58i1vjaFOtkUdhOI3NRyY4UqMkI+HicMtV/gZbZ47uL1MeR/DtIpTxXHRZN5mQ==","signatures":[{"sig":"MEUCIFYdYgd8H6QPnxvVZSRjA/+jyGzfu0tNnqm73RTxKE+lAiEA7aOXbX3fwnZ5h4NJ7DFHWhUXzI8naU98HpXZAv+WnE0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59493},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"e34cf18fc4b0e1dc5286a59d4535775ec16fa1c3","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.27_1764820163159_0.026393386028553012","host":"s3://npm-registry-packages-npm-production"}},"0.1.28":{"name":"@bobfrankston/msgapidefs","version":"0.1.28","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.28","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"7793de8bf13e71261795f55c708669ee70a0e620","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.28.tgz","fileCount":11,"integrity":"sha512-YRwIRCRmNSf2DzLEojbLv+T30s29zB08055mpV4uoAar7j479wbRG2PgS8NBV9tLBbrDn00FP5PJRJhm6vni9Q==","signatures":[{"sig":"MEQCICtglGTILgzjFbSmQFu1ml/IAQD0lBBjoJ+VsvqnPLn8AiBGcqJoIcGPUdeBBaex4slJG2OLmDN1bCYV0Qm8n7Di4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59493},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"3642ec05eb7761f1ddd588aeed1c64c3f3230aec","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.28_1764821691953_0.018931335261186177","host":"s3://npm-registry-packages-npm-production"}},"0.1.29":{"name":"@bobfrankston/msgapidefs","version":"0.1.29","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.29","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"59d213f33030bd0d5296e1d75c42b5d78eb788c9","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.29.tgz","fileCount":11,"integrity":"sha512-Hp4rqmrX1vGFagOmQrqIkA2reMNg+3ECdZt+2q6xzMiBptfEj4qcpcPpQQj1uiiG4Ll3RqjLKPOlM03OmyfrBQ==","signatures":[{"sig":"MEUCIEsntV+8J9ipkJGimpCBrGOeVBw1LkO6Hxpinug3gMfKAiEA8VTiJOYhQyfqTfFnRUeYj1r1p4/bDuerFLCP3Cwbf2s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59493},"main":"./msgapidefs.js","type":"module","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"gitHead":"1c18b8dfe7de2abab6821bd63168dd993ed5d559","scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.6.4","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.29_1764825599656_0.1409869381638551","host":"s3://npm-registry-packages-npm-production"}},"0.1.30":{"name":"@bobfrankston/msgapidefs","version":"0.1.30","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.30","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"3f5dfe17f0781c6449d3932575a343b25295299d","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.30.tgz","fileCount":11,"integrity":"sha512-3IMyUJMKiXcqYw3aXr3TclzV+FkaySxrOtuZJY6MoxzkfVh6Uu5o9kqpEpv3dytOeKOIgWAQM89RLl51xSN54g==","signatures":[{"sig":"MEQCIAOvD8x6/5be+cV+C+k9GcQFvHmn6DGpxbwiKJ2xF8F4AiABFUMZYX/VZCMynzF0c9mYvG/7Hfw+oI905EUddxLoXA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71988},"main":"./msgapidefs.js","type":"module","_from":"file:bobfrankston-msgapidefs-0.1.30.tgz","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"Y:\\dev\\utils\\msgx\\msgapidefs\\bobfrankston-msgapidefs-0.1.30.tgz","_integrity":"sha512-3IMyUJMKiXcqYw3aXr3TclzV+FkaySxrOtuZJY6MoxzkfVh6Uu5o9kqpEpv3dytOeKOIgWAQM89RLl51xSN54g==","repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.2.1"},"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.30_1771078342008_0.5610211185019303","host":"s3://npm-registry-packages-npm-production"}},"0.1.31":{"name":"@bobfrankston/msgapidefs","version":"0.1.31","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.31","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"a8bc9ba79e7bec1d7d7945b48c1d2d5582d7676a","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.31.tgz","fileCount":11,"integrity":"sha512-HFQrygVXv2Th+m36wAjLQEwkpRszZIlpWZdtavzcuASRO1OSeGZu6EW+nhfjMNvL72E6lyQk9JDpkr8uquWxsw==","signatures":[{"sig":"MEYCIQDcnV8flwhd4DZZR2ehp+Evav0GGO0ftKVQ5ayOhF/6zwIhALYb6+969J9TmYurd3jGGyy6TqXKkrDf4KjQ5vZjuvo8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80631},"main":"./msgapidefs.js","type":"module","_from":"file:bobfrankston-msgapidefs-0.1.31.tgz","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"y:\\dev\\utils\\msgx\\msgapidefs\\bobfrankston-msgapidefs-0.1.31.tgz","_integrity":"sha512-HFQrygVXv2Th+m36wAjLQEwkpRszZIlpWZdtavzcuASRO1OSeGZu6EW+nhfjMNvL72E6lyQk9JDpkr8uquWxsw==","repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.8.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.2.1"},"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.31_1773287153232_0.17064270423868932","host":"s3://npm-registry-packages-npm-production"}},"0.1.32":{"name":"@bobfrankston/msgapidefs","version":"0.1.32","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.32","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"12ef02f76c0695fe900b77aa08e3474f4e2c3879","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.32.tgz","fileCount":11,"integrity":"sha512-uvev3Apas3XJ4LHCAAmwd9EBci9fZ8W+vKk6AnlxbHatMwg6OtXfIoH20KyFGv2JdDOufRqpiKqVQTxJQ+mPbA==","signatures":[{"sig":"MEYCIQD4uYRpFg51lvZGDw613uY412ldQnesZpAxHfHBNiGIEgIhALR408FTtRb/2tWf5nlqNPkeKE/Ddyvan/PAmbRWK9g5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80651},"main":"./msgapidefs.js","type":"module","_from":"file:bobfrankston-msgapidefs-0.1.32.tgz","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"y:\\dev\\utils\\msgx\\msgapidefs\\bobfrankston-msgapidefs-0.1.32.tgz","_integrity":"sha512-uvev3Apas3XJ4LHCAAmwd9EBci9fZ8W+vKk6AnlxbHatMwg6OtXfIoH20KyFGv2JdDOufRqpiKqVQTxJQ+mPbA==","repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.8.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.2.1"},"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.32_1773508113999_0.6750975039898457","host":"s3://npm-registry-packages-npm-production"}},"0.1.33":{"name":"@bobfrankston/msgapidefs","version":"0.1.33","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.33","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"ee02d3f3bf015d0764c25ca34070b51b1bdfe51c","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.33.tgz","fileCount":10,"integrity":"sha512-TkNzN0f5MbESxHKAiUh4h2a6ZyWBivoIGKd58ClOcsD9rLfSe5FAsf5feSXJU/3RrLr0puGkXZzUwahFBRT72A==","signatures":[{"sig":"MEQCICOJka9eW969CmpZxmZQHA0IY4klICOi2ktOicR2Y5KuAiASJQRtOLVE1XdFK0/Ierb554+i7ng42vgC1hy/MK1i/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85299},"main":"./msgapidefs.js","type":"module","_from":"file:bobfrankston-msgapidefs-0.1.33.tgz","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"Y:\\dev\\utils\\msgx\\msgapidefs\\bobfrankston-msgapidefs-0.1.33.tgz","_integrity":"sha512-TkNzN0f5MbESxHKAiUh4h2a6ZyWBivoIGKd58ClOcsD9rLfSe5FAsf5feSXJU/3RrLr0puGkXZzUwahFBRT72A==","repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.12.1","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.2.1"},"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.33_1776815631998_0.5932350331202472","host":"s3://npm-registry-packages-npm-production"}},"0.1.34":{"name":"@bobfrankston/msgapidefs","version":"0.1.34","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.34","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"8a4159bed60b01b7b969ad5d1400af3251719c6a","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.34.tgz","fileCount":10,"integrity":"sha512-lTP8+Au417SfPrtQffH1cwYb7E2zSESZ6BVS46e7tIjfcyUW84L+Xsi6poIUNR4mjq8tC6LMnEdxwONEN5KqMQ==","signatures":[{"sig":"MEYCIQD4ZjyIZTV3UPlkXb0rVLp0LT7zjFhYPvSXWEtH+iIB2AIhALlR6yJLvAbIMa+V2nk0ua48fE4xhpeqDS4DLi/letB1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86388},"main":"./msgapidefs.js","type":"module","_from":"file:bobfrankston-msgapidefs-0.1.34.tgz","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"Y:\\dev\\utils\\msgx\\msgapidefs\\bobfrankston-msgapidefs-0.1.34.tgz","_integrity":"sha512-lTP8+Au417SfPrtQffH1cwYb7E2zSESZ6BVS46e7tIjfcyUW84L+Xsi6poIUNR4mjq8tC6LMnEdxwONEN5KqMQ==","repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.12.1","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.2.1"},"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.34_1776896158603_0.00892370853105584","host":"s3://npm-registry-packages-npm-production"}},"0.1.35":{"name":"@bobfrankston/msgapidefs","version":"0.1.35","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.35","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"e5454ea8b583b8c1e6182d80e7a1ef169e9b776f","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.35.tgz","fileCount":10,"integrity":"sha512-INwBUGm9MTivEx/hHuLyacuKMSyLMu5HJWL0zjvxpmEF2ZBx+P8mY3qJsLBMp7Ao2xisqKgEUZUQHAOvkLyw4g==","signatures":[{"sig":"MEYCIQDjWmTa139Hxo2h7W0x2T0Htfh9IiJ7qBxJyWqbbPCOuwIhAM1E7GnteL2axPwkvwkv6fm8G4poo4v0vje+r4aa3LMc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86884},"main":"./msgapidefs.js","type":"module","_from":"file:bobfrankston-msgapidefs-0.1.35.tgz","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"Y:\\dev\\utils\\msgx\\msgapidefs\\bobfrankston-msgapidefs-0.1.35.tgz","_integrity":"sha512-INwBUGm9MTivEx/hHuLyacuKMSyLMu5HJWL0zjvxpmEF2ZBx+P8mY3qJsLBMp7Ao2xisqKgEUZUQHAOvkLyw4g==","repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.14.1","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.2.1"},"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.35_1781014905761_0.23261281945808365","host":"s3://npm-registry-packages-npm-production"}},"0.1.36":{"name":"@bobfrankston/msgapidefs","version":"0.1.36","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.36","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"9731d7a5e29eeccf92c9afb49e8f92c0469b2f3d","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.36.tgz","fileCount":10,"integrity":"sha512-P8U72nrhKGXJMNIx0cZHzL5i/8FzoEf0IFWryjYUx1NjFvBHM8vS+Ia/QL4lGChWPOvDNwzlYOmzMcssjrtOZQ==","signatures":[{"sig":"MEUCIQCacB4bg26tH9w9n8jTDEAzfV9pkyBdQjzfSHlqVXTYtwIgeFqcfGx72vhUugvW6tow75RRbXBhxig6aKMcxZAO5sE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88377},"main":"./msgapidefs.js","type":"module","_from":"file:bobfrankston-msgapidefs-0.1.36.tgz","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"scripts":{"release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"Y:\\dev\\utils\\msgx\\msgapidefs\\bobfrankston-msgapidefs-0.1.36.tgz","_integrity":"sha512-P8U72nrhKGXJMNIx0cZHzL5i/8FzoEf0IFWryjYUx1NjFvBHM8vS+Ia/QL4lGChWPOvDNwzlYOmzMcssjrtOZQ==","repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.17.0","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.2.1"},"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.36_1783106062781_0.6227378932247951","host":"s3://npm-registry-packages-npm-production"}},"0.1.37":{"name":"@bobfrankston/msgapidefs","version":"0.1.37","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.37","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"f22bb3e6ea05354ede7777f621ad9a1e58474ab1","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.37.tgz","fileCount":10,"integrity":"sha512-3KoLPpZ5TZM/Qnjc7bZXDw1RoVN0QLzTOb8lKM3Z5WM27OjZjIac/pYXdgdMRm4edLmIRsVocAPyHGcO3R/PLw==","signatures":[{"sig":"MEQCIA5GmRMVMjhtF287zPb79P8A6jmkrubR8x7RyJ+Nh5UKAiBru7EZTKEEYmdRO9VpmITkUDjIFQaKVJpc9LnVAUWS1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":95399},"main":"./msgapidefs.js","type":"module","_from":"file:bobfrankston-msgapidefs-0.1.37.tgz","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"scripts":{"build":"tsc","release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"Y:\\dev\\utils\\msgx\\msgapidefs\\bobfrankston-msgapidefs-0.1.37.tgz","_integrity":"sha512-3KoLPpZ5TZM/Qnjc7bZXDw1RoVN0QLzTOb8lKM3Z5WM27OjZjIac/pYXdgdMRm4edLmIRsVocAPyHGcO3R/PLw==","repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.17.0","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.2.1"},"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.37_1785545687602_0.6958478126094925","host":"s3://npm-registry-packages-npm-production"}},"0.1.38":{"name":"@bobfrankston/msgapidefs","version":"0.1.38","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.38","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"775dac91b0f77b558b27baeaf86ed26819fa9fe0","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.38.tgz","fileCount":10,"integrity":"sha512-L8g8Ai4mbvZmkR23gerRWbwl2Uub9xQpXC5BOzPbnNageAWKtc+BX16DGZC6Yb94JcfyCLdwxqW4vOaYpmCWjQ==","signatures":[{"sig":"MEYCIQC5WokiA1+FbBRPPmu2+6B1AeUZ/puplyOXhKUto3H+ggIhAKkib+y4TGmAEjGOu/jVOFlP7zMpkkH1ZpnEqX+3E543","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96276},"main":"./msgapidefs.js","type":"module","_from":"file:bobfrankston-msgapidefs-0.1.38.tgz","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"scripts":{"build":"tsc","release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"Y:\\dev\\utils\\msgx\\msgapidefs\\bobfrankston-msgapidefs-0.1.38.tgz","_integrity":"sha512-L8g8Ai4mbvZmkR23gerRWbwl2Uub9xQpXC5BOzPbnNageAWKtc+BX16DGZC6Yb94JcfyCLdwxqW4vOaYpmCWjQ==","repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.17.0","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.2.1"},"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.38_1785596892073_0.5151377322607575","host":"s3://npm-registry-packages-npm-production"}},"0.1.39":{"name":"@bobfrankston/msgapidefs","version":"0.1.39","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.39","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"0d17e4b1adb86d8818ffeddafe98063bf9df3cd0","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.39.tgz","fileCount":10,"integrity":"sha512-qor4LNYbAYLPUTWboAmdTTsFkJij+31wvrruRdljQ3yTa9ir+wATcHGPr4gDHTb6r3/RyOKsjQBOqbUviAupDA==","signatures":[{"sig":"MEYCIQCYo3NQ8vQgb7Cop/6KT6qWgs4E9eDRoc2D+gozrXnH9QIhALwmhXTEX79yexkeaZLnf5p4IcUGr6XlouXiVnF202Eo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99424},"main":"./msgapidefs.js","type":"module","_from":"file:bobfrankston-msgapidefs-0.1.39.tgz","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"scripts":{"build":"tsc","release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"Y:\\dev\\utils\\msgx\\msgapidefs\\bobfrankston-msgapidefs-0.1.39.tgz","_integrity":"sha512-qor4LNYbAYLPUTWboAmdTTsFkJij+31wvrruRdljQ3yTa9ir+wATcHGPr4gDHTb6r3/RyOKsjQBOqbUviAupDA==","repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.17.0","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.2.1"},"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.39_1785607632191_0.6593355604576316","host":"s3://npm-registry-packages-npm-production"}},"0.1.40":{"name":"@bobfrankston/msgapidefs","version":"0.1.40","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.40","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"0b6252bdc388838190c07aa93951201933b8ca84","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.40.tgz","fileCount":10,"integrity":"sha512-PpHgbBMZZy2gK1YHubBQ/RIZc+Cl5Z0D/B6rVPGlz2hLSD5O/wN6tu+S24K+mIPJ6Sfko6DusGo/F1rlPM5hbg==","signatures":[{"sig":"MEQCID4CxJz+d+Jl1d5noCdYyHs5W0re2LiNXb6qPmXJ4zGtAiBC6kzxKHL9oHKxOpLWrmpaGe9FVAfSvZRmieHasbJEJA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103503},"main":"./msgapidefs.js","type":"module","_from":"file:bobfrankston-msgapidefs-0.1.40.tgz","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"scripts":{"build":"tsc","release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"Y:\\dev\\utils\\msgx\\msgapidefs\\bobfrankston-msgapidefs-0.1.40.tgz","_integrity":"sha512-PpHgbBMZZy2gK1YHubBQ/RIZc+Cl5Z0D/B6rVPGlz2hLSD5O/wN6tu+S24K+mIPJ6Sfko6DusGo/F1rlPM5hbg==","repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.17.0","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.2.1"},"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.40_1786314383641_0.029865912534609462","host":"s3://npm-registry-packages-npm-production"}},"0.1.41":{"name":"@bobfrankston/msgapidefs","version":"0.1.41","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"author":{"name":"Bob Frankston"},"license":"ISC","_id":"@bobfrankston/msgapidefs@0.1.41","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/BobFrankston/msgapidefs#readme","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"7b15dee0ccae7ac0c7abddd4c384b09740f7252e","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.41.tgz","fileCount":11,"integrity":"sha512-lM/6aM00bfWJf+Yq/xbE9jKIQmeL+0vdI/ghmgQU/mr46bgmdiUe4QI8eIJd0gkK3+U9FqJmUuM1qfZDEocAYQ==","signatures":[{"sig":"MEYCIQCzhW3qZwXbwhzGdl4kNSkDG6qRA0fR7w0WkXzJS3359AIhAJI6wnqDZZUlgBJkv5FVgBYjHsX5XIGs+G8cJZwfR2tD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCxQuY7LwT7NB40EagzgPm5OWROJnqNb3aovpygKy1BlgIgHbzCls5P1ZwzVWZaju7qHY3upNF6a8raGTxxfz5GvM0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":105727},"main":"./msgapidefs.js","type":"module","_from":"file:bobfrankston-msgapidefs-0.1.41.tgz","types":"./msgapidefs.d.ts","exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"scripts":{"build":"tsc","release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"Y:\\dev\\utils\\msgx\\msgapidefs\\bobfrankston-msgapidefs-0.1.41.tgz","_integrity":"sha512-lM/6aM00bfWJf+Yq/xbE9jKIQmeL+0vdI/ghmgQU/mr46bgmdiUe4QI8eIJd0gkK3+U9FqJmUuM1qfZDEocAYQ==","repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.17.0","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.2.1"},"_npmOperationalInternal":{"tmp":"tmp/msgapidefs_0.1.41_1789412811791_0.38309659857702116","host":"s3://npm-registry-packages-npm-production"}},"0.1.42":{"_id":"@bobfrankston/msgapidefs@0.1.42","bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"dist":{"shasum":"1472005aba18b75808b276450bcbb89733d6daa7","tarball":"https://registry.npmjs.org/@bobfrankston/msgapidefs/-/msgapidefs-0.1.42.tgz","fileCount":14,"integrity":"sha512-vDQx4aPiR8Gzxu/qGnW7sZUvqJpZEy+Kvg+UHsVpfbZZAsKXIZAEKgRihrbODTL8Lzve/F2t+Iw2MldTJCofWA==","signatures":[{"sig":"MEQCIA04WdKF6384VdbCJN3OKyplk2sb3BokoercQgNDD1jHAiA6Xj8OK9cdRU1cyNoKfKkXsAOgM13IztGZIQ8S6lTr1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCF1O3N13Lkne0jEdaUHtaikPBSUXSw9G3Lpt48gMq1lQIgIG4pMmDM0QLnD6IwMadlNo5tUopehjWH8boXWlMAWa8="}],"unpackedSize":118156},"main":"./msgapidefs.js","name":"@bobfrankston/msgapidefs","type":"module","_from":"file:bobfrankston-msgapidefs-0.1.42.tgz","types":"./msgapidefs.d.ts","author":{"name":"Bob Frankston"},"exports":{".":{"types":"./msgapidefs.d.ts","import":"./msgapidefs.js"}},"license":"ISC","scripts":{"build":"tsc","release":"npm run prerelease:local && npm version patch && npm publish --quiet","preversion":"git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"version":"0.1.42","_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"homepage":"https://github.com/BobFrankston/msgapidefs#readme","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"_resolved":"Y:\\dev\\utils\\msgx\\msgapidefs\\bobfrankston-msgapidefs-0.1.42.tgz","_integrity":"sha512-vDQx4aPiR8Gzxu/qGnW7sZUvqJpZEy+Kvg+UHsVpfbZZAsKXIZAEKgRihrbODTL8Lzve/F2t+Iw2MldTJCofWA==","repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"_npmVersion":"11.17.0","description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","directories":{},"maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.2.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/msgapidefs_0.1.42_1789678965544_0.577234524972525"}}},"time":{"created":"2025-11-19T00:03:02.571Z","modified":"2026-09-17T21:02:45.828Z","0.1.0":"2025-11-19T00:03:02.821Z","0.1.1":"2025-11-24T17:42:21.731Z","0.1.2":"2025-11-24T20:25:29.385Z","0.1.3":"2025-11-25T16:08:06.446Z","0.1.4":"2025-11-26T03:43:44.289Z","0.1.5":"2025-11-30T00:37:11.599Z","0.1.6":"2025-11-30T00:42:55.512Z","0.1.7":"2025-11-30T00:57:37.188Z","0.1.8":"2025-11-30T02:00:46.377Z","0.1.9":"2025-11-30T02:06:00.221Z","0.1.10":"2025-11-30T02:58:12.444Z","0.1.11":"2025-11-30T03:16:53.683Z","0.1.12":"2025-11-30T03:40:27.030Z","0.1.13":"2025-11-30T20:28:37.009Z","0.1.14":"2025-11-30T20:32:13.141Z","0.1.15":"2025-11-30T21:35:01.554Z","0.1.16":"2025-11-30T22:10:43.667Z","0.1.17":"2025-12-01T15:04:53.390Z","0.1.18":"2025-12-01T15:17:21.084Z","0.1.19":"2025-12-01T19:27:03.540Z","0.1.20":"2025-12-01T19:49:51.707Z","0.1.21":"2025-12-02T00:17:00.496Z","0.1.22":"2025-12-02T02:41:01.405Z","0.1.23":"2025-12-02T03:00:22.469Z","0.1.24":"2025-12-02T03:50:21.841Z","0.1.25":"2025-12-04T01:01:23.262Z","0.1.26":"2025-12-04T02:41:52.164Z","0.1.27":"2025-12-04T03:49:23.298Z","0.1.28":"2025-12-04T04:14:52.108Z","0.1.29":"2025-12-04T05:19:59.800Z","0.1.30":"2026-02-14T14:12:22.146Z","0.1.31":"2026-03-12T03:45:53.371Z","0.1.32":"2026-03-14T17:08:34.162Z","0.1.33":"2026-04-21T23:53:52.151Z","0.1.34":"2026-04-22T22:15:58.734Z","0.1.35":"2026-06-09T14:21:45.911Z","0.1.36":"2026-07-03T19:14:22.908Z","0.1.37":"2026-08-01T00:54:47.744Z","0.1.38":"2026-08-01T15:08:12.209Z","0.1.39":"2026-08-01T18:07:12.337Z","0.1.40":"2026-08-09T22:26:23.771Z","0.1.41":"2026-09-14T19:06:51.881Z","0.1.42":"2026-09-17T21:02:45.671Z"},"bugs":{"url":"https://github.com/BobFrankston/msgapidefs/issues"},"author":{"name":"Bob Frankston"},"license":"ISC","homepage":"https://github.com/BobFrankston/msgapidefs#readme","keywords":["msgapi","msgview","msger","typescript","definitions","types","webview"],"repository":{"url":"git+https://github.com/BobFrankston/msgapidefs.git","type":"git"},"description":"TypeScript definitions for msgapi JavaScript API (msgview/msger)","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"readme":"# @bobfrankston/msgapidefs\r\n\r\n> **⚠️ SECURITY:** msgapi gives full native OS access (filesystem, processes, networking). Intended ONLY for trusted apps — native apps written as web pages. Do not expose to untrusted content.\r\n\r\n> **⚠️ EXPERIMENTAL:** APIs are experimental and subject to change.\r\n\r\nTypeScript definitions for the **msgapi** JavaScript API used by msga, msger, and msgview. See the Typescript definitions in\r\n[msgapidefs.ts](msgapidefs.ts) for more info\r\n\r\n## Workspace Structure\r\n\r\n```\r\nmsgx (workspace root)\r\n├── msgapidefs    - TypeScript type definitions for window.msgapi (this package)\r\n├── msgcommon     - Shared CLI parsing, templates, pinning utilities\r\n├── msger         - Rust/wry webview host (Windows, Linux, Mac, Pi) — PRIMARY\r\n├── msgview       - Electron webview host (desktop) — SEMI-RETIRED, see below\r\n├── msga          - .NET MAUI webview host (Android, Windows)\r\n├── build         - Release build orchestration script (build/build.ts)\r\n└── md            - Shared documentation\r\n```\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @bobfrankston/msgapidefs\r\n```\r\n\r\n## Usage\r\n\r\n```typescript\r\n// Import to register global window.msgapi type\r\nimport '../node_modules/@bobfrankston/msgapidefs/msgapidefs.js';\r\n// Note: '../node_modules/@bobfrankston/msgapidefs/index.js' may also work via package.json exports\r\n\r\n// Or import types explicitly\r\nimport type { MsgAPI, MsgResult } from '../node_modules/@bobfrankston/msgapidefs/msgapidefs.js';\r\n\r\n// msgapi provides APIs not available in browsers/webviews\r\nif (window.msgapi) {\r\n    // Window control beyond browser capabilities\r\n    window.msgapi.setFullscreen(true);\r\n    window.msgapi.setAlwaysOnTop(true);\r\n\r\n    // File system access (requires allowFs flag)\r\n    const file = await window.msgapi.fs?.selectFile();\r\n}\r\n\r\n// For standard browser APIs, use native methods:\r\ndocument.title = 'My App';  // Instead of msgapi.setTitle()\r\nlocalStorage.setItem('key', 'value');  // Instead of msgapi.saveData()\r\nwindow.close();  // Instead of msgapi.close() if not passing result\r\n```\r\n\r\n## Platform Support\r\n\r\n✅ = Current | 🔧 = Possible (recompile/rebuild needed) | ❌ = Not feasible\r\n\r\n| Platform | msger (Rust/wry) | msgview (Electron) | msga (.NET MAUI) |\r\n|----------|:----------------:|:------------------:|:----------------:|\r\n| **Windows** | ✅ | ✅ | ✅ |\r\n| **Linux** | ✅ | ✅ | ❌ |\r\n| **macOS** | 🔧 wry supports it | ✅ | 🔧 Mac Catalyst |\r\n| **Raspberry Pi** | ✅ | ✅ | ❌ |\r\n| **Android** | ❌ | ❌ | ✅ (primary) |\r\n| **iOS** | ❌ | ❌ | ❌ |\r\n\r\n> **msger** uses wry (Rust webview) and is the **primary host**. Desktop platforms (Win/Linux/Mac) are mature. The Pi display bug (\"runs but renders shredded scanlines\") was WebKitGTK's DMABUF renderer on vc4/v3d — msger now sets `WEBKIT_DISABLE_DMABUF_RENDERER=1` automatically on Raspberry Pi hardware (both the JS launcher and the binary), and the Pi renders correctly as of 2026-07-31.\r\n> **msgview** is **semi-retired** as of 2026-07-31 — see below.\r\n> **msga** targets Android primarily; Windows for dev/testing. **iOS** would be the most realistic path — MAUI supports iOS natively, so msga could target it with an iOS build profile, Apple developer account, and platform-specific conditional code (`#if IOS`) for permissions and APIs. No current plans.\r\n\r\n### msgview is semi-retired (2026-07-31)\r\n\r\nmsger + msga cover every platform, so the Electron host has no platform to itself.\r\n**Do not do feature-parity work on msgview.** New features land in msger (and msga\r\nwhere it makes sense); msgview catches up only on demand, if a real need appears.\r\n\r\n**As of 2026-08-01 msgview has no capability msger lacks.** The two things that\r\nused to be Electron-only are both settled:\r\n\r\n- **Unpacked Chrome extensions** (`-extension`) — not how add-ins are done here.\r\n  **`window.msgapi` (this package) plus injected init scripts is the add-in\r\n  mechanism**: `initScript` / `initScriptPath` inject app JS into every document\r\n  before page scripts run, with the full msgapi surface available — host-native,\r\n  works in msger and msga, no Chromium required. If something genuinely needs\r\n  Chrome extension APIs, run it in Chrome.\r\n- **`-render` off Windows** — ported. msger now captures on Linux/Pi through\r\n  WebKitGTK's snapshot API (see the render row above), verified on a Pi 5 for both\r\n  PNG and JPEG output.\r\n\r\nEngine currency is *not* a reason: a feature probe on Pi 5 / WebKitGTK 2.50.6\r\n(2026-07-31) passed 23 of 24 modern checks — `:has()`, CSS nesting, container\r\nqueries, subgrid, `backdrop-filter`, `color-mix`, `oklch`, Popover, View\r\nTransitions, `Object.groupBy`, `Promise.withResolvers`, `Intl.Segmenter`, WebGL2,\r\nOffscreenCanvas — failing only the RegExp `v` flag. The WebKitGTK user-agent token\r\n(`Version/60.5`) is a WebKitGTK version string, not a Safari generation; it says\r\nnothing about capability.\r\n\r\n## Implementation Status\r\n\r\n✅ = Implemented | ⚠️ = Partial | ❌ = Not implemented\r\n\r\n| API | msgview | msger | msga | Notes |\r\n|-----|:-------:|:-----:|:----:|-------|\r\n| **Configuration** | | | | |\r\n| `version` | ❌ | ❌ | ✅ | `window.msgapi.version` string |\r\n| `setLogging(value?)` | ❌ | ❌ | ✅ | Returns previous state |\r\n| `setAutoUpdate(value?)` | ❌ | ❌ | ✅ | `'auto'`/`'check'`/`'off'`; msga Android only |\r\n| **Diagnostics** | | | | **`window.msgapi.diag.*`** |\r\n| `diag.getExitReasons(max?)` | ❌ | ❌ | ✅ | Why the previous run exited; msga Android 11+ only, `[]` elsewhere |\r\n| **Window Control** | | | | **`window.msgapi.*`** |\r\n| `toggleFullscreen()` | ❌ | ✅ | ✅ | msger: via `window.msgapi` (msger-api.js) |\r\n| `setFullscreen(bool)` | ✅ | ✅ | ✅ | |\r\n| `minimize()` | ✅ | ✅ | ✅ | msga: Windows only |\r\n| `maximize()` | ✅ | ✅ | ✅ | msga: Windows only |\r\n| `setSize(w, h)` | ✅ | ✅ | ✅ | msga: Windows only |\r\n| `setPosition(x, y)` | ✅ | ✅ | ✅ | msga: Windows only |\r\n| `setAlwaysOnTop(bool)` | ✅ | ✅ | ❌ | |\r\n| `close(result?)` | ✅ | ✅ | ✅ | |\r\n| `navigate(url)` | ❌ | ❌ | ✅ | msga only |\r\n| `reload()` | ❌ | ❌ | ✅ | msga only |\r\n| **File System** | | | | **`window.msgapi.fs.*`** |\r\n| `fs.selectFile()` | ❌ | ❌ | ✅ | msga: full JS bridge wired |\r\n| `fs.selectFiles()` | ❌ | ❌ | ✅ | msga: full JS bridge wired |\r\n| `fs.saveFileAs()` | ❌ | ❌ | ✅ | msga: Windows only |\r\n| `fs.selectFolder()` | ❌ | ❌ | ✅ | msga: Windows only |\r\n| `fs.read(path)` | ❌ | ❌ | ✅ | msga: binary→base64→TextDecoder |\r\n| `fs.readAsDataUrl(path)` | ❌ | ❌ | ✅ | msga: auto-detects MIME from extension |\r\n| `fs.write(path, content)` | ❌ | ❌ | ✅ | |\r\n| `fs.list(path)` | ❌ | ❌ | ✅ | msga: includes attributes/created on Windows |\r\n| `fs.exists(path)` | ❌ | ❌ | ✅ | |\r\n| `fs.delete(path)` | ❌ | ❌ | ✅ | |\r\n| **Shell** | | | | **`window.msgapi.shell.*`** |\r\n| `shell.exec()` | ❌ | ❌ | ✅ | Process with stdout/stderr; limited on non-rooted Android |\r\n| `shell.open()` | ❌ | ❌ | ✅ | Android: Intent.ACTION_VIEW; Windows: ShellExecute |\r\n| `shell.showInFolder()` | ❌ | ❌ | ❌ | Defined in interface, not yet implemented |\r\n| `shell.trash()` | ❌ | ❌ | ❌ | Defined in interface, not yet implemented |\r\n| **DNS** | | | | **`window.msgapi.dns.*`** (added 2026-09-17) |\r\n| `dns.lookup()` | ❌ | ✅ | ✅ | Rust `ToSocketAddrs` (getaddrinfo) / C# `System.Net.Dns`; 2 s default timeout, 30 s cache. msger after 0.1.431, msga 1.5.53+. msgview: on demand |\r\n| **UDP Networking** | | | | **`window.msgapi.udp.*`** |\r\n| `udp.send()` | ✅ | ✅ | ✅ | Node dgram / Rust UdpSocket / C# UdpClient. `host` = IP **or hostname** |\r\n| `udp.listen()` | ✅ | ✅ | ✅ | Background receive loop in all hosts |\r\n| `udp.sendReceive()` | ✅ | ✅ | ✅ | Send + wait with timeout |\r\n| `udp.broadcast()` | ✅ | ✅ | ✅ | 255.255.255.255 broadcast |\r\n| **TCP Networking** | | | | **`window.msgapi.tcp.*`** |\r\n| `tcp.connect()` | ✅ | ✅ | ✅ | Node net/tls / Rust TcpStream+native-tls / C# TcpClient+SslStream |\r\n| `tcp.write()` | ✅ | ✅ | ✅ | UTF-8 string data |\r\n| `tcp.onData()` | ✅ | ✅ | ✅ | Persistent callback, fires multiple times |\r\n| `tcp.onClose()` | ✅ | ✅ | ✅ | Connection closed notification |\r\n| `tcp.onError()` | ✅ | ✅ | ✅ | Error notification |\r\n| `tcp.upgradeTLS()` | ✅ | ✅ | ✅ | STARTTLS — upgrade plaintext to TLS |\r\n| `tcp.close()` | ✅ | ✅ | ✅ | Close connection |\r\n| **HTTP Fetch** | | | | **`window.msgapi.http.*`** |\r\n| `http.fetch()` | ✅ | ✅ | ✅ | Native HTTP — bypasses CORS/mixed-content |\r\n| **Media capture (mic/camera)** | ❌ | ❌ | ❌ | Not an msgapi API — `getUserMedia` is the engine's. What's missing is the permission grant, which no host makes: wry's WebKitGTK backend has no `permission-request` handling (WebKitGTK denies by default), msger ignores WebView2's `PermissionRequested`, msga lacks `RECORD_AUDIO`. Deferred; direction is an external speech package, not in-page capture — see [msgapi-plan.md](./msgapi-plan.md#not-planned-recorded-so-it-doesnt-get-re-investigated). |\r\n| **Host Launcher Features** | | | | *Not part of `window.msgapi`; CLI / launcher-side* |\r\n| Markdown rendering (`.md`/`.markdown` auto-render) | ✅ | ✅ | ❌ | Local `file://` URL → rendered HTML via `msgcommon/markdown` (marked + light/dark CSS). msga could match it in `MainPage.xaml.cs` URL interception — not done yet. |\r\n| Unpacked Chrome extension loading (`-extension <dir>`) | ✅ | ❌ | ❌ | msgview-only via `session.extensions.loadExtension`. wry has no public extension API; WebKitGTK has none at all. **Not the add-in mechanism here** — app add-ins are `window.msgapi` + injected init scripts (`initScript` / `initScriptPath`), which work in msger and msga without Chromium. Chrome-extension-specific needs go to Chrome. |\r\n| Headless mode (`-noshow` without `-save`) | ✅ | ✅ | ❌ | msger creates the WebView invisible (`with_visible(false)`) but still loads HTML and runs scripts — an embedded `<script>` can query the engine and `window.ipc.postMessage` a result back. Combined with `-result <fieldname>` for clean stdout, this lets msger act as a headless CSS/JS resolver (`contrast-color()`, `getComputedStyle()`, `CSS.supports()`). msgview matches with `BrowserWindow({show:false})` + `backgroundThrottling:false`. |\r\n| Render to bitmap (`-render [file]`, `render` option) | ✅ | ✅ | ❌ | Headless page→image capture: the window is never shown; the page loads, settles (`renderDelay`, default 100ms after `load` + two rAFs), is screenshotted, and the host exits. `-render <file>` writes the image (format from extension: `.png`/`.jpg`/`.bmp`) and the JSON result carries `render: {path, width, height, format}`; bare `-render` (or API `render: true`) returns it as `render: {data (base64), width, height, format}`. Library API: `showMessageBox({render: \"shot.png\" \\| true, renderDelay?, renderFormat?})`; a failed capture rejects (msger) or sets `renderError` in the result. Both hosts fall back to capturing whatever rendered if the page hasn't loaded within the timeout (default 30s in render mode). msger: WebView2 DevTools `Page.captureScreenshot` on Windows, `webkit_web_view_get_snapshot()` → cairo PNG on Linux/Pi (2026-08-01); msgview: `webContents.capturePage()`. Both msger paths produce the same base64 PNG, so format transcoding and file writing are shared. **Linux caveat:** WebKitGTK cannot snapshot a window that was never mapped, so on Linux the render window IS mapped — made invisible by going fully transparent and skipping the taskbar, since Wayland has no way to park a window off-screen. Width/height are physical pixels (include DPI scale) and cover the WebView viewport, not the window frame. |\r\n\r\n| Desktop overlay (`-overlay`, `overlay` option) | ❌ | ✅ | ❌ | msger-only (2026-08-09). Frameless + transparent window drawn over the desktop, click-through, always-on-top, kept out of the taskbar and never focused — for transient notices such as per-monitor identification. Needs all four of `with_decorations(false)`, `with_transparent(true)` on the tao window, `with_transparent(true)` on the wry WebView, and a page that declares its own transparent background (the built-in template does; `-url`/`-raw` pages must). Click-through is `set_ignore_cursor_events` (Windows/Mac/X11/Wayland; best-effort, warns and stays clickable if refused). No taskbar slot on Windows/Linux only — macOS has no per-window equivalent, Dock presence being a process-level activation policy. Pair with `timeout`: an overlay has no close button and swallows no clicks, so nothing in it can be operated. Each overlay defaults to its own WebView2 profile keyed by screen, because concurrent WebView2 creations against one user-data dir fail with `0x80070057` — which is what launching one overlay per display does. **Verified on Windows; Linux/Pi and Mac are built but not yet exercised.** Linux/X11 additionally needs a running compositor or transparency renders black. |\r\n| Monitor enumeration (`-list`, `listMonitors` option) | ❌ | ✅ | ❌ | msger-only (2026-08-09). Prints `{\"monitors\":[{index,name,x,y,width,height,scale,primary}]}` and exits without creating a window. Indices match `-screen`, ordered bottom-row-first then left-to-right (the ordering `-screen` has always used on Windows, preserved so existing indices keep pointing at the same display). Exists so a caller can discover how many displays there are, and what to label them, before spawning one overlay per display. |\r\n| Screen selection (`-screen <n>`, `screen` option) | ❌ | ✅ | ❌ | Offsets `-pos` into the named monitor **and** picks which display `-fullscreen` covers. Was Windows-only for `-pos`; the gate was wrong rather than protective, so Mac/X11 now honor it too (2026-08-09). `fullscreen` + `screen` is the only portable way to target a display: Wayland does not let a client position its own window at absolute coordinates, but it does honor fullscreen on a chosen output. |\r\n\r\n> **msger** now injects `window.msgapi` via `msger-api.js` with window control, UDP, and HTTP. File system and shell are not yet implemented in msger or msgview.\r\n>\r\n> **Markdown rendering** (last two rows): both msger and msgview detect `.md`/`.markdown` URLs pointing at local files and render them via the shared `renderMarkdown()` helper in `msgcommon/markdown` — no extensions, no per-machine setup, GFM with light/dark CSS that follows `prefers-color-scheme`. Library callers can `import { renderMarkdown, looksLikeMarkdown } from '@bobfrankston/msgcommon/markdown'` directly. **Extension loading** is msgview-only by design: see the row's note.\r\n\r\n[httpudp-client](../../homecontrol/utils/udp/httpudp-client/README.md) auto-detects `window.msgapi?.udp` and uses native UDP when available, falling back to the httpudp WebSocket proxy otherwise.\r\n\r\nSee [`msgapi-plan.md`](./msgapi-plan.md) for the full implementation plan and roadmap.\r\n\r\n## API Reference\r\n\r\n### Configuration\r\n\r\n- `version` - Host app version string (e.g., `\"1.2.0\"`)\r\n- `setLogging(value?)` - Control debug logging. Returns previous state as string.\r\n  - `'msga'` - C# host logging only (logit-msga)\r\n  - `'msgapi'` - JS bridge logging only (logit-msgapi)\r\n  - `'on'` - Both streams\r\n  - `'off'` / `'none'` - All off\r\n  - `null` / `''` - Query current state without changing\r\n  - Returns: `'msga'`, `'msgapi'`, `'msga,msgapi'`, or `'none'`\r\n- `setAutoUpdate(value?)` - Control APK auto-update behavior. Returns previous state as string. msga Android only.\r\n  - `'auto'` - Check versions.json, download + install silently (no prompt)\r\n  - `'check'` - Check versions.json, prompt \"Install now?\" before downloading\r\n  - `'off'` - No update checking\r\n  - `null` / `undefined` - Query current state without changing\r\n  - Default: `'auto'` (configurable via `AUTO_UPDATE` in msga.env)\r\n  - Checks on startup then every `UPDATE_INTERVAL_MINUTES` (default 60)\r\n\r\n### Diagnostics\r\n\r\nWhy did the previous run exit? Android records the last few process deaths (`ApplicationExitInfo`, Android 11+); the host reads its own history on the next run and exposes it to the web app. This distinguishes crash / ANR / low-memory kill / cached-app freezer — no adb needed. Currently msga Android only; other hosts/platforms return `[]`.\r\n\r\n- `diag.getExitReasons(max?)` - Previous-run exit records, newest first (default/max clamp: 5/16). Returns `MsgExitInfo[]`:\r\n  - `timestamp` - Exit time, ms since epoch\r\n  - `reason` - `\"LowMemory\"`, `\"Crash\"`, `\"CrashNative\"`, `\"Anr\"`, `\"Freezer\"`, `\"ExitSelf\"`, `\"Signaled\"`, `\"UserRequested\"`, `\"UserStopped\"`, `\"DependencyDied\"`, `\"ExcessiveResourceUsage\"`, `\"PackageUpdated\"`, `\"Other\"`, ... (Android `ApplicationExitInfo` reason names)\r\n  - `description` - OS-provided detail (may be null), e.g. `\"isolated not needed\"` = renderer cleanup\r\n  - `importance` - Process state at death (e.g. `\"Foreground\"`, `\"Cached\"`) — a `Cached` + `LowMemory` kill is normal Android memory reclaim, not a bug\r\n  - `pss` / `rss` - Memory at exit, KB\r\n  - `processName` - Which process died: the main package name, or `...:sandboxed_process*` = the WebView renderer. **Records cover every process in the package** — renderer deaths are routine cleanup, not the app dying; filter by processName to find real main-process exits\r\n  - `pid` - Process ID at exit\r\n  - `status` - Signal number for `Signaled`, exit code for `ExitSelf`, 0 otherwise\r\n  - `stateSummary` - App-set marker (`ActivityManager.setProcessStateSummary`); msga stamps `start=<ISO time> v=<version>` at each launch so uptime-at-death is computable\r\n  - `trace` - First ~4KB of the ANR/native-crash trace when the OS captured one (`Anr`/`CrashNative` only)\r\n\r\n```javascript\r\n// Exit-history tool in a web app (e.g. houser debug panel)\r\nconst exits = await window.msgapi?.diag?.getExitReasons() ?? [];\r\nfor (const e of exits) {\r\n    console.log(`${new Date(e.timestamp).toLocaleString()} ${e.reason}` +\r\n        ` (${e.importance ?? '?'}, pss=${e.pss ?? '?'}KB) ${e.description ?? ''}`);\r\n}\r\n```\r\n\r\nInterpreting common reasons: `LowMemory` = killed by the low-memory killer; `Anr` = main thread hung; `Crash`/`CrashNative` = unhandled exception / native crash; `Freezer` = app was frozen (Android 12+ cached-app freezing — UDP listeners silently suspended, app not actually dead); `UserRequested` = swiped away from recents; `PackageUpdated` = replaced by an APK update; `Signaled` = killed by signal (check `description`).\r\n\r\nmsga also logs new exit records via MsgALog at startup when `LOGGING=true` in msga.env (`Previous exit: ...`), deduplicated across runs via a `lastSeenExitTimestamp` preference, plus one `Relaunched <gap> after previous exit: ...` line per start (held until logging is turned on). See [msga/exit-diagnostics.md](../msga/exit-diagnostics.md) for the full design notes.\r\n\r\n**Staying alive / coming back** (msga Android; other hosts resolve `'n/a'`):\r\n\r\n- `diag.getInstallInfo()` - Returns `MsgInstallInfo`: `installer` / `selfInstalled` (whether the next update can be silent), `canDrawOverlays`, `canInstallPackages`, `isHomeApp` (1.5.52+), `sdkInt`.\r\n- `diag.requestHome()` - Make msga the device's **Home app**. Android relaunches the Home app after *any* process death — self-update, System WebView update, crash, low-memory kill — with no other permission. On Android 10+ this shows the system's own one-button \"Set as default Home app?\" confirmation and resolves `'granted'` / `'denied'`; older Android opens the Home-settings list (`'opened'`). `'already'` if it is Home already. Recommended one-time step for a wall panel; a web app can offer it whenever `isHomeApp` is false. (msga 1.5.52+)\r\n- `diag.requestOverlay()` - Opens the \"Display over other apps\" settings page (`'already'` / `'opened'`). The older alternative: with the grant, the post-self-update relaunch is allowed to reach the foreground, but it does nothing for a WebView-update kill. Prefer `requestHome()`.\r\n\r\n```javascript\r\n// Panel setup: one tap, Android's own dialog\r\nconst info = await window.msgapi?.diag?.getInstallInfo?.();\r\nif (info && info.isHomeApp === false) {\r\n    const r = await window.msgapi.diag.requestHome();   // 'granted' | 'denied' | 'opened' | ...\r\n}\r\n```\r\n\r\n### Window Control\r\n\r\n- `toggleFullscreen()` - Toggle fullscreen mode\r\n- `setFullscreen(enabled: boolean)` - Set fullscreen state\r\n- `minimize()` - Minimize window\r\n- `maximize()` - Toggle maximize/restore\r\n- `setSize(width, height)` - Set window size\r\n- `setPosition(x, y)` - Set window position\r\n- `setAlwaysOnTop(enabled: boolean)` - Keep window on top\r\n- `close(result?)` - Close window and return result to parent process\r\n\r\n### File System\r\n\r\nFile dialogs (user picks interactively — safe without special permissions):\r\n- `fs.selectFile(options?)` - Open file picker\r\n- `fs.selectFiles(options?)` - Open multi-file picker\r\n- `fs.saveFileAs(content, filename?, options?)` - Save file dialog\r\n- `fs.selectFolder(options?)` - Folder picker\r\n\r\nDirect path operations (give the webview full filesystem access — msga only currently):\r\n- `fs.read(path, options?)` - Read file. Options: `{ encoding: 'utf8' | 'base64' | 'binary' }`. Default `'utf8'` returns string; `'base64'` returns raw base64 string (efficient for images); `'binary'` returns `Uint8Array`.\r\n- `fs.readAsDataUrl(path, mimeType?)` - Read file as data URL (`data:image/jpeg;base64,...`). Auto-detects MIME from extension if omitted.\r\n- `fs.write(path, content)` - Write file\r\n- `fs.list(path)` - List directory. Returns `FileInfo[]` with `attributes` (Win32 flags) and `created` on Windows.\r\n- `fs.exists(path)` - Check if file/directory exists\r\n- `fs.delete(path)` - Delete file or directory\r\n\r\n> **Note:** File system operations are currently implemented only in msga. msger and msgview do not yet have `window.msgapi.fs` — these hosts have their own internal fs mechanisms but have not wired them to the msgapi interface.\r\n\r\n### DNS\r\n\r\nPage script cannot resolve a hostname — a browser resolves names only inside its own requests and\r\nnever hands the address back. The host can. (Added 2026-09-17 by Claude Code; requirements in\r\n[../dnsrequest.md](../dnsrequest.md).)\r\n\r\n- `dns.lookup(hostname, { family?, timeoutMs? })` - Resolves to `[{ address, family }]`, IPv4 first,\r\n  **never empty**; rejects otherwise. `family` (4 | 6) restricts the answer. `timeoutMs` defaults to 2000.\r\n  An IP literal resolves to itself.\r\n- Rejections carry `error.code`: `'ENOTFOUND'` (no such name, or no address of the requested family)\r\n  or `'ETIMEOUT'` (resolver silent for `timeoutMs`). The message names the hostname and the resolver's reason.\r\n- Answers are cached in the host for 30 s (the platform resolvers do not expose the record TTL).\r\n  \"No such host\" is cached the same way (a cold negative lookup was measured at ~2.1 s on Windows — without\n  this every command to a vanished name would wait out the timeout before the caller's IP fallback);\n  a timeout is not an answer and is never cached. A cached name answers instantly, so `timeoutMs` only bounds an uncached lookup.\r\n- Absent (`window.msgapi?.dns?.lookup` undefined) in a plain browser, msgview, and older hosts —\r\n  callers fall back to the address they already have.\r\n\r\n```ts\r\nconst found = await window.msgapi?.dns?.lookup('wiz_7c47f4.aaz.lt').catch(() => null);\r\nconst ip = found?.[0].address ?? fallbackIp;\r\n```\r\n\r\n### UDP Networking\r\n\r\nNative UDP socket access — no WebSocket proxy needed when running inside a msgapi host.\r\n\r\n`host` in `udp.send` / `udp.sendReceive` is an IP literal **or a hostname**. A hostname is resolved in\r\nthe host process by the same resolver as `dns.lookup` (timeout, cache) before the datagram leaves; one\r\nthat does not resolve rejects with `error.code` `'ENOTFOUND'` / `'ETIMEOUT'`. (Both hosts always\r\nresolved names here — the platform send calls do it — but it was undocumented and had no timeout,\r\ncache or typed error before 2026-09-17.) Sockets are IPv4; a name with only IPv6 addresses rejects in msga.\r\n\r\n- `udp.send(host, port, data)` - Send UDP packet to specific host\r\n- `udp.listen(port, callback)` - Listen for incoming UDP packets (returns `{close()}` handle)\r\n- `udp.sendReceive(host, port, data, timeoutMs?)` - Send and wait for response\r\n- `udp.broadcast(port, data)` - Broadcast to local network\r\n\r\n### TCP Networking\r\n\r\nNative TCP/TLS socket access — for IMAP, SMTP, and other stream protocols. Connections are long-lived; use stream IDs to manage multiple connections. TLS is handled natively — JS never sees the raw TLS handshake.\r\n\r\n- `tcp.connect(host, port, tls)` - Connect to host:port. If `tls` is true, connect with TLS directly (port 993). Returns a `streamId` (number).\r\n- `tcp.write(streamId, data)` - Write UTF-8 string data to stream.\r\n- `tcp.onData(streamId, callback)` - Register handler for incoming data. Persistent — fires multiple times as data arrives.\r\n- `tcp.onClose(streamId, callback)` - Register handler for connection close. `hadError` is true if closed due to error.\r\n- `tcp.onError(streamId, callback)` - Register handler for errors.\r\n- `tcp.upgradeTLS(streamId, servername)` - Upgrade a plaintext connection to TLS (STARTTLS). Used by IMAP/SMTP after negotiating capabilities on plaintext.\r\n- `tcp.close(streamId)` - Close the connection.\r\n\r\n```javascript\r\n// Connect to Gmail IMAP (direct TLS on port 993)\r\nconst id = await window.msgapi.tcp.connect('imap.gmail.com', 993, true);\r\nwindow.msgapi.tcp.onData(id, (data) => console.log('Server:', data));\r\nwindow.msgapi.tcp.onClose(id, (hadError) => console.log('Closed', hadError));\r\nwindow.msgapi.tcp.onError(id, (msg) => console.error('Error:', msg));\r\n\r\n// STARTTLS example (connect plaintext, then upgrade)\r\nconst id2 = await window.msgapi.tcp.connect('imap.example.com', 143, false);\r\n// ... negotiate STARTTLS capability ...\r\nawait window.msgapi.tcp.upgradeTLS(id2, 'imap.example.com');\r\n// ... now on encrypted connection ...\r\n```\r\n\r\n**Platform implementations:** msgview uses Node.js `net`/`tls`, msger uses Rust `std::net::TcpStream` + `native-tls`, msga uses C# `TcpClient` + `SslStream`.\r\n\r\n**Used by:** `@bobfrankston/iflow-direct` `BridgeTransport` — enables browser/WebView IMAP without a Node.js server.\r\n\r\n### Shell / Process Execution\r\n\r\nNative process execution — run commands, open files with default handler. msga only currently.\r\n\r\n- `shell.exec(command, args?, options?)` - Run external command and capture output. Returns `{ stdout, stderr, exitCode }`. Options: `cwd`, `timeout` (ms), `stdin`, `encoding` (`'utf8'`|`'base64'`). Limited on non-rooted Android.\r\n- `shell.open(path)` - Open file/URL with system default handler (Windows: ShellExecute, Android: Intent.ACTION_VIEW)\r\n- `shell.showInFolder(path)` - Select file in Explorer / file manager (not yet implemented)\r\n- `shell.trash(path)` - Move to Recycle Bin / Trash (not yet implemented)\r\n\r\n### HTTP Fetch\r\n\r\nNative HTTP client — bypasses browser CORS and mixed-content restrictions. Use when an HTTPS-served web app needs to reach HTTP endpoints (e.g., local devices on the LAN).\r\n\r\n- `http.fetch(url, init?)` - Drop-in replacement for browser `fetch()`. Same `RequestInit` params, returns a real `Response` object (`.ok`, `.status`, `.json()`, `.text()`, `.headers`, `.clone()`, etc.)\r\n\r\n```javascript\r\n// HTTP from an HTTPS page — blocked by browsers, works via msgapi\r\nconst r = await window.msgapi.http.fetch('http://192.168.1.5/api/status');\r\nconst data = await r.json();\r\n\r\n// POST with headers and body\r\nconst r2 = await window.msgapi.http.fetch('http://192.168.1.5/api/cmd', {\r\n    method: 'POST',\r\n    headers: { 'Content-Type': 'application/json' },\r\n    body: JSON.stringify({ cmd: 'reboot' })\r\n});\r\n```\r\n\r\n**Platform implementations:** msga uses C# `HttpClient`, msger uses Rust `ureq`, msgview uses Node.js `fetch()`. All return a real `Response` object constructed on the JS side.\r\n\r\n**Unsupported `init` fields** (silently ignored — not meaningful for native HTTP): `mode`, `credentials`, `cache`, `signal`, `redirect`. `new Headers()` objects are normalized to plain objects.\r\n\r\n## Examples\r\n\r\nSee [samples.html](samples.html) for interactive examples and demos of all API features!\r\n\r\n**Test in msgview:**\r\n```bash\r\nmsgview -url \"file:///path/to/node_modules/@bobfrankston/msgapidefs/samples.html\"\r\n```\r\n\r\n**Test in msger:**\r\n```bash\r\nmsger -url \"file:///path/to/node_modules/@bobfrankston/msgapidefs/samples.html\"\r\n```\r\n\r\n**Test in browser:**\r\n```bash\r\n# Open samples.html in your browser to test browser compatibility\r\n```\r\n\r\nThe samples demonstrate:\r\n- Window control (fullscreen, minimize, maximize, resize, position)\r\n- Data persistence (save/load user preferences, session data, recent files)\r\n- Presentation mode example\r\n- Session management\r\n- And more!\r\n\r\n\r\n## Cross-Platform Implementation\r\n\r\n`msgapidefs` defines the TypeScript interface only. Each host implements the `window.msgapi` bridge differently:\r\n\r\n### msgview (Electron)\r\n- **Bridge:** Electron `contextBridge.exposeInMainWorld('msgapi', ...)` in `preload/preload.ts`\r\n- **Mechanism:** `ipcRenderer.invoke()` calls to main process IPC handlers\r\n- **Window control:** Electron `BrowserWindow` API\r\n- **File system:** Node.js `fs` module via IPC, file dialogs via Electron `dialog`\r\n\r\n### msger (Rust/wry)\r\n- **Bridge:** JavaScript injected via wry `with_initialization_script()` in `msger-native/src/main.rs`\r\n- **JS API:** `msger-native/src/msger-api.js` creates `window.msgapi` object\r\n- **Mechanism:** `window.ipc.postMessage(JSON.stringify(...))` to Rust IPC handler\r\n- **Capabilities:** Window control, UDP, HTTP fetch via `window.msgapi`\r\n- **Limitations:** wry 0.47.2 has IPC issues; `close()` uses `window.close()` workaround\r\n\r\n### msga (.NET MAUI)\r\n- **Bridge:** JavaScript injected via `WebViewControl.EvaluateJavaScriptAsync()` in `MainPage.xaml.cs`\r\n- **JS API:** `GetMsgApiScript()` creates `window.msgapi` object inline\r\n- **Mechanism:** `msgapi://` URL interception — JS creates hidden iframes, C# intercepts in `OnNavigating`\r\n- **Async:** Promise callbacks via `callNativeAsync()` → `window._msgapiResolve()` / `_msgapiReject()`\r\n- **Window control:** Platform-conditional (`#if WINDOWS` uses WinUI AppWindow APIs)\r\n- **File system:** MAUI `FilePicker`, Windows-specific `FileSavePicker`/`FolderPicker`\r\n- **Platforms:** Android (primary target), Windows (development/testing)\r\n\r\n### Adding New Sub-Objects\r\n\r\nEach capability is an optional sub-object on `MsgAPI` (e.g., `fs?`, `udp?`). To add a new one:\r\n1. Define the interface in [`msgapidefs.ts`](./msgapidefs.ts) as an optional sub-object on `MsgAPI`\r\n2. Implement the native side in each host:\r\n   - **msgview:** Add IPC handlers in `main.ts`, expose in `preload/preload.ts`\r\n   - **msger:** Add Rust handler in `main.rs`, expose in `msger-api.js`\r\n   - **msga:** Add C# methods + JS injection in `GetMsgApiScript()` (see [msga readme](../msga/readme.md))\r\n3. Browser code uses optional chaining: `window.msgapi?.newFeature?.method()` — works everywhere, undefined when unavailable\r\n\r\nSee [`msgapi-plan.md`](./msgapi-plan.md) for the full feature matrix and implementation status across all three hosts.\r\n\r\n## Related Packages\r\n\r\n- [@bobfrankston/msgview](https://www.npmjs.com/package/@bobfrankston/msgview) - Electron-based message box (slower, works on Pi)\r\n- [@bobfrankston/msger](https://www.npmjs.com/package/@bobfrankston/msger) - Rust/wry-based message box (fast, lightweight)\r\n- [msga](https://github.com/BobFrankston/msga) - .NET MAUI Android/Windows wrapper app\r\n\r\n## License\r\n\r\nISC\r\n","readmeFilename":"README.md"}