Parse and stringify JSON with comments (#187)

This commit is contained in:
Misode
2021-11-08 20:45:10 +01:00
committed by GitHub
parent de54aa9972
commit b15f187ccc
5 changed files with 179 additions and 12 deletions
+162 -7
View File
@@ -9,12 +9,14 @@
"version": "1.0.0",
"license": "MIT",
"dependencies": {
"@mcschema/core": "^0.12.16",
"@mcschema/core": "^0.12.17",
"@mcschema/java-1.15": "^0.2.2",
"@mcschema/java-1.16": "^0.6.5",
"@mcschema/java-1.17": "^0.2.24",
"@mcschema/java-1.18": "^0.2.2",
"@mcschema/locales": "^0.1.38",
"buffer": "^6.0.3",
"comment-json": "^4.1.1",
"deepslate": "^0.9.0-beta.6",
"deepslate-rs": "^0.1.6",
"howler": "^2.2.3",
@@ -323,9 +325,9 @@
}
},
"node_modules/@mcschema/core": {
"version": "0.12.16",
"resolved": "https://registry.npmjs.org/@mcschema/core/-/core-0.12.16.tgz",
"integrity": "sha512-iZwNW7VvBBSa4npt0lqI+zxnJ6FoxcbODeON3Tcvdt2OrJSqqqo0ZLYVnwj1ugF9TqVgVDM0w/4Qb2PGe518gg=="
"version": "0.12.17",
"resolved": "https://registry.npmjs.org/@mcschema/core/-/core-0.12.17.tgz",
"integrity": "sha512-viG+TsWcZ6aSsXNQ5Ipwk91Yb1m4zSA1sVAsDaFTX9/C3dflk9PKHKUaMP+SV89AxHVqLC9YlR3jde3y7azE3A=="
},
"node_modules/@mcschema/java-1.15": {
"version": "0.2.2",
@@ -810,6 +812,11 @@
"sprintf-js": "~1.0.2"
}
},
"node_modules/array-timsort": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz",
"integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ=="
},
"node_modules/array-union": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
@@ -843,6 +850,25 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"node_modules/base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
]
},
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -888,6 +914,29 @@
"url": "https://opencollective.com/browserslist"
}
},
"node_modules/buffer": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
"integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
],
"dependencies": {
"base64-js": "^1.3.1",
"ieee754": "^1.2.1"
}
},
"node_modules/callsites": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -950,6 +999,21 @@
"integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==",
"dev": true
},
"node_modules/comment-json": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.1.1.tgz",
"integrity": "sha512-v8gmtPvxhBlhdRBLwdHSjGy9BgA23t9H1FctdQKyUrErPjSrJcdDMqBq9B4Irtm7w3TNYLQJNH6ARKnpyag1sA==",
"dependencies": {
"array-timsort": "^1.0.3",
"core-util-is": "^1.0.2",
"esprima": "^4.0.1",
"has-own-prop": "^2.0.0",
"repeat-string": "^1.6.1"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -965,6 +1029,11 @@
"safe-buffer": "~5.1.1"
}
},
"node_modules/core-util-is": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
},
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -1686,11 +1755,38 @@
"node": ">=4"
}
},
"node_modules/has-own-prop": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz",
"integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==",
"engines": {
"node": ">=8"
}
},
"node_modules/howler": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/howler/-/howler-2.2.3.tgz",
"integrity": "sha512-QM0FFkw0LRX1PR8pNzJVAY25JhIWvbKMBFM4gqk+QdV+kPXOhleWGCB6AiAF/goGjIHK2e/nIElplvjQwhr0jg=="
},
"node_modules/ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
]
},
"node_modules/ignore": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
@@ -2208,6 +2304,14 @@
"url": "https://github.com/sponsors/mysticatea"
}
},
"node_modules/repeat-string": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
"engines": {
"node": ">=0.10"
}
},
"node_modules/require-from-string": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
@@ -2986,9 +3090,9 @@
}
},
"@mcschema/core": {
"version": "0.12.16",
"resolved": "https://registry.npmjs.org/@mcschema/core/-/core-0.12.16.tgz",
"integrity": "sha512-iZwNW7VvBBSa4npt0lqI+zxnJ6FoxcbODeON3Tcvdt2OrJSqqqo0ZLYVnwj1ugF9TqVgVDM0w/4Qb2PGe518gg=="
"version": "0.12.17",
"resolved": "https://registry.npmjs.org/@mcschema/core/-/core-0.12.17.tgz",
"integrity": "sha512-viG+TsWcZ6aSsXNQ5Ipwk91Yb1m4zSA1sVAsDaFTX9/C3dflk9PKHKUaMP+SV89AxHVqLC9YlR3jde3y7azE3A=="
},
"@mcschema/java-1.15": {
"version": "0.2.2",
@@ -3340,6 +3444,11 @@
"sprintf-js": "~1.0.2"
}
},
"array-timsort": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz",
"integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ=="
},
"array-union": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
@@ -3365,6 +3474,11 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -3397,6 +3511,15 @@
"node-releases": "^1.1.71"
}
},
"buffer": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
"integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
"requires": {
"base64-js": "^1.3.1",
"ieee754": "^1.2.1"
}
},
"callsites": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -3446,6 +3569,18 @@
"integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==",
"dev": true
},
"comment-json": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.1.1.tgz",
"integrity": "sha512-v8gmtPvxhBlhdRBLwdHSjGy9BgA23t9H1FctdQKyUrErPjSrJcdDMqBq9B4Irtm7w3TNYLQJNH6ARKnpyag1sA==",
"requires": {
"array-timsort": "^1.0.3",
"core-util-is": "^1.0.2",
"esprima": "^4.0.1",
"has-own-prop": "^2.0.0",
"repeat-string": "^1.6.1"
}
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -3461,6 +3596,11 @@
"safe-buffer": "~5.1.1"
}
},
"core-util-is": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
},
"cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -4006,11 +4146,21 @@
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true
},
"has-own-prop": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz",
"integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ=="
},
"howler": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/howler/-/howler-2.2.3.tgz",
"integrity": "sha512-QM0FFkw0LRX1PR8pNzJVAY25JhIWvbKMBFM4gqk+QdV+kPXOhleWGCB6AiAF/goGjIHK2e/nIElplvjQwhr0jg=="
},
"ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
},
"ignore": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
@@ -4393,6 +4543,11 @@
"integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
"dev": true
},
"repeat-string": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
},
"require-from-string": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+3 -1
View File
@@ -15,12 +15,14 @@
"author": "Misode",
"license": "MIT",
"dependencies": {
"@mcschema/core": "^0.12.16",
"@mcschema/core": "^0.12.17",
"@mcschema/java-1.15": "^0.2.2",
"@mcschema/java-1.16": "^0.6.5",
"@mcschema/java-1.17": "^0.2.24",
"@mcschema/java-1.18": "^0.2.2",
"@mcschema/locales": "^0.1.38",
"buffer": "^6.0.3",
"comment-json": "^4.1.1",
"deepslate": "^0.9.0-beta.6",
"deepslate-rs": "^0.1.6",
"howler": "^2.2.3",
+3 -2
View File
@@ -1,4 +1,5 @@
import { DataModel, ModelPath } from '@mcschema/core'
import json from 'comment-json'
import yaml from 'js-yaml'
import { useCallback, useEffect, useRef, useState } from 'preact/hooks'
import { Btn, BtnMenu } from '..'
@@ -23,8 +24,8 @@ const FORMATS: Record<string, {
stringify: (v: any, indentation: string | number | undefined) => string,
}> = {
json: {
parse: JSON.parse,
stringify: (v, i) => JSON.stringify(v, null, i),
parse: json.parse,
stringify: (v, i) => json.stringify(v, null, i),
},
yaml: {
parse: yaml.load,
-1
View File
@@ -11,7 +11,6 @@ type HomeProps = {
export function Home({ lang, changeTitle }: HomeProps) {
const loc = locale.bind(null, lang)
changeTitle(loc('title.home'))
console.log(config.generators)
return <main>
<div class="home">
<ToolCard title="Data packs">
+11 -1
View File
@@ -16,9 +16,13 @@ export const transformOutput: Hook<[any, OutputProps], any> = {
list({ children }, path, value, props) {
if (!Array.isArray(value)) return value
return value.map((obj, index) =>
const res = value.map((obj, index) =>
children.hook(this, path.push(index), obj.node, props)
)
for (const a of Object.getOwnPropertySymbols(value)) {
res[a as any] = value[a as any]
}
return res
},
map({ children, config }, path, value, props) {
@@ -31,6 +35,9 @@ export const transformOutput: Hook<[any, OutputProps], any> = {
}
res[f] = children.hook(this, path.push(f), value[f], props)
})
for (const a of Object.getOwnPropertySymbols(value)) {
res[a as any] = value[a]
}
return res
},
@@ -48,6 +55,9 @@ export const transformOutput: Hook<[any, OutputProps], any> = {
res[f] = out
}
})
for (const a of Object.getOwnPropertySymbols(value)) {
res[a as any] = value[a]
}
return res
},
}