From 6fe08b2889a85d0bb5fcba9263122500428e6eb3 Mon Sep 17 00:00:00 2001 From: Wyatt Herkamp Date: Mon, 16 Oct 2023 16:51:31 -0400 Subject: [PATCH 1/6] Fixes Non Traditional Spacing Errors during parsing. --- package.json | 12 +- pnpm-lock.yaml | 334 ++++++++++++++++----------------------- src/error.ts | 5 +- src/extract.ts | 6 +- src/struct.ts | 5 +- src/util.ts | 30 +++- test/inlineTable.test.ts | 10 ++ 7 files changed, 195 insertions(+), 207 deletions(-) diff --git a/package.json b/package.json index 28e5b40..c242065 100644 --- a/package.json +++ b/package.json @@ -25,13 +25,13 @@ "@iarna/toml": "3.0.0", "@ltd/j-toml": "^1.38.0", "@tsconfig/esm": "^1.0.3", - "@tsconfig/node-lts": "^18.12.1", - "@tsconfig/strictest": "^2.0.1", - "@types/node": "^20.1.0", - "@vitest/ui": "^0.31.0", + "@tsconfig/node-lts": "^18.12.5", + "@tsconfig/strictest": "^2.0.2", + "@types/node": "^20.8.6", + "@vitest/ui": "^0.34.6", "fast-toml": "^0.5.4", - "typescript": "^5.0.4", - "vitest": "^0.31.0" + "typescript": "^5.2.2", + "vitest": "^0.34.6" }, "exports": { ".": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5ddd12c..6efaa7d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5 +1,9 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + devDependencies: '@iarna/toml': specifier: 3.0.0 @@ -11,26 +15,26 @@ devDependencies: specifier: ^1.0.3 version: 1.0.3 '@tsconfig/node-lts': - specifier: ^18.12.1 - version: 18.12.1 + specifier: ^18.12.5 + version: 18.12.5 '@tsconfig/strictest': - specifier: ^2.0.1 - version: 2.0.1 + specifier: ^2.0.2 + version: 2.0.2 '@types/node': - specifier: ^20.1.0 - version: 20.1.0 + specifier: ^20.8.6 + version: 20.8.6 '@vitest/ui': - specifier: ^0.31.0 - version: 0.31.0(vitest@0.31.0) + specifier: ^0.34.6 + version: 0.34.6(vitest@0.34.6) fast-toml: specifier: ^0.5.4 version: 0.5.4 typescript: - specifier: ^5.0.4 - version: 5.0.4 + specifier: ^5.2.2 + version: 5.2.2 vitest: - specifier: ^0.31.0 - version: 0.31.0(@vitest/ui@0.31.0) + specifier: ^0.34.6 + version: 0.34.6(@vitest/ui@0.34.6) packages: @@ -236,6 +240,13 @@ packages: resolution: {integrity: sha512-td6ZUkz2oS3VeleBcN+m//Q6HlCFCPrnI0FZhrt/h4XqLEdOyYp2u21nd8MdsR+WJy5r9PTDaHTDDfhf4H4l6Q==} dev: true + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} dev: true @@ -269,16 +280,20 @@ packages: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: true + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + /@tsconfig/esm@1.0.3: resolution: {integrity: sha512-Gp56rIc3R8ab032nXMUitmc7YIb4nAi8DQ6Qt47tuL0Ssn9LIOm+o2FQmqPu3jX4z0TsqgzWwkmVygxcq+yHYg==} dev: true - /@tsconfig/node-lts@18.12.1: - resolution: {integrity: sha512-UkIaMWDwJ+qJX/os8lzYh7m47qQJY7sIp1WZiEStASrpzczp27+jA0fJES+IjnS2OlDDLeBghNrVkKw8iYIRdA==} + /@tsconfig/node-lts@18.12.5: + resolution: {integrity: sha512-KJZX0kQ5FBv77WDVzmQ9y1dUjaJCNXAAz3LSsg5cMwH0AUijVdDQtII+IVprEXdb13U9GjVOBxBzyRvr/ozPxw==} dev: true - /@tsconfig/strictest@2.0.1: - resolution: {integrity: sha512-7JHHCbyCsGUxLd0pDbp24yz3zjxw2t673W5oAP6HCEdr/UUhaRhYd3SSnUsGCk+VnPVJVA4mXROzbhI+nyIk+w==} + /@tsconfig/strictest@2.0.2: + resolution: {integrity: sha512-jt4jIsWKvUvuY6adJnQJlb/UR7DdjC8CjHI/OaSQruj2yX9/K6+KOvDt/vD6udqos/FUk5Op66CvYT7TBLYO5Q==} dev: true /@types/chai-subset@1.3.3: @@ -291,62 +306,63 @@ packages: resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} dev: true - /@types/node@20.1.0: - resolution: {integrity: sha512-O+z53uwx64xY7D6roOi4+jApDGFg0qn6WHcxe5QeqjMaTezBO/mxdfFXIVAVVyNWKx84OmPB3L8kbVYOTeN34A==} + /@types/node@20.8.6: + resolution: {integrity: sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==} + dependencies: + undici-types: 5.25.3 dev: true - /@vitest/expect@0.31.0: - resolution: {integrity: sha512-Jlm8ZTyp6vMY9iz9Ny9a0BHnCG4fqBa8neCF6Pk/c/6vkUk49Ls6UBlgGAU82QnzzoaUs9E/mUhq/eq9uMOv/g==} + /@vitest/expect@0.34.6: + resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} dependencies: - '@vitest/spy': 0.31.0 - '@vitest/utils': 0.31.0 - chai: 4.3.7 + '@vitest/spy': 0.34.6 + '@vitest/utils': 0.34.6 + chai: 4.3.10 dev: true - /@vitest/runner@0.31.0: - resolution: {integrity: sha512-H1OE+Ly7JFeBwnpHTrKyCNm/oZgr+16N4qIlzzqSG/YRQDATBYmJb/KUn3GrZaiQQyL7GwpNHVZxSQd6juLCgw==} + /@vitest/runner@0.34.6: + resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} dependencies: - '@vitest/utils': 0.31.0 - concordance: 5.0.4 + '@vitest/utils': 0.34.6 p-limit: 4.0.0 - pathe: 1.1.0 + pathe: 1.1.1 dev: true - /@vitest/snapshot@0.31.0: - resolution: {integrity: sha512-5dTXhbHnyUMTMOujZPB0wjFjQ6q5x9c8TvAsSPUNKjp1tVU7i9pbqcKPqntyu2oXtmVxKbuHCqrOd+Ft60r4tg==} + /@vitest/snapshot@0.34.6: + resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} dependencies: - magic-string: 0.30.0 - pathe: 1.1.0 - pretty-format: 27.5.1 + magic-string: 0.30.5 + pathe: 1.1.1 + pretty-format: 29.7.0 dev: true - /@vitest/spy@0.31.0: - resolution: {integrity: sha512-IzCEQ85RN26GqjQNkYahgVLLkULOxOm5H/t364LG0JYb3Apg0PsYCHLBYGA006+SVRMWhQvHlBBCyuByAMFmkg==} + /@vitest/spy@0.34.6: + resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} dependencies: - tinyspy: 2.1.0 + tinyspy: 2.2.0 dev: true - /@vitest/ui@0.31.0(vitest@0.31.0): - resolution: {integrity: sha512-Dy86l6r3/dbJposgm7w+oqb/15UWJ0lDBbEQaS1ived3+0CTaMbT8OMkUf9vNBkSL47kvBHEBnZLa5fw5i9gUQ==} + /@vitest/ui@0.34.6(vitest@0.34.6): + resolution: {integrity: sha512-/fxnCwGC0Txmr3tF3BwAbo3v6U2SkBTGR9UB8zo0Ztlx0BTOXHucE0gDHY7SjwEktCOHatiGmli9kZD6gYSoWQ==} peerDependencies: vitest: '>=0.30.1 <1' dependencies: - '@vitest/utils': 0.31.0 - fast-glob: 3.2.12 - fflate: 0.7.4 + '@vitest/utils': 0.34.6 + fast-glob: 3.3.1 + fflate: 0.8.1 flatted: 3.2.7 - pathe: 1.1.0 + pathe: 1.1.1 picocolors: 1.0.0 sirv: 2.0.3 - vitest: 0.31.0(@vitest/ui@0.31.0) + vitest: 0.34.6(@vitest/ui@0.34.6) dev: true - /@vitest/utils@0.31.0: - resolution: {integrity: sha512-kahaRyLX7GS1urekRXN2752X4gIgOGVX4Wo8eDUGUkTWlGpXzf5ZS6N9RUUS+Re3XEE8nVGqNyxkSxF5HXlGhQ==} + /@vitest/utils@0.34.6: + resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} dependencies: - concordance: 5.0.4 + diff-sequences: 29.6.3 loupe: 2.3.6 - pretty-format: 27.5.1 + pretty-format: 29.7.0 dev: true /acorn-walk@8.2.0: @@ -354,17 +370,12 @@ packages: engines: {node: '>=0.4.0'} dev: true - /acorn@8.8.2: - resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: true - /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} @@ -374,10 +385,6 @@ packages: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true - /blueimp-md5@2.19.0: - resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} - dev: true - /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} @@ -390,42 +397,23 @@ packages: engines: {node: '>=8'} dev: true - /chai@4.3.7: - resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} + /chai@4.3.10: + resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 - check-error: 1.0.2 + check-error: 1.0.3 deep-eql: 4.1.3 - get-func-name: 2.0.0 + get-func-name: 2.0.2 loupe: 2.3.6 pathval: 1.1.1 type-detect: 4.0.8 dev: true - /check-error@1.0.2: - resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} - dev: true - - /concordance@5.0.4: - resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==} - engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} dependencies: - date-time: 3.1.0 - esutils: 2.0.3 - fast-diff: 1.2.0 - js-string-escape: 1.0.1 - lodash: 4.17.21 - md5-hex: 3.0.1 - semver: 7.5.0 - well-known-symbols: 2.0.0 - dev: true - - /date-time@3.1.0: - resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} - engines: {node: '>=6'} - dependencies: - time-zone: 1.0.0 + get-func-name: 2.0.2 dev: true /debug@4.3.4: @@ -447,6 +435,11 @@ packages: type-detect: 4.0.8 dev: true + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + /esbuild@0.17.18: resolution: {integrity: sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==} engines: {node: '>=12'} @@ -477,17 +470,8 @@ packages: '@esbuild/win32-x64': 0.17.18 dev: true - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true - - /fast-diff@1.2.0: - resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} - dev: true - - /fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -507,8 +491,8 @@ packages: reusify: 1.0.4 dev: true - /fflate@0.7.4: - resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==} + /fflate@0.8.1: + resolution: {integrity: sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ==} dev: true /fill-range@7.0.1: @@ -534,6 +518,10 @@ packages: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: true + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -558,11 +546,6 @@ packages: engines: {node: '>=0.12.0'} dev: true - /js-string-escape@1.0.1: - resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} - engines: {node: '>= 0.8'} - dev: true - /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true @@ -572,37 +555,19 @@ packages: engines: {node: '>=14'} dev: true - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: true - /loupe@2.3.6: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: get-func-name: 2.0.0 dev: true - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: true - - /magic-string@0.30.0: - resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /md5-hex@3.0.1: - resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} - engines: {node: '>=8'} - dependencies: - blueimp-md5: 2.19.0 - dev: true - /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -616,13 +581,13 @@ packages: picomatch: 2.3.1 dev: true - /mlly@1.2.0: - resolution: {integrity: sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==} + /mlly@1.4.2: + resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} dependencies: - acorn: 8.8.2 - pathe: 1.1.0 + acorn: 8.10.0 + pathe: 1.1.1 pkg-types: 1.0.3 - ufo: 1.1.2 + ufo: 1.3.1 dev: true /mrmime@1.0.1: @@ -647,8 +612,8 @@ packages: yocto-queue: 1.0.0 dev: true - /pathe@1.1.0: - resolution: {integrity: sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==} + /pathe@1.1.1: + resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} dev: true /pathval@1.1.1: @@ -668,8 +633,8 @@ packages: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: jsonc-parser: 3.2.0 - mlly: 1.2.0 - pathe: 1.1.0 + mlly: 1.4.2 + pathe: 1.1.1 dev: true /postcss@8.4.23: @@ -681,21 +646,21 @@ packages: source-map-js: 1.0.2 dev: true - /pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - ansi-regex: 5.0.1 + '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 - react-is: 17.0.2 + react-is: 18.2.0 dev: true /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true - /react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true /reusify@1.0.4: @@ -717,14 +682,6 @@ packages: queue-microtask: 1.2.3 dev: true - /semver@7.5.0: - resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - /siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} dev: true @@ -754,25 +711,20 @@ packages: /strip-literal@1.0.1: resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} dependencies: - acorn: 8.8.2 - dev: true - - /time-zone@1.0.0: - resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==} - engines: {node: '>=4'} + acorn: 8.10.0 dev: true /tinybench@2.5.0: resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} dev: true - /tinypool@0.5.0: - resolution: {integrity: sha512-paHQtnrlS1QZYKF/GnLoOM/DN9fqaGOFbCbxzAhwniySnzl9Ebk8w73/dd34DAhe/obUbPAOldTyYXQZxnPBPQ==} + /tinypool@0.7.0: + resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} engines: {node: '>=14.0.0'} dev: true - /tinyspy@2.1.0: - resolution: {integrity: sha512-7eORpyqImoOvkQJCSkL0d0mB4NHHIFAy4b1u8PHdDa7SjGS2njzl6/lyGoZLm+eyYEtlUmFGE0rFj66SWxZgQQ==} + /tinyspy@2.2.0: + resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} engines: {node: '>=14.0.0'} dev: true @@ -793,27 +745,31 @@ packages: engines: {node: '>=4'} dev: true - /typescript@5.0.4: - resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} - engines: {node: '>=12.20'} + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} hasBin: true dev: true - /ufo@1.1.2: - resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==} + /ufo@1.3.1: + resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} dev: true - /vite-node@0.31.0(@types/node@20.1.0): - resolution: {integrity: sha512-8x1x1LNuPvE2vIvkSB7c1mApX5oqlgsxzHQesYF7l5n1gKrEmrClIiZuOFbFDQcjLsmcWSwwmrWrcGWm9Fxc/g==} + /undici-types@5.25.3: + resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} + dev: true + + /vite-node@0.34.6(@types/node@20.8.6): + resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true dependencies: cac: 6.7.14 debug: 4.3.4 - mlly: 1.2.0 - pathe: 1.1.0 + mlly: 1.4.2 + pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.3.5(@types/node@20.1.0) + vite: 4.3.5(@types/node@20.8.6) transitivePeerDependencies: - '@types/node' - less @@ -824,7 +780,7 @@ packages: - terser dev: true - /vite@4.3.5(@types/node@20.1.0): + /vite@4.3.5(@types/node@20.8.6): resolution: {integrity: sha512-0gEnL9wiRFxgz40o/i/eTBwm+NEbpUeTWhzKrZDSdKm6nplj+z4lKz8ANDgildxHm47Vg8EUia0aicKbawUVVA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -849,7 +805,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.1.0 + '@types/node': 20.8.6 esbuild: 0.17.18 postcss: 8.4.23 rollup: 3.21.5 @@ -857,8 +813,8 @@ packages: fsevents: 2.3.2 dev: true - /vitest@0.31.0(@vitest/ui@0.31.0): - resolution: {integrity: sha512-JwWJS9p3GU9GxkG7eBSmr4Q4x4bvVBSswaCFf1PBNHiPx00obfhHRJfgHcnI0ffn+NMlIh9QGvG75FlaIBdKGA==} + /vitest@0.34.6(@vitest/ui@0.34.6): + resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} engines: {node: '>=v14.18.0'} hasBin: true peerDependencies: @@ -890,29 +846,28 @@ packages: dependencies: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 - '@types/node': 20.1.0 - '@vitest/expect': 0.31.0 - '@vitest/runner': 0.31.0 - '@vitest/snapshot': 0.31.0 - '@vitest/spy': 0.31.0 - '@vitest/ui': 0.31.0(vitest@0.31.0) - '@vitest/utils': 0.31.0 - acorn: 8.8.2 + '@types/node': 20.8.6 + '@vitest/expect': 0.34.6 + '@vitest/runner': 0.34.6 + '@vitest/snapshot': 0.34.6 + '@vitest/spy': 0.34.6 + '@vitest/ui': 0.34.6(vitest@0.34.6) + '@vitest/utils': 0.34.6 + acorn: 8.10.0 acorn-walk: 8.2.0 cac: 6.7.14 - chai: 4.3.7 - concordance: 5.0.4 + chai: 4.3.10 debug: 4.3.4 local-pkg: 0.4.3 - magic-string: 0.30.0 - pathe: 1.1.0 + magic-string: 0.30.5 + pathe: 1.1.1 picocolors: 1.0.0 std-env: 3.3.3 strip-literal: 1.0.1 tinybench: 2.5.0 - tinypool: 0.5.0 - vite: 4.3.5(@types/node@20.1.0) - vite-node: 0.31.0(@types/node@20.1.0) + tinypool: 0.7.0 + vite: 4.3.5(@types/node@20.8.6) + vite-node: 0.34.6(@types/node@20.8.6) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -923,11 +878,6 @@ packages: - terser dev: true - /well-known-symbols@2.0.0: - resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} - engines: {node: '>=6'} - dev: true - /why-is-node-running@2.2.2: resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} engines: {node: '>=8'} @@ -937,10 +887,6 @@ packages: stackback: 0.0.2 dev: true - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true - /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} diff --git a/src/error.ts b/src/error.ts index 2b253f2..fbb8e4d 100644 --- a/src/error.ts +++ b/src/error.ts @@ -31,12 +31,12 @@ type TomlErrorOptions = ErrorOptions & { ptr: number } -function getLineColFromPtr (string: string, ptr: number): [ number, number ] { +export function getLineColFromPtr (string: string, ptr: number): [ number, number ] { let lines = string.slice(0, ptr).split(/\r\n|\n|\r/g) return [ lines.length, lines.pop()!.length + 1 ] } -function makeCodeBlock (string: string, line: number, column: number) { +export function makeCodeBlock (string: string, line: number, column: number) { let lines = string.split(/\r\n|\n|\r/g) let codeblock = '' @@ -75,3 +75,4 @@ export default class TomlError extends Error { this.codeblock = codeblock } } + diff --git a/src/extract.ts b/src/extract.ts index d69c6de..aca6595 100644 --- a/src/extract.ts +++ b/src/extract.ts @@ -81,7 +81,11 @@ export function extractValue (str: string, ptr: number, end?: string): [ TomlPri let endPtr if (c === '"' || c === "'") { endPtr = getStringEnd(str, ptr) - return [ parseString(str, ptr, endPtr), endPtr + +(!!end && str[endPtr] === ',') ] + let parsed = parseString(str, ptr, endPtr) + if (!!end){ + endPtr = skipUntil(str, endPtr, ',', end,end !== ']') + } + return [parsed, endPtr ] } endPtr = skipUntil(str, ptr, ',', end) diff --git a/src/struct.ts b/src/struct.ts index dd4e071..d6d3426 100644 --- a/src/struct.ts +++ b/src/struct.ts @@ -28,7 +28,7 @@ import { parseString } from './primitive.js' import { extractValue } from './extract.js' -import { type TomlPrimitive, skipComment, indexOfNewline, getStringEnd, skipVoid } from './util.js' +import {type TomlPrimitive, skipComment, indexOfNewline, getStringEnd, skipVoid, DebugToml, skipUntil} from './util.js' import TomlError from './error.js' let KEY_PART_RE = /^[a-zA-Z0-9-_]+[ \t]*$/ @@ -173,7 +173,8 @@ export function parseInlineTable (str: string, ptr: number): [ Record { expect(parseInlineTable('{}', 0)) .toStrictEqual([ {}, 2 ]) }) +it('parse inline tables with non traditional spaces',()=>{ + expect(parseInlineTable('{ first = "Tom" ,last = "Preston-Werner" }', 0)) + .toStrictEqual([ { first: 'Tom', last: 'Preston-Werner' }, 42 ]) + expect(parseInlineTable('{ first = "Tom" , last = "Preston-Werner" }', 0)) + .toStrictEqual([ { first: 'Tom', last: 'Preston-Werner' }, 43 ]) + expect(parseInlineTable('{first="Tom",last="Preston-Werner"}', 0)) + .toStrictEqual([ { first: 'Tom', last: 'Preston-Werner' }, 35 ]) + expect(parseInlineTable('{ first="Tom" , last="Preston-Werner"}', 0)) + .toStrictEqual([ { first: 'Tom', last: 'Preston-Werner' }, 41 ]) +}) it('parses valid multiline tables', () => { expect(parseInlineTable('{ test = """Multiline\nstrings\nare\nvalid""" }', 0)) From b667a2a8ec90dc0c9d74b008d20840d1035c69d0 Mon Sep 17 00:00:00 2001 From: Wyatt Herkamp Date: Mon, 16 Oct 2023 17:09:29 -0400 Subject: [PATCH 2/6] TSConfig Fixes and Removed Debug Code --- src/error.ts | 4 ++-- src/struct.ts | 2 +- src/util.ts | 26 +------------------------- tsconfig.json | 3 ++- 4 files changed, 6 insertions(+), 29 deletions(-) diff --git a/src/error.ts b/src/error.ts index fbb8e4d..19860e4 100644 --- a/src/error.ts +++ b/src/error.ts @@ -31,12 +31,12 @@ type TomlErrorOptions = ErrorOptions & { ptr: number } -export function getLineColFromPtr (string: string, ptr: number): [ number, number ] { + function getLineColFromPtr (string: string, ptr: number): [ number, number ] { let lines = string.slice(0, ptr).split(/\r\n|\n|\r/g) return [ lines.length, lines.pop()!.length + 1 ] } -export function makeCodeBlock (string: string, line: number, column: number) { + function makeCodeBlock (string: string, line: number, column: number) { let lines = string.split(/\r\n|\n|\r/g) let codeblock = '' diff --git a/src/struct.ts b/src/struct.ts index d6d3426..2b3a5f9 100644 --- a/src/struct.ts +++ b/src/struct.ts @@ -28,7 +28,7 @@ import { parseString } from './primitive.js' import { extractValue } from './extract.js' -import {type TomlPrimitive, skipComment, indexOfNewline, getStringEnd, skipVoid, DebugToml, skipUntil} from './util.js' +import {type TomlPrimitive, skipComment, indexOfNewline, getStringEnd, skipVoid} from './util.js' import TomlError from './error.js' let KEY_PART_RE = /^[a-zA-Z0-9-_]+[ \t]*$/ diff --git a/src/util.ts b/src/util.ts index bce65bb..a33ad24 100644 --- a/src/util.ts +++ b/src/util.ts @@ -27,7 +27,7 @@ */ import TomlDate from './date.js' -import TomlError, {getLineColFromPtr, makeCodeBlock} from './error.js' +import TomlError from './error.js' export type TomlPrimitive = | string @@ -117,27 +117,3 @@ export function getStringEnd (str: string, seek: number) { return seek } - - -export class DebugToml{ - line: number - column: number - codeblock: string -message?: string - constructor (message: string | undefined, options: { - toml: string - ptr: number - }) { - const [ line, column ] = getLineColFromPtr(options.toml, options.ptr) - const codeblock = makeCodeBlock(options.toml, line, column) - - this.line = line - this.column = column - this.codeblock = codeblock - this.message = message - } - toString(){ - let content = this.message ? `${this.message}\n\n` : '' - return `Line: ${this.line} Column ${this.column} \n ${content} ${this.codeblock}` - } -} diff --git a/tsconfig.json b/tsconfig.json index 15294ab..5d5506b 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,9 +5,10 @@ "@tsconfig/strictest/tsconfig.json" ], "compilerOptions": { + "moduleResolution": "node16", + "module": "Node16", "declaration": true, "verbatimModuleSyntax": false, - "preserveConstEnums": false, "outDir": "./dist" }, "include": [ "src" ] From 5dd9f9f149da4b20e5222cffca5464b2b62d7577 Mon Sep 17 00:00:00 2001 From: Wyatt Herkamp Date: Tue, 17 Oct 2023 07:44:30 -0400 Subject: [PATCH 3/6] Formatting Fixes --- src/error.ts | 4 ++-- src/extract.ts | 6 ++---- src/struct.ts | 2 +- src/util.ts | 2 +- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/error.ts b/src/error.ts index 19860e4..43cf4f8 100644 --- a/src/error.ts +++ b/src/error.ts @@ -31,12 +31,12 @@ type TomlErrorOptions = ErrorOptions & { ptr: number } - function getLineColFromPtr (string: string, ptr: number): [ number, number ] { +function getLineColFromPtr (string: string, ptr: number): [ number, number ] { let lines = string.slice(0, ptr).split(/\r\n|\n|\r/g) return [ lines.length, lines.pop()!.length + 1 ] } - function makeCodeBlock (string: string, line: number, column: number) { +function makeCodeBlock (string: string, line: number, column: number) { let lines = string.split(/\r\n|\n|\r/g) let codeblock = '' diff --git a/src/extract.ts b/src/extract.ts index aca6595..0334ae4 100644 --- a/src/extract.ts +++ b/src/extract.ts @@ -82,10 +82,8 @@ export function extractValue (str: string, ptr: number, end?: string): [ TomlPri if (c === '"' || c === "'") { endPtr = getStringEnd(str, ptr) let parsed = parseString(str, ptr, endPtr) - if (!!end){ - endPtr = skipUntil(str, endPtr, ',', end,end !== ']') - } - return [parsed, endPtr ] + if (end) endPtr = skipUntil(str, endPtr, ',', end,end !== ']') + return [ parsed, endPtr ] } endPtr = skipUntil(str, ptr, ',', end) diff --git a/src/struct.ts b/src/struct.ts index 2b3a5f9..3297db0 100644 --- a/src/struct.ts +++ b/src/struct.ts @@ -28,7 +28,7 @@ import { parseString } from './primitive.js' import { extractValue } from './extract.js' -import {type TomlPrimitive, skipComment, indexOfNewline, getStringEnd, skipVoid} from './util.js' +import { type TomlPrimitive, skipComment, indexOfNewline, getStringEnd, skipVoid } from './util.js' import TomlError from './error.js' let KEY_PART_RE = /^[a-zA-Z0-9-_]+[ \t]*$/ diff --git a/src/util.ts b/src/util.ts index a33ad24..ec9ac71 100644 --- a/src/util.ts +++ b/src/util.ts @@ -86,7 +86,7 @@ export function skipUntil (str: string, ptr: number, sep: string, end?: string, return i + 1 } else if (c === end) { return i - }else if (banNewLines && (c === '\n' || c === '\r' && str[i + 1] === '\n')) { + } else if (banNewLines && (c === '\n' || c === '\r' && str[i + 1] === '\n')) { return i } } From d9330d4fa374fa0af7d25ffa62d5162480bc58b9 Mon Sep 17 00:00:00 2001 From: Wyatt Herkamp Date: Tue, 17 Oct 2023 07:46:57 -0400 Subject: [PATCH 4/6] Revert TSConfig --- tsconfig.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index 5d5506b..15294ab 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,10 +5,9 @@ "@tsconfig/strictest/tsconfig.json" ], "compilerOptions": { - "moduleResolution": "node16", - "module": "Node16", "declaration": true, "verbatimModuleSyntax": false, + "preserveConstEnums": false, "outDir": "./dist" }, "include": [ "src" ] From bf29178870cbb400f8b7df8b77fbde1155731150 Mon Sep 17 00:00:00 2001 From: Wyatt Herkamp Date: Tue, 17 Oct 2023 07:48:21 -0400 Subject: [PATCH 5/6] Formatting Fix --- src/struct.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/struct.ts b/src/struct.ts index 3297db0..dd4e071 100644 --- a/src/struct.ts +++ b/src/struct.ts @@ -173,8 +173,7 @@ export function parseInlineTable (str: string, ptr: number): [ Record Date: Tue, 17 Oct 2023 09:12:47 -0400 Subject: [PATCH 6/6] isolatedModules: false --- tsconfig.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index 15294ab..fcca638 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,11 +1,12 @@ { "extends": [ - "@tsconfig/node-lts/tsconfig.json", "@tsconfig/esm/tsconfig.json", - "@tsconfig/strictest/tsconfig.json" + "@tsconfig/strictest/tsconfig.json", + "@tsconfig/node-lts/tsconfig.json" ], "compilerOptions": { "declaration": true, + "isolatedModules": false, "verbatimModuleSyntax": false, "preserveConstEnums": false, "outDir": "./dist"