{"_id":"@tauri-apps/toml","_rev":"3211637","name":"@tauri-apps/toml","description":"Better TOML parsing and stringifying all in that familiar JSON interface.","dist-tags":{"latest":"2.2.4"},"maintainers":[{"name":"beanow","email":""},{"name":"lucasfernog","email":""},{"name":"nklayman","email":""},{"name":"nothingismagick","email":"daniel@kinokabaret.com"},{"name":"tauri-apps-ci-user","email":""}],"time":{"modified":"2024-02-22T02:17:56.000Z","created":"2019-11-30T13:15:09.785Z","2.2.4":"2019-12-15T20:14:59.131Z","2.2.3":"2019-11-30T13:15:09.785Z"},"users":{},"author":{"name":"Rebecca Turner","email":"me@re-becca.org","url":"http://re-becca.org/"},"repository":{"type":"git","url":"git+https://github.com/tauri-apps/tauri-toml.git"},"versions":{"2.2.4":{"name":"@tauri-apps/toml","version":"2.2.4","main":"toml.js","funding":{"type":"opencollective","url":"https://opencollective.com/tauri"},"publishConfig":{"access":"public"},"scripts":{"test":"tap -J --100 test/*.js test/toml-stream/*.js","benchmark":"node benchmark.js && node benchmark-per-file.js && node results2table.js","prerelease":"npm t","prepack":"rm -f *~","postpublish":"git push --follow-tags","pretest":"iarna-standard","update-coc":"weallbehave -o . && git add CODE_OF_CONDUCT.md && git commit -m 'docs(coc): updated CODE_OF_CONDUCT.md'","update-contrib":"weallcontribute -o . && git add CONTRIBUTING.md && git commit -m 'docs(contributing): updated CONTRIBUTING.md'","setup-burntsushi-toml-suite":"[ -d test/burntsushi-toml-test ] || (git clone https://github.com/BurntSushi/toml-test test/burntsushi-toml-test; rimraf test/burntsushi-toml-test/.git/hooks/*); cd test/burntsushi-toml-test; git pull","setup-iarna-toml-suite":"[ -d test/spec-test ] || (git clone https://github.com/iarna/toml-spec-tests -b 0.5.0 test/spec-test; rimraf test/spec-test/.git/hooks/*); cd test/spec-test; git pull","prepare":"npm run setup-burntsushi-toml-suite && npm run setup-iarna-toml-suite"},"keywords":["toml","toml-parser","toml-stringifier","parser","stringifer","emitter","ini","tomlify","encoder","decoder"],"author":{"name":"Rebecca Turner","email":"me@re-becca.org","url":"http://re-becca.org/"},"license":"ISC","description":"Better TOML parsing and stringifying all in that familiar JSON interface.","dependencies":{},"devDependencies":{"@iarna/standard":"^2.0.1","@ltd/j-toml":"^0.5.47","@perl/qx":"^1.0.2","@sgarciac/bombadil":"^2.1.0","ansi":"^0.3.1","approximate-number":"^2.0.0","benchmark":"^2.1.4","funstream":"^3.0.0","glob":"^7.1.2","js-yaml":"^3.12.0","rimraf":"^2.6.2","tap":"^12.0.1","toml":"^3.0.0","toml-j0.4":"^1.1.1","weallbehave":"*","weallcontribute":"*"},"directories":{"test":"test"},"repository":{"type":"git","url":"git+https://github.com/tauri-apps/tauri-toml.git"},"bugs":{"url":"https://github.com/tauri-apps/tauri-toml/issues"},"homepage":"https://github.com/tauri-apps/tauri-toml#readme","gitHead":"21f7de789fc2775206d7bf8a80a967a06d74ee7b","_id":"@tauri-apps/toml@2.2.4","_nodeVersion":"10.17.0","_npmVersion":"6.11.3","dist":{"shasum":"2b4f637aded7fc3a7302724605682c8fa3ac7505","size":22848,"noattachment":false,"key":"/@tauri-apps/toml/-/@tauri-apps/toml-2.2.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/@tauri-apps/toml/download/@tauri-apps/toml-2.2.4.tgz"},"maintainers":[{"name":"beanow","email":""},{"name":"lucasfernog","email":""},{"name":"nklayman","email":""},{"name":"nothingismagick","email":"daniel@kinokabaret.com"},{"name":"tauri-apps-ci-user","email":""}],"_npmUser":{"name":"lucasfernog","email":"lucasfernandesnog@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/toml_2.2.4_1576440898997_0.46794896002897524"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-24T14:06:23.485Z","publish_time":1576440899131,"_cnpm_publish_time":1576440899131},"2.2.3":{"name":"@tauri-apps/toml","version":"2.2.3","main":"toml.js","funding":{"type":"opencollective","url":"https://opencollective.com/tauri"},"publishConfig":{"access":"public"},"scripts":{"test":"tap -J --100 test/*.js test/toml-stream/*.js","benchmark":"node benchmark.js && node benchmark-per-file.js && node results2table.js","prerelease":"npm t","prepack":"rm -f *~","postpublish":"git push --follow-tags","pretest":"iarna-standard","update-coc":"weallbehave -o . && git add CODE_OF_CONDUCT.md && git commit -m 'docs(coc): updated CODE_OF_CONDUCT.md'","update-contrib":"weallcontribute -o . && git add CONTRIBUTING.md && git commit -m 'docs(contributing): updated CONTRIBUTING.md'","setup-burntsushi-toml-suite":"[ -d test/burntsushi-toml-test ] || (git clone https://github.com/BurntSushi/toml-test test/burntsushi-toml-test; rimraf test/burntsushi-toml-test/.git/hooks/*); cd test/burntsushi-toml-test; git pull","setup-iarna-toml-suite":"[ -d test/spec-test ] || (git clone https://github.com/iarna/toml-spec-tests -b 0.5.0 test/spec-test; rimraf test/spec-test/.git/hooks/*); cd test/spec-test; git pull","prepare":"npm run setup-burntsushi-toml-suite && npm run setup-iarna-toml-suite"},"keywords":["toml","toml-parser","toml-stringifier","parser","stringifer","emitter","ini","tomlify","encoder","decoder"],"author":{"name":"Rebecca Turner","email":"me@re-becca.org","url":"http://re-becca.org/"},"license":"ISC","description":"Better TOML parsing and stringifying all in that familiar JSON interface.","dependencies":{},"devDependencies":{"@iarna/standard":"^2.0.1","@ltd/j-toml":"^0.5.47","@perl/qx":"^1.0.2","@sgarciac/bombadil":"^2.1.0","ansi":"^0.3.1","approximate-number":"^2.0.0","benchmark":"^2.1.4","funstream":"^3.0.0","glob":"^7.1.2","js-yaml":"^3.12.0","rimraf":"^2.6.2","tap":"^12.0.1","toml":"^3.0.0","toml-j0.4":"^1.1.1","weallbehave":"*","weallcontribute":"*"},"directories":{"test":"test"},"repository":{"type":"git","url":"git+https://github.com/tauri-apps/tauri-toml.git"},"bugs":{"url":"https://github.com/tauri-apps/tauri-toml/issues"},"homepage":"https://github.com/tauri-apps/tauri-toml#readme","gitHead":"fff8af901afd0499b86852b759ec1d2cbf24d574","_id":"@tauri-apps/toml@2.2.3","_nodeVersion":"10.17.0","_npmVersion":"6.13.0","dist":{"shasum":"88cdebed2ae3944734aa8ecccce4834fffb8bc83","size":22812,"noattachment":false,"key":"/@tauri-apps/toml/-/@tauri-apps/toml-2.2.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/@tauri-apps/toml/download/@tauri-apps/toml-2.2.3.tgz"},"maintainers":[{"name":"beanow","email":""},{"name":"lucasfernog","email":""},{"name":"nklayman","email":""},{"name":"nothingismagick","email":"daniel@kinokabaret.com"},{"name":"tauri-apps-ci-user","email":""}],"_npmUser":{"name":"nothingismagick","email":"denjell@sfosc.org"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/toml_2.2.3_1575119709588_0.5457729255840063"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-24T14:06:22.595Z","publish_time":1575119709785,"_cnpm_publish_time":1575119709785}},"readme":"# @tauri-apps/toml\n\n## This is a fork of iarna-toml so that we can make some needed modifations for `tauri`.\n\nBetter TOML parsing and stringifying all in that familiar JSON interface.\n\n[![Coverage Status](https://coveralls.io/repos/github/iarna/iarna-toml/badge.svg)](https://coveralls.io/github/iarna/iarna-toml)\n\n# ** TOML 0.5.0 **\n\n### TOML Spec Support\n\nThe most recent version as of 2018-07-26: [v0.5.0](https://github.com/mojombo/toml/blob/master/versions/en/toml-v0.5.0.md)\n\n### Example\n\n```js\nconst TOML = require('@tauri-apps/toml')\nconst obj = TOML.parse(`[abc]\nfoo = 123\nbar = [1,2,3]`)\n/* obj =\n{abc: {foo: 123, bar: [1,2,3]}}\n*/\nconst str = TOML.stringify(obj)\n/* str =\n[abc]\nfoo = 123\nbar = [ 1, 2, 3 ]\n*/\n```\n\nVisit the project github [for more examples](https://github.com/iarna/iarna-toml/tree/latest/examples)!\n\n\n## Why @tauri-apps/toml\n\n* See [TOML-SPEC-SUPPORT](https://shared.by.re-becca.org/misc/TOML-SPEC-SUPPORT.html) for a comparison of which TOML features\n  are supported by the various Node.js TOML parsers.\n* BigInt support on Node 10!\n* 100% test coverage.\n* Faster parsing, even if you only use TOML 0.4.0, it's as much as 100 times\n  faster than `toml` and 3 times faster than `toml-j0.4`.  However a recent\n  newcomer [`@ltd/j-toml`](https://www.npmjs.com/package/@ltd/j-toml) has\n  appeared with 0.5 support and astoundingly fast parsing speeds for large\n  text blocks. All I can say is you'll have to test your specific work loads\n  if you want to know which of @tauri-apps/toml and @ltd/j-toml is faster for\n  you, as we currently excell in different areas\n* Careful adherence to spec. Tests go beyond simple coverage.\n* Smallest parser bundle (if you use `@tauri-apps/toml/parse-string`).\n* No deps.\n* Detailed and easy to read error messages‼\n\n```console\n> TOML.parse(src)\nError: Unexpected character, expecting string, number, datetime, boolean, inline array or inline table at row 6, col 5, pos 87:\n5: \"abc\\\"\" = { abc=123,def=\"abc\" }\n6> foo=sdkfj\n       ^\n7:\n```\n\n## TOML.parse(str) → Object [(example)](https://github.com/iarna/iarna-toml/blob/latest/examples/parse.js)\n\nAlso available with: `require('@tauri-apps/toml/parse-string')`\n\nSynchronously parse a TOML string and return an object.\n\n\n## TOML.stringify(obj) → String [(example)](https://github.com/iarna/iarna-toml/blob/latest/examples/stringify.js)\n\nAlso available with: `require('@tauri-apps/toml/stringify)`\n\nSerialize an object as TOML.\n\n## [your-object].toJSON\n\nIf an object `TOML.stringify` is serializing has a `toJSON` method then it\nwill call it to transform the object before serializing it.  This matches\nthe behavior of `JSON.stringify`.\n\nThe one exception to this is that `toJSON` is not called for `Date` objects\nbecause `JSON` represents dates as strings and TOML can represent them natively.\n\n[`moment`](https://www.npmjs.com/package/moment) objects are treated the\nsame as native `Date` objects, in this respect.\n\n## TOML.stringify.value(obj) -> String\n\nAlso available with: `require('@tauri-apps/toml/stringify').value`\n\nSerialize a value as TOML would.  This is a fragment and not a complete\nvalid TOML document.\n\n## Promises and Streaming\n\nThe parser provides alternative async and streaming interfaces, for times\nthat you're working with really absurdly big TOML files and don't want to\ntie-up the event loop while it parses.\n\n### TOML.parse.async(str[, opts]) → Promise(Object) [(example)](https://github.com/iarna/iarna-toml/blob/latest/examples/parse-async.js)\n\nAlso available with: `require('@tauri-apps/toml/parse-async')`\n\n`opts.blocksize` is the amount text to parser per pass through the event loop. Defaults to 40kb.\n\nAsynchronously parse a TOML string and return a promise of the resulting object.\n\n### TOML.parse.stream(readable) → Promise(Object) [(example)](https://github.com/iarna/iarna-toml/blob/latest/examples/parse-stream-readable.js)\n\nAlso available with: `require('@tauri-apps/toml/parse-stream')`\n\nGiven a readable stream, parse it as it feeds us data. Return a promise of the resulting object.\n\n### readable.pipe(TOML.parse.stream()) → Transform [(example)](https://github.com/iarna/iarna-toml/blob/latest/examples/parse-stream-through.js)\n\nAlso available with: `require('@tauri-apps/toml/parse-stream')`\n\nReturns a transform stream in object mode.  When it completes, emit the\nresulting object. Only one object will ever be emitted.\n\n## Lowlevel Interface [(example)](https://github.com/iarna/iarna-toml/blob/latest/examples/parse-lowlevel.js) [(example w/ parser debugging)](https://github.com/iarna/iarna-toml/blob/latest/examples/parse-lowlevel-debug.js)\n\nYou construct a parser object, per TOML file you want to process:\n\n```js\nconst TOMLParser = require('@tauri-apps/toml/lib/toml-parser.js')\nconst parser = new TOMLParser()\n```\n\nThen you call the `parse` method for each chunk as you read them, or in a\nsingle call:\n\n```js\nparser.parse(`hello = 'world'`)\n```\n\nAnd finally, you call the `finish` method to complete parsing and retrieve\nthe resulting object.\n\n```js\nconst data = parser.finish()\n```\n\nBoth the `parse` method and `finish` method will throw if they find a\nproblem with the string they were given.  Error objects thrown from the\nparser have `pos`, `line` and `col` attributes.  `TOML.parse` adds a visual\nsummary of where in the source string there were issues using\n`parse-pretty-error` and you can too:\n\n```js\nconst prettyError = require('./parse-pretty-error.js')\nconst newErr = prettyError(err, sourceString)\n```\n\n## What's Different\n\nVersion 2 of this module supports TOML 0.5.0.  Other modules currently\npublished to the npm registry support 0.4.0.  0.5.0 is mostly backwards\ncompatible with 0.4.0, but if you have need, you can install @tauri-apps/toml@1\nto get a version of this module that supports 0.4.0.  Please see the\n[CHANGELOG](CHANGELOG.md#2.0.0) for details on exactly whats changed.\n\n## TOML we can't do\n\n* `-nan` is a valid TOML value and is converted into `NaN`. There is no way to\n  produce `-nan` when stringifying. Stringification will produce positive `nan`.\n* Detecting and erroring on invalid utf8 documents: This is because Node's\n  UTF8 processing converts invalid sequences into the placeholder character\n  and does not have facilities for reporting these as errors instead.  We\n  _can_ detect the placeholder character, but it's valid to intentionally\n  include them in documents, so erroring on them is not great.\n* On versions of Node < 10, very large Integer values will lose precision.\n  On Node >=10, bigints are used.\n* Floating/local dates and times are still represented by JavaScript Date\n  objects, which don't actually support these concepts. The objects\n  returned have been modified so that you can determine what kind of thing\n  they are (with `isFloating`, `isDate`, `isTime` properties) and that\n  their ISO representation (via `toISOString`) is representative of their\n  TOML value.  They will correctly round trip if you pass them to\n  `TOML.stringify`.\n* Binary, hexadecimal and octal values are converted to ordinary integers and\n  will be decimal if you stringify them.\n\n## Changes\n\nI write a by hand, honest-to-god,\n[CHANGELOG](https://github.com/iarna/iarna-toml/blob/latest/CHANGELOG.md)\nfor this project.  It's a description of what went into a release that you\nthe consumer of the module could care about, not a list of git commits, so\nplease check it out!\n\n## Benchmarks\n\nYou can run them yourself with:\n\n```console\n$ npm run benchmark\n```\n\nThe results below are from my laptop using Node 11.10.0.  The library\nversions tested were `@tauri-apps/toml@2.2.2`, `toml-j0.4@1.1.1`, `toml@3.0.0`,\n`@sgarciac/bombadil@2.1.0` and `@ltd/j-toml@0.5.47`.  The speed value is\nmegabytes-per-second that the parser can process of that document type.\nBigger is better. The percentage after average results is the margin of error.\n\nAs this table is getting a little wide, with how npm and github display it,\nyou can also view it seperately in the [BENCHMARK](https://shared.by.re-becca.org/misc/BENCHMARK.html) document.\n\n|   | @tauri-apps/toml |   | toml-j0.4 |   | toml |   | @sgarciac/bombadil |   | @ltd/j-toml |   |\n| - | ----------- | - | --------- | - | ---- | - | ------------------ | - | ----------- | - |\n| Overall | 25MB/sec | 0.55% | 7MB/sec | 1.39% | 0.2MB/sec | 3.47% | - | - | 38MB/sec | 1.37% |\n| Spec Example: v0.4.0 | 23MB/sec | 0.87% | 10MB/sec | 0.62% | 1MB/sec | 1.89% | 1.7MB/sec | 1.03% | 35MB/sec | 1.32% |\n| Spec Example: Hard Unicode | 57MB/sec | 1.46% | 16MB/sec | 0.66% | 2MB/sec | 2.25% | 0.8MB/sec | 0.57% | 93MB/sec | 1.79% |\n| Types: Array, Inline | 7.2MB/sec | 1.60% | 3.2MB/sec | 0.77% | 0.1MB/sec | 1.84% | 1.7MB/sec | 0.56% | 4.1MB/sec | 14.48% |\n| Types: Array | 6.9MB/sec | 0.47% | 5.8MB/sec | 0.46% | 0.1MB/sec | 3.67% | 1.4MB/sec | 0.76% | 2.5MB/sec | 8.19% |\n| Types: Boolean, | 22MB/sec | 0.85% | 8.5MB/sec | 0.55% | 0.2MB/sec | 1.83% | 2.1MB/sec | 1.29% | 5.6MB/sec | 0.58% |\n| Types: Datetime | 18MB/sec | 0.56% | 11MB/sec | 0.80% | 0.3MB/sec | 1.55% | 0.8MB/sec | 0.51% | 4.5MB/sec | 0.66% |\n| Types: Float | 9.2MB/sec | 0.71% | 5.2MB/sec | 1.12% | 0.3MB/sec | 2.04% | 2.6MB/sec | 0.86% | 3.7MB/sec | 0.61% |\n| Types: Int | 6.4MB/sec | 0.44% | 3.9MB/sec | 0.56% | 0.1MB/sec | 1.65% | 1.7MB/sec | 1.15% | 1.5MB/sec | 4.06% |\n| Types: Literal String, 7 char | 26MB/sec | 0.62% | 8.1MB/sec | 1.00% | 0.3MB/sec | 1.48% | 2.9MB/sec | 0.58% | 6MB/sec | 0.52% |\n| Types: Literal String, 92 char | 41MB/sec | 0.80% | 11MB/sec | 1.20% | 0.4MB/sec | 2.38% | 15MB/sec | 0.84% | 23MB/sec | 0.58% |\n| Types: Literal String, Multiline, 1079 char | 21MB/sec | 0.28% | 7.2MB/sec | 1.62% | 1.3MB/sec | 3.05% | 55MB/sec | 0.53% | 332MB/sec | 0.46% |\n| Types: Basic String, 7 char | 26MB/sec | 0.56% | 6.6MB/sec | 0.61% | 0.2MB/sec | 4.70% | 2.7MB/sec | 0.68% | 3.3MB/sec | 0.47% |\n| Types: Basic String, 92 char | 41MB/sec | 0.63% | 8MB/sec | 0.51% | 0.1MB/sec | 1.57% | 14MB/sec | 0.66% | 21MB/sec | 0.43% |\n| Types: Basic String, 1079 char | 21MB/sec | 0.36% | 6MB/sec | 0.81% | 0.1MB/sec | 1.81% | 51MB/sec | 0.53% | 13MB/sec | 0.62% |\n| Types: Table, Inline | 9.8MB/sec | 0.47% | 4.6MB/sec | 0.81% | 0.1MB/sec | 1.82% | 1.7MB/sec | 0.75% | 2.9MB/sec | 4.82% |\n| Types: Table | 6.9MB/sec | 0.43% | 4.9MB/sec | 0.46% | 0.1MB/sec | 3.59% | 1.6MB/sec | 0.88% | 4.4MB/sec | 0.53% |\n| Scaling: Array, Inline, 1000 elements | 33MB/sec | 2.15% | 2.5MB/sec | 1.07% | 0.1MB/sec | 3.57% | 1.8MB/sec | 0.64% | 8.7MB/sec | 4.12% |\n| Scaling: Array, Nested, 1000 deep | 1.6MB/sec | 2.50% | 1.2MB/sec | 0.49% | 0.1MB/sec | 3.62% | - | - | 1MB/sec | 3.79% |\n| Scaling: Literal String, 40kb | 56MB/sec | 0.58% | 12MB/sec | 1.03% | 3.6MB/sec | 4.00% | 17MB/sec | 0.54% | 498MB/sec | 0.52% |\n| Scaling: Literal String, Multiline, 40kb | 58MB/sec | 0.38% | 6.4MB/sec | 0.54% | 0.2MB/sec | 1.72% | 15MB/sec | 0.74% | 197MB/sec | 0.54% |\n| Scaling: Basic String, Multiline, 40kb | 57MB/sec | 1.03% | 7.2MB/sec | 1.22% | 3.4MB/sec | 4.24% | 15MB/sec | 0.75% | 840MB/sec | 0.52% |\n| Scaling: Basic String, 40kb | 57MB/sec | 0.43% | 8.6MB/sec | 0.57% | 0.2MB/sec | 1.71% | 17MB/sec | 0.51% | 394MB/sec | 0.54% |\n| Scaling: Table, Inline, 1000 elements | 27MB/sec | 0.46% | 7.5MB/sec | 0.71% | 0.3MB/sec | 2.24% | 3MB/sec | 0.74% | 2.3MB/sec | 0.81% |\n| Scaling: Table, Inline, Nested, 1000 deep | 7.8MB/sec | 0.61% | 4.3MB/sec | 0.83% | 0.1MB/sec | 2.93% | - | - | 1.2MB/sec | 13.45% |\n\n## Tests\n\nThe test suite is maintained at 100% coverage: [![Coverage Status](https://coveralls.io/repos/github/iarna/iarna-toml/badge.svg)](https://coveralls.io/github/iarna/iarna-toml)\n\nThe spec was carefully hand converted into a series of test framework\nindependent (and mostly language independent) assertions, as pairs of TOML\nand YAML files.  You can find those files here:\n[spec-test](https://github.com/iarna/iarna-toml/blob/latest/test/spec-test/).\nA number of examples of invalid Unicode were also written, but are difficult\nto make use of in Node.js where Unicode errors are silently hidden.  You can\nfind those here: [spec-test-disabled](https://github.com/iarna/iarna-toml/blob/latest/test/spec-test-disabled/).\n\nFurther tests were written to increase coverage to 100%, these may be more\nimplementation specific, but they can be found in [coverage](https://github.com/iarna/iarna-toml/blob/latest/test/coverage.js) and\n[coverage-error](https://github.com/iarna/iarna-toml/blob/latest/test/coverage-error.js).\n\nI've also written some quality assurance style tests, which don't contribute\nto coverage but do cover scenarios that could easily be problematic for some\nimplementations can be found in:\n[test/qa.js](https://github.com/iarna/iarna-toml/blob/latest/test/qa.js) and\n[test/qa-error.js](https://github.com/iarna/iarna-toml/blob/latest/test/qa-error.js).\n\nAll of the official example files from the TOML spec are run through this\nparser and compared to the official YAML files when available. These files are from the TOML spec as of:\n[357a4ba6](https://github.com/toml-lang/toml/tree/357a4ba6782e48ff26e646780bab11c90ed0a7bc)\nand specifically are:\n\n* [github.com/toml-lang/toml/tree/357a4ba6/examples](https://github.com/toml-lang/toml/tree/357a4ba6782e48ff26e646780bab11c90ed0a7bc/examples)\n* [github.com/toml-lang/toml/tree/357a4ba6/tests](https://github.com/toml-lang/toml/tree/357a4ba6782e48ff26e646780bab11c90ed0a7bc/tests)\n\nThe stringifier is tested by round-tripping these same files, asserting that\n`TOML.parse(sourcefile)` deepEqual\n`TOML.parse(TOML.stringify(TOML.parse(sourcefile))`.  This is done in\n[test/roundtrip-examples.js](https://github.com/iarna/iarna-toml/blob/latest/test/round-tripping.js)\nThere are also some tests written to complete coverage from stringification in:\n[test/stringify.js](https://github.com/iarna/iarna-toml/blob/latest/test/stringify.js)\n\nTests for the async and streaming interfaces are in [test/async.js](https://github.com/iarna/iarna-toml/blob/latest/test/async.js) and [test/stream.js](https://github.com/iarna/iarna-toml/blob/latest/test/stream.js) respectively.\n\nTests for the parsers debugging mode live in [test/devel.js](https://github.com/iarna/iarna-toml/blob/latest/test/devel.js).\n\nAnd finally, many more stringification tests were borrowed from [@othiym23](https://github.com/othiym23)'s\n[toml-stream](https://npmjs.com/package/toml-stream) module. They were fetched as of\n[b6f1e26b572d49742d49fa6a6d11524d003441fa](https://github.com/othiym23/toml-stream/tree/b6f1e26b572d49742d49fa6a6d11524d003441fa/test) and live in\n[test/toml-stream](https://github.com/iarna/iarna-toml/blob/latest/test/toml-stream/).\n\n## Improvements to make\n\n* In stringify:\n  * Any way to produce comments.  As a JSON stand-in I'm not too worried\n    about this.  That said, a document orientated fork is something I'd like\n    to look at eventually…\n  * Stringification could use some work on its error reporting.  It reports\n    _what's_ wrong, but not where in your data structure it was.\n* Further optimize the parser:\n  * There are some debugging assertions left in the main parser, these should be moved to a subclass.\n  * Make the whole debugging parser thing work as a mixin instead of as a superclass.\n","_attachments":{},"homepage":"https://github.com/tauri-apps/tauri-toml#readme","bugs":{"url":"https://github.com/tauri-apps/tauri-toml/issues"},"license":"ISC"}