{"_id":"tablemark","_rev":"22-6ac436e4e1ffe209d5236649592d0817","name":"tablemark","dist-tags":{"beta":"4.0.0-beta.2","canary":"4.1.0-canary.3","latest":"4.1.0"},"versions":{"1.0.0-alpha.1":{"name":"tablemark","version":"1.0.0-alpha.1","keywords":["markdown","tables","json","convert","generate"],"license":"MIT","_id":"tablemark@1.0.0-alpha.1","maintainers":[{"name":"citycide","email":"thecitycide@gmail.com"}],"dist":{"shasum":"ee031410dad99fcf51a81e48fbebe602c20eba5a","tarball":"https://registry.npmjs.org/tablemark/-/tablemark-1.0.0-alpha.1.tgz","integrity":"sha512-lkt5iFD4Y+eS4ouBaGRx+ddVZX4qLa9O7w4iiKi2wsp8H5ZqtMWLU8NN+6TKIvD+I4IAp7ppueTPGkGYPpIXZw==","signatures":[{"sig":"MEUCIGII0NU4eGgBHTCE8mEMJ4sLYu05rlCRDx7LifiVQ7RLAiEA0RSVukUs1zYQFLQrwdxaDBl2uO9t3WnqGfWvdeRhaE4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","files":["index.js"],"_shasum":"ee031410dad99fcf51a81e48fbebe602c20eba5a","engines":{"node":">=4"},"scripts":{"test":"ava","test:watch":"ava -w"},"_npmUser":{"name":"citycide","email":"thecitycide@gmail.com"},"_npmVersion":"4.0.5","description":"Generate markdown tables from JSON data.","directories":{},"_nodeVersion":"7.4.0","dependencies":{"is-plain-obj":"^1.1.0"},"devDependencies":{"ava":"^0.17.0","eslint":"^3.13.1","eslint-plugin-promise":"^3.4.0","eslint-config-standard":"^6.2.1","eslint-plugin-standard":"^2.0.1","eslint-plugin-prefer-let":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/tablemark-1.0.0-alpha.1.tgz_1485117573565_0.03904896788299084","host":"packages-18-east.internal.npmjs.com"}},"1.0.0-alpha.2":{"name":"tablemark","version":"1.0.0-alpha.2","keywords":["markdown","tables","json","convert","generate"],"license":"MIT","_id":"tablemark@1.0.0-alpha.2","maintainers":[{"name":"citycide","email":"thecitycide@gmail.com"}],"homepage":"https://github.com/citycide/tablemark#readme","bugs":{"url":"https://github.com/citycide/tablemark/issues"},"dist":{"shasum":"07615d2e832340f35561b2ef5e3e85a23bc4c277","tarball":"https://registry.npmjs.org/tablemark/-/tablemark-1.0.0-alpha.2.tgz","integrity":"sha512-TjSRY/u7CU88EmqciK+X6A0tbp3ca9aZbByT7jLkOfLk74YR+AFc8iy2/JzjnlInDINav5WT3fjQQ/xDD5KY2w==","signatures":[{"sig":"MEQCIAF5JA7FXLDlWlF/mK7cbO7u/0H3Xl5vQ1QHhKBrZNMyAiANzMeEE0BLxnM0u84CxfBV/styDyx9wv0vMlc6jJLHxQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","files":["index.js"],"_shasum":"07615d2e832340f35561b2ef5e3e85a23bc4c277","engines":{"node":">=4"},"gitHead":"d73e57bab810978c6786f453f4897470a4efbe69","scripts":{"test":"ava","test:watch":"ava -w"},"_npmUser":{"name":"citycide","email":"thecitycide@gmail.com"},"repository":{"url":"git+https://github.com/citycide/tablemark.git","type":"git"},"_npmVersion":"4.0.5","description":"Generate markdown tables from JSON data.","directories":{},"_nodeVersion":"7.4.0","dependencies":{"is-plain-obj":"^1.1.0"},"devDependencies":{"ava":"^0.17.0","eslint":"^3.13.1","eslint-plugin-promise":"^3.4.0","eslint-config-standard":"^6.2.1","eslint-plugin-standard":"^2.0.1","eslint-plugin-prefer-let":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/tablemark-1.0.0-alpha.2.tgz_1485118798150_0.15349827823229134","host":"packages-18-east.internal.npmjs.com"}},"1.0.0":{"name":"tablemark","version":"1.0.0","keywords":["markdown","tables","json","convert","generate"],"author":{"url":"github.com/citycide","name":"Bo Lingen","email":"lingenbw@gmail.com"},"license":"MIT","_id":"tablemark@1.0.0","maintainers":[{"name":"citycide","email":"thecitycide@gmail.com"}],"homepage":"https://github.com/citycide/tablemark","bugs":{"url":"https://github.com/citycide/tablemark/issues"},"dist":{"shasum":"0651f8eec2e8e748e6b1ea26ada46265c35a089c","tarball":"https://registry.npmjs.org/tablemark/-/tablemark-1.0.0.tgz","integrity":"sha512-S8tP+bae0p2dGnxLJIj9u/lQyEYHrhY9t3v8mdh2spL4AntBto7LOoUwoIPMgYuuW9CQ0und11FfsR1tyxH9Ig==","signatures":[{"sig":"MEQCIElt2UA+o1r6VLozK5bcaySm1zkP2DfkZ9mYvFeR8ar/AiAlTB1x4vb4zeV9+CxyDdsO4eU82G6gRYcg0FYJEmboTA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"files":["index.js"],"engines":{"node":">=4"},"gitHead":"2fcaa3336560d0776cd853e76dbcd9bdacd989ea","scripts":{"test":"ava","test:watch":"ava -w"},"_npmUser":{"name":"citycide","email":"lingenbw@gmail.com"},"repository":{"url":"git+https://github.com/citycide/tablemark.git","type":"git"},"_npmVersion":"5.1.0","description":"Generate markdown tables from JSON data.","directories":{},"_nodeVersion":"8.1.3","dependencies":{"is-plain-obj":"^1.1.0"},"devDependencies":{"ava":"^0.20.0","snazzy":"^7.0.0","standard":"^10.0.2"},"_npmOperationalInternal":{"tmp":"tmp/tablemark-1.0.0.tgz_1499493178621_0.22113281162455678","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"tablemark","version":"1.1.0","keywords":["markdown","tables","json","convert","generate"],"author":{"url":"github.com/citycide","name":"Bo Lingen","email":"lingenbw@gmail.com"},"license":"MIT","_id":"tablemark@1.1.0","maintainers":[{"name":"citycide","email":"thecitycide@gmail.com"}],"homepage":"https://github.com/citycide/tablemark","bugs":{"url":"https://github.com/citycide/tablemark/issues"},"dist":{"shasum":"754461c90369f4df8fcbdd254d61b130b8145f16","tarball":"https://registry.npmjs.org/tablemark/-/tablemark-1.1.0.tgz","integrity":"sha512-t5NS3p4T5PzSphoOeooJvVaPYzNrbKioF04k9ZQV+ZVru9lUaVGpeJpJe8WCHm9EcgZ4gd240S0AkldHq0HmpA==","signatures":[{"sig":"MEQCIG7H4+fr04tOUaxoluLe7whJYRBCAASdMwySzwra5/+kAiBSLIaUJZLMrCn/f/tf5V3wls8tde3a5bIqSuea063A9w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"files":["index.js"],"engines":{"node":">=4"},"gitHead":"a64fa9b89b0330bb0d0b3df4f8e0f5e6eac60215","scripts":{"lint":"standard | snazzy","test":"ava","test:watch":"ava -w"},"_npmUser":{"name":"citycide","email":"lingenbw@gmail.com"},"repository":{"url":"git+https://github.com/citycide/tablemark.git","type":"git"},"_npmVersion":"5.3.0","description":"Generate markdown tables from JSON data.","directories":{},"_nodeVersion":"8.5.0","dependencies":{"sentence-case":"^2.1.1"},"devDependencies":{"ava":"^0.20.0","snazzy":"^7.0.0","standard":"^10.0.2"},"_npmOperationalInternal":{"tmp":"tmp/tablemark-1.1.0.tgz_1505347974268_0.6910357370506972","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"tablemark","version":"1.2.0","keywords":["markdown","tables","json","convert","generate"],"author":{"url":"https://github.com/citycide","name":"Bo Lingen","email":"lingenbw@gmail.com"},"license":"MIT","_id":"tablemark@1.2.0","maintainers":[{"name":"citycide","email":"thecitycide@gmail.com"}],"homepage":"https://github.com/citycide/tablemark","bugs":{"url":"https://github.com/citycide/tablemark/issues"},"dist":{"shasum":"a9b2a24e3fab60399a5a5c2e5aa2bbc5c6cd6f2d","tarball":"https://registry.npmjs.org/tablemark/-/tablemark-1.2.0.tgz","integrity":"sha512-NDx7QZ55rW4VIsrsVwTDr9yjXHJypZUGuVPYtZJTKTph0Cdwqv6gCK42sd68e4J8QNjsWg1zc0zNRQKP1FMmIQ==","signatures":[{"sig":"MEUCIGTxUAD7mbEKm4HQJLlr+CYn5BlUbWGOt5x9UWthTugCAiEA5ybAQ40LHV0Iimzd4DIhw49gjfXmLV+BVdieTK/tCPs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"files":["index.js"],"engines":{"node":">=4"},"gitHead":"35367a469fb8897cc0bbc0fcc1e41979003dbe08","scripts":{"lint":"standard | snazzy","test":"ava","watch":"ava -w","changelog":"changelog"},"_npmUser":{"name":"citycide","email":"lingenbw@gmail.com"},"repository":{"url":"git+https://github.com/citycide/tablemark.git","type":"git"},"_npmVersion":"5.5.1","description":"Generate markdown tables from JSON data.","directories":{},"_nodeVersion":"8.9.3","dependencies":{"sentence-case":"^2.1.1","split-text-to-chunks":"^1.0.0"},"devDependencies":{"ava":"^0.20.0","snazzy":"^7.0.0","standard":"^10.0.2","@citycide/changelog":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tablemark-1.2.0.tgz_1515922689860_0.2716878454666585","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"tablemark","version":"2.0.0","keywords":["markdown","tables","json","convert","generate"],"author":{"url":"https://github.com/citycide","name":"Bo Lingen","email":"lingenbw@gmail.com"},"license":"MIT","_id":"tablemark@2.0.0","maintainers":[{"name":"citycide","email":"thecitycide@gmail.com"}],"homepage":"https://github.com/citycide/tablemark","bugs":{"url":"https://github.com/citycide/tablemark/issues"},"dist":{"shasum":"8eb0db5743d24d1f1d795c3ecd05c28f9c55f635","tarball":"https://registry.npmjs.org/tablemark/-/tablemark-2.0.0.tgz","fileCount":5,"integrity":"sha512-bgvShWeSUIWO4j6NH7wGrn1xUQMJ/LRZFIRWE6ka5CFNfQ5qOP9FB4amKCurUUr7C0K4AJGHYDLkaf8A6t5Aww==","signatures":[{"sig":"MEUCIQC6nGWR/Wntp9ie6T9fdak6KdZRZ75iauxYMLo+MGrlZQIgMnevLj1HJewKl3RDghth9Pe6nPbdC+61NZX4QNj1MS8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12553,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOkGjCRA9TVsSAnZWagAAwxUP/125nYBT9nul+rbySZr1\nBHq9yxv9DBGzkjiP2quFSoq2pHR0yvDvaqdV1oYCiNOIzuniddN3ZbndS16Z\nG/gsijN+j2D6JqNb77sg0m1O3gvnUGnefWHp8N0/5B9b1mPYV8zsxLZ8XrI+\nPE1aR3PUbu3tQNwxRAWjx6exShh8Mpm+iW/OiRLKIUjN5bkztKQhuFxMkfZ+\nfd55utriVuD65fNiNmC9TuPVDchfVWcVzKJODH/5jtuXTxD7/ri9cxqtC9ng\nOQAnQDztmtJdUjTEa9f8Fhbky+CN+LBtj4ZOnehIVPuYIPXeXZolQFv4hRCX\nuptZP0P6zXWnkxoWod1rN0KM8578CZH2qeyU9eotqhbEApSkaVCYW36FMeci\nZE3zfyK6DQVsQ4apoWEYjuSxZy9n3638+ztg8RYgkeABXSoqVR6CGNnmUMis\n5iMA6Pn7x7tjWJTMVGmszxznAgFev71RhYtzCgKYLojnX7iUzA59snqaxqk+\nRkF4f02Lc681RhRhY/pOcdRisojBCK5VIsMdfih0n1g0fZ4MICZOhWE7gxjC\n1wrmlQRDCSBcbyeb0p+hCf/6lENxLskJqbTVTbVI51OS0XsLG6vGay4OJ1Q7\nyJSI5q6FMFsYn2cs4ediV+wJc6L4A9X//0e4f0z86CVfEA6pNUJkElCh5gXE\nuUf5\r\n=S4bN\r\n-----END PGP SIGNATURE-----\r\n"},"engines":{"node":">=8.10"},"gitHead":"e9ad12fcb826119feb1056c1cca0fb45de2dda81","scripts":{"lint":"standard | snazzy","test":"ava","changelog":"changelog","prepublishOnly":"npm run lint && npm test"},"_npmUser":{"name":"citycide","email":"lingenbw@gmail.com"},"repository":{"url":"git+https://github.com/citycide/tablemark.git","type":"git"},"_npmVersion":"6.9.0","description":"Generate markdown tables from JSON data.","directories":{},"_nodeVersion":"12.6.0","dependencies":{"sentence-case":"^2.1.1","split-text-to-chunks":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^2.2.0","snazzy":"^8.0.0","standard":"^13.0.2","@citycide/changelog":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/tablemark_2.0.0_1564098978180_0.08893640862900898","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"tablemark","version":"3.0.0","keywords":["markdown","table","tables","json","convert","generate","ghfm","tableify","typescript"],"author":{"url":"https://github.com/citycide","name":"Bo Lingen","email":"lingenbw@gmail.com"},"license":"MIT","_id":"tablemark@3.0.0","maintainers":[{"name":"citycide","email":"lingenbw@gmail.com"}],"homepage":"https://github.com/citycide/tablemark","bugs":{"url":"https://github.com/citycide/tablemark/issues"},"dist":{"shasum":"65708e4d8fb08a826b0e7e60fcab9b77f3a964d8","tarball":"https://registry.npmjs.org/tablemark/-/tablemark-3.0.0.tgz","fileCount":9,"integrity":"sha512-7N05gRK7t6B4g8AtedUsKoKtPjplmUjOPr/V4kVB+7U3yGiB3WvKqMTTQzVCZyhfZUXgQFp9YyN9ZgC52uCPKw==","signatures":[{"sig":"MEYCIQDaupMR75UA9K6Spu+fkqGAWHmPx6LtV32Ge8M5NLx9KgIhAPlwJZSnPRaShpXJmkB+EEOCCnI/r21KsYyIHfN+RHZX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16907,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh28wcCRA9TVsSAnZWagAAnkMQAIWkB7tmFIdPxW/J7mcY\n5YWAm5crE03a1i6QWXexk8wnSH8rLTvRaIv6xyDelz2dDUeHxPmS/qa5tcfs\neysKEQV5+e+0G6tMjH+Lfi4FfxypCKednYe6gioxRQjacYaU9n9urf6qPN9+\n76s7BtOMyJCuteJ4+TuYg17Kz9Ae2yy/VusixgkKTx17NeVxeWbH+gR1Hy7N\nS2vAFGb/5cJ8XsVSBVrFSgIcTEx+X3G5aCza23+GOI9pNTjAk9WhVsF38KJ1\nxekwBRv/KFHBaX9OZ1+wQZbl04fR9qojH1pAO1ux2d/bYhI7gBNzls2IcIrm\nCi1kzEojWhYMcDEsa6xY7gcQd7lnXimRbtinOxlfKxjD3TFAEiQRwFkbK5dy\nhlRtiU2IPgXp27NXXylX2/WzfxPKHna0Gni5Vi3SGsFzTZsBR9lkFL+v7f34\nwRW7L8F2IbTuTwh4etGgav8jS9m0yzLAziVKDF5jRs4b9iTPlTcAoBR5EzOz\njGd0I9rCeLChc+v3RtZCPvfMpXWS8UWY6GYeyTpJHPxrjj7MDubtFKN9RGTS\n5fDXIf5DDy0lsYqNu4L0EYW6WLVxGCQn8H3TShta/gn3Ryi+5vbgQaWTCDzK\nQL6iXOW5ip4gCPSJfCGdR5KRiKDn/YtLvXhKZkdHtLg4DCkDqPEx3u8QQXUe\nu6DX\r\n=PiU7\r\n-----END PGP SIGNATURE-----\r\n"},"type":"module","types":"./dist/index.d.ts","engines":{"node":">=14.16"},"exports":"./dist/index.js","gitHead":"7be98b0cfb6cdedaae5e8d60f352aafb2ec7f1ba","scripts":{"lint":"ts-standardx src && cd tests && ts-standardx .","test":"ava","build":"tsc","pretest":"npm run build","changelog":"changelog","prepublishOnly":"npm run lint && npm test"},"_npmUser":{"name":"citycide","email":"lingenbw@gmail.com"},"repository":{"url":"git+https://github.com/citycide/tablemark.git","type":"git"},"_npmVersion":"8.0.0","description":"Generate markdown tables from a list of objects or JSON data.","directories":{},"sideEffects":false,"_nodeVersion":"16.11.1","dependencies":{"sentence-case":"^3.0.4","split-text-to-chunks":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","ts-node":"^10.3.0","typescript":"^4.4.4","@types/node":"^14.17.27","ts-standardx":"^0.8.4","@citycide/changelog":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tablemark_3.0.0_1635218407400_0.5767803426708658","host":"s3://npm-registry-packages"}},"3.1.0":{"name":"tablemark","version":"3.1.0","keywords":["markdown","table","tables","json","convert","generate","ghfm","tableify","typescript"],"author":{"url":"https://github.com/haltcase","name":"Bo Lingen","email":"bo@haltcase.dev"},"license":"MIT","_id":"tablemark@3.1.0","maintainers":[{"name":"citycide","email":"lingenbw@gmail.com"},{"name":"haltcase","email":"bo@lingen.life"}],"homepage":"https://github.com/haltcase/tablemark","bugs":{"url":"https://github.com/haltcase/tablemark/issues"},"dist":{"shasum":"b1a06208bb5fe94608e4e653e45787a172266a1b","tarball":"https://registry.npmjs.org/tablemark/-/tablemark-3.1.0.tgz","fileCount":9,"integrity":"sha512-IwO6f0SEzp1Z+zqz/7ANUmeEac4gaNlknWyj/S9aSg11wZmWYnLeyI/xXvEOU88BYUIf8y30y0wxB58xIKrVlQ==","signatures":[{"sig":"MEYCIQCBpLUr8UYSyfTeLH3tg2FM0WqrG/t3viWCrHQo0Z49GAIhAPC9Bi5U5WQP1taf4sR+DxA/PMkaBNoYOKVWbWWYQLjY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18970},"type":"module","_from":"file:tablemark-3.1.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=14.16"},"exports":"./dist/index.js","scripts":{"lint":"ts-standardx src && cd tests && ts-standardx .","test":"ava","build":"tsc","pretest":"npm run build","changelog":"changelog"},"_npmUser":{"name":"haltcase","email":"bo@lingen.life"},"_resolved":"C:\\Users\\bo\\AppData\\Local\\Temp\\5834664d08f42ca9fcdf51c352a49a5e\\tablemark-3.1.0.tgz","_integrity":"sha512-IwO6f0SEzp1Z+zqz/7ANUmeEac4gaNlknWyj/S9aSg11wZmWYnLeyI/xXvEOU88BYUIf8y30y0wxB58xIKrVlQ==","repository":{"url":"git+https://github.com/haltcase/tablemark.git","type":"git"},"_npmVersion":"10.2.3","description":"Generate markdown tables from a list of objects or JSON data.","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","dependencies":{"sentence-case":"^3.0.4","split-text-to-chunks":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","ts-node":"^10.3.0","typescript":"^4.4.4","@types/node":"^14.17.27","ts-standardx":"^0.8.4","@citycide/changelog":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tablemark_3.1.0_1712023579213_0.9080641447997544","host":"s3://npm-registry-packages"}},"4.0.0-beta.1":{"name":"tablemark","version":"4.0.0-beta.1","keywords":["markdown","table","tables","json","convert","generate","ghfm","tableify","typescript"],"author":{"url":"https://github.com/haltcase","name":"Bo Lingen","email":"bo@haltcase.dev"},"license":"MIT","_id":"tablemark@4.0.0-beta.1","maintainers":[{"name":"citycide","email":"lingenbw@gmail.com"},{"name":"haltcase","email":"bo@lingen.life"}],"homepage":"https://github.com/haltcase/tablemark","bugs":{"url":"https://github.com/haltcase/tablemark/issues"},"dist":{"shasum":"f3a61532ad82fa209584c5875a37bd774a4b21b4","tarball":"https://registry.npmjs.org/tablemark/-/tablemark-4.0.0-beta.1.tgz","fileCount":3,"integrity":"sha512-RZJvbAE81btLZ7GWUtgcSUOn4HE3A4AnK+/WgPjCqzBvl9nJqGG0gkBZCGDHlQehyM/5FTXJGA37MmEHQ6wQ0Q==","signatures":[{"sig":"MEQCIDXE8qTnnCxU8ja9J3hgLJarhoGtqIv1V0e8iApmSkhRAiAjxtL94isoSEwQQGTEHPPy/X0KhzLkE0wkk17KY7bF8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23445},"type":"module","_from":"file:tablemark-4.0.0-beta.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest","build":"tsdown","format":"oxlint --fix && eslint --fix src tests && prettier --write src tests","changelog":"changelog --in-file CHANGELOG.md --out-file CHANGELOG.md","eslint:check":"eslint src tests","oxlint:check":"oxlint","prettier:check":"prettier --check src tests","typescript:check":"tsgo --noEmit"},"_npmUser":{"name":"haltcase","email":"bo@lingen.life"},"prettier":"@haltcase/style/prettier","_resolved":"C:\\Users\\bo\\AppData\\Local\\Temp\\96c1152608c263e6fe750e7f9844a910\\tablemark-4.0.0-beta.1.tgz","_integrity":"sha512-RZJvbAE81btLZ7GWUtgcSUOn4HE3A4AnK+/WgPjCqzBvl9nJqGG0gkBZCGDHlQehyM/5FTXJGA37MmEHQ6wQ0Q==","devEngines":{"runtime":{"name":"node","onFail":"error","version":"24"}},"repository":{"url":"git+https://github.com/haltcase/tablemark.git","type":"git"},"_npmVersion":"11.4.2","description":"Generate markdown tables from a list of objects or JSON data.","directories":{},"sideEffects":false,"_nodeVersion":"24.4.1","dependencies":{"wrap-ansi":"^9.0.0","ansi-regex":"^6.1.0","wordwrapjs":"^5.1.0","change-case":"^5.4.4","string-width":"^7.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^9.30.1","oxlint":"^1.3.0","tsdown":"^0.12.9","vitest":"3.2.4","lefthook":"^1.11.16","prettier":"^3.6.2","typescript":"^5.8.3","@types/node":"^24.0.10","@commitlint/cli":"^19.8.1","@haltcase/style":"^7.3.1","@commitlint/types":"^19.8.1","@types/wordwrapjs":"^5.1.2","@citycide/changelog":"^2.0.0","eslint-plugin-oxlint":"^1.5.0","@arethetypeswrong/core":"^0.18.2","@typescript/native-preview":"7.0.0-dev.20250701.1","@commitlint/config-conventional":"^19.8.1"},"_npmOperationalInternal":{"tmp":"tmp/tablemark_4.0.0-beta.1_1756434129460_0.03423796380324173","host":"s3://npm-registry-packages-npm-production"}},"4.0.0-beta.2":{"name":"tablemark","version":"4.0.0-beta.2","keywords":["markdown","table","tables","json","convert","generate","ghfm","tableify","typescript"],"author":{"url":"https://github.com/haltcase","name":"Bo Lingen","email":"bo@haltcase.dev"},"license":"MIT","_id":"tablemark@4.0.0-beta.2","maintainers":[{"name":"citycide","email":"lingenbw@gmail.com"},{"name":"haltcase","email":"bo@lingen.life"}],"homepage":"https://github.com/haltcase/tablemark","bugs":{"url":"https://github.com/haltcase/tablemark/issues"},"dist":{"shasum":"42b801e6d7ee3e9fc27045709262c851a4e489d2","tarball":"https://registry.npmjs.org/tablemark/-/tablemark-4.0.0-beta.2.tgz","fileCount":5,"integrity":"sha512-8mfZ+42qO5G8I54fx+1dRq1AelJ4wQ10oG1/wiAW4HhrJvFugb9r4M1d+uLNDObZacAxs+bFXu3ZATHR2FF5Yw==","signatures":[{"sig":"MEUCIQCtmVQuilqbxgTAzUqJcBvMttkAVuhuiBtmLtGXMR0fEwIgfHRhuNwwmh41m0LXnfxWrpCjsmgJXASb6FvIVc17d4I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46277},"type":"module","_from":"file:tablemark-4.0.0-beta.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest","build":"tsdown","format":"oxlint --fix && eslint --fix src tests && prettier --write src tests","changelog":"changelog --in-file CHANGELOG.md --out-file CHANGELOG.md","eslint:check":"eslint src tests","oxlint:check":"oxlint","prettier:check":"prettier --check src tests","typescript:check":"tsgo --noEmit"},"_npmUser":{"name":"haltcase","email":"bo@lingen.life"},"prettier":"@haltcase/style/prettier","_resolved":"C:\\Users\\bo\\AppData\\Local\\Temp\\41d7a2d92b03b257cd75af80fbbf7a88\\tablemark-4.0.0-beta.2.tgz","_integrity":"sha512-8mfZ+42qO5G8I54fx+1dRq1AelJ4wQ10oG1/wiAW4HhrJvFugb9r4M1d+uLNDObZacAxs+bFXu3ZATHR2FF5Yw==","devEngines":{"runtime":{"name":"node","onFail":"error","version":"24"}},"repository":{"url":"git+https://github.com/haltcase/tablemark.git","type":"git"},"_npmVersion":"11.4.2","description":"Generate markdown tables from a list of objects or JSON data.","directories":{},"sideEffects":false,"_nodeVersion":"24.4.1","dependencies":{"wrap-ansi":"^9.0.0","ansi-regex":"^6.1.0","wordwrapjs":"^5.1.0","change-case":"^5.4.4","string-width":"^7.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^9.30.1","oxlint":"^1.3.0","tsdown":"^0.12.9","vitest":"3.2.4","lefthook":"^1.11.16","prettier":"^3.6.2","typescript":"^5.8.3","@types/node":"^24.0.10","@commitlint/cli":"^19.8.1","@haltcase/style":"^7.3.1","@commitlint/types":"^19.8.1","@types/wordwrapjs":"^5.1.2","@citycide/changelog":"^2.0.0","eslint-plugin-oxlint":"^1.5.0","@arethetypeswrong/core":"^0.18.2","@typescript/native-preview":"7.0.0-dev.20250701.1","@commitlint/config-conventional":"^19.8.1"},"_npmOperationalInternal":{"tmp":"tmp/tablemark_4.0.0-beta.2_1756434666392_0.013495209598597624","host":"s3://npm-registry-packages-npm-production"}},"4.0.0-canary.1":{"name":"tablemark","version":"4.0.0-canary.1","keywords":["markdown","table","tables","json","convert","generate","ghfm","tableify","typescript"],"author":{"url":"https://github.com/haltcase","name":"Bo Lingen","email":"bo@haltcase.dev"},"license":"MIT","_id":"tablemark@4.0.0-canary.1","maintainers":[{"name":"citycide","email":"lingenbw@gmail.com"},{"name":"haltcase","email":"bo@lingen.life"}],"homepage":"https://github.com/haltcase/tablemark","bugs":{"url":"https://github.com/haltcase/tablemark/issues"},"dist":{"shasum":"091508af82c66ff42a61405cf2f397d1cfb88243","tarball":"https://registry.npmjs.org/tablemark/-/tablemark-4.0.0-canary.1.tgz","fileCount":5,"integrity":"sha512-UrU/RRTg+ZYd13S36kG7UM6DkBLprqoqinnQCKdelwAyhQ7G4cxYYVtKBub9VeadFHRIeyR9imd6z1ybtQ8WTw==","signatures":[{"sig":"MEUCIQCj62NNSiwEM3vt5DfAWT/27lmkMqrnVpE47MpZ2k0seQIgdJ+xwsV4WXq1HqEERfZtUkvvdtAYTbAfvjxpxs2tiDQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46050},"type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"0a3ef3d045342799563c1b017e00efff16780e09","scripts":{"test":"vitest","build":"tsdown","format":"oxlint --fix && eslint --fix src tests && prettier --write src tests","eslint:check":"eslint src tests","oxlint:check":"oxlint","prepublishOnly":"vitest --run && pnpm build","prettier:check":"prettier --check src tests","typescript:check":"tsgo"},"_npmUser":{"name":"haltcase","email":"bo@lingen.life"},"prettier":"@haltcase/style/prettier","devEngines":{"runtime":{"name":"node","onFail":"error","version":">=20"}},"repository":{"url":"git+https://github.com/haltcase/tablemark.git","type":"git"},"_npmVersion":"10.8.2","description":"Generate markdown tables from a list of objects or JSON data.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"wrap-ansi":"^9.0.2","ansi-regex":"^6.2.2","wordwrapjs":"^5.1.0","change-case":"^5.4.4","string-width":"^8.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.15.1","readmeFilename":"README.md","devDependencies":{"eslint":"^9.35.0","oxlint":"^1.14.0","tsdown":"0.15.0","vitest":"3.2.4","lefthook":"^1.12.4","prettier":"^3.6.2","typescript":"^5.9.2","@types/node":"^24.3.1","@actions/core":"^1.11.1","@actions/exec":"^1.1.1","@octokit/types":"^14.1.0","@actions/github":"^6.0.1","@commitlint/cli":"^19.8.1","@haltcase/style":"^7.3.1","semantic-release":"^24.2.8","@commitlint/types":"^19.8.1","@types/wordwrapjs":"^5.1.2","eslint-plugin-oxlint":"^1.14.0","@arethetypeswrong/core":"^0.18.2","@typescript/native-preview":"7.0.0-dev.20250910.1","@commitlint/config-conventional":"^19.8.1"},"_npmOperationalInternal":{"tmp":"tmp/tablemark_4.0.0-canary.1_1757562947201_0.9242896916410897","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"tablemark","version":"4.0.0","keywords":["markdown","table","tables","json","convert","generate","ghfm","tableify","typescript"],"author":{"url":"https://github.com/haltcase","name":"Bo Lingen","email":"bo@haltcase.dev"},"license":"MIT","_id":"tablemark@4.0.0","maintainers":[{"name":"citycide","email":"lingenbw@gmail.com"},{"name":"haltcase","email":"bo@lingen.life"}],"homepage":"https://github.com/haltcase/tablemark","bugs":{"url":"https://github.com/haltcase/tablemark/issues"},"dist":{"shasum":"d8f620dce799c04a92ad0c0cecff80087e13a043","tarball":"https://registry.npmjs.org/tablemark/-/tablemark-4.0.0.tgz","fileCount":5,"integrity":"sha512-yCKHLpTJsTBZZ2cG9dBB8unuUAbpOn+vU7QCOpYxS8VrYD/4jKyfUPdGVDkmpi6Ed7MbObrPVSY1DEMW9VRz9A==","signatures":[{"sig":"MEUCIDcDgvi4HE7QI2TXrHl8Ahq7s+T3O/Q2p+1kxGg6odLaAiEA9i3HfLztNBrzNejNItfV30fk7s216N1DOpUp3tf9yys=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46041},"type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"364f859289b6cb50401b2aeaefd753490441afae","scripts":{"test":"vitest","build":"tsdown","format":"oxlint --fix && eslint --fix src tests && prettier --write src tests","eslint:check":"eslint src tests","oxlint:check":"oxlint","prepublishOnly":"vitest --run && pnpm build","prettier:check":"prettier --check src tests","typescript:check":"tsgo"},"_npmUser":{"name":"haltcase","email":"bo@lingen.life"},"prettier":"@haltcase/style/prettier","devEngines":{"runtime":{"name":"node","onFail":"error","version":">=20"}},"repository":{"url":"git+https://github.com/haltcase/tablemark.git","type":"git"},"_npmVersion":"10.8.2","description":"Generate markdown tables from a list of objects or JSON data.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"wrap-ansi":"^9.0.2","ansi-regex":"^6.2.2","wordwrapjs":"^5.1.0","change-case":"^5.4.4","string-width":"^8.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.15.1","devDependencies":{"eslint":"^9.35.0","oxlint":"^1.14.0","tsdown":"0.15.0","vitest":"3.2.4","lefthook":"^1.12.4","prettier":"^3.6.2","typescript":"^5.9.2","@types/node":"^24.3.1","@actions/core":"^1.11.1","@actions/exec":"^1.1.1","@octokit/types":"^14.1.0","@actions/github":"^6.0.1","@commitlint/cli":"^19.8.1","@haltcase/style":"^7.3.1","semantic-release":"^24.2.8","@commitlint/types":"^19.8.1","@types/wordwrapjs":"^5.1.2","eslint-plugin-oxlint":"^1.14.0","@arethetypeswrong/core":"^0.18.2","@typescript/native-preview":"7.0.0-dev.20250910.1","@commitlint/config-conventional":"^19.8.1"},"_npmOperationalInternal":{"tmp":"tmp/tablemark_4.0.0_1757645499529_0.8716085245394352","host":"s3://npm-registry-packages-npm-production"}},"4.1.0-canary.1":{"name":"tablemark","version":"4.1.0-canary.1","keywords":["markdown","table","tables","json","convert","generate","ghfm","tableify","typescript"],"author":{"url":"https://github.com/haltcase","name":"Bo Lingen","email":"bo@haltcase.dev"},"license":"MIT","_id":"tablemark@4.1.0-canary.1","maintainers":[{"name":"citycide","email":"lingenbw@gmail.com"},{"name":"haltcase","email":"bo@lingen.life"}],"homepage":"https://github.com/haltcase/tablemark","bugs":{"url":"https://github.com/haltcase/tablemark/issues"},"dist":{"shasum":"f6768c1cf2a09a7960f228c7bc203b2fc35d7486","tarball":"https://registry.npmjs.org/tablemark/-/tablemark-4.1.0-canary.1.tgz","fileCount":5,"integrity":"sha512-YZgWRt3g4BGg3vJ+4dus8LKJ9Vp/y4qJyfKymYnoR1zY+/IzteyJ9vh3FkpQx1SSMNevQlbFTK1KRNGJLk5faA==","signatures":[{"sig":"MEUCIQC+BiOJLPqKiJGzn2CaoxzCe3uFmydKSzAwFRYl+uyO0gIgeiFX78PVrfXzeph8qnaV/LJ1uiSXzGTlVUCnwEn/g04=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46260},"type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"32ce0db8a2a5989a8454f56f523c7fe9f9a48396","scripts":{"test":"vitest","build":"tsdown","format":"oxlint --fix && eslint --fix src tests && prettier --write src tests","eslint:check":"eslint src tests","oxlint:check":"oxlint","prepublishOnly":"vitest --run && pnpm build","prettier:check":"prettier --check src tests","typescript:check":"tsgo"},"_npmUser":{"name":"haltcase","email":"bo@lingen.life"},"prettier":"@haltcase/style/prettier","devEngines":{"runtime":{"name":"node","onFail":"error","version":">=20"}},"repository":{"url":"git+https://github.com/haltcase/tablemark.git","type":"git"},"_npmVersion":"10.8.2","description":"Generate markdown tables from a list of objects or JSON data.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"wrap-ansi":"^9.0.2","ansi-regex":"^6.2.2","wordwrapjs":"^5.1.0","change-case":"^5.4.4","string-width":"^8.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.15.1","readmeFilename":"README.md","devDependencies":{"eslint":"^9.35.0","oxlint":"^1.14.0","tsdown":"0.15.0","vitest":"3.2.4","lefthook":"^1.12.4","prettier":"^3.6.2","typescript":"^5.9.2","@types/node":"^24.3.1","@actions/core":"^1.11.1","@actions/exec":"^1.1.1","@octokit/types":"^14.1.0","@actions/github":"^6.0.1","@commitlint/cli":"^19.8.1","@haltcase/style":"^7.3.1","semantic-release":"^24.2.8","@commitlint/types":"^19.8.1","@types/wordwrapjs":"^5.1.2","eslint-plugin-oxlint":"^1.14.0","@arethetypeswrong/core":"^0.18.2","@typescript/native-preview":"7.0.0-dev.20250910.1","@commitlint/config-conventional":"^19.8.1"},"_npmOperationalInternal":{"tmp":"tmp/tablemark_4.1.0-canary.1_1757727797947_0.3007599245152466","host":"s3://npm-registry-packages-npm-production"}},"4.1.0-canary.2":{"name":"tablemark","version":"4.1.0-canary.2","keywords":["markdown","table","tables","json","convert","generate","ghfm","tableify","typescript"],"author":{"url":"https://github.com/haltcase","name":"Bo Lingen","email":"bo@haltcase.dev"},"license":"MIT","_id":"tablemark@4.1.0-canary.2","maintainers":[{"name":"citycide","email":"lingenbw@gmail.com"},{"name":"haltcase","email":"bo@lingen.life"}],"homepage":"https://github.com/haltcase/tablemark","bugs":{"url":"https://github.com/haltcase/tablemark/issues"},"dist":{"shasum":"75fa1bde93a5dced92cec7de73977fc786d74990","tarball":"https://registry.npmjs.org/tablemark/-/tablemark-4.1.0-canary.2.tgz","fileCount":5,"integrity":"sha512-JrMrow9Qn1NrG8AgjfwSX9lwEOpnXczPwDUAVBywW3cg5zThpYYh/0e9446OItT12sSyq/tKlrMX6JOFOIV+rg==","signatures":[{"sig":"MEYCIQC49NvNXpJq8tnD2fNupDNok2LN07ibFhe8xum9WjZf1AIhANn0o0+D1plrY+FDAoYlJtJ+xIlV9HiviY0U//3dsgyb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46528},"type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"89109836c678552fdf52e856a90e232d56464d25","scripts":{"test":"vitest","build":"tsdown","format":"oxlint --fix && eslint --fix src tests && prettier --write src tests","eslint:check":"eslint src tests","oxlint:check":"oxlint","prepublishOnly":"vitest --run && pnpm build","prettier:check":"prettier --check src tests","typescript:check":"tsgo"},"_npmUser":{"name":"haltcase","email":"bo@lingen.life"},"prettier":"@haltcase/style/prettier","devEngines":{"runtime":{"name":"node","onFail":"error","version":">=20"}},"repository":{"url":"git+https://github.com/haltcase/tablemark.git","type":"git"},"_npmVersion":"10.8.2","description":"Generate markdown tables from a list of objects or JSON data.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"wrap-ansi":"^9.0.2","ansi-regex":"^6.2.2","wordwrapjs":"^5.1.0","change-case":"^5.4.4","string-width":"^8.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.15.1","readmeFilename":"README.md","devDependencies":{"eslint":"^9.35.0","oxlint":"^1.14.0","tsdown":"0.15.0","vitest":"3.2.4","lefthook":"^1.12.4","prettier":"^3.6.2","typescript":"^5.9.2","@types/node":"^24.3.1","@actions/core":"^1.11.1","@actions/exec":"^1.1.1","@octokit/types":"^14.1.0","@actions/github":"^6.0.1","@commitlint/cli":"^19.8.1","@haltcase/style":"^7.3.1","semantic-release":"^24.2.8","@commitlint/types":"^19.8.1","@types/wordwrapjs":"^5.1.2","eslint-plugin-oxlint":"^1.14.0","@arethetypeswrong/core":"^0.18.2","@typescript/native-preview":"7.0.0-dev.20250910.1","@commitlint/config-conventional":"^19.8.1"},"_npmOperationalInternal":{"tmp":"tmp/tablemark_4.1.0-canary.2_1757728967024_0.9810416300748452","host":"s3://npm-registry-packages-npm-production"}},"4.1.0-canary.3":{"name":"tablemark","version":"4.1.0-canary.3","keywords":["markdown","table","tables","json","convert","generate","ghfm","tableify","typescript"],"author":{"url":"https://github.com/haltcase","name":"Bo Lingen","email":"bo@haltcase.dev"},"license":"MIT","_id":"tablemark@4.1.0-canary.3","maintainers":[{"name":"citycide","email":"lingenbw@gmail.com"},{"name":"haltcase","email":"bo@lingen.life"}],"homepage":"https://github.com/haltcase/tablemark","bugs":{"url":"https://github.com/haltcase/tablemark/issues"},"dist":{"shasum":"de691182a1954d1a7f185cbe37ae8973674e7710","tarball":"https://registry.npmjs.org/tablemark/-/tablemark-4.1.0-canary.3.tgz","fileCount":5,"integrity":"sha512-u1pVwm4pEP/pzQDM/uxLmC+bhANTWFJZtdQHY1P36DBRgY3sgEk5K7Oq4/Yaxge7eDTavKH0waPHzxXYiv59gQ==","signatures":[{"sig":"MEQCIAp9Bt/0WuOcXhQNpLOiMLVxCxkzmk11F7+s0mc5oLPqAiBGbr+AH1QH3ELTRlId7s56UtRB8WjEnHBrOH4BloyGZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46592},"type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"dc443eeb25cd57f2c7abaa8b41a06a83fd2801cb","scripts":{"test":"vitest","build":"tsdown","format":"oxlint --fix && eslint --fix src tests && prettier --write src tests","eslint:check":"eslint src tests","oxlint:check":"oxlint","prepublishOnly":"vitest --run && pnpm build","prettier:check":"prettier --check src tests","typescript:check":"tsgo"},"_npmUser":{"name":"haltcase","email":"bo@lingen.life"},"prettier":"@haltcase/style/prettier","devEngines":{"runtime":{"name":"node","onFail":"error","version":">=20"}},"repository":{"url":"git+https://github.com/haltcase/tablemark.git","type":"git"},"_npmVersion":"10.8.2","description":"Generate markdown tables from a list of objects or JSON data.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"wrap-ansi":"^9.0.2","ansi-regex":"^6.2.2","wordwrapjs":"^5.1.0","change-case":"^5.4.4","string-width":"^8.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.15.1","readmeFilename":"README.md","devDependencies":{"eslint":"^9.35.0","oxlint":"^1.14.0","tsdown":"0.15.0","vitest":"3.2.4","lefthook":"^1.12.4","prettier":"^3.6.2","typescript":"^5.9.2","@types/node":"^24.3.1","@actions/core":"^1.11.1","@actions/exec":"^1.1.1","@octokit/types":"^14.1.0","@actions/github":"^6.0.1","@commitlint/cli":"^19.8.1","@haltcase/style":"^7.3.1","semantic-release":"^24.2.8","@commitlint/types":"^19.8.1","@types/wordwrapjs":"^5.1.2","eslint-plugin-oxlint":"^1.14.0","@arethetypeswrong/core":"^0.18.2","@typescript/native-preview":"7.0.0-dev.20250910.1","@commitlint/config-conventional":"^19.8.1"},"_npmOperationalInternal":{"tmp":"tmp/tablemark_4.1.0-canary.3_1758252407840_0.7077178423724271","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"tablemark","version":"4.1.0","keywords":["markdown","table","tables","json","convert","generate","ghfm","tableify","typescript"],"author":{"url":"https://github.com/haltcase","name":"Bo Lingen","email":"bo@haltcase.dev"},"license":"MIT","_id":"tablemark@4.1.0","maintainers":[{"name":"citycide","email":"lingenbw@gmail.com"},{"name":"haltcase","email":"bo@lingen.life"}],"homepage":"https://github.com/haltcase/tablemark","bugs":{"url":"https://github.com/haltcase/tablemark/issues"},"dist":{"shasum":"95d73cabb5ac7f81115aba657974159ff1c3fa9d","tarball":"https://registry.npmjs.org/tablemark/-/tablemark-4.1.0.tgz","fileCount":5,"integrity":"sha512-B3LDjbDo+ac+D5RwkBOPZZ6ua8716KdT+6NO3DKOCHJq0ezE6vV2r92rjrC1ci2H+ocuysl5ytf1T0QqV65yoA==","signatures":[{"sig":"MEUCIQDQEXjfYnSWWloBzG+T/xglg39Zl4ZBR2CAVx0pCtu/LwIgfFuLWCTfCaMNYXri6kL9wdqxOF+mpu0kXVRyfl+idE4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46583},"type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"dc443eeb25cd57f2c7abaa8b41a06a83fd2801cb","scripts":{"test":"vitest","build":"tsdown","format":"oxlint --fix && eslint --fix src tests && prettier --write src tests","eslint:check":"eslint src tests","oxlint:check":"oxlint","prepublishOnly":"vitest --run && pnpm build","prettier:check":"prettier --check src tests","typescript:check":"tsgo"},"_npmUser":{"name":"haltcase","email":"bo@lingen.life"},"prettier":"@haltcase/style/prettier","devEngines":{"runtime":{"name":"node","onFail":"error","version":">=20"}},"repository":{"url":"git+https://github.com/haltcase/tablemark.git","type":"git"},"_npmVersion":"10.8.2","description":"Generate markdown tables from a list of objects or JSON data.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"wrap-ansi":"^9.0.2","ansi-regex":"^6.2.2","wordwrapjs":"^5.1.0","change-case":"^5.4.4","string-width":"^8.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.15.1","devDependencies":{"eslint":"^9.35.0","oxlint":"^1.14.0","tsdown":"0.15.0","vitest":"3.2.4","lefthook":"^1.12.4","prettier":"^3.6.2","typescript":"^5.9.2","@types/node":"^24.3.1","@actions/core":"^1.11.1","@actions/exec":"^1.1.1","@octokit/types":"^14.1.0","@actions/github":"^6.0.1","@commitlint/cli":"^19.8.1","@haltcase/style":"^7.3.1","semantic-release":"^24.2.8","@commitlint/types":"^19.8.1","@types/wordwrapjs":"^5.1.2","eslint-plugin-oxlint":"^1.14.0","@arethetypeswrong/core":"^0.18.2","@typescript/native-preview":"7.0.0-dev.20250910.1","@commitlint/config-conventional":"^19.8.1"},"_npmOperationalInternal":{"tmp":"tmp/tablemark_4.1.0_1758254795897_0.011567241023338726","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2017-01-22T20:39:34.224Z","modified":"2025-10-11T15:14:33.786Z","1.0.0-alpha.1":"2017-01-22T20:39:34.224Z","1.0.0-alpha.2":"2017-01-22T20:59:58.756Z","1.0.0":"2017-07-08T05:52:59.566Z","1.1.0":"2017-09-14T00:12:56.157Z","1.2.0":"2018-01-14T09:38:09.944Z","2.0.0":"2019-07-25T23:56:18.352Z","3.0.0":"2021-10-26T03:20:07.528Z","3.1.0":"2024-04-02T02:06:19.436Z","4.0.0-beta.1":"2025-08-29T02:22:09.634Z","4.0.0-beta.2":"2025-08-29T02:31:06.593Z","4.0.0-canary.1":"2025-09-11T03:55:47.423Z","4.0.0":"2025-09-12T02:51:39.721Z","4.1.0-canary.1":"2025-09-13T01:43:18.141Z","4.1.0-canary.2":"2025-09-13T02:02:47.226Z","4.1.0-canary.3":"2025-09-19T03:26:48.016Z","4.1.0":"2025-09-19T04:06:36.083Z"},"bugs":{"url":"https://github.com/haltcase/tablemark/issues"},"author":{"url":"https://github.com/haltcase","name":"Bo Lingen","email":"bo@haltcase.dev"},"license":"MIT","homepage":"https://github.com/haltcase/tablemark","keywords":["markdown","table","tables","json","convert","generate","ghfm","tableify","typescript"],"repository":{"url":"git+https://github.com/haltcase/tablemark.git","type":"git"},"description":"Generate markdown tables from a list of objects or JSON data.","maintainers":[{"email":"bo@lingen.life","name":"haltcase"}],"readme":"# tablemark &middot; [![npm version](https://img.shields.io/npm/v/tablemark?style=flat-square)](https://www.npmjs.com/package/tablemark) [![license](https://img.shields.io/npm/l/tablemark?style=flat-square)](https://www.npmjs.com/package/tablemark) [![TypeScript](https://img.shields.io/badge/written%20in-TypeScript-294E80?style=flat-square&logo=TypeScript)](http://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html) ![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/haltcase/tablemark/test.yml?style=flat-square)\n\n> Generate markdown tables from JSON data.\n\nRender arrays of objects as markdown tables, with configurable fancy output.\n\n- Rename table headers and transform cell content\n- Align columns to the left, center, or right (all columns or per column)\n- Customize text casing for column headers (using [`change-case`])\n- Auto-detect and handle [ANSI styles and Unicode characters](#optionstexthandlingstrategy)\n- Wrap or truncate long cell contents or strip line breaks\n\n## Installation\n\n```shell\npnpm add tablemark\n\n# or\nnpm install tablemark\n\n# or\nyarn add tablemark\n\n# or\nbun add tablemark\n```\n\n## Usage\n\n```js\nimport { tablemark } from \"tablemark\";\n```\n\n```js\ntablemark([\n\t{ name: \"Bob\", age: 21, isCool: false },\n\t{ name: \"Sarah\", age: 22, isCool: true },\n\t{ name: \"Lee\", age: 23, isCool: true }\n]);\n\n// | Name  | Age   | Is cool |\n// | :---- | :---- | :------ |\n// | Bob   | 21    | false   |\n// | Sarah | 22    | true    |\n// | Lee   | 23    | true    |\n```\n\n... displays as:\n\n<!-- prettier-ignore-start -->\n| Name  | Age   | Is cool |\n| :---- | :---- | :------ |\n| Bob   | 21    | false   |\n| Sarah | 22    | true    |\n| Lee   | 23    | true    |\n<!-- prettier-ignore-end -->\n\n## API\n\n```ts\ntablemark (input: InputData, options?: TablemarkOptions): string\n```\n\n> **Arguments**\n\n- `InputData` input: the data to table-ify as an array or iterable of objects\n  - Note that nested objects are not supported. Use\n    [`options.toCellText`](#optionstocelltext) to customize how nested objects\n    and other non-string values are output.\n\n- `TablemarkOptions` options:\n\n  |           key            |                     type                     |     default      | description                                                                                        |\n  | :----------------------: | :------------------------------------------: | :--------------: | -------------------------------------------------------------------------------------------------- |\n  |         `align`          |       `\"left\" \\| \"center\" \\| \"right\"`        |     `\"left\"`     | Horizontal alignment to use for all columns.                                                       |\n  |        `columns`         |     `Array<string \\| ColumnDescriptor>`      |        -         | Array of [column descriptors](#optionscolumns).                                                    |\n  |  `countAnsiEscapeCodes`  |                  `boolean`                   |     `false`      | Whether to count ANSI escape codes when calculating string width.                                  |\n  |       `headerCase`       |             `\"preserve\" \\| ...`              | `\"sentenceCase\"` | Casing to use for headers derived from input object keys ([read more](#optionsheadercase)).        |\n  |   `lineBreakStrategy`    |    `\"preserve\" \\| \"strip\" \\| \"truncate\"`     |   `\"preserve\"`   | What to do when cell content contains line breaks.                                                 |\n  |       `lineEnding`       |                   `string`                   |      `\"\\n\"`      | String used at end-of-line.                                                                        |\n  |        `maxWidth`        |                   `number`                   |    `Infinity`    | Wrap cell text at this length.                                                                     |\n  |    `overflowStrategy`    | `\"wrap\" \\| \"truncateStart\" \\| \"truncateEnd\"` |     `\"wrap\"`     | How to handle overflowing text in cells.                                                           |\n  | `overflowHeaderStrategy` | `\"wrap\" \\| \"truncateStart\" \\| \"truncateEnd\"` |     `\"wrap\"`     | How to handle overflowing text in header cells.                                                    |\n  |   `padHeaderSeparator`   |                  `boolean`                   |      `true`      | Whether to pad gutters of the header separator (alignment) row.                                    |\n  |       `toCellText`       |         `({ key, value }) => string`         |        -         | Provide a custom cell value transform function.                                                    |\n  |     `toHeaderTitle`      |         `({ key, title }) => string`         |        -         | Provide a custom header title transform function.                                                  |\n  |   `unknownKeyStrategy`   |            `\"ignore\" \\| \"throw\"`             |    `\"ignore\"`    | How to handle unknown keys found in objects.                                                       |\n  |  `textHandlingStrategy`  |      `\"auto\" \\| \"advanced\"` \\| `basic`       |     `\"auto\"`     | Control support for ANSI styles or Unicode characters ([read more](#optionstexthandlingstrategy)). |\n  |    `wrapWithGutters`     |                  `boolean`                   |     `false`      | Add sides (`\\| <content> \\|`) to wrapped rows.                                                     |\n\n> **Returns**\n\n`string`: the resulting markdown formatted table\n\nIf `input` is an empty array, an empty string is returned.\n\n> **Throws**\n\n`TypeError`: when `input` is not iterable (e.g., an array)<br />\n`TypeError`: when an unknown column alignment option is provided<br />\n`RangeError`: when `config.unknownKeyStrategy === \"throw\"` and an unknown key in an object is encountered\n\n> [!NOTE]\n> The keys of the first encountered object are used for the table's headers.\n> By default, any other keys from successive objects will be ignored,\n> excluding those columns from the table. You can customize this behavior to\n> make this raise an error by using `config.unknownKeyStrategy`.\n\n### `options.align`\n\nSet the horizontal alignment for all columns. Accepts `\"left\"`, `\"center\"`, or `\"right\"`.\n\n```js\ntablemark(\n\t[\n\t\t{ name: \"Bob\", age: 21 },\n\t\t{ name: \"Sarah\", age: 22 }\n\t],\n\t{ align: \"center\" }\n);\n\n// | Name  | Age |\n// | :---: | :-: |\n// | Bob   | 21  |\n// | Sarah | 22  |\n```\n\n### `options.columns`\n\nDescribe the columns of the table. Each column can be a simple string to rename the column or an object with properties to further customize the column's behavior. The following properties are available and will override behavior specified elsewhere in `options`:\n\n- `name`: Name of the column used as the title in the header row.\n- `align`: Horizontal alignment of the column content.\n- `maxWidth`: Maximum content width of this column.\n- `overflowHeaderStrategy`: How to handle overflowing text in header cells. Defaults to `\"wrap\"`.\n- `overflowStrategy`: How to handle overflowing text in this column. Defaults to the root `overflowStrategy`.\n- `textHandlingStrategy`: How to handle text in this column. Defaults to the root `textHandlingStrategy`.\n- `width`: Fixed display width for the column, overriding both the root- and column-level `maxWidth` setting.\n\n```js\ntablemark(\n\t[\n\t\t{ name: \"Bob\", age: 21, isCool: false },\n\t\t{ name: \"Sarah\", age: 22, isCool: true },\n\t\t{ name: \"Lee\", age: 23, isCool: true }\n\t],\n\t{\n\t\tcolumns: [\n\t\t\t\"first name\",\n\t\t\t{ name: \"how old\", align: \"center\" },\n\t\t\t\"are they cool\"\n\t\t]\n\t}\n);\n\n// | first name | how old | are they cool |\n// | :--------- | :-----: | :------------ |\n// | Bob        |   21    | false         |\n// | Sarah      |   22    | true          |\n// | Lee        |   23    | true          |\n```\n\n... displays as:\n\n<!-- prettier-ignore-start -->\n| first name | how old | are they cool |\n| :--------- | :-----: | :------------ |\n| Bob        |   21    | false         |\n| Sarah      |   22    | true          |\n| Lee        |   23    | true          |\n<!-- prettier-ignore-end -->\n\n### `options.countAnsiEscapeCodes`\n\nControl whether to count ANSI escape codes when calculating string width. The default is `false`, meaning ANSI codes are ignored. Setting this to `true` is useful when the output is not intended for a terminal, such as when generating a markdown table for an example in a README file.\n\n```ts\nconst data = [\n\t{ text: \"\\u001B[31mRed\\u001B[0m\", note: \"Normal text\" },\n\t{ text: \"\\u001B[32mGreen\\u001B[0m\", note: \"More text\" }\n];\n\ntablemark(data, { countAnsiEscapeCodes: false });\n\n// | Text  | Note        |\n// | :---- | :---------- |\n// | \u001b[31mRed\u001b[0m   | Normal text |\n// | \u001b[32mGreen\u001b[0m | More text   |\n\ntablemark(data, { countAnsiEscapeCodes: true });\n\n// | Text           | Note        |\n// | :------------- | :---------- |\n// | \u001b[31mRed\u001b[0m   | Normal text |\n// | \u001b[32mGreen\u001b[0m | More text   |\n```\n\n### `options.headerCase`\n\nControl the casing of headers derived from input object keys. The default is `\"sentenceCase\"`. The options are:\n\n- `\"preserve\"`: Keep the original case\n- `\"camelCase\"`: Example: twoWords\n- `\"capitalCase\"`: Example: Two Words\n- `\"constantCase\"`: Example: TWO_WORDS\n- `\"dotCase\"`: Example: two.words\n- `\"kebabCase\"`: Example: two-words\n- `\"noCase\"`: Example: two words\n- `\"pascalCase\"`: Example: TwoWords\n- `\"pascalSnakeCase\"`: Example: Two_Words\n- `\"pathCase\"`: Example: two/words\n- `\"sentenceCase\"`: Example: Two words\n- `\"snakeCase\"`: Example: two_words\n- `\"trainCase\"`: Example: Two-Words\n\n```js\ntablemark([{ first_name: \"Bob\", last_name: \"Smith\" }], {\n\theaderCase: \"constantCase\"\n});\n\n// | FIRST_NAME | LAST_NAME |\n// | :--------- | :-------- |\n// | Bob        | Smith     |\n```\n\n### `options.lineBreakStrategy`\n\nSpecify how to handle line breaks in cell content. The options are:\n\n- `\"preserve\"` (default): Keep line breaks\n- `\"strip\"`: Replace line breaks with spaces\n- `\"truncate\"`: Trim content at the first line break\n\n```js\ntablemark([{ note: \"Line 1\\nLine 2\" }], { lineBreakStrategy: \"strip\" });\n\n// | Note          |\n// | :------------ |\n// | Line 1 Line 2 |\n```\n\n### `options.lineEnding`\n\nSet the string used at the end of each line. The default is `\\n` (linefeed).\n\n```js\ntablemark([{ name: \"Bob\" }], { lineEnding: \"\\r\\n\" });\n```\n\n### `options.maxWidth`\n\nSet `options.maxWidth` to wrap any content at that length onto a new\nadjacent line:\n\n```js\ntablemark(\n\t[\n\t\t{ star: false, name: \"Benjamin\" },\n\t\t{ star: true, name: \"Jet Li\" }\n\t],\n\t{ maxWidth: 5 }\n);\n\n// | Star  | Name  |\n// | :---- | :---- |\n// | false | Benja |\n//           min\n// | true  | Jet   |\n//           Li\n```\n\n> [!NOTE]\n> To output valid [GitHub Flavored Markdown](https://github.github.com/gfm/) a\n> cell must not contain newlines. Consider replacing those with `<br />` (e.g.,\n> using `options.toCellText`).\n\n### `options.overflowHeaderStrategy`\n\nControl how overflowing text in header cells is handled. The options are the same as `overflowStrategy`. The default is `\"wrap\"`.\n\n### `options.overflowStrategy`\n\nControl how overflowing text in cells is handled. The options are:\n\n- `\"wrap\"`: Wrap text to a new line\n- `\"truncateStart\"`: Trim overflowing content at the start and replace with `…`\n- `\"truncateEnd\"` (default): Trim overflowing content at the end and replace with `…`\n\n```js\ntablemark([{ desc: \"This is a long description\" }], {\n\tmaxWidth: 17,\n\toverflowStrategy: \"truncateStart\"\n});\n\n// | Desc              |\n// | :---------------- |\n// | …long description |\n```\n\n### `options.padHeaderSeparator`\n\nExclude padding around the header's dividing lines (which some formatters prefer).\n\n```js\ntablemark(\n\t[\n\t\t{ name: \"Bob\", age: 21, isCool: false },\n\t\t{ name: \"Sarah\", age: 22, isCool: true },\n\t\t{ name: \"Lee\", age: 23, isCool: true }\n\t],\n\t{\n\t\tcolumns: [{ align: \"left\" }, { align: \"center\" }, { align: \"right\" }]\n\t}\n);\n\n// | first name | how old | are they cool |\n// |:-----------|:-------:|--------------:|\n// | Bob        |   21    | false         |\n// | Sarah      |   22    | true          |\n// | Lee        |   23    | true          |\n```\n\n... displays as:\n\n<!-- prettier-ignore-start -->\n| first name | how old | are they cool |\n|:-----------|:-------:|--------------:|\n| Bob        |   21    | false         |\n| Sarah      |   22    | true          |\n| Lee        |   23    | true          |\n<!-- prettier-ignore-end -->\n\n### `options.textHandlingStrategy`\n\nBy default, tablemark attempts to detect and handle text containing characters\nlike emoji, [halfwidth and\nfullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms)\ncharacters, and ANSI escape codes (like terminal colors and styles).\n\nOther options, which are only recommended for very specific use cases, are:\n\n- `\"auto\"` (default): Automatically determine the best text handling strategy\n  based on the input data. This is the recommended option for most use cases.\n- `\"basic\"`: Faster, but lacks support for properly wrapping text containing\n  certain emojis, halfwidth and fullwidth characters, and ANSI styles.\n- `\"advanced\"`: Forces proper handling of emoji, halfwidth and fullwidth\n  characters, and ANSI styles, but is slow for large datasets.\n\nTo illustrate the difference, notice how the first example below doesn't\naccurately align the `|` characters of the row containing the CJK and doesn't\napply the ANSI styles correctly while the second example does.\n\n```js\ntablemark(\n\t[\n\t\t{\n\t\t\tname: \"\\u001B[4mThis text, containing emoji 👨‍👩‍👧‍👦, ANSI styles and CJK 古, will not wrap or style properly\\u001B[0m\"\n\t\t}\n\t],\n\t{\n\t\ttextHandlingStrategy: \"basic\",\n\t\tmaxWidth: 17,\n\t\twrapWithGutters: true\n\t}\n);\n\n// | Name              |\n// | :---------------- |\n// | This text,        |\n// | containing emoji  |\n// | 👨‍👩‍👧‍👦, ANSI          |\n// | styles and CJK    |\n// | 古, will not align |\n// | or style          |\n// | properly          |\n\ntablemark(\n\t[\n\t\t{\n\t\t\tname: \"\\u001B[4mThis text, containing emoji 👨‍👩‍👧‍👦, ANSI styles and CJK 古, will wrap and style properly\\u001B[0m\"\n\t\t}\n\t],\n\t{\n\t\t// Note that this the default value and can be omitted\n\t\ttextHandlingStrategy: \"auto\", // or \"advanced\"\n\t\tmaxWidth: 17,\n\t\twrapWithGutters: true\n\t}\n);\n\n// | Name              |\n// | :---------------- |\n// | This text,        |\n// | containing emoji  |\n// | 👨‍👩‍👧‍👦, ANSI styles   |\n// | and CJK 古, will  |\n// | align and style   |\n// | properly          |\n```\n\n![Screenshot of the terminal output of the above demonstrating the difference between basic and advanced text handling strategies](.media/textHandlingStrategy-basic-vs-advanced.png)\n\n### `options.toCellText`\n\nTransform the contents of a body cell. This function is called with an object\ncontaining the `key` of the column and the `value` of the cell and should\nreturn a `string` to be used as the cell's content.\n\n```js\nconst toCellText = ({ key, value }) => {\n\tif (value === true) {\n\t\treturn \"✔\";\n\t}\n\n\tif (!value) {\n\t\tif (key === \"studying\") {\n\t\t\treturn \"X\";\n\t\t}\n\n\t\treturn \"\";\n\t}\n\n\treturn value;\n};\n\ntablemark(\n\t[\n\t\t{ name: \"Bob\", pet_owner: true, studying: false },\n\t\t{ name: \"Sarah\", pet_owner: false, studying: true },\n\t\t{ name: \"Sarah\", pet_owner: true, studying: true }\n\t],\n\t{\n\t\ttoCellText,\n\t\tcolumns: [{ align: \"left\" }, { align: \"center\" }, { align: \"center\" }]\n\t}\n);\n\n// | Name  | Pet owner | Studying |\n// | :---- | :-------: | :------: |\n// | Bob   |     ✔︎     |    X     |\n// | Sarah |           |    ✔     |\n// | Lee   |     ✔     |    ✔     |\n```\n\n#### TypeScript object key inference\n\nIf you define your `toCellText` function directly within the `tablemark`\nfunction call as shown above, the type of the `key` property may be\nautomatically constrained to the keys of your input (if known).\n\n```ts\ntablemark([{ name: \"Bob\", role: \"Admin\" }], {\n\ttoCellText: ({ key, value }) => {\n\t\t// `key` is of type `name | role`\n\t\treturn value;\n\t}\n});\n```\n\nIf you want to extract that definition elsewhere, use tablemark's\n`ToCellText` type, and combine it with the `GetDataKeys` helper type\nfor strong typing.\n\n```ts\nimport { tablemark, type ToCellText, type GetDataKeys } from \"tablemark\";\n\nconst data = [{ name: \"Bob\", role: \"Admin\" }] as const;\n\nconst toCellText: ToCellText<GetDataKeys<typeof data>> = ({ key, value }) => {\n\t// `key` is of type `name | role`\n\treturn value;\n};\n\ntablemark(data, {\n\ttoCellText\n});\n```\n\n### `options.toHeaderTitle`\n\nTransform your header titles. This function is called with an object containing\nthe `key` of the column and the `title` of the header cell and should return a\n`string` to be used as the header cell's content.\n\nThis transformation is applied _after_ `headerCase`, so this function will be\ncalled with both the original object key as well as the cased title.\n\n```js\nconst toHeaderTitle = ({ key, title }) => {\n\tif (key === \"name\") {\n\t\t// Output the title with bold styling, e.g., for command line display\n\t\t// (you could use a package like `chalk` to do this)\n\t\treturn `\\u001B[1m${title}\\u001B[0m`;\n\t}\n\n\treturn title;\n};\n\ntablemark(\n\t[\n\t\t{ name: \"Bob\", pet_owner: true, studying: false },\n\t\t{ name: \"Sarah\", pet_owner: false, studying: true },\n\t\t{ name: \"Kisha\", pet_owner: true, studying: true }\n\t],\n\t{\n\t\ttoHeaderTitle,\n\t\tcolumns: [{ align: \"left\" }, { align: \"center\" }, { align: \"center\" }]\n\t}\n);\n```\n\n#### TypeScript object key inference\n\nIf you define your `toHeaderTitle` function directly within the `tablemark`\nfunction call as shown above, the type of the `key` property can be\nautomatically constrained to the keys of your input (if known).\n\n```ts\ntablemark([{ name: \"Bob\", role: \"Admin\" }], {\n\ttoHeaderTitle: ({ key, title }) => {\n\t\t// `key` is of type `name | role`\n\t\treturn title;\n\t}\n});\n```\n\nIf you want to extract that definition elsewhere, use tablemark's\n`ToHeaderTitle` type, and combine it with the `GetDataKeys` helper type for\nstrong typing.\n\n```ts\nimport { tablemark, type ToHeaderTitle, type GetDataKeys } from \"tablemark\";\n\nconst data = [{ name: \"Bob\", role: \"Admin\" }] as const;\n\nconst toHeaderTitle: ToHeaderTitle<GetDataKeys<typeof data>> = ({\n\tkey,\n\ttitle\n}) => {\n\t// `key` is of type `name | role`\n\treturn title;\n};\n\ntablemark(data, {\n\ttoHeaderTitle\n});\n```\n\n### `options.unknownKeyStrategy`\n\nControl how unknown keys in objects are handled:\n\n- `\"ignore\"` (default): ignore unknown keys\n- `\"throw\"`: throw an error if an unknown key is found\n\n```js\ntablemark(\n\t[\n\t\t{ a: 1 },\n\t\t{ a: 2, b: 3 } // 'b' is unknown\n\t],\n\t{ unknownKeyStrategy: \"throw\" }\n);\n// Throws `RangeError`\n```\n\n### `options.wrapWithGutters`\n\nEnable `wrapWithGutters` to add pipes on all lines:\n\n```js\ntablemark(\n\t[\n\t\t{ star: false, name: \"Benjamin\" },\n\t\t{ star: true, name: \"Jet Li\" }\n\t],\n\t{ maxWidth: 5, wrapWithGutters: true }\n);\n\n// | Star  | Name  |\n// | :---- | :---- |\n// | false | Benja |\n// |       | min   |\n// | true  | Jet   |\n// |       | Li    |\n```\n\n## See also\n\n- [`tablemark-cli`](https://github.com/haltcase/tablemark-cli) &ndash; use this module from the command line\n\nAnd several tools that power tablemark:\n\n- [`ansi-regex`] &ndash; regular expression for matching ANSI escape codes\n- [`change-case`] &ndash; convert strings between camelCase, PascalCase, Capital Case, snake_case and more\n- [`string-width`] &ndash; get the visual width of a string - the number of columns required to display it\n- [`wrap-ansi`] &ndash; wordwrap a string with ANSI escape codes\n\n## Contributing\n\nSearch the [issues](https://github.com/haltcase/tablemark/issues) if you come\nacross any trouble, open a new one if it hasn't been posted, or, if you're\nable, open a [pull request](https://help.github.com/articles/about-pull-requests/).\nContributions of any kind are welcome in this project.\n\nThe following people have already contributed their time and effort:\n\n- Thomas Jensen (**[@tjconcept](https://github.com/tjconcept)**)\n\nThank you!\n\n## License\n\nMIT © Bo Lingen / haltcase\n\n[`ansi-regex`]: https://github.com/chalk/ansi-regex\n[`change-case`]: https://github.com/blakeembrey/change-case\n[`string-width`]: https://github.com/sindresorhus/string-width\n[`wrap-ansi`]: https://github.com/chalk/wrap-ansi\n","readmeFilename":"README.md"}