From 684f4ef69b0467725326eadb7e6941f24aaac45e Mon Sep 17 00:00:00 2001 From: James <72664870+jg-rp@users.noreply.github.com> Date: Mon, 25 Sep 2023 12:03:52 +0100 Subject: [PATCH] Add basic JSONPath playground (#1) --- docs/docusaurus.config.js | 9 +- docs/package-lock.json | 602 ++++++++++++++++++ docs/package.json | 8 + .../components/JSONPathPlayground/index.js | 172 +++++ .../JSONPathPlayground/styles.module.css | 13 + docs/src/pages/playground.js | 11 + docs/static/img/favicon.ico | Bin 15086 -> 15086 bytes docs/static/img/p3_dark_path_plain.svg | 82 --- docs/static/img/p3_path_plain.svg | 71 --- docs/static/img/p3_v2_dark.svg | 39 ++ docs/static/img/p3_v2_light.svg | 39 ++ 11 files changed, 891 insertions(+), 155 deletions(-) create mode 100644 docs/src/components/JSONPathPlayground/index.js create mode 100644 docs/src/components/JSONPathPlayground/styles.module.css create mode 100644 docs/src/pages/playground.js delete mode 100644 docs/static/img/p3_dark_path_plain.svg delete mode 100644 docs/static/img/p3_path_plain.svg create mode 100644 docs/static/img/p3_v2_dark.svg create mode 100644 docs/static/img/p3_v2_light.svg diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index f1da3e4..2e2fdc5 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -70,8 +70,8 @@ const config = { title: "JSON P3", logo: { alt: "JSON P3", - src: "img/p3_path_plain.svg", - srcDark: "img/p3_dark_path_plain.svg", + src: "img/p3_v2_dark.svg", + srcDark: "img/p3_v2_light.svg", }, items: [ { @@ -85,6 +85,11 @@ const config = { label: "API", position: "left", }, + { + to: "/playground/", + label: "Try It", + position: "left", + }, { href: "https://github.com/jg-rp/json-p3", label: "GitHub", diff --git a/docs/package-lock.json b/docs/package-lock.json index cf6bec0..6e5b6d8 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -10,10 +10,18 @@ "dependencies": { "@docusaurus/core": "^2.4.3", "@docusaurus/preset-classic": "^2.4.3", + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", + "@fontsource/roboto": "^5.0.8", "@mdx-js/react": "^1.6.22", + "@monaco-editor/react": "^4.5.2", + "@mui/material": "^5.14.10", "@tsconfig/docusaurus": "^2.0.0", "clsx": "^1.2.1", "docusaurus-plugin-typedoc": "^0.20.1", + "json-p3": "^0.2.0", + "monaco-editor": "^0.43.0", + "monaco-themes": "^0.4.4", "prism-react-renderer": "^1.3.5", "react": "^17.0.2", "react-dom": "^17.0.2", @@ -28,6 +36,49 @@ "node": ">=16.14" } }, + "..": { + "version": "0.2.0", + "extraneous": true, + "license": "MIT", + "devDependencies": { + "@babel/cli": "^7.22.10", + "@babel/core": "^7.22.10", + "@babel/preset-env": "^7.22.10", + "@babel/preset-typescript": "^7.22.5", + "@jest/globals": "^29.6.3", + "@rollup/plugin-babel": "^6.0.3", + "@rollup/plugin-commonjs": "^25.0.4", + "@rollup/plugin-node-resolve": "^15.2.1", + "@rollup/plugin-replace": "^5.0.2", + "@rollup/plugin-terser": "^0.4.3", + "@rollup/plugin-typescript": "^11.1.3", + "@types/jest": "^29.5.3", + "@typescript-eslint/eslint-plugin": "^6.4.1", + "@typescript-eslint/parser": "^6.4.1", + "eslint": "^8.47.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-escompat": "^3.4.0", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-filenames": "^1.3.2", + "eslint-plugin-github": "^4.9.2", + "eslint-plugin-i18n-text": "^1.0.1", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsdoc": "^46.5.0", + "eslint-plugin-n": "^16.0.2", + "eslint-plugin-no-only-tests": "^3.1.0", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-sonarjs": "^0.20.0", + "eslint-plugin-tsdoc": "^0.2.17", + "jest": "^29.6.3", + "prettier": "^3.0.2", + "rollup": "^3.29.0", + "ts-jest": "^29.1.1", + "tslib": "^2.6.2", + "typescript": "^5.1.6" + } + }, "node_modules/@algolia/autocomplete-core": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", @@ -2744,6 +2795,186 @@ "node": ">=16.14" } }, + "node_modules/@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "dependencies": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "node_modules/@emotion/react": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", + "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", + "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", + "dependencies": { + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + }, + "node_modules/@emotion/styled": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.1", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + }, + "node_modules/@floating-ui/core": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", + "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", + "dependencies": { + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "dependencies": { + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz", + "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==", + "dependencies": { + "@floating-ui/dom": "^1.5.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.4.tgz", + "integrity": "sha512-qprfWkn82Iw821mcKofJ5Pk9wgioHicxcQMxx+5zt5GSKoqdWvgG5AxVmpmUUjzTLPVSH5auBrhI93Deayn/DA==" + }, + "node_modules/@fontsource/roboto": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@fontsource/roboto/-/roboto-5.0.8.tgz", + "integrity": "sha512-XxPltXs5R31D6UZeLIV1td3wTXU3jzd3f2DLsXI8tytMGBkIsGcc9sIyiupRtA8y73HAhuSCeweOoBqf6DbWCA==" + }, "node_modules/@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", @@ -2966,6 +3197,284 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/@monaco-editor/loader": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.3.3.tgz", + "integrity": "sha512-6KKF4CTzcJiS8BJwtxtfyYt9shBiEv32ateQ9T4UVogwn4HM/uPo9iJd2Dmbkpz8CM6Y0PDUpjnZzCwC+eYo2Q==", + "dependencies": { + "state-local": "^1.0.6" + }, + "peerDependencies": { + "monaco-editor": ">= 0.21.0 < 1" + } + }, + "node_modules/@monaco-editor/react": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.5.2.tgz", + "integrity": "sha512-emcWu6vg1OpXPiYll4aPOaXe8bwYB4UaaNTwtArFLgMoNGBzRZb2Xn0Bra2HMIFM7QLgs7fCGunHO5LkfT2LBA==", + "dependencies": { + "@monaco-editor/loader": "^1.3.3" + }, + "peerDependencies": { + "monaco-editor": ">= 0.25.0 < 1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@mui/base": { + "version": "5.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.16.tgz", + "integrity": "sha512-OYxhC81c9bO0wobGcM8rrY5bRwpCXAI21BL0P2wz/2vTv4ek7ALz9+U5M8wgdmtRNUhmCmAB4L2WRwFRf5Cd8Q==", + "dependencies": { + "@babel/runtime": "^7.22.15", + "@floating-ui/react-dom": "^2.0.2", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.10", + "@popperjs/core": "^2.11.8", + "clsx": "^2.0.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/base/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "5.14.10", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.10.tgz", + "integrity": "sha512-kPHu/NhZq1k+vSZR5wq3AyUfD4bnfWAeuKpps0+8PS7ZHQ2Lyv1cXJh+PlFdCIOa0PK98rk3JPwMzS8BMhdHwQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + } + }, + "node_modules/@mui/material": { + "version": "5.14.10", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.10.tgz", + "integrity": "sha512-ejFMppnO+lzBXpzju+N4SSz0Mhmi5sihXUGcr5FxpgB6bfUP0Lpe32O0Sw/3s8xlmLEvG1fqVT0rRyAVMlCA+A==", + "dependencies": { + "@babel/runtime": "^7.22.15", + "@mui/base": "5.0.0-beta.16", + "@mui/core-downloads-tracker": "^5.14.10", + "@mui/system": "^5.14.10", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.10", + "@types/react-transition-group": "^4.4.6", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/material/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/@mui/private-theming": { + "version": "5.14.10", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.10.tgz", + "integrity": "sha512-f67xOj3H06wWDT9xBg7hVL/HSKNF+HG1Kx0Pm23skkbEqD2Ef2Lif64e5nPdmWVv+7cISCYtSuE2aeuzrZe78w==", + "dependencies": { + "@babel/runtime": "^7.22.15", + "@mui/utils": "^5.14.10", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "5.14.10", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.10.tgz", + "integrity": "sha512-EJckxmQHrsBvDbFu1trJkvjNw/1R7jfNarnqPSnL+jEQawCkQIqVELWLrlOa611TFtxSJGkdUfCFXeJC203HVg==", + "dependencies": { + "@babel/runtime": "^7.22.15", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "5.14.10", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.10.tgz", + "integrity": "sha512-QQmtTG/R4gjmLiL5ECQ7kRxLKDm8aKKD7seGZfbINtRVJDyFhKChA1a+K2bfqIAaBo1EMDv+6FWNT1Q5cRKjFA==", + "dependencies": { + "@babel/runtime": "^7.22.15", + "@mui/private-theming": "^5.14.10", + "@mui/styled-engine": "^5.14.10", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.10", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/system/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/types": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.4.tgz", + "integrity": "sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==", + "peerDependencies": { + "@types/react": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "5.14.10", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.10.tgz", + "integrity": "sha512-Rn+vYQX7FxkcW0riDX/clNUwKuOJFH45HiULxwmpgnzQoQr3A0lb+QYwaZ+FAkZrR7qLoHKmLQlcItu6LT0y/Q==", + "dependencies": { + "@babel/runtime": "^7.22.15", + "@types/prop-types": "^15.7.5", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3003,6 +3512,15 @@ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz", "integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==" }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, "node_modules/@sideway/address": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", @@ -3532,6 +4050,14 @@ "@types/react-router": "*" } }, + "node_modules/@types/react-transition-group": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", + "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", @@ -4141,6 +4667,20 @@ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.4.5", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", @@ -5634,6 +6174,15 @@ "utila": "~0.4" } }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", @@ -6104,6 +6653,11 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, + "node_modules/fast-plist": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/fast-plist/-/fast-plist-0.1.3.tgz", + "integrity": "sha512-d9cEfo/WcOezgPLAC/8t8wGb6YOD6JTCPMw2QcG2nAdFmyY+9rTUizCTaGjIZAloWENTEUMAPpkUAIJJJ0i96A==" + }, "node_modules/fast-url-parser": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", @@ -6270,6 +6824,11 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, "node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -7713,6 +8272,11 @@ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" }, + "node_modules/json-p3": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/json-p3/-/json-p3-0.2.0.tgz", + "integrity": "sha512-oF2MCmnrZvO6Iq6ReWDzMRh5s84PuuX44J7TUvJrBiAmeyFO9eJYkQwu4QmuMR0nmRbu9/Mgx2FSz2OISuL7NQ==" + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -8240,6 +8804,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/monaco-editor": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.43.0.tgz", + "integrity": "sha512-cnoqwQi/9fml2Szamv1XbSJieGJ1Dc8tENVMD26Kcfl7xGQWp7OBKMjlwKVGYFJ3/AXJjSOGvcqK7Ry/j9BM1Q==" + }, + "node_modules/monaco-themes": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/monaco-themes/-/monaco-themes-0.4.4.tgz", + "integrity": "sha512-Hbb9pvRrpSi0rZezcB/IOdQnpx10o55Lx4zFdRAAVpFMa1HP7FgaqEZdKffb4ovd90fETCixeFO9JPYFMAq+TQ==", + "dependencies": { + "fast-plist": "^0.1.3" + } + }, "node_modules/mrmime": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", @@ -9935,6 +10512,21 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -11069,6 +11661,11 @@ "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility" }, + "node_modules/state-local": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz", + "integrity": "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==" + }, "node_modules/state-toggle": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", @@ -11214,6 +11811,11 @@ "postcss": "^8.2.15" } }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", diff --git a/docs/package.json b/docs/package.json index ab49f90..b768d3a 100644 --- a/docs/package.json +++ b/docs/package.json @@ -16,10 +16,18 @@ "dependencies": { "@docusaurus/core": "^2.4.3", "@docusaurus/preset-classic": "^2.4.3", + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", + "@fontsource/roboto": "^5.0.8", "@mdx-js/react": "^1.6.22", + "@monaco-editor/react": "^4.5.2", + "@mui/material": "^5.14.10", "@tsconfig/docusaurus": "^2.0.0", "clsx": "^1.2.1", "docusaurus-plugin-typedoc": "^0.20.1", + "json-p3": "^0.2.0", + "monaco-editor": "^0.43.0", + "monaco-themes": "^0.4.4", "prism-react-renderer": "^1.3.5", "react": "^17.0.2", "react-dom": "^17.0.2", diff --git a/docs/src/components/JSONPathPlayground/index.js b/docs/src/components/JSONPathPlayground/index.js new file mode 100644 index 0000000..7fab4eb --- /dev/null +++ b/docs/src/components/JSONPathPlayground/index.js @@ -0,0 +1,172 @@ +import React from "react"; +import { useState } from "react"; + +import { Container } from "@mui/material"; +import Paper from "@mui/material/Paper"; +import Grid from "@mui/material/Unstable_Grid2"; +import Editor from "@monaco-editor/react"; +import styles from "./styles.module.css"; + +import { jsonpath, version as p3version } from "json-p3/dist/json-p3.esm"; + +const commonEditorOptions = { + codeLens: false, + minimap: { enabled: false }, + tabSize: 2, + renderLineHighlight: "none", + scrollBeyondLastLine: false, + scrollbar: { alwaysConsumeMouseWheel: false }, + padding: { bottom: 10, top: 10 }, +}; + +const theme = "vs-dark"; + +// function handleEditorDidMount(editor, monaco) { +// import("monaco-themes/themes/Tomorrow-Night-Eighties.json") +// .then((themeData) => { +// monaco.editor.defineTheme("Tomorrow-Night-Eighties", themeData); +// }) +// .then((_) => monaco.editor.setTheme("Tomorrow-Night-Eighties")); +// } + +function QueryEditor({ defaultQuery, onChange }) { + return ( + + ); +} + +function JSONEditor({ onChange }) { + const defaultValue = JSON.stringify( + { + users: [ + { name: "Sue", score: 100 }, + { name: "John", score: 86, admin: true }, + { name: "Sally", score: 84, admin: false }, + { name: "Jane", score: 55 }, + ], + moderator: "John", + }, + undefined, + " ", + ); + + return ( + + ); +} + +function ResultsEditor({ result }) { + return ( + + ); +} + +export default function Playground() { + let timer; + const timerInterval = 1000; + const defaultQuery = "$.users[?@.score > 85]"; + const defaultResult = JSON.stringify( + [ + { name: "Sue", score: 100 }, + { name: "John", score: 86, admin: true }, + ], + undefined, + " ", + ); + const defaultData = { + users: [ + { name: "Sue", score: 100 }, + { name: "John", score: 86, admin: true }, + { name: "Sally", score: 84, admin: false }, + { name: "Jane", score: 55 }, + ], + moderator: "John", + }; + + const [query, setQuery] = useState(jsonpath.compile(defaultQuery)); + const [result, setResult] = useState(defaultResult); + const [data, setData] = useState(defaultData); + + function _onQueryChange(value) { + try { + const path = jsonpath.compile(value.trim()); + setQuery(path); + const rv = path.query(data).values(); + setResult(JSON.stringify(rv, undefined, " ")); + } catch (error) { + setResult(JSON.stringify(String(error), undefined, " ")); + } + } + + function onQueryChange(value) { + clearTimeout(timer); + timer = setTimeout(() => _onQueryChange(value), timerInterval); + } + + function _onDataChange(value) { + try { + const _data = JSON.parse(value); + setData(_data); + const rv = query.query(_data).values(); + setResult(JSON.stringify(rv, undefined, " ")); + } catch (error) { + setResult(JSON.stringify(String(error), undefined, " ")); + } + } + + function onDataChange(value) { + clearTimeout(timer); + timer = setTimeout(() => _onDataChange(value), timerInterval); + } + + return ( + + + +

+ JSONPath Query + P3 Version {p3version} +

+ + + +
+ +

JSON Data

+ + + +
+ +

Query Results

+ + + +
+
+
+ ); +} diff --git a/docs/src/components/JSONPathPlayground/styles.module.css b/docs/src/components/JSONPathPlayground/styles.module.css new file mode 100644 index 0000000..d1f68b9 --- /dev/null +++ b/docs/src/components/JSONPathPlayground/styles.module.css @@ -0,0 +1,13 @@ +.heading { + font-size: 18px; + /* font-family: "monospace"; */ + font-weight: lighter; + margin-bottom: 5px; + margin-left: 5px; +} + +.version { + font-size: 12px; + float: right; + +} diff --git a/docs/src/pages/playground.js b/docs/src/pages/playground.js new file mode 100644 index 0000000..1e3797e --- /dev/null +++ b/docs/src/pages/playground.js @@ -0,0 +1,11 @@ +import React from "react"; +import Layout from "@theme/Layout"; +import Playground from "../components/JSONPathPlayground"; + +export default function PlaygroundPage() { + return ( + + + + ); +} diff --git a/docs/static/img/favicon.ico b/docs/static/img/favicon.ico index 191b21a700635c967d878fb13e663a092180fba4..96431bc10c335dffc172e24ba50ae426935fbc14 100644 GIT binary patch literal 15086 zcmeI2SEyCH7KZ1!=RDn~^KzbSTT!vQ!LAQpMMcGqilSIhv4LVi5k)L0cCn#iLBTFq zuvf%_y`X}Mh`m49dl`3r*(dX6W@pZ|_Fil6b>yxpC$GH8|GwJ)mYe%`xq|1l_{;Mu`E~rie2Tp9e&Tt4y?_6f7ggE+ zDN&+?WHRRF=E}5b(`3q&DNY>Sx^YO}zQq?J4y0j|u zL%n(P<^|YX?H@2;fU5uY?OQ2XvZRUw2M&~xBS*@G3m4RX^XJbG$v4NZSFc{G&c}}* z^YsH`KzRK4aflvV$QUzbjNH0)OVzn}@uG|yH%@(P*RGv3Z{A$#5Px33emz952#lXs zuU@G!NAK+LzaLxQ95>eHJ$v>D>q1muT|RQ;h;;7U*~xe8*s&o}aF{aU z@^NxQO#K4;8~dcquejuEJoK4~AszBr+u6$|O`0UbhYy#bLx-w$SMMuYHtF-{&xO59 zV@O5*oH=u(QKLoyFU`|T=gysLidXqIZQ2AhsmM3wMCI9QZ9N$>WJs~e2iLW0*Ft^3 zoYQ!Vy8Vpx`}gld^06PItpc_aHfotNWdeFFpK)dlBx2+B?b}y2ZrrHmy~zfB)HI|8k+1n+b0g2> z1Exe_!-fr^x#yD4I;Gd*uV24Lvh3HdUsCevZ^p1omoB0D8oS+od;O(9wS8}bIehqV zh+ka$Z``;clP6Dhj$0!68s~`(ocTJ+BM~^1#f4lu! z{^G@pO;#$OXg+Wbc=6&zh>rGZo}|gPpE+m;a~_#I%{+U88BU!#RVev8ckVRVM4l~8 z+2lu!8Wp0uckf<-<@e~(LpWQS;r#jYQmDslcQ?HPXPM$q`)+AGFv5C>{f99Ol zBi6yYckhPib%AxQd-v|Dh|bVItSy}9`uFdz^!?_|o4R_Cu357tw*5iHm<;m?-P7`8 zs)qie4;%aE>$vuZ2polD$BwD<9XtvmpMD)YcyLHIJna5AMbfXFyV2R@%a=?0_U%LT ztWBKXIoC%8Agfx{lW5;Tr zxS5V0KRzYC8WZPU{7dWCua`4t&d8G|PXxcb8Msq;^yrarw&zTt??W_?xD+3gE8tU# zqf7MP!i5Xv!Gi}b)=7QC&&6F-A~{8c|LN1GN#TsE#5gTox-_3(!EDn%8NY5DZ7?yL z`CkD)?J)ggnZS?FoO3ch7WxdoHTPwt`}XY<{9tk6^5x6UF(}IZfA{X4Y}&L*-8<-e zKC|!4eEIU_)mhnIo6I)Vty?!=8;S})=e0zbP5e5~{d`ow@1g7Iw5afF{sm3(ndy6N zyB+KeHot!we(>$zzu$(g%Bxqe{w46^n{b6?%a;8T`0+)#!qll#lg7{c3+=nFRjZb= zwQSuhiZZqj{&rXB)TvX__+9jTV@4sprAwDCIYndl;rq0C zN6lX+6URqWf+gJ1Uxy2yT&=sv12_`%YmMT^LF`r*TeDdX4exO(-fRIgs$$qyWb#SiW6 z+qbotP>QV|^{x>*9T^YaT5#vW`5wJ@g@XqV1~i&hr>WqFZ&biHqGcqTvIj)j{~bDX zaPmt9Kkt;H0`C=*#ckG$;<<9=N+-Wm@Si((E((6^nr-5>^D}48bn-lX`gB_H^Cs8z z<{07jJ-&@GuDoK!3MYR3j@70uZ2zxayVfa(kKBhMr$&t$&OWm-=rZ;j?{!^)w+_0V znI?;$Jsf+Q{mgzhVavl0i41&Lj61fMeMf9!AkTckCW;E+v}q_u;g8~z=sR{?&6+ip zEcQS%@a}@KVJ`Bnn|7ivtYcBSsOfwA@6C$?zkY9yEE~VZQqUBe%4PefyZ?CuZth#@ zz>gha-|?H{kPiL9e&_9mZFi=MA6;Z`Hu2i|!s5pUQctFS31+)q%u1px*&y)6De1e*uJSO$7h| literal 15086 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 diff --git a/docs/static/img/p3_dark_path_plain.svg b/docs/static/img/p3_dark_path_plain.svg deleted file mode 100644 index d80d802..0000000 --- a/docs/static/img/p3_dark_path_plain.svg +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/static/img/p3_path_plain.svg b/docs/static/img/p3_path_plain.svg deleted file mode 100644 index 6137f2f..0000000 --- a/docs/static/img/p3_path_plain.svg +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/static/img/p3_v2_dark.svg b/docs/static/img/p3_v2_dark.svg new file mode 100644 index 0000000..5fe286c --- /dev/null +++ b/docs/static/img/p3_v2_dark.svg @@ -0,0 +1,39 @@ + + + + + + + + + P3 + + + diff --git a/docs/static/img/p3_v2_light.svg b/docs/static/img/p3_v2_light.svg new file mode 100644 index 0000000..79a35f9 --- /dev/null +++ b/docs/static/img/p3_v2_light.svg @@ -0,0 +1,39 @@ + + + + + + + + + P3 + + +