From dc9895a767aa78ae6d5054a5a62012da252fb7e9 Mon Sep 17 00:00:00 2001 From: Ryan Melton Date: Fri, 12 Jan 2024 16:13:23 -0700 Subject: [PATCH 1/5] Dynamic target support. Improve build time to only rebuild docs no base change. Update docusaurus --- docs.openc3.com/package.json | 14 +- docs.openc3.com/yarn.lock | 708 +++++++------------ openc3-cosmos-init/Dockerfile | 15 +- openc3-node/Dockerfile | 2 +- openc3-node/Dockerfile-ubi | 2 +- openc3/lib/openc3/accessors/http_accessor.rb | 28 + openc3/lib/openc3/models/gem_model.rb | 10 + openc3/lib/openc3/models/plugin_model.rb | 5 + openc3/lib/openc3/models/target_model.rb | 77 +- openc3/lib/openc3/packets/packet.rb | 40 +- openc3/lib/openc3/system/system.rb | 14 +- 11 files changed, 450 insertions(+), 465 deletions(-) diff --git a/docs.openc3.com/package.json b/docs.openc3.com/package.json index 103343ad83..413c9cdb60 100644 --- a/docs.openc3.com/package.json +++ b/docs.openc3.com/package.json @@ -16,18 +16,18 @@ "write-heading-ids": "docusaurus write-heading-ids" }, "dependencies": { - "@docusaurus/core": "3.0.0", - "@docusaurus/plugin-client-redirects": "3.0.0", - "@docusaurus/preset-classic": "3.0.0", + "@docusaurus/core": "3.1.0", + "@docusaurus/plugin-client-redirects": "3.1.0", + "@docusaurus/preset-classic": "3.1.0", "@mdx-js/react": "3.0.0", - "docusaurus-lunr-search": "3.3.0", - "prism-react-renderer": "2.1.0", + "docusaurus-lunr-search": "3.3.2", + "prism-react-renderer": "2.3.1", "react": "18.2.0", "react-dom": "18.2.0" }, "devDependencies": { - "@docusaurus/module-type-aliases": "3.0.0", - "@docusaurus/types": "3.0.0" + "@docusaurus/module-type-aliases": "3.1.0", + "@docusaurus/types": "3.1.0" }, "browserslist": { "production": [ diff --git a/docs.openc3.com/yarn.lock b/docs.openc3.com/yarn.lock index ec534f5e64..1e0b1baac3 100644 --- a/docs.openc3.com/yarn.lock +++ b/docs.openc3.com/yarn.lock @@ -159,7 +159,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== -"@babel/core@^7.19.6", "@babel/core@^7.22.9": +"@babel/core@^7.19.6": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.6.tgz#8be77cd77c55baadcc1eae1c33df90ab6d2151d4" integrity sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw== @@ -180,7 +180,28 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.22.9", "@babel/generator@^7.23.6": +"@babel/core@^7.23.3": + version "7.23.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.7.tgz#4d8016e06a14b5f92530a13ed0561730b5c6483f" + integrity sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.7" + "@babel/parser" "^7.23.6" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.7" + "@babel/types" "^7.23.6" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.23.3", "@babel/generator@^7.23.6": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== @@ -379,6 +400,15 @@ "@babel/traverse" "^7.23.6" "@babel/types" "^7.23.6" +"@babel/helpers@^7.23.7": + version "7.23.8" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.8.tgz#fc6b2d65b16847fd50adddbd4232c76378959e34" + integrity sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ== + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.7" + "@babel/types" "^7.23.6" + "@babel/highlight@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" @@ -1145,7 +1175,7 @@ core-js-pure "^3.30.2" regenerator-runtime "^0.14.0" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.22.6", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.22.6", "@babel/runtime@^7.8.4": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.6.tgz#c05e610dc228855dc92ef1b53d07389ed8ab521d" integrity sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ== @@ -1177,6 +1207,22 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.23.7": + version "7.23.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.7.tgz#9a7bf285c928cb99b5ead19c3b1ce5b310c9c305" + integrity sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.6" + "@babel/types" "^7.23.6" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.20.0", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.4.4": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" @@ -1211,13 +1257,13 @@ "@docsearch/css" "3.5.2" algoliasearch "^4.19.1" -"@docusaurus/core@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.0.0.tgz#46bc9bf2bcd99ca98a1c8f10a70bf3afaaaf9dcb" - integrity sha512-bHWtY55tJTkd6pZhHrWz1MpWuwN4edZe0/UWgFF7PW/oJeDZvLSXKqwny3L91X1/LGGoypBGkeZn8EOuKeL4yQ== +"@docusaurus/core@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.1.0.tgz#b66e7eaf867c1f44738d725d217a1c0e879629d7" + integrity sha512-GWudMGYA9v26ssbAWJNfgeDZk+lrudUTclLPRsmxiknEBk7UMp7Rglonhqbsf3IKHOyHkMU4Fr5jFyg5SBx9jQ== dependencies: - "@babel/core" "^7.22.9" - "@babel/generator" "^7.22.9" + "@babel/core" "^7.23.3" + "@babel/generator" "^7.23.3" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-transform-runtime" "^7.22.9" "@babel/preset-env" "^7.22.9" @@ -1226,13 +1272,13 @@ "@babel/runtime" "^7.22.6" "@babel/runtime-corejs3" "^7.22.6" "@babel/traverse" "^7.22.8" - "@docusaurus/cssnano-preset" "3.0.0" - "@docusaurus/logger" "3.0.0" - "@docusaurus/mdx-loader" "3.0.0" + "@docusaurus/cssnano-preset" "3.1.0" + "@docusaurus/logger" "3.1.0" + "@docusaurus/mdx-loader" "3.1.0" "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/utils" "3.0.0" - "@docusaurus/utils-common" "3.0.0" - "@docusaurus/utils-validation" "3.0.0" + "@docusaurus/utils" "3.1.0" + "@docusaurus/utils-common" "3.1.0" + "@docusaurus/utils-validation" "3.1.0" "@slorber/static-site-generator-webpack-plugin" "^4.0.7" "@svgr/webpack" "^6.5.1" autoprefixer "^10.4.14" @@ -1280,41 +1326,40 @@ tslib "^2.6.0" update-notifier "^6.0.2" url-loader "^4.1.1" - wait-on "^7.0.1" webpack "^5.88.1" webpack-bundle-analyzer "^4.9.0" webpack-dev-server "^4.15.1" webpack-merge "^5.9.0" webpackbar "^5.0.2" -"@docusaurus/cssnano-preset@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.0.0.tgz#87fbf9cbc7c383e207119b44c17fb1d05c73af7c" - integrity sha512-FHiRfwmVvIVdIGsHcijUOaX7hMn0mugVYB7m4GkpYI6Mi56zwQV4lH5p7DxcW5CUYNWMVxz2loWSCiWEm5ikwA== +"@docusaurus/cssnano-preset@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.1.0.tgz#b3fe7134cc4d0c1950eeb1c940089a190591ad4e" + integrity sha512-ned7qsgCqSv/e7KyugFNroAfiszuxLwnvMW7gmT2Ywxb/Nyt61yIw7KHyAZCMKglOalrqnYA4gMhLUCK/mVePA== dependencies: cssnano-preset-advanced "^5.3.10" postcss "^8.4.26" postcss-sort-media-queries "^4.4.1" tslib "^2.6.0" -"@docusaurus/logger@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.0.0.tgz#02a4bfecec6aa3732c8bd9597ca9d5debab813a6" - integrity sha512-6eX0eOfioMQCk+qgCnHvbLLuyIAA+r2lSID6d6JusiLtDKmYMfNp3F4yyE8bnb0Abmzt2w68XwptEFYyALSAXw== +"@docusaurus/logger@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.1.0.tgz#eef6475c2d59a3ae7e138ac1f60007d6fafd76b0" + integrity sha512-p740M+HCst1VnKKzL60Hru9xfG4EUYJDarjlEC4hHeBy9+afPmY3BNPoSHx9/8zxuYfUlv/psf7I9NvRVdmdvg== dependencies: chalk "^4.1.2" tslib "^2.6.0" -"@docusaurus/mdx-loader@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.0.0.tgz#2593889e43dc4bbd8dfa074d86c8bb4206cf4171" - integrity sha512-JkGge6WYDrwjNgMxwkb6kNQHnpISt5L1tMaBWFDBKeDToFr5Kj29IL35MIQm0RfrnoOfr/29RjSH4aRtvlAR0A== +"@docusaurus/mdx-loader@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.1.0.tgz#61d562ff442f62ef04cc31d3f0d5865a8dd390e4" + integrity sha512-D7onDz/3mgBonexWoQXPw3V2E5Bc4+jYRf9gGUUK+KoQwU8xMDaDkUUfsr7t6UBa/xox9p5+/3zwLuXOYMzGSg== dependencies: "@babel/parser" "^7.22.7" "@babel/traverse" "^7.22.8" - "@docusaurus/logger" "3.0.0" - "@docusaurus/utils" "3.0.0" - "@docusaurus/utils-validation" "3.0.0" + "@docusaurus/logger" "3.1.0" + "@docusaurus/utils" "3.1.0" + "@docusaurus/utils-validation" "3.1.0" "@mdx-js/mdx" "^3.0.0" "@slorber/remark-comment" "^1.0.0" escape-html "^1.0.3" @@ -1337,13 +1382,13 @@ vfile "^6.0.1" webpack "^5.88.1" -"@docusaurus/module-type-aliases@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.0.0.tgz#9a7dd323bb87ca666eb4b0b4b90d04425f2e05d6" - integrity sha512-CfC6CgN4u/ce+2+L1JdsHNyBd8yYjl4De2B2CBj2a9F7WuJ5RjV1ciuU7KDg8uyju+NRVllRgvJvxVUjCdkPiw== +"@docusaurus/module-type-aliases@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.1.0.tgz#f3451702f143557bfde0502287713a08086a0415" + integrity sha512-XUl7Z4PWlKg4l6KF05JQ3iDHQxnPxbQUqTNKvviHyuHdlalOFv6qeDAm7IbzyQPJD5VA6y4dpRbTWSqP9ClwPg== dependencies: "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/types" "3.0.0" + "@docusaurus/types" "3.1.0" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" @@ -1351,33 +1396,33 @@ react-helmet-async "*" react-loadable "npm:@docusaurus/react-loadable@5.5.2" -"@docusaurus/plugin-client-redirects@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.0.0.tgz#983880c467228ed8b1aba5f20ce564696e25f363" - integrity sha512-JcZLod4lgPdbv/OpCbNwTc57u54d01dcWiDy/sBaxls/4HkDGdj6838oBPzbBdnCWrmasBIRz3JYLk+1GU0IOQ== - dependencies: - "@docusaurus/core" "3.0.0" - "@docusaurus/logger" "3.0.0" - "@docusaurus/utils" "3.0.0" - "@docusaurus/utils-common" "3.0.0" - "@docusaurus/utils-validation" "3.0.0" +"@docusaurus/plugin-client-redirects@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.1.0.tgz#1d107a319d83da24edac0a672681b098129eee8f" + integrity sha512-CuFbdciMGvtGYiIPSOpj5idsHOQUcqZWTLCmZV3ePhviekm4dRZm1+QK/BxigmSTL5ICJMGbtOQnz7bgFSWHqg== + dependencies: + "@docusaurus/core" "3.1.0" + "@docusaurus/logger" "3.1.0" + "@docusaurus/utils" "3.1.0" + "@docusaurus/utils-common" "3.1.0" + "@docusaurus/utils-validation" "3.1.0" eta "^2.2.0" fs-extra "^11.1.1" lodash "^4.17.21" tslib "^2.6.0" -"@docusaurus/plugin-content-blog@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.0.0.tgz#5f3ede003b2b7103043918fbe3f436c116839ca8" - integrity sha512-iA8Wc3tIzVnROJxrbIsU/iSfixHW16YeW9RWsBw7hgEk4dyGsip9AsvEDXobnRq3lVv4mfdgoS545iGWf1Ip9w== - dependencies: - "@docusaurus/core" "3.0.0" - "@docusaurus/logger" "3.0.0" - "@docusaurus/mdx-loader" "3.0.0" - "@docusaurus/types" "3.0.0" - "@docusaurus/utils" "3.0.0" - "@docusaurus/utils-common" "3.0.0" - "@docusaurus/utils-validation" "3.0.0" +"@docusaurus/plugin-content-blog@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.1.0.tgz#d2102e9286486e526dbc0dfc741e53dc5cee0ff0" + integrity sha512-iMa6WBaaEdYuxckvJtLcq/HQdlA4oEbCXf/OFfsYJCCULcDX7GDZpKxLF3X1fLsax3sSm5bmsU+CA0WD+R1g3A== + dependencies: + "@docusaurus/core" "3.1.0" + "@docusaurus/logger" "3.1.0" + "@docusaurus/mdx-loader" "3.1.0" + "@docusaurus/types" "3.1.0" + "@docusaurus/utils" "3.1.0" + "@docusaurus/utils-common" "3.1.0" + "@docusaurus/utils-validation" "3.1.0" cheerio "^1.0.0-rc.12" feed "^4.2.2" fs-extra "^11.1.1" @@ -1389,18 +1434,18 @@ utility-types "^3.10.0" webpack "^5.88.1" -"@docusaurus/plugin-content-docs@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.0.0.tgz#b579c65d7386905890043bdd4a8f9da3194e90fa" - integrity sha512-MFZsOSwmeJ6rvoZMLieXxPuJsA9M9vn7/mUZmfUzSUTeHAeq+fEqvLltFOxcj4DVVDTYlQhgWYd+PISIWgamKw== - dependencies: - "@docusaurus/core" "3.0.0" - "@docusaurus/logger" "3.0.0" - "@docusaurus/mdx-loader" "3.0.0" - "@docusaurus/module-type-aliases" "3.0.0" - "@docusaurus/types" "3.0.0" - "@docusaurus/utils" "3.0.0" - "@docusaurus/utils-validation" "3.0.0" +"@docusaurus/plugin-content-docs@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.1.0.tgz#55d7bdb8e14f854ea6c6e256f1b51b8c17963c19" + integrity sha512-el5GxhT8BLrsWD0qGa8Rq+Ttb/Ni6V3DGT2oAPio0qcs/mUAxeyXEAmihkvmLCnAgp6xD27Ce7dISZ5c6BXeqA== + dependencies: + "@docusaurus/core" "3.1.0" + "@docusaurus/logger" "3.1.0" + "@docusaurus/mdx-loader" "3.1.0" + "@docusaurus/module-type-aliases" "3.1.0" + "@docusaurus/types" "3.1.0" + "@docusaurus/utils" "3.1.0" + "@docusaurus/utils-validation" "3.1.0" "@types/react-router-config" "^5.0.7" combine-promises "^1.1.0" fs-extra "^11.1.1" @@ -1410,96 +1455,96 @@ utility-types "^3.10.0" webpack "^5.88.1" -"@docusaurus/plugin-content-pages@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.0.0.tgz#519a946a477a203989080db70dd787cb6db15fab" - integrity sha512-EXYHXK2Ea1B5BUmM0DgSwaOYt8EMSzWtYUToNo62Q/EoWxYOQFdWglYnw3n7ZEGyw5Kog4LHaRwlazAdmDomvQ== - dependencies: - "@docusaurus/core" "3.0.0" - "@docusaurus/mdx-loader" "3.0.0" - "@docusaurus/types" "3.0.0" - "@docusaurus/utils" "3.0.0" - "@docusaurus/utils-validation" "3.0.0" +"@docusaurus/plugin-content-pages@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.1.0.tgz#cdb73c804ded307e81ceea39874dc0bb540c2dc4" + integrity sha512-9gntYQFpk+93+Xl7gYczJu8I9uWoyRLnRwS0+NUFcs9iZtHKsdqKWPRrONC9elfN3wJ9ORwTbcVzsTiB8jvYlg== + dependencies: + "@docusaurus/core" "3.1.0" + "@docusaurus/mdx-loader" "3.1.0" + "@docusaurus/types" "3.1.0" + "@docusaurus/utils" "3.1.0" + "@docusaurus/utils-validation" "3.1.0" fs-extra "^11.1.1" tslib "^2.6.0" webpack "^5.88.1" -"@docusaurus/plugin-debug@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.0.0.tgz#9c6d4abfd5357dbebccf5b41f5aefc06116e03e3" - integrity sha512-gSV07HfQgnUboVEb3lucuVyv5pEoy33E7QXzzn++3kSc/NLEimkjXh3sSnTGOishkxCqlFV9BHfY/VMm5Lko5g== +"@docusaurus/plugin-debug@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.1.0.tgz#545872bc8f9cd697d9f1d6c695f8a1674bfc149c" + integrity sha512-AbvJwCVRbmQ8w9d8QXbF4Iq/ui0bjPZNYFIhtducGFnm2YQRN1mraK8mCEQb0Aq0T8SqRRvSfC/far4n/s531w== dependencies: - "@docusaurus/core" "3.0.0" - "@docusaurus/types" "3.0.0" - "@docusaurus/utils" "3.0.0" - "@microlink/react-json-view" "^1.22.2" + "@docusaurus/core" "3.1.0" + "@docusaurus/types" "3.1.0" + "@docusaurus/utils" "3.1.0" fs-extra "^11.1.1" + react-json-view-lite "^1.2.0" tslib "^2.6.0" -"@docusaurus/plugin-google-analytics@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.0.0.tgz#8a54f5e21b55c133b6be803ac51bf92d4a515cca" - integrity sha512-0zcLK8w+ohmSm1fjUQCqeRsjmQc0gflvXnaVA/QVVCtm2yCiBtkrSGQXqt4MdpD7Xq8mwo3qVd5nhIcvrcebqw== +"@docusaurus/plugin-google-analytics@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.1.0.tgz#3035eace3121db16aec7c10852ebb4cd860f4434" + integrity sha512-zvUOMzu9Uhz0ciqnSbtnp/5i1zEYlzarQrOXG90P3Is3efQI43p2YLW/rzSGdLb5MfQo2HvKT6Q5+tioMO045Q== dependencies: - "@docusaurus/core" "3.0.0" - "@docusaurus/types" "3.0.0" - "@docusaurus/utils-validation" "3.0.0" + "@docusaurus/core" "3.1.0" + "@docusaurus/types" "3.1.0" + "@docusaurus/utils-validation" "3.1.0" tslib "^2.6.0" -"@docusaurus/plugin-google-gtag@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.0.0.tgz#a4c407b80cb46773bea070816ebb547c5663f0b3" - integrity sha512-asEKavw8fczUqvXu/s9kG2m1epLnHJ19W6CCCRZEmpnkZUZKiM8rlkDiEmxApwIc2JDDbIMk+Y2TMkJI8mInbQ== +"@docusaurus/plugin-google-gtag@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.1.0.tgz#2f4040da81d36bfc6324abc1a12b258e6c7f202a" + integrity sha512-0txshvaY8qIBdkk2UATdVcfiCLGq3KAUfuRQD2cRNgO39iIf4/ihQxH9NXcRTwKs4Q5d9yYHoix3xT6pFuEYOg== dependencies: - "@docusaurus/core" "3.0.0" - "@docusaurus/types" "3.0.0" - "@docusaurus/utils-validation" "3.0.0" + "@docusaurus/core" "3.1.0" + "@docusaurus/types" "3.1.0" + "@docusaurus/utils-validation" "3.1.0" "@types/gtag.js" "^0.0.12" tslib "^2.6.0" -"@docusaurus/plugin-google-tag-manager@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.0.0.tgz#8befa315b4747618e9ea65add3f2f4e84df2c7ba" - integrity sha512-lytgu2eyn+7p4WklJkpMGRhwC29ezj4IjPPmVJ8vGzcSl6JkR1sADTHLG5xWOMuci420xZl9dGEiLTQ8FjCRyA== +"@docusaurus/plugin-google-tag-manager@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.1.0.tgz#4c026e9f65468a332326770f95ccd9c6e12d564b" + integrity sha512-zOWPEi8kMyyPtwG0vhyXrdbLs8fIZmY5vlbi9lUU+v8VsroO5iHmfR2V3SMsrsfOanw5oV/ciWqbxezY00qEZg== dependencies: - "@docusaurus/core" "3.0.0" - "@docusaurus/types" "3.0.0" - "@docusaurus/utils-validation" "3.0.0" + "@docusaurus/core" "3.1.0" + "@docusaurus/types" "3.1.0" + "@docusaurus/utils-validation" "3.1.0" tslib "^2.6.0" -"@docusaurus/plugin-sitemap@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.0.0.tgz#91f300e500d476252ea2f40449ee828766b9b9d6" - integrity sha512-cfcONdWku56Oi7Hdus2uvUw/RKRRlIGMViiHLjvQ21CEsEqnQ297MRoIgjU28kL7/CXD/+OiANSq3T1ezAiMhA== - dependencies: - "@docusaurus/core" "3.0.0" - "@docusaurus/logger" "3.0.0" - "@docusaurus/types" "3.0.0" - "@docusaurus/utils" "3.0.0" - "@docusaurus/utils-common" "3.0.0" - "@docusaurus/utils-validation" "3.0.0" +"@docusaurus/plugin-sitemap@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.1.0.tgz#9d9dbb4d87e6dc46ae9321badf6ac7cd9aa96b23" + integrity sha512-TkR5vGBpUooEB9SoW42thahqqwKzfHrQQhkB+JrEGERsl4bKODSuJNle4aA4h6LSkg4IyfXOW8XOI0NIPWb9Cg== + dependencies: + "@docusaurus/core" "3.1.0" + "@docusaurus/logger" "3.1.0" + "@docusaurus/types" "3.1.0" + "@docusaurus/utils" "3.1.0" + "@docusaurus/utils-common" "3.1.0" + "@docusaurus/utils-validation" "3.1.0" fs-extra "^11.1.1" sitemap "^7.1.1" tslib "^2.6.0" -"@docusaurus/preset-classic@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.0.0.tgz#b05c3960c4d0a731b2feb97e94e3757ab073c611" - integrity sha512-90aOKZGZdi0+GVQV+wt8xx4M4GiDrBRke8NO8nWwytMEXNrxrBxsQYFRD1YlISLJSCiHikKf3Z/MovMnQpnZyg== - dependencies: - "@docusaurus/core" "3.0.0" - "@docusaurus/plugin-content-blog" "3.0.0" - "@docusaurus/plugin-content-docs" "3.0.0" - "@docusaurus/plugin-content-pages" "3.0.0" - "@docusaurus/plugin-debug" "3.0.0" - "@docusaurus/plugin-google-analytics" "3.0.0" - "@docusaurus/plugin-google-gtag" "3.0.0" - "@docusaurus/plugin-google-tag-manager" "3.0.0" - "@docusaurus/plugin-sitemap" "3.0.0" - "@docusaurus/theme-classic" "3.0.0" - "@docusaurus/theme-common" "3.0.0" - "@docusaurus/theme-search-algolia" "3.0.0" - "@docusaurus/types" "3.0.0" +"@docusaurus/preset-classic@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.1.0.tgz#ca67d5e416c211b4c23f0fb01f0e3e36b759dfa0" + integrity sha512-xGLQRFmmT9IinAGUDVRYZ54Ys28USNbA3OTXQXnSJLPr1rCY7CYnHI4XoOnKWrNnDiAI4ruMzunXWyaElUYCKQ== + dependencies: + "@docusaurus/core" "3.1.0" + "@docusaurus/plugin-content-blog" "3.1.0" + "@docusaurus/plugin-content-docs" "3.1.0" + "@docusaurus/plugin-content-pages" "3.1.0" + "@docusaurus/plugin-debug" "3.1.0" + "@docusaurus/plugin-google-analytics" "3.1.0" + "@docusaurus/plugin-google-gtag" "3.1.0" + "@docusaurus/plugin-google-tag-manager" "3.1.0" + "@docusaurus/plugin-sitemap" "3.1.0" + "@docusaurus/theme-classic" "3.1.0" + "@docusaurus/theme-common" "3.1.0" + "@docusaurus/theme-search-algolia" "3.1.0" + "@docusaurus/types" "3.1.0" "@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": version "5.5.2" @@ -1509,93 +1554,94 @@ "@types/react" "*" prop-types "^15.6.2" -"@docusaurus/theme-classic@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.0.0.tgz#a47eda40747e1a6f79190e6bb786d3a7fc4e06b2" - integrity sha512-wWOHSrKMn7L4jTtXBsb5iEJ3xvTddBye5PjYBnWiCkTAlhle2yMdc4/qRXW35Ot+OV/VXu6YFG8XVUJEl99z0A== - dependencies: - "@docusaurus/core" "3.0.0" - "@docusaurus/mdx-loader" "3.0.0" - "@docusaurus/module-type-aliases" "3.0.0" - "@docusaurus/plugin-content-blog" "3.0.0" - "@docusaurus/plugin-content-docs" "3.0.0" - "@docusaurus/plugin-content-pages" "3.0.0" - "@docusaurus/theme-common" "3.0.0" - "@docusaurus/theme-translations" "3.0.0" - "@docusaurus/types" "3.0.0" - "@docusaurus/utils" "3.0.0" - "@docusaurus/utils-common" "3.0.0" - "@docusaurus/utils-validation" "3.0.0" +"@docusaurus/theme-classic@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.1.0.tgz#6ee68bf4d4db53c8d9b18d4866512abadb00a802" + integrity sha512-/+jMl2Z9O8QQxves5AtHdt91gWsEZFgOV3La/6eyKEd7QLqQUtM5fxEJ40rq9NKYjqCd1HzZ9egIMeJoWwillw== + dependencies: + "@docusaurus/core" "3.1.0" + "@docusaurus/mdx-loader" "3.1.0" + "@docusaurus/module-type-aliases" "3.1.0" + "@docusaurus/plugin-content-blog" "3.1.0" + "@docusaurus/plugin-content-docs" "3.1.0" + "@docusaurus/plugin-content-pages" "3.1.0" + "@docusaurus/theme-common" "3.1.0" + "@docusaurus/theme-translations" "3.1.0" + "@docusaurus/types" "3.1.0" + "@docusaurus/utils" "3.1.0" + "@docusaurus/utils-common" "3.1.0" + "@docusaurus/utils-validation" "3.1.0" "@mdx-js/react" "^3.0.0" - clsx "^1.2.1" + clsx "^2.0.0" copy-text-to-clipboard "^3.2.0" infima "0.2.0-alpha.43" lodash "^4.17.21" nprogress "^0.2.0" postcss "^8.4.26" - prism-react-renderer "^2.1.0" + prism-react-renderer "^2.3.0" prismjs "^1.29.0" react-router-dom "^5.3.4" rtlcss "^4.1.0" tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-common@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.0.0.tgz#6dc8c39a7458dd39f95a2fa6eb1c6aaf32b7e103" - integrity sha512-PahRpCLRK5owCMEqcNtUeTMOkTUCzrJlKA+HLu7f+8osYOni617YurXvHASCsSTxurjXaLz/RqZMnASnqATxIA== - dependencies: - "@docusaurus/mdx-loader" "3.0.0" - "@docusaurus/module-type-aliases" "3.0.0" - "@docusaurus/plugin-content-blog" "3.0.0" - "@docusaurus/plugin-content-docs" "3.0.0" - "@docusaurus/plugin-content-pages" "3.0.0" - "@docusaurus/utils" "3.0.0" - "@docusaurus/utils-common" "3.0.0" +"@docusaurus/theme-common@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.1.0.tgz#d176af1d0fc8ea27fea0afb298157f9a75256336" + integrity sha512-YGwEFALLIbF5ocW/Fy6Ae7tFWUOugEN3iwxTx8UkLAcLqYUboDSadesYtVBmRCEB4FVA2qoP7YaW3lu3apUPPw== + dependencies: + "@docusaurus/mdx-loader" "3.1.0" + "@docusaurus/module-type-aliases" "3.1.0" + "@docusaurus/plugin-content-blog" "3.1.0" + "@docusaurus/plugin-content-docs" "3.1.0" + "@docusaurus/plugin-content-pages" "3.1.0" + "@docusaurus/utils" "3.1.0" + "@docusaurus/utils-common" "3.1.0" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" - clsx "^1.2.1" + clsx "^2.0.0" parse-numeric-range "^1.3.0" - prism-react-renderer "^2.1.0" + prism-react-renderer "^2.3.0" tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-search-algolia@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.0.0.tgz#20701c2e7945a236df401365271b511a24ff3cad" - integrity sha512-PyMUNIS9yu0dx7XffB13ti4TG47pJq3G2KE/INvOFb6M0kWh+wwCnucPg4WAOysHOPh+SD9fjlXILoLQstgEIA== +"@docusaurus/theme-search-algolia@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.1.0.tgz#3cdb1f0e8d15698a60110856ca5a06f10d3b049d" + integrity sha512-8cJH0ZhPsEDjq3jR3I+wHmWzVY2bXMQJ59v2QxUmsTZxbWA4u+IzccJMIJx4ooFl9J6iYynwYsFuHxyx/KUmfQ== dependencies: "@docsearch/react" "^3.5.2" - "@docusaurus/core" "3.0.0" - "@docusaurus/logger" "3.0.0" - "@docusaurus/plugin-content-docs" "3.0.0" - "@docusaurus/theme-common" "3.0.0" - "@docusaurus/theme-translations" "3.0.0" - "@docusaurus/utils" "3.0.0" - "@docusaurus/utils-validation" "3.0.0" + "@docusaurus/core" "3.1.0" + "@docusaurus/logger" "3.1.0" + "@docusaurus/plugin-content-docs" "3.1.0" + "@docusaurus/theme-common" "3.1.0" + "@docusaurus/theme-translations" "3.1.0" + "@docusaurus/utils" "3.1.0" + "@docusaurus/utils-validation" "3.1.0" algoliasearch "^4.18.0" algoliasearch-helper "^3.13.3" - clsx "^1.2.1" + clsx "^2.0.0" eta "^2.2.0" fs-extra "^11.1.1" lodash "^4.17.21" tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-translations@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.0.0.tgz#98590b80589f15b2064e0daa2acc3a82d126f53b" - integrity sha512-p/H3+5LdnDtbMU+csYukA6601U1ld2v9knqxGEEV96qV27HsHfP63J9Ta2RBZUrNhQAgrwFzIc9GdDO8P1Baag== +"@docusaurus/theme-translations@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.1.0.tgz#1c6bdc19723a87e042b5e89b6cdc8b747fdcbc13" + integrity sha512-DApE4AbDI+WBajihxB54L4scWQhVGNZAochlC9fkbciPuFAgdRBD3NREb0rgfbKexDC/rioppu/WJA0u8tS+yA== dependencies: fs-extra "^11.1.1" tslib "^2.6.0" -"@docusaurus/types@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.0.0.tgz#3edabe43f70b45f81a48f3470d6a73a2eba41945" - integrity sha512-Qb+l/hmCOVemReuzvvcFdk84bUmUFyD0Zi81y651ie3VwMrXqC7C0E7yZLKMOsLj/vkqsxHbtkAuYMI89YzNzg== +"@docusaurus/types@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.1.0.tgz#1dbb60ea38e98ba869f8d7ea2323e4460f05ab65" + integrity sha512-VaczOZf7+re8aFBIWnex1XENomwHdsSTkrdX43zyor7G/FY4OIsP6X28Xc3o0jiY0YdNuvIDyA5TNwOtpgkCVw== dependencies: + "@mdx-js/mdx" "^3.0.0" "@types/history" "^4.7.11" "@types/react" "*" commander "^5.1.0" @@ -1605,30 +1651,30 @@ webpack "^5.88.1" webpack-merge "^5.9.0" -"@docusaurus/utils-common@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.0.0.tgz#fb019e5228b20852a5b98f50672a02843a03ba03" - integrity sha512-7iJWAtt4AHf4PFEPlEPXko9LZD/dbYnhLe0q8e3GRK1EXZyRASah2lznpMwB3lLmVjq/FR6ZAKF+E0wlmL5j0g== +"@docusaurus/utils-common@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.1.0.tgz#846ce9c12b9ebf1ebf513e65303fb8158dcd2e1b" + integrity sha512-SfvnRLHoZ9bwTw67knkSs7IcUR0GY2SaGkpdB/J9pChrDiGhwzKNUhcieoPyPYrOWGRPk3rVNYtoy+Bc7psPAw== dependencies: tslib "^2.6.0" -"@docusaurus/utils-validation@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.0.0.tgz#56f3ba89ceba9826989408a96827897c0b724612" - integrity sha512-MlIGUspB/HBW5CYgHvRhmkZbeMiUWKbyVoCQYvbGN8S19SSzVgzyy97KRpcjCOYYeEdkhmRCUwFBJBlLg3IoNQ== +"@docusaurus/utils-validation@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.1.0.tgz#3e88c42caec29cd3eedbbd17af97f88719613340" + integrity sha512-dFxhs1NLxPOSzmcTk/eeKxLY5R+U4cua22g9MsAMiRWcwFKStZ2W3/GDY0GmnJGqNS8QAQepJrxQoyxXkJNDeg== dependencies: - "@docusaurus/logger" "3.0.0" - "@docusaurus/utils" "3.0.0" + "@docusaurus/logger" "3.1.0" + "@docusaurus/utils" "3.1.0" joi "^17.9.2" js-yaml "^4.1.0" tslib "^2.6.0" -"@docusaurus/utils@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.0.0.tgz#2ef0c8e434036fe104dca4c694fd50022b2ba1ed" - integrity sha512-JwGjh5mtjG9XIAESyPxObL6CZ6LO/yU4OSTpq7Q0x+jN25zi/AMbvLjpSyZzWy+qm5uQiFiIhqFaOxvy+82Ekg== +"@docusaurus/utils@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.1.0.tgz#6ef821bc4c40a91586835a385110b5c0082c590c" + integrity sha512-LgZfp0D+UBqAh7PZ//MUNSFBMavmAPku6Si9x8x3V+S318IGCNJ6hUr2O29UO0oLybEWUjD5Jnj9IUN6XyZeeg== dependencies: - "@docusaurus/logger" "3.0.0" + "@docusaurus/logger" "3.1.0" "@svgr/webpack" "^6.5.1" escape-string-regexp "^4.0.0" file-loader "^6.2.0" @@ -1758,16 +1804,6 @@ dependencies: "@types/mdx" "^2.0.0" -"@microlink/react-json-view@^1.22.2": - version "1.23.0" - resolved "https://registry.yarnpkg.com/@microlink/react-json-view/-/react-json-view-1.23.0.tgz#641c2483b1a0014818303d4e9cce634d5dacc7e9" - integrity sha512-HYJ1nsfO4/qn8afnAMhuk7+5a1vcjEaS8Gm5Vpr1SqdHDY0yLBJGpA+9DvKyxyVKaUkXzKXt3Mif9RcmFSdtYg== - dependencies: - flux "~4.0.1" - react-base16-styling "~0.6.0" - react-lifecycles-compat "~3.0.4" - react-textarea-autosize "~8.3.2" - "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -2667,21 +2703,11 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -asap@~2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== - astring@^1.8.0: version "1.8.6" resolved "https://registry.yarnpkg.com/astring/-/astring-1.8.6.tgz#2c9c157cf1739d67561c56ba896e6948f6b93731" integrity sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg== -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - at-least-node@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" @@ -2706,15 +2732,6 @@ autoprefixer@^10.4.12, autoprefixer@^10.4.14: picocolors "^1.0.0" postcss-value-parser "^4.2.0" -axios@^1.6.1: - version "1.6.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.2.tgz#de67d42c755b571d3e698df1b6504cde9b0ee9f2" - integrity sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A== - dependencies: - follow-redirects "^1.15.0" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - babel-loader@^9.1.3: version "9.1.3" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.3.tgz#3d0e01b4e69760cc694ee306fe16d358aa1c6f9a" @@ -2769,11 +2786,6 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base16@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" - integrity sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ== - batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" @@ -3156,13 +3168,6 @@ combine-promises@^1.1.0: resolved "https://registry.yarnpkg.com/combine-promises/-/combine-promises-1.2.0.tgz#5f2e68451862acf85761ded4d9e2af7769c2ca6a" integrity sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ== -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - comma-separated-tokens@^1.0.0: version "1.0.8" resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" @@ -3365,13 +3370,6 @@ cosmiconfig@^8.2.0: parse-json "^5.2.0" path-type "^4.0.0" -cross-fetch@^3.1.5: - version "3.1.8" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" - integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== - dependencies: - node-fetch "^2.6.12" - cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -3629,11 +3627,6 @@ del@^6.1.1: rimraf "^3.0.2" slash "^3.0.0" -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -3706,10 +3699,10 @@ dns-packet@^5.2.2: dependencies: "@leichtgewicht/ip-codec" "^2.0.1" -docusaurus-lunr-search@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/docusaurus-lunr-search/-/docusaurus-lunr-search-3.3.0.tgz#b79af937d28ff2ab4d766d2e42c1e4bcff50e0a6" - integrity sha512-F2fSAA+6vRCHxF4R+rV8xSg1cYY7pXFKdbBNlTX6+dyKdwCWcnrmTXJmlCkN4DT65ntNU9iTd+mZ8lZzH3Lncg== +docusaurus-lunr-search@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/docusaurus-lunr-search/-/docusaurus-lunr-search-3.3.2.tgz#23699b899d9275402e3004e1fe6085e1bae4f007" + integrity sha512-+TXfiRAwIAaNwME8bBZvC+osfoXjJSNs5BcZu92lIHoWc3Myct4Nw3jU0FMXQCQGQcQ0FgFqMDoh56LPCLVaxQ== dependencies: autocomplete.js "^0.37.0" clsx "^1.2.1" @@ -3721,7 +3714,6 @@ docusaurus-lunr-search@3.3.0: lunr-languages "^1.4.0" mark.js "^8.11.1" minimatch "^3.0.4" - object-assign "^4.1.1" rehype-parse "^7.0.1" to-vfile "^6.1.0" unified "^9.0.0" @@ -4144,31 +4136,6 @@ faye-websocket@^0.11.3: dependencies: websocket-driver ">=0.5.1" -fbemitter@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-3.0.0.tgz#00b2a1af5411254aab416cd75f9e6289bee4bff3" - integrity sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw== - dependencies: - fbjs "^3.0.0" - -fbjs-css-vars@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" - integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== - -fbjs@^3.0.0, fbjs@^3.0.1: - version "3.0.5" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.5.tgz#aa0edb7d5caa6340011790bd9249dbef8a81128d" - integrity sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg== - dependencies: - cross-fetch "^3.1.5" - fbjs-css-vars "^1.0.0" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^1.0.35" - feed@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/feed/-/feed-4.2.2.tgz#865783ef6ed12579e2c44bbef3c9113bc4956a7e" @@ -4245,15 +4212,7 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flux@~4.0.1: - version "4.0.4" - resolved "https://registry.yarnpkg.com/flux/-/flux-4.0.4.tgz#9661182ea81d161ee1a6a6af10d20485ef2ac572" - integrity sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw== - dependencies: - fbemitter "^3.0.0" - fbjs "^3.0.1" - -follow-redirects@^1.0.0, follow-redirects@^1.15.0: +follow-redirects@^1.0.0: version "1.15.3" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== @@ -4282,15 +4241,6 @@ form-data-encoder@^2.1.2: resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5" integrity sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw== -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - format@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" @@ -5319,7 +5269,7 @@ jiti@^1.18.2, jiti@^1.20.0: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== -joi@^17.11.0, joi@^17.9.2: +joi@^17.9.2: version "17.11.0" resolved "https://registry.yarnpkg.com/joi/-/joi-17.11.0.tgz#aa9da753578ec7720e6f0ca2c7046996ed04fc1a" integrity sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ== @@ -5482,21 +5432,11 @@ locate-path@^7.1.0: dependencies: p-locate "^6.0.0" -lodash.curry@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170" - integrity sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA== - lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== -lodash.flow@^3.3.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a" - integrity sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw== - lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -6269,7 +6209,7 @@ mime-types@2.1.18: dependencies: mime-db "~1.33.0" -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -6315,7 +6255,7 @@ minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0, minimist@^1.2.8: +minimist@^1.2.0: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -6386,13 +6326,6 @@ node-emoji@^2.1.0: emojilib "^2.4.0" skin-tone "^2.0.0" -node-fetch@^2.6.12: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - node-forge@^1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" @@ -6454,7 +6387,7 @@ nth-check@^2.0.0, nth-check@^2.0.1: dependencies: boolbase "^1.0.0" -object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -7071,15 +7004,7 @@ pretty-time@^1.1.0: resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== -prism-react-renderer@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-2.1.0.tgz#a2f418451647412ea73d18cfe363fea20e419f9d" - integrity sha512-I5cvXHjA1PVGbGm1MsWCpvBCRrYyxEri0MC7/JbfIfYfcXAxHyO5PaUjs3A8H5GW6kJcLhTHxxMaOZZpRZD2iQ== - dependencies: - "@types/prismjs" "^1.26.0" - clsx "^1.2.1" - -prism-react-renderer@^2.1.0: +prism-react-renderer@2.3.1, prism-react-renderer@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-2.3.1.tgz#e59e5450052ede17488f6bc85de1553f584ff8d5" integrity sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw== @@ -7097,13 +7022,6 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - prompts@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -7146,11 +7064,6 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - punycode@^1.3.2: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -7168,11 +7081,6 @@ pupa@^3.1.0: dependencies: escape-goat "^4.0.0" -pure-color@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" - integrity sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA== - qs@6.11.0: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" @@ -7234,16 +7142,6 @@ rc@1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-base16-styling@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/react-base16-styling/-/react-base16-styling-0.6.0.tgz#ef2156d66cf4139695c8a167886cb69ea660792c" - integrity sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ== - dependencies: - base16 "^1.0.0" - lodash.curry "^4.0.1" - lodash.flow "^3.3.0" - pure-color "^1.2.0" - react-dev-utils@^12.0.1: version "12.0.1" resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" @@ -7317,10 +7215,10 @@ react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-lifecycles-compat@~3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" - integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== +react-json-view-lite@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/react-json-view-lite/-/react-json-view-lite-1.2.1.tgz#c59a0bea4ede394db331d482ee02e293d38f8218" + integrity sha512-Itc0g86fytOmKZoIoJyGgvNqohWSbh3NXIKNgH6W6FT9PC1ck4xas1tT3Rr/b3UlFXyA9Jjaw9QSXdZy2JwGMQ== react-loadable-ssr-addon-v5-slorber@^1.0.1: version "1.0.1" @@ -7364,15 +7262,6 @@ react-router@5.3.4, react-router@^5.3.4: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-textarea-autosize@~8.3.2: - version "8.3.4" - resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz#270a343de7ad350534141b02c9cb78903e553524" - integrity sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ== - dependencies: - "@babel/runtime" "^7.10.2" - use-composed-ref "^1.3.0" - use-latest "^1.2.1" - react@18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" @@ -7689,13 +7578,6 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@^7.8.1: - version "7.8.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" - integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== - dependencies: - tslib "^2.1.0" - safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -7864,11 +7746,6 @@ set-function-length@^1.1.1: gopd "^1.0.1" has-property-descriptors "^1.0.0" -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -8302,11 +8179,6 @@ totalist@^3.0.0: resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - trim-lines@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" @@ -8322,7 +8194,7 @@ trough@^2.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876" integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g== -tslib@^2.0.3, tslib@^2.1.0, tslib@^2.6.0: +tslib@^2.0.3, tslib@^2.6.0: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== @@ -8352,11 +8224,6 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -ua-parser-js@^1.0.35: - version "1.0.37" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.37.tgz#b5dc7b163a5c1f0c510b08446aed4da92c46373f" - integrity sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ== - undici-types@~5.26.4: version "5.26.5" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" @@ -8565,23 +8432,6 @@ url-loader@^4.1.1: mime-types "^2.1.27" schema-utils "^3.0.0" -use-composed-ref@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" - integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== - -use-isomorphic-layout-effect@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" - integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== - -use-latest@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" - integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== - dependencies: - use-isomorphic-layout-effect "^1.1.1" - util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -8665,17 +8515,6 @@ vfile@^6.0.0, vfile@^6.0.1: unist-util-stringify-position "^4.0.0" vfile-message "^4.0.0" -wait-on@^7.0.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-7.2.0.tgz#d76b20ed3fc1e2bebc051fae5c1ff93be7892928" - integrity sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ== - dependencies: - axios "^1.6.1" - joi "^17.11.0" - lodash "^4.17.21" - minimist "^1.2.8" - rxjs "^7.8.1" - watchpack@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" @@ -8701,11 +8540,6 @@ web-namespaces@^2.0.0: resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692" integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - webpack-bundle-analyzer@^4.9.0: version "4.10.1" resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz#84b7473b630a7b8c21c741f81d8fe4593208b454" @@ -8840,14 +8674,6 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" diff --git a/openc3-cosmos-init/Dockerfile b/openc3-cosmos-init/Dockerfile index 6763e84cf4..8a727a787b 100644 --- a/openc3-cosmos-init/Dockerfile +++ b/openc3-cosmos-init/Dockerfile @@ -88,11 +88,6 @@ FROM openc3-frontend-tmp AS openc3-tmp3 COPY ./plugins/packages/openc3-cosmos-tool-packetviewer/ packages/openc3-cosmos-tool-packetviewer/ RUN ["/openc3/plugins/docker-package-build.sh", "openc3-cosmos-tool-packetviewer"] -# Build docs tool -COPY --from=docs . packages/openc3-cosmos-tool-docs/ -RUN cd packages/openc3-cosmos-tool-docs/scripts && ruby generate_docs_from_yaml.rb PLUGIN && yarn -RUN ["/openc3/plugins/docker-package-build.sh", "openc3-cosmos-tool-docs"] - # Build tlmgrapher tool FROM openc3-frontend-tmp AS openc3-tmp4 COPY ./plugins/packages/openc3-cosmos-tool-tlmgrapher/ packages/openc3-cosmos-tool-tlmgrapher/ @@ -110,6 +105,15 @@ RUN ["/openc3/plugins/docker-package-build.sh", "openc3-cosmos-tool-scriptrunner COPY ./plugins/packages/openc3-cosmos-demo/ packages/openc3-cosmos-demo/ RUN ["/openc3/plugins/docker-package-build.sh", "openc3-cosmos-demo"] +FROM ${OPENC3_REGISTRY}/${OPENC3_NAMESPACE}/${OPENC3_BASE_IMAGE}:${OPENC3_TAG} as base +FROM openc3-frontend-tmp AS openc3-tmp5 + +# Build docs tool +COPY --from=base /openc3 /openc3/ +COPY --from=docs . packages/openc3-cosmos-tool-docs/ +RUN cd packages/openc3-cosmos-tool-docs/scripts && ruby generate_docs_from_yaml.rb PLUGIN && yarn +RUN ["/openc3/plugins/docker-package-build.sh", "openc3-cosmos-tool-docs"] + FROM ${OPENC3_REGISTRY}/${OPENC3_NAMESPACE}/${OPENC3_BASE_IMAGE}:${OPENC3_TAG} COPY --from=openc3-tmp1 --chown=${IMAGE_USER}:${IMAGE_GROUP} /openc3/plugins/packages/openc3-cosmos-ace-diff/ /openc3/plugins/packages/openc3-cosmos-ace-diff/ @@ -117,6 +121,7 @@ COPY --from=openc3-tmp1 --chown=${IMAGE_USER}:${IMAGE_GROUP} /openc3/plugins/gem COPY --from=openc3-tmp2 --chown=${IMAGE_USER}:${IMAGE_GROUP} /openc3/plugins/gems/* /openc3/plugins/gems/ COPY --from=openc3-tmp3 --chown=${IMAGE_USER}:${IMAGE_GROUP} /openc3/plugins/gems/* /openc3/plugins/gems/ COPY --from=openc3-tmp4 --chown=${IMAGE_USER}:${IMAGE_GROUP} /openc3/plugins/gems/* /openc3/plugins/gems/ +COPY --from=openc3-tmp5 --chown=${IMAGE_USER}:${IMAGE_GROUP} /openc3/plugins/gems/* /openc3/plugins/gems/ COPY --from=openc3-frontend-tmp --chown=${IMAGE_USER}:${IMAGE_GROUP} /openc3/plugins/packages/openc3-tool-common/ /openc3/plugins/packages/openc3-tool-common/ COPY --from=openc3-frontend-tmp --chown=${IMAGE_USER}:${IMAGE_GROUP} /openc3/plugins/yarn.lock /openc3/plugins/yarn.lock COPY --from=openc3-frontend-tmp --chown=${IMAGE_USER}:${IMAGE_GROUP} /openc3/plugins/openc3-tool-base/yarn.lock /openc3/plugins/yarn-tool-base.lock diff --git a/openc3-node/Dockerfile b/openc3-node/Dockerfile index 359fb77d99..c921bec64d 100644 --- a/openc3-node/Dockerfile +++ b/openc3-node/Dockerfile @@ -2,7 +2,7 @@ ARG OPENC3_REGISTRY=docker.io ARG OPENC3_NAMESPACE=openc3inc ARG OPENC3_TAG=latest -FROM ${OPENC3_REGISTRY}/${OPENC3_NAMESPACE}/openc3-base:${OPENC3_TAG} +FROM ${OPENC3_REGISTRY}/${OPENC3_NAMESPACE}/openc3-ruby:${OPENC3_TAG} USER root diff --git a/openc3-node/Dockerfile-ubi b/openc3-node/Dockerfile-ubi index 1ef186fbb2..0fc35aa555 100644 --- a/openc3-node/Dockerfile-ubi +++ b/openc3-node/Dockerfile-ubi @@ -2,7 +2,7 @@ ARG OPENC3_REGISTRY=docker.io ARG OPENC3_NAMESPACE=openc3inc ARG OPENC3_TAG=latest -FROM ${OPENC3_REGISTRY}/${OPENC3_NAMESPACE}/openc3-base-ubi:${OPENC3_TAG} +FROM ${OPENC3_REGISTRY}/${OPENC3_NAMESPACE}/openc3-ruby-ubi:${OPENC3_TAG} ENV NODEJS_VERSION=18 diff --git a/openc3/lib/openc3/accessors/http_accessor.rb b/openc3/lib/openc3/accessors/http_accessor.rb index b95804be27..6dbf7f155a 100644 --- a/openc3/lib/openc3/accessors/http_accessor.rb +++ b/openc3/lib/openc3/accessors/http_accessor.rb @@ -121,6 +121,34 @@ def write_item(item, value, buffer) return value end + def read_items(items, buffer) + result = {} + body_items = [] + items.each do |item| + if item.name[0..4] == 'HTTP_' + result[item.name] = read_item(item, buffer) + else + body_items << item + end + end + body_result = @body_accessor.read_items(body_items, buffer) + result.merge!(body_result) # Merge Body accessor read items with HTTP_ items + return result + end + + def write_items(items, values, buffer) + body_items = [] + items.each_with_index do |item, index| + if item.name[0..4] == 'HTTP_' + write_item(item, values[index], buffer) + else + body_items << item + end + end + @body_accessor.write_items(body_items, values, buffer) + return values + end + # If this is set it will enforce that buffer data is encoded # in a specific encoding def enforce_encoding diff --git a/openc3/lib/openc3/models/gem_model.rb b/openc3/lib/openc3/models/gem_model.rb index 2e866c245a..70a90e0f29 100644 --- a/openc3/lib/openc3/models/gem_model.rb +++ b/openc3/lib/openc3/models/gem_model.rb @@ -118,5 +118,15 @@ def self.extract_name_and_version(name) version = File.basename(split_name[-1], '.gem') return gem_name, version end + + def self.destroy_all_other_versions(name) + keep_gem_name, keep_gem_version = GemModel.extract_name_and_version(name) + GemModel.names.each do |gem_full_name| + gem_name, gem_version = GemModel.extract_name_and_version(gem_full_name) + if gem_name == keep_gem_name and gem_version != keep_gem_version + GemModel.destroy(gem_full_name) + end + end + end end end diff --git a/openc3/lib/openc3/models/plugin_model.rb b/openc3/lib/openc3/models/plugin_model.rb index afb192565a..252f99c38d 100644 --- a/openc3/lib/openc3/models/plugin_model.rb +++ b/openc3/lib/openc3/models/plugin_model.rb @@ -158,6 +158,11 @@ def self.install_phase2(plugin_hash, scope:, gem_file_path: nil, validate_only: gem_file_path = OpenC3::GemModel.get(gem_name) end + # Attempt to remove all older versions of this same plugin before install to prevent version conflicts + # Especially on downgrades + # Leave the same version if it already exists + OpenC3::GemModel.destroy_all_other_versions(File.basename(gem_file_path)) + # Actually install the gem now (slow) OpenC3::GemModel.install(gem_file_path, scope: scope) unless validate_only diff --git a/openc3/lib/openc3/models/target_model.rb b/openc3/lib/openc3/models/target_model.rb index 7138065173..9ca2f11852 100644 --- a/openc3/lib/openc3/models/target_model.rb +++ b/openc3/lib/openc3/models/target_model.rb @@ -742,7 +742,7 @@ def build_target_archive(temp_dir, target_folder) end end - def update_store(system) + def update_target_model(system) target = system.targets[@name] # Add in the information from the target and update @@ -754,10 +754,11 @@ def update_store(system) @tlm_unique_id_mode = target.tlm_unique_id_mode @limits_groups = system.limits.groups.keys update() + end - # Store Packet Definitions - system.telemetry.all.each do |target_name, packets| - Store.del("#{@scope}__openc3tlm__#{target_name}") + def update_store_telemetry(packet_hash, clear_old: true) + packet_hash.each do |target_name, packets| + Store.del("#{@scope}__openc3tlm__#{target_name}") if clear_old packets.each do |packet_name, packet| Logger.info "Configuring tlm packet: #{target_name} #{packet_name}" begin @@ -773,8 +774,11 @@ def update_store(system) CvtModel.set(json_hash, target_name: packet.target_name, packet_name: packet.packet_name, scope: @scope) end end - system.commands.all.each do |target_name, packets| - Store.del("#{@scope}__openc3cmd__#{target_name}") + end + + def update_store_commands(packet_hash, clear_old: true) + packet_hash.each do |target_name, packets| + Store.del("#{@scope}__openc3cmd__#{target_name}") if clear_old packets.each do |packet_name, packet| Logger.info "Configuring cmd packet: #{target_name} #{packet_name}" begin @@ -785,7 +789,9 @@ def update_store(system) end end end - # Store Limits Groups + end + + def update_store_limits_groups(system) system.limits.groups.each do |group, items| begin Store.hset("#{@scope}__limits_groups", group, JSON.generate(items)) @@ -794,23 +800,77 @@ def update_store(system) raise err end end - # Merge in Limits Sets + end + + def update_store_limits_sets(system) sets = Store.hgetall("#{@scope}__limits_sets") sets ||= {} system.limits.sets.each do |set| sets[set.to_s] = "false" unless sets.key?(set.to_s) end Store.hmset("#{@scope}__limits_sets", *sets) + end + def update_store_item_map # Create item_map item_map_key = "#{@scope}__#{@name}__item_to_packet_map" item_map = self.class.build_item_to_packet_map(@name, scope: @scope) Store.set(item_map_key, JSON.generate(item_map, :allow_nan => true)) @@item_map_cache[@name] = [Time.now, item_map] + end + def update_store(system, clear_old: true) + update_target_model(system) + update_store_telemetry(system.telemetry.all, clear_old: clear_old) + update_store_commands(system.commands.all, clear_old: clear_old) + update_store_limits_groups(system) + update_store_limits_sets(system) + update_store_item_map() return system end + def dynamic_update(packets, cmd_or_tlm = :TELEMETRY, filename = "dynamic_tlm.txt") + # Build hash of targets/packets + packet_hash = {} + packets.each do |packet| + target_name = packet.target_name.upcase + packet_hash[target_name] ||= {} + packet_name = packet.packet_name.upcase + packet_hash[target_name][packet_name] = packet + end + + # Update Redis + if cmd_or_tlm == :TELEMETRY + update_store_telemetry(packet_hash, clear_old: false) + update_store_item_map() + else + update_store_commands(packet_hash, clear_old: false) + end + + # Build dynamic file for cmd_tlm + configs = {} + packets.each do |packet| + target_name = packet.target_name.upcase + configs[target_name] ||= "" + config = configs[target_name] + config << packet.to_config(cmd_or_tlm) + config << "\n" + end + configs.each do |target_name, config| + begin + bucket_key = "#{@scope}/targets_modified/#{target_name}/cmd_tlm/#{filename}" + client = Bucket.getClient() + client.put_object( + # Use targets_modified to save modifications + # This keeps the original target clean (read-only) + bucket: ENV['OPENC3_CONFIG_BUCKET'], + key: bucket_key, + body: config + ) + end + end + end + def deploy_commmandlog_microservice(gem_path, variables, topics, instance = nil, parent = nil) microservice_name = "#{@scope}__COMMANDLOG#{instance}__#{@name}" microservice = MicroserviceModel.new( @@ -990,6 +1050,7 @@ def deploy_multi_microservice(gem_path, variables, instance = nil) cmd: ["ruby", "multi_microservice.rb", *@children], work_dir: '/openc3/lib/openc3/microservices', plugin: @plugin, + needs_dependencies: @needs_dependencies, scope: @scope ) microservice.create diff --git a/openc3/lib/openc3/packets/packet.rb b/openc3/lib/openc3/packets/packet.rb index 3f70e8648c..ce39d50eab 100644 --- a/openc3/lib/openc3/packets/packet.rb +++ b/openc3/lib/openc3/packets/packet.rb @@ -309,6 +309,10 @@ def config_name @config_name end + def clear_config_name + @config_name = nil + end + # (see Structure#buffer=) def buffer=(buffer) synchronize() do @@ -872,6 +876,33 @@ def define_reserved_items item.description = 'OpenC3 packet received count' end + # Reset the packet to just derived items + def clear_all_non_derived_items + @defined_length = 0 + @defined_length_bits = 0 + @pos_bit_size = 0 + @neg_bit_size = 0 + @fixed_size = true + @short_buffer_allowed = false + @id_items = nil + @limits_items = nil + new_items = {} + new_sorted_items = [] + @items.each do |name, item| + if item.data_type == :DERIVED + new_items[name] = item + end + end + @sorted_items.each do |item| + if item.data_type == :DERIVED + new_sorted_items << item + end + end + @items = new_items + @sorted_items = new_sorted_items + clear_config_name() + end + # Enable limits on an item by name # # @param name [String] Name of the item to enable limits @@ -1019,6 +1050,13 @@ def to_config(cmd_or_tlm) else config << "COMMAND #{@target_name.to_s.quote_if_necessary} #{@packet_name.to_s.quote_if_necessary} #{@default_endianness} \"#{@description}\"\n" end + if @accessor.class.to_s != 'OpenC3::BinaryAccessor' + config << " ACCESSOR #{@accessor.class.to_s} #{@accessor.args.map { |a| a.to_s.quote_if_necessary }.join(" ")}\n" + end + # TODO: Add TEMPLATE_ENCODED so this can always be done inline regardless of content + if @template + config << " TEMPLATE '#{@template}'" + end config << " ALLOW_SHORT\n" if @short_buffer_allowed config << " HAZARDOUS #{@hazardous_description.to_s.quote_if_necessary}\n" if @hazardous config << " DISABLE_MESSAGES\n" if @messages_disabled @@ -1036,7 +1074,7 @@ def to_config(cmd_or_tlm) if @meta @meta.each do |key, values| - config << " META #{key.to_s.quote_if_necessary} #{values.map { |a| a..to_s.quote_if_necessary }.join(" ")}\n" + config << " META #{key.to_s.quote_if_necessary} #{values.map { |a| a.to_s.quote_if_necessary }.join(" ")}\n" end end diff --git a/openc3/lib/openc3/system/system.rb b/openc3/lib/openc3/system/system.rb index 9a3f90bb1c..e573cefd8e 100644 --- a/openc3/lib/openc3/system/system.rb +++ b/openc3/lib/openc3/system/system.rb @@ -92,6 +92,18 @@ def self.setup_targets(target_names, base_dir, scope:) zip_file.extract(entry, path) unless File.exist?(path) end end + + # Now add any modifications in targets_modified/TARGET/cmd_tlm + # This adds support for remembering dynamically created packets + # target.txt must be configured to either use all files in cmd_tlm folder (default) + # or have a predetermined empty file like dynamic.txt + bucket_path = "#{scope}/targets_modified/#{target_name}/cmd_tlm" + dirs, files = bucket.list_files(bucket: ENV['OPENC3_CONFIG_BUCKET'], path: bucket_path) + files.each do |file| + bucket_key = File.join(bucket_path, file['name']) + local_path = "#{base_dir}/targets/#{target_name}/cmd_tlm/#{file['name']}" + bucket.get_object(bucket: ENV['OPENC3_CONFIG_BUCKET'], key: bucket_key, path: local_path) + end end # Build System from targets @@ -119,7 +131,7 @@ def self.instance(target_names = nil, target_config_dir = nil) # @param target_names [Array of target names] # @param target_config_dir Directory where target config folders are def initialize(target_names, target_config_dir) - OpenC3.add_to_search_path(target_config_dir, true) + OpenC3.add_to_search_path(target_config_dir, true) if target_config_dir @targets = {} @packet_config = PacketConfig.new @commands = Commands.new(@packet_config) From 39fd2608a9928d6fc5046b87b0a54dad203f28d1 Mon Sep 17 00:00:00 2001 From: Ryan Melton Date: Wed, 17 Jan 2024 18:16:34 -0700 Subject: [PATCH 2/5] properly handle local mode plugin files after failed upgrade --- openc3/bin/openc3cli | 5 ++++- openc3/lib/openc3/models/gem_model.rb | 13 ++++++++++--- openc3/lib/openc3/models/plugin_model.rb | 1 - openc3/lib/openc3/system/system.rb | 2 +- openc3/lib/openc3/utilities/local_mode.rb | 2 +- 5 files changed, 16 insertions(+), 7 deletions(-) diff --git a/openc3/bin/openc3cli b/openc3/bin/openc3cli index 3ab695acad..d53a5248c8 100755 --- a/openc3/bin/openc3cli +++ b/openc3/bin/openc3cli @@ -350,7 +350,10 @@ def update_plugin(plugin_file_path, plugin_name, variables: nil, plugin_txt_line end rescue => error puts error.formatted - plugin_model.restore if plugin_model.destroyed? + if plugin_model.destroyed? + plugin_model.restore + # Local mode files should still be good because restore will now reuse the old name + end raise error end end diff --git a/openc3/lib/openc3/models/gem_model.rb b/openc3/lib/openc3/models/gem_model.rb index 70a90e0f29..ddba424c59 100644 --- a/openc3/lib/openc3/models/gem_model.rb +++ b/openc3/lib/openc3/models/gem_model.rb @@ -39,11 +39,17 @@ class GemModel include Api def self.names - result = Pathname.new("#{ENV['GEM_HOME']}/gems").children.select { |c| c.directory? }.collect { |p| File.basename(p) + '.gem' } + if Dir.exist?("#{ENV['GEM_HOME']}/gems") + result = Pathname.new("#{ENV['GEM_HOME']}/gems").children.select { |c| c.directory? }.collect { |p| File.basename(p) + '.gem' } + else + result = [] + end return result.sort end def self.get(name) + path = "#{ENV['GEM_HOME']}/cosmoscache/#{name}" + return path if File.exist?(path) path = "#{ENV['GEM_HOME']}/cache/#{name}" return path if File.exist?(path) raise "Gem #{name} not found" @@ -52,8 +58,9 @@ def self.get(name) def self.put(gem_file_path, gem_install: true, scope:) if File.file?(gem_file_path) gem_filename = File.basename(gem_file_path) - FileUtils.mkdir_p("#{ENV['GEM_HOME']}/cache") unless Dir.exist?("#{ENV['GEM_HOME']}/cache") - FileUtils.cp(gem_file_path, "#{ENV['GEM_HOME']}/cache/#{File.basename(gem_file_path)}") + # Put into cosmoscache folder that we control + FileUtils.mkdir_p("#{ENV['GEM_HOME']}/cosmoscache") unless Dir.exist?("#{ENV['GEM_HOME']}/cosmoscache") + FileUtils.cp(gem_file_path, "#{ENV['GEM_HOME']}/cosmoscache/#{File.basename(gem_file_path)}") if gem_install Logger.info "Installing gem: #{gem_filename}" result = OpenC3::ProcessManager.instance.spawn(["ruby", "/openc3/bin/openc3cli", "geminstall", gem_filename, scope], "package_install", gem_filename, Time.now + 3600.0, scope: scope) diff --git a/openc3/lib/openc3/models/plugin_model.rb b/openc3/lib/openc3/models/plugin_model.rb index 252f99c38d..2408547a8d 100644 --- a/openc3/lib/openc3/models/plugin_model.rb +++ b/openc3/lib/openc3/models/plugin_model.rb @@ -361,7 +361,6 @@ def undeploy # Reinstall def restore plugin_hash = self.as_json(:allow_nan => true) - plugin_hash['name'] = plugin_hash['name'].split("__")[0] OpenC3::PluginModel.install_phase2(plugin_hash, scope: @scope) @destroyed = false end diff --git a/openc3/lib/openc3/system/system.rb b/openc3/lib/openc3/system/system.rb index e573cefd8e..3e09d6fd3c 100644 --- a/openc3/lib/openc3/system/system.rb +++ b/openc3/lib/openc3/system/system.rb @@ -96,7 +96,7 @@ def self.setup_targets(target_names, base_dir, scope:) # Now add any modifications in targets_modified/TARGET/cmd_tlm # This adds support for remembering dynamically created packets # target.txt must be configured to either use all files in cmd_tlm folder (default) - # or have a predetermined empty file like dynamic.txt + # or have a predetermined empty file like dynamic_tlm.txt bucket_path = "#{scope}/targets_modified/#{target_name}/cmd_tlm" dirs, files = bucket.list_files(bucket: ENV['OPENC3_CONFIG_BUCKET'], path: bucket_path) files.each do |file| diff --git a/openc3/lib/openc3/utilities/local_mode.rb b/openc3/lib/openc3/utilities/local_mode.rb index e98229909d..a0f66aceea 100644 --- a/openc3/lib/openc3/utilities/local_mode.rb +++ b/openc3/lib/openc3/utilities/local_mode.rb @@ -252,7 +252,7 @@ def self.update_local_plugin(plugin_file_path, plugin_hash, old_plugin_name: nil # New install of same plugin - Leave it alone end else - # No exiting instance.json, but we found the same gem + # No existing instance.json, but we found the same gem # This shouldn't happen without users using this wrong # We will update found = true From 43c1f54453c2692c958befa6bf0609da3d9d7eb1 Mon Sep 17 00:00:00 2001 From: Ryan Melton Date: Thu, 18 Jan 2024 12:40:13 -0700 Subject: [PATCH 3/5] fix ruby specs --- openc3/spec/models/plugin_model_spec.rb | 12 ++++++------ openc3/spec/system/system_spec.rb | 7 ++++++- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/openc3/spec/models/plugin_model_spec.rb b/openc3/spec/models/plugin_model_spec.rb index 7bb4dd835c..b4d7007f4f 100644 --- a/openc3/spec/models/plugin_model_spec.rb +++ b/openc3/spec/models/plugin_model_spec.rb @@ -137,7 +137,7 @@ module OpenC3 s3 = instance_double("Aws::S3::Client").as_null_object allow(Aws::S3::Client).to receive(:new).and_return(s3) - expect(GemModel).to receive(:get) + expect(GemModel).to receive(:get).and_return("my_plugin.gem") gem = double("gem") expect(gem).to receive(:extract_files) do |path| File.open("#{path}/plugin.txt", 'w') do |file| @@ -164,7 +164,7 @@ module OpenC3 s3 = instance_double("Aws::S3::Client").as_null_object allow(Aws::S3::Client).to receive(:new).and_return(s3) - expect(GemModel).to receive(:get) + expect(GemModel).to receive(:get).and_return("my_plugin.gem") gem = double("gem") expect(gem).to receive(:extract_files) do |path| Dir.mkdir(File.join(path, 'screens')) @@ -184,7 +184,7 @@ module OpenC3 plugin_txt_lines = [] plugin_txt_lines << " UNKNOWN" - expect(GemModel).to receive(:get) + expect(GemModel).to receive(:get).and_return("my_plugin.gem") gem = double("gem") expect(gem).to receive(:extract_files) do |path| File.open("#{path}/plugin.txt", 'w') do |file| @@ -211,7 +211,7 @@ module OpenC3 plugin_txt_lines << " URL myurl" plugin_txt_lines << " TARGET THE_FOLDER THE_NAME" - expect(GemModel).to receive(:get) + expect(GemModel).to receive(:get).and_return("my_plugin.gem") gem = double("gem") expect(gem).to receive(:extract_files) do |path| File.open("#{path}/plugin.txt", 'w') do |file| @@ -241,7 +241,7 @@ module OpenC3 plugin_txt_lines << " URL myurl" plugin_txt_lines << " TARGET THE_FOLDER THE_NAME" - expect(GemModel).to receive(:get) + expect(GemModel).to receive(:get).and_return("my_plugin.gem") gem = double("gem") expect(gem).to receive(:extract_files) do |path| File.open("#{path}/plugin.txt", 'w') do |file| @@ -271,7 +271,7 @@ module OpenC3 plugin_txt_lines << " TARGET THE_FOLDER THE_NAME" plugin_txt_lines << " NEEDS_DEPENDENCIES" - expect(GemModel).to receive(:get) + expect(GemModel).to receive(:get).and_return("my_plugin.gem") gem = double("gem") expect(gem).to receive(:extract_files) do |path| File.open("#{path}/plugin.txt", 'w') do |file| diff --git a/openc3/spec/system/system_spec.rb b/openc3/spec/system/system_spec.rb index a0b2dbc56a..b1f291a66b 100644 --- a/openc3/spec/system/system_spec.rb +++ b/openc3/spec/system/system_spec.rb @@ -34,7 +34,12 @@ module OpenC3 setup_system() dbl = double("AwsS3Client").as_null_object allow(Aws::S3::Client).to receive(:new).and_return(dbl) - + resp = OpenStruct.new + resp.common_prefixes = [] + resp.contents = [] + resp.is_truncated = false + resp.next_continuation_token = nil + allow(dbl).to receive(:list_objects_v2).and_return(resp) entry = double("entry") allow(entry).to receive(:name).and_return("INST") zip = double("zip_file") From 1b6ff1d225aebcd9a1ee59c9154e6fb91e07b0df Mon Sep 17 00:00:00 2001 From: Ryan Melton Date: Thu, 18 Jan 2024 13:40:36 -0700 Subject: [PATCH 4/5] fix playwright --- playwright/tests/bucket-explorer.spec.ts | 10 +++++----- playwright/tests/command-sender.spec.ts | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/playwright/tests/bucket-explorer.spec.ts b/playwright/tests/bucket-explorer.spec.ts index 1d32688f41..5c04e2cd50 100644 --- a/playwright/tests/bucket-explorer.spec.ts +++ b/playwright/tests/bucket-explorer.spec.ts @@ -92,9 +92,9 @@ test('navigate gems volume', async ({ page, utils }) => { await page.getByText('gems').click() // Note the URL is prefixed with %2F, i.e. '/' await expect(page).toHaveURL(/.*\/tools\/bucketexplorer\/%2Fgems%2F/) - await page.getByRole('cell', { name: 'cache' }).click() - await expect(page.locator('[data-test="file-path"]')).toHaveText('/cache/') - await expect(page).toHaveURL(/.*\/tools\/bucketexplorer\/%2Fgems%2Fcache%2F/) + await page.getByRole('cell', { name: 'cosmoscache' }).click() + await expect(page.locator('[data-test="file-path"]')).toHaveText('/cosmoscache/') + await expect(page).toHaveURL(/.*\/tools\/bucketexplorer\/%2Fgems%2Fcosmoscache%2F/) await page.locator('internal:label=Search').fill('bucket') await expect(page.locator('tbody > tr')).toHaveCount(1) @@ -103,8 +103,8 @@ test('navigate gems volume', async ({ page, utils }) => { // Reload and ensure we get to the same place await page.reload() - await expect(page.locator('[data-test="file-path"]')).toHaveText('/cache/') - await expect(page).toHaveURL(/.*\/tools\/bucketexplorer\/%2Fgems%2Fcache%2F/) + await expect(page.locator('[data-test="file-path"]')).toHaveText('/cosmoscache/') + await expect(page).toHaveURL(/.*\/tools\/bucketexplorer\/%2Fgems%2Fcosmoscache%2F/) await page.locator('internal:label=Search').fill('bucket') await expect(page.locator('tbody > tr')).toHaveCount(1) }) diff --git a/playwright/tests/command-sender.spec.ts b/playwright/tests/command-sender.spec.ts index 4e2aa707d3..91da18934a 100644 --- a/playwright/tests/command-sender.spec.ts +++ b/playwright/tests/command-sender.spec.ts @@ -524,7 +524,7 @@ test('disable parameter conversions', async ({ page, utils }) => { timeout: 20000, }) await expect(page.locator('[data-test=output-messages]')).toContainText( - '00000010: 00 02', + '00000010: 02 00', ) await page.locator('text=Command Sender').click() @@ -564,6 +564,6 @@ test('disable parameter conversions', async ({ page, utils }) => { timeout: 20000, }) await expect(page.locator('[data-test=output-messages]')).toContainText( - '00000010: 00 01', + '00000010: 01 00', ) }) From 1157f48ae1e48b15cc29e2d00a7e6085ef150596 Mon Sep 17 00:00:00 2001 From: Ryan Melton Date: Thu, 18 Jan 2024 14:15:25 -0700 Subject: [PATCH 5/5] Fix playwright add users controller stubs --- .../app/controllers/users_controller.rb | 7 +++++++ playwright/tests/script-runner/file-menu.spec.ts | 1 + 2 files changed, 8 insertions(+) diff --git a/openc3-cosmos-cmd-tlm-api/app/controllers/users_controller.rb b/openc3-cosmos-cmd-tlm-api/app/controllers/users_controller.rb index 5856b1c5c3..67846edb3e 100644 --- a/openc3-cosmos-cmd-tlm-api/app/controllers/users_controller.rb +++ b/openc3-cosmos-cmd-tlm-api/app/controllers/users_controller.rb @@ -21,5 +21,12 @@ require 'openc3-enterprise/controllers/users_controller' rescue LoadError class UsersController < ApplicationController + def active() + render :json => [], :status => 200 + end + + def logout() + head :ok + end end end diff --git a/playwright/tests/script-runner/file-menu.spec.ts b/playwright/tests/script-runner/file-menu.spec.ts index 7170f96267..75fbfc19ec 100644 --- a/playwright/tests/script-runner/file-menu.spec.ts +++ b/playwright/tests/script-runner/file-menu.spec.ts @@ -250,6 +250,7 @@ test('can delete all temp files', async ({ page, utils }) => { // Open file await page.locator('[data-test=script-runner-file]').click() await page.locator('text=Open File').click() + await utils.sleep(1000) await expect(page.locator('.v-dialog--active')).toContainText('INST') await expect(page.locator('.v-dialog--active')).not.toContainText('__TEMP__') await page.locator('[data-test="file-open-save-cancel-btn"]').click()